フィルター#
Terminal System 2 v1.0.0
フィルターとは#
Terminal Systemでは、intdash Edge Agent 2を流れるデータポイントに対して、フィルターを適用することができます。 フィルターを使用すると、以下のことができます。
アップストリーム方向の場合: デバイスコネクターから取得したデータポイントのうち、指定された条件に一致するデータポイントを選び出し、指定されたアップストリーム、または、遅延アップロードの処理に渡す。
ダウンストリーム方向の場合: サーバーから取得したデータポイントのうち、指定された条件に一致するデータポイントを選び出し、指定されたデバイスコネクターに渡す。
さまざまな条件を指定するために、条件の指定方法が異なるいくつかのフィルタータイプが用意されています。 例えば、nameタイプのフィルターでは、条件としてデータ名称を指定します。この場合、流れてきたデータポイントのデータ名称が指定されたものと一致すると、フィルターの定義に従って処理されることになります。
使用できるフィルターのタイプは以下のとおりです。条件の設定方法については各フィルタータイプの説明を参照してください。:
注釈
フィルターは、上記のタイプのみを使用できます。ユーザーが独自のフィルタータイプを開発することはできません。 既存のフィルタータイプでは不足がある場合は、同様の仕組みをデバイスコネクターにおいて開発することで対応できます。
複数のフィルターを設定して多段階の条件を設定することもできます。複数のフィルターを設定した場合、設定ファイルに書かれた順にフィルターが適用されます。
また、一定時間ごとに最初の1つのデータポイントを選択するフィルター(samplingタイプのフィルター)を設定することで、サンプリングを実行することができます。
注釈
ここで説明するフィルターは、intdash Edge Agent 2内を流れるデータに対して適用されるものです。 サーバーからダウンストリームする対象を指定するための「ダウンストリームフィルター」とは別の機能です。 ダウンストリームフィルターについては、 agent.downstreams を参照してください。
注釈
フィルターの設定は、実際にはTerminal Systemに含まれるintdash Edge Agent 2の設定です。設定項目は intdash Edge Agent 2 のものと同じです。
フィルターの設定を作成/変更する#
重要
以下の手順ではMenderのConfigurationタブを使用するため、MenderにConfigureアドオンが必要です。 Configureアドオンを導入していない場合、Mender経由ではなく、ローカルネットワーク内からREST APIを使って設定してください。
Mender Web UIで、画面左の[DEVICES]をクリックし、リストの中から設定したいデバイスをクリックします。
[Configuration]タブを開き、[EDIT]をクリックします。
アップストリーム方向のフィルターは
agent.filters_upstream
で設定します。ダウンストリーム方向のフィルターは
agent.filters_downstream
で設定します。例:アップストリーム方向のフィルターを作成する
[ { "id": "string_to_deferred", "enabled": true, "type": "type", "target": { "dest_ids": [ "default-upstream" ], "type": "string" }, "change_to": { "dest_id": "deferred" } } ]
このフィルターは、アップストリーム
default-upstream
に送信するデータポイントのうちstring
データ型のデータポイントを遅延アップロードで送信します。注釈
新しいフィルターを作成する場合はフィルター設定のすべてのキーを、既存のフィルターを変更する場合はIDと変更したいキーの設定を与えます。
キー
型
説明
id
string
フィルター設定を識別する任意のID
enabled
bool
フィルターの有効(true)/無効(false)
type
string
各フィルタータイプの説明を参照してください。
target
object
フィルターのタイプに応じた対象データポイントの条件指定。条件の指定方法については、フィルターの種類別の説明を参照してください。
データポイントがここで記載された条件に一致した場合、データポイントに
change_to
で指定された変更が行われます。change_to
object
フィルターの条件に合致したデータポイントは、ここに指定された変更が行われます。
[SAVE AND APPLY TO DEVICE]をクリックし、デバイスに設定情報を送信します。
設定更新日時が新しくなっていることを確認します。
重要
ステータスがPendingのまま更新されない場合は、 トラブルシューティング を参照してください。
always#
alwaysタイプのフィルターでは、データポイントの行先を条件にしてフィルタリングが行われます。
データポイントの行先が target.dest_ids
で列挙された行先のいずれかである場合、その行先は change_to
で指定されたものに変更されます。
条件指定( target
)では以下を指定します。
キー |
型 |
説明 |
---|---|---|
dest_ids |
[string] |
アップストリームの場合、行先ストリームのIDのリスト。 ダウンストリームの場合、行先デバイスコネクターのIDのリスト。 |
change_to
では、以下のように新しい行先を指定します。
キー |
型 |
説明 |
---|---|---|
dest_id |
string |
アップストリームの場合、行先ストリームのID。 ダウンストリームの場合、行先デバイスコネクターのID。 |
例:
[
{
"id": "always_to_deferred",
"enabled": true,
"type": "always",
"target": {
"dest_ids": [
"default-upstream"
]
},
"change_to": {
"dest_id": "deferred"
}
}
]
この例では、行先が default-upstream
であるデータポイントすべてについて、行先が deferred
に変更されます。
type#
typeタイプのフィルターでは、データポイントの行先とデータ型を条件にしてフィルタリングが行われます。
データポイントの行先が target.dest_ids
で列挙された行先のいずれかであり、データ型が target.data_type
で指定されたものである場合、その行先は change_to
で指定されたものに変更されます。
条件指定( target
)では以下を指定します。
キー |
型 |
説明 |
---|---|---|
dest_ids |
[string] |
アップストリームの場合、行先ストリームのIDのリスト。 ダウンストリームの場合、行先デバイスコネクターのIDのリスト。 |
type |
string |
データ型によるフィルター条件(正規表現) データ型の詳細については intdash Edge Agent 2 デベロッパーガイド を参照してください。 |
change_to
では、以下のように新しい行先を指定します。
キー |
型 |
説明 |
---|---|---|
dest_id |
string |
アップストリームの場合、行先ストリームのID。 ダウンストリームの場合、行先デバイスコネクターのID。 |
例:
[
{
"id": "type_h26x_to_deferred",
"enabled": true,
"type": "type",
"target": {
"dest_ids": [
"default-upstream"
],
"type": "h26.+"
},
"change_to": {
"dest_id": "deferred"
}
}
]
この例では、行先が default-upstream
であるデータポイントのうち、データ型が h26.+
の正規表現にマッチするものについて、行先が deferred
に変更されます。
name#
nameタイプのフィルターでは、データポイントの行先とデータ名称を条件にしてフィルタリングが行われます。
データポイントの行先が target.dest_ids
で列挙された行先のいずれかであり、データ名称が target.name
で指定されたものである場合、その行先は change_to
で指定されたものに変更されます。
条件指定( target
)では以下を指定します。
キー |
型 |
説明 |
---|---|---|
dest_ids |
[string] |
アップストリームの場合、行先ストリームのIDのリスト。 ダウンストリームの場合、行先デバイスコネクターのIDのリスト。 |
name |
string |
データ名称によるフィルター条件(正規表現) データ名称の詳細については intdash Edge Agent 2 デベロッパーガイド を参照してください。 |
change_to
で行先を変更できます。
キー |
型 |
説明 |
---|---|---|
dest_id |
string |
アップストリームの場合、行先ストリームのID。 ダウンストリームの場合、行先デバイスコネクターのID。 |
例:
[
{
"id": "name_v1_to_deferred",
"enabled": true,
"type": "name",
"target": {
"dest_ids": [
"default-upstream"
],
"name": "v1/.+"
},
"change_to": {
"dest_id": "deferred"
}
}
]
この例では、行先が default-upstream
であるデータポイントのうち、データ名称が 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": "src-id_dc_to_deferred",
"enabled": true,
"type": "src-id",
"target": {
"dest_ids": [
"default-upstream"
],
"src_id": "dc?"
},
"change_to": {
"dest_id": "deferred"
}
}
]
この例では、行先が default-upstream
であるデータポイントのうち、生成元の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 |
データ型によるフィルター条件(正規表現) |
name |
string |
データ名称によるフィルター条件(正規表現) |
src_id |
string |
生成元IDによるフィルター条件(正規表現) |
change_to
では、以下のように新しい行先とデータ名称を指定します。
キー |
型 |
説明 |
---|---|---|
dest_id |
string |
アップストリームの場合、行先ストリームのID。 ダウンストリームの場合、行先デバイスコネクターのID。 |
name |
string |
新しいデータ名称 |
例:
[
{
"id": "rename_v1_2_and_changed_to_deferred",
"enabled": true,
"type": "rename",
"target": {
"dest_ids": [
"default-upstream"
],
"name": "v1/2/.+",
"type": "",
"src_id": ""
},
"change_to": {
"dest_id": "deferred",
"name": "v1/10/aaa"
}
}
]
この例では、行先が default-upstream
であるデータポイントのうち、データ名称が 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 |
データ型によるフィルター条件(正規表現) |
name |
string |
データ名称によるフィルター条件(正規表現) |
src_id |
string |
生成元IDによるフィルター条件(正規表現) |
change_to
では、以下のように新しい行先を指定します。
キー |
型 |
説明 |
---|---|---|
dest_id |
string |
アップストリームの場合、行先ストリームのID。 ダウンストリームの場合、行先デバイスコネクターのID。 |
例:
[
{
"id": "sampling_abc",
"enabled": true,
"type": "sampling",
"target": {
"dest_ids": [
"deferred"
],
"name": "v1/1/abc",
"type": "",
"src_id": "",
"interval_ms": 300
},
"change_to": {
"dest_id": "default-upstream"
}
}
]
この例では、行先が deferred
であり、かつデータ名称が正規表現 v1/1/abc
にマッチするデータポイントのうち、300ミリ秒に1つだけ、行先が default-upstream
に変更されます。
それ以外のデータポイントの行先は変更されません。
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動画を再生できます。 intdash Edge Agent 2 デベロッパーガイド の使用例を参照してください。
例:
[
{
"id": "h264_nal_unit_key_filter",
"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
に変更されます。