I Moved My Nest Schedule to Home Assistant

Use Home Assistant to manage a Nest cooling schedule, suggest fresh air, and track filter maintenance by runtime.

Watch on YouTube ↗Get the code ↗Explore the gear →

I like the house at 80°F during the day. I know—that number is going to get some comments! What I really wanted was a schedule that could use the sensors we already have, handle guests and trips out, and still let us turn the thermostat dial when we want to.

So I cleared the old downstairs Nest schedule and moved the decisions into Home Assistant. The result is one place to see our cooling plan, get a fresh-air suggestion, and track filter maintenance. Watch the short walkthrough, or use the notes below to build your own version.

Nest thermostat and Home Assistant: my house, my rules

Start with who owns the schedule

I turned off Auto-Schedule on the downstairs Nest and cleared its stored temperature entries. Turning off learning alone does not necessarily erase an existing schedule. Check the exact steps for your thermostat model and integration, and make sure only one system is issuing routine targets before enabling a replacement.

Home Assistant owns the automation logic here, but local logic does not automatically make every thermostat connection local. Connectivity depends on your Nest model and integration. Our controller operates in cooling mode; it does not turn on heat. The upstairs thermostat keeps its existing controls.

The downstairs plan

  • Day: At 8:00 a.m. every day, return to a cooling target of 80°F, even if we sleep in.
  • Bedtime: After sunset and before 8:00 a.m., a fresh occupied transition can start bedtime after both bed sensors stay occupied for six continuous minutes. The target becomes 77°F. Getting out of bed does not change it.
  • Guest mode: Target 76°F, prevent the away Eco transition, and restore the day or bedtime plan when guest mode ends.
  • Away: With guest mode off, ten continuous minutes away selects Nest Eco. On return, the controller exits Eco and restores the applicable plan or valid manual hold.
  • Manual changes: A temperature or Eco adjustment is respected until the next applicable period or guest transition. Manual Off persists until cooling is turned back on or the schedule is explicitly resumed.

The controller waits for reliable safety inputs, pauses cooling for an open monitored entry or grid outage after its safety delay, and allows time for recovery. Durable helpers track the period, manual intent, and expected Nest response. A service call is not proof that the thermostat has already reported the requested state.

The implementation is split across the climate package, downstairs controller, and policy macros. Entity names, temperature limits, and equipment behavior are specific to our home. Read all three before adapting them.

A small automation to start from

If you only want the fixed morning reset, this is a standalone Home Assistant automation. Replace the entity and target, use cooling-only equipment, and make sure another automation or the thermostat’s own schedule is not fighting it. This intentionally does not include our Eco, guest, manual-hold, or safety logic; use the linked controller for the complete pattern.

alias: Example downstairs morning cooling target
description: Set the daytime cooling target at 8 AM
triggers:
  - trigger: time
    at: "08:00:00"
actions:
  - action: climate.set_temperature
    target:
      entity_id: climate.your_downstairs_thermostat
    data:
      temperature: 80
mode: single

For a bedtime trigger, use a fresh occupied edge after sunset, require both bed sensors to be continuously occupied for six minutes, and stop the bedtime window at the morning reset. A daytime return to bed should not restart the night plan. Keep manual overrides and safety conditions explicit instead of adding competing set-temperature automations.

Fresh air before the AC has to run

A good opportunity can exist even when cooling is idle. Our suggestion checks that someone is home and awake, guest mode is off, it is daylight before sunset, and the monitored slider and entry contacts are closed. We reuse the wired contacts from our ESP8266 alarm-system project.

  • Outside is at most 76°F, at least 2°F cooler than indoors, and at least 1°F below the current thermostat target. There is no separate minimum outside temperature.
  • Outdoor dew point is at most 60°F and at least 2°F below the calculated indoor dew point. We also check rain, rain probability, wind gusts and weather alerts.
  • Airly must report a fresh CAQI of 25 or less. CAQI and US AQI are different scales, so do not reuse that number as a US AQI threshold.
  • The data must be available and recent. A missing sensor suppresses the recommendation rather than guessing.

The fresh-air eligibility macro and notice lifecycle show the exact checks. A phone reminder is limited to once per local day, and our household screens can show the opportunity. The notice clears when conditions no longer qualify or a monitored opening is opened. It is advice, not a command to open a door or a measurement of savings.

Filter reminders that fit the house

Instead of a calendar-only reminder, our maintenance dashboard tracks cooling runtime separately for each system: 550 hours downstairs and 450 upstairs, with a nine-month maximum age. Resetting a filter records the change. Tune those thresholds for your own equipment, filter, pets, and conditions; check manufacturer guidance and the actual filter as well. Nest has its own reminder options, but Home Assistant gives us the counters and history alongside the rest of the maintenance dashboard.

The dashboard also helped us notice an HVAC problem when cooling was running while the indoor temperature kept rising. Here is the HVAC failure and maintenance walkthrough, and here is the earlier air-quality video.

Troubleshooting and adapting it

  • If the target changes unexpectedly, check stored Nest schedule entries, other Home Assistant automations, guest/away state, and manual holds before changing the policy.
  • If a command appears to succeed but the reported target stays stale, inspect the thermostat state and integration availability; do not assume an unconfirmed call reached the device.
  • If a fresh-air notice is missing, inspect the opportunity sensor’s assessment and check sensor freshness, contacts, weather, dew point, and the Airly CAQI scale.
  • Test with your own comfortable values and verify the thermostat’s supported modes and safety behavior. The example is not a substitute for equipment protection or a professional diagnosis.

See the setup in action

The video walks through the schedule cards, outdoor conditions, Airly reading, and maintenance view. If you have an old thermostat waiting for another job, I also turned an old Nest into a Home Assistant display.

Watch “I Moved My Nest Schedule to Home Assistant” on YouTube.

Advertisement

Keep building

The next useful idea, in your inbox.

Get new vCloudInfo posts by email.

Get new posts