21

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

 3 years ago
source link: https://segmentfault.com/a/1190000023386427
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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

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

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

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

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

一、俯看全局

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

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

AzmmAr3.jpg!web

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

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

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

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

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

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

QZbeEnM.jpg!web

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

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

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

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

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

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

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

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

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

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

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

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

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK