Ian settled on the following as the device he would use in their home to monitor temperatures:

Aqara Temperature and Humidity Sensor, Zigbee, for Remote Monitoring and Home Automation

It states in the product description that an Aqara hub is required, it isn’t, the ConBee II communicates with it perfectly.

Temperature dashboards

On the Lovelace dashboard, Ian created 2 views, Climate/S and Climate/D for summary and detailed

Ian started by creating some ‘helpers’ in Home Assistant as shown below

Below is the Helpers Ian created, Helpers are basically an indicator that is either on/off or yes/no. The example below, named ‘Changed – Study’, is used to see if there has been any temperature change, any change of state then triggers an automation.

On the dashboard view titled Climate/S the card for installing a thermostat is shown below

Temperature difference

On the dashboard view Climate/D the ‘Study Temp from Target’ is used to determine if there has been a change to either the required temperature or the actual temperature

This value is calculated by creating a sensor in the ‘/config/configuration.yaml’ file, which is edited using ‘File editor’. ‘File editor’ is a Home Assistant add-on which needs to be downloaded and installed.

The actual code used above for the ‘sensor.study_temp_diff’ is shown below, the value is rounded to one decimal place

      study_current_temperature:
        device_class: temperature
        unit_of_measurement: '°C'
        friendly_name: 'Study Temperature'
        value_template: "{{ states.climate.study.attributes.current_temperature }}"
      study_target_temperature:
        device_class: temperature
        unit_of_measurement: '°C'
        friendly_name: 'Study Target'
        value_template: "{{ states.climate.study.attributes.temperature }}"        
      study_temp_diff:
        friendly_name: 'Study Temperature Difference'
        value_template: "{{ ((states.climate.study.attributes.current_temperature) | float - (states.climate.study.attributes.temperature) | float) |round(1) }}"         

Below is the automation used to toggle whether there has been a change to any study temperature. The toggle is merely used a visual indicator to show that something has changed.

alias: Climate - Changed Temp - Study
description: ''
trigger:
  - platform: state
    entity_id: sensor.study_temp_diff
condition: []
action:
  - service: input_boolean.toggle
    target:
      entity_id:
        - input_boolean.study_changed
    data: {}
mode: single

When you manually change the required temperature of one of the thermostats, as shown below,

First the state change from ‘off’, to keep things simple, it just causes a change to the input_boolean to ‘On’

alias: 'Climate - Boolean On - Study (HVAC) '
description: ''
trigger:
  - platform: state
    entity_id: climate.study
    from: 'off'
condition: []
action:
  - service: input_boolean.turn_on
    target:
      entity_id:
        - input_boolean.study_call_4_heat
    data: {}
mode: single

This state change can be monitored by more automation, Ian set his up to monitor change from off / on, as follows

Now when the thermostat changes, state to ‘Off’

alias: 'Climate - Boolean Off - Study (HVAC) '
description: ''
trigger:
  - platform: state
    entity_id: climate.study
    to: 'off'
condition: []
action:
  - service: input_boolean.turn_off
    target:
      entity_id: input_boolean.study_call_4_heat
    data: {}
mode: single

Setting a temperature by time

The following automation utilises time to set the required of any thermostat you wish, in this case set the required temperature to 11c at 21.30

alias: Climate - Set Thermostats to Low - 21:30
description: ''
trigger:
  - platform: time
    at: '21:30'
condition: []
action:
  - service: climate.set_temperature
    data:
      temperature: 11
    target:
      entity_id:
        - climate.kitchen
        - climate.study
mode: single

Displaying status on thermostat card

The automation below uses the input_boolean.study_changed as a trigger to detect temperature changes. If the actual temperature drops by more than 1c below the required temperature, then the HVAC status for the thermostat card it set to ‘HEAT’. Though the input_boolean.block_calls_4_heat must also set to ‘Off’, this boolean is whether the sitting-room window to the Catio is open or closed.

alias: Climate - Below Target - Study
description: ''
trigger:
  - platform: state
    entity_id: input_boolean.study_changed
condition:
  - condition: numeric_state
    entity_id: sensor.study_temp_diff
    below: '-1'
  - condition: state
    entity_id: input_boolean.block_calls_4_heat
    state: 'off'
action:
  - service: climate.set_hvac_mode
    data:
      hvac_mode: heat
    target:
      entity_id:
        - climate.study
mode: single

Below is the automation that will set the thermostat card to heating off, when the actual temperature is 0.5c above the required temperature.

alias: Climate - Above Target - Study
description: ''
trigger:
  - platform: state
    entity_id: input_boolean.study_changed
condition:
  - condition: numeric_state
    entity_id: sensor.study_temp_diff
    above: '0.5'
action:
  - service: climate.set_hvac_mode
    data:
      hvac_mode: 'off'
    target:
      entity_id:
        - climate.study
