Main Content

このページは機械翻訳を使用して翻訳されました。元の英語を参照するには、ここをクリックします。

MQTT の基礎

MQTT はパブリッシュ/サブスクライブ アーキテクチャであり、主に帯域幅と電力の制限されたデバイスをワイヤレス ネットワーク経由で接続するために開発されています。これは、TCP/IP ソケットまたは WebSocket 上で実行されるシンプルで軽量なプロトコルです。WebSockets 上の MQTT は、SSL によってセキュリティで保護できます。パブリッシュ/サブスクライブ アーキテクチャを使用すると、クライアント デバイスにメッセージをプッシュでき、デバイスがサーバーに継続的なポーリングを行う必要はありません。

MQTT ブローカーは通信の中心点であり、送信者および適切な受信者の間ですべてのメッセージを送り出すことを担当しています。クライアントは、ブローカーに接続し、情報にアクセスするためのトピックをパブリッシュまたはサブスクライブできる任意のデバイスです。トピックにはブローカーのルーティング情報が含まれています。メッセージを送信する各クライアントは、それらを特定のトピックにパブリッシュし、メッセージを受信する各クライアントは特定のトピックをサブスクライブします。ブローカーは、トピックのマッチするすべてのメッセージを適切なクライアントに配信します。

ThingSpeak™ では、MQTT ブローカーが mqtt3.thingspeak.com の URL にあり、ポートは 1883 です。ThingSpeakブローカーは、次の図に示すように、MQTT パブリッシュと MQTT サブスクライブの両方をサポートします。

MQTT パブリッシュ

この図はトピックの構造を示しています。ブローカーは、CONNACK によって正しい CONNECT 要求に応答します。

MQTT サブスクライブ

この図はトピックの構造を示しています。ブローカーは、SUBACK によって正しい SUBSCRIBE 要求に応答します。

ThingSpeak MQTT デバイスの作成

認証情報を含むチャネルへの MQTT アクセスは、 ThingSpeak MQTT デバイスによって処理されます。デバイスは、MQTT クライアントがThingSpeakと通信し、特定のチャネルを承認するために必要な認証情報を使用して構成されています。MQTT デバイスを作成するには、次の手順を使用します。

  1. ThingSpeakメニューで、 DevicesMQTTをクリックします。

    Device menu

  2. 「MQTT デバイス」ページで、 「Add a new device」をクリックします。

    Add device option

  3. [新しいデバイスの追加] ダイアログに次のように入力します。

    New device dialog

    1. デバイス名を入力します。

    2. オプションの説明を入力します。

    3. 「チャネルの許可」セクションで、リスト・メニューからチャネルを選択し、 「Add Channel」をクリックします。デバイスに接続したいすべてのチャネルが「承認済みチャネル」リストに表示されるまで、これを繰り返します。必要に応じて、パブリッシュを許可し、サブスクライブを許可するようにそれぞれを設定します。

    4. Add Device をクリックします。

    5. この時点で、 ThingSpeak は、クライアント ID、ユーザー名、パスワードを含むデバイスの認証情報のリストを生成します。このページからこれらの項目を表示およびコピーしたり、 Download Credentialsをクリックして資格情報をローカル ファイルに保存したりできます。 "重要":パスワードを表示したり保存したりする機会はもうないため、今すぐ資格情報を記録または保存してください。

    6. Done」をクリックしてデバイスの作成を完了します。

新しいデバイスが [MQTT デバイス] ページに表示されます。Editをクリックすると、デバイスの設定を変更し、チャネルを追加できます。MQTT クライアントでクライアント ID、ユーザー名、パスワードを使用してThingSpeak MQTT デバイスにアクセスし、そのチャネルを公開およびサブスクライブできます。

メモ

ユーザーあたり最大 100 台の MQTT デバイスを持つことができ、デバイスあたり最大 10 個の承認済みチャネルを使用できます。さらに多くのデバイスまたはチャネルが必要な場合は、 Contact Support

デスクトップ MQTT クライアントの使用については、 「デスクトップ MQTT クライアントを使用したチャネルのパブリッシュとサブスクライブ」を参照してください。

「デバイスのパスワードをリセットします。」デバイスのパスワードをリセットする必要がある場合は、デバイスの編集ページからいつでもリセットできます。

  1. DevicesMQTT を選択します。

  2. 表示された MQTT デバイスのリストで、リセットするデバイスのEditをクリックして、その構成の詳細を表示します。

  3. MQTT Credentials」セクションで、「再生成」アイコンをクリックしてパスワードをリセットします。古いパスワードを使用した接続は無効になります。

    MQTT device password reset icon

接続に対するサーバーの応答

接続が成功すると、 ThingSpeak MQTT ブローカーは接続確認CONNACKで応答します。MQTT ブローカーは、正常なサブスクリプション要求に SUBACK メッセージで応答し、サブスクライブ対象のチャネルやフィールドにポストされた新しいデータをクライアントに中継します。これらのメッセージの詳細については、 MQTT v3.1.1仕様を参照してください。その後、 Publish to a Channel FeedまたはPublish to a Channel Field Feedの形式を使用してトピックにメッセージをパブリッシュできます。

MQTT クライアントの構成

ThingSpeak の MQTT ブローカーは mqtt3.thingspeak.com の URL にあります。次のいずれかのオプションに基づいて、ThingSpeak の MQTT ブローカーと通信するよう MQTT クライアントを構成します。

端子

接続タイプ

暗号化

1883

TCP

なし

8883

TCP

TLS/SSL

80

WebSocket

なし

443

WebSocket

TLS/SSL

クライアント接続を構成するときは、次の点を考慮してください。

  • セキュリティで保護された SSL ソケット接続モードをハードウェアがサポートしている場合は、できるだけそのモードを使用して ThingSpeak の MQTT ブローカーと通信してください。

  • ThingSpeak は、 QoS = 0を使用した MQTT パブリッシュおよびサブスクライブ機能を実装します。この「ファイア アンド フォーゲット」プロトコルは、ThingSpeakチャネルにパブリッシュするときにクライアントが確認応答を受け取らないことを意味します。

  • MQTT 接続は 1 時間アイドル状態が続くとタイムアウトになります。

  • WebSocket 接続を使用する場合、必要なパスは/mqttです。

    • Raspberry Pi® Python®で Paho ライブラリを使用すると、デフォルトの MQTT パスは"/mqtt"になりますが、これをコード行で設定することもできます:

      client.ws_set_options("/mqtt")
    • HiveMQ MQTT CLI では、次のコマンド オプションを使用してパスを設定します。

      mqtt pub … -ws -ws:path /mqtt … 

参考

| | |

関連するトピック

外部の Web サイト