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コンテナをカスタマイズして計測する方法を説明します。

  1. device-connector-intdashコンテナを利用する Hello デバイスコネクターサービスを作成します。

  2. device-connector-intdashコンテナが利用する設定ファイルを作成します。

  3. Mender Web UIから設定値を変更し、オーバーライドファイルを更新します。

../../_images/about_device_connector_intdash_container.png

図 8 device-connector-intdashコンテナの仕組み

注釈

device-connector-intdashの詳細については intdash Edge Agent 2 デベロッパーガイド を参照してください。

device-connector-intdashコンテナのカスタマイズ方法

device-connector-intdashコンテナを利用する Hello デバイスコネクターサービスを作成します。

  1. 開発用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 で設定された値に置換されます。

    注釈

    デバイスコネクターサービスを利用した計測の仕組みや記載方法の詳細については、以下を参照してください。

  2. scpまたはMenderのファイル転送などで、作成したファイルをエッジコンピューターの以下のパスにコピーして上書きします。

    /var/lib/core/docker-compose/measurement/services/Hello.yml
    

device-connector-intdashの設定ファイルを作成します。

  1. 以下のコードブロックをコピーして、設定ファイル 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に書き込みます。

  2. scpまたはMenderのファイル転送などで、作成した設定ファイルをエッジコンピューターの以下のパスにコピーします。

    /etc/dc_conf/config.yml
    

    注釈

    /etc/dc_conf ディレクトリが存在しない場合は、ディレクトリを作成してからコピーしてください。

デバイスコネクター設定を変更し、送信するテキストを設定します。

  1. デバイスコネクター設定の service_substitutions を変更し、送信するテキストを service_substitutionsDC_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!"
          ]
       }
    ]
    
  2. 設定をエッジコンピューターに適用します。

    Mender Web UIからデバイスコネクター設定を変更すると、コミット操作を自動的に行います。 コミット操作時、デバイスコネクターサービスの置換変数はデバイスコネクター設定の service_substitutions で指定した設定値で置換されます。

  3. 計測を開始します。

    ../../_images/edge_finder_device_connector_intdash.png

    カスタマイズしたdevice-connector-intdashコンテナで計測することができました。

    デバイスコネクター設定の DC_TEXT を変更することで、送信する文字列を変更することができます。

  4. 動作確認後、計測を停止します。

以上で、カスタム開発のチュートリアルは完了です。 次のステップとして、以下を参照してください。

  • 概要 を読んで、Terminal System 2のシステム構成およびカスタム開発範囲を理解する

  • 機能説明 を読んで、Terminal System 2の機能を理解する

  • アプリケーション開発 を参考に、Terminal System 2のアプリケーションを開発する

  • OS開発 を参考に、Terminal System 2のOSを開発する