Gravio HubKit マニュアル

Gravio トリガーマニュアル

目次

1. トリガータブの概要

[Trigger]タブでは、センサーの値による条件で起動できるデバイストリガーとタイマーによる定期実行を行うタイマートリガーを設定します。

トリガーを作成する前に、デバイスタブに従ってデバイスを設定し、「アクションの手順」に従って少なくとも1つのアクションを設定してください。

2. デバイストリガー

2.1 デバイストリガーの作成

デバイスとアクションを設定し、デバイストリガーを作成します。

デバイストリガーを作成するには、右上の「+」記号をクリックします。

デバイストリガー作成ボタン

以下のダイアログが表示されます:

デバイストリガー追加ダイアログ

トリガー名で名前を入力して、登録したデバイスのエリアを選択してください。

2.2 トリガーの有効時間帯の設定

トリガー有効時間帯設定画面

2.3 トリガーの実行条件の設定

トリガー実行条件設定画面

条件タブではキーレイヤー/レイヤーとデバイスIDを選択します。センサーのタイプに応じて、ダイアログボックスの下部にさまざまなオプションが表示されます。

キーレイヤーに加えて複数(最大4つまで)のレイヤーの条件を入力する場合には、AndかOrを指定します。 - Andを指定して場合は「 キーレイヤーの条件 And (レイヤーの条件 And レイヤーの条件 And …)」となり、 - Orを指定して場合は 「キーレイヤーの条件 And (レイヤーの条件 Or レイヤーの条件 Or …)」となります。

キーレイヤーの条件は必ずAndとなります。

条件式のタイプ: - 数値の比較の条件式は 任意の値、 = 、 != 、 > 、 >= 、 < 、 <= 、 範囲 、 式 - 文字列の比較の条件式は 任意の値、 = 、 != 、 次を含む 、 次を含まない 、 次で始まる 、 次で始まらない 、 次で終わる 、 次で終わらない 、正規表現 、 式

式にはトリガー内で使用できる関数を使用することが出来ます。関数はこちらを参照してください。

キーレイヤーにさらに追加をしたレイヤーでは有効期限(ミリ秒)を指定することができます。キーレイヤーの条件を満たした場合で、レイヤーの条件を判断する受信データの有効期限となります。

レイヤー有効期限設定

2.4 アクションの設定

アクション設定画面

アクションタブでは実行するアクションを選択します。

アクションの実行には引数としてトリガープロパティーを複数(最大5つまで)指定することも出来ます。

トリガープロパティーはあらかじめ定義されている下記の3つと任意のプロパティ名を設定することも出来ます。

上記3つ以外に任意のプロパティー名と値を指定することで、その値もアクションないで参照することが出来ます。

設定例につきましてはこちらを参照してください。

2.5 トリガーの有効化

スイッチを緑色に切り替えることによって、新しいトリガーを有効にすることを忘れないでください。

2.6 設定例

トリガーの有効時間帯の設定

間隔の例

デバイストリガーは設定した条件に合致したデータが届いたときに動作しますが、間隔を指定することで前回の実行時刻よりこの間隔だけ経たないと次の実行が行われないように設定することができます。

: デバイスからデータが2秒に一度届くが、トリガーは10秒ごとに実行したい場合、間隔は 9000ms(10秒の10%ほど低い値)を指定します。

このように設定することで2秒毎の受信データは以下のようなタイミングでトリガーが実行されます:

# 受信データ 結果
1 データ1 ← トリガー実行
2 データ2 実行なし
3 データ3 実行なし
4 データ4 実行なし
5 データ5 実行なし
6 データ6 ← トリガー実行
7 データ7 実行なし
... ... ...
閾値の例

このパラメータは、常にデータを送信するセンサー(温度センサー、ドア・窓開閉センサー、ワイヤレススイッチなど)に対応するために導入されました。

例1: 温度センサー

閾値によるトリガーがオンで、トリガー条件が >20° に設定されている場合: - センサーが20°以上のデータを送信してトリガーが実行された後は、一度20°を下回り再度20°以上にならないと実行されません - 閾値によるトリガーがオフの場合は、センサーが20°以上のデータを送信するとトリガーは常に実行されます

センサーが 21°, 22°, 18°, 23° とデータを送信した場合:

受信データ 閾値トリガー ON 閾値トリガー OFF
21° トリガー実行 トリガー実行
22° 実行なし トリガー実行
18° 実行なし 実行なし
23° トリガー実行 トリガー実行

例2: ドア・窓開閉センサー

閾値によるトリガーがオンで、トリガー条件が =close に設定されている場合: - センサーが close のデータを送信してトリガーが実行された後は、一度 open にならないと実行されません - 閾値によるトリガーがオフの場合は、センサーが close データを送信するとトリガーは常に実行されます

センサーが close, close, open, close とデータを送信した場合:

受信データ 閾値トリガー ON 閾値トリガー OFF
close トリガー実行 トリガー実行
close 実行なし トリガー実行
open 実行なし 実行なし
close トリガー実行 トリガー実行

