寄新玩具給我玩是很好,但是至少把針腳焊上去再寄給我吧,不然讓我自己來焊可能會把N個點焊成一點,這是想逼死誰啦!(有那位電焊高手同學還没回家過暑假,可以來老師辦公室幫老師焊一下嗎?)
原本的想像應是感測層的某樣設備與ESP8266 D1 mini連結,透過UART將資料傳進ESP8266中,再藉由ESP8266以MQTT的方式傳送資訊與接收控制訊息,但是現在針腳沒有焊上去沒辦法連接在一起,所以我準備傳送的資料與接收的控制訊息就用模擬的方式來進行,嘿嘿,更輕鬆!
在Arduino IDE的部份,記得先在偏好設定中加入這一段URL
http://arduino.esp8266.com/stable/package_esp8266com_index.json
在Boards Manager中把ESP8266 D1 mini的package裝進來
以下是我這次完成的完整程式
程式寫好後就把它燒到ESP8266 D1 mini中,順利執行,可以由Serial Port中看到連上AP,取得IP
在伺服器上也可看到連上MQTT Server的訊息
一開始運作,ESP8266 D1 mini會跟MQTT Server訂閱兩個主題,一個是用來接收自己公佈在Server上的訊息(Q119/Test,可以不用),一個是用來接收控制的訊息(Q119/Alarm)
當有需要對連結在ESP8266 D1 mini上的設備進行控制時,可發佈MQTT訊息來完成,由於我沒有連結任何設備,所以當收到控制訊息時,只是在Serial Port中顯示一段訊息,想像中是這樣,在上次蒐集資料的Client端的程式中會常駐抓取資料寫入資料庫中,若是有發現資料有異常況,可以發出MQTT訊息,對相關設備進行控制
用命令字元,模擬發出MQTT控制訊息
收到模擬控制訊息,進行相關控制
對我來說在這個例子中最大的問題是字串的處理,卡了好久,後來是用snprintf函數把它搞定
吔!寫完了,可以玩鋼彈大亂鬥了!