スキーマの定義

モバイルアプリから 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
}