说明
使用NB模组对接华为IOT时,使用非常简单,但是一直不清楚平台coap/lwm2m协议对接的具体流程是什么。想在2G/4G模组中也使用这种方式,但是不知道怎么对接平台(不喜欢MQTT对接,协议还是比较重)。因此使用官方的NB设备模拟器,用wireshark抓包分析了设备注册、数据上报和下发的流程。比较简单,可以在任何具备TCP/IP能力的设备上封包实现。
通信流程
1.wireshark数据包
2.流程分析
- 设备注册。Post,需要携带终端名称(endpointname,唯一,一般为IMEI)。coap报文选项字段内容如下:
- Uri-Path: t
- Uri-Path: r
- Content-Format:application/octet-stream
- Uri-Query:ep=869976030020714 (IMEI)
- 平台发起观察请求,观察设备/t/d资源。观察者模式是coap协议引入的一个概念,用于服务端主动向客户端推送资源数据,避免客户端频繁的查询资源,浪费交互时间。Get请求,coap报文的选项字段内容为:
- Observe:0
- Uri-Port:31556 (端口号随机)
- Uri-Path:t
- Uri-Path:d
- 平台请求/4/0/8资源,该资源为网络连接信息,终端可回复没有404。
经过上面的步骤,设备就已经注册到平台上了。之后操作中,都是终端作为coap服务器角色,而平台作为coap客户端。
-
设备上报数据
由于平台已经观察了终端侧的/t/d资源,之后终端就可以按照通知的方式(响应报文),将数据发送给平台(coap观察者)。此时的终端,其实是coap协议当中的服务器角色;当要发送数据时,该数据作为/t/d资源的信息,仅携带observe选项,由终端发给平台。
注意: 上报报文其实一条coap响应报文,响应码是2.05 Content; 报文当中的token,应跟注册过程中平台的观察请求中携带的token值一致;observe选项值递增。 -
平台下发数据
确认报文,POST请求,token值随机,不同于上报数据时的token,下发的数据在coap报文的负载部分,coap选项如下:- Uri-Port:31556
- Uri-Path:t
- Uri-Path:d
- Content-Format:application/octet-stream
终端收到命令后回复确认。
c/c++开发分享抓包分析华为IOT平台CoAP对接流程地址:https://blog.csdn.net/llb19900510/article/details/107913255
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/597834.html