フィルタリング/サンプリング¶
フィルターとは¶
intdash Edge Agent 2では、intdash Edge Agent 2内を流れるデータポイントに対して、フィルターを適用することができます。 フィルターを使用すると、以下のことができます。
アップストリーム方向の場合: デバイスコネクターから取得したデータポイントのうち、指定された条件に一致するデータポイントを選び出し、指定されたアップストリーム、または、遅延アップロードの処理に渡す。
ダウンストリーム方向の場合: サーバーから取得したデータポイントのうち、指定された条件に一致するデータポイントを選び出し、指定されたデバイスコネクターに渡す。
さまざまな条件を指定するために、条件の指定方法が異なるいくつかのフィルタータイプが用意されています。 例えば、nameタイプのフィルターでは、条件としてデータ名称を指定します。この場合、流れてきたデータポイントのデータ名称が指定されたものと一致すると、フィルターの定義に従って処理されることになります。
使用できるフィルターのタイプは以下のとおりです。条件の設定方法については各フィルタータイプの説明を参照してください。:
注釈
フィルターは、上記のタイプのみを使用できます。ユーザーが独自のフィルタータイプを開発することはできません。 既存のフィルタータイプでは不足がある場合は、同様の仕組みをデバイスコネクターにおいて開発することで対応できます。
複数のフィルターを設定して多段階の条件を設定することもできます。複数のフィルターを設定した場合、設定ファイルに書かれた順にフィルターが適用されます。
また、一定時間ごとに最初の1つのデータポイントを選択するフィルター(samplingタイプのフィルター)を設定することで、サンプリングを実行することができます。
注釈
ここで説明するフィルターは、intdash Edge Agent 2内を流れるデータに対して適用されるものです。 サーバーからダウンストリームする対象を指定するための「ダウンストリームフィルター」とは別の機能です。 ダウンストリームフィルターについては、 ダウンストリーム を参照してください。
フィルターを設定する¶
フィルターを作成するには以下のコマンドを実行します。
アップストリーム方向:
$ intdash-agentctl config filter upstream --create <config_in_yaml_format>
ダウンストリーム方向:
$ intdash-agentctl config filter downstream --create <config_in_yaml_format>
例:
$ intdash-agentctl config filter upstream --create '
id: string_to_deferred
enabled: true
type: type
target:
dest_ids:
- recoverable
type: string
change_to:
dest_id: deferred
'
作成済みのフィルターの設定を変更するには、IDと、変更したい設定を与えます。
$ intdash-agentctl config filter upstream --modify <id> <config_in_yaml_format>
$ intdash-agentctl config filter downstream --modify <id> <config_in_yaml_format>
キー |
型 |
説明 |
---|---|---|
id |
string |
フィルター設定を識別する任意のID |
enabled |
bool |
フィルターの有効(true)/無効(false) |
type |
string |
|
target |
object |
フィルターのタイプに応じた対象データポイントの条件指定。条件の指定方法については、フィルターの種類別の説明を参照してください。 データポイントがここで記載された条件に一致した場合、データポイントに |
change_to |
object |
フィルターの条件に合致したデータポイントは、ここに指定された変更が行われます。 |
フィルターのタイプ¶
フィルターのタイプと、それぞれで指定できる条件は以下のとおりです。
always¶
alwaysタイプのフィルターでは、データポイントの行先を条件にしてフィルタリングが行われます。
データポイントの行先が target.dest_ids
で列挙された行先のいずれかである場合、その行先は change_to
で指定されたものに変更されます。
条件指定( target
)では以下を指定します。
キー |
型 |
説明 |
---|---|---|
dest_ids |
[string] |
アップストリームの場合、行先ストリームのIDのリスト。 ダウンストリームの場合、行先デバイスコネクターのIDのリスト。 |
change_to
では、以下のように新しい行先を指定します。
キー |
型 |
説明 |
---|---|---|
dest_id |
string |
アップストリームの場合、行先ストリームのID。 ダウンストリームの場合、行先デバイスコネクターのID。 |
例:
id: example
enabled: true
type: always
target:
dest_ids:
- recoverable
change_to:
dest_id: deferred
この例では、行先が recoverable
であるデータポイントすべてについて、行先が deferred
に変更されます。
type¶
typeタイプのフィルターでは、データポイントの行先とデータ型を条件にしてフィルタリングが行われます。
データポイントの行先が target.dest_ids
で列挙された行先のいずれかであり、データ型が target.type
で指定されたものである場合、その行先は change_to
で指定されたものに変更されます。
条件指定( target
)では以下を指定します。
キー |
型 |
説明 |
---|---|---|
dest_ids |
[string] |
アップストリームの場合、行先ストリームのIDのリスト。 ダウンストリームの場合、行先デバイスコネクターのIDのリスト。 |
type |
string |
iSCP v2のデータ型名によるフィルター条件(正規表現) |
change_to
では、以下のように新しい行先を指定します。
キー |
型 |
説明 |
---|---|---|
dest_id |
string |
アップストリームの場合、行先ストリームのID。 ダウンストリームの場合、行先デバイスコネクターのID。 |
例:
id: example
enabled: true
type: type
target:
dest_ids:
- recoverable
type: h26.+
change_to:
dest_id: deferred
この例では、行先が recoverable
であるデータポイントのうち、データ型が h26.+
の正規表現にマッチするものについて、行先が deferred
に変更されます。
name¶
nameタイプのフィルターでは、データポイントの行先とデータ名称を条件にしてフィルタリングが行われます。
データポイントの行先が target.dest_ids
で列挙された行先のいずれかであり、データ名称が target.name
で指定されたものである場合、その行先は change_to
で指定されたものに変更されます。
条件指定( target
)では以下を指定します。
キー |
型 |
説明 |
---|---|---|
dest_ids |
[string] |
アップストリームの場合、行先ストリームのIDのリスト。 ダウンストリームの場合、行先デバイスコネクターのIDのリスト。 |
name |
string |
データ名称によるフィルター条件(正規表現) |
change_to
で行先を変更できます。
キー |
型 |
説明 |
---|---|---|
dest_id |
string |
アップストリームの場合、行先ストリームのID。 ダウンストリームの場合、行先デバイスコネクターのID。 |
例:
id: example
enabled: true
type: name
target:
dest_ids:
- recoverable
name: v1/.+
change_to:
dest_id: deferred
この例では、行先が recoverable
であるデータポイントのうち、データ名称が v1/.+
の正規表現にマッチするものについて、行先が deferred
に変更されます。
src-id¶
src-idタイプのフィルターでは、データポイントの行先と生成元(アップストリームではデバイスコネクター、ダウンストリームではストリーム)のIDを条件にしてフィルタリングが行われます。
データポイントの行先が target.dest_ids
で列挙された行先のいずれかであり、生成元が target.src_id
で指定されたものである場合、その行先は change_to
で指定されたものに変更されます。
条件指定( target
)では以下を指定します。
キー |
型 |
説明 |
---|---|---|
dest_ids |
[string] |
アップストリームの場合、行先ストリームのIDのリスト。 ダウンストリームの場合、行先デバイスコネクターのIDのリスト。 |
src_id |
string |
アップストリームの場合、生成元デバイスコネクターのID(正規表現)。 ダウンストリームの場合、生成元ストリームのID(正規表現)。 |
change_to
では、以下のように新しい行先を指定します。
キー |
型 |
説明 |
---|---|---|
dest_id |
string |
アップストリームの場合、行先ストリームのID。 ダウンストリームの場合、行先デバイスコネクターのID。 |
例:
id: example
enabled: true
type: src-id
target:
dest_ids:
- recoverable
src_id: dc?
change_to:
dest_id: deferred
この例では、行先が recoverable
であるデータポイントのうち、生成元のIDが dc?
の正規表現にマッチするものについて、行先が deferred
に変更されます。
rename¶
データポイントの行先が target.dest_ids
で列挙された行先のいずれかであり、データ型、データ名称、生成元のID(アップストリームではデバイスコネクターのID、ダウンストリームではストリームのID)が条件に一致した場合、そのデータポイントのデータ名称がリネームされます。
正規表現を空文字にした項目は、条件に一致するかどうかの評価対象にはなりません。
例えば、 target.type
と target.name
を指定し、 target.src_id
(生成元ID)を空文字にした場合、 target.type
と target.name
がマッチすれば、生成元IDに関係なく行先変更が行われます。
条件指定( target
)では以下を指定します。
キー |
型 |
説明 |
---|---|---|
dest_ids |
[string] |
アップストリームの場合、行先ストリームのIDのリスト。 ダウンストリームの場合、行先デバイスコネクターのIDのリスト。 |
type |
string |
iSCP v2のデータ型名によるフィルター条件(正規表現) |
name |
string |
データ名称によるフィルター条件(正規表現) |
src_id |
string |
生成元IDによるフィルター条件(正規表現) |
change_to
では、以下のように新しい行先とデータ名称を指定します。
キー |
型 |
説明 |
---|---|---|
dest_id |
string |
アップストリームの場合、行先ストリームのID。 ダウンストリームの場合、行先デバイスコネクターのID。 |
name |
string |
新しいデータ名称 |
例:
id: example
enabled: true
type: rename
target:
dest_ids:
- recoverable
name: "v1/2/.+"
type: ""
src_id: ""
change_to:
dest_id: deferred
name: "v1/10/aaa"
この例では、行先が recoverable
であるデータポイントのうち、データ名称が v1/2/.+
の正規表現にマッチするものについて、行先が deferred
に変更されます。また、データ名称が v1/10/aaa
に変更されます。
sampling¶
samplingタイプのフィルターでは、データポイントのサンプリングが行われます。
samplingタイプのフィルターでは、行先、データ型、データ名称、生成元(アップストリームではデバイスコネクター、ダウンストリームではストリーム)のIDを条件として設定します。
指定された行先( target.dest_ids
のうちいずれか)を持つデータポイントのうち、指定された正規表現すべてにマッチしたデータポイントがサンプリングの対象となります。サンプリング対象のうち、サンプリング間隔 interval_ms
内で最初の1つのデータポイントのみ、行先が change_to.dest_id
の値に変更されます。サンプリング間隔内で2つ目以降のデータポイントの行先は変更されません。
キー |
型 |
説明 |
---|---|---|
dest_ids |
[string] |
アップストリームの場合、行先ストリームのIDのリスト。 ダウンストリームの場合、行先デバイスコネクターのIDのリスト。 |
interval_ms |
integer |
サンプリング間隔(ミリ秒) |
type |
string |
iSCP v2のデータ型名によるフィルター条件(正規表現) |
name |
string |
データ名称によるフィルター条件(正規表現) |
src_id |
string |
生成元IDによるフィルター条件(正規表現) |
change_to
では、以下のように新しい行先を指定します。
キー |
型 |
説明 |
---|---|---|
dest_id |
string |
アップストリームの場合、行先ストリームのID。 ダウンストリームの場合、行先デバイスコネクターのID。 |
例:
id: example
enabled: true
type: sampling
target:
dest_ids:
- recoverable
name: "v1/1/abc"
type: ""
src_id: ""
interval_ms: 300
change_to:
dest_id: deferred
この例では、行先が recoverable
であり、かつデータ名称が正規表現 v1/1/abc
にマッチするデータポイントのうち、300ミリ秒に1つだけ、行先が deferred
に変更されます。
それ以外のデータポイントの行先は変更されません。
h264-essential-nal-units¶
h264-essential-nal-unitsタイプのフィルターは、h264_nal_unit型専用です。
h264-essential-nal-unitsタイプのフィルターでは、データポイントの行先と、ペイロードの内容によってフィルタリングが行われます。
データポイントの行先が target.dest_ids
で列挙された行先のいずれかであり、ペイロードがH.264動画の再生において重要なNALユニット(SPS、PPSまたはIDRピクチャー)である場合、行先が変更されます。
条件指定( target
)では以下を指定します。
キー |
型 |
説明 |
---|---|---|
dest_ids |
[string] |
アップストリームの場合、行先ストリームのIDのリスト。 ダウンストリームの場合、行先デバイスコネクターのIDのリスト。 |
change_to
では、以下のように新しい行先を指定します。
キー |
型 |
説明 |
---|---|---|
dest_id |
string |
アップストリームの場合、行先ストリームのID。 ダウンストリームの場合、行先デバイスコネクターのID。 |
注釈
H.264動画を送信する際に、適切に設定されたストリームとこのフィルターを組み合わせることで、Visual M2M Data Visualizerにおいてより少ない遅延でH.264動画を再生できます。 H.264 NAL Unitを使ってH.264データを送信する の使用例を参照してください。
例:
id: example
enabled: true
type: h264-essential-nal-units
target:
dest_ids:
- h264_nal_unit_extra_units
change_to:
dest_id: h264_nal_unit_key_units
この例では、行先が h264_nal_unit_extra_units
であるデータポイントのうち、再生表示に必須のNALユニットの行先が h264_nal_unit_key_units
に変更されます。