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

I think we can say this is sorted. Interesting that my controller (red line) missed one of the updates that evofw3 (blue line) detected. (And this was confirmed by looking at the display on the controller.)

Thanks for sorting this.

1 Like

Yes it is the short one :frowning:
But the corner where the HR92 is, is pretty build in with stuff and wifi used to be doggy (before adding an extra AP on the first floor) on the attic as well in that corner.

Both the evofw3 sticks where seeing the HR92 with a RSSI of 85 when they where on the first floor.
The building signal test of the HR92 is also poor, but it works :slight_smile:

So Iā€™m pretty sure it is a reception issue

Pigtails are oke, but not that great.

Here is a challenge for someoneā€¦

I am looking at implementing something like the following for edge-cases:

evohome_cc:
  serial_port: /dev/ttyACM0
  ramses_rf:
    use_regexp:
      "( 03:.* 1060 003) FF": "\1 00"

Which would be used to convert invalid packets like this:

 I 000 03:196196 --:------ 03:196196 1060 003 FFFF01

ā€¦ into this (below), so that they can be parsed by ramses_rf:

 I 000 03:196196 --:------ 03:196196 1060 003 00FF01

The first string is the search: "( 03:.* 1060 003) FF", the second is the replace: "\1 00".

So, can anyone come up with a regexp search/replace pair for the following?

Convert:

RP --- 01:050858 18:141846 --:------ 000C 006 04080010D8DA
RP --- 01:050858 18:141846 --:------ 000C 011 04080010D8DA080010D92A
RP --- 01:050858 18:141846 --:------ 000C 016 04080010D8DA080010D92A080010D92B
RP --- 01:050858 18:141846 --:------ 000C 021 04080010D8DA080010D92A080010D92B080010D92C

ā€¦ into:

RP --- 01:050858 18:141846 --:------ 000C 006 04080010D8DA
RP --- 01:050858 18:141846 --:------ 000C 012 04080010D8DA04080010D92A
RP --- 01:050858 18:141846 --:------ 000C 018 04080010D8DA04080010D92A04080010D92B
RP --- 01:050858 18:141846 --:------ 000C 024 04080010D8DA04080010D92A04080010D92B04080010D92C

For context, each 6-byte chunk is: zz-tt-dddddddd (zone-idx, device-type, device-id).

I wont implement this feature unless it can be made to do the above.

@iMiMx To fix your zone 00, try this:

evohome_cc
  schema:
    controller: 01:123456
    zones:
      '00':
        devices:
          - '04:111111'
          - '04:222222'

Populates devices, but not actuators:

    '00':
      _name: Living Room
      heating_type: radiator_valve
      sensor: '22:245508'
      devices:
        - '04:055594'
        - '04:055514'
        - '22:245508'
      _sensor: '22:245508'
      _actuators: null

But does seem to show ā€˜Heatingā€™ i.e it knows that it is heating, for the first time since we/I came across this issue. Previously it was just ā€˜Heatā€™ when all the others showed ā€˜Heatingā€™.

Yes, thatā€™s right.

The controller will not tell ramses_rf if/when a zone has a heat demand (is ā€˜heatingā€™), despite showing this data in the UI.

So ramses_rf aggregates the heat demand of the constituent actuators to approximate this value.

@bluediamond84

Before the next release drops, add the equivalent of this JSON to your configuration.yaml as YAML:

    "01:024170": {
        "zones": {
            "00": {
                "heating_type": "underfloor_heating",
                "sensor": "01:024170",
                "devices": ["02:016894"]
            },
            "02": {
                "heating_type": "underfloor_heating",
                "devices": ["02:017729"]
            },
            "03": {
                "heating_type": "underfloor_heating",
                "devices": ["02:017825"]
            }
        }
    },

See: this part of the evohome_cc Wiki

i have got also an empty 00 zone:

system:
  heating_control: '10:078099'
