MQTTとは
MQTT(Message Queueing Telemetry Transport)とは
軽量で効率的な通信プロトコルであり、特にIoT(モノのインターネット)環境での利用に適している。このプロトコルは、パブリッシュ・サブスクライブ(Pub/Sub)モデルを採用しており、デバイス間の非同期通信を可能にする。

MQTTを使うメリット
MQTTの利点
・軽量プロトコル: メッセージサイズが小さく、帯域幅を節約できる。
・リアルタイム性: メッセージの即時配信をサポートする。
・低消費電力: IoTデバイスのバッテリー消費を抑えられる。
・柔軟な通信モデル: パブリッシュ・サブスクライブ方式を採用し、1対多通信が容易。
・高い信頼性: メッセージ配信のQoS(Quality of Service)を3段階で選択可能。
・接続管理: 接続が切断されても再接続時に状態を保持可能
MQTTの使い方

上記の画像は、MQTT(Message Queuing Telemetry Transport)の通信モデルをわかりやすく示した図。中央に配置された「MQTT Broker」は、通信のハブとして機能し、データの送信元(Publisher)と受信先(Subscriber)の間でメッセージを中継する。
左側には「Publisher」が配置されており、温度センサや湿度センサーどのデバイスがデータを生成してBrokerに送信する。一方、右側には「Subscriber」があり、パソコン、スマートフォン、スマートウォッチなどのデバイスがBrokerから特定の値やメッセージを受け取る。この仕組みにより、PublisherはどのSubscriberがデータを受け取るかを意識せずにメッセージを送信でき、Subscriberも必要なデータのみを効率的に受信が可能になる。
この柔軟でシンプルな構造は、IoT環境でのデータ通信に最適である。
Node-REDを用いたMQTT通信の手順
mqtt inノードとdebugノードを配置する。

mqtt inノードを編集する。
・サーバに localhost:1883 を入力
・トピックを自由に書き加える。今回は /qwerty

injectノードとmqtt outノードを配置する。

mqtt outノードを編集する。
・サーバに localhost:1883 を入力
・トピックをmqtt inノードと同様に /qwerty にする。

injectノードを編集する。
・文字列に変更して出力したい QWERTY と入力する。

******************************
aedes brokerノードを使用するためにパレットの管理からノードを追加する。

ノードを追加 で aedes と入力してノードを追加する。

追加したaedes brokerノードとdebugノードを2つ配置する。

aedes brokerノードを編集する。
・MQTT port を1883に設定する。

・MQTT port を1883に設定する理由
MQTTの標準ポート
MQTTのデフォルトポートは1883で、一般的なMQTTクライアントが標準でこのポートを使用する。このため、ポートを1883に設定することで、クライアント側でポート番号を明示的に指定する必要がなくなる。
aedes brokerノードとdebugノードを繋ぐ。
injectノードを実行する。
・デバッグの欄に QWERTY と表示される。

MQTTを使ったアプリケーション
人気が高いMQTTを使ったアプリケーションの例
Home Assistantは、オープンソースのスマートホームプラットフォ
ームで、非常に多くのデバイスと連携できるため、スマートホーム愛好者やIoTエキスパートに人気がある。MQTTのサポートを利用して、デバイス間でデータのやり取りを行い、カスタマイズ性も高い。また、ユーザーが自由に設定できるため、家庭で使うだけでなく、開発者向けにも魅力的だ。
Blynkは、IoTプロジェクトの構築を簡単にするモバイルアプリ。特に、プロトタイピングのために多くのユーザーに使用されており、簡単にデバイスをモバイルアプリでコントロールできる点が魅力。MQTTを使ったリアルタイム通信が可能で、ハードウェアとモバイルの間の連携が容易。
MQTT以外方法

IoT通信プロトコルは、用途に応じた特性を持ち、最適な選択が求められる。
HTTP/HTTPSは広範囲に対応し、Webアプリやクラウド通信に適しているが、通信速度は低い。WebSocketは高速通信が可能で、リアルタイム性が求められるチャットやセンサーデータ配信に最適だ。CoAPは低消費電力で、広範囲に対応し、IoTセンサーに向いている。AMQPは中から高速度で、広範囲の通信が可能で、金融や在庫管理など高負荷のシステムに適している。LoRaWANは非常に低消費電力で、超広範囲の通信が可能で、農業や環境モニタリングに向いている。Zigbeeは短距離・低消費電力でスマートホームに適し、Bluetooth/BLEは短距離通信で非常に低消費電力のため、ウェアラブルデバイスや近距離IoTデバイスに最適だ。
これらの特性を踏まえ、用途に最適な通信方式を選ぶことで、IoTシステムの効率的な運用が可能になる。
感想
授業で触れていたMQTTについて改めて調べてみて、MQTT通信はデバイス同士が直接通信するのではなく、全てbrokerを介して通信されるため、異なるネットワークや異なる場所にあるデバイス同士でも接続が可能という点を再認識した。これらは今後のIoTにもさらに良い影響を与えるものだと思った。また、MQTT通信をNode-REDで簡単に接続して通信を行うことが可能ということを学び、Node-REDをより理解していきたいと思った。