CAPの代表的なデータフロー

本章ではCAPの代表的な以下のシナリオでのデータの流れについて説明します。

  • デバイスからのデバイスデータの受信

  • Webアプリケーションからデバイスへのアクチュエーション指示の配信

  • Webアプリケーションからクエリを利用したデバイスデータの検索

デバイスからのデバイスデータの受信

サービス連携をしない場合のデータフロー

デバイスからデバイスデータを受信し、サービスとの連携を行わずにデバイスの状態を管理する場合のデータフローは以下のとおりです。なお、本データフローはCache型デバイスタイプを利用した設定の構成です。

  1. CAPは、デバイスが送信したデータをHTTP REST API/MQTT APIのいずれかで受信します。

  2. CAPは受信したデータからDevice Phantomを作成し、キャッシュストアに保存します。

デバイスからのデバイスデータ受信のフロー (蓄積・外部転送なし)

サービス連携およびデータ蓄積する場合のデータフロー

サービス連携を設定後にデバイスからデバイスデータを受信し、デバイスの状態情報を管理する場合のデータフローは以下のとおりです。

  1. CAPは、デバイスが送信したデータをHTTP REST API/MQTT APIのいずれかで受信します。

  2. CAPは受信したデータをDevice PhantomのReportedプロパティに設定し、キャッシュストアに格納します。

  3. CAPはDevice Phantomの更新が完了後に、更新したDevice Phantomのデータをサービス連携で設定された外部サービスに転送します。

  4. 転送機能では、JSONのフォーマット変更が可能です。
    JSONフォーマット変更を設定していない場合は、Device Phantomデータフォーマット(「Device Phantomの仕様理解」参照)のまま送信されます。

デバイスデータ受信のフロー (Cache型デバイスタイプ/蓄積・外部転送あり)

なお、パススルー型のデバイスタイプを利用することで、デバイスの状態情報を管理しないケースも実現できます。

デバイスデータ受信のフロー (イベントパススルー型デバイスタイプ/蓄積・外部転送あり)

Webアプリケーションからデバイスへのアクチュエーション指示

CAPでは、デバイスアプリケーションからCAPへのデータ送信だけでなく、CAPからデバイスアプリケーションへのデータ送信(アクチュエーション指示)を行うことができます。

アクチュエーション指示の機能は、Cache型デバイスタイプを用いることで利用できます。 Cache型デバイスタイプでは、デバイスデータから送信されるデバイスデータの最新の値(reportedデータ)を保持しています。 また、Webアプリケーションから送信されるデバイスアプリケーションに期待する値(desiredデータ)も併せて保持しています。 アクチュエーション指示はreportedデータとdesiredデータが一致しない場合に、CAPから送信されます。

アクチュエーション指示のデータフローは以下のとおりです。(①→②→③→④は③→④→①→②の順になっても同様です)

  1. CAPはデバイスが送信したデータを REST API/MQTT APIのいずれかで受信します。

  2. CAPは受信したデータをキャッシュストア内に格納されたDevice Phantomのreportedプロパティに設定します。

  3. Webアプリケーションはデバイスに期待する値を設定するため、REST APIにデータを送信します。

  4. CAPは受信したデータをのキャッシュストア内に格納されたDevice Phantomのdesiredプロパティに設定します。

  5. CAPはreportedデータ、もしくはdesiredデータの更新を検知すると、reportedデータとdesiredデータ内に含まれる各プロパティの差分比較を行います。 同一プロパティ名で異なる値のデータを検出すると、アクチュエーション指示をデバイスに送信します。

アクチュエーション指示は、差分を検知したプロパティを含んだJSONです。
プロパティの値にはWebアプリケーションに設定されたdesiredデータの値が設定されます。

アクチュエーション指示の送信フロー

Webアプリケーションによるクエリを利用したデバイス検索

Webアプリケーションがクエリを利用しデバイスを検索する場合のデータフローは以下のとおりです。
なお、本機能を利用するにはCache型のデバイスタイプを利用している必要があります。

  1. Webアプリケーションがデバイスの検索のクエリをREST APIに送信します。

  2. CAPは指定されたデバイスタイプを対象に受信したクエリを実行し、条件に合致するデバイスの検索を行います。

  3. 検索結果をHTTP REST APIに戻します。

  4. Webアプリケーションにデバイスの検索結果が返却されます。

Webアプリケーションによるクエリを利用したデバイス検索のフロー