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

Please test again with 0.21.4.

I fixed quite a few of these bugs.

21.4 throws an error when trying to set DHW temperature:

2022-09-29 20:50:00.497 ERROR (MainThread) [homeassistant.helpers.script.websocket_api_script] websocket_api script: Error executing script. Unexpected error for call_service at pos 1: EvohomeDHW.set_temperature() got an unexpected keyword argument 'entity_id'
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 447, in _async_step
    await getattr(self, handler)()
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 680, in _async_call_service_step
    await service_task
  File "/usr/src/homeassistant/homeassistant/core.py", line 1738, in async_call
    task.result()
  File "/usr/src/homeassistant/homeassistant/core.py", line 1775, in _execute_service
    await cast(Callable[[ServiceCall], Awaitable[None]], handler.job.target)(
  File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 204, in handle_service
    await service.entity_service_call(
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 676, in entity_service_call
    future.result()  # pop exception if have
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 931, in async_request_call
    await coro
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 713, in _handle_entity_call
    await result
  File "/usr/src/homeassistant/homeassistant/components/water_heater/__init__.py", line 370, in async_service_temperature_set
    await entity.async_set_temperature(**kwargs)
  File "/usr/src/homeassistant/homeassistant/components/water_heater/__init__.py", line 298, in async_set_temperature
    await self.hass.async_add_executor_job(
  File "/usr/local/lib/python3.10/concurrent/futures/thread.py", line 58, in run
    result = self.fn(*self.args, **self.kwargs)
TypeError: EvohomeDHW.set_temperature() got an unexpected keyword argument 'entity_id'
2022-09-29 20:50:00.503 ERROR (MainThread) [homeassistant.components.websocket_api.http.connection] [281473104997744] Error handling message: Unknown error (unknown_error)
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/websocket_api/decorators.py", line 27, in _handle_async_response
    await func(hass, connection, msg)
  File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 646, in handle_execute_script
    await script_obj.async_run(msg.get("variables"), context=context)
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 1513, in async_run
    await asyncio.shield(run.async_run())
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 405, in async_run
    await self._async_step(log_exceptions=False)
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 449, in _async_step
    self._handle_exception(
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 472, in _handle_exception
    raise exception
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 447, in _async_step
    await getattr(self, handler)()
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 680, in _async_call_service_step
    await service_task
  File "/usr/src/homeassistant/homeassistant/core.py", line 1738, in async_call
    task.result()
  File "/usr/src/homeassistant/homeassistant/core.py", line 1775, in _execute_service
    await cast(Callable[[ServiceCall], Awaitable[None]], handler.job.target)(
  File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 204, in handle_service
    await service.entity_service_call(
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 676, in entity_service_call
    future.result()  # pop exception if have
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 931, in async_request_call
    await coro
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 713, in _handle_entity_call
    await result
  File "/usr/src/homeassistant/homeassistant/components/water_heater/__init__.py", line 370, in async_service_temperature_set
    await entity.async_set_temperature(**kwargs)
  File "/usr/src/homeassistant/homeassistant/components/water_heater/__init__.py", line 298, in async_set_temperature
    await self.hass.async_add_executor_job(
  File "/usr/local/lib/python3.10/concurrent/futures/thread.py", line 58, in run
    result = self.fn(*self.args, **self.kwargs)
TypeError: EvohomeDHW.set_temperature() got an unexpected keyword argument 'entity_id'

I believe I now have a fix for this bug - will push that soon.

1 Like

No, the controller is in plane sight!

I do wonder why null would be passed a long?

Im sorry if this is stupid, but was support for multiple controllers added in latest beta? I was having this problem like a week ago.

I am continuously making changes to the master branch - not all of them are mentioned in changelogs.

If you install 0.21.x - the Candidate release, you can have a go, YMMV.

You are a genius, you bet I will. Thanks !

EDIT:
2nd controller in config still has ā€œunavailableā€ schema entity in HA.

My config:

ramses_cc:
  serial_port: /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A50285BI-if00-port0
  ramses_rf:
    # disable_discovery: true
    disable_sending: true
    # enable_eavesdrop: true
  scan_interval: 60
  restore_cache: false
  01:xxxxxx:
    zones:
      "00": {sensor: 01:xxxxxx}
  01:yyyyyy:
    zones:
      "01": {sensor: 01:yyyyyy}
  known_list:
    01:xxxxxx:
    01:yyyyyy:

EDIT2:
I meant/forgot to write 2nd controllerā€™s ā€œunavailableā€ schema entity

Also I tried to comment with no effect after:

  # ramses_rf:
    # disable_sending: true

EDIT3:
In log I still get this error:

Best practice is exactly one gateway (HGI) in the known_list: []

EDIT4:
I managed to fix HGI log error (by adding 18:076321). Now it added lots more errors and still no two schemas.
Will work on this more tommorow and report back with everything and those errors.

EDIT5:
I cant stop, but this is my last edit for today, before my brain meltsā€¦

In ā€œ18:076321 statusā€ entity, I see:

  1. both controllers
  2. BDR91 (i believe)
  3. all actuators and sensors from both controllers (i believe, need to check 1 by 1 = tommorow!)

But 2nd schema still ā€œunavailableā€. Does it need to be available? All I want is to see heat demands from all zones and in my mind I will kiss your *** (will also check tommorow if I already see those)

EDIT6:
OK, really this is now last.

In 18: status:

  1. Under schema, only 1 controller
  2. Under known_list, 2 controllers (both are actually in configs known_list
  3. Under known_list, I counted 1 electrical_relay + all actuators + all t87rf sensors (but none are actually in known_list)

So I believe:

  1. It is parsing bdr91+t87rf+hr92, eventhough they are not in actual configs known_list
  2. It is not parsing 2nd controller, eventhough it is in actual configs known_list+ramses_cc

When looking at the climate entity, the hvac_action is trigger by the heat_demand (ramses_cc/climate_heat.py at 4000f5b86477a3a5c2fad809a19a5f126c39b5c5 Ā· zxdavb/ramses_cc Ā· GitHub), on what heat_demand does it base it self or could that heat_demand be added to the climate entity?

climate.woonkamer when hvac_action is heating:

hvac_modes: auto, heat
min_temp: 5
max_temp: 35
target_temp_step: 0.1
preset_modes: none, temporary, permanent
current_temperature: 20.1
temperature: 20
hvac_action: heating
preset_mode: none
zone_idx: 00
heating_type: radiator_valve
mode: 
mode: follow_schedule
setpoint: 20

config: 
min_temp: 5
max_temp: 35
local_override: false
openwindow_function: false
multiroom_mode: false

schema: 
_name: Woonkamer
class: radiator_valve
sensor: '01:223036'
actuators:
  - '04:231772'
  - '04:231774'
  - '04:231776'

params: 
config:
  min_temp: 5
  max_temp: 35
  local_override: false
  openwindow_function: false
  multiroom_mode: false
mode:
  mode: follow_schedule
  setpoint: 20
name: Woonkamer

icon: mdi:radiator
friendly_name: Woonkamer
supported_features: 17

There should be a heat demand sensor per zone, something like sensor.01_201047_03_heat_demand

Thanks, learned something new! Fixed my dashboard.

Testing using 0.21.4, the command no longer gives an error, but I would expect an extra entry in the commands list of the remote after the call is finished. I didnā€™t see that, thereā€™s nothing in the logs either.

I also tried the new ramses_cc.learn_command service. Several things I noticed:

  1. The description of the timeout parameter is wrong (it mentions CO2 level).
  2. The timeout parameter should be marked as mandatory, the service fails if you donā€™t set the check box.
  3. It doesnā€™t seem to pass the command parameter to the underlying call, when I call the service using this yaml I get an error:
service: ramses_cc.learn_command
data:
  entity_id: remote.29_163515
  command: away
  timeout: 120

The error is:

websocket_api script: Error executing script. Unexpected error for call_service at pos 1: must be exactly one command to learn
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 447, in _async_step
    await getattr(self, handler)()
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 680, in _async_call_service_step
    await service_task
  File "/usr/src/homeassistant/homeassistant/core.py", line 1738, in async_call
    task.result()
  File "/usr/src/homeassistant/homeassistant/core.py", line 1775, in _execute_service
    await cast(Callable[[ServiceCall], Awaitable[None]], handler.job.target)(
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 769, in handle_service
    await service.entity_service_call(
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 676, in entity_service_call
    future.result()  # pop exception if have
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 931, in async_request_call
    await coro
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 713, in _handle_entity_call
    await result
  File "/config/custom_components/ramses_cc/remote.py", line 214, in svc_learn_command
    await self.async_learn_command(*args, **kwargs)
  File "/config/custom_components/ramses_cc/remote.py", line 140, in async_learn_command
    raise TypeError("must be exactly one command to learn")
TypeError: must be exactly one command to learn

Thank you very much for your response. I have another problem. In a zone I am getting heat demand 101%, which generates an error in the log file: Coding error: ValueError(Invalid result: 1.01 (0xCA) is > 1). My homeassistant configuration uses ssm-d2 as gateway interface. I have parallel a hgi80 interface using another rpi and Domoticz, which also displays 101% heat demand. I donā€™t understand, why this coding error occurs. Could you not floor heat demand > 1 to 1 without throwing an error message?

Thanks - fixed in 0.21.5

Tested the following on 0.21.5

RAMSES RF: Set the Configuration of a DHW - Only change the setpoint, Overrun and Differantial ivalues are not changed

RAMSES RF: Reset the Configuration of a DHW - reset the HW temprature back to default value (50), but overrun and differtial are not reset

Changing the DHW setpoint via Store HW entity via GUI now works

Did you re-release version v0.20.22i? i donā€™t see the j version and on github the i version is from 15 hours ago.
I redownloaded the i version but still no appliance_control after reboot and 10 min uptime.

on 0.21.5 and the BDR appliance_control is there now. did you do a restore_schema/state false?

upgrade now to 0.21.5 and appliance control is back.

Is there a way I can associate my UFH ā€˜circuitsā€™ with my ā€˜zonesā€™ via configuration? Extract of schema below:

system: 
  appliance_control: '10:124973' 
  orphans: [] 
  stored_hotwater: {} 
  underfloor_heating: '02:001786': 
    circuits: '00': zone_idx: '02' '01': zone_idx: '04' 
  zones: 
    '00': _name: Living Room class: radiator_valve sensor: '01:081046' actuators: - '04:254312' 
    '02': _name: Kitchen class: underfloor_heating sensor: '34:175809' actuators: [] 
    '03': _name: Master Bed class: radiator_valve sensor: '22:210057' actuators: - '04:254288' 
    '04': _name: Diner class: underfloor_heating sensor: '34:176169' actuators: []

@prescott (and some others)

For the master branch, I have just released 0.21.5.

This is a fragment of the schema I was using:

ramses_cc:

  01:145038:
    system:
      appliance_control: 10:048122

  01:136410:
    system:
      appliance_control: 13:273335
    stored_hotwater: {sensor: 07:123456}

As an aside: I spend a lot on hardware (youā€™ll see I have two controllers)ā€¦

If anyone has OTB, and would like to see the quality of the OpenTherm support improve, I am buying a new EMS gateway - if anyone would like to contribute to the cost, please PM me for a PayPal think. Thanks

Unfortunately, UFH support is suspect.

What are you hoping to achieve, besides a complete schema? (see: XY problem)

Currently the only benefit of full support that I can think of, would be to get (accurate) heat demand per UFH circuit (and thus per zone): a very useful feature thatā€™s currently missing.

If anyone has an unwanted UFH controller that would like to loan/donate to me, then Iā€™d be happy to receive it (it is the only piece of CH/DHW kit I donā€™t have). Even on ebay, used, theyā€™re just too expensive.

Anyone with UFH can support the effort by supplying packet logs and configuration files.

  • I would need 24-48h packet logs with heat demand (i.e. the UFH is on/active)

As an aside, the actuator device ID for an UFH circuit would be of the form: 02:001786_01, where the suffix is the circuit ID, for example:

  zones: 
    '00': sensor: '01:081046' actuators: ['04:254312'] 
    '02': sensor: '34:175809' actuators: ['02:001786_00'] 
    '03': sensor: '22:210057' actuators: ['04:254288'] 
    '04': sensor: '34:176169' actuators: ['02:001786_01']

IIRC, the above doesnā€™t work.

1 Like