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

I have a couple of questions:

  • When restarting HA is the packet log the reparsed?
  • I’m getting NotImplementedError when calling:
- service: climate.set_preset_mode
    data:
      preset_mode: away
      entity_id: climate.controller

Do I need to use the “evohome” integration for that?

  • Can I reduce the scan_interval to eg: 30?
  • I also noticed that the attribute ‘temperature’ of the climate entities goes N/A for a minute, then returns a decimal. Is that something that is known? It’s when I change from on to off for a zone, when turning off to on, the setpoint is set to 25°c

How did you manage to get the flow and return temperatures? Do you use seperate sensors for this?

Let me know if I can help you test!

Please give me a day or so to get evohome_cc working with v0.5.0 of evohome_rf (which has many improvements).

The first goal after that will be to move to HACS. The next goal after that will be controlling switches via HA.

If anyone with python experience wants to help with dev of evohome_cc, please PM me.

FWIW, this is the list of changes (but I suspect there’s a few things I forgot):

  • code quality improvements
  • added fault_log, zone_schedule processors (DHW_schedule TBD)
  • switch to protocol/transport for both message & packet layer
  • added packet QoS - retransmits, etc.
  • added quality - data tombstoning
  • added packet log parser as a transport, added Win32 port poller hack
  • refactored logging - messages are now STDOUT/STDERR
  • cleaned up event handlers & shutdown
  • improvements to the parsers, including new codes (e.g. 0001, 0002, 0006, 0404, 0418, 1030, 1100, 22D9, 3220, 3EF0, 3EF1)
  • significantly simplified message handler
  • started migration of schema from hard-coded to data (ramses.py)
  • added device/system scanners to client.py
  • added support for device 00: as identical to 04:
  • improved support for 13:
  • improve config processing (switches & file) & improved device filtering feature
  • Added support for Jasper HVAC packets (0008, 1100?, 3EF0, 3EF1)
  • improved assert hints
  • handle evofw3 idiosyncrasies & added a puzzle utility for it
4 Likes

@zxdavb is it possible to enable / disable cold weather boost via the API?

It works perfect, with the exception of when we’re at work - it still assigns the boost to zones and causes sky high bills. I’m considering ways around it, like using a custom mode that’s switched on when we leave, or even setting zone temps manually when we leave, but they’re all a little messy :frowning:

No, not via RF, nor via the Web API - this is only via the controller UI.

There is a fancy new evohome_rf, and a new evohome_cc to match - ver 0.5.2.

Note that evohome_cc is not yet on HACS, but I’d be pleased to have anyone test it now - just pull the latest commit of either (evohome_rf is also on PyPi) - you will lose access it the F9/FA/FB/FC sensors, but everything else should be as was.

Please only try this only if you are familiar with git, pip & HA custom_components - I do not have the capacity to help you with that side of things.

This is my configuration.yaml file (NB: packet logs are broken):

logger:
  default: info
  logs:
    homeassistant.core: debug 
    homeassistant.loader: info
    homeassistant.setup: info

    custom_components.evohome_cc: info

    evohome_rf.*: debug
    evohome_rf.transport: critical
    evohome_rf.protocol: info

evohome_cc:
  scan_interval: 60
  serial_port: /dev/ttyUSB1
  packet_log: /home/user/home-assistant/.config/packet.log
  schema:
    controller: 01:145038
  ignore_list:
    - 01:037519
    - 04:123456
    - 10:132435

Confirm you get a version match:

2021-01-27 21:23:18 WARNING (MainThread) [custom_components.evohome_cc] evohome_cc v0.5.2, using evohome_rf v0.5.2 - versions match (this is good)

At this stage, I am interested only in useful bug reports, thanks.

The latest version of evofw3 is 0.6.5.

If anyone is willing to integrate config flow into evohome_cc, PM me.

1 Like

Thx a lot @zxdavb! I am gonna test it!
Edit:I add: https://github.com/zxdavb/evohome_cc to my HACS and it installs your latest evohome_cc :wink:

Still the same problem as before, he sends random 25 degrees to a valve. But i dont see anything in the log file

Do you change the state from off to on?

I can reproduce this - hang on…

@zxdavb how can i help with this issue?

Hi, I just got my nanoCUL yesterday and set it up with the newest version of evofw3 and installed evohome_cc 0.5.2 in my HA.

Most things/sensors seem to working fine (although I’m new to this component, so not completely sure what should be there/working). I did notice a bunch of exceptions though and the heat demand of one of my HR90’s doesn’t show up (the temperature does and all the other HR90’s are reporting temperature and heat demand).

Anyway, I’m not sure if this is related of even helpful, but this is an example of the exception being logged:

