scheduler-component icon indicating copy to clipboard operation
scheduler-component copied to clipboard

Climate schedules don't work with Bosch BTH-RM230Z

Open klatka opened this issue 1 year ago • 16 comments

Checklist

  • [x] I checked for similar existing issues (both open and closed) before posting.
  • [x] I am running the latest version.

Expected behavior

I have some Bosch BTH-RM230Z connected via Zigbee2Mqtt. These are the attributes from one of the Bosch BTH-RM230Z:

hvac_modes: off, heat, cool
min_temp: 4.5
max_temp: 30
target_temp_step: 0.5
current_temperature: 21.7
target_temp_high: 30
target_temp_low: 20
hvac_action: idle
friendly_name: Bodenheizung Wohnbereich
supported_features: 386

I created a schedule to set the target temperature of this climate entity.

Actual behavior

When my schedule is going to be executed the climate does not change the target temperature.

Logger: homeassistant.core
Quelle: core.py:2781
Erstmals aufgetreten: 2. November 2024 um 23:14:01 (6 Vorkommnisse)
Zuletzt protokolliert: 00:00:00

Error executing service: <ServiceCall climate.set_temperature (c:01JBQHPPC2HZTZNQPGXN33279S): temperature=17.0, entity_id=['climate.bosch_room_thermostat_ii_1']>
Error executing service: <ServiceCall climate.set_temperature (c:01JBR2W0G158D4SH2NFT65ZVR5): temperature=21.0, entity_id=['climate.bosch_room_thermostat_ii_1']>
Error executing service: <ServiceCall climate.set_temperature (c:01JBSBQN0BDX2509YYPTD1F0V8): temperature=21.0, entity_id=['climate.bosch_room_thermostat_ii_1']>
Error executing service: <ServiceCall climate.set_temperature (c:01JBSFG7M2Y1Y0AVGQSDM33E1P): temperature=22.0, entity_id=['climate.bosch_room_thermostat_ii_1']>
Error executing service: <ServiceCall climate.set_temperature (c:01JBT43DC1G3BB5E1QWV5R5BKR): temperature=17.0, entity_id=['climate.bosch_room_thermostat_ii_1']>
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/core.py", line 2781, in _run_service_call_catch_exceptions
    await coro_or_task
  File "/usr/src/homeassistant/homeassistant/core.py", line 2804, in _execute_service
    return await target(service_call)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 996, in entity_service_call
    single_response = await _handle_entity_call(
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 1068, in _handle_entity_call
    result = await task
             ^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/climate/__init__.py", line 968, in async_service_temperature_set
    raise ServiceValidationError(
homeassistant.exceptions.ServiceValidationError: Set temperature action was used with the target temperature parameter but the entity does not support it

klatka avatar Nov 03 '24 23:11 klatka

I agree with the error Set temperature action was used with the target temperature parameter but the entity does not support it. Your climate entity needs to be set with a temperature range (so low + high limit). I would expect that scheduler card automatically shows such action, can you verify this?

nielsfaber avatar Nov 04 '24 07:11 nielsfaber

image Unfortunately, the card does not give me the option to set a range.

klatka avatar Nov 04 '24 08:11 klatka

I'm seeing the same here. I will have to investigate what causes this. Note that I noticed you are using scheduler card v3, changes will be made in v4 (which is currently in beta). In the mean time you can add or modify the built-in action, such that you get sliders for low and high values. Instructions are here: https://github.com/nielsfaber/scheduler-card?tab=readme-ov-file#actions.

nielsfaber avatar Nov 09 '24 07:11 nielsfaber

I have the same issue in v4.0.0b1 with the BTH-RM230Z - so the new version does not seem to change this behaviour.

(Possibly related? Wrapping the Thermostat in a BT Component works fine. https://github.com/KartoffelToby/better_thermostat/pull/1422 )

fealXX avatar Nov 19 '24 18:11 fealXX

Note that you can add the missing action to the card manually via yaml as well. Something like this should work (untested):

type: custom:scheduler-card
# rest of configuration
customize:
  climate.bosch_room_thermostat_ii_1:
    actions:       # add the custom actions
      - service: set_temperature
        service_data:
          hvac_mode: heat_cool
        variables:
          target_temp_low:
            name: "low setpoint"
            min: 4.5
            max: 30
            step: 0.5
            unit: '°C'
          target_temp_high:
            name: "high setpoint"
            min: 4.5
            max: 30
            step: 0.5
            unit: '°C'
        icon: 'hass:fire'
        name: "regulate[ to {target_temp_low}-{target_temp_high}]"

nielsfaber avatar Nov 19 '24 19:11 nielsfaber

@klatka, und funktioniert es ?

Branko069 avatar Nov 28 '24 12:11 Branko069

This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 7 days

github-actions[bot] avatar Dec 29 '24 01:12 github-actions[bot]

Bump

klatka avatar Jan 02 '25 14:01 klatka

This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 7 days

github-actions[bot] avatar Feb 02 '25 00:02 github-actions[bot]

Bump

klatka avatar Feb 08 '25 12:02 klatka

I believe the problem is with the climate device, not the scheduler integration. That's also why wrapping it in a Better Thermostat fixes it.

Your original device has hvac_modes heat, cool, off, with target_temp_high and target_temp_low and without temperature. That doesn't make sense. Climate entities that do not support hvac_mode heat_cool should have a temperature, and climate entities that have target_temp_high and target_temp_low should have hvac_mode heat_cool.

rugbyopera avatar Mar 04 '25 12:03 rugbyopera

Image The climate device supports heating and cooling. The attributes save both target temperatures, allowing me to switch between cooling and heating without specifying the corresponding temperature again.

I suspect that the component would also not allow me to create schedules if the hvac_mode heat_cool was available and set. The docs only mention that target_temp_high and target_temp_low are mandatory for hvac_mode heat_cool, but not that it is not allowed for other modes.

klatka avatar Mar 04 '25 13:03 klatka

Note that you can add the missing action to the card manually via yaml as well. Something like this should work (untested):

type: custom:scheduler-card
# rest of configuration
customize:
  climate.bosch_room_thermostat_ii_1:
    actions:       # add the custom actions
      - service: set_temperature
        service_data:
          hvac_mode: heat_cool
        variables:
          target_temp_low:
            name: "low setpoint"
            min: 4.5
            max: 30
            step: 0.5
            unit: '°C'
          target_temp_high:
            name: "high setpoint"
            min: 4.5
            max: 30
            step: 0.5
            unit: '°C'
        icon: 'hass:fire'
        name: "regulate[ to {target_temp_low}-{target_temp_high}]"

I have a thermostat (Pearl Thermostat 3157100) that also requires a low and high temperature to be set, and this template solved the same problem for me.

xlash123 avatar Mar 31 '25 00:03 xlash123

This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 7 days

github-actions[bot] avatar Apr 30 '25 01:04 github-actions[bot]

Bump

klatka avatar May 06 '25 17:05 klatka

This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 7 days

github-actions[bot] avatar Jul 01 '25 01:07 github-actions[bot]