lwm2m设备注册和更新都可以,返回了2.04。但设备上报后返回了4.04,是因为Uri-Path的问题吗?
从图片中可以看到:
第一张图(设备上报失败):
- Uri-Path:
"dp"
- 返回 4.04 错误
第二张图(update操作成功):
- Uri-Path:
["rd", "2PxfRcjnS3f2KhtG_861234567_gwModel"]
- 返回 ACK-2.04 成功
问题在于设备上报和注册/更新使用了不同的Uri-Path格式:
- 注册/更新成功:使用正确的LWM2M标准路径
["rd", "endpoint_name"]
- 数据上报失败:只使用了
"dp"
路径,这是不完整的路径
解决方案
正确的数据上报Uri-Path应该是:
["dp", "2PxfRcjnS3f2KhtG_861234567_gwModel", "ObjectID/InstanceID/ResourceID"]
- 检查设备端代码:确保数据上报时使用完整的Uri-Path
- 不能只使用
"dp"
- 需要包含endpoint名称和具体的Object路径
- 参考成功的update请求:
- endpoint名称:
2PxfRcjnS3f2KhtG_861234567_gwModel
- 确保数据上报也使用相同的endpoint标识
- 验证Object路径:确认要上报的数据对应的Object ID、Instance ID和Resource ID
14:07:02.854 [CoapServer(main)#2] DEBUG org.eclipse.californium.core.network.stack.ReliabilityLayer – Exchange[L7, 139.9.141.13:5683] send request
14:07:02.854 [CoapServer(main)#2] DEBUG org.eclipse.californium.core.network.stack.ReliabilityLayer – Exchange[L7, 139.9.141.13:5683] prepare retransmission for CON-POST MID= -1, Token=null, OptionSet={“Uri-Path”:[“dp”,“2PxfRcjnS3f2KhtG_861234567_gwModel”,“/3/0/0”], “Content-Format”:“application/senml+cbor”}, 81 A2 03 72 4C 65 73 68 61 6E 20 44 65 6D 6F 20 44 65 76 69 63 65 21 66 2F 33 2F 30 2F 30
14:07:02.854 [CoapServer(main)#2] DEBUG org.eclipse.californium.core.network.InMemoryMessageExchangeStore – [LWM2M Client-coap://0.0.0.0:0] Exchange[L7, 139.9.141.13:5683] added with generated mid KeyMID[139.9.141.13:5683-31286], CON-POST MID=31286, Token=null, OptionSet={“Uri-Path”:[“dp”,“2PxfRcjnS3f2KhtG_861234567_gwModel”,“/3/0/0”], “Content-Format”:“application/senml+cbor”}, 81 A2 03 72 4C 65 73 68 61 6E 20 44 65 6D 6F 20 44 65 76 69 63 65 21 66 2F 33 2F 30 2F 30
14:07:02.854 [CoapServer(main)#2] DEBUG org.eclipse.californium.core.network.InMemoryMessageExchangeStore – [LWM2M Client-coap://0.0.0.0:0] Exchange[L7, 139.9.141.13:5683] added with generated token KeyToken[139.9.141.13:5683-780DDA1C62E32B30], CON-POST MID=31286, Token=780DDA1C62E32B30, OptionSet={“Uri-Path”:[“dp”,“2PxfRcjnS3f2KhtG_861234567_gwModel”,“/3/0/0”], “Content-Format”:“application/senml+cbor”}, 81 A2 03 72 4C 65 73 68 61 6E 20 44 65 6D 6F 20 44 65 76 69 63 65 21 66 2F 33 2F 30 2F 30
14:07:02.854 [CoapServer(main)#2] DEBUG org.eclipse.californium.core.network.UdpMatcher – tracking open request [KeyMID[139.9.141.13:5683-31286], KeyToken[139.9.141.13:5683-780DDA1C62E32B30]]
14:07:02.855 [UDP-Sender–0.0.0.0:0-0] DEBUG org.eclipse.californium.elements.UDPConnector – UDPConnector (org.eclipse.californium.elements.UDPConnector$Sender@2060ce0e) sent 91 bytes to 139.9.141.13:5683
14:07:02.901 [UDP-Receiver–0.0.0.0:0-0] DEBUG org.eclipse.californium.elements.UDPConnector – UDPConnector (0.0.0.0:56840) received 12 bytes from 139.9.141.13:5683
14:07:02.901 [CoapServer(main)#2] DEBUG org.eclipse.californium.core.network.stack.BlockwiseLayer – [LWM2M Client-coap://0.0.0.0:0] received error ACK-4.04 MID=31286, Token=780DDA1C62E32B30, OptionSet={}, :
404就是没找到 自己找找原因
Uri-path格式要求这块emqx有文档吗,麻烦发个链接呗