Coder Social home page Coder Social logo

thomasgermain / vaillant-component Goto Github PK

View Code? Open in Web Editor NEW
136.0 14.0 24.0 221 KB

Multimatic integration for Home Assistant (also compatible with sensoAPP)

License: MIT License

Python 100.00%
home-automation home-assistant home-assistant-component vaillant

vaillant-component's Introduction

⚠️ The multimatic API is not accessible anymore (or will be soon). The integration with myVaillant is here: mypyllant-component. This integration will still work if you haven't migrated yet. But once you migrated, you should switch to the myVaillant one.

hacs_badge GitHub release (latest by date)

Multimatic integration

Please note that this integration is still in beta test, so I may do (unwanted) breaking changes.

Ideas are welcome ! Don't hesitate to create issue to suggest something, it will be really appreciated.

This integration is also compatible with sensoAPP and has been tested with the vr920 and vr921 devices.

Installations

  • Through HACS custom repositories !
  • Otherwise, download the zip from the latest release and copy multimatic folder and put it inside your custom_components folder.

You can configure it through the UI using integration. You have to provide your username and password (same as multimatic or senso app), if you have multiple serial numbers, you can choose for which number serial number you want the integration. You can create multiple instance of the integration with different serial number (This is still a beta feature).

It is strongly recommended using a dedicated user for HA, for 2 reasons:

  • As usual for security reason, if your HA got compromised somehow, you know which user to block
  • I cannot confirm it, but it seems multimatic and senso API only accept the same user to be connected at the same time

Changelog

See releases details

Provided entities

  • 1 water_heater entity, if any water heater: water_heater.<water heater id>, basically water_heater.control_dhw
  • 1 climate entity per zone (expect if the zone is controlled by room) climate.<zone id>
  • 1 climate entity per room climate.<room name>
  • 1 fan entity fan.<ventilation_id>
  • 1 binary_sensor entity binary_sensor.control_dhw reflecting if the circulation is on or off
  • 1 binary_sensor entity climate.<room name>_window per room reflecting the state of the "open window" in a room (this is a feature of the multimatic API, if the temperature is going down pretty fast, the API assumes there is an open window and heating stops)
  • 1 binary_sensor entity climate.<sgtin>_lockper device reflecting if valves are "child locked" or not
  • 1 binary_sensor entity binary_sensor.<sgtin>_battery reflecting battery level for each device (VR50, VR51) in the system
  • 1 binary_sensor entity binary_sensor.<sgtin>_battery reflecting connectivity for each device (VR50, VR51) in the system
  • 1 binary_sensor entity binary_sensor.multimtic_system_updateto know if there is an update pending
  • 1 binary_sensor entity binary_sensor.multimtic_system_online to know if the vr900/920 is connected to the internet
  • 1 binary_sensor entity binary_sensor.<boiler model> to know if there is an error at the boiler. Some boiler does not provide this information, so entity won't be available.
  • 1 temperature sensor sensor.outdoor_temperature for outdoor temperature
  • 1 sensor for each report in live_report (boiler temperature, boiler water pressure, etc.)
  • 1 binary sensor binary_sensor.multimtic_quick_mode to know a quick mode is running on
  • 1 binary sensor binary_sensor.multimtic_holiday to know the holiday mode is on/off
  • 1 binary sensor binary_sensor.multimatic_errorsindicating if there are errors coming from the API (if on, details are in state_attributes)

Provided devices

  • 1 device per VR50 or VR51
  • 1 device for the boiler (if supported). Some boilers don't provide enough information to be able to create a device in HA.
  • 1 device for the gateway (like VR920)
  • 1 "multimatic" (VRC700) device (the water pressure is linked to the VRC 700 inside the multimatic API)
  • hot water circuit
  • heating circuit

For the climate and water heater entities, you can also find

  • the 'real multimatic mode' running on (AUTO, MANUAL, DAY, etc)

For the boiler error entity, you can also find

  • the last update (this is not the last HA update, this is the last time multimatic checks the boiler)
  • the status code (these can be found in your documentation)
  • the title (human-readable description of the status code)

For the binary_sensor.multimtic_quick_mode, when on, you have the current quick mode name is available For the binary_sensor.multimtic_holiday, when on, you have the start date, end date and target temperature

Provided services

  • multimatic.set_holiday_mode to set the holiday mode (see services in HA ui to get the params)
  • multimatic.remove_holiday_mode .. I guess you get it
  • multimatic.set_quick_mode to set a quick mode
  • multimatic.remove_quick_mode don't tell me you don't get it
  • multimatic.set_quick_veto to set a quick veto for a climate entity
  • multimatic.remove_quick_veto to remove a quick veto for a climate entity
  • multimatic.request_hvac_update to tell multimatic API to fetch data from your installation and made them available in the API
  • multimatic.set_ventilation_day_level to set ventilation day level
  • multimatic.set_ventilation_night_level to set ventilation night level
  • multimatic.set_datetime to set the current date time of the system

This will allow you to create some buttons in UI to activate/deactivate quick mode or holiday mode with a single click

Expected behavior

On room climate:

