このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。
MQTTの基礎
MQTT は、主に帯域幅と電力が制限されたデバイスをワイヤレス ネットワーク経由で接続するために開発されたパブリッシュ/サブスクライブ アーキテクチャです。これは、TCP/IP ソケットまたは WebSocket 上で実行されるシンプルで軽量なプロトコルです。WebSocket 経由の MQTT は SSL で保護できます。パブリッシュ/サブスクライブ アーキテクチャにより、デバイスがサーバーを継続的にポーリングする必要なく、メッセージをクライアント デバイスにプッシュできます。
MQTT ブローカーは通信の中心点であり、送信者と正当な受信者の間のすべてのメッセージの送信を担当します。クライアントとは、ブローカーに接続し、トピックを公開またはサブスクライブして情報にアクセスできる任意のデバイスです。トピックにはブローカーのルーティング情報が含まれています。メッセージを送信したい各クライアントは、メッセージを特定のトピックに公開し、メッセージを受信したい各クライアントは、特定のトピックにサブスクライブします。ブローカーは、一致するトピックを持つすべてのメッセージを適切なクライアントに配信します。
ThingSpeak™ には、URL mqtt3.thingspeak.com
とポート 1883
に MQTT ブローカーがあります。ThingSpeak ブローカーは、次の図に示すように、MQTT パブリッシュと MQTT サブスクライブの両方をサポートしています。
MQTT パブリッシュ
この図はトピックの構造を示しています。ブローカーは正しい CONNECT
要求をCONNACK
で確認します。
MQTT サブスクライブ
この図はトピックの構造を示しています。ブローカーは正しい SUBSCRIBE
要求をSUBACK
で確認します。
ThingSpeak MQTTデバイスを作成する
資格情報を含むチャネルへの MQTT アクセスは、ThingSpeak MQTT デバイスによって処理されます。デバイスには、MQTT クライアントが ThingSpeak と通信し、特定のチャネルを承認するために必要な資格情報が構成されています。MQTT デバイスを作成するには、次の手順に従います。
ThingSpeak メニューで Devices 、 MQTT をクリックします。
MQTT Devices ページで、Add a new device をクリックします。
[Add a new device] ダイアログに入力します。
デバイス名を入力してください。
オプションの説明を入力します。
「Authorize Channels」セクションで、リスト メニューからチャネルを選択し、「Add Channel」をクリックします。デバイスに接続するすべてのチャネルが「承認済みチャネル」リストに表示されるまで、これを繰り返します。必要に応じて、それぞれ公開とサブスクライブを許可するように設定します。
Add Deviceをクリックします。
この時点で、ThingSpeak はクライアント ID、ユーザー名、パスワードを含むデバイスの資格情報のリストを生成します。このページからこれらの項目を表示およびコピーすることも、Download Credentials をクリックして資格情報をローカル ファイルに保存することもできます。重要:パスワードを表示したり保存したりする機会が再度ないため、今すぐ資格情報を記録または保存してください。
Done をクリックしてデバイスの作成を完了します。
新しいデバイスが MQTT Devices ページに表示されます。Edit をクリックすると、デバイスの設定を変更したり、チャネルを追加したりできます。MQTT クライアントのクライアント ID、ユーザー名、およびパスワードを使用して、ThingSpeak MQTT デバイスにアクセスし、そのチャネルをパブリッシュおよびサブスクライブすることができます。
メモ
ユーザーごとに最大 100 個の MQTT デバイスを持つことができ、デバイスごとに最大 10 個の承認済みチャネルを持つことができます。追加のデバイスまたはチャネルが必要な場合は、サポートにお問い合わせください。
デスクトップ MQTT クライアントの使用については、デスクトップ MQTT クライアントを使用してチャネルを公開およびサブスクライブする を参照してください。
デバイスのパスワードをリセットします。いつでもデバイスのパスワードをリセットする必要がある場合は、デバイスの編集ページからリセットできます。
Devices 、 MQTTを選択します。
表示された MQTT デバイスのリストで、リセットするデバイスの Edit をクリックして、その構成の詳細を表示します。
MQTT Credentials セクションで、再生成アイコンをクリックしてパスワードをリセットします。古いパスワードを使用した接続は無効になります。
接続に対するサーバー応答
接続が成功すると、ThingSpeak MQTT ブローカーは接続確認応答 CONNACK
で応答します。MQTT ブローカーは、サブスクリプション要求の成功に SUBACK
メッセージで応答し、サブスクライブされたチャネルまたはフィールドに投稿された新しいデータをクライアントに中継します。これらのメッセージの詳細については、MQTT v3.1.1 仕様を参照してください。その後、Publish to a Channel Feed または Publish to a Channel Field Feed の形式を使用してトピックにメッセージを公開できます。
MQTTクライアント構成
ThingSpeak には、URL mqtt3.thingspeak.com
に MQTT ブローカーがあります。次のいずれかのオプションに基づいて、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 …
参考
Publish to a Channel Feed | Publish to a Channel Field Feed | Subscribe to a Channel Field Feed | Subscribe to a Channel Feed
トピック
- MQTT パブリッシュのトラブルシューティング
- MQTT API
- セキュアなMQTTを使用してThingSpeakチャネルをパブリッシュおよびサブスクライブする
- デスクトップ MQTT クライアントを使用してチャネルを公開およびサブスクライブする
- MQTT 経由で Particle Device Client を使用して ThingSpeakチャネルにパブリッシュする
- Raspberry Pi で Python の WebSocket を使用して公開する
- Particle Photonクライアントを使用してチャネルの更新を購読する
- MQTT サブスクライブのトラブルシューティング
- Particle Photonクライアントを使用してチャネルの更新を購読する