问题描述
我正在尝试为恒温器制作一个应用程序,它具有一些自定义模式,用户可以将这些模式设置为他们在家、睡着时的基础,......恒温器在没有自定义模式的情况下工作,所以我可以获取和设置温度。但是,当我添加模式时,它失败了,我找不到原因,json 对我来说似乎没问题(在 java 中作为 SyncResponse.Payload
发送)。
{
"payload": {
"agentUserId": "qba-001-3464","devices": [
{
"traits": [
"action.devices.traits.TemperatureSetting","action.devices.traits.Modes"
],"willReportState": true,"name": {
"defaultNames": [
"qba-001-3464"
],"name": "qba-001-3464","nicknames": [
"ENGIE Boxx"
]
},"attributes": {
"availableThermostatModes": [
"off","heat","cool","on"
],"thermostatTemperatureRange": {
"maxThresholdCelsius": 30,"minThresholdCelsius": 6
},"availableModes": [
{
"ordered": false,"settings": [
{
"settingValues": [
{
"lang": "en","settingSynonym": [
"comfort"
]
},{
"lang": "nl",{
"lang": "fr","settingSynonym": [
"confort"
]
}
],"settingName": "comfort"
},{
"settingValues": [
{
"lang": "en","settingSynonym": [
"home"
]
},"settingSynonym": [
"thuis"
]
},"settingSynonym": [
"maison"
]
}
],"settingName": "home"
},"settingSynonym": [
"sleep"
]
},"settingSynonym": [
"slapen"
]
},"settingSynonym": [
"nuit"
]
}
],"settingName": "sleep"
},"settingSynonym": [
"away"
]
},"settingSynonym": [
"weg"
]
},"settingSynonym": [
"parti"
]
}
],"settingName": "away"
},"settingSynonym": [
"holiday"
]
},"settingSynonym": [
"vakantie"
]
},"settingSynonym": [
"congé"
]
}
],"settingName": "holiday"
}
],"nameValues": [
{
"nameSynonym": [
"setting","mode","state"
],"lang": "en"
},{
"nameSynonym": [
"stand","state","staat","instelling"
],"lang": "nl"
},{
"nameSynonym": [
"réglage","lang": "fr"
}
],"name": "temperature_state"
}
],"thermostatTemperatureUnit": "C"
},"id": "qba-001-3464","type": "action.devices.types.THERMOSTAT","deviceInfo": {
"swVersion": "qb2/uni/5.39.6","model": "ENGIEBoxx","manufacturer": "Toon","hwVersion": "6599-1500-5000"
}
}
]
},"requestId": "12754277927386056776"
}
解决方法
我在这个 json 代码中犯了 2 个错误:
-
settingValues
、settingSynonym
、nameValues
和nameSynonym
都不应该是驼峰式的 -->setting_values
、setting_synonym
,name_values
,name_synonym
- 显然,Google 不允许使用重音符号,因此例如“congé”这个词必须是“conge”,否则就行不通。