Changing temperature while ...

  • MANUAL mode -> it simply changes target temperature
  • other modes -> it creates a quick_veto (duration = 3 hours) (it's also removing holiday or quick mode)

Modes mapping:

  • AUTO -> HVAC_MODE_AUTO & PRESET_COMFORT
  • OFF -> HVAC_MODE_OFF & no preset
  • QUICK_VETO -> hvac depends on state & PRESET_QUICK_VETO (custom)
  • QM_SYSTEM_OFF -> HVAC_MODE_OFF & PRESET_SYSTEM_OFF (custom)
  • HOLIDAY -> HVAC_MODE_OFF & PRESET_HOLIDAY (custom)
  • MANUAL -> no hvac & PRESET_MANUAL (custom)

On zone climate:

  • Changing temperature will lead to a quick veto with selected temperature for 6 hours (quick veto duration is not configurable for a zone)

Modes mapping:

Vaillant Mode HA Mode
AUTO HVAC_MODE_AUTO & PRESET_COMFORT
DAY no hvac & PRESET_DAY (custom)
NIGHT no hvac & PRESET_SLEEP
OFF HVAC_MODE_OFF & no preset
ON (= cooling ON) no hvac & PRESET_COOLING_ON (custom)
QUICK_VETO depends on the state & PRESET_QUICK_VETO (custom)
QM_ONE_DAY_AT_HOME HVAC_MODE_AUTO & PRESET_HOME
QM_PARTY no hvac & PRESET_PARTY (custom)
QM_VENTILATION_BOOST HVAC_MODE_FAN_ONLY & no preset
QM_ONE_DAY_AWAY HVAC_MODE_OFF & PRESET_AWAY
QM_SYSTEM_OFF HVAC_MODE_OFF & PRESET_SYSTEM_OFF (custom)
HOLIDAY HVAC_MODE_OFF & PRESET_HOLIDAY (custom)
QM_COOLING_FOR_X_DAYS no hvac & PRESET_COOLING_FOR_X_DAYS

DHW climate

Vaillant Mode HA HVAC HA preset
AUTO AUTO PRESET_COMFORT
OFF OFF PRESET_NONE
HOLIDAY (quick mode) OFF PRESET_AWAY
ONE_DAY_AWAY (quick mode) OFF PRESET_AWAY
SYSTEM_OFF (quick mode) OFF PRESET_SYSTEM_OFF
HOTWATER_BOOST (quick mode) HEAT PRESET_BOOST
PARTY (quick mode) OFF PRESET_HOME
ON HEAT PRESET_NONE

Available HVAC mode

HVAC mode Multimatic mode
AUTO AUTO
OFF OFF
HEAT ON

Available preset mode

preset mode Multimatic mode
PRESET_COMFORT AUTO
PRESET_BOOST HOTWATER_BOOST (quick mode)

Buy Me A Coffee

vaillant-component's People

Contributors

h4de5 avatar mdresen avatar mrbeepoint avatar pfriedrich84 avatar sylvainvh avatar thomasgermain avatar vit- avatar wrt54g avatar xaviergriffon avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

vaillant-component's Issues

ActiveFunction KeyError None

The integration crashes within few minutes after startup with the following exception:

Unexpected error fetching multimatic data: None
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 151, in async_refresh
    self.data = await self._async_update_data()
  File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 139, in _async_update_data
    return await self.update_method()
  File "/config/custom_components/multimatic/hub.py", line 104, in _fetch_data
    system = await self._manager.get_system()
  File "/usr/local/lib/python3.8/site-packages/pymultimatic/systemmanager.py", line 97, in get_system
    zones = mapper.map_zones(full_system)
  File "/usr/local/lib/python3.8/site-packages/pymultimatic/model/mapper.py", line 219, in map_zones
    zone = map_zone(raw_zone)
  File "/usr/local/lib/python3.8/site-packages/pymultimatic/model/mapper.py", line 238, in map_zone
    active_function = ActiveFunction[configuration.get("active_function")]
  File "/usr/local/lib/python3.8/enum.py", line 387, in __getitem__
    return cls._member_map_[name]
KeyError: None

Hotwater without timeprogram

With a VR900 it can't seem to create all the sensors:

2021-06-22 15:47:25 ERROR (MainThread) [homeassistant.components.binary_sensor] Error while setting up multimatic platform for binary_sensor
Traceback (most recent call last):
  File "/opt/homeassistant/lib/python3.8/site-packages/homeassistant/helpers/entity_platform.py", line 258, in _async_setup_platform
    await asyncio.gather(*pending)
  File "/opt/homeassistant/lib/python3.8/site-packages/homeassistant/helpers/entity_platform.py", line 383, in async_add_entities
    await asyncio.gather(*tasks)
  File "/opt/homeassistant/lib/python3.8/site-packages/homeassistant/helpers/entity_platform.py", line 588, in _async_add_entity
    await entity.add_to_platform_finish()
  File "/opt/homeassistant/lib/python3.8/site-packages/homeassistant/helpers/entity.py", line 615, in add_to_platform_finish
    self.async_write_ha_state()
  File "/opt/homeassistant/lib/python3.8/site-packages/homeassistant/helpers/entity.py", line 368, in async_write_ha_state
    self._async_write_ha_state()
  File "/opt/homeassistant/lib/python3.8/site-packages/homeassistant/helpers/entity.py", line 402, in _async_write_ha_state
    state = self._stringify_state()
  File "/opt/homeassistant/lib/python3.8/site-packages/homeassistant/helpers/entity.py", line 374, in _stringify_state
    state = self.state
  File "/opt/homeassistant/lib/python3.8/site-packages/homeassistant/components/binary_sensor/__init__.py", line 162, in state
    return STATE_ON if self.is_on else STATE_OFF
  File "/home/homeassistant/.homeassistant/custom_components/multimatic/binary_sensor.py", line 77, in is_on
    a_mode = self.active_mode
  File "/home/homeassistant/.homeassistant/custom_components/multimatic/binary_sensor.py", line 95, in active_mode
    return self.coordinator.data.get_active_mode_circulation()
  File "/opt/homeassistant/lib/python3.8/site-packages/pymultimatic/model/system.py", line 228, in get_active_mode_circulation
    return circulation.active_mode
  File "/opt/homeassistant/lib/python3.8/site-packages/pymultimatic/model/common.py", line 52, in active_mode
    setting = self.time_program.get_for(datetime.now())
  File "/opt/homeassistant/lib/python3.8/site-packages/pymultimatic/model/timeprogram.py", line 107, in get_for
    tp_day = self.days[day]
KeyError: 'tuesday'

Migrate to HA 0.110

File "/config/custom_components/vaillant/sensor.py", line 34, in async_setup_entry
  for report in hub.system.reports:
AttributeError: 'NoneType' object has no attribute 'reports'
  File "/config/custom_components/vaillant/water_heater.py", line 40, in async_setup_entry
    if hub.system.dhw.hotwater:
AttributeError: 'NoneType' object has no attribute 'dhw'

ClimateDevice is deprecated, modify VaillantClimate to extend ClimateEntity
ClimateDevice is deprecated, modify RoomClimate to extend ClimateEntity
ClimateDevice is deprecated, modify ZoneClimate to extend ClimateEntity

WaterHeaterDevice is deprecated, modify VaillantWaterHeater to extend WaterHeaterEntity

BinarySensorDevice is deprecated, modify BoxOnline to extend BinarySensorEntity
BinarySensorDevice is deprecated, modify BoilerError to extend BinarySensorEntity
BinarySensorDevice is deprecated, modify VaillantSystemError to extend BinarySensorEntity
BinarySensorDevice is deprecated, modify HolidayModeSensor to extend BinarySensorEntity
BinarySensorDevice is deprecated, modify QuickModeSensor to extend BinarySensorEntity

vaillant: the '.translations' directory has been moved, the new name is 'translations', starting with Home Assistant 0.111 your translations will no longer load if you do not move/rename this

request_hvac_update failed - vaillant integration unavailable

Hello,

my vaillant integration is offline since over a day - I just checked the logfiles and this is what it says the following:


Logger: homeassistant.components.automation.refresh_vaillant_data
Source: custom_components/vaillant/hub.py:63
Integration: Automatisierung (documentation, issues)
First occurred: 9:00:00 (2 occurrences)
Last logged: 9:00:00

Refresh vaillant data: Error executing script. Unexpected error for call_service at pos 1: Expecting value: line 1 column 1 (char 0)
While executing automation automation.refresh_vaillant_data
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 206, in _async_step
    await getattr(
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 413, in _async_call_service_step
    await service_task
  File "/usr/src/homeassistant/homeassistant/core.py", line 1315, in async_call
    task.result()
  File "/usr/src/homeassistant/homeassistant/core.py", line 1350, in _execute_service
    await handler.func(service_call)
  File "/config/custom_components/vaillant/service.py", line 155, in request_hvac_update
    await self._hub.request_hvac_update()
  File "/config/custom_components/vaillant/hub.py", line 63, in request_hvac_update
    await self._manager.request_hvac_update()
  File "/usr/local/lib/python3.8/site-packages/pymultimatic/systemmanager.py", line 546, in request_hvac_update
    state = mapper.map_hvac_sync_state(await self._call_api(urls.hvac))
  File "/usr/local/lib/python3.8/site-packages/pymultimatic/systemmanager.py", line 582, in _call_api
    return await self._connector.request(method, url, payload)
  File "/usr/local/lib/python3.8/site-packages/pymultimatic/api/connector.py", line 169, in request
    await resp.json(content_type=None)
  File "/usr/local/lib/python3.8/site-packages/aiohttp/client_reqrep.py", line 1040, in json
    return loads(stripped.decode(encoding))
  File "/usr/local/lib/python3.8/json/__init__.py", line 357, in loads
    return _default_decoder.decode(s)
  File "/usr/local/lib/python3.8/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/local/lib/python3.8/json/decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)


and 


Logger: custom_components.vaillant.hub
Source: custom_components/vaillant/hub.py:66
Integration: Vaillant (documentation)
First occurred: 0:00:00 (2 occurrences)
Last logged: 8:00:00
request_hvac_update is done too often

The mobile app seems to be able to connect just fine - so the device should be ok. I have an automation that does the request_hvac_update every hour just as recommended - which I reduced now to every 3 hours in case.

My guess is, that it does the refresh on every hass startup - and because I restart it during developing quite often, it somehow banned me :(

Did you ever encounter such behaviour? Did you solve it maybe?

Update for sensor.vaillant_outdoor_temperature fails

Cloned the latest repo and tried custom integration for Vaillant (VRC 700)

Found following in the log files (error):

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 277, in async_update_ha_state
    await self.async_device_update()
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 473, in async_device_update
    raise exc
  File "/config/custom_components/vaillant/entities.py", line 46, in async_update
    await self.hub.update_system()
  File "/config/custom_components/vaillant/hub.py", line 77, in _update_system
    self.system = await self._manager.get_system()
  File "/usr/local/lib/python3.8/site-packages/pymultimatic/systemmanager.py", line 94, in get_system
    zones = mapper.map_zones(full_system)
  File "/usr/local/lib/python3.8/site-packages/pymultimatic/model/mapper.py", line 214, in map_zones
    zone = map_zone(raw_zone)
  File "/usr/local/lib/python3.8/site-packages/pymultimatic/model/mapper.py", line 233, in map_zone
    active_function = ActiveFunction[configuration.get("active_function")]
  File "/usr/local/lib/python3.8/enum.py", line 387, in __getitem__
    return cls._member_map_[name]
KeyError: None

Manual cooling days

If i set my multimatic to manual cooling, i get the state attribute cooling_for_x_days A standard Lovelace card would show the following:

image

Is there any way to actually get the number of the days?

Unable to fetch data from vaillant API, API says: {'errorCode': 'NullPointerException'}, status: 500

The components works for a few hours and after that I receive the following error every two minutes.

Here is the stacktrace:

2020-04-22 21:51:49 ERROR (MainThread) [custom_components.vaillant.hub] Unable to fetch data from vaillant API, API says: {'errorCode': 'NullPointerException'}, status: 500
Traceback (most recent call last):
File "/config/custom_components/vaillant/hub.py", line 67, in _update_system
self.system = await self._manager.get_system()
File "/usr/local/lib/python3.7/site-packages/pymultimatic/systemmanager.py", line 77, in get_system
hvac_state = await hvac_state_req
File "/usr/local/lib/python3.7/site-packages/pymultimatic/systemmanager.py", line 582, in _call_api
return await self._connector.request(method, url, payload)
File "/usr/local/lib/python3.7/site-packages/pymultimatic/api/connector.py", line 171, in request
payload=payload)
pymultimatic.api.error.ApiError: Cannot get https://smart.vaillant.com/mobile/api/v4/facilities/XXX/hvacstate/v1/overview
2020-04-22 21:53:51 ERROR (MainThread) [custom_components.vaillant.hub] Unable to fetch data from vaillant API, API says: {'errorCode': 'NullPointerException'}, status: 500
Traceback (most recent call last):
File "/config/custom_components/vaillant/hub.py", line 67, in _update_system
self.system = await self._manager.get_system()
File "/usr/local/lib/python3.7/site-packages/pymultimatic/systemmanager.py", line 77, in get_system
hvac_state = await hvac_state_req
File "/usr/local/lib/python3.7/site-packages/pymultimatic/systemmanager.py", line 582, in _call_api
return await self._connector.request(method, url, payload)
File "/usr/local/lib/python3.7/site-packages/pymultimatic/api/connector.py", line 171, in request
payload=payload)
pymultimatic.api.error.ApiError: Cannot get https://smart.vaillant.com/mobile/api/v4/facilities/XXX/hvacstate/v1/overview

Several times I received a message that my login and password were not correct, although they are definitely correct. I can reconnect with them after reboot.

Service to get/set date and time

Hi, Thomas,

From time to time my VRC700 resets date/time to default values. As far as I know, VRC700 doesn't have any battery inside. It uses large capacitor instead. Thus as capacitor degrades with time, there could be issues with the date/time settings.

VRC700/VR920 doesn't use NTP or similar protocol to set date/time. Thus after every reset I have to manually set date/time. It is possible to do via Mobile app. There should be an API call for this.

Is it possible to add a special HA service to your component to get/set date/time from Vaillant hardware?

Best regards,
Sergey.

Unexpected error fetching multimatic data: None

Hello,

since 14:30 i got 73 errors like this:

2021-04-16 14:21:07 ERROR (MainThread) [custom_components.multimatic.hub] Unexpected error fetching multimatic data: None

Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 173, in _async_refresh
self.data = await self._async_update_data()
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 143, in _async_update_data
return await self.update_method()
File "/config/custom_components/multimatic/hub.py", line 104, in _fetch_data
system = await self._manager.get_system()
File "/usr/local/lib/python3.8/site-packages/pymultimatic/systemmanager.py", line 97, in get_system
zones = mapper.map_zones(full_system)
File "/usr/local/lib/python3.8/site-packages/pymultimatic/model/mapper.py", line 219, in map_zones
zone = map_zone(raw_zone)
File "/usr/local/lib/python3.8/site-packages/pymultimatic/model/mapper.py", line 238, in map_zone
active_function = ActiveFunction[configuration.get("active_function")]
File "/usr/local/lib/python3.8/enum.py", line 387, in getitem
return cls.member_map[name]
KeyError: None

do you have an idea or is it at vaillant side ?
image

custom_components/multimatic/coordinator.py:126 - Error with multimatic API: Cannot validate response from vaillant

HA DC 2021.6.2, python 3.8.9, multimatic v1.7.0b

Logger: custom_components.multimatic.coordinator
Source: custom_components/multimatic/coordinator.py:126
Integration: Multimatic (documentation, issues)
First occurred: 21 juni 2021 15:22:30 (312 occurrences)
Last logged: 12:18:53

Error with multimatic API: Cannot validate response from vaillant, status: 200, response: {'body': {'zones': [{'heating': {'timeprogram': {'monday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'tuesday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'wednesday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'thursday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'friday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'saturday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:30', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'sunday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:30', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}]}}, '_id': 'Control_ZO1'}, {'heating': {'timeprogram': {'monday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'tuesday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'wednesday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'thursday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'friday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'saturday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:30', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'sunday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:30', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}]}}, '_id': 'Control_ZO2'}], 'configuration': {'eco_mode': False, 'holidaymode': {'active': False, 'start_date': '2019-12-31', 'end_date': '2020-01-01', 'temperature_setpoint': 5.0}}, 'status': {'datetime': '2021-06-22T14:05:15.000Z', 'outside_temperature': 17.8}, 'parameters': [{'name': 'HEATING', 'definition': {'values': ['NIGHT', 'DAY']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/heating/timeprogram'}}, {'name': 'HEATING', 'definition': {'values': ['NIGHT', 'DAY']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/heating/timeprogram'}}, {'name': 'COOLING', 'definition': {'values': ['OFF', 'ON']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/cooling/timeprogram'}}, {'name': 'COOLING', 'definition': {'values': ['OFF', 'ON']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/cooling/timeprogram'}}, {'name': 'HOTWATER', 'definition': {'values': ['OFF', 'ON']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/dhw/Control_DHW/hotwater/timeprogram'}}, {'name': 'CIRCULATION_PUMP', 'definition': {'values': ['OFF', 'ON']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/dhw/Control_DHW/circulation/timeprogram'}}, {'name': 'VENTILATION', 'definition': {'values': ['NIGHT', 'DAY']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/ventilation/Control_SYS_MultiMatic/fan/timeprogram'}}, {'name': 'Bedrijfsmodus: koelen', 'definition': {'values': []}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/cooling/configuration/mode'}}, {'name': 'Dag gewenste kamertemperatuur', 'definition': {'min': 5.0, 'max': 30.0, 'stepsize': 0.5}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/heating/configuration/setpoint_temperature'}}, {'name': 'Dagtemperatuur koelen', 'definition': {'min': 15.0, 'max': 30.0, 'stepsize': 0.5}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/cooling/configuration/setpoint_temperature'}}, {'name': 'Modus verwarmen', 'definition': {'values': ['AUTO', 'SETBACK', 'OFF']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/heating/configuration/mode'}}, {'name': 'Nachttemperatuur', 'definition': {'min': 5.0, 'max': 30.0, 'stepsize': 0.5}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/heating/configuration/setback_temperature'}}, {'name': 'Quick Veto gewenste kamertemperatuur', 'definition': {'min': 5.0, 'max': 30.0, 'stepsize': 0.5}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/configuration/quick_veto'}}, {'name': 'Speciale modus die werd geactiveerd', 'definition': {'values': ['NO_QUICK_MODE', 'QM_PARTY', 'QM_VENTILATION_BOOST', 'QM_ONE_DAY_AT_HOME', 'QM_ONE_DAY_AWAY']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/configuration/quickmode'}}, {'name': 'Bedrijfsmodus: koelen', 'definition': {'values': []}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/cooling/configuration/mode'}}, {'name': 'Dag gewenste kamertemperatuur', 'definition': {'min': 5.0, 'max': 30.0, 'stepsize': 0.5}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/heating/configuration/setpoint_temperature'}}, {'name': 'Dagtemperatuur koelen', 'definition': {'min': 15.0, 'max': 30.0, 'stepsize': 0.5}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/cooling/configuration/setpoint_temperature'}}, {'name': 'Modus verwarmen', 'definition': {'values': ['AUTO', 'SETBACK', 'OFF']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/heating/configuration/mode'}}, {'name': 'Nachttemperatuur', 'definition': {'min': 5.0, 'max': 30.0, 'stepsize': 0.5}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/heating/configuration/setback_temperature'}}, {'name': 'Quick Veto gewenste kamertemperatuur', 'definition': {'min': 5.0, 'max': 30.0, 'stepsize': 0.5}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/configuration/quick_veto'}}, {'name': 'Speciale modus die werd geactiveerd', 'definition': {'values': ['NO_QUICK_MODE', 'QM_PARTY', 'QM_VENTILATION_BOOST', 'QM_ONE_DAY_AT_HOME', 'QM_ONE_DAY_AWAY']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/configuration/quickmode'}}, {'name': 'Modus warmwatercircuit', 'definition': {'values': ['AUTO', 'DAY', 'OFF']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/dhw/Control_DHW/hotwater/configuration/operation_mode'}}, {'name': 'Bedrijfsmodus: ventileren', 'definition': {'values': ['AUTO', 'NIGHT', 'DAY']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/ventilation/Control_SYS_MultiMatic/fan/configuration/operation_mode'}}, {'name': 'Gewenste kamertemperatuur voor dagen buitenshuis', 'definition': {'min': 5.0, 'max': 30.0, 'stepsize': 1.0}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/configuration/holidaymode'}}, {'name': 'Maximale ventilatiestand dag', 'definition': {'min': 1.0, 'max': 6.0, 'stepsize': 1.0}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/ventilation/Control_SYS_MultiMatic/fan/configuration/day_level'}}, {'name': 'Maximale ventilatiestand nacht', 'definition': {'min': 1.0, 'max': 6.0, 'stepsize': 1.0}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/ventilation/Control_SYS_MultiMatic/fan/configuration/night_level'}}, {'name': 'Speciale modus die werd geactiveerd', 'definition': {'values': ['NO_QUICK_MODE', 'QM_PARTY', 'QM_VENTILATION_BOOST', 'QM_ONE_DAY_AT_HOME', 'QM_ONE_DAY_AWAY']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/configuration/quickmode'}}], 'dhw': [{'hotwater': {'timeprogram': {'monday': [{'startTime': '00:00', 'mode': 'OFF'}, {'startTime': '07:00', 'mode': 'ON'}, {'startTime': '22:50', 'mode': 'OFF'}], 'tuesday': [{'startTime': '00:00', 'mode': 'OFF'}, {'startTime': '07:00', 'mode': 'ON'}, {'startTime': '22:50', 'mode': 'OFF'}], 'wednesday': [{'startTime': '00:00', 'mode': 'OFF'}, {'startTime': '07:00', 'mode': 'ON'}, {'startTime': '22:50', 'mode': 'OFF'}], 'thursday': [{'startTime': '00:00', 'mode': 'OFF'}, {'startTime': '07:00', 'mode': 'ON'}, {'startTime': '22:50', 'mode': 'OFF'}], 'friday': [{'startTime': '00:00', 'mode': 'OFF'}, {'startTime': '07:00', 'mode': 'ON'}, {'startTime': '22:50', 'mode': 'OFF'}], 'saturday': [{'startTime': '00:00', 'mode': 'OFF'}, {'startTime': '07:30', 'mode': 'ON'}, {'startTime': '22:50', 'mode': 'OFF'}], 'sunday': [{'startTime': '00:00', 'mode': 'OFF'}, {'startTime': '07:30', 'mode': 'ON'}, {'startTime': '22:50', 'mode': 'OFF'}]}}, 'circulation': {'configuration': {'operationMode': 'AUTO'}, 'timeprogram': {'monday': [{'startTime': '00:00', 'setting': 'OFF'}, {'startTime': '07:00', 'setting': 'ON'}, {'startTime': '22:50', 'setting': 'OFF'}], 'tuesday': [{'startTime': '00:00', 'setting': 'OFF'}, {'startTime': '07:00', 'setting': 'ON'}, {'startTime': '22:50', 'setting': 'OFF'}], 'wednesday': [{'startTime': '00:00', 'setting': 'OFF'}, {'startTime': '07:00', 'setting': 'ON'}, {'startTime': '22:50', 'setting': 'OFF'}], 'thursday': [{'startTime': '00:00', 'setting': 'OFF'}, {'startTime': '07:00', 'setting': 'ON'}, {'startTime': '22:50', 'setting': 'OFF'}], 'friday': [{'startTime': '00:00', 'setting': 'OFF'}, {'startTime': '07:00', 'setting': 'ON'}, {'startTime': '22:50', 'setting': 'OFF'}], 'saturday': [{'startTime': '00:00', 'setting': 'OFF'}, {'startTime': '07:00', 'setting': 'ON'}, {'startTime': '22:50', 'setting': 'OFF'}], 'sunday': [{'startTime': '00:00', 'setting': 'OFF'}, {'startTime': '07:00', 'setting': 'ON'}, {'startTime': '22:50', 'setting': 'OFF'}]}}, '_id': 'Control_DHW'}]}, 'meta': {'resourceState': [{'state': 'SYNCED', 'timestamp': 1624363514365, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/status'}}, {'state': 'OUTDATED', 'timestamp': 1624363570150, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/configuration'}}, {'state': 'SYNCED', 'timestamp': 1624363514365, 'link': {'rel': 'child', 'resourceLink': '/facilities/xx/systemcontrol/v1/configuration/holidaymode'}}, {'state': 'SYNCED', 'timestamp': 1624363431833, 'link': {'rel': 'child', 'resourceLink': '/facilities/xx/systemcontrol/v1/configuration/quickmode'}}, {'state': 'INITIALIZING', 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/heating/configuration'}}, {'state': 'SYNCED', 'timestamp': 1624370448000, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/heating/timeprogram'}}, {'state': 'INITIALIZING', 'link': {'rel': 'child', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/configuration/quick_veto'}}, {'state': 'INITIALIZING', 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/configuration'}}, {'state': 'INITIALIZING', 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/heating/configuration'}}, {'state': 'SYNCED', 'timestamp': 1624370448000, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/heating/timeprogram'}}, {'state': 'SYNCED', 'timestamp': 1624363462369, 'link': {'rel': 'child', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/configuration/quick_veto'}}, {'state': 'INITIALIZING', 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/configuration'}}, {'state': 'SYNCED', 'timestamp': 1624370930288, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/dhw/Control_DHW/circulation/configuration'}}, {'state': 'INITIALIZING', 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/dhw/Control_DHW/hotwater/configuration'}}, {'state': 'SYNCED', 'timestamp': 1624370448000, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/dhw/Control_DHW/circulation/timeprogram'}}, {'state': 'SYNCED', 'timestamp': 1624370448000, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/dhw/Control_DHW/hotwater/timeprogram'}}]}}
Error with multimatic API: Cannot validate response from vaillant, status: 200, response: {'body': {'zones': [{'heating': {'timeprogram': {'monday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'tuesday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'wednesday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'thursday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'friday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'saturday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:30', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'sunday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:30', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}]}}, '_id': 'Control_ZO1'}, {'heating': {'timeprogram': {'monday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'tuesday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'wednesday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'thursday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'friday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'saturday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:30', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'sunday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:30', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}]}}, '_id': 'Control_ZO2'}], 'configuration': {'eco_mode': False, 'holidaymode': {'active': False, 'start_date': '2019-12-31', 'end_date': '2020-01-01', 'temperature_setpoint': 5.0}}, 'status': {'datetime': '2021-06-22T14:05:15.000Z', 'outside_temperature': 17.8}, 'parameters': [{'name': 'HEATING', 'definition': {'values': ['NIGHT', 'DAY']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/heating/timeprogram'}}, {'name': 'HEATING', 'definition': {'values': ['NIGHT', 'DAY']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/heating/timeprogram'}}, {'name': 'COOLING', 'definition': {'values': ['OFF', 'ON']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/cooling/timeprogram'}}, {'name': 'COOLING', 'definition': {'values': ['OFF', 'ON']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/cooling/timeprogram'}}, {'name': 'HOTWATER', 'definition': {'values': ['OFF', 'ON']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/dhw/Control_DHW/hotwater/timeprogram'}}, {'name': 'CIRCULATION_PUMP', 'definition': {'values': ['OFF', 'ON']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/dhw/Control_DHW/circulation/timeprogram'}}, {'name': 'VENTILATION', 'definition': {'values': ['NIGHT', 'DAY']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/ventilation/Control_SYS_MultiMatic/fan/timeprogram'}}, {'name': 'Bedrijfsmodus: koelen', 'definition': {'values': []}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/cooling/configuration/mode'}}, {'name': 'Dag gewenste kamertemperatuur', 'definition': {'min': 5.0, 'max': 30.0, 'stepsize': 0.5}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/heating/configuration/setpoint_temperature'}}, {'name': 'Dagtemperatuur koelen', 'definition': {'min': 15.0, 'max': 30.0, 'stepsize': 0.5}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/cooling/configuration/setpoint_temperature'}}, {'name': 'Modus verwarmen', 'definition': {'values': ['AUTO', 'SETBACK', 'OFF']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/heating/configuration/mode'}}, {'name': 'Nachttemperatuur', 'definition': {'min': 5.0, 'max': 30.0, 'stepsize': 0.5}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/heating/configuration/setback_temperature'}}, {'name': 'Quick Veto gewenste kamertemperatuur', 'definition': {'min': 5.0, 'max': 30.0, 'stepsize': 0.5}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/configuration/quick_veto'}}, {'name': 'Speciale modus die werd geactiveerd', 'definition': {'values': ['NO_QUICK_MODE', 'QM_PARTY', 'QM_VENTILATION_BOOST', 'QM_ONE_DAY_AT_HOME', 'QM_ONE_DAY_AWAY']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/configuration/quickmode'}}, {'name': 'Bedrijfsmodus: koelen', 'definition': {'values': []}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/cooling/configuration/mode'}}, {'name': 'Dag gewenste kamertemperatuur', 'definition': {'min': 5.0, 'max': 30.0, 'stepsize': 0.5}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/heating/configuration/setpoint_temperature'}}, {'name': 'Dagtemperatuur koelen', 'definition': {'min': 15.0, 'max': 30.0, 'stepsize': 0.5}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/cooling/configuration/setpoint_temperature'}}, {'name': 'Modus verwarmen', 'definition': {'values': ['AUTO', 'SETBACK', 'OFF']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/heating/configuration/mode'}}, {'name': 'Nachttemperatuur', 'definition': {'min': 5.0, 'max': 30.0, 'stepsize': 0.5}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/heating/configuration/setback_temperature'}}, {'name': 'Quick Veto gewenste kamertemperatuur', 'definition': {'min': 5.0, 'max': 30.0, 'stepsize': 0.5}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/configuration/quick_veto'}}, {'name': 'Speciale modus die werd geactiveerd', 'definition': {'values': ['NO_QUICK_MODE', 'QM_PARTY', 'QM_VENTILATION_BOOST', 'QM_ONE_DAY_AT_HOME', 'QM_ONE_DAY_AWAY']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/configuration/quickmode'}}, {'name': 'Modus warmwatercircuit', 'definition': {'values': ['AUTO', 'DAY', 'OFF']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/dhw/Control_DHW/hotwater/configuration/operation_mode'}}, {'name': 'Bedrijfsmodus: ventileren', 'definition': {'values': ['AUTO', 'NIGHT', 'DAY']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/ventilation/Control_SYS_MultiMatic/fan/configuration/operation_mode'}}, {'name': 'Gewenste kamertemperatuur voor dagen buitenshuis', 'definition': {'min': 5.0, 'max': 30.0, 'stepsize': 1.0}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/configuration/holidaymode'}}, {'name': 'Maximale ventilatiestand dag', 'definition': {'min': 1.0, 'max': 6.0, 'stepsize': 1.0}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/ventilation/Control_SYS_MultiMatic/fan/configuration/day_level'}}, {'name': 'Maximale ventilatiestand nacht', 'definition': {'min': 1.0, 'max': 6.0, 'stepsize': 1.0}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/ventilation/Control_SYS_MultiMatic/fan/configuration/night_level'}}, {'name': 'Speciale modus die werd geactiveerd', 'definition': {'values': ['NO_QUICK_MODE', 'QM_PARTY', 'QM_VENTILATION_BOOST', 'QM_ONE_DAY_AT_HOME', 'QM_ONE_DAY_AWAY']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/configuration/quickmode'}}], 'dhw': [{'hotwater': {'timeprogram': {'monday': [{'startTime': '00:00', 'mode': 'OFF'}, {'startTime': '07:00', 'mode': 'ON'}, {'startTime': '22:50', 'mode': 'OFF'}], 'tuesday': [{'startTime': '00:00', 'mode': 'OFF'}, {'startTime': '07:00', 'mode': 'ON'}, {'startTime': '22:50', 'mode': 'OFF'}], 'wednesday': [{'startTime': '00:00', 'mode': 'OFF'}, {'startTime': '07:00', 'mode': 'ON'}, {'startTime': '22:50', 'mode': 'OFF'}], 'thursday': [{'startTime': '00:00', 'mode': 'OFF'}, {'startTime': '07:00', 'mode': 'ON'}, {'startTime': '22:50', 'mode': 'OFF'}], 'friday': [{'startTime': '00:00', 'mode': 'OFF'}, {'startTime': '07:00', 'mode': 'ON'}, {'startTime': '22:50', 'mode': 'OFF'}], 'saturday': [{'startTime': '00:00', 'mode': 'OFF'}, {'startTime': '07:30', 'mode': 'ON'}, {'startTime': '22:50', 'mode': 'OFF'}], 'sunday': [{'startTime': '00:00', 'mode': 'OFF'}, {'startTime': '07:30', 'mode': 'ON'}, {'startTime': '22:50', 'mode': 'OFF'}]}}, 'circulation': {'configuration': {'operationMode': 'AUTO'}, 'timeprogram': {'monday': [{'startTime': '00:00', 'setting': 'OFF'}, {'startTime': '07:00', 'setting': 'ON'}, {'startTime': '22:50', 'setting': 'OFF'}], 'tuesday': [{'startTime': '00:00', 'setting': 'OFF'}, {'startTime': '07:00', 'setting': 'ON'}, {'startTime': '22:50', 'setting': 'OFF'}], 'wednesday': [{'startTime': '00:00', 'setting': 'OFF'}, {'startTime': '07:00', 'setting': 'ON'}, {'startTime': '22:50', 'setting': 'OFF'}], 'thursday': [{'startTime': '00:00', 'setting': 'OFF'}, {'startTime': '07:00', 'setting': 'ON'}, {'startTime': '22:50', 'setting': 'OFF'}], 'friday': [{'startTime': '00:00', 'setting': 'OFF'}, {'startTime': '07:00', 'setting': 'ON'}, {'startTime': '22:50', 'setting': 'OFF'}], 'saturday': [{'startTime': '00:00', 'setting': 'OFF'}, {'startTime': '07:00', 'setting': 'ON'}, {'startTime': '22:50', 'setting': 'OFF'}], 'sunday': [{'startTime': '00:00', 'setting': 'OFF'}, {'startTime': '07:00', 'setting': 'ON'}, {'startTime': '22:50', 'setting': 'OFF'}]}}, '_id': 'Control_DHW'}]}, 'meta': {'resourceState': [{'state': 'OUTDATED', 'timestamp': 1624363514365, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/status'}}, {'state': 'INITIALIZING', 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/configuration'}}, {'state': 'OUTDATED', 'timestamp': 1624363514365, 'link': {'rel': 'child', 'resourceLink': '/facilities/xx/systemcontrol/v1/configuration/holidaymode'}}, {'state': 'OUTDATED', 'timestamp': 1624363431833, 'link': {'rel': 'child', 'resourceLink': '/facilities/xx/systemcontrol/v1/configuration/quickmode'}}, {'state': 'INITIALIZING', 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/heating/configuration'}}, {'state': 'SYNCED', 'timestamp': 1624370948000, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/heating/timeprogram'}}, {'state': 'INITIALIZING', 'link': {'rel': 'child', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/configuration/quick_veto'}}, {'state': 'INITIALIZING', 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/configuration'}}, {'state': 'INITIALIZING', 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/heating/configuration'}}, {'state': 'SYNCED', 'timestamp': 1624370948000, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/heating/timeprogram'}}, {'state': 'OUTDATED', 'timestamp': 1624363462369, 'link': {'rel': 'child', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/configuration/quick_veto'}}, {'state': 'INITIALIZING', 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/configuration'}}, {'state': 'SYNCED', 'timestamp': 1624371050307, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/dhw/Control_DHW/circulation/configuration'}}, {'state': 'INITIALIZING', 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/dhw/Control_DHW/hotwater/configuration'}}, {'state': 'SYNCED', 'timestamp': 1624370948000, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/dhw/Control_DHW/circulation/timeprogram'}}, {'state': 'SYNCED', 'timestamp': 1624370948000, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/dhw/Control_DHW/hotwater/timeprogram'}}]}}
Error with multimatic API: Cannot validate response from vaillant, status: 200, response: {'body': {'zones': [{'heating': {'timeprogram': {'monday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'tuesday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'wednesday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'thursday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'friday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'saturday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:30', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'sunday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:30', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}]}}, 'configuration': {'name': 'BENEDEN ', 'enabled': True, 'active_function': 'STANDBY', 'inside_temperature': 23.4, 'quick_veto': {'active': False, 'setpoint_temperature': 16.0}}, '_id': 'Control_ZO1'}, {'heating': {'configuration': {'mode': 'AUTO', 'setback_temperature': 15.0, 'setpoint_temperature': 21.0}, 'timeprogram': {'monday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'tuesday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'wednesday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'thursday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'friday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'saturday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:30', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'sunday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:30', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}]}}, 'configuration': {'name': 'BOVEN ', 'enabled': True, 'active_function': 'HEATING', 'inside_temperature': 23.4, 'quick_veto': {'active': False, 'setpoint_temperature': 21.0}}, '_id': 'Control_ZO2'}], 'configuration': {'eco_mode': False, 'holidaymode': {'active': False, 'start_date': '2019-12-31', 'end_date': '2020-01-01', 'temperature_setpoint': 5.0}}, 'status': {'datetime': '2021-06-22T14:11:38.000Z', 'outside_temperature': 17.8}, 'parameters': [{'name': 'HEATING', 'definition': {'values': ['NIGHT', 'DAY']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/heating/timeprogram'}}, {'name': 'HEATING', 'definition': {'values': ['NIGHT', 'DAY']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/heating/timeprogram'}}, {'name': 'COOLING', 'definition': {'values': ['OFF', 'ON']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/cooling/timeprogram'}}, {'name': 'COOLING', 'definition': {'values': ['OFF', 'ON']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/cooling/timeprogram'}}, {'name': 'HOTWATER', 'definition': {'values': ['OFF', 'ON']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/dhw/Control_DHW/hotwater/timeprogram'}}, {'name': 'CIRCULATION_PUMP', 'definition': {'values': ['OFF', 'ON']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/dhw/Control_DHW/circulation/timeprogram'}}, {'name': 'VENTILATION', 'definition': {'values': ['NIGHT', 'DAY']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/ventilation/Control_SYS_MultiMatic/fan/timeprogram'}}, {'name': 'Bedrijfsmodus: koelen', 'definition': {'values': []}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/cooling/configuration/mode'}}, {'name': 'Dag gewenste kamertemperatuur', 'definition': {'min': 5.0, 'max': 30.0, 'stepsize': 0.5}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/heating/configuration/setpoint_temperature'}}, {'name': 'Dagtemperatuur koelen', 'definition': {'min': 15.0, 'max': 30.0, 'stepsize': 0.5}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/cooling/configuration/setpoint_temperature'}}, {'name': 'Modus verwarmen', 'definition': {'values': ['AUTO', 'SETBACK', 'OFF']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/heating/configuration/mode'}}, {'name': 'Nachttemperatuur', 'definition': {'min': 5.0, 'max': 30.0, 'stepsize': 0.5}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/heating/configuration/setback_temperature'}}, {'name': 'Quick Veto gewenste kamertemperatuur', 'definition': {'min': 5.0, 'max': 30.0, 'stepsize': 0.5}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/configuration/quick_veto'}}, {'name': 'Speciale modus die werd geactiveerd', 'definition': {'values': ['NO_QUICK_MODE', 'QM_PARTY', 'QM_VENTILATION_BOOST', 'QM_ONE_DAY_AT_HOME', 'QM_ONE_DAY_AWAY']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/configuration/quickmode'}}, {'name': 'Bedrijfsmodus: koelen', 'definition': {'values': []}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/cooling/configuration/mode'}}, {'name': 'Dag gewenste kamertemperatuur', 'definition': {'min': 5.0, 'max': 30.0, 'stepsize': 0.5}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/heating/configuration/setpoint_temperature'}}, {'name': 'Dagtemperatuur koelen', 'definition': {'min': 15.0, 'max': 30.0, 'stepsize': 0.5}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/cooling/configuration/setpoint_temperature'}}, {'name': 'Modus verwarmen', 'definition': {'values': ['AUTO', 'SETBACK', 'OFF']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/heating/configuration/mode'}}, {'name': 'Nachttemperatuur', 'definition': {'min': 5.0, 'max': 30.0, 'stepsize': 0.5}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/heating/configuration/setback_temperature'}}, {'name': 'Quick Veto gewenste kamertemperatuur', 'definition': {'min': 5.0, 'max': 30.0, 'stepsize': 0.5}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/configuration/quick_veto'}}, {'name': 'Speciale modus die werd geactiveerd', 'definition': {'values': ['NO_QUICK_MODE', 'QM_PARTY', 'QM_VENTILATION_BOOST', 'QM_ONE_DAY_AT_HOME', 'QM_ONE_DAY_AWAY']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/configuration/quickmode'}}, {'name': 'Modus warmwatercircuit', 'definition': {'values': ['AUTO', 'DAY', 'OFF']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/dhw/Control_DHW/hotwater/configuration/operation_mode'}}, {'name': 'Bedrijfsmodus: ventileren', 'definition': {'values': ['AUTO', 'NIGHT', 'DAY']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/ventilation/Control_SYS_MultiMatic/fan/configuration/operation_mode'}}, {'name': 'Gewenste kamertemperatuur voor dagen buitenshuis', 'definition': {'min': 5.0, 'max': 30.0, 'stepsize': 1.0}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/configuration/holidaymode'}}, {'name': 'Maximale ventilatiestand dag', 'definition': {'min': 1.0, 'max': 6.0, 'stepsize': 1.0}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/ventilation/Control_SYS_MultiMatic/fan/configuration/day_level'}}, {'name': 'Maximale ventilatiestand nacht', 'definition': {'min': 1.0, 'max': 6.0, 'stepsize': 1.0}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/ventilation/Control_SYS_MultiMatic/fan/configuration/night_level'}}, {'name': 'Speciale modus die werd geactiveerd', 'definition': {'values': ['NO_QUICK_MODE', 'QM_PARTY', 'QM_VENTILATION_BOOST', 'QM_ONE_DAY_AT_HOME', 'QM_ONE_DAY_AWAY']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/configuration/quickmode'}}], 'dhw': [{'hotwater': {'timeprogram': {'monday': [{'startTime': '00:00', 'mode': 'OFF'}, {'startTime': '07:00', 'mode': 'ON'}, {'startTime': '22:50', 'mode': 'OFF'}], 'tuesday': [{'startTime': '00:00', 'mode': 'OFF'}, {'startTime': '07:00', 'mode': 'ON'}, {'startTime': '22:50', 'mode': 'OFF'}], 'wednesday': [{'startTime': '00:00', 'mode': 'OFF'}, {'startTime': '07:00', 'mode': 'ON'}, {'startTime': '22:50', 'mode': 'OFF'}], 'thursday': [{'startTime': '00:00', 'mode': 'OFF'}, {'startTime': '07:00', 'mode': 'ON'}, {'startTime': '22:50', 'mode': 'OFF'}], 'friday': [{'startTime': '00:00', 'mode': 'OFF'}, {'startTime': '07:00', 'mode': 'ON'}, {'startTime': '22:50', 'mode': 'OFF'}], 'saturday': [{'startTime': '00:00', 'mode': 'OFF'}, {'startTime': '07:30', 'mode': 'ON'}, {'startTime': '22:50', 'mode': 'OFF'}], 'sunday': [{'startTime': '00:00', 'mode': 'OFF'}, {'startTime': '07:30', 'mode': 'ON'}, {'startTime': '22:50', 'mode': 'OFF'}]}}, 'circulation': {'configuration': {'operationMode': 'AUTO'}, 'timeprogram': {'monday': [{'startTime': '00:00', 'setting': 'OFF'}, {'startTime': '07:00', 'setting': 'ON'}, {'startTime': '22:50', 'setting': 'OFF'}], 'tuesday': [{'startTime': '00:00', 'setting': 'OFF'}, {'startTime': '07:00', 'setting': 'ON'}, {'startTime': '22:50', 'setting': 'OFF'}], 'wednesday': [{'startTime': '00:00', 'setting': 'OFF'}, {'startTime': '07:00', 'setting': 'ON'}, {'startTime': '22:50', 'setting': 'OFF'}], 'thursday': [{'startTime': '00:00', 'setting': 'OFF'}, {'startTime': '07:00', 'setting': 'ON'}, {'startTime': '22:50', 'setting': 'OFF'}], 'friday': [{'startTime': '00:00', 'setting': 'OFF'}, {'startTime': '07:00', 'setting': 'ON'}, {'startTime': '22:50', 'setting': 'OFF'}], 'saturday': [{'startTime': '00:00', 'setting': 'OFF'}, {'startTime': '07:00', 'setting': 'ON'}, {'startTime': '22:50', 'setting': 'OFF'}], 'sunday': [{'startTime': '00:00', 'setting': 'OFF'}, {'startTime': '07:00', 'setting': 'ON'}, {'startTime': '22:50', 'setting': 'OFF'}]}}, '_id': 'Control_DHW'}]}, 'meta': {'resourceState': [{'state': 'OUTDATED', 'timestamp': 1624363897214, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/status'}}, {'state': 'OUTDATED', 'timestamp': 1624363897214, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/configuration'}}, {'state': 'OUTDATED', 'timestamp': 1624363897214, 'link': {'rel': 'child', 'resourceLink': '/facilities/xx/systemcontrol/v1/configuration/holidaymode'}}, {'state': 'OUTDATED', 'timestamp': 1624363431833, 'link': {'rel': 'child', 'resourceLink': '/facilities/xx/systemcontrol/v1/configuration/quickmode'}}, {'state': 'INITIALIZING', 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/heating/configuration'}}, {'state': 'SYNCED', 'timestamp': 1624370948000, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/heating/timeprogram'}}, {'state': 'OUTDATED', 'timestamp': 1624361504029, 'link': {'rel': 'child', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/configuration/quick_veto'}}, {'state': 'OUTDATED', 'timestamp': 1624363570150, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/configuration'}}, {'state': 'OUTDATED', 'timestamp': 1624363941560, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/heating/configuration'}}, {'state': 'SYNCED', 'timestamp': 1624370948000, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/heating/timeprogram'}}, {'state': 'OUTDATED', 'timestamp': 1624363462369, 'link': {'rel': 'child', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/configuration/quick_veto'}}, {'state': 'OUTDATED', 'timestamp': 1624363941560, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/configuration'}}, {'state': 'SYNCED', 'timestamp': 1624371171313, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/dhw/Control_DHW/circulation/configuration'}}, {'state': 'INITIALIZING', 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/dhw/Control_DHW/hotwater/configuration'}}, {'state': 'SYNCED', 'timestamp': 1624370948000, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/dhw/Control_DHW/circulation/timeprogram'}}, {'state': 'SYNCED', 'timestamp': 1624370948000, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/dhw/Control_DHW/hotwater/timeprogram'}}]}}
Error with multimatic API: Cannot validate response from vaillant, status: 200, response: {'body': {'zones': [{'heating': {'configuration': {'mode': 'AUTO', 'setback_temperature': 15.0, 'setpoint_temperature': 21.0}, 'timeprogram': {'monday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'tuesday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'wednesday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'thursday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'friday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'saturday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:30', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'sunday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:30', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}]}}, 'configuration': {'name': 'BENEDEN ', 'enabled': True, 'active_function': 'STANDBY', 'inside_temperature': 23.4, 'quick_veto': {'active': False, 'setpoint_temperature': 16.0}}, '_id': 'Control_ZO1'}, {'heating': {'timeprogram': {'monday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'tuesday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'wednesday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'thursday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'friday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'saturday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:30', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'sunday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:30', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}]}}, '_id': 'Control_ZO2'}], 'configuration': {'eco_mode': False, 'holidaymode': {'active': False, 'start_date': '2019-12-31', 'end_date': '2020-01-01', 'temperature_setpoint': 5.0}}, 'status': {'datetime': '2021-06-22T14:11:38.000Z', 'outside_temperature': 18.0}, 'parameters': [{'name': 'HEATING', 'definition': {'values': ['NIGHT', 'DAY']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/heating/timeprogram'}}, {'name': 'HEATING', 'definition': {'values': ['NIGHT', 'DAY']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/heating/timeprogram'}}, {'name': 'COOLING', 'definition': {'values': ['OFF', 'ON']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/cooling/timeprogram'}}, {'name': 'COOLING', 'definition': {'values': ['OFF', 'ON']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/cooling/timeprogram'}}, {'name': 'HOTWATER', 'definition': {'values': ['OFF', 'ON']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/dhw/Control_DHW/hotwater/timeprogram'}}, {'name': 'CIRCULATION_PUMP', 'definition': {'values': ['OFF', 'ON']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/dhw/Control_DHW/circulation/timeprogram'}}, {'name': 'VENTILATION', 'definition': {'values': ['NIGHT', 'DAY']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/ventilation/Control_SYS_MultiMatic/fan/timeprogram'}}, {'name': 'Bedrijfsmodus: koelen', 'definition': {'values': []}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/cooling/configuration/mode'}}, {'name': 'Dag gewenste kamertemperatuur', 'definition': {'min': 5.0, 'max': 30.0, 'stepsize': 0.5}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/heating/configuration/setpoint_temperature'}}, {'name': 'Dagtemperatuur koelen', 'definition': {'min': 15.0, 'max': 30.0, 'stepsize': 0.5}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/cooling/configuration/setpoint_temperature'}}, {'name': 'Modus verwarmen', 'definition': {'values': ['AUTO', 'SETBACK', 'OFF']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/heating/configuration/mode'}}, {'name': 'Nachttemperatuur', 'definition': {'min': 5.0, 'max': 30.0, 'stepsize': 0.5}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/heating/configuration/setback_temperature'}}, {'name': 'Quick Veto gewenste kamertemperatuur', 'definition': {'min': 5.0, 'max': 30.0, 'stepsize': 0.5}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/configuration/quick_veto'}}, {'name': 'Speciale modus die werd geactiveerd', 'definition': {'values': ['NO_QUICK_MODE', 'QM_PARTY', 'QM_VENTILATION_BOOST', 'QM_ONE_DAY_AT_HOME', 'QM_ONE_DAY_AWAY']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/configuration/quickmode'}}, {'name': 'Bedrijfsmodus: koelen', 'definition': {'values': []}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/cooling/configuration/mode'}}, {'name': 'Dag gewenste kamertemperatuur', 'definition': {'min': 5.0, 'max': 30.0, 'stepsize': 0.5}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/heating/configuration/setpoint_temperature'}}, {'name': 'Dagtemperatuur koelen', 'definition': {'min': 15.0, 'max': 30.0, 'stepsize': 0.5}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/cooling/configuration/setpoint_temperature'}}, {'name': 'Modus verwarmen', 'definition': {'values': ['AUTO', 'SETBACK', 'OFF']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/heating/configuration/mode'}}, {'name': 'Nachttemperatuur', 'definition': {'min': 5.0, 'max': 30.0, 'stepsize': 0.5}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/heating/configuration/setback_temperature'}}, {'name': 'Quick Veto gewenste kamertemperatuur', 'definition': {'min': 5.0, 'max': 30.0, 'stepsize': 0.5}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/configuration/quick_veto'}}, {'name': 'Speciale modus die werd geactiveerd', 'definition': {'values': ['NO_QUICK_MODE', 'QM_PARTY', 'QM_VENTILATION_BOOST', 'QM_ONE_DAY_AT_HOME', 'QM_ONE_DAY_AWAY']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/configuration/quickmode'}}, {'name': 'Modus warmwatercircuit', 'definition': {'values': ['AUTO', 'DAY', 'OFF']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/dhw/Control_DHW/hotwater/configuration/operation_mode'}}, {'name': 'Bedrijfsmodus: ventileren', 'definition': {'values': ['AUTO', 'NIGHT', 'DAY']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/ventilation/Control_SYS_MultiMatic/fan/configuration/operation_mode'}}, {'name': 'Gewenste kamertemperatuur voor dagen buitenshuis', 'definition': {'min': 5.0, 'max': 30.0, 'stepsize': 1.0}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/configuration/holidaymode'}}, {'name': 'Maximale ventilatiestand dag', 'definition': {'min': 1.0, 'max': 6.0, 'stepsize': 1.0}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/ventilation/Control_SYS_MultiMatic/fan/configuration/day_level'}}, {'name': 'Maximale ventilatiestand nacht', 'definition': {'min': 1.0, 'max': 6.0, 'stepsize': 1.0}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/ventilation/Control_SYS_MultiMatic/fan/configuration/night_level'}}, {'name': 'Speciale modus die werd geactiveerd', 'definition': {'values': ['NO_QUICK_MODE', 'QM_PARTY', 'QM_VENTILATION_BOOST', 'QM_ONE_DAY_AT_HOME', 'QM_ONE_DAY_AWAY']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/configuration/quickmode'}}], 'dhw': [{'hotwater': {'configuration': {'operation_mode': 'AUTO', 'temperature_setpoint': 55.0}, 'timeprogram': {'monday': [{'startTime': '00:00', 'mode': 'OFF'}, {'startTime': '07:00', 'mode': 'ON'}, {'startTime': '22:50', 'mode': 'OFF'}], 'tuesday': [{'startTime': '00:00', 'mode': 'OFF'}, {'startTime': '07:00', 'mode': 'ON'}, {'startTime': '22:50', 'mode': 'OFF'}], 'wednesday': [{'startTime': '00:00', 'mode': 'OFF'}, {'startTime': '07:00', 'mode': 'ON'}, {'startTime': '22:50', 'mode': 'OFF'}], 'thursday': [{'startTime': '00:00', 'mode': 'OFF'}, {'startTime': '07:00', 'mode': 'ON'}, {'startTime': '22:50', 'mode': 'OFF'}], 'friday': [{'startTime': '00:00', 'mode': 'OFF'}, {'startTime': '07:00', 'mode': 'ON'}, {'startTime': '22:50', 'mode': 'OFF'}], 'saturday': [{'startTime': '00:00', 'mode': 'OFF'}, {'startTime': '07:30', 'mode': 'ON'}, {'startTime': '22:50', 'mode': 'OFF'}], 'sunday': [{'startTime': '00:00', 'mode': 'OFF'}, {'startTime': '07:30', 'mode': 'ON'}, {'startTime': '22:50', 'mode': 'OFF'}]}}, 'circulation': {'configuration': {'operationMode': 'AUTO'}, 'timeprogram': {'monday': [{'startTime': '00:00', 'setting': 'OFF'}, {'startTime': '07:00', 'setting': 'ON'}, {'startTime': '22:50', 'setting': 'OFF'}], 'tuesday': [{'startTime': '00:00', 'setting': 'OFF'}, {'startTime': '07:00', 'setting': 'ON'}, {'startTime': '22:50', 'setting': 'OFF'}], 'wednesday': [{'startTime': '00:00', 'setting': 'OFF'}, {'startTime': '07:00', 'setting': 'ON'}, {'startTime': '22:50', 'setting': 'OFF'}], 'thursday': [{'startTime': '00:00', 'setting': 'OFF'}, {'startTime': '07:00', 'setting': 'ON'}, {'startTime': '22:50', 'setting': 'OFF'}], 'friday': [{'startTime': '00:00', 'setting': 'OFF'}, {'startTime': '07:00', 'setting': 'ON'}, {'startTime': '22:50', 'setting': 'OFF'}], 'saturday': [{'startTime': '00:00', 'setting': 'OFF'}, {'startTime': '07:00', 'setting': 'ON'}, {'startTime': '22:50', 'setting': 'OFF'}], 'sunday': [{'startTime': '00:00', 'setting': 'OFF'}, {'startTime': '07:00', 'setting': 'ON'}, {'startTime': '22:50', 'setting': 'OFF'}]}}, '_id': 'Control_DHW'}]}, 'meta': {'resourceState': [{'state': 'SYNCED', 'timestamp': 1624364032482, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/status'}}, {'state': 'OUTDATED', 'timestamp': 1624364032482, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/configuration'}}, {'state': 'SYNCED', 'timestamp': 1624364032482, 'link': {'rel': 'child', 'resourceLink': '/facilities/xx/systemcontrol/v1/configuration/holidaymode'}}, {'state': 'SYNCED', 'timestamp': 1624364032482, 'link': {'rel': 'child', 'resourceLink': '/facilities/xx/systemcontrol/v1/configuration/quickmode'}}, {'state': 'OUTDATED', 'timestamp': 1624364006180, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/heating/configuration'}}, {'state': 'SYNCED', 'timestamp': 1624370948000, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/heating/timeprogram'}}, {'state': 'OUTDATED', 'timestamp': 1624361504029, 'link': {'rel': 'child', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/configuration/quick_veto'}}, {'state': 'OUTDATED', 'timestamp': 1624364006180, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/configuration'}}, {'state': 'INITIALIZING', 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/heating/configuration'}}, {'state': 'SYNCED', 'timestamp': 1624370948000, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/heating/timeprogram'}}, {'state': 'SYNCED', 'timestamp': 1624364062894, 'link': {'rel': 'child', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/configuration/quick_veto'}}, {'state': 'INITIALIZING', 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/configuration'}}, {'state': 'SYNCED', 'timestamp': 1624371292314, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/dhw/Control_DHW/circulation/configuration'}}, {'state': 'OUTDATED', 'timestamp': 1624363988996, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/dhw/Control_DHW/hotwater/configuration'}}, {'state': 'SYNCED', 'timestamp': 1624370948000, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/dhw/Control_DHW/circulation/timeprogram'}}, {'state': 'SYNCED', 'timestamp': 1624370948000, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/dhw/Control_DHW/hotwater/timeprogram'}}]}}
Error with multimatic API: Cannot validate response from vaillant, status: 200, response: {'body': {'zones': [{'heating': {'timeprogram': {'monday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'tuesday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'wednesday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'thursday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'friday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'saturday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:30', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'sunday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:30', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}]}}, 'configuration': {'name': 'BENEDEN ', 'enabled': True, 'active_function': 'STANDBY', 'inside_temperature': 23.4, 'quick_veto': {'active': False, 'setpoint_temperature': 16.0}}, '_id': 'Control_ZO1'}, {'heating': {'timeprogram': {'monday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'tuesday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'wednesday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'thursday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'friday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'saturday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:30', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'sunday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:30', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}]}}, '_id': 'Control_ZO2'}], 'configuration': {'eco_mode': False, 'holidaymode': {'active': False, 'start_date': '2019-12-31', 'end_date': '2020-01-01', 'temperature_setpoint': 5.0}}, 'status': {'datetime': '2021-06-22T14:17:16.000Z', 'outside_temperature': 18.0}, 'parameters': [{'name': 'HEATING', 'definition': {'values': ['NIGHT', 'DAY']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/heating/timeprogram'}}, {'name': 'HEATING', 'definition': {'values': ['NIGHT', 'DAY']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/heating/timeprogram'}}, {'name': 'COOLING', 'definition': {'values': ['OFF', 'ON']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/cooling/timeprogram'}}, {'name': 'COOLING', 'definition': {'values': ['OFF', 'ON']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/cooling/timeprogram'}}, {'name': 'HOTWATER', 'definition': {'values': ['OFF', 'ON']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/dhw/Control_DHW/hotwater/timeprogram'}}, {'name': 'CIRCULATION_PUMP', 'definition': {'values': ['OFF', 'ON']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/dhw/Control_DHW/circulation/timeprogram'}}, {'name': 'VENTILATION', 'definition': {'values': ['NIGHT', 'DAY']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/ventilation/Control_SYS_MultiMatic/fan/timeprogram'}}, {'name': 'Bedrijfsmodus: koelen', 'definition': {'values': []}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/cooling/configuration/mode'}}, {'name': 'Dag gewenste kamertemperatuur', 'definition': {'min': 5.0, 'max': 30.0, 'stepsize': 0.5}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/heating/configuration/setpoint_temperature'}}, {'name': 'Dagtemperatuur koelen', 'definition': {'min': 15.0, 'max': 30.0, 'stepsize': 0.5}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/cooling/configuration/setpoint_temperature'}}, {'name': 'Modus verwarmen', 'definition': {'values': ['AUTO', 'SETBACK', 'OFF']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/heating/configuration/mode'}}, {'name': 'Nachttemperatuur', 'definition': {'min': 5.0, 'max': 30.0, 'stepsize': 0.5}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/heating/configuration/setback_temperature'}}, {'name': 'Quick Veto gewenste kamertemperatuur', 'definition': {'min': 5.0, 'max': 30.0, 'stepsize': 0.5}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/configuration/quick_veto'}}, {'name': 'Speciale modus die werd geactiveerd', 'definition': {'values': ['NO_QUICK_MODE', 'QM_PARTY', 'QM_VENTILATION_BOOST', 'QM_ONE_DAY_AT_HOME', 'QM_ONE_DAY_AWAY']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/configuration/quickmode'}}, {'name': 'Bedrijfsmodus: koelen', 'definition': {'values': []}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/cooling/configuration/mode'}}, {'name': 'Dag gewenste kamertemperatuur', 'definition': {'min': 5.0, 'max': 30.0, 'stepsize': 0.5}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/heating/configuration/setpoint_temperature'}}, {'name': 'Dagtemperatuur koelen', 'definition': {'min': 15.0, 'max': 30.0, 'stepsize': 0.5}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/cooling/configuration/setpoint_temperature'}}, {'name': 'Modus verwarmen', 'definition': {'values': ['AUTO', 'SETBACK', 'OFF']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/heating/configuration/mode'}}, {'name': 'Nachttemperatuur', 'definition': {'min': 5.0, 'max': 30.0, 'stepsize': 0.5}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/heating/configuration/setback_temperature'}}, {'name': 'Quick Veto gewenste kamertemperatuur', 'definition': {'min': 5.0, 'max': 30.0, 'stepsize': 0.5}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/configuration/quick_veto'}}, {'name': 'Speciale modus die werd geactiveerd', 'definition': {'values': ['NO_QUICK_MODE', 'QM_PARTY', 'QM_VENTILATION_BOOST', 'QM_ONE_DAY_AT_HOME', 'QM_ONE_DAY_AWAY']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/configuration/quickmode'}}, {'name': 'Modus warmwatercircuit', 'definition': {'values': ['AUTO', 'DAY', 'OFF']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/dhw/Control_DHW/hotwater/configuration/operation_mode'}}, {'name': 'Bedrijfsmodus: ventileren', 'definition': {'values': ['AUTO', 'NIGHT', 'DAY']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/ventilation/Control_SYS_MultiMatic/fan/configuration/operation_mode'}}, {'name': 'Gewenste kamertemperatuur voor dagen buitenshuis', 'definition': {'min': 5.0, 'max': 30.0, 'stepsize': 1.0}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/configuration/holidaymode'}}, {'name': 'Maximale ventilatiestand dag', 'definition': {'min': 1.0, 'max': 6.0, 'stepsize': 1.0}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/ventilation/Control_SYS_MultiMatic/fan/configuration/day_level'}}, {'name': 'Maximale ventilatiestand nacht', 'definition': {'min': 1.0, 'max': 6.0, 'stepsize': 1.0}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/ventilation/Control_SYS_MultiMatic/fan/configuration/night_level'}}, {'name': 'Speciale modus die werd geactiveerd', 'definition': {'values': ['NO_QUICK_MODE', 'QM_PARTY', 'QM_VENTILATION_BOOST', 'QM_ONE_DAY_AT_HOME', 'QM_ONE_DAY_AWAY']}, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/configuration/quickmode'}}], 'dhw': [{'hotwater': {'timeprogram': {'monday': [{'startTime': '00:00', 'mode': 'OFF'}, {'startTime': '07:00', 'mode': 'ON'}, {'startTime': '22:50', 'mode': 'OFF'}], 'tuesday': [{'startTime': '00:00', 'mode': 'OFF'}, {'startTime': '07:00', 'mode': 'ON'}, {'startTime': '22:50', 'mode': 'OFF'}], 'wednesday': [{'startTime': '00:00', 'mode': 'OFF'}, {'startTime': '07:00', 'mode': 'ON'}, {'startTime': '22:50', 'mode': 'OFF'}], 'thursday': [{'startTime': '00:00', 'mode': 'OFF'}, {'startTime': '07:00', 'mode': 'ON'}, {'startTime': '22:50', 'mode': 'OFF'}], 'friday': [{'startTime': '00:00', 'mode': 'OFF'}, {'startTime': '07:00', 'mode': 'ON'}, {'startTime': '22:50', 'mode': 'OFF'}], 'saturday': [{'startTime': '00:00', 'mode': 'OFF'}, {'startTime': '07:30', 'mode': 'ON'}, {'startTime': '22:50', 'mode': 'OFF'}], 'sunday': [{'startTime': '00:00', 'mode': 'OFF'}, {'startTime': '07:30', 'mode': 'ON'}, {'startTime': '22:50', 'mode': 'OFF'}]}}, 'circulation': {'configuration': {'operationMode': 'AUTO'}, 'timeprogram': {'monday': [{'startTime': '00:00', 'setting': 'OFF'}, {'startTime': '07:00', 'setting': 'ON'}, {'startTime': '22:50', 'setting': 'OFF'}], 'tuesday': [{'startTime': '00:00', 'setting': 'OFF'}, {'startTime': '07:00', 'setting': 'ON'}, {'startTime': '22:50', 'setting': 'OFF'}], 'wednesday': [{'startTime': '00:00', 'setting': 'OFF'}, {'startTime': '07:00', 'setting': 'ON'}, {'startTime': '22:50', 'setting': 'OFF'}], 'thursday': [{'startTime': '00:00', 'setting': 'OFF'}, {'startTime': '07:00', 'setting': 'ON'}, {'startTime': '22:50', 'setting': 'OFF'}], 'friday': [{'startTime': '00:00', 'setting': 'OFF'}, {'startTime': '07:00', 'setting': 'ON'}, {'startTime': '22:50', 'setting': 'OFF'}], 'saturday': [{'startTime': '00:00', 'setting': 'OFF'}, {'startTime': '07:00', 'setting': 'ON'}, {'startTime': '22:50', 'setting': 'OFF'}], 'sunday': [{'startTime': '00:00', 'setting': 'OFF'}, {'startTime': '07:00', 'setting': 'ON'}, {'startTime': '22:50', 'setting': 'OFF'}]}}, '_id': 'Control_DHW'}]}, 'meta': {'resourceState': [{'state': 'SYNCED', 'timestamp': 1624364239547, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/status'}}, {'state': 'OUTDATED', 'timestamp': 1624364287312, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/configuration'}}, {'state': 'SYNCED', 'timestamp': 1624364239547, 'link': {'rel': 'child', 'resourceLink': '/facilities/xx/systemcontrol/v1/configuration/holidaymode'}}, {'state': 'SYNCED', 'timestamp': 1624364032482, 'link': {'rel': 'child', 'resourceLink': '/facilities/xx/systemcontrol/v1/configuration/quickmode'}}, {'state': 'INITIALIZING', 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/heating/configuration'}}, {'state': 'SYNCED', 'timestamp': 1624371407000, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/heating/timeprogram'}}, {'state': 'OUTDATED', 'timestamp': 1624361504029, 'link': {'rel': 'child', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/configuration/quick_veto'}}, {'state': 'OUTDATED', 'timestamp': 1624364287312, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO1/configuration'}}, {'state': 'INITIALIZING', 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/heating/configuration'}}, {'state': 'SYNCED', 'timestamp': 1624371407000, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/heating/timeprogram'}}, {'state': 'SYNCED', 'timestamp': 1624364062894, 'link': {'rel': 'child', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/configuration/quick_veto'}}, {'state': 'INITIALIZING', 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/zones/Control_ZO2/configuration'}}, {'state': 'SYNCED', 'timestamp': 1624371533292, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/dhw/Control_DHW/circulation/configuration'}}, {'state': 'INITIALIZING', 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/dhw/Control_DHW/hotwater/configuration'}}, {'state': 'SYNCED', 'timestamp': 1624371407000, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/dhw/Control_DHW/circulation/timeprogram'}}, {'state': 'SYNCED', 'timestamp': 1624371407000, 'link': {'rel': 'self', 'resourceLink': '/facilities/xx/systemcontrol/v1/dhw/Control_DHW/hotwater/timeprogram'}}]}}

