翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
デバイスがオフラインになっている間にデバイスの状態をデバイスシャドウで保持する
これらのチュートリアルでは、 AWS IoTDevice Shadow サービスを使用してデバイスの状態情報を保存および更新する方法を示します。JSON ドキュメントである Shadow ドキュメントは、デバイス、ローカルアプリケーション、またはサービスによって発行されたメッセージに基づいて、デバイスの状態の変化を示します。このチュートリアルでは、Shadow ドキュメントが電球の色の変化を示します。これらのチュートリアルでは、デバイスがインターネットから切断されている場合でもシャドウがこの情報を保存し、オンラインに戻ってこの情報をリクエストしたときに最新の状態情報をデバイスに返す方法も示しています。
ここに示されている順序でこれらのチュートリアルを試すことをお勧めします。この順序は、作成が必要な AWS IoT リソースと必要なハードウェアのセットアップから始まります。これは、概念を段階的に学ぶのにも役立ちます。これらのチュートリアルでは、 で使用する Raspberry Pi デバイスを設定して接続する方法を示しますAWS IoT。必要なハードウェアがない場合は、選択したデバイスに適応させるか、Amazon EC2 で仮想デバイスを作成して、これらのチュートリアルに従うことができます。
チュートリアルのシナリオの概要
これらのチュートリアルのシナリオは、電球の色を変更し、そのデータを予約済みのシャドウトピックに発行するローカルアプリケーションまたはサービスです。これらのチュートリアルは、インタラクティブな開始方法のチュートリアルで説明されている Device Shadow 機能に似ており、Raspberry Pi デバイスに実装されています。このセクションのチュートリアルでは、名前付きのシャドウまたは複数のデバイスに対応する方法を示しつつ、単一のクラシックシャドウに焦点を当てます。
以下のチュートリアルは、 AWS IoTDevice Shadow サービスの使用方法を学ぶのに役立ちます。
-
チュートリアル: シャドウアプリケーションを実行するための Raspberry Pi の準備
このチュートリアルでは、 に接続するための Raspberry Pi デバイスを設定する方法を示しますAWS IoT。また、AWS IoTポリシードキュメントとモノのリソースを作成し、証明書をダウンロードして、そのモノのリソースにポリシーをアタッチします。このチュートリアルの完了には 30 分ほどかかります。
-
チュートリアル: Device SDK のインストールと Device Shadows のサンプルアプリケーションの実行
このチュートリアルでは、必要なツール、ソフトウェア、AWS IoTDevice SDK for Python をインストールし、サンプルシャドウアプリケーションを実行する方法を示します。このチュートリアルは、Raspberry Pi または他のデバイスを接続する に示されている概念に基づいており、完了までに 20 分かかります。
-
チュートリアル: サンプルアプリケーションと MQTT テストクライアントを使用した Device Shadow とのやり取り
このチュートリアルでは、
shadow.pyサンプルアプリケーションとAWS IoTコンソールを使用して、AWS IoTDevice Shadows と電球の状態の変化の相互作用を観察する方法を示します。このチュートリアルでは、MQTT メッセージを Device Shadow の予約済みトピックに送信する方法も示しています。このチュートリアルの完了には 45 分間を要する場合があります。
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 で GET、UPDATE、および 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 を参照してください。