カテゴリ: C# 更新日: 2026/08/09

C#のIoT開発入門!MQTTnetライブラリでMQTT通信を実装する方法

C#のIoTでMQTT通信を行う方法(MQTTnetライブラリ)
C#のIoTでMQTT通信を行う方法(MQTTnetライブラリ)

先生と生徒の会話形式で理解しよう

生徒

「C#を使ってIoT機器を動かしたいのですが、MQTT通信というのが難しそうで困っています。どうすればいいですか?」

先生

「MQTT通信は、IoTの世界では標準的な通信ルールです。C#ではMQTTnetという便利な道具を使うと驚くほど簡単に実装できますよ。」

生徒

「MQTTnetを使うと、どんなことができるようになるのですか?」

先生

「離れた場所にあるセンサーのデータを集めたり、スマホから照明を点けたりといった制御が自在にできるようになります。一緒に手順を見ていきましょう!」

1. IoTとMQTT通信の基礎知識

1. IoTとMQTT通信の基礎知識
1. IoTとMQTT通信の基礎知識

まず、言葉の整理から始めましょう。IoTとは「モノのインターネット」のことで、普段使っている家電やセンサーをインターネットにつなぐ技術です。そして、そのモノ同士が会話をするためのルールがMQTTです。

MQTTは、郵便局のような仕組みで動きます。サーバー(MQTTブローカー)が郵便局の役割をし、誰かがメッセージを送り(パブリッシュ)、それを必要としている人が受け取る(サブスクライブ)という流れです。この仕組みを使うと、少ない通信量で効率よく情報をやり取りできるため、省電力で動くIoT機器に最適なのです。

2. 開発環境の準備とMQTTnetのインストール

2. 開発環境の準備とMQTTnetのインストール
2. 開発環境の準備とMQTTnetのインストール

C#でIoT開発を始めるには、まず「Visual Studio」というプログラムを書くためのソフトを用意します。次に、MQTTnetというライブラリをインストールします。ライブラリとは、他の誰かが作ってくれた「便利な部品セット」のことです。これを使うことで、ゼロから難しい通信ルールをプログラミングする必要がなくなります。

インストールは、Visual Studioの「NuGetパッケージマネージャー」から「MQTTnet」と検索してクリックするだけです。これだけで、高度な通信機能があなたのパソコンで使えるようになります。

3. MQTTブローカーに接続する基本コード

3. MQTTブローカーに接続する基本コード
3. MQTTブローカーに接続する基本コード

では、実際にMQTTブローカーと接続してみましょう。ブローカーとは、先ほどの例でいう郵便局のことです。接続には、クライアントと呼ばれる接続用プログラムを作成します。


var factory = new MqttFactory();
var mqttClient = factory.CreateMqttClient();
var options = new MqttClientOptionsBuilder()
    .WithTcpServer("broker.hivemq.com", 1883)
    .Build();

await mqttClient.ConnectAsync(options);
Console.WriteLine("接続が完了しました");

このコードは、インターネット上にある公開ブローカーに接続するものです。ポート番号の1883は、MQTT通信専用の「通り道」のような数字だと考えてください。プログラムが動くと、無事にサーバーと手をつなぐことができます。

4. データの送信(パブリッシュ)に挑戦

4. データの送信(パブリッシュ)に挑戦
4. データの送信(パブリッシュ)に挑戦

接続ができたら、次はメッセージを送ってみましょう。これをパブリッシュと呼びます。センサーが温度を計測して、それをサーバーに送るようなイメージです。


var message = new MqttApplicationMessageBuilder()
    .WithTopic("my/iot/sensor")
    .WithPayload("25.5")
    .Build();

await mqttClient.PublishAsync(message);

トピックという「荷札」のようなものを指定して、そこに温度などのデータを書き込みます。この荷札(トピック)が、後でデータを受け取る人との目印になります。例えば、家のリビングの温度なら「home/living/temp」のように階層を作ると整理しやすくなります。

5. データの受信(サブスクライブ)を実装する

5. データの受信(サブスクライブ)を実装する
5. データの受信(サブスクライブ)を実装する

次に、誰かが送ったデータを受け取るサブスクライブという機能を作ります。これは、自分が興味のあるトピックを監視し続ける仕組みです。データが届いた瞬間に、何か別の処理を動かすことも可能です。


mqttClient.ApplicationMessageReceivedAsync += e =>
{
    var payload = Encoding.UTF8.GetString(e.ApplicationMessage.Payload);
    Console.WriteLine($"新しいデータを受信しました: {payload}");
    return Task.CompletedTask;
};

await mqttClient.SubscribeAsync("my/iot/sensor");

このコードでは、指定したトピックにデータが届くと自動的に反応するように設定しています。これができれば、離れた場所から送られてくる情報をリアルタイムで表示したり、家電を遠隔操作したりするシステムが作れます。

6. ハードウェア制御へつなげる応用編

6. ハードウェア制御へつなげる応用編
6. ハードウェア制御へつなげる応用編

最後に、実際のハードウェアを動かすための考え方を解説します。例えば、受信したデータが「ON」ならLEDライトを点灯させ、「OFF」なら消灯させるという処理を追加します。C#にはGPIOというハードウェアの信号を制御する機能もありますので、MQTTで受け取ったコマンドをGPIOに変換して送るだけで、物理的なスイッチを動かせます。


if (payload == "ON")
{
    // ここにLEDを点灯させるハードウェア制御のコードを書く
    Console.WriteLine("ライトを点灯します");
}

このように、MQTTnetはプログラミングの入口と出口をつなぐ重要な役割を果たします。パソコンの中のプログラムと、現実世界の機械がMQTTを通じて会話を始める瞬間は、まさにIoT開発の醍醐味といえるでしょう。

カテゴリの一覧へ
新着記事
New1
C#
C#とは何か?初心者向けにできること・特徴・インストール手順までやさしく解説
New2
C#
C#のメソッドを引数に渡す方法!高階関数の基本を学ぼう
New3
Azure
Azure Front Door Analytics活用|リアルタイム監視とレポートで通信を分析
New4
COBOL
COBOLで数値比較とALPHABETIC・NUMERIC条件をやさしく解説!初心者でも安心ガイド
人気記事
No.1
Java&Spring記事人気No1
C#
C#のWPFとは?XAMLでGUI開発を基礎から完全解説!初心者向けの入門ガイド
No.2
Java&Spring記事人気No2
COBOL
COBOL教育における教材とリソース完全ガイド!初心者でもわかるプログラミング学習の選び方
No.3
Java&Spring記事人気No3
Azure
Azure SQL Database購入モデル比較!vCoreとDTUの違いと選び方を初心者向けに解説
No.4
Java&Spring記事人気No4
C#
C#のLINQでWhere句を使いこなす!初心者でもわかるデータ抽出とフィルタリング
No.5
Java&Spring記事人気No5
COBOL
COBOLのCOPY句の使い方を完全ガイド!初心者でもわかる共通部品の再利用方法
No.6
Java&Spring記事人気No6
COBOL
COBOLの数値データ型「PIC 9」の使い方と注意点をやさしく解説!
No.7
Java&Spring記事人気No7
C#
C#のLINQでFirstとFirstOrDefaultの違いと使い方を完全解説!初心者向けガイド
No.8
Java&Spring記事人気No8
C#
C#のforeachループを完全ガイド!初心者でもわかるコレクション操作の基本