MQTTとは
MQTTとは、通信プロトコルの一種でありTCP/IP群のアプリケーション層の一種である。
MQTTのメリット
MQTTのメリットは、
- ・通信データが軽量である
- ・メッセージのやり取りが出版-購読型モデルである
という点が挙げられる。
通信データが軽量である
MQTTでの通信では、ヘッダーが最小で2バイトと非常に軽量であり通信速度が遅い環境であっても問題なく通信でき、通信時に掛かる負荷が少ない。
メッセージのやり取りが出版-購読型モデルである
MQTTでの通信では、メッセージのやり取りが出版-購読型モデルであり自分の知りたい情報のみを取得することが可能である。
MQTT以外の方法
MQTT以外のメッセージプロトコルの種類にHTTPが挙げられる。
HTTPとの違い
HTTPとの違いは、データ量と送受信の対象の2つが主に上げられる。
MQTTの使い方
MQTTを使用するために必要な要素はパブリッシャー、サブスクライバー、ブローカーである。パブリッシャーがデータをブローカーに送信し、サブスクライバーはブローカーにフィルター内容を送信する。ブローカーはそのフィルター内容に応じてパブリッシャーから受信したメッセージをサブスクライバーに送信する。


Node-RedでMQTTを使用する方法
Node-Red上でMQTTを使用するにはMQTTノードとaedes MQTT brokerノードを使用する。フローをコピーする前にaedes MQTT brokerノードを追加する。
ノード画像


接続したフローは下記に記載する。
フローと配線図
[{“id”:”91079fe4f456577b”,”type”:”mqtt in”,”z”:”bf5a7517b0dc67c8″,”name”:””,”topic”:”/test_test”,”qos”:”2″,”datatype”:”auto-detect”,”broker”:”407a01e4.6b637″,”nl”:false,”rap”:true,”rh”:0,”inputs”:0,”x”:100,”y”:160,”wires”:[[“6bcd612d545c7c6a”]]},{“id”:”6bcd612d545c7c6a”,”type”:”debug”,”z”:”bf5a7517b0dc67c8″,”name”:”test”,”active”:true,”tosidebar”:true,”console”:false,”tostatus”:false,”complete”:”payload”,”targetType”:”msg”,”statusVal”:””,”statusType”:”auto”,”x”:230,”y”:160,”wires”:[]},{“id”:”12b67af3a75e1ff3″,”type”:”aedes broker”,”z”:”bf5a7517b0dc67c8″,”name”:””,”mqtt_port”:1883,”mqtt_ws_bind”:”path”,”mqtt_ws_port”:””,”mqtt_ws_path”:”/test_test_test”,”cert”:””,”key”:””,”certname”:””,”keyname”:””,”persistence_bind”:”memory”,”dburl”:””,”usetls”:false,”x”:130,”y”:240,”wires”:[[“03170ad24c7be902”],[“0bbd6d4f9392abf6”]]},{“id”:”03170ad24c7be902″,”type”:”debug”,”z”:”bf5a7517b0dc67c8″,”name”:”debug 11″,”active”:false,”tosidebar”:true,”console”:false,”tostatus”:false,”complete”:”false”,”statusVal”:””,”statusType”:”auto”,”x”:300,”y”:220,”wires”:[]},{“id”:”0bbd6d4f9392abf6″,”type”:”debug”,”z”:”bf5a7517b0dc67c8″,”name”:”debug 12″,”active”:false,”tosidebar”:true,”console”:false,”tostatus”:false,”complete”:”false”,”statusVal”:””,”statusType”:”auto”,”x”:300,”y”:260,”wires”:[]},{“id”:”d40ea89aa651bab5″,”type”:”inject”,”z”:”bf5a7517b0dc67c8″,”name”:””,”props”:[{“p”:”payload”}],”repeat”:””,”crontab”:””,”once”:false,”onceDelay”:0.1,”topic”:””,”payload”:”テスト”,”payloadType”:”str”,”x”:110,”y”:320,”wires”:[[“e1a663647f9006bf”]]},{“id”:”e1a663647f9006bf”,”type”:”mqtt out”,”z”:”bf5a7517b0dc67c8″,”name”:””,”topic”:”/test_test”,”qos”:””,”retain”:””,”respTopic”:””,”contentType”:””,”userProps”:””,”correl”:””,”expiry”:””,”broker”:”407a01e4.6b637″,”x”:240,”y”:320,”wires”:[]},{“id”:”407a01e4.6b637″,”type”:”mqtt-broker”,”name”:””,”broker”:”localhost”,”port”:”1883″,”clientid”:””,”autoConnect”:true,”usetls”:false,”protocolVersion”:4,”keepalive”:”60″,”cleansession”:true,”autoUnsubscribe”:true,”birthTopic”:””,”birthQos”:”0″,”birthPayload”:””,”birthMsg”:{},”closeTopic”:””,”closePayload”:””,”closeMsg”:{},”willTopic”:””,”willQos”:”0″,”willPayload”:””,”willMsg”:{},”userProps”:””,”sessionExpiry”:””}]

こちらの詳細は別の記事に記載する。

MQTTを活用したアプリケーション
MQTTは軽量かつ多人数に向けて発信できるためチャットアプリケーションに向いている。