Versuche jetzt schon seit zwei Tagen mein Mozilla WebThings Gateway mit meinen ESP anzusprechen, doch habe bis jetzt noch keinen Erfolg gehabt.
Ich hoffe, mir kann hier jemand mit einem passenden Beispiel helfen.
Danke
Versuche jetzt schon seit zwei Tagen mein Mozilla WebThings Gateway mit meinen ESP anzusprechen, doch habe bis jetzt noch keinen Erfolg gehabt.
Ich hoffe, mir kann hier jemand mit einem passenden Beispiel helfen.
Danke
Klar helfen wir dir.
Wenn du uns mal ein paar genauere Informationen lieferst.
Und deinen Thread musst du nicht doppelt posten, wir sehen das auch so.
Hey,
sorry wegen dem Doppelpost.
#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>
#ifndef STASSID
#define STASSID "xxxx"
#define STAPSK "xxxx"
#endif
const char* ssid = STASSID;
const char* password = STAPSK;
const char* host = "api.github.com";
const int httpsPort = 443;
// Use web browser to view and copy
// SHA1 fingerprint of the certificate
const char fingerprint[] PROGMEM = "59:74:61:88:13:CA:12:34:15:4D:11:0A:C1:7F:E6:67:07:69:42:F5";
void setup() {
Serial.begin(115200);
Serial.println();
Serial.print("connecting to ");
Serial.println(ssid);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
// Use WiFiClientSecure class to create TLS connection
WiFiClientSecure client;
Serial.print("connecting to ");
Serial.println(host);
Serial.printf("Using fingerprint '%s'\n", fingerprint);
client.setFingerprint(fingerprint);
if (!client.connect(host, httpsPort)) {
Serial.println("connection failed");
return;
}
String url = "/repos/esp8266/Arduino/commits/master/status";
Serial.print("requesting URL: ");
Serial.println(url);
client.print(String("GET ") + url + " HTTP/1.1\r\n" +
"Host: " + host + "\r\n" +
"User-Agent: BuildFailureDetectorESP8266\r\n" +
"Connection: close\r\n\r\n");
Serial.println("request sent");
while (client.connected()) {
String line = client.readStringUntil('\n');
if (line == "\r") {
Serial.println("headers received");
break;
}
}
String line = client.readStringUntil('\n');
if (line.startsWith("{\"state\":\"success\"")) {
Serial.println("esp8266/Arduino CI successfull!");
} else {
Serial.println("esp8266/Arduino CI has failed");
}
Serial.println("reply was:");
Serial.println("==========");
Serial.println(line);
Serial.println("==========");
Serial.println("closing connection");
}
void loop() {
}
Diesen Beispielcode habe ich gefunden, doch das Problem ist, dass hier noch irgendwie die Request Header hinzugefpgt werden müssen, bzw. der Payload. Wie mache ich das?
Das ist aber kein PUT, sondern ein GET.
Den Payload setzt Du hinter die URL(also alles ab ?):
https://host/pfad?wert1=123& wert2=Paul
Gruß Tommy
Ja, da hast du recht, hatte ich aus Testzwecken abgeändert und vergessen wieder zu tauschen. Wie schaut das dann aber mit den Request Headern aus? Kann ich die auch irgendwie der URL beifügen?
Danke aber schonmal.
Hier ist PUT für HTTP beschrieben. Das musst Du dann auf Deine HTTPS-Verbindung ummünzen.
Bist Du sicher, dass Du PUT und nicht POST meinst?
Gruß Tommy
Jap Put ist schon richtig
Das Tutorial, was du verlinkt hast, hatte ich auch schon gefunden, aber so einfach ist das nicht mit dem umschreiben auf HTTPS, da in dem Beispiel die HTTPClient Bibliothek genutzt wird und mir wäre kein HTTPSClient Bibliothek bekannt. Und einfach https:// vor anstatt http:// vor die URL zu setzen führt zu Fehlern.
Was willst Du denn mit PUT übertragen? Hier ist es inhaltlich beschrieben.
Gruß Tommy
Ich möchte die Eigenschaften meiner Smarthome Geräte in Mozilla WebThings ändern.
Mit Javascript ist das schon gelungen, das schaut dann ungefähr so aus:
var xhr = new XMLHttpRequest();
xhr.addEventListener('load', function() {
console.log(this.responseText);
});
xhr.open('PUT', 'https://xxxxx.mozilla-iot.org/things/virtual-things-custom-bf5ec3d4-d87d-4df9-bb89-d4a09fa057c6/properties/temperature'); //Virtueller Temperatursensor
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.setRequestHeader('Authorization', 'Bearer <Bearer Token>');
xhr.send(JSON.stringify({"temperature": 40})); // Absenden des Request mit Payload
Und so wie im oberen Beispiel möchte ich das auch mit dem ESP8266 hinbekommen