How to automate Ecobee thermostat based on indoor and outdoor temps?

Hi everyone!

I have an Ecobee Smart WiFi that uses Homekit to integrate with my HAos. The Ecobee app allows me to set different different comfort settings like “home”, “away”, “sleep”, “custom”, etc but its based on a schedule instead of based on outdoor and indoor temperature.

I tried to create an automation so that when we’re in Summer Season, Ecobee can Choose the appropriate option to run AC at a certain temp or to run fan only, based on both the outside temp (via Weather integration) and the indoor temp (via Ecobee thermostat). If I can get this to work, then I’d try to create an automation for each season.

The problem is that the automation hasn’t kicked on, which I believe is due to using Season in the “When” section. Does this mean it would only trigger at the start of the season? Should I use something else?

I also set an “If” timeframe from 8am-12am, which I can remove if its part of the problem. It’s just that I was hoping to set the thermostat to a sleep mode after 12am, so that the AC shuts off and we revert to ceiling fans for bedtime. (Definitely not implementing this in the winter since it gets super cold. LOL)

I’ve also realized that I can’t seem to set the automation to check the temperature conditions every 2 hours and Choose the appropriate option. Putting a “repeat” just forces the action to do so, back-to-back, instead of it actually waiting 2hrs to check conditions and then choose which option is best.

I’m hoping that you all can take a look and see if there’s another way to do this, that will actually work. Here’s the long and nonsensical yaml I have so far, before I got lost in it. LOL

alias: House Temps in Summer
description: ""
triggers:
  - trigger: state
    entity_id:
      - sensor.season
    to: summer
    from: spring
  - trigger: state
    entity_id:
      - sensor.season
    to: summer
    from: summer
  - trigger: state
    entity_id:
      - sensor.season
    to: summer
    from: null
conditions:
  - condition: time
    after: "08:00:00"
    before: "00:00:00"
actions:
  - choose:
      - conditions:
          - condition: numeric_state
            entity_id: sensor.thermostat_ecobee_current_temperature
            above: 75
          - condition: state
            entity_id: weather.local_wx
            attribute: temperature
            state: 75-105
            for:
              hours: 0
              minutes: 5
              seconds: 0
        sequence:
          - action: climate.turn_on
            metadata: {}
            data: {}
            target:
              entity_id: climate.thermostat_ecobee
          - action: climate.set_temperature
            metadata: {}
            data:
              hvac_mode: cool
              target_temp_high: 75
              target_temp_low: 73
              temperature: 75
            target:
              entity_id: climate.thermostat_ecobee
        alias: Set to COOL if warm indoors and warm outdoors
      - conditions:
          - condition: numeric_state
            entity_id: sensor.thermostat_ecobee_current_temperature
            below: 75
          - condition: state
            entity_id: weather.local_wx
            attribute: temperature
            state: 75-105
            for:
              hours: 0
              minutes: 5
              seconds: 0
        sequence:
          - action: climate.turn_on
            metadata: {}
            data: {}
            target:
              entity_id: climate.thermostat_ecobee
          - action: climate.set_temperature
            metadata: {}
            data:
              hvac_mode: cool
              target_temp_high: 75
              target_temp_low: 73
              temperature: 75
            target:
              entity_id: climate.thermostat_ecobee
        alias: Set to COOL if cool indoors and warm outdoors
      - conditions:
          - condition: numeric_state
            entity_id: sensor.thermostat_ecobee_current_temperature
            above: 75
          - condition: state
            entity_id: weather.local_wx
            attribute: temperature
            state: 69-74
            for:
              hours: 0
              minutes: 5
              seconds: 0
        sequence:
          - action: climate.turn_on
            metadata: {}
            data: {}
            target:
              entity_id: climate.thermostat_ecobee
          - action: climate.set_temperature
            metadata: {}
            data:
              hvac_mode: fan_only
              target_temp_high: 76
              target_temp_low: 75
              temperature: 77
            target:
              entity_id: climate.thermostat_ecobee
        alias: Set to FAN ONLY if warm indoors and cool outdoors
      - conditions:
          - condition: numeric_state
            entity_id: sensor.thermostat_ecobee_current_temperature
            below: 75
          - condition: state
            entity_id: weather.local_wx
            attribute: temperature
            state: 0-73
            for:
              hours: 0
              minutes: 5
              seconds: 0
        sequence:
          - action: climate.turn_on
            metadata: {}
            data: {}
            target:
              entity_id: climate.thermostat_ecobee
          - action: climate.set_temperature
            metadata: {}
            data:
              hvac_mode: heat
              target_temp_high: 77
              temperature: 75
              target_temp_low: 74
            target:
              entity_id: climate.thermostat_ecobee
        alias: Set to FAN ONLY if cool indoors and cool outdoors
    default:
      - action: climate.turn_on
        metadata: {}
        data: {}
        target:
          entity_id: climate.thermostat_ecobee
      - action: climate.set_temperature
        metadata: {}
        data:
          temperature: 75
          target_temp_low: 74
          target_temp_high: 76
          hvac_mode: cool
        target:
          entity_id: climate.thermostat_ecobee
mode: single


I can’t comment on the rest but as far as “repeat” goes, you should look at setting a timer helper for 2 hours and then add that timer helper as a trigger to run the automation every time the timer runs out.

1 Like