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 テストクライアントで MQTT メッセージを表示するには
  1. AWS IoT コンソールの左側のメニューで、[Test] (テスト)、[MQTT test client] (MQTT テストクライアント) の順に選択します。

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

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

    トピックタブへのサブスクライブ。

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

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

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

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

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

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

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

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

  • トピックフィルターパスには、トピックレベルごとに 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 テストクライアントページの [Publish to a topic] (トピックへの発行) タブの [Topic name] (トピック名) フィールドに、メッセージの 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 メッセージを他のトピックに発行するには、[Topic name] (トピック名) フィールドの topicNameを変更し、[Publish] (発行) ボタンを選びます。

重要

重複するトピック (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. [Subscribe to a topic] (トピックにサブスクライブする) タブで、topicName を入力して、デバイスが発行する対象のトピックにサブスクライブします。共有サブスクリプションを使用するには、以下のように共有サブスクリプションのトピックフィルターにサブスクライブします。

    $share/{ShareName}/{TopicFilter}

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

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

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

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