耦合层:撮合物联网的理论与实践牵手的“月老”

逻辑寻梦说
• 阅读 1853
摘要:理论与实践可以当作两个模块,本章内容就是为大家在这两个模块中间添加一个耦合层,让大家更容易将理论知识和实际开发联系到一块。

在编写一个框架时,脑海中一直在想着“如何写才能尽可能的去耦合?”去了耦合之后的模块在可移植性、可拓展性等方面都有较大的提升,模块与模块之间的联系性就降低了,这在框架中是一件好事,但是在学习理论与实践未必是一件好事。

大脑是一个很神奇的东西,直接给它一些孤立的点,比如西瓜、报纸、衣服、手机这几个词,大脑一下子是无法记住的,但是给它一张网,例如我在边吃西瓜边看报纸,突然手机响了,我吓了一跳,把衣服弄脏了,这样是不是好记多了,学习一个知识也是这样,最容易学会的方法就是找到正在学习的知识和你已经具备的知识之间的联系,本章的耦合层,就是给大家找一个理论与实践之间的联系。

理论与实践可以当作两个模块,本章内容就是为大家在这两个模块中间添加一个耦合层,让大家更容易将理论知识和实际开发联系到一块。

物联网和TCP/IP一样,都是分层的,常常将物联网分为感知层、传输层、接入层、应用层,还能更细分,可能你已经清清楚楚记得每一层是什么?作用是什么?但是在实际开发中,看到华为物联网中那么多的服务,已经头昏眼花了,无法马上得知某个服务是对应某一层的。别担心,看完本章你就能深刻理解每种服务及对应的每一层,对物联网架构分析做到庖丁解牛,对物联网开发做到游刃有余。

一、俯看全局

在教授他人一个知识的时候,最先教授的应该是全部的一个概括,而不是孤立的一个点,就好比我们看一份代码,如果你直接看.c文件中对函数的实现,那将痛苦不堪,看了前面完了后面,正确的做法是找一个Demo,看看被人如何使用这份代码的API,再去看看这份代码的.h文件,研究其API的作用,最后才看这些API分别是如何实现的。

先复习一下物联网架构,如下图:

耦合层:撮合物联网的理论与实践牵手的“月老”

每一层都是为自己上层提供支持,封装下层的数据,各大物联网云厂商几乎都遵循该架构图来设计自己的物联网体系,每一层对应不同的产品和服务。

现在我以一个智能插座的例子,给大家讲解一下每层的作用,这是一个WIFI版本的智能插座,自身并不具备接入核心网的能力,需要通过网关进行接入,智能插座主要的功能是根据手机App下发的指令/定时来控制负载的开或关、检测当前负载的功率通过手机App显示,所以其属于“感知层”的设备。

网关可以是家里面的无线路由器、手机热点等等,关于网关的定义是:连接两个或两个以上复杂网络的设备。智能插座的WIFI网络可以称为个人局域网,路由器(网关)可以将个人局域网和广域网(核心网)连接在一起,使不同网络间的设备和产品能相互通讯,所以网关处于“网络层”。

数据到了广域网之后经过多个运营商的核心交换机等网络设备的转发,最终发送到“平台层”。平台层对应的是华为云“IoTDA设备接入”服务,将数据处理后转发给“应用层”,应用层最终通过手机App等软件将命令下发和数据上报接口以图形化的方式给用户展现。

二、万物互联(设备接入服务)

华为云物联网中对应平台层的服务为:IoTDA设备接入服务和IoTDM设备管理服务。

耦合层:撮合物联网的理论与实践牵手的“月老”

上述服务主要负责将不同设备(NB-IoT、WIFI模组、2/3/4G模组等)、不同协议(CoAP、LWM2M、MQTT、HTTPS等)的数据封装为JSON格式的数据通过HTTPS接口给到应用层。

有的设备原生并不支持JSON数据格式,而是支持二进制码流,我们可以通过开发编解码插件,在平台层就将二进制码流转换为JSON格式的数据。应用层看到的所有数据的格式都是一致的,大大提高了开发效率。

设备接入服务还提供了很多安全机制,例如DTLS加密等,保障了物联网设备节点的数据安全。

设备接入服务中,可以配置规则,数据转发规则是将符合特定规则的数据进行转发,起到了数据过滤的作用;设备联动规则是M2M的实例化,比如可以配置当温度大于30度时,启动空调或电风扇,从而实现设备之间的互联和智能化控制。

我们在研发一个产品时,面临的痛点是真实设备传输数据有太多的不可控因素和南向开发与北向开发无法并行进行,设备接入服务中针对这两个个痛点提供了“虚拟设备”以及“在线调试功能”,极大的提升了开发效率,缩短了产品研发周期。

在LiteOS操作系统中深度定制了一系列可在资源受限设备中使用的通讯协议,例如MQTT、LWM2M等,真正做到让研发人员可以集中精力关心产品逻辑。

三、是智慧?还是智能?(数据分析服务、应用开发服务)

数据分析服务基于物联网资产模型,整合物联网数据集成,清洗,存储,分析,可视化,为开发者提供一站式服务,降低开发门槛,缩短开发周期,快速实现物联网数据价值变现。

将感知层设备的数据先通过存储服务按天或者按大小存储起来,通过数据分析服务进行分析,经常用于预测,比如淘宝,可以通过分析你搜索的关键词之类的信息,从而推算出你需要购买的商品,给你进行推送。所以在今天这个世界,最值钱的东西是“数据”。

IoT Studio应用开发服务基于物联网平台开放给北向应用的接口能力,配合华为云其他产品,提供第三方应用推荐、Web在线开发和微服务开发等功能帮助快速构建物联网应用。

通过该服务可以快速开发一款App用于为你的各类物联网节点提供图形化控制、数据展示等功能。

目前大部分的技术只能做到智能,跟随预先设定的规则让设备之间产生联动,相互控制,通过后面的机器学习等等技术慢慢的就能让设备被变得“智慧”,会自己去学习用户的习惯等等,让用户处于一个舒适的环境。

点击关注,第一时间了解华为云新鲜技术~

点赞
收藏
评论区
推荐文章
blmius blmius
4年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Wesley13 Wesley13
4年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Jacquelyn38 Jacquelyn38
4年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
4年前
Python之time模块的时间戳、时间字符串格式化与转换
Python处理时间和时间戳的内置模块就有time,和datetime两个,本文先说time模块。关于时间戳的几个概念时间戳,根据1970年1月1日00:00:00开始按秒计算的偏移量。时间元组(struct_time),包含9个元素。 time.struct_time(tm_y
Wesley13 Wesley13
4年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
4年前
Java日期时间API系列36
  十二时辰,古代劳动人民把一昼夜划分成十二个时段,每一个时段叫一个时辰。二十四小时和十二时辰对照表:时辰时间24时制子时深夜11:00凌晨01:0023:0001:00丑时上午01:00上午03:0001:0003:00寅时上午03:00上午0
Wesley13 Wesley13
4年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
4年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Python进阶者 Python进阶者
2年前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
逻辑寻梦说
逻辑寻梦说
Lv1
给你我的心,能不能请你不要再遗弃.
文章
1
粉丝
0
获赞
0
热门文章

暂无数据