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