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

results matching ""

    No results matching ""

    results matching ""

      No results matching ""