EDGEPLANT ANALOG-USB Interfaceのデータを送信する

付属デバイスコネクターdevice-connector-intdashを使用してEDGEPLANT ANALOG-USB Interfaceからアナログデータを取得し、リアルタイム送信するための設定例です。

../../_images/analog-usb-sample.svg

図 25 EDGEPLANT ANALOG-USB Interfaceからのデータを送信するための設定例

ストリームの設定

以下のコマンドを実行して、 recoverable というIDを持つアップストリームを作成します。 指定しているのはIDのみのため、他の設定値はデフォルトのとおりになります。

$ intdash-agentctl config up --create '
    id: recoverable
  '

デバイスコネクターの設定

intdash Edge Agent 2にデバイスコネクターを追加します。以下のコマンドを実行して設定を行ってください。

$ intdash-agentctl config device-connector up --create '
    id: analog
    data_name_prefix: v1/101/
    dest_ids:
      - recoverable
    format: iscp-v2-compat
    ipc:
      type: fifo
      path: /var/run/intdash/analog.fifo
    launch:
      cmd: device-connector-intdash
      args:
      - --config
      - /etc/dc_conf/analog-up.yml
      environment:
      - DC_APT_ANALOGTRX_SRC_CONF_PATH=/dev/apt-usb/by-id/usb-xxx
      - DC_APT_ANALOGTRX_SRC_CONF_TIMESTAMP_MODE=device
      - DC_APT_ANALOGTRX_SRC_CONF_INPUT_SEND_RATE=1250000
      - DC_APT_ANALOGTRX_SRC_CONF_INPUT_ENABLED_0=true
      - DC_APT_ANALOGTRX_SRC_CONF_INPUT_ENABLED_1=true
      - DC_APT_ANALOGTRX_SRC_CONF_INPUT_ENABLED_2=true
      - DC_APT_ANALOGTRX_SRC_CONF_INPUT_ENABLED_3=true
      - DC_APT_ANALOGTRX_SRC_CONF_INPUT_ENABLED_4=true
      - DC_APT_ANALOGTRX_SRC_CONF_INPUT_ENABLED_5=true
      - DC_APT_ANALOGTRX_SRC_CONF_INPUT_ENABLED_6=true
      - DC_APT_ANALOGTRX_SRC_CONF_INPUT_ENABLED_7=true
      - DC_APT_ANALOGTRX_SRC_CONF_INPUT_VOLTAGE_MIN_0=-5000
      - DC_APT_ANALOGTRX_SRC_CONF_INPUT_VOLTAGE_MIN_1=-5000
      - DC_APT_ANALOGTRX_SRC_CONF_INPUT_VOLTAGE_MIN_2=-5000
      - DC_APT_ANALOGTRX_SRC_CONF_INPUT_VOLTAGE_MIN_3=-5000
      - DC_APT_ANALOGTRX_SRC_CONF_INPUT_VOLTAGE_MIN_4=-5000
      - DC_APT_ANALOGTRX_SRC_CONF_INPUT_VOLTAGE_MIN_5=-5000
      - DC_APT_ANALOGTRX_SRC_CONF_INPUT_VOLTAGE_MIN_6=-5000
      - DC_APT_ANALOGTRX_SRC_CONF_INPUT_VOLTAGE_MIN_7=-5000
      - DC_APT_ANALOGTRX_SRC_CONF_INPUT_VOLTAGE_MIN_8=-5000
      - DC_APT_ANALOGTRX_SRC_CONF_INPUT_VOLTAGE_MAX_0=5000
      - DC_APT_ANALOGTRX_SRC_CONF_INPUT_VOLTAGE_MAX_1=5000
      - DC_APT_ANALOGTRX_SRC_CONF_INPUT_VOLTAGE_MAX_2=5000
      - DC_APT_ANALOGTRX_SRC_CONF_INPUT_VOLTAGE_MAX_3=5000
      - DC_APT_ANALOGTRX_SRC_CONF_INPUT_VOLTAGE_MAX_4=5000
      - DC_APT_ANALOGTRX_SRC_CONF_INPUT_VOLTAGE_MAX_5=5000
      - DC_APT_ANALOGTRX_SRC_CONF_INPUT_VOLTAGE_MAX_6=5000
      - DC_APT_ANALOGTRX_SRC_CONF_INPUT_VOLTAGE_MAX_7=5000
      - DC_APT_ANALOGTRX_SRC_CONF_OUTPUT_ENABLED=false
      - DC_APT_ANALOGTRX_SRC_CONF_OUTPUT_WAVEFORM_TYPE=0
      - DC_APT_ANALOGTRX_SRC_CONF_OUTPUT_VOLTAGE=20
      - DC_APT_ANALOGTRX_SRC_CONF_OUTPUT_FREQUENCY=1000
      - DC_PRINT_LOG_FILTER_CONF_TAG=analog
      - DC_FILE_SINK_CONF_PATH=/var/run/intdash/analog.fifo
'
  • launch で、device-connector-intdashを起動するように設定しています。

  • device-connector-intdashを実行するための設定は、パイプライン設定ファイル /etc/dc_conf/analog-up.yml として与えています(このファイルは次の手順で作成します)。 また、パイプライン設定ファイルで使用するための環境変数を与えています( environment ) 。

  • device-connector-intdashから /var/run/intdash/analog.fifo を介して得られたデータは、 v1/101/ というデータ名称プリフィックスを与えられて、 recoverable というIDを持つストリームに送信されます。

device-connector-intdashのパイプライン設定