Unknown model

Hi. I have multimatic integration 1.7.0b3 on my Home Assistant. And in home assistant in configuration>devices when i see my device vaillany has UNKNOWN model for this. Good will be if it show in this name example Vaillant or model boiler.... It will looks better. Please think about it.
unknown_model

custom_components/multimatic/sensor.py:103 AttributeError: 'NoneType' object has no attribute 'unit'

Have been getting this error for some time now. Running multimatic component v1.6.0, HA Container v2021.5.0

Logger: homeassistant
Source: custom_components/multimatic/sensor.py:103
Integration: Multimatic (documentation, issues)
First occurred: 23 mei 2021 19:23:57 (66 occurrences)
Last logged: 16:32:20

Error doing job: Task exception was never retrieved
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 127, in _handle_refresh_interval
await self._async_refresh(log_failures=True, scheduled=True)
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 259, in _async_refresh
update_callback()
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 319, in _handle_coordinator_update
self.async_write_ha_state()
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 334, in async_write_ha_state
self._async_write_ha_state()
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 378, in _async_write_ha_state
unit_of_measurement = self.unit_of_measurement
File "/config/custom_components/multimatic/sensor.py", line 103, in unit_of_measurement
return self.report.unit
AttributeError: 'NoneType' object has no attribute 'unit'

