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

Guys, I am aware that the controller is not yet exposed via HA - this is on my to do list, but I have some other projects on the go to complete first, including adding functionality to the existing (RESTful) evohome integration.

Having some time tried to start…
I.e. I see ‘honeywell’ device on my ‘IntelNUC’.

root@Debian10:~# lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 8087:0a2a Intel Corp. 
Bus 001 Device 002: ID 05e3:0610 Genesys Logic, Inc. 4-port hub
Bus 001 Device 014: ID 10ac:0102 Honeywell, Inc. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

I also installed the ‘cc’ in ‘hass.io’.

Plus followed this to install on ‘Debian LXC’.
Also I made entry in ‘.yaml’.

But not sure what I should do next.

Ex. in ‘hass.io’ log I see something like that:

Config = OrderedDict([('serial_port', '/dev/hgi80'), ('packet_log', '/home/zxdavb/packets.log')])
December 20, 2019, 11:04 PM custom_components/evohome_rf/__init__.py (WARNING)
Store = {}
December 20, 2019, 11:04 PM custom_components/evohome_rf/__init__.py (WARNING)

And details:

Log Details (WARNING)
Fri Dec 20 2019 23:04:57 GMT+0100 (Central European Standard Time)
Config =  OrderedDict([('serial_port', '/dev/hgi80'), ('packet_log', '/home/zxdavb/packets.log')])
Log Details (WARNING)
Fri Dec 20 2019 23:04:57 GMT+0100 (Central European Standard Time)
Store = {}

P.S. ‘/dev/hgi80’ is device created according earlier mentioned instruction (git) to allowing ‘usb passthrough’ on ‘proxmox’.

@dariusz

When I have this logging:

logger:
  logs:
    homeassistant.components.evohome_rf: debug
    evohome: debug

I get these log entries (grep evohome):

(venv) dbonnes@vm-builder:~/home-assistant$ cat ~/.homeassistant/home-assistant.log | grep evohome
2019-12-21 10:32:46 WARNING (MainThread) [homeassistant.loader] You are using a custom integration for evohome_rf which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you do experience issues with Home Assistant.
...
2019-12-21 10:32:47 WARNING (MainThread) [custom_components.evohome_rf] Store = {}
2019-12-21 10:32:47 WARNING (MainThread) [custom_components.evohome_rf] Config =  OrderedDict([('serial_port', '/dev/ttyUSB0'), ('packet_log', '/home/dbonnes/packets.log')])
2019-12-21 10:32:47 DEBUG (MainThread) [homeassistant.core] Bus:Handling <Event component_loaded[L]: component=evohome_rf>
...
2019-12-21 10:33:03 INFO (MainThread) [evohome.logger] 2019-12-21T10:33:03.204188  MSG: || 047 | RQ |     | STA:064023 | CTL:145038 |            | zone_config      | 001 | 07       || {'zone_idx': '07'}
2019-12-21 10:33:03 INFO (MainThread) [evohome.logger] 2019-12-21T10:33:03.268492  MSG: || 045 | RP |     | CTL:145038 | STA:064023 |            | zone_config      | 006 | 07100... || [{'07': {'min_temp': 5.0, 'max_temp': 35.0, 'flags': {'local_override': True, 'openwindow_function': True, 'multi_room_mode': False, '_bitmap': '0b00010000'}}}]
...
2019-12-21 10:33:09 DEBUG (MainThread) [homeassistant.core] Bus:Handling <Event platform_discovered[L]: service=load_platform.binary_sensor, platform=evohome_rf, discovered=>
2019-12-21 10:33:09 INFO (MainThread) [homeassistant.components.binary_sensor] Setting up binary_sensor.evohome_rf
2019-12-21 10:33:09 WARNING (MainThread) [custom_components.evohome_rf.binary_sensor] Found a Device (TRV), id=04:189076, zone=None

Don’t worry about the WARNING - I do that just so they stick out.

The [evohome.logger] lines are what you want - these are the packets being sniffed.

The Found a Device (STA), id=34:064023, zone=07 lines are HA entities being created.

Some tips:

  • confirm you have the device : ls /dev/hgi80
  • set the packet log location correctly - I doubt if /home/zxdavb/ is on your system
  • can you: cat homeassistant.log | grep evohome

Do this to check that the HGI80 is working OK:

screen /dev/hgi80 115200

You should see output like this:

045 RP --- 01:145038 34:064023 --:------ 2309 003 070834
074  I --- 04:189076 --:------ 04:189076 30C9 003 0007D8
088  I --- 04:189082 --:------ 04:189082 30C9 003 000957
063  I --- 12:010740 --:------ 12:010740 0008 002 0000

@Tjeerd @Captain

For those using a nanoCUL - the current recommended firmware is: https://github.com/brucemiranda/evofw2/tree/fifo

Note the specific fifo branch (which is currently 2d since last commit)

You will still get the manchester decoding errors - this is not a real problem for us.

2019-12-15T18:39:14.151002 --- RQ --- 22:243559 13:195751 --:------ 2309 003 0008FC
2019-12-15T18:40:29.225940 ---  I --- 13:000432 --:------ 13:000432 3EF0 003 00C8FF
2019-12-15T18:41:01.216902 ---  I --- *ERR_MANCHESTER_ENCODING*
2019-12-15T18:41:01.281851 --- RP --- *ERR_MANCHESTER_ENCODING*

