0

I'm building a smart thermostat connection to Google Home. However, for the automated testing with the Test Suite, I need to add currentModeSettings to the Query request. However, when I add that, the app breaks completely.

I couldn't get my SYNC payload to print, but here's the map for the device. Note the mode "load_key". This has always been there and worked up to now. The issue ONLY started when I needed to add it to the QUERY request.

{
    "map": {
        "availableThermostatModes": [
            "heat",
            "cool"
        ],
        "thermostatTemperatureRange": {
            "map": {
                "maxThresholdCelsius": 30,
                "minThresholdCelsius": 6
            }
        },
        "availableModes": {
            "myArrayList": [
                {
                    "map": {
                        "ordered": false,
                        "settings": {
                            "myArrayList": [
                                {
                                    "map": {
                                        "setting_name": "comfort",
                                        "setting_values": {
                                            "myArrayList": [
                                                {
                                                    "map": {
                                                        "setting_synonym": {
                                                            "myArrayList": [
                                                                "comfort"
                                                            ]
                                                        },
                                                        "lang": "en"
                                                    }
                                                },
                                                {
                                                    "map": {
                                                        "setting_synonym": {
                                                            "myArrayList": [
                                                                "comfort"
                                                            ]
                                                        },
                                                        "lang": "nl"
                                                    }
                                                },
                                                {
                                                    "map": {
                                                        "setting_synonym": {
                                                            "myArrayList": [
                                                                "confort"
                                                            ]
                                                        },
                                                        "lang": "fr"
                                                    }
                                                }
                                            ]
                                        }
                                    }
                                },
                                {
                                    "map": {
                                        "setting_name": "home",
                                        "setting_values": {
                                            "myArrayList": [
                                                {
                                                    "map": {
                                                        "setting_synonym": {
                                                            "myArrayList": [
                                                                "home"
                                                            ]
                                                        },
                                                        "lang": "en"
                                                    }
                                                },
                                                {
                                                    "map": {
                                                        "setting_synonym": {
                                                            "myArrayList": [
                                                                "thuis"
                                                            ]
                                                        },
                                                        "lang": "nl"
                                                    }
                                                },
                                                {
                                                    "map": {
                                                        "setting_synonym": {
                                                            "myArrayList": [
                                                                "maison"
                                                            ]
                                                        },
                                                        "lang": "fr"
                                                    }
                                                }
                                            ]
                                        }
                                    }
                                },
                                {
                                    "map": {
                                        "setting_name": "sleep",
                                        "setting_values": {
                                            "myArrayList": [
                                                {
                                                    "map": {
                                                        "setting_synonym": {
                                                            "myArrayList": [
                                                                "sleep"
                                                            ]
                                                        },
                                                        "lang": "en"
                                                    }
                                                },
                                                {
                                                    "map": {
                                                        "setting_synonym": {
                                                            "myArrayList": [
                                                                "slapen"
                                                            ]
                                                        },
                                                        "lang": "nl"
                                                    }
                                                },
                                                {
                                                    "map": {
                                                        "setting_synonym": {
                                                            "myArrayList": [
                                                                "nuit"
                                                            ]
                                                        },
                                                        "lang": "fr"
                                                    }
                                                }
                                            ]
                                        }
                                    }
                                },
                                {
                                    "map": {
                                        "setting_name": "away",
                                        "setting_values": {
                                            "myArrayList": [
                                                {
                                                    "map": {
                                                        "setting_synonym": {
                                                            "myArrayList": [
                                                                "away"
                                                            ]
                                                        },
                                                        "lang": "en"
                                                    }
                                                },
                                                {
                                                    "map": {
                                                        "setting_synonym": {
                                                            "myArrayList": [
                                                                "weg"
                                                            ]
                                                        },
                                                        "lang": "nl"
                                                    }
                                                },
                                                {
                                                    "map": {
                                                        "setting_synonym": {
                                                            "myArrayList": [
                                                                "parti"
                                                            ]
                                                        },
                                                        "lang": "fr"
                                                    }
                                                }
                                            ]
                                        }
                                    }
                                },
                                {
                                    "map": {
                                        "setting_name": "holiday",
                                        "setting_values": {
                                            "myArrayList": [
                                                {
                                                    "map": {
                                                        "setting_synonym": {
                                                            "myArrayList": [
                                                                "holiday"
                                                            ]
                                                        },
                                                        "lang": "en"
                                                    }
                                                },
                                                {
                                                    "map": {
                                                        "setting_synonym": {
                                                            "myArrayList": [
                                                                "vakantie"
                                                            ]
                                                        },
                                                        "lang": "nl"
                                                    }
                                                },
                                                {
                                                    "map": {
                                                        "setting_synonym": {
                                                            "myArrayList": [
                                                                "conge"
                                                            ]
                                                        },
                                                        "lang": "fr"
                                                    }
                                                }
                                            ]
                                        }
                                    }
                                }
                            ]
                        },
                        "name": "load_key",
                        "name_values": {
                            "myArrayList": [
                                {
                                    "map": {
                                        "lang": "en",
                                        "name_synonym": {
                                            "myArrayList": [
                                                "setting",
                                                "mode",
                                                "state",
                                                "modus"
                                            ]
                                        }
                                    }
                                },
                                {
                                    "map": {
                                        "lang": "nl",
                                        "name_synonym": {
                                            "myArrayList": [
                                                "stand",
                                                "mode",
                                                "state",
                                                "staat",
                                                "instelling",
                                                "modus"
                                            ]
                                        }
                                    }
                                },
                                {
                                    "map": {
                                        "lang": "fr",
                                        "name_synonym": {
                                            "myArrayList": [
                                                "reglage",
                                                "mode",
                                                "state",
                                                "modus"
                                            ]
                                        }
                                    }
                                }
                            ]
                        }
                    }
                }
            ]
        },
        "thermostatTemperatureUnit": "C"
    }
}

