diff --git a/.gitignore b/.gitignore index 74e5dde34f..a95dd5ac22 100644 --- a/.gitignore +++ b/.gitignore @@ -7,7 +7,7 @@ /wled00/Release /wled00/extLibs /platformio_override.ini -/wled00/user_config_override.h +/wled00/my_config.h /build_output .DS_Store .gitignore diff --git a/pio/override_copy.py b/pio/override_copy.py deleted file mode 100644 index 82549e7501..0000000000 --- a/pio/override_copy.py +++ /dev/null @@ -1,9 +0,0 @@ -Import('env') -import os -import shutil - -# copy WLED00/user_config_override_sample.h to WLED00/user_config_override.h -if os.path.isfile("wled00/user_config_override.h"): - print ("*** use provided user_config_override.h as planned ***") -else: - shutil.copy("wled00/user_config_override_sample.h", "wled00/user_config_override.h") diff --git a/pio/user_config_copy.py b/pio/user_config_copy.py new file mode 100644 index 0000000000..1251ca178d --- /dev/null +++ b/pio/user_config_copy.py @@ -0,0 +1,9 @@ +Import('env') +import os +import shutil + +# copy WLED00/my_config_sample.h to WLED00/my_config.h +if os.path.isfile("wled00/my_config.h"): + print ("*** use existing my_config.h ***") +else: + shutil.copy("wled00/my_config_sample.h", "wled00/my_config.h") diff --git a/platformio.ini b/platformio.ini index a19378466a..e95f27f1d9 100644 --- a/platformio.ini +++ b/platformio.ini @@ -2,20 +2,13 @@ ; Please visit documentation: https://docs.platformio.org/page/projectconf.html [platformio] -src_dir = ./wled00 -data_dir = ./wled00/data -lib_dir = ./wled00/src -build_cache_dir = ~/.buildcache -extra_configs = - platformio_override.ini - # ------------------------------------------------------------------------------ # ENVIRONMENTS # # Please uncomment one of the lines below to select your board(s) # ------------------------------------------------------------------------------ -# Travis CI binaries +# Travis CI binaries (comment this out with a ';' when building for your own board) default_envs = travis_esp8266, travis_esp32 # Release binaries @@ -41,36 +34,21 @@ default_envs = travis_esp8266, travis_esp32 ; default_envs = m5atom ; default_envs = esp32_poe +src_dir = ./wled00 +data_dir = ./wled00/data +build_cache_dir = ~/.buildcache +extra_configs = + platformio_override.ini + [common] # ------------------------------------------------------------------------------ # PLATFORM: # !! DO NOT confuse platformio's ESP8266 development platform with Arduino core for ESP8266 # -# arduino core 2.3.0 = platformIO 1.5.0 -# arduino core 2.4.0 = platformIO 1.6.0 -# arduino core 2.4.1 = platformIO 1.7.3 -# arduino core 2.4.2 = platformIO 1.8.0 -# arduino core 2.5.0 = platformIO 2.0.4 -# arduino core 2.5.1 = platformIO 2.1.1 -# arduino core 2.5.2 = platformIO 2.2.3 -# arduino core 2.6.1 = platformIO 2.3.0 -# arduino core 2.6.2 = platformIO 2.3.1 # arduino core 2.6.3 = platformIO 2.3.2 # arduino core 2.7.0 = platformIO 2.5.0 # ------------------------------------------------------------------------------ -arduino_core_2_3_0 = espressif8266@1.5.0 -arduino_core_2_4_0 = espressif8266@1.6.0 -arduino_core_2_4_1 = espressif8266@1.7.3 -arduino_core_2_4_2 = espressif8266@1.8.0 -arduino_core_2_5_0 = espressif8266@2.0.4 -arduino_core_2_5_1 = espressif8266@2.1.1 -arduino_core_2_5_2 = espressif8266@2.2.3 -arduino_core_2_6_1 = espressif8266@2.3.0 -arduino_core_2_6_2 = espressif8266@2.3.1 arduino_core_2_6_3 = espressif8266@2.3.3 -arduino_core_2_7_1 = espressif8266@2.5.1 -arduino_core_2_7_2 = espressif8266@2.6.0 -arduino_core_2_7_3 = espressif8266@2.6.1 arduino_core_2_7_4 = espressif8266@2.6.2 # Development platforms @@ -79,7 +57,6 @@ arduino_core_git = https://github.com/platformio/platform-espressif8266#feature/ # Platform to use for ESP8266 platform_wled_default = ${common.arduino_core_2_7_4} -platform_latest = ${common.arduino_core_2_7_4} # We use 2.7.4.7 for all, includes PWM flicker fix and Wstring optimization platform_packages = tasmota/framework-arduinoespressif8266 @ 3.20704.7 @@ -92,7 +69,7 @@ debug_flags = -D DEBUG=1 -D WLED_DEBUG -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_CLIENT #-DDEBUG_ESP_CORE is not working right now # ------------------------------------------------------------------------------ -# FLAGS: ldscript +# FLAGS: ldscript (available ldscripts at https://github.com/esp8266/Arduino/tree/master/tools/sdk/ld) # ldscript_512k ( 512 KB) = 487 KB sketch, 4 KB eeprom, no spiffs, 16 KB reserved # ldscript_1m0m (1024 KB) = 999 KB sketch, 4 KB eeprom, no spiffs, 16 KB reserved # ldscript_2m1m (2048 KB) = 1019 KB sketch, 4 KB eeprom, 1004 KB spiffs, 16 KB reserved @@ -103,6 +80,7 @@ debug_flags = -D DEBUG=1 -D WLED_DEBUG -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_CLIENT # -DPIO_FRAMEWORK_ARDUINO_LWIP_HIGHER_BANDWIDTH = v1.4 Higher Bandwidth (default) # -DPIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY = v2 Lower Memory # -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH = v2 Higher Bandwidth +# -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH_LOW_FLASH # # BearSSL performance: # When building with -DSECURE_CLIENT=SECURE_CLIENT_BEARSSL, please add `board_build.f_cpu = 160000000` to the environment configuration @@ -127,36 +105,24 @@ build_flags = -Wno-sequence-point -Wno-narrowing -Wno-reorder - -Wno-unused-local-typedefs -DMQTT_MAX_PACKET_SIZE=1024 -DSECURE_CLIENT=SECURE_CLIENT_BEARSSL -DBEARSSL_SSL_BASIC -D CORE_DEBUG_LEVEL=0 -D NDEBUG - -DFP_IN_IROM -; NONOSDK22x_190703 = 2.2.2-dev(38a443e) - -DPIO_FRAMEWORK_ARDUINO_ESPRESSIF_SDK22x_190703 -; lwIP 2 - Higher Bandwidth no Features - -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH_LOW_FLASH -; VTABLES in Flash - -DVTABLES_IN_FLASH -; restrict to minimal mime-types - -DMIMETYPE_MINIMAL -#build_flags for the IRremoteESP8266 library (enabled decoders have to appear here) + #build_flags for the IRremoteESP8266 library (enabled decoders have to appear here) -D _IR_ENABLE_DEFAULT_=false -D DECODE_HASH=true -D DECODE_NEC=true -D DECODE_SONY=true -D DECODE_SAMSUNG=true -D DECODE_LG=true + -DWLED_USE_MY_CONFIG build_unflags = -Wall -Wdeprecated-declarations -build_flags_esp8266 = ${common.build_flags} -DESP8266 -build_flags_esp32 = ${esp32.build_flags} -DARDUINO_ARCH_ESP32 - # enables all features for travis CI build_flags_all_features = -D WLED_USE_ANALOG_LED @@ -167,34 +133,36 @@ build_flags_all_features = -D WLED_ENABLE_MQTT -D WLED_ENABLE_WEBSOCKETS +build_flags_esp8266 = ${common.build_flags} ${esp8266.build_flags} +build_flags_esp32 = ${common.build_flags} ${esp32.build_flags} + ldscript_512k = eagle.flash.512k.ld ;for older versions change this to eagle.flash.512k0.ld ldscript_1m0m = eagle.flash.1m.ld ;for older versions change this to eagle.flash.1m0.ld ldscript_2m1m = eagle.flash.2m1m.ld ldscript_4m1m = eagle.flash.4m1m.ld -ldscript_4m3m = eagle.flash.4m3m.ld -shared_libdeps_dir = ./wled00/src +[esp8266] +build_flags = + -DESP8266 + -DFP_IN_IROM +; NONOSDK22x_190703 = 2.2.2-dev(38a443e) + -DPIO_FRAMEWORK_ARDUINO_ESPRESSIF_SDK22x_190703 +; lwIP 2 - Higher Bandwidth no Features + -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH_LOW_FLASH +; VTABLES in Flash + -DVTABLES_IN_FLASH +; restrict to minimal mime-types + -DMIMETYPE_MINIMAL [esp32] build_flags = -w -g - -DMQTT_MAX_PACKET_SIZE=1024 - -DSECURE_CLIENT=SECURE_CLIENT_BEARSSL - -DBEARSSL_SSL_BASIC - -D CORE_DEBUG_LEVEL=0 - -D NDEBUG -#build_flags for the IRremoteESP8266 library (enabled decoders have to appear here) - -D _IR_ENABLE_DEFAULT_=false - -D DECODE_HASH=true - -D DECODE_NEC=true - -D DECODE_SONY=true - -D DECODE_SAMSUNG=true - -D DECODE_LG=true + -DARDUINO_ARCH_ESP32 [scripts_defaults] extra_scripts = pio/name-firmware.py pio/gzip-firmware.py pio/strip-floats.py - pio/override_copy.py + pio/user_config_copy.py # ------------------------------------------------------------------------------ # COMMON SETTINGS: @@ -204,12 +172,8 @@ framework = arduino board_build.flash_mode = dout monitor_speed = 115200 upload_speed = 115200 -; *** Upload Serial reset method for Wemos and NodeMCU -upload_resetmethod = nodemcu -upload_port = COM5 -lib_extra_dirs = - ${common.shared_libdeps_dir} +lib_extra_dirs = ./wled00/src # ------------------------------------------------------------------------------ # LIBRARIES: required dependencies @@ -335,7 +299,7 @@ lib_ignore = [env:esp8285_4CH_MagicHome] board = esp8285 -platform = ${common.platform_latest} +platform = ${common.platform_wled_default} platform_packages = ${common.platform_packages} board_build.ldscript = ${common.ldscript_1m0m} build_unflags = ${common.build_unflags} @@ -343,7 +307,7 @@ build_flags = ${common.build_flags_esp8266} -D WLED_DISABLE_HUESYNC -D WLED_USE_ [env:esp8285_4CH_H801] board = esp8285 -platform = ${common.platform_latest} +platform = ${common.platform_wled_default} platform_packages = ${common.platform_packages} board_build.ldscript = ${common.ldscript_1m0m} build_unflags = ${common.build_unflags} @@ -351,7 +315,7 @@ build_flags = ${common.build_flags_esp8266} -D WLED_DISABLE_HUESYNC -D WLED_USE_ [env:esp8285_5CH_H801] board = esp8285 -platform = ${common.platform_latest} +platform = ${common.platform_wled_default} platform_packages = ${common.platform_packages} board_build.ldscript = ${common.ldscript_1m0m} build_unflags = ${common.build_unflags} @@ -359,7 +323,7 @@ build_flags = ${common.build_flags_esp8266} -D WLED_DISABLE_HUESYNC -D WLED_USE_ [env:d1_mini_5CH_Shojo_PCB] board = d1_mini -platform = ${common.platform_latest} +platform = ${common.platform_wled_default} platform_packages = ${common.platform_packages} board_build.ldscript = ${common.ldscript_4m1m} build_unflags = ${common.build_unflags} @@ -395,7 +359,7 @@ build_flags = ${common.build_flags_esp8266} [env:custom_LEDPIN_4] board = d1_mini -platform = ${common.platform_latest} +platform = ${common.platform_wled_default} platform_packages = ${common.platform_packages} board_build.ldscript = ${common.ldscript_4m1m} build_unflags = ${common.build_unflags} @@ -403,7 +367,7 @@ build_flags = ${common.build_flags_esp8266} -D LEDPIN=4 -D IRPIN=5 [env:custom_LEDPIN_16] board = d1_mini -platform = ${common.platform_latest} +platform = ${common.platform_wled_default} platform_packages = ${common.platform_packages} board_build.ldscript = ${common.ldscript_4m1m} build_unflags = ${common.build_unflags} @@ -412,7 +376,7 @@ build_flags = ${common.build_flags_esp8266} -D LEDPIN=16 [env:custom_LEDPIN_3] board = d1_mini -platform = ${common.platform_latest} +platform = ${common.platform_wled_default} platform_packages = ${common.platform_packages} board_build.ldscript = ${common.ldscript_4m1m} build_unflags = ${common.build_unflags} @@ -420,7 +384,7 @@ build_flags = ${common.build_flags_esp8266} -D LEDPIN=3 [env:custom_APA102] board = d1_mini -platform = ${common.platform_latest} +platform = ${common.platform_wled_default} platform_packages = ${common.platform_packages} board_build.ldscript = ${common.ldscript_4m1m} build_unflags = ${common.build_unflags} @@ -428,7 +392,7 @@ build_flags = ${common.build_flags_esp8266} -D USE_APA102 [env:custom_WS2801] board = d1_mini -platform = ${common.platform_latest} +platform = ${common.platform_wled_default} platform_packages = ${common.platform_packages} board_build.ldscript = ${common.ldscript_4m1m} build_unflags = ${common.build_unflags} @@ -509,7 +473,7 @@ build_flags = ${common.build_flags_esp8266} -D LEDPIN=3 [env:codm-controller-0.4-WS2801] board = esp_wroom_02 -platform = ${common.platform_latest} +platform = ${common.platform_wled_default} platform_packages = ${common.platform_packages} board_build.ldscript = ${common.ldscript_2m1m} build_unflags = ${common.build_unflags} @@ -517,7 +481,7 @@ build_flags = ${common.build_flags_esp8266} -D USE_WS2801 -D CLKPIN=13 -D DATAPI [env:codm-controller-0.4-APA102] board = esp_wroom_02 -platform = ${common.platform_latest} +platform = ${common.platform_wled_default} platform_packages = ${common.platform_packages} board_build.ldscript = ${common.ldscript_2m1m} build_unflags = ${common.build_unflags} @@ -533,7 +497,7 @@ build_flags = ${common.build_flags_esp8266} [env:codm-controller-0.5-WS2801] board = esp_wroom_02 -platform = ${common.platform_latest} +platform = ${common.platform_wled_default} platform_packages = ${common.platform_packages} board_build.ldscript = ${common.ldscript_2m1m} build_unflags = ${common.build_unflags} @@ -541,7 +505,7 @@ build_flags = ${common.build_flags_esp8266} -D USE_WS2801 #-D CLKPIN=0 -D DATAPI [env:codm-controller-0.5-APA102] board = esp_wroom_02 -platform = ${common.platform_latest} +platform = ${common.platform_wled_default} platform_packages = ${common.platform_packages} board_build.ldscript = ${common.ldscript_2m1m} build_unflags = ${common.build_unflags} diff --git a/platformio_override.ini.example b/platformio_override.ini.example index e6c636a3a1..cf9da26828 100644 --- a/platformio_override.ini.example +++ b/platformio_override.ini.example @@ -15,8 +15,8 @@ board_build.ldscript = ${common.ldscript_1m0m} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags_esp8266} ; ********************************************************************* -; *** Use custom settings from file user_config_override.h - -DUSE_CONFIG_OVERRIDE +; *** Use custom settings from file my_config.h + -DWLED_USE_MY_CONFIG ; ********************************************************************* ; -D WLED_DISABLE_OTA ; -D WLED_DISABLE_ALEXA diff --git a/readme.md b/readme.md index a1112bd916..e85f98ecc7 100644 --- a/readme.md +++ b/readme.md @@ -6,7 +6,7 @@ - +

