006-微信小程序和ESP8266連接阿里雲物聯網平台,並通過雲平台實現遠程溫濕度采集和繼電器控制(預注冊)


<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控制設備.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM