翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
このセクションでは、 AWS IoT コンソールtopicName
を、ご利用の IoT ソリューションで使用されている任意のトピック名またはトピックフィルターに置き換えることができます。
デバイスは、トピックによって識別される MQTT メッセージを発行して状態を通信し AWS IoT、MQTT メッセージ AWS IoT を発行してデバイスとアプリケーションに変更とイベントを通知します。MQTT クライアントを使用すると、これらのトピックをサブスクライブして、メッセージを発生時に確認できます。MQTT テストクライアントを使用して、 のサブスクライブしているデバイスやサービスに MQTT メッセージを発行することもできます AWS アカウント。
MQTT クライアントで MQTT メッセージを表示する
次の手順では、デバイスがメッセージを発行する特定の MQTT トピックをサブスクライブし、それらのメッセージを AWS IoT コンソール
MQTT テストクライアントで MQTT メッセージを表示するには
-
AWS IoT コンソール
の左側のメニューで、[Test] (テスト)、[MQTT test client] (MQTT テストクライアント) の順に選択します。 -
[Subscribe to a topic] (トピックにサブスクライブする) タブで、
topicName
を入力して、デバイスが発行する対象のトピックにサブスクライブします。開始方法のサンプルアプリケーションについては、#
にサブスクライブします。これにより、すべてのメッセージトピックにサブスクライブします。開始方法の例を使用して続行し、[Subscribe to a topic] (トピックをサブスクライブする) タブの [Topic filter] (トピックフィルター) フィールドで
#
と入力し、[Subscribe (サブスクライブ)]を選択します。トピックメッセージログページ # が開き、
#
が [Subscriptions] (サブスクリプション) リストに表示されます。で設定したデバイスがサンプルプログラムデバイスを設定するを実行している場合は、# メッセージログ AWS IoT に に送信するメッセージが表示されます。サブスクライブされたトピックを含むメッセージが によって受信されると、メッセージログエントリが Publish セクションの下に表示されます AWS IoT。 -
# メッセージログページでは、トピックにメッセージを発行することもできますが、トピック名を指定する必要があります。# トピックに発行することはできません。
サブスクライブしたトピックに発行されたメッセージは、受信されるとメッセージログに表示されます。最初に表示されるのは、最新のメッセージです。
MQTT メッセージのトラブルシューティング
ワイルドカードトピックフィルターを使用する
メッセージが期待どおりにメッセージログに表示されない場合は、トピックフィルター の説明に従って、ワイルドカードトピックフィルターをサブスクライブしてみてください。MQTT マルチレベルワイルドカードトピックフィルターはハッシュまたはポンド記号 ( #
) であり、[Subscription topic] (サブスクリプショントピック) フィールドでトピックフィルターとして使用できます。
#
トピックフィルターにサブスクライブすると、メッセージブローカーによって受信されるすべてのトピックがサブスクライブされます。トピックフィルターパスの要素を #
複数レベルのワイルドカード文字または「+」単一レベルのワイルドカード文字に置き換えることで、絞り込むことができます。
トピックフィルターでワイルドカードを使用する場合
-
マルチレベルのワイルドカード文字は、トピックフィルターの最後の文字にする必要があります。
-
トピックフィルターパスには、トピックレベルごとに 1 つの単一レベルのワイルドカード文字のみを使用できます。
以下に例を示します。
トピックのフィルター |
次でメッセージを表示します |
---|---|
|
任意のトピック名 |
|
|
|
|
|
|
トピックフィルターの詳細については、トピックフィルター を参照してください。
トピック名のエラーをチェックする
MQTT トピック名とトピックフィルターでは、大文字と小文字が区別されます。例えば、サブスクライブしたトピックである topic_1
ではなく Topic_1
(大文字の T) にデバイスがメッセージを発行している場合、そのメッセージは MQTT テストクライアントに表示されません。ただし、ワイルドカードトピックフィルターをサブスクライブすると、デバイスがメッセージを発行していることが表示され、想定したものとは異なるトピック名を使用していることがわかります。
MQTT クライアントから MQTT メッセージを発行する
MQTT トピックにメッセージを発行するには
-
MQTT テストクライアントページの [Publish to a topic] (トピックへの発行) タブの [Topic name] (トピック名) フィールドに、メッセージの
topicName
を入力します。この例ではmy/topic
を使用します。注記
MQTT テストクライアントで使用する場合でも、システム実装で使用する場合でも、トピック名に個人を特定できる情報を使用しないでください。トピック名は、暗号化されていない通信およびレポートに表示できます。
-
メッセージペイロードウィンドウで、次の JSON を入力します。
{ "message": "Hello, world", "clientType": "MQTT test client" }
-
[Publish] (発行) を選択して、メッセージを AWS IoTに発行します。
注記
メッセージを発行する前に、my/topic トピックにサブスクライブしていることを確認してください。
-
[Subscriptions] (サブスクリプション) のリストで、[my/topic] を選びます。発行メッセージペイロードウィンドウの下の MQTT テストクライアントにメッセージが表示されます。
MQTT メッセージを他のトピックに発行するには、[Topic name] (トピック名) フィールドの topicName
を変更し、[Publish] (発行) ボタンを選びます。
重要
重複するトピック (例: probe1/temperature および probe1/#) で複数のサブスクリプションを作成する場合、両方のサブスクリプションに一致するトピックに発行された 1 つのメッセージが、重複するサブスクリプションごとに 1 回ずつ、複数回にわたって配信される可能性があります。
MQTT クライアントで共有サブスクリプションをテストする
このセクションでは、 AWS IoT コンソール
MQTT トピックのサブスクリプションを共有するには
-
AWS IoT コンソール
のナビゲーションペインで、[テスト] を選択し、次に [MQTT テストクライアント] を選択します。 -
[Subscribe to a topic] (トピックにサブスクライブする) タブで、
topicName
を入力して、デバイスが発行する対象のトピックにサブスクライブします。共有サブスクリプションを使用するには、以下のように共有サブスクリプションのトピックフィルターにサブスクライブします。$share/{ShareName}/{TopicFilter}
サンプルのトピックフィルターは、メッセージトピック
topic1
にサブスクライブしている$share/group1/topic1
にすることができます。 -
別のウェブブラウザを開き、手順 1 と手順 2 を繰り返します。この方法では、同じサブスクリプション
$share/group1/topic1
を共有する 2 つの異なる MQTT クライアントをシミュレートしています。 -
1 つの MQTT クライアントを選択し、[トピックに公開する] タブの [トピック名] フィールドに、メッセージの
topicName
を入力します。この例ではtopic1
を使用します。メッセージを数回公開してみてください。両方の MQTT クライアントのサブスクリプションリストで、クライアントがランダム配信を使用してメッセージを受信していることを確認できるようになります。この例では、同じメッセージ「Hello from AWS IoT console」を 3 回公開します。左側の MQTT クライアントはメッセージを 2 回受信し、右側の MQTT クライアントはメッセージを 1 回受信しました。