mirror of
https://github.com/USA-RedDragon/badnest.git
synced 2025-01-18 18:30:43 +00:00
Merge pull request #30 from USA-RedDragon/remove_api_key
Remove API Key from the config.
This commit is contained in:
commit
98490b08f5
@ -3,7 +3,7 @@ import voluptuous as vol
|
||||
from homeassistant.helpers import config_validation as cv
|
||||
from homeassistant.const import CONF_EMAIL, CONF_PASSWORD
|
||||
|
||||
from .const import DOMAIN, CONF_ISSUE_TOKEN, CONF_COOKIE, CONF_APIKEY
|
||||
from .const import DOMAIN, CONF_ISSUE_TOKEN, CONF_COOKIE
|
||||
|
||||
CONFIG_SCHEMA = vol.Schema(
|
||||
{
|
||||
@ -15,7 +15,6 @@ CONFIG_SCHEMA = vol.Schema(
|
||||
{
|
||||
vol.Required(CONF_ISSUE_TOKEN, default=""): cv.string,
|
||||
vol.Required(CONF_COOKIE, default=""): cv.string,
|
||||
vol.Required(CONF_APIKEY, default=""): cv.string
|
||||
}
|
||||
)
|
||||
},
|
||||
@ -30,20 +29,17 @@ def setup(hass, config):
|
||||
password = config[DOMAIN].get(CONF_PASSWORD)
|
||||
issue_token = config[DOMAIN].get(CONF_ISSUE_TOKEN)
|
||||
cookie = config[DOMAIN].get(CONF_COOKIE)
|
||||
api_key = config[DOMAIN].get(CONF_APIKEY)
|
||||
else:
|
||||
email = None
|
||||
password = None
|
||||
issue_token = None
|
||||
cookie = None
|
||||
api_key = None
|
||||
|
||||
hass.data[DOMAIN] = {
|
||||
CONF_EMAIL: email,
|
||||
CONF_PASSWORD: password,
|
||||
CONF_ISSUE_TOKEN: issue_token,
|
||||
CONF_COOKIE: cookie,
|
||||
CONF_APIKEY: api_key
|
||||
}
|
||||
|
||||
return True
|
||||
|
@ -10,6 +10,9 @@ USER_AGENT = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) " \
|
||||
"Chrome/75.0.3770.100 Safari/537.36"
|
||||
URL_JWT = "https://nestauthproxyservice-pa.googleapis.com/v1/issue_jwt"
|
||||
|
||||
# Nest website's (public) API key
|
||||
NEST_API_KEY = "AIzaSyAdkSIMNc51XGNEAYWasX9UOWkS5P6sZE4"
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@ -19,7 +22,6 @@ class NestAPI:
|
||||
password,
|
||||
issue_token,
|
||||
cookie,
|
||||
api_key,
|
||||
device_id=None):
|
||||
self._user_id = None
|
||||
self._access_token = None
|
||||
@ -30,12 +32,11 @@ class NestAPI:
|
||||
self._password = password
|
||||
self._issue_token = issue_token
|
||||
self._cookie = cookie
|
||||
self._api_key = api_key
|
||||
self.login()
|
||||
|
||||
def login(self):
|
||||
if not self._email and not self._password:
|
||||
self._login_google(self._issue_token, self._cookie, self._api_key)
|
||||
self._login_google(self._issue_token, self._cookie)
|
||||
else:
|
||||
self._login_nest(self._email, self._password)
|
||||
|
||||
@ -46,7 +47,7 @@ class NestAPI:
|
||||
self._user_id = r.json()["userid"]
|
||||
self._access_token = r.json()["access_token"]
|
||||
|
||||
def _login_google(self, issue_token, cookie, api_key):
|
||||
def _login_google(self, issue_token, cookie):
|
||||
headers = {
|
||||
'Sec-Fetch-Mode': 'cors',
|
||||
'User-Agent': USER_AGENT,
|
||||
@ -60,7 +61,7 @@ class NestAPI:
|
||||
headers = {
|
||||
'Authorization': 'Bearer ' + access_token,
|
||||
'User-Agent': USER_AGENT,
|
||||
'x-goog-api-key': api_key,
|
||||
'x-goog-api-key': NEST_API_KEY,
|
||||
'Referer': 'https://home.nest.com'
|
||||
}
|
||||
params = {
|
||||
@ -80,14 +81,12 @@ class NestThermostatAPI(NestAPI):
|
||||
password,
|
||||
issue_token,
|
||||
cookie,
|
||||
api_key,
|
||||
device_id=None):
|
||||
super(NestThermostatAPI, self).__init__(
|
||||
email,
|
||||
password,
|
||||
issue_token,
|
||||
cookie,
|
||||
api_key,
|
||||
device_id)
|
||||
self._czfe_url = None
|
||||
self._compressor_lockout_enabled = None
|
||||
@ -290,14 +289,12 @@ class NestTemperatureSensorAPI(NestAPI):
|
||||
password,
|
||||
issue_token,
|
||||
cookie,
|
||||
api_key,
|
||||
device_id=None):
|
||||
super(NestTemperatureSensorAPI, self).__init__(
|
||||
email,
|
||||
password,
|
||||
issue_token,
|
||||
cookie,
|
||||
api_key,
|
||||
device_id)
|
||||
self.temperature = None
|
||||
self._device_id = device_id
|
||||
@ -362,7 +359,6 @@ class NestCameraAPI(NestAPI):
|
||||
password,
|
||||
issue_token,
|
||||
cookie,
|
||||
api_key,
|
||||
region,
|
||||
device_id=None):
|
||||
super(NestCameraAPI, self).__init__(
|
||||
@ -370,7 +366,6 @@ class NestCameraAPI(NestAPI):
|
||||
password,
|
||||
issue_token,
|
||||
cookie,
|
||||
api_key,
|
||||
device_id)
|
||||
# log into dropcam
|
||||
self._session.post(
|
||||
|
@ -15,7 +15,6 @@ from homeassistant.util.dt import utcnow
|
||||
|
||||
from .api import NestCameraAPI
|
||||
from .const import (
|
||||
CONF_APIKEY,
|
||||
CONF_COOKIE,
|
||||
CONF_ISSUE_TOKEN,
|
||||
CONF_REGION,
|
||||
@ -41,7 +40,6 @@ async def async_setup_platform(hass,
|
||||
hass.data[DOMAIN][CONF_PASSWORD],
|
||||
hass.data[DOMAIN][CONF_ISSUE_TOKEN],
|
||||
hass.data[DOMAIN][CONF_COOKIE],
|
||||
hass.data[DOMAIN][CONF_APIKEY],
|
||||
config.get(CONF_REGION)
|
||||
)
|
||||
|
||||
@ -55,7 +53,6 @@ async def async_setup_platform(hass,
|
||||
hass.data[DOMAIN][CONF_PASSWORD],
|
||||
hass.data[DOMAIN][CONF_ISSUE_TOKEN],
|
||||
hass.data[DOMAIN][CONF_COOKIE],
|
||||
hass.data[DOMAIN][CONF_APIKEY],
|
||||
config.get(CONF_REGION),
|
||||
camera["uuid"]
|
||||
))
|
||||
|
@ -30,7 +30,7 @@ from homeassistant.const import (
|
||||
)
|
||||
|
||||
from .api import NestThermostatAPI
|
||||
from .const import DOMAIN, CONF_ISSUE_TOKEN, CONF_COOKIE, CONF_APIKEY
|
||||
from .const import DOMAIN, CONF_ISSUE_TOKEN, CONF_COOKIE
|
||||
|
||||
NEST_MODE_HEAT_COOL = "range"
|
||||
NEST_MODE_ECO = "eco"
|
||||
@ -68,7 +68,6 @@ async def async_setup_platform(hass,
|
||||
hass.data[DOMAIN][CONF_PASSWORD],
|
||||
hass.data[DOMAIN][CONF_ISSUE_TOKEN],
|
||||
hass.data[DOMAIN][CONF_COOKIE],
|
||||
hass.data[DOMAIN][CONF_APIKEY]
|
||||
)
|
||||
|
||||
thermostats = []
|
||||
@ -80,7 +79,6 @@ async def async_setup_platform(hass,
|
||||
hass.data[DOMAIN][CONF_PASSWORD],
|
||||
hass.data[DOMAIN][CONF_ISSUE_TOKEN],
|
||||
hass.data[DOMAIN][CONF_COOKIE],
|
||||
hass.data[DOMAIN][CONF_APIKEY],
|
||||
thermostat
|
||||
)))
|
||||
|
||||
|
@ -1,5 +1,4 @@
|
||||
DOMAIN = 'badnest'
|
||||
CONF_ISSUE_TOKEN = 'issue_token'
|
||||
CONF_COOKIE = 'cookie'
|
||||
CONF_APIKEY = 'api_key'
|
||||
CONF_REGION = 'region'
|
||||
|
@ -3,7 +3,7 @@ import logging
|
||||
from homeassistant.helpers.entity import Entity
|
||||
|
||||
from .api import NestTemperatureSensorAPI
|
||||
from .const import DOMAIN, CONF_APIKEY, CONF_COOKIE, CONF_ISSUE_TOKEN
|
||||
from .const import DOMAIN, CONF_COOKIE, CONF_ISSUE_TOKEN
|
||||
|
||||
from homeassistant.const import (
|
||||
ATTR_BATTERY_LEVEL,
|
||||
@ -26,7 +26,6 @@ async def async_setup_platform(hass,
|
||||
hass.data[DOMAIN][CONF_PASSWORD],
|
||||
hass.data[DOMAIN][CONF_ISSUE_TOKEN],
|
||||
hass.data[DOMAIN][CONF_COOKIE],
|
||||
hass.data[DOMAIN][CONF_APIKEY]
|
||||
)
|
||||
|
||||
sensors = []
|
||||
@ -41,7 +40,6 @@ async def async_setup_platform(hass,
|
||||
hass.data[DOMAIN][CONF_PASSWORD],
|
||||
hass.data[DOMAIN][CONF_ISSUE_TOKEN],
|
||||
hass.data[DOMAIN][CONF_COOKIE],
|
||||
hass.data[DOMAIN][CONF_APIKEY],
|
||||
sensor
|
||||
)))
|
||||
|
||||
|
6
info.md
6
info.md
@ -45,7 +45,6 @@ sensor:
|
||||
badnest:
|
||||
issue_token: "https://accounts.google.com/o/oauth2/iframerpc....."
|
||||
cookie: "OCAK=......"
|
||||
api_key : "#YOURAPIKEYHERE#"
|
||||
|
||||
climate:
|
||||
- platform: badnest
|
||||
@ -61,7 +60,7 @@ sensor:
|
||||
|
||||
Google Login support added with many thanks to: chrisjshull from <https://github.com/chrisjshull/homebridge-nest/>
|
||||
|
||||
The values of `"issue_token"`, `"cookie"` and `"api_key"` 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).
|
||||
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).
|
||||
@ -73,6 +72,3 @@ The values of `"issue_token"`, `"cookie"` and `"api_key"` are specific to your G
|
||||
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`.
|
||||
11. In the 'Filter' box, enter `issue_jwt`
|
||||
12. Click on the last `issue_jwt` call.
|
||||
13. In the Headers tab, under Request Headers, copy the entire `x-goog-api-key` (do not include the `x-goog-api-key:` name). This is your `"api_key"` in `configuration.yaml`.
|
||||
|
Loading…
x
Reference in New Issue
Block a user