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

What is your Ramses RF > Config > Serial Port setting? (to keep your real mqtt username and password private, replace them with uname and pwd). I had a simple typo in my port config and got that exact same warning.

Without that info, it’s impossible to tell

Setting…
mqtt://user:[email protected]:1883

This is running latest HA and Ramses RF 0.54.0/0.53.6, or something older?
Your setup is new and has never worked for you?

Thank you for your help
Running latest Home Assistant and Ramses RF 0.54.0
New installation not yet got working

Lucky guess, but do you have the timezone and sntp configured correctly on the ESP ? Serial Interface · IndaloTech/ramses_esp Wiki · GitHub.

This is the config for timezone and sntp I have used.

// Configure SNTP + Timezone
void configureSNTP() {
  // UK timezone (GMT/BST with DST rules)
  setenv("TZ", "GMT0BST-1,M3.5.0/01,M10.5.0/02", 1);
  tzset();

  // Start NTP
  configTime(0, 0, "pool.ntp.org", "time.nist.gov");
}

You might start off with the ramses_esp connected to the USB&port (and adjust the port config), just to eliminate an extra step for now.

Will give it a try when I get time.Thank you.

I have done a fresh install of home Assistant on a 2nd Raspberry pi.
I have now connected the ramses_esp directly to the USB on my Raspberry Pi.
Changed the seriel port to USB.
Put my evohome controller id in the system schema.

The controller is shown as “unknown”.
The only entry in the packet logs is
"2026-02-08T10:49:39.477006 # ramses_tx 0.53.6

I am a real novice at this and struggling to get things working.

I don’t beleive a controller ID is required if you disable the known list, you should start with capturing all the device IDs before filtering out the devices.

ramses_rf:
  enforce_known_list: false
  enable_eavesdrop: true

Now configured in the UI.

Using the terminal & SSH add-on (app) you should also confirm the device is connected to the USB port. Run the command lsusb

I have the older dongle version which reports SparkFun evofw3 atega32u4

See 2.1 Configuration via Config Flow · ramses-rf/ramses_cc Wiki · GitHub

Ran the command and this is the result…

Espressif USB JTAG/seriel debug unit

Accept packets from known device IDs is set

To on? Because if you don’t have any system set up yet, you need to set it to off to “scan” (listen) for any devices. Once you know all your devices, you can put those in the known list and than switch the switch to only listen to known devices.

1 Like

Apologies I misunderstood

Anyone knows how to solve the following issue. I regularly get a message from ramses rf that some config is wrong. I think the problem is in the data sent from the evohome about the system. I think a radiator valve is part of 2 rooms.
Logger: homeassistant
Source: /usr/src/homeassistant/homeassistant/runner.py:238
First occurred: 08:04:33 (1 occurrence)
Last logged: 08:04:33

Error doing job: Exception in callback Controller._handle_msg() (task: None)
Traceback (most recent call last):
File “/usr/local/lib/python3.13/asyncio/events.py”, line 89, in _run
self._context.run(self._callback, *self._args)
~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.13/site-packages/ramses_rf/device/heat.py”, line 336, in _handle_msg
self.tcs._handle_msg(msg)
~~~~~~~~~~~~~~~~~~~~^^^^^
File “/usr/local/lib/python3.13/site-packages/ramses_rf/system/heat.py”, line 588, in _handle_msg
super()._handle_msg(msg)
~~~~~~~~~~~~~~~~~~~^^^^^
File “/usr/local/lib/python3.13/site-packages/ramses_rf/system/heat.py”, line 482, in _handle_msg
self.get_htg_zone(msg.payload[SZ_ZONE_IDX], msg=msg)
~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.13/site-packages/ramses_rf/system/heat.py”, line 544, in get_htg_zone
zon._handle_msg(msg)
~~~~~~~~~~~~~~~^^^^^
File “/usr/local/lib/python3.13/site-packages/ramses_rf/system/zones.py”, line 664, in _handle_msg
self._gwy.get_device(dev_id, parent=self)
~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.13/site-packages/ramses_rf/gateway.py”, line 532, in get_device
dev.set_parent(parent, child_id=child_id, is_sensor=is_sensor)
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.13/site-packages/ramses_rf/entity_base.py”, line 1540, in set_parent
parent, child_id = self._get_parent(
~~~~~~~~~~~~~~~~^
parent, child_id=child_id, is_sensor=is_sensor
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File “/usr/local/lib/python3.13/site-packages/ramses_rf/entity_base.py”, line 1441, in _get_parent
raise exc.SystemSchemaInconsistent(
…<2 lines>…
)
ramses_rf.exceptions.SystemSchemaInconsistent: 04:zzzzzz (TRV): None can’t change parent (01:xxxxxx_02 (RAD)_02 to 01:xxxxxx_03 (RAD)_03) (hint: try restarting the client library)

Unfortunately I don’t have the newer dongle, so I can’t confirm how it should read out.

Perhaps someone else can confirm and once it’s known the documentation can be updated. The documentation mentions all other dongle alternatives but is missing the latest module.

Finally found some more time to look into this. Yes, device 32:123456 is a faked 4 button remote which works perfectly. All button commands send result in the PIV acting as it should. Device 30:095696 is my PIV.

I managed to get the events showing up and so also sent a 31DA as you suggested. Here is the sent event:

event_type: ramses_cc_message
data:
  dtm: "2026-02-11T14:32:45.787173"
  src: "32:123456"
  dst: "30:095696"
  verb: RQ
  code: 31DA
  payload: {}
  packet: RQ --- 32:123456 30:095696 --:------ 31DA 001 00
origin: LOCAL
time_fired: "2026-02-11T14:32:45.810804+00:00"
context:
  id: 01KH6HWVFJF2QSDK5M20Y6S01A
  parent_id: null
  user_id: null

To which the PIV replied with:

event_type: ramses_cc_message
data:
  dtm: "2026-02-11T14:32:45.812950"
  src: "30:095696"
  dst: "32:123456"
  verb: RP
  code: 31DA
  payload:
    hvac_id: "21"
    exhaust_fan_speed: null
    fan_info: auto
    _unknown_fan_info_flags:
      - 0
      - 0
      - 0
    air_quality: null
    co2_level: null
    indoor_humidity: null
    outdoor_humidity: null
    exhaust_temp: null
    supply_temp: null
    indoor_temp: null
    outdoor_temp: null
    speed_capabilities:
      - post_heater
    bypass_position: null
    supply_fan_speed: null
    remaining_mins: 0
    post_heat: 0
    pre_heat: null
    supply_flow: null
    exhaust_flow: null
    _extra: "00"
  packet: >-
    RP --- 30:095696 32:123456 --:------ 31DA 030
    21EF007FFFEFEF7FFF7FFF7FFF7FFF0002EF18FFFF000000EF7FFF7FFF00
origin: LOCAL
time_fired: "2026-02-11T14:32:45.850972+00:00"
context:
  id: 01KH6HWVGTFN2PE0MYPMF6NGS7
  parent_id: null
  user_id: null

So it seems either the PIV responds with no useful data or Ramses doesn’t currently know how to unpack it from the packet.

Ramses RF 0.54.2, just out on HACS, contains a bugfix that crept into 0.54.1, impacting CH Zone installs.