HistoryGraph for working status of water heater and heating

Hello, first of all, thank you for this great work on this integration.

Is it possible to read out the status if heating and hot water are currently in operation, i.e. whether the system is currently running?

I would like to have a historygraph like the one for the status of the circulation.

set_holiday_mode service: time conversion issue

Hi,

I can't use set_holiday_mode service. I first tried this:
service_1

I got this error:

2020-05-17 19:36:55 ERROR (MainThread) [homeassistant.components.websocket_api.http.connection.2820788336] unconverted data remains: T00:00:00.000Z
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 130, in handle_call_service
connection.context(msg),
File "/usr/src/homeassistant/homeassistant/core.py", line 1247, in async_call
task.result()
File "/usr/src/homeassistant/homeassistant/core.py", line 1282, in _execute_service
await handler.func(service_call)
File "/config/custom_components/vaillant/service.py", line 109, in set_holiday_mode
start = datetime.strptime(start_str, "%Y-%m-%d")
File "/usr/local/lib/python3.7/_strptime.py", line 577, in _strptime_datetime
tt, fraction, gmtoff_fraction = _strptime(data_string, format)
File "/usr/local/lib/python3.7/_strptime.py", line 362, in _strptime
data_string[found.end():])
ValueError: unconverted data remains: T00:00:00.000Z