例3: ワイヤレススイッチ

閾値によるトリガーがオンで、トリガー条件が =click に設定されている場合: - センサーが click のデータを送信してトリガーが実行された後は、一度 click 以外のデータにならないと実行されません - 閾値によるトリガーがオフの場合は、センサーが click データを送信するとトリガーは常に実行されます

センサーが click, click, double click, click とデータを送信した場合:

受信データ 閾値トリガー ON 閾値トリガー OFF
click トリガー実行 トリガー実行
click 実行なし トリガー実行
double click 実行なし 実行なし
click トリガー実行 トリガー実行

トリガーの実行条件の設定

キーレイヤーの例

キーレイヤーとは、必ず指定するレイヤーの条件となります。トリガー条件を満たしアクションが実行されるのは、このキーレイヤーのデータを受信し、かつトリガー条件を満たしている場合となります。

例1: ドア・窓開閉センサー(キーレイヤーのみ)

条件: キーレイヤーにドア・窓開閉センサーの条件が close と設定されている場合

# 受信データ 結果
1 ドア・窓開閉センサー: open -
2 ドア・窓開閉センサー: close ← トリガー実行
3 ドア・窓開閉センサー: open -
4 ドア・窓開閉センサー: close ← トリガー実行

例2: ドア・窓開閉センサー + 温度センサー(閾値トリガー ON)

条件: - キーレイヤー: ドア・窓開閉センサー = close - レイヤー: 温度センサー ≥ 20°(閾値によるトリガーを利用する: ON)

# 受信データ 結果
1 ドア・窓開閉センサー: open -
2 ドア・窓開閉センサー: close 実行なし(温度条件未達成)
3 温度センサー: 20.0° -
4 ドア・窓開閉センサー: open -
5 温度センサー: 19.8° -
6 ドア・窓開閉センサー: close 実行なし(温度が閾値以下)
7 ドア・窓開閉センサー: open -
8 温度センサー: 20.1° -
9 ドア・窓開閉センサー: close ← トリガー実行
10 温度センサー: 20.2° -

重要: 2つのセンサーデータは設定された間隔時間内に受信される必要があります。

例3: ドア・窓開閉センサー + 温度センサー(閾値トリガー OFF)

条件: - キーレイヤー: ドア・窓開閉センサー = close - レイヤー: 温度センサー ≥ 20°(閾値によるトリガーを利用する: OFF)

# 受信データ 結果
1 ドア・窓開閉センサー: open -
2 ドア・窓開閉センサー: close 実行なし(温度条件未達成)
3 温度センサー: 20.0° -
4 ドア・窓開閉センサー: open -
5 温度センサー: 20.1° -
6 ドア・窓開閉センサー: close ← トリガー実行
7 ドア・窓開閉センサー: open -
8 温度センサー: 20.2° -
9 ドア・窓開閉センサー: close ← トリガー実行
10 温度センサー: 20.1° -

例4: 3つのセンサー(AND条件)

条件: - キーレイヤー: ドア・窓開閉センサー = close - レイヤー: 温度センサー ≥ 20° - レイヤー: 湿度センサー ≥ 30% - レイヤー間の条件: AND

# 受信データ 結果
1 ドア・窓開閉センサー: open -
2 ドア・窓開閉センサー: close 実行なし
3 温度センサー: 20.0° -
4 ドア・窓開閉センサー: open -
5 温度センサー: 20.1° -
6 ドア・窓開閉センサー: close 実行なし(湿度条件未達成)
7 ドア・窓開閉センサー: open -
8 湿度センサー: 35% -
9 ドア・窓開閉センサー: close ← トリガー実行(温度・湿度両方達成)
10 温度センサー: 20.1° -

例5: 3つのセンサー(OR条件)

条件: - キーレイヤー: ドア・窓開閉センサー = close - レイヤー: 温度センサー ≥ 20° - レイヤー: 湿度センサー ≥ 30% - レイヤー間の条件: OR

# 受信データ 結果
1 ドア・窓開閉センサー: open -
2 ドア・窓開閉センサー: close 実行なし
3 温度センサー: 20.0° -
4 ドア・窓開閉センサー: open -
5 温度センサー: 20.1° -
6 ドア・窓開閉センサー: close ← トリガー実行(温度条件達成)
7 ドア・窓開閉センサー: open -
8 湿度センサー: 35% -
9 ドア・窓開閉センサー: close ← トリガー実行(湿度条件達成)
10 温度センサー: 20.1° -
式の例

式を選択する場合は、その条件が true の場合にトリガーの実行条件が成立します。

例1: 温度が25度以上

tv.Data >= 25

例2: 温度が20度以上25度以下

tv.Data >= 20 && tv.Data <= 25

例3: IVAR顔認識でFR_UNKNOWNを受信

tv.Data.common.type == "FR_UNKNOWN"

例4: IVAR顔認識でマスクなしを検出

tv.Data.iod.mask == "NONE"

例5: MQTTからの任意データを条件にする

