Dual mode smart thermostat with min-max temperature dial

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.

https://github.com/swingerman/ha-dual-smart-thermostat

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

climate:
  - 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
    min_cycle_duration:
      seconds: 5
    keep_alive:
      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
2 Likes

anyone been able to use this with Ecobee? I would love to not have to rely on the way Ecobee does their configuration, specifically the requirement for a 5 degree window…

I really want to use this, but after downloading it in HACS I cannot find it under integrations.

Any suggestions?

You gonna need to add it using yaml as per the examples. :wink:

So I have set this up to control my Heat and AC. In Heat mode everything works as I would expect (still too cold to test AC). But I was really hoping to use the Automatic Heat/Cool Mode. However when I put it in that mode with target_temp_low: 20.5c and with cold_tolerance: 0.5 the furnace kicks in at 20c but then turns right back off at 20.1c instead of heating up past 20.5 to 20.8. Which means it just keeps turning the furnace on and off trying to maintain that 0.1c

Is this how its supposed to work? do I have something misconfigured. I am posting my yaml below, not sure if I am doing that right though so may have to edit.

My config:

  - platform: dual_smart_thermostat
    name: Bedrooms HVAC
    heater: switch.furnace_controller_v2_upstairs_furnace_heat_relay_2
    cooler: switch.furnace_controller_v2_air_conditioner_relay4
    target_sensor: sensor.upstairs_avg_temp
    heat_cool_mode: true
    min_temp: 17
    max_temp: 30
    ac_mode: false
    cold_tolerance: 0.5
    hot_tolerance: 0.3
    min_cycle_duration:
       minutes: 2
    precision: 0.1

Great component :slight_smile:

Can it support 2 stage heating? I control 2 relay for heating, stage 1 and stage 2. Stage one will kick in only if it needs a bit of heat, and if the difference is too big, stage 2 kicks in.

Thanks
Eric

Can you set it to work only at night time for heater?

That should be handled by automation. Set sleep mode temperatures and activate sleep mode with automation.

Hi Swingerman,
I have a guestion, in the last update v0.9.5 dual thermostat release notes is stated that the application has the feature hvac action reason. Can you explain how i can use this feature maybe by way of an example. Thanks in advance.

Sure.

It’s a state attribute. Thermostat cards will not automatically pick it up, but you can display it with some mod cards or a combination of cards.

The repository’s readme has all the possible values of what the integration sets and what can be set using the service.

here are the values:

HVAC Action Reason Internal values

Value Description
none No action reason
target_temp_not_reached The target temperature has not been reached
target_temp_reached The target temperature has been reached
misconfiguration The thermostat is misconfigured
opening The thermostat is idle because an opening is open
limit The thermostat is idle because the floor temperature is at the limit
overheat The thermostat is idle because the floor temperature is too high

HVAC Action Reason External values

Value Description
none No action reason
presence the last HVAc action was triggered by presence
schedule the last HVAc action was triggered by schedule
emergency the last HVAc action was triggered by emergency
malfunction the last HVAc action was triggered by malfunction

Full description

Hi, if its not too much, can you give a more details if you use de mod card possibility?

You could use Mushroom Template Card to display this information.
You can create a vertical stack card and put your thermostat card and the mushroom template card.

Hi Miklos,

I’m new to this kind of things, can you share an example in editor mode of a mushroom template card with what the configuration should be for Hvac_action_reason opening feature?

Thx in advance

Solved.

Hi - have a problem with this extension.

Have added section in configuration yaml as below (yes - heater and cooler is same virtual relay that sends request to main HVAC unit to turn on):

 climate:
   - platform: dual_smart_thermostat
     name: Salon
     heater: switch.hvac_req_z1_salon
     cooler: switch.hvac_req_z1_salon
     target_sensor: sensor.nspusteather_temperature
     heat_cool_mode: true
     min_temp: 10
     max_temp: 28
     target_temp: 17
     target_temp_high: 23
     target_temp_low: 19
     cold_tolerance: 1
     hot_tolerance: 2
     min_cycle_duration:
       minutes: 20
     initial_hvac_mode: "off"
     eco:
       target_temp_low: 22
       target_temp_high: 18
     comfort:
       target_temp_low: 21
       target_temp_high: 23
     sleep:
       target_temp_low: 19
       target_temp_high: 19

then saved file & reloaded config (with HA reboot)

After that I am trying to add thermostat tile but it goes only to :

So no Heat/cool button - only heater mode - what is wrong?

I have the same problem but I have no idea about how to solve it.
It doesn’t like the same name for heater and cooler relay.
Try to put a fake name for cooler OR heater relay, you will see all buttons (Heat/Cool etc).
Problem is I have a floor heater and cooler controlled by the same relay (like you), so i cannot put a different name (Hot water in winter and cold water in summer).
Any help is apreciated.