Skip to content

accessing nest_api with http.get() #4300

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
vjoris opened this issue Feb 5, 2018 · 4 comments
Closed

accessing nest_api with http.get() #4300

vjoris opened this issue Feb 5, 2018 · 4 comments

Comments

@vjoris
Copy link

vjoris commented Feb 5, 2018

Basic Infos

The goal is to let a switch respond on the data received from my nest Thermostad. I'm using the Nest_API to get the result

Hardware

Hardware: ESP8266

Description

I'm trying to access the Nest API without any success. I always get some kind of redirection error.
Or I get the 307 error code (redirection) or an 400. With the first one, there's no redirection location.

What do i do wrong? Is it possible that the library doesn't support HTPPS? Is there a solution for it?

Settings in IDE

Module: Generic ESP8266 Module

Sketch

#include <ESP8266HTTPClient.h>
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266mDNS.h>

#define USE_SERIAL Serial

String accessurl = "https://api.home.nest.com/oauth2/access_token";
MDNSResponder mdns;

// My Network cred.
const char* ssid = "Blanked out";
const char* password = "Blanked out";

int gpio13Led = 13;
int gpio12Relay = 12;

void setup(void){
// preparing GPIOs
pinMode(gpio13Led, OUTPUT);
digitalWrite(gpio13Led, HIGH);

pinMode(gpio12Relay, OUTPUT);
digitalWrite(gpio12Relay, HIGH);

Serial.begin(115200);
delay(5000);
WiFi.begin(ssid, password);
Serial.println("");

// Wait for connection
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP());

if (mdns.begin("esp8266", WiFi.localIP())) {
Serial.println("MDNS responder started");
}
}
void loop(void){
Serial.println("Wifi Up - Test Start!");
delay(10000);
if((WiFi.status() != WL_CONNECTED)) {
Serial.println("wifi down");
return;
}

HTTPClient http;
//Here I gave the footprint along with the url. But I'm not sure if it works.
http.begin("https://developer-api.nest.com/", "87:CB:F2:E6:44:C0:AA:F2:4C:28:B2:97:85:70:18:92:45:1B:A4:57");

//http.addHeader("Cache-Control", "no-cache", true, true);
//http.addHeader("Postman-Token", "419da1fa-6070-3338-c215-8be740891136", true, true);
http.addHeader("Authorization", "Bearer c.blanked out", true, true);
http.addHeader("Host", "developer-api.nest.com", true, true);
http.addHeader("Content-Type", "application/json", false, true);



int httpCode = http.GET();    
Serial.println("request sent: \n");
Serial.println(httpCode); //Doesn't seem to work? I never see any outprint.
if (httpCode == HTTP_CODE_OK) {
   String payload = http.getString();
   Serial.printf("[HTTP] GET response: %s", payload.c_str());
 } else {
   String payload = http.getString();
   String loc = http.header("Location");
   Serial.printf("[HTTP] GE returned %d. kapot, error: %s; response: %s, new location: %s\n", httpCode, http.errorToString(httpCode).c_str(), payload.c_str(), loc.c_str());
   
 }
 http.end();

}

@polweiss
Copy link

Hi! I'm after the same project, did you finally find a solution?

@d-a-v
Copy link
Collaborator

d-a-v commented Oct 18, 2018

Please upgrade to BearSSL, and report back.
#5009 allows automatic redirections handling too.

@vjoris
Copy link
Author

vjoris commented Nov 24, 2018

Hi Polweiss. I'm sorry for my terrible late answer. In the end I searched for an other solution and switched to raspberry Pi 1 to run Python code on it. On the nest developers page you find beautiful easy examples on how to open a stream to your nest and get an update with every value that has been changed.
Nest changed the polling times. So now you can't poll every minute any-more. So the stream is a useful alternative.
I've seen that you can use python as well on the ESP but I'd never tried it. So good luck and feel free ta ask extra questions if needed!

@devyte
Copy link
Collaborator

devyte commented Nov 24, 2018

Closing as no longer relevamt to OP, due to axtls being deprecated, and due to no feedback about bssl.

@devyte devyte closed this as completed Nov 24, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants