トレイトの登録
Thing はそれぞれに独自の機能を備えています。モバイルアプリで Thing とやりとりするには、対象となる Thing の機能を正しく把握する必要があります。たとえば Thing を遠隔操作するためにどのようなデータを送信したらよいかや、Thing の現在の状態を表すデータがどのような形式でアップロードされるかなどの情報がないと、正しくモバイルアプリを実装できません。
Thing Interaction Framework では、Thing の機能を「トレイト」と呼ばれる情報で管理します。
本ページでは、トレイトの概要を説明します。実装方法や利用方法の詳細は Thing 機能の登録 をご覧ください
アクションとステート
Thing Interaction Framework では、Thing の機能を「アクション」と「ステート」によって定義します。
- アクション: Thing が実行可能な内容
- ステート: Thing が取り扱うデータ。たとえば Thing の状態を表す値など
たとえば、一般的なエアコンは、次のようなアクションとステートをサポートしていると考えられます。
- 「電源のオン/オフ」や「設定温度の変更」などのアクション
- 「現在の室内温度」や「現在の室内湿度」などのステート
トレイトの内容
トレイトには、Thing がサポートするアクションとステートを定義します。
具体的には、以下の情報をトレイトに定義します。
- Thing がサポートするアクションの一覧と、各アクションの期待値の一覧
- Thing がサポートするステートの一覧と、各ステートの期待値の一覧
- ステート履歴の保存設定
たとえば「センサーをリセットする」、「電源をオンオフする」というアクションと「現在の水位レベル」というステートをサポートする水位センサーを管理するケースを考えます。
この場合、次のようなトレイトを Thing Interaction Framework に登録します。
このトレイトにより、水位センサーが resetSensor
と turnPower
というアクションと、level
というステートをサポートすることがわかります。さらに、アクション resetSensor
と turnPower
がブール値を期待していることと、ステート level
の期待値が0以上の数値であり、このステートの履歴が 15 分間隔でグループ化されて保存されることがわかります。
Thing よりステートが登録されると、この値がトレイトで定義された期待値に合致するか検証されます。また、ステートの履歴がここで設定したグループ化間隔で保存されます。詳細は ステートの登録と取得 をご覧ください。
また Thing に対してコマンドが送信された場合は、このコマンド内のアクションについて、その値がトレイトで定義された期待値に合致するか検証されます。詳細は アクションとコマンドの実行 をご覧ください。
トレイトのステータス
トレイトには未確定、確定、公開の 3 つのステータスがあります。
ステータス | アプリケーション管理者によるトレイトの編集 | トレイトの状態 |
---|---|---|
未確定 | 可 | 非公開 |
確定 | 不可 | 非公開 |
公開 | 不可 | 公開 |
ステータス:未確定
アプリケーション管理者が新しいトレイトを登録した直後のステータスは「未確定」です。
アプリケーション管理者は、この状態のトレイトを編集できます。また、この状態のトレイトは非公開状態のため、アプリケーション管理者のみが参照できます。
ステータス:確定
トレイトの編集が完了したら、アプリケーション管理者はステータスを「確定」に設定します。
確定状態になったトレイトは、アプリケーション管理者であっても編集できなくなります。一方で、確定状態になったトレイトに対して新しいバージョンが登録可能となります。詳しくは トレイトのバージョン をご覧ください。
トレイトを確定状態にしても、非公開状態は維持されます。確定状態のトレイトを参照できるのはアプリケーション管理者のみです。
ステータス:公開
トレイトを公開する準備ができたら、アプリケーション管理者はステータスを「公開」に設定します。公開に設定できるトレイトは、ステータスが「確定」のもののみです。「未確定」のトレイトは公開できません。
公開状態になったトレイトは、このトレイトの URI を知っている人間であれば誰でも参照可能になります。たとえば、デバイスの製造元は、自社のデバイス向けにトレイトを定義した後、これを公開してトレイトの URI をサードパーティー開発者に開示できます。サードパーティー開発者は、開示された URI を使ってトレイトの内容を参照しながら、このデバイスとやりとりするモバイルアプリを開発できます。
トレイトのバージョン
ステータスが確定状態になったトレイトに対して、新しいバージョンの定義が登録できます。
あるトレイトの複数バージョンを登録することにより、Thing の新モデルには新しいバージョンのトレイトを、古いモデルには古いバージョンのトレイトを適用するなどの運用が可能です。
内容の継承
トレイトのバージョンには継承の概念があります。
- 新しいバージョンのトレイトには、以前のバージョンで定義したすべてのアクションを含む必要があります。なお、不要なアクションは、新しいバージョンの定義内でフラグを立てることで無効化できます。
- 新しいバージョンのトレイトは、以前のバージョンで指定したステート履歴の保存設定を引き継ぎます。新しいバージョンでグループ化間隔を変更することはできません。