本文介绍设备使用CoAP协议连接物联网平台可能出现的问题和解决方法。

CoAP协议允许 over UDP 接入吗?

目前物联网平台的CoAP连接只支持DTLS,不支持CoAP over UDP。

CoAP协议接入物联网平台的URI是什么?

在调用 IOT_CoAP_Init 的时候,可以设置其参数iotx_coap_config_t里面的p_url

如果p_url为NULL,SDK会自动使用IOTX_ONLINE_DTLS_SERVER_URL 这个URL。

#define IOTX_ONLINE_DTLS_SERVER_URL “coaps://%s.iot-as-coap.cn-shanghai.aliyuncs.com:5684”

CoAP协议接入物联网平台的地址、端口等详细信息,请参见CoAP连接通信

IOT_CoAP_DeviceNameAuth认证函数是阻塞等待指定时间吗?

目前这个版本是非阻塞、异步的。在这个接口里面不会阻塞等待结果,而是在IOT_CoAP_Yield里面进行处理。

函数IOT_CoAP_Yield 是半阻塞。调用一次,会等2秒钟。有数据,则收取数据进行处理;没数据,则2秒后超时。

等待时间默认2,000毫秒,可自行修改宏COAP_WAIT_TIME_MS 来定义。

CoAP的客户端在提交认证时,需要字段IOTX_DEVICE_ID是什么意义?

这个字段是自定义的信息,例如可以填设备SN等信息。凡是想携带到云端的设备信息都可以填这里面。

如果发送到云端的数据不是JSON会出现什么错误?

目前除了支持JSON格式外,也可以支持cbor格式。与云端通信,需要使用指定格式,否则可能会出现无法解析的问题。

调用IOT_CoAP_Init方法时里面coap_malloc返回NULL,这是什么原因引起的?

请查看一下coap_malloc函数有没有适配实现。平台移植后,hal相关的底层函数都需要用户自行实现。

CoAP协议支持数据下行吗?

目前HTTP协议和CoAP协议暂不支持数据下行。MQTT协议支持数据上、下行,推荐使用。