トリガーが登録されると、登録済みのトリガーについて以下の管理機能を利用できます。
いずれも、Thing-IF SDK の初期化 に示す方法によって、初期登録済みの ThingIFAPI
インスタンス(api
)を入手しておく必要があります。
トリガーの削除
トリガーを削除するサンプルコードを以下に示します。
-
-
トリガーを削除するには、トリガー ID を取得する必要があります。トリガー ID は、Trigger
クラスの triggerID
プロパティで取得できます。
トリガーのインスタンス trigger
は、登録時や 一覧取得機能 によって取得できます。
削除に成功するとトリガー ID が返されます。
トリガーの有効化と無効化
サーバーに登録したトリガーを有効化または無効化することができます。無効化したトリガーは、実行の対象外となります。
状態を切り替えるサンプルコードを以下に示します。
-
-
ここでは、enableTrigger
の引数を false に設定しているため、指定されたトリガーが無効化されます。有効化するには、true を指定します。
トリガーを有効化または無効化するには、トリガー ID を取得する必要があります。トリガー ID は、Trigger
の triggerID
プロパティで取得できます。
トリガーのインスタンス trigger
は、登録時や 一覧取得機能 によって取得できます。
トリガーの取得
トリガーを取得できます。
以下にサンプルコードを示します。
-
-
トリガーの取得に成功すると、引数 trigger
に取得されたトリガーが返されます。
トリガーを取得するには、トリガー ID を取得する必要があります。トリガー ID は、triggerID
プロパティで取得できます。
トリガーのインスタンス trigger
は、登録時や 一覧取得機能 によっても取得できます。
トリガーの更新
登録済みのトリガーで実行する処理や実行条件を更新できます。
以下に 詳細情報を指定したトリガーの登録例 で登録したトリガーを更新するサンプルコードを示します。
ここでは、「温度計デバイスが 30 度以上になったとき、エアコンの電源を入れる」トリガーの実行条件を、「温度計デバイスが 28 度以上になったとき」に変更し、それに合わせてトリガーの説明も変更します。
-
-
トリガーを更新するには、更新するトリガーを取得し、トリガーを構成する TriggerCommandObject
(コマンド)、StatePredicate
(実行条件)、およびトリガーの詳細情報を更新してから、それらを引数にして patchCommandTrigger
を実行します。更新前のトリガーの内容を複製して変更する箇所のみを上書きすることによって、新しいコマンドやトリガーの詳細情報を作成します。
ここでは、次の処理を行っています。
更新するトリガーを triggerOrg
に取得します。Trigger のインスタンスは、登録時や 一覧取得機能 によって取得できます。
TriggerCommandObject
でトリガー更新用のコマンドを作成します。この例では元のコマンドの内容を変更せずにインスタンスを生成し、トリガーを更新しています。変更する場合は、コンストラクタへのパラメーターの一部を目的の値に修正します。パラメーターの指定方法については、詳細情報を指定したトリガーの登録例 を参照してください。
新しい実行条件を StatePredicate
として作成します。実行条件の指定方法については、トリガーの実行条件 を参照してください。
PatchCommandTriggerRequest
でトリガーの詳細情報を指定します。作成の際、triggerOrg
に格納されているトリガーの詳細情報を取得し、第 3 引数以降のパラメーターに指定して新しい値を設定しています。ここでは、説明のみを変更します。
PatchCommandTriggerRequest
を patchCommandTrigger
メソッドに指定して、ThingIFAPI のインスタンス api
(温度計デバイス)のトリガーを更新します。
トリガーの更新に成功すると、updatedTrigger
に更新されたトリガーが返されます。
patchCommandTrigger
メソッドでは、TriggerCommandObject
、StatePredicate
の単位でトリガーの設定値を更新することができます。null を指定した場合、その要素は更新されません。上のサンプルコードでは、TriggerCommandObject
を更新しないため、PatchCommandTriggerRequest
の第 1 引数に null を設定しても同じ結果になります。トリガーの詳細情報(タイトル、詳細な説明文、JSON 形式で表現された任意のメタ情報)の各フィールドは設定した値のみが更新されます。設定しなかった値は更新されません。
TriggerCommandObject
の targetID
に null を指定すると、トリガーの登録されている Thing がコマンドを実行する Thing として設定されます。この例のように、更新前のトリガーで、トリガーの登録先 Thing(温度計デバイス)と異なる Thing(エアコン)でコマンドを実行するように指定していた場合は注意してください。
Server Code を実行するトリガーの Server Code を更新する場合は、新しいエンドポイントの情報を ServerCode
として作成し、patchServerCodeTrigger
メソッドを実行します。指定方法については、Server Code を実行するトリガー および JSDoc を参照してください。
トリガー一覧の取得
サーバーに登録されているトリガーを全件取得できます。
登録されているトリガーが多数ある場合は、ページネーションを利用します。たとえば、トリガーが 30 件登録されている場合、10 件をページとして、10 件ずつ 3 回に分けて取得することができます。
以下にサンプルコードを示します。
-
-
listTriggers
メソッドによってサーバーに登録されたトリガーを一覧取得しています。このメソッドは Promise にも対応していますが、全件取得するには再帰によるループ構造を作成する必要があるため、コールバック関数によるサンプルコードとしています。Promise によってループを実現する方法は、KiiObject の検索 の実装例などを参考にしてください。
listTriggers
メソッドでは、ListQueryOptions
の第 2 引数によって、現在のページの状態を表します。初めにページネーションキーの指定なしで listTriggers
メソッドを呼び出すと先頭ページが取得できます。listTriggers
メソッドのコールバックでトリガー一覧を取得した際、results.pagenationKey
によって次のページネーションキーが返されます。これを次のページネーションキーとして指定すると、前回の続きのコマンドを取得できます。最終的に全件取得されると、コールバックの results.pagenationKey
は undefined として通知されます。
ListQueryOptions
の第 1 引数は 1 回に取得するトリガーの件数です。指定しないか null を指定すると、サーバー側での自動設定になります。ページのサイズは Best Effort のため、値を指定しても、一度に指定件数分を取得できないことがあります。取得できなかったトリガーは、次のページで取得できます。
コールバックの triggers
に取得できたトリガーの一覧が入っています。トリガー中のコマンドや条件を取得することができます。