Honeywell CH/DHW via RF - evohome, sundial, hometronics, chronotherm

Hi, I have just installed this integration but I’m having an issue with it. I have an Evohome system which I’m pretty familiar with. I’ve had it controlled with an RFBee under Domiticz and my own code so know all my IDs but I’m using a new RAMSES_ESP dongle as the RFBee baud rates isn’t supported I believe. I set it up ok with just the serial port and it found all the devices pretty quickly. Now everything is loaded I had restarted HA but the integration says ‘Failed to set up’ and all enities are unavailable. I’ve checked the logs and there are a few errors such as below. I had set up the controller in the schema and set up the known devices but have removed those for now. I’ve also tried removing everything in the integration and starting again but the same thing happens. This is on a Raspberry PI 5 with the HA image all updated to the latest.

Selected messages:

2025-01-15 11:36:54.404 WARNING (MainThread) [ramses_tx.transport] /dev/serial/by-id/usb-Espressif_USB_JTAG_serial_debug_unit_CC:BA:97:0A:A8:38-if00: the gateway type is not determinable, will assume evofw3

2025-01-15 11:36:54.456 WARNING (MainThread) [ramses_tx.protocol] The active gateway '18:174136: { class: HGI }' (by filter) SHOULD be in the (enforced) known_list

2025-01-15 11:36:54.490 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved (None)
Traceback (most recent call last):
  File "/usr/local/lib/python3.13/site-packages/ramses_rf/gateway.py", line 626, in async_send_cmd
    return await super().async_send_cmd(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ...<7 lines>...
    )  # may: raise ProtocolError/ProtocolSendFailed
    ^
  File "/usr/local/lib/python3.13/site-packages/ramses_tx/gateway.py", line 326, in async_send_cmd
    return await self._protocol.send_cmd(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ...<5 lines>...
    )  # may: raise ProtocolError/ProtocolSendFailed
    ^
  File "/usr/local/lib/python3.13/site-packages/ramses_tx/protocol.py", line 711, in send_cmd
    pkt = await super().send_cmd(  # may: raise ProtocolError/ProtocolSendFailed
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ...<5 lines>...
    )
    ^
  File "/usr/local/lib/python3.13/site-packages/ramses_tx/protocol.py", line 481, in send_cmd
    return await super().send_cmd(cmd, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/ramses_tx/protocol.py", line 223, in send_cmd
    raise exc.ProtocolError("The Protocol is currently read-only/paused")
ramses_tx.exceptions.ProtocolError: The Protocol is currently read-only/paused

2025-01-15 11:36:54.496 ERROR (MainThread) [homeassistant.config_entries] Error setting up entry RAMSES RF for binary_sensor
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 640, in __async_setup_with_context
    result = await component.async_setup_entry(hass, self)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/binary_sensor/__init__.py", line 139, in async_setup_entry
    return await hass.data[DATA_COMPONENT].async_setup_entry(entry)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 186, in async_setup_entry
    raise ValueError(
    ...<2 lines>...
    )
ValueError: Config entry RAMSES RF (01JHMPJ4ZGS4AW261JTV5WE21A) for ramses_cc.binary_sensor has already been setup!

2025-01-15 11:36:54.499 ERROR (MainThread) [homeassistant.components.binary_sensor] Platform ramses_cc does not generate unique IDs. ID 07:019140-battery_low is already used by binary_sensor.07_019140_battery_low - ignoring binary_sensor.07:019140_battery_low

2025-01-15 11:36:54.499 ERROR (MainThread) [homeassistant.components.binary_sensor] Platform ramses_cc does not generate unique IDs. ID 13:048634-active is already used by binary_sensor.13_048634_active - ignoring binary_sensor.13:048634_active

...lots of these...

2025-01-15 11:36:54.502 ERROR (MainThread) [homeassistant.config_entries] Error setting up entry RAMSES RF for sensor
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 640, in __async_setup_with_context
    result = await component.async_setup_entry(hass, self)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/sensor/__init__.py", line 96, in async_setup_entry
    return await hass.data[DATA_COMPONENT].async_setup_entry(entry)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 186, in async_setup_entry
    raise ValueError(
    ...<2 lines>...
    )
ValueError: Config entry RAMSES RF (01JHMPJ4ZGS4AW261JTV5WE21A) for ramses_cc.sensor has already been setup!

2025-01-15 11:36:54.506 ERROR (MainThread) [homeassistant.components.sensor] Platform ramses_cc does not generate unique IDs. ID 07:019140-temperature is already used by sensor.07_019140_temperature - ignoring sensor.07:019140_temperature

2025-01-15 11:36:54.506 ERROR (MainThread) [homeassistant.components.sensor] Platform ramses_cc does not generate unique IDs. ID 13:048634-relay_demand is already used by sensor.13_048634_relay_demand - ignoring sensor.13:048634

...

2025-01-15 11:36:54.516 ERROR (ImportExecutor_0) [homeassistant.loader] Unexpected exception importing platform custom_components.ramses_cc.water_heater
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/loader.py", line 1272, in _load_platform
    cache[full_name] = self._import_platform(platform_name)
                       ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/loader.py", line 1304, in _import_platform
    return importlib.import_module(f"{self.pkg_path}.{platform_name}")
           ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/util/loop.py", line 200, in protected_loop_func
    return func(*args, **kwargs)
  File "/usr/local/lib/python3.13/importlib/__init__.py", line 88, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 1026, in exec_module
  File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
  File "/config/custom_components/ramses_cc/water_heater.py", line 229, in <module>
    class RamsesWaterHeaterEntityDescription(
    ...<6 lines>...
        ramses_rf_class: type[DhwZone]
TypeError: metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases

2025-01-15 11:36:54.543 ERROR (MainThread) [homeassistant.loader] Unexpected exception importing platform custom_components.ramses_cc.water_heater
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/loader.py", line 1272, in _load_platform
    cache[full_name] = self._import_platform(platform_name)
                       ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/loader.py", line 1304, in _import_platform
    return importlib.import_module(f"{self.pkg_path}.{platform_name}")
           ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/util/loop.py", line 200, in protected_loop_func
    return func(*args, **kwargs)
  File "/usr/local/lib/python3.13/importlib/__init__.py", line 88, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 1026, in exec_module
  File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
  File "/config/custom_components/ramses_cc/water_heater.py", line 229, in <module>
    class RamsesWaterHeaterEntityDescription(
    ...<6 lines>...
        ramses_rf_class: type[DhwZone]
TypeError: metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases

2025-01-15 11:36:54.546 ERROR (MainThread) [homeassistant.config_entries] Error setting up entry RAMSES RF for ramses_cc
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/loader.py", line 1272, in _load_platform
    cache[full_name] = self._import_platform(platform_name)
                       ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/loader.py", line 1304, in _import_platform
    return importlib.import_module(f"{self.pkg_path}.{platform_name}")
           ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/util/loop.py", line 200, in protected_loop_func
    return func(*args, **kwargs)
  File "/usr/local/lib/python3.13/importlib/__init__.py", line 88, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 1026, in exec_module
  File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
  File "/config/custom_components/ramses_cc/water_heater.py", line 229, in <module>
    class RamsesWaterHeaterEntityDescription(
    ...<6 lines>...
        ramses_rf_class: type[DhwZone]
TypeError: metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases

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 640, in __async_setup_with_context
    result = await component.async_setup_entry(hass, self)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/ramses_cc/__init__.py", line 107, in async_setup_entry
    await broker.async_start()
  File "/config/custom_components/ramses_cc/broker.py", line 152, in async_start
    await self.async_update()
  File "/config/custom_components/ramses_cc/broker.py", line 326, in async_update
    await async_add_entities(Platform.WATER_HEATER, new_dhws)
  File "/config/custom_components/ramses_cc/broker.py", line 283, in async_add_entities
    await self._async_setup_platform(platform)
  File "/config/custom_components/ramses_cc/broker.py", line 222, in _async_setup_platform
    await self._platform_setup_tasks[platform]
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 2278, in async_forward_entry_setups
    await integration.async_get_platforms(platforms)
  File "/usr/src/homeassistant/homeassistant/loader.py", line 1185, in async_get_platforms
    import_future.result()
    ~~~~~~~~~~~~~~~~~~~~^^
  File "/usr/src/homeassistant/homeassistant/loader.py", line 1173, in async_get_platforms
    platforms.update(self._load_platforms(platform_names))
                     ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/loader.py", line 1098, in _load_platforms
    platform_name: self._load_platform(platform_name)
                   ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/loader.py", line 1292, in _load_platform
    raise ImportError(
        f"Exception importing {self.pkg_path}.{platform_name}"
    ) from err
ImportError: Exception importing custom_components.ramses_cc.water_heater