跳到主要内容

CoAP (IoT)

Constrained Application Protocol(RFC 7252)——低功耗 IoT 设备的 RESTful 通信标准。基于 UDP,数据包小、功耗低。网关通过 GET / PUT 访问设备的资源 URI。

场景使用哪张卡片
低功耗 IoT 设备(LoRa-WAN gateway 后端、电池供电传感器)CoAP(本页)
通用 IoT 网关(HTTP API)HTTP
工业 PLCModbus/TCPOPC-UAMELSEC
经由 MQTT brokerMQTT Client

注册表单输入项

输入栏填写内容示例
IP 地址CoAP 设备 / 网关主机device.local10.20.30.40
端口CoAP 标准 5683(明文)/ 5684(DTLS)5683
采集周期轮询周期(ms)5000(电池供电设备应设置得更长)

标签的 PLC 地址表示法 —— 资源路径

标签的 PLC 地址 = CoAP 资源 URI 路径

格式动作
/sensors/temperature对设备的 coap://host:5683/sensors/temperature 执行 GET —— 返回响应文本
/actuators/led写入时执行 PUT(text/plain)—— value 作为 payload
sensors/multi/T1若缺少前导 / 会自动补正

read 调用为 synchronous GET —— 每个 polling cycle 都会直接向设备发起请求。 对于电池供电设备,请将 polling cycle 设置得长一些(5000~60000 ms),以减少唤醒设备 sleep 的频率。


常用场景

场景做法
Eclipse Californium 演示服务器coap.me / 5683 + /test/.well-known/core(资源发现)
LoRa-WAN gateway → CoAP proxygateway 的 CoAP API 端口 + 各设备的资源路径
工业 IoT 传感器厂商手册中的资源路径(/sensor/X)—— 通常为文本响应

write (PUT)

在标签页面或通过 REST API 写入值时,会向设备发送 PUT 请求(mediaType text/plain)。

plc_address = /actuators/led
value = ON
→ PUT coap://host:5683/actuators/led payload="ON" Content-Format: text/plain

若响应为 success(如 2.04 Changed),则写入成功。


常见问题与处理

现象原因解决
取不到值(read 返回空字符串)设备不支持该资源coap-client -m get coap://host:5683/.well-known/core 确认资源列表(libcoap-bin 包)
read 非常慢网络 packet loss + CoAP retransmit加长 polling cycle,检查 congestion
设备要求 DTLSdriver 仅支持明文 CoAP在设备前部署 DTLS 终结网关,读取网关的明文侧。仅设置 dtls 选项或指定端口 5684 无法解决

更多技术文档