CoAP 协议介绍
本章将介绍 CoAP 协议。
CoAP(Constrained Application Protocol,受限应用协议,RFC 7252)协议是一种运行在资源、通信带宽十分有限的物联网设备上的 M2M(Machine to Machine)通信协议。
CoAP 协议
CoAP 协议运行在 UDP 协议之上,并且设计得非常小巧,最小的数据包只有 4 个字节。CoAP 协议采用 C/S 架构,使用类似于 HTTP 协议的请求/响应(Request/Response)的交互模式。设备可以通过类似于 coap://192.168.1.150:5683/floor/temperature
的 URL 来标识一个实体对象(资源),并使用类似于 HTTP 协议的 RESTful 风格 API 和 PUT、GET、POST、DELETE 方法来获取或者修改这个实体对象的状态。
同时,CoAP 协议提供一种观察模式,观察者可以通过 OBSERVE 指令向 CoAP 服务器指明观察的实体对象。当实体对象的状态发生变化时,观察者就可以收到实体对象的最新状态,类似于 MQTT 协议中的订阅功能。
CoAP 协议扩展了 HTTP 协议的 GET 方法,加入了一个 observe flag,使得 CoAP Server 能主动回传 CoAP Client 所观察的实体对象状态
扩展阅读:
为什么 IoT 开发人员会对 MQTT 和 CoAP 感到困惑?
EdgerOS 对 CoAP 支持
EdgerOS 实现了一个 CoAP 模块,EdgerOS 应用开发者可以使用该模块实现 CoAP Server 或 Client 功能:
CoAP 设备开发
物联网设备一般对外提供控制或数据分享功能(如开关、传感器),所以在物联网设备上运行 CoAP 协议,一般实现 CoAP Server 功能,对外提供 RESTful 风格的 API。开发 CoAP 物联网设备时一般采用成熟的 CoAP 库。
MS-RTOS 的 CoAP 库
在 MS-RTOS 的 开源社区 提供了以下三个 CoAP 库的移植:
ESP8266 SDK 的 CoAP 库
乐鑫科技官方提供的 ESP8266_RTOS_SDK 中通过集成 libcoap 提供了 CoAP Server 和 Client 功能:
我们将在《IoT Pi CoAP 设备开发》章节介绍如何开发一个能被 EdgerOS App 访问的 CoAP 物联网设备。
Node CoAP CLI
在进行 CoAP 设备开发时,我们常常需要测试 CoAP 设备提供的 RESTful API 是否正确,Node CoAP CLI 是一个 Node.js 的 CoAP 命令行工具,可以使用该工具进行 CoAP 设备测试。
通过如下命令安装 Node CoAP CLI:
npm install coap-cli -g
Node CoAP CLI 提供了以下四个命令:
Commands:
get performs a GET request
put performs a PUT request
post performs a POST request
delete performs a DELETE request
下图演示了 GET 与 PUT 命令的使用: