CoAP 协议介绍

更新时间:
2023-11-30
下载文档

CoAP 协议介绍

本章将介绍 CoAP 协议。

CoAP(Constrained Application Protocol,受限应用协议,RFC 7252open in new window)协议是一种运行在资源、通信带宽十分有限的物联网设备上的 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 所观察的实体对象状态

扩展阅读:

RFC7252-《受限应用协议》中文版open in new window

物联网协议之 CoAP 协议开发学习笔记open in new window

物联网协议之 CoAP 协议开发学习笔记之协议详解open in new window

一文搞懂 RESTful API

为什么 IoT 开发人员会对 MQTT 和 CoAP 感到困惑?open in new window

EdgerOS 对 CoAP 支持

EdgerOS 实现了一个 CoAP 模块,EdgerOS 应用开发者可以使用该模块实现 CoAP Server 或 Client 功能:

avatar

CoAP 设备开发

物联网设备一般对外提供控制或数据分享功能(如开关、传感器),所以在物联网设备上运行 CoAP 协议,一般实现 CoAP Server 功能,对外提供 RESTful 风格的 API。开发 CoAP 物联网设备时一般采用成熟的 CoAP 库。

MS-RTOS 的 CoAP 库

在 MS-RTOS 的 开源社区open in new window 提供了以下三个 CoAP 库的移植:

avatar

ESP8266 SDK 的 CoAP 库

乐鑫科技官方提供的 ESP8266_RTOS_SDK 中通过集成 libcoap 提供了 CoAP Server 和 Client 功能:

avatar

我们将在《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 命令的使用:

avatar

文档内容是否对您有所帮助?
有帮助
没帮助