diff --git a/CHANGELOG.md b/CHANGELOG.md
index 215e2e8a7..94f3bd809 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,8 @@
## Ongoing
+- Add the heating setpoint of each preset as an adjustable value for every zone with its own preset rule, and the cooling setpoint when the gateway has cooling. Changing one resets a manual setpoint on that zone to its active preset.
+- Each Adam zone now takes its presets from its own preset rule, not from the last preset rule on the gateway.
- Fix setting changes after a timeout or a 504 error. The retry sent a read instead of the change, so the change was reported as done even when the gateway never got it.
## v1.14.8
diff --git a/fixtures/adam_bad_thermostat/data.json b/fixtures/adam_bad_thermostat/data.json
index 8944b3a61..3b801e109 100644
--- a/fixtures/adam_bad_thermostat/data.json
+++ b/fixtures/adam_bad_thermostat/data.json
@@ -45,14 +45,38 @@
},
"3ee6b9486cb04c258a3130fff2b144a4": {
"active_preset": "home",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 17.0,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
"climate_mode": "heat",
"control_state": "idle",
"dev_class": "climate",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 20.0,
+ "upper_bound": 30.0
+ },
"model": "ThermoZone",
"name": "Overloop",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 10.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
"home",
"asleep",
@@ -70,6 +94,12 @@
],
"secondary": []
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise"
},
"8edf4c8b659342e8ae9809a6f9734532": {
diff --git a/fixtures/adam_heatpump_cooling/data.json b/fixtures/adam_heatpump_cooling/data.json
index 615f4d28d..005e19dca 100644
--- a/fixtures/adam_heatpump_cooling/data.json
+++ b/fixtures/adam_heatpump_cooling/data.json
@@ -1,23 +1,51 @@
{
"04b15f6e884448288f811d29fb7b1b30": {
"active_preset": "away",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 22.0,
+ "setpoint_low": 18.0,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off",
"Opstaan weekdag",
"Werkdag schema",
"Weekend"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 25.0,
+ "setpoint_low": 18.5,
+ "upper_bound": 30.0
+ },
"climate_mode": "cool",
"control_state": "idle",
"dev_class": "climate",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 22.0,
+ "setpoint_low": 19.0,
+ "upper_bound": 30.0
+ },
"model": "ThermoZone",
"name": "Slaapkamer SJ",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 30.0,
+ "setpoint_low": 10.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
"no_frost",
"vacation",
"away",
- "home",
- "asleep"
+ "asleep",
+ "home"
],
"select_schedule": "off",
"select_zone_profile": "passive",
@@ -38,6 +66,13 @@
],
"secondary": []
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 28.0,
+ "setpoint_low": 16.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise",
"zone_profiles": [
"active",
@@ -140,17 +175,45 @@
},
"20e735858f8146cead98b873177a4f99": {
"active_preset": "away",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 22.0,
+ "setpoint_low": 18.0,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off",
"Opstaan weekdag",
"Werkdag schema",
"Weekend"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 25.0,
+ "setpoint_low": 18.5,
+ "upper_bound": 30.0
+ },
"climate_mode": "cool",
"control_state": "idle",
"dev_class": "climate",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 22.0,
+ "setpoint_low": 18.0,
+ "upper_bound": 30.0
+ },
"model": "ThermoZone",
"name": "Slaapkamer DB",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 30.0,
+ "setpoint_low": 10.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
"no_frost",
"vacation",
@@ -177,6 +240,13 @@
],
"secondary": []
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 28.0,
+ "setpoint_low": 16.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise",
"zone_profiles": [
"active",
@@ -268,23 +338,51 @@
},
"5cc21042f87f4b4c94ccb5537c47a53f": {
"active_preset": "away",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 23.0,
+ "setpoint_low": 20.5,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off",
"Opstaan weekdag",
"Werkdag schema",
"Weekend"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 25.0,
+ "setpoint_low": 20.5,
+ "upper_bound": 30.0
+ },
"climate_mode": "auto",
"control_state": "idle",
"dev_class": "climate",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 22.0,
+ "setpoint_low": 20.5,
+ "upper_bound": 30.0
+ },
"model": "ThermoZone",
"name": "Badkamer 2",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 30.0,
+ "setpoint_low": 10.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
"no_frost",
"vacation",
- "away",
"home",
- "asleep"
+ "asleep",
+ "away"
],
"select_schedule": "Werkdag schema",
"select_zone_profile": "passive",
@@ -304,6 +402,13 @@
],
"secondary": []
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 28.0,
+ "setpoint_low": 16.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise",
"zone_profiles": [
"active",
@@ -428,23 +533,51 @@
},
"8cf650a4c10c44819e426bed406aec34": {
"active_preset": "away",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 23.0,
+ "setpoint_low": 20.5,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off",
"Opstaan weekdag",
"Werkdag schema",
"Weekend"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 25.0,
+ "setpoint_low": 20.5,
+ "upper_bound": 30.0
+ },
"climate_mode": "auto",
"control_state": "idle",
"dev_class": "climate",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 22.0,
+ "setpoint_low": 20.5,
+ "upper_bound": 30.0
+ },
"model": "ThermoZone",
"name": "Badkamer 1",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 30.0,
+ "setpoint_low": 10.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
"no_frost",
"vacation",
- "away",
"home",
- "asleep"
+ "asleep",
+ "away"
],
"select_schedule": "Werkdag schema",
"select_zone_profile": "passive",
@@ -465,6 +598,13 @@
],
"secondary": []
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 28.0,
+ "setpoint_low": 16.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise",
"zone_profiles": [
"active",
@@ -474,23 +614,51 @@
},
"93ac3f7bf25342f58cbb77c4a99ac0b3": {
"active_preset": "away",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 22.0,
+ "setpoint_low": 18.0,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off",
"Opstaan weekdag",
"Werkdag schema",
"Weekend"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 25.0,
+ "setpoint_low": 18.5,
+ "upper_bound": 30.0
+ },
"climate_mode": "cool",
"control_state": "idle",
"dev_class": "climate",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 22.0,
+ "setpoint_low": 20.0,
+ "upper_bound": 30.0
+ },
"model": "ThermoZone",
"name": "Slaapkamer RB",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 30.0,
+ "setpoint_low": 10.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
"no_frost",
"vacation",
"away",
- "home",
- "asleep"
+ "asleep",
+ "home"
],
"select_schedule": "off",
"select_zone_profile": "passive",
@@ -510,6 +678,13 @@
],
"secondary": []
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 28.0,
+ "setpoint_low": 16.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise",
"zone_profiles": [
"active",
@@ -539,22 +714,50 @@
},
"9a27714b970547ee9a6bdadc2b815ad5": {
"active_preset": "away",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 22.0,
+ "setpoint_low": 18.0,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off",
"Opstaan weekdag",
"Werkdag schema",
"Weekend"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 25.0,
+ "setpoint_low": 18.5,
+ "upper_bound": 30.0
+ },
"climate_mode": "cool",
"control_state": "idle",
"dev_class": "climate",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 22.0,
+ "setpoint_low": 18.0,
+ "upper_bound": 30.0
+ },
"model": "ThermoZone",
"name": "Slaapkamer SQ",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 30.0,
+ "setpoint_low": 10.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
"no_frost",
"vacation",
- "away",
"home",
+ "away",
"asleep"
],
"select_schedule": "off",
@@ -576,6 +779,13 @@
],
"secondary": []
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 28.0,
+ "setpoint_low": 16.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise",
"zone_profiles": [
"active",
@@ -605,17 +815,45 @@
},
"a562019b0b1f47a4bde8ebe3dbe3e8a9": {
"active_preset": "away",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 22.0,
+ "setpoint_low": 21.5,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off",
"Opstaan weekdag",
"Werkdag schema",
"Weekend"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 25.0,
+ "setpoint_low": 21.5,
+ "upper_bound": 30.0
+ },
"climate_mode": "auto",
"control_state": "idle",
"dev_class": "climate",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 22.0,
+ "setpoint_low": 21.5,
+ "upper_bound": 30.0
+ },
"model": "ThermoZone",
"name": "Keuken",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 30.0,
+ "setpoint_low": 10.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
"no_frost",
"vacation",
@@ -642,6 +880,13 @@
],
"secondary": []
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 28.0,
+ "setpoint_low": 16.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise",
"zone_profiles": [
"active",
@@ -651,23 +896,51 @@
},
"b52908550469425b812c87f766fe5303": {
"active_preset": "away",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 22.0,
+ "setpoint_low": 17.5,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off",
"Opstaan weekdag",
"Werkdag schema",
"Weekend"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 25.0,
+ "setpoint_low": 18.0,
+ "upper_bound": 30.0
+ },
"climate_mode": "cool",
"control_state": "idle",
"dev_class": "climate",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 22.0,
+ "setpoint_low": 18.0,
+ "upper_bound": 30.0
+ },
"model": "ThermoZone",
"name": "Bijkeuken",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 30.0,
+ "setpoint_low": 10.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
"no_frost",
"vacation",
+ "asleep",
"away",
- "home",
- "asleep"
+ "home"
],
"select_schedule": "off",
"select_zone_profile": "active",
@@ -688,6 +961,13 @@
],
"secondary": []
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 28.0,
+ "setpoint_low": 16.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise",
"zone_profiles": [
"active",
@@ -795,22 +1075,50 @@
},
"e39529c79ab54fda9bed26cfc0447546": {
"active_preset": "away",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 21.5,
+ "setpoint_low": 17.5,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off",
"Opstaan weekdag",
"Werkdag schema",
"Weekend"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 25.0,
+ "setpoint_low": 17.5,
+ "upper_bound": 30.0
+ },
"climate_mode": "cool",
"control_state": "idle",
"dev_class": "climate",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 22.0,
+ "setpoint_low": 17.5,
+ "upper_bound": 30.0
+ },
"model": "ThermoZone",
"name": "Slaapkamer JM",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 30.0,
+ "setpoint_low": 10.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
"no_frost",
"vacation",
- "away",
"home",
+ "away",
"asleep"
],
"select_schedule": "off",
@@ -832,6 +1140,13 @@
],
"secondary": []
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 28.0,
+ "setpoint_low": 16.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise",
"zone_profiles": [
"active",
@@ -911,17 +1226,45 @@
},
"fa5fa6b34f6b40a0972988b20e888ed4": {
"active_preset": "away",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 22.0,
+ "setpoint_low": 21.5,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off",
"Opstaan weekdag",
"Werkdag schema",
"Weekend"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 25.0,
+ "setpoint_low": 21.5,
+ "upper_bound": 30.0
+ },
"climate_mode": "auto",
"control_state": "idle",
"dev_class": "climate",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 22.0,
+ "setpoint_low": 21.5,
+ "upper_bound": 30.0
+ },
"model": "ThermoZone",
"name": "Woonkamer",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 30.0,
+ "setpoint_low": 10.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
"no_frost",
"vacation",
@@ -948,6 +1291,13 @@
],
"secondary": []
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 28.0,
+ "setpoint_low": 16.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise",
"zone_profiles": [
"active",
diff --git a/fixtures/adam_jip/data.json b/fixtures/adam_jip/data.json
index 04a2d5ede..3ec32adf8 100644
--- a/fixtures/adam_jip/data.json
+++ b/fixtures/adam_jip/data.json
@@ -1,20 +1,44 @@
{
"06aecb3d00354375924f50c47af36bd2": {
"active_preset": "no_frost",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 13.0,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 13.0,
+ "upper_bound": 30.0
+ },
"climate_mode": "heat",
"control_state": "idle",
"dev_class": "climate",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 13.0,
+ "upper_bound": 30.0
+ },
"model": "ThermoZone",
"name": "Slaapkamer",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 9.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
+ "vacation",
+ "no_frost",
"home",
- "asleep",
"away",
- "vacation",
- "no_frost"
+ "asleep"
],
"select_schedule": "off",
"select_zone_profile": "active",
@@ -35,6 +59,12 @@
"356b65335e274d769c338223e7af9c33"
]
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise",
"zone_profiles": [
"active",
@@ -44,14 +74,38 @@
},
"13228dab8ce04617af318a2888b3c548": {
"active_preset": "home",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 17.0,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
"climate_mode": "heat",
"control_state": "idle",
"dev_class": "climate",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 20.0,
+ "upper_bound": 30.0
+ },
"model": "ThermoZone",
"name": "Woonkamer",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 10.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
"home",
"asleep",
@@ -78,6 +132,12 @@
"833de10f269c4deab58fb9df69901b4e"
]
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise",
"zone_profiles": [
"active",
@@ -286,20 +346,44 @@
},
"d27aede973b54be484f6842d1b2802ad": {
"active_preset": "home",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 13.0,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 13.0,
+ "upper_bound": 30.0
+ },
"climate_mode": "heat",
"control_state": "idle",
"dev_class": "climate",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 13.0,
+ "upper_bound": 30.0
+ },
"model": "ThermoZone",
"name": "Kinderkamer",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 9.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
+ "vacation",
+ "no_frost",
"home",
- "asleep",
"away",
- "vacation",
- "no_frost"
+ "asleep"
],
"select_schedule": "off",
"select_zone_profile": "active",
@@ -320,6 +404,12 @@
"d4496250d0e942cfa7aea3476e9070d5"
]
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise",
"zone_profiles": [
"active",
@@ -353,20 +443,44 @@
},
"d58fec52899f4f1c92e4f8fad6d8c48c": {
"active_preset": "home",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 13.0,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 13.0,
+ "upper_bound": 30.0
+ },
"climate_mode": "heat",
"control_state": "idle",
"dev_class": "climate",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 13.0,
+ "upper_bound": 30.0
+ },
"model": "ThermoZone",
"name": "Logeerkamer",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 9.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
+ "vacation",
+ "no_frost",
"home",
- "asleep",
"away",
- "vacation",
- "no_frost"
+ "asleep"
],
"select_schedule": "off",
"select_zone_profile": "active",
@@ -387,6 +501,12 @@
"1da4d325838e4ad8aac12177214505c9"
]
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise",
"zone_profiles": [
"active",
diff --git a/fixtures/adam_multiple_devices_per_zone/data.json b/fixtures/adam_multiple_devices_per_zone/data.json
index 697796878..44d307e86 100644
--- a/fixtures/adam_multiple_devices_per_zone/data.json
+++ b/fixtures/adam_multiple_devices_per_zone/data.json
@@ -22,6 +22,12 @@
},
"08963fec7c53423ca5680aa4cb502c63": {
"active_preset": "away",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 17.0,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off",
"CV Roan",
@@ -30,17 +36,35 @@
"Badkamer Schema",
"CV Jessie"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 14.0,
+ "upper_bound": 30.0
+ },
"climate_mode": "auto",
"control_state": "idle",
"dev_class": "climate",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 21.0,
+ "upper_bound": 30.0
+ },
"model": "ThermoZone",
"name": "Badkamer",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 10.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
- "home",
"asleep",
+ "no_frost",
"away",
- "vacation",
- "no_frost"
+ "home",
+ "vacation"
],
"select_schedule": "Badkamer Schema",
"sensors": {
@@ -59,10 +83,22 @@
],
"secondary": []
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 12.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise"
},
"12493538af164a409c6a1c79e38afe1c": {
"active_preset": "away",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off",
"CV Roan",
@@ -71,17 +107,35 @@
"Badkamer Schema",
"CV Jessie"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 12.0,
+ "upper_bound": 30.0
+ },
"climate_mode": "heat",
"control_state": "idle",
"dev_class": "climate",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 20.0,
+ "upper_bound": 30.0
+ },
"model": "ThermoZone",
"name": "Bios",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 8.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
"home",
- "asleep",
"away",
"vacation",
- "no_frost"
+ "no_frost",
+ "asleep"
],
"select_schedule": "off",
"sensors": {
@@ -103,6 +157,12 @@
"a2c3583e0a6349358998b760cea82d2a"
]
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 12.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise"
},
"21f2b542c49845e6bb416884c55778d6": {
@@ -128,6 +188,12 @@
},
"446ac08dd04d4eff8ac57489757b7314": {
"active_preset": "no_frost",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 17.0,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off",
"CV Roan",
@@ -136,11 +202,29 @@
"Badkamer Schema",
"CV Jessie"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
"climate_mode": "heat",
"control_state": "idle",
"dev_class": "climate",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 20.0,
+ "upper_bound": 30.0
+ },
"model": "ThermoZone",
"name": "Garage",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 10.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
"home",
"asleep",
@@ -164,6 +248,12 @@
],
"secondary": []
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise"
},
"4a810418d5394b3f82727340b91ba740": {
@@ -284,6 +374,12 @@
},
"82fa13f017d240daa0d0ea1775420f24": {
"active_preset": "asleep",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 16.0,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off",
"CV Roan",
@@ -292,17 +388,35 @@
"Badkamer Schema",
"CV Jessie"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 12.0,
+ "upper_bound": 30.0
+ },
"climate_mode": "auto",
"control_state": "idle",
"dev_class": "climate",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 20.0,
+ "upper_bound": 30.0
+ },
"model": "ThermoZone",
"name": "Jessie",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 10.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
"home",
- "asleep",
+ "no_frost",
"away",
"vacation",
- "no_frost"
+ "asleep"
],
"select_schedule": "CV Jessie",
"sensors": {
@@ -322,6 +436,12 @@
"d3da73bde12a47d5a6b8f9dad971f2ec"
]
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 11.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise"
},
"90986d591dcd426cae3ec3e8111ff730": {
@@ -439,6 +559,12 @@
},
"c50f167537524366a5af7aa3942feb1e": {
"active_preset": "home",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 18.0,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off",
"CV Roan",
@@ -447,17 +573,35 @@
"Badkamer Schema",
"CV Jessie"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 17.0,
+ "upper_bound": 30.0
+ },
"climate_mode": "auto",
"control_state": "heating",
"dev_class": "climate",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 21.5,
+ "upper_bound": 30.0
+ },
"model": "ThermoZone",
"name": "Woonkamer",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 12.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
- "home",
+ "vacation",
"asleep",
+ "no_frost",
"away",
- "vacation",
- "no_frost"
+ "home"
],
"select_schedule": "GF7 Woonkamer",
"sensors": {
@@ -479,6 +623,12 @@
"b310b72a0e354bfab43089919b9a88bf"
]
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise"
},
"cd0ddb54ef694e11ac18ed1cbce5dbbd": {
diff --git a/fixtures/adam_onoff_cooling_fake_firmware/data.json b/fixtures/adam_onoff_cooling_fake_firmware/data.json
index a24e27d98..a81284da4 100644
--- a/fixtures/adam_onoff_cooling_fake_firmware/data.json
+++ b/fixtures/adam_onoff_cooling_fake_firmware/data.json
@@ -90,17 +90,45 @@
},
"fa5fa6b34f6b40a0972988b20e888ed4": {
"active_preset": "away",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 22.0,
+ "setpoint_low": 21.5,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off",
"Opstaan weekdag",
"Werkdag schema",
"Weekend"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 25.0,
+ "setpoint_low": 21.5,
+ "upper_bound": 30.0
+ },
"climate_mode": "auto",
"control_state": "idle",
"dev_class": "climate",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 22.0,
+ "setpoint_low": 21.5,
+ "upper_bound": 30.0
+ },
"model": "ThermoZone",
"name": "Woonkamer",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 30.0,
+ "setpoint_low": 10.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
"no_frost",
"vacation",
@@ -127,6 +155,13 @@
],
"secondary": []
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 28.0,
+ "setpoint_low": 16.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise",
"zone_profiles": [
"active",
diff --git a/fixtures/adam_plus_anna/data.json b/fixtures/adam_plus_anna/data.json
index 936cdb711..4123a2830 100644
--- a/fixtures/adam_plus_anna/data.json
+++ b/fixtures/adam_plus_anna/data.json
@@ -1,15 +1,39 @@
{
"009490cc2f674ce6b576863fbb64f867": {
"active_preset": "home",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 17.0,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off",
"Weekschema"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
"climate_mode": "auto",
"control_state": "idle",
"dev_class": "climate",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 20.0,
+ "upper_bound": 30.0
+ },
"model": "ThermoZone",
"name": "Living room",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 10.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
"home",
"asleep",
@@ -35,6 +59,12 @@
],
"secondary": []
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise"
},
"2743216f626f43948deec1f7ab3b3d70": {
diff --git a/fixtures/adam_plus_anna_new/data.json b/fixtures/adam_plus_anna_new/data.json
index 6b4350c15..4f8af21d3 100644
--- a/fixtures/adam_plus_anna_new/data.json
+++ b/fixtures/adam_plus_anna_new/data.json
@@ -302,6 +302,12 @@
},
"f2bf9048bef64cc5b6d5110154e33c81": {
"active_preset": "home",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 17.0,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off",
"Badkamer",
@@ -309,11 +315,29 @@
"Weekschema",
"Test"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 17.0,
+ "upper_bound": 30.0
+ },
"climate_mode": "auto",
"control_state": "heating",
"dev_class": "climate",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 19.0,
+ "upper_bound": 30.0
+ },
"model": "ThermoZone",
"name": "Living room",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 10.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
"vacation",
"no_frost",
@@ -342,6 +366,12 @@
],
"secondary": []
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise",
"zone_profiles": [
"active",
@@ -351,6 +381,12 @@
},
"f871b8c4d63549319221e294e4f88074": {
"active_preset": "vacation",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 12.0,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off",
"Badkamer",
@@ -358,15 +394,33 @@
"Weekschema",
"Test"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
"climate_mode": "heat",
"control_state": "idle",
"dev_class": "climate",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 18.0,
+ "upper_bound": 30.0
+ },
"model": "ThermoZone",
"name": "Bathroom",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 10.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
- "vacation",
"no_frost",
"asleep",
+ "vacation",
"home",
"away"
],
@@ -391,6 +445,12 @@
"1772a4ea304041adb83f357b751341ff"
]
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 12.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise",
"zone_profiles": [
"active",
diff --git a/fixtures/adam_plus_anna_new_regulation_off/data.json b/fixtures/adam_plus_anna_new_regulation_off/data.json
index fcfef409b..8ec048bdd 100644
--- a/fixtures/adam_plus_anna_new_regulation_off/data.json
+++ b/fixtures/adam_plus_anna_new_regulation_off/data.json
@@ -254,6 +254,12 @@
},
"f2bf9048bef64cc5b6d5110154e33c81": {
"active_preset": "home",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 17.0,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off",
"Badkamer",
@@ -261,16 +267,34 @@
"Vakantie",
"Weekschema"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 17.5,
+ "upper_bound": 30.0
+ },
"climate_mode": "off",
"control_state": "idle",
"dev_class": "climate",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 18.5,
+ "upper_bound": 30.0
+ },
"model": "ThermoZone",
"name": "Living room",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 10.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
- "no_frost",
- "asleep",
"vacation",
+ "no_frost",
"home",
+ "asleep",
"away"
],
"select_schedule": "off",
@@ -292,6 +316,12 @@
],
"secondary": []
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise",
"zone_profiles": [
"active",
@@ -301,6 +331,12 @@
},
"f871b8c4d63549319221e294e4f88074": {
"active_preset": "home",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 12.0,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off",
"Badkamer",
@@ -308,11 +344,29 @@
"Vakantie",
"Weekschema"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
"climate_mode": "off",
"control_state": "idle",
"dev_class": "climate",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 18.0,
+ "upper_bound": 30.0
+ },
"model": "ThermoZone",
"name": "Bathroom",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 10.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
"no_frost",
"asleep",
@@ -341,6 +395,12 @@
"1772a4ea304041adb83f357b751341ff"
]
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 12.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise",
"zone_profiles": [
"active",
diff --git a/fixtures/adam_zone_per_device/data.json b/fixtures/adam_zone_per_device/data.json
index e9771f0d7..40fad1963 100644
--- a/fixtures/adam_zone_per_device/data.json
+++ b/fixtures/adam_zone_per_device/data.json
@@ -22,6 +22,12 @@
},
"08963fec7c53423ca5680aa4cb502c63": {
"active_preset": "away",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 17.0,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off",
"CV Roan",
@@ -30,17 +36,35 @@
"Badkamer Schema",
"CV Jessie"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 14.0,
+ "upper_bound": 30.0
+ },
"climate_mode": "auto",
"control_state": "idle",
"dev_class": "climate",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 21.0,
+ "upper_bound": 30.0
+ },
"model": "ThermoZone",
"name": "Badkamer",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 10.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
- "home",
"asleep",
+ "no_frost",
"away",
- "vacation",
- "no_frost"
+ "home",
+ "vacation"
],
"select_schedule": "Badkamer Schema",
"sensors": {
@@ -60,10 +84,22 @@
"680423ff840043738f42cc7f1ff97a36"
]
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 12.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise"
},
"12493538af164a409c6a1c79e38afe1c": {
"active_preset": "away",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off",
"CV Roan",
@@ -72,17 +108,35 @@
"Badkamer Schema",
"CV Jessie"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 12.0,
+ "upper_bound": 30.0
+ },
"climate_mode": "heat",
"control_state": "idle",
"dev_class": "climate",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 20.0,
+ "upper_bound": 30.0
+ },
"model": "ThermoZone",
"name": "Bios",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 8.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
"home",
- "asleep",
"away",
"vacation",
- "no_frost"
+ "no_frost",
+ "asleep"
],
"select_schedule": "off",
"sensors": {
@@ -104,6 +158,12 @@
"a2c3583e0a6349358998b760cea82d2a"
]
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 12.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise"
},
"21f2b542c49845e6bb416884c55778d6": {
@@ -129,6 +189,12 @@
},
"446ac08dd04d4eff8ac57489757b7314": {
"active_preset": "no_frost",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 17.0,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off",
"CV Roan",
@@ -137,11 +203,29 @@
"Badkamer Schema",
"CV Jessie"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
"climate_mode": "heat",
"control_state": "idle",
"dev_class": "climate",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 20.0,
+ "upper_bound": 30.0
+ },
"model": "ThermoZone",
"name": "Garage",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 10.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
"home",
"asleep",
@@ -165,6 +249,12 @@
],
"secondary": []
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise"
},
"4a810418d5394b3f82727340b91ba740": {
@@ -285,6 +375,12 @@
},
"82fa13f017d240daa0d0ea1775420f24": {
"active_preset": "asleep",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 16.0,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off",
"CV Roan",
@@ -293,17 +389,35 @@
"Badkamer Schema",
"CV Jessie"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 12.0,
+ "upper_bound": 30.0
+ },
"climate_mode": "auto",
"control_state": "idle",
"dev_class": "climate",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 20.0,
+ "upper_bound": 30.0
+ },
"model": "ThermoZone",
"name": "Jessie",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 10.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
"home",
- "asleep",
+ "no_frost",
"away",
"vacation",
- "no_frost"
+ "asleep"
],
"select_schedule": "CV Jessie",
"sensors": {
@@ -323,6 +437,12 @@
"d3da73bde12a47d5a6b8f9dad971f2ec"
]
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 11.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise"
},
"90986d591dcd426cae3ec3e8111ff730": {
@@ -440,6 +560,12 @@
},
"c50f167537524366a5af7aa3942feb1e": {
"active_preset": "home",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 18.0,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off",
"CV Roan",
@@ -448,17 +574,35 @@
"Badkamer Schema",
"CV Jessie"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 17.0,
+ "upper_bound": 30.0
+ },
"climate_mode": "auto",
"control_state": "heating",
"dev_class": "climate",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 21.5,
+ "upper_bound": 30.0
+ },
"model": "ThermoZone",
"name": "Woonkamer",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 12.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
- "home",
+ "vacation",
"asleep",
+ "no_frost",
"away",
- "vacation",
- "no_frost"
+ "home"
],
"select_schedule": "GF7 Woonkamer",
"sensors": {
@@ -480,6 +624,12 @@
"b310b72a0e354bfab43089919b9a88bf"
]
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise"
},
"cd0ddb54ef694e11ac18ed1cbce5dbbd": {
diff --git a/fixtures/anna_elga_2/data.json b/fixtures/anna_elga_2/data.json
index a2a591f4d..0aaeb5ab7 100644
--- a/fixtures/anna_elga_2/data.json
+++ b/fixtures/anna_elga_2/data.json
@@ -35,18 +35,46 @@
},
"ebd90df1ab334565b5895f37590ccff4": {
"active_preset": "home",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 23.0,
+ "setpoint_low": 18.0,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off",
"Thermostat schedule"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 25.0,
+ "setpoint_low": 15.0,
+ "upper_bound": 30.0
+ },
"climate_mode": "auto",
"control_state": "heating",
"dev_class": "thermostat",
"firmware": "2018-02-08T11:15:53+01:00",
"hardware": "6539-1301-5002",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 23.0,
+ "setpoint_low": 18.5,
+ "upper_bound": 30.0
+ },
"location": "d3ce834534114348be628b61b26d9220",
"model": "ThermoTouch",
"name": "Anna",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 30.0,
+ "setpoint_low": 10.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
"away",
"no_frost",
@@ -76,6 +104,13 @@
"setpoint_low": 19.5,
"upper_bound": 30.0
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 27.0,
+ "setpoint_low": 15.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise"
},
"fb49af122f6e4b0f91267e1cf7666d6f": {
diff --git a/fixtures/anna_elga_2_cooling/data.json b/fixtures/anna_elga_2_cooling/data.json
index 4c9b08154..f1a401941 100644
--- a/fixtures/anna_elga_2_cooling/data.json
+++ b/fixtures/anna_elga_2_cooling/data.json
@@ -42,18 +42,46 @@
},
"ebd90df1ab334565b5895f37590ccff4": {
"active_preset": "home",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 23.0,
+ "setpoint_low": 19.0,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off",
"Thermostat schedule"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 25.0,
+ "setpoint_low": 15.0,
+ "upper_bound": 30.0
+ },
"climate_mode": "auto",
"control_state": "cooling",
"dev_class": "thermostat",
"firmware": "2018-02-08T11:15:53+01:00",
"hardware": "6539-1301-5002",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 23.0,
+ "setpoint_low": 19.5,
+ "upper_bound": 30.0
+ },
"location": "d3ce834534114348be628b61b26d9220",
"model": "ThermoTouch",
"name": "Anna",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 30.0,
+ "setpoint_low": 10.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
"away",
"no_frost",
@@ -83,6 +111,13 @@
"setpoint_low": 4.0,
"upper_bound": 30.0
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 27.0,
+ "setpoint_low": 15.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise"
},
"fb49af122f6e4b0f91267e1cf7666d6f": {
diff --git a/fixtures/anna_elga_2_schedule_off/data.json b/fixtures/anna_elga_2_schedule_off/data.json
index f77cd2383..ffe061a6f 100644
--- a/fixtures/anna_elga_2_schedule_off/data.json
+++ b/fixtures/anna_elga_2_schedule_off/data.json
@@ -42,18 +42,46 @@
},
"ebd90df1ab334565b5895f37590ccff4": {
"active_preset": "home",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 23.0,
+ "setpoint_low": 19.0,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off",
"Thermostat schedule"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 25.0,
+ "setpoint_low": 15.0,
+ "upper_bound": 30.0
+ },
"climate_mode": "heat_cool",
"control_state": "idle",
"dev_class": "thermostat",
"firmware": "2018-02-08T11:15:53+01:00",
"hardware": "6539-1301-5002",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 23.0,
+ "setpoint_low": 19.5,
+ "upper_bound": 30.0
+ },
"location": "d3ce834534114348be628b61b26d9220",
"model": "ThermoTouch",
"name": "Anna",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 30.0,
+ "setpoint_low": 10.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
"away",
"no_frost",
@@ -83,6 +111,13 @@
"setpoint_low": 19.5,
"upper_bound": 30.0
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 27.0,
+ "setpoint_low": 15.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise"
},
"fb49af122f6e4b0f91267e1cf7666d6f": {
diff --git a/fixtures/anna_elga_no_cooling/data.json b/fixtures/anna_elga_no_cooling/data.json
index 47fe95417..ef57ecfda 100644
--- a/fixtures/anna_elga_no_cooling/data.json
+++ b/fixtures/anna_elga_no_cooling/data.json
@@ -65,18 +65,42 @@
},
"3cb70739631c4d17a86b8b12e8a5161b": {
"active_preset": "home",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 20.5,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off",
"standaard"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 20.0,
+ "upper_bound": 30.0
+ },
"climate_mode": "auto",
"control_state": "heating",
"dev_class": "thermostat",
"firmware": "2018-02-08T11:15:53+01:00",
"hardware": "6539-1301-5002",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 21.0,
+ "upper_bound": 30.0
+ },
"location": "c784ee9fdab44e1395b8dee7d7a497d5",
"model": "ThermoTouch",
"name": "Anna",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 10.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
"no_frost",
"home",
@@ -104,6 +128,12 @@
"setpoint": 20.5,
"upper_bound": 30.0
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 17.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise"
}
}
diff --git a/fixtures/anna_heatpump_cooling/data.json b/fixtures/anna_heatpump_cooling/data.json
index 08e3a61ef..ab6f2c7e7 100644
--- a/fixtures/anna_heatpump_cooling/data.json
+++ b/fixtures/anna_heatpump_cooling/data.json
@@ -61,18 +61,46 @@
},
"3cb70739631c4d17a86b8b12e8a5161b": {
"active_preset": "home",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 24.0,
+ "setpoint_low": 20.5,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off",
"standaard"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 25.0,
+ "setpoint_low": 20.0,
+ "upper_bound": 30.0
+ },
"climate_mode": "heat_cool",
"control_state": "cooling",
"dev_class": "thermostat",
"firmware": "2018-02-08T11:15:53+01:00",
"hardware": "6539-1301-5002",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 22.0,
+ "setpoint_low": 21.0,
+ "upper_bound": 30.0
+ },
"location": "c784ee9fdab44e1395b8dee7d7a497d5",
"model": "ThermoTouch",
"name": "Anna",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 30.0,
+ "setpoint_low": 10.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
"no_frost",
"home",
@@ -102,6 +130,13 @@
"setpoint_low": 4.0,
"upper_bound": 30.0
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 28.0,
+ "setpoint_low": 17.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise"
}
}
diff --git a/fixtures/anna_heatpump_cooling_fake_firmware/data.json b/fixtures/anna_heatpump_cooling_fake_firmware/data.json
index b486ef51e..9d9f3d84e 100644
--- a/fixtures/anna_heatpump_cooling_fake_firmware/data.json
+++ b/fixtures/anna_heatpump_cooling_fake_firmware/data.json
@@ -61,18 +61,46 @@
},
"3cb70739631c4d17a86b8b12e8a5161b": {
"active_preset": "home",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 24.0,
+ "setpoint_low": 20.5,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off",
"standaard"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 25.0,
+ "setpoint_low": 20.0,
+ "upper_bound": 30.0
+ },
"climate_mode": "heat_cool",
"control_state": "cooling",
"dev_class": "thermostat",
"firmware": "2018-02-08T11:15:53+01:00",
"hardware": "6539-1301-5002",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 22.0,
+ "setpoint_low": 21.0,
+ "upper_bound": 30.0
+ },
"location": "c784ee9fdab44e1395b8dee7d7a497d5",
"model": "ThermoTouch",
"name": "Anna",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 30.0,
+ "setpoint_low": 10.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
"no_frost",
"home",
@@ -102,6 +130,13 @@
"setpoint_low": 4.0,
"upper_bound": 30.0
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 28.0,
+ "setpoint_low": 17.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise"
}
}
diff --git a/fixtures/anna_heatpump_heating/data.json b/fixtures/anna_heatpump_heating/data.json
index c63972711..8deef46d8 100644
--- a/fixtures/anna_heatpump_heating/data.json
+++ b/fixtures/anna_heatpump_heating/data.json
@@ -67,18 +67,46 @@
},
"3cb70739631c4d17a86b8b12e8a5161b": {
"active_preset": "home",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 24.0,
+ "setpoint_low": 20.5,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off",
"standaard"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 25.0,
+ "setpoint_low": 20.0,
+ "upper_bound": 30.0
+ },
"climate_mode": "auto",
"control_state": "heating",
"dev_class": "thermostat",
"firmware": "2018-02-08T11:15:53+01:00",
"hardware": "6539-1301-5002",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 22.0,
+ "setpoint_low": 21.0,
+ "upper_bound": 30.0
+ },
"location": "c784ee9fdab44e1395b8dee7d7a497d5",
"model": "ThermoTouch",
"name": "Anna",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 30.0,
+ "setpoint_low": 10.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
"no_frost",
"home",
@@ -108,6 +136,13 @@
"setpoint_low": 20.5,
"upper_bound": 30.0
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 28.0,
+ "setpoint_low": 17.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise"
}
}
diff --git a/fixtures/anna_loria_cooling_active/data.json b/fixtures/anna_loria_cooling_active/data.json
index 1dadad338..dbb5c9f7e 100644
--- a/fixtures/anna_loria_cooling_active/data.json
+++ b/fixtures/anna_loria_cooling_active/data.json
@@ -1,19 +1,47 @@
{
"582dfbdace4d4aeb832923ce7d1ddda0": {
"active_preset": "home",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 25.5,
+ "setpoint_low": 19.5,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off",
"Winter",
"Test "
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 25.0,
+ "setpoint_low": 15.0,
+ "upper_bound": 30.0
+ },
"climate_mode": "auto",
"control_state": "cooling",
"dev_class": "thermostat",
"firmware": "2018-02-08T11:15:53+01:00",
"hardware": "6539-1301-5002",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 20.5,
+ "setpoint_low": 20.5,
+ "upper_bound": 30.0
+ },
"location": "15da035090b847e7a21f93e08c015ebc",
"model": "ThermoTouch",
"name": "Anna",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 30.0,
+ "setpoint_low": 10.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
"away",
"vacation",
@@ -41,6 +69,13 @@
"setpoint_low": 4.0,
"upper_bound": 30.0
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 28.0,
+ "setpoint_low": 15.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise"
},
"9ff0569b4984459fb243af64c0901894": {
diff --git a/fixtures/anna_loria_driessens/data.json b/fixtures/anna_loria_driessens/data.json
index ccac7bddf..4fd7a56a8 100644
--- a/fixtures/anna_loria_driessens/data.json
+++ b/fixtures/anna_loria_driessens/data.json
@@ -20,6 +20,13 @@
},
"9fb768d699e44c7fb5cc50309dc4e7d4": {
"active_preset": "home",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 25.0,
+ "setpoint_low": 19.0,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off",
"Verwarmen@9-23u",
@@ -27,14 +34,35 @@
"VERWARMEN",
"KOELEN"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 26.0,
+ "setpoint_low": 17.0,
+ "upper_bound": 30.0
+ },
"climate_mode": "auto",
"control_state": "idle",
"dev_class": "thermostat",
"firmware": "2018-02-08T11:15:53+01:00",
"hardware": "6539-1301-5002",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 21.0,
+ "setpoint_low": 20.0,
+ "upper_bound": 30.0
+ },
"location": "fa70e08550c94de3a34feb27ecf31421",
"model": "ThermoTouch",
"name": "Anna",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 30.0,
+ "setpoint_low": 17.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
"no_frost",
"asleep",
@@ -62,6 +90,13 @@
"setpoint_low": 20.0,
"upper_bound": 30.0
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 28.0,
+ "setpoint_low": 15.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise"
},
"a449cbc334ae4a5bb7f89064984b2906": {
diff --git a/fixtures/anna_loria_heating_idle/data.json b/fixtures/anna_loria_heating_idle/data.json
index 682cdc878..532006bda 100644
--- a/fixtures/anna_loria_heating_idle/data.json
+++ b/fixtures/anna_loria_heating_idle/data.json
@@ -1,19 +1,47 @@
{
"582dfbdace4d4aeb832923ce7d1ddda0": {
"active_preset": "home",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 25.5,
+ "setpoint_low": 19.5,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off",
"Winter",
"Test "
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 25.0,
+ "setpoint_low": 15.0,
+ "upper_bound": 30.0
+ },
"climate_mode": "auto",
"control_state": "idle",
"dev_class": "thermostat",
"firmware": "2018-02-08T11:15:53+01:00",
"hardware": "6539-1301-5002",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 20.5,
+ "setpoint_low": 20.5,
+ "upper_bound": 30.0
+ },
"location": "15da035090b847e7a21f93e08c015ebc",
"model": "ThermoTouch",
"name": "Anna",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 30.0,
+ "setpoint_low": 10.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
"away",
"vacation",
@@ -41,6 +69,13 @@
"setpoint_low": 20.5,
"upper_bound": 30.0
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 28.0,
+ "setpoint_low": 15.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise"
},
"9ff0569b4984459fb243af64c0901894": {
diff --git a/fixtures/anna_p1/data.json b/fixtures/anna_p1/data.json
index 5f4df3f00..0a15747c5 100644
--- a/fixtures/anna_p1/data.json
+++ b/fixtures/anna_p1/data.json
@@ -1,18 +1,42 @@
{
"1e5e55b958ac445583602f767cb45942": {
"active_preset": "home",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 17.0,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off",
"Thermostat schedule"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
"climate_mode": "auto",
"control_state": "idle",
"dev_class": "thermostat",
"firmware": "2018-02-08T11:15:53+01:00",
"hardware": "6539-1301-500",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 20.0,
+ "upper_bound": 30.0
+ },
"location": "5b13651d79c4454684fd268850b1bff8",
"model": "ThermoTouch",
"name": "Anna",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 10.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
"home",
"asleep",
@@ -38,6 +62,12 @@
"setpoint": 19.0,
"upper_bound": 30.0
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise"
},
"36b937e44ad145bab165fa0fe99d742d": {
diff --git a/fixtures/anna_v4/data.json b/fixtures/anna_v4/data.json
index 742fad881..c18484a03 100644
--- a/fixtures/anna_v4/data.json
+++ b/fixtures/anna_v4/data.json
@@ -1,19 +1,43 @@
{
"01b85360fdd243d0aaad4d6ac2a5ba7e": {
"active_preset": "home",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 17.0,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off",
"Standaard",
"Thuiswerken"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 17.5,
+ "upper_bound": 30.0
+ },
"climate_mode": "heat",
"control_state": "heating",
"dev_class": "thermostat",
"firmware": "2018-02-08T11:15:53+01:00",
"hardware": "6539-1301-5002",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 20.5,
+ "upper_bound": 30.0
+ },
"location": "eb5309212bf5407bb143e5bfa3b18aee",
"model": "ThermoTouch",
"name": "Anna",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 10.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
"vacation",
"no_frost",
@@ -39,6 +63,12 @@
"setpoint": 20.5,
"upper_bound": 30.0
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise"
},
"0466eae8520144c78afb29628384edeb": {
diff --git a/fixtures/anna_v4_dhw/data.json b/fixtures/anna_v4_dhw/data.json
index b373166ba..a1fee82a7 100644
--- a/fixtures/anna_v4_dhw/data.json
+++ b/fixtures/anna_v4_dhw/data.json
@@ -1,19 +1,43 @@
{
"01b85360fdd243d0aaad4d6ac2a5ba7e": {
"active_preset": "home",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 17.0,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off",
"Standaard",
"Thuiswerken"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 17.5,
+ "upper_bound": 30.0
+ },
"climate_mode": "heat",
"control_state": "idle",
"dev_class": "thermostat",
"firmware": "2018-02-08T11:15:53+01:00",
"hardware": "6539-1301-5002",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 20.5,
+ "upper_bound": 30.0
+ },
"location": "eb5309212bf5407bb143e5bfa3b18aee",
"model": "ThermoTouch",
"name": "Anna",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 10.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
"vacation",
"no_frost",
@@ -39,6 +63,12 @@
"setpoint": 20.5,
"upper_bound": 30.0
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise"
},
"0466eae8520144c78afb29628384edeb": {
diff --git a/fixtures/anna_v4_no_tag/data.json b/fixtures/anna_v4_no_tag/data.json
index 2c9a40c8c..c3d9fd07b 100644
--- a/fixtures/anna_v4_no_tag/data.json
+++ b/fixtures/anna_v4_no_tag/data.json
@@ -1,19 +1,43 @@
{
"01b85360fdd243d0aaad4d6ac2a5ba7e": {
"active_preset": "home",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 17.0,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off",
"Standaard",
"Thuiswerken"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 17.5,
+ "upper_bound": 30.0
+ },
"climate_mode": "auto",
"control_state": "heating",
"dev_class": "thermostat",
"firmware": "2018-02-08T11:15:53+01:00",
"hardware": "6539-1301-5002",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 20.5,
+ "upper_bound": 30.0
+ },
"location": "eb5309212bf5407bb143e5bfa3b18aee",
"model": "ThermoTouch",
"name": "Anna",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 10.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
"vacation",
"no_frost",
@@ -39,6 +63,12 @@
"setpoint": 20.5,
"upper_bound": 30.0
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise"
},
"0466eae8520144c78afb29628384edeb": {
diff --git a/fixtures/anna_without_boiler_fw441/data.json b/fixtures/anna_without_boiler_fw441/data.json
index 5dbecb4dd..b774a7700 100644
--- a/fixtures/anna_without_boiler_fw441/data.json
+++ b/fixtures/anna_without_boiler_fw441/data.json
@@ -1,19 +1,43 @@
{
"7ffbb3ab4b6c4ab2915d7510f7bf8fe9": {
"active_preset": "home",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 16.0,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off",
"Test",
"Normaal"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 16.0,
+ "upper_bound": 30.0
+ },
"climate_mode": "auto",
"control_state": "idle",
"dev_class": "thermostat",
"firmware": "2018-02-08T11:15:53+01:00",
"hardware": "6539-1301-5002",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 19.0,
+ "upper_bound": 30.0
+ },
"location": "c34c6864216446528e95d88985e714cc",
"model": "ThermoTouch",
"name": "Anna",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 10.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
"no_frost",
"asleep",
@@ -39,6 +63,12 @@
"setpoint": 19.0,
"upper_bound": 30.0
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 18.5,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise"
},
"a270735e4ccd45239424badc0578a2b1": {
diff --git a/fixtures/m_adam_cooling/data.json b/fixtures/m_adam_cooling/data.json
index f33fb1533..ba13d7634 100644
--- a/fixtures/m_adam_cooling/data.json
+++ b/fixtures/m_adam_cooling/data.json
@@ -213,6 +213,13 @@
},
"f2bf9048bef64cc5b6d5110154e33c81": {
"active_preset": "home",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 24.0,
+ "setpoint_low": 17.0,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off",
"Badkamer",
@@ -220,11 +227,32 @@
"Weekschema",
"Test"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 25.0,
+ "setpoint_low": 17.0,
+ "upper_bound": 30.0
+ },
"climate_mode": "cool",
"control_state": "cooling",
"dev_class": "climate",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 22.0,
+ "setpoint_low": 19.0,
+ "upper_bound": 30.0
+ },
"model": "ThermoZone",
"name": "Living room",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 30.0,
+ "setpoint_low": 10.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
"vacation",
"no_frost",
@@ -253,6 +281,13 @@
],
"secondary": []
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 28.0,
+ "setpoint_low": 15.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise",
"zone_profiles": [
"active",
@@ -262,6 +297,13 @@
},
"f871b8c4d63549319221e294e4f88074": {
"active_preset": "vacation",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 24.0,
+ "setpoint_low": 12.0,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off",
"Badkamer",
@@ -269,15 +311,36 @@
"Weekschema",
"Test"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 25.0,
+ "setpoint_low": 15.0,
+ "upper_bound": 30.0
+ },
"climate_mode": "auto",
"control_state": "cooling",
"dev_class": "climate",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 22.0,
+ "setpoint_low": 18.0,
+ "upper_bound": 30.0
+ },
"model": "ThermoZone",
"name": "Bathroom",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 30.0,
+ "setpoint_low": 10.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
- "vacation",
"no_frost",
"asleep",
+ "vacation",
"home",
"away"
],
@@ -302,6 +365,13 @@
"1772a4ea304041adb83f357b751341ff"
]
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 28.0,
+ "setpoint_low": 12.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise",
"zone_profiles": [
"active",
diff --git a/fixtures/m_adam_heating/data.json b/fixtures/m_adam_heating/data.json
index 9c15aa068..7fcbc3ed4 100644
--- a/fixtures/m_adam_heating/data.json
+++ b/fixtures/m_adam_heating/data.json
@@ -218,6 +218,12 @@
},
"f2bf9048bef64cc5b6d5110154e33c81": {
"active_preset": "home",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 17.0,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off",
"Badkamer",
@@ -225,11 +231,29 @@
"Weekschema",
"Test"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 17.0,
+ "upper_bound": 30.0
+ },
"climate_mode": "heat",
"control_state": "preheating",
"dev_class": "climate",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 19.0,
+ "upper_bound": 30.0
+ },
"model": "ThermoZone",
"name": "Living room",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 10.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
"vacation",
"no_frost",
@@ -258,6 +282,12 @@
],
"secondary": []
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise",
"zone_profiles": [
"active",
@@ -267,6 +297,12 @@
},
"f871b8c4d63549319221e294e4f88074": {
"active_preset": "vacation",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 12.0,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off",
"Badkamer",
@@ -274,15 +310,33 @@
"Weekschema",
"Test"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
"climate_mode": "auto",
"control_state": "idle",
"dev_class": "climate",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 18.0,
+ "upper_bound": 30.0
+ },
"model": "ThermoZone",
"name": "Bathroom",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 10.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
- "vacation",
"no_frost",
"asleep",
+ "vacation",
"home",
"away"
],
@@ -307,6 +361,12 @@
"1772a4ea304041adb83f357b751341ff"
]
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 12.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise",
"zone_profiles": [
"active",
diff --git a/fixtures/m_adam_heating_off_schedule/data.json b/fixtures/m_adam_heating_off_schedule/data.json
index ad489df47..3af382e4e 100644
--- a/fixtures/m_adam_heating_off_schedule/data.json
+++ b/fixtures/m_adam_heating_off_schedule/data.json
@@ -218,6 +218,12 @@
},
"f2bf9048bef64cc5b6d5110154e33c81": {
"active_preset": "home",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 17.0,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off",
"Badkamer",
@@ -225,11 +231,29 @@
"Weekschema",
"Test"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 17.0,
+ "upper_bound": 30.0
+ },
"climate_mode": "off",
"control_state": "idle",
"dev_class": "climate",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 19.0,
+ "upper_bound": 30.0
+ },
"model": "ThermoZone",
"name": "Living room",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 10.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
"vacation",
"no_frost",
@@ -258,6 +282,12 @@
],
"secondary": []
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise",
"zone_profiles": [
"active",
@@ -267,6 +297,12 @@
},
"f871b8c4d63549319221e294e4f88074": {
"active_preset": "vacation",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 12.0,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off",
"Badkamer",
@@ -274,15 +310,33 @@
"Weekschema",
"Test"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
"climate_mode": "off",
"control_state": "idle",
"dev_class": "climate",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 18.0,
+ "upper_bound": 30.0
+ },
"model": "ThermoZone",
"name": "Bathroom",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 10.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
- "vacation",
"no_frost",
"asleep",
+ "vacation",
"home",
"away"
],
@@ -307,6 +361,12 @@
"1772a4ea304041adb83f357b751341ff"
]
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 12.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise",
"zone_profiles": [
"active",
diff --git a/fixtures/m_adam_jip/data.json b/fixtures/m_adam_jip/data.json
index dd73cb9ce..a65d9ceb7 100644
--- a/fixtures/m_adam_jip/data.json
+++ b/fixtures/m_adam_jip/data.json
@@ -1,19 +1,43 @@
{
"06aecb3d00354375924f50c47af36bd2": {
"active_preset": "no_frost",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 13.0,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 13.0,
+ "upper_bound": 30.0
+ },
"climate_mode": "off",
"dev_class": "climate",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 13.0,
+ "upper_bound": 30.0
+ },
"model": "ThermoZone",
"name": "Slaapkamer",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 9.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
+ "vacation",
+ "no_frost",
"home",
- "asleep",
"away",
- "vacation",
- "no_frost"
+ "asleep"
],
"select_schedule": "off",
"select_zone_profile": "active",
@@ -34,6 +58,12 @@
"356b65335e274d769c338223e7af9c33"
]
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise",
"zone_profiles": [
"active",
@@ -43,14 +73,38 @@
},
"13228dab8ce04617af318a2888b3c548": {
"active_preset": "home",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 17.0,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
"climate_mode": "heat",
"control_state": "idle",
"dev_class": "climate",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 20.0,
+ "upper_bound": 30.0
+ },
"model": "ThermoZone",
"name": "Woonkamer",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 10.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
"home",
"asleep",
@@ -77,6 +131,12 @@
"833de10f269c4deab58fb9df69901b4e"
]
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise",
"zone_profiles": [
"active",
@@ -285,20 +345,44 @@
},
"d27aede973b54be484f6842d1b2802ad": {
"active_preset": "home",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 13.0,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 13.0,
+ "upper_bound": 30.0
+ },
"climate_mode": "heat",
"control_state": "idle",
"dev_class": "climate",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 13.0,
+ "upper_bound": 30.0
+ },
"model": "ThermoZone",
"name": "Kinderkamer",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 9.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
+ "vacation",
+ "no_frost",
"home",
- "asleep",
"away",
- "vacation",
- "no_frost"
+ "asleep"
],
"select_schedule": "off",
"select_zone_profile": "active",
@@ -319,6 +403,12 @@
"d4496250d0e942cfa7aea3476e9070d5"
]
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise",
"zone_profiles": [
"active",
@@ -352,20 +442,44 @@
},
"d58fec52899f4f1c92e4f8fad6d8c48c": {
"active_preset": "home",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 13.0,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 13.0,
+ "upper_bound": 30.0
+ },
"climate_mode": "heat",
"control_state": "idle",
"dev_class": "climate",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 13.0,
+ "upper_bound": 30.0
+ },
"model": "ThermoZone",
"name": "Logeerkamer",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 9.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
+ "vacation",
+ "no_frost",
"home",
- "asleep",
"away",
- "vacation",
- "no_frost"
+ "asleep"
],
"select_schedule": "off",
"select_zone_profile": "active",
@@ -386,6 +500,12 @@
"1da4d325838e4ad8aac12177214505c9"
]
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise",
"zone_profiles": [
"active",
diff --git a/fixtures/m_adam_multiple_devices_per_zone/data.json b/fixtures/m_adam_multiple_devices_per_zone/data.json
index 2c7881426..0d9b61939 100644
--- a/fixtures/m_adam_multiple_devices_per_zone/data.json
+++ b/fixtures/m_adam_multiple_devices_per_zone/data.json
@@ -22,6 +22,12 @@
},
"08963fec7c53423ca5680aa4cb502c63": {
"active_preset": "away",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 17.0,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off",
"CV Roan",
@@ -30,17 +36,35 @@
"Badkamer Schema",
"CV Jessie"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 14.0,
+ "upper_bound": 30.0
+ },
"climate_mode": "auto",
"control_state": "idle",
"dev_class": "climate",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 21.0,
+ "upper_bound": 30.0
+ },
"model": "ThermoZone",
"name": "Badkamer",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 10.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
- "home",
"asleep",
+ "no_frost",
"away",
- "vacation",
- "no_frost"
+ "home",
+ "vacation"
],
"select_schedule": "Badkamer Schema",
"sensors": {
@@ -59,10 +83,22 @@
],
"secondary": []
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 12.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise"
},
"12493538af164a409c6a1c79e38afe1c": {
"active_preset": "away",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off",
"CV Roan",
@@ -71,17 +107,35 @@
"Badkamer Schema",
"CV Jessie"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 12.0,
+ "upper_bound": 30.0
+ },
"climate_mode": "heat",
"control_state": "idle",
"dev_class": "climate",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 20.0,
+ "upper_bound": 30.0
+ },
"model": "ThermoZone",
"name": "Bios",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 8.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
"home",
- "asleep",
"away",
"vacation",
- "no_frost"
+ "no_frost",
+ "asleep"
],
"select_schedule": "off",
"sensors": {
@@ -103,6 +157,12 @@
"a2c3583e0a6349358998b760cea82d2a"
]
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 12.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise"
},
"21f2b542c49845e6bb416884c55778d6": {
@@ -128,14 +188,38 @@
},
"446ac08dd04d4eff8ac57489757b7314": {
"active_preset": "no_frost",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 17.0,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
"climate_mode": "heat",
"control_state": "idle",
"dev_class": "climate",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 20.0,
+ "upper_bound": 30.0
+ },
"model": "ThermoZone",
"name": "Garage",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 10.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
"home",
"asleep",
@@ -159,6 +243,12 @@
],
"secondary": []
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise"
},
"4a810418d5394b3f82727340b91ba740": {
@@ -279,6 +369,12 @@
},
"82fa13f017d240daa0d0ea1775420f24": {
"active_preset": "asleep",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 16.0,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off",
"CV Roan",
@@ -287,17 +383,35 @@
"Badkamer Schema",
"CV Jessie"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 12.0,
+ "upper_bound": 30.0
+ },
"climate_mode": "auto",
"control_state": "idle",
"dev_class": "climate",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 20.0,
+ "upper_bound": 30.0
+ },
"model": "ThermoZone",
"name": "Jessie",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 10.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
"home",
- "asleep",
+ "no_frost",
"away",
"vacation",
- "no_frost"
+ "asleep"
],
"select_schedule": "CV Jessie",
"sensors": {
@@ -317,6 +431,12 @@
"d3da73bde12a47d5a6b8f9dad971f2ec"
]
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 11.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise"
},
"90986d591dcd426cae3ec3e8111ff730": {
@@ -434,6 +554,12 @@
},
"c50f167537524366a5af7aa3942feb1e": {
"active_preset": "home",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 18.0,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off",
"CV Roan",
@@ -442,17 +568,35 @@
"Badkamer Schema",
"CV Jessie"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 17.0,
+ "upper_bound": 30.0
+ },
"climate_mode": "auto",
"control_state": "heating",
"dev_class": "climate",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 21.5,
+ "upper_bound": 30.0
+ },
"model": "ThermoZone",
"name": "Woonkamer",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 12.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
- "home",
+ "vacation",
"asleep",
+ "no_frost",
"away",
- "vacation",
- "no_frost"
+ "home"
],
"select_schedule": "GF7 Woonkamer",
"sensors": {
@@ -474,6 +618,12 @@
"b310b72a0e354bfab43089919b9a88bf"
]
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise"
},
"cd0ddb54ef694e11ac18ed1cbce5dbbd": {
diff --git a/fixtures/m_anna_heatpump_cooling/data.json b/fixtures/m_anna_heatpump_cooling/data.json
index 9b421f792..a4f23c17b 100644
--- a/fixtures/m_anna_heatpump_cooling/data.json
+++ b/fixtures/m_anna_heatpump_cooling/data.json
@@ -67,18 +67,46 @@
},
"3cb70739631c4d17a86b8b12e8a5161b": {
"active_preset": "home",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 24.0,
+ "setpoint_low": 20.5,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off",
"standaard"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 25.0,
+ "setpoint_low": 20.0,
+ "upper_bound": 30.0
+ },
"climate_mode": "auto",
"control_state": "cooling",
"dev_class": "thermostat",
"firmware": "2018-02-08T11:15:53+01:00",
"hardware": "6539-1301-5002",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 22.0,
+ "setpoint_low": 21.0,
+ "upper_bound": 30.0
+ },
"location": "c784ee9fdab44e1395b8dee7d7a497d5",
"model": "ThermoTouch",
"name": "Anna",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 30.0,
+ "setpoint_low": 10.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
"no_frost",
"home",
@@ -108,6 +136,13 @@
"setpoint_low": 20.5,
"upper_bound": 30.0
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 28.0,
+ "setpoint_low": 17.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise"
}
}
diff --git a/fixtures/m_anna_heatpump_idle/data.json b/fixtures/m_anna_heatpump_idle/data.json
index 4ba2db676..6cd2a5524 100644
--- a/fixtures/m_anna_heatpump_idle/data.json
+++ b/fixtures/m_anna_heatpump_idle/data.json
@@ -67,18 +67,46 @@
},
"3cb70739631c4d17a86b8b12e8a5161b": {
"active_preset": "home",
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 24.0,
+ "setpoint_low": 20.5,
+ "upper_bound": 30.0
+ },
"available_schedules": [
"off",
"standaard"
],
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 25.0,
+ "setpoint_low": 20.0,
+ "upper_bound": 30.0
+ },
"climate_mode": "auto",
"control_state": "idle",
"dev_class": "thermostat",
"firmware": "2018-02-08T11:15:53+01:00",
"hardware": "6539-1301-5002",
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 22.0,
+ "setpoint_low": 21.0,
+ "upper_bound": 30.0
+ },
"location": "c784ee9fdab44e1395b8dee7d7a497d5",
"model": "ThermoTouch",
"name": "Anna",
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 30.0,
+ "setpoint_low": 10.0,
+ "upper_bound": 30.0
+ },
"preset_modes": [
"no_frost",
"home",
@@ -108,6 +136,13 @@
"setpoint_low": 20.5,
"upper_bound": 30.0
},
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 28.0,
+ "setpoint_low": 17.0,
+ "upper_bound": 30.0
+ },
"vendor": "Plugwise"
}
}
diff --git a/plugwise/__init__.py b/plugwise/__init__.py
index 7110fdf09..feb0b39d2 100644
--- a/plugwise/__init__.py
+++ b/plugwise/__init__.py
@@ -411,10 +411,11 @@ async def set_number(
dev_id: str,
key: str,
temperature: float,
+ setpoint: str = "setpoint",
) -> None:
- """Set the maximum boiler- or DHW-setpoint on the Central Heating boiler or the temperature-offset on a Thermostat."""
+ """Set the maximum boiler- or DHW-setpoint on the Central Heating boiler, the temperature-offset on a Thermostat or a preset temperature."""
try:
- await self._smile_api.set_number(dev_id, key, temperature)
+ await self._smile_api.set_number(dev_id, key, temperature, setpoint)
except ConnectionFailedError as exc:
raise ConnectionFailedError(
f"Failed to set number '{key}': {str(exc)}"
diff --git a/plugwise/constants.py b/plugwise/constants.py
index d251f76ba..12c54b698 100644
--- a/plugwise/constants.py
+++ b/plugwise/constants.py
@@ -265,6 +265,27 @@
]
ACTIVE_ACTUATORS: Final[tuple[str, ...]] = get_args(ActuatorType)
+PresetTemperatureType = Literal[
+ "home_preset_temperature",
+ "asleep_preset_temperature",
+ "away_preset_temperature",
+ "vacation_preset_temperature",
+ "no_frost_preset_temperature",
+]
+PRESET_TEMPERATURES: Final[dict[PresetTemperatureType, str]] = {
+ "home_preset_temperature": "home",
+ "asleep_preset_temperature": "asleep",
+ "away_preset_temperature": "away",
+ "vacation_preset_temperature": "vacation",
+ "no_frost_preset_temperature": "no_frost",
+}
+PRESET_TEMPERATURE_RESOLUTION: Final[float] = 0.5
+PRESET_SETPOINT_ATTRIBUTES: Final[dict[str, str]] = {
+ "setpoint": "heating_setpoint",
+ "setpoint_low": "heating_setpoint",
+ "setpoint_high": "cooling_setpoint",
+}
+
ACTIVE_KEYS: Final[tuple[str, ...]] = (
"control_state",
"lower_bound",
@@ -584,6 +605,11 @@ class GwEntityData(TypedDict, total=False):
# Presets:
active_preset: str | None
preset_modes: list[str] | None
+ home_preset_temperature: ActuatorData
+ asleep_preset_temperature: ActuatorData
+ away_preset_temperature: ActuatorData
+ vacation_preset_temperature: ActuatorData
+ no_frost_preset_temperature: ActuatorData
# Schedules:
available_schedules: list[str]
select_schedule: str
diff --git a/plugwise/data.py b/plugwise/data.py
index dd03b8624..e5989d2ae 100644
--- a/plugwise/data.py
+++ b/plugwise/data.py
@@ -13,6 +13,8 @@
MAX_SETPOINT,
MIN_SETPOINT,
OFF,
+ PRESET_TEMPERATURE_RESOLUTION,
+ PRESET_TEMPERATURES,
ActuatorData,
GwEntityData,
)
@@ -273,6 +275,9 @@ def _climate_data(self, location_id: str, entity: GwEntityData) -> None:
if presets := self._presets(loc_id):
entity["preset_modes"] = list(presets)
entity["active_preset"] = self._preset(loc_id)
+ # Only a zone's own rule can be edited without touching other zones
+ if self._preset_rule_id(loc_id) is not None:
+ self._preset_temperatures(presets, entity)
# Schedule
entity["available_schedules"] = [OFF]
@@ -300,6 +305,35 @@ def _climate_data(self, location_id: str, entity: GwEntityData) -> None:
loc_id, avail_schedules, sel_schedule, entity
)
+ def _preset_temperatures(
+ self, presets: dict[str, list[float]], entity: GwEntityData
+ ) -> None:
+ """Helper-function for _climate_data().
+
+ Add the setpoints of each preset as an adjustable value: the heating setpoint,
+ or with cooling present the heating (low) and cooling (high) setpoints.
+ """
+ for key, preset in PRESET_TEMPERATURES.items():
+ if preset in presets:
+ heating, cooling = presets[preset]
+ if self._cooling_present:
+ entity[key] = ActuatorData(
+ lower_bound=MIN_SETPOINT,
+ resolution=PRESET_TEMPERATURE_RESOLUTION,
+ setpoint_high=cooling,
+ setpoint_low=heating,
+ upper_bound=MAX_SETPOINT,
+ )
+ self._count += 5
+ else:
+ entity[key] = ActuatorData(
+ lower_bound=MIN_SETPOINT,
+ resolution=PRESET_TEMPERATURE_RESOLUTION,
+ setpoint=heating,
+ upper_bound=MAX_SETPOINT,
+ )
+ self._count += 4
+
def check_reg_mode(self, mode: str) -> bool:
"""Helper-function for device_data_climate()."""
gateway = self.gw_entities[self._gateway_id]
diff --git a/plugwise/helper.py b/plugwise/helper.py
index ee361e63b..4a2645fa2 100644
--- a/plugwise/helper.py
+++ b/plugwise/helper.py
@@ -78,6 +78,11 @@ def search_actuator_functionalities(
return None
+def _own_rule_ids(rules: dict[str, dict[str, str]], loc_id: str) -> list[str]:
+ """Return the ids of the rules attached to loc_id."""
+ return [rule_id for rule_id, data in rules.items() if data["location"] == loc_id]
+
+
class SmileHelper(SmileCommon):
"""The SmileHelper class."""
@@ -918,11 +923,8 @@ def _preset(self, loc_id: str) -> str | None:
def _presets(self, loc_id: str) -> dict[str, list[float]]:
"""Collect Presets for a Thermostat based on location_id."""
presets: dict[str, list[float]] = {}
- tag_1 = "zone_setpoint_and_state_based_on_preset"
- tag_2 = "Thermostat presets"
- if not (rule_ids := self._rule_ids_by_tag(tag_1, loc_id)):
- if not (rule_ids := self._rule_ids_by_name(tag_2, loc_id)):
- return presets # pragma: no cover
+ if not (rule_ids := self._preset_rule_ids(loc_id)):
+ return presets # pragma: no cover
for rule_id in rule_ids:
directives = self._domain_objects.find(f'rule[@id="{rule_id}"]/directives')
@@ -935,6 +937,40 @@ def _presets(self, loc_id: str) -> dict[str, list[float]]:
return presets
+ def _preset_rule_ids(self, loc_id: str) -> list[str]:
+ """Helper-function for _presets().
+
+ Read only the preset rule attached to loc_id, so each zone gets its own presets.
+ Fall back to all preset rules when none or several are attached.
+ """
+ if (rule_id := self._preset_rule_id(loc_id)) is not None:
+ return [rule_id]
+
+ return list(self._all_preset_rules(loc_id))
+
+ def _preset_rule_id(self, loc_id: str) -> str | None:
+ """Return the id of the one preset rule attached to loc_id, or None."""
+ own = _own_rule_ids(self._all_preset_rules(loc_id), loc_id)
+ return own[0] if len(own) == 1 else None
+
+ def _all_preset_rules(self, loc_id: str) -> dict[str, dict[str, str]]:
+ """Collect all preset rules, choosing tagged or named rules per zone.
+
+ Use the rules found by name when loc_id has no tagged rule of its own but does
+ have a rule by name, or when there are no tagged rules at all.
+ """
+ tag_1 = "zone_setpoint_and_state_based_on_preset"
+ tag_2 = "Thermostat presets"
+ tagged = self._rule_ids_by_tag(tag_1, loc_id)
+ if _own_rule_ids(tagged, loc_id):
+ return tagged
+
+ named = self._rule_ids_by_name(tag_2, loc_id)
+ if _own_rule_ids(named, loc_id) or not tagged:
+ return named
+
+ return tagged
+
def _rule_ids_by_name(self, name: str, loc_id: str) -> dict[str, dict[str, str]]:
"""Helper-function for _presets().
diff --git a/plugwise/legacy/smile.py b/plugwise/legacy/smile.py
index 9118ff02b..841d95fb9 100644
--- a/plugwise/legacy/smile.py
+++ b/plugwise/legacy/smile.py
@@ -148,6 +148,7 @@ async def set_number(
dev_id: str,
key: str,
temperature: float,
+ setpoint: str = "setpoint",
) -> None:
"""Set-function placeholder for legacy devices."""
diff --git a/plugwise/smile.py b/plugwise/smile.py
index 0aea89a58..5e44d86b6 100644
--- a/plugwise/smile.py
+++ b/plugwise/smile.py
@@ -5,9 +5,11 @@
from __future__ import annotations
+import asyncio
from collections.abc import Awaitable, Callable
import datetime as dt
from typing import Any, cast
+from xml.sax.saxutils import quoteattr
from plugwise.constants import (
ALLOWED_ZONE_PROFILES,
@@ -21,6 +23,8 @@
NONE,
NOTIFICATIONS,
OFF,
+ PRESET_SETPOINT_ATTRIBUTES,
+ PRESET_TEMPERATURES,
RULES,
STATE_OFF,
STATE_ON,
@@ -37,6 +41,11 @@
from munch import Munch
+def _xml_attrs(attrs: dict[str, str]) -> str:
+ """Return XML attributes, with escaped values."""
+ return " ".join(f"{key}={quoteattr(value)}" for key, value in attrs.items())
+
+
def model_to_switch_items(model: str, state: str, switch: Munch) -> tuple[str, Munch]:
"""Translate state and switch attributes based on model name.
@@ -86,6 +95,7 @@ def __init__(
self._schedule_old_states = _schedule_old_states
self.smile = smile
self.therms_with_offset_func: list[str] = []
+ self._preset_lock = asyncio.Lock()
@property
def cooling_present(self) -> bool:
@@ -169,8 +179,21 @@ async def set_number(
dev_id: str,
key: str,
temperature: float,
+ setpoint: str = "setpoint",
) -> None:
- """Set the boiler- or DHW-setpoint on the Central Heating boiler or the temperature-offset on a Thermostat."""
+ """Set the boiler- or DHW-setpoint on the Central Heating boiler, the temperature-offset on a Thermostat or a preset temperature.
+
+ For a preset temperature, setpoint picks the heating (setpoint, setpoint_low) or cooling (setpoint_high) value.
+ """
+ if key in PRESET_TEMPERATURES:
+ if (attribute := PRESET_SETPOINT_ATTRIBUTES.get(setpoint)) is None:
+ raise PlugwiseError(f"Plugwise: invalid preset setpoint {setpoint}")
+ # An Adam zone is its own location, an Anna thermostat has one
+ loc_id = self.gw_entities[dev_id].get("location", dev_id)
+ preset = PRESET_TEMPERATURES[key]
+ await self.set_preset_temperature(loc_id, preset, temperature, attribute)
+ return
+
match key:
case "temperature_offset":
await self.set_offset(dev_id, temperature)
@@ -211,6 +234,71 @@ async def set_offset(self, dev_id: str, offset: float) -> None:
uri = f"{APPLIANCES};id={dev_id}/offset;type=temperature_offset"
await self.call_request(uri, method="put", data=data)
+ async def set_preset_temperature(
+ self,
+ loc_id: str,
+ preset: str,
+ temperature: float,
+ attribute: str = "heating_setpoint",
+ ) -> None:
+ """Set the heating or cooling setpoint of one preset in the zone's preset rule.
+
+ The gateway re-applies the zone's active preset, which resets a manual setpoint.
+ """
+ if (rule_id := self._preset_rule_id(loc_id)) is None:
+ raise PlugwiseError("Plugwise: this zone has no preset rule of its own")
+
+ locator = f'rule[@id="{rule_id}"]/directives/when[@preset="{preset}"]/then'
+ if (then := self._domain_objects.find(locator)) is None:
+ raise PlugwiseError(f"Plugwise: invalid preset {preset}")
+ if not MIN_SETPOINT <= temperature <= MAX_SETPOINT:
+ raise PlugwiseError(
+ f"Plugwise: preset temperature must be between {MIN_SETPOINT} and {MAX_SETPOINT}"
+ )
+
+ # The gateway replaces the whole directive set, so every preset is sent.
+ # The lock keeps a concurrent write from resending a stale value for another preset.
+ async with self._preset_lock:
+ heating = float(then.get("heating_setpoint"))
+ cooling = float(then.get("cooling_setpoint"))
+ if attribute == "heating_setpoint":
+ heating = temperature
+ else:
+ cooling = temperature
+ # Without cooling the stored cooling setpoint is a default nobody can change
+ if self._cooling_present and heating > cooling:
+ raise PlugwiseError(
+ f"Plugwise: the {preset} heating setpoint {heating} is above its cooling setpoint {cooling}. Lower the heating setpoint or raise the cooling setpoint."
+ )
+
+ value = str(temperature)
+ directives = ""
+ for when in self._domain_objects.findall(
+ f'rule[@id="{rule_id}"]/directives/when'
+ ):
+ if (when_then := when.find("then")) is None:
+ raise PlugwiseError(
+ f"Plugwise: preset rule {rule_id} has a switch point without settings"
+ )
+ then_attrs = dict(when_then.attrib)
+ if when.get("preset") == preset:
+ then_attrs[attribute] = value
+ directives += (
+ f""
+ f""
+ )
+
+ data = (
+ ""
+ f""
+ f"{directives}"
+ ""
+ ""
+ )
+ await self.call_request(f"{RULES};id={rule_id}", method="put", data=data)
+ for then in self._domain_objects.findall(locator):
+ then.set(attribute, value)
+
async def set_preset(self, loc_id: str, preset: str) -> None:
"""Set the given Preset on the relevant Thermostat - from LOCATIONS."""
if (presets := self._presets(loc_id)) is None:
diff --git a/scripts/manual_fixtures.py b/scripts/manual_fixtures.py
index 7d28cc01b..509d7dded 100755
--- a/scripts/manual_fixtures.py
+++ b/scripts/manual_fixtures.py
@@ -109,6 +109,20 @@ def json_writer(manual_name: str, output: dict) -> None:
m_adam_cooling["f871b8c4d63549319221e294e4f88074"]["control_state"] = "cooling"
m_adam_cooling["f871b8c4d63549319221e294e4f88074"]["climate_mode"] = "auto"
+# With cooling present, each preset carries a heating (low) and cooling (high) setpoint
+cooling_setpoints = {
+ "home_preset_temperature": 22.0,
+ "asleep_preset_temperature": 24.0,
+ "away_preset_temperature": 25.0,
+ "vacation_preset_temperature": 28.0,
+ "no_frost_preset_temperature": 30.0,
+}
+for zone in ("f2bf9048bef64cc5b6d5110154e33c81", "f871b8c4d63549319221e294e4f88074"):
+ for key, cooling in cooling_setpoints.items():
+ preset = m_adam_cooling[zone][key]
+ preset["setpoint_low"] = preset.pop("setpoint")
+ preset["setpoint_high"] = cooling
+
# Go for da22
m_adam_cooling["da224107914542988a88561b4452b0f6"]["select_regulation_mode"] = "cooling"
@@ -127,13 +141,15 @@ def json_writer(manual_name: str, output: dict) -> None:
m_adam_cooling["056ee145a816487eaa69243c3280f8bf"]["binary_sensors"]["flame_state"] = (
False
)
-m_adam_cooling["056ee145a816487eaa69243c3280f8bf"]["boiler_temperature"]["current"] = 19.0
+m_adam_cooling["056ee145a816487eaa69243c3280f8bf"]["boiler_temperature"]["current"] = (
+ 19.0
+)
m_adam_cooling["056ee145a816487eaa69243c3280f8bf"]["sensors"][
"intended_boiler_temperature"
] = 17.5
-m_adam_cooling["056ee145a816487eaa69243c3280f8bf"]["sensors"][
- "water_temperature"
-] = 19.0
+m_adam_cooling["056ee145a816487eaa69243c3280f8bf"]["sensors"]["water_temperature"] = (
+ 19.0
+)
json_writer("m_adam_cooling", m_adam_cooling)
@@ -141,6 +157,15 @@ def json_writer(manual_name: str, output: dict) -> None:
m_adam_heating = m_adam_cooling.copy()
+# Without cooling, each preset carries only the heating setpoint
+for zone_id in ("f2bf9048bef64cc5b6d5110154e33c81", "f871b8c4d63549319221e294e4f88074"):
+ zone = m_adam_heating[zone_id] = dict(m_adam_heating[zone_id])
+ for key in cooling_setpoints:
+ preset = dict(zone[key])
+ preset["setpoint"] = preset.pop("setpoint_low")
+ preset.pop("setpoint_high")
+ zone[key] = preset
+
# Correct setpoint for "ad4838d7d35c4d6ea796ee12ae5aedf8"
m_adam_heating["f2bf9048bef64cc5b6d5110154e33c81"]["thermostat"]["setpoint"] = 20.0
m_adam_heating["ad4838d7d35c4d6ea796ee12ae5aedf8"]["sensors"]["setpoint"] = 20.0
@@ -185,13 +210,15 @@ def json_writer(manual_name: str, output: dict) -> None:
m_adam_heating["056ee145a816487eaa69243c3280f8bf"]["binary_sensors"]["flame_state"] = (
False
)
-m_adam_heating["056ee145a816487eaa69243c3280f8bf"]["boiler_temperature"]["current"] = 37.0
+m_adam_heating["056ee145a816487eaa69243c3280f8bf"]["boiler_temperature"]["current"] = (
+ 37.0
+)
m_adam_heating["056ee145a816487eaa69243c3280f8bf"]["sensors"][
"intended_boiler_temperature"
] = 38.1
-m_adam_heating["056ee145a816487eaa69243c3280f8bf"]["sensors"][
- "water_temperature"
-] = 37.0
+m_adam_heating["056ee145a816487eaa69243c3280f8bf"]["sensors"]["water_temperature"] = (
+ 37.0
+)
m_adam_heating["056ee145a816487eaa69243c3280f8bf"]["dhw_temperature"] = {
"current": 37.0,
"setpoint": 60.0,
@@ -208,17 +235,25 @@ def json_writer(manual_name: str, output: dict) -> None:
# Version with select_regulation = off and an active schedule
m_adam_heating_off_schedule = m_adam_heating.copy()
-# Updates for f2bf9048bef64cc5b6d5110154e33c81"
+# Updates for f2bf9048bef64cc5b6d5110154e33c81"
m_adam_heating_off_schedule["f2bf9048bef64cc5b6d5110154e33c81"]["climate_mode"] = "off"
-m_adam_heating_off_schedule["f2bf9048bef64cc5b6d5110154e33c81"]["control_state"] = "idle"
+m_adam_heating_off_schedule["f2bf9048bef64cc5b6d5110154e33c81"]["control_state"] = (
+ "idle"
+)
# Go for e2f4
m_adam_heating_off_schedule["f871b8c4d63549319221e294e4f88074"]["climate_mode"] = "off"
-m_adam_heating_off_schedule["f871b8c4d63549319221e294e4f88074"]["control_state"] = "idle"
-m_adam_heating_off_schedule["f871b8c4d63549319221e294e4f88074"]["select_schedule"] = "Badkamer"
+m_adam_heating_off_schedule["f871b8c4d63549319221e294e4f88074"]["control_state"] = (
+ "idle"
+)
+m_adam_heating_off_schedule["f871b8c4d63549319221e294e4f88074"]["select_schedule"] = (
+ "Badkamer"
+)
# Go for da22
-m_adam_heating_off_schedule["da224107914542988a88561b4452b0f6"]["select_regulation_mode"] = "off"
+m_adam_heating_off_schedule["da224107914542988a88561b4452b0f6"][
+ "select_regulation_mode"
+] = "off"
# Go for 056e
m_adam_heating_off_schedule["056ee145a816487eaa69243c3280f8bf"]["binary_sensors"][
@@ -253,8 +288,12 @@ def json_writer(manual_name: str, output: dict) -> None:
"cooling_state"
] = True
-m_anna_heatpump_cooling["1cbf783bb11e4a7c8a6843dee3a86927"]["boiler_temperature"]["current"] = 22.7
-m_anna_heatpump_cooling["1cbf783bb11e4a7c8a6843dee3a86927"]["dhw_temperature"]["current"] = 41.5
+m_anna_heatpump_cooling["1cbf783bb11e4a7c8a6843dee3a86927"]["boiler_temperature"][
+ "current"
+] = 22.7
+m_anna_heatpump_cooling["1cbf783bb11e4a7c8a6843dee3a86927"]["dhw_temperature"][
+ "current"
+] = 41.5
m_anna_heatpump_cooling["1cbf783bb11e4a7c8a6843dee3a86927"]["sensors"][
"dhw_temperature"
] = 41.5
@@ -312,8 +351,12 @@ def json_writer(manual_name: str, output: dict) -> None:
"cooling_state"
] = False
-m_anna_heatpump_idle["1cbf783bb11e4a7c8a6843dee3a86927"]["boiler_temperature"]["current"] = 19.1
-m_anna_heatpump_idle["1cbf783bb11e4a7c8a6843dee3a86927"]["dhw_temperature"]["current"] = 46.3
+m_anna_heatpump_idle["1cbf783bb11e4a7c8a6843dee3a86927"]["boiler_temperature"][
+ "current"
+] = 19.1
+m_anna_heatpump_idle["1cbf783bb11e4a7c8a6843dee3a86927"]["dhw_temperature"][
+ "current"
+] = 46.3
m_anna_heatpump_idle["1cbf783bb11e4a7c8a6843dee3a86927"]["sensors"][
"intended_boiler_temperature"
] = 18.0
diff --git a/tests/data/adam/adam_bad_thermostat.json b/tests/data/adam/adam_bad_thermostat.json
index 2ef25b842..eb4b593de 100644
--- a/tests/data/adam/adam_bad_thermostat.json
+++ b/tests/data/adam/adam_bad_thermostat.json
@@ -60,6 +60,36 @@
"vacation",
"no_frost"
],
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 20.0,
+ "upper_bound": 30.0
+ },
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 17.0,
+ "upper_bound": 30.0
+ },
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 10.0,
+ "upper_bound": 30.0
+ },
"select_schedule": "off",
"sensors": {
"temperature": 20.3
diff --git a/tests/data/adam/adam_heatpump_cooling.json b/tests/data/adam/adam_heatpump_cooling.json
index af25e6f25..01313001e 100644
--- a/tests/data/adam/adam_heatpump_cooling.json
+++ b/tests/data/adam/adam_heatpump_cooling.json
@@ -16,9 +16,44 @@
"no_frost",
"vacation",
"away",
- "home",
- "asleep"
+ "asleep",
+ "home"
],
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 22.0,
+ "setpoint_low": 19.0,
+ "upper_bound": 30.0
+ },
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 22.0,
+ "setpoint_low": 18.0,
+ "upper_bound": 30.0
+ },
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 25.0,
+ "setpoint_low": 18.5,
+ "upper_bound": 30.0
+ },
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 28.0,
+ "setpoint_low": 16.0,
+ "upper_bound": 30.0
+ },
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 30.0,
+ "setpoint_low": 10.0,
+ "upper_bound": 30.0
+ },
"select_schedule": "off",
"select_zone_profile": "passive",
"sensors": {
@@ -158,6 +193,41 @@
"home",
"asleep"
],
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 22.0,
+ "setpoint_low": 18.0,
+ "upper_bound": 30.0
+ },
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 22.0,
+ "setpoint_low": 18.0,
+ "upper_bound": 30.0
+ },
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 25.0,
+ "setpoint_low": 18.5,
+ "upper_bound": 30.0
+ },
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 28.0,
+ "setpoint_low": 16.0,
+ "upper_bound": 30.0
+ },
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 30.0,
+ "setpoint_low": 10.0,
+ "upper_bound": 30.0
+ },
"select_schedule": "off",
"select_zone_profile": "passive",
"sensors": {
@@ -282,10 +352,45 @@
"preset_modes": [
"no_frost",
"vacation",
- "away",
"home",
- "asleep"
+ "asleep",
+ "away"
],
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 22.0,
+ "setpoint_low": 20.5,
+ "upper_bound": 30.0
+ },
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 23.0,
+ "setpoint_low": 20.5,
+ "upper_bound": 30.0
+ },
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 25.0,
+ "setpoint_low": 20.5,
+ "upper_bound": 30.0
+ },
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 28.0,
+ "setpoint_low": 16.0,
+ "upper_bound": 30.0
+ },
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 30.0,
+ "setpoint_low": 10.0,
+ "upper_bound": 30.0
+ },
"select_schedule": "Werkdag schema",
"select_zone_profile": "passive",
"sensors": {
@@ -442,10 +547,45 @@
"preset_modes": [
"no_frost",
"vacation",
- "away",
"home",
- "asleep"
+ "asleep",
+ "away"
],
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 22.0,
+ "setpoint_low": 20.5,
+ "upper_bound": 30.0
+ },
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 23.0,
+ "setpoint_low": 20.5,
+ "upper_bound": 30.0
+ },
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 25.0,
+ "setpoint_low": 20.5,
+ "upper_bound": 30.0
+ },
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 28.0,
+ "setpoint_low": 16.0,
+ "upper_bound": 30.0
+ },
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 30.0,
+ "setpoint_low": 10.0,
+ "upper_bound": 30.0
+ },
"select_schedule": "Werkdag schema",
"select_zone_profile": "passive",
"sensors": {
@@ -489,9 +629,44 @@
"no_frost",
"vacation",
"away",
- "home",
- "asleep"
+ "asleep",
+ "home"
],
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 22.0,
+ "setpoint_low": 20.0,
+ "upper_bound": 30.0
+ },
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 22.0,
+ "setpoint_low": 18.0,
+ "upper_bound": 30.0
+ },
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 25.0,
+ "setpoint_low": 18.5,
+ "upper_bound": 30.0
+ },
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 28.0,
+ "setpoint_low": 16.0,
+ "upper_bound": 30.0
+ },
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 30.0,
+ "setpoint_low": 10.0,
+ "upper_bound": 30.0
+ },
"select_schedule": "off",
"select_zone_profile": "passive",
"sensors": {
@@ -553,10 +728,45 @@
"preset_modes": [
"no_frost",
"vacation",
- "away",
"home",
+ "away",
"asleep"
],
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 22.0,
+ "setpoint_low": 18.0,
+ "upper_bound": 30.0
+ },
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 22.0,
+ "setpoint_low": 18.0,
+ "upper_bound": 30.0
+ },
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 25.0,
+ "setpoint_low": 18.5,
+ "upper_bound": 30.0
+ },
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 28.0,
+ "setpoint_low": 16.0,
+ "upper_bound": 30.0
+ },
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 30.0,
+ "setpoint_low": 10.0,
+ "upper_bound": 30.0
+ },
"select_schedule": "off",
"select_zone_profile": "passive",
"sensors": {
@@ -623,6 +833,41 @@
"home",
"asleep"
],
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 22.0,
+ "setpoint_low": 21.5,
+ "upper_bound": 30.0
+ },
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 22.0,
+ "setpoint_low": 21.5,
+ "upper_bound": 30.0
+ },
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 25.0,
+ "setpoint_low": 21.5,
+ "upper_bound": 30.0
+ },
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 28.0,
+ "setpoint_low": 16.0,
+ "upper_bound": 30.0
+ },
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 30.0,
+ "setpoint_low": 10.0,
+ "upper_bound": 30.0
+ },
"select_schedule": "Werkdag schema",
"select_zone_profile": "active",
"sensors": {
@@ -665,10 +910,45 @@
"preset_modes": [
"no_frost",
"vacation",
+ "asleep",
"away",
- "home",
- "asleep"
+ "home"
],
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 22.0,
+ "setpoint_low": 18.0,
+ "upper_bound": 30.0
+ },
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 22.0,
+ "setpoint_low": 17.5,
+ "upper_bound": 30.0
+ },
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 25.0,
+ "setpoint_low": 18.0,
+ "upper_bound": 30.0
+ },
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 28.0,
+ "setpoint_low": 16.0,
+ "upper_bound": 30.0
+ },
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 30.0,
+ "setpoint_low": 10.0,
+ "upper_bound": 30.0
+ },
"select_schedule": "off",
"select_zone_profile": "active",
"sensors": {
@@ -809,10 +1089,45 @@
"preset_modes": [
"no_frost",
"vacation",
- "away",
"home",
+ "away",
"asleep"
],
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 22.0,
+ "setpoint_low": 17.5,
+ "upper_bound": 30.0
+ },
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 21.5,
+ "setpoint_low": 17.5,
+ "upper_bound": 30.0
+ },
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 25.0,
+ "setpoint_low": 17.5,
+ "upper_bound": 30.0
+ },
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 28.0,
+ "setpoint_low": 16.0,
+ "upper_bound": 30.0
+ },
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 30.0,
+ "setpoint_low": 10.0,
+ "upper_bound": 30.0
+ },
"select_schedule": "off",
"select_zone_profile": "passive",
"sensors": {
@@ -929,6 +1244,41 @@
"home",
"asleep"
],
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 22.0,
+ "setpoint_low": 21.5,
+ "upper_bound": 30.0
+ },
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 22.0,
+ "setpoint_low": 21.5,
+ "upper_bound": 30.0
+ },
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 25.0,
+ "setpoint_low": 21.5,
+ "upper_bound": 30.0
+ },
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 28.0,
+ "setpoint_low": 16.0,
+ "upper_bound": 30.0
+ },
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 30.0,
+ "setpoint_low": 10.0,
+ "upper_bound": 30.0
+ },
"select_schedule": "Werkdag schema",
"select_zone_profile": "active",
"sensors": {
diff --git a/tests/data/adam/adam_jip.json b/tests/data/adam/adam_jip.json
index 1e1dfc36a..cc893b932 100644
--- a/tests/data/adam/adam_jip.json
+++ b/tests/data/adam/adam_jip.json
@@ -10,12 +10,42 @@
"model": "ThermoZone",
"name": "Slaapkamer",
"preset_modes": [
+ "vacation",
+ "no_frost",
"home",
- "asleep",
"away",
- "vacation",
- "no_frost"
+ "asleep"
],
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 13.0,
+ "upper_bound": 30.0
+ },
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 13.0,
+ "upper_bound": 30.0
+ },
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 13.0,
+ "upper_bound": 30.0
+ },
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 9.0,
+ "upper_bound": 30.0
+ },
"select_schedule": "off",
"select_zone_profile": "active",
"sensors": {
@@ -59,6 +89,36 @@
"vacation",
"no_frost"
],
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 20.0,
+ "upper_bound": 30.0
+ },
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 17.0,
+ "upper_bound": 30.0
+ },
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 10.0,
+ "upper_bound": 30.0
+ },
"select_schedule": "off",
"select_zone_profile": "active",
"sensors": {
@@ -295,12 +355,42 @@
"model": "ThermoZone",
"name": "Kinderkamer",
"preset_modes": [
+ "vacation",
+ "no_frost",
"home",
- "asleep",
"away",
- "vacation",
- "no_frost"
+ "asleep"
],
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 13.0,
+ "upper_bound": 30.0
+ },
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 13.0,
+ "upper_bound": 30.0
+ },
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 13.0,
+ "upper_bound": 30.0
+ },
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 9.0,
+ "upper_bound": 30.0
+ },
"select_schedule": "off",
"select_zone_profile": "active",
"sensors": {
@@ -362,12 +452,42 @@
"model": "ThermoZone",
"name": "Logeerkamer",
"preset_modes": [
+ "vacation",
+ "no_frost",
"home",
- "asleep",
"away",
- "vacation",
- "no_frost"
+ "asleep"
],
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 13.0,
+ "upper_bound": 30.0
+ },
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 13.0,
+ "upper_bound": 30.0
+ },
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 13.0,
+ "upper_bound": 30.0
+ },
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 9.0,
+ "upper_bound": 30.0
+ },
"select_schedule": "off",
"select_zone_profile": "active",
"sensors": {
diff --git a/tests/data/adam/adam_multiple_devices_per_zone.json b/tests/data/adam/adam_multiple_devices_per_zone.json
index 697796878..ec7f3008a 100644
--- a/tests/data/adam/adam_multiple_devices_per_zone.json
+++ b/tests/data/adam/adam_multiple_devices_per_zone.json
@@ -36,12 +36,42 @@
"model": "ThermoZone",
"name": "Badkamer",
"preset_modes": [
- "home",
"asleep",
+ "no_frost",
"away",
- "vacation",
- "no_frost"
+ "home",
+ "vacation"
],
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 21.0,
+ "upper_bound": 30.0
+ },
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 17.0,
+ "upper_bound": 30.0
+ },
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 14.0,
+ "upper_bound": 30.0
+ },
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 12.0,
+ "upper_bound": 30.0
+ },
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 10.0,
+ "upper_bound": 30.0
+ },
"select_schedule": "Badkamer Schema",
"sensors": {
"temperature": 18.9
@@ -78,11 +108,41 @@
"name": "Bios",
"preset_modes": [
"home",
- "asleep",
"away",
"vacation",
- "no_frost"
+ "no_frost",
+ "asleep"
],
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 20.0,
+ "upper_bound": 30.0
+ },
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 12.0,
+ "upper_bound": 30.0
+ },
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 12.0,
+ "upper_bound": 30.0
+ },
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 8.0,
+ "upper_bound": 30.0
+ },
"select_schedule": "off",
"sensors": {
"electricity_consumed": 0.0,
@@ -148,6 +208,36 @@
"vacation",
"no_frost"
],
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 20.0,
+ "upper_bound": 30.0
+ },
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 17.0,
+ "upper_bound": 30.0
+ },
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 10.0,
+ "upper_bound": 30.0
+ },
"select_schedule": "off",
"sensors": {
"temperature": 15.6
@@ -299,11 +389,41 @@
"name": "Jessie",
"preset_modes": [
"home",
- "asleep",
+ "no_frost",
"away",
"vacation",
- "no_frost"
+ "asleep"
],
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 20.0,
+ "upper_bound": 30.0
+ },
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 16.0,
+ "upper_bound": 30.0
+ },
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 12.0,
+ "upper_bound": 30.0
+ },
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 11.0,
+ "upper_bound": 30.0
+ },
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 10.0,
+ "upper_bound": 30.0
+ },
"select_schedule": "CV Jessie",
"sensors": {
"temperature": 17.2
@@ -453,12 +573,42 @@
"model": "ThermoZone",
"name": "Woonkamer",
"preset_modes": [
- "home",
+ "vacation",
"asleep",
+ "no_frost",
"away",
- "vacation",
- "no_frost"
+ "home"
],
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 21.5,
+ "upper_bound": 30.0
+ },
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 18.0,
+ "upper_bound": 30.0
+ },
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 17.0,
+ "upper_bound": 30.0
+ },
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 12.0,
+ "upper_bound": 30.0
+ },
"select_schedule": "GF7 Woonkamer",
"sensors": {
"electricity_consumed": 35.6,
diff --git a/tests/data/adam/adam_onoff_cooling_fake_firmware.json b/tests/data/adam/adam_onoff_cooling_fake_firmware.json
index bf2f95f33..6c26ff90b 100644
--- a/tests/data/adam/adam_onoff_cooling_fake_firmware.json
+++ b/tests/data/adam/adam_onoff_cooling_fake_firmware.json
@@ -108,6 +108,41 @@
"home",
"asleep"
],
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 22.0,
+ "setpoint_low": 21.5,
+ "upper_bound": 30.0
+ },
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 22.0,
+ "setpoint_low": 21.5,
+ "upper_bound": 30.0
+ },
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 25.0,
+ "setpoint_low": 21.5,
+ "upper_bound": 30.0
+ },
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 28.0,
+ "setpoint_low": 16.0,
+ "upper_bound": 30.0
+ },
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 30.0,
+ "setpoint_low": 10.0,
+ "upper_bound": 30.0
+ },
"select_schedule": "Werkdag schema",
"select_zone_profile": "active",
"sensors": {
diff --git a/tests/data/adam/adam_plus_anna.json b/tests/data/adam/adam_plus_anna.json
index b561eb69c..c88313808 100644
--- a/tests/data/adam/adam_plus_anna.json
+++ b/tests/data/adam/adam_plus_anna.json
@@ -17,6 +17,36 @@
"vacation",
"no_frost"
],
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 20.0,
+ "upper_bound": 30.0
+ },
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 17.0,
+ "upper_bound": 30.0
+ },
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 10.0,
+ "upper_bound": 30.0
+ },
"select_schedule": "Weekschema",
"sensors": {
"electricity_consumed": 74.2,
diff --git a/tests/data/adam/adam_plus_anna_new.json b/tests/data/adam/adam_plus_anna_new.json
index 19f350021..b68b4b42e 100644
--- a/tests/data/adam/adam_plus_anna_new.json
+++ b/tests/data/adam/adam_plus_anna_new.json
@@ -321,6 +321,36 @@
"home",
"away"
],
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 19.0,
+ "upper_bound": 30.0
+ },
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 17.0,
+ "upper_bound": 30.0
+ },
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 17.0,
+ "upper_bound": 30.0
+ },
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 10.0,
+ "upper_bound": 30.0
+ },
"select_schedule": "Weekschema",
"select_zone_profile": "active",
"sensors": {
@@ -364,12 +394,42 @@
"model": "ThermoZone",
"name": "Bathroom",
"preset_modes": [
- "vacation",
"no_frost",
"asleep",
+ "vacation",
"home",
"away"
],
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 18.0,
+ "upper_bound": 30.0
+ },
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 12.0,
+ "upper_bound": 30.0
+ },
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 12.0,
+ "upper_bound": 30.0
+ },
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 10.0,
+ "upper_bound": 30.0
+ },
"select_schedule": "off",
"select_zone_profile": "passive",
"sensors": {
diff --git a/tests/data/adam/adam_plus_anna_new_regulation_off.json b/tests/data/adam/adam_plus_anna_new_regulation_off.json
index 25c0c695c..d83116c60 100644
--- a/tests/data/adam/adam_plus_anna_new_regulation_off.json
+++ b/tests/data/adam/adam_plus_anna_new_regulation_off.json
@@ -267,12 +267,42 @@
"model": "ThermoZone",
"name": "Living room",
"preset_modes": [
- "no_frost",
- "asleep",
"vacation",
+ "no_frost",
"home",
+ "asleep",
"away"
],
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 18.5,
+ "upper_bound": 30.0
+ },
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 17.0,
+ "upper_bound": 30.0
+ },
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 17.5,
+ "upper_bound": 30.0
+ },
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 10.0,
+ "upper_bound": 30.0
+ },
"select_schedule": "off",
"select_zone_profile": "active",
"sensors": {
@@ -320,6 +350,36 @@
"home",
"away"
],
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 18.0,
+ "upper_bound": 30.0
+ },
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 12.0,
+ "upper_bound": 30.0
+ },
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 12.0,
+ "upper_bound": 30.0
+ },
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 10.0,
+ "upper_bound": 30.0
+ },
"select_schedule": "off",
"select_zone_profile": "passive",
"sensors": {
diff --git a/tests/data/adam/adam_zone_per_device.json b/tests/data/adam/adam_zone_per_device.json
index e9771f0d7..aa1e69c03 100644
--- a/tests/data/adam/adam_zone_per_device.json
+++ b/tests/data/adam/adam_zone_per_device.json
@@ -36,12 +36,42 @@
"model": "ThermoZone",
"name": "Badkamer",
"preset_modes": [
- "home",
"asleep",
+ "no_frost",
"away",
- "vacation",
- "no_frost"
+ "home",
+ "vacation"
],
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 21.0,
+ "upper_bound": 30.0
+ },
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 17.0,
+ "upper_bound": 30.0
+ },
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 14.0,
+ "upper_bound": 30.0
+ },
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 12.0,
+ "upper_bound": 30.0
+ },
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 10.0,
+ "upper_bound": 30.0
+ },
"select_schedule": "Badkamer Schema",
"sensors": {
"temperature": 18.8
@@ -79,11 +109,41 @@
"name": "Bios",
"preset_modes": [
"home",
- "asleep",
"away",
"vacation",
- "no_frost"
+ "no_frost",
+ "asleep"
],
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 20.0,
+ "upper_bound": 30.0
+ },
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 12.0,
+ "upper_bound": 30.0
+ },
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 12.0,
+ "upper_bound": 30.0
+ },
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 8.0,
+ "upper_bound": 30.0
+ },
"select_schedule": "off",
"sensors": {
"electricity_consumed": 0.0,
@@ -149,6 +209,36 @@
"vacation",
"no_frost"
],
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 20.0,
+ "upper_bound": 30.0
+ },
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 17.0,
+ "upper_bound": 30.0
+ },
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 10.0,
+ "upper_bound": 30.0
+ },
"select_schedule": "off",
"sensors": {
"temperature": 15.6
@@ -300,11 +390,41 @@
"name": "Jessie",
"preset_modes": [
"home",
- "asleep",
+ "no_frost",
"away",
"vacation",
- "no_frost"
+ "asleep"
],
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 20.0,
+ "upper_bound": 30.0
+ },
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 16.0,
+ "upper_bound": 30.0
+ },
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 12.0,
+ "upper_bound": 30.0
+ },
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 11.0,
+ "upper_bound": 30.0
+ },
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 10.0,
+ "upper_bound": 30.0
+ },
"select_schedule": "CV Jessie",
"sensors": {
"temperature": 17.1
@@ -454,12 +574,42 @@
"model": "ThermoZone",
"name": "Woonkamer",
"preset_modes": [
- "home",
+ "vacation",
"asleep",
+ "no_frost",
"away",
- "vacation",
- "no_frost"
+ "home"
],
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 21.5,
+ "upper_bound": 30.0
+ },
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 18.0,
+ "upper_bound": 30.0
+ },
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 17.0,
+ "upper_bound": 30.0
+ },
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 12.0,
+ "upper_bound": 30.0
+ },
"select_schedule": "GF7 Woonkamer",
"sensors": {
"electricity_consumed": 35.8,
diff --git a/tests/data/anna/anna_elga_2.json b/tests/data/anna/anna_elga_2.json
index a2a591f4d..1b992d85a 100644
--- a/tests/data/anna/anna_elga_2.json
+++ b/tests/data/anna/anna_elga_2.json
@@ -54,6 +54,41 @@
"home",
"asleep"
],
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 23.0,
+ "setpoint_low": 18.5,
+ "upper_bound": 30.0
+ },
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 23.0,
+ "setpoint_low": 18.0,
+ "upper_bound": 30.0
+ },
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 25.0,
+ "setpoint_low": 15.0,
+ "upper_bound": 30.0
+ },
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 27.0,
+ "setpoint_low": 15.0,
+ "upper_bound": 30.0
+ },
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 30.0,
+ "setpoint_low": 10.0,
+ "upper_bound": 30.0
+ },
"select_schedule": "Thermostat schedule",
"sensors": {
"cooling_activation_outdoor_temperature": 24.0,
diff --git a/tests/data/anna/anna_elga_2_cooling.json b/tests/data/anna/anna_elga_2_cooling.json
index 4417929a1..5036b7aa2 100644
--- a/tests/data/anna/anna_elga_2_cooling.json
+++ b/tests/data/anna/anna_elga_2_cooling.json
@@ -61,6 +61,41 @@
"home",
"asleep"
],
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 23.0,
+ "setpoint_low": 19.5,
+ "upper_bound": 30.0
+ },
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 23.0,
+ "setpoint_low": 19.0,
+ "upper_bound": 30.0
+ },
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 25.0,
+ "setpoint_low": 15.0,
+ "upper_bound": 30.0
+ },
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 27.0,
+ "setpoint_low": 15.0,
+ "upper_bound": 30.0
+ },
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 30.0,
+ "setpoint_low": 10.0,
+ "upper_bound": 30.0
+ },
"select_schedule": "Thermostat schedule",
"sensors": {
"cooling_activation_outdoor_temperature": 26.0,
diff --git a/tests/data/anna/anna_elga_2_schedule_off.json b/tests/data/anna/anna_elga_2_schedule_off.json
index 19622a983..9b09e10f0 100644
--- a/tests/data/anna/anna_elga_2_schedule_off.json
+++ b/tests/data/anna/anna_elga_2_schedule_off.json
@@ -61,6 +61,41 @@
"home",
"asleep"
],
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 23.0,
+ "setpoint_low": 19.5,
+ "upper_bound": 30.0
+ },
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 23.0,
+ "setpoint_low": 19.0,
+ "upper_bound": 30.0
+ },
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 25.0,
+ "setpoint_low": 15.0,
+ "upper_bound": 30.0
+ },
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 27.0,
+ "setpoint_low": 15.0,
+ "upper_bound": 30.0
+ },
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 30.0,
+ "setpoint_low": 10.0,
+ "upper_bound": 30.0
+ },
"select_schedule": "off",
"sensors": {
"cooling_activation_outdoor_temperature": 26.0,
diff --git a/tests/data/anna/anna_elga_no_cooling.json b/tests/data/anna/anna_elga_no_cooling.json
index ffc9aa126..a9abd244d 100644
--- a/tests/data/anna/anna_elga_no_cooling.json
+++ b/tests/data/anna/anna_elga_no_cooling.json
@@ -84,6 +84,36 @@
"asleep",
"vacation"
],
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 21.0,
+ "upper_bound": 30.0
+ },
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 20.5,
+ "upper_bound": 30.0
+ },
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 20.0,
+ "upper_bound": 30.0
+ },
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 17.0,
+ "upper_bound": 30.0
+ },
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 10.0,
+ "upper_bound": 30.0
+ },
"select_schedule": "standaard",
"sensors": {
"cooling_activation_outdoor_temperature": 21.0,
diff --git a/tests/data/anna/anna_heatpump_cooling.json b/tests/data/anna/anna_heatpump_cooling.json
index ba7456870..590fb176f 100644
--- a/tests/data/anna/anna_heatpump_cooling.json
+++ b/tests/data/anna/anna_heatpump_cooling.json
@@ -80,6 +80,41 @@
"asleep",
"vacation"
],
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 22.0,
+ "setpoint_low": 21.0,
+ "upper_bound": 30.0
+ },
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 24.0,
+ "setpoint_low": 20.5,
+ "upper_bound": 30.0
+ },
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 25.0,
+ "setpoint_low": 20.0,
+ "upper_bound": 30.0
+ },
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 28.0,
+ "setpoint_low": 17.0,
+ "upper_bound": 30.0
+ },
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 30.0,
+ "setpoint_low": 10.0,
+ "upper_bound": 30.0
+ },
"select_schedule": "off",
"sensors": {
"cooling_activation_outdoor_temperature": 21.0,
diff --git a/tests/data/anna/anna_heatpump_cooling_fake_firmware.json b/tests/data/anna/anna_heatpump_cooling_fake_firmware.json
index 799f50295..0f9b9cdb8 100644
--- a/tests/data/anna/anna_heatpump_cooling_fake_firmware.json
+++ b/tests/data/anna/anna_heatpump_cooling_fake_firmware.json
@@ -80,6 +80,41 @@
"asleep",
"vacation"
],
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 22.0,
+ "setpoint_low": 21.0,
+ "upper_bound": 30.0
+ },
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 24.0,
+ "setpoint_low": 20.5,
+ "upper_bound": 30.0
+ },
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 25.0,
+ "setpoint_low": 20.0,
+ "upper_bound": 30.0
+ },
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 28.0,
+ "setpoint_low": 17.0,
+ "upper_bound": 30.0
+ },
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 30.0,
+ "setpoint_low": 10.0,
+ "upper_bound": 30.0
+ },
"select_schedule": "off",
"sensors": {
"cooling_activation_outdoor_temperature": 21.0,
diff --git a/tests/data/anna/anna_heatpump_heating.json b/tests/data/anna/anna_heatpump_heating.json
index a54846d1d..e0d969f2c 100644
--- a/tests/data/anna/anna_heatpump_heating.json
+++ b/tests/data/anna/anna_heatpump_heating.json
@@ -86,6 +86,41 @@
"asleep",
"vacation"
],
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 22.0,
+ "setpoint_low": 21.0,
+ "upper_bound": 30.0
+ },
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 24.0,
+ "setpoint_low": 20.5,
+ "upper_bound": 30.0
+ },
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 25.0,
+ "setpoint_low": 20.0,
+ "upper_bound": 30.0
+ },
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 28.0,
+ "setpoint_low": 17.0,
+ "upper_bound": 30.0
+ },
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 30.0,
+ "setpoint_low": 10.0,
+ "upper_bound": 30.0
+ },
"select_schedule": "standaard",
"sensors": {
"cooling_activation_outdoor_temperature": 21.0,
diff --git a/tests/data/anna/anna_loria_cooling_active.json b/tests/data/anna/anna_loria_cooling_active.json
index 69084fbb4..1e67057bf 100644
--- a/tests/data/anna/anna_loria_cooling_active.json
+++ b/tests/data/anna/anna_loria_cooling_active.json
@@ -21,6 +21,41 @@
"home",
"asleep"
],
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 20.5,
+ "setpoint_low": 20.5,
+ "upper_bound": 30.0
+ },
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 25.5,
+ "setpoint_low": 19.5,
+ "upper_bound": 30.0
+ },
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 25.0,
+ "setpoint_low": 15.0,
+ "upper_bound": 30.0
+ },
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 28.0,
+ "setpoint_low": 15.0,
+ "upper_bound": 30.0
+ },
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 30.0,
+ "setpoint_low": 10.0,
+ "upper_bound": 30.0
+ },
"select_schedule": "Winter",
"sensors": {
"illuminance": 45.0,
diff --git a/tests/data/anna/anna_loria_driessens.json b/tests/data/anna/anna_loria_driessens.json
index cbf087e31..3ffbf60de 100644
--- a/tests/data/anna/anna_loria_driessens.json
+++ b/tests/data/anna/anna_loria_driessens.json
@@ -42,6 +42,41 @@
"away",
"home"
],
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 21.0,
+ "setpoint_low": 20.0,
+ "upper_bound": 30.0
+ },
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 25.0,
+ "setpoint_low": 19.0,
+ "upper_bound": 30.0
+ },
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 26.0,
+ "setpoint_low": 17.0,
+ "upper_bound": 30.0
+ },
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 28.0,
+ "setpoint_low": 15.0,
+ "upper_bound": 30.0
+ },
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 30.0,
+ "setpoint_low": 17.0,
+ "upper_bound": 30.0
+ },
"select_schedule": "Verwarmen@9-23u",
"sensors": {
"illuminance": 5.5,
diff --git a/tests/data/anna/anna_loria_heating_idle.json b/tests/data/anna/anna_loria_heating_idle.json
index 9938c2694..de5d5451d 100644
--- a/tests/data/anna/anna_loria_heating_idle.json
+++ b/tests/data/anna/anna_loria_heating_idle.json
@@ -21,6 +21,41 @@
"home",
"asleep"
],
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 20.5,
+ "setpoint_low": 20.5,
+ "upper_bound": 30.0
+ },
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 25.5,
+ "setpoint_low": 19.5,
+ "upper_bound": 30.0
+ },
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 25.0,
+ "setpoint_low": 15.0,
+ "upper_bound": 30.0
+ },
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 28.0,
+ "setpoint_low": 15.0,
+ "upper_bound": 30.0
+ },
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint_high": 30.0,
+ "setpoint_low": 10.0,
+ "upper_bound": 30.0
+ },
"select_schedule": "Winter",
"sensors": {
"illuminance": 45.0,
diff --git a/tests/data/anna/anna_p1.json b/tests/data/anna/anna_p1.json
index b146f8a07..5b3b8a1fe 100644
--- a/tests/data/anna/anna_p1.json
+++ b/tests/data/anna/anna_p1.json
@@ -20,6 +20,36 @@
"vacation",
"no_frost"
],
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 20.0,
+ "upper_bound": 30.0
+ },
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 17.0,
+ "upper_bound": 30.0
+ },
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 10.0,
+ "upper_bound": 30.0
+ },
"select_schedule": "Thermostat schedule",
"sensors": {
"illuminance": 2.0,
diff --git a/tests/data/anna/anna_v4.json b/tests/data/anna/anna_v4.json
index 8f8ae8d59..5e9b6ce2c 100644
--- a/tests/data/anna/anna_v4.json
+++ b/tests/data/anna/anna_v4.json
@@ -21,6 +21,36 @@
"asleep",
"home"
],
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 20.5,
+ "upper_bound": 30.0
+ },
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 17.0,
+ "upper_bound": 30.0
+ },
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 17.5,
+ "upper_bound": 30.0
+ },
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 10.0,
+ "upper_bound": 30.0
+ },
"select_schedule": "off",
"sensors": {
"illuminance": 60.0,
diff --git a/tests/data/anna/anna_v4_dhw.json b/tests/data/anna/anna_v4_dhw.json
index 724811234..efe242bb3 100644
--- a/tests/data/anna/anna_v4_dhw.json
+++ b/tests/data/anna/anna_v4_dhw.json
@@ -21,6 +21,36 @@
"asleep",
"home"
],
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 20.5,
+ "upper_bound": 30.0
+ },
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 17.0,
+ "upper_bound": 30.0
+ },
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 17.5,
+ "upper_bound": 30.0
+ },
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 10.0,
+ "upper_bound": 30.0
+ },
"select_schedule": "off",
"sensors": {
"illuminance": 60.0,
diff --git a/tests/data/anna/anna_v4_no_tag.json b/tests/data/anna/anna_v4_no_tag.json
index f215f24a7..ae7962e21 100644
--- a/tests/data/anna/anna_v4_no_tag.json
+++ b/tests/data/anna/anna_v4_no_tag.json
@@ -21,6 +21,36 @@
"asleep",
"home"
],
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 20.5,
+ "upper_bound": 30.0
+ },
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 17.0,
+ "upper_bound": 30.0
+ },
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 17.5,
+ "upper_bound": 30.0
+ },
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 15.0,
+ "upper_bound": 30.0
+ },
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 10.0,
+ "upper_bound": 30.0
+ },
"select_schedule": "Thuiswerken",
"sensors": {
"illuminance": 60.0,
diff --git a/tests/data/anna/anna_without_boiler_fw441.json b/tests/data/anna/anna_without_boiler_fw441.json
index 5dbecb4dd..291df63f1 100644
--- a/tests/data/anna/anna_without_boiler_fw441.json
+++ b/tests/data/anna/anna_without_boiler_fw441.json
@@ -21,6 +21,36 @@
"vacation",
"home"
],
+ "home_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 19.0,
+ "upper_bound": 30.0
+ },
+ "asleep_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 16.0,
+ "upper_bound": 30.0
+ },
+ "away_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 16.0,
+ "upper_bound": 30.0
+ },
+ "vacation_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 18.5,
+ "upper_bound": 30.0
+ },
+ "no_frost_preset_temperature": {
+ "lower_bound": 4.0,
+ "resolution": 0.5,
+ "setpoint": 10.0,
+ "upper_bound": 30.0
+ },
"select_schedule": "Normaal",
"sensors": {
"illuminance": 0.25,
diff --git a/tests/test_adam.py b/tests/test_adam.py
index 34c680026..d6f972e4c 100644
--- a/tests/test_adam.py
+++ b/tests/test_adam.py
@@ -1,5 +1,8 @@
"""Test Plugwise module Adam related functionality."""
+import asyncio
+from unittest.mock import patch
+
import pytest
from .test_init import _LOGGER, TestPlugwise, pw_exceptions
@@ -47,7 +50,7 @@ async def test_connect_adam_plus_anna_new(self):
test_items = await self.device_test(api, "2025-10-12 00:00:01", testdata)
assert api.gateway_id == "da224107914542988a88561b4452b0f6"
- assert self.entity_items == 235
+ assert self.entity_items == 275
assert test_items == self.entity_items
assert self.entity_list == [
"da224107914542988a88561b4452b0f6",
@@ -68,6 +71,112 @@ async def test_connect_adam_plus_anna_new(self):
"f871b8c4d63549319221e294e4f88074",
]
assert api.reboot
+ # Each zone reads its own preset rule, not the last one in the document
+ # pylint: disable-next=protected-access
+ living_room = api._smile_api._presets("f2bf9048bef64cc5b6d5110154e33c81")
+ # pylint: disable-next=protected-access
+ bathroom = api._smile_api._presets("f871b8c4d63549319221e294e4f88074")
+ assert living_room["home"] == [19.0, 22.0]
+ assert bathroom["home"] == [18.0, 22.0]
+ # pylint: disable-next=protected-access
+ assert len(api._smile_api._preset_rule_ids("no_such_zone")) == 2
+ # A zone whose own rule has no template tag still finds that rule by name
+ # pylint: disable-next=protected-access
+ bathroom_rule = api._smile_api._domain_objects.find(
+ 'rule[@id="91946f89120a44139959d6739b914679"]'
+ )
+ template = bathroom_rule.find("template")
+ bathroom_rule.remove(template)
+ # pylint: disable-next=protected-access
+ assert api._smile_api._preset_rule_id("f871b8c4d63549319221e294e4f88074") == (
+ "91946f89120a44139959d6739b914679"
+ )
+ # pylint: disable-next=protected-access
+ bathroom = api._smile_api._presets("f871b8c4d63549319221e294e4f88074")
+ assert bathroom["home"] == [18.0, 22.0]
+ bathroom_rule.append(template)
+
+ assert await self.tinker_preset_temperature(
+ api, "f2bf9048bef64cc5b6d5110154e33c81"
+ )
+ # pylint: disable-next=protected-access
+ living_room = api._smile_api._presets("f2bf9048bef64cc5b6d5110154e33c81")
+ assert living_room["home"] == [20.5, 22.0]
+ # The gateway replaces the whole directive set, so all presets must be sent
+ with patch.object(
+ # pylint: disable-next=protected-access
+ api._smile_api,
+ "call_request",
+ # pylint: disable-next=protected-access
+ wraps=api._smile_api.call_request,
+ ) as spy:
+ await api.set_number(
+ "f2bf9048bef64cc5b6d5110154e33c81", "away_preset_temperature", 16.0
+ )
+ sent = spy.call_args.kwargs["data"]
+ assert sent.count("