-
-
Save beezly/9b2de3749d687fdbff3f to your computer and use it in GitHub Desktop.
function performLogin(email, password) { | |
var payload = { | |
"username" : email, | |
"password" : password | |
}; | |
var options = { | |
"method" : "post", | |
"payload" : payload | |
}; | |
var response = JSON.parse(UrlFetchApp.fetch('https://home.nest.com/user/login', options).getContentText()); | |
if ('error' in response) { | |
throw "Invalid login credentials"; | |
} | |
return response | |
} | |
function getData() { | |
var login_auth = performLogin('<YOUR NEST USERNAME>','<YOUR NEST PASSWORD>'); | |
var headers = { | |
"Authorization" : 'Basic '+login_auth['access_token'], | |
"X-nl-user-id" : login_auth['userid'], | |
"X-nl-protocol-version" : '1', | |
'Accept-Language': 'en-us', | |
'Connection' : 'keep-alive', | |
'Accept' : '*/*', | |
}; | |
var options = { | |
'headers' : headers | |
}; | |
var request=UrlFetchApp.fetch(login_auth['urls']['transport_url']+'/v2/mobile/user.'+login_auth['userid'], options); | |
var result=JSON.parse(request.getContentText()); | |
var structure_id = result['user'][login_auth['userid']]['structures'][0].split('.')[1] | |
var device_id = result['structure'][structure_id]['devices'][0].split('.')[1] | |
var current_temp = result["shared"][device_id]["current_temperature"]; | |
var target_temp = result["shared"][device_id]["target_temperature"]; | |
var humidity = result["device"][device_id]["current_humidity"]/100; | |
var auto_away = result["shared"][device_id]["auto_away"]; | |
var heater_state = result["shared"][device_id]["hvac_heater_state"]; | |
Logger.log("Current Temp: "+current_temp+", Target Temp: "+ target_temp +", Humidity: "+ humidity*100 + "%" ); | |
var time = new Date(); | |
var ss = SpreadsheetApp.getActiveSpreadsheet(); | |
var sheet = ss.getSheets()[0]; | |
// Appends a new row with 3 columns to the bottom of the | |
// spreadsheet containing the values in the array | |
sheet.appendRow( [ time, current_temp, target_temp, humidity, heater_state, auto_away ] ); | |
} | |
Does this still work?
Sorry, I'm a newbie with scripts... do I enter the authentication like this...?I assume the var payload section below is for my google username and password??
var payload = {
"here@there.com" : email,
"MyP@ssw0rd" : passwordThen the var login auth is for my nest auth as follows:
function getData() {
var login_auth = performLogin('here@there.com','MyP@ssw0rd');Thanks
I'm having the same issue @plinley. I don't think this script will work if you migrated your account to Google.
I've never tried with a Google migrated account. It might need changing to get it working.
I'm having the same issue with a "migrated to Google" account.
Thanks
Migrated accounts broke the login code used here. I don't have a fix, but here's a thread that discusses possible fixes/workarounds: gboudreau/nest-api#95
Does this still work?
Sorry, I'm a newbie with scripts... do I enter the authentication like this...?
I assume the var payload section below is for my google username and password??
var payload = {
"here@there.com" : email,
"MyP@ssw0rd" : password
Then the var login auth is for my nest auth as follows:
function getData() {
var login_auth = performLogin('here@there.com','MyP@ssw0rd');
Thanks