Nest Thermostat + Home Assistant
Official SDM API integration guide
Complex Setup Required
Nest integration requires a $5 fee, Google Cloud Console configuration, and OAuth setup. This is significantly more complex than most Home Assistant integrations. Consider Ecobee if you haven't purchased a thermostat yet.
Quick Summary
- ! Compatibility: Partial. Requires paid API and cloud connection
- ! Cost: $5 USD one-time fee to Google
- ✗ Google Workspace: Not supported. Consumer Gmail accounts only
- ✓ Features: Temperature control, mode switching, eco/away modes
1. Prerequisites
Before starting, verify you have:
- Home Assistant with SSL configured (required for OAuth)
- Nest thermostat set up in the Google Home app
- Consumer Google account (gmail.com). Google Workspace accounts are not supported
- Credit/debit card for the $5 API access fee
Not supported: Google Workspace accounts, Advanced Protection Program users, and European Nest E thermostats cannot use this integration.
Supported Models
- Nest Learning Thermostat (all generations)
- Nest Thermostat E (US version only)
- Nest Thermostat (2020 model)
2. Google Cloud Setup
Step 1: Create a Google Cloud Project
- Go to Google Cloud Console
- Click the project dropdown at the top and select New Project
- Name it something like "Home Assistant Nest"
- Click Create and wait for it to finish
- Note your Project ID (you'll need this later)
Step 2: Enable Required APIs
- In your new project, go to APIs & Services → Library
- Search for and enable Smart Device Management API
- Search for and enable Cloud Pub/Sub API
Step 3: Configure OAuth Consent Screen
- Go to APIs & Services → OAuth consent screen
- Select External and click Create
- Fill in the required fields (app name, support email)
- Add your email as a test user
- Important: Set publishing status to Production (otherwise tokens expire after 7 days)
Step 4: Create OAuth Credentials
- Go to APIs & Services → Credentials
- Click Create Credentials → OAuth client ID
- Application type: Web application
- Add authorized redirect URI:
https://my.home-assistant.io/redirect/oauth - Save the Client ID and Client Secret
3. Device Access Console
Step 1: Pay the API Fee
- Go to Device Access Console
- Agree to the terms of service
- Pay the $5 USD one-time fee
Step 2: Create a Device Access Project
- Click Create project
- Enter a project name
- Paste your OAuth Client ID from the previous step
- Enable events (you'll configure the Pub/Sub topic next)
- Note your Device Access Project ID
4. Pub/Sub Configuration
Pub/Sub enables real-time updates from your thermostat.
Step 1: Create a Pub/Sub Topic
- Go to Cloud Pub/Sub in Google Cloud Console
- Click Create Topic
- Topic ID:
home-assistant-nest - Leave default settings and click Create
Step 2: Grant Publisher Permission
- Click on your new topic
- Go to the Permissions tab
- Click Add Principal
- Add:
cloud-device-manager@system.gserviceaccount.com - Role: Pub/Sub Publisher
Step 3: Link Topic to Device Access
- Return to the Device Access Console
- Edit your project
- Add the Pub/Sub topic:
projects/YOUR_PROJECT_ID/topics/home-assistant-nest - Save the project
5. Home Assistant Setup
Step 1: Add Application Credentials
- In Home Assistant, go to Settings → Devices & Services
- Click the three-dot menu → Application Credentials
- Add credentials for Nest
- Enter your OAuth Client ID and Client Secret
Step 2: Configure the Integration
- Go to Settings → Devices & Services
- Click + Add Integration
- Search for Nest
- Enter your Device Access Project ID
- Follow the OAuth flow to authorize with your Google account
- Grant permissions for thermostats
Step 3: Verify Connection
After authorization, your thermostat should appear with climate and sensor entities.
6. Available Features
Climate Control
- Read current temperature
- Set target temperature
- Switch modes (heat, cool, heat-cool, off)
- Control HVAC fan
- Eco/Away mode activation
Sensors
- Current temperature
- Current humidity
- HVAC state (heating, cooling, idle)
7. Automation Ideas
Eco Mode When Away
automation:
- alias: "Eco mode when everyone leaves"
trigger:
- platform: state
entity_id: group.family
to: "not_home"
for: "00:15:00"
action:
- service: climate.set_preset_mode
target:
entity_id: climate.nest_thermostat
data:
preset_mode: "eco" Resume Schedule When Home
automation:
- alias: "Resume when someone arrives"
trigger:
- platform: state
entity_id: group.family
to: "home"
action:
- service: climate.set_preset_mode
target:
entity_id: climate.nest_thermostat
data:
preset_mode: "none" Pre-Heat Before Waking
automation:
- alias: "Pre-heat in morning"
trigger:
- platform: time
at: "06:00:00"
condition:
- condition: state
entity_id: input_boolean.workday
state: "on"
action:
- service: climate.set_temperature
target:
entity_id: climate.nest_thermostat
data:
temperature: 72 8. Troubleshooting
Authentication Errors
- Verify OAuth consent screen is set to Production, not Testing
- Ensure redirect URI exactly matches:
https://my.home-assistant.io/redirect/oauth - Check that you're using a consumer Google account (gmail.com)
Devices Not Appearing
- Verify thermostat is visible in Google Home app
- Check that you granted thermostat permissions during OAuth
- Try removing and re-adding the integration
Token Expiring After 7 Days
- Your OAuth consent screen is in Testing mode
- Go to Google Cloud Console → OAuth consent screen
- Click Publish App to move to Production
Pub/Sub Events Not Working
- Verify the service account has Publisher role on your topic
- Check that the topic name in Device Access matches exactly
- Subscriptions expire after 31 days of inactivity
9. Frequently Asked Questions
Does Nest work offline with Home Assistant?
No. Nest thermostats require a cloud connection to communicate with Home Assistant. The SDM API relies on Google's servers, so if your internet goes down or Google's services are unavailable, Home Assistant cannot control your thermostat. The Nest will continue to function locally with its built-in schedule, but remote control is lost.
Why does Nest integration cost $5?
Google charges a one-time $5 USD fee for access to the Smart Device Management (SDM) API through their Device Access Console. This fee helps cover API infrastructure costs and reduces abuse. It's a one-time payment that grants permanent access to control your Nest devices through the API.
Is Nest worth it for Home Assistant users?
If you already own a Nest thermostat, the $5 fee and complex setup are worthwhile for basic climate control. However, if you're buying a new thermostat specifically for Home Assistant, consider Ecobee instead. Ecobee offers easier setup via HomeKit (local control, no fees) and better long-term support for smart home integration.
What are better thermostat alternatives for Home Assistant?
Ecobee is the top recommendation for Home Assistant. It supports local control via HomeKit, requires no API fees, and setup takes about 10 minutes. Other excellent options include Z-Wave thermostats (Honeywell T6 Pro, GoControl) that work 100% locally, or any Zigbee-compatible thermostat with a Zigbee coordinator.
Can I still use the Google Home app with Home Assistant?
Yes! The Nest integration with Home Assistant doesn't affect your ability to use Google Home. You can continue using voice commands through Google Assistant, the Google Home app schedules, and all other Google ecosystem features. Home Assistant simply adds another control layer on top.
10. Sources
This guide was compiled from official documentation:
Last verified: 2026-01-31 against Home Assistant 2026.1. If you find outdated information, let us know.
Need help with thermostat setup?
We configure Home Assistant systems throughout Oklahoma, including Nest and Ecobee thermostats. Skip the complexity with professional installation.