トリガーの実行条件
トリガーには、実行条件と、条件が満たされた場合に実行するコマンドまたは Server Code を登録します。
トリガー定義の predicate
フィールドには、このトリガーを実行する条件を指定します。以下の 3 種類の実行条件が指定可能です。
- 時間条件(単発)
- 時間条件(繰り返し)
- ステート条件
時間条件(単発)
指定した時間にトリガーを一度だけ実行する条件です。
単発の時間条件を指定する場合は eventSource
サブフィールドに SCHEDULE_ONCE
を設定します。
トリガーを実行する時間は scheduleAt
サブフィールドに指定します。指定は UNIX 時間(ミリ秒、UTC)で行ってください。
時間条件(繰り返し)
指定した時間にトリガーを繰り返し実行する条件です。
繰り返しの時間条件を指定する場合は eventSource
サブフィールドに SCHEDULE
を設定します。
トリガーを実行する時間は schedule
サブフィールドに cron 形式で指定します。
ステート条件
Thing のステートの最新フィールド値に基づいてトリガーの実行を判断する条件です。
ステート条件を指定する場合は eventSource
サブフィールドに STATES
を設定します。
ステート条件は、以下の 2 つの条件により定義されます(詳細は こちら をご覧ください)
なお、ステートが入れ子(ネスト)構造の JSON データの場合は、トップレベルのフィールドのみが比較条件として指定可能です。
比較条件
比較条件は condition
サブフィールドに指定します。
比較条件の指定方法は以下のとおりです。
等号:フィールド値が指定値と等しい場合に真となります。指定可能な値は文字列、整数、ブール値です。
"condition": { "type": "eq", "field": "...", "value": ... }
不等号:フィールド値が指定値と等しくない場合に真となります。指定可能な値は文字列、整数、ブール値です。
"condition": { "type": "not", "clause": { "type": "eq", "field": "...", "value" ... } }
なお type
not
は、typeeq
のみを受け付けます。これ以外の条件(例:range
)は利用できません。より小さい/以下:フィールド値が指定値より小さい/指定値以下の場合に真となります。指定可能な値は整数および浮動小数点です。
"condition": { "type": "range", "field": "...", "upperLimit": ..., "upperIncluded": false }
upperIncluded
フィールドを false にすると「より小さい」になります。フィールドを true にする(または指定しない)と「以下」になります。より大きい/以上:フィールド値が指定値より大きい/指定値以上の場合に真となります。指定可能な値は整数および浮動小数点です。
"condition": { "type": "range", "field": "...", "lowerLimit": ..., "lowerIncluded": false }
lowerIncluded
フィールドを false にすると「より大きい」になります。フィールドを true にする(または指定しない)と「以上」になります。And:複数の条件を AND 論理演算子で結合します。すべての条件が真の場合に真となります。
"condition": { "type": "and", "clauses": [ {"type": "...", ...}, {"type": "...", ...}, ... ] }
Or:複数の条件を OR 論理演算子で結合します。いずれか 1 つの条件が真の場合に真となります。
"condition": { "type": "or", "clauses": [ {"type": "...", ...}, {"type": "...", ...}, ... ] }
実行条件
実行条件は triggersWhen
サブフィールドに指定します。
値 | 説明 |
---|---|
"CONDITION_TRUE" | 比較条件が true のときにトリガーを実行。 |
"CONDITION_FALSE_TO_TRUE" | 前回の比較条件が false で、今回が true のときにトリガーを実行。 |
"CONDITION_CHANGED" | 前回と比較条件が変化しているときにトリガーを実行。 |
「比較条件が false の時に実行」または「前回の比較条件が true で、今回が false のときに実行」を指定したい場合は、比較条件全体が逆の論理になるように調整してください。
CONDITION_TRUE
を使用する場合、ステートの登録ごとにコマンドが実行される可能性を考慮してください。たとえば、「室温 30 度以上」の条件を CONDITION_TRUE
で指定したときに 30 度以上の室温が続くと、ステートが更新されるたびに、毎回コマンドが実行されます。