スキーマの定義
モバイルアプリから Thing を操作する際、あらかじめスキーマを設計しておく必要があります。
ここでは、スキーマ、アクション、アクションリザルト、ステートの概念があることを前提に説明します。概要については スキーマ をご覧ください。
スキーマ
iOS では、アクションやステートを扱うに当たって、アクションの名前やその詳細なパラメータ、ステートの各フィールドの情報などをスキーマとして定義します。Android では、スキーマをクラスの形で明示し、API に設定して利用しますが、現バージョンの iOS SDK では設計情報として利用します。
スキーマ に示すように、Thing 側の実装やバージョンアップ時の考慮など、スキーマはフレームワーク全体で共有される概念です。iOS ではスキーマを明確に定義しなくても実装できますが、フレームワーク全体の実装のためにはスキーマを定義し、それに基づいた実装を行うのが理想です。
ここでは、スキーマの例として、簡単なエアコンを定義します。以下に示すように、アクションとステートを定義し、これら全体に対してスキーマ名とスキーマバージョンを定めます。
アクションの例
このエアコンでは 3 つのアクションを同時に指定できるものとします。それぞれ、スキーマとして以下のような情報を定義します。
TurnPower アクション: 電源を入れるかどうかの boolean 値(true で電源を入れる)
アクション名:
turnPower
パラメータの例:
{ "power" : true }
SetPresetTemperature アクション: 設定温度(15~30 の数値)
アクション名:
setPresetTemperature
パラメータの例:
{ "presetTemperature" : 25 }
SetFanSpeed アクション: ファンの強さ(0~10 の数値)
アクション名:
setFanSpeed
パラメータの例:
{ "fanSpeed" : 5 }
ステートの例
ステートとして、これら 3 つの設定値に加え、現在の温度と湿度を参照できるものとします。以下にステートの例を示します。
{
"power" : true,
"presetTemperature" : 25,
"fanspeed" : 5,
"currentTemperature" : 28,
"currentHumidity" : 65
}