The dual_smart_thermostat
is an enhanced verion of generic thermostat implemented in Home Assistant. It uses several sensors and dedicated switches connected to a heater and air conditioning under the hood. When in heater-cooler mode, if the measured temperature is cooler than the target low target_temp_low
temperature, the heater will be turned on off when the required low temperature is reached, if the measured temperature is hotter than the target high temperature, the cooling (air conditioning) will be turned on and turned off when the required high target_temp_high
temperature is reached. When in heater mode, if the measured temperature is cooler than the target temperature, the heater will be turned on and turned off when the required temperature is reached. When in cooling mode, if the measured temperature is hotter than the target temperature, the cooler (air conditioning) will be turned on and turned off when required high temperature is reached.
The dual_smart_thermostat
can turn off heating or cooling if a window or door is opened and turn heating or cooling back on when the door or window is closed to save energy.
The openings
configuration variable accepts a list of openings.
The dual_smart_thermostat
can turn off if the floor heating reaches tha maximum allowed temperature you define in order to protect the floor from overheating and damage.
To enable this protection you need to set two variables:
floor_sensor: sensor.floor_temp
max_floor_temp: 28
# Example configuration.yaml entry
climate:
- platform: dual_smart_thermostat
name: Study
heater: switch.study_heater
cooler: switch.study_cooler
openings:
- sensor.window1
- sensor.window2
target_sensor: sensor.study_temperature
(required) (string) Name of thermostat
default: Dual Smart
(required) (string) "entity_id
for heater switch, must be a toggle device. Becomes air conditioning switch when ac_mode
is set to true
"
(optional) (string) "entity_id
for cooler switch, must be a toggle device."
(required) (string) "entity_id
for a temperature sensor, target_sensor.state must be temperature."
(optional) (string) "entity_id
for the foor temperature sensor, floor_sensor.state must be temperature."
(optional) (list) "list of opening entity_id
's for detecting open widows or doors that will idle the termostat until any of them are open"
(optional) (float)
default: 7
(optional) (float)
default: 35
(optional) (float)
default: 28
(optional) (float) Set initial target temperature. If this variable is not set, it will retain the target temperature set before restart if available.
(optional) (float) Set initial target low temperature. If this variable is not set, it will retain the target low temperature set before restart if available.
(optional) (float) Set initial target high temperature. If this variable is not set, it will retain the target high temperature set before restart if available.
(optional) (boolean) Set the switch specified in the heater
option to be treated as a cooling device instead of a heating device. This parameter will be ignored if cooler
entity is defined.
default: false
(optional) (boolean) If variable target_temp_low
and target_temp_high
are not set, this parameter must be set to true to enable the heat_cool
mode.
default: false
(optional) (time, integer) Set a minimum amount of time that the switch specified in the heater and/or cooler option must be in its current state prior to being switched either off or on.
(optional) (float) Set a minimum amount of difference between the temperature read by the sensor specified in the target_sensor option and the target temperature that must change prior to being switched on. For example, if the target temperature is 25 and the tolerance is 0.5 the heater will start when the sensor equals or goes below 24.5.
default: 0.3
(optional) (float) Set a minimum amount of difference between the temperature read by the sensor specified in the target_sensor option and the target temperature that must change prior to being switched off. For example, if the target temperature is 25 and the tolerance is 0.5 the heater will stop when the sensor equals or goes above 25.5.
default: 0.3
(optional) (time, integer) Set a keep-alive interval. If set, the switch specified in the heater and/or cooler option will be triggered every time the interval elapses. Use with heaters and A/C units that shut off if they don't receive a signal from their remote for a while. Use also with switches that might lose state. The keep-alive call is done with the current valid climate integration state (either on or off).
(optional) (string) Set the initial HVAC mode. Valid values are off
, heat
, cool
or heat_cool
. Value has to be double quoted. If this parameter is not set, it is preferable to set a keep_alive value. This is helpful to align any discrepancies between dual_smart_thermostat heater and cooler state.
NOTE! If this is set, the saved state will not be restored after HA retstarts.
(optional) (list) Set the temperatures used by preset_mode: away
. If this is not specified, the preset mode feature will not be available.
Possible values are:
temperature: <value>
The preset temperature to use in heat
or cool
mode (float)
target_temp_low: <value>
The preset low temperature to use in heat_cool
mode (float)
target_temp_high: <value>
The preset high temperature to use in heat_cool
mode (float)
(optional) (list) Set the temperature used by preset_mode: eco
. If this is not specified, the preset mode feature will not be available.
Possible values are:
temperature: <value>
The preset temperature to use in heat
or cool
mode (float)
target_temp_low: <value>
The preset low temperature to use in heat_cool
mode (float)
target_temp_high: <value>
The preset high temperature to use in heat_cool
mode (float)
(optional) (list) Set the temperature used by preset_mode: home
. If this is not specified, the preset mode feature will not be available.
Possible values are:
temperature: <value>
The preset temperature to use in heat
or cool
mode (float)
target_temp_low: <value>
The preset low temperature to use in heat_cool
mode (float)
target_temp_high: <value>
The preset high temperature to use in heat_cool
mode (float)
(optional) (list) Set the temperature used by preset_mode: comfort
. If this is not specified, the preset mode feature will not be available.
Possible values are:
temperature: <value>
The preset temperature to use in heat
or cool
mode (float)
target_temp_low: <value>
The preset low temperature to use in heat_cool
mode (float)
target_temp_high: <value>
The preset high temperature to use in heat_cool
mode (float)
(optional) (list) Set the temperature used by preset_mode: Anti Freeze
. If this is not specified, the preset mode feature will not be available.
Possible values are:
temperature: <value>
The preset temperature to use in heat
or cool
mode (float)
target_temp_low: <value>
The preset low temperature to use in heat_cool
mode (float)
target_temp_high: <value>
The preset high temperature to use in heat_cool
mode (float)
(optional) (float) The desired precision for this device. Can be used to match your actual thermostat's precision. Supported values are 0.1
, 0.5
and 1.0
.
default: 0.5
for Celsius and 1.0
for Fahrenheit.
(optional) (float) The desired step size for setting the target temperature. Supported values are 0.1
, 0.5
and 1.0
.
default: Value used for precision
Installation is via the Home Assistant Community Store (HACS), which is the best place to get third-party integrations for Home Assistant. Once you have HACS set up, simply search the Integrations
section for Dual Smart Thermostat.
climate:
- platform: dual_smart_thermostat
name: Study
heater: switch.study_heater
cooler: switch.study_cooler
target_sensor: sensor.study_temperature
floor_sensor: sensor.floor_temp
max_floor_temp: 28
openings:
- sensor.window1
- sensor.window2
min_temp: 10
max_temp: 28
ac_mode: false
target_temp: 17
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: "off" # hvac mode will reset to this value after restart
away: # this preset will be available for all hvac modes
temperature: 13
target_temp_low: 12
target_temp_high: 14
home: # this preset will be available only for heat or cool hvac mode
temperature: 21
precision: 0.1
target_temp_step: 0.5
I am happy tp help the Home Assistant community but I do it in my free time at the cost of spending less time with my family. Feel free to motivate me and appreciate my sacrifice by donating: