初心者ガイド
Last updated
Last updated
MQTTは、低帯域環境でのM2M(マシンとマシンの間)テレメトリー向けに設計された軽量なパブリッシュ/サブスクライブメッセージングプロトコルです。
これは、1999年にアンディ・スタンフォード=クラーク(IBM)とアーレン・ニッパーによって、衛星を介した石油パイプラインのテレメトリーシステムを接続するために設計されました。
もともとは独占的なプロトコルとして始まりましたが、2010年にロイヤリティフリーで公開され、2014年にOASIS標準になりました。
MQTTはMQ Telemetry Transportの略ですが、以前はMessage Queuing Telemetry Transportとして知られていました。
MQTTは、IOT(インターネットオブシングス)の展開のための主要なプロトコルの一つに急速になりつつあります。
MQTTには2つの異なるバリアントといくつかのバージョンがあります。
MQTT v3.1.0 –
MQTT v3.1.1 – 一般的に使用されている
MQTT v5 – 現在は限定的な使用
MQTT-SN – 後で注記を参照
1999年に設計され、多くの年月にわたって使用されてきたオリジナルのMQTTは、TCP/IPネットワーク向けに設計されています。
MQTTv3.1.1は一般的に使用されているバージョンです。
v3.10と3.1.1の間にはほとんど違いがありません。こちらは主な違いを詳述したです
こちらは実際の仕様と、です。
最新のMQTTバージョン(v5)は、 (2018年1月)。仕様はからダウンロードできます。
リリース1.6時点で、mosquittoブローカーはMQTT v3.11に加えてMQTT v5もサポートしています。
最新のブローカーを使用しても、古いバージョン3.11のクライアントを引き続き使用できます。
Paho Pythonクライアントv1.5は現在v5をサポートしています。
MQTT-SNは2013年頃に指定され、UDP、ZigBeeおよびその他のトランスポート上で動作するように設計されました。
MQTT-SNは現在、非常に人気があるわけではなく、仕様もここ数年変更されていませんが、IOTの展開が始まるにつれて変わることを期待しています。MQTT-SNに関する詳細は、MQTT-SN作業ノートを参照してください。
MQTTクライアントにはメールアドレスや電話番号などのアドレスがないため、ほとんどのメッセージングシステムのようにクライアントにアドレスを割り当てる必要はありません。
注: 元々の用語はブローカーでしたが、現在はサーバーとして標準化されています。両方の用語が使用されているのを見ることがあります。
テスト用や実際のアプリケーション用に多くのMQTTブローカーが利用可能です。
Mosquittoは、WindowsとLinuxで動作する無料のオープンソースMQTTブローカーです。
Websocketsを使用すると、MQTTデータを直接Webブラウザに受信できます。
これは、WebブラウザがMQTTデータを表示するための事実上のインターフェースになる可能性があるため重要です。
Webブラウザ向けのMQTT websocketサポートは、Javascript MQTTクライアントによって提供されます。
MQTTは、さまざまな認証およびデータセキュリティメカニズムをサポートしています。
これらのセキュリティメカニズムはMQTTブローカー上で設定され、クライアントがそれらのメカニズムに準拠するかどうかはクライアント次第であることに注意することが重要です。
Webやメールに慣れている場合、MQTTは非常に異なるものであると感じるかもしれません。これらは私が持っていた質問であり、他のサイトやフォーラムで見たもので、少し明確にするかもしれません。
Q, MQTTは通常どのポートを使用しますか?
A: 標準ポートは1883です。
Q: ブローカーなしでMQTTを使用できますか?
A: いいえ、MQTTの仕組みを参照してください
Q: MQTTはどのプロトコルを使用しますか?
A: 標準バージョンはTCP/IPを使用します。
Q: 複数のクライアントが同じトピックに対してパブリッシュできますか?
A: はい
Q: メッセージをパブリッシュしたクライアントの身元を知ることは可能ですか?
A: クライアントがその情報をトピックまたはペイロードに含めない限り、いいえ
Q: 誰もサブスクライブしていないトピックにパブリッシュされたメッセージはどうなりますか?
A: ブローカーによって破棄されます。
Q: どのトピックがパブリッシュされたかをどのように知ることができますか?
A: ブローカーはパブリッシュされたトピックのリストを保持していないようなので、これを簡単に行うことはできません。トピックは永続的ではありません。
Q: 誰もパブリッシュしていないトピックをサブスクライブできますか?
A: はい
Q: メッセージはブローカーに保存されますか?
A: はい、しかし一時的にのみです。全てのサブスクライバーに送信された後、それらは破棄されます。しかし、次の質問も参照してください。
Q: 保持メッセージとは何ですか?
プログラミングをしたくない場合、Node-Redはフローベースのツールで、MQTTプロジェクトを簡単に作成できます。他のサイトでのNode-Red入門ガイドを参照して始めてください。
MQTT vs HTTP プロジェクトに最適な選択肢がMQTTかどうか疑問に思っているなら、ここにMQTTとHTTPを比較した記事のコレクションがあります。
インターネットオブシングス:プロトコルの戦い(HTTP vs. Websockets vs. MQTT)
MQTT vs. HTTP:IoTに最適なのはどちらか?
HTTP vs MQTT パフォーマンステスト
MQTTとHTTP:2つのIoTプロトコルの比較 - 誤りを含むが、チャートは有用
ロボティクスのためのMQTT-SN vs Coap
実際のMQTT例の展開 特定の技術が実際にどのように使用されているかを見ることは、しばしば有用で興味深いものです。ここに私が出会ったいくつかの例があります:
Freight Farms-MQTT
MQTTを使用したIPピンガースウォーム
MQTTの使用方法 - Mosquitto.org
Owntracks - 位置追跡
4に何が起こったのか疑問に思うなら、を見てください。
詳細については、を参照してください。
こちらはMQTT v3.1.1とMQTT v5の主な違いを詳述したです。
MQTTv3.1.1には、ほぼすべてのプログラミング言語および主要なオペレーティングシステムLinux、Windows、Mac用のクライアントソフトウェアがから入手できます。
。
Pahoクライアントv1.5.1は現在MQTTv5.0をサポートしています。こちらはクライアント比較チャートとダウンロードページへのです。
無料の自己ホスティング型ブローカーがあり、最も人気のあるものは、商用のものではがあります。
参照 –
参照
A: メッセージをパブリッシュするとき、ブローカーに最後にパブリッシュされたメッセージを保存させることができます。このメッセージは、そのトピックをサブスクライブする新しいサブスクライバーが最初に見るメッセージになります。MQTTは1つのメッセージのみを保持します。を参照してください。
このサイトの例のスクリプトの多くはnode.jsを使用しています。Node.jsは使いやすく、すぐに利用できるため、MQTTを学ぶのに適した選択肢です。の使用を参照してください。