/smarterzones

Smarter climate zone controller for Home Assistant. Built to enhance the capabilities of my Daikin Airbase system.

Primary LanguagePython

smarterzones

An appdaemon app to automatically control climate zones (on/off) only depending on localised temperatures. Supports multiple conditions being set before action is taken (ALL conditions must be met), and manual override with an input_boolean

Here is what every option means:

Minimum Configuration

Name Type Default Description
climatedevice string Required An entity_id within the climate domain.
exteriortempsensor string Required An entity_id with a temperature value as state
common_zone_switch string Optional If your AC requires a common zone, specify the switch entity here, and the zone will always be on. This is an alternate approach to leaving the zone out of the list
force_auto_fan bool False Whether the fan should be set to an auto mode.
zone object Required Zone objects that will be controlled

Zone Object

Name Type Default Description
name string Required Name of the zone
zone_switch string Required An entity_id within the switch domain.
local_tempsensor string Required An entity_id that has a temperature as its state.
target_temp string Required An entity_id that has a temperature or number as its state.
manual_override string Optional Entity_id of an input_boolean
coolingoffset object Optional Temperature offset object. If no object provided defaults to 0.3
heatingoffset object Optional Temperature offset object. If no object provided defaults to 0.3
conditions object Optional Condition object. Multiple conditions can be specified

Temperature Offset Object

Name Type Default Description
upperbound float Required Value above setpoint that local_tempsensor can reach. Required if coolingoffset or heatingoffset is specified. This will be the amount over the preferred temperature (ie. 20 degrees + upperbound)
lowerbound float Required Value below setpoint that local_tempsensor can reach. Required if coolingoffset or heatingoffset is specified. This will be the amount below the preferred temperature (ie. 20 degrees - lowerbound)

Condition Object

Name Type Default Description
entity string Required Entity_id of the entity to match. Required if conditions is specified.
targetstate string Required The state the entity must be in for the automtic control to work. Required if conditions is specified.

A typical example of the configuration in the apps.yaml file will look like

smarterzones:
  module: smarterzones
  class: smarterzones
  climatedevice: climate.daikin_ac
  common_zone_switch: switch.daikin_living
  exteriortempsensor: sensor.bellambi_temp
  force_auto_fan: true
  zones:
    - name: "A Smart Zone"
      zone_switch: switch.daikin_ac_a
      local_tempsensor: sensor.a_temp_sensor_sonoff
      manual_override: input_boolean.alexsmartzone
      target_temp: input_number.a_temp_setting
      coolingoffset:
        upperbound: 0.3
        lowerbound: 0.3
      heatingoffset:
        upperbound: 0.3
        lowerbound: 0.3
      conditions:
        - entity: binary_sensor.a_window_sensor_2
          targetstate: "off"
    - name: "B Smart Zone"
      zone_switch: switch.daikin_ac_b
      local_tempsensor: sensor.b_temperature_sensor
      manual_override: input_boolean.bridgetsmartzone
      target_temp: input_number.b_temp_setting
      coolingoffset:
        upperbound: 0.3
        lowerbound: 0.3
      heatingoffset:
        upperbound: 0.3
        lowerbound: 0.3
      conditions:
        - entity: binary_sensor.b_window_sensor_2
          targetstate: "off"
    - name: "Lounge Smart Zone"
      zone_switch: switch.daikin_ac_living
      local_tempsensor: sensor.lounge_average_temperature
      manual_override: input_boolean.loungesmartzone
      target_temp: input_number.lounge_room_temp
      coolingoffset:
        upperbound: 0.3
        lowerbound: 0.3
      heatingoffset:
        upperbound: 0.3
        lowerbound: 0.3
    - name: "Guest Bedroom"
      zone_switch: switch.daikin_ac_guest
      local_tempsensor: sensor.spare_bedroom_temperature_sensor
      manual_override: input_boolean.guestsmartzone
      target_temp: input_number.guest_room_temp
      coolingoffset:
        upperbound: 0.3
        lowerbound: 0.3
      heatingoffset:
        upperbound: 0.3
        lowerbound: 0.3
      conditions:
        - entity: binary_sensor.spare_room_window_sensor
          targetstate: "off"
        - entity: input_boolean.guest_mode
          targetstate: "on"
    - name: "Master Bedroom"
      zone_switch: switch.daikin_ac_master
      local_tempsensor: sensor.master_bedroom_temperature_2
      manual_override: input_boolean.mastersmartzone
      target_temp: input_number.master_bedroom
      coolingoffset:
        upperbound: 0.3
        lowerbound: 0.3
      heatingoffset:
        upperbound: 0.3
        lowerbound: 0.3
    - name: "Media Room"
      zone_switch: switch.daikin_ac_media
      local_tempsensor: sensor.media_room_temperature_sensor
      manual_override: input_boolean.mediasmartzone
      target_temp: input_number.media_room_temp
      coolingoffset:
        upperbound: 0.3
        lowerbound: 0.3
      heatingoffset:
        upperbound: 0.3
        lowerbound: 0.3
      conditions:
        - entity: remote.media_room
          targetstate: "on"