コンポーネント内のクライアントデバイスとやり取りする - AWS IoT Greengrass

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

コンポーネント内のクライアントデバイスとやり取りする

コアデバイスに接続されたクライアントデバイスとやり取りするカスタム Greengrass コンポーネントを作成できます。たとえば以下を実行するコンポーネントを作成できます。

  • クライアントデバイスからの MQTT メッセージを処理し、AWS クラウド の送信先にデータを送信します。

  • MQTT メッセージをクライアントデバイスに送信して、アクションを開始します。

クライアントデバイスは、コアデバイス上で動作する MQTT ブローカーコンポーネントを経由して、コアデバイスへの接続と通信を行います。デフォルトでは、クライアントデバイスは MQTT を介してのみ相互に通信でき、Greengrass コンポーネントはこれらの MQTT メッセージの受信や、クライアントデバイスへのメッセージの送信を行うことはできません。

Greengrass コンポーネントはコアデバイスで通信を行うために、ローカルパブリッシュ/サブスクライブインターフェイスを使用します。Greengrass コンポーネントでクライアントデバイスと通信するには、MQTT ブリッジコンポーネントを設定して以下を実行します。

  • クライアントデバイスからローカルのパブリッシュ/サブスクライブへ MQTT メッセージをリレーします。

  • ローカルのパブリッシュ/サブスクライブからクライアントデバイスへ MQTT メッセージをリレーします。

Greengrass コンポーネント内のデバイスシャドウとやり取りすることもできます。詳細については、「クライアントデバイスシャドウとやり取りして同期する」を参照してください。

MQTT ブリッジコンポーネントの設定とデプロイ

MQTT ブリッジコンポーネントは、それぞれメッセージソースとメッセージの送信先を指定するトピックマッピングのリストを使用します。クライアントデバイスと通信するには、MQTT ブリッジコンポーネントをデプロイし、コンポーネント設定で各送信元および送信先のトピックを指定します。

MQTT ブリッジコンポーネントをコアデバイスまたはコアデバイスのグループにデプロイするには、aws.greengrass.clientdevices.mqtt.Bridge コンポーネントを含むデプロイを作成します。デプロイの MQTT ブリッジコンポーネント設定で、トピックマッピング mqttTopicMapping を指定します。

以下の例は、クライアントデバイスからローカルのパブリッシュ/サブスクライブブローカーに clients/MyClientDevice1/hello/world トピックをリレーするように、MQTT ブリッジコンポーネントを設定するデプロイを定義するものです。merge 設定の更新には、シリアル化された JSON オブジェクトが必要です。詳細については、「コンポーネント設定の更新」を参照してください。

Console
{ "mqttTopicMapping": { "HelloWorldPubsub": { "topic": "clients/MyClientDevice1/hello/world", "source": "LocalMqtt", "target": "Pubsub" } } }
AWS CLI
{ "components": { "aws.greengrass.clientdevices.mqtt.Bridge": { "version": "2.0.0", "configurationUpdate": { "merge": "\"mqttTopicMapping\":{\"HelloWorldPubsub\":{\"topic\":\"clients/MyClientDevice1/hello/world\",\"source\":\"LocalMqtt\",\"target\":\"Pubsub\"}}}" } } ... } }

MQTT トピックワイルドカードを使用すると、トピックフィルターに一致するトピックでメッセージをリレーできます。MQTT ブリッジ v2.2.0 以降を使用していて、ソースブローカーがローカルのパブリッシュ/サブスクライブの場合、MQTT トピックワイルドカードをトピックフィルターで使用できます。詳細については、「MQTT ブリッジコンポーネントの設定」を参照してください。

クライアントデバイスから MQTT メッセージを受信する

MQTT Bridge コンポーネントがクライアントデバイスからメッセージを受信するように設定した、ローカルのパブリッシュ/サブスクライブトピックにサブスクライブできます。

カスタムコンポーネントのクライアントデバイスから MQTT メッセージを受信するには
  1. MQTT ブリッジコンポーネントの設定とデプロイを行い、クライアントデバイスが発行を行う MQTT トピックから、ローカルのパブリッシュ/サブスクライブトピックにメッセージをリレーします。

  2. ローカルパブリッシュ/サブスクライブ IPC インターフェイスを使用して、MQTT ブリッジがメッセージをリレーするトピックにサブスクライブします。詳細については、「ローカルメッセージをパブリッシュ/サブスクライブするSubscribeToTopic」を参照してください。

クライアントデバイスの接続とテストのチュートリアルには、クライアントデバイスからのメッセージにサブスクライブするコンポーネントを作成するセクションがあります。詳細については、「ステップ 4: クライアントデバイスと通信するコンポーネントを開発する」を参照してください。

MQTT メッセージをクライアントデバイスに送信する

MQTT Bridge コンポーネントがクライアントデバイスにメッセージを送信するように設定した、ローカルのパブリッシュ/サブスクライブトピックに発行できます。

カスタムコンポーネントのクライアントデバイスに MQTT メッセージを発行するには
  1. MQTT ブリッジコンポーネントの設定とデプロイを行い、ローカルのパブリッシュ/サブスクライブトピックから、クライアントデバイスがサブスクライブを行う MQTT トピックにメッセージをリレーします。

  2. ローカルパブリッシュ/サブスクライブ IPC インターフェイスを使用して、MQTT ブリッジがメッセージをリレーするトピックに発行します。詳細については、「ローカルメッセージをパブリッシュ/サブスクライブする」および「PublishToTopic」を参照してください。