diff --git a/wled00/const.h b/wled00/const.h index a681012012..1f131d76b7 100644 --- a/wled00/const.h +++ b/wled00/const.h @@ -116,8 +116,11 @@ #define NTP_PACKET_SIZE 48 -// maximum number of LEDs - MAX_LEDS is coming from the JSON response getting too big, MAX_LEDS_DMA will become a timing issue +// maximum number of LEDs - more than 1500 LEDs (or 500 DMA "LEDPIN 3" driven ones) will cause a low memory condition on ESP8266 +#ifndef MAX_LEDS #define MAX_LEDS 1500 +#endif + #define MAX_LEDS_DMA 500 // string temp buffer (now stored in stack locally) diff --git a/wled00/my_config_sample.h b/wled00/my_config_sample.h new file mode 100644 index 0000000000..fc54c1c5c0 --- /dev/null +++ b/wled00/my_config_sample.h @@ -0,0 +1,25 @@ +#pragma once + +/* + * Welcome! + * You can use the file "my_config.h" to make changes to the way WLED is compiled! + * It is possible to enable and disable certain features as well as set defaults for some runtime changeable settings. + * + * How to use: + * PlatformIO: Just compile the unmodified code once! The file "my_config.h" will be generated automatically and now you can make your changes. + * + * ArduinoIDE: Make a copy of this file and name it "my_config.h". Go to wled.h and uncomment "#define WLED_USE_MY_CONFIG" in the top of the file. + * + * DO NOT make changes to the "my_config_sample.h" file directly! Your changes will not be applied. + */ + +// force the compiler to show a warning to confirm that this file is included +#warning **** my_config.h: Settings from this file are honored **** + +/* Uncomment to use your WIFI settings as defaults + //WARNING: this will hardcode these as the default even after a factory reset +#define CLIENT_SSID "Your_SSID" +#define CLIENT_PASS "Your_Password" +*/ + +//#define MAX_LEDS 1500 //Maximum total LEDs. More than 1500 might create a low memory situation on ESP8266. \ No newline at end of file diff --git a/wled00/user_config_override_sample.h b/wled00/user_config_override_sample.h deleted file mode 100644 index 39a61d16d7..0000000000 --- a/wled00/user_config_override_sample.h +++ /dev/null @@ -1,550 +0,0 @@ -// force the compiler to show a warning to confirm that this file is included -#warning **** user_config_override.h: Using Settings from this File **** - -/* Uncomment and use your WIFI settings -#define CLIENT_SSID "Your_SSID" -#define CLIENT_PASS "Your_Password" -*/ - -// ESP8266-01 (blue) got too little storage space to work with all features of WLED. To use it, you must use ESP8266 Arduino Core v2.4.2 and the setting 512K(No SPIFFS). -// ESP8266-01 (black) has 1MB flash and can thus fit the whole program. Use 1M(64K SPIFFS). -// Uncomment some of the following lines to disable features to compile for ESP8266-01 (max flash size 434kB): -// Alternatively, with platformio pass your chosen flags to your custom build target in platformio.ini.override - -// You are required to disable over-the-air updates: -//#define WLED_DISABLE_OTA // saves 14kb - -// You need to choose some of these features to disable: -//#define WLED_DISABLE_ALEXA // saves 11kb -//#define WLED_DISABLE_BLYNK // saves 6kb -//#define WLED_DISABLE_CRONIXIE // saves 3kb -//#define WLED_DISABLE_HUESYNC // saves 4kb -//#define WLED_DISABLE_INFRARED // there is no pin left for this on ESP8266-01, saves 12kb -#ifndef WLED_DISABLE_MQTT - #define WLED_ENABLE_MQTT // saves 12kb -#endif -#define WLED_ENABLE_ADALIGHT // saves 500b only -//#define WLED_ENABLE_DMX // uses 3.5kb (use LEDPIN other than 2) -#define WLED_ENABLE_LOXONE // uses 1.2kb -#ifndef WLED_DISABLE_WEBSOCKETS - #define WLED_ENABLE_WEBSOCKETS -#endif - -#define WLED_DISABLE_FILESYSTEM // SPIFFS is not used by any WLED feature yet -//#define WLED_ENABLE_FS_SERVING // Enable sending html file from SPIFFS before serving progmem version -//#define WLED_ENABLE_FS_EDITOR // enable /edit page for editing SPIFFS content. Will also be disabled with OTA lock - -// to toggle usb serial debug (un)comment the following line -//#define WLED_DEBUG - -// Library inclusions. -#include -#ifdef ESP8266 - #include - #include - #include - extern "C" - { - #include - } -#else // ESP32 - #include - #include "esp_wifi.h" - #include - #include - #include "SPIFFS.h" -#endif - -#include -#include -#include -#include -#ifndef WLED_DISABLE_OTA - #include -#endif -#include -#include "src/dependencies/time/TimeLib.h" -#include "src/dependencies/timezone/Timezone.h" - -#ifndef WLED_DISABLE_ALEXA - #define ESPALEXA_ASYNC - #define ESPALEXA_NO_SUBPAGE - #define ESPALEXA_MAXDEVICES 1 - // #define ESPALEXA_DEBUG - #include "src/dependencies/espalexa/Espalexa.h" -#endif -#ifndef WLED_DISABLE_BLYNK - #include "src/dependencies/blynk/BlynkSimpleEsp.h" -#endif - -#ifdef WLED_ENABLE_DMX - #include "src/dependencies/dmx/ESPDMX.h" -#endif - -#include "src/dependencies/e131/ESPAsyncE131.h" -#include "src/dependencies/async-mqtt-client/AsyncMqttClient.h" - -#define ARDUINOJSON_DECODE_UNICODE 0 -#include "src/dependencies/json/AsyncJson-v6.h" -#include "src/dependencies/json/ArduinoJson-v6.h" - -#include "fcn_declare.h" -#include "html_ui.h" -#include "html_settings.h" -#include "html_other.h" -#include "FX.h" -#include "ir_codes.h" -#include "const.h" - -#ifndef CLIENT_SSID - #define CLIENT_SSID DEFAULT_CLIENT_SSID -#endif - -#ifndef CLIENT_PASS - #define CLIENT_PASS "" -#endif - -#if IR_PIN < 0 - #ifndef WLED_DISABLE_INFRARED - #define WLED_DISABLE_INFRARED - #endif -#endif - -#ifndef WLED_DISABLE_INFRARED - #include - #include - #include -#endif - -// remove flicker because PWM signal of RGB channels can become out of phase (part of core as of Arduino core v2.7.0) -//#if defined(WLED_USE_ANALOG_LEDS) && defined(ESP8266) -// #include "src/dependencies/arduino/core_esp8266_waveform.h" -//#endif - -// enable additional debug output -#ifdef WLED_DEBUG - #ifndef ESP8266 - #include - #endif - #define DEBUG_PRINT(x) Serial.print(x) - #define DEBUG_PRINTLN(x) Serial.println(x) - #define DEBUG_PRINTF(x) Serial.printf(x) -#else - #define DEBUG_PRINT(x) - #define DEBUG_PRINTLN(x) - #define DEBUG_PRINTF(x) -#endif - -// GLOBAL VARIABLES -// both declared and defined in header (solution from http://www.keil.com/support/docs/1868.htm) -// -//e.g. byte test = 2 becomes WLED_GLOBAL byte test _INIT(2); -// int arr[]{0,1,2} becomes WLED_GLOBAL int arr[] _INIT_N(({0,1,2})); - -#ifndef WLED_DEFINE_GLOBAL_VARS -# define WLED_GLOBAL extern -# define _INIT(x) -# define _INIT_N(x) -#else -# define WLED_GLOBAL -# define _INIT(x) = x - -//needed to ignore commas in array definitions -#define UNPACK( ... ) __VA_ARGS__ -# define _INIT_N(x) UNPACK x -#endif - -// Global Variable definitions -WLED_GLOBAL char versionString[] _INIT("0.10.2"); -#define WLED_CODENAME "Fumikiri" - -// AP and OTA default passwords (for maximum security change them!) -WLED_GLOBAL char apPass[65] _INIT(DEFAULT_AP_PASS); -WLED_GLOBAL char otaPass[33] _INIT(DEFAULT_OTA_PASS); - -// Hardware CONFIG (only changeble HERE, not at runtime) -// LED strip pin, button pin and IR pin changeable in NpbWrapper.h! - -WLED_GLOBAL byte auxDefaultState _INIT(0); // 0: input 1: high 2: low -WLED_GLOBAL byte auxTriggeredState _INIT(0); // 0: input 1: high 2: low -WLED_GLOBAL char ntpServerName[33] _INIT("0.wled.pool.ntp.org"); // NTP server to use - -// WiFi CONFIG (all these can be changed via web UI, no need to set them here) -WLED_GLOBAL char clientSSID[33] _INIT(CLIENT_SSID); -WLED_GLOBAL char clientPass[65] _INIT(CLIENT_PASS); -WLED_GLOBAL char cmDNS[33] _INIT("x"); // mDNS address (placeholder, is replaced by wledXXXXXX.local) -WLED_GLOBAL char apSSID[33] _INIT(""); // AP off by default (unless setup) -WLED_GLOBAL byte apChannel _INIT(1); // 2.4GHz WiFi AP channel (1-13) -WLED_GLOBAL byte apHide _INIT(0); // hidden AP SSID -WLED_GLOBAL byte apBehavior _INIT(AP_BEHAVIOR_BOOT_NO_CONN); // access point opens when no connection after boot by default -WLED_GLOBAL IPAddress staticIP _INIT_N((( 0, 0, 0, 0))); // static IP of ESP -WLED_GLOBAL IPAddress staticGateway _INIT_N((( 0, 0, 0, 0))); // gateway (router) IP -WLED_GLOBAL IPAddress staticSubnet _INIT_N(((255, 255, 255, 0))); // most common subnet in home networks -WLED_GLOBAL bool noWifiSleep _INIT(false); // disabling modem sleep modes will increase heat output and power usage, but may help with connection issues - -// LED CONFIG -WLED_GLOBAL uint16_t ledCount _INIT(30); // overcurrent prevented by ABL -WLED_GLOBAL bool useRGBW _INIT(false); // SK6812 strips can contain an extra White channel -WLED_GLOBAL bool turnOnAtBoot _INIT(true); // turn on LEDs at power-up -WLED_GLOBAL byte bootPreset _INIT(0); // save preset to load after power-up - -WLED_GLOBAL byte col[] _INIT_N(({ 255, 160, 0, 0 })); // current RGB(W) primary color. col[] should be updated if you want to change the color. -WLED_GLOBAL byte colSec[] _INIT_N(({ 0, 0, 0, 0 })); // current RGB(W) secondary color -WLED_GLOBAL byte briS _INIT(128); // default brightness - -WLED_GLOBAL byte nightlightTargetBri _INIT(0); // brightness after nightlight is over -WLED_GLOBAL byte nightlightDelayMins _INIT(60); -WLED_GLOBAL byte nightlightMode _INIT(NL_MODE_FADE); // See const.h for available modes. Was nightlightFade -WLED_GLOBAL bool fadeTransition _INIT(true); // enable crossfading color transition -WLED_GLOBAL uint16_t transitionDelay _INIT(750); // default crossfade duration in ms - -WLED_GLOBAL bool skipFirstLed _INIT(false); // ignore first LED in strip (useful if you need the LED as signal repeater) -WLED_GLOBAL byte briMultiplier _INIT(100); // % of brightness to set (to limit power, if you set it to 50 and set bri to 255, actual brightness will be 127) - -// User Interface CONFIG -WLED_GLOBAL char serverDescription[33] _INIT("WLED"); // Name of module -WLED_GLOBAL bool syncToggleReceive _INIT(false); // UIs which only have a single button for sync should toggle send+receive if this is true, only send otherwise - -// Sync CONFIG -WLED_GLOBAL bool buttonEnabled _INIT(true); -WLED_GLOBAL byte irEnabled _INIT(0); // Infrared receiver - -WLED_GLOBAL uint16_t udpPort _INIT(21324); // WLED notifier default port -WLED_GLOBAL uint16_t udpPort2 _INIT(65506); // WLED notifier supplemental port -WLED_GLOBAL uint16_t udpRgbPort _INIT(19446); // Hyperion port - -WLED_GLOBAL bool receiveNotificationBrightness _INIT(true); // apply brightness from incoming notifications -WLED_GLOBAL bool receiveNotificationColor _INIT(true); // apply color -WLED_GLOBAL bool receiveNotificationEffects _INIT(true); // apply effects setup -WLED_GLOBAL bool notifyDirect _INIT(false); // send notification if change via UI or HTTP API -WLED_GLOBAL bool notifyButton _INIT(false); // send if updated by button or infrared remote -WLED_GLOBAL bool notifyAlexa _INIT(false); // send notification if updated via Alexa -WLED_GLOBAL bool notifyMacro _INIT(false); // send notification for macro -WLED_GLOBAL bool notifyHue _INIT(true); // send notification if Hue light changes -WLED_GLOBAL bool notifyTwice _INIT(false); // notifications use UDP: enable if devices don't sync reliably - -WLED_GLOBAL bool alexaEnabled _INIT(false); // enable device discovery by Amazon Echo -WLED_GLOBAL char alexaInvocationName[33] _INIT("Light"); // speech control name of device. Choose something voice-to-text can understand - -WLED_GLOBAL char blynkApiKey[36] _INIT(""); // Auth token for Blynk server. If empty, no connection will be made - -WLED_GLOBAL uint16_t realtimeTimeoutMs _INIT(2500); // ms timeout of realtime mode before returning to normal mode -WLED_GLOBAL int arlsOffset _INIT(0); // realtime LED offset -WLED_GLOBAL bool receiveDirect _INIT(true); // receive UDP realtime -WLED_GLOBAL bool arlsDisableGammaCorrection _INIT(true); // activate if gamma correction is handled by the source -WLED_GLOBAL bool arlsForceMaxBri _INIT(false); // enable to force max brightness if source has very dark colors that would be black - -#ifdef WLED_ENABLE_DMX -WLED_GLOBAL DMXESPSerial dmx; -WLED_GLOBAL uint16_t e131ProxyUniverse _INIT(0); // output this E1.31 (sACN) / ArtNet universe via MAX485 (0 = disabled) -#endif -WLED_GLOBAL uint16_t e131Universe _INIT(1); // settings for E1.31 (sACN) protocol (only DMX_MODE_MULTIPLE_* can span over consequtive universes) -WLED_GLOBAL uint16_t e131Port _INIT(5568); // DMX in port. E1.31 default is 5568, Art-Net is 6454 -WLED_GLOBAL byte DMXMode _INIT(DMX_MODE_MULTIPLE_RGB); // DMX mode (s.a.) -WLED_GLOBAL uint16_t DMXAddress _INIT(1); // DMX start address of fixture, a.k.a. first Channel [for E1.31 (sACN) protocol] -WLED_GLOBAL byte DMXOldDimmer _INIT(0); // only update brightness on change -WLED_GLOBAL byte e131LastSequenceNumber[E131_MAX_UNIVERSE_COUNT]; // to detect packet loss -WLED_GLOBAL bool e131Multicast _INIT(false); // multicast or unicast -WLED_GLOBAL bool e131SkipOutOfSequence _INIT(false); // freeze instead of flickering - -WLED_GLOBAL bool mqttEnabled _INIT(true); -WLED_GLOBAL char mqttDeviceTopic[33] _INIT(""); // main MQTT topic (individual per device, default is wled/mac) -WLED_GLOBAL char mqttGroupTopic[33] _INIT("wled/all"); // second MQTT topic (for example to group devices) -WLED_GLOBAL char mqttServer[33] _INIT("your_broker.ip"); // both domains and IPs should work (no SSL) -WLED_GLOBAL char mqttUser[41] _INIT("your_mqtt_user"); // optional: username for MQTT auth -WLED_GLOBAL char mqttPass[41] _INIT("your_mqtt_pwd"); // optional: password for MQTT auth -WLED_GLOBAL char mqttClientID[41] _INIT(""); // override the client ID -WLED_GLOBAL uint16_t mqttPort _INIT(1883); - -WLED_GLOBAL bool huePollingEnabled _INIT(false); // poll hue bridge for light state -WLED_GLOBAL uint16_t huePollIntervalMs _INIT(2500); // low values (< 1sec) may cause lag but offer quicker response -WLED_GLOBAL char hueApiKey[47] _INIT("api"); // key token will be obtained from bridge -WLED_GLOBAL byte huePollLightId _INIT(1); // ID of hue lamp to sync to. Find the ID in the hue app ("about" section) -WLED_GLOBAL IPAddress hueIP _INIT((0, 0, 0, 0)); // IP address of the bridge -WLED_GLOBAL bool hueApplyOnOff _INIT(true); -WLED_GLOBAL bool hueApplyBri _INIT(true); -WLED_GLOBAL bool hueApplyColor _INIT(true); - -// Time CONFIG -WLED_GLOBAL bool ntpEnabled _INIT(true); // get internet time. Only required if you use clock overlays or time-activated macros -WLED_GLOBAL bool useAMPM _INIT(false); // 12h/24h clock format -WLED_GLOBAL byte currentTimezone _INIT(2); // Timezone ID. Refer to timezones array in wled10_ntp.ino -WLED_GLOBAL int utcOffsetSecs _INIT(0); // Seconds to offset from UTC before timzone calculation - -WLED_GLOBAL byte overlayDefault _INIT(0); // 0: no overlay 1: analog clock 2: single-digit clocl 3: cronixie -WLED_GLOBAL byte overlayMin _INIT(0), overlayMax _INIT(ledCount - 1); // boundaries of overlay mode - -WLED_GLOBAL byte analogClock12pixel _INIT(0); // The pixel in your strip where "midnight" would be -WLED_GLOBAL bool analogClockSecondsTrail _INIT(false); // Display seconds as trail of LEDs instead of a single pixel -WLED_GLOBAL bool analogClock5MinuteMarks _INIT(false); // Light pixels at every 5-minute position - -WLED_GLOBAL char cronixieDisplay[7] _INIT("HHMMSS"); // Cronixie Display mask. See wled13_cronixie.ino -WLED_GLOBAL bool cronixieBacklight _INIT(true); // Allow digits to be back-illuminated - -WLED_GLOBAL bool countdownMode _INIT(false); // Clock will count down towards date -WLED_GLOBAL byte countdownYear _INIT(20), countdownMonth _INIT(1); // Countdown target date, year is last two digits -WLED_GLOBAL byte countdownDay _INIT(1) , countdownHour _INIT(0); -WLED_GLOBAL byte countdownMin _INIT(0) , countdownSec _INIT(0); - -WLED_GLOBAL byte macroBoot _INIT(0); // macro loaded after startup -WLED_GLOBAL byte macroNl _INIT(0); // after nightlight delay over -WLED_GLOBAL byte macroCountdown _INIT(0); -WLED_GLOBAL byte macroAlexaOn _INIT(0), macroAlexaOff _INIT(0); -WLED_GLOBAL byte macroButton _INIT(0), macroLongPress _INIT(0), macroDoublePress _INIT(0); - -// Security CONFIG -WLED_GLOBAL bool otaLock _INIT(false); // prevents OTA firmware updates without password. ALWAYS enable if system exposed to any public networks -WLED_GLOBAL bool wifiLock _INIT(false); // prevents access to WiFi settings when OTA lock is enabled -WLED_GLOBAL bool aOtaEnabled _INIT(false); // ArduinoOTA allows easy updates directly from the IDE. Careful, it does not auto-disable when OTA lock is on - -WLED_GLOBAL uint16_t userVar0 _INIT(0), userVar1 _INIT(0); //available for use in usermod - -#ifdef WLED_ENABLE_DMX - // dmx CONFIG - WLED_GLOBAL byte DMXChannels _INIT(7); // number of channels per fixture - WLED_GLOBAL byte DMXFixtureMap[15] _INIT_N(({ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 })); - // assigns the different channels to different functions. See wled21_dmx.ino for more information. - WLED_GLOBAL uint16_t DMXGap _INIT(10); // gap between the fixtures. makes addressing easier because you don't have to memorize odd numbers when climbing up onto a rig. - WLED_GLOBAL uint16_t DMXStart _INIT(10); // start address of the first fixture - WLED_GLOBAL uint16_t DMXStartLED _INIT(0); // LED from which DMX fixtures start -#endif - -// internal global variable declarations -// wifi -WLED_GLOBAL bool apActive _INIT(false); -WLED_GLOBAL bool forceReconnect _INIT(false); -WLED_GLOBAL uint32_t lastReconnectAttempt _INIT(0); -WLED_GLOBAL bool interfacesInited _INIT(false); -WLED_GLOBAL bool wasConnected _INIT(false); - -// color -WLED_GLOBAL byte colOld[] _INIT_N(({ 0, 0, 0, 0 })); // color before transition -WLED_GLOBAL byte colT[] _INIT_N(({ 0, 0, 0, 0 })); // color that is currently displayed on the LEDs -WLED_GLOBAL byte colIT[] _INIT_N(({ 0, 0, 0, 0 })); // color that was last sent to LEDs -WLED_GLOBAL byte colSecT[] _INIT_N(({ 0, 0, 0, 0 })); -WLED_GLOBAL byte colSecOld[] _INIT_N(({ 0, 0, 0, 0 })); -WLED_GLOBAL byte colSecIT[] _INIT_N(({ 0, 0, 0, 0 })); - -WLED_GLOBAL byte lastRandomIndex _INIT(0); // used to save last random color so the new one is not the same - -// transitions -WLED_GLOBAL bool transitionActive _INIT(false); -WLED_GLOBAL uint16_t transitionDelayDefault _INIT(transitionDelay); -WLED_GLOBAL uint16_t transitionDelayTemp _INIT(transitionDelay); -WLED_GLOBAL unsigned long transitionStartTime; -WLED_GLOBAL float tperLast _INIT(0); // crossfade transition progress, 0.0f - 1.0f -WLED_GLOBAL bool jsonTransitionOnce _INIT(false); - -// nightlight -WLED_GLOBAL bool nightlightActive _INIT(false); -WLED_GLOBAL bool nightlightActiveOld _INIT(false); -WLED_GLOBAL uint32_t nightlightDelayMs _INIT(10); -WLED_GLOBAL byte nightlightDelayMinsDefault _INIT(nightlightDelayMins); -WLED_GLOBAL unsigned long nightlightStartTime; -WLED_GLOBAL byte briNlT _INIT(0); // current nightlight brightness -WLED_GLOBAL byte colNlT[] _INIT_N(({ 0, 0, 0, 0 })); // current nightlight color - -// brightness -WLED_GLOBAL unsigned long lastOnTime _INIT(0); -WLED_GLOBAL bool offMode _INIT(!turnOnAtBoot); -WLED_GLOBAL byte bri _INIT(briS); -WLED_GLOBAL byte briOld _INIT(0); -WLED_GLOBAL byte briT _INIT(0); -WLED_GLOBAL byte briIT _INIT(0); -WLED_GLOBAL byte briLast _INIT(128); // brightness before turned off. Used for toggle function -WLED_GLOBAL byte whiteLast _INIT(128); // white channel before turned off. Used for toggle function - -// button -WLED_GLOBAL bool buttonPressedBefore _INIT(false); -WLED_GLOBAL bool buttonLongPressed _INIT(false); -WLED_GLOBAL unsigned long buttonPressedTime _INIT(0); -WLED_GLOBAL unsigned long buttonWaitTime _INIT(0); - -// notifications -WLED_GLOBAL bool notifyDirectDefault _INIT(notifyDirect); -WLED_GLOBAL bool receiveNotifications _INIT(true); -WLED_GLOBAL unsigned long notificationSentTime _INIT(0); -WLED_GLOBAL byte notificationSentCallMode _INIT(NOTIFIER_CALL_MODE_INIT); -WLED_GLOBAL bool notificationTwoRequired _INIT(false); - -// effects -WLED_GLOBAL byte effectCurrent _INIT(0); -WLED_GLOBAL byte effectSpeed _INIT(128); -WLED_GLOBAL byte effectIntensity _INIT(128); -WLED_GLOBAL byte effectPalette _INIT(0); - -// network -WLED_GLOBAL bool udpConnected _INIT(false), udp2Connected _INIT(false), udpRgbConnected _INIT(false); - -// ui style -WLED_GLOBAL bool showWelcomePage _INIT(false); - -// hue -WLED_GLOBAL byte hueError _INIT(HUE_ERROR_INACTIVE); -// WLED_GLOBAL uint16_t hueFailCount _INIT(0); -WLED_GLOBAL float hueXLast _INIT(0), hueYLast _INIT(0); -WLED_GLOBAL uint16_t hueHueLast _INIT(0), hueCtLast _INIT(0); -WLED_GLOBAL byte hueSatLast _INIT(0), hueBriLast _INIT(0); -WLED_GLOBAL unsigned long hueLastRequestSent _INIT(0); -WLED_GLOBAL bool hueAuthRequired _INIT(false); -WLED_GLOBAL bool hueReceived _INIT(false); -WLED_GLOBAL bool hueStoreAllowed _INIT(false), hueNewKey _INIT(false); - -// overlays -WLED_GLOBAL byte overlayCurrent _INIT(overlayDefault); -WLED_GLOBAL byte overlaySpeed _INIT(200); -WLED_GLOBAL unsigned long overlayRefreshMs _INIT(200); -WLED_GLOBAL unsigned long overlayRefreshedTime; - -// cronixie -WLED_GLOBAL byte dP[] _INIT_N(({ 0, 0, 0, 0, 0, 0 })); -WLED_GLOBAL bool cronixieInit _INIT(false); - -// countdown -WLED_GLOBAL unsigned long countdownTime _INIT(1514764800L); -WLED_GLOBAL bool countdownOverTriggered _INIT(true); - -// timer -WLED_GLOBAL byte lastTimerMinute _INIT(0); -WLED_GLOBAL byte timerHours[] _INIT_N(({ 0, 0, 0, 0, 0, 0, 0, 0 })); -WLED_GLOBAL byte timerMinutes[] _INIT_N(({ 0, 0, 0, 0, 0, 0, 0, 0 })); -WLED_GLOBAL byte timerMacro[] _INIT_N(({ 0, 0, 0, 0, 0, 0, 0, 0 })); -WLED_GLOBAL byte timerWeekday[] _INIT_N(({ 255, 255, 255, 255, 255, 255, 255, 255 })); // weekdays to activate on -// bit pattern of arr elem: 0b11111111: sun,sat,fri,thu,wed,tue,mon,validity - -// blynk -WLED_GLOBAL bool blynkEnabled _INIT(false); - -// preset cycling -WLED_GLOBAL bool presetCyclingEnabled _INIT(false); -WLED_GLOBAL byte presetCycleMin _INIT(1), presetCycleMax _INIT(5); -WLED_GLOBAL uint16_t presetCycleTime _INIT(12); -WLED_GLOBAL unsigned long presetCycledTime _INIT(0); -WLED_GLOBAL byte presetCycCurr _INIT(presetCycleMin); -WLED_GLOBAL bool presetApplyBri _INIT(true); -WLED_GLOBAL bool saveCurrPresetCycConf _INIT(false); - -// realtime -WLED_GLOBAL byte realtimeMode _INIT(REALTIME_MODE_INACTIVE); -WLED_GLOBAL byte realtimeOverride _INIT(REALTIME_OVERRIDE_NONE); -WLED_GLOBAL IPAddress realtimeIP _INIT((0, 0, 0, 0)); -WLED_GLOBAL unsigned long realtimeTimeout _INIT(0); -WLED_GLOBAL uint8_t tpmPacketCount _INIT(0); -WLED_GLOBAL uint16_t tpmPayloadFrameSize _INIT(0); - -// mqtt -WLED_GLOBAL long lastMqttReconnectAttempt _INIT(0); -WLED_GLOBAL long lastInterfaceUpdate _INIT(0); -WLED_GLOBAL byte interfaceUpdateCallMode _INIT(NOTIFIER_CALL_MODE_INIT); -WLED_GLOBAL char mqttStatusTopic[40] _INIT(""); // this must be global because of async handlers - -#if AUXPIN >= 0 - // auxiliary debug pin - WLED_GLOBAL byte auxTime _INIT(0); - WLED_GLOBAL unsigned long auxStartTime _INIT(0); - WLED_GLOBAL bool auxActive _INIT(false, auxActiveBefore _INIT(false); -#endif - -// alexa udp -WLED_GLOBAL String escapedMac; -#ifndef WLED_DISABLE_ALEXA - WLED_GLOBAL Espalexa espalexa; - WLED_GLOBAL EspalexaDevice* espalexaDevice; -#endif - -// dns server -WLED_GLOBAL DNSServer dnsServer; - -// network time -WLED_GLOBAL bool ntpConnected _INIT(false); -WLED_GLOBAL time_t localTime _INIT(0); -WLED_GLOBAL unsigned long ntpLastSyncTime _INIT(999000000L); -WLED_GLOBAL unsigned long ntpPacketSentTime _INIT(999000000L); -WLED_GLOBAL IPAddress ntpServerIP; -WLED_GLOBAL uint16_t ntpLocalPort _INIT(2390); -WLED_GLOBAL uint16_t rolloverMillis _INIT(0); - -// Temp buffer -WLED_GLOBAL char* obuf; -WLED_GLOBAL uint16_t olen _INIT(0); - -// presets -WLED_GLOBAL uint16_t savedPresets _INIT(0); -WLED_GLOBAL int8_t currentPreset _INIT(-1); -WLED_GLOBAL bool isPreset _INIT(false); - -WLED_GLOBAL byte errorFlag _INIT(0); - -WLED_GLOBAL String messageHead, messageSub; -WLED_GLOBAL byte optionType; - -WLED_GLOBAL bool doReboot _INIT(false); // flag to initiate reboot from async handlers -WLED_GLOBAL bool doPublishMqtt _INIT(false); - -// server library objects -WLED_GLOBAL AsyncWebServer server _INIT_N(((80))); -#ifdef WLED_ENABLE_WEBSOCKETS -WLED_GLOBAL AsyncWebSocket ws _INIT_N((("/ws"))); -#endif -WLED_GLOBAL AsyncClient* hueClient _INIT(NULL); -WLED_GLOBAL AsyncMqttClient* mqtt _INIT(NULL); - -// udp interface objects -WLED_GLOBAL WiFiUDP notifierUdp, rgbUdp, notifier2Udp; -WLED_GLOBAL WiFiUDP ntpUdp; -WLED_GLOBAL ESPAsyncE131 e131 _INIT_N(((handleE131Packet))); -WLED_GLOBAL bool e131NewData _INIT(false); - -// led fx library object -WLED_GLOBAL WS2812FX strip _INIT(WS2812FX()); - -// Usermod manager -WLED_GLOBAL UsermodManager usermods _INIT(UsermodManager()); - -// Status LED -#if STATUSLED && STATUSLED != LEDPIN - WLED_GLOBAL unsigned long ledStatusLastMillis _INIT(0); - WLED_GLOBAL unsigned short ledStatusType _INIT(0); // current status type - corresponds to number of blinks per second - WLED_GLOBAL bool ledStatusState _INIT(0); // the current LED state -#endif - -// debug macro variable definitions -#ifdef WLED_DEBUG - WLED_GLOBAL unsigned long debugTime _INIT(0); - WLED_GLOBAL int lastWifiState _INIT(3); - WLED_GLOBAL unsigned long wifiStateChangedTime _INIT(0); - WLED_GLOBAL int loops _INIT(0); -#endif - - -#define WLED_CONNECTED (WiFi.status() == WL_CONNECTED) -#define WLED_WIFI_CONFIGURED (strlen(clientSSID) >= 1 && strcmp(clientSSID, DEFAULT_CLIENT_SSID) != 0) -#define WLED_MQTT_CONNECTED (mqtt != nullptr && mqtt->connected()) - -// append new c string to temp buffer efficiently -bool oappend(const char* txt); -// append new number to temp buffer efficiently -bool oappendi(int i); - -class WLED { -public: - WLED(); - static WLED& instance() - { - static WLED instance; - return instance; - } - - // boot starts here - void setup(); - - void loop(); - void reset(); - - void beginStrip(); - void handleConnection(); - void initAP(bool resetAP = false); - void initConnection(); - void initInterfaces(); - void handleStatusLED(); -}; diff --git a/wled00/wled.h b/wled00/wled.h index f266e8dfc6..73e1f1671a 100644 --- a/wled00/wled.h +++ b/wled00/wled.h @@ -10,9 +10,11 @@ // version code in format yymmddb (b = daily build) #define VERSION 2011120 +//uncomment this if you have a "my_config.h" file you'd like to use +//#define WLED_USE_MY_CONFIG + // ESP8266-01 (blue) got too little storage space to work with all features of WLED. To use it, you must use ESP8266 Arduino Core v2.4.2 and the setting 512K(No SPIFFS). -#ifndef USE_CONFIG_OVERRIDE // ESP8266-01 (black) has 1MB flash and can thus fit the whole program. Use 1M(64K SPIFFS). // Uncomment some of the following lines to disable features to compile for ESP8266-01 (max flash size 434kB): // Alternatively, with platformio pass your chosen flags to your custom build target in platformio.ini.override @@ -64,6 +66,10 @@ #include "src/dependencies/network/Network.h" +#ifdef WLED_USE_MY_CONFIG + #include "my_config.h" +#endif + #include #include #include @@ -560,11 +566,4 @@ class WLED { void initInterfaces(); void handleStatusLED(); }; -#endif // USE_CONFIG_OVERRIDE - -// User settings in file "user_config_override.h" added in gitignore so it will not be overwritten -#ifdef USE_CONFIG_OVERRIDE - #include "user_config_override.h" // Configuration overrides -#endif - #endif // WLED_H