原理講解
原理簡述:利用發佈訂閱模式。一個ESP8266作爲消息發佈者,另一個ESP8266作爲消息訂閱者,由於訂閱者可以接收消息發佈者發佈的消息,從而實現兩個ESP8266通過雲端的遠程數據交互。兩個ESP8266在遠端通過主題(topic)進行消息耦合,也就是說 訂閱者訂閱了這個主題,發佈者往這個主題發佈消息,訂閱者就可以收到消息了。
關於發佈訂閱:
訂閱(訂閱):訂閱給定的一個主題/頻道的信息。
發佈(發佈)將信息發送到指定的主題/頻道。
只有訂閱該主題的設備纔可以收到發往該主題的消息。
通俗的來講:就是像郵件訂閱的場景,什麼意思呢,也就是說100個人訂閱了你的博客,如果博主發表了文章,那麼100個人就會同時收到通知郵件,訂閱/發佈模式就是這樣的原理。
如果還不理解的話再通俗講一下,就像生活中聽收音機,要想聽收音機,肯定就是調頻啦,只有在正確的頻道上面,我們才能聽得到好聽的節目,所以說訂閱首先要訂閱一個頻道/主題,只有訂閱了該主題,我們才能收到發往該頻道/主題的消息。
例程下載
本demo 是利用arduino IDE開發,關於arduino IDE 的ESP8266環境配置可參考:環境配置: 點擊跳轉
需要修改的地方:
///****************需要修改的地方*****************///
//WIFI名稱,區分大小寫,不要寫錯
#define DEFAULT_STASSID "PDCN"
//WIFI密碼
#define DEFAULT_STAPSW "air123456"
//用戶私鑰,可在控制檯獲取,修改爲自己的UID
String UID = "4d9ec352e0376f2110a0c601a2857225";
//主題名字,可在控制檯新建
String TOPIC = "mysender";
///*********************************************///
兩個程序都應該修改的,WIFI名稱和密碼區分大小寫,主題topic也區分大小寫,兩個程序主題應該保持一致,這樣纔可以一個往主題發消息,一個接收主題消息。
在巴法創客雲控制檯 新建一個主題,主題名字隨意,例如mysender,本實例用用mysender,使用示例代碼時應修改爲自己的主題名字,字母或數字或字母加數字組合。UID爲用戶私鑰,在 巴法創客雲控制檯 註冊登陸後可獲得。
登陸完成後,可在控制檯看到自己的私鑰UID,如圖所示:
創建主題,在控制檯,可創建主題。
- 第一輸入主題,字母或數字或字母+數字組合。
- 點擊創建主題。
WIFI名稱爲自己的路由器WIFI名稱,區分大小寫,寫錯會導致連接不上網絡的。
例程中,每兩秒上傳一次數據:
if(millis() - predataTick >= upDataTime){//上傳數據
predataTick = millis();
String upstr = "";
upstr = "cmd=2&uid="+UID+"&topic="+TOPIC+"&msg=hello_i_am_sender"+intNumber+"\r\n";
intNumber++;
sendtoTCPServer(upstr);
upstr = "";
}
接收者接收打印數據:
if((TcpClient_Buff.length() >= 1) && (millis() - TcpClient_preTick>=200))
{//data ready
TCPclient.flush();
Serial.println("Recieve: ");
Serial.println(TcpClient_Buff);
TcpClient_Buff="";
TcpClient_BuffIndex = 0;
}
如果路由器有網絡的話,兩個ESP8266就會連接到網絡中,一個往服務器的一個主題發送消息,一個從雲端的主題中接收數據,從而實現了兩個ESP8266通過雲端的遠程數據交互。
可以通過串口調試助手查看兩個ESP8266數據發送和數據接收的日誌情況,如下圖:
波特率115200
具體應用就要靠大家發散思維了,可以用在遠程控制、設備聯動、智能家居、智能玩具等等。