Skip to content

The `dual_smart_thermostat` is an enhaced 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.

License

Notifications You must be signed in to change notification settings

alvarocarrera/ha-dual-smart-thermostat

 
 

Repository files navigation

Home Assistant Dual Smart Thermostat component

hacs_badge Release Donate

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.

Openings

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.

Floor heating temperature cap

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

Configuration

# 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

Configuration variables

name

(required) (string) Name of thermostat

default: Dual Smart

heater

(required) (string) "entity_id for heater switch, must be a toggle device. Becomes air conditioning switch when ac_mode is set to true"

cooler

(optional) (string) "entity_id for cooler switch, must be a toggle device."

target_sensor

(required) (string) "entity_id for a temperature sensor, target_sensor.state must be temperature."

floor_sensor

(optional) (string) "entity_id for the foor temperature sensor, floor_sensor.state must be temperature."

openings

(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"

min_temp

(optional) (float)

default: 7

max_temp

(optional) (float)

default: 35

max_floor_temp

(optional) (float)

default: 28

target_temp

(optional) (float) Set initial target temperature. If this variable is not set, it will retain the target temperature set before restart if available.

target_temp_low

(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.

target_temp_high

(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.

ac_mode

(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

heat_cool_mode

(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

min_cycle_duration

(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.

cold_tolerance

(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

hot_tolerance

(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

keep_alive

(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).

initial_hvac_mode

(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.

away

(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)

eco

(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)

home

(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)

comfort

(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)

anti_freeze

(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)

precision

(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.

target_temp_step

(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

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.

Full configuration example

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

Donate

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:

Donate coffee

About

The `dual_smart_thermostat` is an enhaced 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.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 98.2%
  • Shell 1.4%
  • Other 0.4%