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("