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

It isn’t odd at all… the underlying protocol is very error-prone, with poor error detection, and no correction.

It takes a single bit flip to change from 18:000730 (a very common address) to 01:000730…

This is one of the reasons why creating /enforcing a known_list is strongly recommended.

I also got the recommended indalo-tech device. It took all of one minute to swop out old and replace new, no idea if its any better but all working fine.
I added a suggested device from my error log and it deleted all of my known devices from the Ramses known devices list in the app itself, all still works fine but I need to review how to add these known devices back in from the Wiki instructions.

In short…

  • use the config_flow version of RAMSES RF with an empty known_list, and without enforcing a known_list
  • it will auto-detect the gateway ID (18:xxxxxx) and you can look for that entity, it will be called HGI 18:xxxxxx Gateway status
  • have a look at the attributes of that entity, it will have the suggested (minimal) schema, and the working know_list

Then add the schema and known_list to the system configuration.

Many thanks for advice.
So My now looks like this:
Hope i’ve correctly understood.


I am having trouble with a specific HR92 TRV which is not showing the heat_demand sensor value, it always reports unavailable. However, the climate sensor for the same TRV is working perfectly fine. It correctly reports the temperature, setpoint, etc. but the separate heat_demand entity doesn’t work. All other HR92 TRVs are fine.

I am requesitng some guidance on how to troubleshoot and resolve the issue, thanks :grinning:

The next step would be to look in the packet log for 3150 packets from that TRV, and see what their payload is.

I have just noticed that Pete is now advertising the RAMSES_ESP dongle that adds MQTT support (you can get on a waitlist to buy one):

And I can confirm that the RAMSES RF (was ramses_cc) integration currently supports MQTT - all my test / dev is using this device.

This means you can locate the dongle anywhere where it gets the best RF reception (to your CH/DHW / HVAC devices), and it can reach the MQTT server via WiFi.

1 Like

Hello David, I am following up regarding my post in the forum about a missing heat_demand sensor on a specific TRV

Packet log shared privately.

The strange thing is that I can’t find any lines that match the TRV 04:107303 like I can for other TRVs but unexpectedly the climate entity climate.01_182924_03 works perfectly fine, I can change setpoint, read the temperature, etc. It’s just the heat_demand sensor is the problem. I also moved the TRV closer to the head controller, but that hasn’t made a difference either.

I appreciate your guidance on solving the problem.

Btw, I am using the heat_demand sensor to create a template sensor that is capped to the current temperature (rather than %). By doing so it allows me to replicate the standard HA temperature card using the custom button-card which can be then tweaked to my liking. Picture example below.

1 Like

Taken delivery of my RAMSES-ESP, but no joy getting the hacs install of RAMES_RF to connect to my MQTT broker.

I’m getting the following error

Logger: ramses_tx.transport
Source: /usr/local/lib/python3.12/site-packages/ramses_tx/transport.py:1060
First occurred: 14:49:36 (6308 occurrences)
Last logged: 17:48:52

Disconnected with result code 5

MQTT broker is generally working with my HA install and other publishers and subscribers.

Welcome.

See: Types and enums — Eclipse paho-mqtt documentation

Reason code 5 is CONNACK_REFUSED_NOT_AUTHORIZED.

Please check the URL. Perhaps you could post it here (minus the password) for us to check. Does the username/password have any special characters?

Otherwise, check the configuration of your MQTT broker.

Also see: 2. Configuration · zxdavb/ramses_cc Wiki · GitHub

Of course, the solution is always staring you in the face.
The stability of my MQTT installation was indeed it’s undoing. A restart /reload of mosquitto is required upon adding a new user/password combination.

@zxdavb I have ramses_cc running with my EvoHome with 12 zones of which 3 floor sections.
The 3 floor sections are managed by the ‘new’ HCC100 unit.
Every zone is reporting all settings and actuators, but the 3 floor zones do not report the ‘zone heat demand %’.
Do you have any suggestions on how to get that info available?

Solved: I was impatient. Demands are reported now.

Sadly, Underfloor heating controllers (UFCs) like the HCC100, HCE80, etc. are not fully supported. This is on my to do list.

Thus, I suspect whatever figures you’re getting for these zones - the number is wrong.

1 Like

Dear David,
I am reading this thread for some time and have now purchased the RAMSES_ESP device. I really appreciate your work, it is amazing !

I have successfully connected it to the MQTT Mosquitto broker (HA add-on) and HA is receiving data and shows all my evohome devices. Problem is that all entities are shown as “Not available”.
I am using v0.41.20.

Here is an excerpt from my ramses.log:

