物联网平台,提供海量设备连接上云、设备和云端双向消息通信、批量设备管理、远程控制和监控、OTA升级、设备联动规则等能力,并可将设备数据灵活流转到云其他服务,帮助物联网行业用户快速完成设备联网及行业应用集成。基于华为云物联网平台的物联网系统所示,其主要分为几个部分:终端设备、设备连接、消息通信、设备管理、数据流转、物联网应用,以及与云的其他服务进行的数据互通和协同。
物联网常用协议
HTTP
HTTP(HyperTextTransferProtocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。
HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。
同时HTTP是一个无状态的协议。同一个客户端的这次请求和上次请求是没有对应关系,对http服务器来说,它并不知道这两个请求来自同一个客户端。为了解决这个问题,Web程序引入了Cookie机制来维护状态。
并且HTTP是一种同步协议。客户端需要等待服务器响应。Web浏览器具有这样的要求,但它的代价是牺牲了可伸缩性。在IoT领域,大量设备以及很可能不可靠或高延迟的网络使得同步通信成为问题。异步消息协议更适合IoT应用程序。传感器发送读数,让网络确定将其传送到目标设备和服务的最佳路线和时间。
HTTP是一种有许多标头和规则的重量级协议。它不适合受限的网络。
建立过程中三次握手:
HTTP三次握手流程
注解:SYN:同步,Seq:序号,ACK:确认,ack:确认序号。
第一次握手:
当客户端想与服务器建立连接的时候,会发送一个请求连接的报文,此报文首部中的SYN=1(TCP规定,SYN=1的报文段不能携带数据,并且需要消耗一个序号),同时随机生成初始序列号Seq=X,客户端进入了SYN-SENT(同步以发送状态)。
第二次握手:
服务器接收到客户端发送的连接请求报文后,如果同意连接,则发出确认报文,其中确认报文段中SYN=1,ACK=1,同时随机初始化一个序列号Seq=Y,确认号ack=X+1,而且服务器也进入
SYN_RCVD(同步接收状态)。
第三次握手:
客户端接收到确认报文后,还需要向服务器发出确认报文。确认报文的ACK=1,ack=Y+1,此时,TCP连接建立成功,客户端进入ESTABLISHED(已建立连接)状态。
三次握手的重要性:
当客户端发送第一个请求连接的报文的时候,由于网络阻塞原因,导致服务端不能及时收到,直到某个时刻才收到请求连接的报文,此时此刻服务器收到的已经是一个失效的报文了,服务器给客户端发送确认报文,等待客户端的连接,假设采用的是两次握手,客户端不理睬服务器发送的确认报文,而服务器一直等待接收客户端的请求,这样导致服务器很多资源浪费,而如果采用三次握手,服务器接收不到客户端的确认报文,就会断开与客户端的连接,因此采用三次握手更为合适。
MQTT
MQTT(MessageQueuingTelemetryTransport,消息队列遥测传输),是IBM开发的一个即时通讯协议。MQTT协议采用订阅/发布的工作模式,客户端向服务器订阅感兴趣的信息,服务器把信息推送给订阅了这类信息的客户端。
MQTT交互流程
MQTT的特点:
协议简单,轻量级(消息可以短至两个字节,对终端的硬件配置要求低,适用于CPU等硬件资源有限的场合,有助于降低终端成本,推动产业发展)。
基于TCP/IP,消息传递可靠。
使用长连接,有心跳保活机制,减少重新建链开销。
支持消息实时通知、有丰富的推送内容。
心跳机制不利于设备进入休眠模式,设备比较耗电。
MQTT的特点非常符合无线传感网、物联网等领域的要求,目前智慧家庭解决方案主要就是用的MQTT协议。
客户端(Client):
包括发布者或订阅者,两者都是MQTT客户端,分别负责发布或订阅。
可以是从微控制器到一个完全成熟的服务器,在设备上运行着MQTT库并且可以通过任何网络连接到MQTT代理服务器。
代理服务器(Broker):
是任何发布/订阅协议的核心,可以处理多达成千上万的MQTT客户端的并发连接。
代理服务器主要负责接收所有消息,将消息发送给所有订阅的客户端。
一个职责是保持所有持续连接的客户端的会话,包括订阅和丢失的消息。
另一个职责是对客户端的认证和授权。
CoAP
CoAP(ConstrainedApplicationProtocol,受限制的应用协议),专门为资源受限设备(如传感器节点)和网络(如NB-IoT,LoRa)而设计。CoAP从HTTP协议发展而来,CoAP协议也是采用请求/响应工作模式,客户端发起请求,服务器做出响应。为了克服HTTP对于受限环境的劣势,CoAP既考虑到数据报长度的最优化,又考虑到提供可靠通信。
CoAP交互流程
CoAP特点:
报头压缩,报文格式简单,消息可以很短,最小的CoAP消息只有4个字节。
传输层使用UDP协议,减少网络开销和支持组播功能。
为了弥补UDP传输的不可靠性,CoAP有消息重传机制。
不支持长连接,没有心跳,没有业务时设备不用跟外部发消息。
做业务时,设备可能需要先唤醒,消息实时性不太好。
跟MQTT相比,CoAP不需要保持长连接,不用不停发送心跳消息,更加适合物联网场景中需要休眠/唤醒机制的设备,设备可以长时间处于休眠模式,节省电量,一块电池使可以用10年甚至更久,目前智能水表、智能电表、智慧农业、智能停车场等解决方案主要就是用的CoAP协议。
设备管理
设备注册&接入鉴权
为了保证接入物联网平台的设备是安全可信的,需要进行设备注册和设备接入鉴权操作。设备注册,指用户通过控制台或调用注册设备API在IoT平台中注册设备信息,平台中存在设备信息后,再接入真实的实体设备,这样平台与终端实体设备可以实现连接和通信。
设备接入鉴权,是指IoT平台对接入平台的设备进行鉴权认证,用于保障设备接入信息的完整性和安全性、设备与平台消息传输完整性和安全性。
设备注册&设备接入鉴权
命令下发
设备的产品模型中定义了IoT平台可向设备下发的命令,平台向设备下发命令,修改设备的服务属性,实现对设备的控制。
平台向设备下发命令包括立即下发和缓存下发两种情况,如下表所示。
对于立即下发模式,下发的命令直接全部下发给设备;对于缓存下发模式,需等待设备上线或设备上报数据到平台后,按照串行的方式下发命令给设备,即缓存的命令需要按照缓存的时间逐一向设备进行下发。设备命令整个生命周期的状态转换如下图所示。
设备命令的状态转换
设备命令状态的详细说明如下表所示。
通过命令下发特性,平台能够为终端用户提供远程控制设备的服务,实现设备连接,也可以实现对设备的批量命令下发等,操作简单快捷。当用户需要对设备进行某一操作,而设备并不在可操作范围内,或者需要操作大批量设备时,可以使用命令下发。
设备联动规则
规则引擎的使用对象是终端用户,系统已经预置支持的规则场景,终端用户通过方便、易理解的友好界面在自有设备下制定自动化规则。
规则可以和设备、应用、告警绑定,当绑定的信息满足条件时,规则可以自动化执行响应动作。规则引擎定位处理各种事件,利用规则引擎可以完成异常事件的及时通知和快速处理,帮助终端用户维护设备、监控设备,保证系统业务的及时恢复。阈值超限、范围超限、位置跟踪等事件,也可定义为规则引擎输入条件,并关联对应的处理动作。
设备联动的触发条件及响应动作如下图所示。
设备升级管理
物联网平台支持通过OTA(OverTheAir)的方式对终端设备的固件和软件进行升级。
设备固件升级:固件升级又称为FOTA(FirmwareOverTheAir),是指用户可以通过OTA的方式对支持LwM2M协议和CoAP的设备进行固件升级,升级包下载LwM2M协议。
设备软件升级:软件升级又称为SOTA(SoftwareOverTheAir),是指用户可以通过OTA的方式对支持LwM2M协议和CoAP的设备进行软件升级,升级包下载协议为PCP。
设备固件&软件升级
设备批操作
华为云物联网平台支持对设备的批量操作,包括批量注册设备、批量命令下发、批量位置上传、批量设备配置和批量软固件升级。
批量注册设备:因注册设备数量过多而导致注册时间太长,可采用批量注册的方式注册设备。批量命令下发:当物联网平台需要对批量设备下发命令时,可通过北向接口创建批量命令下发任务,在物联网平台上,可查看任务的执行状态、操作者和成功率等信息。
批量位置上传:当物联网平台需要对设备的位置进行批量上传时,可采用批量位置上传操作。这里的设备主要指安装位置相对固定的终端设备,如水表。
批量设备配置:当物联网平台需要对设备进行批量配置时,可采用批量设备配置操作。
批量软固件升级:当物联网平台需要对设备的固件或者软件进行批量升级时,可采用批量软固件升级操作。
设备批操作向物联网平台提供对终端设备统一管理的通道,能提升对终端设备的管理效率,很好地满足用户批量管理设备的需求。当用户接入的设备数量过多,或者需要对全部或某一个群组的设备进行相同的操作时,可以采用设备批操作。批量注册设备和批量位置上传时设备数量的上限是30000个,批量命令下发、批量设备配置和批量软固件升级的设备上限是10000个。
物联支撑平台主要包括接入、数据、AI、业务四大支撑集群,提供数据连接、数据存储、智能分析、业务构件等基准功能,再结合具体业务场景通过可视化配置和少码二次开发实现具体项目所需UI交互应用。 【1】构建统一的物联(消息)接入平台(或叫边…