トリガーによる自動実行

トリガーを使うと、事前に実行条件を指定してコマンドや Server Code を自動実行できます。

サポートされる実行条件とアクションの組み合わせは以下のとおりです。

コマンド Server Code
時間条件(単発) -
時間条件(繰り返し) -
ステート条件

トリガーの実行条件

トリガーを実行する条件には、以下の 3 つを指定できます。

時間条件(単発)

指定した時間にトリガーを一度だけ実行する条件です。

時間条件(繰り返し)

指定した時間にトリガーを繰り返し実行する条件です。

ステート条件

Thing のステートの最新フィールド値に基づいてトリガーの実行を判断する条件です。以下の 2 つにより設定できます。

  • 比較条件

    ステートの最新のフィールド値との比較条件を指定します。フィールド値が指定された値と等しい場合、大きい場合、小さい場合、範囲に入っている場合などのほか、それらの条件の And や Or なども指定できます。

    たとえば、ステートに「現在の室温」がある場合、「現在の室温が 30 度以上」というような条件を指定できます。

  • 実行条件

    比較条件がどのような状態の時にトリガーを実行するかを以下のいずれかで指定します。

    • 比較条件が TRUE のときに実行
    • 前回は比較条件が FALSE で、今回は TRUE のときに実行
    • 前回と比較条件が変化しているときに実行

    たとえば、「室温が 30 度以上の場合にエアコンのスイッチを入れる」には「FALSE から TRUE になったとき」の条件が適切です。「条件が TRUE」を指定して 室温が 30 度以上の状態が続くと、ステートの登録ごとに電源オンのコマンドが実行されてしまいます。

    「比較条件が FALSE の時に実行」または「前回が比較条件が TRUE で、今回が FALSE のときに実行」を指定したい場合は、比較条件全体が逆の論理になるように調整してください(Equals(Clause, false) でも実現できます)。

トリガーの実行

実行条件が満たされると、トリガーに設定されたコマンドまたは Server Code が実行されます。

ただし、トリガーの処理はベストエフォート型であるため、多くのトリガーが同時に起動されると設定した時刻に処理が開始されない可能性があります。

コマンドの実行

トリガーによってコマンドが実行される場合、実行されるコマンドのインスタンスは、トリガーに設定されたコマンドを雛形として新規に作成される点にご注意ください。

コマンドのインスタンスにはコマンド ID が付与されており、コマンドが実行されるごとに別の ID が割り当てられます。トリガーの実行条件が複数回満たされ、複数回のコマンドが実行された場合、それらは別のコマンドとして発行されます。モバイルアプリの API でコマンドの一覧を取得したときは、トリガーの実行回数分だけコマンドが取得されます。

コマンドが実行されると、そのコマンドリザルトは、生成されたコマンド ID ごとに Thing Interaction Framework に登録されます。トリガーを登録したユーザーは、コマンドを直接実行する場合と同様に、プッシュ通知でコマンド ID を受信します。

トリガーに設定する雛形のほうのコマンドには、アクションのパラメータをすべて含んだ形で設定します。実行時に生成されるコマンドは、これらのパラメータがすべてコピーされて実行されます。

時間条件によるコマンドの実行フロー

指定した日時にコマンドを自動実行できます。コマンドの実行結果は、コマンドの一覧機能やコマンドリザルトの参照機能によって、モバイルアプリから参照することもできます。

1. モバイルアプリよりトリガーを登録

モバイルアプリは、トリガーを Thing Interaction Framework に登録します。トリガーには実行時間と、実行時間になったときに使用するコマンドが記述されています。

トリガーは複数件登録できます。

2. コマンドの自動発行

実行時間になると、Thing に対して コマンド を自動的に実行します。なお、この際トレイトに基づくコマンドの検証が行われます。

コマンドが実行されるごとに、通常のコマンドの実行時と同様に、コマンドリザルトが Thing Interaction Framework 上に蓄積されていきます。モバイルアプリから登録されている実行済みコマンドの一覧を取得して、それらのコマンドリザルトを参照することもできます。

ステート条件によるコマンドの実行フロー

