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

action.devices.traits.FanSpeed - このトレイトは、ファンの速度を低、中、高などに設定できるデバイス(つまり、空調や暖房装置など、空気の流量を変更できるデバイス)に使用します。

デバイスの属性

属性 定義
availableFanSpeeds
  • speeds 速度名、speed_values サブ配列、言語 ID を含む配列。たとえば、言語コードが en の場合、speed_name の S4 は speed_synonym の highest と maximum に対応します。
    • speed_name 文字列。モードの内部名。コマンドとステータスで使用されます。これはすべての言語に共通で、ユーザーにとってわかりにくい可能性があります。
    • speed_values 名前とサポートされる言語から構成されます。
  • ordered ブール値。true の場合、speeds 配列の順番(増加)に対して増減ロジックの文法が適用されます。
reversibleブール値。true の場合、このデバイスは両方向の送風に対応し、ファンの向きを逆にするコマンドを受け入れることができます。
次に例を示します。
{
  "availableFanSpeeds": {
    "speeds": [{
      "speed_name": "S1",
      "speed_values": [{
        "speed_synonym": ["low", "speed 1", ... ],
        "lang": "en" } , … ]
      },
      {
      "speed_name": "S2",
      "speed_values": [{
        "speed_synonym": ["high", "speed 2", ... ],
         "lang": "en" } , … ]
      }, ...
      ],
    "ordered": true
    }
  "reversible": true
}

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.FAN',
        traits: [
          'action.devices.traits.FanSpeed'
        ],
        name: {
          defaultNames: ['Sirius Cybernetics Corporation 33321'],
          name: 'Fan',
          nicknames: ['wall fan']
        },
        willReportState: false,
        attributes: {
          availableFanSpeeds: {
            speeds: [{
              speed_name: 'Low',
              speed_values: [{
                speed_synonym: ['low', 'slow'],
                lang: 'en'
              }, {
                speed_synonym: ['niedrig', 'schleppend'],
                lang: 'de'
              }]
            }, {
              speed_name: 'High',
              speed_values: [{
                speed_synonym: ['high'],
                lang: 'en'
              }, {
                speed_synonym: ['hoch'],
                lang: 'de'
              }]
            }],
            ordered: true
          },
          reversible: true
        },
        deviceInfo: {
          manufacturer: 'Sirius Cybernetics Corporation',
          model: '233451',
          hwVersion: '3.2',
          swVersion: '11.4'
        },
        customData: {
          fooValue: 74,
          barValue: true,
          bazValue: 'lambtwirl'
        }
      }]
    }
  };
});

// ...

exports.smarthome = functions.https.onRequest(app);
JSONレスポンス
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "agentUserId": "1836.15267389",
    "devices": [
      {
        "id": "123",
        "type": "action.devices.types.FAN",
        "traits": [
          "action.devices.traits.FanSpeed"
        ],
        "name": {
          "defaultNames": [
            "Sirius Cybernetics Corporation 33321"
          ],
          "name": "Fan",
          "nicknames": [
            "wall fan"
          ]
        },
        "willReportState": false,
        "attributes": {
          "availableFanSpeeds": {
            "speeds": [
              {
                "speed_name": "Low",
                "speed_values": [
                  {
                    "speed_synonym": [
                      "low",
                      "slow"
                    ],
                    "lang": "en"
                  },
                  {
                    "speed_synonym": [
                      "niedrig",
                      "schleppend"
                    ],
                    "lang": "de"
                  }
                ]
              },
              {
                "speed_name": "High",
                "speed_values": [
                  {
                    "speed_synonym": [
                      "high"
                    ],
                    "lang": "en"
                  },
                  {
                    "speed_synonym": [
                      "hoch"
                    ],
                    "lang": "de"
                  }
                ]
              }
            ],
            "ordered": true
          },
          "reversible": true
        },
        "deviceInfo": {
          "manufacturer": "Sirius Cybernetics Corporation",
          "model": "233451",
          "hwVersion": "3.2",
          "swVersion": "11.4"
        },
        "customData": {
          "fooValue": 74,
          "barValue": true,
          "bazValue": "lambtwirl"
        }
      }
    ]
  }
}
検証ツール

デバイスのステータス

ステータス 定義
currentFanSpeedSetting 文字列。必須。action.devices.traits.FanSpeed トレイトを持つデバイスの現在の速度設定の名前を表します(例: S2)。

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,
          currentFanSpeedSetting: 'S2'
        },
        456: {
          on: true,
          online: true,
          currentFanSpeedSetting: 'S1'
        }
      }
    }
  };
});

// ...

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

デバイスのコマンド

コマンド パラメータ / 定義
action.devices.commands.SetFanSpeed fanSpeed リクエストされたファンの速度名を表す文字列(例: S2)。
action.devices.commands.Reverse ファンの方向を逆にします。

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

ファンを低にして。
リクエスト
{
  "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.SetFanSpeed",
          "params": {
            "fanSpeed": "S1"
          }
        }]
      }]
    }
  }]
}
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: {
          currentFanSpeedSetting: 'S1'
        }
      }]
    }
  };
});

// ...

exports.smarthome = functions.https.onRequest(app);
JSONレスポンス
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [
      {
        "ids": [
          "123"
        ],
        "status": "SUCCESS",
        "states": {
          "currentFanSpeedSetting": "S1"
        }
      }
    ]
  }
}
寝室のファンを最強にして。
リクエスト
{
  "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.SetFanSpeed",
          "params": {
            "fanSpeed": "S2"
          }
        }]
      }]
    }
  }]
}
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: {
          currentFanSpeedSetting: 'S2'
        }
      }]
    }
  };
});

// ...

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