From 0c5dc9f8c3c0bef05c3abeea52c5b370e6c43c8c Mon Sep 17 00:00:00 2001 From: David Bonnes Date: Wed, 28 Aug 2024 11:13:26 +0100 Subject: [PATCH 01/11] small tweaks to evo1.Broker --- src/evohomeasync/broker.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/evohomeasync/broker.py b/src/evohomeasync/broker.py index 8e6fbfc..1ce0da3 100644 --- a/src/evohomeasync/broker.py +++ b/src/evohomeasync/broker.py @@ -4,7 +4,6 @@ from __future__ import annotations import logging -from datetime import datetime as dt from http import HTTPMethod, HTTPStatus from typing import Any, Final, Never, NewType @@ -94,12 +93,11 @@ async def _populate_user_data(self) -> tuple[_UserDataT, aiohttp.ClientResponse] self._user_data: _UserDataT = await response.json() assert self._user_data != {} - user_id: _UserIdT = self._user_data[SZ_USER_INFO][SZ_USER_ID] # type: ignore[assignment,index] + user_id: _UserIdT = self._user_data[SZ_USER_INFO][SZ_USER_ID] # type: ignore[assignment, index] session_id: _SessionIdT = self._user_data[SZ_SESSION_ID] # type: ignore[assignment, index] self._user_id = user_id self._session_id = self._headers[SZ_SESSION_ID] = session_id - self._session_renewed = dt.now() self._logger.info(f"user_data = {self._user_data}") return self._user_data, response # type: ignore[return-value] @@ -156,6 +154,7 @@ async def _make_request( if response_json[0]["code"] != "Unauthorized": return response + # NOTE: I cannot recall if this is needed, or if it causes a bug # if SZ_SESSION_ID not in self._headers: # no value trying to re-authenticate # return response # ...because: the user credentials must be invalid From 3c1881794dca9f68094be6921aa3895fda744a2f Mon Sep 17 00:00:00 2001 From: David Bonnes Date: Wed, 28 Aug 2024 19:42:49 +0100 Subject: [PATCH 02/11] bugfix DHW attr --- src/evohomeasync2/hotwater.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/evohomeasync2/hotwater.py b/src/evohomeasync2/hotwater.py index 9c897ca..8ea2180 100644 --- a/src/evohomeasync2/hotwater.py +++ b/src/evohomeasync2/hotwater.py @@ -91,7 +91,7 @@ def scheduleCapabilitiesResponse(self) -> _EvoDictT: @property # for convenience (is not a top-level config attribute) def allowedModes(self) -> _EvoListT: - ret: _EvoListT = self.scheduleCapabilitiesResponse[SZ_ALLOWED_MODES] + ret: _EvoListT = self.dhwStateCapabilitiesResponse[SZ_ALLOWED_MODES] return ret @property From 965baa3b095a615596a5b586283e42489ac661d4 Mon Sep 17 00:00:00 2001 From: David Bonnes Date: Wed, 28 Aug 2024 19:43:25 +0100 Subject: [PATCH 03/11] new snapshots --- .../default/control_system.yml | 42 +++ .../test_system_snapshot/default/default | 1 - .../test_system_snapshot/default/gateway.yml | 4 + .../default/hot_water.yml | 28 ++ .../test_system_snapshot/default/location.yml | 16 + .../test_system_snapshot/default/zones.yml | 323 +++++++++++++++++ .../hass_118169/control_system.yml | 42 +++ .../hass_118169/gateway.yml | 4 + .../hass_118169/hass_118169 | 1 - .../hass_118169/hot_water.yml | 28 ++ .../hass_118169/location.yml | 16 + .../hass_118169/zones.yml | 323 +++++++++++++++++ .../system_002/control_system.yml | 42 +++ .../system_002/gateway.yml | 4 + .../system_002/hot_water.yml | 29 ++ .../system_002/location.yml | 16 + .../system_002/system_002 | 1 - .../test_system_snapshot/system_002/zones.yml | 324 ++++++++++++++++++ .../system_004/control_system.yml | 27 ++ .../system_004/gateway.yml | 4 + .../system_004/hot_water.yml | 1 + .../system_004/location.yml | 17 + .../system_004/system_004 | 1 - .../test_system_snapshot/system_004/zones.yml | 72 ++++ .../system_006/control_system.yml | 42 +++ .../system_006/gateway.yml | 4 + .../system_006/hot_water.yml | 28 ++ .../system_006/location.yml | 16 + .../system_006/system_006 | 1 - .../test_system_snapshot/system_006/zones.yml | 323 +++++++++++++++++ 30 files changed, 1775 insertions(+), 5 deletions(-) create mode 100644 tests/tests/snapshots/test_installs/test_system_snapshot/default/control_system.yml delete mode 100644 tests/tests/snapshots/test_installs/test_system_snapshot/default/default create mode 100644 tests/tests/snapshots/test_installs/test_system_snapshot/default/gateway.yml create mode 100644 tests/tests/snapshots/test_installs/test_system_snapshot/default/hot_water.yml create mode 100644 tests/tests/snapshots/test_installs/test_system_snapshot/default/location.yml create mode 100644 tests/tests/snapshots/test_installs/test_system_snapshot/default/zones.yml create mode 100644 tests/tests/snapshots/test_installs/test_system_snapshot/hass_118169/control_system.yml create mode 100644 tests/tests/snapshots/test_installs/test_system_snapshot/hass_118169/gateway.yml delete mode 100644 tests/tests/snapshots/test_installs/test_system_snapshot/hass_118169/hass_118169 create mode 100644 tests/tests/snapshots/test_installs/test_system_snapshot/hass_118169/hot_water.yml create mode 100644 tests/tests/snapshots/test_installs/test_system_snapshot/hass_118169/location.yml create mode 100644 tests/tests/snapshots/test_installs/test_system_snapshot/hass_118169/zones.yml create mode 100644 tests/tests/snapshots/test_installs/test_system_snapshot/system_002/control_system.yml create mode 100644 tests/tests/snapshots/test_installs/test_system_snapshot/system_002/gateway.yml create mode 100644 tests/tests/snapshots/test_installs/test_system_snapshot/system_002/hot_water.yml create mode 100644 tests/tests/snapshots/test_installs/test_system_snapshot/system_002/location.yml delete mode 100644 tests/tests/snapshots/test_installs/test_system_snapshot/system_002/system_002 create mode 100644 tests/tests/snapshots/test_installs/test_system_snapshot/system_002/zones.yml create mode 100644 tests/tests/snapshots/test_installs/test_system_snapshot/system_004/control_system.yml create mode 100644 tests/tests/snapshots/test_installs/test_system_snapshot/system_004/gateway.yml create mode 100644 tests/tests/snapshots/test_installs/test_system_snapshot/system_004/hot_water.yml create mode 100644 tests/tests/snapshots/test_installs/test_system_snapshot/system_004/location.yml delete mode 100644 tests/tests/snapshots/test_installs/test_system_snapshot/system_004/system_004 create mode 100644 tests/tests/snapshots/test_installs/test_system_snapshot/system_004/zones.yml create mode 100644 tests/tests/snapshots/test_installs/test_system_snapshot/system_006/control_system.yml create mode 100644 tests/tests/snapshots/test_installs/test_system_snapshot/system_006/gateway.yml create mode 100644 tests/tests/snapshots/test_installs/test_system_snapshot/system_006/hot_water.yml create mode 100644 tests/tests/snapshots/test_installs/test_system_snapshot/system_006/location.yml delete mode 100644 tests/tests/snapshots/test_installs/test_system_snapshot/system_006/system_006 create mode 100644 tests/tests/snapshots/test_installs/test_system_snapshot/system_006/zones.yml diff --git a/tests/tests/snapshots/test_installs/test_system_snapshot/default/control_system.yml b/tests/tests/snapshots/test_installs/test_system_snapshot/default/control_system.yml new file mode 100644 index 0000000..bd3f80b --- /dev/null +++ b/tests/tests/snapshots/test_installs/test_system_snapshot/default/control_system.yml @@ -0,0 +1,42 @@ +activeFaults: &id001 [] +active_faults: *id001 +allowedSystemModes: +- canBePermanent: true + canBeTemporary: false + systemMode: HeatingOff +- canBePermanent: true + canBeTemporary: false + systemMode: Auto +- canBePermanent: true + canBeTemporary: false + systemMode: AutoWithReset +- canBePermanent: true + canBeTemporary: true + maxDuration: 1.00:00:00 + systemMode: AutoWithEco + timingMode: Duration + timingResolution: 01:00:00 +- canBePermanent: true + canBeTemporary: true + maxDuration: 99.00:00:00 + systemMode: Away + timingMode: Period + timingResolution: 1.00:00:00 +- canBePermanent: true + canBeTemporary: true + maxDuration: 99.00:00:00 + systemMode: DayOff + timingMode: Period + timingResolution: 1.00:00:00 +- canBePermanent: true + canBeTemporary: true + maxDuration: 99.00:00:00 + systemMode: Custom + timingMode: Period + timingResolution: 1.00:00:00 +modelType: EvoTouch +systemId: '3432522' +systemModeStatus: + isPermanent: true + mode: AutoWithEco +system_mode: AutoWithEco diff --git a/tests/tests/snapshots/test_installs/test_system_snapshot/default/default b/tests/tests/snapshots/test_installs/test_system_snapshot/default/default deleted file mode 100644 index 11f34d0..0000000 --- a/tests/tests/snapshots/test_installs/test_system_snapshot/default/default +++ /dev/null @@ -1 +0,0 @@ -{'loc': {'country': 'UnitedKingdom', 'locationId': '2738909', 'locationOwner': {'userId': '2263181', 'username': 'nobody@nowhere.com', 'firstname': 'David', 'lastname': '********'}, 'locationType': 'Residential', 'name': 'My Home', 'timeZone': {'timeZoneId': 'GMTStandardTime', 'displayName': '(UTC+00:00) Dublin, Edinburgh, Lisbon, London', 'offsetMinutes': 0, 'currentOffsetMinutes': 60, 'supportsDaylightSaving': True}, 'useDaylightSaveSwitching': True}, 'gwy': {'active_faults': [], 'gatewayId': '2499896', 'isWiFi': False, 'mac': '00D02DEE4E56'}, 'tcs': {'activeFaults': [], 'active_faults': [], 'allowedSystemModes': [{'systemMode': 'HeatingOff', 'canBePermanent': True, 'canBeTemporary': False}, {'systemMode': 'Auto', 'canBePermanent': True, 'canBeTemporary': False}, {'systemMode': 'AutoWithReset', 'canBePermanent': True, 'canBeTemporary': False}, {'systemMode': 'AutoWithEco', 'canBePermanent': True, 'canBeTemporary': True, 'maxDuration': '1.00:00:00', 'timingResolution': '01:00:00', 'timingMode': 'Duration'}, {'systemMode': 'Away', 'canBePermanent': True, 'canBeTemporary': True, 'maxDuration': '99.00:00:00', 'timingResolution': '1.00:00:00', 'timingMode': 'Period'}, {'systemMode': 'DayOff', 'canBePermanent': True, 'canBeTemporary': True, 'maxDuration': '99.00:00:00', 'timingResolution': '1.00:00:00', 'timingMode': 'Period'}, {'systemMode': 'Custom', 'canBePermanent': True, 'canBeTemporary': True, 'maxDuration': '99.00:00:00', 'timingResolution': '1.00:00:00', 'timingMode': 'Period'}], 'modelType': 'EvoTouch', 'systemId': '3432522', 'systemModeStatus': {'mode': 'AutoWithEco', 'isPermanent': True}, 'system_mode': 'AutoWithEco'}} \ No newline at end of file diff --git a/tests/tests/snapshots/test_installs/test_system_snapshot/default/gateway.yml b/tests/tests/snapshots/test_installs/test_system_snapshot/default/gateway.yml new file mode 100644 index 0000000..20d664a --- /dev/null +++ b/tests/tests/snapshots/test_installs/test_system_snapshot/default/gateway.yml @@ -0,0 +1,4 @@ +active_faults: [] +gatewayId: '2499896' +isWiFi: false +mac: 00D02DEE4E56 diff --git a/tests/tests/snapshots/test_installs/test_system_snapshot/default/hot_water.yml b/tests/tests/snapshots/test_installs/test_system_snapshot/default/hot_water.yml new file mode 100644 index 0000000..805d6f1 --- /dev/null +++ b/tests/tests/snapshots/test_installs/test_system_snapshot/default/hot_water.yml @@ -0,0 +1,28 @@ +activeFaults: &id001 [] +active_faults: *id001 +allowedModes: &id002 +- FollowSchedule +- PermanentOverride +- TemporaryOverride +dhwId: '3933910' +dhwStateCapabilitiesResponse: + allowedModes: *id002 + allowedStates: + - 'On' + - 'Off' + maxDuration: 1.00:00:00 + timingResolution: 00:10:00 +mode: PermanentOverride +name: Domestic Hot Water +scheduleCapabilitiesResponse: + maxSwitchpointsPerDay: 6 + minSwitchpointsPerDay: 1 + timingResolution: 00:10:00 +state: 'Off' +stateStatus: + mode: PermanentOverride + state: 'Off' +temperature: 23.0 +temperatureStatus: + isAvailable: true + temperature: 23.0 diff --git a/tests/tests/snapshots/test_installs/test_system_snapshot/default/location.yml b/tests/tests/snapshots/test_installs/test_system_snapshot/default/location.yml new file mode 100644 index 0000000..e3b38cb --- /dev/null +++ b/tests/tests/snapshots/test_installs/test_system_snapshot/default/location.yml @@ -0,0 +1,16 @@ +country: UnitedKingdom +locationId: '2738909' +locationOwner: + firstname: David + lastname: '********' + userId: '2263181' + username: nobody@nowhere.com +locationType: Residential +name: My Home +timeZone: + currentOffsetMinutes: 60 + displayName: (UTC+00:00) Dublin, Edinburgh, Lisbon, London + offsetMinutes: 0 + supportsDaylightSaving: true + timeZoneId: GMTStandardTime +useDaylightSaveSwitching: true diff --git a/tests/tests/snapshots/test_installs/test_system_snapshot/default/zones.yml b/tests/tests/snapshots/test_installs/test_system_snapshot/default/zones.yml new file mode 100644 index 0000000..2787095 --- /dev/null +++ b/tests/tests/snapshots/test_installs/test_system_snapshot/default/zones.yml @@ -0,0 +1,323 @@ +'3432521': + activeFaults: &id001 [] + active_faults: *id001 + allowedSetpointModes: &id002 + - PermanentOverride + - FollowSchedule + - TemporaryOverride + max_heat_setpoint: 35.0 + min_heat_setpoint: 5.0 + mode: PermanentOverride + modelType: HeatingZone + name: Dead Zone + scheduleCapabilities: + maxSwitchpointsPerDay: 6 + minSwitchpointsPerDay: 1 + setpointValueResolution: 0.5 + timingResolution: 00:10:00 + setpointCapabilities: + allowedSetpointModes: *id002 + canControlCool: false + canControlHeat: true + maxDuration: 1.00:00:00 + maxHeatSetpoint: 35.0 + minHeatSetpoint: 5.0 + timingResolution: 00:10:00 + valueResolution: 0.5 + setpointStatus: + setpointMode: PermanentOverride + targetHeatTemperature: 5.0 + target_cool_temperature: null + target_heat_temperature: 5.0 + temperature: null + temperatureStatus: + isAvailable: false + zoneType: RadiatorZone +'3432576': + activeFaults: &id003 [] + active_faults: *id003 + allowedSetpointModes: &id004 + - PermanentOverride + - FollowSchedule + - TemporaryOverride + max_heat_setpoint: 35.0 + min_heat_setpoint: 5.0 + mode: FollowSchedule + modelType: HeatingZone + name: Main Room + scheduleCapabilities: + maxSwitchpointsPerDay: 6 + minSwitchpointsPerDay: 1 + setpointValueResolution: 0.5 + timingResolution: 00:10:00 + setpointCapabilities: + allowedSetpointModes: *id004 + canControlCool: false + canControlHeat: true + maxDuration: 1.00:00:00 + maxHeatSetpoint: 35.0 + minHeatSetpoint: 5.0 + timingResolution: 00:10:00 + valueResolution: 0.5 + setpointStatus: + setpointMode: FollowSchedule + targetHeatTemperature: 17.0 + target_cool_temperature: null + target_heat_temperature: 17.0 + temperature: 19.0 + temperatureStatus: + isAvailable: true + temperature: 19.0 + zoneType: RadiatorZone +'3432577': + activeFaults: &id005 [] + active_faults: *id005 + allowedSetpointModes: &id006 + - PermanentOverride + - FollowSchedule + - TemporaryOverride + max_heat_setpoint: 35.0 + min_heat_setpoint: 5.0 + mode: FollowSchedule + modelType: HeatingZone + name: Front Room + scheduleCapabilities: + maxSwitchpointsPerDay: 6 + minSwitchpointsPerDay: 1 + setpointValueResolution: 0.5 + timingResolution: 00:10:00 + setpointCapabilities: + allowedSetpointModes: *id006 + canControlCool: false + canControlHeat: true + maxDuration: 1.00:00:00 + maxHeatSetpoint: 35.0 + minHeatSetpoint: 5.0 + timingResolution: 00:10:00 + valueResolution: 0.5 + setpointStatus: + setpointMode: FollowSchedule + targetHeatTemperature: 17.0 + target_cool_temperature: null + target_heat_temperature: 17.0 + temperature: 19.0 + temperatureStatus: + isAvailable: true + temperature: 19.0 + zoneType: RadiatorZone +'3432578': + activeFaults: &id007 [] + active_faults: *id007 + allowedSetpointModes: &id008 + - PermanentOverride + - FollowSchedule + - TemporaryOverride + max_heat_setpoint: 35.0 + min_heat_setpoint: 5.0 + mode: FollowSchedule + modelType: HeatingZone + name: Kitchen + scheduleCapabilities: + maxSwitchpointsPerDay: 6 + minSwitchpointsPerDay: 1 + setpointValueResolution: 0.5 + timingResolution: 00:10:00 + setpointCapabilities: + allowedSetpointModes: *id008 + canControlCool: false + canControlHeat: true + maxDuration: 1.00:00:00 + maxHeatSetpoint: 35.0 + minHeatSetpoint: 5.0 + timingResolution: 00:10:00 + valueResolution: 0.5 + setpointStatus: + setpointMode: FollowSchedule + targetHeatTemperature: 17.0 + target_cool_temperature: null + target_heat_temperature: 17.0 + temperature: 20.0 + temperatureStatus: + isAvailable: true + temperature: 20.0 + zoneType: RadiatorZone +'3432579': + activeFaults: &id009 [] + active_faults: *id009 + allowedSetpointModes: &id010 + - PermanentOverride + - FollowSchedule + - TemporaryOverride + max_heat_setpoint: 35.0 + min_heat_setpoint: 5.0 + mode: FollowSchedule + modelType: HeatingZone + name: Bathroom Dn + scheduleCapabilities: + maxSwitchpointsPerDay: 6 + minSwitchpointsPerDay: 1 + setpointValueResolution: 0.5 + timingResolution: 00:10:00 + setpointCapabilities: + allowedSetpointModes: *id010 + canControlCool: false + canControlHeat: true + maxDuration: 1.00:00:00 + maxHeatSetpoint: 35.0 + minHeatSetpoint: 5.0 + timingResolution: 00:10:00 + valueResolution: 0.5 + setpointStatus: + setpointMode: FollowSchedule + targetHeatTemperature: 16.0 + target_cool_temperature: null + target_heat_temperature: 16.0 + temperature: 20.0 + temperatureStatus: + isAvailable: true + temperature: 20.0 + zoneType: RadiatorZone +'3432580': + activeFaults: &id011 [] + active_faults: *id011 + allowedSetpointModes: &id012 + - PermanentOverride + - FollowSchedule + - TemporaryOverride + max_heat_setpoint: 35.0 + min_heat_setpoint: 5.0 + mode: FollowSchedule + modelType: HeatingZone + name: Main Bedroom + scheduleCapabilities: + maxSwitchpointsPerDay: 6 + minSwitchpointsPerDay: 1 + setpointValueResolution: 0.5 + timingResolution: 00:10:00 + setpointCapabilities: + allowedSetpointModes: *id012 + canControlCool: false + canControlHeat: true + maxDuration: 1.00:00:00 + maxHeatSetpoint: 35.0 + minHeatSetpoint: 5.0 + timingResolution: 00:10:00 + valueResolution: 0.5 + setpointStatus: + setpointMode: FollowSchedule + targetHeatTemperature: 16.0 + target_cool_temperature: null + target_heat_temperature: 16.0 + temperature: 21.0 + temperatureStatus: + isAvailable: true + temperature: 21.0 + zoneType: RadiatorZone +'3449703': + activeFaults: &id013 [] + active_faults: *id013 + allowedSetpointModes: &id014 + - PermanentOverride + - FollowSchedule + - TemporaryOverride + max_heat_setpoint: 35.0 + min_heat_setpoint: 5.0 + mode: FollowSchedule + modelType: HeatingZone + name: Kids Room + scheduleCapabilities: + maxSwitchpointsPerDay: 6 + minSwitchpointsPerDay: 1 + setpointValueResolution: 0.5 + timingResolution: 00:10:00 + setpointCapabilities: + allowedSetpointModes: *id014 + canControlCool: false + canControlHeat: true + maxDuration: 1.00:00:00 + maxHeatSetpoint: 35.0 + minHeatSetpoint: 5.0 + timingResolution: 00:10:00 + valueResolution: 0.5 + setpointStatus: + setpointMode: FollowSchedule + targetHeatTemperature: 17.0 + target_cool_temperature: null + target_heat_temperature: 17.0 + temperature: 19.5 + temperatureStatus: + isAvailable: true + temperature: 19.5 + zoneType: RadiatorZone +'3449740': + activeFaults: &id015 [] + active_faults: *id015 + allowedSetpointModes: &id016 + - PermanentOverride + - FollowSchedule + - TemporaryOverride + max_heat_setpoint: 35.0 + min_heat_setpoint: 5.0 + mode: FollowSchedule + modelType: HeatingZone + name: Bathroom Up + scheduleCapabilities: + maxSwitchpointsPerDay: 6 + minSwitchpointsPerDay: 1 + setpointValueResolution: 0.5 + timingResolution: 00:10:00 + setpointCapabilities: + allowedSetpointModes: *id016 + canControlCool: false + canControlHeat: true + maxDuration: 1.00:00:00 + maxHeatSetpoint: 35.0 + minHeatSetpoint: 5.0 + timingResolution: 00:10:00 + valueResolution: 0.5 + setpointStatus: + setpointMode: FollowSchedule + targetHeatTemperature: 16.5 + target_cool_temperature: null + target_heat_temperature: 16.5 + temperature: 21.5 + temperatureStatus: + isAvailable: true + temperature: 21.5 + zoneType: RadiatorZone +'3450733': + activeFaults: &id017 [] + active_faults: *id017 + allowedSetpointModes: &id018 + - PermanentOverride + - FollowSchedule + - TemporaryOverride + max_heat_setpoint: 35.0 + min_heat_setpoint: 5.0 + mode: PermanentOverride + modelType: HeatingZone + name: Spare Room + scheduleCapabilities: + maxSwitchpointsPerDay: 6 + minSwitchpointsPerDay: 1 + setpointValueResolution: 0.5 + timingResolution: 00:10:00 + setpointCapabilities: + allowedSetpointModes: *id018 + canControlCool: false + canControlHeat: true + maxDuration: 1.00:00:00 + maxHeatSetpoint: 35.0 + minHeatSetpoint: 5.0 + timingResolution: 00:10:00 + valueResolution: 0.5 + setpointStatus: + setpointMode: PermanentOverride + targetHeatTemperature: 14.0 + target_cool_temperature: null + target_heat_temperature: 14.0 + temperature: 19.5 + temperatureStatus: + isAvailable: true + temperature: 19.5 + zoneType: RadiatorZone diff --git a/tests/tests/snapshots/test_installs/test_system_snapshot/hass_118169/control_system.yml b/tests/tests/snapshots/test_installs/test_system_snapshot/hass_118169/control_system.yml new file mode 100644 index 0000000..bd3f80b --- /dev/null +++ b/tests/tests/snapshots/test_installs/test_system_snapshot/hass_118169/control_system.yml @@ -0,0 +1,42 @@ +activeFaults: &id001 [] +active_faults: *id001 +allowedSystemModes: +- canBePermanent: true + canBeTemporary: false + systemMode: HeatingOff +- canBePermanent: true + canBeTemporary: false + systemMode: Auto +- canBePermanent: true + canBeTemporary: false + systemMode: AutoWithReset +- canBePermanent: true + canBeTemporary: true + maxDuration: 1.00:00:00 + systemMode: AutoWithEco + timingMode: Duration + timingResolution: 01:00:00 +- canBePermanent: true + canBeTemporary: true + maxDuration: 99.00:00:00 + systemMode: Away + timingMode: Period + timingResolution: 1.00:00:00 +- canBePermanent: true + canBeTemporary: true + maxDuration: 99.00:00:00 + systemMode: DayOff + timingMode: Period + timingResolution: 1.00:00:00 +- canBePermanent: true + canBeTemporary: true + maxDuration: 99.00:00:00 + systemMode: Custom + timingMode: Period + timingResolution: 1.00:00:00 +modelType: EvoTouch +systemId: '3432522' +systemModeStatus: + isPermanent: true + mode: AutoWithEco +system_mode: AutoWithEco diff --git a/tests/tests/snapshots/test_installs/test_system_snapshot/hass_118169/gateway.yml b/tests/tests/snapshots/test_installs/test_system_snapshot/hass_118169/gateway.yml new file mode 100644 index 0000000..20d664a --- /dev/null +++ b/tests/tests/snapshots/test_installs/test_system_snapshot/hass_118169/gateway.yml @@ -0,0 +1,4 @@ +active_faults: [] +gatewayId: '2499896' +isWiFi: false +mac: 00D02DEE4E56 diff --git a/tests/tests/snapshots/test_installs/test_system_snapshot/hass_118169/hass_118169 b/tests/tests/snapshots/test_installs/test_system_snapshot/hass_118169/hass_118169 deleted file mode 100644 index 11f34d0..0000000 --- a/tests/tests/snapshots/test_installs/test_system_snapshot/hass_118169/hass_118169 +++ /dev/null @@ -1 +0,0 @@ -{'loc': {'country': 'UnitedKingdom', 'locationId': '2738909', 'locationOwner': {'userId': '2263181', 'username': 'nobody@nowhere.com', 'firstname': 'David', 'lastname': '********'}, 'locationType': 'Residential', 'name': 'My Home', 'timeZone': {'timeZoneId': 'GMTStandardTime', 'displayName': '(UTC+00:00) Dublin, Edinburgh, Lisbon, London', 'offsetMinutes': 0, 'currentOffsetMinutes': 60, 'supportsDaylightSaving': True}, 'useDaylightSaveSwitching': True}, 'gwy': {'active_faults': [], 'gatewayId': '2499896', 'isWiFi': False, 'mac': '00D02DEE4E56'}, 'tcs': {'activeFaults': [], 'active_faults': [], 'allowedSystemModes': [{'systemMode': 'HeatingOff', 'canBePermanent': True, 'canBeTemporary': False}, {'systemMode': 'Auto', 'canBePermanent': True, 'canBeTemporary': False}, {'systemMode': 'AutoWithReset', 'canBePermanent': True, 'canBeTemporary': False}, {'systemMode': 'AutoWithEco', 'canBePermanent': True, 'canBeTemporary': True, 'maxDuration': '1.00:00:00', 'timingResolution': '01:00:00', 'timingMode': 'Duration'}, {'systemMode': 'Away', 'canBePermanent': True, 'canBeTemporary': True, 'maxDuration': '99.00:00:00', 'timingResolution': '1.00:00:00', 'timingMode': 'Period'}, {'systemMode': 'DayOff', 'canBePermanent': True, 'canBeTemporary': True, 'maxDuration': '99.00:00:00', 'timingResolution': '1.00:00:00', 'timingMode': 'Period'}, {'systemMode': 'Custom', 'canBePermanent': True, 'canBeTemporary': True, 'maxDuration': '99.00:00:00', 'timingResolution': '1.00:00:00', 'timingMode': 'Period'}], 'modelType': 'EvoTouch', 'systemId': '3432522', 'systemModeStatus': {'mode': 'AutoWithEco', 'isPermanent': True}, 'system_mode': 'AutoWithEco'}} \ No newline at end of file diff --git a/tests/tests/snapshots/test_installs/test_system_snapshot/hass_118169/hot_water.yml b/tests/tests/snapshots/test_installs/test_system_snapshot/hass_118169/hot_water.yml new file mode 100644 index 0000000..805d6f1 --- /dev/null +++ b/tests/tests/snapshots/test_installs/test_system_snapshot/hass_118169/hot_water.yml @@ -0,0 +1,28 @@ +activeFaults: &id001 [] +active_faults: *id001 +allowedModes: &id002 +- FollowSchedule +- PermanentOverride +- TemporaryOverride +dhwId: '3933910' +dhwStateCapabilitiesResponse: + allowedModes: *id002 + allowedStates: + - 'On' + - 'Off' + maxDuration: 1.00:00:00 + timingResolution: 00:10:00 +mode: PermanentOverride +name: Domestic Hot Water +scheduleCapabilitiesResponse: + maxSwitchpointsPerDay: 6 + minSwitchpointsPerDay: 1 + timingResolution: 00:10:00 +state: 'Off' +stateStatus: + mode: PermanentOverride + state: 'Off' +temperature: 23.0 +temperatureStatus: + isAvailable: true + temperature: 23.0 diff --git a/tests/tests/snapshots/test_installs/test_system_snapshot/hass_118169/location.yml b/tests/tests/snapshots/test_installs/test_system_snapshot/hass_118169/location.yml new file mode 100644 index 0000000..e3b38cb --- /dev/null +++ b/tests/tests/snapshots/test_installs/test_system_snapshot/hass_118169/location.yml @@ -0,0 +1,16 @@ +country: UnitedKingdom +locationId: '2738909' +locationOwner: + firstname: David + lastname: '********' + userId: '2263181' + username: nobody@nowhere.com +locationType: Residential +name: My Home +timeZone: + currentOffsetMinutes: 60 + displayName: (UTC+00:00) Dublin, Edinburgh, Lisbon, London + offsetMinutes: 0 + supportsDaylightSaving: true + timeZoneId: GMTStandardTime +useDaylightSaveSwitching: true diff --git a/tests/tests/snapshots/test_installs/test_system_snapshot/hass_118169/zones.yml b/tests/tests/snapshots/test_installs/test_system_snapshot/hass_118169/zones.yml new file mode 100644 index 0000000..2787095 --- /dev/null +++ b/tests/tests/snapshots/test_installs/test_system_snapshot/hass_118169/zones.yml @@ -0,0 +1,323 @@ +'3432521': + activeFaults: &id001 [] + active_faults: *id001 + allowedSetpointModes: &id002 + - PermanentOverride + - FollowSchedule + - TemporaryOverride + max_heat_setpoint: 35.0 + min_heat_setpoint: 5.0 + mode: PermanentOverride + modelType: HeatingZone + name: Dead Zone + scheduleCapabilities: + maxSwitchpointsPerDay: 6 + minSwitchpointsPerDay: 1 + setpointValueResolution: 0.5 + timingResolution: 00:10:00 + setpointCapabilities: + allowedSetpointModes: *id002 + canControlCool: false + canControlHeat: true + maxDuration: 1.00:00:00 + maxHeatSetpoint: 35.0 + minHeatSetpoint: 5.0 + timingResolution: 00:10:00 + valueResolution: 0.5 + setpointStatus: + setpointMode: PermanentOverride + targetHeatTemperature: 5.0 + target_cool_temperature: null + target_heat_temperature: 5.0 + temperature: null + temperatureStatus: + isAvailable: false + zoneType: RadiatorZone +'3432576': + activeFaults: &id003 [] + active_faults: *id003 + allowedSetpointModes: &id004 + - PermanentOverride + - FollowSchedule + - TemporaryOverride + max_heat_setpoint: 35.0 + min_heat_setpoint: 5.0 + mode: FollowSchedule + modelType: HeatingZone + name: Main Room + scheduleCapabilities: + maxSwitchpointsPerDay: 6 + minSwitchpointsPerDay: 1 + setpointValueResolution: 0.5 + timingResolution: 00:10:00 + setpointCapabilities: + allowedSetpointModes: *id004 + canControlCool: false + canControlHeat: true + maxDuration: 1.00:00:00 + maxHeatSetpoint: 35.0 + minHeatSetpoint: 5.0 + timingResolution: 00:10:00 + valueResolution: 0.5 + setpointStatus: + setpointMode: FollowSchedule + targetHeatTemperature: 17.0 + target_cool_temperature: null + target_heat_temperature: 17.0 + temperature: 19.0 + temperatureStatus: + isAvailable: true + temperature: 19.0 + zoneType: RadiatorZone +'3432577': + activeFaults: &id005 [] + active_faults: *id005 + allowedSetpointModes: &id006 + - PermanentOverride + - FollowSchedule + - TemporaryOverride + max_heat_setpoint: 35.0 + min_heat_setpoint: 5.0 + mode: FollowSchedule + modelType: HeatingZone + name: Front Room + scheduleCapabilities: + maxSwitchpointsPerDay: 6 + minSwitchpointsPerDay: 1 + setpointValueResolution: 0.5 + timingResolution: 00:10:00 + setpointCapabilities: + allowedSetpointModes: *id006 + canControlCool: false + canControlHeat: true + maxDuration: 1.00:00:00 + maxHeatSetpoint: 35.0 + minHeatSetpoint: 5.0 + timingResolution: 00:10:00 + valueResolution: 0.5 + setpointStatus: + setpointMode: FollowSchedule + targetHeatTemperature: 17.0 + target_cool_temperature: null + target_heat_temperature: 17.0 + temperature: 19.0 + temperatureStatus: + isAvailable: true + temperature: 19.0 + zoneType: RadiatorZone +'3432578': + activeFaults: &id007 [] + active_faults: *id007 + allowedSetpointModes: &id008 + - PermanentOverride + - FollowSchedule + - TemporaryOverride + max_heat_setpoint: 35.0 + min_heat_setpoint: 5.0 + mode: FollowSchedule + modelType: HeatingZone + name: Kitchen + scheduleCapabilities: + maxSwitchpointsPerDay: 6 + minSwitchpointsPerDay: 1 + setpointValueResolution: 0.5 + timingResolution: 00:10:00 + setpointCapabilities: + allowedSetpointModes: *id008 + canControlCool: false + canControlHeat: true + maxDuration: 1.00:00:00 + maxHeatSetpoint: 35.0 + minHeatSetpoint: 5.0 + timingResolution: 00:10:00 + valueResolution: 0.5 + setpointStatus: + setpointMode: FollowSchedule + targetHeatTemperature: 17.0 + target_cool_temperature: null + target_heat_temperature: 17.0 + temperature: 20.0 + temperatureStatus: + isAvailable: true + temperature: 20.0 + zoneType: RadiatorZone +'3432579': + activeFaults: &id009 [] + active_faults: *id009 + allowedSetpointModes: &id010 + - PermanentOverride + - FollowSchedule + - TemporaryOverride + max_heat_setpoint: 35.0 + min_heat_setpoint: 5.0 + mode: FollowSchedule + modelType: HeatingZone + name: Bathroom Dn + scheduleCapabilities: + maxSwitchpointsPerDay: 6 + minSwitchpointsPerDay: 1 + setpointValueResolution: 0.5 + timingResolution: 00:10:00 + setpointCapabilities: + allowedSetpointModes: *id010 + canControlCool: false + canControlHeat: true + maxDuration: 1.00:00:00 + maxHeatSetpoint: 35.0 + minHeatSetpoint: 5.0 + timingResolution: 00:10:00 + valueResolution: 0.5 + setpointStatus: + setpointMode: FollowSchedule + targetHeatTemperature: 16.0 + target_cool_temperature: null + target_heat_temperature: 16.0 + temperature: 20.0 + temperatureStatus: + isAvailable: true + temperature: 20.0 + zoneType: RadiatorZone +'3432580': + activeFaults: &id011 [] + active_faults: *id011 + allowedSetpointModes: &id012 + - PermanentOverride + - FollowSchedule + - TemporaryOverride + max_heat_setpoint: 35.0 + min_heat_setpoint: 5.0 + mode: FollowSchedule + modelType: HeatingZone + name: Main Bedroom + scheduleCapabilities: + maxSwitchpointsPerDay: 6 + minSwitchpointsPerDay: 1 + setpointValueResolution: 0.5 + timingResolution: 00:10:00 + setpointCapabilities: + allowedSetpointModes: *id012 + canControlCool: false + canControlHeat: true + maxDuration: 1.00:00:00 + maxHeatSetpoint: 35.0 + minHeatSetpoint: 5.0 + timingResolution: 00:10:00 + valueResolution: 0.5 + setpointStatus: + setpointMode: FollowSchedule + targetHeatTemperature: 16.0 + target_cool_temperature: null + target_heat_temperature: 16.0 + temperature: 21.0 + temperatureStatus: + isAvailable: true + temperature: 21.0 + zoneType: RadiatorZone +'3449703': + activeFaults: &id013 [] + active_faults: *id013 + allowedSetpointModes: &id014 + - PermanentOverride + - FollowSchedule + - TemporaryOverride + max_heat_setpoint: 35.0 + min_heat_setpoint: 5.0 + mode: FollowSchedule + modelType: HeatingZone + name: Kids Room + scheduleCapabilities: + maxSwitchpointsPerDay: 6 + minSwitchpointsPerDay: 1 + setpointValueResolution: 0.5 + timingResolution: 00:10:00 + setpointCapabilities: + allowedSetpointModes: *id014 + canControlCool: false + canControlHeat: true + maxDuration: 1.00:00:00 + maxHeatSetpoint: 35.0 + minHeatSetpoint: 5.0 + timingResolution: 00:10:00 + valueResolution: 0.5 + setpointStatus: + setpointMode: FollowSchedule + targetHeatTemperature: 17.0 + target_cool_temperature: null + target_heat_temperature: 17.0 + temperature: 19.5 + temperatureStatus: + isAvailable: true + temperature: 19.5 + zoneType: RadiatorZone +'3449740': + activeFaults: &id015 [] + active_faults: *id015 + allowedSetpointModes: &id016 + - PermanentOverride + - FollowSchedule + - TemporaryOverride + max_heat_setpoint: 35.0 + min_heat_setpoint: 5.0 + mode: FollowSchedule + modelType: HeatingZone + name: Bathroom Up + scheduleCapabilities: + maxSwitchpointsPerDay: 6 + minSwitchpointsPerDay: 1 + setpointValueResolution: 0.5 + timingResolution: 00:10:00 + setpointCapabilities: + allowedSetpointModes: *id016 + canControlCool: false + canControlHeat: true + maxDuration: 1.00:00:00 + maxHeatSetpoint: 35.0 + minHeatSetpoint: 5.0 + timingResolution: 00:10:00 + valueResolution: 0.5 + setpointStatus: + setpointMode: FollowSchedule + targetHeatTemperature: 16.5 + target_cool_temperature: null + target_heat_temperature: 16.5 + temperature: 21.5 + temperatureStatus: + isAvailable: true + temperature: 21.5 + zoneType: RadiatorZone +'3450733': + activeFaults: &id017 [] + active_faults: *id017 + allowedSetpointModes: &id018 + - PermanentOverride + - FollowSchedule + - TemporaryOverride + max_heat_setpoint: 35.0 + min_heat_setpoint: 5.0 + mode: PermanentOverride + modelType: HeatingZone + name: Spare Room + scheduleCapabilities: + maxSwitchpointsPerDay: 6 + minSwitchpointsPerDay: 1 + setpointValueResolution: 0.5 + timingResolution: 00:10:00 + setpointCapabilities: + allowedSetpointModes: *id018 + canControlCool: false + canControlHeat: true + maxDuration: 1.00:00:00 + maxHeatSetpoint: 35.0 + minHeatSetpoint: 5.0 + timingResolution: 00:10:00 + valueResolution: 0.5 + setpointStatus: + setpointMode: PermanentOverride + targetHeatTemperature: 14.0 + target_cool_temperature: null + target_heat_temperature: 14.0 + temperature: 19.5 + temperatureStatus: + isAvailable: true + temperature: 19.5 + zoneType: RadiatorZone diff --git a/tests/tests/snapshots/test_installs/test_system_snapshot/system_002/control_system.yml b/tests/tests/snapshots/test_installs/test_system_snapshot/system_002/control_system.yml new file mode 100644 index 0000000..7fa7e94 --- /dev/null +++ b/tests/tests/snapshots/test_installs/test_system_snapshot/system_002/control_system.yml @@ -0,0 +1,42 @@ +activeFaults: &id001 [] +active_faults: *id001 +allowedSystemModes: +- canBePermanent: true + canBeTemporary: false + systemMode: HeatingOff +- canBePermanent: true + canBeTemporary: false + systemMode: Auto +- canBePermanent: true + canBeTemporary: false + systemMode: AutoWithReset +- canBePermanent: true + canBeTemporary: true + maxDuration: 1.00:00:00 + systemMode: AutoWithEco + timingMode: Duration + timingResolution: 01:00:00 +- canBePermanent: true + canBeTemporary: true + maxDuration: 99.00:00:00 + systemMode: Away + timingMode: Period + timingResolution: 1.00:00:00 +- canBePermanent: true + canBeTemporary: true + maxDuration: 99.00:00:00 + systemMode: DayOff + timingMode: Period + timingResolution: 1.00:00:00 +- canBePermanent: true + canBeTemporary: true + maxDuration: 99.00:00:00 + systemMode: Custom + timingMode: Period + timingResolution: 1.00:00:00 +modelType: EvoTouch +systemId: '3432522' +systemModeStatus: + isPermanent: true + mode: Auto +system_mode: Auto diff --git a/tests/tests/snapshots/test_installs/test_system_snapshot/system_002/gateway.yml b/tests/tests/snapshots/test_installs/test_system_snapshot/system_002/gateway.yml new file mode 100644 index 0000000..20d664a --- /dev/null +++ b/tests/tests/snapshots/test_installs/test_system_snapshot/system_002/gateway.yml @@ -0,0 +1,4 @@ +active_faults: [] +gatewayId: '2499896' +isWiFi: false +mac: 00D02DEE4E56 diff --git a/tests/tests/snapshots/test_installs/test_system_snapshot/system_002/hot_water.yml b/tests/tests/snapshots/test_installs/test_system_snapshot/system_002/hot_water.yml new file mode 100644 index 0000000..45aada0 --- /dev/null +++ b/tests/tests/snapshots/test_installs/test_system_snapshot/system_002/hot_water.yml @@ -0,0 +1,29 @@ +activeFaults: &id001 +- faultType: DHWSensorCommunicationLost + since: '2023-11-30T18:48:40' +active_faults: *id001 +allowedModes: &id002 +- FollowSchedule +- PermanentOverride +- TemporaryOverride +dhwId: '3933910' +dhwStateCapabilitiesResponse: + allowedModes: *id002 + allowedStates: + - 'On' + - 'Off' + maxDuration: 1.00:00:00 + timingResolution: 00:10:00 +mode: FollowSchedule +name: Domestic Hot Water +scheduleCapabilitiesResponse: + maxSwitchpointsPerDay: 6 + minSwitchpointsPerDay: 1 + timingResolution: 00:10:00 +state: 'Off' +stateStatus: + mode: FollowSchedule + state: 'Off' +temperature: null +temperatureStatus: + isAvailable: false diff --git a/tests/tests/snapshots/test_installs/test_system_snapshot/system_002/location.yml b/tests/tests/snapshots/test_installs/test_system_snapshot/system_002/location.yml new file mode 100644 index 0000000..e3b38cb --- /dev/null +++ b/tests/tests/snapshots/test_installs/test_system_snapshot/system_002/location.yml @@ -0,0 +1,16 @@ +country: UnitedKingdom +locationId: '2738909' +locationOwner: + firstname: David + lastname: '********' + userId: '2263181' + username: nobody@nowhere.com +locationType: Residential +name: My Home +timeZone: + currentOffsetMinutes: 60 + displayName: (UTC+00:00) Dublin, Edinburgh, Lisbon, London + offsetMinutes: 0 + supportsDaylightSaving: true + timeZoneId: GMTStandardTime +useDaylightSaveSwitching: true diff --git a/tests/tests/snapshots/test_installs/test_system_snapshot/system_002/system_002 b/tests/tests/snapshots/test_installs/test_system_snapshot/system_002/system_002 deleted file mode 100644 index 1d19d63..0000000 --- a/tests/tests/snapshots/test_installs/test_system_snapshot/system_002/system_002 +++ /dev/null @@ -1 +0,0 @@ -{'loc': {'country': 'UnitedKingdom', 'locationId': '2738909', 'locationOwner': {'userId': '2263181', 'username': 'nobody@nowhere.com', 'firstname': 'David', 'lastname': '********'}, 'locationType': 'Residential', 'name': 'My Home', 'timeZone': {'timeZoneId': 'GMTStandardTime', 'displayName': '(UTC+00:00) Dublin, Edinburgh, Lisbon, London', 'offsetMinutes': 0, 'currentOffsetMinutes': 60, 'supportsDaylightSaving': True}, 'useDaylightSaveSwitching': True}, 'gwy': {'active_faults': [], 'gatewayId': '2499896', 'isWiFi': False, 'mac': '00D02DEE4E56'}, 'tcs': {'activeFaults': [], 'active_faults': [], 'allowedSystemModes': [{'systemMode': 'HeatingOff', 'canBePermanent': True, 'canBeTemporary': False}, {'systemMode': 'Auto', 'canBePermanent': True, 'canBeTemporary': False}, {'systemMode': 'AutoWithReset', 'canBePermanent': True, 'canBeTemporary': False}, {'systemMode': 'AutoWithEco', 'canBePermanent': True, 'canBeTemporary': True, 'maxDuration': '1.00:00:00', 'timingResolution': '01:00:00', 'timingMode': 'Duration'}, {'systemMode': 'Away', 'canBePermanent': True, 'canBeTemporary': True, 'maxDuration': '99.00:00:00', 'timingResolution': '1.00:00:00', 'timingMode': 'Period'}, {'systemMode': 'DayOff', 'canBePermanent': True, 'canBeTemporary': True, 'maxDuration': '99.00:00:00', 'timingResolution': '1.00:00:00', 'timingMode': 'Period'}, {'systemMode': 'Custom', 'canBePermanent': True, 'canBeTemporary': True, 'maxDuration': '99.00:00:00', 'timingResolution': '1.00:00:00', 'timingMode': 'Period'}], 'modelType': 'EvoTouch', 'systemId': '3432522', 'systemModeStatus': {'mode': 'Auto', 'isPermanent': True}, 'system_mode': 'Auto'}} \ No newline at end of file diff --git a/tests/tests/snapshots/test_installs/test_system_snapshot/system_002/zones.yml b/tests/tests/snapshots/test_installs/test_system_snapshot/system_002/zones.yml new file mode 100644 index 0000000..6802f83 --- /dev/null +++ b/tests/tests/snapshots/test_installs/test_system_snapshot/system_002/zones.yml @@ -0,0 +1,324 @@ +'3432521': + activeFaults: &id001 [] + active_faults: *id001 + allowedSetpointModes: &id002 + - PermanentOverride + - FollowSchedule + - TemporaryOverride + max_heat_setpoint: 35.0 + min_heat_setpoint: 5.0 + mode: PermanentOverride + modelType: HeatingZone + name: Dead Zone + scheduleCapabilities: + maxSwitchpointsPerDay: 6 + minSwitchpointsPerDay: 1 + setpointValueResolution: 0.5 + timingResolution: 00:10:00 + setpointCapabilities: + allowedSetpointModes: *id002 + canControlCool: false + canControlHeat: true + maxDuration: 1.00:00:00 + maxHeatSetpoint: 35.0 + minHeatSetpoint: 5.0 + timingResolution: 00:10:00 + valueResolution: 0.5 + setpointStatus: + setpointMode: PermanentOverride + targetHeatTemperature: 5.0 + target_cool_temperature: null + target_heat_temperature: 5.0 + temperature: null + temperatureStatus: + isAvailable: false + zoneType: RadiatorZone +'3432576': + activeFaults: &id003 [] + active_faults: *id003 + allowedSetpointModes: &id004 + - PermanentOverride + - FollowSchedule + - TemporaryOverride + max_heat_setpoint: 35.0 + min_heat_setpoint: 5.0 + mode: PermanentOverride + modelType: HeatingZone + name: Main Room + scheduleCapabilities: + maxSwitchpointsPerDay: 6 + minSwitchpointsPerDay: 1 + setpointValueResolution: 0.5 + timingResolution: 00:10:00 + setpointCapabilities: + allowedSetpointModes: *id004 + canControlCool: false + canControlHeat: true + maxDuration: 1.00:00:00 + maxHeatSetpoint: 35.0 + minHeatSetpoint: 5.0 + timingResolution: 00:10:00 + valueResolution: 0.5 + setpointStatus: + setpointMode: PermanentOverride + targetHeatTemperature: 5.0 + target_cool_temperature: null + target_heat_temperature: 5.0 + temperature: 17.0 + temperatureStatus: + isAvailable: true + temperature: 17.0 + zoneType: RadiatorZone +'3432577': + activeFaults: &id005 [] + active_faults: *id005 + allowedSetpointModes: &id006 + - PermanentOverride + - FollowSchedule + - TemporaryOverride + max_heat_setpoint: 35.0 + min_heat_setpoint: 5.0 + mode: FollowSchedule + modelType: HeatingZone + name: Front Room + scheduleCapabilities: + maxSwitchpointsPerDay: 6 + minSwitchpointsPerDay: 1 + setpointValueResolution: 0.5 + timingResolution: 00:10:00 + setpointCapabilities: + allowedSetpointModes: *id006 + canControlCool: false + canControlHeat: true + maxDuration: 1.00:00:00 + maxHeatSetpoint: 35.0 + minHeatSetpoint: 5.0 + timingResolution: 00:10:00 + valueResolution: 0.5 + setpointStatus: + setpointMode: FollowSchedule + targetHeatTemperature: 20.6 + target_cool_temperature: null + target_heat_temperature: 20.6 + temperature: 20.5 + temperatureStatus: + isAvailable: true + temperature: 20.5 + zoneType: RadiatorZone +'3432578': + activeFaults: &id007 [] + active_faults: *id007 + allowedSetpointModes: &id008 + - PermanentOverride + - FollowSchedule + - TemporaryOverride + max_heat_setpoint: 35.0 + min_heat_setpoint: 5.0 + mode: FollowSchedule + modelType: HeatingZone + name: Kitchen + scheduleCapabilities: + maxSwitchpointsPerDay: 6 + minSwitchpointsPerDay: 1 + setpointValueResolution: 0.5 + timingResolution: 00:10:00 + setpointCapabilities: + allowedSetpointModes: *id008 + canControlCool: false + canControlHeat: true + maxDuration: 1.00:00:00 + maxHeatSetpoint: 35.0 + minHeatSetpoint: 5.0 + timingResolution: 00:10:00 + valueResolution: 0.5 + setpointStatus: + setpointMode: FollowSchedule + targetHeatTemperature: 20.0 + target_cool_temperature: null + target_heat_temperature: 20.0 + temperature: 20.0 + temperatureStatus: + isAvailable: true + temperature: 20.0 + zoneType: RadiatorZone +'3432579': + activeFaults: &id009 [] + active_faults: *id009 + allowedSetpointModes: &id010 + - PermanentOverride + - FollowSchedule + - TemporaryOverride + max_heat_setpoint: 35.0 + min_heat_setpoint: 5.0 + mode: FollowSchedule + modelType: HeatingZone + name: Bathroom Dn + scheduleCapabilities: + maxSwitchpointsPerDay: 6 + minSwitchpointsPerDay: 1 + setpointValueResolution: 0.5 + timingResolution: 00:10:00 + setpointCapabilities: + allowedSetpointModes: *id010 + canControlCool: false + canControlHeat: true + maxDuration: 1.00:00:00 + maxHeatSetpoint: 35.0 + minHeatSetpoint: 5.0 + timingResolution: 00:10:00 + valueResolution: 0.5 + setpointStatus: + setpointMode: FollowSchedule + targetHeatTemperature: 18.5 + target_cool_temperature: null + target_heat_temperature: 18.5 + temperature: 17.5 + temperatureStatus: + isAvailable: true + temperature: 17.5 + zoneType: RadiatorZone +'3432580': + activeFaults: &id011 [] + active_faults: *id011 + allowedSetpointModes: &id012 + - PermanentOverride + - FollowSchedule + - TemporaryOverride + max_heat_setpoint: 35.0 + min_heat_setpoint: 5.0 + mode: TemporaryOverride + modelType: HeatingZone + name: Main Bedroom + scheduleCapabilities: + maxSwitchpointsPerDay: 6 + minSwitchpointsPerDay: 1 + setpointValueResolution: 0.5 + timingResolution: 00:10:00 + setpointCapabilities: + allowedSetpointModes: *id012 + canControlCool: false + canControlHeat: true + maxDuration: 1.00:00:00 + maxHeatSetpoint: 35.0 + minHeatSetpoint: 5.0 + timingResolution: 00:10:00 + valueResolution: 0.5 + setpointStatus: + setpointMode: TemporaryOverride + targetHeatTemperature: 20.5 + until: '2023-11-30T22:10:00Z' + target_cool_temperature: null + target_heat_temperature: 20.5 + temperature: 21.0 + temperatureStatus: + isAvailable: true + temperature: 21.0 + zoneType: RadiatorZone +'3449703': + activeFaults: &id013 [] + active_faults: *id013 + allowedSetpointModes: &id014 + - PermanentOverride + - FollowSchedule + - TemporaryOverride + max_heat_setpoint: 35.0 + min_heat_setpoint: 5.0 + mode: FollowSchedule + modelType: HeatingZone + name: Kids Room + scheduleCapabilities: + maxSwitchpointsPerDay: 6 + minSwitchpointsPerDay: 1 + setpointValueResolution: 0.5 + timingResolution: 00:10:00 + setpointCapabilities: + allowedSetpointModes: *id014 + canControlCool: false + canControlHeat: true + maxDuration: 1.00:00:00 + maxHeatSetpoint: 35.0 + minHeatSetpoint: 5.0 + timingResolution: 00:10:00 + valueResolution: 0.5 + setpointStatus: + setpointMode: FollowSchedule + targetHeatTemperature: 18.6 + target_cool_temperature: null + target_heat_temperature: 18.6 + temperature: 19.5 + temperatureStatus: + isAvailable: true + temperature: 19.5 + zoneType: RadiatorZone +'3449740': + activeFaults: &id015 [] + active_faults: *id015 + allowedSetpointModes: &id016 + - PermanentOverride + - FollowSchedule + - TemporaryOverride + max_heat_setpoint: 35.0 + min_heat_setpoint: 5.0 + mode: FollowSchedule + modelType: HeatingZone + name: Bathroom Up + scheduleCapabilities: + maxSwitchpointsPerDay: 6 + minSwitchpointsPerDay: 1 + setpointValueResolution: 0.5 + timingResolution: 00:10:00 + setpointCapabilities: + allowedSetpointModes: *id016 + canControlCool: false + canControlHeat: true + maxDuration: 1.00:00:00 + maxHeatSetpoint: 35.0 + minHeatSetpoint: 5.0 + timingResolution: 00:10:00 + valueResolution: 0.5 + setpointStatus: + setpointMode: FollowSchedule + targetHeatTemperature: 19.0 + target_cool_temperature: null + target_heat_temperature: 19.0 + temperature: 19.0 + temperatureStatus: + isAvailable: true + temperature: 19.0 + zoneType: RadiatorZone +'3450733': + activeFaults: &id017 [] + active_faults: *id017 + allowedSetpointModes: &id018 + - PermanentOverride + - FollowSchedule + - TemporaryOverride + max_heat_setpoint: 35.0 + min_heat_setpoint: 5.0 + mode: PermanentOverride + modelType: HeatingZone + name: Spare Room + scheduleCapabilities: + maxSwitchpointsPerDay: 6 + minSwitchpointsPerDay: 1 + setpointValueResolution: 0.5 + timingResolution: 00:10:00 + setpointCapabilities: + allowedSetpointModes: *id018 + canControlCool: false + canControlHeat: true + maxDuration: 1.00:00:00 + maxHeatSetpoint: 35.0 + minHeatSetpoint: 5.0 + timingResolution: 00:10:00 + valueResolution: 0.5 + setpointStatus: + setpointMode: PermanentOverride + targetHeatTemperature: 10.0 + target_cool_temperature: null + target_heat_temperature: 10.0 + temperature: 15.0 + temperatureStatus: + isAvailable: true + temperature: 15.0 + zoneType: RadiatorZone diff --git a/tests/tests/snapshots/test_installs/test_system_snapshot/system_004/control_system.yml b/tests/tests/snapshots/test_installs/test_system_snapshot/system_004/control_system.yml new file mode 100644 index 0000000..2664537 --- /dev/null +++ b/tests/tests/snapshots/test_installs/test_system_snapshot/system_004/control_system.yml @@ -0,0 +1,27 @@ +activeFaults: &id001 [] +active_faults: *id001 +allowedSystemModes: +- canBePermanent: true + canBeTemporary: false + systemMode: Auto +- canBePermanent: true + canBeTemporary: true + maxDuration: 1.00:00:00 + systemMode: AutoWithEco + timingMode: Duration + timingResolution: 01:00:00 +- canBePermanent: true + canBeTemporary: true + maxDuration: 99.00:00:00 + systemMode: Away + timingMode: Period + timingResolution: 1.00:00:00 +- canBePermanent: true + canBeTemporary: false + systemMode: HeatingOff +modelType: EvoTouch +systemId: '3935923' +systemModeStatus: + isPermanent: true + mode: Auto +system_mode: Auto diff --git a/tests/tests/snapshots/test_installs/test_system_snapshot/system_004/gateway.yml b/tests/tests/snapshots/test_installs/test_system_snapshot/system_004/gateway.yml new file mode 100644 index 0000000..5757ff8 --- /dev/null +++ b/tests/tests/snapshots/test_installs/test_system_snapshot/system_004/gateway.yml @@ -0,0 +1,4 @@ +active_faults: [] +gatewayId: '2820628' +isWiFi: false +mac: 00D02DF114FD diff --git a/tests/tests/snapshots/test_installs/test_system_snapshot/system_004/hot_water.yml b/tests/tests/snapshots/test_installs/test_system_snapshot/system_004/hot_water.yml new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/tests/tests/snapshots/test_installs/test_system_snapshot/system_004/hot_water.yml @@ -0,0 +1 @@ +{} diff --git a/tests/tests/snapshots/test_installs/test_system_snapshot/system_004/location.yml b/tests/tests/snapshots/test_installs/test_system_snapshot/system_004/location.yml new file mode 100644 index 0000000..76b0b58 --- /dev/null +++ b/tests/tests/snapshots/test_installs/test_system_snapshot/system_004/location.yml @@ -0,0 +1,17 @@ +country: CzechRepublic +locationId: '2664492' +locationOwner: + firstname: Jan + lastname: '********' + userId: '2224990' + username: nobody@nowhere.com +locationType: Residential +name: Summer House +timeZone: + currentOffsetMinutes: 120 + displayName: "(UTC+01:00) Praha, Bratislava, Budape\u0161\u0165, B\u011Blehrad,\ + \ Lubla\u0148" + offsetMinutes: 60 + supportsDaylightSaving: true + timeZoneId: CentralEuropeStandardTime +useDaylightSaveSwitching: true diff --git a/tests/tests/snapshots/test_installs/test_system_snapshot/system_004/system_004 b/tests/tests/snapshots/test_installs/test_system_snapshot/system_004/system_004 deleted file mode 100644 index bb42e82..0000000 --- a/tests/tests/snapshots/test_installs/test_system_snapshot/system_004/system_004 +++ /dev/null @@ -1 +0,0 @@ -{'loc': {'country': 'CzechRepublic', 'locationId': '2664492', 'locationOwner': {'userId': '2224990', 'username': 'nobody@nowhere.com', 'firstname': 'Jan', 'lastname': '********'}, 'locationType': 'Residential', 'name': 'Summer House', 'timeZone': {'timeZoneId': 'CentralEuropeStandardTime', 'displayName': '(UTC+01:00) Praha, Bratislava, Budapešť, Bělehrad, Lublaň', 'offsetMinutes': 60, 'currentOffsetMinutes': 120, 'supportsDaylightSaving': True}, 'useDaylightSaveSwitching': True}, 'gwy': {'active_faults': [], 'gatewayId': '2820628', 'isWiFi': False, 'mac': '00D02DF114FD'}, 'tcs': {'activeFaults': [], 'active_faults': [], 'allowedSystemModes': [{'systemMode': 'Auto', 'canBePermanent': True, 'canBeTemporary': False}, {'systemMode': 'AutoWithEco', 'canBePermanent': True, 'canBeTemporary': True, 'maxDuration': '1.00:00:00', 'timingResolution': '01:00:00', 'timingMode': 'Duration'}, {'systemMode': 'Away', 'canBePermanent': True, 'canBeTemporary': True, 'maxDuration': '99.00:00:00', 'timingResolution': '1.00:00:00', 'timingMode': 'Period'}, {'systemMode': 'HeatingOff', 'canBePermanent': True, 'canBeTemporary': False}], 'modelType': 'EvoTouch', 'systemId': '3935923', 'systemModeStatus': {'mode': 'Auto', 'isPermanent': True}, 'system_mode': 'Auto'}} \ No newline at end of file diff --git a/tests/tests/snapshots/test_installs/test_system_snapshot/system_004/zones.yml b/tests/tests/snapshots/test_installs/test_system_snapshot/system_004/zones.yml new file mode 100644 index 0000000..30f5a94 --- /dev/null +++ b/tests/tests/snapshots/test_installs/test_system_snapshot/system_004/zones.yml @@ -0,0 +1,72 @@ +'3935922': + activeFaults: &id001 [] + active_faults: *id001 + allowedSetpointModes: &id002 + - PermanentOverride + - FollowSchedule + - TemporaryOverride + max_heat_setpoint: 35.0 + min_heat_setpoint: 5.0 + mode: PermanentOverride + modelType: RoundWireless + name: Name 3935922 + scheduleCapabilities: + maxSwitchpointsPerDay: 6 + minSwitchpointsPerDay: 0 + setpointValueResolution: 0.5 + timingResolution: 00:10:00 + setpointCapabilities: + allowedSetpointModes: *id002 + canControlCool: false + canControlHeat: true + maxDuration: 1.00:00:00 + maxHeatSetpoint: 35.0 + minHeatSetpoint: 5.0 + timingResolution: 00:10:00 + valueResolution: 0.5 + setpointStatus: + setpointMode: PermanentOverride + targetHeatTemperature: 15.0 + target_cool_temperature: null + target_heat_temperature: 15.0 + temperature: 21.5 + temperatureStatus: + isAvailable: true + temperature: 21.5 + zoneType: Thermostat +'4368406': + activeFaults: &id003 [] + active_faults: *id003 + allowedSetpointModes: &id004 + - PermanentOverride + - FollowSchedule + - TemporaryOverride + max_heat_setpoint: 35.0 + min_heat_setpoint: 5.0 + mode: PermanentOverride + modelType: RoundWireless + name: Name 3935922 + scheduleCapabilities: + maxSwitchpointsPerDay: 6 + minSwitchpointsPerDay: 0 + setpointValueResolution: 0.5 + timingResolution: 00:10:00 + setpointCapabilities: + allowedSetpointModes: *id004 + canControlCool: false + canControlHeat: true + maxDuration: 1.00:00:00 + maxHeatSetpoint: 35.0 + minHeatSetpoint: 5.0 + timingResolution: 00:10:00 + valueResolution: 0.5 + setpointStatus: + setpointMode: PermanentOverride + targetHeatTemperature: 15.0 + target_cool_temperature: null + target_heat_temperature: 15.0 + temperature: 23.0 + temperatureStatus: + isAvailable: true + temperature: 23.0 + zoneType: Thermostat diff --git a/tests/tests/snapshots/test_installs/test_system_snapshot/system_006/control_system.yml b/tests/tests/snapshots/test_installs/test_system_snapshot/system_006/control_system.yml new file mode 100644 index 0000000..bd3f80b --- /dev/null +++ b/tests/tests/snapshots/test_installs/test_system_snapshot/system_006/control_system.yml @@ -0,0 +1,42 @@ +activeFaults: &id001 [] +active_faults: *id001 +allowedSystemModes: +- canBePermanent: true + canBeTemporary: false + systemMode: HeatingOff +- canBePermanent: true + canBeTemporary: false + systemMode: Auto +- canBePermanent: true + canBeTemporary: false + systemMode: AutoWithReset +- canBePermanent: true + canBeTemporary: true + maxDuration: 1.00:00:00 + systemMode: AutoWithEco + timingMode: Duration + timingResolution: 01:00:00 +- canBePermanent: true + canBeTemporary: true + maxDuration: 99.00:00:00 + systemMode: Away + timingMode: Period + timingResolution: 1.00:00:00 +- canBePermanent: true + canBeTemporary: true + maxDuration: 99.00:00:00 + systemMode: DayOff + timingMode: Period + timingResolution: 1.00:00:00 +- canBePermanent: true + canBeTemporary: true + maxDuration: 99.00:00:00 + systemMode: Custom + timingMode: Period + timingResolution: 1.00:00:00 +modelType: EvoTouch +systemId: '3432522' +systemModeStatus: + isPermanent: true + mode: AutoWithEco +system_mode: AutoWithEco diff --git a/tests/tests/snapshots/test_installs/test_system_snapshot/system_006/gateway.yml b/tests/tests/snapshots/test_installs/test_system_snapshot/system_006/gateway.yml new file mode 100644 index 0000000..20d664a --- /dev/null +++ b/tests/tests/snapshots/test_installs/test_system_snapshot/system_006/gateway.yml @@ -0,0 +1,4 @@ +active_faults: [] +gatewayId: '2499896' +isWiFi: false +mac: 00D02DEE4E56 diff --git a/tests/tests/snapshots/test_installs/test_system_snapshot/system_006/hot_water.yml b/tests/tests/snapshots/test_installs/test_system_snapshot/system_006/hot_water.yml new file mode 100644 index 0000000..805d6f1 --- /dev/null +++ b/tests/tests/snapshots/test_installs/test_system_snapshot/system_006/hot_water.yml @@ -0,0 +1,28 @@ +activeFaults: &id001 [] +active_faults: *id001 +allowedModes: &id002 +- FollowSchedule +- PermanentOverride +- TemporaryOverride +dhwId: '3933910' +dhwStateCapabilitiesResponse: + allowedModes: *id002 + allowedStates: + - 'On' + - 'Off' + maxDuration: 1.00:00:00 + timingResolution: 00:10:00 +mode: PermanentOverride +name: Domestic Hot Water +scheduleCapabilitiesResponse: + maxSwitchpointsPerDay: 6 + minSwitchpointsPerDay: 1 + timingResolution: 00:10:00 +state: 'Off' +stateStatus: + mode: PermanentOverride + state: 'Off' +temperature: 23.0 +temperatureStatus: + isAvailable: true + temperature: 23.0 diff --git a/tests/tests/snapshots/test_installs/test_system_snapshot/system_006/location.yml b/tests/tests/snapshots/test_installs/test_system_snapshot/system_006/location.yml new file mode 100644 index 0000000..e3b38cb --- /dev/null +++ b/tests/tests/snapshots/test_installs/test_system_snapshot/system_006/location.yml @@ -0,0 +1,16 @@ +country: UnitedKingdom +locationId: '2738909' +locationOwner: + firstname: David + lastname: '********' + userId: '2263181' + username: nobody@nowhere.com +locationType: Residential +name: My Home +timeZone: + currentOffsetMinutes: 60 + displayName: (UTC+00:00) Dublin, Edinburgh, Lisbon, London + offsetMinutes: 0 + supportsDaylightSaving: true + timeZoneId: GMTStandardTime +useDaylightSaveSwitching: true diff --git a/tests/tests/snapshots/test_installs/test_system_snapshot/system_006/system_006 b/tests/tests/snapshots/test_installs/test_system_snapshot/system_006/system_006 deleted file mode 100644 index 11f34d0..0000000 --- a/tests/tests/snapshots/test_installs/test_system_snapshot/system_006/system_006 +++ /dev/null @@ -1 +0,0 @@ -{'loc': {'country': 'UnitedKingdom', 'locationId': '2738909', 'locationOwner': {'userId': '2263181', 'username': 'nobody@nowhere.com', 'firstname': 'David', 'lastname': '********'}, 'locationType': 'Residential', 'name': 'My Home', 'timeZone': {'timeZoneId': 'GMTStandardTime', 'displayName': '(UTC+00:00) Dublin, Edinburgh, Lisbon, London', 'offsetMinutes': 0, 'currentOffsetMinutes': 60, 'supportsDaylightSaving': True}, 'useDaylightSaveSwitching': True}, 'gwy': {'active_faults': [], 'gatewayId': '2499896', 'isWiFi': False, 'mac': '00D02DEE4E56'}, 'tcs': {'activeFaults': [], 'active_faults': [], 'allowedSystemModes': [{'systemMode': 'HeatingOff', 'canBePermanent': True, 'canBeTemporary': False}, {'systemMode': 'Auto', 'canBePermanent': True, 'canBeTemporary': False}, {'systemMode': 'AutoWithReset', 'canBePermanent': True, 'canBeTemporary': False}, {'systemMode': 'AutoWithEco', 'canBePermanent': True, 'canBeTemporary': True, 'maxDuration': '1.00:00:00', 'timingResolution': '01:00:00', 'timingMode': 'Duration'}, {'systemMode': 'Away', 'canBePermanent': True, 'canBeTemporary': True, 'maxDuration': '99.00:00:00', 'timingResolution': '1.00:00:00', 'timingMode': 'Period'}, {'systemMode': 'DayOff', 'canBePermanent': True, 'canBeTemporary': True, 'maxDuration': '99.00:00:00', 'timingResolution': '1.00:00:00', 'timingMode': 'Period'}, {'systemMode': 'Custom', 'canBePermanent': True, 'canBeTemporary': True, 'maxDuration': '99.00:00:00', 'timingResolution': '1.00:00:00', 'timingMode': 'Period'}], 'modelType': 'EvoTouch', 'systemId': '3432522', 'systemModeStatus': {'mode': 'AutoWithEco', 'isPermanent': True}, 'system_mode': 'AutoWithEco'}} \ No newline at end of file diff --git a/tests/tests/snapshots/test_installs/test_system_snapshot/system_006/zones.yml b/tests/tests/snapshots/test_installs/test_system_snapshot/system_006/zones.yml new file mode 100644 index 0000000..2787095 --- /dev/null +++ b/tests/tests/snapshots/test_installs/test_system_snapshot/system_006/zones.yml @@ -0,0 +1,323 @@ +'3432521': + activeFaults: &id001 [] + active_faults: *id001 + allowedSetpointModes: &id002 + - PermanentOverride + - FollowSchedule + - TemporaryOverride + max_heat_setpoint: 35.0 + min_heat_setpoint: 5.0 + mode: PermanentOverride + modelType: HeatingZone + name: Dead Zone + scheduleCapabilities: + maxSwitchpointsPerDay: 6 + minSwitchpointsPerDay: 1 + setpointValueResolution: 0.5 + timingResolution: 00:10:00 + setpointCapabilities: + allowedSetpointModes: *id002 + canControlCool: false + canControlHeat: true + maxDuration: 1.00:00:00 + maxHeatSetpoint: 35.0 + minHeatSetpoint: 5.0 + timingResolution: 00:10:00 + valueResolution: 0.5 + setpointStatus: + setpointMode: PermanentOverride + targetHeatTemperature: 5.0 + target_cool_temperature: null + target_heat_temperature: 5.0 + temperature: null + temperatureStatus: + isAvailable: false + zoneType: RadiatorZone +'3432576': + activeFaults: &id003 [] + active_faults: *id003 + allowedSetpointModes: &id004 + - PermanentOverride + - FollowSchedule + - TemporaryOverride + max_heat_setpoint: 35.0 + min_heat_setpoint: 5.0 + mode: FollowSchedule + modelType: HeatingZone + name: Main Room + scheduleCapabilities: + maxSwitchpointsPerDay: 6 + minSwitchpointsPerDay: 1 + setpointValueResolution: 0.5 + timingResolution: 00:10:00 + setpointCapabilities: + allowedSetpointModes: *id004 + canControlCool: false + canControlHeat: true + maxDuration: 1.00:00:00 + maxHeatSetpoint: 35.0 + minHeatSetpoint: 5.0 + timingResolution: 00:10:00 + valueResolution: 0.5 + setpointStatus: + setpointMode: FollowSchedule + targetHeatTemperature: 17.0 + target_cool_temperature: null + target_heat_temperature: 17.0 + temperature: 19.0 + temperatureStatus: + isAvailable: true + temperature: 19.0 + zoneType: RadiatorZone +'3432577': + activeFaults: &id005 [] + active_faults: *id005 + allowedSetpointModes: &id006 + - PermanentOverride + - FollowSchedule + - TemporaryOverride + max_heat_setpoint: 35.0 + min_heat_setpoint: 5.0 + mode: FollowSchedule + modelType: HeatingZone + name: Front Room + scheduleCapabilities: + maxSwitchpointsPerDay: 6 + minSwitchpointsPerDay: 1 + setpointValueResolution: 0.5 + timingResolution: 00:10:00 + setpointCapabilities: + allowedSetpointModes: *id006 + canControlCool: false + canControlHeat: true + maxDuration: 1.00:00:00 + maxHeatSetpoint: 35.0 + minHeatSetpoint: 5.0 + timingResolution: 00:10:00 + valueResolution: 0.5 + setpointStatus: + setpointMode: FollowSchedule + targetHeatTemperature: 17.0 + target_cool_temperature: null + target_heat_temperature: 17.0 + temperature: 19.0 + temperatureStatus: + isAvailable: true + temperature: 19.0 + zoneType: RadiatorZone +'3432578': + activeFaults: &id007 [] + active_faults: *id007 + allowedSetpointModes: &id008 + - PermanentOverride + - FollowSchedule + - TemporaryOverride + max_heat_setpoint: 35.0 + min_heat_setpoint: 5.0 + mode: FollowSchedule + modelType: HeatingZone + name: Kitchen + scheduleCapabilities: + maxSwitchpointsPerDay: 6 + minSwitchpointsPerDay: 1 + setpointValueResolution: 0.5 + timingResolution: 00:10:00 + setpointCapabilities: + allowedSetpointModes: *id008 + canControlCool: false + canControlHeat: true + maxDuration: 1.00:00:00 + maxHeatSetpoint: 35.0 + minHeatSetpoint: 5.0 + timingResolution: 00:10:00 + valueResolution: 0.5 + setpointStatus: + setpointMode: FollowSchedule + targetHeatTemperature: 17.0 + target_cool_temperature: null + target_heat_temperature: 17.0 + temperature: 20.0 + temperatureStatus: + isAvailable: true + temperature: 20.0 + zoneType: RadiatorZone +'3432579': + activeFaults: &id009 [] + active_faults: *id009 + allowedSetpointModes: &id010 + - PermanentOverride + - FollowSchedule + - TemporaryOverride + max_heat_setpoint: 35.0 + min_heat_setpoint: 5.0 + mode: FollowSchedule + modelType: HeatingZone + name: Bathroom Dn + scheduleCapabilities: + maxSwitchpointsPerDay: 6 + minSwitchpointsPerDay: 1 + setpointValueResolution: 0.5 + timingResolution: 00:10:00 + setpointCapabilities: + allowedSetpointModes: *id010 + canControlCool: false + canControlHeat: true + maxDuration: 1.00:00:00 + maxHeatSetpoint: 35.0 + minHeatSetpoint: 5.0 + timingResolution: 00:10:00 + valueResolution: 0.5 + setpointStatus: + setpointMode: FollowSchedule + targetHeatTemperature: 16.0 + target_cool_temperature: null + target_heat_temperature: 16.0 + temperature: 20.0 + temperatureStatus: + isAvailable: true + temperature: 20.0 + zoneType: RadiatorZone +'3432580': + activeFaults: &id011 [] + active_faults: *id011 + allowedSetpointModes: &id012 + - PermanentOverride + - FollowSchedule + - TemporaryOverride + max_heat_setpoint: 35.0 + min_heat_setpoint: 5.0 + mode: FollowSchedule + modelType: HeatingZone + name: Main Bedroom + scheduleCapabilities: + maxSwitchpointsPerDay: 6 + minSwitchpointsPerDay: 1 + setpointValueResolution: 0.5 + timingResolution: 00:10:00 + setpointCapabilities: + allowedSetpointModes: *id012 + canControlCool: false + canControlHeat: true + maxDuration: 1.00:00:00 + maxHeatSetpoint: 35.0 + minHeatSetpoint: 5.0 + timingResolution: 00:10:00 + valueResolution: 0.5 + setpointStatus: + setpointMode: FollowSchedule + targetHeatTemperature: 16.0 + target_cool_temperature: null + target_heat_temperature: 16.0 + temperature: 21.0 + temperatureStatus: + isAvailable: true + temperature: 21.0 + zoneType: RadiatorZone +'3449703': + activeFaults: &id013 [] + active_faults: *id013 + allowedSetpointModes: &id014 + - PermanentOverride + - FollowSchedule + - TemporaryOverride + max_heat_setpoint: 35.0 + min_heat_setpoint: 5.0 + mode: FollowSchedule + modelType: HeatingZone + name: Kids Room + scheduleCapabilities: + maxSwitchpointsPerDay: 6 + minSwitchpointsPerDay: 1 + setpointValueResolution: 0.5 + timingResolution: 00:10:00 + setpointCapabilities: + allowedSetpointModes: *id014 + canControlCool: false + canControlHeat: true + maxDuration: 1.00:00:00 + maxHeatSetpoint: 35.0 + minHeatSetpoint: 5.0 + timingResolution: 00:10:00 + valueResolution: 0.5 + setpointStatus: + setpointMode: FollowSchedule + targetHeatTemperature: 17.0 + target_cool_temperature: null + target_heat_temperature: 17.0 + temperature: 19.5 + temperatureStatus: + isAvailable: true + temperature: 19.5 + zoneType: RadiatorZone +'3449740': + activeFaults: &id015 [] + active_faults: *id015 + allowedSetpointModes: &id016 + - PermanentOverride + - FollowSchedule + - TemporaryOverride + max_heat_setpoint: 35.0 + min_heat_setpoint: 5.0 + mode: FollowSchedule + modelType: HeatingZone + name: Bathroom Up + scheduleCapabilities: + maxSwitchpointsPerDay: 6 + minSwitchpointsPerDay: 1 + setpointValueResolution: 0.5 + timingResolution: 00:10:00 + setpointCapabilities: + allowedSetpointModes: *id016 + canControlCool: false + canControlHeat: true + maxDuration: 1.00:00:00 + maxHeatSetpoint: 35.0 + minHeatSetpoint: 5.0 + timingResolution: 00:10:00 + valueResolution: 0.5 + setpointStatus: + setpointMode: FollowSchedule + targetHeatTemperature: 16.5 + target_cool_temperature: null + target_heat_temperature: 16.5 + temperature: 21.5 + temperatureStatus: + isAvailable: true + temperature: 21.5 + zoneType: RadiatorZone +'3450733': + activeFaults: &id017 [] + active_faults: *id017 + allowedSetpointModes: &id018 + - PermanentOverride + - FollowSchedule + - TemporaryOverride + max_heat_setpoint: 35.0 + min_heat_setpoint: 5.0 + mode: PermanentOverride + modelType: HeatingZone + name: Spare Room + scheduleCapabilities: + maxSwitchpointsPerDay: 6 + minSwitchpointsPerDay: 1 + setpointValueResolution: 0.5 + timingResolution: 00:10:00 + setpointCapabilities: + allowedSetpointModes: *id018 + canControlCool: false + canControlHeat: true + maxDuration: 1.00:00:00 + maxHeatSetpoint: 35.0 + minHeatSetpoint: 5.0 + timingResolution: 00:10:00 + valueResolution: 0.5 + setpointStatus: + setpointMode: PermanentOverride + targetHeatTemperature: 14.0 + target_cool_temperature: null + target_heat_temperature: 14.0 + temperature: 19.5 + temperatureStatus: + isAvailable: true + temperature: 19.5 + zoneType: RadiatorZone From 96ff87e9d1f171259f4ca406daced2b2c43484ae Mon Sep 17 00:00:00 2001 From: David Bonnes Date: Wed, 28 Aug 2024 19:44:56 +0100 Subject: [PATCH 04/11] extend snapshot domain --- tests/tests/test_installs.py | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/tests/tests/test_installs.py b/tests/tests/test_installs.py index 213641c..f3ac3d0 100644 --- a/tests/tests/test_installs.py +++ b/tests/tests/test_installs.py @@ -4,9 +4,11 @@ from __future__ import annotations from pathlib import Path +from typing import Any from unittest.mock import patch import pytest +import yaml from pytest_snapshot.plugin import Snapshot # type: ignore[import-untyped] import evohomeasync2 as evo2 @@ -29,6 +31,13 @@ async def test_system_snapshot( # type: ignore[no-any-unimported] ) -> None: """Test the user account schema against the corresponding JSON.""" + def obj_to_dict(obj: object) -> dict[str, Any]: + return { + attr: getattr(obj, attr) + for attr in get_property_methods(obj) + if attr not in ("zoneId", "zone_type") + } + with patch("evohomeasync2.broker.Broker.get", broker_get(install)): evo = evo2.EvohomeClient(token_manager, token_manager.websession) @@ -37,13 +46,16 @@ async def test_system_snapshot( # type: ignore[no-any-unimported] assert evo loc = evo.locations[0] + snapshot.assert_match(yaml.dump(obj_to_dict(loc), indent=4), "location.yml") + gwy = loc._gateways[0] + snapshot.assert_match(yaml.dump(obj_to_dict(gwy), indent=4), "gateway.yml") + tcs = gwy._control_systems[0] + snapshot.assert_match(yaml.dump(obj_to_dict(tcs), indent=4), "control_system.yml") - value = { - "loc": {attr: getattr(loc, attr) for attr in get_property_methods(loc)}, - "gwy": {attr: getattr(gwy, attr) for attr in get_property_methods(gwy)}, - "tcs": {attr: getattr(tcs, attr) for attr in get_property_methods(tcs)}, - } + dhw = tcs.hotwater + snapshot.assert_match(yaml.dump(obj_to_dict(dhw), indent=4), "hot_water.yml") - snapshot.assert_match(str(value), install) + zones = {z.zoneId: obj_to_dict(z) for z in tcs._zones} + snapshot.assert_match(yaml.dump(zones, indent=4), "zones.yml") From ad0301d4a168ff6d4b4ad2449311f7dac295686c Mon Sep 17 00:00:00 2001 From: David Bonnes Date: Sat, 31 Aug 2024 09:24:22 +0100 Subject: [PATCH 05/11] update dependencies --- .pre-commit-config.yaml | 4 ++-- requirements.txt | 3 ++- requirements_cli.txt | 2 +- requirements_dev.txt | 14 ++++++++------ 4 files changed, 13 insertions(+), 10 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 1e65ce8..8b9f157 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -5,7 +5,7 @@ exclude: (^.secrets/|^docs/) repos: - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.6.2 + rev: v0.6.3 hooks: - id: ruff # linter - id: ruff-format # formatter @@ -26,7 +26,7 @@ repos: - id: check-toml - id: check-yaml - id: debug-statements - # id: end-of-file-fixer + # id: end-of-file-fixer # not for snapshots - id: mixed-line-ending - id: trailing-whitespace diff --git a/requirements.txt b/requirements.txt index 1a514fc..e4d54d7 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,6 @@ -# last checked/updated: 2024/06/24 (c.f. HA 2023.6.4) +# last checked/updated: 2024/08/31 (c.f. HA 2023.10.x) # +# used by library (but not enough for CLI) aiohttp>=3.10.5 voluptuous>=0.15.2 diff --git a/requirements_cli.txt b/requirements_cli.txt index 42414b3..faecf49 100644 --- a/requirements_cli.txt +++ b/requirements_cli.txt @@ -1,4 +1,4 @@ -# last checked/updated: 2024/06/24 +# last checked/updated: 2024/08/31 # # for using the the library via the CLI, client.py (includes requirements.txt) diff --git a/requirements_dev.txt b/requirements_dev.txt index 04a0ceb..a1a9ff3 100644 --- a/requirements_dev.txt +++ b/requirements_dev.txt @@ -1,4 +1,4 @@ -# last checked/updated: 2024/06/24 +# last checked/updated: 2024/08/31 # # for using the the library via the CLI, client.py (includes requirements.txt) @@ -6,22 +6,24 @@ # used for development (linting) pre-commit>=3.8.0 - ruff>=0.6.2 + ruff>=0.6.3 # used for development (typing) - mypy>=1.11.1 + mypy>=1.11.2 types-aiofiles>=24.1.0 # used only by CLI + types-PyYAML>=6.0.12 voluptuous>=0.15.2 # used for testing pytest>=8.3.2 - pytest-asyncio>=0.23.7 - pytest-xdist>=3.6.1 + pytest-asyncio>=0.24.0 + pytest-snapshot>=0.9.0 pytest-sugar>=1.0.0 + pytest-xdist>=3.6.1 +# pytest-cov # used for testing at runtime debugpy >= 1.8.5 -# typeguard >= 4.1.5 # optional # used for build/deploy hatch>=1.12.0 # is not core HA From efa47e9a24a10a414da3a81477f34e85a0a56846 Mon Sep 17 00:00:00 2001 From: David Bonnes Date: Sat, 31 Aug 2024 11:01:32 +0100 Subject: [PATCH 06/11] linting --- .pre-commit-config.yaml | 8 -------- pyproject.toml | 11 ++++++++++- src/evohomeasync2/client.py | 2 +- tests/tests/conftest.py | 4 ++-- tests/tests/test_installs.py | 2 +- tests/tests_rf/test_v2_apis.py | 4 ++-- 6 files changed, 16 insertions(+), 15 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 8b9f157..4d6e553 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -10,14 +10,6 @@ repos: - id: ruff # linter - id: ruff-format # formatter - - repo: https://github.com/pre-commit/pygrep-hooks - rev: v1.10.0 - hooks: - - id: python-check-blanket-noqa - - id: python-check-blanket-type-ignore - - id: python-no-eval - - id: python-no-log-warn - - repo: https://github.com/pre-commit/pre-commit-hooks rev: v4.6.0 hooks: diff --git a/pyproject.toml b/pyproject.toml index f232a48..d04deb6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -157,13 +157,22 @@ "B", # flake8-bugbear "E", # pycodestyle "F", # Pyflakes + "G", # flake8-logging-format "I", # isort + "LOG", # flake8-logging + "PGH", # pygrep hooks "SIM", # flake8-simplify + "S", # flake8-bandit "UP", # pyupgrade ] - ignore = ["B011", "E501", "SIM102", "SIM114", "UP009"] +# "FBT", # flake8-boolean-trap +# "PT", # flake8-pytest-style +# "RET", # flake8-return + + ignore = ["B011", "G004", "E501", "S101", "SIM102", "SIM114", "UP009"] # B011 - Do not call assert False since python -O removes these calls # E501 - Line too long + # G004 - Logging statement uses f-string # SIM102 - Use a single `if` statement instead of nested `if` statements # SIM114 - Combine `if` branches using logical `or` operator # UP009 - UTF-8 encoding declaration is unnecessary diff --git a/src/evohomeasync2/client.py b/src/evohomeasync2/client.py index 3c9f6de..362b0e4 100644 --- a/src/evohomeasync2/client.py +++ b/src/evohomeasync2/client.py @@ -27,7 +27,7 @@ # all _DBG_* flags should be False for published code _DBG_DEBUG_CLI = False # for debugging of click -DEBUG_ADDR = "0.0.0.0" +DEBUG_ADDR = "0.0.0.0" # noqa: S104 DEBUG_PORT = 5679 SZ_CLEANUP: Final = "cleanup" diff --git a/tests/tests/conftest.py b/tests/tests/conftest.py index cddc8ad..b2a204b 100644 --- a/tests/tests/conftest.py +++ b/tests/tests/conftest.py @@ -44,9 +44,9 @@ class TokenManager(AbstractTokenManager): async def restore_access_token(self) -> None: """Restore the access token from the cache.""" - self.access_token = "access_token" # will always be valid + self.access_token = "access_token" # noqa: S105 self.access_token_expires = dt.max - self.refresh_token = "refresh_token" + self.refresh_token = "refresh_token" # noqa: S105 async def save_access_token(self) -> None: """Save the access token to the cache.""" diff --git a/tests/tests/test_installs.py b/tests/tests/test_installs.py index f3ac3d0..8c9cf4b 100644 --- a/tests/tests/test_installs.py +++ b/tests/tests/test_installs.py @@ -35,7 +35,7 @@ def obj_to_dict(obj: object) -> dict[str, Any]: return { attr: getattr(obj, attr) for attr in get_property_methods(obj) - if attr not in ("zoneId", "zone_type") + if attr not in ("zoneId", "zone_type") # excl. deprecated attrs } with patch("evohomeasync2.broker.Broker.get", broker_get(install)): diff --git a/tests/tests_rf/test_v2_apis.py b/tests/tests_rf/test_v2_apis.py index f919842..af33038 100644 --- a/tests/tests_rf/test_v2_apis.py +++ b/tests/tests_rf/test_v2_apis.py @@ -38,8 +38,8 @@ async def _test_basics_apis(evo: evo2.EvohomeClient) -> None: assert isinstance(evo.token_manager.refresh_token, str) if not _DBG_USE_REAL_AIOHTTP: - assert evo.token_manager.access_token == "ncWMqPh2yGgAqc..." - assert evo.token_manager.refresh_token == "Ryx9fL34Z5GcNV..." + assert evo.token_manager.access_token == "ncWMqPh2yGgAqc..." # noqa: S105 + assert evo.token_manager.refresh_token == "Ryx9fL34Z5GcNV..." # noqa: S105 access_token = evo.token_manager.access_token refresh_token = evo.token_manager.refresh_token From ae08f37caa7de49711f7adf8437df453fee27ba9 Mon Sep 17 00:00:00 2001 From: David Bonnes Date: Sat, 31 Aug 2024 11:07:13 +0100 Subject: [PATCH 07/11] correct workflow branch names --- .github/workflows/check-lint.yml | 4 ++-- .github/workflows/check-test.yml | 4 ++-- .github/workflows/check-type.yml | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/check-lint.yml b/.github/workflows/check-lint.yml index 7cb5839..e751ca5 100644 --- a/.github/workflows/check-lint.yml +++ b/.github/workflows/check-lint.yml @@ -3,7 +3,7 @@ name: Linting on: push: - branches: [ "master", "stable" ] + branches: [ "master", "dev" ] paths: [ ".github/workflows/check-lint.yml", "src/**.py", @@ -13,7 +13,7 @@ on: ] pull_request: - branches: [ "master", "stable" ] + branches: [ "master", "dev" ] paths: [ ".github/workflows/check-lint.yml", "src/**.py", diff --git a/.github/workflows/check-test.yml b/.github/workflows/check-test.yml index c4cc20b..317bf10 100644 --- a/.github/workflows/check-test.yml +++ b/.github/workflows/check-test.yml @@ -3,7 +3,7 @@ name: Testing on: push: - branches: [ "master", "stable" ] + branches: [ "master", "dev" ] paths: [ ".github/workflows/check-test.yml", "src/**.py", @@ -13,7 +13,7 @@ on: ] pull_request: - branches: [ "master", "stable" ] + branches: [ "master", "dev" ] paths: [ ".github/workflows/check-test.yml", "src/**.py", diff --git a/.github/workflows/check-type.yml b/.github/workflows/check-type.yml index b491e41..31a673f 100644 --- a/.github/workflows/check-type.yml +++ b/.github/workflows/check-type.yml @@ -3,7 +3,7 @@ name: Typing on: push: - branches: [ "master", "stable" ] + branches: [ "master", "dev" ] paths: [ ".github/workflows/check-type.yml", "src/**.py", @@ -14,7 +14,7 @@ on: ] pull_request: - branches: [ "master", "stable" ] + branches: [ "master", "dev" ] paths: [ ".github/workflows/check-type.yml", "src/**.py", From 9cfa3fc130c5604bbfacbc25acefa2a9bdf9f0d6 Mon Sep 17 00:00:00 2001 From: David Bonnes Date: Sat, 31 Aug 2024 11:34:59 +0100 Subject: [PATCH 08/11] requires-python = ">=3.12" --- .github/workflows/check-test.yml | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/check-test.yml b/.github/workflows/check-test.yml index 317bf10..1a93be4 100644 --- a/.github/workflows/check-test.yml +++ b/.github/workflows/check-test.yml @@ -35,7 +35,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ["3.11", "3.12"] + python-version: ["3.12", "3.13"] steps: - uses: actions/checkout@v4.1.7 diff --git a/pyproject.toml b/pyproject.toml index d04deb6..9e32e6d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -19,7 +19,7 @@ "aiohttp>=3.9.5", "voluptuous>=0.13.1", ] - requires-python = ">=3.11" + requires-python = ">=3.12" license = "Apache-2.0" keywords = [ From 847ac3cec40676d0029d37c4701d4ac0e52040f0 Mon Sep 17 00:00:00 2001 From: David Bonnes Date: Sat, 31 Aug 2024 11:52:11 +0100 Subject: [PATCH 09/11] tweak actions for 3.13 --- .github/workflows/check-lint.yml | 1 + .github/workflows/check-test.yml | 3 ++- .github/workflows/check-type.yml | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/check-lint.yml b/.github/workflows/check-lint.yml index e751ca5..8e613f9 100644 --- a/.github/workflows/check-lint.yml +++ b/.github/workflows/check-lint.yml @@ -41,6 +41,7 @@ jobs: uses: actions/setup-python@v5.1.0 with: python-version: ${{ matrix.python-version }} + check-latest: true - name: Install dependencies run: | diff --git a/.github/workflows/check-test.yml b/.github/workflows/check-test.yml index 1a93be4..b7774f6 100644 --- a/.github/workflows/check-test.yml +++ b/.github/workflows/check-test.yml @@ -35,7 +35,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ["3.12", "3.13"] + python-version: ["3.12", "3.13.0-rc.1"] steps: - uses: actions/checkout@v4.1.7 @@ -44,6 +44,7 @@ jobs: uses: actions/setup-python@v5.1.0 with: python-version: ${{ matrix.python-version }} + check-latest: true - name: Install dependencies run: | diff --git a/.github/workflows/check-type.yml b/.github/workflows/check-type.yml index 31a673f..3a49a0a 100644 --- a/.github/workflows/check-type.yml +++ b/.github/workflows/check-type.yml @@ -43,6 +43,7 @@ jobs: uses: actions/setup-python@v5.1.0 with: python-version: ${{ matrix.python-version }} + check-latest: true - name: Install dependencies run: | From 7622dd34015adafab37269b25a2dcbe78112b319 Mon Sep 17 00:00:00 2001 From: David Bonnes Date: Sat, 31 Aug 2024 11:54:10 +0100 Subject: [PATCH 10/11] fix linter action --- .github/workflows/check-type.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/check-type.yml b/.github/workflows/check-type.yml index 3a49a0a..fc3a638 100644 --- a/.github/workflows/check-type.yml +++ b/.github/workflows/check-type.yml @@ -52,6 +52,6 @@ jobs: pip install -r requirements_dev.txt - name: Check with mypy - run: mypy + run: mypy --enable-incomplete-feature=NewGenericSyntax - run: echo "🍏 This job's status is ${{ job.status }}." From 7b70432b9289253cc5ea01434f60b21e579f13c5 Mon Sep 17 00:00:00 2001 From: David Bonnes Date: Sat, 31 Aug 2024 12:21:45 +0100 Subject: [PATCH 11/11] bump to 1.05 --- src/evohomeasync/__init__.py | 2 +- src/evohomeasync2/__init__.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/evohomeasync/__init__.py b/src/evohomeasync/__init__.py index aad559e..71ae7b5 100644 --- a/src/evohomeasync/__init__.py +++ b/src/evohomeasync/__init__.py @@ -17,4 +17,4 @@ RequestFailed, ) -__version__ = "1.0.4" +__version__ = "1.0.5" diff --git a/src/evohomeasync2/__init__.py b/src/evohomeasync2/__init__.py index 4b73276..23068e6 100644 --- a/src/evohomeasync2/__init__.py +++ b/src/evohomeasync2/__init__.py @@ -25,4 +25,4 @@ from .location import Location # noqa: F401 from .zone import Zone # noqa: F401 -__version__ = "1.0.4" +__version__ = "1.0.5"