2021-02-05 16:26:50 ERROR (MainThread) [evohome_rf.message] 056 RP --- 10:015155 01:192614 --:------ 3220 005 00C00500FF < KeyError
2021-02-05 16:26:50 ERROR (MainThread) [evohome_rf] handle_exception(): Caught: Exception in callback SerialTransport._read_ready()
2021-02-05 16:26:50 ERROR (MainThread) [asyncio] Unhandled error in exception handler
context: {'message': 'Exception in callback SerialTransport._read_ready()', 'exception': KeyError('id'), 'handle': <Handle SerialTransport._read_ready()>}
Traceback (most recent call last):
File "/usr/local/lib/python3.8/asyncio/base_events.py", line 1744, in call_exception_handler
self._exception_handler(self, context)
File "/usr/local/lib/python3.8/site-packages/evohome_rf/__init__.py", line 120, in handle_exception
raise exc
File "/usr/local/lib/python3.8/asyncio/events.py", line 81, in _run
self._context.run(self._callback, *self._args)
File "/usr/local/lib/python3.8/site-packages/serial_asyncio/__init__.py", line 119, in _read_ready
self._protocol.data_received(data)
File "/usr/local/lib/python3.8/site-packages/evohome_rf/transport.py", line 388, in data_received
self._data_received(*create_pkt(line))
File "/usr/local/lib/python3.8/site-packages/evohome_rf/transport.py", line 573, in _data_received
self._callback(pkt) # only wanted PKTs up to the MSG transport's handler
File "/usr/local/lib/python3.8/site-packages/evohome_rf/protocol.py", line 139, in _pkt_receiver
[p.data_received(msg) for p in self._protocols]
File "/usr/local/lib/python3.8/site-packages/evohome_rf/protocol.py", line 139, in <listcomp>
[p.data_received(msg) for p in self._protocols]
File "/usr/local/lib/python3.8/site-packages/evohome_rf/protocol.py", line 368, in data_received
self._callback(msg)
File "/usr/local/lib/python3.8/site-packages/evohome_rf/message.py", line 552, in process_msg
update_entities(msg, msg._gwy._prev_msg) # update the state database
File "/usr/local/lib/python3.8/site-packages/evohome_rf/message.py", line 501, in update_entities
this._gwy.device_by_id[this.src.id]._handle_msg(this)
File "/usr/local/lib/python3.8/site-packages/evohome_rf/devices.py", line 756, in _handle_msg
self._opentherm_msg[msg.payload["id"]] = msg # TODO: these need to expire
KeyError: 'id'

This bug has been fixed in the latest master branch of evohome_rf:

self._opentherm_msg[msg.payload["msg_id"]] = msg  # TODO: these need to expire

I am sorry for any delay - I am hoping to get this project into HACS before pushing any more updates.

There is a v0.5.4 now.

@zxdavb i use it already in hacs :wink:

All, if (when upgrading to v0.5.5) you get this error message, Setup failed for evohome_cc: Invalid config:

2021-02-05 23:19:13 ERROR (MainThread) [homeassistant.config] Invalid config for [evohome_cc]: [packet_log] is an invalid option for [evohome_cc]. Check: evohome_cc->evohome_cc->schcema. (See /home/dbonnes/home-assistant/.config/configuration.yaml, line 32). Please check the docs at https://github.com/zxdavb/evohome_cc
2021-02-05 23:19:13 ERROR (MainThread) [homeassistant.setup] Setup failed for evohome_cc: Invalid config.

… or this one:

2021-02-05 23:19:14 DEBUG (MainThread) [homeassistant.core] Bus:Handling <Event call_service[L]: domain=persistent_notification, service=create, service_data=title=Invalid config, message=The following integrations and platforms could not be set up:
 - [evohome_cc](https://github.com/zxdavb/evohome_cc)
Please check your config and [logs](/config/logs)., notification_id=invalid_config>

Please note that the configuration.yaml has changed to introduce config::

evohome_cc:
  serial_port: /dev/ttyUSB1
  scan_interval: 60
  config:
    packet_log: /home/user/home-assistant/.config/packet.log
    max_zones: 16 
  schema:
    controller: 01:145038
  ignore_list:
    - 01:037519
    - 03:183434
    - 04:166090
    - 13:035462
    - 30:185469
    - 12:227486

This will make life easier going forward.

max_zones is only intended for Hometronics systems - it doesn’t do what you might hope it does.

Release v0.5.5 - better logging, so I can fix bugs.

Bellow is a suggested logger: config, for if you’d like help. Please also note the packet_log: parameter in the previous post (which is currently required, but will become optional).

logger:
  default: info                  # don't use debug
  logs:
    homeassistant.core: debug    # Event state_changed
    homeassistant.loader: info   # You are using a custom integration for evohome_cc...
    homeassistant.setup: info    # Setting up evohome_cc

    custom_components.evohome_cc: info
    custom_components.evohome_cc.*: debug

    # evohome_rf.transport: info

There will be no need to enable evohome_rf.transport, unless I specifically request.

Note the latest version of evofw3 is 0.6.6, which is strongly recommended.

I have re-written parts of the parser. I would be grateful fro anyone to send me 24h of packet logs using a HGI80, or a nanoCUL running evofw3 0.6.6 or later to test against …

… it would be great if something happened in the 24h - the more weird, the better (e.g. re-binding a round thermostat to a zone).

Dear zxdavb

with the version 0.5.5 I get the following error although I have alreadybcreated the packet.log file and permissions are ok. Any idea?

Traceback (most recent call last):
File “/usr/src/homeassistant/homeassistant/setup.py”, line 213, in _async_setup_component
result = await task
File “/config/custom_components/evohome_cc/init.py”, line 116, in async_setup
client = evohome_rf.Gateway(serial_port, loop=hass.loop, **kwargs)
File “/config/custom_components/evohome_cc/evohome_rf/init.py”, line 72, in init
set_pkt_logging(
File “/config/custom_components/evohome_cc/evohome_rf/packet.py”, line 126, in set_pkt_logging
handler = logging.FileHandler(file_name)
File “/usr/local/lib/python3.8/logging/init.py”, line 1143, in init
StreamHandler.init(self, self._open())
File “/usr/local/lib/python3.8/logging/init.py”, line 1172, in _open
return open(self.baseFilename, self.mode, encoding=self.encoding)
FileNotFoundError: [Errno 2] No such file or directory: ‘/home/pi/home-assistant/.config/packet.log’