003-STM32+ESP8266+Air302基本控制篇(阿里雲物聯網平臺)-在阿里雲物聯網平臺上一型一密動態註冊裝置(STM32+Air302)
阿新 • • 發佈:2022-04-10
<p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/ESA2GJK1DH1K_A/aly.html" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>
說明
此章節程式碼涉及到SSL加密通訊, 使用者一定要看完了前面使用SSL通訊的章節!
如果裝置成批量的出售,誰也不想,一個一個的在網頁上新增上裝置
然後再一個一個的把裝置資訊(三元組)燒錄到裝置!!!!
這節呢就是不需要再燒錄或者配置什麼三元組,
所有的裝置都是一個程式.
裝置連線上網路以後自己去註冊.
然後裝置的名字我規定的是:
如果是WiFi或者乙太網裝置,就用MAC地址作為裝置名字
如果是GPRS裝置,就用IMEI作為裝置的名字.
動態註冊的方式(咱使用的是,一型一密免預註冊)
先解釋幾個名詞:一機一密 ;一型一密(預註冊) ;一型一密(免預註冊)
一機一密:
就是咱原先測試的在網頁上去手動註冊裝置,然後把ProductKey、DeviceSecret、DeviceName
給裝置,然後裝置根據這三個資訊組合計算下得到mqtt的連線引數,然後就連線通訊了
https://help.aliyun.com/document_detail/74005.html?spm=a2c4g.11186623.6.585.3bb41114l1EN77
一型一密(預註冊):
需要咱先在網頁上註冊上裝置,然後把ProductKey、ProductSecret、DeviceName
給裝置,然後裝置通過https或者mqtt獲取DeviceSecret
然後裝置根據ProductKey、DeviceSecret、DeviceName這三個資訊組合計算下得到mqtt的連線引數,然後就連線通訊了
一型一密(免預註冊): 免預註冊就是不用在雲端自己註冊裝置,裝置連線上網路以後裝置自己去註冊.
這樣子的話,每個裝置燒錄同樣的程式就可以.
不過每個裝置程式裡面的需要寫上產品的ProductKey 和 ProductSecret 的值,這兩個值是固定的.
主要是區分開你註冊的時候註冊到哪個產品下.
然後裝置通過https或者mqtt介面註冊裝置,
註冊的時候伺服器會返回ClientID和DeviceToken 等引數
最後按照平臺規定的組合MQTT引數
MQTT連線的方式註冊裝置:
拼接註冊返回的引數連線MQTT:
測試本節一型一密(免預註冊)程式
1.開啟本節的微控制器程式
2.登入自己的雲平臺開啟動態註冊
注:選擇哪個產品,裝置就會註冊到哪個產品下
開啟動態註冊
3,檢視並替換自己產品的ProductSecret; ProductKey;
4,檢視並替換自己instanceId
提示:在2021年7月30日之前購買的例項是沒有 instanceId 的, 微控制器程式裡面可保持空
如果有, 則需要填寫上.
5.編譯下載後測試(可以觀察日誌口)
6.在物聯網平臺上重新整理一下裝置列表,會看到註冊了一個新裝置
微控制器程式說明
1. 先瀏覽下阿里雲文件
2.初始化MQTT,註冊相應的回撥函式
3.連線阿里雲的TCP伺服器(MQTT伺服器)
先連線TCP伺服器(MQTT伺服器);
上面還使用IMEI作為了, 裝置的名字 DeviceName
3.根據阿里雲的文件,組合傳送註冊裝置訊息給MQTT伺服器
註冊設定需要SSL方式通訊, 所以需要啟用SSL
傳送註冊協議
使用MQTT傳送完以後, 伺服器會把註冊資訊通過MQTT傳送給裝置, 所以咱直接在MQTT接收回調函式裡面獲取就可以
把獲取到的設備註冊資訊儲存到flash, 然後重啟
4.重啟之後呢判斷下已經註冊了
5.裝置還是先使用TCP連線伺服器,然後使用註冊的資訊連線MQTT伺服器
提示:裝置連線通訊可以使用SSL也可以不使用SSL
如果使用SSL, 傳送MQTT連線協議之前先初始化好SSL
根據裝置資訊,組合傳送連線MQTT協議
如果是SSL就從SSL裡面提取資料, 然後傳遞給MQTT處理函式處理
如果不是SSL方式就直接提取網路資料, 然後傳遞給MQTT處理函式處理
結語
有了動態註冊以後,咱的裝置就可以燒錄一個程式
然後只要裝置可以連線網路,那麼註冊的事情就交給裝置去做了.