次にdevice-connector-intdashのパイプライン設定ファイルを以下の内容で作成し、 /etc/dc_conf/analog-up.yml として保存します。

before_task:
  # sync timestamp
  - mkdir -p /var/lock/intdash
  - |
    BASETIME_CLOCK_ID=$DC_CLOCK_ID
    meas-hook --lockfile /var/lock/intdash/dc_apt_usbtrx.lock --command "
      if command -v apt_usbtrx_timesync.sh     > /dev/null 2>&1 ; then apt_usbtrx_timesync.sh;     exit 0; fi;
      if command -v apt_usbtrx_timesync_all.sh > /dev/null 2>&1 ; then apt_usbtrx_timesync_all.sh; exit 0; fi;
      echo \"ERROR: timestamp script not found\";
      exit 1;
    "

after_task:
  - rm -f /var/lock/intdash/dc_apt_usbtrx.lock

tasks:
  - id: 1
    element: apt-analogtrx-src
    conf:
      clock_id: CLOCK_MONOTONIC
      path: $(DC_APT_ANALOGTRX_SRC_CONF_PATH)
      timestamp_mode: $(DC_APT_ANALOGTRX_SRC_CONF_TIMESTAMP_MODE)
      input_send_rate: $(DC_APT_ANALOGTRX_SRC_CONF_INPUT_SEND_RATE)
      input_enabled:
        - $(DC_APT_ANALOGTRX_SRC_CONF_INPUT_ENABLED_0)
        - $(DC_APT_ANALOGTRX_SRC_CONF_INPUT_ENABLED_1)
        - $(DC_APT_ANALOGTRX_SRC_CONF_INPUT_ENABLED_2)
        - $(DC_APT_ANALOGTRX_SRC_CONF_INPUT_ENABLED_3)
        - $(DC_APT_ANALOGTRX_SRC_CONF_INPUT_ENABLED_4)
        - $(DC_APT_ANALOGTRX_SRC_CONF_INPUT_ENABLED_5)
        - $(DC_APT_ANALOGTRX_SRC_CONF_INPUT_ENABLED_6)
        - $(DC_APT_ANALOGTRX_SRC_CONF_INPUT_ENABLED_7)
      input_voltage_min:
        - $(DC_APT_ANALOGTRX_SRC_CONF_INPUT_VOLTAGE_MIN_0)
        - $(DC_APT_ANALOGTRX_SRC_CONF_INPUT_VOLTAGE_MIN_1)
        - $(DC_APT_ANALOGTRX_SRC_CONF_INPUT_VOLTAGE_MIN_2)
        - $(DC_APT_ANALOGTRX_SRC_CONF_INPUT_VOLTAGE_MIN_3)
        - $(DC_APT_ANALOGTRX_SRC_CONF_INPUT_VOLTAGE_MIN_4)
        - $(DC_APT_ANALOGTRX_SRC_CONF_INPUT_VOLTAGE_MIN_5)
        - $(DC_APT_ANALOGTRX_SRC_CONF_INPUT_VOLTAGE_MIN_6)
        - $(DC_APT_ANALOGTRX_SRC_CONF_INPUT_VOLTAGE_MIN_7)
      input_voltage_max:
        - $(DC_APT_ANALOGTRX_SRC_CONF_INPUT_VOLTAGE_MAX_0)
        - $(DC_APT_ANALOGTRX_SRC_CONF_INPUT_VOLTAGE_MAX_1)
        - $(DC_APT_ANALOGTRX_SRC_CONF_INPUT_VOLTAGE_MAX_2)
        - $(DC_APT_ANALOGTRX_SRC_CONF_INPUT_VOLTAGE_MAX_3)
        - $(DC_APT_ANALOGTRX_SRC_CONF_INPUT_VOLTAGE_MAX_4)
        - $(DC_APT_ANALOGTRX_SRC_CONF_INPUT_VOLTAGE_MAX_5)
        - $(DC_APT_ANALOGTRX_SRC_CONF_INPUT_VOLTAGE_MAX_6)
        - $(DC_APT_ANALOGTRX_SRC_CONF_INPUT_VOLTAGE_MAX_7)
      output_enabled: $(DC_APT_ANALOGTRX_SRC_CONF_OUTPUT_ENABLED)
      output_waveform_type: $(DC_APT_ANALOGTRX_SRC_CONF_OUTPUT_WAVEFORM_TYPE)
      output_voltage: $(DC_APT_ANALOGTRX_SRC_CONF_OUTPUT_VOLTAGE)
      output_frequency: $(DC_APT_ANALOGTRX_SRC_CONF_OUTPUT_FREQUENCY)

  - id: 2
    element: print-log-filter
    from: [[1]]
    conf:
      interval_ms: 10000
      tag: $(DC_PRINT_LOG_FILTER_CONF_TAG)
      output: stderr

  - id: 3
    element: file-sink
    from: [[2]]
    conf:
      flush_size: 10
      path: $(DC_FILE_SINK_CONF_PATH)
  • apt-analogtrx-srcエレメントでは、環境変数として与えられた値を使ってEDGEPLANT ANALOG-USB Interfaceからデータを取得します。(参考: apt-analogtrx-src

  • print-log-filterでは標準エラー出力にログを出力します。 (参考: print-log-filter

  • file-sinkでは、$(DC_FILE_SINK_CONF_PATH)にFIFO用データフォーマットのデータが書き出されます。これをintdash Edge Agent 2が読み取ります。 (参考: file-sink

ストリーマーの起動

以上の設定ができたらストリーマーを起動します。

$ intdash-agentctl run