ダウンストリームによる受信¶
アップストリームと反対に、intdashサーバーからのリアルタイムデータを受信する経路をダウンストリームと呼びます。 ダウンストリームによる受信を行うには以下の準備が必要です。 ( 接続先サーバーと認証情報 は設定済みとします。)
デバイスコネクターの設定を作成する
ダウントリームの設定を作成する
(必要な場合のみ)フィルターを設定する(フィルターを使用すると、条件に一致したデータポイントの行先のデバイスコネクターを変更することができます)
以上の設定を行ったうえで、 intdash-agentctl run
コマンドを実行することによりサーバーからのリアルタイム受信が開始されます。
注釈
ダウンストリームの場合、データは、ストリームからデバイスコネクターへという順序で流れますが、設定しやすさの観点からデバイスコネクターを先に説明します。
デバイスコネクター¶
intdash Edge Agent 2では、複数のデバイスコネクターを設定し、同時に使用することができます。 ダウンストリームによりintdash Edge Agent 2が受信したデータは、デバイスコネクターを使って外部デバイス(アクチュエーターなど)に送られます。
各デバイスコネクター設定では、intdash Edge Agent 2との通信に使用するFIFOのパスなどを設定します。
デバイスコネクター設定の作成時にはIDを付与します。 後ほど、どのデバイスコネクターにデータを流すかを指定する際にこのIDを使用します。
ダウンストリーム用デバイスコネクターの設定を作成するには以下のコマンドを実行します。
$ intdash-agentctl config device-connector downstream --create <config_in_yaml_format>
例:
$ intdash-agentctl config device-connector downstream --create '
id: cat
enabled: true
format: iscp-v2-compat
ipc:
type: fifo
path: /var/run/intdash/downlink-hello.fifo
'
作成済みのデバイスコネクターの設定を変更するには、IDと、変更したい設定を与えます。
$ intdash-agentctl config device-connector downstream --modify <id> <config_in_yaml_format>
config_in_yaml_format
で設定できるパラメーターは以下のとおりです。
キー |
型 |
説明 |
---|---|---|
id |
string |
デバイスコネクター設定の識別子 |
enabled |
bool |
デバイスコネクター設定の有効( |
format |
string |
デバイスコネクターが受信するデータのフォーマット
|
ipc.type |
string |
intdash Edge Agent 2とデバイスコネクターのデータ通信方法(現在 |
ipc.path |
string |
デバイスコネクターがintdash Edge Agent 2からデータを受信するFIFOのパス |
launch.cmd |
string |
intdash Edge Agent 2が起動したらそれに連動してデバイスコネクターも起動させたい場合は、デバイスコネクターの実行ファイルのパスを指定します。付属デバイスコネクターを使用する場合は、 |
launch.args |
[string] |
デバイスコネクター起動時の引数。付属デバイスコネクターを使用するために - --config
- <path-to-pipeline-configuration.yaml>
|
launch.environment |
[string] |
デバイスコネクター起動時に追加する環境変数( |
重要
付属デバイスコネクターを使用する場合は、intdash Edge Agent 2からデータを取得し、外部デバイスに渡すまでの流れを定義したパイプライン設定ファイルが必要です。
パイプライン設定ファイルについては、 付属デバイスコネクターの使用 を参照してください。
注釈
デバイスコネクター設定の一覧表示、削除などのコマンドについては、 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
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 |
ストリーム設定を識別するための文字列。 |
enabled |
bool |
iSCPでのダウンストリームの有効( |
dest_ids |
[string] |
データは、ここで指定したIDのデバイスコネクターを使って外部デバイスに送られます。複数のIDを指定した場合、データポイントは複製され、それぞれのデバイスコネクターに送られます。 ただし、フィルターを設定すると、行先のデバイスコネクターを変更することができます。 フィルター(必要な場合のみ) を参照してください。 |
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] |
ダウンストリーム対象とするデータ名称( |
注釈
ダウンストリーム設定の一覧表示、削除などのコマンドについては、 upstream、downstreamサブコマンド を参照してください。
注釈
上記の filters.[].data_filters
は、どのデータをサーバーからダウンストリームするかを設定するもの(ダウンストリームフィルター)です。
intdash Edge Agent 2が受信したデータについて、行先のデバイスコネクターを変更する フィルター とは別の機能です。
フィルター(必要な場合のみ)¶
どのデバイスコネクターにデータを送信するかはストリームの設定で指定しましたが、ストリームとデバイスコネクターの間にフィルターを挟むことにより、データの行先を他のデバイスコネクターに変更することができます。
フィルターには条件を設定し、その条件に一致するデータだけを別のデバイスコネクターに送ることができます。これにより、一部のデータだけをデバイスコネクターAに送信し、その他のデータはデバイスコネクターBに送信するといった設定が可能です。
フィルターの設定方法については、 フィルタリング/サンプリング を参照してください。
注釈
ダウンストリームの設定やフィルターの設定では、存在しないデバイスコネクターIDを指定することができます。 最終的に、存在しないIDを行先としているデータポイントは破棄されるため、存在しないデバイスコネクターIDを一時的な行先として使用すると便利な場合があります。
以下の例では、ダウンストリーム設定の dest_ids
において、存在しないデバイスコネクター dc_x
を行先として指定しています。そのうえで、フィルタリングの段階で、フィルター条件に一致したデータポイントの行先を変更しています。
フィルタリングの段階を完了してもなお dc_x
を行先としているデータポイントは、破棄されます。
受信を開始/終了¶
ダウンストリームの設定とデバイスコネクターの設定を行ったうえで、 intdash-agentctl run
を実行すると、intdashサーバーへの接続が行われます。
別のエッジからサーバーにデータがリアルタイム送信されているとき、そのデータがこのエッジにとってのダウンストリーム対象であればこのエッジで受信されます。
リアルタイムデータの送受信を終了する場合は、 intdash-agentctl run
を実行したターミナルでCtrl+Cを押してください。