#include #include #include "fauxmoESP.h" #include #include // WLAN und Fauxmo Einstellungen #include "credentials.h" fauxmoESP fauxmo; ESP8266WebServer server(80); // RGBW LED Einstellungen #define LED_COUNT 200 #define LED_PIN 14 // D5 Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRBW + NEO_KHZ800); // Andere Pins #define BETT_RELAIS 15 // D8 #define SERIAL_BAUDRATE 115200 #define ID_BETT "TEST" // RGBW- und Helligkeitsvariablen int red = 0; int green = 0; int blue = 0; int white = 0; int brightness = 255; bool rainbow = false; // HTML-Seite für die Steuerung const char MAIN_page[] PROGMEM = R"=====(

LED Steuerung

Stelle die Farben und Helligkeit ein:

Rot:
Grün:
Blau:
Weiß:
Helligkeit:
Regenbogen:

)====="; void wifiSetup() { WiFi.mode(WIFI_STA); WiFi.begin(WIFI_SSID, WIFI_PASS); Serial.printf("[WIFI] Connecting to %s ", WIFI_SSID); while (WiFi.status() != WL_CONNECTED) { Serial.print("."); delay(100); } Serial.println(); Serial.printf("[WIFI] Connected! IP address: %s\n", WiFi.localIP().toString().c_str()); } void setup() { Serial.begin(SERIAL_BAUDRATE); Serial.println(); // Initialize NeoPixel strip.begin(); strip.show(); // Initialize Pins pinMode(BETT_RELAIS, OUTPUT); digitalWrite(BETT_RELAIS, LOW); pinMode(LED_PIN, OUTPUT); // Setup WiFi wifiSetup(); // Setup Fauxmo fauxmo.createServer(true); fauxmo.setPort(80); fauxmo.enable(true); Serial.println("Fauxmo Fertig!"); fauxmo.addDevice(ID_BETT); fauxmo.onSetState([](unsigned char device_id, const char *device_name, bool state, unsigned char value) { Serial.printf("[MAIN] Device #%d (%s) state: %s value: %d\n", device_id, device_name, state ? "ON" : "OFF", value); if (strcmp(device_name, ID_BETT) == 0) { digitalWrite(BETT_RELAIS, state ? HIGH : LOW); brightness = value; } }); // Setup Web Server server.on("/", []() { server.send_P(200, "text/html", MAIN_page); }); server.on("/setRGBW", []() { if (server.hasArg("red")) red = server.arg("red").toInt(); if (server.hasArg("green")) green = server.arg("green").toInt(); if (server.hasArg("blue")) blue = server.arg("blue").toInt(); if (server.hasArg("white")) white = server.arg("white").toInt(); if (server.hasArg("brightness")) brightness = server.arg("brightness").toInt(); if (server.hasArg("rainbow")) rainbow = server.arg("rainbow") == "true"; Serial.printf("R: %d, G: %d, B: %d, W: %d, Helligkeit: %d, Regenbogen: %s\n", red, green, blue, white, brightness, rainbow ? "ja" : "nein"); if (rainbow) { Serial.println("Regenbogen-Modus aktiviert"); // Hier Regenbogen-Funktion aufrufen } else { // Hier die LEDs setzen for (int i = 0; i < LED_COUNT; i++) { strip.setPixelColor(i, strip.Color(red, green, blue, white)); } strip.setBrightness(brightness); strip.show(); } server.send(200, "text/plain", "Werte gesetzt!"); }); server.begin(); Serial.println("HTTP Server gestartet"); } void loop() { Serial.println("Vor Handle!"); server.handleClient(); Serial.println("Nach Handle!"); delay(1000); //fauxmo.handle(); /* if (rainbow) { // Regenbogen-Effekt implementieren // Hier den Regenbogen-Effekt implementieren static uint16_t j = 0; for (int i = 0; i < strip.numPixels(); i++) { strip.setPixelColor(i, Wheel((i + j) & 255)); } strip.show(); j++; delay(20); } */ } uint32_t Wheel(byte WheelPos) { WheelPos = 255 - WheelPos; if (WheelPos < 85) { return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3); } else if (WheelPos < 170) { WheelPos -= 85; return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3); } else { WheelPos -= 170; return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0); } }