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

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

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

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

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

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

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

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

AWS IoT Device Shadow の概要

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

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

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

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

  • delta: AWS IoTは、delta オブジェクト内の desired 状態と reported 状態の違いを報告します。

これは、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 を正常に更新した後、AWS IoT は新しい desired 状態を delta トピック $aws/things/THING_NAME/shadow/delta に発行します。この場合の Shadow ドキュメントは次のようになります。

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

その後、新しい状態は、次の JSON メッセージで Update トピック $aws/things/THING_NAME/shadow/update を使用して AWS IoT Device Shadow に報告されます。

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

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

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

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

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

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