(上圖是網路上找的)在上一篇文章MQTT的架設與測試中,完成了MQTT伺服器的架設,接下來要做的是用來蒐集資料的Client端的程式(放在某台伺服器上,常駐抓取資料寫入資料庫中)
在網路上可以找到許多如何寫MQTT Client端程式的網頁,像MQTT Client Library Encyclopedia – M2Mqtt就介紹的很清楚,不過這些範例都是用C#寫的,為了方便我這裡的學生能照著做,所以我準備將範例以VB.NET改寫(因為我們系上教的是VB.NET)
被我用來改寫的範例來自(實踐大學聯網感測實作)"第 02 週 (05/17) MQTT Subscribe/Publish 程式設計 (3)",我把他原本C#的程式簡化成VB.NET的版本
在Visual Studio建立好VB.NET專案後,先用"Nuget封裝管理員"中的"管理方案的Nuget套件",把m2mqtt的套件安裝進來(也可以於套件管理器主控台貼上安裝指令:Install-Package M2Mqtt)
由於我是要測試用,所以我的Form上有訂閱、發佈與即時訊息內容等功能,正式應用時,Form中應該是顯示目前的工作狀況就可以了
在程式中記得要引用底下兩個Library
Imports uPLibrary.Networking.M2Mqtt
Imports uPLibrary.Networking.M2Mqtt.Messages
以下是我的完整程式
在引用了M2Mqtt的套件後,程式在Form載入時進行Mqtt Client端的建之與連線,以及由Mqtt Server即時收到訊息時是交由那一個副程式處理
當Form載入後,Server端會出現連上的訊息
若要訂閱主題可使用client.Subscribe
按訂閱後,Server端會出現訂閱的訊息
若要發佈主題可使用client.Publish
按發佈後,Server端會出現發佈的訊息
若有其他的人在其處發表我們訂閱的主題,其內容會即時出現在即時訊息內容中
未來這個程式會即時去接收Mqtt Server上由感測層傳入的資訊,解析後寫入資料庫中(或進行相關的處理),這些動作都可放在client_MqttMsgPublishReceived這個副程式中
由於這個程式是要當常駐程式用,所以在執行為了避免程式被不小心中止了,所以當程式最小化後,會出現在右下角的任務列中(不會出現在工作列中)
在任務列中點圖示兩下會再度出現程式畫面
完成了,學生說他還想知道怎麼在ASP.NET中去訂閱與發佈內容到Mqtt Server上,因為他想用來寫類似FB或Line的群組聊天室,咦~~~~~~~