之前用ESP8266實現了在局域網的一些控制功能,想要真正的實現遠程控制,還是要把8266接入到英特網中去,那樣我們才能夠體驗更多的互聯網帶來的便利。
那麼要在互聯網中控制8266該如何實現呢?大概的思路就是要把設備接入雲服務器,通過雲服務器實現遠程數據交互。本人的網絡知識比較匱乏,找了很多辦法,看了很多文檔,全都雲遮霧罩的,令人摸不著頭腦;後來聽說現在MQTT比較流行,就轉而查閱MQTT相關資料,感謝互聯網,感謝開源的大神,居然有支持ARDUINO IDE的MQTT庫!
下載地址:https://github.com/knolleary/pubsubclient
下載完庫,拷貝到libraries文件夾下,打開ARDUINO IDE(安裝好8266庫的),然後選擇“文件”->“示例”->"PubSubClient"->"mqtt_esp8266":
該實例實現了簡單的MQTT通訊,只要簡單的更改代碼即可:
“broker.mqtt-dashboard.com”是一個測試服務器,可以直接使用;
編譯並上傳代碼,就可以測試了,打開串口監視器,就可以看到來自服務器的推送消息:"Message arrived [inTopic] 0"。
不過這個服務器不是很穩定,經過一番查詢,又發現了一個專門提供MQTT服務的網站:cloudMQTT.com,簡單註冊、設置之後,果然可以跑通了!雖然免費的資源比較可憐,但是足夠一般的控制使用了!
下面簡單介紹一下步驟:
1打開cloudMQTT.com網站,點擊“Control Panel”進入註冊頁面;
2在Sign up下面輸入你的郵箱地址,然後點擊後面的sign up按鈕;發送確認連接到你的郵箱,激活即可;
3登陸後,點擊“Create”按鈕創建新的實例,選擇“Cute Cat”類型(免費服務,其他兩個是收費的),同時支持10個連接;
4創建成功後,點擊“Details”進入控制檯,這裡要記住屬於自己的4個關鍵參數:Server,User,Password和Port,再點擊“WebSockets UI”進入監控界面;
5將上一步的參數分別填入到8266的程序當中去:
const char* mqtt_server = Server;
...
if (client.connect(clientId.c_str(),User,Password)) {...}
...
client.setServer(mqtt_server, Port);
ok,編譯下載,打開串口監視器,按下復位鍵,然後觀察數據:
服務器獲得數據:
8266獲得數據:
經過測試,使用該MQTT庫,可以輕鬆地實現設備和服務器之間、設備和設備之間的數據通訊,這為我們之後的智能設備DIY做好了鋪墊。
希望我的分享為大家帶來幫助,歡迎大家多評論,多交流!
閱讀更多 蟻哥愛科技 的文章