CoAP协议接入
CoAP简介
CoAP(Constrained Application Protocol)是一种在物联网世界的类web协议,它的详细规范定义在 RFC 7252。CoAP名字翻译来就是“受限应用协议”,由于物联网中的很多设备都是资源受限型的,即只有少量的内存空间和有限的计算能力,所以传统的HTTP协议应用在物联网上就显得过于庞大而不适用。 IETF的CoRE工作组提出了一种基于REST架构的CoAP协议。CoAP是6LowPAN协议栈中的应用层协议。
协议特点
- 1.CoAP协议的传输层协议为UDP。
- 2.基于REST,server的资源地址和互联网一样也有类似url的格式,客户端同样有POST,GET,PUT,DELETE方法来访问server,对HTTP做了简化。
- 3.CoAP是二进制格式的,HTTP是文本格式的,CoAP比HTTP更加紧凑。
- 4.轻量化,CoAP最小长度仅仅4B,光HTTP的头已几十个B了。
- 5.支持可靠传输,数据重传,块传输。 确保数据可靠到达。
- 6.支持IP多播, 即可以同时向多个设备发送请求。
- 7.非长连接通信,适用于低功耗物联网场景。
协议接入
采用CoAP协议的终端设备,可以通过集成CoAP模式的DTU设备发送请求数据到指定的 CoAP 服务器,然后设备接收来自CoAP 服务器的数据,对数据进行解析并将结果发至串口设备。
本章使用集成CoAP模式的DTU设备对接IoT OS物联网云平台,可以将数据发送到云平台后,通过云平台提供的接口,用户自己开发自己的应用程序。
用户不需要关注串口数据与网络数据包之间的数据转换过程,只需通过简单的参数设置,即可实现串口设备向IoT OS物联网云平台的数据交互。 CoAP模式链路图:
操作前提
1.已创建好产品和设备(细节参考产品管理、设备管理)
2.定义好产品模型(细节参考模型管理)
操作步骤
用户可以通过设备与IoT OS进行对接,以下以USR-NB700软件为例,进行接入演示。
设备参数配置:
(1)将CoAP模式透传设备上电,并通过485-USB转接线将设备连接到PC机。PC机打开配置软件USR-NB700 V2.0.3.exe; (下载地址)
(2)在软件中打开对应的串口号,波特率配置为115200,点击“打开串口”;
- (3)将工作模式选择为“CoAP模式”,在地址栏中输入IoT OS的CoAP连接IP:117.50.16.141和端口:15683;
- (4)勾选“启用注册包”;
配置参数如下图:
- (5)点击“进入配置状态”-“设置并保存所有参数”-“进入通讯状态”;
- (6)上面操作执行完毕后,在平台查看设备;
- (7)设备状态“在线”后,在串口输入框中填写上报的数据,点击发送(IoT OS标准数据格式KLink Json):
{"action":"devSend","msgId":1,"pk":"xxxxxxxxxxxxx","devId":"xxxxxxxxxxxx","data":{"cmd":"reportPower","params":{"power":0,"hum":"one"}}}
数据格式
用户在创建产品时可以对产品传输的数据格式进行设置,CoAP设备可以选择的数据格式为“自定义格式”和“KLink格式”,用户在设备接入是要用对应的数据格式进行数据传输。
KLink格式
当设备为使用KLink格式传输数据时,数据格式需要符合KLink协议。详情参考KLink协议接入。 并且使用的指令必须是CoAP设备支持的指令。
CoAP设备支持的指令如下表所示:
指令功能 | 发送形式 | 详情 |
---|---|---|
设备上报数据 | D => C | devSend |
云端回复设备上报数据 | C => D | devSendResp |
云端给设备下发指令 | C => D | cloudSend |
设备回复云端下发指令 | D => C | cloudSendResp |
设备上报固件信息 | D => C | reportFirmware |
云端回应设备上报固件信息 | C => D | reportFirmwareResp |
子设备上线 | D => C | devLogin |
云端回复子设备上线 | C => D | devLoginResp |
子设备下线 | D => C | devLogout |
云端回复子设备下线 | C => D | devLogoutResp |
自定义格式
若为自定义格式的设备,用户需要在IoT OS中“产品开发”功能的“数据解析”中提前写好协议解析的脚本。通过协议解析脚本,可以将用户上报的原始数据解析成KLink格式。操作参考。
当用户完成解析脚本的编写并运行后,仅需在操作步骤第(7)步中上传的数据改为符合解析脚本的数据即可。
【例】假设用户设置的自定义格式为KLink格式,则在"产品开发"的"数据解析"中写好解析KLink的解析脚本。
解析脚本内容可在平台"设备开发"-"解析数据"-"脚本编辑"框右上角的[示例]中获取.
此时按照脚本,设备可以发送hex数据。
按照KLink json格式的数据为:
{"action":"devSend","msgId":1,"pk":"953d2282************8","devId":"53847*******","data":{"cmd":"reportPower","params":{"power":1}}}
则符合解析脚本的数据为:
7B22616374696F6E223A2264657653656E64222C226D73674964223A312C22706B223A2239353364323238322A2A2A2A2A2A2A2A2A2A2A2A38222C226465764964223A2235333834372A2A2A2A2A2A2A222C2264617461223A7B22636D64223A227265706F7274506F776572222C22706172616D73223A7B22706F776572223A317D7D7D