ステートの状態によってコマンドを自動実行できます。コマンドの実行結果は、コマンドの一覧機能やコマンドリザルトの参照機能によって、モバイルアプリから参照することもできます。

1. モバイルアプリよりトリガーを登録

モバイルアプリは、トリガーを Thing Interaction Framework に登録します。トリガーには実行条件と、条件が満たされたときに使用するコマンドが記述されています。

トリガーは複数件登録できます。

2. Thing からのステートの登録

Thing からは ステートの登録 機能によって、定期的に Thing のセンサー値などがアップロードされます。

3. ステートの検証と比較

アップロードされたステートに対して、トレイトに基づく検証が行われます。さらに、サーバーに登録されているすべてのトリガーの条件との一致状況をチェックします。

4. コマンドの自動発行

条件を満たすトリガーが見つかった場合は、Thing に対して コマンド を自動的に実行します。なお、この際トレイトに基づくコマンドの検証が行われます。

ステートを登録する Thing と、コマンドの送信先の Thing は同じであっても、異なっていても構いません。例えば、温度計デバイスとエアコンが別の Thing として管理されているとき、「温度計デバイスが一定の温度以上になったとき、エアコンの電源を入れる」というようなトリガーを登録することもできます。ただし、ステートの取得元とコマンドの送信先は、同じオーナーであることが必要です。

Server Code の実行

トリガーによって Server Code が実行する場合、トリガーには以下のパラメータを設定できます。

  • エンドポイント名とパラメータ

    エンドポイント名とエンドポイントへの引数を設定します。これによって、Server Code の JavaScript 関数が呼び出されます。

  • 実行者のアクセストークン

    トリガーを設定する際には、実行者のアクセストークンを設定します。Server Code では呼び出し元のアクセストークンを使って実行する機能があり、ここで指定されたアクセストークンを使用します。

    Server Code は Thing のアクセストークンでの実行を想定していないため、通常はオーナーユーザーのアクセストークンを使用するか、Server Code 側で管理者のアクセストークンを使用します。

  • 実行対象の AppID

    トリガーが設定された Kii Cloud アプリケーションとは別のアプリケーションにある Server Code を呼び出すことができます。この場合は実行対象の AppID を指定します。

ステート条件による Server Code の実行フロー

Server Code とトリガーを設定しておくと、ステートの状態によって Server Code を自動実行できます。さらに、Server Code の実行結果(エラーの有無やエンドポイントからの戻り値)をモバイルアプリから参照することもできます。

操作の前に、実行対象となる Server Code をあらかじめ設置しておきます。Server Code の機能や設定方法については サーバー機能拡張 をご覧ください。

1. モバイルアプリよりトリガーを登録

モバイルアプリは、トリガーを Thing Interaction Framework に登録します。トリガーには実行条件と、条件が満たされたときに使用する Server Code の実行条件(エンドポイント名や引数値)が記述されています。

トリガーは複数件登録できます。

2. Thing からのステートの登録

Thing からは ステートの登録 機能によって、定期的に Thing のセンサー値などがアップロードされます。

3. ステートの検証と比較

アップロードされたステートに対して、トレイトに基づく検証が行われます。さらに、サーバーに登録されているすべてのトリガーの条件との一致状況をチェックします。

4. Server Code の自動実行

条件を満たすトリガーが見つかった場合は、Server Code を呼び出します。

Server Code の実行後、エラーの有無や、Server Code からの戻り値が Thing Interaction Framework 内に格納されます。

5. Server Code の実行結果の取得

必要に応じて、モバイルアプリから Server Code の実行結果を取得できます。トリガーの条件が一致するごとに Server Code が呼び出されるため、実行結果は複数件取得できます。

トリガーの管理

モバイルアプリからは、トリガー関連の管理機能として、以下のような機能を実行できます。

  • トリガーの登録
  • トリガーの削除
  • トリガーの有効化(実行の対象とする)
  • トリガーの無効化(実行の対象外とする)
  • トリガーの更新
  • トリガーの取得
  • 登録されているトリガーの一覧取得