[英]google smart home trait-Fanspeed- speed_synonym doesn't work
我尝试使用 codelab 中的示例代码和修改后的设备类型进行练习。 当我尝试将风扇设备添加到 google 智能家居应用程序时,我收到了错误响应。
例如:(问:设置风扇速度低)(回应:OK,descreasing风扇转速speedslow)
app.onSync(async (body, headers) => {
console.log('onSync');
return {
requestId: body.requestId,
payload: {
agentUserId: agentId,
devices: [{
id: 'fan',
type: 'action.devices.types.FAN',
traits: [
'action.devices.traits.OnOff',
'action.devices.traits.FanSpeed',
//'action.devices.traits.Mode',
],
name: {
name: 'Fan',
},
deviceInfo: {
manufacturer: 'AAA',
model: 'BBB-Fan1',
hwVersion: '1.0',
swVersion: '1.0.1',
},
willReportState: true,
attributes: {
availableFanSpeeds: {
speeds: [{
speed_name: 'Low',
speed_values: [{
speed_synonym: ['speedslow','speedlow','speedsmall','slow','low','small','minimum'],
lang: 'en'
}]
},{
speed_name: 'Medium',
speed_values: [{
speed_synonym: ['medium','speed medium'],
lang: 'en'
}]
},{
speed_name: 'High',
speed_values: [{
speed_synonym: ['speed fast','speed high','speed big','fast','high','big','maximum'],
lang: 'en'
}]
}],
ordered: true
},
reversible: true,
Q1: 'speedslow' 是我在 speed_name 'Low' 下面的 speed_synonym。 我认为它需要响应“好的,将风扇速度降低到低”之类的答案。对吗?
Q2:在traits页面中,它不支持中文。 我发现我可以使用一些中文词来控制设备行为,例如通过谷歌助手应用程序以中文显示“打开风扇”。 但是我也发现我不能用一些中文词,比如“设置风扇速度为低”来改变我的设备状态。所以好像不支持中文吧?
关于您的问题,我认为您不会收到错误响应。 availableFanSpeeds
工作方式是为每种模式创建一个key
,并为适合该模式的每种语言创建一组synonyms
。 因此, speed_name
"Low" 旨在在您支持的每种语言中普遍使用。 这意味着平台不一定在任何地方都使用“低”键。
在法语中,它会说:
好的,diminution de la vitesse du ventilateur à low
这对法国用户来说听起来很奇怪。 因此,使用了“同义词”字段,该字段被设计为在每种语言中表示相同事物的单词数组。 使用同义词数组的第一个元素可用于创建更好的本地化输出。
该文档不显示对中文的支持,但即使支持,您也需要创建第二个数组来显示该语言中特定风扇速度的同义词。 平台不会为您翻译这些密钥,应为每种语言提供它们。 这允许您提供可能是诸如“low”之类的常见词以及任何特定于设备的名称(例如可能无法翻译的“Not Fast™ mode”)的值。
您必须修改数组以添加新的语言代码。 下面我添加法语的同义词。
speeds: [{
speed_name: 'Low',
speed_values: [{
speed_synonym: ['speedslow','speedlow','speedsmall','slow','low','small','minimum'],
lang: 'en'
}, {
speed_synonym: ['faible', 'petite', 'petit'],
lang: 'fr'
}]
},
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.