How I set up Home Automations to keep me cool

Affiliate Disclosure: This page has affiliate links, which earn us commission at no cost to you.

I’ve been using these automations for the last month or so, and they’ve been extremely useful! This article will show you how I set everything up. To see the automations in action, watch the video here.

All of the automations I created are in Home Assistant. I’m using this HACs integration. As mentioned in the video DREO is also working on an integration that you can find here.

Fan + A/C

Circulating the air when the A/C is on has been VERY helpful to spread out the cool air. I’m using an Ecobee thermostat, and when it’s on the automation triggers to turn on a DREO fan.

If you are using the visual editor look for “Current action” is “Cooling.” If you are using just YAML it is the “hvac_action” is “cooling.”

trigger: state
entity_id:
  - climate.kitchen_homekit_2
to: cooling
attribute: hvac_action

For the action, just turn on the fan! In the last section I will explain how I got the fans to work with Home Assistant and Google Assistant.

Napping

I have a fan in my bedroom and it works great because it’s quiet and is always pointed straight at my bed. When I lie down on my bed during the day, the pressure sensor detects me and turns on the fan if it’s warm in the room.

Then when I get out of bed during the day, it turns the fan off!

alias: Nap time
description: ""
triggers:
  - entity_id: binary_sensor.withings_in_bed_reed
    to: "on"
    trigger: state
    id: reed_in_bed
  - entity_id:
      - binary_sensor.withings_in_bed_reed
    to: "off"
    trigger: state
    id: reed_out_of_bed
conditions:
  - condition: time
    before: "17:00:00"
    after: "10:00:00"
actions:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - reed_in_bed
        sequence:
          - device_id: abcdefg123456
            domain: cover
            entity_id: cover.master_bedroom_left_shade
            type: set_position
            position: 0
          - device_id: abcdefg123456
            domain: cover
            entity_id: cover.master_bedroom_right_shade
            type: set_position
            position: 0
          - condition: numeric_state
            entity_id: sensor.master_bedroom_dreo_fan_temperature
            above: 75
          - action: fan.turn_on
            metadata: {}
            data: {}
            target:
              entity_id: fan.master_bedroom_dreo_fan_2
      - conditions:
          - condition: trigger
            id:
              - reed_out_of_bed
        sequence:
          - action: fan.turn_off
            metadata: {}
            data: {}
            target:
              entity_id: fan.master_bedroom_dreo_fan_2
mode: single

It’s all in a single automation to keep it in one place using Trigger IDs (“reed_in_bed” and “reed_out_of_bed”). Of course, you could separate it out into two automations if you prefer that.

Changing speeds from distance

mmWave sensors are getting so accurate now that you could change the fan speed if you are close or far away. The Apollo MSR-2 mmWave sensor is a great option for that.

Or if you want the fan to do it all by itself and follow you, then the DREO TurboPoly Fan 707S can actually do that out of the box. Pretty sweet!

Quick cool off

When I get home and the temperature outside is extremely hot, then I want the fan on high. You could use lots of different options for outdoor temperature, but I’m using a Tempest Weather Station in my back yard.

alias: Family room Dreo fan on high when hot outside and we come home
description: ""
triggers:
  - entity_id: group.all_phones
    from: not_home
    to: home
    trigger: state
  - trigger: state
    entity_id:
      - sensor.reed_current_location_phone
    to: home
    from: away
conditions:
  - condition: time
    after: "09:00:00"
    before: "19:00:00"
  - condition: numeric_state
    entity_id: sensor.st_00050086_feels_like
    above: 100
actions:
  - action: script.dreo_family_room_fan_speed_high
    metadata: {}
    data: {}
  - delay:
      hours: 0
      minutes: 15
      seconds: 0
      milliseconds: 0
  - action: script.dreo_family_room_fan_speed_low
    metadata: {}
    data: {}
mode: single

Here are the scripts that change the speed, because the fan we are using isn’t fully compatible with Home Assistant yet.

sequence:
  - action: google_assistant_sdk.send_text_command
    data:
      command: Set Family room fan Dreo speed to 8
  - action: number.set_value
    metadata: {}
    data:
      value: "15"
    target:
      entity_id: number.family_room_fan_vertical_angle
