Files
fresh-home/automations/things/automatic_fan_speeds.yaml
T
2024-11-07 10:50:30 -05:00

298 lines
12 KiB
YAML

alias: Automatic Fan Speeds
id: automation_fan_speeds
mode: parallel
max: 4
trigger:
- platform: homeassistant
event: start
id: start
- platform: numeric_state
entity_id: sensor.nursery_multisensor_air_temperature
id: nursery_off
below: input_number.nursery_fan_low_temp
- platform: numeric_state
entity_id: sensor.nursery_multisensor_air_temperature
id: nursery_low
above: input_number.nursery_fan_low_temp
below: input_number.nursery_fan_medium_temp
- platform: numeric_state
entity_id: sensor.nursery_multisensor_air_temperature
id: nursery_mid
above: input_number.nursery_fan_medium_temp
below: input_number.nursery_fan_high_temp
- platform: numeric_state
entity_id: sensor.nursery_multisensor_air_temperature
id: nursery_high
above: input_number.nursery_fan_high_temp
- platform: numeric_state
entity_id: sensor.master_bedroom_multisensor_air_temperature
below: input_number.master_bedroom_fan_low_temp
id: mbr_off
- platform: 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
- platform: 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
- platform: numeric_state
entity_id: sensor.master_bedroom_multisensor_air_temperature
above: input_number.master_bedroom_fan_high_temp
id: mbr_high
- platform: state
entity_id: input_boolean.nursery_occupied
- platform: state
entity_id: input_boolean.master_bedroom_occupied
- platform: state
entity_id: input_boolean.nursery_asleep
- platform: 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.lacrosse_tx141thbv2_0_54_temperature') | float(default=0) > 60.0) or is_state('group.ceiling_fans','on') }}"
action:
- alias: "Calculate fan speeds"
variables:
nursery_fan_speed: "{{((states('sensor.nursery_multisensor_air_temperature') | float(default=0) - states('input_number.nursery_fan_min_temp') | float(default=0))/(states('input_number.nursery_fan_high_temp') | float(default=1) - states('input_number.nursery_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) }}"
# - service: logbook.log
# data_template:
# name: Automatic Fan Speeds
# entity_id: automation.automatic_fan_speeds
# message: >
# Outdoor Air Temp: {{states('sensor.lacrosse_tx141thbv2_0_54_temperature') | float(default=0)}}
# Nursery Air Temp: {{states('sensor.nursery_multisensor_air_temperature') | float(default=0)}}
# Nursery Min Temp: {{states('input_number.nursery_fan_min_temp') | float(default=0)}}
# Nursery High Temp: {{states('input_number.nursery_fan_high_temp') | float(default=0)}}
# Nursery Calculated: {{ nursery_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 Nursery fan speed"
choose:
- conditions:
- alias: "It is too cold outside to start the nursery fan"
condition: numeric_state
entity_id: sensor.nursery_multisensor_air_temperature
below: input_number.nursery_fan_min_temp
- alias: "Nursery fan on"
condition: state
entity_id: fan.nursery
state: "on"
sequence:
- alias: "Turn nursery fan off because it is too cold outside"
service: fan.turn_off
target:
entity_id: fan.nursery
- conditions:
- alias: "Nusery not occupied and window is closed"
condition: state
entity_id: input_boolean.nursery_occupied
state: "off"
- alias: "Nusery not asleep"
condition: state
entity_id: input_boolean.nursery_asleep
state: "off"
- alias: "Nursery fan on"
condition: state
entity_id: fan.nursery
state: "on"
- alias: "Nursery window is closed"
condition: state
entity_id: binary_sensor.nursery_window_contact
state: "off"
sequence:
- alias: "Turn nursery fan off because room isn't occupied"
service: fan.turn_off
target:
entity_id: fan.nursery
- conditions:
- alias: "Nursery below low"
condition: template
value_template: "{{states('sensor.nursery_multisensor_air_temperature') | float(default=0) <= states('input_number.nursery_fan_min_temp') | float(default=0)}}"
- alias: "Nursery fan on"
condition: state
entity_id: fan.nursery
state: "on"
sequence:
- alias: "Turn nursery fan off because the room is too cool"
service: fan.turn_off
target:
entity_id: fan.nursery
- conditions:
- alias: "Nursery is occupied"
condition: state
entity_id: input_boolean.nursery_occupied
state: "on"
- alias: "Nusery above high"
condition: template
value_template: "{{states('sensor.nursery_multisensor_air_temperature') | float(default=0) > states('input_number.nursery_fan_high_temp') | float(default=0)}}"
sequence:
- alias: "Turn nursery fan on to percentage speed"
service: fan.set_percentage
target:
entity_id: fan.nursery
data:
percentage: 100
- conditions:
- alias: "Nursery is occupied"
condition: state
entity_id: input_boolean.nursery_occupied
state: "on"
- alias: "Nusery above medium"
condition: template
value_template: "{{states('sensor.nursery_multisensor_air_temperature') | float(default=0) > states('input_number.nursery_fan_medium_temp') | float(default=0)}}"
sequence:
- alias: "Turn nursery fan on to percentage speed"
service: fan.set_percentage
target:
entity_id: fan.nursery
data:
percentage: 66
- conditions:
- alias: "Nursery is occupied"
condition: state
entity_id: input_boolean.nursery_occupied
state: "on"
- alias: "Nusery above low"
condition: template
value_template: "{{states('sensor.nursery_multisensor_air_temperature') | float(default=0) > states('input_number.nursery_fan_low_temp') | float(default=0)}}"
sequence:
- alias: "Turn nursery fan on to percentage speed"
service: fan.set_percentage
target:
entity_id: fan.nursery
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"
service: fan.turn_off
target:
entity_id: fan.master_bedroom
- conditions:
- alias: "Master Bedroom not occupied"
condition: state
entity_id: input_boolean.master_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
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"
service: fan.turn_off
target:
entity_id: fan.master_bedroom
- 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
state: "on"
sequence:
- alias: "Turn master bedroom fan off because the room is too cool"
service: fan.turn_off
target:
entity_id: fan.master_bedroom
- conditions:
- alias: "Master Bedroom is occupied"
condition: state
entity_id: input_boolean.master_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"
service: fan.set_percentage
target:
entity_id: fan.master_bedroom
data:
percentage: 100
- conditions:
- alias: "Master Bedroom is occupied"
condition: state
entity_id: input_boolean.master_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"
service: fan.set_percentage
target:
entity_id: fan.master_bedroom
data:
percentage: 66
- conditions:
- alias: "Master Bedroom is occupied"
condition: state
entity_id: input_boolean.master_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"
service: fan.set_percentage
target:
entity_id: fan.master_bedroom
data:
percentage: 33