本文介紹設備使用物聯網平臺提供的設備端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協議。