<p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/ESA2GJK1DH1K_A/aly.html" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>
說明
前面的章節中寫了使用APP或者微信小程序連接阿里雲平台實現動態注冊設備
這節說明一下使用STM32+ESP8266,AT指令實現動態注冊設備
為啥要弄動態注冊?
如果設備成批量的出售,誰也不想,一個一個的在網頁上添加上設備
然后再一個一個的把設備信息(三元組)燒錄到設備!!!!
這節呢就是不需要再燒錄或者配置什么三元組,
所有的設備都是一個程序.
設備連接上網絡以后自己去注冊.
然后設備的名字我規定的是:
如果是WiFi設備,就用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.登錄自己的雲平台查看自己產品的ProductSecret; ProductKey;
注:我前面的設備這個產品下設備,所以我也注冊到這個產品下.
3.替換自己的 ProductSecret; ProductKey;
4.因為是WiFi模塊所以需要連接路由器
注:也可以屏蔽這句話用APP給設備配網(APUConfig)
5.別忘了
(STM32) PA3 -- TX (WiFi)
(STM32) PA2 -- RX (WiFi)
6.下載后測試(可以觀察日志口)
7.在物聯網平台上刷新一下設備列表,會看到注冊了一個新設備
單片機程序說明
1. 先瀏覽下阿里雲文檔
2.連接阿里雲的MQTT服務器,和以前的地址是一樣的(不過需要使用SSL方式)
3.根據阿里雲的文檔,組合MQTT信息
注:DeviceName 是獲取的WiFi模塊的MAC地址
4.發送連接信息,並接受處理返回
5.解析並存儲數據
6.解析說明
//·µ»ØµÄÊý¾Ý+IPD,166:0?/ext/regnwl{"clientId":"RYzzfPbVqLE6J5H5dvSm000100","productKey":"a1m7er1nJbQ",
"deviceName":"10:52:1c:f0:82:21","deviceToken":"^1^1602183887248^35fa4b40451a986"}
服務器規定的組合:
mqttClientId: clientId+"|securemode=-2,authType=connwl|"
mqttUsername: deviceName+"&"+productKey
mqttPassword: deviceToken
連接地址: ${YourProductKey}.iot-as-mqtt.${YourRegionId}.aliyuncs.com:1883
因為咱的deviceName在注冊的時候就是使用的設備的MAC地址
然后咱已經知道了,productKey也已經知道了
所以我解析的時候只是判斷了下,並沒有提取
7.使用注冊的設備連接阿里雲(設備就正常使用了)
8.復位重啟,如果已經注冊了,則直接跳過注冊步驟
9.正常使用時和咱在平台上手動注冊的沒有什么區別
訂閱和發布的主題還是由 ProductKey和DeviceName決定的
只不過現在設備的DeviceName是由程序獲取的WiFi的MAC地址
結語
有了動態注冊以后,咱的設備就可以燒錄一個程序
然后只要設備可以連接網絡,那么注冊的事情就交給設備去做了.
這節設置的設備的名字是使用的WiFi模塊的MAC地址