<p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/ESA2GJK1DH1K_A/" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>
實現的功能
微信小程序和ESP8266連接阿里雲物聯網平台,並實現微信小程序和ESP8266之間通信控制.
前要
請先學習完上一節!並配置好規則引擎!
請先學習完上一節!並配置好規則引擎!
請先學習完上一節!並配置好規則引擎!
添加設備
1.上一節我添加了一個名字為 8266LUASDK的產品
然后在這個產品下注冊了名字為Android 和 ESP8266 的設備
這一節咱再在這個產品下注冊個名字為 Mini 的設備
這個設備作為給微信小程序接入使用
4.點擊查看
5.打開本節微信小程序源碼,並修改上面相應的參數
如果日志打印有 connect 說明成功接入了阿里雲平台
測試(單片機程序還是使用的上一節的單片機程序)
1.提醒
可以直接用開發軟件測試,也可以用真機測試
測試的時候一次只能一個做測試! 否則就會相互擠掉連接.
如果用手機測試,可以把軟件設置為離線.
2.選擇添加自定義設備
3.輸入單片機使用的設備的名字
4.點擊這個設備進入控制頁面
5.控制頁面會顯示當前單片機采集的溫濕度數據,還有開關狀態
6.控制繼電器
源碼說明
我再解釋下一個事情:
阿里雲注冊的一個設備就作為了一個mqtt客戶端,你可以把這個設備作為單片機使用也可以作為APP使用.
一個設備的信息同一時間只能一個設備去用,如果同時使用,就會擠掉線!!!!
1.整體通信流程說明(就再叨叨這一遍)
微信小程序和單片機設備都是作為了阿里雲注冊的設備接入.
其實就是阿里雲上面注冊的兩個設備通信.
這節的微信小程序使用的雲端注冊的設備名字為 Mini 的設備接入雲平台
發布的主題是: /{ProductKey}/{DeviceName}/user/update
即:/a1kalhdMH2Z/Mini/user/update
訂閱的主題為:/{ProductKey}/{DeviceName}/user/get
即:/a1kalhdMH2Z/Mini/user/get
這節的單片機使用的雲端注冊的設備名字為 ESP8266 的設備接入雲平台
發布的主題是: /{ProductKey}/{DeviceName}/user/update
即:/a1kalhdMH2Z/ESP8266/user/update
訂閱的主題為:/{ProductKey}/{DeviceName}/user/get
即:/a1kalhdMH2Z/ESP8266/user/get
微信小程序和單片機設備各自作為阿里雲的設備接入阿里雲服務器.
然后微信小程序 添加設備的時候是添加的單片機設備注冊的名字
然后微信小程序發布的消息為:(以控制繼電器吸合為例)
{"TargetDevice":"ESP8266","DeviceName":"Mini","data":"switch","bit":"1","status":"1"}
TargetDevice 字段的值是 ESP8266,是微信小程序添加的設備的名字.
DeviceName 字段的值是 Mini ,是微信小程序本身設備的名字.
這條信息發給雲平台以后,經過了轉發規則
注:(提取數據) /a1kalhdMH2Z/+/user/update 里面的 + 代表任意字符串
意思是提取符合主題 /a1kalhdMH2Z/任意/user/update 里面的所有消息
上面的就提取了
{"TargetDevice":"ESP8266","DeviceName":"Mini","data":"switch","bit":"1","status":"1"}
注:(對數據進行操作) 發布到另一個 Topic /a1kalhdMH2Z/${TargetDevice}/user/get
${TargetDevice}意思是提取消息里面字段為 TargetDevice 的字段值,然后替換上面的 ${TargetDevice}
咱的消息是 {"TargetDevice":"ESP8266","DeviceName":"Mini","data":"switch","bit":"1","status":"1"}
所以最終消息轉發給下面的主題(也就是單片機訂閱的主題)
/a1kalhdMH2Z/ESP8266/user/get
然后單片機就收到了消息 {"TargetDevice":"ESP8266","DeviceName":"Mini","data":"switch","bit":"1","status":"1"}
單片機接收到消息以后,提取 "DeviceName":"Mini"
然后用自己的發布主題發布消息 /a1kalhdMH2Z/ESP8266/user/update
消息為:
{"TargetDevice":"Mini","DeviceName":"ESP8266","data":"switch","bit":"1","status":"1"}
TargetDevice 字段的值改為了 Mini
DeviceName 字段的值為單片機自己的設備名字 ESP8266
消息發給了服務器,然后經過轉發規則,同理 ,消息便會轉發給了微信小程序
最后微信小程序 提取消息里面的數據,就完成了通信
2.微信小程序執行流程說明
1.作為阿里雲的一個設備接入雲平台
2.添加一個設備,並把添加的設備的名字存儲到數據庫
3.點擊跳轉到控制頁面時把設備名字傳遞過去
4.控制頁面獲取設備名稱並組合發送的消息
5.組合自己的自定義主題
6.發送消息
7.接收處理消息
單片機程序說明請看上一節
單片機程序說明請看上一節
單片機程序說明請看上一節
結語
用戶也可以同時打開上一節的手機APP控制設備.