2024-06-18 09:02:58.207 INFO (MainThread) [custom_components.ramses_cc.broker] Saving the client state cache (packets, schema)
2024-06-18 09:02:58.208 DEBUG (MainThread) [ramses_rf.gateway] Gateway: Pausing engine...
2024-06-18 09:03:03.845 ERROR (Recorder) [homeassistant] Error doing job: Task exception was never retrieved (None)
Traceback (most recent call last):
  File "/config/custom_components/ramses_cc/broker.py", line 190, in async_save_client_state
    schema, packets = self.client.get_state()
                      ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/ramses_rf/gateway.py", line 238, in get_state
    self._pause()
  File "/usr/local/lib/python3.12/site-packages/ramses_rf/gateway.py", line 215, in _pause
    super()._pause(disc_flag, *args)
  File "/usr/local/lib/python3.12/site-packages/ramses_tx/gateway.py", line 240, in _pause
    raise RuntimeError("Unable to pause engine, it is already paused")
RuntimeError: Unable to pause engine, it is already paused
2024-06-18 09:03:03.853 ERROR (MainThread) [homeassistant.helpers.dispatcher] Exception in async_write_ha_state when dispatching 'ramses_cc_update': ()
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1000, in async_write_ha_state
    self._async_write_ha_state()
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1126, in _async_write_ha_state
    state, attr, capabilities, shadowed_attr = self.__async_calculate_state()
                                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1060, in __async_calculate_state
    available = self.available  # only call self.available once per update cycle
                ^^^^^^^^^^^^^^
  File "/config/custom_components/ramses_cc/binary_sensor.py", line 162, in available
    return msg and dt.now() - msg.dtm < timedelta(
                   ~~~~~~~~~^~~~~~~~~
TypeError: can't subtract offset-naive and offset-aware datetimes

2024-06-18 09:04:03.863 ERROR (MainThread) [homeassistant.helpers.dispatcher] Exception in async_write_ha_state when dispatching 'ramses_cc_update': ()
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1000, in async_write_ha_state
    self._async_write_ha_state()
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1126, in _async_write_ha_state
    state, attr, capabilities, shadowed_attr = self.__async_calculate_state()
                                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1060, in __async_calculate_state
    available = self.available  # only call self.available once per update cycle
                ^^^^^^^^^^^^^^
  File "/config/custom_components/ramses_cc/binary_sensor.py", line 162, in available
    return msg and dt.now() - msg.dtm < timedelta(
                   ~~~~~~~~~^~~~~~~~~
TypeError: can't subtract offset-naive and offset-aware datetimes

> Blockquote

Any idea what I did wrong?

I am afraid there is just not enough there for me to make a useful comment.

Have you tried:

I can see a lot of entries in ramses.log, they all look fine to me. F.ex.

2024-06-18T11:06:14.092380 063  I --- 01:085811 --:------ 01:085811 2309 021 00076C01073A0207080308980405DC050708070802
2024-06-18T11:06:14.093495 062  I --- 01:085811 --:------ 01:085811 30C9 021 00081F01085502084F03088204084C05084C07081C
2024-06-18T11:07:04.038944 061  I --- 04:241806 --:------ 01:085811 3150 002 076E
2024-06-18T11:07:39.635922 061  I --- 04:241806 --:------ 04:241806 30C9 003 000756
2024-06-18T11:08:21.817365 043  I --- 04:136049 --:------ 01:085811 3150 002 03C8

I have tried to configure the schema using the GUI. Like this (as an example):

01:085811: { alias: "--controller--" }
  18:146860: {class: HGI, alias: "HGI:evofw3" }
  04:136049: { alias: "Arbeitszimmer Valve 1" }

When I save the config I get a positive confirmation. but when I re-open it is empty again.

I have now also installed a complete new instance of HA only running the ramses_cc integration using config flow cofiguration option. Same problem.

I am using ramses_esp with FW 0.4.9
ramses_esp is integrated using the MQTT broker

serial config: mqtt://HA-mosquitto:[email protected]:1883

2024-06-18 16:35:14.981 ERROR (MainThread) [homeassistant.helpers.dispatcher] Exception in async_write_ha_state when dispatching 'ramses_cc_update': ()
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1000, in async_write_ha_state
    self._async_write_ha_state()
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1126, in _async_write_ha_state
    state, attr, capabilities, shadowed_attr = self.__async_calculate_state()
                                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1063, in __async_calculate_state
    if state_attributes := self.state_attributes:
                           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/climate/__init__.py", line 324, in __getattribute__
    return super().__getattribute__(__name)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/climate/__init__.py", line 524, in state_attributes
    hass, self.current_temperature, temperature_unit, precision
          ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/climate/__init__.py", line 324, in __getattribute__
    return super().__getattribute__(__name)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/ramses_cc/climate.py", line 311, in current_temperature
    return self._device.temperature
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/ramses_rf/system/zones.py", line 736, in temperature
    return self._msg_value(Code._30C9, key=SZ_TEMPERATURE)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/ramses_rf/system/zones.py", line 684, in _msg_value
    return super()._msg_value(*args, **kwargs, zone_idx=self.idx)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/ramses_rf/entity_base.py", line 302, in _msg_value
    return self._msg_value_code(code, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/ramses_rf/entity_base.py", line 330, in _msg_value_code
    return self._msg_value_msg(msg, key=key, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/ramses_rf/entity_base.py", line 341, in _msg_value_msg
    elif msg._expired:
         ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/ramses_tx/message.py", line 340, in _expired
    self._fraction_expired = fraction_expired(self._pkt._lifespan)
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/ramses_tx/message.py", line 317, in fraction_expired
    return (self._gwy._dt_now() - self.dtm - _TD_SECS_003) / lifespan
            ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~
TypeError: can't subtract offset-naive and offset-aware datetimes

whereas the logfile ramses.log looks fine:

2024-06-18T16:31:16.377736 056 RP --- 01:085811 18:146860 --:------ 30C9 003 040871
2024-06-18T16:31:16.442733 000 RQ --- 18:146860 01:085811 --:------ 30C9 001 05
2024-06-18T16:31:16.454939 056 RP --- 01:085811 18:146860 --:------ 30C9 003 05087D
2024-06-18T16:31:16.519265 000 RQ --- 18:146860 01:085811 --:------ 30C9 001 07
2024-06-18T16:31:16.566827 056 RP --- 01:085811 18:146860 --:------ 30C9 003 070849
2024-06-18T16:31:16.611222 000 RQ --- 18:146860 01:085811 --:------ 0005 002 000A
2024-06-18T16:31:16.614445 056 RP --- 01:085811 18:146860 --:------ 0005 004 000A0000
2024-06-18T16:31:16.796270 000 RQ --- 18:146860 01:085811 --:------ 0005 002 000B
2024-06-18T16:31:16.811657 056 RP --- 01:085811 18:146860 --:------ 0005 004 000B0000
2024-06-18T16:31:16.874652 000 RQ --- 18:146860 01:085811 --:------ 0005 002 0011
2024-06-18T16:31:17.046773 000 RQ --- 18:146860 01:085811 --:------ 0005 002 0004
2024-06-18T16:31:17.098958 056 RP --- 01:085811 18:146860 --:------ 0005 004 0004BF00
2024-06-18T16:32:11.908633 056  I --- 04:070601 --:------ 01:085811 3150 002 0096
2024-06-18T16:32:40.030264 067  I --- 04:241806 --:------ 01:085811 12B0 003 070000
2024-06-18T16:32:42.771205 066  I --- 04:241806 --:------ 01:085811 12B0 003 070000
2024-06-18T16:33:40.036889 060  I --- 04:070607 --:------ 01:085811 3150 002 019C
2024-06-18T16:33:58.978282 057  I --- 01:085811 --:------ 01:085811 1F09 003 FF0816
2024-06-18T16:33:58.989947 057  I --- 01:085811 --:------ 01:085811 2309 021 0008980108980207080308980405DC050708070802
2024-06-18T16:33:59.011497 057  I --- 01:085811 --:------ 01:085811 30C9 021 0008660108C30208730308F204087105087D07084B
2024-06-18T16:34:53.972582 057  I --- 01:085811 --:------ 01:085811 3B00 002 FCC8
2024-06-18T16:37:26.115097 056  I --- 01:085811 --:------ 01:085811 1F09 003 FF0816
2024-06-18T16:37:26.192676 056  I --- 01:085811 --:------ 01:085811 2309 021 0008980108980207080308980405DC050708070802
2024-06-18T16:37:26.194327 057  I --- 01:085811 --:------ 01:085811 30C9 021 0008660108C30208730308F204087105087D07084B
2024-06-18T16:40:52.990270 054  I --- 01:085811 --:------ 01:085811 1F09 003 FF0816
2024-06-18T16:40:52.995449 055  I --- 01:085811 --:------ 01:085811 2309 021 0008980108980207080308980405DC050708070802
2024-06-18T16:40:53.008456 055  I --- 01:085811 --:------ 01:085811 30C9 021 0008660108C30208730308F204087105087D070847
2024-06-18T16:40:54.109388 069  I --- 04:164499 --:------ 01:085811 3150 002 0400
2024-06-18T16:41:04.045517 062  I --- 04:070605 --:------ 01:085811 3150 002 0200
2024-06-18T16:42:08.676647 049  I --- 04:136049 --:------ 04:136049 30C9 003 000900
2024-06-18T16:42:25.761848 045  I --- 04:136049 --:------ 01:085811 3150 002 0366
2024-06-18T16:43:00.434846 061  I --- 04:110701 --:------ 01:085811 12B0 003 050000
2024-06-18T16:43:03.954008 061  I --- 04:110701 --:------ 01:085811 12B0 003 050000

Don’t know what to do to fix this. Is anyone using the ramses_esp stick with MQTT integration here?

Probably not, you’re an early adopter! Btw, I gather you meant to share your MQTT password above.

Oh, an early adopter… :slight_smile:
Yeah, the password was not obfuscated, but my server is not available from external networks.

Some good news:
After plugging the ramses_esp into my HA system and using the serial port instead of MQTT connection I can see values including room names etc.
So I believe that there is an issue with the brand new MQTT adapter. I am happy to help track down this issue since I would like to place the ramses_esp away from my HA server for better network reception.

Hint: As mentioned I can see values from the evohome system in my MQTT client (sniffing the MQTT Mosquitto broker I set up within my HA instance).