Hallo zusammen,
ich bastel seit paar Tagen mit dem Nodemcu Board rum und versuche über Alexa einen HTTP Request abzufeuern. Es läuft wenn ich den Webserver des Nodemcu verwende und per Button die Aktion auslöse, sobald ich es jedoch in die Routine von fauxmo.onMessage einbinde und Alexa schalten lasse passiert nix, TCPDUMP auf dem Zielsystem zeigt jedoch dass eine Anfrage reinkommt vom Nodemcu.
Hat jemand vielleicht einen Tip was hier falsch ist?
Code:#include <ESP8266HTTPClient.h> #include <Arduino.h> #include <ESP8266WiFi.h> #include "fauxmoESP.h" #include "credentials.h" #define SERIAL_BAUDRATE 115200 #define Kaffee 13 #define TV 2 fauxmoESP fauxmo; void tvclient() { HTTPClient http; http.begin("http://192.168.1.1:80/index.html"); //Specify request destination int httpCode = http.GET(); String payload = http.getString(); Serial.println(payload); Serial.println("Test"); http.end(); } // ----------------------------------------------------------------------------- // Wifi // ----------------------------------------------------------------------------- void wifiSetup() { // Set WIFI module to STA mode WiFi.mode(WIFI_STA); // Connect Serial.printf("[WIFI] Connecting to %s ", WIFI_SSID); WiFi.begin(WIFI_SSID, WIFI_PASS); // Wait while (WiFi.status() != WL_CONNECTED) { Serial.print("."); delay(100); } Serial.println(); // Connected! Serial.printf("[WIFI] STATION Mode, SSID: %s, IP address: %s\n", WiFi.SSID().c_str(), WiFi.localIP().toString().c_str()); } void setup() { // Init serial port and clean garbage Serial.begin(SERIAL_BAUDRATE); Serial.println(); Serial.println(); // Wifi wifiSetup(); pinMode(TV, OUTPUT); digitalWrite(TV, HIGH); // Fauxmo fauxmo.addDevice("TV"); fauxmo.addDevice("Kaffeemaschine"); // fauxmoESP 2.0.0 has changed the callback signature to add the device_id, this WARRANTY // it's easier to match devices to action without having to compare strings. fauxmo.onMessage([](unsigned char device_id, const char * device_name, bool state) { Serial.printf("[MAIN] Device #%d (%s) state: %s\n", device_id, device_name, state ? "ON" : "OFF"); if (strcmp(device_name, "TV") == 0) { if (state) { digitalWrite(TV, LOW); tvclient(); } else { digitalWrite(TV, HIGH); } } }); } void loop() { // Since fauxmoESP 2.0 the library uses the "compatibility" mode by // default, this means that it uses WiFiUdp class instead of AsyncUDP. // The later requires the Arduino Core for ESP8266 staging version // whilst the former works fine with current stable 2.3.0 version. // But, since it's not "async" anymore we have to manually poll for UDP // packets fauxmo.handle(); static unsigned long last = millis(); if (millis() - last > 5000) { last = millis(); Serial.printf("[MAIN] Free heap: %d bytes\n", ESP.getFreeHeap()); } }
Grüße
Daniel
Lesezeichen