Dual mode smart thermostat with min-max temperature dial

Tags: #<Tag:0x00007f326f34ca30>

I have had a situation where I needed to control my floor heating and AC’s in several rooms and did not find a ready component that can handle them in one thermostat with one dual dial in the UI.
I’ve created a dual-mode smart thermostat in order to be able to control two separate devices (heater, cooler).
It’s based on the generic_thermostat component making use of Home Assistant’s built-in climate component so no front end hack was done.
This component can run in three modes: heat_cool, heat, cool.
If you don’t set the cooler_id it’s basically a generic thermostat, but if you set it the Lovelace card will support min and max temperatures.


The thermostat can consume door/windows (openings) entities so until a door or windows is open the thermostat will go idle.

Hope it helps someone else too. :slight_smile:

Example config

  - platform: dual_smart_thermostat
    name: Heat Cool Room
    heater: switch.heater
    cooler: switch.cooler
    target_sensor: sensor.room_temp
    openings: # <-- open door/window detection
      - binary_sensor.window1
      - binary_sensor.window2
    min_temp: 15
    max_temp: 28
    max_floor_temp: 28 # <-- floor overheat protection
    target_temp: 23
    target_temp_high: 26
    target_temp_low: 23
    cold_tolerance: 0.3
    hot_tolerance: 0
      seconds: 5
      minutes: 3
    initial_hvac_mode: "heat_cool"
    away_temp: 16
    precision: 0.1

Planned (smart) features:

  • :white_check_mark: optional floor temperature input and some logic based on it -> floor overheat protection
  • :white_check_mark: opening (window/door) sensor input and logic based on it
  • :o: outside temperature sensor input and logic based on it
  • :o: wind speed sensor input and logic based on it
1 Like