FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: KNUT345 am 23 Mai 2021, 16:09:25

Titel: [gelöst] Dummy über Wlan ansprechen
Beitrag von: KNUT345 am 23 Mai 2021, 16:09:25
Hallo Zusammen,
ich möchte einen ESP8266 an FHEM anbinden.
Ich hab schon einiges über ESPEasy und MQTT gelesen und sehe die Vorteile,
möchte es aber über WLAN Client und einen Dummy machen, Beispiel sieht so simple aus.


define MEINDEVICE dummy



#include "ESP8266WiFi.h"

const char* server = "192.168.1.1"; // FHEM Server
const int serverport = 8083;
const char* ssid = "MEINE_WLAN_SSID";
const char* passwort  = "MEIN_WLAN_PASSWORT";

WiFiClient client;

unsigned long bewegung = 0;
 
void setup() {
Serial.begin (9600); // Monitor starten

Serial.println(" ");
Serial.print("Verbindungsaufbau mit: ");
Serial.println(ssid);

WiFi.begin(ssid, passwort);

while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(100);
}

Serial.println(" ");
Serial.println("WLAN verbunden!"); 
Serial.println("IP Addresse: ");
Serial.println(WiFi.localIP());
}

void loop() {

WiFiClient client;
if (!client.connect(server, serverport)) {
Serial.println("Verbindungsfehler");
return;
}

// Daten per GET senden
String url = "/fhem?";
url += "cmd.MEINDEVICE=";
url += "set%20MEINDEVICE%20on";
 
Serial.println(url);

client.print(String("GET ") + url + " HTTP/1.1\r\n" +
             "Host: " + server + "\r\n" +
             "Connection: close\r\n\r\n");
delay(50);

// Server-Antwort ausgeben
while(client.available()){
String antwort = client.readStringUntil('\r');
Serial.print(antwort);
}

delay(1000);
}


Soweit so gut, allerdings bekomme ich nun in FHEM eine Fehlermeldung:
ZitatFHEMWEB WEB CSRF error:  ne csrf_270651098521039 for client WEB_xxx
und am Client die Meldung:
Zitat
06:18:08.184 -> /fhem?cmd.Bewegung=set%20Bewegung%20on
06:18:08.219 -> HTTP/1.1 400 Bad Request
06:18:08.219 -> Content-Length: 0
06:18:08.254 -> Cache-Control: no-cache, no-store, must-revalidate
06:18:08.289 -> X-FHEM-csrfToken: csrf_270651098521039
06:18:08.359 -> Content-Type: text/html; charset=UTF-8

Wie muss ich mein Beispiel anpassen?

Danke im Voraus
Knut
Titel: Antw:Dummy über Wlan ansprechen
Beitrag von: MadMax-FHEM am 23 Mai 2021, 16:23:39
Das ist ein Sicherheits-Feature bzgl. csrf: https://wiki.fhem.de/wiki/CsrfToken-HowTo
EDIT: hätte sich leicht finden lassen, wenn danach gesucht worden wäre ;)

D.h. entweder deaktivieren: NICHT RATSAM!

Oder fixen Token bei einem extra FhemWeb NUR DAFÜR: schon besser... Und u.U. noch einschränken auf bestimmte IP etc.

Oder: eben etwas im ESP programmieren den aktuellen Token zu bekommen und dann eben entsprechend mit übergeben...
EDIT: ist im Wiki ja "prinzipiell" beschrieben...

Oder ganz andersrum: ESP mit einem WebServer-Beispiel "bestücken" und dann per HTTPMOD den ESP "abfragen"...

EDIT: oder eben doch anders einbinden ;)

Gruß, Joachim
Titel: Antw:Dummy über Wlan ansprechen
Beitrag von: KNUT345 am 23 Mai 2021, 22:43:18
Wenn man immer wüsste was man suchen muss.
Danke.
Titel: Antw:Dummy über Wlan ansprechen
Beitrag von: MadMax-FHEM am 23 Mai 2021, 22:45:17
Ich hab einfach den csrf-Fehler aus deinem Log-Auszug in Google eingekippt...
Und schwupp: kam der Link zum csrf-Token-Wiki... ;)

Und, für welche Variante hast du dich entschieden?

Gruß, Joachim
Titel: Antw:[gelöst] Dummy über Wlan ansprechen
Beitrag von: KNUT345 am 24 Mai 2021, 09:51:00
Ja, so hab ich das auch gemacht,
aber anscheinend habe ich vor lauter Antworten die Lösung nicht gesehen.
Ich habe die Variante mit der API gewählt.

Danke
Knut
Titel: Antw:[gelöst] Dummy über Wlan ansprechen
Beitrag von: KNUT345 am 03 Juni 2021, 17:44:43
Nachtrag.

Die Sache über Wlan war mir auf Dauer nicht flexibel genug,
hab auf MQTT2 umgestellt.
Nach einigen Anlaufschwierigkeiten nun super zufrieden.

Grüße
Knut