mode: single

Displaying Nest thermostat status

The entity below switch.on_off_light_11 is the Sonoff ZBMINI, which can be switched on and off by a relay controlled by the Nest thermostat. The automation looks for the ZBMINI changing from ‘Off’ to ‘On’, In addition, it ensures that the input_boolean.call_4_heat is not ‘On’. If the ZBMINI is on and the input_boolean.call_4_heat is off, then the ZBMINI has been switched on by the Nest thermostat.

alias: Climate - Boiler Required - Nest-4-Heat On
description: ''
trigger:
  - platform: state
    entity_id: switch.on_off_light_11
    from: 'off'
    to: 'on'
condition:
  - condition: not
    conditions:
      - condition: state
        entity_id: input_boolean.call_4_heat
        state: 'On'
action:
  - service: input_boolean.turn_on
    target:
      entity_id: input_boolean.nest_4_heat
    data: {}
mode: single

If ZBMINI changes from ‘On’ to ‘Off’ and the input_boolean.call_4_heat is not ‘On’, then the Nest thermostat must have switched the ZBMINI off.

alias: Climate - Boiler Required - Nest-4-Heat Off
description: ''
trigger:
  - platform: state
    entity_id: switch.on_off_light_11
    from: 'on'
    to: 'off'
condition:
  - condition: not
    conditions:
      - condition: state
        entity_id: input_boolean.call_4_heat
        state: 'On'
action:
  - service: input_boolean.turn_off
    target:
      entity_id: input_boolean.nest_4_heat
    data: {}
mode: single

Displaying other thermostat statuses and turning the boiler On and Off

alias: Climate - Boiler Required - Call-4-Heat On
description: ''
trigger:
  - platform: state
    entity_id: input_boolean.call_4_heat
    from: 'off'
    to: 'on'
condition:
  - condition: state
    entity_id: input_boolean.block_calls_4_heat
    state: 'off'
action:
  - service: switch.turn_on
    target:
      device_id: b3fe52693f55e9f6e5616c39694c9ea4
    data: {}
  - delay:
      hours: 0
      minutes: 0
      seconds: 3
      milliseconds: 0
  - service: input_boolean.turn_off
    target:
      entity_id: input_boolean.nest_4_heat
    data: {}
mode: single

If the input_boolean.call_4_heat changes from ‘On’ to ‘Off’ then turns off the switch device – b3fe52693f55e9f6e5616c39694c9ea4 which is the Sonoff ZBMINI controlling the boiler.

alias: Climate - Boiler Required - Call-4-Heat Off
description: ''
trigger:
  - platform: state
    entity_id: input_boolean.call_4_heat
    from: 'on'
    to: 'off'
condition: []
action:
  - service: switch.turn_off
    target:
      device_id: b3fe52693f55e9f6e5616c39694c9ea4
    data: {}
mode: single

When the status of Block_calls_4_heat changes

If the window to the Catio is opened, the input_boolean.block_calls_4_heat will change from ‘Off’ to ‘On’. On this status change, the HVAC status of the Home Assistant thermostats are changed to ‘Off’, turning the boiler off. There is a 3 second delay, then the input_boolean.nest_4_heat is turned ‘Off’, again turning the boiler off.

alias: Climate - If Block-4-Heat Swtiched on
description: ''
trigger:
  - platform: state
    entity_id: input_boolean.block_calls_4_heat
    from: 'off'
    to: 'on'
condition: []
action:
  - service: climate.set_hvac_mode
    data:
      hvac_mode: 'off'
    target:
      entity_id:
        - climate.kitchen
        - climate.study
  - delay:
      hours: 0
      minutes: 0
      seconds: 3
      milliseconds: 0
  - service: input_boolean.turn_off
    target:
      entity_id: input_boolean.nest_4_heat
    data: {}
mode: single

When the window is closed, the input_boolean.block_calls_4_heat changes from ‘On’ to ‘Off’. This triggers a 10 second delay, then the input_booleans for the thermostats are toggled, either from ‘On’ to Off’ or from ‘Off’ to ‘On’ forcing the Home Assistant automations to decide whether the boiler needs to be fired.

alias: Climate - If Block-4-Heat Swtiched off
description: ''
trigger:
  - platform: state
    entity_id: input_boolean.block_calls_4_heat
    from: 'on'
    to: 'off'
condition: []
action:
  - delay:
      hours: 0
      minutes: 0
      seconds: 10
      milliseconds: 0
  - service: input_boolean.toggle
    target:
      entity_id:
        - input_boolean.study_changed
        - input_boolean.kitchen_changed
    data: {}
mode: single

Next Steps

The next steps are to install either Zigbee or Z-Wave Thermostatic Radiators Valves (TRV). We will document our progress when we start the install.