Climate schedules don't work with Bosch BTH-RM230Z
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
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?
Unfortunately, the card does not give me the option to set a range.
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.
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 )
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}]"
@klatka, und funktioniert es ?
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
Bump
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
Bump
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.
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.
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.
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
Bump
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