(上圖是網路上找的)在上一篇文章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的群組聊天室,咦~~~~~~~