入门介绍
CoAP是一种计算机协议,应用于物联网,基于REST架构。它是由IETF的CoRE工作组提出的,专门用于解决物联网中设备资源受限的问题。在物联网中,很多设备具有较少的内存空间和有限的计算能力,因此传统的HTTP协议并不适用于所有设备。为了解决这个问题,CoAP被设计成一种轻量级的协议,能够有效地处理物联网设备的资源限制。
CoAP的主要作用是为物联网中的设备提供一种可靠且有效的通信方式。它可以实现设备之间的信息交换和通信,从而实现所有物品与网络的连接,方便识别、管理和控制。
CoAP基础知识
CoAP是一种用于受限设备的轻量级物联网协议。
一种专用的Web传输协议,它类似HTTP,是一种受约束的应用协议,可与物联网中的受约束的节点和受约束的网络一起使用。
CoAP的特点
资源占用极少
CoAP是为机器对机器(M2M)应用而设计的,它的设计初衷是使简单、受约束的设备即使通过具有低带宽和低可用性的受约束网络也可以加入物联网。例如:远程抄表、资产追踪、楼宇自动化等。
由于CoAP基于IP上的UDP协议,并不需要复杂的传输堆栈控制,所以设备上运行CoAP协议客户端,只需要极少的RAM代码空间,对微控制器的要求非常低。
安全性
CoAP使用UDP传输信息,同时也依靠UDP安全功能来保护信息,因此CoAP使用基于UDP的DTLS加密传输。
CoAP的DTLS参数默认选择等效于3072位RSA密钥,但在最小的节点上仍然可以正常运行。
上手容易
像HTTP一样,CoAP协议中的URL也支持REST模型,即客户端使用诸如GET、PUT、POST之类的方法访问这些API资源。
同时,CoAP还可以承载不同类型的有效负载,也包括ThingsKit内置标准设备访问协议的JSON
格式。
这都使得设备在通过CoAP接入云平台时,不论是云平台提供的API调用方式,还是您需要拥有的技术知识,都和HTTP接入基本相同。
CoAP身份验证和错误代码
我们将在本文中使用访问令牌设备凭证,稍后将它们称为$ACCESS_TOKEN。应用程序需要将$ACCESS_TOKEN作为路径参数包含到每个CoAP请求中。可能的错误代码及其原因:
- 400 无效请求 – 无效的URL、请求参数或正文。
- 401 未经授权 – 无效的$ACCESS_TOKEN。
- 404 未找到 – 未找到资源。
遥测上传接口
为了将遥测数据发布到ThingsKit服务器节点,请向以下URL发送POST请求:
PS:平台CoAP默认端口:5683
coap://host/api/v1/$ACCESS_TOKEN/telemetry
最简单的支持数据格式是:
{"key1":"value1", "key2":"value2"}
或者
[{"key1":"value1"}, {"key2":"value2"}]
请注意,在这种情况下,服务器端时间戳将分配给上传的数据!
如果您的设备能够获取客户端时间戳,您可以使用以下格式:
{"ts":1451649600512, "values":{"key1":"value1", "key2":"value2"}}
调用控制接口
服务器端RPC
为了从服务器订阅RPC命令,将带有观察标志的GET请求发送到以下URL:
coap://host/api/v1/$ACCESS_TOKEN/rpc
订阅后,客户端可能会收到RPC请求。RPC请求体示例如下所示:
{
"id": "1",
"method": "setGpio",
"params": {
"pin": "23",
"value": 1
}
}
- id – 请求id,整数请求标识符;
- method – RPC 方法名称,字符串;
- params – RPC 方法参数,自定义 json 对象。
附:使用Java模拟客户端实践CoAP
![ThingsKit物联网平台设备CoAP接入 ThingsKit物联网平台设备CoAP接入](https://static.thingskit.com/wp-content/uploads/2023/08/20230815100617315.png)