From e79c89e09e92369e87886252c3c5edfe48aec175 Mon Sep 17 00:00:00 2001 From: Mart van Male Date: Thu, 29 Oct 2026 21:14:21 +0100 Subject: [PATCH 1/7] Add the gateway's weekly schedules to its data Schedules are keyed by rule id. Slot start and end times keep the gateway's notation, such as "mo 07:15". A slot without a readable start is sorted last. A setpoint that is not a number is kept as text. --- CHANGELOG.md | 4 + fixtures/adam_heatpump_cooling/data.json | 203 ++++ .../adam_multiple_devices_per_zone/data.json | 518 +++++++++ .../data.json | 203 ++++ fixtures/adam_plus_anna/data.json | 116 ++ fixtures/adam_plus_anna_new/data.json | 312 +++++ .../data.json | 314 ++++++ fixtures/adam_zone_per_device/data.json | 518 +++++++++ fixtures/anna_elga_2/data.json | 106 ++ fixtures/anna_elga_2_cooling/data.json | 82 ++ fixtures/anna_elga_2_schedule_off/data.json | 79 ++ fixtures/anna_elga_no_cooling/data.json | 66 ++ fixtures/anna_heatpump_cooling/data.json | 64 ++ .../data.json | 64 ++ fixtures/anna_heatpump_heating/data.json | 66 ++ fixtures/anna_loria_cooling_active/data.json | 998 ++++++++++++++++ fixtures/anna_loria_driessens/data.json | 382 +++++++ fixtures/anna_loria_heating_idle/data.json | 998 ++++++++++++++++ fixtures/anna_p1/data.json | 10 + fixtures/anna_v4/data.json | 161 +++ fixtures/anna_v4_dhw/data.json | 161 +++ fixtures/anna_v4_no_modules/data.json | 161 +++ fixtures/anna_v4_no_tag/data.json | 163 +++ fixtures/anna_without_boiler_fw441/data.json | 148 +++ fixtures/m_adam_cooling/data.json | 312 +++++ fixtures/m_adam_heating/data.json | 312 +++++ .../m_adam_heating_off_schedule/data.json | 312 +++++ .../data.json | 518 +++++++++ fixtures/m_anna_heatpump_cooling/data.json | 66 ++ fixtures/m_anna_heatpump_idle/data.json | 66 ++ plugwise/constants.py | 19 + plugwise/data.py | 3 + plugwise/helper.py | 58 +- tests/data/adam/adam_heatpump_cooling.json | 205 +++- .../adam/adam_multiple_devices_per_zone.json | 520 ++++++++- .../adam_onoff_cooling_fake_firmware.json | 205 +++- tests/data/adam/adam_plus_anna.json | 118 +- tests/data/adam/adam_plus_anna_new.json | 314 +++++- .../adam_plus_anna_new_regulation_off.json | 316 +++++- tests/data/adam/adam_zone_per_device.json | 520 ++++++++- tests/data/anna/anna_elga_2.json | 108 +- tests/data/anna/anna_elga_2_cooling.json | 84 +- tests/data/anna/anna_elga_2_schedule_off.json | 81 +- tests/data/anna/anna_elga_no_cooling.json | 68 +- tests/data/anna/anna_heatpump_cooling.json | 66 +- .../anna_heatpump_cooling_fake_firmware.json | 66 +- tests/data/anna/anna_heatpump_heating.json | 68 +- .../data/anna/anna_loria_cooling_active.json | 1000 ++++++++++++++++- tests/data/anna/anna_loria_driessens.json | 384 ++++++- tests/data/anna/anna_loria_heating_idle.json | 1000 ++++++++++++++++- tests/data/anna/anna_p1.json | 12 +- tests/data/anna/anna_v4.json | 163 ++- tests/data/anna/anna_v4_dhw.json | 163 ++- tests/data/anna/anna_v4_no_modules.json | 163 ++- tests/data/anna/anna_v4_no_tag.json | 165 ++- .../data/anna/anna_without_boiler_fw441.json | 150 ++- tests/test_adam.py | 66 +- tests/test_anna.py | 34 +- tests/test_init.py | 1 + 59 files changed, 13556 insertions(+), 47 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 41fdef5f0..07f9e9620 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## Ongoing + +- Add the weekly schedules, with their name, zones and time slots, to the gateway data. The slots are listed in week order, starting on Monday. + ## v1.16.0 - Contribution PR [#940](https://github.com/plugwise/python-plugwise/pull/940) by @MartvanMale: diff --git a/fixtures/adam_heatpump_cooling/data.json b/fixtures/adam_heatpump_cooling/data.json index f8f13e5c0..259f31b2c 100644 --- a/fixtures/adam_heatpump_cooling/data.json +++ b/fixtures/adam_heatpump_cooling/data.json @@ -451,6 +451,209 @@ "bleeding_hot", "cooling" ], + "schedules": { + "09314e39f2bd416a889cc6b65b9c0209": { + "active": true, + "name": "Opstaan weekdag", + "slots": [ + { + "end": "mo 10:15", + "preset": "home", + "start": "mo 07:00" + }, + { + "end": "mo 22:30", + "preset": "away", + "start": "mo 10:15" + }, + { + "end": "tu 07:00", + "preset": "asleep", + "start": "mo 22:30" + }, + { + "end": "tu 22:30", + "preset": "home", + "start": "tu 07:00" + }, + { + "end": "we 07:00", + "preset": "asleep", + "start": "tu 22:30" + }, + { + "end": "we 22:30", + "preset": "home", + "start": "we 07:00" + }, + { + "end": "th 07:00", + "preset": "asleep", + "start": "we 22:30" + }, + { + "end": "th 22:30", + "preset": "home", + "start": "th 07:00" + }, + { + "end": "fr 07:00", + "preset": "asleep", + "start": "th 22:30" + }, + { + "end": "su 22:30", + "preset": "home", + "start": "fr 07:00" + }, + { + "end": "mo 07:00", + "preset": "asleep", + "start": "su 22:30" + } + ], + "zones": [] + }, + "4fed3d61217a408bbee54d56595cd379": { + "active": true, + "name": "Werkdag schema", + "slots": [ + { + "end": "mo 17:15", + "preset": "away", + "start": "mo 08:00" + }, + { + "end": "mo 23:00", + "preset": "home", + "start": "mo 17:15" + }, + { + "end": "tu 08:00", + "preset": "asleep", + "start": "mo 23:00" + }, + { + "end": "tu 17:15", + "preset": "away", + "start": "tu 08:00" + }, + { + "end": "tu 23:00", + "preset": "home", + "start": "tu 17:15" + }, + { + "end": "we 08:00", + "preset": "asleep", + "start": "tu 23:00" + }, + { + "end": "we 17:15", + "preset": "away", + "start": "we 08:00" + }, + { + "end": "we 23:00", + "preset": "home", + "start": "we 17:15" + }, + { + "end": "th 08:00", + "preset": "asleep", + "start": "we 23:00" + }, + { + "end": "th 17:15", + "preset": "away", + "start": "th 08:00" + }, + { + "end": "th 23:00", + "preset": "home", + "start": "th 17:15" + }, + { + "end": "fr 08:00", + "preset": "asleep", + "start": "th 23:00" + }, + { + "end": "fr 17:15", + "preset": "away", + "start": "fr 08:00" + }, + { + "end": "fr 23:30", + "preset": "home", + "start": "fr 17:15" + }, + { + "end": "sa 08:30", + "preset": "asleep", + "start": "fr 23:30" + }, + { + "end": "sa 16:30", + "preset": "away", + "start": "sa 08:30" + }, + { + "end": "sa 23:30", + "preset": "home", + "start": "sa 16:30" + }, + { + "end": "su 09:00", + "setpoint": 17.5, + "start": "sa 23:30" + }, + { + "end": "su 23:00", + "preset": "home", + "start": "su 09:00" + }, + { + "end": "mo 08:00", + "preset": "asleep", + "start": "su 23:00" + } + ], + "zones": [ + "fa5fa6b34f6b40a0972988b20e888ed4", + "a562019b0b1f47a4bde8ebe3dbe3e8a9", + "5cc21042f87f4b4c94ccb5537c47a53f", + "8cf650a4c10c44819e426bed406aec34" + ] + }, + "cad46f09817f4fcf82de44d0a49cf73c": { + "active": true, + "name": "Weekend", + "slots": [ + { + "end": "sa 23:00", + "preset": "home", + "start": "sa 08:30" + }, + { + "end": "su 08:30", + "preset": "asleep", + "start": "sa 23:00" + }, + { + "end": "su 23:00", + "preset": "home", + "start": "su 08:30" + }, + { + "end": "sa 08:30", + "preset": "asleep", + "start": "su 23:00" + } + ], + "zones": [] + } + }, "select_gateway_mode": "full", "select_regulation_mode": "cooling", "sensors": { diff --git a/fixtures/adam_multiple_devices_per_zone/data.json b/fixtures/adam_multiple_devices_per_zone/data.json index 44d307e86..048ebf71b 100644 --- a/fixtures/adam_multiple_devices_per_zone/data.json +++ b/fixtures/adam_multiple_devices_per_zone/data.json @@ -808,6 +808,524 @@ "warning": "Node Plug (with MAC address 000D6F000D13CB01, in room 'n.a.') has been unreachable since 23:03 2020-01-18. Please check the connection and restart the device." } }, + "schedules": { + "2b5f3132692d444293854d9e0c61095f": { + "active": false, + "name": "Bios Schema met Film Avond", + "slots": [ + { + "end": "mo 22:15", + "preset": "away", + "start": "mo 07:30" + }, + { + "end": "tu 07:30", + "preset": "asleep", + "start": "mo 22:15" + }, + { + "end": "tu 22:15", + "preset": "away", + "start": "tu 07:30" + }, + { + "end": "we 07:30", + "preset": "asleep", + "start": "tu 22:15" + }, + { + "end": "we 22:15", + "preset": "away", + "start": "we 07:30" + }, + { + "end": "th 07:30", + "preset": "asleep", + "start": "we 22:15" + }, + { + "end": "th 22:15", + "preset": "away", + "start": "th 07:30" + }, + { + "end": "fr 07:30", + "preset": "asleep", + "start": "th 22:15" + }, + { + "end": "fr 22:15", + "preset": "away", + "start": "fr 07:30" + }, + { + "end": "sa 08:30", + "preset": "asleep", + "start": "fr 22:15" + }, + { + "end": "sa 19:00", + "preset": "away", + "start": "sa 08:30" + }, + { + "end": "sa 22:15", + "preset": "home", + "start": "sa 19:00" + }, + { + "end": "su 08:30", + "preset": "asleep", + "start": "sa 22:15" + }, + { + "end": "su 22:15", + "preset": "away", + "start": "su 08:30" + }, + { + "end": "mo 07:30", + "preset": "asleep", + "start": "su 22:15" + } + ], + "zones": [] + }, + "3466ac8e063a454bb6be9481e8df92d4": { + "active": true, + "name": "CV Jessie", + "slots": [ + { + "end": "mo 21:30", + "setpoint": 15.0, + "start": "mo 07:15" + }, + { + "end": "tu 07:15", + "setpoint": 16.5, + "start": "mo 21:30" + }, + { + "end": "tu 21:30", + "setpoint": 15.0, + "start": "tu 07:15" + }, + { + "end": "we 07:15", + "setpoint": 16.5, + "start": "tu 21:30" + }, + { + "end": "we 21:30", + "setpoint": 15.0, + "start": "we 07:15" + }, + { + "end": "th 07:15", + "setpoint": 16.5, + "start": "we 21:30" + }, + { + "end": "th 21:30", + "setpoint": 15.0, + "start": "th 07:15" + }, + { + "end": "fr 07:15", + "setpoint": 16.5, + "start": "th 21:30" + }, + { + "end": "fr 22:30", + "setpoint": 15.0, + "start": "fr 07:15" + }, + { + "end": "sa 08:00", + "setpoint": 16.5, + "start": "fr 22:30" + }, + { + "end": "sa 22:30", + "setpoint": 15.0, + "start": "sa 08:00" + }, + { + "end": "su 08:00", + "setpoint": 16.5, + "start": "sa 22:30" + }, + { + "end": "su 21:30", + "setpoint": 15.0, + "start": "su 08:00" + }, + { + "end": "mo 07:15", + "setpoint": 16.5, + "start": "su 21:30" + } + ], + "zones": [ + "82fa13f017d240daa0d0ea1775420f24" + ] + }, + "3e4b5a775f8143de961eaa3f5f7d9d1a": { + "active": true, + "name": "Badkamer Schema", + "slots": [ + { + "end": "mo 08:00", + "preset": "home", + "start": "mo 06:45" + }, + { + "end": "mo 20:15", + "preset": "away", + "start": "mo 08:00" + }, + { + "end": "mo 21:30", + "preset": "home", + "start": "mo 20:15" + }, + { + "end": "tu 06:45", + "preset": "away", + "start": "mo 21:30" + }, + { + "end": "tu 08:00", + "preset": "home", + "start": "tu 06:45" + }, + { + "end": "tu 20:15", + "preset": "away", + "start": "tu 08:00" + }, + { + "end": "tu 21:30", + "preset": "home", + "start": "tu 20:15" + }, + { + "end": "we 06:45", + "preset": "away", + "start": "tu 21:30" + }, + { + "end": "we 08:00", + "preset": "home", + "start": "we 06:45" + }, + { + "end": "we 20:15", + "preset": "away", + "start": "we 08:00" + }, + { + "end": "we 21:30", + "preset": "home", + "start": "we 20:15" + }, + { + "end": "th 06:45", + "preset": "away", + "start": "we 21:30" + }, + { + "end": "th 08:00", + "preset": "home", + "start": "th 06:45" + }, + { + "end": "th 20:15", + "preset": "away", + "start": "th 08:00" + }, + { + "end": "th 21:30", + "preset": "home", + "start": "th 20:15" + }, + { + "end": "fr 06:45", + "preset": "away", + "start": "th 21:30" + }, + { + "end": "fr 08:00", + "preset": "home", + "start": "fr 06:45" + }, + { + "end": "fr 20:30", + "preset": "away", + "start": "fr 08:00" + }, + { + "end": "fr 22:00", + "preset": "home", + "start": "fr 20:30" + }, + { + "end": "sa 09:00", + "preset": "away", + "start": "fr 22:00" + }, + { + "end": "sa 10:15", + "preset": "home", + "start": "sa 09:00" + }, + { + "end": "sa 20:30", + "preset": "away", + "start": "sa 10:15" + }, + { + "end": "sa 22:00", + "preset": "asleep", + "start": "sa 20:30" + }, + { + "end": "su 09:00", + "preset": "away", + "start": "sa 22:00" + }, + { + "end": "su 10:15", + "preset": "home", + "start": "su 09:00" + }, + { + "end": "su 20:15", + "preset": "away", + "start": "su 10:15" + }, + { + "end": "su 21:30", + "preset": "home", + "start": "su 20:15" + }, + { + "end": "mo 06:45", + "preset": "away", + "start": "su 21:30" + } + ], + "zones": [ + "08963fec7c53423ca5680aa4cb502c63" + ] + }, + "d31c0fb5b9814815a5fe4090fd8ec1e2": { + "active": true, + "name": "CV Roan", + "slots": [ + { + "end": "mo 19:30", + "preset": "away", + "start": "mo 07:00" + }, + { + "end": "tu 07:00", + "preset": "asleep", + "start": "mo 19:30" + }, + { + "end": "tu 19:30", + "preset": "away", + "start": "tu 07:00" + }, + { + "end": "we 07:00", + "preset": "asleep", + "start": "tu 19:30" + }, + { + "end": "we 19:30", + "preset": "away", + "start": "we 07:00" + }, + { + "end": "th 07:00", + "preset": "asleep", + "start": "we 19:30" + }, + { + "end": "th 19:30", + "preset": "away", + "start": "th 07:00" + }, + { + "end": "fr 07:00", + "preset": "asleep", + "start": "th 19:30" + }, + { + "end": "fr 20:15", + "preset": "away", + "start": "fr 07:00" + }, + { + "end": "sa 07:30", + "preset": "asleep", + "start": "fr 20:15" + }, + { + "end": "sa 20:15", + "preset": "away", + "start": "sa 07:30" + }, + { + "end": "su 07:30", + "preset": "asleep", + "start": "sa 20:15" + }, + { + "end": "su 19:30", + "preset": "away", + "start": "su 07:30" + }, + { + "end": "mo 07:00", + "preset": "asleep", + "start": "su 19:30" + } + ], + "zones": [] + }, + "ee003247871e4e16882771ab715ddfa1": { + "active": true, + "name": "GF7 Woonkamer", + "slots": [ + { + "end": "mo 08:00", + "preset": "home", + "start": "mo 06:30" + }, + { + "end": "mo 15:00", + "preset": "away", + "start": "mo 08:00" + }, + { + "end": "mo 22:30", + "preset": "home", + "start": "mo 15:00" + }, + { + "end": "tu 06:30", + "preset": "asleep", + "start": "mo 22:30" + }, + { + "end": "tu 08:00", + "preset": "home", + "start": "tu 06:30" + }, + { + "end": "tu 14:00", + "preset": "away", + "start": "tu 08:00" + }, + { + "end": "tu 22:30", + "preset": "home", + "start": "tu 14:00" + }, + { + "end": "we 06:30", + "preset": "asleep", + "start": "tu 22:30" + }, + { + "end": "we 08:00", + "preset": "home", + "start": "we 06:30" + }, + { + "end": "we 11:30", + "preset": "away", + "start": "we 08:00" + }, + { + "end": "we 22:30", + "preset": "home", + "start": "we 11:30" + }, + { + "end": "th 06:30", + "preset": "asleep", + "start": "we 22:30" + }, + { + "end": "th 08:00", + "preset": "home", + "start": "th 06:30" + }, + { + "end": "th 15:00", + "preset": "away", + "start": "th 08:00" + }, + { + "end": "th 22:30", + "preset": "home", + "start": "th 15:00" + }, + { + "end": "fr 06:30", + "preset": "asleep", + "start": "th 22:30" + }, + { + "end": "fr 08:00", + "preset": "home", + "start": "fr 06:30" + }, + { + "end": "fr 11:30", + "preset": "away", + "start": "fr 08:00" + }, + { + "end": "fr 23:15", + "preset": "home", + "start": "fr 11:30" + }, + { + "end": "sa 08:00", + "preset": "asleep", + "start": "fr 23:15" + }, + { + "end": "sa 23:15", + "preset": "home", + "start": "sa 08:00" + }, + { + "end": "su 08:00", + "preset": "asleep", + "start": "sa 23:15" + }, + { + "end": "su 22:30", + "preset": "home", + "start": "su 08:00" + }, + { + "end": "mo 06:30", + "preset": "asleep", + "start": "su 22:30" + } + ], + "zones": [ + "c50f167537524366a5af7aa3942feb1e" + ] + } + }, "sensors": { "outdoor_temperature": 7.81 }, diff --git a/fixtures/adam_onoff_cooling_fake_firmware/data.json b/fixtures/adam_onoff_cooling_fake_firmware/data.json index a81284da4..14ac14764 100644 --- a/fixtures/adam_onoff_cooling_fake_firmware/data.json +++ b/fixtures/adam_onoff_cooling_fake_firmware/data.json @@ -68,6 +68,209 @@ "bleeding_hot", "cooling" ], + "schedules": { + "09314e39f2bd416a889cc6b65b9c0209": { + "active": true, + "name": "Opstaan weekdag", + "slots": [ + { + "end": "mo 10:15", + "preset": "home", + "start": "mo 07:00" + }, + { + "end": "mo 22:30", + "preset": "away", + "start": "mo 10:15" + }, + { + "end": "tu 07:00", + "preset": "asleep", + "start": "mo 22:30" + }, + { + "end": "tu 22:30", + "preset": "home", + "start": "tu 07:00" + }, + { + "end": "we 07:00", + "preset": "asleep", + "start": "tu 22:30" + }, + { + "end": "we 22:30", + "preset": "home", + "start": "we 07:00" + }, + { + "end": "th 07:00", + "preset": "asleep", + "start": "we 22:30" + }, + { + "end": "th 22:30", + "preset": "home", + "start": "th 07:00" + }, + { + "end": "fr 07:00", + "preset": "asleep", + "start": "th 22:30" + }, + { + "end": "su 22:30", + "preset": "home", + "start": "fr 07:00" + }, + { + "end": "mo 07:00", + "preset": "asleep", + "start": "su 22:30" + } + ], + "zones": [] + }, + "4fed3d61217a408bbee54d56595cd379": { + "active": true, + "name": "Werkdag schema", + "slots": [ + { + "end": "mo 17:15", + "preset": "away", + "start": "mo 08:00" + }, + { + "end": "mo 23:00", + "preset": "home", + "start": "mo 17:15" + }, + { + "end": "tu 08:00", + "preset": "asleep", + "start": "mo 23:00" + }, + { + "end": "tu 17:15", + "preset": "away", + "start": "tu 08:00" + }, + { + "end": "tu 23:00", + "preset": "home", + "start": "tu 17:15" + }, + { + "end": "we 08:00", + "preset": "asleep", + "start": "tu 23:00" + }, + { + "end": "we 17:15", + "preset": "away", + "start": "we 08:00" + }, + { + "end": "we 23:00", + "preset": "home", + "start": "we 17:15" + }, + { + "end": "th 08:00", + "preset": "asleep", + "start": "we 23:00" + }, + { + "end": "th 17:15", + "preset": "away", + "start": "th 08:00" + }, + { + "end": "th 23:00", + "preset": "home", + "start": "th 17:15" + }, + { + "end": "fr 08:00", + "preset": "asleep", + "start": "th 23:00" + }, + { + "end": "fr 17:15", + "preset": "away", + "start": "fr 08:00" + }, + { + "end": "fr 23:30", + "preset": "home", + "start": "fr 17:15" + }, + { + "end": "sa 08:30", + "preset": "asleep", + "start": "fr 23:30" + }, + { + "end": "sa 16:30", + "preset": "away", + "start": "sa 08:30" + }, + { + "end": "sa 23:30", + "preset": "home", + "start": "sa 16:30" + }, + { + "end": "su 09:00", + "preset": "asleep", + "start": "sa 23:30" + }, + { + "end": "su 23:00", + "preset": "home", + "start": "su 09:00" + }, + { + "end": "mo 08:00", + "preset": "asleep", + "start": "su 23:00" + } + ], + "zones": [ + "fa5fa6b34f6b40a0972988b20e888ed4", + "a562019b0b1f47a4bde8ebe3dbe3e8a9", + "5cc21042f87f4b4c94ccb5537c47a53f", + "8cf650a4c10c44819e426bed406aec34" + ] + }, + "cad46f09817f4fcf82de44d0a49cf73c": { + "active": true, + "name": "Weekend", + "slots": [ + { + "end": "sa 23:00", + "preset": "home", + "start": "sa 08:30" + }, + { + "end": "su 08:30", + "preset": "asleep", + "start": "sa 23:00" + }, + { + "end": "su 23:00", + "preset": "home", + "start": "su 08:30" + }, + { + "end": "sa 08:30", + "preset": "asleep", + "start": "su 23:00" + } + ], + "zones": [] + } + }, "select_gateway_mode": "full", "select_regulation_mode": "cooling", "sensors": { diff --git a/fixtures/adam_plus_anna/data.json b/fixtures/adam_plus_anna/data.json index 4123a2830..ae4036c38 100644 --- a/fixtures/adam_plus_anna/data.json +++ b/fixtures/adam_plus_anna/data.json @@ -136,6 +136,122 @@ "error": "There is no OpenTherm communication with the boiler." } }, + "schedules": { + "12f68057511a4445a162fb307d437cf1": { + "active": true, + "name": "Weekschema", + "slots": [ + { + "end": "mo 16:30", + "preset": "home", + "start": "mo 07:30" + }, + { + "end": "mo 22:30", + "setpoint": 20.5, + "start": "mo 16:30" + }, + { + "end": "tu 07:30", + "preset": "asleep", + "start": "mo 22:30" + }, + { + "end": "tu 16:30", + "preset": "home", + "start": "tu 07:30" + }, + { + "end": "tu 22:30", + "setpoint": 20.5, + "start": "tu 16:30" + }, + { + "end": "we 07:30", + "preset": "asleep", + "start": "tu 22:30" + }, + { + "end": "we 16:30", + "preset": "home", + "start": "we 07:30" + }, + { + "end": "we 22:30", + "setpoint": 20.5, + "start": "we 16:30" + }, + { + "end": "th 07:30", + "preset": "asleep", + "start": "we 22:30" + }, + { + "end": "th 16:30", + "preset": "home", + "start": "th 07:30" + }, + { + "end": "th 22:30", + "setpoint": 20.5, + "start": "th 16:30" + }, + { + "end": "fr 07:30", + "preset": "asleep", + "start": "th 22:30" + }, + { + "end": "fr 16:30", + "preset": "home", + "start": "fr 07:30" + }, + { + "end": "fr 22:30", + "setpoint": 20.5, + "start": "fr 16:30" + }, + { + "end": "sa 07:30", + "preset": "asleep", + "start": "fr 22:30" + }, + { + "end": "sa 16:30", + "preset": "home", + "start": "sa 07:30" + }, + { + "end": "sa 22:30", + "setpoint": 20.5, + "start": "sa 16:30" + }, + { + "end": "su 07:30", + "preset": "asleep", + "start": "sa 22:30" + }, + { + "end": "su 16:30", + "preset": "home", + "start": "su 07:30" + }, + { + "end": "su 22:30", + "setpoint": 20.5, + "start": "su 16:30" + }, + { + "end": "mo 07:30", + "preset": "asleep", + "start": "su 22:30" + } + ], + "zones": [ + "009490cc2f674ce6b576863fbb64f867" + ] + } + }, "sensors": { "outdoor_temperature": 11.9 }, diff --git a/fixtures/adam_plus_anna_new/data.json b/fixtures/adam_plus_anna_new/data.json index 4f8af21d3..b4a35a251 100644 --- a/fixtures/adam_plus_anna_new/data.json +++ b/fixtures/adam_plus_anna_new/data.json @@ -227,6 +227,318 @@ "off", "bleeding_hot" ], + "schedules": { + "24df4dace79a4c42a0f4750ce65d84cb": { + "active": true, + "name": "Weekschema", + "slots": [ + { + "end": "mo 16:30", + "setpoint": 18.5, + "start": "mo 07:15" + }, + { + "end": "mo 21:00", + "preset": "home", + "start": "mo 16:30" + }, + { + "end": "tu 07:15", + "preset": "asleep", + "start": "mo 21:00" + }, + { + "end": "tu 16:30", + "setpoint": 18.5, + "start": "tu 07:15" + }, + { + "end": "tu 21:30", + "preset": "home", + "start": "tu 16:30" + }, + { + "end": "we 07:15", + "preset": "asleep", + "start": "tu 21:30" + }, + { + "end": "we 16:30", + "setpoint": 18.5, + "start": "we 07:15" + }, + { + "end": "we 21:30", + "preset": "home", + "start": "we 16:30" + }, + { + "end": "th 07:15", + "preset": "asleep", + "start": "we 21:30" + }, + { + "end": "th 16:30", + "setpoint": 18.5, + "start": "th 07:15" + }, + { + "end": "th 21:30", + "preset": "home", + "start": "th 16:30" + }, + { + "end": "fr 07:15", + "preset": "asleep", + "start": "th 21:30" + }, + { + "end": "fr 16:30", + "setpoint": 18.5, + "start": "fr 07:15" + }, + { + "end": "fr 22:00", + "preset": "home", + "start": "fr 16:30" + }, + { + "end": "sa 07:45", + "preset": "asleep", + "start": "fr 22:00" + }, + { + "end": "sa 16:00", + "setpoint": 18.5, + "start": "sa 07:45" + }, + { + "end": "sa 22:00", + "preset": "home", + "start": "sa 16:00" + }, + { + "end": "su 07:45", + "preset": "asleep", + "start": "sa 22:00" + }, + { + "end": "su 16:00", + "setpoint": 18.5, + "start": "su 07:45" + }, + { + "end": "su 21:30", + "preset": "home", + "start": "su 16:00" + }, + { + "end": "mo 07:15", + "preset": "asleep", + "start": "su 21:30" + } + ], + "zones": [ + "f2bf9048bef64cc5b6d5110154e33c81" + ] + }, + "6b309e6df44c4e9a9f0014437843fa9a": { + "active": true, + "name": "Test", + "slots": [ + { + "end": "tu 10:00", + "preset": "asleep", + "start": "mo 10:00" + }, + { + "end": "tu 16:15", + "preset": "home", + "start": "mo 16:15" + }, + { + "end": "we 10:00", + "preset": "asleep", + "start": "tu 10:00" + }, + { + "end": "we 16:15", + "preset": "home", + "start": "tu 16:15" + }, + { + "end": "th 10:00", + "preset": "asleep", + "start": "we 10:00" + }, + { + "end": "th 16:15", + "preset": "home", + "start": "we 16:15" + }, + { + "end": "fr 10:00", + "preset": "asleep", + "start": "th 10:00" + }, + { + "end": "fr 16:15", + "preset": "home", + "start": "th 16:15" + }, + { + "end": "su 10:00", + "preset": "asleep", + "start": "fr 10:00" + }, + { + "end": "su 16:15", + "preset": "home", + "start": "fr 16:15" + }, + { + "end": "sa 16:15", + "preset": "asleep", + "start": "sa 10:00" + }, + { + "end": "mo 10:00", + "preset": "home", + "start": "sa 16:15" + }, + { + "end": "mo 16:15", + "preset": "asleep", + "start": "su 10:00" + }, + { + "end": "sa 10:00", + "preset": "home", + "start": "su 16:15" + } + ], + "zones": [] + }, + "e497d6c3572540008daa9d3ec9d500cd": { + "active": true, + "name": "Vakantie", + "slots": [ + { + "end": "tu 10:00", + "setpoint": 15.0, + "start": "mo 10:00" + }, + { + "end": "we 10:00", + "setpoint": 15.0, + "start": "tu 10:00" + }, + { + "end": "th 10:00", + "setpoint": 15.0, + "start": "we 10:00" + }, + { + "end": "fr 10:00", + "setpoint": 15.0, + "start": "th 10:00" + }, + { + "end": "su 10:00", + "setpoint": 15.0, + "start": "fr 10:00" + }, + { + "end": "mo 10:00", + "setpoint": 15.0, + "start": "sa 10:00" + }, + { + "end": "sa 10:00", + "setpoint": 15.0, + "start": "su 10:00" + } + ], + "zones": [] + }, + "ebe3e57ec41d4d8faa927ca85c95b747": { + "active": true, + "name": "Badkamer", + "slots": [ + { + "end": "mo 22:00", + "preset": "home", + "start": "mo 07:00" + }, + { + "end": "tu 07:00", + "preset": "asleep", + "start": "mo 22:00" + }, + { + "end": "tu 22:00", + "preset": "home", + "start": "tu 07:00" + }, + { + "end": "we 07:00", + "preset": "asleep", + "start": "tu 22:00" + }, + { + "end": "we 22:00", + "preset": "home", + "start": "we 07:00" + }, + { + "end": "th 07:00", + "preset": "asleep", + "start": "we 22:00" + }, + { + "end": "th 22:00", + "preset": "home", + "start": "th 07:00" + }, + { + "end": "fr 07:00", + "preset": "asleep", + "start": "th 22:00" + }, + { + "end": "fr 22:30", + "preset": "home", + "start": "fr 07:00" + }, + { + "end": "sa 07:30", + "preset": "asleep", + "start": "fr 22:30" + }, + { + "end": "sa 22:30", + "preset": "home", + "start": "sa 07:30" + }, + { + "end": "su 07:30", + "preset": "asleep", + "start": "sa 22:30" + }, + { + "end": "su 22:00", + "preset": "home", + "start": "su 07:30" + }, + { + "end": "mo 07:00", + "preset": "asleep", + "start": "su 22:00" + } + ], + "zones": [] + } + }, "select_gateway_mode": "full", "select_regulation_mode": "heating", "sensors": { diff --git a/fixtures/adam_plus_anna_new_regulation_off/data.json b/fixtures/adam_plus_anna_new_regulation_off/data.json index 8ec048bdd..4e527091d 100644 --- a/fixtures/adam_plus_anna_new_regulation_off/data.json +++ b/fixtures/adam_plus_anna_new_regulation_off/data.json @@ -200,6 +200,320 @@ "off", "heating" ], + "schedules": { + "24df4dace79a4c42a0f4750ce65d84cb": { + "active": true, + "name": "Weekschema", + "slots": [ + { + "end": "mo 16:30", + "setpoint": 18.0, + "start": "mo 07:15" + }, + { + "end": "mo 21:30", + "preset": "home", + "start": "mo 16:30" + }, + { + "end": "tu 07:15", + "preset": "asleep", + "start": "mo 21:30" + }, + { + "end": "tu 16:30", + "setpoint": 18.0, + "start": "tu 07:15" + }, + { + "end": "tu 21:30", + "preset": "home", + "start": "tu 16:30" + }, + { + "end": "we 07:15", + "preset": "asleep", + "start": "tu 21:30" + }, + { + "end": "we 16:30", + "setpoint": 18.0, + "start": "we 07:15" + }, + { + "end": "we 21:30", + "preset": "home", + "start": "we 16:30" + }, + { + "end": "th 07:15", + "preset": "asleep", + "start": "we 21:30" + }, + { + "end": "th 16:30", + "setpoint": 18.0, + "start": "th 07:15" + }, + { + "end": "th 21:30", + "preset": "home", + "start": "th 16:30" + }, + { + "end": "fr 07:15", + "preset": "asleep", + "start": "th 21:30" + }, + { + "end": "fr 16:30", + "setpoint": 18.0, + "start": "fr 07:15" + }, + { + "end": "fr 22:00", + "preset": "home", + "start": "fr 16:30" + }, + { + "end": "sa 07:45", + "preset": "asleep", + "start": "fr 22:00" + }, + { + "end": "sa 16:00", + "setpoint": 18.0, + "start": "sa 07:45" + }, + { + "end": "sa 22:00", + "preset": "home", + "start": "sa 16:00" + }, + { + "end": "su 07:45", + "preset": "asleep", + "start": "sa 22:00" + }, + { + "end": "su 16:00", + "setpoint": 18.0, + "start": "su 07:45" + }, + { + "end": "su 21:30", + "preset": "home", + "start": "su 16:00" + }, + { + "end": "mo 07:15", + "preset": "asleep", + "start": "su 21:30" + } + ], + "zones": [ + "f2bf9048bef64cc5b6d5110154e33c81" + ] + }, + "6b309e6df44c4e9a9f0014437843fa9a": { + "active": true, + "name": "Test", + "slots": [ + { + "end": "tu 10:00", + "preset": "asleep", + "start": "mo 10:00" + }, + { + "end": "tu 16:15", + "preset": "home", + "start": "mo 16:15" + }, + { + "end": "we 10:00", + "preset": "asleep", + "start": "tu 10:00" + }, + { + "end": "we 16:15", + "preset": "home", + "start": "tu 16:15" + }, + { + "end": "th 10:00", + "preset": "asleep", + "start": "we 10:00" + }, + { + "end": "th 16:15", + "preset": "home", + "start": "we 16:15" + }, + { + "end": "fr 10:00", + "preset": "asleep", + "start": "th 10:00" + }, + { + "end": "fr 16:15", + "preset": "home", + "start": "th 16:15" + }, + { + "end": "su 10:00", + "preset": "asleep", + "start": "fr 10:00" + }, + { + "end": "su 16:15", + "preset": "home", + "start": "fr 16:15" + }, + { + "end": "sa 16:15", + "preset": "asleep", + "start": "sa 10:00" + }, + { + "end": "mo 10:00", + "preset": "home", + "start": "sa 16:15" + }, + { + "end": "mo 16:15", + "preset": "asleep", + "start": "su 10:00" + }, + { + "end": "sa 10:00", + "preset": "home", + "start": "su 16:15" + } + ], + "zones": [] + }, + "e497d6c3572540008daa9d3ec9d500cd": { + "active": true, + "name": "Vakantie", + "slots": [ + { + "end": "tu 10:00", + "setpoint": 15.0, + "start": "mo 10:00" + }, + { + "end": "we 10:00", + "setpoint": 15.0, + "start": "tu 10:00" + }, + { + "end": "th 10:00", + "setpoint": 15.0, + "start": "we 10:00" + }, + { + "end": "fr 10:00", + "setpoint": 15.0, + "start": "th 10:00" + }, + { + "end": "su 10:00", + "setpoint": 15.0, + "start": "fr 10:00" + }, + { + "end": "mo 10:00", + "setpoint": 15.0, + "start": "sa 10:00" + }, + { + "end": "sa 10:00", + "setpoint": 15.0, + "start": "su 10:00" + } + ], + "zones": [] + }, + "ebe3e57ec41d4d8faa927ca85c95b747": { + "active": true, + "name": "Badkamer", + "slots": [ + { + "end": "mo 22:00", + "preset": "home", + "start": "mo 07:00" + }, + { + "end": "tu 07:00", + "preset": "asleep", + "start": "mo 22:00" + }, + { + "end": "tu 22:00", + "preset": "home", + "start": "tu 07:00" + }, + { + "end": "we 07:00", + "preset": "asleep", + "start": "tu 22:00" + }, + { + "end": "we 22:00", + "preset": "home", + "start": "we 07:00" + }, + { + "end": "th 07:00", + "preset": "asleep", + "start": "we 22:00" + }, + { + "end": "th 22:00", + "preset": "home", + "start": "th 07:00" + }, + { + "end": "fr 07:00", + "preset": "asleep", + "start": "th 22:00" + }, + { + "end": "fr 22:30", + "preset": "home", + "start": "fr 07:00" + }, + { + "end": "sa 07:30", + "preset": "asleep", + "start": "fr 22:30" + }, + { + "end": "sa 22:30", + "preset": "home", + "start": "sa 07:30" + }, + { + "end": "su 07:30", + "preset": "asleep", + "start": "sa 22:30" + }, + { + "end": "su 22:00", + "preset": "home", + "start": "su 07:30" + }, + { + "end": "mo 07:00", + "preset": "asleep", + "start": "su 22:00" + } + ], + "zones": [ + "f871b8c4d63549319221e294e4f88074" + ] + } + }, "select_gateway_mode": "full", "select_regulation_mode": "off", "sensors": { diff --git a/fixtures/adam_zone_per_device/data.json b/fixtures/adam_zone_per_device/data.json index 40fad1963..5d776cfca 100644 --- a/fixtures/adam_zone_per_device/data.json +++ b/fixtures/adam_zone_per_device/data.json @@ -792,6 +792,524 @@ "warning": "Node Plug (with MAC address 000D6F000D13CB01, in room 'n.a.') has been unreachable since 23:03 2020-01-18. Please check the connection and restart the device." } }, + "schedules": { + "2b5f3132692d444293854d9e0c61095f": { + "active": false, + "name": "Bios Schema met Film Avond", + "slots": [ + { + "end": "mo 22:15", + "preset": "away", + "start": "mo 07:30" + }, + { + "end": "tu 07:30", + "preset": "asleep", + "start": "mo 22:15" + }, + { + "end": "tu 22:15", + "preset": "away", + "start": "tu 07:30" + }, + { + "end": "we 07:30", + "preset": "asleep", + "start": "tu 22:15" + }, + { + "end": "we 22:15", + "preset": "away", + "start": "we 07:30" + }, + { + "end": "th 07:30", + "preset": "asleep", + "start": "we 22:15" + }, + { + "end": "th 22:15", + "preset": "away", + "start": "th 07:30" + }, + { + "end": "fr 07:30", + "preset": "asleep", + "start": "th 22:15" + }, + { + "end": "fr 22:15", + "preset": "away", + "start": "fr 07:30" + }, + { + "end": "sa 08:30", + "preset": "asleep", + "start": "fr 22:15" + }, + { + "end": "sa 19:00", + "preset": "away", + "start": "sa 08:30" + }, + { + "end": "sa 22:15", + "preset": "home", + "start": "sa 19:00" + }, + { + "end": "su 08:30", + "preset": "asleep", + "start": "sa 22:15" + }, + { + "end": "su 22:15", + "preset": "away", + "start": "su 08:30" + }, + { + "end": "mo 07:30", + "preset": "asleep", + "start": "su 22:15" + } + ], + "zones": [] + }, + "3466ac8e063a454bb6be9481e8df92d4": { + "active": true, + "name": "CV Jessie", + "slots": [ + { + "end": "mo 21:30", + "setpoint": 15.0, + "start": "mo 07:15" + }, + { + "end": "tu 07:15", + "setpoint": 16.5, + "start": "mo 21:30" + }, + { + "end": "tu 21:30", + "setpoint": 15.0, + "start": "tu 07:15" + }, + { + "end": "we 07:15", + "setpoint": 16.5, + "start": "tu 21:30" + }, + { + "end": "we 21:30", + "setpoint": 15.0, + "start": "we 07:15" + }, + { + "end": "th 07:15", + "setpoint": 16.5, + "start": "we 21:30" + }, + { + "end": "th 21:30", + "setpoint": 15.0, + "start": "th 07:15" + }, + { + "end": "fr 07:15", + "setpoint": 16.5, + "start": "th 21:30" + }, + { + "end": "fr 22:30", + "setpoint": 15.0, + "start": "fr 07:15" + }, + { + "end": "sa 08:00", + "setpoint": 16.5, + "start": "fr 22:30" + }, + { + "end": "sa 22:30", + "setpoint": 15.0, + "start": "sa 08:00" + }, + { + "end": "su 08:00", + "setpoint": 16.5, + "start": "sa 22:30" + }, + { + "end": "su 21:30", + "setpoint": 15.0, + "start": "su 08:00" + }, + { + "end": "mo 07:15", + "setpoint": 16.5, + "start": "su 21:30" + } + ], + "zones": [ + "82fa13f017d240daa0d0ea1775420f24" + ] + }, + "3e4b5a775f8143de961eaa3f5f7d9d1a": { + "active": true, + "name": "Badkamer Schema", + "slots": [ + { + "end": "mo 08:00", + "preset": "home", + "start": "mo 06:45" + }, + { + "end": "mo 20:15", + "preset": "away", + "start": "mo 08:00" + }, + { + "end": "mo 21:30", + "preset": "home", + "start": "mo 20:15" + }, + { + "end": "tu 06:45", + "preset": "away", + "start": "mo 21:30" + }, + { + "end": "tu 08:00", + "preset": "home", + "start": "tu 06:45" + }, + { + "end": "tu 20:15", + "preset": "away", + "start": "tu 08:00" + }, + { + "end": "tu 21:30", + "preset": "home", + "start": "tu 20:15" + }, + { + "end": "we 06:45", + "preset": "away", + "start": "tu 21:30" + }, + { + "end": "we 08:00", + "preset": "home", + "start": "we 06:45" + }, + { + "end": "we 20:15", + "preset": "away", + "start": "we 08:00" + }, + { + "end": "we 21:30", + "preset": "home", + "start": "we 20:15" + }, + { + "end": "th 06:45", + "preset": "away", + "start": "we 21:30" + }, + { + "end": "th 08:00", + "preset": "home", + "start": "th 06:45" + }, + { + "end": "th 20:15", + "preset": "away", + "start": "th 08:00" + }, + { + "end": "th 21:30", + "preset": "home", + "start": "th 20:15" + }, + { + "end": "fr 06:45", + "preset": "away", + "start": "th 21:30" + }, + { + "end": "fr 08:00", + "preset": "home", + "start": "fr 06:45" + }, + { + "end": "fr 20:30", + "preset": "away", + "start": "fr 08:00" + }, + { + "end": "fr 22:00", + "preset": "home", + "start": "fr 20:30" + }, + { + "end": "sa 09:00", + "preset": "away", + "start": "fr 22:00" + }, + { + "end": "sa 10:15", + "preset": "home", + "start": "sa 09:00" + }, + { + "end": "sa 20:30", + "preset": "away", + "start": "sa 10:15" + }, + { + "end": "sa 22:00", + "preset": "asleep", + "start": "sa 20:30" + }, + { + "end": "su 09:00", + "preset": "away", + "start": "sa 22:00" + }, + { + "end": "su 10:15", + "preset": "home", + "start": "su 09:00" + }, + { + "end": "su 20:15", + "preset": "away", + "start": "su 10:15" + }, + { + "end": "su 21:30", + "preset": "home", + "start": "su 20:15" + }, + { + "end": "mo 06:45", + "preset": "away", + "start": "su 21:30" + } + ], + "zones": [ + "08963fec7c53423ca5680aa4cb502c63" + ] + }, + "d31c0fb5b9814815a5fe4090fd8ec1e2": { + "active": true, + "name": "CV Roan", + "slots": [ + { + "end": "mo 19:30", + "preset": "away", + "start": "mo 07:00" + }, + { + "end": "tu 07:00", + "preset": "asleep", + "start": "mo 19:30" + }, + { + "end": "tu 19:30", + "preset": "away", + "start": "tu 07:00" + }, + { + "end": "we 07:00", + "preset": "asleep", + "start": "tu 19:30" + }, + { + "end": "we 19:30", + "preset": "away", + "start": "we 07:00" + }, + { + "end": "th 07:00", + "preset": "asleep", + "start": "we 19:30" + }, + { + "end": "th 19:30", + "preset": "away", + "start": "th 07:00" + }, + { + "end": "fr 07:00", + "preset": "asleep", + "start": "th 19:30" + }, + { + "end": "fr 20:15", + "preset": "away", + "start": "fr 07:00" + }, + { + "end": "sa 07:30", + "preset": "asleep", + "start": "fr 20:15" + }, + { + "end": "sa 20:15", + "preset": "away", + "start": "sa 07:30" + }, + { + "end": "su 07:30", + "preset": "asleep", + "start": "sa 20:15" + }, + { + "end": "su 19:30", + "preset": "away", + "start": "su 07:30" + }, + { + "end": "mo 07:00", + "preset": "asleep", + "start": "su 19:30" + } + ], + "zones": [] + }, + "ee003247871e4e16882771ab715ddfa1": { + "active": true, + "name": "GF7 Woonkamer", + "slots": [ + { + "end": "mo 08:00", + "preset": "home", + "start": "mo 06:30" + }, + { + "end": "mo 15:00", + "preset": "away", + "start": "mo 08:00" + }, + { + "end": "mo 22:30", + "preset": "home", + "start": "mo 15:00" + }, + { + "end": "tu 06:30", + "preset": "asleep", + "start": "mo 22:30" + }, + { + "end": "tu 08:00", + "preset": "home", + "start": "tu 06:30" + }, + { + "end": "tu 14:00", + "preset": "away", + "start": "tu 08:00" + }, + { + "end": "tu 22:30", + "preset": "home", + "start": "tu 14:00" + }, + { + "end": "we 06:30", + "preset": "asleep", + "start": "tu 22:30" + }, + { + "end": "we 08:00", + "preset": "home", + "start": "we 06:30" + }, + { + "end": "we 11:30", + "preset": "away", + "start": "we 08:00" + }, + { + "end": "we 22:30", + "preset": "home", + "start": "we 11:30" + }, + { + "end": "th 06:30", + "preset": "asleep", + "start": "we 22:30" + }, + { + "end": "th 08:00", + "preset": "home", + "start": "th 06:30" + }, + { + "end": "th 15:00", + "preset": "away", + "start": "th 08:00" + }, + { + "end": "th 22:30", + "preset": "home", + "start": "th 15:00" + }, + { + "end": "fr 06:30", + "preset": "asleep", + "start": "th 22:30" + }, + { + "end": "fr 08:00", + "preset": "home", + "start": "fr 06:30" + }, + { + "end": "fr 11:30", + "preset": "away", + "start": "fr 08:00" + }, + { + "end": "fr 23:15", + "preset": "home", + "start": "fr 11:30" + }, + { + "end": "sa 08:00", + "preset": "asleep", + "start": "fr 23:15" + }, + { + "end": "sa 23:15", + "preset": "home", + "start": "sa 08:00" + }, + { + "end": "su 08:00", + "preset": "asleep", + "start": "sa 23:15" + }, + { + "end": "su 22:30", + "preset": "home", + "start": "su 08:00" + }, + { + "end": "mo 06:30", + "preset": "asleep", + "start": "su 22:30" + } + ], + "zones": [ + "c50f167537524366a5af7aa3942feb1e" + ] + } + }, "sensors": { "outdoor_temperature": 7.69 }, diff --git a/fixtures/anna_elga_2/data.json b/fixtures/anna_elga_2/data.json index 0aaeb5ab7..1bbb0f828 100644 --- a/fixtures/anna_elga_2/data.json +++ b/fixtures/anna_elga_2/data.json @@ -126,6 +126,112 @@ "model_id": "smile_thermo", "name": "Smile Anna", "notifications": {}, + "schedules": { + "40e484ccfd644f1fa8b82f669091144a": { + "active": true, + "name": "Thermostat schedule", + "slots": [ + { + "end": "mo 15:00", + "preset": "home", + "start": "mo 08:00" + }, + { + "end": "mo 23:00", + "setpoint": 19.0, + "start": "mo 15:00" + }, + { + "end": "tu 10:00", + "preset": "asleep", + "start": "mo 23:00" + }, + { + "end": "tu 15:00", + "preset": "home", + "start": "tu 10:00" + }, + { + "end": "tu 23:00", + "setpoint": 19.0, + "start": "tu 15:00" + }, + { + "end": "we 10:00", + "preset": "asleep", + "start": "tu 23:00" + }, + { + "end": "we 15:00", + "preset": "home", + "start": "we 10:00" + }, + { + "end": "we 23:00", + "setpoint": 19.0, + "start": "we 15:00" + }, + { + "end": "th 08:00", + "preset": "asleep", + "start": "we 23:00" + }, + { + "end": "th 15:00", + "preset": "home", + "start": "th 08:00" + }, + { + "end": "th 23:00", + "setpoint": 19.0, + "start": "th 15:00" + }, + { + "end": "fr 10:00", + "preset": "asleep", + "start": "th 23:00" + }, + { + "end": "fr 15:00", + "preset": "home", + "start": "fr 10:00" + }, + { + "end": "fr 23:00", + "setpoint": 19.0, + "start": "fr 15:00" + }, + { + "end": "sa 10:00", + "preset": "asleep", + "start": "fr 23:00" + }, + { + "end": "sa 23:00", + "preset": "home", + "start": "sa 10:00" + }, + { + "end": "su 10:00", + "preset": "asleep", + "start": "sa 23:00" + }, + { + "end": "su 22:45", + "preset": "home", + "start": "su 10:00" + }, + { + "end": "mo 08:00", + "preset": "asleep", + "start": "su 22:45" + } + ], + "zones": [ + "d3ce834534114348be628b61b26d9220" + ] + } + }, "sensors": { "outdoor_temperature": 6.38 }, diff --git a/fixtures/anna_elga_2_cooling/data.json b/fixtures/anna_elga_2_cooling/data.json index f1a401941..cbeefeaa0 100644 --- a/fixtures/anna_elga_2_cooling/data.json +++ b/fixtures/anna_elga_2_cooling/data.json @@ -133,6 +133,88 @@ "model_id": "smile_thermo", "name": "Smile Anna", "notifications": {}, + "schedules": { + "40e484ccfd644f1fa8b82f669091144a": { + "active": true, + "name": "Thermostat schedule", + "slots": [ + { + "end": "tu 06:45", + "preset": "home", + "start": "mo 06:45" + }, + { + "end": "th 23:00", + "preset": "asleep", + "start": "mo 23:00" + }, + { + "end": "we 06:45", + "preset": "home", + "start": "tu 06:45" + }, + { + "end": "sa 08:30", + "preset": "asleep", + "start": "tu 23:00" + }, + { + "end": "th 06:45", + "preset": "home", + "start": "we 06:45" + }, + { + "end": "tu 23:00", + "preset": "asleep", + "start": "we 23:00" + }, + { + "end": "fr 06:45", + "preset": "home", + "start": "th 06:45" + }, + { + "end": "fr 23:00", + "preset": "asleep", + "start": "th 23:00" + }, + { + "end": "su 08:30", + "preset": "home", + "start": "fr 06:45" + }, + { + "end": "we 23:00", + "preset": "asleep", + "start": "fr 23:00" + }, + { + "end": "sa 23:00", + "preset": "home", + "start": "sa 08:30" + }, + { + "cooling_setpoint": 23.5, + "end": "mo 06:45", + "heating_setpoint": 18.5, + "start": "sa 23:00" + }, + { + "end": "su 22:45", + "preset": "home", + "start": "su 08:30" + }, + { + "end": "mo 23:00", + "preset": "asleep", + "start": "su 22:45" + } + ], + "zones": [ + "d3ce834534114348be628b61b26d9220" + ] + } + }, "sensors": { "outdoor_temperature": 31.0 }, diff --git a/fixtures/anna_elga_2_schedule_off/data.json b/fixtures/anna_elga_2_schedule_off/data.json index ffe061a6f..3c7949bc3 100644 --- a/fixtures/anna_elga_2_schedule_off/data.json +++ b/fixtures/anna_elga_2_schedule_off/data.json @@ -133,6 +133,85 @@ "model_id": "smile_thermo", "name": "Smile Anna", "notifications": {}, + "schedules": { + "40e484ccfd644f1fa8b82f669091144a": { + "active": true, + "name": "Thermostat schedule", + "slots": [ + { + "end": "tu 06:45", + "preset": "home", + "start": "mo 06:45" + }, + { + "end": "th 23:00", + "preset": "asleep", + "start": "mo 23:00" + }, + { + "end": "we 06:45", + "preset": "home", + "start": "tu 06:45" + }, + { + "end": "sa 08:30", + "preset": "asleep", + "start": "tu 23:00" + }, + { + "end": "th 06:45", + "preset": "home", + "start": "we 06:45" + }, + { + "end": "tu 23:00", + "preset": "asleep", + "start": "we 23:00" + }, + { + "end": "fr 06:45", + "preset": "home", + "start": "th 06:45" + }, + { + "end": "fr 23:00", + "preset": "asleep", + "start": "th 23:00" + }, + { + "end": "su 08:30", + "preset": "home", + "start": "fr 06:45" + }, + { + "end": "we 23:00", + "preset": "asleep", + "start": "fr 23:00" + }, + { + "end": "sa 23:00", + "preset": "home", + "start": "sa 08:30" + }, + { + "end": "mo 06:45", + "preset": "asleep", + "start": "sa 23:00" + }, + { + "end": "su 22:45", + "preset": "home", + "start": "su 08:30" + }, + { + "end": "mo 23:00", + "preset": "asleep", + "start": "su 22:45" + } + ], + "zones": [] + } + }, "sensors": { "outdoor_temperature": 13.0 }, diff --git a/fixtures/anna_elga_no_cooling/data.json b/fixtures/anna_elga_no_cooling/data.json index ef57ecfda..2e2b45c97 100644 --- a/fixtures/anna_elga_no_cooling/data.json +++ b/fixtures/anna_elga_no_cooling/data.json @@ -12,6 +12,72 @@ "model_id": "smile_thermo", "name": "Smile Anna", "notifications": {}, + "schedules": { + "6bae86c6a4ee44038393abb51c2dfe02": { + "active": true, + "name": "standaard", + "slots": [ + { + "end": "mo 10:15", + "preset": "home", + "start": "mo 07:00" + }, + { + "end": "mo 22:30", + "preset": "away", + "start": "mo 10:15" + }, + { + "end": "tu 07:00", + "preset": "asleep", + "start": "mo 22:30" + }, + { + "end": "tu 22:30", + "preset": "home", + "start": "tu 07:00" + }, + { + "end": "we 07:00", + "preset": "asleep", + "start": "tu 22:30" + }, + { + "end": "we 22:30", + "preset": "home", + "start": "we 07:00" + }, + { + "end": "th 07:00", + "preset": "asleep", + "start": "we 22:30" + }, + { + "end": "th 22:30", + "preset": "home", + "start": "th 07:00" + }, + { + "end": "fr 07:00", + "preset": "asleep", + "start": "th 22:30" + }, + { + "end": "su 22:30", + "preset": "home", + "start": "fr 07:00" + }, + { + "end": "mo 07:00", + "preset": "asleep", + "start": "su 22:30" + } + ], + "zones": [ + "c784ee9fdab44e1395b8dee7d7a497d5" + ] + } + }, "sensors": { "outdoor_temperature": 20.2 }, diff --git a/fixtures/anna_heatpump_cooling/data.json b/fixtures/anna_heatpump_cooling/data.json index ab6f2c7e7..ea0cad52b 100644 --- a/fixtures/anna_heatpump_cooling/data.json +++ b/fixtures/anna_heatpump_cooling/data.json @@ -12,6 +12,70 @@ "model_id": "smile_thermo", "name": "Smile Anna", "notifications": {}, + "schedules": { + "6bae86c6a4ee44038393abb51c2dfe02": { + "active": true, + "name": "standaard", + "slots": [ + { + "end": "mo 10:15", + "preset": "home", + "start": "mo 07:00" + }, + { + "end": "mo 22:30", + "preset": "away", + "start": "mo 10:15" + }, + { + "end": "tu 07:00", + "preset": "asleep", + "start": "mo 22:30" + }, + { + "end": "tu 22:30", + "preset": "home", + "start": "tu 07:00" + }, + { + "end": "we 07:00", + "preset": "asleep", + "start": "tu 22:30" + }, + { + "end": "we 22:30", + "preset": "home", + "start": "we 07:00" + }, + { + "end": "th 07:00", + "preset": "asleep", + "start": "we 22:30" + }, + { + "end": "th 22:30", + "preset": "home", + "start": "th 07:00" + }, + { + "end": "fr 07:00", + "preset": "asleep", + "start": "th 22:30" + }, + { + "end": "su 22:30", + "preset": "home", + "start": "fr 07:00" + }, + { + "end": "mo 07:00", + "preset": "asleep", + "start": "su 22:30" + } + ], + "zones": [] + } + }, "sensors": { "outdoor_temperature": 22.0 }, diff --git a/fixtures/anna_heatpump_cooling_fake_firmware/data.json b/fixtures/anna_heatpump_cooling_fake_firmware/data.json index 9d9f3d84e..d15a2ce3c 100644 --- a/fixtures/anna_heatpump_cooling_fake_firmware/data.json +++ b/fixtures/anna_heatpump_cooling_fake_firmware/data.json @@ -12,6 +12,70 @@ "model_id": "smile_thermo", "name": "Smile Anna", "notifications": {}, + "schedules": { + "6bae86c6a4ee44038393abb51c2dfe02": { + "active": true, + "name": "standaard", + "slots": [ + { + "end": "mo 10:15", + "preset": "home", + "start": "mo 07:00" + }, + { + "end": "mo 22:30", + "preset": "away", + "start": "mo 10:15" + }, + { + "end": "tu 07:00", + "preset": "asleep", + "start": "mo 22:30" + }, + { + "end": "tu 22:30", + "preset": "home", + "start": "tu 07:00" + }, + { + "end": "we 07:00", + "preset": "asleep", + "start": "tu 22:30" + }, + { + "end": "we 22:30", + "preset": "home", + "start": "we 07:00" + }, + { + "end": "th 07:00", + "preset": "asleep", + "start": "we 22:30" + }, + { + "end": "th 22:30", + "preset": "home", + "start": "th 07:00" + }, + { + "end": "fr 07:00", + "preset": "asleep", + "start": "th 22:30" + }, + { + "end": "su 22:30", + "preset": "home", + "start": "fr 07:00" + }, + { + "end": "mo 07:00", + "preset": "asleep", + "start": "su 22:30" + } + ], + "zones": [] + } + }, "sensors": { "outdoor_temperature": 22.0 }, diff --git a/fixtures/anna_heatpump_heating/data.json b/fixtures/anna_heatpump_heating/data.json index 8deef46d8..db57c6d15 100644 --- a/fixtures/anna_heatpump_heating/data.json +++ b/fixtures/anna_heatpump_heating/data.json @@ -12,6 +12,72 @@ "model_id": "smile_thermo", "name": "Smile Anna", "notifications": {}, + "schedules": { + "6bae86c6a4ee44038393abb51c2dfe02": { + "active": true, + "name": "standaard", + "slots": [ + { + "end": "mo 10:15", + "preset": "home", + "start": "mo 07:00" + }, + { + "end": "mo 22:30", + "preset": "away", + "start": "mo 10:15" + }, + { + "end": "tu 07:00", + "preset": "asleep", + "start": "mo 22:30" + }, + { + "end": "tu 22:30", + "preset": "home", + "start": "tu 07:00" + }, + { + "end": "we 07:00", + "preset": "asleep", + "start": "tu 22:30" + }, + { + "end": "we 22:30", + "preset": "home", + "start": "we 07:00" + }, + { + "end": "th 07:00", + "preset": "asleep", + "start": "we 22:30" + }, + { + "end": "th 22:30", + "preset": "home", + "start": "th 07:00" + }, + { + "end": "fr 07:00", + "preset": "asleep", + "start": "th 22:30" + }, + { + "end": "su 22:30", + "preset": "home", + "start": "fr 07:00" + }, + { + "end": "mo 07:00", + "preset": "asleep", + "start": "su 22:30" + } + ], + "zones": [ + "c784ee9fdab44e1395b8dee7d7a497d5" + ] + } + }, "sensors": { "outdoor_temperature": 20.2 }, diff --git a/fixtures/anna_loria_cooling_active/data.json b/fixtures/anna_loria_cooling_active/data.json index dbb5c9f7e..69a229e67 100644 --- a/fixtures/anna_loria_cooling_active/data.json +++ b/fixtures/anna_loria_cooling_active/data.json @@ -91,6 +91,1004 @@ "model_id": "smile_thermo", "name": "Smile Anna", "notifications": {}, + "schedules": { + "a667b8ad609f4c45a3258f2ef9749d30": { + "active": true, + "name": "Winter", + "slots": [ + { + "end": "mo 23:15", + "preset": "home", + "start": "mo 06:00" + }, + { + "end": "tu 06:00", + "preset": "asleep", + "start": "mo 23:15" + }, + { + "end": "tu 23:15", + "preset": "home", + "start": "tu 06:00" + }, + { + "end": "we 06:00", + "preset": "asleep", + "start": "tu 23:15" + }, + { + "end": "we 23:15", + "preset": "home", + "start": "we 06:00" + }, + { + "end": "th 06:00", + "preset": "asleep", + "start": "we 23:15" + }, + { + "end": "th 23:15", + "preset": "home", + "start": "th 06:00" + }, + { + "end": "fr 06:00", + "preset": "asleep", + "start": "th 23:15" + }, + { + "end": "fr 23:15", + "preset": "home", + "start": "fr 06:00" + }, + { + "end": "sa 07:30", + "preset": "asleep", + "start": "fr 23:15" + }, + { + "end": "sa 23:15", + "preset": "home", + "start": "sa 07:30" + }, + { + "end": "su 07:30", + "preset": "asleep", + "start": "sa 23:15" + }, + { + "end": "su 23:15", + "preset": "home", + "start": "su 07:30" + }, + { + "end": "mo 06:00", + "preset": "asleep", + "start": "su 23:15" + } + ], + "zones": [ + "15da035090b847e7a21f93e08c015ebc" + ] + }, + "bb391cf9eeb84fa8a874fa83072c70fb": { + "active": true, + "name": "Test ", + "slots": [ + { + "end": "tu 00:00", + "preset": "home", + "start": "mo 00:00" + }, + { + "end": "tu 00:15", + "preset": "asleep", + "start": "mo 00:15" + }, + { + "end": "tu 02:00", + "preset": "home", + "start": "mo 02:00" + }, + { + "end": "tu 02:15", + "preset": "asleep", + "start": "mo 02:15" + }, + { + "end": "tu 04:00", + "preset": "home", + "start": "mo 04:00" + }, + { + "end": "tu 04:15", + "preset": "asleep", + "start": "mo 04:15" + }, + { + "end": "tu 06:00", + "preset": "home", + "start": "mo 06:00" + }, + { + "end": "tu 06:30", + "preset": "asleep", + "start": "mo 06:30" + }, + { + "end": "tu 08:00", + "preset": "home", + "start": "mo 08:00" + }, + { + "end": "tu 08:15", + "preset": "asleep", + "start": "mo 08:15" + }, + { + "end": "tu 09:30", + "preset": "home", + "start": "mo 09:30" + }, + { + "end": "we 09:45", + "preset": "asleep", + "start": "mo 09:45" + }, + { + "end": "tu 11:00", + "preset": "home", + "start": "mo 11:00" + }, + { + "end": "tu 11:15", + "preset": "asleep", + "start": "mo 11:15" + }, + { + "end": "tu 12:45", + "preset": "home", + "start": "mo 12:45" + }, + { + "end": "tu 13:00", + "preset": "asleep", + "start": "mo 13:00" + }, + { + "end": "tu 14:30", + "preset": "home", + "start": "mo 14:30" + }, + { + "end": "tu 14:45", + "preset": "asleep", + "start": "mo 14:45" + }, + { + "end": "tu 16:00", + "preset": "home", + "start": "mo 16:00" + }, + { + "end": "tu 16:15", + "preset": "asleep", + "start": "mo 16:15" + }, + { + "end": "tu 18:00", + "preset": "home", + "start": "mo 18:00" + }, + { + "end": "tu 18:15", + "preset": "asleep", + "start": "mo 18:15" + }, + { + "end": "tu 20:15", + "preset": "home", + "start": "mo 20:15" + }, + { + "end": "tu 20:30", + "preset": "asleep", + "start": "mo 20:30" + }, + { + "end": "tu 22:00", + "preset": "home", + "start": "mo 22:00" + }, + { + "end": "tu 22:15", + "preset": "asleep", + "start": "mo 22:15" + }, + { + "end": "we 00:00", + "preset": "home", + "start": "tu 00:00" + }, + { + "end": "we 00:15", + "preset": "asleep", + "start": "tu 00:15" + }, + { + "end": "we 02:00", + "preset": "home", + "start": "tu 02:00" + }, + { + "end": "we 02:15", + "preset": "asleep", + "start": "tu 02:15" + }, + { + "end": "we 04:00", + "preset": "home", + "start": "tu 04:00" + }, + { + "end": "we 04:15", + "preset": "asleep", + "start": "tu 04:15" + }, + { + "end": "we 06:00", + "preset": "home", + "start": "tu 06:00" + }, + { + "end": "we 06:30", + "preset": "asleep", + "start": "tu 06:30" + }, + { + "end": "we 08:00", + "preset": "home", + "start": "tu 08:00" + }, + { + "end": "we 08:15", + "preset": "asleep", + "start": "tu 08:15" + }, + { + "end": "we 09:30", + "preset": "home", + "start": "tu 09:30" + }, + { + "end": "th 09:45", + "preset": "asleep", + "start": "tu 09:45" + }, + { + "end": "we 11:00", + "preset": "home", + "start": "tu 11:00" + }, + { + "end": "we 11:15", + "preset": "asleep", + "start": "tu 11:15" + }, + { + "end": "we 12:45", + "preset": "home", + "start": "tu 12:45" + }, + { + "end": "we 13:00", + "preset": "asleep", + "start": "tu 13:00" + }, + { + "end": "we 14:30", + "preset": "home", + "start": "tu 14:30" + }, + { + "end": "we 14:45", + "preset": "asleep", + "start": "tu 14:45" + }, + { + "end": "we 16:00", + "preset": "home", + "start": "tu 16:00" + }, + { + "end": "we 16:15", + "preset": "asleep", + "start": "tu 16:15" + }, + { + "end": "we 18:00", + "preset": "home", + "start": "tu 18:00" + }, + { + "end": "we 18:15", + "preset": "asleep", + "start": "tu 18:15" + }, + { + "end": "we 20:15", + "preset": "home", + "start": "tu 20:15" + }, + { + "end": "we 20:30", + "preset": "asleep", + "start": "tu 20:30" + }, + { + "end": "we 22:00", + "preset": "home", + "start": "tu 22:00" + }, + { + "end": "we 22:15", + "preset": "asleep", + "start": "tu 22:15" + }, + { + "end": "th 00:00", + "preset": "home", + "start": "we 00:00" + }, + { + "end": "th 00:15", + "preset": "asleep", + "start": "we 00:15" + }, + { + "end": "th 02:00", + "preset": "home", + "start": "we 02:00" + }, + { + "end": "th 02:15", + "preset": "asleep", + "start": "we 02:15" + }, + { + "end": "fr 04:00", + "preset": "home", + "start": "we 04:00" + }, + { + "end": "fr 04:15", + "preset": "asleep", + "start": "we 04:15" + }, + { + "end": "fr 06:00", + "preset": "home", + "start": "we 06:00" + }, + { + "end": "th 06:30", + "preset": "asleep", + "start": "we 06:30" + }, + { + "end": "th 08:00", + "preset": "home", + "start": "we 08:00" + }, + { + "end": "th 08:15", + "preset": "asleep", + "start": "we 08:15" + }, + { + "end": "th 09:30", + "preset": "home", + "start": "we 09:30" + }, + { + "end": "tu 09:45", + "preset": "asleep", + "start": "we 09:45" + }, + { + "end": "th 11:00", + "preset": "home", + "start": "we 11:00" + }, + { + "end": "th 11:15", + "preset": "asleep", + "start": "we 11:15" + }, + { + "end": "th 12:45", + "preset": "home", + "start": "we 12:45" + }, + { + "end": "th 13:00", + "preset": "asleep", + "start": "we 13:00" + }, + { + "end": "th 14:30", + "preset": "home", + "start": "we 14:30" + }, + { + "end": "th 14:45", + "preset": "asleep", + "start": "we 14:45" + }, + { + "end": "th 16:00", + "preset": "home", + "start": "we 16:00" + }, + { + "end": "fr 16:15", + "preset": "asleep", + "start": "we 16:15" + }, + { + "end": "th 18:00", + "preset": "home", + "start": "we 18:00" + }, + { + "end": "th 18:15", + "preset": "asleep", + "start": "we 18:15" + }, + { + "end": "th 20:15", + "preset": "home", + "start": "we 20:15" + }, + { + "end": "th 20:30", + "preset": "asleep", + "start": "we 20:30" + }, + { + "end": "th 22:00", + "preset": "home", + "start": "we 22:00" + }, + { + "end": "th 22:15", + "preset": "asleep", + "start": "we 22:15" + }, + { + "end": "su 00:00", + "preset": "home", + "start": "th 00:00" + }, + { + "end": "fr 00:15", + "preset": "asleep", + "start": "th 00:15" + }, + { + "end": "fr 02:00", + "preset": "home", + "start": "th 02:00" + }, + { + "end": "fr 02:15", + "preset": "asleep", + "start": "th 02:15" + }, + { + "end": "mo 04:15", + "preset": "home", + "start": "th 04:00" + }, + { + "end": "mo 06:00", + "preset": "asleep", + "start": "th 04:15" + }, + { + "end": "su 06:00", + "preset": "home", + "start": "th 06:00" + }, + { + "end": "fr 06:30", + "preset": "asleep", + "start": "th 06:30" + }, + { + "end": "fr 08:00", + "preset": "home", + "start": "th 08:00" + }, + { + "end": "fr 08:15", + "preset": "asleep", + "start": "th 08:15" + }, + { + "end": "fr 09:30", + "preset": "home", + "start": "th 09:30" + }, + { + "end": "fr 09:45", + "preset": "asleep", + "start": "th 09:45" + }, + { + "end": "fr 11:00", + "preset": "home", + "start": "th 11:00" + }, + { + "end": "fr 11:15", + "preset": "asleep", + "start": "th 11:15" + }, + { + "end": "fr 12:45", + "preset": "home", + "start": "th 12:45" + }, + { + "end": "fr 13:00", + "preset": "asleep", + "start": "th 13:00" + }, + { + "end": "fr 14:30", + "preset": "home", + "start": "th 14:30" + }, + { + "end": "fr 14:45", + "preset": "asleep", + "start": "th 14:45" + }, + { + "end": "fr 16:00", + "preset": "home", + "start": "th 16:00" + }, + { + "end": "su 16:15", + "preset": "asleep", + "start": "th 16:15" + }, + { + "end": "fr 18:00", + "preset": "home", + "start": "th 18:00" + }, + { + "end": "fr 18:15", + "preset": "asleep", + "start": "th 18:15" + }, + { + "end": "fr 20:15", + "preset": "home", + "start": "th 20:15" + }, + { + "end": "fr 20:30", + "preset": "asleep", + "start": "th 20:30" + }, + { + "end": "fr 22:00", + "preset": "home", + "start": "th 22:00" + }, + { + "end": "fr 22:15", + "preset": "asleep", + "start": "th 22:15" + }, + { + "end": "mo 00:00", + "preset": "home", + "start": "fr 00:00" + }, + { + "end": "su 00:15", + "preset": "asleep", + "start": "fr 00:15" + }, + { + "end": "su 02:00", + "preset": "home", + "start": "fr 02:00" + }, + { + "end": "su 02:15", + "preset": "asleep", + "start": "fr 02:15" + }, + { + "end": "su 04:00", + "preset": "home", + "start": "fr 04:00" + }, + { + "end": "su 04:15", + "preset": "asleep", + "start": "fr 04:15" + }, + { + "end": "th 06:00", + "preset": "home", + "start": "fr 06:00" + }, + { + "end": "su 06:30", + "preset": "asleep", + "start": "fr 06:30" + }, + { + "end": "su 08:00", + "preset": "home", + "start": "fr 08:00" + }, + { + "end": "su 08:15", + "preset": "asleep", + "start": "fr 08:15" + }, + { + "end": "su 09:30", + "preset": "home", + "start": "fr 09:30" + }, + { + "end": "su 09:45", + "preset": "asleep", + "start": "fr 09:45" + }, + { + "end": "su 11:00", + "preset": "home", + "start": "fr 11:00" + }, + { + "end": "su 11:15", + "preset": "asleep", + "start": "fr 11:15" + }, + { + "end": "su 12:45", + "preset": "home", + "start": "fr 12:45" + }, + { + "end": "su 13:00", + "preset": "asleep", + "start": "fr 13:00" + }, + { + "end": "su 14:30", + "preset": "home", + "start": "fr 14:30" + }, + { + "end": "su 14:45", + "preset": "asleep", + "start": "fr 14:45" + }, + { + "end": "su 16:00", + "preset": "home", + "start": "fr 16:00" + }, + { + "end": "th 16:15", + "preset": "asleep", + "start": "fr 16:15" + }, + { + "end": "su 18:00", + "preset": "home", + "start": "fr 18:00" + }, + { + "end": "su 18:15", + "preset": "asleep", + "start": "fr 18:15" + }, + { + "end": "su 20:15", + "preset": "home", + "start": "fr 20:15" + }, + { + "end": "su 20:30", + "preset": "asleep", + "start": "fr 20:30" + }, + { + "end": "su 22:00", + "preset": "home", + "start": "fr 22:00" + }, + { + "end": "su 22:15", + "preset": "asleep", + "start": "fr 22:15" + }, + { + "end": "sa 00:15", + "preset": "home", + "start": "sa 00:00" + }, + { + "end": "sa 02:00", + "preset": "asleep", + "start": "sa 00:15" + }, + { + "end": "sa 02:15", + "preset": "home", + "start": "sa 02:00" + }, + { + "end": "sa 04:00", + "preset": "asleep", + "start": "sa 02:15" + }, + { + "end": "sa 04:15", + "preset": "home", + "start": "sa 04:00" + }, + { + "end": "sa 06:00", + "preset": "asleep", + "start": "sa 04:15" + }, + { + "end": "sa 06:30", + "preset": "home", + "start": "sa 06:00" + }, + { + "end": "sa 08:00", + "preset": "asleep", + "start": "sa 06:30" + }, + { + "end": "sa 08:15", + "preset": "home", + "start": "sa 08:00" + }, + { + "end": "sa 09:30", + "preset": "asleep", + "start": "sa 08:15" + }, + { + "end": "sa 09:45", + "preset": "home", + "start": "sa 09:30" + }, + { + "end": "sa 11:00", + "preset": "asleep", + "start": "sa 09:45" + }, + { + "end": "sa 11:15", + "preset": "home", + "start": "sa 11:00" + }, + { + "end": "sa 12:45", + "preset": "asleep", + "start": "sa 11:15" + }, + { + "end": "sa 13:00", + "preset": "home", + "start": "sa 12:45" + }, + { + "end": "sa 14:30", + "preset": "asleep", + "start": "sa 13:00" + }, + { + "end": "sa 14:45", + "preset": "home", + "start": "sa 14:30" + }, + { + "end": "sa 16:00", + "preset": "asleep", + "start": "sa 14:45" + }, + { + "end": "sa 16:15", + "preset": "home", + "start": "sa 16:00" + }, + { + "end": "sa 18:00", + "preset": "asleep", + "start": "sa 16:15" + }, + { + "end": "sa 18:15", + "preset": "home", + "start": "sa 18:00" + }, + { + "end": "sa 20:15", + "preset": "asleep", + "start": "sa 18:15" + }, + { + "end": "sa 20:30", + "preset": "home", + "start": "sa 20:15" + }, + { + "end": "sa 22:00", + "preset": "asleep", + "start": "sa 20:30" + }, + { + "end": "sa 22:15", + "preset": "home", + "start": "sa 22:00" + }, + { + "end": "fr 00:00", + "preset": "asleep", + "start": "sa 22:15" + }, + { + "end": "mo 00:15", + "preset": "home", + "start": "su 00:00" + }, + { + "end": "mo 02:00", + "preset": "asleep", + "start": "su 00:15" + }, + { + "end": "mo 02:15", + "preset": "home", + "start": "su 02:00" + }, + { + "end": "mo 04:00", + "preset": "asleep", + "start": "su 02:15" + }, + { + "end": "th 04:00", + "preset": "home", + "start": "su 04:00" + }, + { + "end": "th 04:15", + "preset": "asleep", + "start": "su 04:15" + }, + { + "end": "mo 06:30", + "preset": "home", + "start": "su 06:00" + }, + { + "end": "mo 08:00", + "preset": "asleep", + "start": "su 06:30" + }, + { + "end": "mo 08:15", + "preset": "home", + "start": "su 08:00" + }, + { + "end": "mo 09:30", + "preset": "asleep", + "start": "su 08:15" + }, + { + "end": "mo 09:45", + "preset": "home", + "start": "su 09:30" + }, + { + "end": "mo 11:00", + "preset": "asleep", + "start": "su 09:45" + }, + { + "end": "mo 11:15", + "preset": "home", + "start": "su 11:00" + }, + { + "end": "mo 12:45", + "preset": "asleep", + "start": "su 11:15" + }, + { + "end": "mo 13:00", + "preset": "home", + "start": "su 12:45" + }, + { + "end": "mo 14:30", + "preset": "asleep", + "start": "su 13:00" + }, + { + "end": "mo 14:45", + "preset": "home", + "start": "su 14:30" + }, + { + "end": "mo 16:00", + "preset": "asleep", + "start": "su 14:45" + }, + { + "end": "mo 16:15", + "preset": "home", + "start": "su 16:00" + }, + { + "end": "mo 18:00", + "preset": "asleep", + "start": "su 16:15" + }, + { + "end": "mo 18:15", + "preset": "home", + "start": "su 18:00" + }, + { + "end": "mo 20:15", + "preset": "asleep", + "start": "su 18:15" + }, + { + "end": "mo 20:30", + "preset": "home", + "start": "su 20:15" + }, + { + "end": "mo 22:00", + "preset": "asleep", + "start": "su 20:30" + }, + { + "end": "mo 22:15", + "preset": "home", + "start": "su 22:00" + }, + { + "end": "sa 00:00", + "preset": "asleep", + "start": "su 22:15" + } + ], + "zones": [] + } + }, "sensors": { "outdoor_temperature": 15.5 }, diff --git a/fixtures/anna_loria_driessens/data.json b/fixtures/anna_loria_driessens/data.json index 4fd7a56a8..8e2e2278c 100644 --- a/fixtures/anna_loria_driessens/data.json +++ b/fixtures/anna_loria_driessens/data.json @@ -12,6 +12,388 @@ "model_id": "smile_thermo", "name": "Smile Anna", "notifications": {}, + "schedules": { + "68640693f6a445a5993389c636a84435": { + "active": true, + "name": "VAKANTIE (winter)", + "slots": [ + { + "end": "mo 15:30", + "preset": "away", + "start": "mo 10:45" + }, + { + "end": "tu 10:45", + "setpoint": 15.0, + "start": "mo 15:30" + }, + { + "end": "tu 15:30", + "preset": "away", + "start": "tu 10:45" + }, + { + "end": "we 10:45", + "setpoint": 15.0, + "start": "tu 15:30" + }, + { + "end": "we 15:30", + "preset": "away", + "start": "we 10:45" + }, + { + "end": "th 10:45", + "setpoint": 15.0, + "start": "we 15:30" + }, + { + "end": "th 15:30", + "preset": "away", + "start": "th 10:45" + }, + { + "end": "fr 10:45", + "setpoint": 15.0, + "start": "th 15:30" + }, + { + "end": "fr 15:30", + "preset": "away", + "start": "fr 10:45" + }, + { + "end": "sa 10:45", + "setpoint": 15.0, + "start": "fr 15:30" + }, + { + "end": "sa 15:30", + "preset": "away", + "start": "sa 10:45" + }, + { + "end": "su 10:45", + "setpoint": 15.0, + "start": "sa 15:30" + }, + { + "end": "su 15:30", + "preset": "away", + "start": "su 10:45" + }, + { + "end": "mo 10:45", + "setpoint": 15.0, + "start": "su 15:30" + } + ], + "zones": [] + }, + "6cfc8d79f7164cd5b0e5d7a8e8d217c3": { + "active": true, + "name": "KOELEN", + "slots": [ + { + "end": "mo 20:00", + "preset": "home", + "start": "mo 08:00" + }, + { + "end": "tu 08:00", + "preset": "asleep", + "start": "mo 20:00" + }, + { + "end": "tu 20:00", + "preset": "home", + "start": "tu 08:00" + }, + { + "end": "we 08:00", + "preset": "asleep", + "start": "tu 20:00" + }, + { + "end": "we 20:00", + "preset": "home", + "start": "we 08:00" + }, + { + "end": "th 08:00", + "preset": "asleep", + "start": "we 20:00" + }, + { + "end": "th 20:00", + "preset": "home", + "start": "th 08:00" + }, + { + "end": "fr 08:00", + "preset": "asleep", + "start": "th 20:00" + }, + { + "end": "fr 20:00", + "preset": "home", + "start": "fr 08:00" + }, + { + "end": "sa 08:00", + "preset": "asleep", + "start": "fr 20:00" + }, + { + "end": "sa 20:00", + "preset": "home", + "start": "sa 08:00" + }, + { + "end": "su 08:00", + "preset": "asleep", + "start": "sa 20:00" + }, + { + "end": "su 20:00", + "preset": "home", + "start": "su 08:00" + }, + { + "end": "mo 08:00", + "preset": "asleep", + "start": "su 20:00" + } + ], + "zones": [] + }, + "86e18430fa3f49a3a7e89557af183ccb": { + "active": true, + "name": "VERWARMEN", + "slots": [ + { + "end": "mo 10:15", + "setpoint": 21.0, + "start": "mo 10:00" + }, + { + "end": "mo 17:00", + "preset": "home", + "start": "mo 10:15" + }, + { + "end": "tu 10:00", + "preset": "asleep", + "start": "mo 17:00" + }, + { + "end": "tu 10:15", + "setpoint": 21.0, + "start": "tu 10:00" + }, + { + "end": "tu 17:00", + "preset": "home", + "start": "tu 10:15" + }, + { + "end": "we 10:00", + "preset": "asleep", + "start": "tu 17:00" + }, + { + "end": "we 10:15", + "setpoint": 21.0, + "start": "we 10:00" + }, + { + "end": "we 17:00", + "preset": "home", + "start": "we 10:15" + }, + { + "end": "th 10:00", + "preset": "asleep", + "start": "we 17:00" + }, + { + "end": "th 10:15", + "setpoint": 21.0, + "start": "th 10:00" + }, + { + "end": "th 17:00", + "preset": "home", + "start": "th 10:15" + }, + { + "end": "fr 10:00", + "preset": "asleep", + "start": "th 17:00" + }, + { + "end": "fr 10:15", + "setpoint": 21.0, + "start": "fr 10:00" + }, + { + "end": "fr 17:00", + "preset": "home", + "start": "fr 10:15" + }, + { + "end": "sa 10:00", + "preset": "asleep", + "start": "fr 17:00" + }, + { + "end": "sa 10:15", + "setpoint": 21.0, + "start": "sa 10:00" + }, + { + "end": "sa 17:00", + "preset": "home", + "start": "sa 10:15" + }, + { + "end": "su 10:00", + "preset": "asleep", + "start": "sa 17:00" + }, + { + "end": "su 10:15", + "setpoint": 21.0, + "start": "su 10:00" + }, + { + "end": "su 17:00", + "preset": "home", + "start": "su 10:15" + }, + { + "end": "mo 10:00", + "preset": "asleep", + "start": "su 17:00" + } + ], + "zones": [] + }, + "d4e04f5167ab43348e00c0a45b50a2bb": { + "active": true, + "name": "Verwarmen@9-23u", + "slots": [ + { + "end": "mo 09:15", + "setpoint": 21.0, + "start": "mo 09:00" + }, + { + "end": "mo 23:00", + "preset": "home", + "start": "mo 09:15" + }, + { + "end": "tu 09:00", + "preset": "asleep", + "start": "mo 23:00" + }, + { + "end": "tu 09:15", + "setpoint": 21.0, + "start": "tu 09:00" + }, + { + "end": "tu 23:00", + "preset": "home", + "start": "tu 09:15" + }, + { + "end": "we 09:00", + "preset": "asleep", + "start": "tu 23:00" + }, + { + "end": "we 09:15", + "setpoint": 21.0, + "start": "we 09:00" + }, + { + "end": "we 23:00", + "preset": "home", + "start": "we 09:15" + }, + { + "end": "th 09:00", + "preset": "asleep", + "start": "we 23:00" + }, + { + "end": "th 09:15", + "setpoint": 21.0, + "start": "th 09:00" + }, + { + "end": "th 23:00", + "preset": "home", + "start": "th 09:15" + }, + { + "end": "fr 09:00", + "preset": "asleep", + "start": "th 23:00" + }, + { + "end": "fr 09:15", + "setpoint": 21.0, + "start": "fr 09:00" + }, + { + "end": "fr 23:00", + "preset": "home", + "start": "fr 09:15" + }, + { + "end": "sa 09:00", + "preset": "asleep", + "start": "fr 23:00" + }, + { + "end": "sa 09:15", + "setpoint": 21.0, + "start": "sa 09:00" + }, + { + "end": "sa 23:00", + "preset": "home", + "start": "sa 09:15" + }, + { + "end": "su 09:00", + "preset": "asleep", + "start": "sa 23:00" + }, + { + "end": "su 09:15", + "setpoint": 21.0, + "start": "su 09:00" + }, + { + "end": "su 23:00", + "preset": "home", + "start": "su 09:15" + }, + { + "end": "mo 09:00", + "preset": "asleep", + "start": "su 23:00" + } + ], + "zones": [ + "fa70e08550c94de3a34feb27ecf31421" + ] + } + }, "sensors": { "outdoor_temperature": 6.81 }, diff --git a/fixtures/anna_loria_heating_idle/data.json b/fixtures/anna_loria_heating_idle/data.json index 532006bda..95045e420 100644 --- a/fixtures/anna_loria_heating_idle/data.json +++ b/fixtures/anna_loria_heating_idle/data.json @@ -91,6 +91,1004 @@ "model_id": "smile_thermo", "name": "Smile Anna", "notifications": {}, + "schedules": { + "a667b8ad609f4c45a3258f2ef9749d30": { + "active": true, + "name": "Winter", + "slots": [ + { + "end": "mo 23:15", + "setpoint": 17.5, + "start": "mo 06:00" + }, + { + "end": "tu 06:00", + "preset": "asleep", + "start": "mo 23:15" + }, + { + "end": "tu 23:15", + "preset": "home", + "start": "tu 06:00" + }, + { + "end": "we 06:00", + "preset": "asleep", + "start": "tu 23:15" + }, + { + "end": "we 23:15", + "preset": "home", + "start": "we 06:00" + }, + { + "end": "th 06:00", + "preset": "asleep", + "start": "we 23:15" + }, + { + "end": "th 23:15", + "preset": "home", + "start": "th 06:00" + }, + { + "end": "fr 06:00", + "preset": "asleep", + "start": "th 23:15" + }, + { + "end": "fr 23:15", + "preset": "home", + "start": "fr 06:00" + }, + { + "end": "sa 07:30", + "preset": "asleep", + "start": "fr 23:15" + }, + { + "end": "sa 23:15", + "preset": "home", + "start": "sa 07:30" + }, + { + "end": "su 07:30", + "preset": "asleep", + "start": "sa 23:15" + }, + { + "end": "su 23:15", + "preset": "home", + "start": "su 07:30" + }, + { + "end": "mo 06:00", + "preset": "asleep", + "start": "su 23:15" + } + ], + "zones": [ + "15da035090b847e7a21f93e08c015ebc" + ] + }, + "bb391cf9eeb84fa8a874fa83072c70fb": { + "active": true, + "name": "Test ", + "slots": [ + { + "end": "tu 00:00", + "preset": "home", + "start": "mo 00:00" + }, + { + "end": "tu 00:15", + "preset": "asleep", + "start": "mo 00:15" + }, + { + "end": "tu 02:00", + "preset": "home", + "start": "mo 02:00" + }, + { + "end": "tu 02:15", + "preset": "asleep", + "start": "mo 02:15" + }, + { + "end": "tu 04:00", + "preset": "home", + "start": "mo 04:00" + }, + { + "end": "tu 04:15", + "preset": "asleep", + "start": "mo 04:15" + }, + { + "end": "tu 06:00", + "preset": "home", + "start": "mo 06:00" + }, + { + "end": "tu 06:30", + "preset": "asleep", + "start": "mo 06:30" + }, + { + "end": "tu 08:00", + "preset": "home", + "start": "mo 08:00" + }, + { + "end": "tu 08:15", + "preset": "asleep", + "start": "mo 08:15" + }, + { + "end": "tu 09:30", + "preset": "home", + "start": "mo 09:30" + }, + { + "end": "we 09:45", + "preset": "asleep", + "start": "mo 09:45" + }, + { + "end": "tu 11:00", + "preset": "home", + "start": "mo 11:00" + }, + { + "end": "tu 11:15", + "preset": "asleep", + "start": "mo 11:15" + }, + { + "end": "tu 12:45", + "preset": "home", + "start": "mo 12:45" + }, + { + "end": "tu 13:00", + "preset": "asleep", + "start": "mo 13:00" + }, + { + "end": "tu 14:30", + "preset": "home", + "start": "mo 14:30" + }, + { + "end": "tu 14:45", + "preset": "asleep", + "start": "mo 14:45" + }, + { + "end": "tu 16:00", + "preset": "home", + "start": "mo 16:00" + }, + { + "end": "tu 16:15", + "preset": "asleep", + "start": "mo 16:15" + }, + { + "end": "tu 18:00", + "preset": "home", + "start": "mo 18:00" + }, + { + "end": "tu 18:15", + "preset": "asleep", + "start": "mo 18:15" + }, + { + "end": "tu 20:15", + "preset": "home", + "start": "mo 20:15" + }, + { + "end": "tu 20:30", + "preset": "asleep", + "start": "mo 20:30" + }, + { + "end": "tu 22:00", + "preset": "home", + "start": "mo 22:00" + }, + { + "end": "tu 22:15", + "preset": "asleep", + "start": "mo 22:15" + }, + { + "end": "we 00:00", + "preset": "home", + "start": "tu 00:00" + }, + { + "end": "we 00:15", + "preset": "asleep", + "start": "tu 00:15" + }, + { + "end": "we 02:00", + "preset": "home", + "start": "tu 02:00" + }, + { + "end": "we 02:15", + "preset": "asleep", + "start": "tu 02:15" + }, + { + "end": "we 04:00", + "preset": "home", + "start": "tu 04:00" + }, + { + "end": "we 04:15", + "preset": "asleep", + "start": "tu 04:15" + }, + { + "end": "we 06:00", + "preset": "home", + "start": "tu 06:00" + }, + { + "end": "we 06:30", + "preset": "asleep", + "start": "tu 06:30" + }, + { + "end": "we 08:00", + "preset": "home", + "start": "tu 08:00" + }, + { + "end": "we 08:15", + "preset": "asleep", + "start": "tu 08:15" + }, + { + "end": "we 09:30", + "preset": "home", + "start": "tu 09:30" + }, + { + "end": "th 09:45", + "preset": "asleep", + "start": "tu 09:45" + }, + { + "end": "we 11:00", + "preset": "home", + "start": "tu 11:00" + }, + { + "end": "we 11:15", + "preset": "asleep", + "start": "tu 11:15" + }, + { + "end": "we 12:45", + "preset": "home", + "start": "tu 12:45" + }, + { + "end": "we 13:00", + "preset": "asleep", + "start": "tu 13:00" + }, + { + "end": "we 14:30", + "preset": "home", + "start": "tu 14:30" + }, + { + "end": "we 14:45", + "preset": "asleep", + "start": "tu 14:45" + }, + { + "end": "we 16:00", + "preset": "home", + "start": "tu 16:00" + }, + { + "end": "we 16:15", + "preset": "asleep", + "start": "tu 16:15" + }, + { + "end": "we 18:00", + "preset": "home", + "start": "tu 18:00" + }, + { + "end": "we 18:15", + "preset": "asleep", + "start": "tu 18:15" + }, + { + "end": "we 20:15", + "preset": "home", + "start": "tu 20:15" + }, + { + "end": "we 20:30", + "preset": "asleep", + "start": "tu 20:30" + }, + { + "end": "we 22:00", + "preset": "home", + "start": "tu 22:00" + }, + { + "end": "we 22:15", + "preset": "asleep", + "start": "tu 22:15" + }, + { + "end": "th 00:00", + "preset": "home", + "start": "we 00:00" + }, + { + "end": "th 00:15", + "preset": "asleep", + "start": "we 00:15" + }, + { + "end": "th 02:00", + "preset": "home", + "start": "we 02:00" + }, + { + "end": "th 02:15", + "preset": "asleep", + "start": "we 02:15" + }, + { + "end": "fr 04:00", + "preset": "home", + "start": "we 04:00" + }, + { + "end": "fr 04:15", + "preset": "asleep", + "start": "we 04:15" + }, + { + "end": "fr 06:00", + "preset": "home", + "start": "we 06:00" + }, + { + "end": "th 06:30", + "preset": "asleep", + "start": "we 06:30" + }, + { + "end": "th 08:00", + "preset": "home", + "start": "we 08:00" + }, + { + "end": "th 08:15", + "preset": "asleep", + "start": "we 08:15" + }, + { + "end": "th 09:30", + "preset": "home", + "start": "we 09:30" + }, + { + "end": "tu 09:45", + "preset": "asleep", + "start": "we 09:45" + }, + { + "end": "th 11:00", + "preset": "home", + "start": "we 11:00" + }, + { + "end": "th 11:15", + "preset": "asleep", + "start": "we 11:15" + }, + { + "end": "th 12:45", + "preset": "home", + "start": "we 12:45" + }, + { + "end": "th 13:00", + "preset": "asleep", + "start": "we 13:00" + }, + { + "end": "th 14:30", + "preset": "home", + "start": "we 14:30" + }, + { + "end": "th 14:45", + "preset": "asleep", + "start": "we 14:45" + }, + { + "end": "th 16:00", + "preset": "home", + "start": "we 16:00" + }, + { + "end": "fr 16:15", + "preset": "asleep", + "start": "we 16:15" + }, + { + "end": "th 18:00", + "preset": "home", + "start": "we 18:00" + }, + { + "end": "th 18:15", + "preset": "asleep", + "start": "we 18:15" + }, + { + "end": "th 20:15", + "preset": "home", + "start": "we 20:15" + }, + { + "end": "th 20:30", + "preset": "asleep", + "start": "we 20:30" + }, + { + "end": "th 22:00", + "preset": "home", + "start": "we 22:00" + }, + { + "end": "th 22:15", + "preset": "asleep", + "start": "we 22:15" + }, + { + "end": "su 00:00", + "preset": "home", + "start": "th 00:00" + }, + { + "end": "fr 00:15", + "preset": "asleep", + "start": "th 00:15" + }, + { + "end": "fr 02:00", + "preset": "home", + "start": "th 02:00" + }, + { + "end": "fr 02:15", + "preset": "asleep", + "start": "th 02:15" + }, + { + "end": "mo 04:15", + "preset": "home", + "start": "th 04:00" + }, + { + "end": "mo 06:00", + "preset": "asleep", + "start": "th 04:15" + }, + { + "end": "su 06:00", + "preset": "home", + "start": "th 06:00" + }, + { + "end": "fr 06:30", + "preset": "asleep", + "start": "th 06:30" + }, + { + "end": "fr 08:00", + "preset": "home", + "start": "th 08:00" + }, + { + "end": "fr 08:15", + "preset": "asleep", + "start": "th 08:15" + }, + { + "end": "fr 09:30", + "preset": "home", + "start": "th 09:30" + }, + { + "end": "fr 09:45", + "preset": "asleep", + "start": "th 09:45" + }, + { + "end": "fr 11:00", + "preset": "home", + "start": "th 11:00" + }, + { + "end": "fr 11:15", + "preset": "asleep", + "start": "th 11:15" + }, + { + "end": "fr 12:45", + "preset": "home", + "start": "th 12:45" + }, + { + "end": "fr 13:00", + "preset": "asleep", + "start": "th 13:00" + }, + { + "end": "fr 14:30", + "preset": "home", + "start": "th 14:30" + }, + { + "end": "fr 14:45", + "preset": "asleep", + "start": "th 14:45" + }, + { + "end": "fr 16:00", + "preset": "home", + "start": "th 16:00" + }, + { + "end": "su 16:15", + "preset": "asleep", + "start": "th 16:15" + }, + { + "end": "fr 18:00", + "preset": "home", + "start": "th 18:00" + }, + { + "end": "fr 18:15", + "preset": "asleep", + "start": "th 18:15" + }, + { + "end": "fr 20:15", + "preset": "home", + "start": "th 20:15" + }, + { + "end": "fr 20:30", + "preset": "asleep", + "start": "th 20:30" + }, + { + "end": "fr 22:00", + "preset": "home", + "start": "th 22:00" + }, + { + "end": "fr 22:15", + "preset": "asleep", + "start": "th 22:15" + }, + { + "end": "mo 00:00", + "preset": "home", + "start": "fr 00:00" + }, + { + "end": "su 00:15", + "preset": "asleep", + "start": "fr 00:15" + }, + { + "end": "su 02:00", + "preset": "home", + "start": "fr 02:00" + }, + { + "end": "su 02:15", + "preset": "asleep", + "start": "fr 02:15" + }, + { + "end": "su 04:00", + "preset": "home", + "start": "fr 04:00" + }, + { + "end": "su 04:15", + "preset": "asleep", + "start": "fr 04:15" + }, + { + "end": "th 06:00", + "preset": "home", + "start": "fr 06:00" + }, + { + "end": "su 06:30", + "preset": "asleep", + "start": "fr 06:30" + }, + { + "end": "su 08:00", + "preset": "home", + "start": "fr 08:00" + }, + { + "end": "su 08:15", + "preset": "asleep", + "start": "fr 08:15" + }, + { + "end": "su 09:30", + "preset": "home", + "start": "fr 09:30" + }, + { + "end": "su 09:45", + "preset": "asleep", + "start": "fr 09:45" + }, + { + "end": "su 11:00", + "preset": "home", + "start": "fr 11:00" + }, + { + "end": "su 11:15", + "preset": "asleep", + "start": "fr 11:15" + }, + { + "end": "su 12:45", + "preset": "home", + "start": "fr 12:45" + }, + { + "end": "su 13:00", + "preset": "asleep", + "start": "fr 13:00" + }, + { + "end": "su 14:30", + "preset": "home", + "start": "fr 14:30" + }, + { + "end": "su 14:45", + "preset": "asleep", + "start": "fr 14:45" + }, + { + "end": "su 16:00", + "preset": "home", + "start": "fr 16:00" + }, + { + "end": "th 16:15", + "preset": "asleep", + "start": "fr 16:15" + }, + { + "end": "su 18:00", + "preset": "home", + "start": "fr 18:00" + }, + { + "end": "su 18:15", + "preset": "asleep", + "start": "fr 18:15" + }, + { + "end": "su 20:15", + "preset": "home", + "start": "fr 20:15" + }, + { + "end": "su 20:30", + "preset": "asleep", + "start": "fr 20:30" + }, + { + "end": "su 22:00", + "preset": "home", + "start": "fr 22:00" + }, + { + "end": "su 22:15", + "preset": "asleep", + "start": "fr 22:15" + }, + { + "end": "sa 00:15", + "preset": "home", + "start": "sa 00:00" + }, + { + "end": "sa 02:00", + "preset": "asleep", + "start": "sa 00:15" + }, + { + "end": "sa 02:15", + "preset": "home", + "start": "sa 02:00" + }, + { + "end": "sa 04:00", + "preset": "asleep", + "start": "sa 02:15" + }, + { + "end": "sa 04:15", + "preset": "home", + "start": "sa 04:00" + }, + { + "end": "sa 06:00", + "preset": "asleep", + "start": "sa 04:15" + }, + { + "end": "sa 06:30", + "preset": "home", + "start": "sa 06:00" + }, + { + "end": "sa 08:00", + "preset": "asleep", + "start": "sa 06:30" + }, + { + "end": "sa 08:15", + "preset": "home", + "start": "sa 08:00" + }, + { + "end": "sa 09:30", + "preset": "asleep", + "start": "sa 08:15" + }, + { + "end": "sa 09:45", + "preset": "home", + "start": "sa 09:30" + }, + { + "end": "sa 11:00", + "preset": "asleep", + "start": "sa 09:45" + }, + { + "end": "sa 11:15", + "preset": "home", + "start": "sa 11:00" + }, + { + "end": "sa 12:45", + "preset": "asleep", + "start": "sa 11:15" + }, + { + "end": "sa 13:00", + "preset": "home", + "start": "sa 12:45" + }, + { + "end": "sa 14:30", + "preset": "asleep", + "start": "sa 13:00" + }, + { + "end": "sa 14:45", + "preset": "home", + "start": "sa 14:30" + }, + { + "end": "sa 16:00", + "preset": "asleep", + "start": "sa 14:45" + }, + { + "end": "sa 16:15", + "preset": "home", + "start": "sa 16:00" + }, + { + "end": "sa 18:00", + "preset": "asleep", + "start": "sa 16:15" + }, + { + "end": "sa 18:15", + "preset": "home", + "start": "sa 18:00" + }, + { + "end": "sa 20:15", + "preset": "asleep", + "start": "sa 18:15" + }, + { + "end": "sa 20:30", + "preset": "home", + "start": "sa 20:15" + }, + { + "end": "sa 22:00", + "preset": "asleep", + "start": "sa 20:30" + }, + { + "end": "sa 22:15", + "preset": "home", + "start": "sa 22:00" + }, + { + "end": "fr 00:00", + "preset": "asleep", + "start": "sa 22:15" + }, + { + "end": "mo 00:15", + "preset": "home", + "start": "su 00:00" + }, + { + "end": "mo 02:00", + "preset": "asleep", + "start": "su 00:15" + }, + { + "end": "mo 02:15", + "preset": "home", + "start": "su 02:00" + }, + { + "end": "mo 04:00", + "preset": "asleep", + "start": "su 02:15" + }, + { + "end": "th 04:00", + "preset": "home", + "start": "su 04:00" + }, + { + "end": "th 04:15", + "preset": "asleep", + "start": "su 04:15" + }, + { + "end": "mo 06:30", + "preset": "home", + "start": "su 06:00" + }, + { + "end": "mo 08:00", + "preset": "asleep", + "start": "su 06:30" + }, + { + "end": "mo 08:15", + "preset": "home", + "start": "su 08:00" + }, + { + "end": "mo 09:30", + "preset": "asleep", + "start": "su 08:15" + }, + { + "end": "mo 09:45", + "preset": "home", + "start": "su 09:30" + }, + { + "end": "mo 11:00", + "preset": "asleep", + "start": "su 09:45" + }, + { + "end": "mo 11:15", + "preset": "home", + "start": "su 11:00" + }, + { + "end": "mo 12:45", + "preset": "asleep", + "start": "su 11:15" + }, + { + "end": "mo 13:00", + "preset": "home", + "start": "su 12:45" + }, + { + "end": "mo 14:30", + "preset": "asleep", + "start": "su 13:00" + }, + { + "end": "mo 14:45", + "preset": "home", + "start": "su 14:30" + }, + { + "end": "mo 16:00", + "preset": "asleep", + "start": "su 14:45" + }, + { + "end": "mo 16:15", + "preset": "home", + "start": "su 16:00" + }, + { + "end": "mo 18:00", + "preset": "asleep", + "start": "su 16:15" + }, + { + "end": "mo 18:15", + "preset": "home", + "start": "su 18:00" + }, + { + "end": "mo 20:15", + "preset": "asleep", + "start": "su 18:15" + }, + { + "end": "mo 20:30", + "preset": "home", + "start": "su 20:15" + }, + { + "end": "mo 22:00", + "preset": "asleep", + "start": "su 20:30" + }, + { + "end": "mo 22:15", + "preset": "home", + "start": "su 22:00" + }, + { + "end": "sa 00:00", + "preset": "asleep", + "start": "su 22:15" + } + ], + "zones": [] + } + }, "sensors": { "outdoor_temperature": 15.5 }, diff --git a/fixtures/anna_p1/data.json b/fixtures/anna_p1/data.json index 0a15747c5..aae0b4588 100644 --- a/fixtures/anna_p1/data.json +++ b/fixtures/anna_p1/data.json @@ -111,6 +111,16 @@ "model_id": "smile_thermo", "name": "Smile Anna P1", "notifications": {}, + "schedules": { + "898e6eaa068b44019ff9dc5c578881b2": { + "active": false, + "name": "Thermostat schedule", + "slots": [], + "zones": [ + "5b13651d79c4454684fd268850b1bff8" + ] + } + }, "sensors": { "outdoor_temperature": 11.8 }, diff --git a/fixtures/anna_v4/data.json b/fixtures/anna_v4/data.json index c18484a03..f8dcc6b56 100644 --- a/fixtures/anna_v4/data.json +++ b/fixtures/anna_v4/data.json @@ -84,6 +84,167 @@ "model_id": "smile_thermo", "name": "Smile Anna", "notifications": {}, + "schedules": { + "51a1ee93578f426e9077933150816c9c": { + "active": true, + "name": "Standaard", + "slots": [ + { + "end": "mo 07:30", + "preset": "home", + "start": "mo 06:15" + }, + { + "end": "mo 18:15", + "preset": "away", + "start": "mo 07:30" + }, + { + "end": "mo 22:30", + "preset": "home", + "start": "mo 18:15" + }, + { + "end": "tu 06:15", + "preset": "asleep", + "start": "mo 22:30" + }, + { + "end": "tu 07:30", + "preset": "home", + "start": "tu 06:15" + }, + { + "end": "tu 18:15", + "preset": "away", + "start": "tu 07:30" + }, + { + "end": "tu 22:30", + "preset": "home", + "start": "tu 18:15" + }, + { + "end": "we 06:15", + "preset": "asleep", + "start": "tu 22:30" + }, + { + "end": "we 07:30", + "preset": "home", + "start": "we 06:15" + }, + { + "end": "we 18:15", + "preset": "away", + "start": "we 07:30" + }, + { + "end": "we 22:30", + "preset": "home", + "start": "we 18:15" + }, + { + "end": "th 06:15", + "preset": "asleep", + "start": "we 22:30" + }, + { + "end": "th 07:30", + "preset": "home", + "start": "th 06:15" + }, + { + "end": "th 18:15", + "preset": "away", + "start": "th 07:30" + }, + { + "end": "th 22:30", + "preset": "home", + "start": "th 18:15" + }, + { + "end": "fr 06:15", + "preset": "asleep", + "start": "th 22:30" + }, + { + "end": "fr 07:30", + "preset": "home", + "start": "fr 06:15" + }, + { + "end": "fr 18:15", + "preset": "away", + "start": "fr 07:30" + }, + { + "end": "fr 23:00", + "preset": "home", + "start": "fr 18:15" + }, + { + "end": "sa 07:45", + "preset": "asleep", + "start": "fr 23:00" + }, + { + "end": "sa 23:00", + "preset": "home", + "start": "sa 07:45" + }, + { + "end": "su 10:00", + "preset": "asleep", + "start": "sa 23:00" + }, + { + "end": "su 23:00", + "preset": "home", + "start": "su 10:00" + }, + { + "end": "mo 06:15", + "preset": "asleep", + "start": "su 23:00" + } + ], + "zones": [] + }, + "971128b62a0b4bd0880162ccdc4eb2c7": { + "active": true, + "name": "Thuiswerken", + "slots": [ + { + "end": "we 07:00", + "preset": "home", + "start": "mo 07:00" + }, + { + "end": "fr 07:00", + "preset": "home", + "start": "tu 07:00" + }, + { + "end": "tu 07:00", + "preset": "home", + "start": "we 07:00" + }, + { + "end": "mo 07:00", + "preset": "home", + "start": "th 07:00" + }, + { + "end": "th 07:00", + "preset": "home", + "start": "fr 07:00" + } + ], + "zones": [] + } + }, "sensors": { "outdoor_temperature": 7.44 }, diff --git a/fixtures/anna_v4_dhw/data.json b/fixtures/anna_v4_dhw/data.json index a1fee82a7..d0775b449 100644 --- a/fixtures/anna_v4_dhw/data.json +++ b/fixtures/anna_v4_dhw/data.json @@ -84,6 +84,167 @@ "model_id": "smile_thermo", "name": "Smile Anna", "notifications": {}, + "schedules": { + "51a1ee93578f426e9077933150816c9c": { + "active": true, + "name": "Standaard", + "slots": [ + { + "end": "mo 07:30", + "preset": "home", + "start": "mo 06:15" + }, + { + "end": "mo 18:15", + "preset": "away", + "start": "mo 07:30" + }, + { + "end": "mo 22:30", + "preset": "home", + "start": "mo 18:15" + }, + { + "end": "tu 06:15", + "preset": "asleep", + "start": "mo 22:30" + }, + { + "end": "tu 07:30", + "preset": "home", + "start": "tu 06:15" + }, + { + "end": "tu 18:15", + "preset": "away", + "start": "tu 07:30" + }, + { + "end": "tu 22:30", + "preset": "home", + "start": "tu 18:15" + }, + { + "end": "we 06:15", + "preset": "asleep", + "start": "tu 22:30" + }, + { + "end": "we 07:30", + "preset": "home", + "start": "we 06:15" + }, + { + "end": "we 18:15", + "preset": "away", + "start": "we 07:30" + }, + { + "end": "we 22:30", + "preset": "home", + "start": "we 18:15" + }, + { + "end": "th 06:15", + "preset": "asleep", + "start": "we 22:30" + }, + { + "end": "th 07:30", + "preset": "home", + "start": "th 06:15" + }, + { + "end": "th 18:15", + "preset": "away", + "start": "th 07:30" + }, + { + "end": "th 22:30", + "preset": "home", + "start": "th 18:15" + }, + { + "end": "fr 06:15", + "preset": "asleep", + "start": "th 22:30" + }, + { + "end": "fr 07:30", + "preset": "home", + "start": "fr 06:15" + }, + { + "end": "fr 18:15", + "preset": "away", + "start": "fr 07:30" + }, + { + "end": "fr 23:00", + "preset": "home", + "start": "fr 18:15" + }, + { + "end": "sa 07:45", + "preset": "asleep", + "start": "fr 23:00" + }, + { + "end": "sa 23:00", + "preset": "home", + "start": "sa 07:45" + }, + { + "end": "su 10:00", + "preset": "asleep", + "start": "sa 23:00" + }, + { + "end": "su 23:00", + "preset": "home", + "start": "su 10:00" + }, + { + "end": "mo 06:15", + "preset": "asleep", + "start": "su 23:00" + } + ], + "zones": [] + }, + "971128b62a0b4bd0880162ccdc4eb2c7": { + "active": true, + "name": "Thuiswerken", + "slots": [ + { + "end": "we 07:00", + "preset": "home", + "start": "mo 07:00" + }, + { + "end": "fr 07:00", + "preset": "home", + "start": "tu 07:00" + }, + { + "end": "tu 07:00", + "preset": "home", + "start": "we 07:00" + }, + { + "end": "mo 07:00", + "preset": "home", + "start": "th 07:00" + }, + { + "end": "th 07:00", + "preset": "home", + "start": "fr 07:00" + } + ], + "zones": [] + } + }, "sensors": { "outdoor_temperature": 7.44 }, diff --git a/fixtures/anna_v4_no_modules/data.json b/fixtures/anna_v4_no_modules/data.json index c8875bed4..c970eb1c7 100644 --- a/fixtures/anna_v4_no_modules/data.json +++ b/fixtures/anna_v4_no_modules/data.json @@ -12,6 +12,167 @@ "model_id": "smile_thermo", "name": "Smile Anna", "notifications": {}, + "schedules": { + "51a1ee93578f426e9077933150816c9c": { + "active": true, + "name": "Standaard", + "slots": [ + { + "end": "mo 07:30", + "preset": "home", + "start": "mo 06:15" + }, + { + "end": "mo 18:15", + "preset": "away", + "start": "mo 07:30" + }, + { + "end": "mo 22:30", + "preset": "home", + "start": "mo 18:15" + }, + { + "end": "tu 06:15", + "preset": "asleep", + "start": "mo 22:30" + }, + { + "end": "tu 07:30", + "preset": "home", + "start": "tu 06:15" + }, + { + "end": "tu 18:15", + "preset": "away", + "start": "tu 07:30" + }, + { + "end": "tu 22:30", + "preset": "home", + "start": "tu 18:15" + }, + { + "end": "we 06:15", + "preset": "asleep", + "start": "tu 22:30" + }, + { + "end": "we 07:30", + "preset": "home", + "start": "we 06:15" + }, + { + "end": "we 18:15", + "preset": "away", + "start": "we 07:30" + }, + { + "end": "we 22:30", + "preset": "home", + "start": "we 18:15" + }, + { + "end": "th 06:15", + "preset": "asleep", + "start": "we 22:30" + }, + { + "end": "th 07:30", + "preset": "home", + "start": "th 06:15" + }, + { + "end": "th 18:15", + "preset": "away", + "start": "th 07:30" + }, + { + "end": "th 22:30", + "preset": "home", + "start": "th 18:15" + }, + { + "end": "fr 06:15", + "preset": "asleep", + "start": "th 22:30" + }, + { + "end": "fr 07:30", + "preset": "home", + "start": "fr 06:15" + }, + { + "end": "fr 18:15", + "preset": "away", + "start": "fr 07:30" + }, + { + "end": "fr 23:00", + "preset": "home", + "start": "fr 18:15" + }, + { + "end": "sa 07:45", + "preset": "asleep", + "start": "fr 23:00" + }, + { + "end": "sa 23:00", + "preset": "home", + "start": "sa 07:45" + }, + { + "end": "su 10:00", + "preset": "asleep", + "start": "sa 23:00" + }, + { + "end": "su 23:00", + "preset": "home", + "start": "su 10:00" + }, + { + "end": "mo 06:15", + "preset": "asleep", + "start": "su 23:00" + } + ], + "zones": [] + }, + "971128b62a0b4bd0880162ccdc4eb2c7": { + "active": true, + "name": "Thuiswerken", + "slots": [ + { + "end": "we 07:00", + "preset": "home", + "start": "mo 07:00" + }, + { + "end": "fr 07:00", + "preset": "home", + "start": "tu 07:00" + }, + { + "end": "tu 07:00", + "preset": "home", + "start": "we 07:00" + }, + { + "end": "mo 07:00", + "preset": "home", + "start": "th 07:00" + }, + { + "end": "th 07:00", + "preset": "home", + "start": "fr 07:00" + } + ], + "zones": [] + } + }, "sensors": { "outdoor_temperature": 7.44 }, diff --git a/fixtures/anna_v4_no_tag/data.json b/fixtures/anna_v4_no_tag/data.json index c3d9fd07b..1524bbe6c 100644 --- a/fixtures/anna_v4_no_tag/data.json +++ b/fixtures/anna_v4_no_tag/data.json @@ -84,6 +84,169 @@ "model_id": "smile_thermo", "name": "Smile Anna", "notifications": {}, + "schedules": { + "51a1ee93578f426e9077933150816c9c": { + "active": true, + "name": "Standaard", + "slots": [ + { + "end": "mo 07:30", + "preset": "home", + "start": "mo 06:15" + }, + { + "end": "mo 18:15", + "preset": "away", + "start": "mo 07:30" + }, + { + "end": "mo 22:30", + "preset": "home", + "start": "mo 18:15" + }, + { + "end": "tu 06:15", + "preset": "asleep", + "start": "mo 22:30" + }, + { + "end": "tu 07:30", + "preset": "home", + "start": "tu 06:15" + }, + { + "end": "tu 18:15", + "preset": "away", + "start": "tu 07:30" + }, + { + "end": "tu 22:30", + "preset": "home", + "start": "tu 18:15" + }, + { + "end": "we 06:15", + "preset": "asleep", + "start": "tu 22:30" + }, + { + "end": "we 07:30", + "preset": "home", + "start": "we 06:15" + }, + { + "end": "we 18:15", + "preset": "away", + "start": "we 07:30" + }, + { + "end": "we 22:30", + "preset": "home", + "start": "we 18:15" + }, + { + "end": "th 06:15", + "preset": "asleep", + "start": "we 22:30" + }, + { + "end": "th 07:30", + "preset": "home", + "start": "th 06:15" + }, + { + "end": "th 18:15", + "preset": "away", + "start": "th 07:30" + }, + { + "end": "th 22:30", + "preset": "home", + "start": "th 18:15" + }, + { + "end": "fr 06:15", + "preset": "asleep", + "start": "th 22:30" + }, + { + "end": "fr 07:30", + "preset": "home", + "start": "fr 06:15" + }, + { + "end": "fr 18:15", + "preset": "away", + "start": "fr 07:30" + }, + { + "end": "fr 23:00", + "preset": "home", + "start": "fr 18:15" + }, + { + "end": "sa 07:45", + "preset": "asleep", + "start": "fr 23:00" + }, + { + "end": "sa 23:00", + "preset": "home", + "start": "sa 07:45" + }, + { + "end": "su 10:00", + "preset": "asleep", + "start": "sa 23:00" + }, + { + "end": "su 23:00", + "preset": "home", + "start": "su 10:00" + }, + { + "end": "mo 06:15", + "preset": "asleep", + "start": "su 23:00" + } + ], + "zones": [] + }, + "971128b62a0b4bd0880162ccdc4eb2c7": { + "active": true, + "name": "Thuiswerken", + "slots": [ + { + "end": "we 07:00", + "preset": "home", + "start": "mo 07:00" + }, + { + "end": "fr 07:00", + "preset": "home", + "start": "tu 07:00" + }, + { + "end": "tu 07:00", + "preset": "home", + "start": "we 07:00" + }, + { + "end": "mo 07:00", + "preset": "home", + "start": "th 07:00" + }, + { + "end": "th 07:00", + "preset": "home", + "start": "fr 07:00" + } + ], + "zones": [ + "eb5309212bf5407bb143e5bfa3b18aee" + ] + } + }, "sensors": { "outdoor_temperature": 7.44 }, diff --git a/fixtures/anna_without_boiler_fw441/data.json b/fixtures/anna_without_boiler_fw441/data.json index b774a7700..4feb32aee 100644 --- a/fixtures/anna_without_boiler_fw441/data.json +++ b/fixtures/anna_without_boiler_fw441/data.json @@ -84,6 +84,154 @@ "model_id": "smile_thermo", "name": "Smile Anna", "notifications": {}, + "schedules": { + "a36b5218575a42809dc3748377d160f9": { + "active": true, + "name": "Normaal", + "slots": [ + { + "end": "mo 09:00", + "setpoint": 18.0, + "start": "mo 06:30" + }, + { + "end": "mo 17:00", + "preset": "home", + "start": "mo 09:00" + }, + { + "end": "mo 21:00", + "preset": "home", + "start": "mo 17:00" + }, + { + "end": "tu 06:30", + "preset": "asleep", + "start": "mo 21:00" + }, + { + "end": "tu 08:00", + "setpoint": 18.0, + "start": "tu 06:30" + }, + { + "end": "tu 17:00", + "preset": "away", + "start": "tu 08:00" + }, + { + "end": "tu 21:00", + "preset": "home", + "start": "tu 17:00" + }, + { + "end": "we 06:30", + "preset": "asleep", + "start": "tu 21:00" + }, + { + "end": "we 08:00", + "setpoint": 18.0, + "start": "we 06:30" + }, + { + "end": "we 17:00", + "preset": "away", + "start": "we 08:00" + }, + { + "end": "we 21:00", + "preset": "home", + "start": "we 17:00" + }, + { + "end": "th 06:30", + "preset": "asleep", + "start": "we 21:00" + }, + { + "end": "th 08:00", + "setpoint": 18.0, + "start": "th 06:30" + }, + { + "end": "th 17:00", + "preset": "away", + "start": "th 08:00" + }, + { + "end": "th 21:00", + "preset": "home", + "start": "th 17:00" + }, + { + "end": "fr 06:30", + "preset": "asleep", + "start": "th 21:00" + }, + { + "end": "fr 08:00", + "setpoint": 18.0, + "start": "fr 06:30" + }, + { + "end": "fr 17:00", + "preset": "away", + "start": "fr 08:00" + }, + { + "end": "fr 21:00", + "preset": "home", + "start": "fr 17:00" + }, + { + "end": "sa 09:00", + "preset": "asleep", + "start": "fr 21:00" + }, + { + "end": "sa 21:00", + "preset": "home", + "start": "sa 09:00" + }, + { + "end": "su 09:00", + "preset": "asleep", + "start": "sa 21:00" + }, + { + "end": "su 21:00", + "preset": "home", + "start": "su 09:00" + }, + { + "end": "mo 06:30", + "preset": "asleep", + "start": "su 21:00" + } + ], + "zones": [ + "c34c6864216446528e95d88985e714cc" + ] + }, + "d28edc40489b436e80888fa1490c77a5": { + "active": true, + "name": "Test", + "slots": [ + { + "end": "tu 01:45", + "preset": "home", + "start": "mo 02:00" + }, + { + "end": "mo 02:00", + "preset": "home", + "start": "tu 01:45" + } + ], + "zones": [] + } + }, "sensors": { "outdoor_temperature": 8.31 }, diff --git a/fixtures/m_adam_cooling/data.json b/fixtures/m_adam_cooling/data.json index ba13d7634..5e1777431 100644 --- a/fixtures/m_adam_cooling/data.json +++ b/fixtures/m_adam_cooling/data.json @@ -138,6 +138,318 @@ "bleeding_hot", "cooling" ], + "schedules": { + "24df4dace79a4c42a0f4750ce65d84cb": { + "active": true, + "name": "Weekschema", + "slots": [ + { + "end": "mo 16:30", + "setpoint": 18.5, + "start": "mo 07:15" + }, + { + "end": "mo 21:00", + "preset": "home", + "start": "mo 16:30" + }, + { + "end": "tu 07:15", + "preset": "asleep", + "start": "mo 21:00" + }, + { + "end": "tu 16:30", + "setpoint": 18.5, + "start": "tu 07:15" + }, + { + "end": "tu 21:30", + "preset": "home", + "start": "tu 16:30" + }, + { + "end": "we 07:15", + "preset": "asleep", + "start": "tu 21:30" + }, + { + "end": "we 16:30", + "setpoint": 18.5, + "start": "we 07:15" + }, + { + "end": "we 21:30", + "preset": "home", + "start": "we 16:30" + }, + { + "end": "th 07:15", + "preset": "asleep", + "start": "we 21:30" + }, + { + "end": "th 16:30", + "setpoint": 18.5, + "start": "th 07:15" + }, + { + "end": "th 21:30", + "preset": "home", + "start": "th 16:30" + }, + { + "end": "fr 07:15", + "preset": "asleep", + "start": "th 21:30" + }, + { + "end": "fr 16:30", + "setpoint": 18.5, + "start": "fr 07:15" + }, + { + "end": "fr 22:00", + "preset": "home", + "start": "fr 16:30" + }, + { + "end": "sa 07:45", + "preset": "asleep", + "start": "fr 22:00" + }, + { + "end": "sa 16:00", + "setpoint": 18.5, + "start": "sa 07:45" + }, + { + "end": "sa 22:00", + "preset": "home", + "start": "sa 16:00" + }, + { + "end": "su 07:45", + "preset": "asleep", + "start": "sa 22:00" + }, + { + "end": "su 16:00", + "setpoint": 18.5, + "start": "su 07:45" + }, + { + "end": "su 21:30", + "preset": "home", + "start": "su 16:00" + }, + { + "end": "mo 07:15", + "preset": "asleep", + "start": "su 21:30" + } + ], + "zones": [ + "f2bf9048bef64cc5b6d5110154e33c81" + ] + }, + "6b309e6df44c4e9a9f0014437843fa9a": { + "active": true, + "name": "Test", + "slots": [ + { + "end": "tu 10:00", + "preset": "asleep", + "start": "mo 10:00" + }, + { + "end": "tu 16:15", + "preset": "home", + "start": "mo 16:15" + }, + { + "end": "we 10:00", + "preset": "asleep", + "start": "tu 10:00" + }, + { + "end": "we 16:15", + "preset": "home", + "start": "tu 16:15" + }, + { + "end": "th 10:00", + "preset": "asleep", + "start": "we 10:00" + }, + { + "end": "th 16:15", + "preset": "home", + "start": "we 16:15" + }, + { + "end": "fr 10:00", + "preset": "asleep", + "start": "th 10:00" + }, + { + "end": "fr 16:15", + "preset": "home", + "start": "th 16:15" + }, + { + "end": "su 10:00", + "preset": "asleep", + "start": "fr 10:00" + }, + { + "end": "su 16:15", + "preset": "home", + "start": "fr 16:15" + }, + { + "end": "sa 16:15", + "preset": "asleep", + "start": "sa 10:00" + }, + { + "end": "mo 10:00", + "preset": "home", + "start": "sa 16:15" + }, + { + "end": "mo 16:15", + "preset": "asleep", + "start": "su 10:00" + }, + { + "end": "sa 10:00", + "preset": "home", + "start": "su 16:15" + } + ], + "zones": [] + }, + "e497d6c3572540008daa9d3ec9d500cd": { + "active": true, + "name": "Vakantie", + "slots": [ + { + "end": "tu 10:00", + "setpoint": 15.0, + "start": "mo 10:00" + }, + { + "end": "we 10:00", + "setpoint": 15.0, + "start": "tu 10:00" + }, + { + "end": "th 10:00", + "setpoint": 15.0, + "start": "we 10:00" + }, + { + "end": "fr 10:00", + "setpoint": 15.0, + "start": "th 10:00" + }, + { + "end": "su 10:00", + "setpoint": 15.0, + "start": "fr 10:00" + }, + { + "end": "mo 10:00", + "setpoint": 15.0, + "start": "sa 10:00" + }, + { + "end": "sa 10:00", + "setpoint": 15.0, + "start": "su 10:00" + } + ], + "zones": [] + }, + "ebe3e57ec41d4d8faa927ca85c95b747": { + "active": true, + "name": "Badkamer", + "slots": [ + { + "end": "mo 22:00", + "preset": "home", + "start": "mo 07:00" + }, + { + "end": "tu 07:00", + "preset": "asleep", + "start": "mo 22:00" + }, + { + "end": "tu 22:00", + "preset": "home", + "start": "tu 07:00" + }, + { + "end": "we 07:00", + "preset": "asleep", + "start": "tu 22:00" + }, + { + "end": "we 22:00", + "preset": "home", + "start": "we 07:00" + }, + { + "end": "th 07:00", + "preset": "asleep", + "start": "we 22:00" + }, + { + "end": "th 22:00", + "preset": "home", + "start": "th 07:00" + }, + { + "end": "fr 07:00", + "preset": "asleep", + "start": "th 22:00" + }, + { + "end": "fr 22:30", + "preset": "home", + "start": "fr 07:00" + }, + { + "end": "sa 07:30", + "preset": "asleep", + "start": "fr 22:30" + }, + { + "end": "sa 22:30", + "preset": "home", + "start": "sa 07:30" + }, + { + "end": "su 07:30", + "preset": "asleep", + "start": "sa 22:30" + }, + { + "end": "su 22:00", + "preset": "home", + "start": "su 07:30" + }, + { + "end": "mo 07:00", + "preset": "asleep", + "start": "su 22:00" + } + ], + "zones": [] + } + }, "select_gateway_mode": "full", "select_regulation_mode": "cooling", "sensors": { diff --git a/fixtures/m_adam_heating/data.json b/fixtures/m_adam_heating/data.json index 7fcbc3ed4..935f59c1d 100644 --- a/fixtures/m_adam_heating/data.json +++ b/fixtures/m_adam_heating/data.json @@ -143,6 +143,318 @@ "off", "bleeding_hot" ], + "schedules": { + "24df4dace79a4c42a0f4750ce65d84cb": { + "active": true, + "name": "Weekschema", + "slots": [ + { + "end": "mo 16:30", + "setpoint": 18.5, + "start": "mo 07:15" + }, + { + "end": "mo 21:00", + "preset": "home", + "start": "mo 16:30" + }, + { + "end": "tu 07:15", + "preset": "asleep", + "start": "mo 21:00" + }, + { + "end": "tu 16:30", + "setpoint": 18.5, + "start": "tu 07:15" + }, + { + "end": "tu 21:30", + "preset": "home", + "start": "tu 16:30" + }, + { + "end": "we 07:15", + "preset": "asleep", + "start": "tu 21:30" + }, + { + "end": "we 16:30", + "setpoint": 18.5, + "start": "we 07:15" + }, + { + "end": "we 21:30", + "preset": "home", + "start": "we 16:30" + }, + { + "end": "th 07:15", + "preset": "asleep", + "start": "we 21:30" + }, + { + "end": "th 16:30", + "setpoint": 18.5, + "start": "th 07:15" + }, + { + "end": "th 21:30", + "preset": "home", + "start": "th 16:30" + }, + { + "end": "fr 07:15", + "preset": "asleep", + "start": "th 21:30" + }, + { + "end": "fr 16:30", + "setpoint": 18.5, + "start": "fr 07:15" + }, + { + "end": "fr 22:00", + "preset": "home", + "start": "fr 16:30" + }, + { + "end": "sa 07:45", + "preset": "asleep", + "start": "fr 22:00" + }, + { + "end": "sa 16:00", + "setpoint": 18.5, + "start": "sa 07:45" + }, + { + "end": "sa 22:00", + "preset": "home", + "start": "sa 16:00" + }, + { + "end": "su 07:45", + "preset": "asleep", + "start": "sa 22:00" + }, + { + "end": "su 16:00", + "setpoint": 18.5, + "start": "su 07:45" + }, + { + "end": "su 21:30", + "preset": "home", + "start": "su 16:00" + }, + { + "end": "mo 07:15", + "preset": "asleep", + "start": "su 21:30" + } + ], + "zones": [ + "f2bf9048bef64cc5b6d5110154e33c81" + ] + }, + "6b309e6df44c4e9a9f0014437843fa9a": { + "active": true, + "name": "Test", + "slots": [ + { + "end": "tu 10:00", + "preset": "asleep", + "start": "mo 10:00" + }, + { + "end": "tu 16:15", + "preset": "home", + "start": "mo 16:15" + }, + { + "end": "we 10:00", + "preset": "asleep", + "start": "tu 10:00" + }, + { + "end": "we 16:15", + "preset": "home", + "start": "tu 16:15" + }, + { + "end": "th 10:00", + "preset": "asleep", + "start": "we 10:00" + }, + { + "end": "th 16:15", + "preset": "home", + "start": "we 16:15" + }, + { + "end": "fr 10:00", + "preset": "asleep", + "start": "th 10:00" + }, + { + "end": "fr 16:15", + "preset": "home", + "start": "th 16:15" + }, + { + "end": "su 10:00", + "preset": "asleep", + "start": "fr 10:00" + }, + { + "end": "su 16:15", + "preset": "home", + "start": "fr 16:15" + }, + { + "end": "sa 16:15", + "preset": "asleep", + "start": "sa 10:00" + }, + { + "end": "mo 10:00", + "preset": "home", + "start": "sa 16:15" + }, + { + "end": "mo 16:15", + "preset": "asleep", + "start": "su 10:00" + }, + { + "end": "sa 10:00", + "preset": "home", + "start": "su 16:15" + } + ], + "zones": [] + }, + "e497d6c3572540008daa9d3ec9d500cd": { + "active": true, + "name": "Vakantie", + "slots": [ + { + "end": "tu 10:00", + "setpoint": 15.0, + "start": "mo 10:00" + }, + { + "end": "we 10:00", + "setpoint": 15.0, + "start": "tu 10:00" + }, + { + "end": "th 10:00", + "setpoint": 15.0, + "start": "we 10:00" + }, + { + "end": "fr 10:00", + "setpoint": 15.0, + "start": "th 10:00" + }, + { + "end": "su 10:00", + "setpoint": 15.0, + "start": "fr 10:00" + }, + { + "end": "mo 10:00", + "setpoint": 15.0, + "start": "sa 10:00" + }, + { + "end": "sa 10:00", + "setpoint": 15.0, + "start": "su 10:00" + } + ], + "zones": [] + }, + "ebe3e57ec41d4d8faa927ca85c95b747": { + "active": true, + "name": "Badkamer", + "slots": [ + { + "end": "mo 22:00", + "preset": "home", + "start": "mo 07:00" + }, + { + "end": "tu 07:00", + "preset": "asleep", + "start": "mo 22:00" + }, + { + "end": "tu 22:00", + "preset": "home", + "start": "tu 07:00" + }, + { + "end": "we 07:00", + "preset": "asleep", + "start": "tu 22:00" + }, + { + "end": "we 22:00", + "preset": "home", + "start": "we 07:00" + }, + { + "end": "th 07:00", + "preset": "asleep", + "start": "we 22:00" + }, + { + "end": "th 22:00", + "preset": "home", + "start": "th 07:00" + }, + { + "end": "fr 07:00", + "preset": "asleep", + "start": "th 22:00" + }, + { + "end": "fr 22:30", + "preset": "home", + "start": "fr 07:00" + }, + { + "end": "sa 07:30", + "preset": "asleep", + "start": "fr 22:30" + }, + { + "end": "sa 22:30", + "preset": "home", + "start": "sa 07:30" + }, + { + "end": "su 07:30", + "preset": "asleep", + "start": "sa 22:30" + }, + { + "end": "su 22:00", + "preset": "home", + "start": "su 07:30" + }, + { + "end": "mo 07:00", + "preset": "asleep", + "start": "su 22:00" + } + ], + "zones": [] + } + }, "select_gateway_mode": "full", "select_regulation_mode": "heating", "sensors": { diff --git a/fixtures/m_adam_heating_off_schedule/data.json b/fixtures/m_adam_heating_off_schedule/data.json index 3af382e4e..54617b082 100644 --- a/fixtures/m_adam_heating_off_schedule/data.json +++ b/fixtures/m_adam_heating_off_schedule/data.json @@ -143,6 +143,318 @@ "off", "bleeding_hot" ], + "schedules": { + "24df4dace79a4c42a0f4750ce65d84cb": { + "active": true, + "name": "Weekschema", + "slots": [ + { + "end": "mo 16:30", + "setpoint": 18.5, + "start": "mo 07:15" + }, + { + "end": "mo 21:00", + "preset": "home", + "start": "mo 16:30" + }, + { + "end": "tu 07:15", + "preset": "asleep", + "start": "mo 21:00" + }, + { + "end": "tu 16:30", + "setpoint": 18.5, + "start": "tu 07:15" + }, + { + "end": "tu 21:30", + "preset": "home", + "start": "tu 16:30" + }, + { + "end": "we 07:15", + "preset": "asleep", + "start": "tu 21:30" + }, + { + "end": "we 16:30", + "setpoint": 18.5, + "start": "we 07:15" + }, + { + "end": "we 21:30", + "preset": "home", + "start": "we 16:30" + }, + { + "end": "th 07:15", + "preset": "asleep", + "start": "we 21:30" + }, + { + "end": "th 16:30", + "setpoint": 18.5, + "start": "th 07:15" + }, + { + "end": "th 21:30", + "preset": "home", + "start": "th 16:30" + }, + { + "end": "fr 07:15", + "preset": "asleep", + "start": "th 21:30" + }, + { + "end": "fr 16:30", + "setpoint": 18.5, + "start": "fr 07:15" + }, + { + "end": "fr 22:00", + "preset": "home", + "start": "fr 16:30" + }, + { + "end": "sa 07:45", + "preset": "asleep", + "start": "fr 22:00" + }, + { + "end": "sa 16:00", + "setpoint": 18.5, + "start": "sa 07:45" + }, + { + "end": "sa 22:00", + "preset": "home", + "start": "sa 16:00" + }, + { + "end": "su 07:45", + "preset": "asleep", + "start": "sa 22:00" + }, + { + "end": "su 16:00", + "setpoint": 18.5, + "start": "su 07:45" + }, + { + "end": "su 21:30", + "preset": "home", + "start": "su 16:00" + }, + { + "end": "mo 07:15", + "preset": "asleep", + "start": "su 21:30" + } + ], + "zones": [ + "f2bf9048bef64cc5b6d5110154e33c81" + ] + }, + "6b309e6df44c4e9a9f0014437843fa9a": { + "active": true, + "name": "Test", + "slots": [ + { + "end": "tu 10:00", + "preset": "asleep", + "start": "mo 10:00" + }, + { + "end": "tu 16:15", + "preset": "home", + "start": "mo 16:15" + }, + { + "end": "we 10:00", + "preset": "asleep", + "start": "tu 10:00" + }, + { + "end": "we 16:15", + "preset": "home", + "start": "tu 16:15" + }, + { + "end": "th 10:00", + "preset": "asleep", + "start": "we 10:00" + }, + { + "end": "th 16:15", + "preset": "home", + "start": "we 16:15" + }, + { + "end": "fr 10:00", + "preset": "asleep", + "start": "th 10:00" + }, + { + "end": "fr 16:15", + "preset": "home", + "start": "th 16:15" + }, + { + "end": "su 10:00", + "preset": "asleep", + "start": "fr 10:00" + }, + { + "end": "su 16:15", + "preset": "home", + "start": "fr 16:15" + }, + { + "end": "sa 16:15", + "preset": "asleep", + "start": "sa 10:00" + }, + { + "end": "mo 10:00", + "preset": "home", + "start": "sa 16:15" + }, + { + "end": "mo 16:15", + "preset": "asleep", + "start": "su 10:00" + }, + { + "end": "sa 10:00", + "preset": "home", + "start": "su 16:15" + } + ], + "zones": [] + }, + "e497d6c3572540008daa9d3ec9d500cd": { + "active": true, + "name": "Vakantie", + "slots": [ + { + "end": "tu 10:00", + "setpoint": 15.0, + "start": "mo 10:00" + }, + { + "end": "we 10:00", + "setpoint": 15.0, + "start": "tu 10:00" + }, + { + "end": "th 10:00", + "setpoint": 15.0, + "start": "we 10:00" + }, + { + "end": "fr 10:00", + "setpoint": 15.0, + "start": "th 10:00" + }, + { + "end": "su 10:00", + "setpoint": 15.0, + "start": "fr 10:00" + }, + { + "end": "mo 10:00", + "setpoint": 15.0, + "start": "sa 10:00" + }, + { + "end": "sa 10:00", + "setpoint": 15.0, + "start": "su 10:00" + } + ], + "zones": [] + }, + "ebe3e57ec41d4d8faa927ca85c95b747": { + "active": true, + "name": "Badkamer", + "slots": [ + { + "end": "mo 22:00", + "preset": "home", + "start": "mo 07:00" + }, + { + "end": "tu 07:00", + "preset": "asleep", + "start": "mo 22:00" + }, + { + "end": "tu 22:00", + "preset": "home", + "start": "tu 07:00" + }, + { + "end": "we 07:00", + "preset": "asleep", + "start": "tu 22:00" + }, + { + "end": "we 22:00", + "preset": "home", + "start": "we 07:00" + }, + { + "end": "th 07:00", + "preset": "asleep", + "start": "we 22:00" + }, + { + "end": "th 22:00", + "preset": "home", + "start": "th 07:00" + }, + { + "end": "fr 07:00", + "preset": "asleep", + "start": "th 22:00" + }, + { + "end": "fr 22:30", + "preset": "home", + "start": "fr 07:00" + }, + { + "end": "sa 07:30", + "preset": "asleep", + "start": "fr 22:30" + }, + { + "end": "sa 22:30", + "preset": "home", + "start": "sa 07:30" + }, + { + "end": "su 07:30", + "preset": "asleep", + "start": "sa 22:30" + }, + { + "end": "su 22:00", + "preset": "home", + "start": "su 07:30" + }, + { + "end": "mo 07:00", + "preset": "asleep", + "start": "su 22:00" + } + ], + "zones": [] + } + }, "select_gateway_mode": "full", "select_regulation_mode": "off", "sensors": { diff --git a/fixtures/m_adam_multiple_devices_per_zone/data.json b/fixtures/m_adam_multiple_devices_per_zone/data.json index 0d9b61939..b8cc93cda 100644 --- a/fixtures/m_adam_multiple_devices_per_zone/data.json +++ b/fixtures/m_adam_multiple_devices_per_zone/data.json @@ -803,6 +803,524 @@ "warning": "Node Plug (with MAC address 000D6F000D13CB01, in room 'n.a.') has been unreachable since 23:03 2020-01-18. Please check the connection and restart the device." } }, + "schedules": { + "2b5f3132692d444293854d9e0c61095f": { + "active": false, + "name": "Bios Schema met Film Avond", + "slots": [ + { + "end": "mo 22:15", + "preset": "away", + "start": "mo 07:30" + }, + { + "end": "tu 07:30", + "preset": "asleep", + "start": "mo 22:15" + }, + { + "end": "tu 22:15", + "preset": "away", + "start": "tu 07:30" + }, + { + "end": "we 07:30", + "preset": "asleep", + "start": "tu 22:15" + }, + { + "end": "we 22:15", + "preset": "away", + "start": "we 07:30" + }, + { + "end": "th 07:30", + "preset": "asleep", + "start": "we 22:15" + }, + { + "end": "th 22:15", + "preset": "away", + "start": "th 07:30" + }, + { + "end": "fr 07:30", + "preset": "asleep", + "start": "th 22:15" + }, + { + "end": "fr 22:15", + "preset": "away", + "start": "fr 07:30" + }, + { + "end": "sa 08:30", + "preset": "asleep", + "start": "fr 22:15" + }, + { + "end": "sa 19:00", + "preset": "away", + "start": "sa 08:30" + }, + { + "end": "sa 22:15", + "preset": "home", + "start": "sa 19:00" + }, + { + "end": "su 08:30", + "preset": "asleep", + "start": "sa 22:15" + }, + { + "end": "su 22:15", + "preset": "away", + "start": "su 08:30" + }, + { + "end": "mo 07:30", + "preset": "asleep", + "start": "su 22:15" + } + ], + "zones": [] + }, + "3466ac8e063a454bb6be9481e8df92d4": { + "active": true, + "name": "CV Jessie", + "slots": [ + { + "end": "mo 21:30", + "setpoint": 15.0, + "start": "mo 07:15" + }, + { + "end": "tu 07:15", + "setpoint": 16.5, + "start": "mo 21:30" + }, + { + "end": "tu 21:30", + "setpoint": 15.0, + "start": "tu 07:15" + }, + { + "end": "we 07:15", + "setpoint": 16.5, + "start": "tu 21:30" + }, + { + "end": "we 21:30", + "setpoint": 15.0, + "start": "we 07:15" + }, + { + "end": "th 07:15", + "setpoint": 16.5, + "start": "we 21:30" + }, + { + "end": "th 21:30", + "setpoint": 15.0, + "start": "th 07:15" + }, + { + "end": "fr 07:15", + "setpoint": 16.5, + "start": "th 21:30" + }, + { + "end": "fr 22:30", + "setpoint": 15.0, + "start": "fr 07:15" + }, + { + "end": "sa 08:00", + "setpoint": 16.5, + "start": "fr 22:30" + }, + { + "end": "sa 22:30", + "setpoint": 15.0, + "start": "sa 08:00" + }, + { + "end": "su 08:00", + "setpoint": 16.5, + "start": "sa 22:30" + }, + { + "end": "su 21:30", + "setpoint": 15.0, + "start": "su 08:00" + }, + { + "end": "mo 07:15", + "setpoint": 16.5, + "start": "su 21:30" + } + ], + "zones": [ + "82fa13f017d240daa0d0ea1775420f24" + ] + }, + "3e4b5a775f8143de961eaa3f5f7d9d1a": { + "active": true, + "name": "Badkamer Schema", + "slots": [ + { + "end": "mo 08:00", + "preset": "home", + "start": "mo 06:45" + }, + { + "end": "mo 20:15", + "preset": "away", + "start": "mo 08:00" + }, + { + "end": "mo 21:30", + "preset": "home", + "start": "mo 20:15" + }, + { + "end": "tu 06:45", + "preset": "away", + "start": "mo 21:30" + }, + { + "end": "tu 08:00", + "preset": "home", + "start": "tu 06:45" + }, + { + "end": "tu 20:15", + "preset": "away", + "start": "tu 08:00" + }, + { + "end": "tu 21:30", + "preset": "home", + "start": "tu 20:15" + }, + { + "end": "we 06:45", + "preset": "away", + "start": "tu 21:30" + }, + { + "end": "we 08:00", + "preset": "home", + "start": "we 06:45" + }, + { + "end": "we 20:15", + "preset": "away", + "start": "we 08:00" + }, + { + "end": "we 21:30", + "preset": "home", + "start": "we 20:15" + }, + { + "end": "th 06:45", + "preset": "away", + "start": "we 21:30" + }, + { + "end": "th 08:00", + "preset": "home", + "start": "th 06:45" + }, + { + "end": "th 20:15", + "preset": "away", + "start": "th 08:00" + }, + { + "end": "th 21:30", + "preset": "home", + "start": "th 20:15" + }, + { + "end": "fr 06:45", + "preset": "away", + "start": "th 21:30" + }, + { + "end": "fr 08:00", + "preset": "home", + "start": "fr 06:45" + }, + { + "end": "fr 20:30", + "preset": "away", + "start": "fr 08:00" + }, + { + "end": "fr 22:00", + "preset": "home", + "start": "fr 20:30" + }, + { + "end": "sa 09:00", + "preset": "away", + "start": "fr 22:00" + }, + { + "end": "sa 10:15", + "preset": "home", + "start": "sa 09:00" + }, + { + "end": "sa 20:30", + "preset": "away", + "start": "sa 10:15" + }, + { + "end": "sa 22:00", + "preset": "asleep", + "start": "sa 20:30" + }, + { + "end": "su 09:00", + "preset": "away", + "start": "sa 22:00" + }, + { + "end": "su 10:15", + "preset": "home", + "start": "su 09:00" + }, + { + "end": "su 20:15", + "preset": "away", + "start": "su 10:15" + }, + { + "end": "su 21:30", + "preset": "home", + "start": "su 20:15" + }, + { + "end": "mo 06:45", + "preset": "away", + "start": "su 21:30" + } + ], + "zones": [ + "08963fec7c53423ca5680aa4cb502c63" + ] + }, + "d31c0fb5b9814815a5fe4090fd8ec1e2": { + "active": true, + "name": "CV Roan", + "slots": [ + { + "end": "mo 19:30", + "preset": "away", + "start": "mo 07:00" + }, + { + "end": "tu 07:00", + "preset": "asleep", + "start": "mo 19:30" + }, + { + "end": "tu 19:30", + "preset": "away", + "start": "tu 07:00" + }, + { + "end": "we 07:00", + "preset": "asleep", + "start": "tu 19:30" + }, + { + "end": "we 19:30", + "preset": "away", + "start": "we 07:00" + }, + { + "end": "th 07:00", + "preset": "asleep", + "start": "we 19:30" + }, + { + "end": "th 19:30", + "preset": "away", + "start": "th 07:00" + }, + { + "end": "fr 07:00", + "preset": "asleep", + "start": "th 19:30" + }, + { + "end": "fr 20:15", + "preset": "away", + "start": "fr 07:00" + }, + { + "end": "sa 07:30", + "preset": "asleep", + "start": "fr 20:15" + }, + { + "end": "sa 20:15", + "preset": "away", + "start": "sa 07:30" + }, + { + "end": "su 07:30", + "preset": "asleep", + "start": "sa 20:15" + }, + { + "end": "su 19:30", + "preset": "away", + "start": "su 07:30" + }, + { + "end": "mo 07:00", + "preset": "asleep", + "start": "su 19:30" + } + ], + "zones": [] + }, + "ee003247871e4e16882771ab715ddfa1": { + "active": true, + "name": "GF7 Woonkamer", + "slots": [ + { + "end": "mo 08:00", + "preset": "home", + "start": "mo 06:30" + }, + { + "end": "mo 15:00", + "preset": "away", + "start": "mo 08:00" + }, + { + "end": "mo 22:30", + "preset": "home", + "start": "mo 15:00" + }, + { + "end": "tu 06:30", + "preset": "asleep", + "start": "mo 22:30" + }, + { + "end": "tu 08:00", + "preset": "home", + "start": "tu 06:30" + }, + { + "end": "tu 14:00", + "preset": "away", + "start": "tu 08:00" + }, + { + "end": "tu 22:30", + "preset": "home", + "start": "tu 14:00" + }, + { + "end": "we 06:30", + "preset": "asleep", + "start": "tu 22:30" + }, + { + "end": "we 08:00", + "preset": "home", + "start": "we 06:30" + }, + { + "end": "we 11:30", + "preset": "away", + "start": "we 08:00" + }, + { + "end": "we 22:30", + "preset": "home", + "start": "we 11:30" + }, + { + "end": "th 06:30", + "preset": "asleep", + "start": "we 22:30" + }, + { + "end": "th 08:00", + "preset": "home", + "start": "th 06:30" + }, + { + "end": "th 15:00", + "preset": "away", + "start": "th 08:00" + }, + { + "end": "th 22:30", + "preset": "home", + "start": "th 15:00" + }, + { + "end": "fr 06:30", + "preset": "asleep", + "start": "th 22:30" + }, + { + "end": "fr 08:00", + "preset": "home", + "start": "fr 06:30" + }, + { + "end": "fr 11:30", + "preset": "away", + "start": "fr 08:00" + }, + { + "end": "fr 23:15", + "preset": "home", + "start": "fr 11:30" + }, + { + "end": "sa 08:00", + "preset": "asleep", + "start": "fr 23:15" + }, + { + "end": "sa 23:15", + "preset": "home", + "start": "sa 08:00" + }, + { + "end": "su 08:00", + "preset": "asleep", + "start": "sa 23:15" + }, + { + "end": "su 22:30", + "preset": "home", + "start": "su 08:00" + }, + { + "end": "mo 06:30", + "preset": "asleep", + "start": "su 22:30" + } + ], + "zones": [ + "c50f167537524366a5af7aa3942feb1e" + ] + } + }, "sensors": { "outdoor_temperature": 7.81 }, diff --git a/fixtures/m_anna_heatpump_cooling/data.json b/fixtures/m_anna_heatpump_cooling/data.json index a4f23c17b..6f63e63bc 100644 --- a/fixtures/m_anna_heatpump_cooling/data.json +++ b/fixtures/m_anna_heatpump_cooling/data.json @@ -12,6 +12,72 @@ "model_id": "smile_thermo", "name": "Smile Anna", "notifications": {}, + "schedules": { + "6bae86c6a4ee44038393abb51c2dfe02": { + "active": true, + "name": "standaard", + "slots": [ + { + "end": "mo 10:15", + "preset": "home", + "start": "mo 07:00" + }, + { + "end": "mo 22:30", + "preset": "away", + "start": "mo 10:15" + }, + { + "end": "tu 07:00", + "preset": "asleep", + "start": "mo 22:30" + }, + { + "end": "tu 22:30", + "preset": "home", + "start": "tu 07:00" + }, + { + "end": "we 07:00", + "preset": "asleep", + "start": "tu 22:30" + }, + { + "end": "we 22:30", + "preset": "home", + "start": "we 07:00" + }, + { + "end": "th 07:00", + "preset": "asleep", + "start": "we 22:30" + }, + { + "end": "th 22:30", + "preset": "home", + "start": "th 07:00" + }, + { + "end": "fr 07:00", + "preset": "asleep", + "start": "th 22:30" + }, + { + "end": "su 22:30", + "preset": "home", + "start": "fr 07:00" + }, + { + "end": "mo 07:00", + "preset": "asleep", + "start": "su 22:30" + } + ], + "zones": [ + "c784ee9fdab44e1395b8dee7d7a497d5" + ] + } + }, "sensors": { "outdoor_temperature": 28.2 }, diff --git a/fixtures/m_anna_heatpump_idle/data.json b/fixtures/m_anna_heatpump_idle/data.json index 6cd2a5524..32630fc00 100644 --- a/fixtures/m_anna_heatpump_idle/data.json +++ b/fixtures/m_anna_heatpump_idle/data.json @@ -12,6 +12,72 @@ "model_id": "smile_thermo", "name": "Smile Anna", "notifications": {}, + "schedules": { + "6bae86c6a4ee44038393abb51c2dfe02": { + "active": true, + "name": "standaard", + "slots": [ + { + "end": "mo 10:15", + "preset": "home", + "start": "mo 07:00" + }, + { + "end": "mo 22:30", + "preset": "away", + "start": "mo 10:15" + }, + { + "end": "tu 07:00", + "preset": "asleep", + "start": "mo 22:30" + }, + { + "end": "tu 22:30", + "preset": "home", + "start": "tu 07:00" + }, + { + "end": "we 07:00", + "preset": "asleep", + "start": "tu 22:30" + }, + { + "end": "we 22:30", + "preset": "home", + "start": "we 07:00" + }, + { + "end": "th 07:00", + "preset": "asleep", + "start": "we 22:30" + }, + { + "end": "th 22:30", + "preset": "home", + "start": "th 07:00" + }, + { + "end": "fr 07:00", + "preset": "asleep", + "start": "th 22:30" + }, + { + "end": "su 22:30", + "preset": "home", + "start": "fr 07:00" + }, + { + "end": "mo 07:00", + "preset": "asleep", + "start": "su 22:30" + } + ], + "zones": [ + "c784ee9fdab44e1395b8dee7d7a497d5" + ] + } + }, "sensors": { "outdoor_temperature": 28.2 }, diff --git a/plugwise/constants.py b/plugwise/constants.py index 12c54b698..a7e0a9225 100644 --- a/plugwise/constants.py +++ b/plugwise/constants.py @@ -4,6 +4,7 @@ from collections import namedtuple import logging +import re from typing import Final, Literal, TypedDict, get_args LOGGER = logging.getLogger(__name__) @@ -556,6 +557,23 @@ class ActuatorData(TypedDict, total=False): upper_bound: float +SCHEDULE_TAG: Final = "zone_preset_based_on_time_and_presence_with_override" +SCHEDULE_PERIOD: Final = re.compile(r"\[(\w\w \d\d:\d\d),(\w\w \d\d:\d\d)\)") +SCHEDULE_NUMBERS: Final = ("setpoint", "heating_setpoint", "cooling_setpoint") +SCHEDULE_DAYS: Final = ("mo", "tu", "we", "th", "fr", "sa", "su") + +type ScheduleSlot = dict[str, str | float] + + +class ScheduleData(TypedDict): + """A weekly schedule, one per schedule rule on the gateway.""" + + name: str + active: bool + zones: list[str] + slots: list[ScheduleSlot] + + class GwEntityData(TypedDict, total=False): """The Gateway Entity data class. @@ -613,6 +631,7 @@ class GwEntityData(TypedDict, total=False): # Schedules: available_schedules: list[str] select_schedule: str + schedules: dict[str, ScheduleData] climate_mode: str # Extra for Adam Master Thermostats diff --git a/plugwise/data.py b/plugwise/data.py index 56de13064..d1164c06d 100644 --- a/plugwise/data.py +++ b/plugwise/data.py @@ -59,6 +59,9 @@ def _update_gw_entities(self) -> None: if entity_id == self._gateway_id: mac_list = self._detect_low_batteries() self._add_or_update_notifications(entity_id, entity) + if schedules := self._schedule_rules(): + entity["schedules"] = schedules + self._count += len(schedules) is_battery_low = ( mac_list diff --git a/plugwise/helper.py b/plugwise/helper.py index 5ea6b73e5..4f0c9760c 100644 --- a/plugwise/helper.py +++ b/plugwise/helper.py @@ -5,6 +5,7 @@ from __future__ import annotations +from contextlib import suppress from typing import cast from plugwise.common import SmileCommon @@ -28,6 +29,10 @@ NONE, OFF, P1_MEASUREMENTS, + SCHEDULE_DAYS, + SCHEDULE_NUMBERS, + SCHEDULE_PERIOD, + SCHEDULE_TAG, TEMP_CELSIUS, THERMO_MATCHING, THERMOSTAT_CLASSES, @@ -38,6 +43,8 @@ ActuatorDataType, ActuatorType, GwEntityData, + ScheduleData, + ScheduleSlot, SensorType, ThermoLoc, ToggleNameType, @@ -83,6 +90,14 @@ def _own_rule_ids(rules: dict[str, dict[str, str]], loc_id: str) -> list[str]: return [rule_id for rule_id, data in rules.items() if data["location"] == loc_id] +def _slot_order(slot: ScheduleSlot) -> tuple[int, str]: + """Return a sort key that orders slots by their start in the week, Monday first.""" + start = slot.get("start") + if isinstance(start, str) and start[:2] in SCHEDULE_DAYS: + return SCHEDULE_DAYS.index(start[:2]), start[3:] + return len(SCHEDULE_DAYS), "" + + class SmileHelper(SmileCommon): """The SmileHelper class.""" @@ -1041,7 +1056,7 @@ def _schedules(self, location: str) -> tuple[list[str], str]: available: list[str] = [OFF] rule_ids: dict[str, dict[str, str]] = {} selected = OFF - tag = "zone_preset_based_on_time_and_presence_with_override" + tag = SCHEDULE_TAG if not (rule_ids := self._rule_ids_by_tag(tag, location)): return available, selected @@ -1060,6 +1075,47 @@ def _schedules(self, location: str) -> tuple[list[str], str]: return available, selected + def _schedule_rules(self) -> dict[str, ScheduleData]: + """Helper-function for data.py: _update_gw_entities(). + + Collect every weekly schedule on the gateway, keyed by rule id. + """ + schedules: dict[str, ScheduleData] = {} + locator = f'./template[@tag="{SCHEDULE_TAG}"]' + for rule in self._domain_objects.findall("./rule"): + if rule.find(locator) is None or rule.find("directives") is None: + continue + + slots: list[ScheduleSlot] = [] + for when in rule.findall("directives/when"): + slot: ScheduleSlot = {} + for key, value in when.attrib.items(): + # time is a week interval: "[mo 07:15,mo 16:30)" + if key == "time" and (period := SCHEDULE_PERIOD.fullmatch(value)): + slot["start"], slot["end"] = period.groups() + else: + slot[key] = value + if (then := when.find("then")) is not None: + for key, value in then.attrib.items(): + slot[key] = value + if key in SCHEDULE_NUMBERS: + # One unreadable slot must not break the whole update + with suppress(ValueError): + slot[key] = float(value) + slots.append(slot) + + schedules[rule.get("id")] = { + "name": rule.findtext("name", ""), + "active": rule.findtext("active") == "true", + "zones": [ + location.get("id") + for location in rule.findall("contexts/context/zone/location") + ], + "slots": sorted(slots, key=_slot_order), + } + + return schedules + def _thermostat_uri(self, loc_id: str) -> str: """Helper-function for smile.py: set_temperature(). diff --git a/tests/data/adam/adam_heatpump_cooling.json b/tests/data/adam/adam_heatpump_cooling.json index cb7de51bd..80d80f0d0 100644 --- a/tests/data/adam/adam_heatpump_cooling.json +++ b/tests/data/adam/adam_heatpump_cooling.json @@ -457,7 +457,210 @@ "outdoor_temperature": 13.4 }, "vendor": "Plugwise", - "zigbee_mac_address": "ABCD012345670101" + "zigbee_mac_address": "ABCD012345670101", + "schedules": { + "09314e39f2bd416a889cc6b65b9c0209": { + "name": "Opstaan weekdag", + "active": true, + "zones": [], + "slots": [ + { + "start": "mo 07:00", + "end": "mo 10:15", + "preset": "home" + }, + { + "start": "mo 10:15", + "end": "mo 22:30", + "preset": "away" + }, + { + "start": "mo 22:30", + "end": "tu 07:00", + "preset": "asleep" + }, + { + "start": "tu 07:00", + "end": "tu 22:30", + "preset": "home" + }, + { + "start": "tu 22:30", + "end": "we 07:00", + "preset": "asleep" + }, + { + "start": "we 07:00", + "end": "we 22:30", + "preset": "home" + }, + { + "start": "we 22:30", + "end": "th 07:00", + "preset": "asleep" + }, + { + "start": "th 07:00", + "end": "th 22:30", + "preset": "home" + }, + { + "start": "th 22:30", + "end": "fr 07:00", + "preset": "asleep" + }, + { + "start": "fr 07:00", + "end": "su 22:30", + "preset": "home" + }, + { + "start": "su 22:30", + "end": "mo 07:00", + "preset": "asleep" + } + ] + }, + "4fed3d61217a408bbee54d56595cd379": { + "name": "Werkdag schema", + "active": true, + "zones": [ + "fa5fa6b34f6b40a0972988b20e888ed4", + "a562019b0b1f47a4bde8ebe3dbe3e8a9", + "5cc21042f87f4b4c94ccb5537c47a53f", + "8cf650a4c10c44819e426bed406aec34" + ], + "slots": [ + { + "start": "mo 08:00", + "end": "mo 17:15", + "preset": "away" + }, + { + "start": "mo 17:15", + "end": "mo 23:00", + "preset": "home" + }, + { + "start": "mo 23:00", + "end": "tu 08:00", + "preset": "asleep" + }, + { + "start": "tu 08:00", + "end": "tu 17:15", + "preset": "away" + }, + { + "start": "tu 17:15", + "end": "tu 23:00", + "preset": "home" + }, + { + "start": "tu 23:00", + "end": "we 08:00", + "preset": "asleep" + }, + { + "start": "we 08:00", + "end": "we 17:15", + "preset": "away" + }, + { + "start": "we 17:15", + "end": "we 23:00", + "preset": "home" + }, + { + "start": "we 23:00", + "end": "th 08:00", + "preset": "asleep" + }, + { + "start": "th 08:00", + "end": "th 17:15", + "preset": "away" + }, + { + "start": "th 17:15", + "end": "th 23:00", + "preset": "home" + }, + { + "start": "th 23:00", + "end": "fr 08:00", + "preset": "asleep" + }, + { + "start": "fr 08:00", + "end": "fr 17:15", + "preset": "away" + }, + { + "start": "fr 17:15", + "end": "fr 23:30", + "preset": "home" + }, + { + "start": "fr 23:30", + "end": "sa 08:30", + "preset": "asleep" + }, + { + "start": "sa 08:30", + "end": "sa 16:30", + "preset": "away" + }, + { + "start": "sa 16:30", + "end": "sa 23:30", + "preset": "home" + }, + { + "start": "sa 23:30", + "end": "su 09:00", + "setpoint": 17.5 + }, + { + "start": "su 09:00", + "end": "su 23:00", + "preset": "home" + }, + { + "start": "su 23:00", + "end": "mo 08:00", + "preset": "asleep" + } + ] + }, + "cad46f09817f4fcf82de44d0a49cf73c": { + "name": "Weekend", + "active": true, + "zones": [], + "slots": [ + { + "start": "sa 08:30", + "end": "sa 23:00", + "preset": "home" + }, + { + "start": "sa 23:00", + "end": "su 08:30", + "preset": "asleep" + }, + { + "start": "su 08:30", + "end": "su 23:00", + "preset": "home" + }, + { + "start": "su 23:00", + "end": "sa 08:30", + "preset": "asleep" + } + ] + } + } }, "7fda9f84f01342f8afe9ebbbbff30c0f": { "available": true, diff --git a/tests/data/adam/adam_multiple_devices_per_zone.json b/tests/data/adam/adam_multiple_devices_per_zone.json index ec7f3008a..7a7c028e4 100644 --- a/tests/data/adam/adam_multiple_devices_per_zone.json +++ b/tests/data/adam/adam_multiple_devices_per_zone.json @@ -812,6 +812,524 @@ "outdoor_temperature": 7.81 }, "vendor": "Plugwise", - "zigbee_mac_address": "ABCD012345670101" + "zigbee_mac_address": "ABCD012345670101", + "schedules": { + "d31c0fb5b9814815a5fe4090fd8ec1e2": { + "name": "CV Roan", + "active": true, + "zones": [], + "slots": [ + { + "start": "mo 07:00", + "end": "mo 19:30", + "preset": "away" + }, + { + "start": "mo 19:30", + "end": "tu 07:00", + "preset": "asleep" + }, + { + "start": "tu 07:00", + "end": "tu 19:30", + "preset": "away" + }, + { + "start": "tu 19:30", + "end": "we 07:00", + "preset": "asleep" + }, + { + "start": "we 07:00", + "end": "we 19:30", + "preset": "away" + }, + { + "start": "we 19:30", + "end": "th 07:00", + "preset": "asleep" + }, + { + "start": "th 07:00", + "end": "th 19:30", + "preset": "away" + }, + { + "start": "th 19:30", + "end": "fr 07:00", + "preset": "asleep" + }, + { + "start": "fr 07:00", + "end": "fr 20:15", + "preset": "away" + }, + { + "start": "fr 20:15", + "end": "sa 07:30", + "preset": "asleep" + }, + { + "start": "sa 07:30", + "end": "sa 20:15", + "preset": "away" + }, + { + "start": "sa 20:15", + "end": "su 07:30", + "preset": "asleep" + }, + { + "start": "su 07:30", + "end": "su 19:30", + "preset": "away" + }, + { + "start": "su 19:30", + "end": "mo 07:00", + "preset": "asleep" + } + ] + }, + "2b5f3132692d444293854d9e0c61095f": { + "name": "Bios Schema met Film Avond", + "active": false, + "zones": [], + "slots": [ + { + "start": "mo 07:30", + "end": "mo 22:15", + "preset": "away" + }, + { + "start": "mo 22:15", + "end": "tu 07:30", + "preset": "asleep" + }, + { + "start": "tu 07:30", + "end": "tu 22:15", + "preset": "away" + }, + { + "start": "tu 22:15", + "end": "we 07:30", + "preset": "asleep" + }, + { + "start": "we 07:30", + "end": "we 22:15", + "preset": "away" + }, + { + "start": "we 22:15", + "end": "th 07:30", + "preset": "asleep" + }, + { + "start": "th 07:30", + "end": "th 22:15", + "preset": "away" + }, + { + "start": "th 22:15", + "end": "fr 07:30", + "preset": "asleep" + }, + { + "start": "fr 07:30", + "end": "fr 22:15", + "preset": "away" + }, + { + "start": "fr 22:15", + "end": "sa 08:30", + "preset": "asleep" + }, + { + "start": "sa 08:30", + "end": "sa 19:00", + "preset": "away" + }, + { + "start": "sa 19:00", + "end": "sa 22:15", + "preset": "home" + }, + { + "start": "sa 22:15", + "end": "su 08:30", + "preset": "asleep" + }, + { + "start": "su 08:30", + "end": "su 22:15", + "preset": "away" + }, + { + "start": "su 22:15", + "end": "mo 07:30", + "preset": "asleep" + } + ] + }, + "ee003247871e4e16882771ab715ddfa1": { + "name": "GF7 Woonkamer", + "active": true, + "zones": [ + "c50f167537524366a5af7aa3942feb1e" + ], + "slots": [ + { + "start": "mo 06:30", + "end": "mo 08:00", + "preset": "home" + }, + { + "start": "mo 08:00", + "end": "mo 15:00", + "preset": "away" + }, + { + "start": "mo 15:00", + "end": "mo 22:30", + "preset": "home" + }, + { + "start": "mo 22:30", + "end": "tu 06:30", + "preset": "asleep" + }, + { + "start": "tu 06:30", + "end": "tu 08:00", + "preset": "home" + }, + { + "start": "tu 08:00", + "end": "tu 14:00", + "preset": "away" + }, + { + "start": "tu 14:00", + "end": "tu 22:30", + "preset": "home" + }, + { + "start": "tu 22:30", + "end": "we 06:30", + "preset": "asleep" + }, + { + "start": "we 06:30", + "end": "we 08:00", + "preset": "home" + }, + { + "start": "we 08:00", + "end": "we 11:30", + "preset": "away" + }, + { + "start": "we 11:30", + "end": "we 22:30", + "preset": "home" + }, + { + "start": "we 22:30", + "end": "th 06:30", + "preset": "asleep" + }, + { + "start": "th 06:30", + "end": "th 08:00", + "preset": "home" + }, + { + "start": "th 08:00", + "end": "th 15:00", + "preset": "away" + }, + { + "start": "th 15:00", + "end": "th 22:30", + "preset": "home" + }, + { + "start": "th 22:30", + "end": "fr 06:30", + "preset": "asleep" + }, + { + "start": "fr 06:30", + "end": "fr 08:00", + "preset": "home" + }, + { + "start": "fr 08:00", + "end": "fr 11:30", + "preset": "away" + }, + { + "start": "fr 11:30", + "end": "fr 23:15", + "preset": "home" + }, + { + "start": "fr 23:15", + "end": "sa 08:00", + "preset": "asleep" + }, + { + "start": "sa 08:00", + "end": "sa 23:15", + "preset": "home" + }, + { + "start": "sa 23:15", + "end": "su 08:00", + "preset": "asleep" + }, + { + "start": "su 08:00", + "end": "su 22:30", + "preset": "home" + }, + { + "start": "su 22:30", + "end": "mo 06:30", + "preset": "asleep" + } + ] + }, + "3e4b5a775f8143de961eaa3f5f7d9d1a": { + "name": "Badkamer Schema", + "active": true, + "zones": [ + "08963fec7c53423ca5680aa4cb502c63" + ], + "slots": [ + { + "start": "mo 06:45", + "end": "mo 08:00", + "preset": "home" + }, + { + "start": "mo 08:00", + "end": "mo 20:15", + "preset": "away" + }, + { + "start": "mo 20:15", + "end": "mo 21:30", + "preset": "home" + }, + { + "start": "mo 21:30", + "end": "tu 06:45", + "preset": "away" + }, + { + "start": "tu 06:45", + "end": "tu 08:00", + "preset": "home" + }, + { + "start": "tu 08:00", + "end": "tu 20:15", + "preset": "away" + }, + { + "start": "tu 20:15", + "end": "tu 21:30", + "preset": "home" + }, + { + "start": "tu 21:30", + "end": "we 06:45", + "preset": "away" + }, + { + "start": "we 06:45", + "end": "we 08:00", + "preset": "home" + }, + { + "start": "we 08:00", + "end": "we 20:15", + "preset": "away" + }, + { + "start": "we 20:15", + "end": "we 21:30", + "preset": "home" + }, + { + "start": "we 21:30", + "end": "th 06:45", + "preset": "away" + }, + { + "start": "th 06:45", + "end": "th 08:00", + "preset": "home" + }, + { + "start": "th 08:00", + "end": "th 20:15", + "preset": "away" + }, + { + "start": "th 20:15", + "end": "th 21:30", + "preset": "home" + }, + { + "start": "th 21:30", + "end": "fr 06:45", + "preset": "away" + }, + { + "start": "fr 06:45", + "end": "fr 08:00", + "preset": "home" + }, + { + "start": "fr 08:00", + "end": "fr 20:30", + "preset": "away" + }, + { + "start": "fr 20:30", + "end": "fr 22:00", + "preset": "home" + }, + { + "start": "fr 22:00", + "end": "sa 09:00", + "preset": "away" + }, + { + "start": "sa 09:00", + "end": "sa 10:15", + "preset": "home" + }, + { + "start": "sa 10:15", + "end": "sa 20:30", + "preset": "away" + }, + { + "start": "sa 20:30", + "end": "sa 22:00", + "preset": "asleep" + }, + { + "start": "sa 22:00", + "end": "su 09:00", + "preset": "away" + }, + { + "start": "su 09:00", + "end": "su 10:15", + "preset": "home" + }, + { + "start": "su 10:15", + "end": "su 20:15", + "preset": "away" + }, + { + "start": "su 20:15", + "end": "su 21:30", + "preset": "home" + }, + { + "start": "su 21:30", + "end": "mo 06:45", + "preset": "away" + } + ] + }, + "3466ac8e063a454bb6be9481e8df92d4": { + "name": "CV Jessie", + "active": true, + "zones": [ + "82fa13f017d240daa0d0ea1775420f24" + ], + "slots": [ + { + "start": "mo 07:15", + "end": "mo 21:30", + "setpoint": 15.0 + }, + { + "start": "mo 21:30", + "end": "tu 07:15", + "setpoint": 16.5 + }, + { + "start": "tu 07:15", + "end": "tu 21:30", + "setpoint": 15.0 + }, + { + "start": "tu 21:30", + "end": "we 07:15", + "setpoint": 16.5 + }, + { + "start": "we 07:15", + "end": "we 21:30", + "setpoint": 15.0 + }, + { + "start": "we 21:30", + "end": "th 07:15", + "setpoint": 16.5 + }, + { + "start": "th 07:15", + "end": "th 21:30", + "setpoint": 15.0 + }, + { + "start": "th 21:30", + "end": "fr 07:15", + "setpoint": 16.5 + }, + { + "start": "fr 07:15", + "end": "fr 22:30", + "setpoint": 15.0 + }, + { + "start": "fr 22:30", + "end": "sa 08:00", + "setpoint": 16.5 + }, + { + "start": "sa 08:00", + "end": "sa 22:30", + "setpoint": 15.0 + }, + { + "start": "sa 22:30", + "end": "su 08:00", + "setpoint": 16.5 + }, + { + "start": "su 08:00", + "end": "su 21:30", + "setpoint": 15.0 + }, + { + "start": "su 21:30", + "end": "mo 07:15", + "setpoint": 16.5 + } + ] + } + } } } diff --git a/tests/data/adam/adam_onoff_cooling_fake_firmware.json b/tests/data/adam/adam_onoff_cooling_fake_firmware.json index 6c26ff90b..9a292cbb0 100644 --- a/tests/data/adam/adam_onoff_cooling_fake_firmware.json +++ b/tests/data/adam/adam_onoff_cooling_fake_firmware.json @@ -74,7 +74,210 @@ "outdoor_temperature": 13.4 }, "vendor": "Plugwise", - "zigbee_mac_address": "ABCD012345670101" + "zigbee_mac_address": "ABCD012345670101", + "schedules": { + "09314e39f2bd416a889cc6b65b9c0209": { + "name": "Opstaan weekdag", + "active": true, + "zones": [], + "slots": [ + { + "start": "mo 07:00", + "end": "mo 10:15", + "preset": "home" + }, + { + "start": "mo 10:15", + "end": "mo 22:30", + "preset": "away" + }, + { + "start": "mo 22:30", + "end": "tu 07:00", + "preset": "asleep" + }, + { + "start": "tu 07:00", + "end": "tu 22:30", + "preset": "home" + }, + { + "start": "tu 22:30", + "end": "we 07:00", + "preset": "asleep" + }, + { + "start": "we 07:00", + "end": "we 22:30", + "preset": "home" + }, + { + "start": "we 22:30", + "end": "th 07:00", + "preset": "asleep" + }, + { + "start": "th 07:00", + "end": "th 22:30", + "preset": "home" + }, + { + "start": "th 22:30", + "end": "fr 07:00", + "preset": "asleep" + }, + { + "start": "fr 07:00", + "end": "su 22:30", + "preset": "home" + }, + { + "start": "su 22:30", + "end": "mo 07:00", + "preset": "asleep" + } + ] + }, + "4fed3d61217a408bbee54d56595cd379": { + "name": "Werkdag schema", + "active": true, + "zones": [ + "fa5fa6b34f6b40a0972988b20e888ed4", + "a562019b0b1f47a4bde8ebe3dbe3e8a9", + "5cc21042f87f4b4c94ccb5537c47a53f", + "8cf650a4c10c44819e426bed406aec34" + ], + "slots": [ + { + "start": "mo 08:00", + "end": "mo 17:15", + "preset": "away" + }, + { + "start": "mo 17:15", + "end": "mo 23:00", + "preset": "home" + }, + { + "start": "mo 23:00", + "end": "tu 08:00", + "preset": "asleep" + }, + { + "start": "tu 08:00", + "end": "tu 17:15", + "preset": "away" + }, + { + "start": "tu 17:15", + "end": "tu 23:00", + "preset": "home" + }, + { + "start": "tu 23:00", + "end": "we 08:00", + "preset": "asleep" + }, + { + "start": "we 08:00", + "end": "we 17:15", + "preset": "away" + }, + { + "start": "we 17:15", + "end": "we 23:00", + "preset": "home" + }, + { + "start": "we 23:00", + "end": "th 08:00", + "preset": "asleep" + }, + { + "start": "th 08:00", + "end": "th 17:15", + "preset": "away" + }, + { + "start": "th 17:15", + "end": "th 23:00", + "preset": "home" + }, + { + "start": "th 23:00", + "end": "fr 08:00", + "preset": "asleep" + }, + { + "start": "fr 08:00", + "end": "fr 17:15", + "preset": "away" + }, + { + "start": "fr 17:15", + "end": "fr 23:30", + "preset": "home" + }, + { + "start": "fr 23:30", + "end": "sa 08:30", + "preset": "asleep" + }, + { + "start": "sa 08:30", + "end": "sa 16:30", + "preset": "away" + }, + { + "start": "sa 16:30", + "end": "sa 23:30", + "preset": "home" + }, + { + "start": "sa 23:30", + "end": "su 09:00", + "preset": "asleep" + }, + { + "start": "su 09:00", + "end": "su 23:00", + "preset": "home" + }, + { + "start": "su 23:00", + "end": "mo 08:00", + "preset": "asleep" + } + ] + }, + "cad46f09817f4fcf82de44d0a49cf73c": { + "name": "Weekend", + "active": true, + "zones": [], + "slots": [ + { + "start": "sa 08:30", + "end": "sa 23:00", + "preset": "home" + }, + { + "start": "sa 23:00", + "end": "su 08:30", + "preset": "asleep" + }, + { + "start": "su 08:30", + "end": "su 23:00", + "preset": "home" + }, + { + "start": "su 23:00", + "end": "sa 08:30", + "preset": "asleep" + } + ] + } + } }, "ca79d23ae0094120b877558734cff85c": { "dev_class": "thermostat", diff --git a/tests/data/adam/adam_plus_anna.json b/tests/data/adam/adam_plus_anna.json index c88313808..9c01b904d 100644 --- a/tests/data/adam/adam_plus_anna.json +++ b/tests/data/adam/adam_plus_anna.json @@ -140,7 +140,123 @@ "outdoor_temperature": 11.9 }, "vendor": "Plugwise", - "zigbee_mac_address": "ABCD012345670101" + "zigbee_mac_address": "ABCD012345670101", + "schedules": { + "12f68057511a4445a162fb307d437cf1": { + "name": "Weekschema", + "active": true, + "zones": [ + "009490cc2f674ce6b576863fbb64f867" + ], + "slots": [ + { + "start": "mo 07:30", + "end": "mo 16:30", + "preset": "home" + }, + { + "start": "mo 16:30", + "end": "mo 22:30", + "setpoint": 20.5 + }, + { + "start": "mo 22:30", + "end": "tu 07:30", + "preset": "asleep" + }, + { + "start": "tu 07:30", + "end": "tu 16:30", + "preset": "home" + }, + { + "start": "tu 16:30", + "end": "tu 22:30", + "setpoint": 20.5 + }, + { + "start": "tu 22:30", + "end": "we 07:30", + "preset": "asleep" + }, + { + "start": "we 07:30", + "end": "we 16:30", + "preset": "home" + }, + { + "start": "we 16:30", + "end": "we 22:30", + "setpoint": 20.5 + }, + { + "start": "we 22:30", + "end": "th 07:30", + "preset": "asleep" + }, + { + "start": "th 07:30", + "end": "th 16:30", + "preset": "home" + }, + { + "start": "th 16:30", + "end": "th 22:30", + "setpoint": 20.5 + }, + { + "start": "th 22:30", + "end": "fr 07:30", + "preset": "asleep" + }, + { + "start": "fr 07:30", + "end": "fr 16:30", + "preset": "home" + }, + { + "start": "fr 16:30", + "end": "fr 22:30", + "setpoint": 20.5 + }, + { + "start": "fr 22:30", + "end": "sa 07:30", + "preset": "asleep" + }, + { + "start": "sa 07:30", + "end": "sa 16:30", + "preset": "home" + }, + { + "start": "sa 16:30", + "end": "sa 22:30", + "setpoint": 20.5 + }, + { + "start": "sa 22:30", + "end": "su 07:30", + "preset": "asleep" + }, + { + "start": "su 07:30", + "end": "su 16:30", + "preset": "home" + }, + { + "start": "su 16:30", + "end": "su 22:30", + "setpoint": 20.5 + }, + { + "start": "su 22:30", + "end": "mo 07:30", + "preset": "asleep" + } + ] + } + } }, "ee62cad889f94e8ca3d09021f03a660b": { "dev_class": "thermostat", diff --git a/tests/data/adam/adam_plus_anna_new.json b/tests/data/adam/adam_plus_anna_new.json index b68b4b42e..4291d947e 100644 --- a/tests/data/adam/adam_plus_anna_new.json +++ b/tests/data/adam/adam_plus_anna_new.json @@ -234,7 +234,319 @@ }, "vendor": "Plugwise", "wifi_mac_address": "D40FB201CBA0", - "zigbee_mac_address": "000D6F000D5ACBA0" + "zigbee_mac_address": "000D6F000D5ACBA0", + "schedules": { + "ebe3e57ec41d4d8faa927ca85c95b747": { + "name": "Badkamer", + "active": true, + "zones": [], + "slots": [ + { + "start": "mo 07:00", + "end": "mo 22:00", + "preset": "home" + }, + { + "start": "mo 22:00", + "end": "tu 07:00", + "preset": "asleep" + }, + { + "start": "tu 07:00", + "end": "tu 22:00", + "preset": "home" + }, + { + "start": "tu 22:00", + "end": "we 07:00", + "preset": "asleep" + }, + { + "start": "we 07:00", + "end": "we 22:00", + "preset": "home" + }, + { + "start": "we 22:00", + "end": "th 07:00", + "preset": "asleep" + }, + { + "start": "th 07:00", + "end": "th 22:00", + "preset": "home" + }, + { + "start": "th 22:00", + "end": "fr 07:00", + "preset": "asleep" + }, + { + "start": "fr 07:00", + "end": "fr 22:30", + "preset": "home" + }, + { + "start": "fr 22:30", + "end": "sa 07:30", + "preset": "asleep" + }, + { + "start": "sa 07:30", + "end": "sa 22:30", + "preset": "home" + }, + { + "start": "sa 22:30", + "end": "su 07:30", + "preset": "asleep" + }, + { + "start": "su 07:30", + "end": "su 22:00", + "preset": "home" + }, + { + "start": "su 22:00", + "end": "mo 07:00", + "preset": "asleep" + } + ] + }, + "e497d6c3572540008daa9d3ec9d500cd": { + "name": "Vakantie", + "active": true, + "zones": [], + "slots": [ + { + "start": "mo 10:00", + "end": "tu 10:00", + "setpoint": 15.0 + }, + { + "start": "tu 10:00", + "end": "we 10:00", + "setpoint": 15.0 + }, + { + "start": "we 10:00", + "end": "th 10:00", + "setpoint": 15.0 + }, + { + "start": "th 10:00", + "end": "fr 10:00", + "setpoint": 15.0 + }, + { + "start": "fr 10:00", + "end": "su 10:00", + "setpoint": 15.0 + }, + { + "start": "sa 10:00", + "end": "mo 10:00", + "setpoint": 15.0 + }, + { + "start": "su 10:00", + "end": "sa 10:00", + "setpoint": 15.0 + } + ] + }, + "24df4dace79a4c42a0f4750ce65d84cb": { + "name": "Weekschema", + "active": true, + "zones": [ + "f2bf9048bef64cc5b6d5110154e33c81" + ], + "slots": [ + { + "start": "mo 07:15", + "end": "mo 16:30", + "setpoint": 18.5 + }, + { + "start": "mo 16:30", + "end": "mo 21:00", + "preset": "home" + }, + { + "start": "mo 21:00", + "end": "tu 07:15", + "preset": "asleep" + }, + { + "start": "tu 07:15", + "end": "tu 16:30", + "setpoint": 18.5 + }, + { + "start": "tu 16:30", + "end": "tu 21:30", + "preset": "home" + }, + { + "start": "tu 21:30", + "end": "we 07:15", + "preset": "asleep" + }, + { + "start": "we 07:15", + "end": "we 16:30", + "setpoint": 18.5 + }, + { + "start": "we 16:30", + "end": "we 21:30", + "preset": "home" + }, + { + "start": "we 21:30", + "end": "th 07:15", + "preset": "asleep" + }, + { + "start": "th 07:15", + "end": "th 16:30", + "setpoint": 18.5 + }, + { + "start": "th 16:30", + "end": "th 21:30", + "preset": "home" + }, + { + "start": "th 21:30", + "end": "fr 07:15", + "preset": "asleep" + }, + { + "start": "fr 07:15", + "end": "fr 16:30", + "setpoint": 18.5 + }, + { + "start": "fr 16:30", + "end": "fr 22:00", + "preset": "home" + }, + { + "start": "fr 22:00", + "end": "sa 07:45", + "preset": "asleep" + }, + { + "start": "sa 07:45", + "end": "sa 16:00", + "setpoint": 18.5 + }, + { + "start": "sa 16:00", + "end": "sa 22:00", + "preset": "home" + }, + { + "start": "sa 22:00", + "end": "su 07:45", + "preset": "asleep" + }, + { + "start": "su 07:45", + "end": "su 16:00", + "setpoint": 18.5 + }, + { + "start": "su 16:00", + "end": "su 21:30", + "preset": "home" + }, + { + "start": "su 21:30", + "end": "mo 07:15", + "preset": "asleep" + } + ] + }, + "6b309e6df44c4e9a9f0014437843fa9a": { + "name": "Test", + "active": true, + "zones": [], + "slots": [ + { + "start": "mo 10:00", + "end": "tu 10:00", + "preset": "asleep" + }, + { + "start": "mo 16:15", + "end": "tu 16:15", + "preset": "home" + }, + { + "start": "tu 10:00", + "end": "we 10:00", + "preset": "asleep" + }, + { + "start": "tu 16:15", + "end": "we 16:15", + "preset": "home" + }, + { + "start": "we 10:00", + "end": "th 10:00", + "preset": "asleep" + }, + { + "start": "we 16:15", + "end": "th 16:15", + "preset": "home" + }, + { + "start": "th 10:00", + "end": "fr 10:00", + "preset": "asleep" + }, + { + "start": "th 16:15", + "end": "fr 16:15", + "preset": "home" + }, + { + "start": "fr 10:00", + "end": "su 10:00", + "preset": "asleep" + }, + { + "start": "fr 16:15", + "end": "su 16:15", + "preset": "home" + }, + { + "start": "sa 10:00", + "end": "sa 16:15", + "preset": "asleep" + }, + { + "start": "sa 16:15", + "end": "mo 10:00", + "preset": "home" + }, + { + "start": "su 10:00", + "end": "mo 16:15", + "preset": "asleep" + }, + { + "start": "su 16:15", + "end": "sa 10:00", + "preset": "home" + } + ] + } + } }, "da575e9e09b947e281fb6e3ebce3b174": { "available": true, 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 d83116c60..9c3070dc8 100644 --- a/tests/data/adam/adam_plus_anna_new_regulation_off.json +++ b/tests/data/adam/adam_plus_anna_new_regulation_off.json @@ -207,7 +207,321 @@ }, "vendor": "Plugwise", "wifi_mac_address": "012345679892", - "zigbee_mac_address": "000D6F000D5A168D" + "zigbee_mac_address": "000D6F000D5A168D", + "schedules": { + "ebe3e57ec41d4d8faa927ca85c95b747": { + "name": "Badkamer", + "active": true, + "zones": [ + "f871b8c4d63549319221e294e4f88074" + ], + "slots": [ + { + "start": "mo 07:00", + "end": "mo 22:00", + "preset": "home" + }, + { + "start": "mo 22:00", + "end": "tu 07:00", + "preset": "asleep" + }, + { + "start": "tu 07:00", + "end": "tu 22:00", + "preset": "home" + }, + { + "start": "tu 22:00", + "end": "we 07:00", + "preset": "asleep" + }, + { + "start": "we 07:00", + "end": "we 22:00", + "preset": "home" + }, + { + "start": "we 22:00", + "end": "th 07:00", + "preset": "asleep" + }, + { + "start": "th 07:00", + "end": "th 22:00", + "preset": "home" + }, + { + "start": "th 22:00", + "end": "fr 07:00", + "preset": "asleep" + }, + { + "start": "fr 07:00", + "end": "fr 22:30", + "preset": "home" + }, + { + "start": "fr 22:30", + "end": "sa 07:30", + "preset": "asleep" + }, + { + "start": "sa 07:30", + "end": "sa 22:30", + "preset": "home" + }, + { + "start": "sa 22:30", + "end": "su 07:30", + "preset": "asleep" + }, + { + "start": "su 07:30", + "end": "su 22:00", + "preset": "home" + }, + { + "start": "su 22:00", + "end": "mo 07:00", + "preset": "asleep" + } + ] + }, + "6b309e6df44c4e9a9f0014437843fa9a": { + "name": "Test", + "active": true, + "zones": [], + "slots": [ + { + "start": "mo 10:00", + "end": "tu 10:00", + "preset": "asleep" + }, + { + "start": "mo 16:15", + "end": "tu 16:15", + "preset": "home" + }, + { + "start": "tu 10:00", + "end": "we 10:00", + "preset": "asleep" + }, + { + "start": "tu 16:15", + "end": "we 16:15", + "preset": "home" + }, + { + "start": "we 10:00", + "end": "th 10:00", + "preset": "asleep" + }, + { + "start": "we 16:15", + "end": "th 16:15", + "preset": "home" + }, + { + "start": "th 10:00", + "end": "fr 10:00", + "preset": "asleep" + }, + { + "start": "th 16:15", + "end": "fr 16:15", + "preset": "home" + }, + { + "start": "fr 10:00", + "end": "su 10:00", + "preset": "asleep" + }, + { + "start": "fr 16:15", + "end": "su 16:15", + "preset": "home" + }, + { + "start": "sa 10:00", + "end": "sa 16:15", + "preset": "asleep" + }, + { + "start": "sa 16:15", + "end": "mo 10:00", + "preset": "home" + }, + { + "start": "su 10:00", + "end": "mo 16:15", + "preset": "asleep" + }, + { + "start": "su 16:15", + "end": "sa 10:00", + "preset": "home" + } + ] + }, + "e497d6c3572540008daa9d3ec9d500cd": { + "name": "Vakantie", + "active": true, + "zones": [], + "slots": [ + { + "start": "mo 10:00", + "end": "tu 10:00", + "setpoint": 15.0 + }, + { + "start": "tu 10:00", + "end": "we 10:00", + "setpoint": 15.0 + }, + { + "start": "we 10:00", + "end": "th 10:00", + "setpoint": 15.0 + }, + { + "start": "th 10:00", + "end": "fr 10:00", + "setpoint": 15.0 + }, + { + "start": "fr 10:00", + "end": "su 10:00", + "setpoint": 15.0 + }, + { + "start": "sa 10:00", + "end": "mo 10:00", + "setpoint": 15.0 + }, + { + "start": "su 10:00", + "end": "sa 10:00", + "setpoint": 15.0 + } + ] + }, + "24df4dace79a4c42a0f4750ce65d84cb": { + "name": "Weekschema", + "active": true, + "zones": [ + "f2bf9048bef64cc5b6d5110154e33c81" + ], + "slots": [ + { + "start": "mo 07:15", + "end": "mo 16:30", + "setpoint": 18.0 + }, + { + "start": "mo 16:30", + "end": "mo 21:30", + "preset": "home" + }, + { + "start": "mo 21:30", + "end": "tu 07:15", + "preset": "asleep" + }, + { + "start": "tu 07:15", + "end": "tu 16:30", + "setpoint": 18.0 + }, + { + "start": "tu 16:30", + "end": "tu 21:30", + "preset": "home" + }, + { + "start": "tu 21:30", + "end": "we 07:15", + "preset": "asleep" + }, + { + "start": "we 07:15", + "end": "we 16:30", + "setpoint": 18.0 + }, + { + "start": "we 16:30", + "end": "we 21:30", + "preset": "home" + }, + { + "start": "we 21:30", + "end": "th 07:15", + "preset": "asleep" + }, + { + "start": "th 07:15", + "end": "th 16:30", + "setpoint": 18.0 + }, + { + "start": "th 16:30", + "end": "th 21:30", + "preset": "home" + }, + { + "start": "th 21:30", + "end": "fr 07:15", + "preset": "asleep" + }, + { + "start": "fr 07:15", + "end": "fr 16:30", + "setpoint": 18.0 + }, + { + "start": "fr 16:30", + "end": "fr 22:00", + "preset": "home" + }, + { + "start": "fr 22:00", + "end": "sa 07:45", + "preset": "asleep" + }, + { + "start": "sa 07:45", + "end": "sa 16:00", + "setpoint": 18.0 + }, + { + "start": "sa 16:00", + "end": "sa 22:00", + "preset": "home" + }, + { + "start": "sa 22:00", + "end": "su 07:45", + "preset": "asleep" + }, + { + "start": "su 07:45", + "end": "su 16:00", + "setpoint": 18.0 + }, + { + "start": "su 16:00", + "end": "su 21:30", + "preset": "home" + }, + { + "start": "su 21:30", + "end": "mo 07:15", + "preset": "asleep" + } + ] + } + } }, "e2f4322d57924fa090fbbc48b3a140dc": { "available": true, diff --git a/tests/data/adam/adam_zone_per_device.json b/tests/data/adam/adam_zone_per_device.json index aa1e69c03..237c9690a 100644 --- a/tests/data/adam/adam_zone_per_device.json +++ b/tests/data/adam/adam_zone_per_device.json @@ -796,6 +796,524 @@ "outdoor_temperature": 7.69 }, "vendor": "Plugwise", - "zigbee_mac_address": "ABCD012345670101" + "zigbee_mac_address": "ABCD012345670101", + "schedules": { + "d31c0fb5b9814815a5fe4090fd8ec1e2": { + "name": "CV Roan", + "active": true, + "zones": [], + "slots": [ + { + "start": "mo 07:00", + "end": "mo 19:30", + "preset": "away" + }, + { + "start": "mo 19:30", + "end": "tu 07:00", + "preset": "asleep" + }, + { + "start": "tu 07:00", + "end": "tu 19:30", + "preset": "away" + }, + { + "start": "tu 19:30", + "end": "we 07:00", + "preset": "asleep" + }, + { + "start": "we 07:00", + "end": "we 19:30", + "preset": "away" + }, + { + "start": "we 19:30", + "end": "th 07:00", + "preset": "asleep" + }, + { + "start": "th 07:00", + "end": "th 19:30", + "preset": "away" + }, + { + "start": "th 19:30", + "end": "fr 07:00", + "preset": "asleep" + }, + { + "start": "fr 07:00", + "end": "fr 20:15", + "preset": "away" + }, + { + "start": "fr 20:15", + "end": "sa 07:30", + "preset": "asleep" + }, + { + "start": "sa 07:30", + "end": "sa 20:15", + "preset": "away" + }, + { + "start": "sa 20:15", + "end": "su 07:30", + "preset": "asleep" + }, + { + "start": "su 07:30", + "end": "su 19:30", + "preset": "away" + }, + { + "start": "su 19:30", + "end": "mo 07:00", + "preset": "asleep" + } + ] + }, + "2b5f3132692d444293854d9e0c61095f": { + "name": "Bios Schema met Film Avond", + "active": false, + "zones": [], + "slots": [ + { + "start": "mo 07:30", + "end": "mo 22:15", + "preset": "away" + }, + { + "start": "mo 22:15", + "end": "tu 07:30", + "preset": "asleep" + }, + { + "start": "tu 07:30", + "end": "tu 22:15", + "preset": "away" + }, + { + "start": "tu 22:15", + "end": "we 07:30", + "preset": "asleep" + }, + { + "start": "we 07:30", + "end": "we 22:15", + "preset": "away" + }, + { + "start": "we 22:15", + "end": "th 07:30", + "preset": "asleep" + }, + { + "start": "th 07:30", + "end": "th 22:15", + "preset": "away" + }, + { + "start": "th 22:15", + "end": "fr 07:30", + "preset": "asleep" + }, + { + "start": "fr 07:30", + "end": "fr 22:15", + "preset": "away" + }, + { + "start": "fr 22:15", + "end": "sa 08:30", + "preset": "asleep" + }, + { + "start": "sa 08:30", + "end": "sa 19:00", + "preset": "away" + }, + { + "start": "sa 19:00", + "end": "sa 22:15", + "preset": "home" + }, + { + "start": "sa 22:15", + "end": "su 08:30", + "preset": "asleep" + }, + { + "start": "su 08:30", + "end": "su 22:15", + "preset": "away" + }, + { + "start": "su 22:15", + "end": "mo 07:30", + "preset": "asleep" + } + ] + }, + "ee003247871e4e16882771ab715ddfa1": { + "name": "GF7 Woonkamer", + "active": true, + "zones": [ + "c50f167537524366a5af7aa3942feb1e" + ], + "slots": [ + { + "start": "mo 06:30", + "end": "mo 08:00", + "preset": "home" + }, + { + "start": "mo 08:00", + "end": "mo 15:00", + "preset": "away" + }, + { + "start": "mo 15:00", + "end": "mo 22:30", + "preset": "home" + }, + { + "start": "mo 22:30", + "end": "tu 06:30", + "preset": "asleep" + }, + { + "start": "tu 06:30", + "end": "tu 08:00", + "preset": "home" + }, + { + "start": "tu 08:00", + "end": "tu 14:00", + "preset": "away" + }, + { + "start": "tu 14:00", + "end": "tu 22:30", + "preset": "home" + }, + { + "start": "tu 22:30", + "end": "we 06:30", + "preset": "asleep" + }, + { + "start": "we 06:30", + "end": "we 08:00", + "preset": "home" + }, + { + "start": "we 08:00", + "end": "we 11:30", + "preset": "away" + }, + { + "start": "we 11:30", + "end": "we 22:30", + "preset": "home" + }, + { + "start": "we 22:30", + "end": "th 06:30", + "preset": "asleep" + }, + { + "start": "th 06:30", + "end": "th 08:00", + "preset": "home" + }, + { + "start": "th 08:00", + "end": "th 15:00", + "preset": "away" + }, + { + "start": "th 15:00", + "end": "th 22:30", + "preset": "home" + }, + { + "start": "th 22:30", + "end": "fr 06:30", + "preset": "asleep" + }, + { + "start": "fr 06:30", + "end": "fr 08:00", + "preset": "home" + }, + { + "start": "fr 08:00", + "end": "fr 11:30", + "preset": "away" + }, + { + "start": "fr 11:30", + "end": "fr 23:15", + "preset": "home" + }, + { + "start": "fr 23:15", + "end": "sa 08:00", + "preset": "asleep" + }, + { + "start": "sa 08:00", + "end": "sa 23:15", + "preset": "home" + }, + { + "start": "sa 23:15", + "end": "su 08:00", + "preset": "asleep" + }, + { + "start": "su 08:00", + "end": "su 22:30", + "preset": "home" + }, + { + "start": "su 22:30", + "end": "mo 06:30", + "preset": "asleep" + } + ] + }, + "3e4b5a775f8143de961eaa3f5f7d9d1a": { + "name": "Badkamer Schema", + "active": true, + "zones": [ + "08963fec7c53423ca5680aa4cb502c63" + ], + "slots": [ + { + "start": "mo 06:45", + "end": "mo 08:00", + "preset": "home" + }, + { + "start": "mo 08:00", + "end": "mo 20:15", + "preset": "away" + }, + { + "start": "mo 20:15", + "end": "mo 21:30", + "preset": "home" + }, + { + "start": "mo 21:30", + "end": "tu 06:45", + "preset": "away" + }, + { + "start": "tu 06:45", + "end": "tu 08:00", + "preset": "home" + }, + { + "start": "tu 08:00", + "end": "tu 20:15", + "preset": "away" + }, + { + "start": "tu 20:15", + "end": "tu 21:30", + "preset": "home" + }, + { + "start": "tu 21:30", + "end": "we 06:45", + "preset": "away" + }, + { + "start": "we 06:45", + "end": "we 08:00", + "preset": "home" + }, + { + "start": "we 08:00", + "end": "we 20:15", + "preset": "away" + }, + { + "start": "we 20:15", + "end": "we 21:30", + "preset": "home" + }, + { + "start": "we 21:30", + "end": "th 06:45", + "preset": "away" + }, + { + "start": "th 06:45", + "end": "th 08:00", + "preset": "home" + }, + { + "start": "th 08:00", + "end": "th 20:15", + "preset": "away" + }, + { + "start": "th 20:15", + "end": "th 21:30", + "preset": "home" + }, + { + "start": "th 21:30", + "end": "fr 06:45", + "preset": "away" + }, + { + "start": "fr 06:45", + "end": "fr 08:00", + "preset": "home" + }, + { + "start": "fr 08:00", + "end": "fr 20:30", + "preset": "away" + }, + { + "start": "fr 20:30", + "end": "fr 22:00", + "preset": "home" + }, + { + "start": "fr 22:00", + "end": "sa 09:00", + "preset": "away" + }, + { + "start": "sa 09:00", + "end": "sa 10:15", + "preset": "home" + }, + { + "start": "sa 10:15", + "end": "sa 20:30", + "preset": "away" + }, + { + "start": "sa 20:30", + "end": "sa 22:00", + "preset": "asleep" + }, + { + "start": "sa 22:00", + "end": "su 09:00", + "preset": "away" + }, + { + "start": "su 09:00", + "end": "su 10:15", + "preset": "home" + }, + { + "start": "su 10:15", + "end": "su 20:15", + "preset": "away" + }, + { + "start": "su 20:15", + "end": "su 21:30", + "preset": "home" + }, + { + "start": "su 21:30", + "end": "mo 06:45", + "preset": "away" + } + ] + }, + "3466ac8e063a454bb6be9481e8df92d4": { + "name": "CV Jessie", + "active": true, + "zones": [ + "82fa13f017d240daa0d0ea1775420f24" + ], + "slots": [ + { + "start": "mo 07:15", + "end": "mo 21:30", + "setpoint": 15.0 + }, + { + "start": "mo 21:30", + "end": "tu 07:15", + "setpoint": 16.5 + }, + { + "start": "tu 07:15", + "end": "tu 21:30", + "setpoint": 15.0 + }, + { + "start": "tu 21:30", + "end": "we 07:15", + "setpoint": 16.5 + }, + { + "start": "we 07:15", + "end": "we 21:30", + "setpoint": 15.0 + }, + { + "start": "we 21:30", + "end": "th 07:15", + "setpoint": 16.5 + }, + { + "start": "th 07:15", + "end": "th 21:30", + "setpoint": 15.0 + }, + { + "start": "th 21:30", + "end": "fr 07:15", + "setpoint": 16.5 + }, + { + "start": "fr 07:15", + "end": "fr 22:30", + "setpoint": 15.0 + }, + { + "start": "fr 22:30", + "end": "sa 08:00", + "setpoint": 16.5 + }, + { + "start": "sa 08:00", + "end": "sa 22:30", + "setpoint": 15.0 + }, + { + "start": "sa 22:30", + "end": "su 08:00", + "setpoint": 16.5 + }, + { + "start": "su 08:00", + "end": "su 21:30", + "setpoint": 15.0 + }, + { + "start": "su 21:30", + "end": "mo 07:15", + "setpoint": 16.5 + } + ] + } + } } } diff --git a/tests/data/anna/anna_elga_2.json b/tests/data/anna/anna_elga_2.json index 1b992d85a..7cd1e70cc 100644 --- a/tests/data/anna/anna_elga_2.json +++ b/tests/data/anna/anna_elga_2.json @@ -130,6 +130,112 @@ "outdoor_temperature": 6.38 }, "vendor": "Plugwise", - "wifi_mac_address": "C4930002FE77" + "wifi_mac_address": "C4930002FE77", + "schedules": { + "40e484ccfd644f1fa8b82f669091144a": { + "name": "Thermostat schedule", + "active": true, + "zones": [ + "d3ce834534114348be628b61b26d9220" + ], + "slots": [ + { + "start": "mo 08:00", + "end": "mo 15:00", + "preset": "home" + }, + { + "start": "mo 15:00", + "end": "mo 23:00", + "setpoint": 19.0 + }, + { + "start": "mo 23:00", + "end": "tu 10:00", + "preset": "asleep" + }, + { + "start": "tu 10:00", + "end": "tu 15:00", + "preset": "home" + }, + { + "start": "tu 15:00", + "end": "tu 23:00", + "setpoint": 19.0 + }, + { + "start": "tu 23:00", + "end": "we 10:00", + "preset": "asleep" + }, + { + "start": "we 10:00", + "end": "we 15:00", + "preset": "home" + }, + { + "start": "we 15:00", + "end": "we 23:00", + "setpoint": 19.0 + }, + { + "start": "we 23:00", + "end": "th 08:00", + "preset": "asleep" + }, + { + "start": "th 08:00", + "end": "th 15:00", + "preset": "home" + }, + { + "start": "th 15:00", + "end": "th 23:00", + "setpoint": 19.0 + }, + { + "start": "th 23:00", + "end": "fr 10:00", + "preset": "asleep" + }, + { + "start": "fr 10:00", + "end": "fr 15:00", + "preset": "home" + }, + { + "start": "fr 15:00", + "end": "fr 23:00", + "setpoint": 19.0 + }, + { + "start": "fr 23:00", + "end": "sa 10:00", + "preset": "asleep" + }, + { + "start": "sa 10:00", + "end": "sa 23:00", + "preset": "home" + }, + { + "start": "sa 23:00", + "end": "su 10:00", + "preset": "asleep" + }, + { + "start": "su 10:00", + "end": "su 22:45", + "preset": "home" + }, + { + "start": "su 22:45", + "end": "mo 08:00", + "preset": "asleep" + } + ] + } + } } } diff --git a/tests/data/anna/anna_elga_2_cooling.json b/tests/data/anna/anna_elga_2_cooling.json index 5036b7aa2..ea1da1f7d 100644 --- a/tests/data/anna/anna_elga_2_cooling.json +++ b/tests/data/anna/anna_elga_2_cooling.json @@ -136,6 +136,88 @@ "sensors": { "outdoor_temperature": 31.0 }, - "vendor": "Plugwise" + "vendor": "Plugwise", + "schedules": { + "40e484ccfd644f1fa8b82f669091144a": { + "name": "Thermostat schedule", + "active": true, + "zones": [ + "d3ce834534114348be628b61b26d9220" + ], + "slots": [ + { + "start": "mo 06:45", + "end": "tu 06:45", + "preset": "home" + }, + { + "start": "mo 23:00", + "end": "th 23:00", + "preset": "asleep" + }, + { + "start": "tu 06:45", + "end": "we 06:45", + "preset": "home" + }, + { + "start": "tu 23:00", + "end": "sa 08:30", + "preset": "asleep" + }, + { + "start": "we 06:45", + "end": "th 06:45", + "preset": "home" + }, + { + "start": "we 23:00", + "end": "tu 23:00", + "preset": "asleep" + }, + { + "start": "th 06:45", + "end": "fr 06:45", + "preset": "home" + }, + { + "start": "th 23:00", + "end": "fr 23:00", + "preset": "asleep" + }, + { + "start": "fr 06:45", + "end": "su 08:30", + "preset": "home" + }, + { + "start": "fr 23:00", + "end": "we 23:00", + "preset": "asleep" + }, + { + "start": "sa 08:30", + "end": "sa 23:00", + "preset": "home" + }, + { + "start": "sa 23:00", + "end": "mo 06:45", + "heating_setpoint": 18.5, + "cooling_setpoint": 23.5 + }, + { + "start": "su 08:30", + "end": "su 22:45", + "preset": "home" + }, + { + "start": "su 22:45", + "end": "mo 23:00", + "preset": "asleep" + } + ] + } + } } } diff --git a/tests/data/anna/anna_elga_2_schedule_off.json b/tests/data/anna/anna_elga_2_schedule_off.json index 9b09e10f0..0365004c5 100644 --- a/tests/data/anna/anna_elga_2_schedule_off.json +++ b/tests/data/anna/anna_elga_2_schedule_off.json @@ -136,6 +136,85 @@ "sensors": { "outdoor_temperature": 13.0 }, - "vendor": "Plugwise" + "vendor": "Plugwise", + "schedules": { + "40e484ccfd644f1fa8b82f669091144a": { + "name": "Thermostat schedule", + "active": true, + "zones": [], + "slots": [ + { + "start": "mo 06:45", + "end": "tu 06:45", + "preset": "home" + }, + { + "start": "mo 23:00", + "end": "th 23:00", + "preset": "asleep" + }, + { + "start": "tu 06:45", + "end": "we 06:45", + "preset": "home" + }, + { + "start": "tu 23:00", + "end": "sa 08:30", + "preset": "asleep" + }, + { + "start": "we 06:45", + "end": "th 06:45", + "preset": "home" + }, + { + "start": "we 23:00", + "end": "tu 23:00", + "preset": "asleep" + }, + { + "start": "th 06:45", + "end": "fr 06:45", + "preset": "home" + }, + { + "start": "th 23:00", + "end": "fr 23:00", + "preset": "asleep" + }, + { + "start": "fr 06:45", + "end": "su 08:30", + "preset": "home" + }, + { + "start": "fr 23:00", + "end": "we 23:00", + "preset": "asleep" + }, + { + "start": "sa 08:30", + "end": "sa 23:00", + "preset": "home" + }, + { + "start": "sa 23:00", + "end": "mo 06:45", + "preset": "asleep" + }, + { + "start": "su 08:30", + "end": "su 22:45", + "preset": "home" + }, + { + "start": "su 22:45", + "end": "mo 23:00", + "preset": "asleep" + } + ] + } + } } } diff --git a/tests/data/anna/anna_elga_no_cooling.json b/tests/data/anna/anna_elga_no_cooling.json index a9abd244d..ed126d5dd 100644 --- a/tests/data/anna/anna_elga_no_cooling.json +++ b/tests/data/anna/anna_elga_no_cooling.json @@ -15,7 +15,73 @@ "sensors": { "outdoor_temperature": 20.2 }, - "vendor": "Plugwise" + "vendor": "Plugwise", + "schedules": { + "6bae86c6a4ee44038393abb51c2dfe02": { + "name": "standaard", + "active": true, + "zones": [ + "c784ee9fdab44e1395b8dee7d7a497d5" + ], + "slots": [ + { + "start": "mo 07:00", + "end": "mo 10:15", + "preset": "home" + }, + { + "start": "mo 10:15", + "end": "mo 22:30", + "preset": "away" + }, + { + "start": "mo 22:30", + "end": "tu 07:00", + "preset": "asleep" + }, + { + "start": "tu 07:00", + "end": "tu 22:30", + "preset": "home" + }, + { + "start": "tu 22:30", + "end": "we 07:00", + "preset": "asleep" + }, + { + "start": "we 07:00", + "end": "we 22:30", + "preset": "home" + }, + { + "start": "we 22:30", + "end": "th 07:00", + "preset": "asleep" + }, + { + "start": "th 07:00", + "end": "th 22:30", + "preset": "home" + }, + { + "start": "th 22:30", + "end": "fr 07:00", + "preset": "asleep" + }, + { + "start": "fr 07:00", + "end": "su 22:30", + "preset": "home" + }, + { + "start": "su 22:30", + "end": "mo 07:00", + "preset": "asleep" + } + ] + } + } }, "1cbf783bb11e4a7c8a6843dee3a86927": { "available": true, diff --git a/tests/data/anna/anna_heatpump_cooling.json b/tests/data/anna/anna_heatpump_cooling.json index 590fb176f..6143fc092 100644 --- a/tests/data/anna/anna_heatpump_cooling.json +++ b/tests/data/anna/anna_heatpump_cooling.json @@ -15,7 +15,71 @@ "sensors": { "outdoor_temperature": 22.0 }, - "vendor": "Plugwise" + "vendor": "Plugwise", + "schedules": { + "6bae86c6a4ee44038393abb51c2dfe02": { + "name": "standaard", + "active": true, + "zones": [], + "slots": [ + { + "start": "mo 07:00", + "end": "mo 10:15", + "preset": "home" + }, + { + "start": "mo 10:15", + "end": "mo 22:30", + "preset": "away" + }, + { + "start": "mo 22:30", + "end": "tu 07:00", + "preset": "asleep" + }, + { + "start": "tu 07:00", + "end": "tu 22:30", + "preset": "home" + }, + { + "start": "tu 22:30", + "end": "we 07:00", + "preset": "asleep" + }, + { + "start": "we 07:00", + "end": "we 22:30", + "preset": "home" + }, + { + "start": "we 22:30", + "end": "th 07:00", + "preset": "asleep" + }, + { + "start": "th 07:00", + "end": "th 22:30", + "preset": "home" + }, + { + "start": "th 22:30", + "end": "fr 07:00", + "preset": "asleep" + }, + { + "start": "fr 07:00", + "end": "su 22:30", + "preset": "home" + }, + { + "start": "su 22:30", + "end": "mo 07:00", + "preset": "asleep" + } + ] + } + } }, "1cbf783bb11e4a7c8a6843dee3a86927": { "available": true, diff --git a/tests/data/anna/anna_heatpump_cooling_fake_firmware.json b/tests/data/anna/anna_heatpump_cooling_fake_firmware.json index 0f9b9cdb8..5b8f09960 100644 --- a/tests/data/anna/anna_heatpump_cooling_fake_firmware.json +++ b/tests/data/anna/anna_heatpump_cooling_fake_firmware.json @@ -15,7 +15,71 @@ "sensors": { "outdoor_temperature": 22.0 }, - "vendor": "Plugwise" + "vendor": "Plugwise", + "schedules": { + "6bae86c6a4ee44038393abb51c2dfe02": { + "name": "standaard", + "active": true, + "zones": [], + "slots": [ + { + "start": "mo 07:00", + "end": "mo 10:15", + "preset": "home" + }, + { + "start": "mo 10:15", + "end": "mo 22:30", + "preset": "away" + }, + { + "start": "mo 22:30", + "end": "tu 07:00", + "preset": "asleep" + }, + { + "start": "tu 07:00", + "end": "tu 22:30", + "preset": "home" + }, + { + "start": "tu 22:30", + "end": "we 07:00", + "preset": "asleep" + }, + { + "start": "we 07:00", + "end": "we 22:30", + "preset": "home" + }, + { + "start": "we 22:30", + "end": "th 07:00", + "preset": "asleep" + }, + { + "start": "th 07:00", + "end": "th 22:30", + "preset": "home" + }, + { + "start": "th 22:30", + "end": "fr 07:00", + "preset": "asleep" + }, + { + "start": "fr 07:00", + "end": "su 22:30", + "preset": "home" + }, + { + "start": "su 22:30", + "end": "mo 07:00", + "preset": "asleep" + } + ] + } + } }, "1cbf783bb11e4a7c8a6843dee3a86927": { "available": true, diff --git a/tests/data/anna/anna_heatpump_heating.json b/tests/data/anna/anna_heatpump_heating.json index e0d969f2c..7acdc5ea9 100644 --- a/tests/data/anna/anna_heatpump_heating.json +++ b/tests/data/anna/anna_heatpump_heating.json @@ -15,7 +15,73 @@ "sensors": { "outdoor_temperature": 20.2 }, - "vendor": "Plugwise" + "vendor": "Plugwise", + "schedules": { + "6bae86c6a4ee44038393abb51c2dfe02": { + "name": "standaard", + "active": true, + "zones": [ + "c784ee9fdab44e1395b8dee7d7a497d5" + ], + "slots": [ + { + "start": "mo 07:00", + "end": "mo 10:15", + "preset": "home" + }, + { + "start": "mo 10:15", + "end": "mo 22:30", + "preset": "away" + }, + { + "start": "mo 22:30", + "end": "tu 07:00", + "preset": "asleep" + }, + { + "start": "tu 07:00", + "end": "tu 22:30", + "preset": "home" + }, + { + "start": "tu 22:30", + "end": "we 07:00", + "preset": "asleep" + }, + { + "start": "we 07:00", + "end": "we 22:30", + "preset": "home" + }, + { + "start": "we 22:30", + "end": "th 07:00", + "preset": "asleep" + }, + { + "start": "th 07:00", + "end": "th 22:30", + "preset": "home" + }, + { + "start": "th 22:30", + "end": "fr 07:00", + "preset": "asleep" + }, + { + "start": "fr 07:00", + "end": "su 22:30", + "preset": "home" + }, + { + "start": "su 22:30", + "end": "mo 07:00", + "preset": "asleep" + } + ] + } + } }, "1cbf783bb11e4a7c8a6843dee3a86927": { "available": true, diff --git a/tests/data/anna/anna_loria_cooling_active.json b/tests/data/anna/anna_loria_cooling_active.json index 1e67057bf..b62ee6340 100644 --- a/tests/data/anna/anna_loria_cooling_active.json +++ b/tests/data/anna/anna_loria_cooling_active.json @@ -94,7 +94,1005 @@ "sensors": { "outdoor_temperature": 15.5 }, - "vendor": "Plugwise" + "vendor": "Plugwise", + "schedules": { + "a667b8ad609f4c45a3258f2ef9749d30": { + "name": "Winter", + "active": true, + "zones": [ + "15da035090b847e7a21f93e08c015ebc" + ], + "slots": [ + { + "start": "mo 06:00", + "end": "mo 23:15", + "preset": "home" + }, + { + "start": "mo 23:15", + "end": "tu 06:00", + "preset": "asleep" + }, + { + "start": "tu 06:00", + "end": "tu 23:15", + "preset": "home" + }, + { + "start": "tu 23:15", + "end": "we 06:00", + "preset": "asleep" + }, + { + "start": "we 06:00", + "end": "we 23:15", + "preset": "home" + }, + { + "start": "we 23:15", + "end": "th 06:00", + "preset": "asleep" + }, + { + "start": "th 06:00", + "end": "th 23:15", + "preset": "home" + }, + { + "start": "th 23:15", + "end": "fr 06:00", + "preset": "asleep" + }, + { + "start": "fr 06:00", + "end": "fr 23:15", + "preset": "home" + }, + { + "start": "fr 23:15", + "end": "sa 07:30", + "preset": "asleep" + }, + { + "start": "sa 07:30", + "end": "sa 23:15", + "preset": "home" + }, + { + "start": "sa 23:15", + "end": "su 07:30", + "preset": "asleep" + }, + { + "start": "su 07:30", + "end": "su 23:15", + "preset": "home" + }, + { + "start": "su 23:15", + "end": "mo 06:00", + "preset": "asleep" + } + ] + }, + "bb391cf9eeb84fa8a874fa83072c70fb": { + "name": "Test ", + "active": true, + "zones": [], + "slots": [ + { + "start": "mo 00:00", + "end": "tu 00:00", + "preset": "home" + }, + { + "start": "mo 00:15", + "end": "tu 00:15", + "preset": "asleep" + }, + { + "start": "mo 02:00", + "end": "tu 02:00", + "preset": "home" + }, + { + "start": "mo 02:15", + "end": "tu 02:15", + "preset": "asleep" + }, + { + "start": "mo 04:00", + "end": "tu 04:00", + "preset": "home" + }, + { + "start": "mo 04:15", + "end": "tu 04:15", + "preset": "asleep" + }, + { + "start": "mo 06:00", + "end": "tu 06:00", + "preset": "home" + }, + { + "start": "mo 06:30", + "end": "tu 06:30", + "preset": "asleep" + }, + { + "start": "mo 08:00", + "end": "tu 08:00", + "preset": "home" + }, + { + "start": "mo 08:15", + "end": "tu 08:15", + "preset": "asleep" + }, + { + "start": "mo 09:30", + "end": "tu 09:30", + "preset": "home" + }, + { + "start": "mo 09:45", + "end": "we 09:45", + "preset": "asleep" + }, + { + "start": "mo 11:00", + "end": "tu 11:00", + "preset": "home" + }, + { + "start": "mo 11:15", + "end": "tu 11:15", + "preset": "asleep" + }, + { + "start": "mo 12:45", + "end": "tu 12:45", + "preset": "home" + }, + { + "start": "mo 13:00", + "end": "tu 13:00", + "preset": "asleep" + }, + { + "start": "mo 14:30", + "end": "tu 14:30", + "preset": "home" + }, + { + "start": "mo 14:45", + "end": "tu 14:45", + "preset": "asleep" + }, + { + "start": "mo 16:00", + "end": "tu 16:00", + "preset": "home" + }, + { + "start": "mo 16:15", + "end": "tu 16:15", + "preset": "asleep" + }, + { + "start": "mo 18:00", + "end": "tu 18:00", + "preset": "home" + }, + { + "start": "mo 18:15", + "end": "tu 18:15", + "preset": "asleep" + }, + { + "start": "mo 20:15", + "end": "tu 20:15", + "preset": "home" + }, + { + "start": "mo 20:30", + "end": "tu 20:30", + "preset": "asleep" + }, + { + "start": "mo 22:00", + "end": "tu 22:00", + "preset": "home" + }, + { + "start": "mo 22:15", + "end": "tu 22:15", + "preset": "asleep" + }, + { + "start": "tu 00:00", + "end": "we 00:00", + "preset": "home" + }, + { + "start": "tu 00:15", + "end": "we 00:15", + "preset": "asleep" + }, + { + "start": "tu 02:00", + "end": "we 02:00", + "preset": "home" + }, + { + "start": "tu 02:15", + "end": "we 02:15", + "preset": "asleep" + }, + { + "start": "tu 04:00", + "end": "we 04:00", + "preset": "home" + }, + { + "start": "tu 04:15", + "end": "we 04:15", + "preset": "asleep" + }, + { + "start": "tu 06:00", + "end": "we 06:00", + "preset": "home" + }, + { + "start": "tu 06:30", + "end": "we 06:30", + "preset": "asleep" + }, + { + "start": "tu 08:00", + "end": "we 08:00", + "preset": "home" + }, + { + "start": "tu 08:15", + "end": "we 08:15", + "preset": "asleep" + }, + { + "start": "tu 09:30", + "end": "we 09:30", + "preset": "home" + }, + { + "start": "tu 09:45", + "end": "th 09:45", + "preset": "asleep" + }, + { + "start": "tu 11:00", + "end": "we 11:00", + "preset": "home" + }, + { + "start": "tu 11:15", + "end": "we 11:15", + "preset": "asleep" + }, + { + "start": "tu 12:45", + "end": "we 12:45", + "preset": "home" + }, + { + "start": "tu 13:00", + "end": "we 13:00", + "preset": "asleep" + }, + { + "start": "tu 14:30", + "end": "we 14:30", + "preset": "home" + }, + { + "start": "tu 14:45", + "end": "we 14:45", + "preset": "asleep" + }, + { + "start": "tu 16:00", + "end": "we 16:00", + "preset": "home" + }, + { + "start": "tu 16:15", + "end": "we 16:15", + "preset": "asleep" + }, + { + "start": "tu 18:00", + "end": "we 18:00", + "preset": "home" + }, + { + "start": "tu 18:15", + "end": "we 18:15", + "preset": "asleep" + }, + { + "start": "tu 20:15", + "end": "we 20:15", + "preset": "home" + }, + { + "start": "tu 20:30", + "end": "we 20:30", + "preset": "asleep" + }, + { + "start": "tu 22:00", + "end": "we 22:00", + "preset": "home" + }, + { + "start": "tu 22:15", + "end": "we 22:15", + "preset": "asleep" + }, + { + "start": "we 00:00", + "end": "th 00:00", + "preset": "home" + }, + { + "start": "we 00:15", + "end": "th 00:15", + "preset": "asleep" + }, + { + "start": "we 02:00", + "end": "th 02:00", + "preset": "home" + }, + { + "start": "we 02:15", + "end": "th 02:15", + "preset": "asleep" + }, + { + "start": "we 04:00", + "end": "fr 04:00", + "preset": "home" + }, + { + "start": "we 04:15", + "end": "fr 04:15", + "preset": "asleep" + }, + { + "start": "we 06:00", + "end": "fr 06:00", + "preset": "home" + }, + { + "start": "we 06:30", + "end": "th 06:30", + "preset": "asleep" + }, + { + "start": "we 08:00", + "end": "th 08:00", + "preset": "home" + }, + { + "start": "we 08:15", + "end": "th 08:15", + "preset": "asleep" + }, + { + "start": "we 09:30", + "end": "th 09:30", + "preset": "home" + }, + { + "start": "we 09:45", + "end": "tu 09:45", + "preset": "asleep" + }, + { + "start": "we 11:00", + "end": "th 11:00", + "preset": "home" + }, + { + "start": "we 11:15", + "end": "th 11:15", + "preset": "asleep" + }, + { + "start": "we 12:45", + "end": "th 12:45", + "preset": "home" + }, + { + "start": "we 13:00", + "end": "th 13:00", + "preset": "asleep" + }, + { + "start": "we 14:30", + "end": "th 14:30", + "preset": "home" + }, + { + "start": "we 14:45", + "end": "th 14:45", + "preset": "asleep" + }, + { + "start": "we 16:00", + "end": "th 16:00", + "preset": "home" + }, + { + "start": "we 16:15", + "end": "fr 16:15", + "preset": "asleep" + }, + { + "start": "we 18:00", + "end": "th 18:00", + "preset": "home" + }, + { + "start": "we 18:15", + "end": "th 18:15", + "preset": "asleep" + }, + { + "start": "we 20:15", + "end": "th 20:15", + "preset": "home" + }, + { + "start": "we 20:30", + "end": "th 20:30", + "preset": "asleep" + }, + { + "start": "we 22:00", + "end": "th 22:00", + "preset": "home" + }, + { + "start": "we 22:15", + "end": "th 22:15", + "preset": "asleep" + }, + { + "start": "th 00:00", + "end": "su 00:00", + "preset": "home" + }, + { + "start": "th 00:15", + "end": "fr 00:15", + "preset": "asleep" + }, + { + "start": "th 02:00", + "end": "fr 02:00", + "preset": "home" + }, + { + "start": "th 02:15", + "end": "fr 02:15", + "preset": "asleep" + }, + { + "start": "th 04:00", + "end": "mo 04:15", + "preset": "home" + }, + { + "start": "th 04:15", + "end": "mo 06:00", + "preset": "asleep" + }, + { + "start": "th 06:00", + "end": "su 06:00", + "preset": "home" + }, + { + "start": "th 06:30", + "end": "fr 06:30", + "preset": "asleep" + }, + { + "start": "th 08:00", + "end": "fr 08:00", + "preset": "home" + }, + { + "start": "th 08:15", + "end": "fr 08:15", + "preset": "asleep" + }, + { + "start": "th 09:30", + "end": "fr 09:30", + "preset": "home" + }, + { + "start": "th 09:45", + "end": "fr 09:45", + "preset": "asleep" + }, + { + "start": "th 11:00", + "end": "fr 11:00", + "preset": "home" + }, + { + "start": "th 11:15", + "end": "fr 11:15", + "preset": "asleep" + }, + { + "start": "th 12:45", + "end": "fr 12:45", + "preset": "home" + }, + { + "start": "th 13:00", + "end": "fr 13:00", + "preset": "asleep" + }, + { + "start": "th 14:30", + "end": "fr 14:30", + "preset": "home" + }, + { + "start": "th 14:45", + "end": "fr 14:45", + "preset": "asleep" + }, + { + "start": "th 16:00", + "end": "fr 16:00", + "preset": "home" + }, + { + "start": "th 16:15", + "end": "su 16:15", + "preset": "asleep" + }, + { + "start": "th 18:00", + "end": "fr 18:00", + "preset": "home" + }, + { + "start": "th 18:15", + "end": "fr 18:15", + "preset": "asleep" + }, + { + "start": "th 20:15", + "end": "fr 20:15", + "preset": "home" + }, + { + "start": "th 20:30", + "end": "fr 20:30", + "preset": "asleep" + }, + { + "start": "th 22:00", + "end": "fr 22:00", + "preset": "home" + }, + { + "start": "th 22:15", + "end": "fr 22:15", + "preset": "asleep" + }, + { + "start": "fr 00:00", + "end": "mo 00:00", + "preset": "home" + }, + { + "start": "fr 00:15", + "end": "su 00:15", + "preset": "asleep" + }, + { + "start": "fr 02:00", + "end": "su 02:00", + "preset": "home" + }, + { + "start": "fr 02:15", + "end": "su 02:15", + "preset": "asleep" + }, + { + "start": "fr 04:00", + "end": "su 04:00", + "preset": "home" + }, + { + "start": "fr 04:15", + "end": "su 04:15", + "preset": "asleep" + }, + { + "start": "fr 06:00", + "end": "th 06:00", + "preset": "home" + }, + { + "start": "fr 06:30", + "end": "su 06:30", + "preset": "asleep" + }, + { + "start": "fr 08:00", + "end": "su 08:00", + "preset": "home" + }, + { + "start": "fr 08:15", + "end": "su 08:15", + "preset": "asleep" + }, + { + "start": "fr 09:30", + "end": "su 09:30", + "preset": "home" + }, + { + "start": "fr 09:45", + "end": "su 09:45", + "preset": "asleep" + }, + { + "start": "fr 11:00", + "end": "su 11:00", + "preset": "home" + }, + { + "start": "fr 11:15", + "end": "su 11:15", + "preset": "asleep" + }, + { + "start": "fr 12:45", + "end": "su 12:45", + "preset": "home" + }, + { + "start": "fr 13:00", + "end": "su 13:00", + "preset": "asleep" + }, + { + "start": "fr 14:30", + "end": "su 14:30", + "preset": "home" + }, + { + "start": "fr 14:45", + "end": "su 14:45", + "preset": "asleep" + }, + { + "start": "fr 16:00", + "end": "su 16:00", + "preset": "home" + }, + { + "start": "fr 16:15", + "end": "th 16:15", + "preset": "asleep" + }, + { + "start": "fr 18:00", + "end": "su 18:00", + "preset": "home" + }, + { + "start": "fr 18:15", + "end": "su 18:15", + "preset": "asleep" + }, + { + "start": "fr 20:15", + "end": "su 20:15", + "preset": "home" + }, + { + "start": "fr 20:30", + "end": "su 20:30", + "preset": "asleep" + }, + { + "start": "fr 22:00", + "end": "su 22:00", + "preset": "home" + }, + { + "start": "fr 22:15", + "end": "su 22:15", + "preset": "asleep" + }, + { + "start": "sa 00:00", + "end": "sa 00:15", + "preset": "home" + }, + { + "start": "sa 00:15", + "end": "sa 02:00", + "preset": "asleep" + }, + { + "start": "sa 02:00", + "end": "sa 02:15", + "preset": "home" + }, + { + "start": "sa 02:15", + "end": "sa 04:00", + "preset": "asleep" + }, + { + "start": "sa 04:00", + "end": "sa 04:15", + "preset": "home" + }, + { + "start": "sa 04:15", + "end": "sa 06:00", + "preset": "asleep" + }, + { + "start": "sa 06:00", + "end": "sa 06:30", + "preset": "home" + }, + { + "start": "sa 06:30", + "end": "sa 08:00", + "preset": "asleep" + }, + { + "start": "sa 08:00", + "end": "sa 08:15", + "preset": "home" + }, + { + "start": "sa 08:15", + "end": "sa 09:30", + "preset": "asleep" + }, + { + "start": "sa 09:30", + "end": "sa 09:45", + "preset": "home" + }, + { + "start": "sa 09:45", + "end": "sa 11:00", + "preset": "asleep" + }, + { + "start": "sa 11:00", + "end": "sa 11:15", + "preset": "home" + }, + { + "start": "sa 11:15", + "end": "sa 12:45", + "preset": "asleep" + }, + { + "start": "sa 12:45", + "end": "sa 13:00", + "preset": "home" + }, + { + "start": "sa 13:00", + "end": "sa 14:30", + "preset": "asleep" + }, + { + "start": "sa 14:30", + "end": "sa 14:45", + "preset": "home" + }, + { + "start": "sa 14:45", + "end": "sa 16:00", + "preset": "asleep" + }, + { + "start": "sa 16:00", + "end": "sa 16:15", + "preset": "home" + }, + { + "start": "sa 16:15", + "end": "sa 18:00", + "preset": "asleep" + }, + { + "start": "sa 18:00", + "end": "sa 18:15", + "preset": "home" + }, + { + "start": "sa 18:15", + "end": "sa 20:15", + "preset": "asleep" + }, + { + "start": "sa 20:15", + "end": "sa 20:30", + "preset": "home" + }, + { + "start": "sa 20:30", + "end": "sa 22:00", + "preset": "asleep" + }, + { + "start": "sa 22:00", + "end": "sa 22:15", + "preset": "home" + }, + { + "start": "sa 22:15", + "end": "fr 00:00", + "preset": "asleep" + }, + { + "start": "su 00:00", + "end": "mo 00:15", + "preset": "home" + }, + { + "start": "su 00:15", + "end": "mo 02:00", + "preset": "asleep" + }, + { + "start": "su 02:00", + "end": "mo 02:15", + "preset": "home" + }, + { + "start": "su 02:15", + "end": "mo 04:00", + "preset": "asleep" + }, + { + "start": "su 04:00", + "end": "th 04:00", + "preset": "home" + }, + { + "start": "su 04:15", + "end": "th 04:15", + "preset": "asleep" + }, + { + "start": "su 06:00", + "end": "mo 06:30", + "preset": "home" + }, + { + "start": "su 06:30", + "end": "mo 08:00", + "preset": "asleep" + }, + { + "start": "su 08:00", + "end": "mo 08:15", + "preset": "home" + }, + { + "start": "su 08:15", + "end": "mo 09:30", + "preset": "asleep" + }, + { + "start": "su 09:30", + "end": "mo 09:45", + "preset": "home" + }, + { + "start": "su 09:45", + "end": "mo 11:00", + "preset": "asleep" + }, + { + "start": "su 11:00", + "end": "mo 11:15", + "preset": "home" + }, + { + "start": "su 11:15", + "end": "mo 12:45", + "preset": "asleep" + }, + { + "start": "su 12:45", + "end": "mo 13:00", + "preset": "home" + }, + { + "start": "su 13:00", + "end": "mo 14:30", + "preset": "asleep" + }, + { + "start": "su 14:30", + "end": "mo 14:45", + "preset": "home" + }, + { + "start": "su 14:45", + "end": "mo 16:00", + "preset": "asleep" + }, + { + "start": "su 16:00", + "end": "mo 16:15", + "preset": "home" + }, + { + "start": "su 16:15", + "end": "mo 18:00", + "preset": "asleep" + }, + { + "start": "su 18:00", + "end": "mo 18:15", + "preset": "home" + }, + { + "start": "su 18:15", + "end": "mo 20:15", + "preset": "asleep" + }, + { + "start": "su 20:15", + "end": "mo 20:30", + "preset": "home" + }, + { + "start": "su 20:30", + "end": "mo 22:00", + "preset": "asleep" + }, + { + "start": "su 22:00", + "end": "mo 22:15", + "preset": "home" + }, + { + "start": "su 22:15", + "end": "sa 00:00", + "preset": "asleep" + } + ] + } + } }, "bfb5ee0a88e14e5f97bfa725a760cc49": { "available": true, diff --git a/tests/data/anna/anna_loria_driessens.json b/tests/data/anna/anna_loria_driessens.json index 3ffbf60de..30eb6acec 100644 --- a/tests/data/anna/anna_loria_driessens.json +++ b/tests/data/anna/anna_loria_driessens.json @@ -16,7 +16,389 @@ "outdoor_temperature": 6.81 }, "vendor": "Plugwise", - "wifi_mac_address": "D40FB2011557" + "wifi_mac_address": "D40FB2011557", + "schedules": { + "d4e04f5167ab43348e00c0a45b50a2bb": { + "name": "Verwarmen@9-23u", + "active": true, + "zones": [ + "fa70e08550c94de3a34feb27ecf31421" + ], + "slots": [ + { + "start": "mo 09:00", + "end": "mo 09:15", + "setpoint": 21.0 + }, + { + "start": "mo 09:15", + "end": "mo 23:00", + "preset": "home" + }, + { + "start": "mo 23:00", + "end": "tu 09:00", + "preset": "asleep" + }, + { + "start": "tu 09:00", + "end": "tu 09:15", + "setpoint": 21.0 + }, + { + "start": "tu 09:15", + "end": "tu 23:00", + "preset": "home" + }, + { + "start": "tu 23:00", + "end": "we 09:00", + "preset": "asleep" + }, + { + "start": "we 09:00", + "end": "we 09:15", + "setpoint": 21.0 + }, + { + "start": "we 09:15", + "end": "we 23:00", + "preset": "home" + }, + { + "start": "we 23:00", + "end": "th 09:00", + "preset": "asleep" + }, + { + "start": "th 09:00", + "end": "th 09:15", + "setpoint": 21.0 + }, + { + "start": "th 09:15", + "end": "th 23:00", + "preset": "home" + }, + { + "start": "th 23:00", + "end": "fr 09:00", + "preset": "asleep" + }, + { + "start": "fr 09:00", + "end": "fr 09:15", + "setpoint": 21.0 + }, + { + "start": "fr 09:15", + "end": "fr 23:00", + "preset": "home" + }, + { + "start": "fr 23:00", + "end": "sa 09:00", + "preset": "asleep" + }, + { + "start": "sa 09:00", + "end": "sa 09:15", + "setpoint": 21.0 + }, + { + "start": "sa 09:15", + "end": "sa 23:00", + "preset": "home" + }, + { + "start": "sa 23:00", + "end": "su 09:00", + "preset": "asleep" + }, + { + "start": "su 09:00", + "end": "su 09:15", + "setpoint": 21.0 + }, + { + "start": "su 09:15", + "end": "su 23:00", + "preset": "home" + }, + { + "start": "su 23:00", + "end": "mo 09:00", + "preset": "asleep" + } + ] + }, + "68640693f6a445a5993389c636a84435": { + "name": "VAKANTIE (winter)", + "active": true, + "zones": [], + "slots": [ + { + "start": "mo 10:45", + "end": "mo 15:30", + "preset": "away" + }, + { + "start": "mo 15:30", + "end": "tu 10:45", + "setpoint": 15.0 + }, + { + "start": "tu 10:45", + "end": "tu 15:30", + "preset": "away" + }, + { + "start": "tu 15:30", + "end": "we 10:45", + "setpoint": 15.0 + }, + { + "start": "we 10:45", + "end": "we 15:30", + "preset": "away" + }, + { + "start": "we 15:30", + "end": "th 10:45", + "setpoint": 15.0 + }, + { + "start": "th 10:45", + "end": "th 15:30", + "preset": "away" + }, + { + "start": "th 15:30", + "end": "fr 10:45", + "setpoint": 15.0 + }, + { + "start": "fr 10:45", + "end": "fr 15:30", + "preset": "away" + }, + { + "start": "fr 15:30", + "end": "sa 10:45", + "setpoint": 15.0 + }, + { + "start": "sa 10:45", + "end": "sa 15:30", + "preset": "away" + }, + { + "start": "sa 15:30", + "end": "su 10:45", + "setpoint": 15.0 + }, + { + "start": "su 10:45", + "end": "su 15:30", + "preset": "away" + }, + { + "start": "su 15:30", + "end": "mo 10:45", + "setpoint": 15.0 + } + ] + }, + "86e18430fa3f49a3a7e89557af183ccb": { + "name": "VERWARMEN", + "active": true, + "zones": [], + "slots": [ + { + "start": "mo 10:00", + "end": "mo 10:15", + "setpoint": 21.0 + }, + { + "start": "mo 10:15", + "end": "mo 17:00", + "preset": "home" + }, + { + "start": "mo 17:00", + "end": "tu 10:00", + "preset": "asleep" + }, + { + "start": "tu 10:00", + "end": "tu 10:15", + "setpoint": 21.0 + }, + { + "start": "tu 10:15", + "end": "tu 17:00", + "preset": "home" + }, + { + "start": "tu 17:00", + "end": "we 10:00", + "preset": "asleep" + }, + { + "start": "we 10:00", + "end": "we 10:15", + "setpoint": 21.0 + }, + { + "start": "we 10:15", + "end": "we 17:00", + "preset": "home" + }, + { + "start": "we 17:00", + "end": "th 10:00", + "preset": "asleep" + }, + { + "start": "th 10:00", + "end": "th 10:15", + "setpoint": 21.0 + }, + { + "start": "th 10:15", + "end": "th 17:00", + "preset": "home" + }, + { + "start": "th 17:00", + "end": "fr 10:00", + "preset": "asleep" + }, + { + "start": "fr 10:00", + "end": "fr 10:15", + "setpoint": 21.0 + }, + { + "start": "fr 10:15", + "end": "fr 17:00", + "preset": "home" + }, + { + "start": "fr 17:00", + "end": "sa 10:00", + "preset": "asleep" + }, + { + "start": "sa 10:00", + "end": "sa 10:15", + "setpoint": 21.0 + }, + { + "start": "sa 10:15", + "end": "sa 17:00", + "preset": "home" + }, + { + "start": "sa 17:00", + "end": "su 10:00", + "preset": "asleep" + }, + { + "start": "su 10:00", + "end": "su 10:15", + "setpoint": 21.0 + }, + { + "start": "su 10:15", + "end": "su 17:00", + "preset": "home" + }, + { + "start": "su 17:00", + "end": "mo 10:00", + "preset": "asleep" + } + ] + }, + "6cfc8d79f7164cd5b0e5d7a8e8d217c3": { + "name": "KOELEN", + "active": true, + "zones": [], + "slots": [ + { + "start": "mo 08:00", + "end": "mo 20:00", + "preset": "home" + }, + { + "start": "mo 20:00", + "end": "tu 08:00", + "preset": "asleep" + }, + { + "start": "tu 08:00", + "end": "tu 20:00", + "preset": "home" + }, + { + "start": "tu 20:00", + "end": "we 08:00", + "preset": "asleep" + }, + { + "start": "we 08:00", + "end": "we 20:00", + "preset": "home" + }, + { + "start": "we 20:00", + "end": "th 08:00", + "preset": "asleep" + }, + { + "start": "th 08:00", + "end": "th 20:00", + "preset": "home" + }, + { + "start": "th 20:00", + "end": "fr 08:00", + "preset": "asleep" + }, + { + "start": "fr 08:00", + "end": "fr 20:00", + "preset": "home" + }, + { + "start": "fr 20:00", + "end": "sa 08:00", + "preset": "asleep" + }, + { + "start": "sa 08:00", + "end": "sa 20:00", + "preset": "home" + }, + { + "start": "sa 20:00", + "end": "su 08:00", + "preset": "asleep" + }, + { + "start": "su 08:00", + "end": "su 20:00", + "preset": "home" + }, + { + "start": "su 20:00", + "end": "mo 08:00", + "preset": "asleep" + } + ] + } + } }, "9fb768d699e44c7fb5cc50309dc4e7d4": { "active_preset": "home", diff --git a/tests/data/anna/anna_loria_heating_idle.json b/tests/data/anna/anna_loria_heating_idle.json index de5d5451d..41d7e0160 100644 --- a/tests/data/anna/anna_loria_heating_idle.json +++ b/tests/data/anna/anna_loria_heating_idle.json @@ -94,7 +94,1005 @@ "sensors": { "outdoor_temperature": 15.5 }, - "vendor": "Plugwise" + "vendor": "Plugwise", + "schedules": { + "a667b8ad609f4c45a3258f2ef9749d30": { + "name": "Winter", + "active": true, + "zones": [ + "15da035090b847e7a21f93e08c015ebc" + ], + "slots": [ + { + "start": "mo 06:00", + "end": "mo 23:15", + "setpoint": 17.5 + }, + { + "start": "mo 23:15", + "end": "tu 06:00", + "preset": "asleep" + }, + { + "start": "tu 06:00", + "end": "tu 23:15", + "preset": "home" + }, + { + "start": "tu 23:15", + "end": "we 06:00", + "preset": "asleep" + }, + { + "start": "we 06:00", + "end": "we 23:15", + "preset": "home" + }, + { + "start": "we 23:15", + "end": "th 06:00", + "preset": "asleep" + }, + { + "start": "th 06:00", + "end": "th 23:15", + "preset": "home" + }, + { + "start": "th 23:15", + "end": "fr 06:00", + "preset": "asleep" + }, + { + "start": "fr 06:00", + "end": "fr 23:15", + "preset": "home" + }, + { + "start": "fr 23:15", + "end": "sa 07:30", + "preset": "asleep" + }, + { + "start": "sa 07:30", + "end": "sa 23:15", + "preset": "home" + }, + { + "start": "sa 23:15", + "end": "su 07:30", + "preset": "asleep" + }, + { + "start": "su 07:30", + "end": "su 23:15", + "preset": "home" + }, + { + "start": "su 23:15", + "end": "mo 06:00", + "preset": "asleep" + } + ] + }, + "bb391cf9eeb84fa8a874fa83072c70fb": { + "name": "Test ", + "active": true, + "zones": [], + "slots": [ + { + "start": "mo 00:00", + "end": "tu 00:00", + "preset": "home" + }, + { + "start": "mo 00:15", + "end": "tu 00:15", + "preset": "asleep" + }, + { + "start": "mo 02:00", + "end": "tu 02:00", + "preset": "home" + }, + { + "start": "mo 02:15", + "end": "tu 02:15", + "preset": "asleep" + }, + { + "start": "mo 04:00", + "end": "tu 04:00", + "preset": "home" + }, + { + "start": "mo 04:15", + "end": "tu 04:15", + "preset": "asleep" + }, + { + "start": "mo 06:00", + "end": "tu 06:00", + "preset": "home" + }, + { + "start": "mo 06:30", + "end": "tu 06:30", + "preset": "asleep" + }, + { + "start": "mo 08:00", + "end": "tu 08:00", + "preset": "home" + }, + { + "start": "mo 08:15", + "end": "tu 08:15", + "preset": "asleep" + }, + { + "start": "mo 09:30", + "end": "tu 09:30", + "preset": "home" + }, + { + "start": "mo 09:45", + "end": "we 09:45", + "preset": "asleep" + }, + { + "start": "mo 11:00", + "end": "tu 11:00", + "preset": "home" + }, + { + "start": "mo 11:15", + "end": "tu 11:15", + "preset": "asleep" + }, + { + "start": "mo 12:45", + "end": "tu 12:45", + "preset": "home" + }, + { + "start": "mo 13:00", + "end": "tu 13:00", + "preset": "asleep" + }, + { + "start": "mo 14:30", + "end": "tu 14:30", + "preset": "home" + }, + { + "start": "mo 14:45", + "end": "tu 14:45", + "preset": "asleep" + }, + { + "start": "mo 16:00", + "end": "tu 16:00", + "preset": "home" + }, + { + "start": "mo 16:15", + "end": "tu 16:15", + "preset": "asleep" + }, + { + "start": "mo 18:00", + "end": "tu 18:00", + "preset": "home" + }, + { + "start": "mo 18:15", + "end": "tu 18:15", + "preset": "asleep" + }, + { + "start": "mo 20:15", + "end": "tu 20:15", + "preset": "home" + }, + { + "start": "mo 20:30", + "end": "tu 20:30", + "preset": "asleep" + }, + { + "start": "mo 22:00", + "end": "tu 22:00", + "preset": "home" + }, + { + "start": "mo 22:15", + "end": "tu 22:15", + "preset": "asleep" + }, + { + "start": "tu 00:00", + "end": "we 00:00", + "preset": "home" + }, + { + "start": "tu 00:15", + "end": "we 00:15", + "preset": "asleep" + }, + { + "start": "tu 02:00", + "end": "we 02:00", + "preset": "home" + }, + { + "start": "tu 02:15", + "end": "we 02:15", + "preset": "asleep" + }, + { + "start": "tu 04:00", + "end": "we 04:00", + "preset": "home" + }, + { + "start": "tu 04:15", + "end": "we 04:15", + "preset": "asleep" + }, + { + "start": "tu 06:00", + "end": "we 06:00", + "preset": "home" + }, + { + "start": "tu 06:30", + "end": "we 06:30", + "preset": "asleep" + }, + { + "start": "tu 08:00", + "end": "we 08:00", + "preset": "home" + }, + { + "start": "tu 08:15", + "end": "we 08:15", + "preset": "asleep" + }, + { + "start": "tu 09:30", + "end": "we 09:30", + "preset": "home" + }, + { + "start": "tu 09:45", + "end": "th 09:45", + "preset": "asleep" + }, + { + "start": "tu 11:00", + "end": "we 11:00", + "preset": "home" + }, + { + "start": "tu 11:15", + "end": "we 11:15", + "preset": "asleep" + }, + { + "start": "tu 12:45", + "end": "we 12:45", + "preset": "home" + }, + { + "start": "tu 13:00", + "end": "we 13:00", + "preset": "asleep" + }, + { + "start": "tu 14:30", + "end": "we 14:30", + "preset": "home" + }, + { + "start": "tu 14:45", + "end": "we 14:45", + "preset": "asleep" + }, + { + "start": "tu 16:00", + "end": "we 16:00", + "preset": "home" + }, + { + "start": "tu 16:15", + "end": "we 16:15", + "preset": "asleep" + }, + { + "start": "tu 18:00", + "end": "we 18:00", + "preset": "home" + }, + { + "start": "tu 18:15", + "end": "we 18:15", + "preset": "asleep" + }, + { + "start": "tu 20:15", + "end": "we 20:15", + "preset": "home" + }, + { + "start": "tu 20:30", + "end": "we 20:30", + "preset": "asleep" + }, + { + "start": "tu 22:00", + "end": "we 22:00", + "preset": "home" + }, + { + "start": "tu 22:15", + "end": "we 22:15", + "preset": "asleep" + }, + { + "start": "we 00:00", + "end": "th 00:00", + "preset": "home" + }, + { + "start": "we 00:15", + "end": "th 00:15", + "preset": "asleep" + }, + { + "start": "we 02:00", + "end": "th 02:00", + "preset": "home" + }, + { + "start": "we 02:15", + "end": "th 02:15", + "preset": "asleep" + }, + { + "start": "we 04:00", + "end": "fr 04:00", + "preset": "home" + }, + { + "start": "we 04:15", + "end": "fr 04:15", + "preset": "asleep" + }, + { + "start": "we 06:00", + "end": "fr 06:00", + "preset": "home" + }, + { + "start": "we 06:30", + "end": "th 06:30", + "preset": "asleep" + }, + { + "start": "we 08:00", + "end": "th 08:00", + "preset": "home" + }, + { + "start": "we 08:15", + "end": "th 08:15", + "preset": "asleep" + }, + { + "start": "we 09:30", + "end": "th 09:30", + "preset": "home" + }, + { + "start": "we 09:45", + "end": "tu 09:45", + "preset": "asleep" + }, + { + "start": "we 11:00", + "end": "th 11:00", + "preset": "home" + }, + { + "start": "we 11:15", + "end": "th 11:15", + "preset": "asleep" + }, + { + "start": "we 12:45", + "end": "th 12:45", + "preset": "home" + }, + { + "start": "we 13:00", + "end": "th 13:00", + "preset": "asleep" + }, + { + "start": "we 14:30", + "end": "th 14:30", + "preset": "home" + }, + { + "start": "we 14:45", + "end": "th 14:45", + "preset": "asleep" + }, + { + "start": "we 16:00", + "end": "th 16:00", + "preset": "home" + }, + { + "start": "we 16:15", + "end": "fr 16:15", + "preset": "asleep" + }, + { + "start": "we 18:00", + "end": "th 18:00", + "preset": "home" + }, + { + "start": "we 18:15", + "end": "th 18:15", + "preset": "asleep" + }, + { + "start": "we 20:15", + "end": "th 20:15", + "preset": "home" + }, + { + "start": "we 20:30", + "end": "th 20:30", + "preset": "asleep" + }, + { + "start": "we 22:00", + "end": "th 22:00", + "preset": "home" + }, + { + "start": "we 22:15", + "end": "th 22:15", + "preset": "asleep" + }, + { + "start": "th 00:00", + "end": "su 00:00", + "preset": "home" + }, + { + "start": "th 00:15", + "end": "fr 00:15", + "preset": "asleep" + }, + { + "start": "th 02:00", + "end": "fr 02:00", + "preset": "home" + }, + { + "start": "th 02:15", + "end": "fr 02:15", + "preset": "asleep" + }, + { + "start": "th 04:00", + "end": "mo 04:15", + "preset": "home" + }, + { + "start": "th 04:15", + "end": "mo 06:00", + "preset": "asleep" + }, + { + "start": "th 06:00", + "end": "su 06:00", + "preset": "home" + }, + { + "start": "th 06:30", + "end": "fr 06:30", + "preset": "asleep" + }, + { + "start": "th 08:00", + "end": "fr 08:00", + "preset": "home" + }, + { + "start": "th 08:15", + "end": "fr 08:15", + "preset": "asleep" + }, + { + "start": "th 09:30", + "end": "fr 09:30", + "preset": "home" + }, + { + "start": "th 09:45", + "end": "fr 09:45", + "preset": "asleep" + }, + { + "start": "th 11:00", + "end": "fr 11:00", + "preset": "home" + }, + { + "start": "th 11:15", + "end": "fr 11:15", + "preset": "asleep" + }, + { + "start": "th 12:45", + "end": "fr 12:45", + "preset": "home" + }, + { + "start": "th 13:00", + "end": "fr 13:00", + "preset": "asleep" + }, + { + "start": "th 14:30", + "end": "fr 14:30", + "preset": "home" + }, + { + "start": "th 14:45", + "end": "fr 14:45", + "preset": "asleep" + }, + { + "start": "th 16:00", + "end": "fr 16:00", + "preset": "home" + }, + { + "start": "th 16:15", + "end": "su 16:15", + "preset": "asleep" + }, + { + "start": "th 18:00", + "end": "fr 18:00", + "preset": "home" + }, + { + "start": "th 18:15", + "end": "fr 18:15", + "preset": "asleep" + }, + { + "start": "th 20:15", + "end": "fr 20:15", + "preset": "home" + }, + { + "start": "th 20:30", + "end": "fr 20:30", + "preset": "asleep" + }, + { + "start": "th 22:00", + "end": "fr 22:00", + "preset": "home" + }, + { + "start": "th 22:15", + "end": "fr 22:15", + "preset": "asleep" + }, + { + "start": "fr 00:00", + "end": "mo 00:00", + "preset": "home" + }, + { + "start": "fr 00:15", + "end": "su 00:15", + "preset": "asleep" + }, + { + "start": "fr 02:00", + "end": "su 02:00", + "preset": "home" + }, + { + "start": "fr 02:15", + "end": "su 02:15", + "preset": "asleep" + }, + { + "start": "fr 04:00", + "end": "su 04:00", + "preset": "home" + }, + { + "start": "fr 04:15", + "end": "su 04:15", + "preset": "asleep" + }, + { + "start": "fr 06:00", + "end": "th 06:00", + "preset": "home" + }, + { + "start": "fr 06:30", + "end": "su 06:30", + "preset": "asleep" + }, + { + "start": "fr 08:00", + "end": "su 08:00", + "preset": "home" + }, + { + "start": "fr 08:15", + "end": "su 08:15", + "preset": "asleep" + }, + { + "start": "fr 09:30", + "end": "su 09:30", + "preset": "home" + }, + { + "start": "fr 09:45", + "end": "su 09:45", + "preset": "asleep" + }, + { + "start": "fr 11:00", + "end": "su 11:00", + "preset": "home" + }, + { + "start": "fr 11:15", + "end": "su 11:15", + "preset": "asleep" + }, + { + "start": "fr 12:45", + "end": "su 12:45", + "preset": "home" + }, + { + "start": "fr 13:00", + "end": "su 13:00", + "preset": "asleep" + }, + { + "start": "fr 14:30", + "end": "su 14:30", + "preset": "home" + }, + { + "start": "fr 14:45", + "end": "su 14:45", + "preset": "asleep" + }, + { + "start": "fr 16:00", + "end": "su 16:00", + "preset": "home" + }, + { + "start": "fr 16:15", + "end": "th 16:15", + "preset": "asleep" + }, + { + "start": "fr 18:00", + "end": "su 18:00", + "preset": "home" + }, + { + "start": "fr 18:15", + "end": "su 18:15", + "preset": "asleep" + }, + { + "start": "fr 20:15", + "end": "su 20:15", + "preset": "home" + }, + { + "start": "fr 20:30", + "end": "su 20:30", + "preset": "asleep" + }, + { + "start": "fr 22:00", + "end": "su 22:00", + "preset": "home" + }, + { + "start": "fr 22:15", + "end": "su 22:15", + "preset": "asleep" + }, + { + "start": "sa 00:00", + "end": "sa 00:15", + "preset": "home" + }, + { + "start": "sa 00:15", + "end": "sa 02:00", + "preset": "asleep" + }, + { + "start": "sa 02:00", + "end": "sa 02:15", + "preset": "home" + }, + { + "start": "sa 02:15", + "end": "sa 04:00", + "preset": "asleep" + }, + { + "start": "sa 04:00", + "end": "sa 04:15", + "preset": "home" + }, + { + "start": "sa 04:15", + "end": "sa 06:00", + "preset": "asleep" + }, + { + "start": "sa 06:00", + "end": "sa 06:30", + "preset": "home" + }, + { + "start": "sa 06:30", + "end": "sa 08:00", + "preset": "asleep" + }, + { + "start": "sa 08:00", + "end": "sa 08:15", + "preset": "home" + }, + { + "start": "sa 08:15", + "end": "sa 09:30", + "preset": "asleep" + }, + { + "start": "sa 09:30", + "end": "sa 09:45", + "preset": "home" + }, + { + "start": "sa 09:45", + "end": "sa 11:00", + "preset": "asleep" + }, + { + "start": "sa 11:00", + "end": "sa 11:15", + "preset": "home" + }, + { + "start": "sa 11:15", + "end": "sa 12:45", + "preset": "asleep" + }, + { + "start": "sa 12:45", + "end": "sa 13:00", + "preset": "home" + }, + { + "start": "sa 13:00", + "end": "sa 14:30", + "preset": "asleep" + }, + { + "start": "sa 14:30", + "end": "sa 14:45", + "preset": "home" + }, + { + "start": "sa 14:45", + "end": "sa 16:00", + "preset": "asleep" + }, + { + "start": "sa 16:00", + "end": "sa 16:15", + "preset": "home" + }, + { + "start": "sa 16:15", + "end": "sa 18:00", + "preset": "asleep" + }, + { + "start": "sa 18:00", + "end": "sa 18:15", + "preset": "home" + }, + { + "start": "sa 18:15", + "end": "sa 20:15", + "preset": "asleep" + }, + { + "start": "sa 20:15", + "end": "sa 20:30", + "preset": "home" + }, + { + "start": "sa 20:30", + "end": "sa 22:00", + "preset": "asleep" + }, + { + "start": "sa 22:00", + "end": "sa 22:15", + "preset": "home" + }, + { + "start": "sa 22:15", + "end": "fr 00:00", + "preset": "asleep" + }, + { + "start": "su 00:00", + "end": "mo 00:15", + "preset": "home" + }, + { + "start": "su 00:15", + "end": "mo 02:00", + "preset": "asleep" + }, + { + "start": "su 02:00", + "end": "mo 02:15", + "preset": "home" + }, + { + "start": "su 02:15", + "end": "mo 04:00", + "preset": "asleep" + }, + { + "start": "su 04:00", + "end": "th 04:00", + "preset": "home" + }, + { + "start": "su 04:15", + "end": "th 04:15", + "preset": "asleep" + }, + { + "start": "su 06:00", + "end": "mo 06:30", + "preset": "home" + }, + { + "start": "su 06:30", + "end": "mo 08:00", + "preset": "asleep" + }, + { + "start": "su 08:00", + "end": "mo 08:15", + "preset": "home" + }, + { + "start": "su 08:15", + "end": "mo 09:30", + "preset": "asleep" + }, + { + "start": "su 09:30", + "end": "mo 09:45", + "preset": "home" + }, + { + "start": "su 09:45", + "end": "mo 11:00", + "preset": "asleep" + }, + { + "start": "su 11:00", + "end": "mo 11:15", + "preset": "home" + }, + { + "start": "su 11:15", + "end": "mo 12:45", + "preset": "asleep" + }, + { + "start": "su 12:45", + "end": "mo 13:00", + "preset": "home" + }, + { + "start": "su 13:00", + "end": "mo 14:30", + "preset": "asleep" + }, + { + "start": "su 14:30", + "end": "mo 14:45", + "preset": "home" + }, + { + "start": "su 14:45", + "end": "mo 16:00", + "preset": "asleep" + }, + { + "start": "su 16:00", + "end": "mo 16:15", + "preset": "home" + }, + { + "start": "su 16:15", + "end": "mo 18:00", + "preset": "asleep" + }, + { + "start": "su 18:00", + "end": "mo 18:15", + "preset": "home" + }, + { + "start": "su 18:15", + "end": "mo 20:15", + "preset": "asleep" + }, + { + "start": "su 20:15", + "end": "mo 20:30", + "preset": "home" + }, + { + "start": "su 20:30", + "end": "mo 22:00", + "preset": "asleep" + }, + { + "start": "su 22:00", + "end": "mo 22:15", + "preset": "home" + }, + { + "start": "su 22:15", + "end": "sa 00:00", + "preset": "asleep" + } + ] + } + } }, "bfb5ee0a88e14e5f97bfa725a760cc49": { "available": true, diff --git a/tests/data/anna/anna_p1.json b/tests/data/anna/anna_p1.json index 5b3b8a1fe..0febec043 100644 --- a/tests/data/anna/anna_p1.json +++ b/tests/data/anna/anna_p1.json @@ -115,7 +115,17 @@ "outdoor_temperature": 11.8 }, "vendor": "Plugwise", - "wifi_mac_address": "C4930002ABCE" + "wifi_mac_address": "C4930002ABCE", + "schedules": { + "898e6eaa068b44019ff9dc5c578881b2": { + "name": "Thermostat schedule", + "active": false, + "zones": [ + "5b13651d79c4454684fd268850b1bff8" + ], + "slots": [] + } + } }, "da7be222ab3b420c927f3e49fade0304": { "available": true, diff --git a/tests/data/anna/anna_v4.json b/tests/data/anna/anna_v4.json index 5e9b6ce2c..9f45cae70 100644 --- a/tests/data/anna/anna_v4.json +++ b/tests/data/anna/anna_v4.json @@ -87,7 +87,168 @@ "sensors": { "outdoor_temperature": 7.44 }, - "vendor": "Plugwise" + "vendor": "Plugwise", + "schedules": { + "51a1ee93578f426e9077933150816c9c": { + "name": "Standaard", + "active": true, + "zones": [], + "slots": [ + { + "start": "mo 06:15", + "end": "mo 07:30", + "preset": "home" + }, + { + "start": "mo 07:30", + "end": "mo 18:15", + "preset": "away" + }, + { + "start": "mo 18:15", + "end": "mo 22:30", + "preset": "home" + }, + { + "start": "mo 22:30", + "end": "tu 06:15", + "preset": "asleep" + }, + { + "start": "tu 06:15", + "end": "tu 07:30", + "preset": "home" + }, + { + "start": "tu 07:30", + "end": "tu 18:15", + "preset": "away" + }, + { + "start": "tu 18:15", + "end": "tu 22:30", + "preset": "home" + }, + { + "start": "tu 22:30", + "end": "we 06:15", + "preset": "asleep" + }, + { + "start": "we 06:15", + "end": "we 07:30", + "preset": "home" + }, + { + "start": "we 07:30", + "end": "we 18:15", + "preset": "away" + }, + { + "start": "we 18:15", + "end": "we 22:30", + "preset": "home" + }, + { + "start": "we 22:30", + "end": "th 06:15", + "preset": "asleep" + }, + { + "start": "th 06:15", + "end": "th 07:30", + "preset": "home" + }, + { + "start": "th 07:30", + "end": "th 18:15", + "preset": "away" + }, + { + "start": "th 18:15", + "end": "th 22:30", + "preset": "home" + }, + { + "start": "th 22:30", + "end": "fr 06:15", + "preset": "asleep" + }, + { + "start": "fr 06:15", + "end": "fr 07:30", + "preset": "home" + }, + { + "start": "fr 07:30", + "end": "fr 18:15", + "preset": "away" + }, + { + "start": "fr 18:15", + "end": "fr 23:00", + "preset": "home" + }, + { + "start": "fr 23:00", + "end": "sa 07:45", + "preset": "asleep" + }, + { + "start": "sa 07:45", + "end": "sa 23:00", + "preset": "home" + }, + { + "start": "sa 23:00", + "end": "su 10:00", + "preset": "asleep" + }, + { + "start": "su 10:00", + "end": "su 23:00", + "preset": "home" + }, + { + "start": "su 23:00", + "end": "mo 06:15", + "preset": "asleep" + } + ] + }, + "971128b62a0b4bd0880162ccdc4eb2c7": { + "name": "Thuiswerken", + "active": true, + "zones": [], + "slots": [ + { + "start": "mo 07:00", + "end": "we 07:00", + "preset": "home" + }, + { + "start": "tu 07:00", + "end": "fr 07:00", + "preset": "home" + }, + { + "start": "we 07:00", + "end": "tu 07:00", + "preset": "home" + }, + { + "start": "th 07:00", + "end": "mo 07:00", + "preset": "home" + }, + { + "start": "fr 07:00", + "end": "th 07:00", + "preset": "home" + } + ] + } + } }, "cd0e6156b1f04d5f952349ffbe397481": { "available": true, diff --git a/tests/data/anna/anna_v4_dhw.json b/tests/data/anna/anna_v4_dhw.json index efe242bb3..d3968694d 100644 --- a/tests/data/anna/anna_v4_dhw.json +++ b/tests/data/anna/anna_v4_dhw.json @@ -87,7 +87,168 @@ "sensors": { "outdoor_temperature": 7.44 }, - "vendor": "Plugwise" + "vendor": "Plugwise", + "schedules": { + "51a1ee93578f426e9077933150816c9c": { + "name": "Standaard", + "active": true, + "zones": [], + "slots": [ + { + "start": "mo 06:15", + "end": "mo 07:30", + "preset": "home" + }, + { + "start": "mo 07:30", + "end": "mo 18:15", + "preset": "away" + }, + { + "start": "mo 18:15", + "end": "mo 22:30", + "preset": "home" + }, + { + "start": "mo 22:30", + "end": "tu 06:15", + "preset": "asleep" + }, + { + "start": "tu 06:15", + "end": "tu 07:30", + "preset": "home" + }, + { + "start": "tu 07:30", + "end": "tu 18:15", + "preset": "away" + }, + { + "start": "tu 18:15", + "end": "tu 22:30", + "preset": "home" + }, + { + "start": "tu 22:30", + "end": "we 06:15", + "preset": "asleep" + }, + { + "start": "we 06:15", + "end": "we 07:30", + "preset": "home" + }, + { + "start": "we 07:30", + "end": "we 18:15", + "preset": "away" + }, + { + "start": "we 18:15", + "end": "we 22:30", + "preset": "home" + }, + { + "start": "we 22:30", + "end": "th 06:15", + "preset": "asleep" + }, + { + "start": "th 06:15", + "end": "th 07:30", + "preset": "home" + }, + { + "start": "th 07:30", + "end": "th 18:15", + "preset": "away" + }, + { + "start": "th 18:15", + "end": "th 22:30", + "preset": "home" + }, + { + "start": "th 22:30", + "end": "fr 06:15", + "preset": "asleep" + }, + { + "start": "fr 06:15", + "end": "fr 07:30", + "preset": "home" + }, + { + "start": "fr 07:30", + "end": "fr 18:15", + "preset": "away" + }, + { + "start": "fr 18:15", + "end": "fr 23:00", + "preset": "home" + }, + { + "start": "fr 23:00", + "end": "sa 07:45", + "preset": "asleep" + }, + { + "start": "sa 07:45", + "end": "sa 23:00", + "preset": "home" + }, + { + "start": "sa 23:00", + "end": "su 10:00", + "preset": "asleep" + }, + { + "start": "su 10:00", + "end": "su 23:00", + "preset": "home" + }, + { + "start": "su 23:00", + "end": "mo 06:15", + "preset": "asleep" + } + ] + }, + "971128b62a0b4bd0880162ccdc4eb2c7": { + "name": "Thuiswerken", + "active": true, + "zones": [], + "slots": [ + { + "start": "mo 07:00", + "end": "we 07:00", + "preset": "home" + }, + { + "start": "tu 07:00", + "end": "fr 07:00", + "preset": "home" + }, + { + "start": "we 07:00", + "end": "tu 07:00", + "preset": "home" + }, + { + "start": "th 07:00", + "end": "mo 07:00", + "preset": "home" + }, + { + "start": "fr 07:00", + "end": "th 07:00", + "preset": "home" + } + ] + } + } }, "cd0e6156b1f04d5f952349ffbe397481": { "available": true, diff --git a/tests/data/anna/anna_v4_no_modules.json b/tests/data/anna/anna_v4_no_modules.json index c8875bed4..99109528d 100644 --- a/tests/data/anna/anna_v4_no_modules.json +++ b/tests/data/anna/anna_v4_no_modules.json @@ -15,6 +15,167 @@ "sensors": { "outdoor_temperature": 7.44 }, - "vendor": "Plugwise" + "vendor": "Plugwise", + "schedules": { + "51a1ee93578f426e9077933150816c9c": { + "name": "Standaard", + "active": true, + "zones": [], + "slots": [ + { + "start": "mo 06:15", + "end": "mo 07:30", + "preset": "home" + }, + { + "start": "mo 07:30", + "end": "mo 18:15", + "preset": "away" + }, + { + "start": "mo 18:15", + "end": "mo 22:30", + "preset": "home" + }, + { + "start": "mo 22:30", + "end": "tu 06:15", + "preset": "asleep" + }, + { + "start": "tu 06:15", + "end": "tu 07:30", + "preset": "home" + }, + { + "start": "tu 07:30", + "end": "tu 18:15", + "preset": "away" + }, + { + "start": "tu 18:15", + "end": "tu 22:30", + "preset": "home" + }, + { + "start": "tu 22:30", + "end": "we 06:15", + "preset": "asleep" + }, + { + "start": "we 06:15", + "end": "we 07:30", + "preset": "home" + }, + { + "start": "we 07:30", + "end": "we 18:15", + "preset": "away" + }, + { + "start": "we 18:15", + "end": "we 22:30", + "preset": "home" + }, + { + "start": "we 22:30", + "end": "th 06:15", + "preset": "asleep" + }, + { + "start": "th 06:15", + "end": "th 07:30", + "preset": "home" + }, + { + "start": "th 07:30", + "end": "th 18:15", + "preset": "away" + }, + { + "start": "th 18:15", + "end": "th 22:30", + "preset": "home" + }, + { + "start": "th 22:30", + "end": "fr 06:15", + "preset": "asleep" + }, + { + "start": "fr 06:15", + "end": "fr 07:30", + "preset": "home" + }, + { + "start": "fr 07:30", + "end": "fr 18:15", + "preset": "away" + }, + { + "start": "fr 18:15", + "end": "fr 23:00", + "preset": "home" + }, + { + "start": "fr 23:00", + "end": "sa 07:45", + "preset": "asleep" + }, + { + "start": "sa 07:45", + "end": "sa 23:00", + "preset": "home" + }, + { + "start": "sa 23:00", + "end": "su 10:00", + "preset": "asleep" + }, + { + "start": "su 10:00", + "end": "su 23:00", + "preset": "home" + }, + { + "start": "su 23:00", + "end": "mo 06:15", + "preset": "asleep" + } + ] + }, + "971128b62a0b4bd0880162ccdc4eb2c7": { + "name": "Thuiswerken", + "active": true, + "zones": [], + "slots": [ + { + "start": "mo 07:00", + "end": "we 07:00", + "preset": "home" + }, + { + "start": "tu 07:00", + "end": "fr 07:00", + "preset": "home" + }, + { + "start": "we 07:00", + "end": "tu 07:00", + "preset": "home" + }, + { + "start": "th 07:00", + "end": "mo 07:00", + "preset": "home" + }, + { + "start": "fr 07:00", + "end": "th 07:00", + "preset": "home" + } + ] + } + } } } diff --git a/tests/data/anna/anna_v4_no_tag.json b/tests/data/anna/anna_v4_no_tag.json index ae7962e21..d1b377fec 100644 --- a/tests/data/anna/anna_v4_no_tag.json +++ b/tests/data/anna/anna_v4_no_tag.json @@ -87,7 +87,170 @@ "sensors": { "outdoor_temperature": 7.44 }, - "vendor": "Plugwise" + "vendor": "Plugwise", + "schedules": { + "51a1ee93578f426e9077933150816c9c": { + "name": "Standaard", + "active": true, + "zones": [], + "slots": [ + { + "start": "mo 06:15", + "end": "mo 07:30", + "preset": "home" + }, + { + "start": "mo 07:30", + "end": "mo 18:15", + "preset": "away" + }, + { + "start": "mo 18:15", + "end": "mo 22:30", + "preset": "home" + }, + { + "start": "mo 22:30", + "end": "tu 06:15", + "preset": "asleep" + }, + { + "start": "tu 06:15", + "end": "tu 07:30", + "preset": "home" + }, + { + "start": "tu 07:30", + "end": "tu 18:15", + "preset": "away" + }, + { + "start": "tu 18:15", + "end": "tu 22:30", + "preset": "home" + }, + { + "start": "tu 22:30", + "end": "we 06:15", + "preset": "asleep" + }, + { + "start": "we 06:15", + "end": "we 07:30", + "preset": "home" + }, + { + "start": "we 07:30", + "end": "we 18:15", + "preset": "away" + }, + { + "start": "we 18:15", + "end": "we 22:30", + "preset": "home" + }, + { + "start": "we 22:30", + "end": "th 06:15", + "preset": "asleep" + }, + { + "start": "th 06:15", + "end": "th 07:30", + "preset": "home" + }, + { + "start": "th 07:30", + "end": "th 18:15", + "preset": "away" + }, + { + "start": "th 18:15", + "end": "th 22:30", + "preset": "home" + }, + { + "start": "th 22:30", + "end": "fr 06:15", + "preset": "asleep" + }, + { + "start": "fr 06:15", + "end": "fr 07:30", + "preset": "home" + }, + { + "start": "fr 07:30", + "end": "fr 18:15", + "preset": "away" + }, + { + "start": "fr 18:15", + "end": "fr 23:00", + "preset": "home" + }, + { + "start": "fr 23:00", + "end": "sa 07:45", + "preset": "asleep" + }, + { + "start": "sa 07:45", + "end": "sa 23:00", + "preset": "home" + }, + { + "start": "sa 23:00", + "end": "su 10:00", + "preset": "asleep" + }, + { + "start": "su 10:00", + "end": "su 23:00", + "preset": "home" + }, + { + "start": "su 23:00", + "end": "mo 06:15", + "preset": "asleep" + } + ] + }, + "971128b62a0b4bd0880162ccdc4eb2c7": { + "name": "Thuiswerken", + "active": true, + "zones": [ + "eb5309212bf5407bb143e5bfa3b18aee" + ], + "slots": [ + { + "start": "mo 07:00", + "end": "we 07:00", + "preset": "home" + }, + { + "start": "tu 07:00", + "end": "fr 07:00", + "preset": "home" + }, + { + "start": "we 07:00", + "end": "tu 07:00", + "preset": "home" + }, + { + "start": "th 07:00", + "end": "mo 07:00", + "preset": "home" + }, + { + "start": "fr 07:00", + "end": "th 07:00", + "preset": "home" + } + ] + } + } }, "cd0e6156b1f04d5f952349ffbe397481": { "available": true, diff --git a/tests/data/anna/anna_without_boiler_fw441.json b/tests/data/anna/anna_without_boiler_fw441.json index 291df63f1..2017bec3d 100644 --- a/tests/data/anna/anna_without_boiler_fw441.json +++ b/tests/data/anna/anna_without_boiler_fw441.json @@ -88,7 +88,155 @@ "outdoor_temperature": 8.31 }, "vendor": "Plugwise", - "wifi_mac_address": "D40FB200FA1D" + "wifi_mac_address": "D40FB200FA1D", + "schedules": { + "d28edc40489b436e80888fa1490c77a5": { + "name": "Test", + "active": true, + "zones": [], + "slots": [ + { + "start": "mo 02:00", + "end": "tu 01:45", + "preset": "home" + }, + { + "start": "tu 01:45", + "end": "mo 02:00", + "preset": "home" + } + ] + }, + "a36b5218575a42809dc3748377d160f9": { + "name": "Normaal", + "active": true, + "zones": [ + "c34c6864216446528e95d88985e714cc" + ], + "slots": [ + { + "start": "mo 06:30", + "end": "mo 09:00", + "setpoint": 18.0 + }, + { + "start": "mo 09:00", + "end": "mo 17:00", + "preset": "home" + }, + { + "start": "mo 17:00", + "end": "mo 21:00", + "preset": "home" + }, + { + "start": "mo 21:00", + "end": "tu 06:30", + "preset": "asleep" + }, + { + "start": "tu 06:30", + "end": "tu 08:00", + "setpoint": 18.0 + }, + { + "start": "tu 08:00", + "end": "tu 17:00", + "preset": "away" + }, + { + "start": "tu 17:00", + "end": "tu 21:00", + "preset": "home" + }, + { + "start": "tu 21:00", + "end": "we 06:30", + "preset": "asleep" + }, + { + "start": "we 06:30", + "end": "we 08:00", + "setpoint": 18.0 + }, + { + "start": "we 08:00", + "end": "we 17:00", + "preset": "away" + }, + { + "start": "we 17:00", + "end": "we 21:00", + "preset": "home" + }, + { + "start": "we 21:00", + "end": "th 06:30", + "preset": "asleep" + }, + { + "start": "th 06:30", + "end": "th 08:00", + "setpoint": 18.0 + }, + { + "start": "th 08:00", + "end": "th 17:00", + "preset": "away" + }, + { + "start": "th 17:00", + "end": "th 21:00", + "preset": "home" + }, + { + "start": "th 21:00", + "end": "fr 06:30", + "preset": "asleep" + }, + { + "start": "fr 06:30", + "end": "fr 08:00", + "setpoint": 18.0 + }, + { + "start": "fr 08:00", + "end": "fr 17:00", + "preset": "away" + }, + { + "start": "fr 17:00", + "end": "fr 21:00", + "preset": "home" + }, + { + "start": "fr 21:00", + "end": "sa 09:00", + "preset": "asleep" + }, + { + "start": "sa 09:00", + "end": "sa 21:00", + "preset": "home" + }, + { + "start": "sa 21:00", + "end": "su 09:00", + "preset": "asleep" + }, + { + "start": "su 09:00", + "end": "su 21:00", + "preset": "home" + }, + { + "start": "su 21:00", + "end": "mo 06:30", + "preset": "asleep" + } + ] + } + } }, "c46b4794d28149699eacf053deedd003": { "binary_sensors": { diff --git a/tests/test_adam.py b/tests/test_adam.py index d3c630991..6ba7aaea0 100644 --- a/tests/test_adam.py +++ b/tests/test_adam.py @@ -50,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 == 275 + assert self.entity_items == 279 assert test_items == self.entity_items assert self.entity_list == [ "da224107914542988a88561b4452b0f6", @@ -96,6 +96,60 @@ async def test_connect_adam_plus_anna_new(self): assert bathroom["home"] == [18.0, 22.0] bathroom_rule.append(template) + # pylint: disable-next=protected-access + gateway = api._smile_api.gw_entities["da224107914542988a88561b4452b0f6"] + schedule = gateway["schedules"]["24df4dace79a4c42a0f4750ce65d84cb"] + assert schedule["name"] == "Weekschema" + assert schedule["zones"] == ["f2bf9048bef64cc5b6d5110154e33c81"] + assert {"start": "su 21:30", "end": "mo 07:15", "preset": "asleep"} in schedule[ + "slots" + ] + assert {"start": "mo 07:15", "end": "mo 16:30", "setpoint": 18.5} in schedule[ + "slots" + ] + # Attributes the schedule template allows beyond time are kept as they are + # pylint: disable-next=protected-access + tree = api._smile_api._domain_objects + tree.find('rule[@id="24df4dace79a4c42a0f4750ce65d84cb"]/directives/when').set( + "presence", "true" + ) + # pylint: disable-next=protected-access + slots = api._smile_api._schedule_rules()["24df4dace79a4c42a0f4750ce65d84cb"][ + "slots" + ] + assert { + "start": "tu 21:30", + "end": "we 07:15", + "presence": "true", + "preset": "asleep", + } in slots + # Slots run in week order, Monday first, whatever the gateway's order + assert slots[0]["start"] == "mo 07:15" + assert slots[-1]["start"] == "su 21:30" + # A slot without a readable start goes last + first_when = tree.find( + 'rule[@id="24df4dace79a4c42a0f4750ce65d84cb"]/directives/when' + ) + first_when.set("time", "tu 21:30:00") + # pylint: disable-next=protected-access + slots = api._smile_api._schedule_rules()["24df4dace79a4c42a0f4750ce65d84cb"][ + "slots" + ] + assert slots[-1]["time"] == "tu 21:30:00" + first_when.set("time", "[tu 21:30,we 07:15)") + # A setpoint that is not a number is kept as text + setpoint_then = tree.find( + 'rule[@id="24df4dace79a4c42a0f4750ce65d84cb"]/directives/when/then[@setpoint]' + ) + original_setpoint = setpoint_then.get("setpoint") + setpoint_then.set("setpoint", "warm") + # pylint: disable-next=protected-access + slots = api._smile_api._schedule_rules()["24df4dace79a4c42a0f4750ce65d84cb"][ + "slots" + ] + assert "warm" in [slot.get("setpoint") for slot in slots] + setpoint_then.set("setpoint", original_setpoint) + assert await self.tinker_preset_temperature( api, "f2bf9048bef64cc5b6d5110154e33c81" ) @@ -359,7 +413,7 @@ async def test_connect_adam_zone_per_device(self): test_items = await self.device_test(api, "2022-05-16 00:00:01", testdata) assert api.gateway_id == "fe799307f1624099878210aa0b9f1475" - assert self.entity_items == 486 + assert self.entity_items == 491 assert test_items == self.entity_items assert "af82e4ccf9c548528166d38e560662a4" in self.notifications @@ -433,7 +487,7 @@ async def test_connect_adam_multiple_devices_per_zone(self): ) test_items = await self.device_test(api, "2022-05-16 00:00:01", testdata) - assert self.entity_items == 494 + assert self.entity_items == 499 assert test_items == self.entity_items assert "af82e4ccf9c548528166d38e560662a4" in self.notifications @@ -470,7 +524,7 @@ async def test_adam_heatpump_cooling(self): server, api, client = await self.connect_wrapper() test_items = await self.device_test(api, "2022-01-02 00:00:01", testdata) - assert self.entity_items == 763 + assert self.entity_items == 766 assert test_items == self.entity_items assert self.cooling_present assert self._cooling_enabled @@ -514,7 +568,7 @@ async def test_connect_adam_onoff_cooling_fake_firmware(self): ) test_items = await self.device_test(api, "2022-01-02 00:00:01", testdata) - assert self.entity_items == 99 + assert self.entity_items == 102 assert test_items == self.entity_items assert self.cooling_present # assert self._cooling_enabled - no cooling_enabled indication present @@ -539,7 +593,7 @@ async def test_connect_adam_plus_anna(self): test_items = await self.device_test(api, "2020-03-22 00:00:01", testdata) assert api.gateway_id == "b128b4bbbd1f47e9bf4d756e8fb5ee94" - assert self.entity_items == 105 + assert self.entity_items == 106 assert test_items == self.entity_items assert "6fb89e35caeb4b1cb275184895202d84" in self.notifications diff --git a/tests/test_anna.py b/tests/test_anna.py index eda6b8ff6..50f6b7997 100644 --- a/tests/test_anna.py +++ b/tests/test_anna.py @@ -31,7 +31,7 @@ async def test_connect_anna_v4(self): await self.device_test(api, "2020-04-05 00:00:01", testdata) assert api.gateway_id == "0466eae8520144c78afb29628384edeb" - assert self.entity_items == 84 + assert self.entity_items == 86 assert not self.notifications assert not self.cooling_present @@ -103,7 +103,7 @@ async def test_connect_anna_v4_dhw(self): ) await self.device_test(api, "2020-04-05 00:00:01", testdata) - assert self.entity_items == 84 + assert self.entity_items == 86 assert not self.notifications result = await self.tinker_thermostat( @@ -132,7 +132,7 @@ async def test_connect_anna_v4_no_tag(self): ) await self.device_test(api, "2020-04-05 00:00:01", testdata) - assert self.entity_items == 84 + assert self.entity_items == 86 result = await self.tinker_thermostat( api, @@ -160,7 +160,7 @@ async def test_connect_anna_without_boiler_fw441(self): ) await self.device_test(api, "2022-05-16 00:00:01", testdata) - assert self.entity_items == 62 + assert self.entity_items == 64 assert not self.notifications result = await self.tinker_thermostat( @@ -188,7 +188,7 @@ async def test_connect_anna_heatpump_heating(self): await self.device_test(api, "2020-04-12 00:00:01", testdata) assert api.gateway_id == "015ae9ea3f964e668e490fa39da3870b" - assert self.entity_items == 98 + assert self.entity_items == 99 assert not self.notifications assert self.cooling_present assert not self._cooling_enabled @@ -218,7 +218,7 @@ async def test_connect_anna_heatpump_heating(self): await self.device_test( api, "2020-04-13 00:00:01", testdata_updated, initialize=False ) - assert self.entity_items == 94 + assert self.entity_items == 95 await api.close_connection() await self.disconnect(server, client) @@ -243,7 +243,7 @@ async def test_connect_anna_heatpump_cooling(self): ) await self.device_test(api, "2020-04-19 00:00:01", testdata) - assert self.entity_items == 94 + assert self.entity_items == 95 assert self.cooling_present assert not self.notifications @@ -289,7 +289,7 @@ async def test_connect_anna_heatpump_cooling_fake_firmware(self): ) await self.device_test(api, "2020-04-19 00:00:01", testdata) - assert self.entity_items == 94 + assert self.entity_items == 95 assert self.cooling_present assert self._cooling_enabled assert self._cooling_active @@ -315,7 +315,7 @@ async def test_connect_anna_elga_no_cooling(self): await self.device_test(api, "2020-04-12 00:00:01", testdata) assert api.gateway_id == "015ae9ea3f964e668e490fa39da3870b" - assert self.entity_items == 89 + assert self.entity_items == 90 assert not self.notifications assert not self.cooling_present @@ -338,7 +338,7 @@ async def test_connect_anna_elga_2(self): ) await self.device_test(api, "2022-03-13 00:00:01", testdata) - assert self.entity_items == 89 + assert self.entity_items == 90 assert api.gateway_id == "fb49af122f6e4b0f91267e1cf7666d6f" assert self.cooling_present assert not self._cooling_enabled @@ -358,7 +358,7 @@ async def test_connect_anna_elga_2_schedule_off(self): await self.device_test(api, "2022-03-13 00:00:01", testdata) assert not self._cooling_enabled - assert self.entity_items == 93 + assert self.entity_items == 94 result = await self.tinker_thermostat( api, @@ -389,7 +389,7 @@ async def test_connect_anna_elga_2_cooling(self): ) await self.device_test(api, "2022-03-10 00:00:01", testdata) - assert self.entity_items == 93 + assert self.entity_items == 94 assert not self.notifications assert self.cooling_present @@ -442,7 +442,7 @@ async def test_connect_anna_loria_heating_idle(self): ) await self.device_test(api, "2022-05-16 00:00:01", testdata) - assert self.entity_items == 95 + assert self.entity_items == 97 assert self.cooling_present assert not self._cooling_enabled @@ -511,7 +511,7 @@ async def test_connect_anna_loria_cooling_active(self): ) await self.device_test(api, "2022-05-16 00:00:01", testdata) - assert self.entity_items == 95 + assert self.entity_items == 97 assert self.cooling_present assert self._cooling_enabled @@ -573,7 +573,7 @@ async def test_connect_anna_loria_driessens(self): ) await self.device_test(api, "2022-05-16 00:00:01", testdata) - assert self.entity_items == 96 + assert self.entity_items == 100 assert self.cooling_present assert not self._cooling_enabled @@ -596,7 +596,7 @@ async def test_connect_anna_p1(self): ) await self.device_test(api, "2025-11-02 00:00:01", testdata) - assert self.entity_items == 99 + assert self.entity_items == 100 await api.close_connection() await self.disconnect(server, client) @@ -617,7 +617,7 @@ async def test_connect_anna_v4_no_modules(self): ) await self.device_test(api, "2022-05-16 00:00:01", testdata) - assert self.entity_items == 12 + assert self.entity_items == 14 await api.close_connection() await self.disconnect(server, client) diff --git a/tests/test_init.py b/tests/test_init.py index 9b2de8847..803e2553d 100644 --- a/tests/test_init.py +++ b/tests/test_init.py @@ -508,6 +508,7 @@ def test_and_assert(test_dict, data, header): "away_preset_temperature", "vacation_preset_temperature", "no_frost_preset_temperature", + "schedules", ] for testitem, measurements in test_dict.items(): item_asserts = 0 From caaecc37fb1185ab02b67d83e377f465766b7878 Mon Sep 17 00:00:00 2001 From: Mart van Male Date: Sat, 31 Oct 2026 10:08:25 +0100 Subject: [PATCH 2/7] Add schedule writes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add set_schedule, create_schedule and delete_schedule. Each slot needs a day and time for its start and end, and at least one setting with valid keys. Setpoints must lie between 4 and 30 °C, with the heating setpoint no higher than the cooling setpoint. A schedule needs at least one slot. A name must be unused, cannot be "off" and cannot contain '"' or "]]>". A renamed schedule can be switched on by its new name. Legacy gateways raise PlugwiseError for all three. --- CHANGELOG.md | 1 + plugwise/__init__.py | 28 ++++++++ plugwise/constants.py | 3 + plugwise/legacy/smile.py | 17 +++++ plugwise/smile.py | 147 +++++++++++++++++++++++++++++++++++++- tests/test_adam.py | 35 +++++++++ tests/test_init.py | 57 +++++++++++++++ tests/test_legacy_anna.py | 12 +++- 8 files changed, 298 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 07f9e9620..02271ce75 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ## Ongoing +- Add `set_schedule`, `create_schedule` and `delete_schedule` to change, rename, add and remove weekly schedules. A new schedule is inactive and attached to no zone. - Add the weekly schedules, with their name, zones and time slots, to the gateway data. The slots are listed in week order, starting on Monday. ## v1.16.0 diff --git a/plugwise/__init__.py b/plugwise/__init__.py index feb0b39d2..a5886a770 100644 --- a/plugwise/__init__.py +++ b/plugwise/__init__.py @@ -22,6 +22,7 @@ STATUS, SYSTEM, GwEntityData, + ScheduleSlot, ThermoLoc, ) from plugwise.exceptions import ( @@ -390,6 +391,33 @@ async def set_schedule_state( f"Failed to set schedule state: {str(exc)}" ) from exc # pragma no cover + async def set_schedule( + self, rule_id: str, slots: list[ScheduleSlot], name: str | None = None + ) -> None: + """Replace the time slots of a schedule, and rename it when a name is given.""" + try: + await self._smile_api.set_schedule(rule_id, slots, name=name) + except ConnectionFailedError as exc: + raise ConnectionFailedError(f"Failed to set schedule: {str(exc)}") from exc + + async def create_schedule(self, name: str, slots: list[ScheduleSlot]) -> None: + """Create a schedule; the gateway adds it inactive and attached to no zone.""" + try: + await self._smile_api.create_schedule(name, slots) + except ConnectionFailedError as exc: + raise ConnectionFailedError( + f"Failed to create schedule: {str(exc)}" + ) from exc + + async def delete_schedule(self, rule_id: str) -> None: + """Delete a schedule from the gateway.""" + try: + await self._smile_api.delete_schedule(rule_id) + except ConnectionFailedError as exc: + raise ConnectionFailedError( + f"Failed to delete schedule: {str(exc)}" + ) from exc + async def set_preset(self, loc_id: str, preset: str) -> None: """Set the given Preset on the relevant Thermostat.""" try: diff --git a/plugwise/constants.py b/plugwise/constants.py index a7e0a9225..c71820155 100644 --- a/plugwise/constants.py +++ b/plugwise/constants.py @@ -561,6 +561,9 @@ class ActuatorData(TypedDict, total=False): SCHEDULE_PERIOD: Final = re.compile(r"\[(\w\w \d\d:\d\d),(\w\w \d\d:\d\d)\)") SCHEDULE_NUMBERS: Final = ("setpoint", "heating_setpoint", "cooling_setpoint") SCHEDULE_DAYS: Final = ("mo", "tu", "we", "th", "fr", "sa", "su") +SCHEDULE_POINT: Final = re.compile(r"(mo|tu|we|th|fr|sa|su) ([01]\d|2[0-3]):[0-5]\d") +# Slot keys that belong on ; all others go on +SCHEDULE_WHEN_KEYS: Final = ("presence",) type ScheduleSlot = dict[str, str | float] diff --git a/plugwise/legacy/smile.py b/plugwise/legacy/smile.py index 841d95fb9..85285b3b8 100644 --- a/plugwise/legacy/smile.py +++ b/plugwise/legacy/smile.py @@ -21,6 +21,7 @@ STATE_OFF, STATE_ON, GwEntityData, + ScheduleSlot, ThermoLoc, ) from plugwise.exceptions import ConnectionFailedError, DataMissingError, PlugwiseError @@ -28,6 +29,8 @@ from munch import Munch +NO_SCHEDULE_WRITES = "Plugwise: schedules cannot be changed on this gateway. Change them in the Plugwise app." + class SmileLegacyAPI(SmileLegacyData): """The Plugwise SmileLegacyAPI helper class for actual Plugwise legacy devices.""" @@ -155,6 +158,20 @@ async def set_number( async def set_offset(self, dev_id: str, offset: float) -> None: """Set-function placeholder for legacy devices.""" + async def set_schedule( + self, rule_id: str, slots: list[ScheduleSlot], name: str | None = None + ) -> None: + """Raise an error, since legacy gateways keep schedules in a format this library does not write.""" + raise PlugwiseError(NO_SCHEDULE_WRITES) + + async def create_schedule(self, name: str, slots: list[ScheduleSlot]) -> None: + """Raise an error, since legacy gateways keep schedules in a format this library does not write.""" + raise PlugwiseError(NO_SCHEDULE_WRITES) + + async def delete_schedule(self, rule_id: str) -> None: + """Raise an error, since legacy gateways keep schedules in a format this library does not write.""" + raise PlugwiseError(NO_SCHEDULE_WRITES) + async def set_preset(self, _: str, preset: str) -> None: """Set the given Preset on the relevant Thermostat - from DOMAIN_OBJECTS.""" if not (presets := self._presets()): diff --git a/plugwise/smile.py b/plugwise/smile.py index 3337b0602..1e9cc48e1 100644 --- a/plugwise/smile.py +++ b/plugwise/smile.py @@ -8,6 +8,7 @@ import asyncio from collections.abc import Awaitable, Callable import datetime as dt +import re from typing import Any, cast from xml.sax.saxutils import quoteattr @@ -26,9 +27,14 @@ PRESET_SETPOINT_ATTRIBUTES, PRESET_TEMPERATURES, RULES, + SCHEDULE_NUMBERS, + SCHEDULE_POINT, + SCHEDULE_TAG, + SCHEDULE_WHEN_KEYS, STATE_OFF, STATE_ON, GwEntityData, + ScheduleSlot, SwitchType, ThermoLoc, ) @@ -46,6 +52,16 @@ def _xml_attrs(attrs: dict[str, str]) -> str: return " ".join(f"{key}={quoteattr(value)}" for key, value in attrs.items()) +def _in_range(value: object) -> bool: + """Return whether a schedule value is a number in the setpoint range.""" + if not isinstance(value, str | int | float): + return False + try: + return MIN_SETPOINT <= float(value) <= MAX_SETPOINT + except ValueError: + return False + + def model_to_switch_items(model: str, state: str, switch: Munch) -> tuple[str, Munch]: """Translate state and switch attributes based on model name. @@ -66,6 +82,10 @@ def model_to_switch_items(model: str, state: str, switch: Munch) -> tuple[str, M return state, switch +XML_NAME = re.compile(r"[A-Za-z_][\w.-]*") +RULE_ID = re.compile(r"[0-9a-f]{32}") + + class SmileAPI(SmileData): """The Plugwise SmileAPI helper class for actual Plugwise devices.""" @@ -303,6 +323,131 @@ async def set_preset_temperature( for then in self._domain_objects.findall(locator): then.set(attribute, value) + async def set_schedule( + self, rule_id: str, slots: list[ScheduleSlot], name: str | None = None + ) -> None: + """Replace the time slots of a schedule, and rename it when a name is given.""" + rule = self._schedule_rule(rule_id) + directives = self._schedule_directives(slots) + new_name = ( + f"{self._schedule_name(name, rule_id)}" + if name is not None + else "" + ) + data = f"{new_name}{directives}" + await self.call_request(f"{RULES};id={rule_id}", method="put", data=data) + if (old_directives := rule.find("directives")) is not None: + rule.remove(old_directives) + rule.append(etree.fromstring(directives)) + if name is not None and (rule_name := rule.find("name")) is not None: + rule_name.text = name + + async def create_schedule(self, name: str, slots: list[ScheduleSlot]) -> None: + """Create a schedule; the gateway adds it inactive and attached to no zone.""" + directives = self._schedule_directives(slots) + data = ( + "" + f"{self._schedule_name(name)}" + f'