After that I removed T00:00:00.000Z. But the error still remains.

Support for VMS8D

Hi! At home we have a Vaillant heat pump setup but also a VSM8D solar system. The multimatic app does not show any information about the VMS8D but I guess the information should be available within the eBus system, right?

Is there any possibility to get the information from the VMS8D into Home Assistent?

Senso app integration

I am able to test with senso app and VR921 and tried this pre-release:

Unfortunate after providing the login-in information the integration fails to load:

No 'version' key in the manifest file for custom integration 'multimatic'. As of Home Assistant 2021.6, this integration will no longer be loaded. Please report this to the maintainer of 'multimatic'
9:48:03 PM – (WARNING) loader.py
You are using a custom integration multimatic which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant
9:48:03 PM – (WARNING) loader.py
Setup failed for vaillant: Integration not found.
9:48:02 PM – (ERROR) setup.py

Hope this helps troubleshooting further?!

Error while setting up multimatic platform for fan multimatic/fan.py:22 NoneType' object has no attribute 'ventilation'

Seeing a specific error related to fan.py

Running HA Container, 2021.5.0, and latest version of multimatic custom component (v1.6.1).

`Logger: homeassistant.components.fan
Source: custom_components/multimatic/fan.py:22
Integration: Ventilator (documentation, issues)
First occurred: 17:40:05 (1 occurrences)
Last logged: 17:40:05

Error while setting up multimatic platform for fan
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 231, in _async_setup_platform
await asyncio.shield(task)
File "/config/custom_components/multimatic/fan.py", line 22, in async_setup_entry
if hub.data.ventilation:
AttributeError: 'NoneType' object has no attribute 'ventilation'`

