本文介绍设备使用物联网平台提供的设备端C语言Link SDK 3.x版本,基于CoAP协议连接物联网平台可能出现的问题和解决方法。

说明 设备接入C Link SDK 3.x版本详细内容,请参见SDK获取

CoAP协议允许 over UDP 接入吗?

不支持CoAP over UDP。目前物联网平台仅支持CoAP协议的DTLS连接。

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协议支持数据上、下行,推荐使用MQTT协议。