原理講解
原理簡述:利用發布訂閱模式。一個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
具體應用就要靠大家發散思維了,可以用在遠程控制、設備聯動、智能家居、智能玩具等等。