トレイトの登録

Thing はそれぞれに独自の機能を備えています。モバイルアプリで Thing とやりとりするには、対象となる Thing の機能を正しく把握する必要があります。たとえば Thing を遠隔操作するためにどのようなデータを送信したらよいかや、Thing の現在の状態を表すデータがどのような形式でアップロードされるかなどの情報がないと、正しくモバイルアプリを実装できません。

Thing Interaction Framework では、Thing の機能を「トレイト」と呼ばれる情報で管理します。

本ページでは、トレイトの概要を説明します。実装方法や利用方法の詳細は Thing 機能の登録 をご覧ください

アクションとステート

Thing Interaction Framework では、Thing の機能を「アクション」と「ステート」によって定義します。

  • アクション: Thing が実行可能な内容
  • ステート: Thing が取り扱うデータ。たとえば Thing の状態を表す値など

たとえば、一般的なエアコンは、次のようなアクションとステートをサポートしていると考えられます。

  • 「電源のオン/オフ」や「設定温度の変更」などのアクション
  • 「現在の室内温度」や「現在の室内湿度」などのステート

トレイトの内容

トレイトには、Thing がサポートするアクションとステートを定義します。

具体的には、以下の情報をトレイトに定義します。

  • Thing がサポートするアクションの一覧と、各アクションの期待値の一覧
  • Thing がサポートするステートの一覧と、各ステートの期待値の一覧
  • ステート履歴の保存設定

たとえば「センサーをリセットする」、「電源をオンオフする」というアクションと「現在の水位レベル」というステートをサポートする水位センサーを管理するケースを考えます。

この場合、次のようなトレイトを Thing Interaction Framework に登録します。

このトレイトにより、水位センサーが resetSensorturnPower というアクションと、level というステートをサポートすることがわかります。さらに、アクション resetSensorturnPower がブール値を期待していることと、ステート level の期待値が0以上の数値であり、このステートの履歴が 15 分間隔でグループ化されて保存されることがわかります。

Thing よりステートが登録されると、この値がトレイトで定義された期待値に合致するか検証されます。また、ステートの履歴がここで設定したグループ化間隔で保存されます。詳細は ステートの登録と取得 をご覧ください。

また Thing に対してコマンドが送信された場合は、このコマンド内のアクションについて、その値がトレイトで定義された期待値に合致するか検証されます。詳細は アクションとコマンドの実行 をご覧ください。

トレイトのステータス

トレイトには未確定、確定、公開の 3 つのステータスがあります。

ステータス アプリケーション管理者によるトレイトの編集 トレイトの状態
未確定 非公開
確定 不可 非公開
公開 不可 公開

ステータス:未確定

アプリケーション管理者が新しいトレイトを登録した直後のステータスは「未確定」です。

アプリケーション管理者は、この状態のトレイトを編集できます。また、この状態のトレイトは非公開状態のため、アプリケーション管理者のみが参照できます。

ステータス:確定

トレイトの編集が完了したら、アプリケーション管理者はステータスを「確定」に設定します。

確定状態になったトレイトは、アプリケーション管理者であっても編集できなくなります。一方で、確定状態になったトレイトに対して新しいバージョンが登録可能となります。詳しくは トレイトのバージョン をご覧ください。

トレイトを確定状態にしても、非公開状態は維持されます。確定状態のトレイトを参照できるのはアプリケーション管理者のみです。

ステータス:公開

トレイトを公開する準備ができたら、アプリケーション管理者はステータスを「公開」に設定します。公開に設定できるトレイトは、ステータスが「確定」のもののみです。「未確定」のトレイトは公開できません。

公開状態になったトレイトは、このトレイトの URI を知っている人間であれば誰でも参照可能になります。たとえば、デバイスの製造元は、自社のデバイス向けにトレイトを定義した後、これを公開してトレイトの URI をサードパーティー開発者に開示できます。サードパーティー開発者は、開示された URI を使ってトレイトの内容を参照しながら、このデバイスとやりとりするモバイルアプリを開発できます。

トレイトのバージョン

ステータスが確定状態になったトレイトに対して、新しいバージョンの定義が登録できます。

あるトレイトの複数バージョンを登録することにより、Thing の新モデルには新しいバージョンのトレイトを、古いモデルには古いバージョンのトレイトを適用するなどの運用が可能です。

内容の継承

トレイトのバージョンには継承の概念があります。

  • 新しいバージョンのトレイトには、以前のバージョンで定義したすべてのアクションを含む必要があります。なお、不要なアクションは、新しいバージョンの定義内でフラグを立てることで無効化できます。
  • 新しいバージョンのトレイトは、以前のバージョンで指定したステート履歴の保存設定を引き継ぎます。新しいバージョンでグループ化間隔を変更することはできません。