alias: Dreo Family Room Fan Speed High
description: ""
sequence:
  - action: google_assistant_sdk.send_text_command
    data:
      command: Set Family room fan Dreo speed to 3
  - action: number.set_value
    metadata: {}
    data:
      value: "15"
    target:
      entity_id: number.family_room_fan_vertical_angle
alias: Dreo Family Room Fan Speed Low
description: ""

I will explain at the end of the article how I’m using Google Assistant to send voice commands.

Keeping it quiet

But if the fan is on high and the TV turns on, I would rather the fan turn the speed down. I don’t need to crank the volume on the TV and have Elmo’s voice blasting through our house!

I’m using an Apple TV and the integration into Home Assistant is great. When the TV starts playing something and the fan is on, the fan automatically goes down to a low speed.

alias: Family room Dreo fan low if TV is playing
description: ""
triggers:
  - entity_id:
      - media_player.family_room_tv_2
    to: playing
    trigger: state
conditions:
  - condition: numeric_state
    entity_id: number.family_room_fan_vertical_angle
    above: 0
actions:
  - action: script.dreo_family_room_fan_speed_low
    metadata: {}
    data: {}
mode: single
sequence:
  - action: google_assistant_sdk.send_text_command
    data:
      command: Set Family room fan Dreo speed to 3
  - action: number.set_value
    metadata: {}
    data:
      value: "15"
    target:
      entity_id: number.family_room_fan_vertical_angle
alias: Dreo Family Room Fan Speed Low
description: ""

Empty room

I also don’t want the fan running if no one is in the room. The fan can start from the A/C running if no one is in the room to circulate air, so if the A/C stops and no one is still in the room the fan will turn off.

So for the first automation, I’m using a mmWave sensor and a PIR sensor. If neither has been triggered in 20 minutes then it checks to make sure the other hasn’t seen anything in the last 15 minutes either. That way they both have to be clear and no one is in the room for sure.

alias: Turn off Family room Dreo fan if no one is around
description: ""
triggers:
  - trigger: state
    entity_id:
      - binary_sensor.hue_motion_sensor_1_motion
    to: "off"
    for:
      hours: 0
      minutes: 20
      seconds: 0
  - trigger: state
    entity_id:
      - binary_sensor.presence_sensor_fp2_8576_presence_sensor_4
    to: "off"
    for:
      hours: 0
      minutes: 20
      seconds: 0
conditions:
  - condition: and
    conditions:
      - condition: state
        entity_id: binary_sensor.presence_sensor_fp2_8576_presence_sensor_4
        state: "off"
        for:
          hours: 0
          minutes: 15
          seconds: 0
      - condition: state
        entity_id: binary_sensor.hue_motion_sensor_1_motion
        state: "off"
        for:
          hours: 0
          minutes: 15
          seconds: 0
actions:
  - action: script.turn_off_dreo_family_room_fan
    metadata: {}
    data: {}
mode: single

Then for the second automation that runs when the A/C stops running. It checks to see if anyone is in the room using the mmWave sensor and PIR motion sensor used in the previous automation.

alias: Family room Dreo fan turn off if A/C stopped running
description: ""
triggers:
  - trigger: state
    entity_id:
      - climate.kitchen_homekit_2
    to: idle
    attribute: hvac_action
    for:
      hours: 0
      minutes: 10
      seconds: 0
conditions:
  - condition: time
    after: "07:00:00"
    before: "23:30:00"
  - condition: and
    conditions:
      - condition: state
        entity_id: binary_sensor.presence_sensor_fp2_8576_presence_sensor_4
        state: "off"
        for:
          hours: 0
          minutes: 10
          seconds: 0
      - condition: state
        entity_id: binary_sensor.hue_motion_sensor_1_motion
        state: "off"
        for:
          hours: 0
          minutes: 10
          seconds: 0
actions:
  - action: script.turn_off_dreo_family_room_fan
    metadata: {}
    data: {}
mode: single

Remember for later

Okay so this is my new favorite automation and it’s REALLY coming in handy for all sorts of devices! Basically when either a room or the whole house is about to shut off, the smart home takes a “snapshot” of certain devices and can restore the state of those devices when you return.

I’m using this on the fan and my computer speakers in my studio. Both are devices I manually turn on from a dashboard on my desk. Well it’s annoying to turn them back on if I left for just a few minutes and everything shuts off. So here’s how it works.

