How to Bosch Room Thermostat II

Hi all

Needed some time to integrate my Bosch Room Thermostat II in a usefull way.
Some hints for others.

My Hardware

  • Bosch Room Thermostat II
  • Bosch Smart Home Controller II
  • Bosch Smart Home App on iPhone

My configuration for presence

  • Presence group, which includes all members of the house
  • An input_select.home_away_holidays (home, away, holidays)
  • Automations, which change the input_select, triggered by changes in the presence group

Desired behavior

  • The target temperature of the thermostat should change, in dependence of home / away / holidays

Implementation Steps

  • Installed the integration for Bosch SHC.
  • Because the Bosch SHC integration does not (yet) support the Room Thermostat II, I installed the HACS component. A lot of thanks to @tschamm for his great work.
  • This allows a service call of bosch_shc.trigger_scenario and to change the desired temperature without messing up. Before I was experimenting with Better Thermostat, which changed my Bosch Thermostat in unwanted ways.

Detailed steps for triggering the scenarios

  • In the Smart Home App for Bosch I did set up three heating schedules (for home, away, holidays). E. g. holidays will be at a temperature of 16.
  • Then I did se tup in the Smart Home App for Bosch three scenarios, each selects the corresponding heating schedule. E. g. scenario holiday selects heating schedule holiday.
  • Reload the Bosch SHC in Home Assistant
  • Restart Home Assistant
  • Controll the entities of the Bosch SHC integration. The defined scenarios in the Bosch App are now available as entities. Example: event.scenario_holidays (entity id)
  • Setup an automation using the service bosch_shc.trigger_scenario. I needed some time to find out the correct syntax.
trigger:
  - platform: state
    entity_id:
      - input_select.home_away_holiday
    to: Holiday
condition: []
action:
  - service: bosch_shc.trigger_scenario
    data:
      name: Holiday
  • Important step here was the name (Holiday) in the service trigger. First I thought, it has to be the name of the generated entities (event.scenario_holidays, see above). But it has to be the name given in the Smart Home App for Bosch.
  • I added three automations (for home, away, holidays)

Result

  • If I change my input_select.home_away_holiday (by automation or manually), Home Assistant changes my heating schedule on the Bosch Room Thermostat II.

Hi, thanks for the info!
I’d like to ask two questions,if I may:

  • does the implementation you’ve described allow to collect the data from the Thermostats? Like the desired temperature, actual temperature, humidity, etc? I’m currently more interested in the data collection rather than control.

  • Do you know if there is any work being done in the official implementation of the Bosch Smart Home II device?

Thanks!

For each physical device, the integration generates:

Climate entity with state (auto, heat, off) and these attributes (examples):

hvac_modes: auto, heat, off
min_temp: 5
max_temp: 30
target_temp_step: 0.5
preset_modes: none, eco
current_temperature: 22.5
temperature: 21
preset_mode: none
friendly_name: Bosch Bad
supported_features: 17

whereas temperature is the target temperature.

A temperature sensor with state (current temperature) and these attributes:

state_class: measurement
unit_of_measurement: °C
device_class: temperature
friendly_name: Thermostat Bad Temperature

A humidity sensor with state (humidity) and these attributes:

state_class: measurement
unit_of_measurement: %
device_class: humidity
friendly_name: Thermostat Bad Humidity

Additional entities:

  • A switch for child lock
  • A number for offset

Example statistic of the climate entity
image

Translation for graphic: Ist-Temperatur = actual temperature, Soll-Temperatur = desired temperature

Example of humidity sensor
image

Example of temperature sensor
image

Desired temperature / target temperature
There is no direct sensor available for the target temperature. But you can easily build your own. For example I am tracking, when the valve is open with this template:

{% set target_temp = state_attr('climate.room_climate_bad', 'temperature') %}
{% set current_temp = state_attr('climate.room_climate_bad', 'current_temperature') %}
{% if target_temp > current_temp %}on
{% else %}off
{% endif %}

Meaning you can derive your own sensor for the target temperature with state_attr('climate.room_climate_bad', 'temperature').

Regarding information about the official implementation, I am the wrong source.