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

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

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

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

物联网和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用于为你的各类物联网节点提供图形化控制、数据展示等功能。

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

点击这里→了解更多精彩内容

本文地址:https://blog.csdn.net/devcloud/article/details/107605064

相关推荐:

Flask信号(Signals)怎么用_Blinker库实现低耦合的事件监听

Flask信号需手动集成Blinker才能生效,内置信号仅为占位符;自定义信号须用BlinkerSignal类创建并传入app实例发送;生产环境应通过配置控制启用与否。 Flask里信号没反应?先确认Blinker是否已启用 Flask默认不启用信号机制,即使你装了blinker,flask.sig...

论 Python 代码的可测试性:从耦合到解耦的重构技巧

提升python代码可测试性的五步重构路径:一、提取依赖为参数;二、应用依赖注入容器;三、拆分纯函数与副作用操作;四、使用protocol定义协作接口;五、重构类为函数组合。 如果您发现Python代码难以编写单元测试,经常需要启动数据库、调用外部API或依赖全局状态才能运行测试,则很可能是由于模块...

mysql是否需要联网

MySQL是否需要联网取决于使用场景。本地单机使用可以离线运行,而与其他系统交互、数据备份或集群部署则需要网络连接。联网场景包括分布式数据库、远程访问、数据备份、工具使用,但需要注重防火墙、强密码、定期更新和访问控制等网络安全措施,以选择最适合的方案让数据库稳定运行。 MySQL:联网与否,权衡利弊...

判断手机是否连接网络

根据返回值判断-1 未连接1 连接手机网络2连接WifipublicstaticintcheckNetworkAvailable(Contextcontext){ConnectivityManagerconnectivity=(ConnectivityManager)contex...

别再问WiFi密码了,HMS Core统一扫码服务让手机一键联网

现代生活离不开网络。在餐厅、商场等公共场所,手机连接WiFi一直是高频使用场景。虽然公共场所的免费WiFi越来越多,但网络连接过程却很麻烦。有的需要打开网页注册或点击广告链接才能上网,还有的要求下载特定App才能连接。 那么有没有什么更方便的联网方式呢?“扫码联网”提出了解决方案,商家可以在店放置包...

2017年全国大学生物联网设计竞赛(TI杯)华东分赛区决赛总结

全国大学生物联网设计竞赛(TI杯)是由教育部高等学校计算机类教学指导委员会主办、上海交通大学电子信息与电气工程学院承办、德州仪器半导体技术公司(TI)协办的赛事,自2014年设立以来,一直是物联网领域最具权威性的大学生学科竞赛平台。赛事不收取任何费用,免费为参赛学校师生提供开发板,并举办全国范围内的...