トリガーの実行条件

トリガーには、実行条件と、条件が満たされた場合に実行するコマンドまたは 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 は、type eq のみを受け付けます。これ以外の条件(例: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 度以上の室温が続くと、ステートが更新されるたびに、毎回コマンドが実行されます。