M2Mqttを使用したMQTTのクライアントサンプル

IoT時代を支えるプロトコル「MQTT」(中編) (1/3):CodeZine.

上のCodeZineの記事を参考にしながら、C#でMQTTクライアントのサンプルを作って見ました。

サンプルのソースコードはGitHubで公開していますので、参考にしてください。

https://github.com/ishisaka/m2mqttclientsample

M2Mqtt

M2Mqtt

M2Mqttは.NET Framework用のクライアントライブラリで、.NET Fx(4.5)、.NET Compact Framewoprk、.NET Microframework 4.2/4.3、Mono向けに作られていて、Windows 8.1, Windows Phone 8.1のWinRT上での動作もサポートされています。ソースコードのライセンスはApatch Lincese 2.0となっています。

ライブラリの導入はNuGetの使用が便利です。

パブリッシュ(送信)側のサンプル

あんまり難しいコードではないので、CodeZineの記事を読んでいれば、説明はそれほどいらないと思いますが、17行でMQTTブローカーのホスト名を指定してクライアントのインスタンスを作ったら、19行でユニークなクライアントIDを指定して、ブローカに接続しています。

22行のwhileの中が、メッセージをブローカーのキューにメッセージを送信する処理で、1.5秒毎にメッセージを送信しています。実際の送信処理は25行です。ここでは第1の引数でTopic(キューの名前)を指定し、第2引数でデータのByte配列をしてします。M2MqttのPublishメソッドは送信データをByte型の配列で要求するので、テキストのデータでもByte配列に変換する必要があります。

サブスクライブ側のサンプル

18行でMQTTブローカーのホスト名を指定してクライアントのインスタンスを作ったら、19行からメッセージ受信時のイベント処理を記述しています。イベント受信毎にコンソールに受信したメッセージの内容を表示させています。

29行がサブスクライブの登録で、引数でサブスクライブするトピック、QOSのレベルを指定します。

その後、ブローカーから切断されるまでメッセージを受信し続けます。

まとめ

M2Mqttは荒削りな部分がありますが、現状ではだいぶ実用的なライブラリになっていますし、私としては試していませんが、.NET MFや.NET CFへの対応、MONOのサポートはMaker:的なIoTとの親和性も高そうです。

コメントを残す