MQTTから {"aircon": "off"} のようなデータを受信した場合:

tv.Data.aircon == "off"

ヒント: 条件を組み合わせることも可能です。例えば、airconが"off"かつ温度が25度以上の場合にトリガーを実行できます。

例6: EnOcean電流センサーでJSONPathを使用

EnOcean EEP D2-32-02 電流センサーが以下のJSONを送信する場合:

{"Current1": 2.5, "Current2": 0, "Current3": 0}

Current3が2より大きい場合にトリガー:

JSONPath("$.Current3", tv.Data) > 2
JSONコンテンツに基づくトリガー

JSONペイロードに特定のコンテンツが含まれているかどうかを確認する場合は、Contains関数とJSONPathを組み合わせて使用できます。

例: class_nameに特定の値が含まれているかを確認

以下のJSON構造で class_name"gravio-chocolate" が含まれているかを確認する場合:

{
    "detection": {
        "fruit-zone": {
            "events": [
                {
                    "class_id": [7],
                    "class_name": ["gravio-chocolate"]
                }
            ]
        }
    }
}

方法1: Contains関数を使用

Contains(JSONPath("$..class_name[*]", tv.Data), "gravio-chocolate")

注意: この方法では重複マッチする可能性があります。

方法2: 直接プロパティアクセス(より正確)

tv.Data.detection["fruit-zone"].events[0].class_name[0] == "gravio-chocolate"

[]内の適切なインデックスを使用して、特定の要素を指定してください。

キーレイヤーと追加レイヤーの有効期限設定

例: CO2 + 人感センサーの組み合わせ

CO2が 1000ppm を超えた場合で、かつ人感センサーで人がいるときだけトリガーを実行したい場合:

設定内容: - キーレイヤー: CO2センサー > 1000ppm - レイヤー: 人感センサー = 反応あり

問題点: 人感センサーは人がいないときにはデータを送信しません。1時間前に人がいたがもういなくなった場合、直近の値(1時間前のデータ)で条件比較すると、まだ人がいると誤判定されてしまいます。

解決策: レイヤーの「有効期限」に 60000 ミリ秒(1分)を指定します。

有効期限の設定 動作
60000ms(1分) 直近1分以内に人感センサーが反応したときだけトリガー実行
0ms 有効期限なし、直近の値で条件判断(デフォルト)

これにより、人がいないときにはCO2が1000ppmを超えてもトリガーは実行されません。

3. タイマートリガー

3.1 タイマートリガーの作成

アクションを設定し、タイマートリガーを作成します。

タイマートリガーを作成するには、右上の「+」記号をクリックします。

タイマートリガー作成ボタン

以下のダイアログが表示されます:

タイマートリガー作成ダイアログ

タイマー名で名前を入力してください。

3.2 スケジュールの設定

スケジュール設定画面

繰り返し条件を選択します。 - インターバルは一定の分ごとの実行となります。 - 1時間ごとは指定の開始時刻(分、秒)ごとの実行となります。 - 毎日は指定の開始時刻(時、分、秒)ごとの実行となります。 - 週次は指定の開始時刻(時、分、秒)で指定の曜日ごとの実行となります。 - 月次は指定の開始時刻(時、分、秒)で指定の日ごとの実行となります。 - カスタムはcronの指定方法により詳細な実行設定が可能となります。

カスタム式は、5つのスペースで区切られたフィールドを使用して回数のセットを表します。

必須 許容される値 利用できる特殊文字
必須 0-59 * / , -
必須 0-59 * / , -
必須 0-23 * / , -
必須 1-31 * / , – ?
必須 1-12 or JAN-DEC * / , -
曜日 必須 0-6 or SUN-SAT * / , – ?

例 : 年に1回1月1日 0:00:00 "0 0 0 1 1 *"

3.3 アクションの設定

タイマートリガーアクション設定画面

アクションタブでは実行するアクションを選択します。

アクションの実行には引数としてトリガープロパティーを複数(最大5つまで)指定することも出来ます。

トリガープロパティーはあらかじめ定義されている下記の3つと任意のプロパティ名を設定することも出来ます。

上記3つ以外に任意のプロパティー名と値を指定することで、その値もアクションないで参照することが出来ます。

3.4 トリガーの有効化

スイッチを緑色に切り替えることによって、新しいトリガーを有効にすることを忘れないでください。

4. トリガー変数とトリガープロパティー

デバイス/タイマートリガーではアクションを実行するときに引数としてトリガープロパティーとトリガー変数を渡すことができます。

4.1 トリガー変数

トリガー変数は tv. の変数で、センサーデータの受信によりイベントで駆動されたトリガーで tv. としてアクションに渡されます。

tv.Data : 受信したデータが設定されます。

4.2 トリガープロパティー

トリガープロパティー tp. はトリガー設定のダイアログで定義可能で、同一アクションを呼び出してもtp. の値による条件分岐を使用することで動作を変えることができます。

トリガープロパティーはあらかじめ定義されている下記の3つと任意のプロパティ名を設定することも出来ます。