Skip to content
This repository has been archived by the owner on Dec 8, 2020. It is now read-only.

slinkymanbyday/badnest

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

badnest

A bad Nest integration that uses the web api to work after Works with Nest was shut down (bad Google, go sit in your corner and think about what you did)

Notes on this fork

This fork does not support nest logins, only google logins. I only have a single nest hello for testing but strive to ensure that multiple cameras work, and that other devices that work on the main repo work here too. This fork was created becuase it appears that PRs for camera fixes aren't being processed on teh main repo.

Why is it bad

This isn't an advertised or public API, it's still better than web scraping, but will never be as reliable as the original API

Features

  • Doesn't use the now defunct Works with Nest API
  • Works with migrated/new accounts via Google auth
  • Nest Protect support
  • Nest Thermostat support
  • Nest Thermostat Sensor support
  • Nest Camera support

Drawbacks

  • Tested with a single thermostat, I have no other devices to test with
  • Camera integration is untested by me
  • Nest Protect integration is untested by me
  • Nest could change their webapp api at any time, making this defunct (this has happened before, see https://github.com/USA-RedDragon/badnest/issues/67)

Configuration

Example configuration.yaml - When you're not using the Google Auth Login

Google recently introduced reCAPTCHA when logging to Nest. That means username and password cannot be used directly any more. Instead, you have to obtain user_id and access_token for your account by logging in manually. To do that, open developer tools in your browser, switch to the "Network" tab, log in to Nest and look for the request similar to https://home.nest.com/session?_=1578693398448. You will find user_id and access_token in the response to the request.

badnest:
  user_id: 11111
  access_token: !secret nest_access_token
  camera_only_important: True / False   # (Optional)
  camera_event_minutes: 120 # minutes to get camera events for (optional)
  camera_event_timeout: 1  # minutes for detector to hold a state

climate:
  - platform: badnest
    scan_interval: 10

camera:
  - platform: badnest

sensor:
  - platform: badnest

Example configuration.yaml - When you are using the Google Auth Login

badnest:
  issue_token: "https://accounts.google.com/o/oauth2/iframerpc....."
  cookie: "OCAK=......"
  camera_only_important: True / False   # (Optional)
  camera_event_minutes: 120 # minutes to get camera events for (optional)
  camera_event_timeout: 1  # minutes for detector to hold a state
climate:
  - platform: badnest
    scan_interval: 10

camera:
  - platform: badnest

sensor:
  - platform: badnest

Google Login support added with many thanks to: chrisjshull from https://github.com/chrisjshull/homebridge-nest/

The values of "issue_token" and "cookie" are specific to your Google Account. To get them, follow these steps (only needs to be done once, as long as you stay logged into your Google Account).

  1. Open a Chrome browser tab in Incognito Mode (or clear your cache).
  2. Open Developer Tools (View/Developer/Developer Tools).
  3. Click on 'Network' tab. Make sure 'Preserve Log' is checked.
  4. In the 'Filter' box, enter issueToken
  5. Go to home.nest.com, and click 'Sign in with Google'. Log into your account.
  6. One network call (beginning with iframerpc) will appear in the Dev Tools window. Click on it.
  7. In the Headers tab, under General, copy the entire Request URL (beginning with https://accounts.google.com, ending with nest.com). This is your "issue_token" in configuration.yaml.
  8. In the 'Filter' box, enter oauth2/iframe
  9. Several network calls will appear in the Dev Tools window. Click on the last iframe call.
  10. In the Headers tab, under Request Headers, copy the entire cookie (beginning OCAK=... - include the whole string which is several lines long and has many field/value pairs - do not include the cookie: name). This is your "cookie" in configuration.yaml.

Note on cookies I have found i need the following 3 cookies: SID, LSID and __Secure-3PSID To include these in your config, set coookie like cookie: SID: xxxxxx; LSID: xxxxxx; \__Secure-3PSID: xxxxx

Notes

The target temperature reported by the integration sometimes seems to be slightly off by a few tens of a degree. This is caused by the fact that the Nest mobile app actually actually allows users to set the temperature in small increments, but the displayed temperature is rounded to the nearest 0.5 degree. In other words, the temperature displayed by the integration is correct, just more exact than what is shown in the app.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 100.0%