Firmware works fine when reading the serial port directly. Home-assitant just doesn’t want to load the plugin anymore, did work the first time and can’t seem to figure out where the error is coming from.

Dec 21 14:19:23 ha hass[4930]: 2019-12-21 14:19:23 ERROR (MainThread) [homeassistant.setup] Setup failed for evohome_rf: Unable to import component

Can you do a:

pip list | grep evohome
pip list | grep serial

You shoudl get :slight_smile:

(venv) dbonnes@vm-builder:~/home-assistant$ pip list | grep evohome
evohome                 0.0.7

(venv) dbonnes@vm-builder:~/home-assistant$ pip list | grep serial
pyserial                3.4
pyserial-asyncio        0.4

Maybe something to do with HA - I’m getting:

2019-12-21 14:31:42 ERROR (MainThread) [homeassistant.setup] Setup failed for cloud: Unable to import component
2019-12-21 14:31:44 ERROR (MainThread) [homeassistant.setup] Setup failed for logbook: Unable to import component

Nvermind, found the issue. Since HA is dropping support for Python 3.6 I had to compile 3.7 from source. I was missing ncurses-devel on my machine, so curses was not compiled in, but is required by the evohome plugin.

Found out by adding some extra hardcoded logging in HA’s setup.py.

Getting some consistent results now :slight_smile:

Still getting lots of errors on the evohome library side though:

Dec 21 18:21:55 ha hass[8177]: 2019-12-21 18:21:55 ERROR (MainThread) [evohome.logger] ASSERT failure, raw_packet = >>> 065 RP --- 10:138822 01:187666 --:------ 3EF0 006 0000100200FF <<<
Dec 21 18:21:55 ha hass[8177]: Traceback (most recent call last):
Dec 21 18:21:55 ha hass[8177]: File "/srv/homeassistant/lib/python3.7/site-packages/evohome/message.py", line 1019, in payload
Dec 21 18:21:55 ha hass[8177]: self._payload = payload_parser(self.raw_payload) if payload_parser else None
Dec 21 18:21:55 ha hass[8177]: File "/srv/homeassistant/lib/python3.7/site-packages/evohome/message.py", line 237, in wrapper
Dec 21 18:21:55 ha hass[8177]: result = func(*args, **kwargs)
Dec 21 18:21:55 ha hass[8177]: File "/srv/homeassistant/lib/python3.7/site-packages/evohome/message.py", line 369, in actuator_enabled
Dec 21 18:21:55 ha hass[8177]: assert len(payload) / 2 == 3
Dec 21 18:21:55 ha hass[8177]: AssertionError

I’ll see if I can find some time next week to dive into the repository and see if I can help on implementing features.

Ignore the ASSERT errors - this is because the code is beta!

They are packets I don’t expect to see - if you send me a copy of your packets.log file, I can sort it (eventually).

In your case, I see it an OpenTherm Bridge, which I haven’t made any provision for (I don’t have an OTB).

There is a new CC (with a corresponding updated client).

So I installed it and it seems to have started right up. Nothing very special needed for hass.io fortunately, other than just to provide a correct relative path for the internal container filesystem (I used /share/packet.log)

I’ve got a ton of sensors to sort through. How do I tell which one is which? Would be interesting to compare them to existing ones… I guess I could graph all the old and new ones and compare if there’s no easy way.

It should (eventually) show the parent zone in the device state attributes. Are you using a HGI80?

There is an issue with the nano firmware where commands can’t be sent.

See:

04: is a TRV, and it is in the main room.

Yes, HGI-80.

Okay, the parent_zones are showing as null now, but I will wait and see. No way to tell which sensor is which within a zone once the parent_zone starts populating?

It’s interesting, some of the TRV’s are showing much higher temps than any of the zones… I’m assuming those are the ones that use external thermostats since they are covered by curtains or in the floor with the convectors.

Each Zone has an ‘authorative’ device that is the zone temp - say a round thermostat. The TRVs temps can vary widly. Have a look at Honeywell evohome via RF (HGI80/HGS80) for an example.

With HA, you can put the zone temp, and teh device temps on the same graph.

The parent zones may take a while - the system has to wait fro the right packet to appear - some of them are only sent once a day.

1 Like

Are u using the very latest version - there was a bug with parent_zones, now fixed.

I cloned it about 2 hours ago so I think so. We will see what happens overnight.

In my case I could not see HGI80 ‘usb’ on CT Debian installed on ‘proxmox’.
There is an info on ‘proxmox’ forum that in case CT usb-devices (with non-free firmware) - it is hardly to get them working… In most cases it is not possible to make ‘USB-Passthrough’…
The only suggested solution is to use VM…
So now I must install ‘Debian’ as VM. And try again…

Maybe - in future - someone will find/advice solution to have working ‘HGI80’ on CT installed systems…

Custom serial port config seems to be ignored in the new version. Serial port is passed through as en arg, but is read as a function param. So it always falls back to /dev/ttyUSB0.

I’ve altered the library to the following, which works:
self.serial_port = kwargs.get("serial_port", port_name)

Good spot! Will sort it out.