Setup failed for vaillant: 'Integration not found' after update HA Core

Hi,
I've update HA Core from core-2021.5.5 to core-2021.6.2
After restarting I have a notification:
The following integration and platform could not be set up: vaillant
The log shows:
Logger: homeassistant.setup Source: setup.py:172
I don't know if this refers to a file called 'setup.py'. In my vaillant folder under custom-components there is no setup.py:
Schermafbeelding 2021-06-06 om 19 20 03
I went back to core-2021.5.5 with the snapshot and everything started normally.
Gave it a 2th try to core-2021.6.2 and had again the same error.
Could it be that your integrations is no longer compatible with the new core version?
Is there anything I can do from my side to solve this issue?
If a can log something for you, please send intructions.
I hope this is soon resolved.

Kind regards,
Johan

Unexpected error fetching multimatic_zones data - custom_components/multimatic/coordinator.py:94

Running HA Docker 2021.7.0, multimatic v1.7.0.4b

After restart, the custom component throws following error:

`Logger: custom_components.multimatic.coordinator
Source: custom_components/multimatic/coordinator.py:94
Integration: Multimatic (documentation, issues)
First occurred: 11:52:30 (1 occurrences)
Last logged: 11:52:30

Unexpected error fetching multimatic_zones data:
Traceback (most recent call last):
File "/usr/local/lib/python3.9/site-packages/schema.py", line 396, in validate
nvalue = Schema(svalue, error=e, ignore_extra_keys=i).validate(value)
File "/usr/local/lib/python3.9/site-packages/schema.py", line 357, in validate
return type(data)(o.validate(d) for d in data)
File "/usr/local/lib/python3.9/site-packages/schema.py", line 357, in
return type(data)(o.validate(d) for d in data)
File "/usr/local/lib/python3.9/site-packages/schema.py", line 165, in validate
raise SchemaError(
schema.SchemaError: Or(Schema(Or(Schema({'_id': And(<class 'str'>, ), 'configuration': Schema({'name': And(<class 'str'>, ), Optional('enabled'): <class 'bool'>, Optional('inside_temperature'): Or(<class 'int'>, <class 'float'>), Optional('active_function'): And(<class 'str'>, ), Optional('quick_veto'): {'active': <class 'bool'>, 'setpoint_temperature': Or(<class 'int'>, <class 'float'>)}, Optional('quickmode'): Schema({Optional('quickmode'): And(<class 'str'>, ), Optional('duration'): Or(<class 'int'>, <class 'float'>)})}), Optional('currently_controlled_by'): Schema({'name': And(And(<class 'str'>, ), <function at 0x6d186fa0>), Optional('link'): {Optional('rel'): <class 'str'>, 'resourceLink': <class 'str'>, Optional('name'): <class 'str'>}}), Optional('heating'): Schema({'configuration': {Or('mode', 'operation_mode', 'operationMode'): And(<class 'str'>, ), Optional(Or('setpoint_temperature', 'temperature_setpoint', 'temperatureSetpoint', 'day_level')): Or(<class 'int'>, <class 'float'>), Optional(Or('setback_temperature', 'night_level')): Or(<class 'int'>, <class 'float'>), Optional('day_level'): <class 'int'>, Optional('night_level'): <class 'int'>}, 'timeprogram': Schema({'monday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'tuesday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'wednesday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'thursday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'friday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'saturday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'sunday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}]})}), Optional('cooling'): Schema({'configuration': {Or('mode', 'operation_mode', 'operationMode'): And(<class 'str'>, ), Optional(Or('setpoint_temperature', 'temperature_setpoint', 'temperatureSetpoint', 'day_level')): Or(<class 'int'>, <class 'float'>), Optional(Or('setback_temperature', 'night_level')): Or(<class 'int'>, <class 'float'>), Optional('day_level'): <class 'int'>, Optional('night_level'): <class 'int'>}, 'timeprogram': Schema({'monday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'tuesday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'wednesday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'thursday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'friday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'saturday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'sunday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}]})})}), Schema({'_id': And(<class 'str'>, ), Optional('configuration'): Schema({'name': And(<class 'str'>, ), Optional('enabled'): <class 'bool'>, Optional('inside_temperature'): Or(<class 'int'>, <class 'float'>), Optional('active_function'): And(<class 'str'>, ), Optional('quick_veto'): {'active': <class 'bool'>, 'setpoint_temperature': Or(<class 'int'>, <class 'float'>)}, Optional('quickmode'): Schema({Optional('quickmode'): And(<class 'str'>, ), Optional('duration'): Or(<class 'int'>, <class 'float'>)})}), 'currently_controlled_by': Schema({'name': Or('RBR', 'rbr'), Optional('link'): {Optional('rel'): <class 'str'>, 'resourceLink': <class 'str'>, Optional('name'): <class 'str'>}}), Optional('heating'): Schema({Optional('configuration'): {Or('mode', 'operation_mode', 'operationMode'): And(<class 'str'>, ), Optional(Or('setpoint_temperature', 'temperature_setpoint', 'temperatureSetpoint', 'day_level')): Or(<class 'int'>, <class 'float'>), Optional(Or('setback_temperature', 'night_level')): Or(<class 'int'>, <class 'float'>), Optional('day_level'): <class 'int'>, Optional('night_level'): <class 'int'>}, Optional('timeprogram'): Schema({'monday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'tuesday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'wednesday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'thursday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'friday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'saturday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'sunday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}]})}), Optional('cooling'): Schema({Optional('configuration'): {Or('mode', 'operation_mode', 'operationMode'): And(<class 'str'>, ), Optional(Or('setpoint_temperature', 'temperature_setpoint', 'temperatureSetpoint', 'day_level')): Or(<class 'int'>, <class 'float'>), Optional(Or('setback_temperature', 'night_level')): Or(<class 'int'>, <class 'float'>), Optional('day_level'): <class 'int'>, Optional('night_level'): <class 'int'>}, Optional('timeprogram'): Schema({'monday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'tuesday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'wednesday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'thursday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'friday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'saturday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'sunday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}]})})})))) did not validate {'heating': {'timeprogram': {'monday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'tuesday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'wednesday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'thursday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'friday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'saturday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:30', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'sunday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:30', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}]}}, 'configuration': {'name': 'BENEDEN ', 'enabled': True, 'active_function': 'STANDBY', 'inside_temperature': 23.6, 'quick_veto': {'active': False, 'setpoint_temperature': 21.0}}, '_id': 'Control_ZO1'}
Or(Schema({'_id': And(<class 'str'>, ), 'configuration': Schema({'name': And(<class 'str'>, ), Optional('enabled'): <class 'bool'>, Optional('inside_temperature'): Or(<class 'int'>, <class 'float'>), Optional('active_function'): And(<class 'str'>, ), Optional('quick_veto'): {'active': <class 'bool'>, 'setpoint_temperature': Or(<class 'int'>, <class 'float'>)}, Optional('quickmode'): Schema({Optional('quickmode'): And(<class 'str'>, ), Optional('duration'): Or(<class 'int'>, <class 'float'>)})}), Optional('currently_controlled_by'): Schema({'name': And(And(<class 'str'>, ), <function at 0x6d186fa0>), Optional('link'): {Optional('rel'): <class 'str'>, 'resourceLink': <class 'str'>, Optional('name'): <class 'str'>}}), Optional('heating'): Schema({'configuration': {Or('mode', 'operation_mode', 'operationMode'): And(<class 'str'>, ), Optional(Or('setpoint_temperature', 'temperature_setpoint', 'temperatureSetpoint', 'day_level')): Or(<class 'int'>, <class 'float'>), Optional(Or('setback_temperature', 'night_level')): Or(<class 'int'>, <class 'float'>), Optional('day_level'): <class 'int'>, Optional('night_level'): <class 'int'>}, 'timeprogram': Schema({'monday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'tuesday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'wednesday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'thursday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'friday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'saturday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'sunday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}]})}), Optional('cooling'): Schema({'configuration': {Or('mode', 'operation_mode', 'operationMode'): And(<class 'str'>, ), Optional(Or('setpoint_temperature', 'temperature_setpoint', 'temperatureSetpoint', 'day_level')): Or(<class 'int'>, <class 'float'>), Optional(Or('setback_temperature', 'night_level')): Or(<class 'int'>, <class 'float'>), Optional('day_level'): <class 'int'>, Optional('night_level'): <class 'int'>}, 'timeprogram': Schema({'monday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'tuesday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'wednesday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'thursday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'friday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'saturday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'sunday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}]})})}), Schema({'_id': And(<class 'str'>, ), Optional('configuration'): Schema({'name': And(<class 'str'>, ), Optional('enabled'): <class 'bool'>, Optional('inside_temperature'): Or(<class 'int'>, <class 'float'>), Optional('active_function'): And(<class 'str'>, ), Optional('quick_veto'): {'active': <class 'bool'>, 'setpoint_temperature': Or(<class 'int'>, <class 'float'>)}, Optional('quickmode'): Schema({Optional('quickmode'): And(<class 'str'>, ), Optional('duration'): Or(<class 'int'>, <class 'float'>)})}), 'currently_controlled_by': Schema({'name': Or('RBR', 'rbr'), Optional('link'): {Optional('rel'): <class 'str'>, 'resourceLink': <class 'str'>, Optional('name'): <class 'str'>}}), Optional('heating'): Schema({Optional('configuration'): {Or('mode', 'operation_mode', 'operationMode'): And(<class 'str'>, ), Optional(Or('setpoint_temperature', 'temperature_setpoint', 'temperatureSetpoint', 'day_level')): Or(<class 'int'>, <class 'float'>), Optional(Or('setback_temperature', 'night_level')): Or(<class 'int'>, <class 'float'>), Optional('day_level'): <class 'int'>, Optional('night_level'): <class 'int'>}, Optional('timeprogram'): Schema({'monday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'tuesday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'wednesday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'thursday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'friday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'saturday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'sunday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}]})}), Optional('cooling'): Schema({Optional('configuration'): {Or('mode', 'operation_mode', 'operationMode'): And(<class 'str'>, ), Optional(Or('setpoint_temperature', 'temperature_setpoint', 'temperatureSetpoint', 'day_level')): Or(<class 'int'>, <class 'float'>), Optional(Or('setback_temperature', 'night_level')): Or(<class 'int'>, <class 'float'>), Optional('day_level'): <class 'int'>, Optional('night_level'): <class 'int'>}, Optional('timeprogram'): Schema({'monday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'tuesday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'wednesday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'thursday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'friday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'saturday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'sunday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}]})})})) did not validate {'heating': {'timeprogram': {'monday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'tuesday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'wednesday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'thursday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'friday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'saturday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:30', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'sunday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:30', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}]}}, 'configuration': {'name': 'BENEDEN ', 'enabled': True, 'active_function': 'STANDBY', 'inside_temperature': 23.6, 'quick_veto': {'active': False, 'setpoint_temperature': 21.0}}, '_id': 'Control_ZO1'}
Key 'heating' error:
Missing key: 'configuration'
Missing key: 'currently_controlled_by'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/usr/local/lib/python3.9/site-packages/pymultimatic/systemmanager.py", line 823, in _validate_schema
return schema.validate(response)
File "/usr/local/lib/python3.9/site-packages/schema.py", line 400, in validate
raise SchemaError([message] + x.autos, [e.format(data) if e else None] + x.errors)
schema.SchemaError: Key 'body' error:
Or(Schema(Or(Schema({'_id': And(<class 'str'>, ), 'configuration': Schema({'name': And(<class 'str'>, ), Optional('enabled'): <class 'bool'>, Optional('inside_temperature'): Or(<class 'int'>, <class 'float'>), Optional('active_function'): And(<class 'str'>, ), Optional('quick_veto'): {'active': <class 'bool'>, 'setpoint_temperature': Or(<class 'int'>, <class 'float'>)}, Optional('quickmode'): Schema({Optional('quickmode'): And(<class 'str'>, ), Optional('duration'): Or(<class 'int'>, <class 'float'>)})}), Optional('currently_controlled_by'): Schema({'name': And(And(<class 'str'>, ), <function at 0x6d186fa0>), Optional('link'): {Optional('rel'): <class 'str'>, 'resourceLink': <class 'str'>, Optional('name'): <class 'str'>}}), Optional('heating'): Schema({'configuration': {Or('mode', 'operation_mode', 'operationMode'): And(<class 'str'>, ), Optional(Or('setpoint_temperature', 'temperature_setpoint', 'temperatureSetpoint', 'day_level')): Or(<class 'int'>, <class 'float'>), Optional(Or('setback_temperature', 'night_level')): Or(<class 'int'>, <class 'float'>), Optional('day_level'): <class 'int'>, Optional('night_level'): <class 'int'>}, 'timeprogram': Schema({'monday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'tuesday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'wednesday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'thursday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'friday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'saturday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'sunday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}]})}), Optional('cooling'): Schema({'configuration': {Or('mode', 'operation_mode', 'operationMode'): And(<class 'str'>, ), Optional(Or('setpoint_temperature', 'temperature_setpoint', 'temperatureSetpoint', 'day_level')): Or(<class 'int'>, <class 'float'>), Optional(Or('setback_temperature', 'night_level')): Or(<class 'int'>, <class 'float'>), Optional('day_level'): <class 'int'>, Optional('night_level'): <class 'int'>}, 'timeprogram': Schema({'monday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'tuesday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'wednesday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'thursday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'friday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'saturday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'sunday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}]})})}), Schema({'_id': And(<class 'str'>, ), Optional('configuration'): Schema({'name': And(<class 'str'>, ), Optional('enabled'): <class 'bool'>, Optional('inside_temperature'): Or(<class 'int'>, <class 'float'>), Optional('active_function'): And(<class 'str'>, ), Optional('quick_veto'): {'active': <class 'bool'>, 'setpoint_temperature': Or(<class 'int'>, <class 'float'>)}, Optional('quickmode'): Schema({Optional('quickmode'): And(<class 'str'>, ), Optional('duration'): Or(<class 'int'>, <class 'float'>)})}), 'currently_controlled_by': Schema({'name': Or('RBR', 'rbr'), Optional('link'): {Optional('rel'): <class 'str'>, 'resourceLink': <class 'str'>, Optional('name'): <class 'str'>}}), Optional('heating'): Schema({Optional('configuration'): {Or('mode', 'operation_mode', 'operationMode'): And(<class 'str'>, ), Optional(Or('setpoint_temperature', 'temperature_setpoint', 'temperatureSetpoint', 'day_level')): Or(<class 'int'>, <class 'float'>), Optional(Or('setback_temperature', 'night_level')): Or(<class 'int'>, <class 'float'>), Optional('day_level'): <class 'int'>, Optional('night_level'): <class 'int'>}, Optional('timeprogram'): Schema({'monday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'tuesday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'wednesday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'thursday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'friday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'saturday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'sunday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}]})}), Optional('cooling'): Schema({Optional('configuration'): {Or('mode', 'operation_mode', 'operationMode'): And(<class 'str'>, ), Optional(Or('setpoint_temperature', 'temperature_setpoint', 'temperatureSetpoint', 'day_level')): Or(<class 'int'>, <class 'float'>), Optional(Or('setback_temperature', 'night_level')): Or(<class 'int'>, <class 'float'>), Optional('day_level'): <class 'int'>, Optional('night_level'): <class 'int'>}, Optional('timeprogram'): Schema({'monday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'tuesday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'wednesday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'thursday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'friday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'saturday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'sunday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}]})})})))) did not validate {'heating': {'timeprogram': {'monday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'tuesday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'wednesday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'thursday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'friday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'saturday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:30', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'sunday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:30', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}]}}, 'configuration': {'name': 'BENEDEN ', 'enabled': True, 'active_function': 'STANDBY', 'inside_temperature': 23.6, 'quick_veto': {'active': False, 'setpoint_temperature': 21.0}}, '_id': 'Control_ZO1'}
Or(Schema({'_id': And(<class 'str'>, ), 'configuration': Schema({'name': And(<class 'str'>, ), Optional('enabled'): <class 'bool'>, Optional('inside_temperature'): Or(<class 'int'>, <class 'float'>), Optional('active_function'): And(<class 'str'>, ), Optional('quick_veto'): {'active': <class 'bool'>, 'setpoint_temperature': Or(<class 'int'>, <class 'float'>)}, Optional('quickmode'): Schema({Optional('quickmode'): And(<class 'str'>, ), Optional('duration'): Or(<class 'int'>, <class 'float'>)})}), Optional('currently_controlled_by'): Schema({'name': And(And(<class 'str'>, ), <function at 0x6d186fa0>), Optional('link'): {Optional('rel'): <class 'str'>, 'resourceLink': <class 'str'>, Optional('name'): <class 'str'>}}), Optional('heating'): Schema({'configuration': {Or('mode', 'operation_mode', 'operationMode'): And(<class 'str'>, ), Optional(Or('setpoint_temperature', 'temperature_setpoint', 'temperatureSetpoint', 'day_level')): Or(<class 'int'>, <class 'float'>), Optional(Or('setback_temperature', 'night_level')): Or(<class 'int'>, <class 'float'>), Optional('day_level'): <class 'int'>, Optional('night_level'): <class 'int'>}, 'timeprogram': Schema({'monday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'tuesday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'wednesday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'thursday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'friday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'saturday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'sunday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}]})}), Optional('cooling'): Schema({'configuration': {Or('mode', 'operation_mode', 'operationMode'): And(<class 'str'>, ), Optional(Or('setpoint_temperature', 'temperature_setpoint', 'temperatureSetpoint', 'day_level')): Or(<class 'int'>, <class 'float'>), Optional(Or('setback_temperature', 'night_level')): Or(<class 'int'>, <class 'float'>), Optional('day_level'): <class 'int'>, Optional('night_level'): <class 'int'>}, 'timeprogram': Schema({'monday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'tuesday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'wednesday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'thursday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'friday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'saturday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'sunday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}]})})}), Schema({'_id': And(<class 'str'>, ), Optional('configuration'): Schema({'name': And(<class 'str'>, ), Optional('enabled'): <class 'bool'>, Optional('inside_temperature'): Or(<class 'int'>, <class 'float'>), Optional('active_function'): And(<class 'str'>, ), Optional('quick_veto'): {'active': <class 'bool'>, 'setpoint_temperature': Or(<class 'int'>, <class 'float'>)}, Optional('quickmode'): Schema({Optional('quickmode'): And(<class 'str'>, ), Optional('duration'): Or(<class 'int'>, <class 'float'>)})}), 'currently_controlled_by': Schema({'name': Or('RBR', 'rbr'), Optional('link'): {Optional('rel'): <class 'str'>, 'resourceLink': <class 'str'>, Optional('name'): <class 'str'>}}), Optional('heating'): Schema({Optional('configuration'): {Or('mode', 'operation_mode', 'operationMode'): And(<class 'str'>, ), Optional(Or('setpoint_temperature', 'temperature_setpoint', 'temperatureSetpoint', 'day_level')): Or(<class 'int'>, <class 'float'>), Optional(Or('setback_temperature', 'night_level')): Or(<class 'int'>, <class 'float'>), Optional('day_level'): <class 'int'>, Optional('night_level'): <class 'int'>}, Optional('timeprogram'): Schema({'monday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'tuesday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'wednesday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'thursday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'friday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'saturday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'sunday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}]})}), Optional('cooling'): Schema({Optional('configuration'): {Or('mode', 'operation_mode', 'operationMode'): And(<class 'str'>, ), Optional(Or('setpoint_temperature', 'temperature_setpoint', 'temperatureSetpoint', 'day_level')): Or(<class 'int'>, <class 'float'>), Optional(Or('setback_temperature', 'night_level')): Or(<class 'int'>, <class 'float'>), Optional('day_level'): <class 'int'>, Optional('night_level'): <class 'int'>}, Optional('timeprogram'): Schema({'monday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'tuesday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'wednesday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'thursday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'friday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'saturday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}], 'sunday': [{'startTime': And(<class 'str'>, ), Optional('temperatureSetpoint'): Or(<class 'int'>, <class 'float'>), Optional('setting'): And(<class 'str'>, ), Optional('mode'): And(<class 'str'>, )}]})})})) did not validate {'heating': {'timeprogram': {'monday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'tuesday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'wednesday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'thursday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'friday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:00', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'saturday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:30', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}], 'sunday': [{'startTime': '00:00', 'setting': 'NIGHT'}, {'startTime': '07:30', 'setting': 'DAY'}, {'startTime': '22:50', 'setting': 'NIGHT'}]}}, 'configuration': {'name': 'BENEDEN ', 'enabled': True, 'active_function': 'STANDBY', 'inside_temperature': 23.6, 'quick_veto': {'active': False, 'setpoint_temperature': 21.0}}, '_id': 'Control_ZO1'}
Key 'heating' error:
Missing key: 'configuration'
Missing key: 'currently_controlled_by'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 187, in _async_refresh
self.data = await self._async_update_data()
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 147, in _async_update_data
return await self.update_method()
File "/config/custom_components/multimatic/coordinator.py", line 503, in _fetch_data_if_needed
return await self._fetch_data()
File "/config/custom_components/multimatic/coordinator.py", line 496, in _fetch_data
return await getattr(self.api, self._method)()
File "/config/custom_components/multimatic/coordinator.py", line 94, in get_zones
return await self._manager.get_zones()
File "/usr/local/lib/python3.9/site-packages/pymultimatic/systemmanager.py", line 42, in wrapper
return await func(*args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/pymultimatic/systemmanager.py", line 347, in get_zones
rooms = await self._call_api(urls.zones, schema=schemas.ZONE_LIST)
File "/usr/local/lib/python3.9/site-packages/pymultimatic/systemmanager.py", line 79, in wrapper
return await func(*args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/pymultimatic/systemmanager.py", line 817, in _call_api
return await self._validate_schema(schema, response, url)
File "/usr/local/lib/python3.9/site-packages/pymultimatic/systemmanager.py", line 825, in _validate_schema
raise WrongResponseError(
pymultimatic.api.error.WrongResponseError
`

