华为云IoT设备接入服务都有哪些功能?看完给你整的明明白白
设备接入
设备接入服务(IoTDeviceAccess)是华为云的物联网平台,提供海量设备连接上云、设备和云端双向消息通信、批量设备管理、远程控制和监控、OTA升级、设备联动规则等能力,并可将设备数据灵活流转到华为云其他服务,帮助物联网行业用户快速完成设备联网及行业应用集成。基于华为云物联网平台的物联网系统如图9-6所示,其主要分为几个部分:终端设备、设备连接、消息通信、设备管理、数据流转、物联网应用,以及与华为云的其他服务进行的数据互通和协同。
基于华为云物联网平台的物联网系统
物联网常用协议
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平台可向设备下发的命令,平台向设备下发命令,修改设备的服务属性,实现对设备的控制。
平台向设备下发命令包括立即下发和缓存下发两种情况,如下表所示。
命令下发机制 |
定义 |
适用场景 |
NB-IoT设备 |
集成Agent LiteSDK设备/原生MQTT设备 |
立即下发 |
不管设备是否在线,平台收到命令后立即下发给设备。如果设备不在线或者设备没收到命令则下发失败。支持给本应用的设备和被授予权限的其他应用的设备下发命令。 |
立即下发适合对命令实时性有要求的场景,如路灯开关灯,燃气表开关阀。使用立即下发时,命令下发的时机需要由应用服务器来确定。 |
适用,需将省电模式设置为DRX或eDRX模式,且需要在物联网平台与EPC网络之间建立IPSEC隧道。 |
适用 |
缓存下发 |
物联网平台在收到命令后先缓存,等设备上线或者设备上报数据时再下发给设备,如果单个设备存在多条缓存命令,则进行排队串行下发。支持给本应用的设备和被授予权限的其他应用的设备下发命令。 |
缓存下发适合对命令实时性要求不高的场景,如配置水表参数, |
适用,需将省电模式设置为PSM模式。 |
不适用 |
对于立即下发模式,下发的命令直接全部下发给设备;对于缓存下发模式,需等待设备上线或设备上报数据到平台后,按照串行的方式下发命令给设备,即缓存的命令需要按照缓存的时间逐一向设备进行下发。设备命令整个生命周期的状态转换如下图所示。
设备命令的状态转换
设备命令状态的详细说明如下表所示。
状态 |
说明 |
等待(PENDING) |
NB-IoT设备采用缓存下发命令时,如果设备未上报数据,物联网平台会将命令进行缓存,此时任务状态为“等待”状态; NB-IoT设备采用立即下发模式下发命令时,无此状态;MQTT设备下发命令时,无此状态。 |
超期(EXPIRED) |
NB-IoT设备采用缓存下发模式下发命令时,如果在设置的超期时间内,物联网平台未将命令下发给设备,则状态变更为“超期”。超期时间会以北向接口中携带的expireTime为准,如果未携带,默认为48h; NB-IoT设备采用立即下发模式下发命令时,无此状态;MQTT设备下发命令时,无此状态。 |
取消(CANCELED) |
如果在命令下发状态为“等待”时,用户人工取消了命令下发任务,则任务状态变更为“取消”。 |
已发送(SENT) |
NB-IoT设备采用缓存下发模式下发命令时,设备上报数据,物联网平台会将缓存的命令发送给设备,此时状态会由“等待”变更为“已发送”; NB-IoT设备采用立即下发模式下发命令时,如果设备在线,状态变更为“已发送”; MQTT设备下发命令时,如果设备在线,状态变更为“已发送”。 |
超时(TIMEOUT) |
NB-IoT设备受到命令时,物联网平台在180s内未收到设备反馈的收到命令响应,此时状态会变更为“超时”; MQTT无此状态。 |
已送达(DELIVERED) |
物联网平台收到设备反馈的已收到下发命令响应后,状态变更为“已送达”。 |
执行成功(SUCCESSFUL) |
设备在执行完命令后,向物联网平台反馈命令执行成功的结果,将状态变更为“执行成功”。 |
执行失败(FAIL) |
设备在执行完命令后,向物联网平台反馈命令执行失败的结果,将任务状态变更为“执行失败”; NB-IoT设备采用立即下发模式下发命令时,如果设备离线,状态变更为“执行失败”; MQTT设备下发命令时,如果设备离线,状态变更为“执行失败”。 |
通过命令下发特性,平台能够为终端用户提供远程控制设备的服务,实现设备连接,也可以实现对设备的批量命令下发等,操作简单快捷。当用户需要对设备进行某一操作,而设备并不在可操作范围内,或者需要操作大批量设备时,可以使用命令下发。
设备联动规则
规则引擎的使用对象是终端用户,系统已经预置支持的规则场景,终端用户通过方便、易理解的友好界面在自有设备下制定自动化规则。
规则可以和设备、应用、告警绑定,当绑定的信息满足条件时,规则可以自动化执行响应动作。规则引擎定位处理各种事件,利用规则引擎可以完成异常事件的及时通知和快速处理,帮助终端用户维护设备、监控设备,保证系统业务的及时恢复。阈值超限、范围超限、位置跟踪等事件,也可定义为规则引擎输入条件,并关联对应的处理动作。
设备联动的触发条件及响应动作如下图所示。
设备联动规则
设备升级管理
物联网平台支持通过OTA(OverTheAir)的方式对终端设备的固件和软件进行升级。
- 设备固件升级:固件升级又称为FOTA(FirmwareOverTheAir),是指用户可以通过OTA的方式对支持LwM2M协议和CoAP的设备进行固件升级,升级包下载LwM2M协议。
- 设备软件升级:软件升级又称为SOTA(SoftwareOverTheAir),是指用户可以通过OTA的方式对支持LwM2M协议和CoAP的设备进行软件升级,升级包下载协议为PCP。
设备固件&软件升级
设备批操作
华为云物联网平台支持对设备的批量操作,包括批量注册设备、批量命令下发、批量位置上传、批量设备配置和批量软固件升级。
- 批量注册设备:因注册设备数量过多而导致注册时间太长,可采用批量注册的方式注册设备。批量命令下发:当物联网平台需要对批量设备下发命令时,可通过北向接口创建批量命令下发任务,在物联网平台上,可查看任务的执行状态、操作者和成功率等信息。
- 批量位置上传:当物联网平台需要对设备的位置进行批量上传时,可采用批量位置上传操作。这里的设备主要指安装位置相对固定的终端设备,如水表。
- 批量设备配置:当物联网平台需要对设备进行批量配置时,可采用批量设备配置操作。
- 批量软固件升级:当物联网平台需要对设备的固件或者软件进行批量升级时,可采用批量软固件升级操作。
设备批操作向物联网平台提供对终端设备统一管理的通道,能提升对终端设备的管理效率,很好地满足用户批量管理设备的需求。当用户接入的设备数量过多,或者需要对全部或某一个群组的设备进行相同的操作时,可以采用设备批操作。批量注册设备和批量位置上传时设备数量的上限是30000个,批量命令下发、批量设备配置和批量软固件升级的设备上限是10000个。
更多学习内容,请关注IoT物联网社区
添加华为云IoT小助手微信号(hwc-iot),回复“阅读”获取更多资讯
- 点赞
- 收藏
- 关注作者
评论(0)