这几年“物联网平台”这个词没少听,可他究竟是做什么的?这个问题好像很难找到满意的答案。物联网平台是在物联网架构的应用层,具体请参考上一篇:物联网与云计算架构:SaaS、PaaS、IaaS
物联网平台功能架构
每个厂商会根据自己的目标用户、商业目标进行不同业务模式的选择,有的注重硬件开发,有的注重软件开发,有的兼而有之,但不管业务模式什么样,揭开他神秘的面纱,PaaS层功能架构大致如下:
这张图北向接入应用,南向接入设备,以下着重说一下我对设备接入、设备管理的理解。
设备接入
设备接入指的是将设备注册至平台并通信,需要设备与云端之间有安全可靠的双向连接。主要考虑几个方面:
1、设备入网方式
入网方式其实是选择什么通讯技术,是Wi-Fi、Lora、蓝牙还是Zigbee等等?平台需要根据自身定位(白电行业?智慧工厂?智慧园区?)选择支持的入网方式, 容纳的入网方式越多,可容纳设备类型就越多,平台的实现也越复杂。
举2个例子:
如果平台支持Zigbee(请参考:http://www.woshipm.com/it/2484773.html)设备,那么平台是否也应该管理网关设备呢,是否应该支持网关与设备的拓扑结构呢?
Wi-Fi设备初始化的时候用平台的app通过AP(access point)模式就可以让设备连网并通信,但Zigbee设备是自组网的方式,即会自动连接至网关,再通过网关和平台通信。
这篇文章详细的介绍了不同通信方式的优点缺点,强烈推荐:如何选择物联网通讯技术?http://www.woshipm.com/it/2495240.html
2、传输协议(Http、CoaP、MQTT等等)
平台层要兼容不同的协议才能连接尽可能多的设备,而具体支持哪些协议需要从通信安全、平台定位等方面权衡考虑。
MQTT是多个客户端通过一个中央代理传递消息的多对多协议。通过让客户端发布消息、代理决定消息路由和复制来解耦生产者和消费者。
CoAP基本上是一个在Client和Server之间传递状态信息的单对单协议。
HTTP是适合使用在性能好一些的终端上,相对以上一些比较重,对设备要求相对高一些。
3、身份认证
目前市面上的认证方式大都通过将token或者secret烧录到硬件设备进行认证,但过程各有特点。
例如阿里云是先将productkey、productsecret烧录到设备中并通过动态注册的方式获得devicesecret后进行数据通信,而有的是通过将token直接烧录到设备中进行认证和数据传输。
设备管理
物模型
物模型是个概念,不是实体,有的平台叫产品,是一类设备的总称,物模型和物的关系就像【男人】这个词和身份证号码是【123233198802340123】这个男人的关系一样。物模型的定义包括基本信息和属性的定义。
不同厂商物模型功能不尽相同,开源的Thingsboard都没有这个概念。所以物模型是从用户体验和平台自身业务角度出发提出的概念,为数据统计、用户体验、产品发展做了充足的准备。
实现物模型需要考量很多东西,比如阿里定义物模型基本信息的时候要选择行业、是否是网关、是否接入网关、连网方式等,定义功能时又有了事件、属性、服务的分类(事件、属性、服务这个说起来就更技术了)。
设备影子
设备影子用于缓存设备状态,设备在线时可以直接接收云端指令,离线时主动获取云端指令。设备影子将设备与应用解耦,解决不稳定无线网络下的通信不可靠痛点。
举个例子:
我不帅的男朋友在线,于是我发了一个【变帅】的指令,男朋友收到后马上执行,然后就变帅啦~
我不帅的男朋友离线了,联系不到,于是我发了一个【变帅】的指令存储到设备影子中,男朋友上线后主动看设备影子,执行【变帅】指令,然后就变帅啦~
从实现层面看:
l 设备影子是一个 JSON 文档
l 每台设备仅有一个影子
参考:设备影子概览https://help.aliyun.com/document_detail/53930.html
OTA
OTA全称是Over-the-Air,即空中加载的意思,在物联网平台指的是固件升级。固件是数码设备最基础、最底层工作的软件,是设备内部保存的设备“驱动程序”,通过固件,操作系统才能按照标准的设备驱动实现特定机器的运行动作。
固件升级的前提是固件和平台都支持固件升级功能,平台层需要对设备的固件进行管理,并实现远程批量升级。
这个功能的意义是什么?试想一下投入使用后的一批设备出现了问题,难道要一个个的处理,显然远程批量操作节省了大量的人力。
但OTA是一个超级大的功能,涉及到设备分组、固件分布、固件校验等等功能,每一个功能都值得反复讨论,一些厂商的OTA功能甚至是一个体系。
数据的上下行
数据的上下行指的是信息在设备和平台间流转,设备上报信息到平台是数据的上行,平台或者应用层下发命令到设备是数据的下行,是物联网平台的基础功能。
以上是从功能点出发逐一进行了介绍,但是如何把这些功能点糅到一个平台中又是另一码事,需要反复推敲和验证,也是一条漫漫长路。
放两张比人家的产品架构图: