IoT Platformは、各デバイスによって送信されたステータスデータと、アプリケーションによって送信されたコマンドをキャッシュするデバイスシャドウ機能を提供します。 オンラインデバイスは、IoT Platformからコマンドを受信できます。 デバイスがオフラインの場合、デバイスがオンラインになった後にIoT Platformからコマンドを要求できます。 このトピックでは、デバイスシャドウ機能のシナリオと、この機能の使用方法について説明します。
デバイスシャドウ
デバイスシャドウは、デバイスによって送信されたステータスデータと、アプリケーションによって必要とされるデバイスステータスデータを格納するために使用されるJSONファイルです。 JSONデータの詳細については、「デバイスシャドウのJSON形式」をご参照ください。
各デバイスには1つの影しかありません。 デバイスは、MQTT (Message Queuing Telemetry Transport) を介してIoT Platformでシャドウを取得または設定して、ステータスを同期できます。
デバイスシャドウと目的のプロパティ値の違い
望ましいプロパティ値とデバイスシャドウは、IoT Platformに保存される望ましいデータです。 デバイスがオンラインになった後、デバイスは、対応するビジネスロジックを実装するために所望のデータを取得する。 次の表に、アプリケーションのスコープに基づいて、必要なプロパティ値とデバイスシャドウの違いを示します。
項目 | 説明 |
必要なプロパティ値 | アプリケーションの範囲は狭いです。 値は、デバイスのTSL (Thing Specification Language) プロパティにのみ指定できます。 この機能を使用する前に、デバイスのTSLモデルを定義する必要があります。 デバイスのTSLプロパティに必要な値を指定する場合は、この機能を使用できます。 詳細な例については、「電球のステータスを制御するプロパティ値の指定」をご参照ください。 |
デバイスシャドウ | アプリケーションの範囲は広いです。 この機能は、TSLプロパティに依存しません。 この機能を使用して、デバイスのステータスなど、デバイスのデータを指定できます。 次のセクションでは、特定のシナリオについて説明します。 デバイスシャドウの設定方法の詳細については、「デバイスシャドウのJSON形式」をご参照ください。 |
シナリオ
次のシナリオでは、デバイスシャドウ機能を使用して、デバイスによって送信されたステータスデータと、アプリケーションによって必要なデバイスステータスデータを取得できます。
アプリケーションはデバイスのステータスを要求します。
シナリオ
ネットワークが不安定なため、デバイスは頻繁にオンラインとオフラインになります。 この場合、デバイスはアプリケーションからの要求を処理できません。
複数のアプリケーションが同時にデバイス状態データを要求してもよい。 デバイスは、同時要求を処理したり、アプリケーションへの応答を返したりできません。
デバイスからIoT Platformのシャドウにステータスを同期できます。 アプリケーションは、シャドウから最新のステータスデータを取得できます。 このようにして、アプリケーションはデバイスから切り離される。
次の図にプロセスを示します。 詳細については、「デバイスがステータスを送信する」をご参照ください。

アプリケーションは、デバイスのステータスを変更するコマンドを送信します。
説明: デバイスがオフラインであるか、ネットワークが不安定なためにデバイスが頻繁にオンラインとオフラインになります。 この場合、アプリケーションからのコマンドがデバイスに送信されない可能性があります。
シャドウにタイムスタンプ付きのコマンドを保存できます。 デバイスがオンラインになった後、デバイスはシャドウからコマンドを取得し、タイムスタンプに基づいてコマンドを処理するかどうかを判断します。
次の図にプロセスを示します。 詳細については、「アプリケーションがデバイスのステータスを変更する」、「デバイスがシャドウを要求する」、および「デバイスがシャドウのプロパティを削除する」をご参照ください。
デバイスシャドウの表示と更新
デバイスのデバイスシャドウ機能を設定する必要があります。 詳細については、「デバイスシャドウ」をご参照ください。
デバイスを設定し、デバイスをIoT Platformに接続した後、IoT Platformコンソールでデバイスシャドウステータスを表示および更新できます。
IoT Platformコンソールにログインします。
[概要] ページで、[すべての環境] をクリックします。 [すべての環境] タブで、管理するインスタンスを見つけ、インスタンスIDまたはインスタンス名をクリックします。
左側のナビゲーションウィンドウで、 を選択します。
[デバイス] ページで、管理するデバイスを見つけ、[操作] 列の [表示] をクリックします。 [デバイスの詳細] ページが表示されます。
[デバイスシャドウ] タブをクリックします。 このタブでは、デバイスによって送信されたデバイスシャドウを表示できます。

[シャドウの更新] をクリックします。
「希望」セクションに希望のステータス情報を入力します。デバイスシャドウの形式については、「デバイスシャドウのJSON形式」をご参照ください。
デバイスは、特定のトピックにサブスクライブすることによって所望のステータスデータを取得する。 デバイスがオンラインの場合、IoT Platformは目的のステータスをリアルタイムでデバイスにプッシュします。
デバイスがオフラインの場合、シャドウは希望のステータスデータをキャッシュします。 デバイスがオンラインになった後、デバイスはIoT Platformから必要な最新のステータスデータを取得します。
関連する API 操作
GetDeviceShadow: デバイスシャドウを照会します。
UpdateDeviceShadow: デバイスシャドウを更新します。