大佬教程收集整理的这篇文章主要介绍了如何在多渠道设备的 Google Smart Home Local Fulfillment 中处理 IDENTIFY 请求?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试在我的 Google 智能家居操作中实施本地配送。
我的一些设备有 2 个通道(双继电器开关)。
双通道设备在 Google Home 应用中显示为两个独立的设备(light-test123123_0
和 light-test123123_1
),并且工作正常。
我已将 customData
和 otherDevicesIDs
添加到我的 SYNC 响应中以启用本地履行并使用 @Google/local-home-sdk
构建本地应用程序。 Google Home 识别单通道设备并在本地发送命令。
SYNC 响应正文示例:
{
"response": {
"payload": {
"devices": [
{
"Traits": [
"action.devices.Traits.OnOff","action.devices.Traits.brightness"
],"customData": {
"path": "/local-fulfil/0/","port": 3000
},"name": {
"name": "light","nicknames": [
"light"
],"defaultnames": [
"light"
]
},"ID": "light-test123123_0","type": "action.devices.types.liGHT","deviceInfo": {
"hwVersion": "liGHT","model": "liGHT","swVersion": "1.0","manufacturer": "MANUFATURER"
},"attributes": {},"willReportState": false,"otherdevicEIDs": [
{
"devicEID": "light-test123123_0"
},{
"devicEID": "light-test123123"
}
]
},{
"name": {
"nicknames": [
"light"
],"defaultnames": [
"light"
],"name": "light"
},"deviceInfo": {
"swVersion": "1.0","hwVersion": "liGHT","manufacturer": "MANUFATURER","model": "liGHT"
},"otherdevicEIDs": [
{
"devicEID": "light-test123123_1"
},{
"devicEID": "light-test123123"
}
],"Traits": [
"action.devices.Traits.OnOff","ID": "light-test123123_1","customData": {
"port": 3000,"path": "/local-fulfil/1/"
},"type": "action.devices.types.liGHT"
}
],"agentUserID": "RuRHipwpD5W23iGiU81A5PoTKqB2"
},"requestID": "16772679358918515269"
}
}
当我启动本地 SDK 实现时出现问题,因为即使我的双通道设备发送 2 个不同的 UDP 数据包,具有上述不同的 ID。谷歌忽略了其中之一。看起来不可能有 2 台设备具有相同的 IP 地址。
这是 IDENTIFY 请求正文:
{
"requestID": "88DB84992F074FF0B408D8383CF198C4","inputs": [
{
"intent": "action.devices.IDENTIFY","payload": {
"device": {
"udpScanData": {
"data": "6C696768742D6475616C2D3132335F30"
}
},"structureData": {}
}
}
],"devices": [
{
"ID": "light-dual-123_0","customData": {
"path": "/local-fulfil/0/","port": 3000
}
},{
"ID": "light-dual-123_1","customData": {
"path": "/local-fulfil/1/","port": 3000
}
}
]
}
和回复:
{
"intent": "action.devices.IDENTIFY","requestID": "88DB84992F074FF0B408D8383CF198C4","payload": {
"device": {
"ID": "","verificationID": "light-test123123_0"
}
}
}
我编写了一个发送 UDP 广播并输出下一个数据的基本应用程序:
sent broadcast packet
192.168.1.235:8888 sent this: light-test123123_0
192.168.1.235:8888 sent this: light-test123123_1
这显示了我的设备在收到广播数据包时的行为。
有没有办法解决这个问题?
Local Fulfillment 平台目前(从 Local Home SDK 1.4 开始)通过设备的网络地址唯一标识设备,因此它无法处理来自同一物理连接设备的多个广播响应。
然而,您可以让一台设备充当多个终端设备的代理,这是通过以下方式完成的:
isProxy
响应中返回将 IDENTIFY
标志设置为 true:
https://developers.google.com/assistant/smarthome/develop/local#hub-identify
REACHABLE_DEVICES
意图以返回所有终端设备 verificationId
:
https://developers.google.com/assistant/smarthome/develop/local#hub-identify
Local Home SDK sample 包含一个可以在此配置中运行的虚拟设备: https://github.com/actions-on-google/smart-home-local#set-up-the-virtual-device
以上是大佬教程为你收集整理的如何在多渠道设备的 Google Smart Home Local Fulfillment 中处理 IDENTIFY 请求?全部内容,希望文章能够帮你解决如何在多渠道设备的 Google Smart Home Local Fulfillment 中处理 IDENTIFY 请求?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。