1. 程式人生 > 實用技巧 >技術實踐丨手把手教你使用MQTT方式對接華為IoT平臺

技術實踐丨手把手教你使用MQTT方式對接華為IoT平臺

摘要:本文主要講述使用MQTT方式對接華為雲IoT平臺的具體過程。

使用的方案:目標板為STM32L431BearPI(帶E53擴充套件板); TCPIP功能由開發板的ESP8266提供;MQTT使用Paho-Client-Embeded;IoT對接介面採用V5版本介面;Demo選擇target的MQTTdemo。

整個開發分為兩個部分:雲端開發、裝置側開發。雲端開發包括建立產品、建立裝置;裝置側開發包括根據方案配置功能、編譯燒錄、除錯。

雲端開發

建立產品模型

產品模型其實就是使用者裝置的抽象。用程式設計術語來解釋就是產品模型是Class,裝置是物件。關於產品模型的介紹以及如何建立產品模型可以參考

建立產品

本文最後建立的產品模型如下:

裝置屬性包括:溫度、溼度、光照強度、LED狀態、Motor狀態。裝置命令包括兩條:控制LED ON/OFF,控制Motor ON/OFF。

建立裝置

當產品模型建立完畢之後,我們可以建立基於該產品模型的裝置。裝置-->註冊裝置。根據對話方塊填寫對應的資訊。本文為了方便建立的裝置標識為demoTest,祕鑰為012345678(該裝置已經刪除,請勿連線)。結果如下:

註冊成功之後如下:

至此,我們已經註冊了端側裝置,並可以在我們的裝置-->所有裝置中看到我們新註冊的裝置。

裝置端開發

裝置端的開發主要包括配置工程、編譯燒錄、除錯幾個步驟。下文基於此逐一進行介紹。

工程配置

由於SDK是一個全棧的軟體,包含所有的程式碼,因此我們需要告知編譯器哪些檔案需要編譯、怎麼編譯這些檔案,這個工作主要是由menuconfig完成。關於工程配置指導可以參考工程配置示範

進入到target/STM32L431_BearPi目錄下,輸入menuconfig(macos或者linux輸入menuconfig.py)即可進入到配置介面。

確認進入SDK的配置。

開發板的串列埠以及DEMO選擇

設定AT串列埠波特率和模組匹配;設定裝置ID和祕鑰,其和在IoT平臺上建立裝置時候的設定一致。

TCPIP配置

在Network下,選擇TCPIP功能,並設定esp8266模式,並設定熱點的SSID和PWD。

配置SSL

配置MBEDTLS的主要原因是,IoT平臺生成MQTT的三元組的時候需要使用到HMAC演算法。使能TLS並選擇mbedtls並配置為CERT模式。

配置MQTT協議

在Network選單下使能MQTT。此處配置的MQTT為標準MQTT協議。

配置IoT MQTT接入服務

在OC選單下,使能OC MQTT(可以選擇關閉OC COAP以及OC LWM2M)。

此處我們配置的為MQTT 接入IOT的流程;沒有使能標準DEMO是因為我們使用target下的demo.

輸入Q並儲存退出,會發現我們剛才的配置會儲存在.config檔案中。

再輸入genconfig(genconfig.py)會生成或者更新iot_config.h檔案。Makefile依據.config檔案選擇哪些元件編譯;編譯器會根據iot_config.h檔案決定怎麼編譯這個元件。

至此我們對於工程的配置已經完成。

編譯燒錄除錯

編譯

功能原始碼採用的是Makefile進行組織,理論上你有Make工具以及對應的交叉編譯器都可以進行編譯。本文使用的是AC6公司的SW4ST這個工具(基於Eclipse的一款工具)。其使用可以參考SW4ST使用

在SW4ST的選單Project-->Clean下勾選清除後編譯即可編譯,並可以在Console下看到編譯結果。

如果出現FLASH溢位行為,可以將不需要的元件(stime shell)通過配置禁用;或者在Makefile中修改優化等級從-O0 -g修改為-Os。

燒錄

在SW4ST的選單中Run-->Debug Configurations。

建立一個Ac6 STM32Debugging(使用的stlink)。

只需要保證MCU的型號一致即可。

對於BearPI而言,還需要設定重啟模式,設定為軟模式即可。

點選apply並debug,可以看到燒錄完畢並進入除錯介面。

除錯

進入debug頁面之後,我們可以像其他的IDE一樣step into/step over/step out/run等除錯。

同時可以接入串列埠,設定正確的波特率,會看到系統的輸出資訊。(wifi連線上並獲取IP,向IoT平臺訂閱主題成功)。

聯合除錯

裝置線上並上報資訊

當端側顯示連線OK時候,我們在IoT平臺可以看到對應的裝置應該已經線上,並接收到對應資料。

IoT平臺下發命令

在命令中選擇同步命令下發,可以觀測到端側裝置可以接收到相關的命令。

至此,我們將裝置端和IoT平臺的資料互動通道打通。

點選關注,第一時間瞭解華為雲新鮮技術~