用戶可以直接通過SDK提供的MQTT API與阿里云物聯網平臺通信,即可以通過向指定的Topic發送消息的方式將數據發送到阿里云物聯網平臺,也可以通過訂閱指定的Topic從阿里云物聯網平臺接收數據,這些Topic都是用戶自定義的。
通信流程圖
使用MQTT Topic與物聯網平臺通信的流程示意圖如下:
通過調用
IOT_MQTT_Construct()
接口調用, 建立設備和云平臺之間的長連接 。該接口用來向云平臺發起連接請求,需要的“簽名信息”可以通過
dev_sign
功能中的IOT_Sign_MQTT()
獲得。連接成功后,會返回一個
handle
參數,這是連接的句柄,可用作之后所有MQTT網絡接口的輸入參數。
通過
IOT_MQTT_Subscribe()
接口調用,可以向云平臺表達設備將接收哪些Topic上的報文。進入業務主循環 。
通過
IOT_MQTT_Publish()
或IOT_MQTT_Publish_Simple()
,可將消息上報到云端。IOT_MQTT_Yield()
用于接收云端下發的消息,并調用用戶在IOT_MQTT_Subscribe()
時指定的回調函數,用于對數據進行處理。
功能API接口
函數名 | 說明 |
MQTT連接后,調用此函數檢查長連接是否正常。 | |
MQTT實例的構造函數,入參為 | |
MQTT實例的摧毀函數,入參為 | |
MQTT會話階段,組織一個完整的 | |
MQTT會話階段,組織一個完整的 | |
MQTT會話階段,組織一個完整的 | |
MQTT會話階段,組織一個完整的 | |
MQTT會話階段,組織一個完整的 | |
MQTT會話階段,MQTT主循環函數,內含了心跳的維持,服務器下行報文的收取等。 |
需要實現的HAL接口
以下函數為可選實現,如果希望SDK提供MQTT通道功能,則需要用戶對接。
函數名 | 說明 |
返回設備加電以來到當前時間點過去的毫秒數 | |
按照入參指定的毫秒數睡眠相應時間 | |
銷毀一個TLS連接,用于MQTT功能,加密連接的情況 | |
建立一個TLS連接,用于MQTT功能,加密連接的情況 | |
從一個TLS連接中讀數據,用于MQTT功能,加密連接的情況 | |
向一個TLS連接中寫數據,用于MQTT功能,加密連接的情況 | |
銷毀一個TLS連接,用于MQTT功能 | |
建立一個TCP連接,包含了域名解析的動作和TCP連接的建立 | |
在指定時間內,從TCP連接讀取流數據,并返回讀到的字節數 | |
在指定時間內,向TCP連接發送流數據,并返回發送的字節數 |
SDK提供的用戶API接口都列在src/mqtt/mqtt_api.h
,可能需要對接的HAL函數都列在src/mqtt/mqtt_wrapper.h
,具體以代碼為準。