C# (.net) で使える MQTT クライアント
はじめに
C# で使える MQTT クライアントを探していて、
eclipse プロジェクトより 出ている “Paho M2Mqtt” というライブラリが
シンプルで使いやすかった為、そのメモです。
“Paho M2Mqtt” 以下の環境をサポートしている為、
IoT機器でも使用可能になっています。
.NET Framework、.NET Compact Framewoprk、
.NET Microframework 4.2/4.3、Mono、
Windows 8.1, Windows Phone 8.1のWinRT
セットアップ
"Paho M2Mqtt"ライブラリは、NuGet からダウンロードします。
まず最初に Visual Studio で新規の「コンソールプロジェクト」を作成します。
NuGetの管理コンソールを開いて、「M2Mqtt」で検索しインストールを行います。
Subscriber(サブスクライバー)のサンプル コード
Publisher (パブリッシャー) からメッセージが送信されると、
コンソールにそのメッセージを表示するサンプルです。
static void Main(string[] args) {
// HIVE MQ の brokerを指定して、クライアントを作成
MqttClient client = new MqttClient("broker.mqttdashboard.com");
// メッセージを受信した際に発生するイベント
client.MqttMsgPublishReceived += (sender, e) => {
Console.WriteLine(Encoding.UTF8.GetString(e.Message));
};
string clientId = Guid.NewGuid().ToString();
client.Connect(clientId);
// 受信するメッセージのトピック、QoSレベルを指定して、メッセージ受信待ち状態に入る
client.Subscribe(new string[] { "/my/mqtt/sample/testdata" }, new byte[] { 2 });
while (true) {
System.Threading.Thread.Sleep(1000);
}
}
動作確認
今回は、ブラウザだけで動作するMQTT クライアントの、HIVE MQを使用して
確認を行っていきたいと思います。
※本来はメッセージの中継を行う Broker というサーバを立てる必要がありますが、
今回は、ライブラリの紹介がメインなので、HIVE MQ の Broker サーバを使用します。
1. まず↑で作成した「コンソールプロジェクト」を Visual Studio で起動します
2. 以下のHIVE MQのサイトにアクセスします。
http://www.hivemq.com/demos/websocket-client/
3. サイトが表示されたら「Connect」ボタンをクリックします。
4. Publish の枠に↓のイメージの通り入力して、Publish ボタンをクリックします。
項目 | 入力値 |
---|---|
Topic | /my/mqtt/sample/testdata |
Qos | 1 |
Message | はろー!MQTT |
5. コンソールに「はろー!MQTT」が表示されば成功です。
Publisher (パブリッシャー)のサンプル コード
今度は、C#のコードからメッセージを送信するサンプルです。
static void Main(string[] args) {
// HIVE MQ の brokerを指定して、クライアントを作成
MqttClient client = new MqttClient("broker.mqttdashboard.com");
string clientId = Guid.NewGuid().ToString();
client.Connect(clientId);
// メッセージを送信
client.Publish("/my/mqtt/sample/testdata", Encoding.UTF8.GetBytes("メッセージ飛ばしてみた!!"), 0, false);
}
動作確認
C#のコードから送信したメッセージが、
HIVE MQの Subscriber(サブスクライバー)に表示されるか確認します。
1. HIVE MQの [Add New Topic Subscription]をクリックします。
2. ↓の内容を入力し、[Add New Topic Subscription]をクリックします。
項目 | 入力値 |
---|---|
Topic | /my/mqtt/sample/testdata |
Qos | 0 |
3. 「コンソールプロジェクト」を Visual Studio で起動します
4. Messages エリアに、C#のコードから送信されたメッセージが表示されれば成功です
おわりに
<関連記事>
■ HTTP REST APIでAzure IoT Hubにメッセージを送信する (C#)
Azure IoT Hubに、HTTP REST APIを使って、メッセージを送信する方法を解説しています。
Device SDKがインストールできない環境で、役に立つ情報です。
0 件のコメント:
コメントを投稿