No 'version' key in the manifest file

Cloned the latest repo and tried custom integration for Vaillant (VRC 700)

Found following in the log files (non-breaking warning):

2021-04-01 17:02:02 WARNING (MainThread) [homeassistant.loader] You are using a custom integration vaillant which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant 2021-04-01 17:02:02 WARNING (MainThread) [homeassistant.loader] No 'version' key in the manifest file for custom integration 'vaillant'. This will not be allowed in a future version of Home Assistant. Please report this to the maintainer of 'vaillant'

Change from valiant to multimatic

Hi,
hopefully someone can help me.
I tried to make the changes you said:

Delete vaillant integration from HA UI
Delete vaillant folder from custom_component
Copy multimatic folder (from 1.5.0 release) and past it to custom_component
Restart HA

But I always get this Error after restart :

2021-06-15 12:14:42 ERROR (MainThread) [homeassistant.setup] Setup failed for vaillant: Integration not found.

custom_components/multimatic/coordinator.py:106 - pymultimatic.api.error.ApiError: Cannot get https://smart.vaillant.com/mobile/api/v4/facilities

Running HA DC 2021.6.2, python 3.8.9, multimatic integration custom component v1.7.0b

Logger: custom_components.multimatic.coordinator
Source: custom_components/multimatic/coordinator.py:106
Integration: Multimatic (documentation, issues)
First occurred: 01:34:26 (2 occurrences)
Last logged: 01:51:27