My QUERY response:

{
    "devices": {
        "qb-659917016701-1908A0ATSP": {
            "currentModeSettings": {
                "load_key": "custom"
            },
            "thermostatTemperatureSetpoint": 18.0,
            "thermostatTemperatureAmbient": 23.0,
            "online": true,
            "thermostatMode": "cool",
            "thermostatHumidityAmbient": 35.0,
            "status": "SUCCESS"
        }
    }
}

When adding the part "currentModeSettings": {"load_key": "custom"},, the app broke, the Google Home app doesn't display the temperature anymore, the Test Suite doesn't work anymore either. What am I doing wrong?

Jasper Rosiers
  • 277
  • 2
  • 5
  • 16

1 Answers1

1

The problem may be related to the value custom in your currentModeSettings object that haven't been defined in your settings array.

I'd recommend to update your availableModes object as follows if you want to use "currentModeSettings": {"load_key": "custom"}:

"attributes":
    {
        "availableThermostatModes":
        [
            "heat",
            "cool"
        ],
        "thermostatTemperatureRange":
        {
            "maxThresholdCelsius": 30,
            "minThresholdCelsius": 6
        },
        "thermostatTemperatureUnit": "C",
        "availableModes":
        [
            {
                "name": "load_key",
                "name_values":
                [
                    {
                        "lang": "en",
                        "name_synonym":
                        [
                            "setting",
                            "mode",
                            "state",
                            "modus"
                        ]
                    },
                    {
                        "lang": "nl",
                        "name_synonym":
                        [
                            "stand",
                            "mode",
                            "state",
                            "staat",
                            "instelling",
                            "modus"
                        ]
                    },
                    {
                        "lang": "fr",
                        "name_synonym":
                        [
                            "reglage",
                            "mode",
                            "state",
                            "modus"
                        ]
                    }
                ],
                "ordered": false,
                "settings":
                [
                    {
                        "setting_name": "custom",
                        "setting_values":
                        [
                            {
                                "setting_synonym":
                                [
                                    "custom"
                                ],
                                "lang": "en"
                            },
                            {
                                "setting_synonym":
                                [
                                    "mukautettu"
                                ],
                                "lang": "nl"
                            },
                            {
                                "setting_synonym":
                                [
                                    "douane"
                                ],
                                "lang": "fr"
                            }
                        ]
                    },
                    {
                        "setting_name": "comfort",
                        "setting_values":
                        [
                            {
                                "setting_synonym":
                                [
                                    "comfort"
                                ],
                                "lang": "en"
                            },
                            {
                                "setting_synonym":
                                [
                                    "comfort"
                                ],
                                "lang": "nl"
                            },
                            {
                                "setting_synonym":
                                [
                                    "comfort"
                                ],
                                "lang": "fr"
                            }
                        ]
                    },
                    {
                        "setting_name": "home",
                        "setting_values":
                        [
                            {
                                "setting_synonym":
                                [
                                    "home"
                                ],
                                "lang": "en"
                            },
                            {
                                "setting_synonym":
                                [
                                    "thuis"
                                ],
                                "lang": "nl"
                            },
                            {
                                "setting_synonym":
                                [
                                    "maison"
                                ],
                                "lang": "fr"
                            }
                        ]
                    },
                    {
                        "setting_name": "sleep",
                        "setting_values":
                        [
                            {
                                "setting_synonym":
                                [
                                    "sleep"
                                ],
                                "lang": "en"
                            },
                            {
                                "setting_synonym":
                                [
                                    "slapen"
                                ],
                                "lang": "nl"
                            },
                            {
                                "setting_synonym":
                                [
                                    "nuit"
                                ],
                                "lang": "fr"
                            }
                        ]
                    },
                    {
                        "setting_name": "away",
                        "setting_values":
                        [
                            {
                                "setting_synonym":
                                [
                                    "away"
                                ],
                                "lang": "en"
                            },
                            {
                                "setting_synonym":
                                [
                                    "weg"
                                ],
                                "lang": "nl"
                            },
                            {
                                "setting_synonym":
                                [
                                    "parti"
                                ],
                                "lang": "fr"
                            }
                        ]
                    },
                    {
                        "setting_name": "holiday",
                        "setting_values":
                        [
                            {
                                "setting_synonym":
                                [
                                    "holiday"
                                ],
                                "lang": "en"
                            },
                            {
                                "setting_synonym":
                                [
                                    "vakantie"
                                ],
                                "lang": "nl"
                            },
                            {
                                "setting_synonym":
                                [
                                     "conge"
                                ],
                                "lang": "fr"
                            }
                        ]
                    }
                ]
            }
        ]
    }
ouflak
  • 2,458
  • 10
  • 44
  • 49