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

Oké missed that, manually changed it and Now its working.
Strange that hacs didn’t saw an update.

Edit: see that hacs has Now versioning, so i had 0.94 and there where 2 commits later.
Now installed with hacs master so i have the lasted commits.

The controller sensor heat_demand indeed is unavailable indefinitely. The controller entity heat_demand attribute however remains available.

@zxdavb Thnx for all your great work. Really impressive to see your updates and support. The fake zone sensors support was the feature that I could use to convince my wife to buy the SSM-D and start using your work.

Directly after first installation/configuration it worked great. I saw the expected entities appearing. After that I changed/did two things:

  • I configured the controller (at the first try I did just minimum configuration from the example)
  • I tried adding a faked sensor, however the service call hung and the controller couldn’t pick-up a new sensor.

After that I did a restart and I get the message:
" The following integrations and platforms could not be set up:

  • [evohome_cc]" (details follow)

I tried to fix the issue by:

  • Removing the schema part of the configuration and restart (nothing changed)
  • I removed the extra zone, the one without a temperature sensor and did a restart (nothing changed)

In the Home Assistant log I see the following error:

2021-05-20 09:43:05 ERROR (MainThread) [homeassistant.setup] Error during setup of component evohome_cc
Traceback (most recent call last):
File “/usr/src/homeassistant/homeassistant/setup.py”, line 248, in _async_setup_component
result = await task
File “/config/custom_components/evohome_cc/init.py”, line 103, in async_setup
await broker.async_update()
File “/config/custom_components/evohome_cc/init.py”, line 264, in async_update
new_domains = self._get_domains()
File “/config/custom_components/evohome_cc/init.py”, line 232, in _get_domains
“Status = %s”, {k: v for k, v in evohome.status.items() if k != “devices”}
File “/usr/local/lib/python3.8/site-packages/ramses_rf/systems.py”, line 581, in status
assert ATTR_ZONES not in super().status # TODO: removeme
File “/usr/local/lib/python3.8/site-packages/ramses_rf/systems.py”, line 608, in status
assert ATTR_UFH_SYSTEM not in super().status # TODO: removeme
File “/usr/local/lib/python3.8/site-packages/ramses_rf/systems.py”, line 914, in status
status = super().status
File “/usr/local/lib/python3.8/site-packages/ramses_rf/systems.py”, line 337, in status
assert ATTR_DHW_SYSTEM not in super().status # TODO: removeme
File “/usr/local/lib/python3.8/site-packages/ramses_rf/systems.py”, line 121, in status
status = super().status
File “/usr/local/lib/python3.8/site-packages/ramses_rf/systems.py”, line 861, in status
status[ATTR_DEVICES] = {d.id: d.status for d in sorted(self._ctl.devices)}
File “/usr/local/lib/python3.8/site-packages/ramses_rf/systems.py”, line 861, in
status[ATTR_DEVICES] = {d.id: d.status for d in sorted(self._ctl.devices)}
File “/usr/local/lib/python3.8/site-packages/ramses_rf/devices.py”, line 686, in status
ATTR_HEAT_DEMAND: self.heat_demand,
File “/usr/local/lib/python3.8/site-packages/ramses_rf/devices.py”, line 652, in heat_demand
return self._msgs[“3150”].payload[self.HEAT_DEMAND]
TypeError: list indices must be integers or slices, not str
2021-05-20 09:43:09 ERROR (MainThread) [homeassistant.setup] Unable to prepare setup for platform evohome_cc.climate: Unable to set up component.`

I see the log talks about ‘ATTR_DHW_SYSTEM’ however this EvoHome system only controls heating, so no DHW is configured in the EvoHome, that might be a clue. However it worked at first, so maybe it is something totally different. Anyway I hope someone has a clue on how to fix this.

This feature is a WIP and is currently unstable.

In future, you will be able to fake:

  • a temperature sensor per zone
  • multiple relays in multiple roles (e.g. electric zones)
  • an external weather sensor (for Hometronic systems, or original evohomes)

If you have only a HGI80, then things are little more difficult - this is causing issues, but will happen:

  • you can only have one zone sensor / relay / external sensor in this case
1 Like

I have had to pull things apart & put them back together - so, version 0.9.5 released to HACS.

Somethings may be broken, so feedback please.

@llevering Please try 0.9.5, we’ll see what that does to your bug.

1 Like

Thank you for the swift try! I am sorry to report it didn’t fix it yet.

The error trace is now:

Traceback (most recent call last):
File “/usr/src/homeassistant/homeassistant/setup.py”, line 248, in _async_setup_component
result = await task
File “/config/custom_components/evohome_cc/init.py”, line 103, in async_setup
await broker.async_update()
File “/config/custom_components/evohome_cc/init.py”, line 280, in async_update
new_domains = self._get_domains()
File “/config/custom_components/evohome_cc/init.py”, line 238, in _get_domains
“Status = %s”, {k: v for k, v in evohome.status.items() if k != “devices”}
File “/usr/local/lib/python3.8/site-packages/ramses_rf/systems.py”, line 581, in status
assert ATTR_ZONES not in super().status # TODO: removeme
File “/usr/local/lib/python3.8/site-packages/ramses_rf/systems.py”, line 608, in status
assert ATTR_UFH_SYSTEM not in super().status # TODO: removeme
File “/usr/local/lib/python3.8/site-packages/ramses_rf/systems.py”, line 918, in status
status = super().status
File “/usr/local/lib/python3.8/site-packages/ramses_rf/systems.py”, line 337, in status
assert ATTR_DHW_SYSTEM not in super().status # TODO: removeme
File “/usr/local/lib/python3.8/site-packages/ramses_rf/systems.py”, line 121, in status
status = super().status
File “/usr/local/lib/python3.8/site-packages/ramses_rf/systems.py”, line 865, in status
status[ATTR_DEVICES] = {d.id: d.status for d in sorted(self._ctl.devices)}
File “/usr/local/lib/python3.8/site-packages/ramses_rf/systems.py”, line 865, in
status[ATTR_DEVICES] = {d.id: d.status for d in sorted(self._ctl.devices)}
File “/usr/local/lib/python3.8/site-packages/ramses_rf/devices.py”, line 826, in status
ATTR_HEAT_DEMAND: self.heat_demand,
File “/usr/local/lib/python3.8/site-packages/ramses_rf/devices.py”, line 792, in heat_demand
return self._msgs[“3150”].payload[self.HEAT_DEMAND]
TypeError: list indices must be integers or slices, not str

And I know the feature faked sensor support is not yet stable. I guess it will be in a better state when the next heating seasons starts and if not I have another way of getting the rooms heated, however this would be the best solution :slight_smile:

0.96 pushed just now

1 Like

I can’t see the latest version in HACS, always want to update to:

Geïnstalleerde versie: e7ddb04

Beschikbare versie: 0.9.4

Getting this error with 0.96:


Error during setup of component evohome_cc
Traceback (most recent call last):
  File "/srv/homeassistant/lib/python3.8/site-packages/homeassistant/setup.py", line 242, in _async_setup_component
    result = await task
  File "/home/homeassistant/.homeassistant/custom_components/evohome_cc/__init__.py", line 103, in async_setup
    await broker.async_update()
  File "/home/homeassistant/.homeassistant/custom_components/evohome_cc/__init__.py", line 280, in async_update
    new_domains = self._get_domains()
  File "/home/homeassistant/.homeassistant/custom_components/evohome_cc/__init__.py", line 238, in _get_domains
    "Status = %s", {k: v for k, v in evohome.status.items() if k != "devices"}
  File "/srv/homeassistant/lib/python3.8/site-packages/ramses_rf/systems.py", line 581, in status
    assert ATTR_ZONES not in super().status  # TODO: removeme
  File "/srv/homeassistant/lib/python3.8/site-packages/ramses_rf/systems.py", line 608, in status
    assert ATTR_UFH_SYSTEM not in super().status  # TODO: removeme
  File "/srv/homeassistant/lib/python3.8/site-packages/ramses_rf/systems.py", line 918, in status
    status = super().status
  File "/srv/homeassistant/lib/python3.8/site-packages/ramses_rf/systems.py", line 337, in status
    assert ATTR_DHW_SYSTEM not in super().status  # TODO: removeme
  File "/srv/homeassistant/lib/python3.8/site-packages/ramses_rf/systems.py", line 121, in status
    status = super().status
  File "/srv/homeassistant/lib/python3.8/site-packages/ramses_rf/systems.py", line 865, in status
    status[ATTR_DEVICES] = {d.id: d.status for d in sorted(self._ctl.devices)}
  File "/srv/homeassistant/lib/python3.8/site-packages/ramses_rf/systems.py", line 865, in <dictcomp>
    status[ATTR_DEVICES] = {d.id: d.status for d in sorted(self._ctl.devices)}
  File "/srv/homeassistant/lib/python3.8/site-packages/ramses_rf/devices.py", line 964, in status
    self.LUMINOSITY: self.luminosity,
  File "/srv/homeassistant/lib/python3.8/site-packages/ramses_rf/devices.py", line 946, in luminosity
    raise NotImplementedError
NotImplementedError

How did you get there?

Do you have an external weather sensor? I am guessing not. Do you have a white list?

Please PM me a copy of your configuration.yaml, and a copy of .storage/evohome_cc.json?

If you want - as a work-around, edit devices.py like so:

DEVICE_TYPE_TO_KLASS = {
    "00": "TRV",
    "01": "CTL",
    "02": "UFC",
    "03": "STA",
    "04": "TRV",
    "07": "DHW",
    "10": "OTB",
    "12": "STA",
    "13": "BDR",
    # "17": "EXT", 
    # "18": "GWY", 
    "20": "FAN",
   ...

Send you a pm, just updated no strange config.

Remove this from your evohome_cc.json file:

                    "orphans": [
                        "17:000730"
                    ],

Yes that solves it.
At the end of the file there are more orphans, can these be left there?

I have added code to remove these orphans (d._is_present):

schema[ATTR_ORPHANS] = [
    d.id
    for d in self._ctl.devices
    if not d._domain_id and d.type != "02" and d._is_present
]

This cause of this issue is multifactorial - caused by old code - eavesdropping, etc.

0.9.7 released

Trying 0.9.7 - and not starting properly :frowning:

2021-05-22 09:13:37 WARNING (MainThread) [homeassistant.loader] You are using a custom integration evohome_cc 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-05-22 09:14:11 WARNING (MainThread) [custom_components.evohome_cc] evohome_cc v0.9.7, using ramses_rf v0.9.7 - versions match (this is good)
2021-05-22 09:14:12 DEBUG (MainThread) [ramses_rf.schema] An allow_list has been created, length = 16
2021-05-22 09:14:12 WARNING (MainThread) [ramses_rf.transport] Using an allow_list: ['01:138490', '04:021455', '04:021457', '04:021459', '04:048656', '04:190956', '04:190958', '04:190960', '04:190962', '04:191054', '04:191058', '04:191060', '04:191062', '07:035141', '13:079800', '13:169230']
2021-05-22 09:14:14 INFO (MainThread) [custom_components.evohome_cc] Schema = {'controller': '01:138490', 'system': {'heating_control': None}, 'orphans': [], 'stored_hotwater': {'hotwater_sensor': '07:035141', 'hotwater_valve': '13:079800', 'heating_valve': '13:169230'}, 'underfloor_heating': {}, 'zones': {'00': {'heating_type': 'radiator_valve', 'sensor': None, 'devices': ['04:191054', '04:191058']}, '01': {'heating_type': 'radiator_valve', 'sensor': '04:021459', 'devices': ['04:021459']}, '02': {'heating_type': 'radiator_valve', 'sensor': '04:021457', 'devices': ['04:021457']}, '03': {'heating_type': 'radiator_valve', 'sensor': '04:190960', 'devices': ['04:190960']}, '04': {'heating_type': 'radiator_valve', 'sensor': '04:190962', 'devices': ['04:190962']}, '05': {'heating_type': 'radiator_valve', 'sensor': '04:190956', 'devices': ['04:190956', '04:191060', '04:191062']}, '06': {'heating_type': 'radiator_valve', 'sensor': '04:190958', 'devices': ['04:190958']}, '07': {'heating_type': 'radiator_valve', 'sensor': '04:021455', 'devices': ['04:021455']}, '08': {'heating_type': 'radiator_valve', 'sensor': '04:048656', 'devices': ['04:048656']}}}
2021-05-22 09:14:14 INFO (MainThread) [custom_components.evohome_cc] Params = {'system': {'tpi_params': None, 'system_mode': {'system_mode': 'auto', 'until': None}, 'language': 'en'}, 'stored_hotwater': {'config': {'setpoint': 50.0, 'overrun': 0, 'differential': 9.0}, 'mode': None}, 'underfloor_heating': {}, 'zones': {'00': {'config': None, 'mode': {'mode': 'permanent_override', 'setpoint': 17.0}, 'name': 'Living room'}, '01': {'config': None, 'mode': {'mode': 'permanent_override', 'setpoint': 5.0}, 'name': 'Dining Room'}, '02': {'config': None, 'mode': {'mode': 'follow_schedule', 'setpoint': 17.0}, 'name': 'Bathroom'}, '03': {'config': None, 'mode': {'mode': 'follow_schedule', 'setpoint': 10.0}, 'name': 'Log Room'}, '04': {'config': None, 'mode': {'mode': 'follow_schedule', 'setpoint': 5.0}, 'name': 'Cam Room'}, '05': {'config': None, 'mode': {'mode': 'temporary_override', 'setpoint': 10.0, 'until': '2021-05-22 08:50:00'}, 'name': 'Lounge'}, '06': {'config': None, 'mode': {'mode': 'follow_schedule', 'setpoint': 10.0}, 'name': 'Landing'}, '07': {'config': None, 'mode': {'mode': 'permanent_override', 'setpoint': 5.0}, 'name': 'Con Room'}, '08': {'config': {'min_temp': 5.0, 'max_temp': 25.0, 'local_override': True, 'openwindow_function': True, 'multiroom_mode': False}, 'mode': {'mode': 'follow_schedule', 'setpoint': 5.0}, 'name': 'Office'}}}
2021-05-22 09:14:14 ERROR (MainThread) [homeassistant.setup] Error during setup of component evohome_cc
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/setup.py", line 248, in _async_setup_component
    result = await task
  File "/config/custom_components/evohome_cc/__init__.py", line 103, in async_setup
    await broker.async_update()
  File "/config/custom_components/evohome_cc/__init__.py", line 280, in async_update
    new_domains = self._get_domains()
  File "/config/custom_components/evohome_cc/__init__.py", line 238, in _get_domains
    "Status = %s", {k: v for k, v in evohome.status.items() if k != "devices"}
  File "/usr/local/lib/python3.8/site-packages/ramses_rf/systems.py", line 582, in status
    return {**super().status, ATTR_ZONES: {z.idx: z.status for z in self._zones}}
  File "/usr/local/lib/python3.8/site-packages/ramses_rf/systems.py", line 610, in status
    **super().status,
  File "/usr/local/lib/python3.8/site-packages/ramses_rf/systems.py", line 918, in status
    status = super().status
  File "/usr/local/lib/python3.8/site-packages/ramses_rf/systems.py", line 338, in status
    return {**super().status, ATTR_DHW_SYSTEM: self.dhw.status if self.dhw else {}}
  File "/usr/local/lib/python3.8/site-packages/ramses_rf/systems.py", line 121, in status
    status = super().status
  File "/usr/local/lib/python3.8/site-packages/ramses_rf/systems.py", line 865, in status
    status[ATTR_DEVICES] = {d.id: d.status for d in sorted(self._ctl.devices)}
  File "/usr/local/lib/python3.8/site-packages/ramses_rf/systems.py", line 865, in <dictcomp>
    status[ATTR_DEVICES] = {d.id: d.status for d in sorted(self._ctl.devices)}
  File "/usr/local/lib/python3.8/site-packages/ramses_rf/devices.py", line 964, in status
    self.LUMINOSITY: self.luminosity,
  File "/usr/local/lib/python3.8/site-packages/ramses_rf/devices.py", line 946, in luminosity
    raise NotImplementedError
NotImplementedError
2021-05-22 09:14:14 WARNING (MainThread) [ramses_rf.transport] PktProtocolQos.send_data( I|63:262142|7FFF|01): boff=0, want= I|63:262142|7FFF|01, tout=2021-05-22 09:14:13.213524: RE-SENT (1/24)
2021-05-22 09:14:14 ERROR (MainThread) [homeassistant.setup] Unable to prepare setup for platform evohome_cc.climate: Unable to set up component.
2021-05-22 09:14:14 WARNING (MainThread) [ramses_rf.transport] PktProtocolQos.send_data( I|63:262142|7FFF|01): boff=0, want= I|63:262142|7FFF|01, tout=2021-05-22 09:14:14.589544: RE-SENT (2/24)
2021-05-22 09:14:14 ERROR (MainThread) [homeassistant.setup] Unable to prepare setup for platform evohome_cc.water_heater: Unable to set up component.
2021-05-22 09:14:14 WARNING (MainThread) [ramses_rf.transport] PktProtocolQos.send_data(RQ|01:138490|000C|000D): boff=1, want=RQ|01:138490|000C|000D, tout=2021-05-22 09:14:14.884177: RE-SENT (1/2)
2021-05-22 09:14:14 WARNING (MainThread) [homeassistant.components.evohome.climate] Ignoring: Unknown (Unknown), id=3348619, name=: unknown/invalid zone type, report as an issue if you feel this zone type should be supported
2021-05-22 09:14:15 WARNING (MainThread) [ramses_rf.transport] PktProtocolQos.send_data(RQ|01:138490|000C|0108): boff=1, want=RQ|01:138490|000C|0108, tout=2021-05-22 09:14:16.029677: RE-SENT (1/2)
2021-05-22 09:14:16 WARNING (MainThread) [ramses_rf.transport] PktProtocolQos.send_data(RQ|01:138490|000C|0508): boff=1, want=RQ|01:138490|000C|0508, tout=2021-05-22 09:14:16.879098: RE-SENT (1/2)

Hmmm - this is a bit odd, try this in configuration.yaml:

logger:
  default: warn
  logs:
    # homeassistant.core: debug
    custom_components.evohome_cc: info
    ramses_rf.devices: debug

… and look for these lines (Creating a Device):

2021-05-22 09:42:41 DEBUG (MainThread) [ramses_rf.devices] Creating a Device: 30:082155 (<class 'ramses_rf.devices.Device'>)

Look for a 17:.

Found a 17:

2021-05-22 12:35:28 DEBUG (MainThread) [ramses_rf.devices] Creating a Device: 17:000730 (<class 'ramses_rf.devices.ExtSensor'>)
2021-05-22 12:35:28 DEBUG (MainThread) [ramses_rf.devices] Setting controller for 17:000730 ( 17) to 01:138490 (CTL)
2021-05-22 12:35:28 DEBUG (MainThread) [ramses_rf.devices] Creating a Device: 01:000730 (<class 'ramses_rf.devices.Controller'>)
2021-05-22 12:35:28 DEBUG (MainThread) [ramses_rf.devices] Creating a Device: 01:136410 (<class 'ramses_rf.devices.Controller'>)
2021-05-22 12:35:28 INFO (MainThread) [ramses_rf.message] || CTL:138490 | HGI:131868 | RP | zone_name        | 06004... || {'zone_idx': '06', 'name': 'Landing'}
2021-05-22 12:35:28 INFO (MainThread) [ramses_rf.message] || CTL:138490 | HGI:131868 | RP | zone_name        | 07004... || {'zone_idx': '07', 'name': 'Con Room'}