クライアントでMQTT AWS IoT MQTTメッセージを表示する - AWS IoT Core

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

クライアントでMQTT AWS IoT MQTTメッセージを表示する

このセクションでは、 AWS IoT コンソールでテストクライアントを使用して AWS IoT MQTT、 によって送受信されたMQTTメッセージを監視する方法について説明します AWS IoT。このセクションで使用される例は、 で使用される例に関連していますAWS IoT Core チュートリアルの開始方法が、topicName IoT ソリューションで使用されるトピック名またはトピックフィルターの例で使用されます。

デバイスは、トピックによって識別されたMQTTメッセージを公開して状態を に伝達し AWS IoT、変更やイベントをデバイスやアプリケーションに通知するためのMQTTメッセージを AWS IoT 公開します。MQTT クライアントを使用して、これらのトピックをサブスクライブし、メッセージが発生したときに監視できます。MQTT テストクライアントを使用して、 のサブスクライブされたデバイスとサービスにMQTTメッセージを公開することもできます AWS アカウント。

MQTT クライアントでのMQTTメッセージの表示

次の手順では、デバイスがメッセージを発行する特定のMQTTトピックをサブスクライブし、それらのメッセージをAWS IoT コンソール に表示する方法について説明します。

MQTT テストクライアントでMQTTメッセージを表示するには
  1. AWS IoT コンソールの左側のメニューで、テストを選択し、MQTTテストクライアント を選択します。

    左側のナビゲーションのコンソールメニューからMQTTテストクライアントを選択します。
  2. トピックをサブスクライブタブでtopicName は、デバイスが公開するトピックをサブスクライブします。開始方法のサンプルアプリケーションについては、# にサブスクライブします。これにより、すべてのメッセージトピックにサブスクライブします。

    開始方法の例を使用して続行し、[Subscribe to a topic] (トピックをサブスクライブする) タブの [Topic filter] (トピックフィルター) フィールドで# と入力し、[Subscribe (サブスクライブ)]を選択します。

    トピックタブをサブスクライブします。

    トピックメッセージログページ # が開き、# が [Subscriptions] (サブスクリプション) リストに表示されます。で設定したデバイスがサンプルプログラムデバイスを設定するを実行している場合は、# メッセージログ AWS IoT に送信されるメッセージが表示されます。サブスクライブされたトピックを含むメッセージが によって受信されると、メッセージログエントリが発行セクションの下に表示されます AWS IoT。

    トピックを表示するセクションは正常にサブスクライブされました。
  3. # メッセージログページでは、トピックにメッセージを発行することもできますが、トピック名を指定する必要があります。# トピックに発行することはできません。

    サブスクライブしたトピックに発行されたメッセージは、受信されるとメッセージログに表示されます。最初に表示されるのは、最新のメッセージです。

MQTT メッセージのトラブルシューティング

ワイルドカードトピックフィルターを使用する

