デバイスがオフラインになっている間にデバイスの状態をデバイスシャドウで保持する - AWS IoT Core

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

デバイスがオフラインになっている間にデバイスの状態をデバイスシャドウで保持する

これらのチュートリアルでは、 AWS IoTDevice Shadow サービスを使用してデバイスの状態情報を保存および更新する方法を示します。JSON ドキュメントである Shadow ドキュメントは、デバイス、ローカルアプリケーション、またはサービスによって発行されたメッセージに基づいて、デバイスの状態の変化を示します。このチュートリアルでは、Shadow ドキュメントが電球の色の変化を示します。これらのチュートリアルでは、デバイスがインターネットから切断されている場合でもシャドウがこの情報を保存し、オンラインに戻ってこの情報をリクエストしたときに最新の状態情報をデバイスに返す方法も示しています。

ここに示されている順序でこれらのチュートリアルを試すことをお勧めします。この順序は、作成が必要な AWS IoT リソースと必要なハードウェアのセットアップから始まります。これは、概念を段階的に学ぶのにも役立ちます。これらのチュートリアルでは、 で使用する Raspberry Pi デバイスを設定して接続する方法を示しますAWS IoT。必要なハードウェアがない場合は、選択したデバイスに適応させるか、Amazon EC2 で仮想デバイスを作成して、これらのチュートリアルに従うことができます。

チュートリアルのシナリオの概要

これらのチュートリアルのシナリオは、電球の色を変更し、そのデータを予約済みのシャドウトピックに発行するローカルアプリケーションまたはサービスです。これらのチュートリアルは、インタラクティブな開始方法のチュートリアルで説明されている Device Shadow 機能に似ており、Raspberry Pi デバイスに実装されています。このセクションのチュートリアルでは、名前付きのシャドウまたは複数のデバイスに対応する方法を示しつつ、単一のクラシックシャドウに焦点を当てます。

以下のチュートリアルは、 AWS IoTDevice Shadow サービスの使用方法を学ぶのに役立ちます。

AWS IoTDevice Shadow の概要

Device Shadow は、AWS IoTレジストリで作成したモノのリソースによって管理されるデバイスの永続的な仮想表現です。Shadow ドキュメントは、デバイスの現在の状態の情報を保存および取得するために使用される JSON または JavaScript 表記のドキュメントです。シャドウを使用すれば、デバイスがインターネットに接続されているかどうかにかかわらず、MQTT トピックまたは HTTP REST API を介してデバイスの状態を取得および設定できます。

シャドウのドキュメントには、デバイスの状態の次の側面を説明する state プロパティが含まれています。

  • desired: アプリケーションは、desired オブジェクトを更新することによって、デバイスプロパティの必要な状態を指定します。

  • reported: デバイスは、reported オブジェクト内の現在の状態を報告します。

  • delta: delta オブジェクト内の目的の状態と報告された状態AWS IoTの違いを報告します。

これは、Shadow 状態ドキュメントの例です。

{ "state": { "desired": { "color": "green" }, "reported": { "color": "blue" }, "delta": { "color": "green" } } }

デバイスの Shadow ドキュメントを更新するには、予約済みの MQTT トピック、HTTP で GETUPDATE、および DELETE オペレーションをサポートする Device Shadow REST API、ならびに AWS IoT CLI を使用できます。

前の例で、desired 色を yellow に変更したいとします。これを行うには、UpdateThingShadow API にリクエストを送信するか、Update トピック $aws/things/THING_NAME/shadow/update にメッセージを発行します。

{ "state": { "desired": { "color": yellow } } }

更新は、リクエストで指定したフィールドにのみ反映されます。Device Shadow が正常に更新されると、 はdeltaトピック に新しいdesired状態AWS IoTを発行します$aws/things/THING_NAME/shadow/delta。この場合の Shadow ドキュメントは次のようになります。

{ "state": { "desired": { "color": yellow }, "reported": { "color": green }, "delta": { "color": yellow } } }

次に、次の JSON メッセージ$aws/things/THING_NAME/shadow/updateを含む Updateトピックを使用して、新しい状態が AWS IoTDevice Shadow に報告されます。

{ "state": { "reported": { "color": yellow } } }

現在の状態情報を取得する場合は、GetThingShadow API にリクエストを送信するか、MQTT メッセージを Get トピック $aws/things/THING_NAME/shadow/get に発行します。

Device Shadow サービスの使用の詳細については、「AWS IoTDevice Shadow サービス」を参照してください。

デバイス、アプリケーション、およびサービスでの Device Shadow の使用の詳細については、デバイスでのシャドウの使用 および アプリとサービスでのシャドウの使用 を参照してください。

AWS IoTシャドウの操作については、「」を参照してくださいシャドウとの相互作用

MQTT の予約済みトピックおよび HTTP REST API については、Device Shadow MQTT トピック および Device Shadow の REST API を参照してください。