/* * ESP8266 RGBW controller * Copyright 2020 (c) Mark van Renswoude * * https://git.x2software.net/pub/RGBWifi */ #include #include #include #include #include #include #include "./config.h" #include "./debug.h" #include "./global.h" #include "./main.wifi.h" #include "./main.led.h" #include "./main.debug.h" #include "./server/static.h" #include "./server/settings.h" #include "./server/firmware.h" #include "./server/api.h" // Forward declarations void handleNotFound(AsyncWebServerRequest* request); AsyncWebServer server(80); void setup() { _dinit(); _dln("Initializing LED strip"); strip = new Strip(); strip->init(5); // TODO ledCount currentTime = millis(); _dln("Starting LittleFS"); if (!LittleFS.begin()) _dln("Setup :: failed to mount file system"); _dln("Reading settings"); connectionSettings->read(); systemSettings->read(); _dln("Setting pin modes"); pinMode(systemSettings->pinAPButton(), INPUT_PULLUP); pinMode(systemSettings->pinLEDAP(), OUTPUT); pinMode(systemSettings->pinLEDSTA(), OUTPUT); _dln("Setup :: starting initialization sequence"); for (uint8_t blink = 0; blink <= 1; blink++) { digitalWrite(systemSettings->pinLEDAP(), HIGH); delay(100); digitalWrite(systemSettings->pinLEDAP(), LOW); delay(100); } for (uint8_t blink = 0; blink <= 1; blink++) { digitalWrite(systemSettings->pinLEDSTA(), HIGH); delay(100); digitalWrite(systemSettings->pinLEDSTA(), LOW); delay(100); } /* uint8_t bottomStep = stepsSettings->count() - 1; for (uint8_t i = 0; i < InitialisationBlinkCount; i++) { stairs->set(bottomStep, InitialisationBrightness, InitialisationFadeTime); waitForTransition(); stairs->set(bottomStep, 0, InitialisationFadeTime); waitForTransition(); } */ _dln("Setup :: initializing WiFi"); WiFi.persistent(false); WiFi.mode(WIFI_OFF); initDebug(); initWiFi(); _dln("Setup :: registering routes"); registerStaticRoutes(&server); registerAPIRoutes(&server); registerSettingsRoutes(&server); registerFirmwareRoutes(&server); _dln("Setup :: starting HTTP server"); server.onNotFound(handleNotFound); server.begin(); } void loop() { if (shouldReboot || systemSettingsChanged) { _dln("Loop :: reboot requested, so long and thanks for all the fish!"); delay(100); ESP.restart(); } currentTime = millis(); updateDebugStatus(); if (connectionSettingsChanged) { _dln("Loop :: connection settings changed"); initWiFi(); connectionSettingsChanged = false; } updateWiFi(); updateLED(); } void handleNotFound(AsyncWebServerRequest *request) { _d("HTTP :: not found: "); _dln(request->url()); request->send(404); }