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