查看原文
其他

利用切换选项和模式扩展您的智能家居操作

Google 谷歌开发者 2019-02-15

文 / Nick Felker


呈现在 Home Graph 中的结构、房间和设备


如果您为 “Google 助理” 构建过智能家居操作,可能熟悉各种特征,而这些特征会定义您的设备可能具备的一系列功能。您的设备或许能够开启和关闭、更改颜色或具有不同的速度。与此同时,您的设备可能拥有更多高级功能,而这些功能无法由某一项特征定义。


要将这些功能与 “Google 助理” 整合,您需要着眼于使用模式或切换选项特征。这些特征均由键值对定义,因此非常相似。



模式

模式特征是可以分配给众多设置之一的设备参数。模式设置可以有序,也可以无序。例如,洗衣机可以有小、中或大这三种容量,它们之前存在某种递增顺序。烤箱可能拥有无序设置,例如烘、烤或炙烤。


每种模式在给定时间内只能有一种设置,并且始终应该将模式分配给其中一种设置。


在同步响应中,您可以返回受支持模式的列表和适用于给定模式的设置。要查看可用模式,请查阅(https://developers.google.com/actions/reference/smarthome/traits/modes),其中展示了相关键值和同义词。


在下方示例中,洗衣机拥有 称为容量的单一模式,但也可以将其称为大小或容量大小。此模式可以有小或大这两种设置。要更改设置,您只需说出 “将洗衣机上的容量设为小 (Set the load to small on the washing machine)” 即可。您可以在下方查看完整响应:

{
 "requestId": "ff36a3cc-ec34–11e6-b1a0–64510650abcf",
 "payload": {
   "agentUserId": "1836.15267389",
   "devices": [{
     "id": "123",
     "type": "action.devices.types.WASHER",
     "traits": [
       "action.devices.traits.Modes"
     ],
     "name": {
       "defaultNames": ["Felker Corp Washer"],
       "name": "Washer",
       "nicknames": ["clothes washer"]
     },
     "willReportState": true,
     "attributes": {
       "availableModes": [{
         "name": "load",
         "name_values": [{
           "name_synonym": ["load", "size", "load size"],
           "lang": "en"
         }, {
           "name_synonym": ["laden"],
           "lang": "de"
         }],
         "settings": [{
           "setting_name": "small",
           "setting_values": [{
             "setting_synonym": ["small", "half"],
             "lang": "en"
           }, {
             "setting_synonym": ["gering"],
             "lang": "de"
           }]
         }, {
           "setting_name": "large",
           "setting_values": [{
             "setting_synonym": ["large", "full"],
             "lang": "en"
           }, {
             "setting_synonym": ["auf groß"],
             "lang": "de"
           }]
         }],
         "ordered": true
       }]
     },
     "deviceInfo": {
       "manufacturer": "Felker Corp",
       "model": "233451",
       "hwVersion": "3.2",
       "swVersion": "11.4"
     }
   }]
 }
}



切换选项

切换选项与模式类似,区别在于模式拥有多个字符串值中的一个,而切换选项会有布尔值。如果您的设备有许多可以开启或关闭的设置(例如夜间模式或静音模式),这可能会很有用。


每个切换选项均应视为独立于其他切换选项。例如,夜间模式不应该受到静音模式的影响,反之亦然。每个切换选项都必须为开启或关闭,而不能处于某种中间状态。


与模式一样,所有受支持的切换选项都会在您的同步响应中返回。此参考页面 展示了所有受支持切换选项的名称(https://developers.google.com/actions/reference/smarthome/traits/toggles)


在下面的示例中,摄像头有两个切换选项。第一个名为 “夜间”。第二个名为 “录像”, 但也可以称为 “监控”。要开启其中一个切换选项,您只需说出 “打开前置摄像头上的录像功能 (Turn on recording for the front camera)” 即可。您可以在下方查看完整响应:

{
 "requestId": "ff36a3cc-ec34–11e6-b1a0–64510650abcf",
 "payload": {
   "agentUserId": "1836.15267389",
   "devices": [{
     "id": "123",
     "type": "action.devices.types.CAMERA",
     "traits": [
       "action.devices.traits.Toggles"
     ],
     "name": {
       "defaultNames": ["Felker Corp Camera"],
       "name": "front camera",
       "nicknames": ["camera"]
     },
     "willReportState": false,
     "attributes": {
       "availableToggles": [{
         "name": "Night",
         "name_values": [{
           "name_synonym": ["night"],
           "lang": "en"
         }, {
           "name_synonym": ["おやすみ"],
           "lang": "ja"
         }]
       }, {
         "name": "recording",
         "name_values": [{
           "name_synonym": ["recording", "monitoring"],
           "lang": "en"
         }, {
           "name_synonym": ["サイレント"],
           "lang": "ja"
         }]
       }]
     },
     "deviceInfo": {
       "manufacturer": "Felker Corp",
       "model": "233451",
       "hwVersion": "3.2",
       "swVersion": "11.4"
     }
   }]
 }
}


在开发操作的过程中,您可能会发现结合使用模式和切换选项会很有帮助。如此一来,用户可以获得通过 “Google 助理” 控制设备所需的灵活性。



处理 “执行” 意图

当用户说出 “将洗衣机上的容量设为小 (Set the load to small on the washing machine)” 或 “打开摄像头上的录像功能 (Turn on recording on the camera)” 时,您的服务器会收到带有已修改模式设置或 updateModeSettings 或 updateToggleSettings 对象中所列切换选项的 “执行” 意图,如下所示:

{
 "requestId": "ff36a3cc-ec34–11e6-b1a0–64510650abcf",
 "inputs": [{
   "intent": "action.devices.EXECUTE",
   "payload": {
     "commands": [{
      "devices": [{
        "id": "123",
      }],
      "execution": [{
       "command": "action.devices.commands.SetModes",
       "params": {
         "updateModeSettings": {
           "load": "small"
         }
       }
      }]
    }]
   }
 }]
}

{
 "requestId": "ff36a3cc-ec34–11e6-b1a0–64510650abcf",
 "inputs": [{
   "intent": "action.devices.EXECUTE",
   "payload": {
     "commands": [{
       "devices": [{
         "id": "123",
       }],
       "execution": [{
         "command": "action.devices.commands.SetToggles",
         "params": {
           "updateToggleSettings": {
             "recording": true
           }
         }
       }]
     }]
   }
 }]
}



新的模式和切换选项

模式和切换选项参考文档完整列出您可以使用的功能名称。如要在列表中添加新项目,您可以在 GitHub 示例项目中提交功能请求。在问题描述中加入模式、模式设置或切换选项。一旦 Google 批准了您的请求,相关功能就会在几天之后添加到列表中,以便您快速迭代。



了解详情

这两个特征可以为开发者提供许多灵活性,方便他们通过 “Google 助理” 控制其设备。如需详细了解这些特征以及有关智能家居的其他所有内容,您可以前往 “智能家居 Codelab”,或访问我们的开发文档。


您在构建哪些类型的智能家居操作?欢迎把您的项目发布到 www.tendorflowers.cn,与社区一起分享吧。



更多 AI 相关阅读:



    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存