メッセージが期待どおりにメッセージログに表示されない場合は、トピックフィルター の説明に従って、ワイルドカードトピックフィルターをサブスクライブしてみてください。MQTT マルチレベルのワイルドカードトピックフィルターはハッシュまたはポンド記号 (#) で、サブスクリプショントピックフィールドのトピックフィルターとして使用できます。

# トピックフィルターにサブスクライブすると、メッセージブローカーによって受信されるすべてのトピックがサブスクライブされます。トピックフィルターパスの要素を # 複数レベルのワイルドカード文字または「+」単一レベルのワイルドカード文字に置き換えることで、絞り込むことができます。

トピックフィルターでワイルドカードを使用する場合
  • マルチレベルのワイルドカード文字は、トピックフィルターの最後の文字にする必要があります。

  • トピックフィルターパスには、トピックレベルごとに 1 つの単一レベルのワイルドカード文字のみを使用できます。

以下に例を示します。

トピックのフィルター

次でメッセージを表示します

#

任意のトピック名

topic_1/#

topic_1/ で始まるトピック名

topic_1/level_2/#

topic_1/level_2/で始まるトピック名

topic_1/+/level_3

topic_1/ で始まり、/level_3で終わり、その間に任意の値の 1 つの要素があるトピック名。

トピックフィルターの詳細については、トピックフィルター を参照してください。

トピック名のエラーをチェックする

MQTT トピック名とトピックフィルターは大文字と小文字が区別されます。例えば、デバイスがサブスクライブしたtopic_1トピックである の代わりに Topic_1 (大文字 T で) にメッセージをパブリッシュしている場合、そのメッセージはMQTTテストクライアントに表示されません。ただし、ワイルドカードトピックフィルターをサブスクライブすると、デバイスがメッセージを発行していることが表示され、想定したものとは異なるトピック名を使用していることがわかります。

MQTT クライアントからのMQTTメッセージの発行

MQTT トピックにメッセージを公開するには
  1. MQTT テストクライアントページで、トピックへの発行タブのトピック名フィールドに、topicName メッセージ。この例では my/topic を使用します。

    注記

    MQTT テストクライアントでもシステム実装でも、トピック名に個人を特定できる情報を使用しないでください。トピック名は、暗号化されていない通信およびレポートに表示できます。

  2. メッセージペイロードウィンドウで、次のコマンドを入力しますJSON。

    { "message": "Hello, world", "clientType": "MQTT test client" }
  3. [Publish] (発行) を選択して、メッセージを AWS IoTに発行します。

    注記

    メッセージを発行する前に、my/topic トピックにサブスクライブしていることを確認してください。

    トピックタブに発行します。
  4. [Subscriptions] (サブスクリプション) のリストで、[my/topic] を選びます。メッセージは、パブリッシュメッセージペイロードウィンドウの下のMQTTテストクライアントに表示されます。

    公開されたトピックを示す画面が受信されました。

を変更することで、メッセージを他のトピックMQTTに発行できます。topicName トピック名 フィールドで 公開 ボタンを選択します。

重要

重複するトピック (例: probe1/temperature および probe1/#) で複数のサブスクリプションを作成すると、両方のサブスクリプションに一致するトピックに発行された 1 つのメッセージが、重複するサブスクリプションごとに 1 回、複数回配信される可能性があります。

MQTT クライアントでの共有サブスクリプションのテスト

このセクションでは、AWS IoT コンソールでクライアントを使用して AWS IoT MQTT、共有サブスクリプション AWS IoT を使用して送受信されたMQTTメッセージをモニタリングする方法について説明します。 は、ランダムディストリビューションを使用してそのトピックに発行されたメッセージを受信するクライアントが 1 つだけのトピックへのサブスクリプションを共有することを複数のクライアントに共有サブスクリプション許可します。同じサブスクリプションを共有する複数のMQTTクライアント (この例では 2 つのMQTTクライアント) をシミュレートするには、複数のウェブブラウザからAWS IoT コンソールでクライアントを開きます AWS IoT MQTT。このセクションで使用されている例は、「AWS IoT Core チュートリアルの開始方法」で使用されている例とは関連がありません。詳細については、「共有サブスクリプション」を参照してください。

MQTT トピックにサブスクリプションを共有するには
  1. AWS IoT コンソール のナビゲーションペインで、テストを選択し、MQTTテストクライアント を選択します。

  2. トピックをサブスクライブタブでtopicName は、デバイスが公開するトピックをサブスクライブします。共有サブスクリプションを使用するには、以下のように共有サブスクリプションのトピックフィルターにサブスクライブします。

    $share/{ShareName}/{TopicFilter}

    サンプルのトピックフィルターは、メッセージトピック topic1 にサブスクライブしている $share/group1/topic1 にすることができます。

    共有サブスクリプションのトピックフィルターを指定する方法を示すタブ。
  3. 別のウェブブラウザを開き、手順 1 と手順 2 を繰り返します。このようにして、同じサブスクリプション を共有する 2 つの異なるMQTTクライアントをシミュレートします$share/group1/topic1

  4. 1 つのMQTTクライアントを選択し、トピックに公開タブのトピック名フィールドに と入力します。topicName メッセージ。この例では topic1 を使用します。メッセージを数回公開してみてください。両方のMQTTクライアントのサブスクリプションリストから、クライアントがランダムディストリビューションを使用してメッセージを受信していることを確認できます。この例では、同じメッセージ「Hello from AWS IoT console」を 3 回公開します。左側のMQTTクライアントはメッセージを 2 回受信し、右側のMQTTクライアントはメッセージを 1 回受信しました。

    共有サブスクリプションは 2 つのクライアントとフローし、1 つのトピックへのサブスクリプションを共有します。1 つのクライアントのみが、ランダムディストリビューションを使用してそのトピックに発行されたメッセージを受け取ります。