自訂MQTT Topic通訊
使用者可以直接通過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,具體以代碼為準。