Danfoss Devolo thermostats not working with Homekit / Alexa integration

Tags: #<Tag:0x00007f73a696bda8> #<Tag:0x00007f73a696bcb8> #<Tag:0x00007f73a696bbf0> #<Tag:0x00007f73a696bb28>

Hey folks,

after updating my HA from 0.102.3 to any version above (I am currently running 0.116.2 on a Raspberry Pi 4) my Danfoss Devolo thermostats became unavailable in Homekit / Alexa integration.

Error message(s) extracted from /config/home-assistant.log while using Homekit:

2020-10-21 23:04:22 ERROR (Thread-59) [pyhap.hap_server] Exception in set_characteristics: 'unknown'
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/pyhap/hap_server.py", line 590, in handle_set_characteristics
    self.accessory_handler.set_characteristics(requested_chars,
  File "/usr/local/lib/python3.8/site-packages/pyhap/accessory_driver.py", line 743, in set_characteristics
    service_callbacks[aid][service_name][SERVICE_CALLBACK](
  File "/usr/src/homeassistant/homeassistant/components/homekit/type_thermostats.py", line 240, in _set_chars
    homekit_hvac_mode = HC_HASS_TO_HOMEKIT[hvac_mode]
KeyError: 'unknown'

Error message(s) extraced from /config/home-assistant.log while using Alexa App:

2020-10-21 23:04:42 ERROR (MainThread) [homeassistant.components.alexa.capabilities] climate.danfoss_devolo_home_control_radiator_thermostat_heating_1 (<class 'homeassistant.core.State'>) has unsupported state value 'unknown'
2020-10-21 23:04:42 ERROR (MainThread) [hass_nabucasa.iot] Error handling message
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/hass_nabucasa/iot.py", line 94, in _async_handle_handler_message
    result = await handler(self.cloud, message["payload"])
  File "/usr/local/lib/python3.8/site-packages/hass_nabucasa/iot.py", line 118, in async_handle_alexa
    return await cloud.client.async_alexa_message(payload)
  File "/usr/src/homeassistant/homeassistant/components/cloud/client.py", line 148, in async_alexa_message
    return await alexa_sh.async_handle_message(
  File "/usr/src/homeassistant/homeassistant/components/alexa/smart_home.py", line 41, in async_handle_message
    response.merge_context_properties(directive.endpoint)
  File "/usr/src/homeassistant/homeassistant/components/alexa/messages.py", line 189, in merge_context_properties
    for prop in endpoint.serialize_properties():
  File "/usr/src/homeassistant/homeassistant/components/alexa/entities.py", line 279, in serialize_properties
    yield from interface.serialize_properties()
  File "/usr/src/homeassistant/homeassistant/components/alexa/capabilities.py", line 243, in serialize_properties
    prop_value = self.get_property(prop_name)
  File "/usr/src/homeassistant/homeassistant/components/alexa/capabilities.py", line 1007, in get_property
    raise UnsupportedProperty(name)
homeassistant.components.alexa.errors.UnsupportedProperty: thermostatMode

I found a related issue (https://github.com/home-assistant/core/issues/29844) but as far as I understand the fix should already be in place since the fix has been merged already. I also tried to implement the fix manually as described in the post but unfortunately it did also not fix my problem.

Things I mentioned:

  • Under “Developer Tools” the state of my Entity “climate.danfoss_devolo_home_control_radiator_thermostat_heating_1” is “unknown” which matches the error message(s) from Homekit / Alexa (see above). Not sure if this is because there are no hvac_modes listed under “State attributes (YAML, optional)”. However if I set the state to off,cool,heat or auto the thermostat become available again for several seconds until the state switches back to unknown.
  • COMMAND_CLASS_THERMOSTAT_MODE is missing in my /config/zwcfg_0xe1977fb4.xml which might be the reason there are no hvac_modes or vice versa. Reset the thermostat and readding it did not fix the issue. I can post what is inside my /config/zwcfg_0xe1977fb4.xml file if needed.

Does anyone else have or had a similar issue or have an idea what to do? At least it would also help me if someone can tell me how I can change the (initial) state of my climate entity persistently.

Thanks a lot in advance and sorry for the very long post! Let me know if any further information are required.

Best regards!

Open related github issue: https://github.com/home-assistant/core/issues/28834

Quickfix: https://github.com/bieniu/ha-thermostat-update. Thanks a lot to bieniu