ダウンストリームによる受信

アップストリームと反対に、intdashサーバーから時系列データをリアルタイム受信する経路をダウンストリームと呼びます。 ダウンストリームによる受信を行うには以下の準備が必要です。 ( 接続先サーバーと認証情報 は設定済みとします。)

  • デバイスコネクターIPCの設定を作成する

  • ダウントリームの設定を作成する

  • (必要な場合のみ)フィルターを設定する(フィルターを使用すると、条件に一致したデータポイントの行先のデバイスコネクターを変更することができます)

../_images/config-downstream.svg

図 11 リアルタイムデータをサーバーから受信する

以上の設定を行ったうえで、 intdash-agentctl run コマンドを実行することによりサーバーからのリアルタイム受信が開始されます。

注釈

ダウンストリームの場合、データは、ストリームからデバイスコネクターIPC(さらにデバイスコネクターへ)という方向で流れますが、設定しやすさの観点からデバイスコネクターIPCを先に説明します。

デバイスコネクターIPC

intdash Edge Agent 2では、複数のデバイスコネクターを設定し、同時に使用することができます。 ダウンストリームによりintdash Edge Agent 2が受信したデータは、デバイスコネクターを使って外部デバイス(アクチュエーターなど)に送られます。

デバイスコネクターにデータを渡すための設定は、デバイスコネクターIPC設定で行います。 デバイスコネクターIPC設定では、intdash Edge Agent 2との通信に使用するFIFOのパスなどを設定します。

デバイスコネクターIPC設定の作成時にはIDを付与します。 後ほど、どのデバイスコネクターにデータを流すかを指定する際にこのIDを使用します。

ダウンストリーム用のデバイスコネクターIPC設定を作成するには以下のコマンドを実行します。

$ intdash-agentctl config device-connector downstream --create <config_in_yaml_format>

例:

$ intdash-agentctl config device-connector downstream --create '
    id: cat
    data_name_prefix: v1/1/
    enabled: true
    format: iscp-v2-compat
    ipc:
      type: fifo
      path: /var/run/intdash/downlink-hello.fifo
'

作成済みのデバイスコネクターIPC設定を変更するには、IDと、変更したい設定を与えます。

$ intdash-agentctl config device-connector downstream --modify <id> <config_in_yaml_format>

config_in_yaml_format で設定できるパラメーターは以下のとおりです。

キー

説明

id

string

デバイスコネクターIPC設定の識別子

data_name_prefix

string

iSCPのデータ名称のプレフィックスを指定する文字列。ここで空文字以外のプレフィックスが指定されている場合、以下の処理が行われます。

  • データ名称の先頭がここで指定されたプレフィックスと一致するデータポイントのみをデバイスコネクターに送信する。

  • データポイントのデータ名称からプレフィックスを削除する。

enabled

bool

デバイスコネクターIPC設定の有効(true)/無効(false)

format

string

デバイスコネクターが受信するデータのフォーマット

iscp-v2-compat : iSCPv2と同等のFIFOデータフォーマット

logger-msg : 旧intdash Edge AgentのFIFOデータフォーマット

ipc.type

string

intdash Edge Agent 2とデバイスコネクターのデータ通信方法(現在 fifo のみに対応しているため、 fifo を指定してください。)

ipc.path

string

デバイスコネクターがintdash Edge Agent 2からデータを受信するFIFOのパス

launch.cmd

string

intdash Edge Agent 2が起動したらそれに連動してデバイスコネクターも起動させたい場合は、デバイスコネクターの実行ファイルのパスを指定します。付属デバイスコネクターを使用する場合は、 device-connector-intdash とします。

launch.args

[string]

デバイスコネクター起動時の引数。付属デバイスコネクターを使用するために launch.cmddevice-connector-intdash とした場合は、第1引数を --config 、第2引数をパイプライン設定ファイルのパスとします。

- --config
- <path-to-pipeline-configuration.yaml>

launch.environment

[string]

デバイスコネクター起動時に追加する環境変数( VARIABLE=VALUE の形式で記載します)

重要

付属デバイスコネクターを使用する場合は、intdash Edge Agent 2からデータを取得し、外部デバイスに渡すまでの流れを定義したパイプライン設定ファイルが必要です。

パイプライン設定ファイルについては、 デバイスコネクター を参照してください。

注釈

デバイスコネクターIPC設定の一覧表示、削除などのコマンドについては、 device-connectorコマンド を参照してください。

ダウンストリーム

intdash Edge Agent 2では、複数のダウンストリームを設定し、同時に使用することができます。

