mirror of
https://github.com/CeeWeasel/fresh-home.git
synced 2026-08-09 10:30:14 -04:00
298 lines
12 KiB
YAML
298 lines
12 KiB
YAML
alias: Automatic Fan Speeds
|
|
id: automation_fan_speeds
|
|
mode: parallel
|
|
max: 4
|
|
|
|
triggers:
|
|
- trigger: homeassistant
|
|
event: start
|
|
id: start
|
|
|
|
- trigger: numeric_state
|
|
entity_id: sensor.girls_room_multisensor_air_temperature
|
|
id: girls_room_off
|
|
below: input_number.girls_room_fan_low_temp
|
|
|
|
- trigger: numeric_state
|
|
entity_id: sensor.girls_room_multisensor_air_temperature
|
|
id: girls_room_low
|
|
above: input_number.girls_room_fan_low_temp
|
|
below: input_number.girls_room_fan_medium_temp
|
|
|
|
- trigger: numeric_state
|
|
entity_id: sensor.girls_room_multisensor_air_temperature
|
|
id: girls_room_mid
|
|
above: input_number.girls_room_fan_medium_temp
|
|
below: input_number.girls_room_fan_high_temp
|
|
|
|
- trigger: numeric_state
|
|
entity_id: sensor.girls_room_multisensor_air_temperature
|
|
id: girls_room_high
|
|
above: input_number.girls_room_fan_high_temp
|
|
|
|
- trigger: numeric_state
|
|
entity_id: sensor.master_bedroom_multisensor_air_temperature
|
|
below: input_number.master_bedroom_fan_low_temp
|
|
id: mbr_off
|
|
|
|
- trigger: numeric_state
|
|
entity_id: sensor.master_bedroom_multisensor_air_temperature
|
|
above: input_number.master_bedroom_fan_low_temp
|
|
below: input_number.master_bedroom_fan_medium_temp
|
|
id: mbr_low
|
|
|
|
- trigger: numeric_state
|
|
entity_id: sensor.master_bedroom_multisensor_air_temperature
|
|
above: input_number.master_bedroom_fan_medium_temp
|
|
below: input_number.master_bedroom_fan_high_temp
|
|
id: mbr_med
|
|
|
|
- trigger: numeric_state
|
|
entity_id: sensor.master_bedroom_multisensor_air_temperature
|
|
above: input_number.master_bedroom_fan_high_temp
|
|
id: mbr_high
|
|
|
|
- trigger: state
|
|
entity_id: input_boolean.girls_room_occupied
|
|
|
|
- trigger: state
|
|
entity_id: input_boolean.bedroom_occupied
|
|
|
|
- trigger: state
|
|
entity_id: input_boolean.girls_room_asleep
|
|
|
|
- trigger: state
|
|
entity_id: input_boolean.master_bedroom_asleep
|
|
|
|
# Chose not to use conditions so fan speeds will be updated regardless of trigger
|
|
|
|
condition:
|
|
- alias: "Only turn the fans on if it's warm enough outside"
|
|
condition: template
|
|
value_template: "{{ (states('sensor.front_yard_thermostat_temperature') | float(default=0) > 60.0) or is_state('group.ceiling_fans','on') }}"
|
|
|
|
action:
|
|
- alias: "Calculate fan speeds"
|
|
variables:
|
|
girls_room_fan_speed: "{{((states('sensor.girls_room_multisensor_air_temperature') | float(default=0) - states('input_number.girls_room_fan_min_temp') | float(default=0))/(states('input_number.girls_room_fan_high_temp') | float(default=1) - states('input_number.girls_room_fan_min_temp') | float(default=0)) * 100)|int(default=0) }}"
|
|
master_bedroom_fan_speed: "{{((states('sensor.master_bedroom_multisensor_air_temperature') | float(default=0) - states('input_number.master_bedroom_fan_min_temp') | float(default=0))/(states('input_number.master_bedroom_fan_high_temp') | float(default=1) - states('input_number.master_bedroom_fan_min_temp') | float(default=0)) * 100)|int(default=0) }}"
|
|
|
|
# - action: logbook.log
|
|
# data_template:
|
|
# name: Automatic Fan Speeds
|
|
# entity_id: automation.automatic_fan_speeds
|
|
# message: >
|
|
# Outdoor Air Temp: {{states('sensor.front_yard_thermostat_temperature') | float(default=0)}}
|
|
# Girls Room Air Temp: {{states('sensor.girls_room_multisensor_air_temperature') | float(default=0)}}
|
|
# Girls Room Min Temp: {{states('input_number.girls_room_fan_min_temp') | float(default=0)}}
|
|
# Girls Room High Temp: {{states('input_number.girls_room_fan_high_temp') | float(default=0)}}
|
|
# Girls Room Calculated: {{ girls_room_fan_speed }}
|
|
# Master Bedroom Air Temp: {{states('sensor.master_bedroom_multisensor_air_temperature') | float(default=0)}}
|
|
# Master Bedroom Min Temp: {{states('input_number.master_bedroom_fan_min_temp') | float(default=0)}}
|
|
# Master Bedroom High Temp: {{states('input_number.master_bedroom_fan_high_temp') | float(default=0)}}
|
|
# Master Bedroom Calculated: {{ master_bedroom_fan_speed }}
|
|
|
|
- alias: "Set Girls Room fan speed"
|
|
choose:
|
|
- conditions:
|
|
- alias: "It is too cold outside to start the girls_room fan"
|
|
condition: numeric_state
|
|
entity_id: sensor.girls_room_multisensor_air_temperature
|
|
below: input_number.girls_room_fan_min_temp
|
|
- alias: "Girls Room fan on"
|
|
condition: state
|
|
entity_id: fan.girls_room_fan_light_switch_fan
|
|
state: "on"
|
|
sequence:
|
|
- alias: "Turn girls_room fan off because it is too cold outside"
|
|
action: fan.turn_off
|
|
target:
|
|
entity_id: fan.girls_room_fan_light_switch_fan
|
|
- conditions:
|
|
- alias: "Nusery not occupied and window is closed"
|
|
condition: state
|
|
entity_id: input_boolean.girls_room_occupied
|
|
state: "off"
|
|
- alias: "Nusery not asleep"
|
|
condition: state
|
|
entity_id: input_boolean.girls_room_asleep
|
|
state: "off"
|
|
- alias: "Girls Room fan on"
|
|
condition: state
|
|
entity_id: fan.girls_room_fan_light_switch_fan
|
|
state: "on"
|
|
- alias: "Girls Room window is closed"
|
|
condition: state
|
|
entity_id: binary_sensor.girls_room_window_contact
|
|
state: "off"
|
|
sequence:
|
|
- alias: "Turn girls_room fan off because room isn't occupied"
|
|
action: fan.turn_off
|
|
target:
|
|
entity_id: fan.girls_room_fan_light_switch_fan
|
|
- conditions:
|
|
- alias: "Girls Room below low"
|
|
condition: template
|
|
value_template: "{{states('sensor.girls_room_multisensor_air_temperature') | float(default=0) <= states('input_number.girls_room_fan_min_temp') | float(default=0)}}"
|
|
|
|
- alias: "Girls Room fan on"
|
|
condition: state
|
|
entity_id: fan.girls_room_fan_light_switch_fan
|
|
state: "on"
|
|
sequence:
|
|
- alias: "Turn girls_room fan off because the room is too cool"
|
|
action: fan.turn_off
|
|
target:
|
|
entity_id: fan.girls_room_fan_light_switch_fan
|
|
- conditions:
|
|
- alias: "Girls Room is occupied"
|
|
condition: state
|
|
entity_id: input_boolean.girls_room_occupied
|
|
state: "on"
|
|
- alias: "Nusery above high"
|
|
condition: template
|
|
value_template: "{{states('sensor.girls_room_multisensor_air_temperature') | float(default=0) > states('input_number.girls_room_fan_high_temp') | float(default=0)}}"
|
|
|
|
sequence:
|
|
- alias: "Turn girls_room fan on to percentage speed"
|
|
action: fan.set_percentage
|
|
target:
|
|
entity_id: fan.girls_room_fan_light_switch_fan
|
|
data:
|
|
percentage: 100
|
|
|
|
- conditions:
|
|
- alias: "Girls Room is occupied"
|
|
condition: state
|
|
entity_id: input_boolean.girls_room_occupied
|
|
state: "on"
|
|
- alias: "Nusery above medium"
|
|
condition: template
|
|
value_template: "{{states('sensor.girls_room_multisensor_air_temperature') | float(default=0) > states('input_number.girls_room_fan_medium_temp') | float(default=0)}}"
|
|
|
|
sequence:
|
|
- alias: "Turn girls_room fan on to percentage speed"
|
|
action: fan.set_percentage
|
|
target:
|
|
entity_id: fan.girls_room_fan_light_switch_fan
|
|
data:
|
|
percentage: 66
|
|
|
|
- conditions:
|
|
- alias: "Girls Room is occupied"
|
|
condition: state
|
|
entity_id: input_boolean.girls_room_occupied
|
|
state: "on"
|
|
- alias: "Nusery above low"
|
|
condition: template
|
|
value_template: "{{states('sensor.girls_room_multisensor_air_temperature') | float(default=0) > states('input_number.girls_room_fan_low_temp') | float(default=0)}}"
|
|
|
|
sequence:
|
|
- alias: "Turn girls_room fan on to percentage speed"
|
|
action: fan.set_percentage
|
|
target:
|
|
entity_id: fan.girls_room_fan_light_switch_fan
|
|
data:
|
|
percentage: 33
|
|
|
|
- alias: "Set Master Bedroom fan speed"
|
|
choose:
|
|
- conditions:
|
|
- alias: "It is too cold outside, so turn off the master bedroom fan"
|
|
condition: numeric_state
|
|
entity_id: sensor.master_bedroom_multisensor_air_temperature
|
|
below: input_number.master_bedroom_fan_min_temp
|
|
sequence:
|
|
- alias: "Turn master bedroom fan off because it is too cold outside"
|
|
action: fan.turn_off
|
|
target:
|
|
entity_id: fan.master_bedroom_fan_light_switch_fan
|
|
- conditions:
|
|
- alias: "Master Bedroom not occupied"
|
|
condition: state
|
|
entity_id: input_boolean.bedroom_occupied
|
|
state: "off"
|
|
- alias: "Master Bedroom not asleep"
|
|
condition: state
|
|
entity_id: input_boolean.master_bedroom_asleep
|
|
state: "off"
|
|
- alias: "Master Bedroom fan on"
|
|
condition: state
|
|
entity_id: fan.master_bedroom_fan_light_switch_fan
|
|
state: "on"
|
|
- alias: "Master bedroom window is closed"
|
|
condition: state
|
|
entity_id: binary_sensor.master_bedroom_window_contact
|
|
state: "off"
|
|
sequence:
|
|
- alias: "Turn master bedroom fan off because room isn't occupied"
|
|
action: fan.turn_off
|
|
target:
|
|
entity_id: fan.master_bedroom_fan_light_switch_fan
|
|
|
|
- conditions:
|
|
- alias: "Master Bedroom below low"
|
|
condition: template
|
|
value_template: "{{states('sensor.master_bedroom_multisensor_air_temperature') | float(default=0) <= states('input_number.master_bedroom_fan_min_temp') | float(default=0)}}"
|
|
|
|
- alias: "Master Bedroom fan on"
|
|
condition: state
|
|
entity_id: fan.master_bedroom_fan_light_switch_fan
|
|
state: "on"
|
|
sequence:
|
|
- alias: "Turn master bedroom fan off because the room is too cool"
|
|
action: fan.turn_off
|
|
target:
|
|
entity_id: fan.master_bedroom_fan_light_switch_fan
|
|
|
|
- conditions:
|
|
- alias: "Master Bedroom is occupied"
|
|
condition: state
|
|
entity_id: input_boolean.bedroom_occupied
|
|
state: "on"
|
|
- alias: "Master Bedroom above high"
|
|
condition: template
|
|
value_template: "{{states('sensor.master_bedroom_multisensor_air_temperature') | float(default=0) > states('input_number.master_bedroom_fan_high_temp') | float(default=0)}}"
|
|
|
|
sequence:
|
|
- alias: "Turn master bedroom fan on to percentage speed"
|
|
action: fan.set_percentage
|
|
target:
|
|
entity_id: fan.master_bedroom_fan_light_switch_fan
|
|
data:
|
|
percentage: 100
|
|
|
|
- conditions:
|
|
- alias: "Master Bedroom is occupied"
|
|
condition: state
|
|
entity_id: input_boolean.bedroom_occupied
|
|
state: "on"
|
|
- alias: "Master Bedroom above medium"
|
|
condition: template
|
|
value_template: "{{states('sensor.master_bedroom_multisensor_air_temperature') | float(default=0) > states('input_number.master_bedroom_fan_medium_temp') | float(default=0)}}"
|
|
|
|
sequence:
|
|
- alias: "Turn master bedroom fan on to percentage speed"
|
|
action: fan.set_percentage
|
|
target:
|
|
entity_id: fan.master_bedroom_fan_light_switch_fan
|
|
data:
|
|
percentage: 66
|
|
|
|
- conditions:
|
|
- alias: "Master Bedroom is occupied"
|
|
condition: state
|
|
entity_id: input_boolean.bedroom_occupied
|
|
state: "on"
|
|
- alias: "Master Bedroom above low"
|
|
condition: template
|
|
value_template: "{{states('sensor.master_bedroom_multisensor_air_temperature') | float(default=0) > states('input_number.master_bedroom_fan_low_temp') | float(default=0)}}"
|
|
|
|
sequence:
|
|
- alias: "Turn master bedroom fan on to percentage speed"
|
|
action: fan.set_percentage
|
|
target:
|
|
entity_id: fan.master_bedroom_fan_light_switch_fan
|
|
data:
|
|
percentage: 33
|