orphans: []
stored_hotwater: {}
underfloor_heating: {}
zones:
  '00':
    _name: Woonkamer
    heating_type: underfloor_heating
    sensor: null
    devices: []
    _sensor: null
    _actuators: []
  '01':
    _name: Badkamer
    heating_type: radiator_valve
    sensor: '04:225661'
    devices:
      - '04:225661'
    _sensor: '04:225661'
    _actuators:
      - '04:225661'
  '02':
    _name: Slaapkamer Evi
    heating_type: radiator_valve
    sensor: '04:225663'
    devices:
      - '04:225663'
    _sensor: '04:225663'
    _actuators:
      - '04:225663'
  '03':
    _name: Kastenkamer
    heating_type: radiator_valve
    sensor: '04:023992'
    devices:
      - '04:023992'
    _sensor: '04:023992'
    _actuators: []
  '04':
    _name: Toilet
    heating_type: radiator_valve
    sensor: '04:225657'
    devices:
      - '04:225657'
    _sensor: '04:225657'
    _actuators:
      - '04:225657'
  '05':
    _name: Slaapkamer Nova
    heating_type: radiator_valve
    sensor: '04:024000'
    devices:
      - '04:024000'
    _sensor: '04:024000'
    _actuators:
      - '04:024000'
  '07':
    _name: Slaapkamer
    heating_type: radiator_valve
    sensor: '04:059569'
    devices:
      - '04:059569'
    _sensor: '04:059569'
    _actuators:
      - '04:059569'

friendly_name: 01:087939 (schema)

i have got also the follow error in my log:

RQ --- 18:000070 10:078099 --:------ 3220 005 0080130000 < There appears to be more than one HGI80-compatible device (active gateway: 18:073736), this is unsupported
RQ --- 18:000370 01:087939 --:------ 0418 003 000004 < There appears to be more than one HGI80-compatible device (active gateway: 18:073736), this is unsupported

My config:

evohome_cc:
  serial_port: /dev/ttyUSB-EVOHOME
  scan_interval: 60
  packet_log:
    file_name: /config/evohome_cc.log
    rotate_bytes: null
    rotate_backups: 3
  restore_state: false
  ramses_rf:
    enforce_known_list: true
    max_zones: 9
  schema:
    controller: 01:087939
    system:
      heating_control: 10:078099
  known_list:
    - 01:087939 # Controller
    - 04:225661 # Badkamer
    - 04:225663 # Slaapkamer Evi
    - 02:017205 # Woonkamer
    - 04:023992 # Kastenkamer
    - 04:059569 # Slaapkamer
    - 04:225657 # Toilet
    - 04:024000 # Slaapkamer Nova
    - 10:078099 # Heating control

Iā€™ve been running successfully for about a week having received my SSM-D - great work and thanks for the effort you are putting into this!

The only small issue Iā€™ve noticed, which is not causing any real problems, are the following errors (one after the other) which I believe are coming from a zone configured as an Electric Zone.