ダウンストリームの設定では、どのエッジからのどのデータIDを持つデータを受信するかを設定します。 ストリームの設定はIDにより管理されます。

ダウンストリームを作成するには以下のコマンドを実行します。

$ intdash-agentctl config downstream --create <config_in_yaml_format>

例:

intdash-agentctl config downstream --create '
    id: down
    enabled: true
    dest_ids:
      - cat
    qos: unreliable
    filters:
    - src_edge_uuid: f5e7a9d2-099b-432f-86e4-9b496af27d3b
      data_filters:
      - type: string
        name: v1/1/a
'

作成済みのダウンストリームの設定を変更するには、IDと、変更したい設定を与えます。

$ intdash-agentctl config downstream --modify <id> <config_in_yaml_format>

config_in_yaml_format で設定できるパラメーターは以下のとおりです。

キー

説明

id

string

ストリーム設定を識別するための文字列。 deferred は予約されているため使用できません。

enabled

bool

iSCPでのダウンストリームの有効(true)/無効(false)

dest_ids

[string]

データは、ここで指定されたIDのデバイスコネクターIPCを使って外部デバイスに送られます。複数のIDを指定した場合、データポイントは複製され、それぞれのデバイスコネクターIPCに送られます。 ただし、フィルターを設定すると、行先のデバイスコネクターIPCを変更することができます。 フィルター(必要な場合のみ) を参照してください。

qos

string

partial: iSCPのQoSとしてPARTIALを指定します。

unreliable: iSCPのQoSとしてUNRELIABLEを指定します。

filters

[object]

ダウンストリーム対象とするデータを定義した設定のリスト

filters.[].src_edge_uuid

string

ダウンストリーム対象とする送信元のエッジUUID。このUUIDのエッジから送信されたデータを受信します。

filters.[].data_filters

[object]

ダウンストリーム対象とするデータIDを定義した設定のリスト。ここで指定したデータID(データ型とデータ名称)に一致したデータを受信します。

filters.[].data_filters.[].type

[object]

ダウンストリーム対象とするデータ型

filters.[].data_filters.[].name

[object]

ダウンストリーム対象とするデータ名称( #+ を利用したワイルドカード指定が可能。ワイルドカードについてはiSCPの仕様を参照してください。)

注釈

ダウンストリーム設定の一覧表示、削除などのコマンドについては、 upstream、downstreamサブコマンド を参照してください。

注釈

上記の filters.[].data_filters は、どのデータをサーバーからダウンストリームするかを設定するもの(ダウンストリームフィルター)です。 intdash Edge Agent 2が受信したデータについて、その行先を変更する フィルター とは別の機能です。

フィルター(必要な場合のみ)

どのデバイスコネクターIPCにデータを送信するかはストリームの設定で指定しましたが、ストリームとデバイスコネクターIPCの間にフィルターを挟むことにより、データの行先を他のデバイスコネクターに変更することができます。

フィルターには条件を設定し、その条件に一致するデータだけを別のデバイスコネクターIPCに送ることができます。これにより、一部のデータだけをデバイスコネクターAに送信し、その他のデータはデバイスコネクターBに送信するといった設定が可能です。

../_images/config-downstream-filter.svg

図 12 フィルター(ダウンストリームの場合)

フィルターの設定方法については、 フィルタリング/サンプリング を参照してください。

注釈

ダウンストリームの設定やフィルターの設定では、存在しないデバイスコネクターIPCのIDを指定することができます。 最終的に、存在しないIDを行先としているデータポイントは破棄されるため、存在しないデバイスコネクターIPCのIDを一時的な行先として使用すると便利な場合があります。

以下の例では、ダウンストリーム設定の dest_ids において、存在しないデバイスコネクターIPC dc_x を行先として指定しています。そのうえで、フィルタリングの段階で、フィルター条件に一致したデータポイントの行先を変更しています。 フィルタリングの段階を完了してもなお dc_x を行先としているデータポイントは、破棄されます。

../_images/config-downstream-nonexisting-dc.svg

図 13 存在しないデバイスコネクターIPCのIDを使用

受信を開始/終了

ダウンストリームの設定とデバイスコネクターIPCの設定を行ったうえで、 intdash-agentctl run を実行すると、intdashサーバーへの接続が行われます。

別のエッジからサーバーにデータがリアルタイム送信されているとき、そのデータがこのエッジにとってのダウンストリーム対象であればこのエッジで受信されます。

リアルタイムデータの送受信を終了する場合は、 intdash-agentctl run を実行したターミナルでCtrl+Cを押してください。