diff --git a/CHANGELOG.md b/CHANGELOG.md index 0c1df4ede..b356fb5ff 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,8 @@ ## Ongoing -- More code optimizations via PR[#843](https://github.com/plugwise/python-plugwise/pull/843) +- Better handle missing thermostat data via PR [#860](https://github.com/plugwise/python-plugwise/pull/860) +- More code optimizations via PR [#843](https://github.com/plugwise/python-plugwise/pull/843) - Chores: - Introduce prek (for pre-commit) & align with v2 gh-actions - Remove biome (as prettier was reinstated) diff --git a/fixtures/adam_bad_thermostat/data.json b/fixtures/adam_bad_thermostat/data.json new file mode 100644 index 000000000..ad22d8a49 --- /dev/null +++ b/fixtures/adam_bad_thermostat/data.json @@ -0,0 +1,532 @@ +{ + "00a16880af4d46bf93c997b5511aaab9": { + "available": true, + "dev_class": "valve_actuator_plug", + "hardware": "1", + "location": "28a12f55fd804cdbb5b3be160bd72630", + "model": "Aqara Smart Plug", + "model_id": "lumi.plug.maeu01", + "name": "Koen Gang", + "sensors": { + "electricity_consumed_interval": 0.0 + }, + "switches": { + "relay": false + }, + "vendor": "LUMI", + "zigbee_mac_address": "54EF44100081F725" + }, + "10843e8122c442d79c2ae38e2c775453": { + "active_preset": "home", + "available_schedules": [], + "climate_mode": "heat", + "control_state": "idle", + "dev_class": "climate", + "model": "ThermoZone", + "name": "Babykamer", + "preset_modes": [ + "home", + "asleep", + "away", + "vacation", + "no_frost" + ], + "select_schedule": null, + "select_zone_profile": "active", + "sensors": { + "temperature": 20.4 + }, + "thermostat": { + "lower_bound": 0.0, + "resolution": 0.01, + "setpoint": 19.0, + "upper_bound": 100.0 + }, + "thermostats": { + "primary": [ + "c193cfea2bde4894b0abb6f9941379f9" + ], + "secondary": [] + }, + "vendor": "Plugwise", + "zone_profiles": [ + "active", + "off", + "passive" + ] + }, + "121e0f7a12a9421bb293cf3c3e700420": { + "available": true, + "dev_class": "valve_actuator_plug", + "hardware": "1", + "location": "47851df4ab804ea8b82306398599f13e", + "model": "Aqara Smart Plug", + "model_id": "lumi.plug.maeu01", + "name": "Koen Slaapkamer", + "sensors": { + "electricity_consumed_interval": 0.0 + }, + "switches": { + "relay": false + }, + "vendor": "LUMI", + "zigbee_mac_address": "54EF4410008107A5" + }, + "17ba20a9c8c144188251d0e07fbd7196": { + "available": true, + "dev_class": "valve_actuator_plug", + "hardware": "1", + "location": "d6f2884bb2a14e04b020388ae641f02e", + "model": "Aqara Smart Plug", + "model_id": "lumi.plug.maeu01", + "name": "Koen Woonkamer", + "sensors": { + "electricity_consumed_interval": 0.17 + }, + "switches": { + "relay": true + }, + "vendor": "LUMI", + "zigbee_mac_address": "54EF441000810F1F" + }, + "1adbf1d71fcd4093b9d0279cd825b38e": { + "active_preset": "home", + "available_schedules": [], + "climate_mode": "heat", + "control_state": "idle", + "dev_class": "climate", + "model": "ThermoZone", + "name": "Kastenkamer", + "preset_modes": [ + "home", + "asleep", + "away", + "vacation", + "no_frost" + ], + "select_schedule": null, + "select_zone_profile": "active", + "sensors": { + "temperature": 19.8 + }, + "thermostat": { + "lower_bound": 0.0, + "resolution": 0.01, + "setpoint": 5.0, + "upper_bound": 100.0 + }, + "thermostats": { + "primary": [ + "aa0eb31715fa4bc795fadec7bc7eed0e" + ], + "secondary": [] + }, + "vendor": "Plugwise", + "zone_profiles": [ + "active", + "off", + "passive" + ] + }, + "28a12f55fd804cdbb5b3be160bd72630": { + "active_preset": "home", + "available_schedules": [], + "climate_mode": "heat", + "control_state": "idle", + "dev_class": "climate", + "model": "ThermoZone", + "name": "Gang", + "preset_modes": [ + "home", + "asleep", + "away", + "vacation", + "no_frost" + ], + "select_schedule": null, + "select_zone_profile": "active", + "sensors": { + "temperature": 19.8 + }, + "thermostat": { + "lower_bound": 0.0, + "resolution": 0.01, + "setpoint": 15.0, + "upper_bound": 100.0 + }, + "thermostats": { + "primary": [ + "df95caa5951b474392e301500a9084be" + ], + "secondary": [] + }, + "vendor": "Plugwise", + "zone_profiles": [ + "active", + "off", + "passive" + ] + }, + "292c5988ac814684bc1ade6286a8248b": { + "available": true, + "binary_sensors": { + "dhw_state": false, + "flame_state": false, + "heating_state": false + }, + "dev_class": "heater_central", + "location": "856285a783f24bf4b2573c8bc510eabf", + "max_dhw_temperature": { + "lower_bound": 0.0, + "resolution": 1.0, + "setpoint": 50.0, + "upper_bound": 100.0 + }, + "maximum_boiler_temperature": { + "lower_bound": 25.0, + "resolution": 0.01, + "setpoint": 38.0, + "upper_bound": 45.0 + }, + "model": "Generic heater", + "model_id": "1.1", + "name": "OpenTherm", + "sensors": { + "dhw_temperature": 49.9, + "intended_boiler_temperature": 0.0, + "modulation_level": 0.0, + "outdoor_air_temperature": 13.6, + "return_temperature": 33.0, + "water_temperature": 20.9 + }, + "switches": { + "dhw_cm_switch": false + }, + "vendor": "WeHeat" + }, + "367d0a11e6314a0cb4358c0d71bca060": { + "available": true, + "dev_class": "valve_actuator_plug", + "hardware": "1", + "location": "10843e8122c442d79c2ae38e2c775453", + "model": "Aqara Smart Plug", + "model_id": "lumi.plug.maeu01", + "name": "Koen babykamer ", + "sensors": { + "electricity_consumed_interval": 0.0 + }, + "switches": { + "relay": false + }, + "vendor": "LUMI", + "zigbee_mac_address": "54EF44100080F2F4" + }, + "3ee6b9486cb04c258a3130fff2b144a4": { + "active_preset": "home", + "available_schedules": [], + "climate_mode": "heat", + "control_state": "idle", + "dev_class": "climate", + "model": "ThermoZone", + "name": "Overloop", + "preset_modes": [ + "home", + "asleep", + "away", + "vacation", + "no_frost" + ], + "select_schedule": null, + "sensors": { + "temperature": 20.3 + }, + "thermostats": { + "primary": [ + "8edf4c8b659342e8ae9809a6f9734532" + ], + "secondary": [] + }, + "vendor": "Plugwise" + }, + "47851df4ab804ea8b82306398599f13e": { + "active_preset": "home", + "available_schedules": [], + "climate_mode": "heat", + "control_state": "idle", + "dev_class": "climate", + "model": "ThermoZone", + "name": "Grote slaapkamer", + "preset_modes": [ + "home", + "asleep", + "away", + "vacation", + "no_frost" + ], + "select_schedule": null, + "select_zone_profile": "active", + "sensors": { + "temperature": 20.1 + }, + "thermostat": { + "lower_bound": 0.0, + "resolution": 0.01, + "setpoint": 18.0, + "upper_bound": 100.0 + }, + "thermostats": { + "primary": [ + "f53a8cc032de4ad79353df28196b7cd7" + ], + "secondary": [] + }, + "vendor": "Plugwise", + "zone_profiles": [ + "active", + "off", + "passive" + ] + }, + "8edf4c8b659342e8ae9809a6f9734532": { + "available": true, + "binary_sensors": { + "low_battery": false + }, + "dev_class": "zone_thermometer", + "firmware": "2023-06-12T02:00:00+02:00", + "hardware": "1", + "location": "3ee6b9486cb04c258a3130fff2b144a4", + "model": "Jip", + "model_id": "168-02", + "name": "Jip overloop ", + "sensors": { + "battery": 100, + "humidity": 53.6, + "temperature": 20.3 + }, + "vendor": "Plugwise", + "zigbee_mac_address": "3C2EF5FFFED5DB5B" + }, + "aa0eb31715fa4bc795fadec7bc7eed0e": { + "available": true, + "binary_sensors": { + "low_battery": false + }, + "dev_class": "zone_thermometer", + "firmware": "2023-06-12T02:00:00+02:00", + "hardware": "1", + "location": "1adbf1d71fcd4093b9d0279cd825b38e", + "model": "Jip", + "model_id": "168-02", + "name": "Jip Kastenkamer", + "sensors": { + "battery": 100, + "humidity": 54.1, + "setpoint": 5.0, + "temperature": 19.8 + }, + "vendor": "Plugwise", + "zigbee_mac_address": "3C2EF5FFFED5DB6C" + }, + "b0db639e4cf14e0ba3e586eb18febc36": { + "available": true, + "dev_class": "valve_actuator_plug", + "hardware": "1", + "location": "3ee6b9486cb04c258a3130fff2b144a4", + "model": "Aqara Smart Plug", + "model_id": "lumi.plug.maeu01", + "name": "Koen overloop", + "sensors": { + "electricity_consumed_interval": 0.0 + }, + "switches": { + "relay": false + }, + "vendor": "LUMI", + "zigbee_mac_address": "54EF441000810C91" + }, + "c193cfea2bde4894b0abb6f9941379f9": { + "available": true, + "binary_sensors": { + "low_battery": false + }, + "dev_class": "zone_thermometer", + "firmware": "2023-06-12T02:00:00+02:00", + "hardware": "1", + "location": "10843e8122c442d79c2ae38e2c775453", + "model": "Jip", + "model_id": "168-02", + "name": "Jip Babykamer", + "sensors": { + "battery": 100, + "humidity": 52.1, + "setpoint": 19.0, + "temperature": 20.4 + }, + "vendor": "Plugwise", + "zigbee_mac_address": "3C2EF5FFFED59AEF" + }, + "cc3e413ab05d429bac67f58208b4b704": { + "available": true, + "binary_sensors": { + "low_battery": false + }, + "dev_class": "zone_thermometer", + "firmware": "2023-06-12T02:00:00+02:00", + "hardware": "1", + "location": "d6f2884bb2a14e04b020388ae641f02e", + "model": "Jip", + "model_id": "168-02", + "name": "Jip Woonkamer", + "sensors": { + "battery": 100, + "humidity": 46.0, + "setpoint": 19.0, + "temperature": 20.1 + }, + "temperature_offset": { + "lower_bound": -2.0, + "resolution": 0.1, + "setpoint": 0.0, + "upper_bound": 2.0 + }, + "vendor": "Plugwise", + "zigbee_mac_address": "3C2EF5FFFED59ADA" + }, + "d4ad887fc59a4454bdcda64bbcf2d9ab": { + "binary_sensors": { + "plugwise_notification": false + }, + "dev_class": "gateway", + "firmware": "3.10.13", + "gateway_modes": [ + "away", + "full", + "vacation" + ], + "hardware": "AME Smile 2.0 board", + "location": "856285a783f24bf4b2573c8bc510eabf", + "mac_address": "C493004A803A", + "model": "Gateway", + "model_id": "smile_open_therm", + "name": "Adam", + "notifications": {}, + "regulation_modes": [ + "off", + "bleeding_hot", + "bleeding_cold", + "heating" + ], + "select_gateway_mode": "full", + "select_regulation_mode": "heating", + "sensors": { + "outdoor_temperature": 15.6 + }, + "vendor": "Plugwise", + "zigbee_mac_address": "000D6F000DB9F188" + }, + "d6f2884bb2a14e04b020388ae641f02e": { + "active_preset": "home", + "available_schedules": [], + "climate_mode": "heat", + "control_state": "idle", + "dev_class": "climate", + "model": "ThermoZone", + "name": "Woonkamer", + "preset_modes": [ + "home", + "asleep", + "away", + "vacation", + "no_frost" + ], + "select_schedule": null, + "select_zone_profile": "active", + "sensors": { + "temperature": 20.1 + }, + "thermostat": { + "lower_bound": 0.0, + "resolution": 0.01, + "setpoint": 19.0, + "upper_bound": 100.0 + }, + "thermostats": { + "primary": [ + "cc3e413ab05d429bac67f58208b4b704" + ], + "secondary": [] + }, + "vendor": "Plugwise", + "zone_profiles": [ + "active", + "off", + "passive" + ] + }, + "df95caa5951b474392e301500a9084be": { + "available": true, + "binary_sensors": { + "low_battery": false + }, + "dev_class": "zone_thermometer", + "firmware": "2023-06-12T02:00:00+02:00", + "hardware": "1", + "location": "28a12f55fd804cdbb5b3be160bd72630", + "model": "Jip", + "model_id": "168-02", + "name": "Jip Gang", + "sensors": { + "battery": 100, + "humidity": 51.0, + "setpoint": 15.0, + "temperature": 19.8 + }, + "temperature_offset": { + "lower_bound": -2.0, + "resolution": 0.1, + "setpoint": 0.0, + "upper_bound": 2.0 + }, + "vendor": "Plugwise", + "zigbee_mac_address": "3C2EF5FFFED59AE8" + }, + "e2664314b41a435f97e8886e8e0bd998": { + "available": true, + "dev_class": "valve_actuator_plug", + "hardware": "1", + "location": "1adbf1d71fcd4093b9d0279cd825b38e", + "model": "Aqara Smart Plug", + "model_id": "lumi.plug.maeu01", + "name": "Koen kastenkamer", + "sensors": { + "electricity_consumed_interval": 0.0 + }, + "switches": { + "relay": false + }, + "vendor": "LUMI", + "zigbee_mac_address": "54EF441000810CE1" + }, + "f53a8cc032de4ad79353df28196b7cd7": { + "available": true, + "binary_sensors": { + "low_battery": false + }, + "dev_class": "zone_thermometer", + "firmware": "2023-06-12T02:00:00+02:00", + "hardware": "1", + "location": "47851df4ab804ea8b82306398599f13e", + "model": "Jip", + "model_id": "168-02", + "name": "Jip Slaapkamer", + "sensors": { + "battery": 100, + "humidity": 51.0, + "setpoint": 18.0, + "temperature": 20.1 + }, + "vendor": "Plugwise", + "zigbee_mac_address": "3C2EF5FFFED59AD1" + } +} diff --git a/fixtures/adam_heatpump_cooling/data.json b/fixtures/adam_heatpump_cooling/data.json index 71bfad7e2..4075bf756 100644 --- a/fixtures/adam_heatpump_cooling/data.json +++ b/fixtures/adam_heatpump_cooling/data.json @@ -12,7 +12,13 @@ "dev_class": "climate", "model": "ThermoZone", "name": "Slaapkamer SJ", - "preset_modes": ["no_frost", "vacation", "away", "home", "asleep"], + "preset_modes": [ + "no_frost", + "vacation", + "away", + "home", + "asleep" + ], "select_schedule": "off", "select_zone_profile": "passive", "sensors": { @@ -27,11 +33,17 @@ "upper_bound": 99.9 }, "thermostats": { - "primary": ["d3a276aeb3114a509bab1e4bf8c40348"], + "primary": [ + "d3a276aeb3114a509bab1e4bf8c40348" + ], "secondary": [] }, "vendor": "Plugwise", - "zone_profiles": ["active", "off", "passive"] + "zone_profiles": [ + "active", + "off", + "passive" + ] }, "0ca13e8176204ca7bf6f09de59f81c83": { "available": true, @@ -132,7 +144,13 @@ "dev_class": "climate", "model": "ThermoZone", "name": "Slaapkamer DB", - "preset_modes": ["no_frost", "vacation", "away", "home", "asleep"], + "preset_modes": [ + "no_frost", + "vacation", + "away", + "home", + "asleep" + ], "select_schedule": "off", "select_zone_profile": "passive", "sensors": { @@ -147,11 +165,17 @@ "upper_bound": 99.9 }, "thermostats": { - "primary": ["47e2c550a33846b680725aa3fb229473"], + "primary": [ + "47e2c550a33846b680725aa3fb229473" + ], "secondary": [] }, "vendor": "Plugwise", - "zone_profiles": ["active", "off", "passive"] + "zone_profiles": [ + "active", + "off", + "passive" + ] }, "2e0fc4db2a6d4cbeb7cf786143543961": { "available": true, @@ -248,7 +272,13 @@ "dev_class": "climate", "model": "ThermoZone", "name": "Badkamer 2", - "preset_modes": ["no_frost", "vacation", "away", "home", "asleep"], + "preset_modes": [ + "no_frost", + "vacation", + "away", + "home", + "asleep" + ], "select_schedule": "Werkdag schema", "select_zone_profile": "passive", "sensors": { @@ -262,11 +292,17 @@ "upper_bound": 99.9 }, "thermostats": { - "primary": ["f04c985c11ad4848b8fcd710343f9dcf"], + "primary": [ + "f04c985c11ad4848b8fcd710343f9dcf" + ], "secondary": [] }, "vendor": "Plugwise", - "zone_profiles": ["active", "off", "passive"] + "zone_profiles": [ + "active", + "off", + "passive" + ] }, "5ead63c65e5f44e7870ba2bd680ceb9e": { "available": true, @@ -294,7 +330,11 @@ }, "dev_class": "gateway", "firmware": "3.2.8", - "gateway_modes": ["away", "full", "vacation"], + "gateway_modes": [ + "away", + "full", + "vacation" + ], "hardware": "AME Smile 2.0 board", "location": "eedadcb297564f1483faa509179aebed", "mac_address": "012345670001", @@ -392,7 +432,13 @@ "dev_class": "climate", "model": "ThermoZone", "name": "Badkamer 1", - "preset_modes": ["no_frost", "vacation", "away", "home", "asleep"], + "preset_modes": [ + "no_frost", + "vacation", + "away", + "home", + "asleep" + ], "select_schedule": "Werkdag schema", "select_zone_profile": "passive", "sensors": { @@ -407,11 +453,17 @@ "upper_bound": 99.9 }, "thermostats": { - "primary": ["eac5db95d97241f6b17790897847ccf5"], + "primary": [ + "eac5db95d97241f6b17790897847ccf5" + ], "secondary": [] }, "vendor": "Plugwise", - "zone_profiles": ["active", "off", "passive"] + "zone_profiles": [ + "active", + "off", + "passive" + ] }, "93ac3f7bf25342f58cbb77c4a99ac0b3": { "active_preset": "away", @@ -426,7 +478,13 @@ "dev_class": "climate", "model": "ThermoZone", "name": "Slaapkamer RB", - "preset_modes": ["no_frost", "vacation", "away", "home", "asleep"], + "preset_modes": [ + "no_frost", + "vacation", + "away", + "home", + "asleep" + ], "select_schedule": "off", "select_zone_profile": "passive", "sensors": { @@ -440,11 +498,17 @@ "upper_bound": 99.9 }, "thermostats": { - "primary": ["c4ed311d54e341f58b4cdd201d1fde7e"], + "primary": [ + "c4ed311d54e341f58b4cdd201d1fde7e" + ], "secondary": [] }, "vendor": "Plugwise", - "zone_profiles": ["active", "off", "passive"] + "zone_profiles": [ + "active", + "off", + "passive" + ] }, "96714ad90fc948bcbcb5021c4b9f5ae9": { "available": true, @@ -479,7 +543,13 @@ "dev_class": "climate", "model": "ThermoZone", "name": "Slaapkamer SQ", - "preset_modes": ["no_frost", "vacation", "away", "home", "asleep"], + "preset_modes": [ + "no_frost", + "vacation", + "away", + "home", + "asleep" + ], "select_schedule": "off", "select_zone_profile": "passive", "sensors": { @@ -494,11 +564,17 @@ "upper_bound": 99.9 }, "thermostats": { - "primary": ["beb32da072274e698146db8b022f3c36"], + "primary": [ + "beb32da072274e698146db8b022f3c36" + ], "secondary": [] }, "vendor": "Plugwise", - "zone_profiles": ["active", "off", "passive"] + "zone_profiles": [ + "active", + "off", + "passive" + ] }, "a03b6e8e76dd4646af1a77c31dd9370c": { "available": true, @@ -533,7 +609,13 @@ "dev_class": "climate", "model": "ThermoZone", "name": "Keuken", - "preset_modes": ["no_frost", "vacation", "away", "home", "asleep"], + "preset_modes": [ + "no_frost", + "vacation", + "away", + "home", + "asleep" + ], "select_schedule": "Werkdag schema", "select_zone_profile": "active", "sensors": { @@ -548,11 +630,17 @@ "upper_bound": 99.9 }, "thermostats": { - "primary": ["ea8372c0e3ad4622ad45a041d02425f5"], + "primary": [ + "ea8372c0e3ad4622ad45a041d02425f5" + ], "secondary": [] }, "vendor": "Plugwise", - "zone_profiles": ["active", "off", "passive"] + "zone_profiles": [ + "active", + "off", + "passive" + ] }, "b52908550469425b812c87f766fe5303": { "active_preset": "away", @@ -567,7 +655,13 @@ "dev_class": "climate", "model": "ThermoZone", "name": "Bijkeuken", - "preset_modes": ["no_frost", "vacation", "away", "home", "asleep"], + "preset_modes": [ + "no_frost", + "vacation", + "away", + "home", + "asleep" + ], "select_schedule": "off", "select_zone_profile": "active", "sensors": { @@ -582,11 +676,17 @@ "upper_bound": 99.9 }, "thermostats": { - "primary": ["1053c8bbf8be43c6921742b146a625f1"], + "primary": [ + "1053c8bbf8be43c6921742b146a625f1" + ], "secondary": [] }, "vendor": "Plugwise", - "zone_profiles": ["active", "off", "passive"] + "zone_profiles": [ + "active", + "off", + "passive" + ] }, "bbcffa48019f4b09b8368bbaf9559e68": { "available": true, @@ -699,7 +799,13 @@ "dev_class": "climate", "model": "ThermoZone", "name": "Slaapkamer JM", - "preset_modes": ["no_frost", "vacation", "away", "home", "asleep"], + "preset_modes": [ + "no_frost", + "vacation", + "away", + "home", + "asleep" + ], "select_schedule": "off", "select_zone_profile": "passive", "sensors": { @@ -714,11 +820,17 @@ "upper_bound": 99.9 }, "thermostats": { - "primary": ["7fda9f84f01342f8afe9ebbbbff30c0f"], + "primary": [ + "7fda9f84f01342f8afe9ebbbbff30c0f" + ], "secondary": [] }, "vendor": "Plugwise", - "zone_profiles": ["active", "off", "passive"] + "zone_profiles": [ + "active", + "off", + "passive" + ] }, "ea8372c0e3ad4622ad45a041d02425f5": { "available": true, @@ -803,7 +915,13 @@ "dev_class": "climate", "model": "ThermoZone", "name": "Woonkamer", - "preset_modes": ["no_frost", "vacation", "away", "home", "asleep"], + "preset_modes": [ + "no_frost", + "vacation", + "away", + "home", + "asleep" + ], "select_schedule": "Werkdag schema", "select_zone_profile": "active", "sensors": { @@ -818,10 +936,16 @@ "upper_bound": 35.0 }, "thermostats": { - "primary": ["ca79d23ae0094120b877558734cff85c"], + "primary": [ + "ca79d23ae0094120b877558734cff85c" + ], "secondary": [] }, "vendor": "Plugwise", - "zone_profiles": ["active", "off", "passive"] + "zone_profiles": [ + "active", + "off", + "passive" + ] } } diff --git a/fixtures/adam_jip/data.json b/fixtures/adam_jip/data.json index a1136e3c9..65d256e10 100644 --- a/fixtures/adam_jip/data.json +++ b/fixtures/adam_jip/data.json @@ -7,7 +7,13 @@ "dev_class": "climate", "model": "ThermoZone", "name": "Slaapkamer", - "preset_modes": ["home", "asleep", "away", "vacation", "no_frost"], + "preset_modes": [ + "home", + "asleep", + "away", + "vacation", + "no_frost" + ], "select_schedule": null, "select_zone_profile": "active", "sensors": { @@ -20,11 +26,19 @@ "upper_bound": 99.9 }, "thermostats": { - "primary": ["1346fbd8498d4dbcab7e18d51b771f3d"], - "secondary": ["356b65335e274d769c338223e7af9c33"] + "primary": [ + "1346fbd8498d4dbcab7e18d51b771f3d" + ], + "secondary": [ + "356b65335e274d769c338223e7af9c33" + ] }, "vendor": "Plugwise", - "zone_profiles": ["active", "off", "passive"] + "zone_profiles": [ + "active", + "off", + "passive" + ] }, "13228dab8ce04617af318a2888b3c548": { "active_preset": "home", @@ -34,7 +48,13 @@ "dev_class": "climate", "model": "ThermoZone", "name": "Woonkamer", - "preset_modes": ["home", "asleep", "away", "vacation", "no_frost"], + "preset_modes": [ + "home", + "asleep", + "away", + "vacation", + "no_frost" + ], "select_schedule": null, "select_zone_profile": "active", "sensors": { @@ -47,11 +67,19 @@ "upper_bound": 30.0 }, "thermostats": { - "primary": ["f61f1a2535f54f52ad006a3d18e459ca"], - "secondary": ["833de10f269c4deab58fb9df69901b4e"] + "primary": [ + "f61f1a2535f54f52ad006a3d18e459ca" + ], + "secondary": [ + "833de10f269c4deab58fb9df69901b4e" + ] }, "vendor": "Plugwise", - "zone_profiles": ["active", "off", "passive"] + "zone_profiles": [ + "active", + "off", + "passive" + ] }, "1346fbd8498d4dbcab7e18d51b771f3d": { "available": true, @@ -226,7 +254,11 @@ }, "dev_class": "gateway", "firmware": "3.2.8", - "gateway_modes": ["away", "full", "vacation"], + "gateway_modes": [ + "away", + "full", + "vacation" + ], "hardware": "AME Smile 2.0 board", "location": "9e4433a9d69f40b3aefd15e74395eaec", "mac_address": "012345670001", @@ -234,7 +266,12 @@ "model_id": "smile_open_therm", "name": "Adam", "notifications": {}, - "regulation_modes": ["heating", "off", "bleeding_cold", "bleeding_hot"], + "regulation_modes": [ + "heating", + "off", + "bleeding_cold", + "bleeding_hot" + ], "select_gateway_mode": "full", "select_regulation_mode": "heating", "sensors": { @@ -251,7 +288,13 @@ "dev_class": "climate", "model": "ThermoZone", "name": "Kinderkamer", - "preset_modes": ["home", "asleep", "away", "vacation", "no_frost"], + "preset_modes": [ + "home", + "asleep", + "away", + "vacation", + "no_frost" + ], "select_schedule": null, "select_zone_profile": "active", "sensors": { @@ -264,11 +307,19 @@ "upper_bound": 99.9 }, "thermostats": { - "primary": ["6f3e9d7084214c21b9dfa46f6eeb8700"], - "secondary": ["d4496250d0e942cfa7aea3476e9070d5"] + "primary": [ + "6f3e9d7084214c21b9dfa46f6eeb8700" + ], + "secondary": [ + "d4496250d0e942cfa7aea3476e9070d5" + ] }, "vendor": "Plugwise", - "zone_profiles": ["active", "off", "passive"] + "zone_profiles": [ + "active", + "off", + "passive" + ] }, "d4496250d0e942cfa7aea3476e9070d5": { "available": true, @@ -302,7 +353,13 @@ "dev_class": "climate", "model": "ThermoZone", "name": "Logeerkamer", - "preset_modes": ["home", "asleep", "away", "vacation", "no_frost"], + "preset_modes": [ + "home", + "asleep", + "away", + "vacation", + "no_frost" + ], "select_schedule": null, "select_zone_profile": "active", "sensors": { @@ -315,11 +372,19 @@ "upper_bound": 99.9 }, "thermostats": { - "primary": ["a6abc6a129ee499c88a4d420cc413b47"], - "secondary": ["1da4d325838e4ad8aac12177214505c9"] + "primary": [ + "a6abc6a129ee499c88a4d420cc413b47" + ], + "secondary": [ + "1da4d325838e4ad8aac12177214505c9" + ] }, "vendor": "Plugwise", - "zone_profiles": ["active", "off", "passive"] + "zone_profiles": [ + "active", + "off", + "passive" + ] }, "e4684553153b44afbef2200885f379dc": { "available": true, diff --git a/fixtures/adam_jvonk/data.json b/fixtures/adam_jvonk/data.json new file mode 100644 index 000000000..ad22d8a49 --- /dev/null +++ b/fixtures/adam_jvonk/data.json @@ -0,0 +1,532 @@ +{ + "00a16880af4d46bf93c997b5511aaab9": { + "available": true, + "dev_class": "valve_actuator_plug", + "hardware": "1", + "location": "28a12f55fd804cdbb5b3be160bd72630", + "model": "Aqara Smart Plug", + "model_id": "lumi.plug.maeu01", + "name": "Koen Gang", + "sensors": { + "electricity_consumed_interval": 0.0 + }, + "switches": { + "relay": false + }, + "vendor": "LUMI", + "zigbee_mac_address": "54EF44100081F725" + }, + "10843e8122c442d79c2ae38e2c775453": { + "active_preset": "home", + "available_schedules": [], + "climate_mode": "heat", + "control_state": "idle", + "dev_class": "climate", + "model": "ThermoZone", + "name": "Babykamer", + "preset_modes": [ + "home", + "asleep", + "away", + "vacation", + "no_frost" + ], + "select_schedule": null, + "select_zone_profile": "active", + "sensors": { + "temperature": 20.4 + }, + "thermostat": { + "lower_bound": 0.0, + "resolution": 0.01, + "setpoint": 19.0, + "upper_bound": 100.0 + }, + "thermostats": { + "primary": [ + "c193cfea2bde4894b0abb6f9941379f9" + ], + "secondary": [] + }, + "vendor": "Plugwise", + "zone_profiles": [ + "active", + "off", + "passive" + ] + }, + "121e0f7a12a9421bb293cf3c3e700420": { + "available": true, + "dev_class": "valve_actuator_plug", + "hardware": "1", + "location": "47851df4ab804ea8b82306398599f13e", + "model": "Aqara Smart Plug", + "model_id": "lumi.plug.maeu01", + "name": "Koen Slaapkamer", + "sensors": { + "electricity_consumed_interval": 0.0 + }, + "switches": { + "relay": false + }, + "vendor": "LUMI", + "zigbee_mac_address": "54EF4410008107A5" + }, + "17ba20a9c8c144188251d0e07fbd7196": { + "available": true, + "dev_class": "valve_actuator_plug", + "hardware": "1", + "location": "d6f2884bb2a14e04b020388ae641f02e", + "model": "Aqara Smart Plug", + "model_id": "lumi.plug.maeu01", + "name": "Koen Woonkamer", + "sensors": { + "electricity_consumed_interval": 0.17 + }, + "switches": { + "relay": true + }, + "vendor": "LUMI", + "zigbee_mac_address": "54EF441000810F1F" + }, + "1adbf1d71fcd4093b9d0279cd825b38e": { + "active_preset": "home", + "available_schedules": [], + "climate_mode": "heat", + "control_state": "idle", + "dev_class": "climate", + "model": "ThermoZone", + "name": "Kastenkamer", + "preset_modes": [ + "home", + "asleep", + "away", + "vacation", + "no_frost" + ], + "select_schedule": null, + "select_zone_profile": "active", + "sensors": { + "temperature": 19.8 + }, + "thermostat": { + "lower_bound": 0.0, + "resolution": 0.01, + "setpoint": 5.0, + "upper_bound": 100.0 + }, + "thermostats": { + "primary": [ + "aa0eb31715fa4bc795fadec7bc7eed0e" + ], + "secondary": [] + }, + "vendor": "Plugwise", + "zone_profiles": [ + "active", + "off", + "passive" + ] + }, + "28a12f55fd804cdbb5b3be160bd72630": { + "active_preset": "home", + "available_schedules": [], + "climate_mode": "heat", + "control_state": "idle", + "dev_class": "climate", + "model": "ThermoZone", + "name": "Gang", + "preset_modes": [ + "home", + "asleep", + "away", + "vacation", + "no_frost" + ], + "select_schedule": null, + "select_zone_profile": "active", + "sensors": { + "temperature": 19.8 + }, + "thermostat": { + "lower_bound": 0.0, + "resolution": 0.01, + "setpoint": 15.0, + "upper_bound": 100.0 + }, + "thermostats": { + "primary": [ + "df95caa5951b474392e301500a9084be" + ], + "secondary": [] + }, + "vendor": "Plugwise", + "zone_profiles": [ + "active", + "off", + "passive" + ] + }, + "292c5988ac814684bc1ade6286a8248b": { + "available": true, + "binary_sensors": { + "dhw_state": false, + "flame_state": false, + "heating_state": false + }, + "dev_class": "heater_central", + "location": "856285a783f24bf4b2573c8bc510eabf", + "max_dhw_temperature": { + "lower_bound": 0.0, + "resolution": 1.0, + "setpoint": 50.0, + "upper_bound": 100.0 + }, + "maximum_boiler_temperature": { + "lower_bound": 25.0, + "resolution": 0.01, + "setpoint": 38.0, + "upper_bound": 45.0 + }, + "model": "Generic heater", + "model_id": "1.1", + "name": "OpenTherm", + "sensors": { + "dhw_temperature": 49.9, + "intended_boiler_temperature": 0.0, + "modulation_level": 0.0, + "outdoor_air_temperature": 13.6, + "return_temperature": 33.0, + "water_temperature": 20.9 + }, + "switches": { + "dhw_cm_switch": false + }, + "vendor": "WeHeat" + }, + "367d0a11e6314a0cb4358c0d71bca060": { + "available": true, + "dev_class": "valve_actuator_plug", + "hardware": "1", + "location": "10843e8122c442d79c2ae38e2c775453", + "model": "Aqara Smart Plug", + "model_id": "lumi.plug.maeu01", + "name": "Koen babykamer ", + "sensors": { + "electricity_consumed_interval": 0.0 + }, + "switches": { + "relay": false + }, + "vendor": "LUMI", + "zigbee_mac_address": "54EF44100080F2F4" + }, + "3ee6b9486cb04c258a3130fff2b144a4": { + "active_preset": "home", + "available_schedules": [], + "climate_mode": "heat", + "control_state": "idle", + "dev_class": "climate", + "model": "ThermoZone", + "name": "Overloop", + "preset_modes": [ + "home", + "asleep", + "away", + "vacation", + "no_frost" + ], + "select_schedule": null, + "sensors": { + "temperature": 20.3 + }, + "thermostats": { + "primary": [ + "8edf4c8b659342e8ae9809a6f9734532" + ], + "secondary": [] + }, + "vendor": "Plugwise" + }, + "47851df4ab804ea8b82306398599f13e": { + "active_preset": "home", + "available_schedules": [], + "climate_mode": "heat", + "control_state": "idle", + "dev_class": "climate", + "model": "ThermoZone", + "name": "Grote slaapkamer", + "preset_modes": [ + "home", + "asleep", + "away", + "vacation", + "no_frost" + ], + "select_schedule": null, + "select_zone_profile": "active", + "sensors": { + "temperature": 20.1 + }, + "thermostat": { + "lower_bound": 0.0, + "resolution": 0.01, + "setpoint": 18.0, + "upper_bound": 100.0 + }, + "thermostats": { + "primary": [ + "f53a8cc032de4ad79353df28196b7cd7" + ], + "secondary": [] + }, + "vendor": "Plugwise", + "zone_profiles": [ + "active", + "off", + "passive" + ] + }, + "8edf4c8b659342e8ae9809a6f9734532": { + "available": true, + "binary_sensors": { + "low_battery": false + }, + "dev_class": "zone_thermometer", + "firmware": "2023-06-12T02:00:00+02:00", + "hardware": "1", + "location": "3ee6b9486cb04c258a3130fff2b144a4", + "model": "Jip", + "model_id": "168-02", + "name": "Jip overloop ", + "sensors": { + "battery": 100, + "humidity": 53.6, + "temperature": 20.3 + }, + "vendor": "Plugwise", + "zigbee_mac_address": "3C2EF5FFFED5DB5B" + }, + "aa0eb31715fa4bc795fadec7bc7eed0e": { + "available": true, + "binary_sensors": { + "low_battery": false + }, + "dev_class": "zone_thermometer", + "firmware": "2023-06-12T02:00:00+02:00", + "hardware": "1", + "location": "1adbf1d71fcd4093b9d0279cd825b38e", + "model": "Jip", + "model_id": "168-02", + "name": "Jip Kastenkamer", + "sensors": { + "battery": 100, + "humidity": 54.1, + "setpoint": 5.0, + "temperature": 19.8 + }, + "vendor": "Plugwise", + "zigbee_mac_address": "3C2EF5FFFED5DB6C" + }, + "b0db639e4cf14e0ba3e586eb18febc36": { + "available": true, + "dev_class": "valve_actuator_plug", + "hardware": "1", + "location": "3ee6b9486cb04c258a3130fff2b144a4", + "model": "Aqara Smart Plug", + "model_id": "lumi.plug.maeu01", + "name": "Koen overloop", + "sensors": { + "electricity_consumed_interval": 0.0 + }, + "switches": { + "relay": false + }, + "vendor": "LUMI", + "zigbee_mac_address": "54EF441000810C91" + }, + "c193cfea2bde4894b0abb6f9941379f9": { + "available": true, + "binary_sensors": { + "low_battery": false + }, + "dev_class": "zone_thermometer", + "firmware": "2023-06-12T02:00:00+02:00", + "hardware": "1", + "location": "10843e8122c442d79c2ae38e2c775453", + "model": "Jip", + "model_id": "168-02", + "name": "Jip Babykamer", + "sensors": { + "battery": 100, + "humidity": 52.1, + "setpoint": 19.0, + "temperature": 20.4 + }, + "vendor": "Plugwise", + "zigbee_mac_address": "3C2EF5FFFED59AEF" + }, + "cc3e413ab05d429bac67f58208b4b704": { + "available": true, + "binary_sensors": { + "low_battery": false + }, + "dev_class": "zone_thermometer", + "firmware": "2023-06-12T02:00:00+02:00", + "hardware": "1", + "location": "d6f2884bb2a14e04b020388ae641f02e", + "model": "Jip", + "model_id": "168-02", + "name": "Jip Woonkamer", + "sensors": { + "battery": 100, + "humidity": 46.0, + "setpoint": 19.0, + "temperature": 20.1 + }, + "temperature_offset": { + "lower_bound": -2.0, + "resolution": 0.1, + "setpoint": 0.0, + "upper_bound": 2.0 + }, + "vendor": "Plugwise", + "zigbee_mac_address": "3C2EF5FFFED59ADA" + }, + "d4ad887fc59a4454bdcda64bbcf2d9ab": { + "binary_sensors": { + "plugwise_notification": false + }, + "dev_class": "gateway", + "firmware": "3.10.13", + "gateway_modes": [ + "away", + "full", + "vacation" + ], + "hardware": "AME Smile 2.0 board", + "location": "856285a783f24bf4b2573c8bc510eabf", + "mac_address": "C493004A803A", + "model": "Gateway", + "model_id": "smile_open_therm", + "name": "Adam", + "notifications": {}, + "regulation_modes": [ + "off", + "bleeding_hot", + "bleeding_cold", + "heating" + ], + "select_gateway_mode": "full", + "select_regulation_mode": "heating", + "sensors": { + "outdoor_temperature": 15.6 + }, + "vendor": "Plugwise", + "zigbee_mac_address": "000D6F000DB9F188" + }, + "d6f2884bb2a14e04b020388ae641f02e": { + "active_preset": "home", + "available_schedules": [], + "climate_mode": "heat", + "control_state": "idle", + "dev_class": "climate", + "model": "ThermoZone", + "name": "Woonkamer", + "preset_modes": [ + "home", + "asleep", + "away", + "vacation", + "no_frost" + ], + "select_schedule": null, + "select_zone_profile": "active", + "sensors": { + "temperature": 20.1 + }, + "thermostat": { + "lower_bound": 0.0, + "resolution": 0.01, + "setpoint": 19.0, + "upper_bound": 100.0 + }, + "thermostats": { + "primary": [ + "cc3e413ab05d429bac67f58208b4b704" + ], + "secondary": [] + }, + "vendor": "Plugwise", + "zone_profiles": [ + "active", + "off", + "passive" + ] + }, + "df95caa5951b474392e301500a9084be": { + "available": true, + "binary_sensors": { + "low_battery": false + }, + "dev_class": "zone_thermometer", + "firmware": "2023-06-12T02:00:00+02:00", + "hardware": "1", + "location": "28a12f55fd804cdbb5b3be160bd72630", + "model": "Jip", + "model_id": "168-02", + "name": "Jip Gang", + "sensors": { + "battery": 100, + "humidity": 51.0, + "setpoint": 15.0, + "temperature": 19.8 + }, + "temperature_offset": { + "lower_bound": -2.0, + "resolution": 0.1, + "setpoint": 0.0, + "upper_bound": 2.0 + }, + "vendor": "Plugwise", + "zigbee_mac_address": "3C2EF5FFFED59AE8" + }, + "e2664314b41a435f97e8886e8e0bd998": { + "available": true, + "dev_class": "valve_actuator_plug", + "hardware": "1", + "location": "1adbf1d71fcd4093b9d0279cd825b38e", + "model": "Aqara Smart Plug", + "model_id": "lumi.plug.maeu01", + "name": "Koen kastenkamer", + "sensors": { + "electricity_consumed_interval": 0.0 + }, + "switches": { + "relay": false + }, + "vendor": "LUMI", + "zigbee_mac_address": "54EF441000810CE1" + }, + "f53a8cc032de4ad79353df28196b7cd7": { + "available": true, + "binary_sensors": { + "low_battery": false + }, + "dev_class": "zone_thermometer", + "firmware": "2023-06-12T02:00:00+02:00", + "hardware": "1", + "location": "47851df4ab804ea8b82306398599f13e", + "model": "Jip", + "model_id": "168-02", + "name": "Jip Slaapkamer", + "sensors": { + "battery": 100, + "humidity": 51.0, + "setpoint": 18.0, + "temperature": 20.1 + }, + "vendor": "Plugwise", + "zigbee_mac_address": "3C2EF5FFFED59AD1" + } +} diff --git a/fixtures/adam_multiple_devices_per_zone/data.json b/fixtures/adam_multiple_devices_per_zone/data.json index a64835649..e69575991 100644 --- a/fixtures/adam_multiple_devices_per_zone/data.json +++ b/fixtures/adam_multiple_devices_per_zone/data.json @@ -35,7 +35,13 @@ "dev_class": "climate", "model": "ThermoZone", "name": "Badkamer", - "preset_modes": ["home", "asleep", "away", "vacation", "no_frost"], + "preset_modes": [ + "home", + "asleep", + "away", + "vacation", + "no_frost" + ], "select_schedule": "Badkamer Schema", "sensors": { "temperature": 18.9 @@ -70,7 +76,13 @@ "dev_class": "climate", "model": "ThermoZone", "name": "Bios", - "preset_modes": ["home", "asleep", "away", "vacation", "no_frost"], + "preset_modes": [ + "home", + "asleep", + "away", + "vacation", + "no_frost" + ], "select_schedule": "off", "sensors": { "electricity_consumed": 0.0, @@ -84,8 +96,12 @@ "upper_bound": 100.0 }, "thermostats": { - "primary": ["df4a4a8169904cdb9c03d61a21f42140"], - "secondary": ["a2c3583e0a6349358998b760cea82d2a"] + "primary": [ + "df4a4a8169904cdb9c03d61a21f42140" + ], + "secondary": [ + "a2c3583e0a6349358998b760cea82d2a" + ] }, "vendor": "Plugwise" }, @@ -125,7 +141,13 @@ "dev_class": "climate", "model": "ThermoZone", "name": "Garage", - "preset_modes": ["home", "asleep", "away", "vacation", "no_frost"], + "preset_modes": [ + "home", + "asleep", + "away", + "vacation", + "no_frost" + ], "select_schedule": "off", "sensors": { "temperature": 15.6 @@ -137,7 +159,9 @@ "upper_bound": 100.0 }, "thermostats": { - "primary": ["e7693eb9582644e5b865dba8d4447cf1"], + "primary": [ + "e7693eb9582644e5b865dba8d4447cf1" + ], "secondary": [] }, "vendor": "Plugwise" @@ -273,7 +297,13 @@ "dev_class": "climate", "model": "ThermoZone", "name": "Jessie", - "preset_modes": ["home", "asleep", "away", "vacation", "no_frost"], + "preset_modes": [ + "home", + "asleep", + "away", + "vacation", + "no_frost" + ], "select_schedule": "CV Jessie", "sensors": { "temperature": 17.2 @@ -285,8 +315,12 @@ "upper_bound": 100.0 }, "thermostats": { - "primary": ["6a3bf693d05e48e0b460c815a4fdd09d"], - "secondary": ["d3da73bde12a47d5a6b8f9dad971f2ec"] + "primary": [ + "6a3bf693d05e48e0b460c815a4fdd09d" + ], + "secondary": [ + "d3da73bde12a47d5a6b8f9dad971f2ec" + ] }, "vendor": "Plugwise" }, @@ -418,7 +452,13 @@ "dev_class": "climate", "model": "ThermoZone", "name": "Woonkamer", - "preset_modes": ["home", "asleep", "away", "vacation", "no_frost"], + "preset_modes": [ + "home", + "asleep", + "away", + "vacation", + "no_frost" + ], "select_schedule": "GF7 Woonkamer", "sensors": { "electricity_consumed": 35.6, @@ -432,8 +472,12 @@ "upper_bound": 100.0 }, "thermostats": { - "primary": ["b59bcebaf94b499ea7d46e4a66fb62d8"], - "secondary": ["b310b72a0e354bfab43089919b9a88bf"] + "primary": [ + "b59bcebaf94b499ea7d46e4a66fb62d8" + ], + "secondary": [ + "b310b72a0e354bfab43089919b9a88bf" + ] }, "vendor": "Plugwise" }, diff --git a/fixtures/adam_onoff_cooling_fake_firmware/data.json b/fixtures/adam_onoff_cooling_fake_firmware/data.json index f822e33d8..117954c61 100644 --- a/fixtures/adam_onoff_cooling_fake_firmware/data.json +++ b/fixtures/adam_onoff_cooling_fake_firmware/data.json @@ -42,7 +42,11 @@ }, "dev_class": "gateway", "firmware": "3.2.8", - "gateway_modes": ["away", "full", "vacation"], + "gateway_modes": [ + "away", + "full", + "vacation" + ], "hardware": "AME Smile 2.0 board", "location": "eedadcb297564f1483faa509179aebed", "mac_address": "012345670001", @@ -90,7 +94,13 @@ "dev_class": "climate", "model": "ThermoZone", "name": "Woonkamer", - "preset_modes": ["no_frost", "vacation", "away", "home", "asleep"], + "preset_modes": [ + "no_frost", + "vacation", + "away", + "home", + "asleep" + ], "select_schedule": "Werkdag schema", "select_zone_profile": "active", "sensors": { @@ -105,10 +115,16 @@ "upper_bound": 35.0 }, "thermostats": { - "primary": ["ca79d23ae0094120b877558734cff85c"], + "primary": [ + "ca79d23ae0094120b877558734cff85c" + ], "secondary": [] }, "vendor": "Plugwise", - "zone_profiles": ["active", "off", "passive"] + "zone_profiles": [ + "active", + "off", + "passive" + ] } } diff --git a/fixtures/adam_plus_anna/data.json b/fixtures/adam_plus_anna/data.json index 8533e7468..57d9011c1 100644 --- a/fixtures/adam_plus_anna/data.json +++ b/fixtures/adam_plus_anna/data.json @@ -1,13 +1,22 @@ { "009490cc2f674ce6b576863fbb64f867": { "active_preset": "home", - "available_schedules": ["Weekschema", "off"], + "available_schedules": [ + "Weekschema", + "off" + ], "climate_mode": "auto", "control_state": "idle", "dev_class": "climate", "model": "ThermoZone", "name": "Living room", - "preset_modes": ["home", "asleep", "away", "vacation", "no_frost"], + "preset_modes": [ + "home", + "asleep", + "away", + "vacation", + "no_frost" + ], "select_schedule": "Weekschema", "sensors": { "electricity_consumed": 74.2, @@ -21,7 +30,9 @@ "upper_bound": 35.0 }, "thermostats": { - "primary": ["ee62cad889f94e8ca3d09021f03a660b"], + "primary": [ + "ee62cad889f94e8ca3d09021f03a660b" + ], "secondary": [] }, "vendor": "Plugwise" diff --git a/fixtures/adam_plus_anna_new/data.json b/fixtures/adam_plus_anna_new/data.json index cf8e4ab56..1facb45c2 100644 --- a/fixtures/adam_plus_anna_new/data.json +++ b/fixtures/adam_plus_anna_new/data.json @@ -202,7 +202,11 @@ }, "dev_class": "gateway", "firmware": "3.9.0", - "gateway_modes": ["away", "full", "vacation"], + "gateway_modes": [ + "away", + "full", + "vacation" + ], "hardware": "AME Smile 2.0 board", "location": "bc93488efab249e5bc54fd7e175a6f91", "mac_address": "D40FB201CBA0", @@ -210,7 +214,12 @@ "model_id": "smile_open_therm", "name": "Adam", "notifications": {}, - "regulation_modes": ["bleeding_cold", "heating", "off", "bleeding_hot"], + "regulation_modes": [ + "bleeding_cold", + "heating", + "off", + "bleeding_hot" + ], "select_gateway_mode": "full", "select_regulation_mode": "heating", "sensors": { @@ -297,7 +306,13 @@ "dev_class": "climate", "model": "ThermoZone", "name": "Living room", - "preset_modes": ["vacation", "no_frost", "asleep", "home", "away"], + "preset_modes": [ + "vacation", + "no_frost", + "asleep", + "home", + "away" + ], "select_schedule": "Weekschema", "select_zone_profile": "active", "sensors": { @@ -320,7 +335,11 @@ "secondary": [] }, "vendor": "Plugwise", - "zone_profiles": ["active", "off", "passive"] + "zone_profiles": [ + "active", + "off", + "passive" + ] }, "f871b8c4d63549319221e294e4f88074": { "active_preset": "vacation", @@ -336,7 +355,13 @@ "dev_class": "climate", "model": "ThermoZone", "name": "Bathroom", - "preset_modes": ["vacation", "no_frost", "asleep", "home", "away"], + "preset_modes": [ + "vacation", + "no_frost", + "asleep", + "home", + "away" + ], "select_schedule": "off", "select_zone_profile": "passive", "sensors": { @@ -351,10 +376,18 @@ "upper_bound": 99.9 }, "thermostats": { - "primary": ["e2f4322d57924fa090fbbc48b3a140dc"], - "secondary": ["1772a4ea304041adb83f357b751341ff"] + "primary": [ + "e2f4322d57924fa090fbbc48b3a140dc" + ], + "secondary": [ + "1772a4ea304041adb83f357b751341ff" + ] }, "vendor": "Plugwise", - "zone_profiles": ["active", "off", "passive"] + "zone_profiles": [ + "active", + "off", + "passive" + ] } } diff --git a/fixtures/adam_plus_anna_new_regulation_off/data.json b/fixtures/adam_plus_anna_new_regulation_off/data.json index 888e0c21b..ca57a68b6 100644 --- a/fixtures/adam_plus_anna_new_regulation_off/data.json +++ b/fixtures/adam_plus_anna_new_regulation_off/data.json @@ -176,7 +176,11 @@ }, "dev_class": "gateway", "firmware": "3.7.8", - "gateway_modes": ["away", "full", "vacation"], + "gateway_modes": [ + "away", + "full", + "vacation" + ], "hardware": "AME Smile 2.0 board", "location": "bc93488efab249e5bc54fd7e175a6f91", "mac_address": "012345679891", @@ -184,7 +188,12 @@ "model_id": "smile_open_therm", "name": "Adam", "notifications": {}, - "regulation_modes": ["bleeding_hot", "bleeding_cold", "off", "heating"], + "regulation_modes": [ + "bleeding_hot", + "bleeding_cold", + "off", + "heating" + ], "select_gateway_mode": "full", "select_regulation_mode": "off", "sensors": { @@ -250,7 +259,13 @@ "dev_class": "climate", "model": "ThermoZone", "name": "Living room", - "preset_modes": ["no_frost", "asleep", "vacation", "home", "away"], + "preset_modes": [ + "no_frost", + "asleep", + "vacation", + "home", + "away" + ], "select_schedule": "off", "select_zone_profile": "active", "sensors": { @@ -265,11 +280,17 @@ "upper_bound": 35.0 }, "thermostats": { - "primary": ["ad4838d7d35c4d6ea796ee12ae5aedf8"], + "primary": [ + "ad4838d7d35c4d6ea796ee12ae5aedf8" + ], "secondary": [] }, "vendor": "Plugwise", - "zone_profiles": ["active", "off", "passive"] + "zone_profiles": [ + "active", + "off", + "passive" + ] }, "f871b8c4d63549319221e294e4f88074": { "active_preset": "home", @@ -285,7 +306,13 @@ "dev_class": "climate", "model": "ThermoZone", "name": "Bathroom", - "preset_modes": ["no_frost", "asleep", "vacation", "home", "away"], + "preset_modes": [ + "no_frost", + "asleep", + "vacation", + "home", + "away" + ], "select_schedule": "off", "select_zone_profile": "passive", "sensors": { @@ -300,10 +327,18 @@ "upper_bound": 99.9 }, "thermostats": { - "primary": ["e2f4322d57924fa090fbbc48b3a140dc"], - "secondary": ["1772a4ea304041adb83f357b751341ff"] + "primary": [ + "e2f4322d57924fa090fbbc48b3a140dc" + ], + "secondary": [ + "1772a4ea304041adb83f357b751341ff" + ] }, "vendor": "Plugwise", - "zone_profiles": ["active", "off", "passive"] + "zone_profiles": [ + "active", + "off", + "passive" + ] } } diff --git a/fixtures/adam_zone_per_device/data.json b/fixtures/adam_zone_per_device/data.json index ce3d258b4..1023633b0 100644 --- a/fixtures/adam_zone_per_device/data.json +++ b/fixtures/adam_zone_per_device/data.json @@ -35,7 +35,13 @@ "dev_class": "climate", "model": "ThermoZone", "name": "Badkamer", - "preset_modes": ["home", "asleep", "away", "vacation", "no_frost"], + "preset_modes": [ + "home", + "asleep", + "away", + "vacation", + "no_frost" + ], "select_schedule": "Badkamer Schema", "sensors": { "temperature": 18.8 @@ -47,8 +53,12 @@ "upper_bound": 100.0 }, "thermostats": { - "primary": ["f1fee6043d3642a9b0a65297455f008e"], - "secondary": ["680423ff840043738f42cc7f1ff97a36"] + "primary": [ + "f1fee6043d3642a9b0a65297455f008e" + ], + "secondary": [ + "680423ff840043738f42cc7f1ff97a36" + ] }, "vendor": "Plugwise" }, @@ -67,7 +77,13 @@ "dev_class": "climate", "model": "ThermoZone", "name": "Bios", - "preset_modes": ["home", "asleep", "away", "vacation", "no_frost"], + "preset_modes": [ + "home", + "asleep", + "away", + "vacation", + "no_frost" + ], "select_schedule": "off", "sensors": { "electricity_consumed": 0.0, @@ -81,8 +97,12 @@ "upper_bound": 100.0 }, "thermostats": { - "primary": ["df4a4a8169904cdb9c03d61a21f42140"], - "secondary": ["a2c3583e0a6349358998b760cea82d2a"] + "primary": [ + "df4a4a8169904cdb9c03d61a21f42140" + ], + "secondary": [ + "a2c3583e0a6349358998b760cea82d2a" + ] }, "vendor": "Plugwise" }, @@ -122,7 +142,13 @@ "dev_class": "climate", "model": "ThermoZone", "name": "Garage", - "preset_modes": ["home", "asleep", "away", "vacation", "no_frost"], + "preset_modes": [ + "home", + "asleep", + "away", + "vacation", + "no_frost" + ], "select_schedule": "off", "sensors": { "temperature": 15.6 @@ -134,7 +160,9 @@ "upper_bound": 100.0 }, "thermostats": { - "primary": ["e7693eb9582644e5b865dba8d4447cf1"], + "primary": [ + "e7693eb9582644e5b865dba8d4447cf1" + ], "secondary": [] }, "vendor": "Plugwise" @@ -270,7 +298,13 @@ "dev_class": "climate", "model": "ThermoZone", "name": "Jessie", - "preset_modes": ["home", "asleep", "away", "vacation", "no_frost"], + "preset_modes": [ + "home", + "asleep", + "away", + "vacation", + "no_frost" + ], "select_schedule": "CV Jessie", "sensors": { "temperature": 17.1 @@ -282,8 +316,12 @@ "upper_bound": 100.0 }, "thermostats": { - "primary": ["6a3bf693d05e48e0b460c815a4fdd09d"], - "secondary": ["d3da73bde12a47d5a6b8f9dad971f2ec"] + "primary": [ + "6a3bf693d05e48e0b460c815a4fdd09d" + ], + "secondary": [ + "d3da73bde12a47d5a6b8f9dad971f2ec" + ] }, "vendor": "Plugwise" }, @@ -415,7 +453,13 @@ "dev_class": "climate", "model": "ThermoZone", "name": "Woonkamer", - "preset_modes": ["home", "asleep", "away", "vacation", "no_frost"], + "preset_modes": [ + "home", + "asleep", + "away", + "vacation", + "no_frost" + ], "select_schedule": "GF7 Woonkamer", "sensors": { "electricity_consumed": 35.8, @@ -429,8 +473,12 @@ "upper_bound": 100.0 }, "thermostats": { - "primary": ["b59bcebaf94b499ea7d46e4a66fb62d8"], - "secondary": ["b310b72a0e354bfab43089919b9a88bf"] + "primary": [ + "b59bcebaf94b499ea7d46e4a66fb62d8" + ], + "secondary": [ + "b310b72a0e354bfab43089919b9a88bf" + ] }, "vendor": "Plugwise" }, diff --git a/fixtures/anna_elga_2/data.json b/fixtures/anna_elga_2/data.json index e417927a2..0611a5a7c 100644 --- a/fixtures/anna_elga_2/data.json +++ b/fixtures/anna_elga_2/data.json @@ -30,7 +30,10 @@ }, "ebd90df1ab334565b5895f37590ccff4": { "active_preset": "home", - "available_schedules": ["Thermostat schedule", "off"], + "available_schedules": [ + "Thermostat schedule", + "off" + ], "climate_mode": "auto", "control_state": "heating", "dev_class": "thermostat", @@ -39,7 +42,13 @@ "location": "d3ce834534114348be628b61b26d9220", "model": "ThermoTouch", "name": "Anna", - "preset_modes": ["away", "no_frost", "vacation", "home", "asleep"], + "preset_modes": [ + "away", + "no_frost", + "vacation", + "home", + "asleep" + ], "select_schedule": "Thermostat schedule", "sensors": { "cooling_activation_outdoor_temperature": 24.0, diff --git a/fixtures/anna_elga_2_cooling/data.json b/fixtures/anna_elga_2_cooling/data.json index 0c417702b..e78a5ea40 100644 --- a/fixtures/anna_elga_2_cooling/data.json +++ b/fixtures/anna_elga_2_cooling/data.json @@ -36,7 +36,10 @@ }, "ebd90df1ab334565b5895f37590ccff4": { "active_preset": "home", - "available_schedules": ["Thermostat schedule", "off"], + "available_schedules": [ + "Thermostat schedule", + "off" + ], "climate_mode": "auto", "control_state": "cooling", "dev_class": "thermostat", @@ -45,7 +48,13 @@ "location": "d3ce834534114348be628b61b26d9220", "model": "ThermoTouch", "name": "Anna", - "preset_modes": ["away", "no_frost", "vacation", "home", "asleep"], + "preset_modes": [ + "away", + "no_frost", + "vacation", + "home", + "asleep" + ], "select_schedule": "Thermostat schedule", "sensors": { "cooling_activation_outdoor_temperature": 26.0, diff --git a/fixtures/anna_elga_2_schedule_off/data.json b/fixtures/anna_elga_2_schedule_off/data.json index 064a483d8..3bc5f122f 100644 --- a/fixtures/anna_elga_2_schedule_off/data.json +++ b/fixtures/anna_elga_2_schedule_off/data.json @@ -36,7 +36,10 @@ }, "ebd90df1ab334565b5895f37590ccff4": { "active_preset": "home", - "available_schedules": ["Thermostat schedule", "off"], + "available_schedules": [ + "Thermostat schedule", + "off" + ], "climate_mode": "heat_cool", "control_state": "idle", "dev_class": "thermostat", @@ -45,7 +48,13 @@ "location": "d3ce834534114348be628b61b26d9220", "model": "ThermoTouch", "name": "Anna", - "preset_modes": ["away", "no_frost", "vacation", "home", "asleep"], + "preset_modes": [ + "away", + "no_frost", + "vacation", + "home", + "asleep" + ], "select_schedule": "off", "sensors": { "cooling_activation_outdoor_temperature": 26.0, diff --git a/fixtures/anna_elga_no_cooling/data.json b/fixtures/anna_elga_no_cooling/data.json index 23ec151d4..9075d01e7 100644 --- a/fixtures/anna_elga_no_cooling/data.json +++ b/fixtures/anna_elga_no_cooling/data.json @@ -58,7 +58,10 @@ }, "3cb70739631c4d17a86b8b12e8a5161b": { "active_preset": "home", - "available_schedules": ["standaard", "off"], + "available_schedules": [ + "standaard", + "off" + ], "climate_mode": "auto", "control_state": "heating", "dev_class": "thermostat", @@ -67,7 +70,13 @@ "location": "c784ee9fdab44e1395b8dee7d7a497d5", "model": "ThermoTouch", "name": "Anna", - "preset_modes": ["no_frost", "home", "away", "asleep", "vacation"], + "preset_modes": [ + "no_frost", + "home", + "away", + "asleep", + "vacation" + ], "select_schedule": "standaard", "sensors": { "cooling_activation_outdoor_temperature": 21.0, diff --git a/fixtures/anna_heatpump_cooling/data.json b/fixtures/anna_heatpump_cooling/data.json index c722045a2..f1bdd86fe 100644 --- a/fixtures/anna_heatpump_cooling/data.json +++ b/fixtures/anna_heatpump_cooling/data.json @@ -55,7 +55,10 @@ }, "3cb70739631c4d17a86b8b12e8a5161b": { "active_preset": "home", - "available_schedules": ["standaard", "off"], + "available_schedules": [ + "standaard", + "off" + ], "climate_mode": "heat_cool", "control_state": "cooling", "dev_class": "thermostat", @@ -64,7 +67,13 @@ "location": "c784ee9fdab44e1395b8dee7d7a497d5", "model": "ThermoTouch", "name": "Anna", - "preset_modes": ["no_frost", "home", "away", "asleep", "vacation"], + "preset_modes": [ + "no_frost", + "home", + "away", + "asleep", + "vacation" + ], "select_schedule": "off", "sensors": { "cooling_activation_outdoor_temperature": 21.0, diff --git a/fixtures/anna_heatpump_cooling_fake_firmware/data.json b/fixtures/anna_heatpump_cooling_fake_firmware/data.json index 4218240cb..f08a11bba 100644 --- a/fixtures/anna_heatpump_cooling_fake_firmware/data.json +++ b/fixtures/anna_heatpump_cooling_fake_firmware/data.json @@ -55,7 +55,10 @@ }, "3cb70739631c4d17a86b8b12e8a5161b": { "active_preset": "home", - "available_schedules": ["standaard", "off"], + "available_schedules": [ + "standaard", + "off" + ], "climate_mode": "heat_cool", "control_state": "cooling", "dev_class": "thermostat", @@ -64,7 +67,13 @@ "location": "c784ee9fdab44e1395b8dee7d7a497d5", "model": "ThermoTouch", "name": "Anna", - "preset_modes": ["no_frost", "home", "away", "asleep", "vacation"], + "preset_modes": [ + "no_frost", + "home", + "away", + "asleep", + "vacation" + ], "select_schedule": "off", "sensors": { "cooling_activation_outdoor_temperature": 21.0, diff --git a/fixtures/anna_heatpump_heating/data.json b/fixtures/anna_heatpump_heating/data.json index ab6bdf08e..2d90b6f12 100644 --- a/fixtures/anna_heatpump_heating/data.json +++ b/fixtures/anna_heatpump_heating/data.json @@ -60,7 +60,10 @@ }, "3cb70739631c4d17a86b8b12e8a5161b": { "active_preset": "home", - "available_schedules": ["standaard", "off"], + "available_schedules": [ + "standaard", + "off" + ], "climate_mode": "auto", "control_state": "heating", "dev_class": "thermostat", @@ -69,7 +72,13 @@ "location": "c784ee9fdab44e1395b8dee7d7a497d5", "model": "ThermoTouch", "name": "Anna", - "preset_modes": ["no_frost", "home", "away", "asleep", "vacation"], + "preset_modes": [ + "no_frost", + "home", + "away", + "asleep", + "vacation" + ], "select_schedule": "standaard", "sensors": { "cooling_activation_outdoor_temperature": 21.0, diff --git a/fixtures/anna_loria_cooling_active/data.json b/fixtures/anna_loria_cooling_active/data.json index 8b6c7341e..66b6e1940 100644 --- a/fixtures/anna_loria_cooling_active/data.json +++ b/fixtures/anna_loria_cooling_active/data.json @@ -1,7 +1,11 @@ { "582dfbdace4d4aeb832923ce7d1ddda0": { "active_preset": "home", - "available_schedules": ["Winter", "Test ", "off"], + "available_schedules": [ + "Winter", + "Test ", + "off" + ], "climate_mode": "auto", "control_state": "cooling", "dev_class": "thermostat", @@ -10,7 +14,13 @@ "location": "15da035090b847e7a21f93e08c015ebc", "model": "ThermoTouch", "name": "Anna", - "preset_modes": ["away", "vacation", "no_frost", "home", "asleep"], + "preset_modes": [ + "away", + "vacation", + "no_frost", + "home", + "asleep" + ], "select_schedule": "Winter", "sensors": { "illuminance": 45.0, @@ -61,7 +71,13 @@ "heating_state": false }, "dev_class": "heater_central", - "dhw_modes": ["off", "auto", "boost", "eco", "comfort"], + "dhw_modes": [ + "off", + "auto", + "boost", + "eco", + "comfort" + ], "location": "674b657c138a41a291d315d7471deb06", "max_dhw_temperature": { "lower_bound": 35.0, diff --git a/fixtures/anna_loria_driessens/data.json b/fixtures/anna_loria_driessens/data.json index 2519d1f45..06f266420 100644 --- a/fixtures/anna_loria_driessens/data.json +++ b/fixtures/anna_loria_driessens/data.json @@ -34,7 +34,13 @@ "location": "fa70e08550c94de3a34feb27ecf31421", "model": "ThermoTouch", "name": "Anna", - "preset_modes": ["no_frost", "asleep", "vacation", "away", "home"], + "preset_modes": [ + "no_frost", + "asleep", + "vacation", + "away", + "home" + ], "select_schedule": "Verwarmen@9-23u", "sensors": { "illuminance": 5.5, @@ -67,7 +73,13 @@ "heating_state": false }, "dev_class": "heater_central", - "dhw_modes": ["comfort", "eco", "off", "boost", "auto"], + "dhw_modes": [ + "comfort", + "eco", + "off", + "boost", + "auto" + ], "location": "82c15f65c9bf44c592d69e16139355e3", "max_dhw_temperature": { "lower_bound": 35.0, diff --git a/fixtures/anna_loria_heating_idle/data.json b/fixtures/anna_loria_heating_idle/data.json index d1b640345..62e1ca542 100644 --- a/fixtures/anna_loria_heating_idle/data.json +++ b/fixtures/anna_loria_heating_idle/data.json @@ -1,7 +1,11 @@ { "582dfbdace4d4aeb832923ce7d1ddda0": { "active_preset": "home", - "available_schedules": ["Winter", "Test ", "off"], + "available_schedules": [ + "Winter", + "Test ", + "off" + ], "climate_mode": "auto", "control_state": "idle", "dev_class": "thermostat", @@ -10,7 +14,13 @@ "location": "15da035090b847e7a21f93e08c015ebc", "model": "ThermoTouch", "name": "Anna", - "preset_modes": ["away", "vacation", "no_frost", "home", "asleep"], + "preset_modes": [ + "away", + "vacation", + "no_frost", + "home", + "asleep" + ], "select_schedule": "Winter", "sensors": { "illuminance": 45.0, @@ -61,7 +71,13 @@ "heating_state": false }, "dev_class": "heater_central", - "dhw_modes": ["off", "auto", "boost", "eco", "comfort"], + "dhw_modes": [ + "off", + "auto", + "boost", + "eco", + "comfort" + ], "location": "674b657c138a41a291d315d7471deb06", "max_dhw_temperature": { "lower_bound": 35.0, diff --git a/fixtures/anna_p1/data.json b/fixtures/anna_p1/data.json index fd0bc91fb..5918dc8fb 100644 --- a/fixtures/anna_p1/data.json +++ b/fixtures/anna_p1/data.json @@ -1,7 +1,10 @@ { "1e5e55b958ac445583602f767cb45942": { "active_preset": "home", - "available_schedules": ["Thermostat schedule", "off"], + "available_schedules": [ + "Thermostat schedule", + "off" + ], "climate_mode": "heat", "control_state": "idle", "dev_class": "thermostat", @@ -10,7 +13,13 @@ "location": "5b13651d79c4454684fd268850b1bff8", "model": "ThermoTouch", "name": "Anna", - "preset_modes": ["home", "asleep", "away", "vacation", "no_frost"], + "preset_modes": [ + "home", + "asleep", + "away", + "vacation", + "no_frost" + ], "select_schedule": "off", "sensors": { "illuminance": 2.0, diff --git a/fixtures/anna_v4/data.json b/fixtures/anna_v4/data.json index 7e6f138be..a64605171 100644 --- a/fixtures/anna_v4/data.json +++ b/fixtures/anna_v4/data.json @@ -1,7 +1,11 @@ { "01b85360fdd243d0aaad4d6ac2a5ba7e": { "active_preset": "home", - "available_schedules": ["Standaard", "Thuiswerken", "off"], + "available_schedules": [ + "Standaard", + "Thuiswerken", + "off" + ], "climate_mode": "heat", "control_state": "heating", "dev_class": "thermostat", @@ -10,7 +14,13 @@ "location": "eb5309212bf5407bb143e5bfa3b18aee", "model": "ThermoTouch", "name": "Anna", - "preset_modes": ["vacation", "no_frost", "away", "asleep", "home"], + "preset_modes": [ + "vacation", + "no_frost", + "away", + "asleep", + "home" + ], "select_schedule": "off", "sensors": { "illuminance": 60.0, diff --git a/fixtures/anna_v4_dhw/data.json b/fixtures/anna_v4_dhw/data.json index a560de161..677d0a622 100644 --- a/fixtures/anna_v4_dhw/data.json +++ b/fixtures/anna_v4_dhw/data.json @@ -1,7 +1,11 @@ { "01b85360fdd243d0aaad4d6ac2a5ba7e": { "active_preset": "home", - "available_schedules": ["Standaard", "Thuiswerken", "off"], + "available_schedules": [ + "Standaard", + "Thuiswerken", + "off" + ], "climate_mode": "heat", "control_state": "idle", "dev_class": "thermostat", @@ -10,7 +14,13 @@ "location": "eb5309212bf5407bb143e5bfa3b18aee", "model": "ThermoTouch", "name": "Anna", - "preset_modes": ["vacation", "no_frost", "away", "asleep", "home"], + "preset_modes": [ + "vacation", + "no_frost", + "away", + "asleep", + "home" + ], "select_schedule": "off", "sensors": { "illuminance": 60.0, diff --git a/fixtures/anna_v4_no_tag/data.json b/fixtures/anna_v4_no_tag/data.json index 513e7ce20..926b858e2 100644 --- a/fixtures/anna_v4_no_tag/data.json +++ b/fixtures/anna_v4_no_tag/data.json @@ -1,7 +1,11 @@ { "01b85360fdd243d0aaad4d6ac2a5ba7e": { "active_preset": "home", - "available_schedules": ["Standaard", "Thuiswerken", "off"], + "available_schedules": [ + "Standaard", + "Thuiswerken", + "off" + ], "climate_mode": "auto", "control_state": "heating", "dev_class": "thermostat", @@ -10,7 +14,13 @@ "location": "eb5309212bf5407bb143e5bfa3b18aee", "model": "ThermoTouch", "name": "Anna", - "preset_modes": ["vacation", "no_frost", "away", "asleep", "home"], + "preset_modes": [ + "vacation", + "no_frost", + "away", + "asleep", + "home" + ], "select_schedule": "Thuiswerken", "sensors": { "illuminance": 60.0, diff --git a/fixtures/anna_without_boiler_fw441/data.json b/fixtures/anna_without_boiler_fw441/data.json index 7e0b7cc4f..7cc9eaff3 100644 --- a/fixtures/anna_without_boiler_fw441/data.json +++ b/fixtures/anna_without_boiler_fw441/data.json @@ -1,7 +1,11 @@ { "7ffbb3ab4b6c4ab2915d7510f7bf8fe9": { "active_preset": "home", - "available_schedules": ["Test", "Normaal", "off"], + "available_schedules": [ + "Test", + "Normaal", + "off" + ], "climate_mode": "auto", "control_state": "idle", "dev_class": "thermostat", @@ -10,7 +14,13 @@ "location": "c34c6864216446528e95d88985e714cc", "model": "ThermoTouch", "name": "Anna", - "preset_modes": ["no_frost", "asleep", "away", "vacation", "home"], + "preset_modes": [ + "no_frost", + "asleep", + "away", + "vacation", + "home" + ], "select_schedule": "Normaal", "sensors": { "illuminance": 0.25, diff --git a/fixtures/legacy_anna/data.json b/fixtures/legacy_anna/data.json index 75c12a4c8..f4a30b8fa 100644 --- a/fixtures/legacy_anna/data.json +++ b/fixtures/legacy_anna/data.json @@ -44,7 +44,13 @@ "location": "0000aaaa0000aaaa0000aaaa0000aa00", "model": "ThermoTouch", "name": "Anna", - "preset_modes": ["away", "vacation", "asleep", "home", "no_frost"], + "preset_modes": [ + "away", + "vacation", + "asleep", + "home", + "no_frost" + ], "select_schedule": null, "sensors": { "illuminance": 150.8, diff --git a/fixtures/legacy_anna_2/data.json b/fixtures/legacy_anna_2/data.json index 5f1ef01f9..bb28848a9 100644 --- a/fixtures/legacy_anna_2/data.json +++ b/fixtures/legacy_anna_2/data.json @@ -1,7 +1,10 @@ { "9e7377867dc24e51b8098a5ba02bd89d": { "active_preset": null, - "available_schedules": ["Thermostat schedule", "off"], + "available_schedules": [ + "Thermostat schedule", + "off" + ], "climate_mode": "heat", "control_state": "idle", "dev_class": "thermostat", @@ -10,7 +13,13 @@ "location": "be81e3f8275b4129852c4d8d550ae2eb", "model": "ThermoTouch", "name": "Anna", - "preset_modes": ["vacation", "away", "no_frost", "home", "asleep"], + "preset_modes": [ + "vacation", + "away", + "no_frost", + "home", + "asleep" + ], "select_schedule": "off", "sensors": { "illuminance": 19.5, diff --git a/fixtures/m_adam_cooling/data.json b/fixtures/m_adam_cooling/data.json index edd7d0ea5..daa59be23 100644 --- a/fixtures/m_adam_cooling/data.json +++ b/fixtures/m_adam_cooling/data.json @@ -112,7 +112,11 @@ }, "dev_class": "gateway", "firmware": "3.9.0", - "gateway_modes": ["away", "full", "vacation"], + "gateway_modes": [ + "away", + "full", + "vacation" + ], "hardware": "AME Smile 2.0 board", "location": "bc93488efab249e5bc54fd7e175a6f91", "mac_address": "D40FB201CBA0", @@ -213,7 +217,13 @@ "dev_class": "climate", "model": "ThermoZone", "name": "Living room", - "preset_modes": ["vacation", "no_frost", "asleep", "home", "away"], + "preset_modes": [ + "vacation", + "no_frost", + "asleep", + "home", + "away" + ], "select_schedule": "off", "select_zone_profile": "active", "sensors": { @@ -236,7 +246,11 @@ "secondary": [] }, "vendor": "Plugwise", - "zone_profiles": ["active", "off", "passive"] + "zone_profiles": [ + "active", + "off", + "passive" + ] }, "f871b8c4d63549319221e294e4f88074": { "active_preset": "vacation", @@ -252,7 +266,13 @@ "dev_class": "climate", "model": "ThermoZone", "name": "Bathroom", - "preset_modes": ["vacation", "no_frost", "asleep", "home", "away"], + "preset_modes": [ + "vacation", + "no_frost", + "asleep", + "home", + "away" + ], "select_schedule": "off", "select_zone_profile": "passive", "sensors": { @@ -267,10 +287,18 @@ "upper_bound": 99.9 }, "thermostats": { - "primary": ["e2f4322d57924fa090fbbc48b3a140dc"], - "secondary": ["1772a4ea304041adb83f357b751341ff"] + "primary": [ + "e2f4322d57924fa090fbbc48b3a140dc" + ], + "secondary": [ + "1772a4ea304041adb83f357b751341ff" + ] }, "vendor": "Plugwise", - "zone_profiles": ["active", "off", "passive"] + "zone_profiles": [ + "active", + "off", + "passive" + ] } } diff --git a/fixtures/m_adam_heating/data.json b/fixtures/m_adam_heating/data.json index 7b997d288..62a235cc7 100644 --- a/fixtures/m_adam_heating/data.json +++ b/fixtures/m_adam_heating/data.json @@ -117,7 +117,11 @@ }, "dev_class": "gateway", "firmware": "3.9.0", - "gateway_modes": ["away", "full", "vacation"], + "gateway_modes": [ + "away", + "full", + "vacation" + ], "hardware": "AME Smile 2.0 board", "location": "bc93488efab249e5bc54fd7e175a6f91", "mac_address": "D40FB201CBA0", @@ -125,7 +129,12 @@ "model_id": "smile_open_therm", "name": "Adam", "notifications": {}, - "regulation_modes": ["bleeding_cold", "heating", "off", "bleeding_hot"], + "regulation_modes": [ + "bleeding_cold", + "heating", + "off", + "bleeding_hot" + ], "select_gateway_mode": "full", "select_regulation_mode": "heating", "sensors": { @@ -212,7 +221,13 @@ "dev_class": "climate", "model": "ThermoZone", "name": "Living room", - "preset_modes": ["vacation", "no_frost", "asleep", "home", "away"], + "preset_modes": [ + "vacation", + "no_frost", + "asleep", + "home", + "away" + ], "select_schedule": "off", "select_zone_profile": "active", "sensors": { @@ -235,7 +250,11 @@ "secondary": [] }, "vendor": "Plugwise", - "zone_profiles": ["active", "off", "passive"] + "zone_profiles": [ + "active", + "off", + "passive" + ] }, "f871b8c4d63549319221e294e4f88074": { "active_preset": "vacation", @@ -251,7 +270,13 @@ "dev_class": "climate", "model": "ThermoZone", "name": "Bathroom", - "preset_modes": ["vacation", "no_frost", "asleep", "home", "away"], + "preset_modes": [ + "vacation", + "no_frost", + "asleep", + "home", + "away" + ], "select_schedule": "off", "select_zone_profile": "passive", "sensors": { @@ -266,10 +291,18 @@ "upper_bound": 99.9 }, "thermostats": { - "primary": ["e2f4322d57924fa090fbbc48b3a140dc"], - "secondary": ["1772a4ea304041adb83f357b751341ff"] + "primary": [ + "e2f4322d57924fa090fbbc48b3a140dc" + ], + "secondary": [ + "1772a4ea304041adb83f357b751341ff" + ] }, "vendor": "Plugwise", - "zone_profiles": ["active", "off", "passive"] + "zone_profiles": [ + "active", + "off", + "passive" + ] } } diff --git a/fixtures/m_adam_jip/data.json b/fixtures/m_adam_jip/data.json index 160cec1aa..a473c7748 100644 --- a/fixtures/m_adam_jip/data.json +++ b/fixtures/m_adam_jip/data.json @@ -6,7 +6,13 @@ "dev_class": "climate", "model": "ThermoZone", "name": "Slaapkamer", - "preset_modes": ["home", "asleep", "away", "vacation", "no_frost"], + "preset_modes": [ + "home", + "asleep", + "away", + "vacation", + "no_frost" + ], "select_schedule": null, "select_zone_profile": "active", "sensors": { @@ -19,11 +25,19 @@ "upper_bound": 99.9 }, "thermostats": { - "primary": ["1346fbd8498d4dbcab7e18d51b771f3d"], - "secondary": ["356b65335e274d769c338223e7af9c33"] + "primary": [ + "1346fbd8498d4dbcab7e18d51b771f3d" + ], + "secondary": [ + "356b65335e274d769c338223e7af9c33" + ] }, "vendor": "Plugwise", - "zone_profiles": ["active", "off", "passive"] + "zone_profiles": [ + "active", + "off", + "passive" + ] }, "13228dab8ce04617af318a2888b3c548": { "active_preset": "home", @@ -33,7 +47,13 @@ "dev_class": "climate", "model": "ThermoZone", "name": "Woonkamer", - "preset_modes": ["home", "asleep", "away", "vacation", "no_frost"], + "preset_modes": [ + "home", + "asleep", + "away", + "vacation", + "no_frost" + ], "select_schedule": null, "select_zone_profile": "active", "sensors": { @@ -46,11 +66,19 @@ "upper_bound": 30.0 }, "thermostats": { - "primary": ["f61f1a2535f54f52ad006a3d18e459ca"], - "secondary": ["833de10f269c4deab58fb9df69901b4e"] + "primary": [ + "f61f1a2535f54f52ad006a3d18e459ca" + ], + "secondary": [ + "833de10f269c4deab58fb9df69901b4e" + ] }, "vendor": "Plugwise", - "zone_profiles": ["active", "off", "passive"] + "zone_profiles": [ + "active", + "off", + "passive" + ] }, "1346fbd8498d4dbcab7e18d51b771f3d": { "available": true, @@ -225,7 +253,11 @@ }, "dev_class": "gateway", "firmware": "3.2.8", - "gateway_modes": ["away", "full", "vacation"], + "gateway_modes": [ + "away", + "full", + "vacation" + ], "hardware": "AME Smile 2.0 board", "location": "9e4433a9d69f40b3aefd15e74395eaec", "mac_address": "012345670001", @@ -233,7 +265,12 @@ "model_id": "smile_open_therm", "name": "Adam", "notifications": {}, - "regulation_modes": ["heating", "off", "bleeding_cold", "bleeding_hot"], + "regulation_modes": [ + "heating", + "off", + "bleeding_cold", + "bleeding_hot" + ], "select_gateway_mode": "full", "select_regulation_mode": "heating", "sensors": { @@ -250,7 +287,13 @@ "dev_class": "climate", "model": "ThermoZone", "name": "Kinderkamer", - "preset_modes": ["home", "asleep", "away", "vacation", "no_frost"], + "preset_modes": [ + "home", + "asleep", + "away", + "vacation", + "no_frost" + ], "select_schedule": null, "select_zone_profile": "active", "sensors": { @@ -263,11 +306,19 @@ "upper_bound": 99.9 }, "thermostats": { - "primary": ["6f3e9d7084214c21b9dfa46f6eeb8700"], - "secondary": ["d4496250d0e942cfa7aea3476e9070d5"] + "primary": [ + "6f3e9d7084214c21b9dfa46f6eeb8700" + ], + "secondary": [ + "d4496250d0e942cfa7aea3476e9070d5" + ] }, "vendor": "Plugwise", - "zone_profiles": ["active", "off", "passive"] + "zone_profiles": [ + "active", + "off", + "passive" + ] }, "d4496250d0e942cfa7aea3476e9070d5": { "available": true, @@ -301,7 +352,13 @@ "dev_class": "climate", "model": "ThermoZone", "name": "Logeerkamer", - "preset_modes": ["home", "asleep", "away", "vacation", "no_frost"], + "preset_modes": [ + "home", + "asleep", + "away", + "vacation", + "no_frost" + ], "select_schedule": null, "select_zone_profile": "active", "sensors": { @@ -314,11 +371,19 @@ "upper_bound": 99.9 }, "thermostats": { - "primary": ["a6abc6a129ee499c88a4d420cc413b47"], - "secondary": ["1da4d325838e4ad8aac12177214505c9"] + "primary": [ + "a6abc6a129ee499c88a4d420cc413b47" + ], + "secondary": [ + "1da4d325838e4ad8aac12177214505c9" + ] }, "vendor": "Plugwise", - "zone_profiles": ["active", "off", "passive"] + "zone_profiles": [ + "active", + "off", + "passive" + ] }, "e4684553153b44afbef2200885f379dc": { "available": true, diff --git a/fixtures/m_adam_multiple_devices_per_zone/data.json b/fixtures/m_adam_multiple_devices_per_zone/data.json index 981c094ce..dff7c2466 100644 --- a/fixtures/m_adam_multiple_devices_per_zone/data.json +++ b/fixtures/m_adam_multiple_devices_per_zone/data.json @@ -35,7 +35,13 @@ "dev_class": "climate", "model": "ThermoZone", "name": "Badkamer", - "preset_modes": ["home", "asleep", "away", "vacation", "no_frost"], + "preset_modes": [ + "home", + "asleep", + "away", + "vacation", + "no_frost" + ], "select_schedule": "Badkamer Schema", "sensors": { "temperature": 18.9 @@ -70,7 +76,13 @@ "dev_class": "climate", "model": "ThermoZone", "name": "Bios", - "preset_modes": ["home", "asleep", "away", "vacation", "no_frost"], + "preset_modes": [ + "home", + "asleep", + "away", + "vacation", + "no_frost" + ], "select_schedule": "off", "sensors": { "electricity_consumed": 0.0, @@ -84,8 +96,12 @@ "upper_bound": 100.0 }, "thermostats": { - "primary": ["df4a4a8169904cdb9c03d61a21f42140"], - "secondary": ["a2c3583e0a6349358998b760cea82d2a"] + "primary": [ + "df4a4a8169904cdb9c03d61a21f42140" + ], + "secondary": [ + "a2c3583e0a6349358998b760cea82d2a" + ] }, "vendor": "Plugwise" }, @@ -118,7 +134,13 @@ "dev_class": "climate", "model": "ThermoZone", "name": "Garage", - "preset_modes": ["home", "asleep", "away", "vacation", "no_frost"], + "preset_modes": [ + "home", + "asleep", + "away", + "vacation", + "no_frost" + ], "select_schedule": null, "sensors": { "temperature": 15.6 @@ -130,7 +152,9 @@ "upper_bound": 100.0 }, "thermostats": { - "primary": ["e7693eb9582644e5b865dba8d4447cf1"], + "primary": [ + "e7693eb9582644e5b865dba8d4447cf1" + ], "secondary": [] }, "vendor": "Plugwise" @@ -266,7 +290,13 @@ "dev_class": "climate", "model": "ThermoZone", "name": "Jessie", - "preset_modes": ["home", "asleep", "away", "vacation", "no_frost"], + "preset_modes": [ + "home", + "asleep", + "away", + "vacation", + "no_frost" + ], "select_schedule": "CV Jessie", "sensors": { "temperature": 17.2 @@ -278,8 +308,12 @@ "upper_bound": 100.0 }, "thermostats": { - "primary": ["6a3bf693d05e48e0b460c815a4fdd09d"], - "secondary": ["d3da73bde12a47d5a6b8f9dad971f2ec"] + "primary": [ + "6a3bf693d05e48e0b460c815a4fdd09d" + ], + "secondary": [ + "d3da73bde12a47d5a6b8f9dad971f2ec" + ] }, "vendor": "Plugwise" }, @@ -411,7 +445,13 @@ "dev_class": "climate", "model": "ThermoZone", "name": "Woonkamer", - "preset_modes": ["home", "asleep", "away", "vacation", "no_frost"], + "preset_modes": [ + "home", + "asleep", + "away", + "vacation", + "no_frost" + ], "select_schedule": "GF7 Woonkamer", "sensors": { "electricity_consumed": 35.6, @@ -425,8 +465,12 @@ "upper_bound": 100.0 }, "thermostats": { - "primary": ["b59bcebaf94b499ea7d46e4a66fb62d8"], - "secondary": ["b310b72a0e354bfab43089919b9a88bf"] + "primary": [ + "b59bcebaf94b499ea7d46e4a66fb62d8" + ], + "secondary": [ + "b310b72a0e354bfab43089919b9a88bf" + ] }, "vendor": "Plugwise" }, diff --git a/fixtures/m_anna_heatpump_cooling/data.json b/fixtures/m_anna_heatpump_cooling/data.json index ccfd816ff..e12f137bd 100644 --- a/fixtures/m_anna_heatpump_cooling/data.json +++ b/fixtures/m_anna_heatpump_cooling/data.json @@ -60,7 +60,10 @@ }, "3cb70739631c4d17a86b8b12e8a5161b": { "active_preset": "home", - "available_schedules": ["standaard", "off"], + "available_schedules": [ + "standaard", + "off" + ], "climate_mode": "auto", "control_state": "cooling", "dev_class": "thermostat", @@ -69,7 +72,13 @@ "location": "c784ee9fdab44e1395b8dee7d7a497d5", "model": "ThermoTouch", "name": "Anna", - "preset_modes": ["no_frost", "home", "away", "asleep", "vacation"], + "preset_modes": [ + "no_frost", + "home", + "away", + "asleep", + "vacation" + ], "select_schedule": "standaard", "sensors": { "cooling_activation_outdoor_temperature": 21.0, diff --git a/fixtures/m_anna_heatpump_idle/data.json b/fixtures/m_anna_heatpump_idle/data.json index 5a1cdebd3..5e3c3c6f3 100644 --- a/fixtures/m_anna_heatpump_idle/data.json +++ b/fixtures/m_anna_heatpump_idle/data.json @@ -60,7 +60,10 @@ }, "3cb70739631c4d17a86b8b12e8a5161b": { "active_preset": "home", - "available_schedules": ["standaard", "off"], + "available_schedules": [ + "standaard", + "off" + ], "climate_mode": "auto", "control_state": "idle", "dev_class": "thermostat", @@ -69,7 +72,13 @@ "location": "c784ee9fdab44e1395b8dee7d7a497d5", "model": "ThermoTouch", "name": "Anna", - "preset_modes": ["no_frost", "home", "away", "asleep", "vacation"], + "preset_modes": [ + "no_frost", + "home", + "away", + "asleep", + "vacation" + ], "select_schedule": "standaard", "sensors": { "cooling_activation_outdoor_temperature": 25.0, diff --git a/fixtures/stretch_v23/data.json b/fixtures/stretch_v23/data.json index 5ca04fcd8..f6d8387fb 100644 --- a/fixtures/stretch_v23/data.json +++ b/fixtures/stretch_v23/data.json @@ -304,7 +304,9 @@ }, "f7b145c8492f4dd7a4de760456fdef3e": { "dev_class": "switching", - "members": ["407aa1c1099d463c9137a3a9eda787fd"], + "members": [ + "407aa1c1099d463c9137a3a9eda787fd" + ], "model": "Group", "name": "Test", "switches": { diff --git a/plugwise/helper.py b/plugwise/helper.py index 3af88e2b7..075f5b17d 100644 --- a/plugwise/helper.py +++ b/plugwise/helper.py @@ -819,8 +819,10 @@ def _control_state(self, data: GwEntityData) -> str | bool: Represents the heating/cooling demand-state of the local primary thermostat. Note: heating or cooling can still be active when the setpoint has been reached. """ + if (thermostat := data.get("thermostat")) is None: + return False - if (ctrl_state := data["thermostat"].get("control_state")) is not None: + if (ctrl_state := thermostat.get("control_state")) is not None: data["thermostat"].pop("control_state") self._count -= 1 return ctrl_state @@ -862,7 +864,14 @@ def _regulation_control(self, data: GwEntityData) -> None: Adam: collect the thermostat regulation_control state of a location. """ - if (reg_control := data["thermostat"].get("regulation_control")) is not None: + if (thermostat := data.get("thermostat")) is None: + LOGGER.warning( + "Thermostat data in Zone %s is incomplete. Check the Zone configuration in the Plugwise App.", + data.get("name"), + ) + return + + if (reg_control := thermostat.get("regulation_control")) is not None: data["select_zone_profile"] = reg_control data["zone_profiles"] = ALLOWED_ZONE_PROFILES data["thermostat"].pop("regulation_control") diff --git a/tests/data/adam/adam_bad_thermostat.json b/tests/data/adam/adam_bad_thermostat.json new file mode 100644 index 000000000..ad22d8a49 --- /dev/null +++ b/tests/data/adam/adam_bad_thermostat.json @@ -0,0 +1,532 @@ +{ + "00a16880af4d46bf93c997b5511aaab9": { + "available": true, + "dev_class": "valve_actuator_plug", + "hardware": "1", + "location": "28a12f55fd804cdbb5b3be160bd72630", + "model": "Aqara Smart Plug", + "model_id": "lumi.plug.maeu01", + "name": "Koen Gang", + "sensors": { + "electricity_consumed_interval": 0.0 + }, + "switches": { + "relay": false + }, + "vendor": "LUMI", + "zigbee_mac_address": "54EF44100081F725" + }, + "10843e8122c442d79c2ae38e2c775453": { + "active_preset": "home", + "available_schedules": [], + "climate_mode": "heat", + "control_state": "idle", + "dev_class": "climate", + "model": "ThermoZone", + "name": "Babykamer", + "preset_modes": [ + "home", + "asleep", + "away", + "vacation", + "no_frost" + ], + "select_schedule": null, + "select_zone_profile": "active", + "sensors": { + "temperature": 20.4 + }, + "thermostat": { + "lower_bound": 0.0, + "resolution": 0.01, + "setpoint": 19.0, + "upper_bound": 100.0 + }, + "thermostats": { + "primary": [ + "c193cfea2bde4894b0abb6f9941379f9" + ], + "secondary": [] + }, + "vendor": "Plugwise", + "zone_profiles": [ + "active", + "off", + "passive" + ] + }, + "121e0f7a12a9421bb293cf3c3e700420": { + "available": true, + "dev_class": "valve_actuator_plug", + "hardware": "1", + "location": "47851df4ab804ea8b82306398599f13e", + "model": "Aqara Smart Plug", + "model_id": "lumi.plug.maeu01", + "name": "Koen Slaapkamer", + "sensors": { + "electricity_consumed_interval": 0.0 + }, + "switches": { + "relay": false + }, + "vendor": "LUMI", + "zigbee_mac_address": "54EF4410008107A5" + }, + "17ba20a9c8c144188251d0e07fbd7196": { + "available": true, + "dev_class": "valve_actuator_plug", + "hardware": "1", + "location": "d6f2884bb2a14e04b020388ae641f02e", + "model": "Aqara Smart Plug", + "model_id": "lumi.plug.maeu01", + "name": "Koen Woonkamer", + "sensors": { + "electricity_consumed_interval": 0.17 + }, + "switches": { + "relay": true + }, + "vendor": "LUMI", + "zigbee_mac_address": "54EF441000810F1F" + }, + "1adbf1d71fcd4093b9d0279cd825b38e": { + "active_preset": "home", + "available_schedules": [], + "climate_mode": "heat", + "control_state": "idle", + "dev_class": "climate", + "model": "ThermoZone", + "name": "Kastenkamer", + "preset_modes": [ + "home", + "asleep", + "away", + "vacation", + "no_frost" + ], + "select_schedule": null, + "select_zone_profile": "active", + "sensors": { + "temperature": 19.8 + }, + "thermostat": { + "lower_bound": 0.0, + "resolution": 0.01, + "setpoint": 5.0, + "upper_bound": 100.0 + }, + "thermostats": { + "primary": [ + "aa0eb31715fa4bc795fadec7bc7eed0e" + ], + "secondary": [] + }, + "vendor": "Plugwise", + "zone_profiles": [ + "active", + "off", + "passive" + ] + }, + "28a12f55fd804cdbb5b3be160bd72630": { + "active_preset": "home", + "available_schedules": [], + "climate_mode": "heat", + "control_state": "idle", + "dev_class": "climate", + "model": "ThermoZone", + "name": "Gang", + "preset_modes": [ + "home", + "asleep", + "away", + "vacation", + "no_frost" + ], + "select_schedule": null, + "select_zone_profile": "active", + "sensors": { + "temperature": 19.8 + }, + "thermostat": { + "lower_bound": 0.0, + "resolution": 0.01, + "setpoint": 15.0, + "upper_bound": 100.0 + }, + "thermostats": { + "primary": [ + "df95caa5951b474392e301500a9084be" + ], + "secondary": [] + }, + "vendor": "Plugwise", + "zone_profiles": [ + "active", + "off", + "passive" + ] + }, + "292c5988ac814684bc1ade6286a8248b": { + "available": true, + "binary_sensors": { + "dhw_state": false, + "flame_state": false, + "heating_state": false + }, + "dev_class": "heater_central", + "location": "856285a783f24bf4b2573c8bc510eabf", + "max_dhw_temperature": { + "lower_bound": 0.0, + "resolution": 1.0, + "setpoint": 50.0, + "upper_bound": 100.0 + }, + "maximum_boiler_temperature": { + "lower_bound": 25.0, + "resolution": 0.01, + "setpoint": 38.0, + "upper_bound": 45.0 + }, + "model": "Generic heater", + "model_id": "1.1", + "name": "OpenTherm", + "sensors": { + "dhw_temperature": 49.9, + "intended_boiler_temperature": 0.0, + "modulation_level": 0.0, + "outdoor_air_temperature": 13.6, + "return_temperature": 33.0, + "water_temperature": 20.9 + }, + "switches": { + "dhw_cm_switch": false + }, + "vendor": "WeHeat" + }, + "367d0a11e6314a0cb4358c0d71bca060": { + "available": true, + "dev_class": "valve_actuator_plug", + "hardware": "1", + "location": "10843e8122c442d79c2ae38e2c775453", + "model": "Aqara Smart Plug", + "model_id": "lumi.plug.maeu01", + "name": "Koen babykamer ", + "sensors": { + "electricity_consumed_interval": 0.0 + }, + "switches": { + "relay": false + }, + "vendor": "LUMI", + "zigbee_mac_address": "54EF44100080F2F4" + }, + "3ee6b9486cb04c258a3130fff2b144a4": { + "active_preset": "home", + "available_schedules": [], + "climate_mode": "heat", + "control_state": "idle", + "dev_class": "climate", + "model": "ThermoZone", + "name": "Overloop", + "preset_modes": [ + "home", + "asleep", + "away", + "vacation", + "no_frost" + ], + "select_schedule": null, + "sensors": { + "temperature": 20.3 + }, + "thermostats": { + "primary": [ + "8edf4c8b659342e8ae9809a6f9734532" + ], + "secondary": [] + }, + "vendor": "Plugwise" + }, + "47851df4ab804ea8b82306398599f13e": { + "active_preset": "home", + "available_schedules": [], + "climate_mode": "heat", + "control_state": "idle", + "dev_class": "climate", + "model": "ThermoZone", + "name": "Grote slaapkamer", + "preset_modes": [ + "home", + "asleep", + "away", + "vacation", + "no_frost" + ], + "select_schedule": null, + "select_zone_profile": "active", + "sensors": { + "temperature": 20.1 + }, + "thermostat": { + "lower_bound": 0.0, + "resolution": 0.01, + "setpoint": 18.0, + "upper_bound": 100.0 + }, + "thermostats": { + "primary": [ + "f53a8cc032de4ad79353df28196b7cd7" + ], + "secondary": [] + }, + "vendor": "Plugwise", + "zone_profiles": [ + "active", + "off", + "passive" + ] + }, + "8edf4c8b659342e8ae9809a6f9734532": { + "available": true, + "binary_sensors": { + "low_battery": false + }, + "dev_class": "zone_thermometer", + "firmware": "2023-06-12T02:00:00+02:00", + "hardware": "1", + "location": "3ee6b9486cb04c258a3130fff2b144a4", + "model": "Jip", + "model_id": "168-02", + "name": "Jip overloop ", + "sensors": { + "battery": 100, + "humidity": 53.6, + "temperature": 20.3 + }, + "vendor": "Plugwise", + "zigbee_mac_address": "3C2EF5FFFED5DB5B" + }, + "aa0eb31715fa4bc795fadec7bc7eed0e": { + "available": true, + "binary_sensors": { + "low_battery": false + }, + "dev_class": "zone_thermometer", + "firmware": "2023-06-12T02:00:00+02:00", + "hardware": "1", + "location": "1adbf1d71fcd4093b9d0279cd825b38e", + "model": "Jip", + "model_id": "168-02", + "name": "Jip Kastenkamer", + "sensors": { + "battery": 100, + "humidity": 54.1, + "setpoint": 5.0, + "temperature": 19.8 + }, + "vendor": "Plugwise", + "zigbee_mac_address": "3C2EF5FFFED5DB6C" + }, + "b0db639e4cf14e0ba3e586eb18febc36": { + "available": true, + "dev_class": "valve_actuator_plug", + "hardware": "1", + "location": "3ee6b9486cb04c258a3130fff2b144a4", + "model": "Aqara Smart Plug", + "model_id": "lumi.plug.maeu01", + "name": "Koen overloop", + "sensors": { + "electricity_consumed_interval": 0.0 + }, + "switches": { + "relay": false + }, + "vendor": "LUMI", + "zigbee_mac_address": "54EF441000810C91" + }, + "c193cfea2bde4894b0abb6f9941379f9": { + "available": true, + "binary_sensors": { + "low_battery": false + }, + "dev_class": "zone_thermometer", + "firmware": "2023-06-12T02:00:00+02:00", + "hardware": "1", + "location": "10843e8122c442d79c2ae38e2c775453", + "model": "Jip", + "model_id": "168-02", + "name": "Jip Babykamer", + "sensors": { + "battery": 100, + "humidity": 52.1, + "setpoint": 19.0, + "temperature": 20.4 + }, + "vendor": "Plugwise", + "zigbee_mac_address": "3C2EF5FFFED59AEF" + }, + "cc3e413ab05d429bac67f58208b4b704": { + "available": true, + "binary_sensors": { + "low_battery": false + }, + "dev_class": "zone_thermometer", + "firmware": "2023-06-12T02:00:00+02:00", + "hardware": "1", + "location": "d6f2884bb2a14e04b020388ae641f02e", + "model": "Jip", + "model_id": "168-02", + "name": "Jip Woonkamer", + "sensors": { + "battery": 100, + "humidity": 46.0, + "setpoint": 19.0, + "temperature": 20.1 + }, + "temperature_offset": { + "lower_bound": -2.0, + "resolution": 0.1, + "setpoint": 0.0, + "upper_bound": 2.0 + }, + "vendor": "Plugwise", + "zigbee_mac_address": "3C2EF5FFFED59ADA" + }, + "d4ad887fc59a4454bdcda64bbcf2d9ab": { + "binary_sensors": { + "plugwise_notification": false + }, + "dev_class": "gateway", + "firmware": "3.10.13", + "gateway_modes": [ + "away", + "full", + "vacation" + ], + "hardware": "AME Smile 2.0 board", + "location": "856285a783f24bf4b2573c8bc510eabf", + "mac_address": "C493004A803A", + "model": "Gateway", + "model_id": "smile_open_therm", + "name": "Adam", + "notifications": {}, + "regulation_modes": [ + "off", + "bleeding_hot", + "bleeding_cold", + "heating" + ], + "select_gateway_mode": "full", + "select_regulation_mode": "heating", + "sensors": { + "outdoor_temperature": 15.6 + }, + "vendor": "Plugwise", + "zigbee_mac_address": "000D6F000DB9F188" + }, + "d6f2884bb2a14e04b020388ae641f02e": { + "active_preset": "home", + "available_schedules": [], + "climate_mode": "heat", + "control_state": "idle", + "dev_class": "climate", + "model": "ThermoZone", + "name": "Woonkamer", + "preset_modes": [ + "home", + "asleep", + "away", + "vacation", + "no_frost" + ], + "select_schedule": null, + "select_zone_profile": "active", + "sensors": { + "temperature": 20.1 + }, + "thermostat": { + "lower_bound": 0.0, + "resolution": 0.01, + "setpoint": 19.0, + "upper_bound": 100.0 + }, + "thermostats": { + "primary": [ + "cc3e413ab05d429bac67f58208b4b704" + ], + "secondary": [] + }, + "vendor": "Plugwise", + "zone_profiles": [ + "active", + "off", + "passive" + ] + }, + "df95caa5951b474392e301500a9084be": { + "available": true, + "binary_sensors": { + "low_battery": false + }, + "dev_class": "zone_thermometer", + "firmware": "2023-06-12T02:00:00+02:00", + "hardware": "1", + "location": "28a12f55fd804cdbb5b3be160bd72630", + "model": "Jip", + "model_id": "168-02", + "name": "Jip Gang", + "sensors": { + "battery": 100, + "humidity": 51.0, + "setpoint": 15.0, + "temperature": 19.8 + }, + "temperature_offset": { + "lower_bound": -2.0, + "resolution": 0.1, + "setpoint": 0.0, + "upper_bound": 2.0 + }, + "vendor": "Plugwise", + "zigbee_mac_address": "3C2EF5FFFED59AE8" + }, + "e2664314b41a435f97e8886e8e0bd998": { + "available": true, + "dev_class": "valve_actuator_plug", + "hardware": "1", + "location": "1adbf1d71fcd4093b9d0279cd825b38e", + "model": "Aqara Smart Plug", + "model_id": "lumi.plug.maeu01", + "name": "Koen kastenkamer", + "sensors": { + "electricity_consumed_interval": 0.0 + }, + "switches": { + "relay": false + }, + "vendor": "LUMI", + "zigbee_mac_address": "54EF441000810CE1" + }, + "f53a8cc032de4ad79353df28196b7cd7": { + "available": true, + "binary_sensors": { + "low_battery": false + }, + "dev_class": "zone_thermometer", + "firmware": "2023-06-12T02:00:00+02:00", + "hardware": "1", + "location": "47851df4ab804ea8b82306398599f13e", + "model": "Jip", + "model_id": "168-02", + "name": "Jip Slaapkamer", + "sensors": { + "battery": 100, + "humidity": 51.0, + "setpoint": 18.0, + "temperature": 20.1 + }, + "vendor": "Plugwise", + "zigbee_mac_address": "3C2EF5FFFED59AD1" + } +} diff --git a/tests/test_adam.py b/tests/test_adam.py index 8484d56d7..516565444 100644 --- a/tests/test_adam.py +++ b/tests/test_adam.py @@ -16,6 +16,18 @@ class TestPlugwiseAdam(TestPlugwise): # pylint: disable=attribute-defined-outside-init """Tests for Adam.""" + @pytest.mark.asyncio + async def test_connect_adam_jvonk(self): + """Test Adam with missing thermostat data.""" + self.smile_setup = "adam_bad_thermostat" + + testdata = await self.load_testdata(SMILE_TYPE, self.smile_setup) + server, api, client = await self.connect_wrapper(raise_timeout=True) + await self.device_test(api, "2023-12-17 00:00:01", testdata, skip_testing=True) + + await api.close_connection() + await self.disconnect(server, client) + @pytest.mark.asyncio async def test_connect_adam_plus_anna_new(self): """Test extended Adam (firmware 3.9) with Anna, Emma, Jip, and a switch-group setup.""" diff --git a/userdata/adam_bad_thermostat/core.domain_objects.xml b/userdata/adam_bad_thermostat/core.domain_objects.xml new file mode 100644 index 000000000..1b0fa0e4a --- /dev/null +++ b/userdata/adam_bad_thermostat/core.domain_objects.xml @@ -0,0 +1,3019 @@ + + + + Jip Gang + A zone thermometer measures temperature and relative humidity. + zone_thermometer + 2025-10-31T17:00:04.150+01:00 + 2026-03-05T13:03:18.414+01:00 + + + + + + humidity + RH + 2026-03-05T10:21:13.891+01:00 + 2026-03-05T10:21:13.891+01:00 + PT3H + + + 51.00 + + + + thermostat + C + 2026-03-02T17:59:07.452+01:00 + 2026-03-02T17:59:07.452+01:00 + + + + 15.00 + + + + temperature + C + 2026-03-05T13:03:18.409+01:00 + 2026-03-05T13:03:18.409+01:00 + PT3H + + + 19.82 + + + + battery + + 2026-03-05T03:19:09.040+01:00 + 2026-03-05T03:19:09.040+01:00 + + + + 1.00 + + + + temperature_offset + C + 2026-03-05T08:39:20.384+01:00 + 2026-03-05T08:39:20.384+01:00 + + + + 0.00 + + + + + + 2026-03-02T17:59:07.453+01:00 + thermostat + 4 + 30 + 0.01 + 15 + + + + + + 2026-03-05T08:39:20.385+01:00 + temperature_offset + 0 + + + + + Grote slaapkamer + + bedroom + 2025-11-21T10:16:39.991+01:00 + 2026-03-05T13:00:50.089+01:00 + + home + + + + + + + + temperature + C + 2026-03-05T13:00:50.077+01:00 + 2026-02-24T00:26:12.300+01:00 + PT3H + + 20.05 + + + + thermostat + C + 2026-02-09T22:29:23.922+01:00 + 2025-11-25T06:59:04.480+01:00 + + + 18.00 + + + + relay + + + + + + + humidity + RH + 2026-03-05T10:53:27.269+01:00 + 2025-11-21T10:16:46.788+01:00 + PT3H + + 51.00 + + + + + + 2026-02-09T22:29:23.923+01:00 + thermostat + 0 + 99.99 + 0.01 + 18 + + true + true + off + active + + + + false + single + + + + + Thermostat presets + Provides presets for a Location. +