validate_command(): object of type 'int' has no len()
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/ramses_rf/protocol/command.py", line 143, in _wrapper
    return fcn(*args, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/ramses_rf/protocol/command.py", line 505, in get_relay_demand
    return cls(RQ, _0008, zone_idx, dev_id, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/ramses_rf/protocol/command.py", line 267, in __init__
    self._validate(
  File "/usr/local/lib/python3.9/site-packages/ramses_rf/protocol/command.py", line 336, in _validate
    self._len = int(len(self.payload) / 2)
TypeError: object of type 'int' has no len()

followed by

Error doing job: Task exception was never retrieved
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/ramses_rf/helpers.py", line 17, in execute_func
    return func(*args, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/ramses_rf/entities.py", line 98, in wrapper
    return func(self, discover_flag=discover_flag)
  File "/usr/local/lib/python3.9/site-packages/ramses_rf/zones.py", line 845, in _discover
    super()._discover(discover_flag=discover_flag)
  File "/usr/local/lib/python3.9/site-packages/ramses_rf/zones.py", line 251, in _discover
    self._send_cmd(Command.get_relay_demand(self._ctl.id, zone_idx=self.idx))
  File "/usr/local/lib/python3.9/site-packages/ramses_rf/entities.py", line 195, in _send_cmd
    cmd._source_entity = self
AttributeError: 'NoneType' object has no attribute '_source_entity'

Iā€™m not sure whether get_relay_demand here is referring to the boiler relay BDR91, or the BDR91 that is the actuator for the electric zone. I suspect the former, as the only ill effect that these errors cause is that my ā€œ01:225826_08 (heat_demand)ā€ entity is always Unavailable (my eletric zone is zone index 08). Not a problem as I wouldnā€™t expect electric zones to create a boiler demand anyway, but perhaps the error could be addressed. Note that my ā€œ13:076092 (relay_demand)ā€ entity, which is the electric zoneā€™s BDR91 actuator, does reliably show a correct demand percentage.

The following lines immediately precede the above assertions in the log and look to relate to zone 08, should they be useful:

2021-11-27 12:25:10 INFO (MainThread) [ramses_rf.protocol.transport] RF Tx:     b'RQ --- 18:000730 01:225826 --:------ 0004 002 0800'
2021-11-27 12:25:10 INFO (MainThread) [ramses_rf.protocol.transport] RF Rx: b'000 RQ --- 18:204306 01:225826 --:------ 0004 002 0800'
2021-11-27 12:25:10 INFO (MainThread) [ramses_rf.protocol.transport] PktProtocolQos.data_rcvd(rcvd=0004|RQ|01:225826|08): boff=0, want=0004|RQ|01:225826|08, tout=2021-11-27T12:25:10.300: QoS: wa
nting Tx (RQ) pkt: was MATCHED (now waiting for the corresponding Rx (RP) pkt)
2021-11-27 12:25:10 INFO (MainThread) [ramses_rf.protocol.protocol] rcvd: RQ --- 18:204306 01:225826 --:------ 0004 002 0800
2021-11-27 12:25:10 INFO (MainThread) [ramses_rf.protocol.transport] RF Rx: b'061 RP --- 01:225826 18:204306 --:------ 0004 022 080047617264656E20726F6F6D000000000000000000'
2021-11-27 12:25:10 INFO (MainThread) [ramses_rf.protocol.transport] PktProtocolQos.data_rcvd(rcvd=0004|RP|01:225826|08): boff=0, want=0004|RP|01:225826|08, tout=2021-11-27T12:25:10.300: QoS: wa
nting Rx (RP) pkt: was MATCHED (now done)
2021-11-27 12:25:10 INFO (MainThread) [ramses_rf.protocol.protocol] rcvd: RP --- 01:225826 18:204306 --:------ 0004 022 080047617264656E20726F6F6D000000000000000000
2021-11-27 12:25:10 INFO (MainThread) [ramses_rf.message] || CTL:225826 | HGI:204306 | RP | zone_name        |  08  || {'zone_idx': '08', 'name': 'Garden room'}
2021-11-27 12:25:10 INFO (MainThread) [ramses_rf.protocol.protocol] sent: RQ --- 18:000730 01:225826 --:------ 0004 002 0800
2021-11-27 12:25:10 INFO (MainThread) [ramses_rf.protocol.transport] RF Tx:     b'RQ --- 18:000730 01:225826 --:------ 000A 002 0800'
2021-11-27 12:25:10 INFO (MainThread) [ramses_rf.protocol.transport] RF Rx: b'000 RQ --- 18:204306 01:225826 --:------ 000A 002 0800'
2021-11-27 12:25:10 INFO (MainThread) [ramses_rf.protocol.transport] PktProtocolQos.data_rcvd(rcvd=000A|RQ|01:225826|08): boff=0, want=000A|RQ|01:225826|08, tout=2021-11-27T12:25:10.357: QoS: wa
nting Tx (RQ) pkt: was MATCHED (now waiting for the corresponding Rx (RP) pkt)
2021-11-27 12:25:10 INFO (MainThread) [ramses_rf.protocol.protocol] rcvd: RQ --- 18:204306 01:225826 --:------ 000A 002 0800
2021-11-27 12:25:11 INFO (MainThread) [ramses_rf.protocol.transport] RF Rx: b'061 RP --- 01:225826 18:204306 --:------ 000A 006 081001F40DAC'
2021-11-27 12:25:11 INFO (MainThread) [ramses_rf.protocol.transport] PktProtocolQos.data_rcvd(rcvd=000A|RP|01:225826|08): boff=0, want=000A|RP|01:225826|08, tout=2021-11-27T12:25:10.357: QoS: wa
nting Rx (RP) pkt: was MATCHED (now done)
2021-11-27 12:25:11 INFO (MainThread) [ramses_rf.protocol.protocol] rcvd: RP --- 01:225826 18:204306 --:------ 000A 006 081001F40DAC
2021-11-27 12:25:11 INFO (MainThread) [ramses_rf.message] || CTL:225826 | HGI:204306 | RP | zone_params      |  08  || {'zone_idx': '08', 'min_temp': 5.0, 'max_temp': 35.0, 'local_override': Tru
e, 'openwindow_function': True, 'multiroom_mode': False, '_unknown_bitmap': '0b00010000'}
2021-11-27 12:25:11 INFO (MainThread) [ramses_rf.protocol.protocol] sent: RQ --- 18:000730 01:225826 --:------ 000A 002 0800

Let me know if you need any more logs.

@bluediamond84 is running with a very old evohome controller - and an old firmware at that - discovery isnā€™t working on his system.

It shouldnā€™t be necessary for you (or anyone who has an Evo Colour) to do the same as he.

The next release will include some UFH-specific fixes - please report back to me if it doesnā€™t work for you after that.

UFH is a poor cousin, currently - I have no test bed for it, so UFH/UFC development is difficult for me.

The above are corrupted packets (the device_id should be 18:000730) - unfortunately they remain valid. The ā€˜newā€™ device looks like a (second) HGI-compatible device, and so ramses_rf is rightfully rejecting the packet.

The system is full of these corruptions, and a lot of effort is spent detecting them.

I see you have a known_list (a white list). The reason why the packet isnā€™t filtered out is because 10:078099 is in that list (or, if so configured, neither is not in a block_list).

Maybe the code isnā€™t quite right, as this warning is coming from a lower layerā€¦ For now, add your gateway device ID to your known_list.

ā€¦ and please send me a 24 packet log running the latest 0.16.x and I will address the above.

At first glance, I canā€™t see the cause of the error - given that the logging is so unhelpful, I will fix that & you can update me with the improved error message from the next release (if required).

I have identified & fixed this bug.

Thatā€™s great, thank you. I will be happy to test the next release and report back.

Start testing - release 0.16.22 is available.

I am interested in UFH zones - is the schema complete? Do they have a valid heat_demand?

@cinnamon ?

Seeing a few of these (with 0.16.20). Doesnā€™t seem to the causing any issues (famous last words!)

WARNING (MainThread) [ramses_rf.entities] RQ --- 18:000730 01:185426 --:------ 1260 001 00 < Sending inadvisable for 07:046786 (DHW) (has a battery)

I have these added to my configuration.yaml. But it wonā€™t be added to the schema sensor.

  ramses_rf:
    enable_eavesdrop: false
  schema:
    controller: 01:024170
    zones:
      "00":
        heating_type: underfloor_heating
        sensor: "01:024170"
        devices:
          - "02:016894"
      "02":
        heating_type: underfloor_heating
        devices:
          - "02:017729"
      "03":
        heating_type: underfloor_heating
        devices:
          - "02:017825"

@zxdavb I see the following with 0.16.22:

2021-11-27 19:37:34 ERROR (MainThread) [ramses_rf.protocol.command] get_relay_demand((<class 'ramses_rf.protocol.command.Command'>, '13:076092'), {
}): Unknown format code 'X' for object of type 'str'
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/ramses_rf/protocol/command.py", line 147, in _wrapper
    return fcn(*args, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/ramses_rf/protocol/command.py", line 523, in get_relay_demand
    return cls(RQ, _0008, f"{zone_idx:02X}", dev_id, **kwargs)
ValueError: Unknown format code 'X' for object of type 'str'
2021-11-27 19:37:34 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/ramses_rf/helpers.py", line 17, in execute_func
    return fnc(*args, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/ramses_rf/entities.py", line 98, in wrapper
    return fnc(self, discover_flag=discover_flag)
  File "/usr/local/lib/python3.9/site-packages/ramses_rf/devices.py", line 1571, in _discover
    super()._discover(discover_flag=discover_flag)
  File "/usr/local/lib/python3.9/site-packages/ramses_rf/devices.py", line 434, in _discover
    super()._discover(discover_flag=discover_flag)
  File "/usr/local/lib/python3.9/site-packages/ramses_rf/entities.py", line 98, in wrapper
    return fnc(self, discover_flag=discover_flag)
  File "/usr/local/lib/python3.9/site-packages/ramses_rf/devices.py", line 739, in _discover
    self._send_cmd(
  File "/usr/local/lib/python3.9/site-packages/ramses_rf/entities.py", line 195, in _send_cmd
    cmd._source_entity = self
AttributeError: 'NoneType' object has no attribute '_source_entity'

I get similar errors for both my boiler relay (13:032648) and my electric zone actuator (13:076092).

There is a regression - the wrong library is being loaded - I will issue a quick fix.

Which hardware is the gateway device ID?

Version 0.16.23 released.

The one starting with 18:, yours is 18:073736?

i think so :wink: i add just add it to my known_list. The zones of the UFH doesnā€™t show any info. (i dont know if i can expect that)