スマートホーム TemperatureControl トレイトのスキーマ

action.devices.traits.TemperatureControl - デバイス内または周辺の温度調節を行うデバイス(サーモスタットは除く)に使用するトレイト。オーブンや冷蔵庫などのデバイスが該当します。サーモスタット制御専用の TemperatureSetting トレイトとは異なります。

デバイスの属性

属性 定義
temperatureRange 温度範囲を定義します。
  • minThresholdCelsius 浮動小数点。範囲の最低温度(摂氏)。
  • maxThresholdCelsius 浮動小数点。範囲の最高温度(摂氏)。
temperatureStepCelsius浮動小数点。省略可。相対温度の刻みを指定します。たとえば、オーブンで 5 度、ケトルでは 1 度です。
temperatureUnitForUX有効な値は "C" または "F" です。この単位はユーザーへの応答で使用されます。
queryOnlyTemperatureControlブール値。省略可。デバイスが、ステータス情報の問い合わせができるだけで、制御はできないかどうかを示します。温度のみを通知できるセンサーは、この属性を true に設定する必要があります。この属性が true の場合、temperatureRange 属性は省略可能です。
次に例を示します。
{
  "temperatureRange": {
    "minThresholdCelsius": 65.5,
    "maxThresholdCelsius": 288
  },
  "temperatureStepCelsius": 2.778,
  "temperatureUnitForUX": "F"
}

SYNC リクエストとレスポンスの例

リクエスト
{
    "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
    "inputs": [{
      "intent": "action.devices.SYNC"
    }]
}
Node.jsレスポンス
'use strict';

const {smarthome} = require('actions-on-google');
const functions = require('firebase-functions');

const app = smarthome();

app.onSync((body, headers) => {
  return {
    requestId: body.requestId,
    payload: {
      agentUserId: '1836.15267389',
      devices: [{
        id: '123',
        type: 'action.devices.types.KETTLE',
        traits: [
          'action.devices.traits.OnOff',
          'action.devices.traits.TemperatureControl'
        ],
        name: {
          defaultNames: ['Smart Kettle 1'],
          name: 'Smart Kettle 1',
          nicknames: ['Little teapot']
        },
        willReportState: false,
        attributes: {
          temperatureRange: {
            minThresholdCelsius: 30,
            maxThresholdCelsius: 100
          },
          temperatureStepCelsius: 1,
          temperatureUnitForUX: 'C'
        },
        deviceInfo: {
          manufacturer: 'Smart Home Provider',
          model: 'g1340',
          swVersion: '1.0.31',
          hwVersion: '1.1'
        },
        customData: {
          smartHomeProviderId: 'fiGgZ0vrhFRgwf5XJkna2GRwO8z80J'
        }
      }]
    }
  };
});

// ...

exports.smarthome = functions.https.onRequest(app);
JSONレスポンス
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "agentUserId": "1836.15267389",
    "devices": [
      {
        "id": "123",
        "type": "action.devices.types.KETTLE",
        "traits": [
          "action.devices.traits.OnOff",
          "action.devices.traits.TemperatureControl"
        ],
        "name": {
          "defaultNames": [
            "Smart Kettle 1"
          ],
          "name": "Smart Kettle 1",
          "nicknames": [
            "Little teapot"
          ]
        },
        "willReportState": false,
        "attributes": {
          "temperatureRange": {
            "minThresholdCelsius": 30,
            "maxThresholdCelsius": 100
          },
          "temperatureStepCelsius": 1,
          "temperatureUnitForUX": "C"
        },
        "deviceInfo": {
          "manufacturer": "Smart Home Provider",
          "model": "g1340",
          "swVersion": "1.0.31",
          "hwVersion": "1.1"
        },
        "customData": {
          "smartHomeProviderId": "fiGgZ0vrhFRgwf5XJkna2GRwO8z80J"
        }
      }
    ]
  }
}
検証ツール

デバイスのステータス

ステータス 定義
temperatureSetpointCelsius 浮動小数点。必須。現在の設定温度(摂氏)。
temperatureAmbientCelsius 浮動小数点。省略可。現在の気温(摂氏)。

QUERY リクエストとレスポンスの例

「オーブンの設定温度は?」
リクエスト
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "inputs": [{
    "intent": 'action.devices.QUERY',
    "payload": {
      "devices": [{
        "id": "123",
        "customData": {
          "fooValue": 74,
          "barValue": true,
          "bazValue": "foo"
        }
      }]
    }
  }]
}
Node.jsレスポンス
'use strict';

const {smarthome} = require('actions-on-google');
const functions = require('firebase-functions');

const app = smarthome();

app.onQuery((body, headers) => {
  return {
    requestId: body.requestId,
    payload: {
      devices: {
        123: {
          on: true,
          online: true,
          temperatureSetpointCelsius: 177,
          temperatureAmbientCelsius: 150
        }
      }
    }
  };
});

// ...

exports.smarthome = functions.https.onRequest(app);
JSONレスポンス
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "devices": {
      "123": {
        "on": true,
        "online": true,
        "temperatureSetpointCelsius": 177,
        "temperatureAmbientCelsius": 150
      }
    }
  }
}

デバイスのコマンド

コマンド パラメータ / 定義
action.devices.commands.SetTemperature temperature 浮動小数点。設定する温度(摂氏)。

EXECUTE リクエストとレスポンスの例

「オーブンを 350 度に設定して」
リクエスト
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "inputs": [{
    "intent": "action.devices.EXECUTE",
    "payload": {
      "commands": [{
        "devices": [{
          "id": "123",
          "customData": {
            "fooValue": 74,
            "barValue": true,
            "bazValue": "lambtwirl"
          }
        }],
        "execution": [{
          "command": "action.devices.commands.SetTemperature",
          "params": {
            "temperature": 176.67
          }
        }]
      }]
    }
  }]
}
Node.jsレスポンス
'use strict';

const {smarthome} = require('actions-on-google');
const functions = require('firebase-functions');

const app = smarthome();

app.onExecute((body, headers) => {
  return {
    requestId: body.requestId,
    payload: {
      commands: [{
        ids: ['123'],
        status: 'SUCCESS',
        states: {
          temperatureSetpointCelsius: 177,
          temperatureAmbientCelsius: 140
        }
      }]
    }
  };
});

// ...

exports.smarthome = functions.https.onRequest(app);
JSONレスポンス
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [
      {
        "ids": [
          "123"
        ],
        "status": "SUCCESS",
        "states": {
          "temperatureSetpointCelsius": 177,
          "temperatureAmbientCelsius": 140
        }
      }
    ]
  }
}