1.3. Device Adapterによるセンサデータ収集

1.3.1. デバイスアダプタ

デバイスアダプタは、エッジゲートウェイ上で動作しエッジゲートウェイに接続されたデバイスとICE Coreの間でメッセージの橋渡しを行うアプリケーションです。デバイスアダプタ向けAPIを使用して、デバイスから取得したセンサーデータをICE Coreに送信したり、ICE Coreからのさまざまな処理要求をデバイスに伝えたりします。

デバイスアダプタの概要

1.3.1.1. プロセス起動/停止

デバイスアダプタはICE Coreの起動時に自動で起動し、ICE Coreの停止時にシグナルを受け取って停止します。

1.3.1.2. デバイスアダプタの処理の流れ

デバイスアダプタは以下のいずれかの動作モデルを取ります。主にmainスレッドでICE Coreへセンサーデータの送信を行い、C APIが管理する受信スレッドでバックエンドやICE Coreからのメッセージを受信して対応するコールバック関数を呼び出します。

1.3.1.2.1. デバイスからのセンサーデータをバックエンドに送信するモデル

  • mainスレッド
    1. デバイスアダプタの初期化
    2. ICEへデバイスの登録
    3. デバイスからセンサーデータの取得(デバイス依存の処理)
    4. ICE Coreへセンサーデータの送信
    5. 3, 4を繰り返す
    6. (シグナル受信ではなく自発的に終了する場合)デバイスアダプタの終了

1.3.1.2.2. バックエンドからメッセージを受けて動作するモデル

  • mainスレッド
    1. デバイスアダプタの初期化
    2. ICEへデバイスの登録
    3. メッセージ受信処理の登録
    4. メッセージ受信の開始
    5. メッセージ受信動作の終了待ち合わせ
  • C API管理の受信スレッド
    1. メッセージの受信(随時)
      1. メッセージに対応する処理の実行
      2. メッセージの受信応答の送信
      3. 追加のデータ送信

1.3.1.2.3. デバイスからのセンサーデータをバックエンドに送信し、バックエンドからメッセージを受ける動作モデル

  • mainスレッド
    1. デバイスアダプタの初期化
    2. ICEへデバイスの登録
    3. メッセージ受信処理の登録
    4. メッセージ受信の開始
    5. デバイスからセンサーデータの取得(デバイス依存の処理)
    6. ICE Coreへセンサーデータの送信
    7. 5, 6を繰り返す
    8. (シグナル受信ではなく自発的に終了する場合)デバイスアダプタの終了
  • C API管理の受信スレッド
    1. メッセージの受信(随時)
      1. メッセージに対応する処理の実行
      2. メッセージの受信応答の送信
      3. 追加のデータ送信

1.3.1.3. C API

ICE では、デバイスアダプタ開発向けの Data Delivery C API を提供します。

1.3.1.4. 設定ファイル

1.3.1.4.1. デバイスアダプタプロファイル

デバイスアダプタプロファイルは、デバイスアダプタの設定ファイルです。デバイスアダプタの名前や作成者、バージョンなどの情報を記述します。また、このデバイスアダプタが対象とするデバイスのプロファイルが予め決まっているのであれば、後述するデバイスプロファイルのファイル名を記載し、デバイスアダプタとデバイスの関係を決めておく使い方もできます。
デバイスアダプタプロファイルでは、Vendor, Product, Versionが必須項目です。ICEではこれらの項目の有無をチェックしませんが、デバイスアダプタを区別する情報として定義されていることが望ましいです。

例)デバイスアダプタプロファイルの例

{
    "Vendor": "デバイスアダプタプログラム開発会社",
    "Product": "デバイスアダプタプログラム名",
    "Version": "デバイスアダプタプログラムバージョン",
    "dev_profile": "対象デバイスのデバイスプロファイルファイル名"
}
1.3.1.4.1.1. デバイスアダプタプロファイルの制限

デバイスアダプタプロファイルの最大サイズ(空白、改行を除く)は63.5KBです。

1.3.1.4.2. デバイスプロファイル

デバイスプロファイルは、デバイスの設定ファイルです。デバイスアダプタプロファイルがデバイスアダプタの設定を記述するのに対し、デバイスプロファイルはデバイスの名前、開発者、ICE Coreに送信するデータの構成名(data_type)や、デバイスアダプタがデバイスを動作させるときに参照するデバイスごとの設定項目を記述します。
デバイスプロファイルではVendor, Product, ModelNo, data_typeが必須項目、ProductNo, SerialNoが推奨項目です。ICEではdata_type以外の項目の有無をチェックしませんが、デバイスを区別する情報として定義されていることが望ましいです。

例)デバイスプロファイルの例

{
    "Vendor": "デバイスの開発会社",
    "Product": "デバイスの製品名",
    "ModelNo": "デバイスの型番",
    "ProductNo": "デバイスの製品番号",
    "SerialNo": "デバイスの製造番号",
    "data_type": "デバイスが送信するデータのタイプ"
}
1.3.1.4.2.1. デバイスプロファイルの制限

デバイスプロファイルの最大サイズ(空白、改行を除く)は63.5KBです。

1.3.1.5. デバイスアダプタの同時起動数上限

同時に起動可能なデバイスアダプタの数をcore_config.jsonnative_app.process_limitで設定します。 この設定はエッジアプリケーションとデバイスアダプタ両方を合わせた同時起動数の上限となります。 ここで設定された上限以上のデバイスアダプタを起動することはできません。 既定値は255となります。