For the automation that turns off my studio. The first action (and this is important that it is the first) creates a scene of those devices I want to remember. If you add this action at the end, after you already turn everything off, it would not work. Yes I made that mistake the first time I set this up. 🤦‍♂️

action: scene.create
metadata: {}
data:
  scene_id: studio_fan_temp_scene
  snapshot_entities:
    - switch.smart_power_strip_socket_1
    - switch.computer_speakers

Then for the automation that turns everything back on when I walk in the room, there’s an action to run that scene I created in the shutdown automation.

But I don’t want the scene to run if it’s been over an hour since I’ve been in the room. That would be annoying if it was returning to a previous state from a long time ago.

So if certain light strips have been off for over an hour, it will skip the scene. I’m sure there is a better way of doing this but it works so I don’t care.

choose:
  - conditions:
      - condition: state
        entity_id: light.kasa_light_strips_new_fav_2
        state: "off"
        for:
          hours: 1
          minutes: 0
          seconds: 0
    sequence: []
default:
  - action: scene.turn_on
    metadata: {}
    data: {}
    target:
      entity_id: scene.studio_fan_temp_scene
enabled: true

Temperature sensor

When our theater room gets warm, then the fan will turn on when everything else turns on.

choose:
  - conditions:
      - condition: numeric_state
        entity_id: sensor.purifier_tower_fan_temperature
        above: 78
    sequence:
      - action: fan.set_percentage
        metadata: {}
        data:
          percentage: 16
        target:
          entity_id: fan.purifier_tower_fan
        enabled: true
alias: Turn on fan if hot

Lower the CO2

Using a CO2 sensor has been eye-opening to see how fast it can go up when I’m working at the computer! To fix that, I have a portable A/C unit near my desk and it clears out all the stuffy air so fast in the room.

I also have a few other conditions to make sure this runs only when it’s supposed to. It checks if I’m in the room using presence detection and that my computer is on. It also can only run once every 2 hours.

alias: CO2 High in Studio
description: Flash lights red and fans on
triggers:
  - entity_id:
      - sensor.aranet4_carbon_dioxide
    above: 1100
    trigger: numeric_state
conditions:
  - condition: state
    entity_id: binary_sensor.macbook_pro_2_active
    state: "on"
  - condition: numeric_state
    entity_id: sensor.macbook_pro_2_displays
    above: 1
  - condition: template
    value_template: |-
      {# run once ever 2 hours #}
      {% if states.automation.co2_high_in_studio.last_triggered is not none %}
        {% if as_timestamp(now()) | int - as_timestamp(states.automation.co2_high_in_studio.attributes.last_triggered) 
        | int > (2 * 3600) %} true {% else %} false
        {% endif %}
      {% else %}
        false
      {% endif %}
  - condition: state
    entity_id: sensor.reed_room
    state: studio_esp
actions:
  - action: climate.turn_on
    metadata: {}
    data: {}
    target:
      entity_id: climate.air_conditioner_air_conditioner
mode: single

Air fryer light bulb

Walking up to the air fryer and have the light automatically turn on when it’s cooking has been so convenient! I’m using the Apollo MSR-2 mmWave sensor and if I’m in Zone 1 or really close to it, the light turns on, if the air fryer is cooking.

alias: Kitchen Air Fryer light on from mmWave
description: ""
triggers:
  - trigger: state
    entity_id:
      - binary_sensor.apollo_msr_2_c655b0_radar_zone_1_occupancy
    to: "on"
conditions:
  - condition: state
    entity_id: sensor.chefmaker_status
    state: cooking
actions:
  - action: switch.turn_on
    metadata: {}
    data: {}
    target:
      entity_id: switch.chefmaker_light
mode: single

Using Google Assistant voice commands in Home Assistant

Some of the DREO fans in Home Assistant were missing controls. I’m sure eventually they will be added, but for now I’m using Google Assistant voice commands sent from a Home Assistant automation to control the fan.

There are some steps needed to get this set up if you haven’t done it before. Here is the page to do that.

Once it’s all set up, the commands are really easy to do in Home Assistant. Here is how I turn a fan on.

action: google_assistant_sdk.send_text_command
data:
  command: Turn on Family room fan Dreo

So whatever the Google Assistant voice command is, just put that in the “command” and you are good to go!


I hope this article helps you set up automations! If you want to make sure you see future content like this, make sure you subscribe on YouTube.