1.5. device-connector-intdashコンテナをカスタマイズする
device-connector-intdashコンテナをカスタマイズする方法を説明します。
- 習得する内容
device-connector-intdashコンテナの仕組み
device-connector-intdashコンテナのカスタマイズ方法
device-connector-intdashコンテナの仕組み
Terminal System 2は、アプトポッド製のデバイスコネクターであるdevice-connector-intdashのコンテナを利用しています。
device-connector-intdashコンテナは、利用する設定ファイルを変更することでパイプラインをカスタマイズすることができます。 また、設定ファイルの設定値には環境変数を使用することができ、環境変数を変更することで設定ファイルを変更せずに設定値を変更することが可能です。
このチュートリアルでは、以下の対応を行い、device-connector-intdashコンテナをカスタマイズして計測する方法を説明します。
device-connector-intdashコンテナを利用する
Hello
デバイスコネクターサービスを作成します。device-connector-intdashコンテナが利用する設定ファイルを作成します。
Mender Web UIから設定値を変更し、オーバーライドファイルを更新します。
注釈
device-connector-intdashの詳細については intdash Edge Agent 2 デベロッパーガイド を参照してください。
device-connector-intdashコンテナのカスタマイズ方法
device-connector-intdashコンテナを利用する Hello
デバイスコネクターサービスを作成します。
開発用PCで、以下のコードブロックをコピーして
Hello.yml
ファイルを以下の内容に変更してください。image: $BASE_URI/$IMAGE_NAME_DEVICE_CONNECTOR:$IMAGE_TAG_DEVICE_CONNECTOR command: - --config - "/etc/dc_conf/config.yml" volumes: - /var/run/core/intdash:/var/run/intdash - /etc/dc_conf:/etc/dc_conf environment: DC_TEXT_SRC_CONF_TEXT: ${DC_TEXT} DC_FILE_SINK_CONF_PATH: ${DC_UPSTREAM_FIFO_0} depends_on: intdash-edge-agent2: condition: service_healthy restart: unless-stopped substitution_variables: - key: DC_UPSTREAM_FIFO_0 default: "" validation: "^/var/run/intdash/" display_strings_i18n: - locale: jpn name: FIFO Path description: intdash Edge Agent 2へデータを送信するためのFIFOのパス - key: DC_TEXT default: "Hello, world!" display_strings_i18n: - locale: jpn name: Text description: intdashサーバーへ送信するテキストメッセージ
この例では、設定項目として置換変数
DC_TEXT
を定義しています。 コミット操作でオーバーライドファイルを作成する際に、置換変数の値はデバイスコネクター設定のservice_substitutions
で設定された値に置換されます。scpまたはMenderのファイル転送などで、作成したファイルをエッジコンピューターの以下のパスにコピーして上書きします。
/var/lib/core/docker-compose/measurement/services/Hello.yml
device-connector-intdashの設定ファイルを作成します。
以下のコードブロックをコピーして、設定ファイル
config.yml
を作成してください。tasks: - id: 1 element: text-src conf: text: $(DC_TEXT_SRC_CONF_TEXT) interval_ms: 1000 - id: 2 element: iscp-v2-compat-filter from: [[1]] conf: timestamp: stamp: clock_id: CLOCK_MONOTONIC convert_rule: string: name: ab - id: 3 element: file-sink from: [[2]] conf: path: $(DC_FILE_SINK_CONF_PATH)
この例では、環境変数
DC_TEXT_SRC_CONF_TEXT
で指定されたテキストをiscp-v2-compatフォーマットの文字列データに変換し、1秒間隔でDC_FILE_SINK_CONF_PATH
で指定されたFIFOに書き込みます。scpまたはMenderのファイル転送などで、作成した設定ファイルをエッジコンピューターの以下のパスにコピーします。
/etc/dc_conf/config.yml
注釈
/etc/dc_conf ディレクトリが存在しない場合は、ディレクトリを作成してからコピーしてください。
デバイスコネクター設定を変更し、送信するテキストを設定します。
デバイスコネクター設定の
service_substitutions
を変更し、送信するテキストをservice_substitutions
のDC_TEXT
で設定します。Mender Web UIにアクセスし、デバイス画面の[Configuration]タブで、
device_connectors
に以下を設定してください。[ { "id": "device-inventory", "upstream_ipc_ids": [ "device-inventory" ], "downstream_ipc_ids": [], "service_id": "Device Inventory", "service_substitutions": [] }, { "id": "hello", "upstream_ipc_ids": [ "up-hello" ], "downstream_ipc_ids": [], "service_id": "Hello", "service_substitutions": [ "DC_TEXT=Hello, intdash!" ] } ]
設定をエッジコンピューターに適用します。
Mender Web UIからデバイスコネクター設定を変更すると、コミット操作を自動的に行います。 コミット操作時、デバイスコネクターサービスの置換変数はデバイスコネクター設定の
service_substitutions
で指定した設定値で置換されます。計測を開始します。
カスタマイズしたdevice-connector-intdashコンテナで計測することができました。
デバイスコネクター設定の
DC_TEXT
を変更することで、送信する文字列を変更することができます。動作確認後、計測を停止します。
以上で、カスタム開発のチュートリアルは完了です。 次のステップとして、以下を参照してください。
概要 を読んで、Terminal System 2のシステム構成およびカスタム開発範囲を理解する
機能説明 を読んで、Terminal System 2の機能を理解する
アプリケーション開発 を参考に、Terminal System 2のアプリケーションを開発する
OS開発 を参考に、Terminal System 2のOSを開発する