Nest


The Nest component is the main component to integrate all Nest related platforms. To connect Nest, you will have to sign up for a developer account and get a client_id and client_secret.

Setting up developer account

  1. Visit Nest Developers, and sign in. Create an account if you don’t have one already.
  2. Fill in account details:
    • The “Company Information” can be anything. We recommend using your name.
  3. Submit changes
  4. Click “Products” at top of page.
  5. Click “Create New Product
  6. Fill in details:
    • Product name must be unique. We recommend [email] - Home Assistant.
    • The description, users, URLs can all be anything you want.
    • Leave the “Redirect URI” Field blank
  7. For permissions check every box and if it’s an option select the read/write option. Note: there are important permissions under the “Other Permissions” category. If you are only adding a thermostat, do not just select the permissions under “Thermostat”. You still need to check the boxes under “Other Permissions” in order to give you access to features like away mode, ETA, structure read/write, and postal code.
    • The description requires a specific format to be accepted.
    • Use “[Home Assistant] [Edit] [For Home Automation]” as the description as it is not super important.
  8. Click “Create Product”
  9. Once the new product page opens the “Product ID” and “Product Secret” are located on the right side. These will be used as client_id and client_secret below.
  10. Once Home Assistant is started, a configurator will pop up asking you to log into your Nest account and copy a PIN code into Home Assistant.

Connecting to the Nest Developer API requires outbound port 9553 on your firewall. The configuration will fail if this is not accessible.

Configuration

# Example configuration.yaml entry
nest:
  client_id: CLIENT_ID
  client_secret: CLIENT_SECRET
# Example configuration.yaml entry to show only devices at your vacation and primary homes
nest:
  client_id: CLIENT_ID
  client_secret: CLIENT_SECRET
  structure:
    - Vacation
    - Primary

Configuration Variables

client_id

(string)(Required)Your Nest developer client ID.

client_secret

(string)(Required)Your Nest developer client secret.

structure

(list)(Optional)The structure or structures you would like to include devices from. If not specified, this will include all structures in your Nest account.

Service set_away_mode

You can use the service nest/set_away_mode to set the structure(s) to “Home” or “Away”.

Service data attribute Optional Description
away_mode no String, must be away or home.
structure yes String, will default to all configured Nest structures if not specified.

Examples:

# Example script to set away, no structure specified so will execute for all
script:
  nest_set_away:
    sequence:
      - service: nest.set_away_mode
        data:
          away_mode: away
# Example script to set home, structure specified
script:
  nest_set_home:
    sequence:
      - service: nest.set_away_mode
        data:
          away_mode: home
          structure:
            - Apartment

Service set_eta

You can use the service nest/set_eta to set or update the estimated time of arrival window. Calling this service will automatically set the structure(s) to “Away”. Structures must have an associated Nest thermostat in order to use ETA function.

Service data attribute Optional Description
eta no Time period, estimated time of arrival from now.
eta_window yes Time period, estimated time of arrival window. Default is 1 minute.
trip_id yes String, unique ID for the trip. Default is auto-generated using a timestamp. Using an existing trip_id will update that trip’s ETA.
structure yes String, will default to all configured Nest structures if not specified.

Examples:

# Example script to set ETA, no structure specified so will execute for all
script:
  nest_set_eta:
    sequence:
      - service: nest.set_eta
        data:
          eta: 00:10:30
          trip_id: Leave Work
# Example script to update ETA and specify window, structure specified
script:
  nest_update_eta:
    sequence:
      - service: nest.set_eta
        data:
          eta: 00:11:00
          eta_window: 00:05
          trip_id: Leave Work
          structure:
            - Apartment

Service cancel_eta

You can use the service nest/cancel_eta to cancel an existing estimated time of arrival window. Structures must have an associated Nest thermostat in order to use ETA function.

Service data attribute Optional Description
trip_id no String, unique ID for the trip. Using an existing trip_id will update that trip’s ETA.
structure yes String, will default to all configured Nest structures if not specified.

Examples:

# Example script to cancel ETA, no structure specified so will execute for all
script:
  nest_cancel_eta:
    sequence:
      - service: nest.cancel_eta
        data:
          trip_id: Leave Work
# Example script to cancel ETA, structure specified
script:
  nest_cancel_eta:
    sequence:
      - service: nest.cancel_eta
        data:
          trip_id: Leave Work
          structure:
            - Apartment

Troubleshooting

  • If you’re getting rickrolled instead of being able to see your Nest cameras, you may not have set up your developer account’s permissions correctly. Go back through and make sure you’ve selected read/write under every category that it’s an option.