Unexpected error fetching multimatic data: Cannot get https://smart.vaillant.com/mobile/api/v4/facilities
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 187, in _async_refresh
self.data = await self._async_update_data()
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 147, in _async_update_data
return await self.update_method()
File "/config/custom_components/multimatic/coordinator.py", line 106, in _fetch_data
system = await self._manager.get_system()
File "/usr/local/lib/python3.8/site-packages/pymultimatic/systemmanager.py", line 127, in get_system
facilities, full_system, live_report, hvac_state, gateway = await asyncio.gather(
File "/usr/local/lib/python3.8/site-packages/pymultimatic/systemmanager.py", line 47, in wrapper
raise ex
File "/usr/local/lib/python3.8/site-packages/pymultimatic/systemmanager.py", line 43, in wrapper
return await func(*args, **kwargs)
File "/usr/local/lib/python3.8/site-packages/pymultimatic/systemmanager.py", line 713, in _call_api
response = await self._connector.request(method, url, payload)
File "/usr/local/lib/python3.8/site-packages/pymultimatic/api/connector.py", line 174, in request
raise ApiError('Cannot ' + method + ' ' + url, response=await resp.text(),
pymultimatic.api.error.ApiError: Cannot get https://smart.vaillant.com/mobile/api/v4/facilities

custom_components/multimatic/sensor.py:127 - AttributeError: 'NoneType' object has no attribute 'unit

Running HA DC 2021.6.2, python 3.8.9, multimatic integration custom component v1.7.0b

`Logger: homeassistant
Source: custom_components/multimatic/sensor.py:127
Integration: Multimatic (documentation, issues)
First occurred: 21 juni 2021 15:46:34 (1 occurrences)
Last logged: 21 juni 2021 15:46:34

Error doing job: Task exception was never retrieved
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 134, in _handle_refresh_interval
await self._async_refresh(log_failures=True, scheduled=True)
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 265, in _async_refresh
update_callback()
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 325, in _handle_coordinator_update
self.async_write_ha_state()
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 368, in async_write_ha_state
self._async_write_ha_state()
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 438, in _async_write_ha_state
device_class = self.device_class
File "/config/custom_components/multimatic/sensor.py", line 127, in device_class
return UNIT_TO_DEVICE_CLASS.get(self.report.unit, None)
AttributeError: 'NoneType' object has no attribute 'unit'
`

support for starting criculation

@h4de5, it would be better to talk about that here 😃

So you are talking about the circulation of the domestic hot water right ? I just check and this is not possible to control the circulation through the API. maybe you can have a look at hotwater boost, according to the doc, it sets the circulation ON

HA-Error: Integration of the vaillant-component in home assistent

Environment:
Home Assistant 0.96.5
Vaillant-component 0.96

I copied the vaillant-component files to my home-assistant (raspberry pi: /config/custom_components/vaillant).
The Configuration /config/configuration.yaml:

vaillant:
  username: "myemail"
  password: "mypassword"

After restart of HA i get the following HA-error:

Setup failed for vaillant: No setup function defined.
13:37 setup.py (ERROR)

What is going wrong?

Multiple instances of the integration

Hi,

I just installed your component, and it connected to my system.
I have 2 different vaillant-boilers. both have a VR 920 so, I can control both via the multimatic app.
In home assistant it sees 2 devices. HA or the component named one multimatic and another VR920.
On the integrations pages it says there are 11 entities. But some are from the one boiler, some for the other.
Can I do something to fix this behaviour. If you need more information please do say so... I'm no developpper at all, but I'll do my best.

Feature request: Show humidity

It would be nice to show humidity in HA if present.

Here is the output of pymultimatic 0.3.2 script example, e.g. humidity=57
get_system_vaillant.txt

pymultimatic 0.4.0 raises exceptions due to missing 'timeprogram' in 'dhw'.

Thanks

Best way to update to new version(s)...

Hello Thomas,

what is the best way to update to new version ?

  • copy the new files into "custom_components"
    OR
  • delete the integration, copy new files and then re-add integration ?

thank you for your great work.

EL

Report System errors into HA

your dump.py script (from https://github.com/thomasgermain/pymultiMATIC) reports the following results on a vaillant system error:

hvac.json

{
    "body": {
        "errorMessages": [
            {
                "deviceName": "flexoTHERM",
                "type": "ERROR",
                "title": "Hochdruckschalter",
                "statusCode": "F.731",
                "description": "K\u00e4ltemitteldruck zu hoch. Integrierter Hochdruckschalter hat bei 41,5 bar (g) ausgel\u00f6st. Nicht ausreichende Energieabgabe \u00fcber den jeweiligen Verdampfer.",
                "hint": "Geb\u00e4udekreis entl\u00fcften. Pr\u00fcfen: ausreichend hoher Volumenstrom (vergr\u00f6\u00dfern durch \u00d6ffnen von Einzelraumreglern bei Fu\u00dfbodenheizung), Schmutzsiebe, K\u00e4ltemitteldurchsatz (elektronisches Expansionsventil, Vier-Wege-Ventil, Filter). VWL (K\u00fchlbetrieb): L\u00fcftereinheit (Verschmutzung), Luftkan\u00e4le (Verschmutzung).",
                "timestamp": 1596538856405
            }
        ]
    },
    "meta": {
        "onlineStatus": {
            "status": "ONLINE"
        },
        "firmwareUpdateStatus": {
            "status": "UPDATE_NOT_PENDING"
        },
        "syncState": [
            {
                "state": "SYNCED",
                "timestamp": 1596551098508,
                "link": {
                    "rel": "self",
                    "resourceLink": "/facilities/SERIAL_NUMBER/hvacstate/v1/overview"
                }
            }
        ]
    }
}

it would be great if this information gets somehow transported into home-assistant - maybe as an binary_sensor with the message as attribute.

No show info from time to time

WHen i installed Multimatic by HACS i have a problem. After reboot HA show all data ok. But after some time not show data on entieties multimatic. WHen i use old version by custom_components 1.5.0 b6 all works ok. Now still is a problem. After reboot HA again show all data and after some time again problem....

Feature: get data from emf_report

The emf_report of pymultiMATIC reveals additional devices.
In my case a heat pump VWF 117/4 which provides sensor values for energy consumption and environmental yield.
Would be cool, if the component could provide these additional devices and sensors as well.

Great work, thanks a lot!
apfelmaennchen

Error while updating sensor

2020-10-28 23:07:24 ERROR (MainThread) [homeassistant.helpers.entity] Update for sensor.vaillant_waterpressuresensor fails
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 278, in async_update_ha_state
await self.async_device_update()
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 469, in async_device_update
await self.async_update() # type: ignore
File "/config/custom_components/vaillant/entities.py", line 47, in async_update
await self.vaillant_update()
File "/config/custom_components/vaillant/sensor.py", line 92, in vaillant_update
self.report = self._find_report()
File "/config/custom_components/vaillant/sensor.py", line 96, in _find_report
if self.report.id == report.id:

Feature: Add a way to set DAY/NIGHT level for ventilation

I managed to connect my RecoVair ventilation system with the VR32 bus connector to the ebus.
I can now steer the ventilation via the app. Unfortunately there seems to be no parameter for configuring the bypass function, just ventilation levels for day and night timer program and ventilation boost as quick mode.
I attached the system.json.txt which shows the relevant data in case you want to include ventilation in the component.

Error [custom_components.vaillant.hub] Enable to fetch data from vaillant API

Hi,
this component is awesome, so thanks for that! I am seeing constant errors with pymultimatic though:

2020-03-20 08:28:21 ERROR (MainThread) [custom_components.vaillant.hub] Enable to fetch data from vaillant API Traceback (most recent call last): File "/config/custom_components/vaillant/hub.py", line 45, in _update_system self.system = await system_coro File "/usr/local/lib/python3.7/site-packages/pymultimatic/systemmanager.py", line 77, in get_system hvac_state = await hvac_state_req File "/usr/local/lib/python3.7/site-packages/pymultimatic/systemmanager.py", line 582, in _call_api return await self._connector.request(method, url, payload) File "/usr/local/lib/python3.7/site-packages/pymultimatic/api/connector.py", line 171, in request payload=payload) pymultimatic.api.error.ApiError: Cannot get https://smart.vaillant.com/mobile/api/v4/facilities/xxx/hvacstate/v1/overview

Not sure if it's polling too often and if there is a setting to reduce polling frequency in order to try to fix this error.
Once this error comes up it's repeating itself around every 2 minutes and the component is no longer updating the values.

One binary sensor for all errors

Hi
Now component generate each binary sensor for each error on boiler. But is any chance to change this in your component to generate one binary sensor which show all error in one ? becuase now i can not add sensors which now is no generated. I can add it to lovelace after create by component and when is available on boiler. This is no good,

QM_COOLING_FOR_X_DAYS return unknown error

I use your integration for a year.
After you released the cooling feature I want to add this in my homeassistant.
But I do not get it running.

At the moment I run the version 1.6.2. With other versions it does not run with other versions either.

If I want to set the quick mode for QM_COOLING_FOR_X_DAYS with this service call:

service: multimatic.set_quick_mode
data:
quick_mode: QM_COOLING_FOR_X_DAYS

I get this error message in the UI:

Failed to call service multimatic.set_quick_mode. Unknown error

See the attached traceback of the homeassistant log:

Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/components/websocket_api/decorators.py", line 25, in _handle_async_response
await func(hass, connection, msg)
File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 525, in handle_execute_script
await script_obj.async_run(msg.get("variables"), context=context)
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 1216, in async_run
await asyncio.shield(run.async_run())
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 350, in async_run
await self._async_step(log_exceptions=False)
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 368, in _async_step
await getattr(self, handler)()
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 568, in _async_call_service_step
await service_task
File "/usr/src/homeassistant/homeassistant/core.py", line 1491, in async_call
task.result()
File "/usr/src/homeassistant/homeassistant/core.py", line 1526, in _execute_service
await handler.job.target(service_call)
File "/config/custom_components/multimatic/service.py", line 99, in service_call
await method(data=call.data)
File "/config/custom_components/multimatic/service.py", line 123, in set_quick_mode
await self._hub.set_quick_mode(quick_mode)
File "/config/custom_components/multimatic/hub.py", line 325, in set_quick_mode
await self._manager.set_quick_mode(qmode)
File "/usr/local/lib/python3.8/site-packages/pymultimatic/systemmanager.py", line 195, in set_quick_mode
await self._call_api(
File "/usr/local/lib/python3.8/site-packages/pymultimatic/systemmanager.py", line 664, in _call_api
return await self._connector.request(method, url, payload)
File "/usr/local/lib/python3.8/site-packages/pymultimatic/api/connector.py", line 171, in request
raise ApiError('Cannot ' + method + ' ' + url, response=resp,
pymultimatic.api.error.ApiError: Cannot put https://smart.vaillant.com/mobile/api/v4/facilities/{SERIALNUMBER}/systemcontrol/v1/configuration/quickmode

I removed the serialnumber from the API call with {SERIALNUMBER}
Other Quick modes work.

I hope you can help me or give a hint how to use this quick mode

QM_COOLING_FOR_X_DAYS disrupts component

When switching to cooling manually on the main thermostate "Kühlen Manuell für X Tage" I always disrupt the Vaillant component. The logs from HA are posted below:

Logger: homeassistant.helpers.entity
Source: custom_components/vaillant/hub.py:75
First occurred: 12:57:10 PM (107 occurrences)
Last logged: 4:32:20 PM

Update for water_heater.vaillant_control_dhw fails
Update for sensor.vaillant_domestichotwatertanktemperature fails
Update for binary_sensor.vaillant_control_dhw fails
Update for sensor.vaillant_outdoor_temperature fails
Update for binary_sensor.vaillant_system_update fails
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 279, in async_update_ha_state
    await self.async_device_update()
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 470, in async_device_update
    await self.async_update()
  File "/config/custom_components/vaillant/entities.py", line 48, in async_update
    await self.hub.update_system()
  File "/config/custom_components/vaillant/hub.py", line 75, in _update_system
    self.system = await self._manager.get_system()
  File "/usr/local/lib/python3.7/site-packages/pymultimatic/systemmanager.py", line 87, in get_system
    quick_mode = mapper.map_quick_mode(full_system)
  File "/usr/local/lib/python3.7/site-packages/pymultimatic/model/mapper.py", line 20, in map_quick_mode
    mode = QuickModes.get(quick_mode.get("quickmode"))
  File "/usr/local/lib/python3.7/site-packages/pymultimatic/model/quick_mode.py", line 191, in get
    return cls._VALUES[name]
KeyError: 'QM_COOLING_FOR_X_DAYS' 

Is there a possibility to map this state "Kühlen für X Tage" to a supported HVAC state so that the component does not fail?

Regards

How to deal with system errors?

I have a VR921 connected to Home Assistant using your fantastic component. I'm trying to find out how to deal with errors in the heating system.

Right now for example, there is a F.900 error that I can see in system.errors when using pymultimatic. I also saw that a binary sensor called binary_sensor.vaillant_error_f_900 is currently available in Home Assistant. But I assume the sensor will become unavailable when the error is fixed.

I'm not an HA expert and I can't see how I could set up something in HA that would alert me if there are any problems with the heating system. It feels cumbersome to watch all possible sensors for all available error codes. Is there a way to have a sensor that tells me if there are any errors at the moment, and ideally give me a list of these errors (possibly in a different sensor)? Or maybe there is a better way to approach this?

Thanks for your help and your work on this!

Failed to set up

Hello hello,
Since the (super nice) integration changes from vaillant to multimatic I have stability issues.
I have to uninstall, reinstall reinsert my credentials (user, pass and really long serial number) and reallocate my devices to the right rooms.
I tried the ‘reinstall’ option in hacs but it does not work, I really have to remove and reinstall.
I’m using last ha version with a dedicated multimatic user.
Before going more into details, did you noticed the same bewavior with other users?
I’m using hotwater_boost and a lot of ambisense valves.
It was really stable before

See details bellow.

have a nice day,
Ludovic

core-2021.7.1
Supervisor 2021.06.8
Home Assistant OS 6.1
Multimatic version 1.6.2. I saw version 1.7.0 was released 11h ago? I'll try.
fbadd39c8ee3558166063ee69ecd6cb73851830e

2021-07-11 08:20:01 WARNING (SyncWorker_0) [homeassistant.loader] We found a custom integration multimatic which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant
2021-07-11 08:22:27 ERROR (MainThread) [homeassistant.config_entries] Error setting up entry Multimatic for multimatic
Traceback (most recent call last):
File "/usr/local/lib/python3.9/site-packages/aiohttp/connector.py", line 969, in _wrap_create_connection
return await self._loop.create_connection(*args, **kwargs) # type: ignore # noqa
File "/usr/local/lib/python3.9/asyncio/base_events.py", line 1081, in create_connection
transport, protocol = await self._create_connection_transport(
File "/usr/local/lib/python3.9/asyncio/base_events.py", line 1111, in _create_connection_transport
await waiter
File "/usr/local/lib/python3.9/asyncio/selector_events.py", line 918, in write
n = self._sock.send(data)
ConnectionResetError: [Errno 104] Connection reset by peer
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/config_entries.py", line 293, in async_setup
result = await component.async_setup_entry(hass, self) # type: ignore
File "/config/custom_components/multimatic/init.py", line 25, in async_setup_entry
await api.authenticate()
File "/config/custom_components/multimatic/hub.py", line 79, in authenticate
return await self._manager.login(True)
File "/usr/local/lib/python3.9/site-packages/pymultimatic/systemmanager.py", line 60, in login
return await self._connector.login(force_login)
File "/usr/local/lib/python3.9/site-packages/pymultimatic/api/connector.py", line 67, in login
token = await self._token()
File "/usr/local/lib/python3.9/site-packages/pymultimatic/api/connector.py", line 106, in _token
token_res = await self._session.post(url=urls.new_token(),
File "/usr/local/lib/python3.9/site-packages/aiohttp/client.py", line 520, in _request
conn = await self._connector.connect(
File "/usr/local/lib/python3.9/site-packages/aiohttp/connector.py", line 535, in connect
proto = await self._create_connection(req, traces, timeout)
File "/usr/local/lib/python3.9/site-packages/aiohttp/connector.py", line 892, in _create_connection
_, proto = await self._create_direct_connection(req, traces, timeout)
File "/usr/local/lib/python3.9/site-packages/aiohttp/connector.py", line 1051, in _create_direct_connection
raise last_exc
File "/usr/local/lib/python3.9/site-packages/aiohttp/connector.py", line 1020, in _create_direct_connection
transp, proto = await self._wrap_create_connection(
File "/usr/local/lib/python3.9/site-packages/aiohttp/connector.py", line 975, in _wrap_create_connection
raise client_error(req.connection_key, exc) from exc
aiohttp.client_exceptions.ClientConnectorError: Cannot connect to host smart.vaillant.com:443 ssl:default [Connection reset by peer]
2021-07-11 08:23:08 ERROR (SyncWorker_3) [homeassistant.components.command_line] Command failed: cat /sys/class/thermal/thermal_zone0/temp

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.