現在有許多物聯網都採用MQTT來做為資料傳送的通訊協定,我目前辦公室裡用了美麗蓮的的早知道預警系統,這套系統具有相當多的功能(如下圖),可是我只是把它拿來當寶可夢展示燈座(拿大砲打蒼蠅,哈哈哈)。


回到正題,對於這個燈座,主要是要控制其燈光的變化,我想要直接利用手機(行動裝置)去控制其燈光的開啟與關閉(美麗蓮有提供線上的控制系統,但還要打開瀏覽器做一些登入的操作,覺得懶)。由於早知道預警系統是使用MQTT來傳送與接收資料,所以我要用手機去控制,必須在手機APP也寫發送MQTT的程式,但我覺得這樣投資報酬率太低了,所以我決定寫一個MQTT發送代理人服務來用,未來有任何需要以MQTT來傳送資訊的,都丟到這個服務上就好了。

有關於MQTT的應用,我在之前有寫過一些:MQTT的架設與測試MQTT資料的抓取ESP8266 D1 mini傳送資料到MQTT Server、接收資料進行相關控制ESP8266 D1 mini連線AP與保存相關參數啟用MQTT的身份驗證預警資訊發送語音辨識與語意辨識的應用-智慧居家自然語言控制系統等等。有需要的可以去看一下,因為已經提過的有些內容我在這一篇裡面就不提了。

我想做的就是伺服器上有一個服務,客戶端不管利用什麼方式管道連上,只要提供可用此服務的帳號密碼(ID,PW),通過驗證就可以使用此服務。允許使用服務後,只要提供要送訊息過去的MQTT伺服器位址(server),連MQTT的帳戶密碼(SID,SPW),要傳送的主題與內容(topic,content),我所建立的服務就會把資訊傳送到特定的伺服器上。以下是這個服務的主要程式碼片段

一樣使用APP INVENTOR來建立控制的人機界面,有了MQTT發送代理人後這部分的程式就簡單多了,在APP中只要安排個WEB元件用來傳送訊息給MQTT發送代理人事情就搞定了,底下是"完整"的程式(幾乎沒寫什麼東西,呵呵呵!)

執行的畫面(超大按鈕,適合我這種年過半百的人)


燈燈開了又關,關了又開,哈哈哈!

嘿嘿,不知不覺又寫完了!

********** 2018/6/11 補充 **********

今天利用一點時間寫了一個利用ASP.NET呼叫MQTT發送代理人的簡單範例(原本寫的是利用APP Inventor的WEB元件呼叫),在這一個範例中是使用ASP.NET的WebClient類別來建立連線MQTT發送代理人的客戶端,以下是主要的程式碼,是不是超簡單,要怎麼控制就怎麼控制,呵呵呵!

網頁畫面(開網頁就可以控制,把它設成我的最愛,在辦公室控制燈光無壓力,哈哈哈)