From 176e18e4c0e394250a17f311a70598e4bfebd9fe Mon Sep 17 00:00:00 2001
From: cschwinne
Date: Tue, 17 Nov 2020 08:57:05 +0100
Subject: [PATCH 1/5] Move Network class to src/dependencies (fixes #1349 )
---
wled00/src/dependencies/e131/ESPAsyncE131.cpp | 2 +-
wled00/src/dependencies/espalexa/Espalexa.h | 2 +-
wled00/{ => src/dependencies/network}/Network.cpp | 0
wled00/{ => src/dependencies/network}/Network.h | 0
wled00/wled.h | 2 +-
5 files changed, 3 insertions(+), 3 deletions(-)
rename wled00/{ => src/dependencies/network}/Network.cpp (100%)
rename wled00/{ => src/dependencies/network}/Network.h (100%)
diff --git a/wled00/src/dependencies/e131/ESPAsyncE131.cpp b/wled00/src/dependencies/e131/ESPAsyncE131.cpp
index 450dff57..8ba97106 100644
--- a/wled00/src/dependencies/e131/ESPAsyncE131.cpp
+++ b/wled00/src/dependencies/e131/ESPAsyncE131.cpp
@@ -18,7 +18,7 @@
*/
#include "ESPAsyncE131.h"
-#include "Network.h"
+#include "../network/Network.h"
#include
// E1.17 ACN Packet Identifier
diff --git a/wled00/src/dependencies/espalexa/Espalexa.h b/wled00/src/dependencies/espalexa/Espalexa.h
index 10b61c08..341de015 100644
--- a/wled00/src/dependencies/espalexa/Espalexa.h
+++ b/wled00/src/dependencies/espalexa/Espalexa.h
@@ -47,7 +47,7 @@
#endif
#endif
#include
-#include "Network.h"
+#include "../network/Network.h"
#ifdef ESPALEXA_DEBUG
#pragma message "Espalexa 2.4.6 debug mode"
diff --git a/wled00/Network.cpp b/wled00/src/dependencies/network/Network.cpp
similarity index 100%
rename from wled00/Network.cpp
rename to wled00/src/dependencies/network/Network.cpp
diff --git a/wled00/Network.h b/wled00/src/dependencies/network/Network.h
similarity index 100%
rename from wled00/Network.h
rename to wled00/src/dependencies/network/Network.h
diff --git a/wled00/wled.h b/wled00/wled.h
index 5ac31259..efd58eb7 100644
--- a/wled00/wled.h
+++ b/wled00/wled.h
@@ -61,7 +61,7 @@
#include "SPIFFS.h"
#endif
-#include "Network.h"
+#include "src/dependencies/network/Network.h"
#include
#include
From a839ec4832f986e0c6864669a72751b73a163cdc Mon Sep 17 00:00:00 2001
From: Jason2866 <24528715+Jason2866@users.noreply.github.com>
Date: Tue, 17 Nov 2020 21:49:39 +0100
Subject: [PATCH 2/5] Add gzip support for full OTA possibilitys for 1M build
(#1266)
* delete history
* add firmware
Signed-off-by: Jason2866
* Delete platformio_override.ini
* Update .gitignore
* Delete WLED_tasmota_1M.bin
* Delete WLED_tasmota_1M.bin.gz
* Update platformio.ini
* Core 2.7.4.5
* new override
* actual firmware
* Update user_config_override_sample.h
* Delete platformio_override.ini
* Delete WLED_tasmota_1M.bin
* Delete WLED_tasmota_1M.bin.gz
* core 2.7.4.7
---
.gitignore | 3 +
.gitpod.Dockerfile | 5 +
.gitpod.yml | 12 +
pio/gzip-firmware.py | 23 ++
pio/name-firmware.py | 34 ++
pio/obj-dump.py | 9 +
pio/override_copy.py | 9 +
pio/strip-floats.py | 15 +
platformio.ini | 133 ++++++-
platformio_override.ini.example | 33 +-
readme.md | 1 +
wled00/user_config_override_sample.h | 550 +++++++++++++++++++++++++++
wled00/wled.h | 8 +
13 files changed, 811 insertions(+), 24 deletions(-)
create mode 100644 .gitpod.Dockerfile
create mode 100644 .gitpod.yml
create mode 100644 pio/gzip-firmware.py
create mode 100644 pio/name-firmware.py
create mode 100644 pio/obj-dump.py
create mode 100644 pio/override_copy.py
create mode 100644 pio/strip-floats.py
create mode 100644 wled00/user_config_override_sample.h
diff --git a/.gitignore b/.gitignore
index db3138f5..74e5dde3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
.pio
+.cache
.pioenvs
.piolibdeps
.vscode
@@ -6,6 +7,8 @@
/wled00/Release
/wled00/extLibs
/platformio_override.ini
+/wled00/user_config_override.h
+/build_output
.DS_Store
.gitignore
.clang-format
diff --git a/.gitpod.Dockerfile b/.gitpod.Dockerfile
new file mode 100644
index 00000000..29d75d19
--- /dev/null
+++ b/.gitpod.Dockerfile
@@ -0,0 +1,5 @@
+FROM gitpod/workspace-full
+
+USER gitpod
+
+RUN pip3 install -U platformio
diff --git a/.gitpod.yml b/.gitpod.yml
new file mode 100644
index 00000000..cc416b1c
--- /dev/null
+++ b/.gitpod.yml
@@ -0,0 +1,12 @@
+tasks:
+ - command: platformio run
+
+image:
+ file: .gitpod.Dockerfile
+
+vscode:
+ extensions:
+ - ms-vscode.cpptools@0.26.3:u3GsZ5PK12Ddr79vh4TWgQ==
+ - eamodio.gitlens@10.2.1:e0IYyp0efFqVsrZwsIe8CA==
+ - Atishay-Jain.All-Autocomplete@0.0.23:fbZNfSpnd8XkAHGfAPS2rA==
+ - 2gua.rainbow-brackets@0.0.6:Tbu8dTz0i+/bgcKQTQ5b8g==
diff --git a/pio/gzip-firmware.py b/pio/gzip-firmware.py
new file mode 100644
index 00000000..2d028301
--- /dev/null
+++ b/pio/gzip-firmware.py
@@ -0,0 +1,23 @@
+Import('env')
+import os
+import shutil
+import gzip
+
+OUTPUT_DIR = "build_output{}".format(os.path.sep)
+
+def bin_gzip(source, target, env):
+ variant = str(target[0]).split(os.path.sep)[2]
+
+ # create string with location and file names based on variant
+ bin_file = "{}firmware{}{}.bin".format(OUTPUT_DIR, os.path.sep, variant)
+ gzip_file = "{}firmware{}{}.bin.gz".format(OUTPUT_DIR, os.path.sep, variant)
+
+ # check if new target files exist and remove if necessary
+ if os.path.isfile(gzip_file): os.remove(gzip_file)
+
+ # write gzip firmware file
+ with open(bin_file,"rb") as fp:
+ with gzip.open(gzip_file, "wb", compresslevel = 9) as f:
+ shutil.copyfileobj(fp, f)
+
+env.AddPostAction("$BUILD_DIR/${PROGNAME}.bin", [bin_gzip])
diff --git a/pio/name-firmware.py b/pio/name-firmware.py
new file mode 100644
index 00000000..90ea9867
--- /dev/null
+++ b/pio/name-firmware.py
@@ -0,0 +1,34 @@
+Import('env')
+import os
+import shutil
+
+OUTPUT_DIR = "build_output{}".format(os.path.sep)
+
+def bin_rename_copy(source, target, env):
+ variant = str(target[0]).split(os.path.sep)[2]
+
+ # check if output directories exist and create if necessary
+ if not os.path.isdir(OUTPUT_DIR):
+ os.mkdir(OUTPUT_DIR)
+
+ for d in ['firmware', 'map']:
+ if not os.path.isdir("{}{}".format(OUTPUT_DIR, d)):
+ os.mkdir("{}{}".format(OUTPUT_DIR, d))
+
+ # create string with location and file names based on variant
+ map_file = "{}map{}{}.map".format(OUTPUT_DIR, os.path.sep, variant)
+ bin_file = "{}firmware{}{}.bin".format(OUTPUT_DIR, os.path.sep, variant)
+
+ # check if new target files exist and remove if necessary
+ for f in [map_file, bin_file]:
+ if os.path.isfile(f):
+ os.remove(f)
+
+ # copy firmware.bin to firmware/.bin
+ shutil.copy(str(target[0]), bin_file)
+
+ # copy firmware.map to map/.map
+ if os.path.isfile("firmware.map"):
+ shutil.move("firmware.map", map_file)
+
+env.AddPostAction("$BUILD_DIR/${PROGNAME}.bin", [bin_rename_copy])
diff --git a/pio/obj-dump.py b/pio/obj-dump.py
new file mode 100644
index 00000000..91bc3de5
--- /dev/null
+++ b/pio/obj-dump.py
@@ -0,0 +1,9 @@
+# Little convenience script to get an object dump
+
+Import('env')
+
+def obj_dump_after_elf(source, target, env):
+ print("Create firmware.asm")
+ env.Execute("xtensa-lx106-elf-objdump "+ "-D " + str(target[0]) + " > "+ "${PROGNAME}.asm")
+
+env.AddPostAction("$BUILD_DIR/${PROGNAME}.elf", [obj_dump_after_elf])
diff --git a/pio/override_copy.py b/pio/override_copy.py
new file mode 100644
index 00000000..82549e75
--- /dev/null
+++ b/pio/override_copy.py
@@ -0,0 +1,9 @@
+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/strip-floats.py b/pio/strip-floats.py
new file mode 100644
index 00000000..da916ebe
--- /dev/null
+++ b/pio/strip-floats.py
@@ -0,0 +1,15 @@
+Import('env')
+
+#
+# Dump build environment (for debug)
+#print env.Dump()
+#
+
+flags = " ".join(env['LINKFLAGS'])
+flags = flags.replace("-u _printf_float", "")
+flags = flags.replace("-u _scanf_float", "")
+newflags = flags.split()
+
+env.Replace(
+ LINKFLAGS=newflags
+)
\ No newline at end of file
diff --git a/platformio.ini b/platformio.ini
index 139eaf30..3e2a3ef8 100644
--- a/platformio.ini
+++ b/platformio.ini
@@ -79,8 +79,9 @@ arduino_core_git = https://github.com/platformio/platform-espressif8266#feature/
# Platform to use for ESP8266
platform_wled_default = ${common.arduino_core_2_7_4}
-# We use 2.7.0+ on analog boards because of PWM flicker fix
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
# ------------------------------------------------------------------------------
# FLAGS: DEBUG
@@ -114,18 +115,44 @@ debug_flags = -D DEBUG=1 -D WLED_DEBUG -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_CLIENT
# TLS_RSA_WITH_AES_256_CBC_SHA / AES256-SHA
# This reduces the OTA size with ~45KB, so it's especially useful on low memory boards (512k/1m).
# ------------------------------------------------------------------------------
-build_flags = -g -w -DMQTT_MAX_PACKET_SIZE=1024 -DPIO_FRAMEWORK_ARDUINO_LWIP_HIGHER_BANDWIDTH
- -DSECURE_CLIENT=SECURE_CLIENT_BEARSSL -DBEARSSL_SSL_BASIC
- #build_flags for the IRremoteESP8266 library (enabled decoders have to appear here)
+build_flags =
+ -Wno-switch
+ -Wno-deprecated-declarations
+ -Wno-write-strings
+ -Wno-unused-variable
+ -Wno-unused-value
+ -Wno-sign-compare
+ -Wno-unused-but-set-variable
+ -Wno-return-type
+ -Wno-sequence-point
+ -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)
-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
-
+
+build_unflags =
+ -Wall
+ -Wdeprecated-declarations
+
build_flags_esp8266 = ${common.build_flags} -DESP8266
-build_flags_esp32 = ${common.build_flags} -DARDUINO_ARCH_ESP32
+build_flags_esp32 = ${esp32.build_flags} -DARDUINO_ARCH_ESP32
# enables all features for travis CI
build_flags_all_features =
@@ -145,6 +172,27 @@ ldscript_4m3m = eagle.flash.4m3m.ld
shared_libdeps_dir = ./wled00/src
+[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
+
+[scripts_defaults]
+extra_scripts = pio/name-firmware.py
+ pio/gzip-firmware.py
+ pio/strip-floats.py
+ pio/override_copy.py
+
# ------------------------------------------------------------------------------
# COMMON SETTINGS:
# ------------------------------------------------------------------------------
@@ -153,6 +201,10 @@ 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}
@@ -184,6 +236,8 @@ lib_deps =
lib_ignore =
AsyncTCP
+extra_scripts = ${scripts_defaults.extra_scripts}
+
# ------------------------------------------------------------------------------
# WLED BUILDS
# ------------------------------------------------------------------------------
@@ -191,14 +245,18 @@ lib_ignore =
[env:nodemcuv2]
board = nodemcuv2
platform = ${common.platform_wled_default}
+platform_packages = ${common.platform_packages}
board_build.ldscript = ${common.ldscript_4m1m}
+build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags_esp8266}
# Unsupported environment due to insufficient flash
[env:esp01]
board = esp01
platform = ${common.platform_wled_default}
+platform_packages = ${common.platform_packages}
board_build.ldscript = ${common.ldscript_512k}
+build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags_esp8266} -D WLED_DISABLE_OTA -D WLED_DISABLE_ALEXA -D WLED_DISABLE_BLYNK
-D WLED_DISABLE_CRONIXIE -D WLED_DISABLE_HUESYNC -D WLED_DISABLE_INFRARED -D WLED_DISABLE_MQTT -D WLED_DISABLE_WEBSOCKETS
@@ -206,44 +264,57 @@ build_flags = ${common.build_flags_esp8266} -D WLED_DISABLE_OTA -D WLED_DISABLE_
[env:esp01_1m_ota]
board = esp01_1m
platform = ${common.platform_wled_default}
+platform_packages = ${common.platform_packages}
board_build.ldscript = ${common.ldscript_1m0m}
+build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags_esp8266} -D WLED_DISABLE_ALEXA -D WLED_DISABLE_BLYNK -D WLED_DISABLE_CRONIXIE
-D WLED_DISABLE_HUESYNC -D WLED_DISABLE_INFRARED -D WLED_DISABLE_MQTT -D WLED_DISABLE_WEBSOCKETS
[env:esp01_1m_full]
board = esp01_1m
platform = ${common.platform_wled_default}
+platform_packages = ${common.platform_packages}
board_build.ldscript = ${common.ldscript_1m0m}
+build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags_esp8266} -D WLED_DISABLE_OTA
[env:esp07]
board = esp07
platform = ${common.platform_wled_default}
+platform_packages = ${common.platform_packages}
board_build.ldscript = ${common.ldscript_4m1m}
+build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags_esp8266}
[env:d1_mini]
board = d1_mini
platform = ${common.platform_wled_default}
+platform_packages = ${common.platform_packages}
upload_speed = 921600
board_build.ldscript = ${common.ldscript_4m1m}
+build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags_esp8266}
[env:heltec_wifi_kit_8]
board = d1_mini
platform = ${common.platform_wled_default}
+platform_packages = ${common.platform_packages}
board_build.ldscript = ${common.ldscript_4m1m}
+build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags_esp8266}
[env:h803wf]
board = d1_mini
platform = ${common.platform_wled_default}
+platform_packages = ${common.platform_packages}
board_build.ldscript = ${common.ldscript_4m1m}
+build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags_esp8266} -D LEDPIN=1 -D WLED_DISABLE_INFRARED
[env:esp32dev]
board = esp32dev
-platform = espressif32@1.12.4
+platform = espressif32@2.0
+build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags_esp32}
lib_ignore =
ESPAsyncTCP
@@ -261,25 +332,33 @@ lib_ignore =
[env:esp8285_4CH_MagicHome]
board = esp8285
platform = ${common.platform_latest}
+platform_packages = ${common.platform_packages}
board_build.ldscript = ${common.ldscript_1m0m}
+build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags_esp8266} -D WLED_DISABLE_HUESYNC -D WLED_USE_ANALOG_LEDS
[env:esp8285_4CH_H801]
board = esp8285
platform = ${common.platform_latest}
+platform_packages = ${common.platform_packages}
board_build.ldscript = ${common.ldscript_1m0m}
+build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags_esp8266} -D WLED_DISABLE_HUESYNC -D WLED_USE_ANALOG_LEDS -D WLED_USE_H801
[env:esp8285_5CH_H801]
board = esp8285
platform = ${common.platform_latest}
+platform_packages = ${common.platform_packages}
board_build.ldscript = ${common.ldscript_1m0m}
+build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags_esp8266} -D WLED_DISABLE_HUESYNC -D WLED_USE_ANALOG_LEDS -D WLED_USE_H801 -D WLED_ENABLE_5CH_LEDS
[env:d1_mini_5CH_Shojo_PCB]
board = d1_mini
platform = ${common.platform_latest}
+platform_packages = ${common.platform_packages}
board_build.ldscript = ${common.ldscript_4m1m}
+build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags_esp8266} -D WLED_USE_ANALOG_LEDS -D WLED_USE_SHOJO_PCB -D WLED_ENABLE_5CH_LEDS
# ------------------------------------------------------------------------------
@@ -290,7 +369,9 @@ build_flags = ${common.build_flags_esp8266} -D WLED_USE_ANALOG_LEDS -D WLED_USE_
board = d1_mini
build_type = debug
platform = ${common.platform_wled_default}
+platform_packages = ${common.platform_packages}
board_build.ldscript = ${common.ldscript_4m1m}
+build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags_esp8266} ${common.debug_flags}
[env:d1_mini_ota]
@@ -299,7 +380,9 @@ upload_protocol = espota
# exchange for your WLED IP
upload_port = "10.10.1.27"
platform = ${common.platform_wled_default}
+platform_packages = ${common.platform_packages}
board_build.ldscript = ${common.ldscript_4m1m}
+build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags_esp8266}
# ------------------------------------------------------------------------------
@@ -309,37 +392,48 @@ build_flags = ${common.build_flags_esp8266}
[env:custom_LEDPIN_4]
board = d1_mini
platform = ${common.platform_latest}
+platform_packages = ${common.platform_packages}
board_build.ldscript = ${common.ldscript_4m1m}
+build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags_esp8266} -D LEDPIN=4 -D IRPIN=5
[env:custom_LEDPIN_16]
board = d1_mini
platform = ${common.platform_latest}
+platform_packages = ${common.platform_packages}
board_build.ldscript = ${common.ldscript_4m1m}
+build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags_esp8266} -D LEDPIN=16
[env:custom_LEDPIN_3]
board = d1_mini
platform = ${common.platform_latest}
+platform_packages = ${common.platform_packages}
board_build.ldscript = ${common.ldscript_4m1m}
+build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags_esp8266} -D LEDPIN=3
[env:custom_APA102]
board = d1_mini
platform = ${common.platform_latest}
+platform_packages = ${common.platform_packages}
board_build.ldscript = ${common.ldscript_4m1m}
+build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags_esp8266} -D USE_APA102
[env:custom_WS2801]
board = d1_mini
platform = ${common.platform_latest}
+platform_packages = ${common.platform_packages}
board_build.ldscript = ${common.ldscript_4m1m}
+build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags_esp8266} -D USE_WS2801
[env:custom32_LEDPIN_16]
board = esp32dev
-platform = espressif32@1.12.4
+platform = espressif32@2.0
+build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags_esp32} -D LEDPIN=16
lib_ignore =
ESPAsyncTCP
@@ -347,7 +441,8 @@ lib_ignore =
[env:custom32_TOUCHPIN_T0]
board = esp32dev
-platform = espressif32@1.12.4
+platform = espressif32@2.0
+build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags_esp32} -D TOUCHPIN=T0
lib_ignore =
ESPAsyncTCP
@@ -355,10 +450,11 @@ lib_ignore =
[env:wemos_shield_esp32]
board = esp32dev
-platform = espressif32@1.12.4
+platform = espressif32@2.0
upload_port = /dev/cu.SLAB_USBtoUART
monitor_port = /dev/cu.SLAB_USBtoUART
upload_speed = 460800
+build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags_esp32} -D LEDPIN=16 -D RLYPIN=19 -D BTNPIN=17
lib_ignore =
ESPAsyncTCP
@@ -366,11 +462,12 @@ lib_ignore =
[env:m5atom]
board = esp32dev
+build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags_esp32} -D LEDPIN=27 -D BTNPIN=39
lib_ignore =
ESPAsyncTCP
ESPAsyncUDP
-platform = espressif32@1.12.4
+platform = espressif32@2.0
[env:sp501e]
board = esp_wroom_02
@@ -385,11 +482,13 @@ build_flags = ${common.build_flags_esp8266} -D LEDPIN=3 -D BTNPIN=1
[env:travis_esp8266]
extends = env:d1_mini
build_type = debug
+build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags_esp8266} ${common.debug_flags} ${common.build_flags_all_features}
[env:travis_esp32]
extends = env:esp32dev
build_type = debug
+build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags_esp32} ${common.debug_flags} ${common.build_flags_all_features}
# ------------------------------------------------------------------------------
@@ -399,35 +498,47 @@ build_flags = ${common.build_flags_esp32} ${common.debug_flags} ${common.build_f
[env:codm-controller-0.4]
board = esp_wroom_02
platform = ${common.platform_wled_default}
+platform_packages = ${common.platform_packages}
board_build.ldscript = ${common.ldscript_2m1m}
+build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags_esp8266} -D LEDPIN=3
[env:codm-controller-0.4-WS2801]
board = esp_wroom_02
platform = ${common.platform_latest}
+platform_packages = ${common.platform_packages}
board_build.ldscript = ${common.ldscript_2m1m}
+build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags_esp8266} -D USE_WS2801 -D CLKPIN=13 -D DATAPIN=3
[env:codm-controller-0.4-APA102]
board = esp_wroom_02
platform = ${common.platform_latest}
+platform_packages = ${common.platform_packages}
board_build.ldscript = ${common.ldscript_2m1m}
+build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags_esp8266} -D USE_APA102 -D CLKPIN=13 -D DATAPIN=3
[env:codm-controller-0.5]
board = esp_wroom_02
platform = ${common.platform_wled_default}
+platform_packages = ${common.platform_packages}
board_build.ldscript = ${common.ldscript_2m1m}
+build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags_esp8266}
[env:codm-controller-0.5-WS2801]
board = esp_wroom_02
platform = ${common.platform_latest}
+platform_packages = ${common.platform_packages}
board_build.ldscript = ${common.ldscript_2m1m}
+build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags_esp8266} -D USE_WS2801 #-D CLKPIN=0 -D DATAPIN=2
[env:codm-controller-0.5-APA102]
board = esp_wroom_02
platform = ${common.platform_latest}
+platform_packages = ${common.platform_packages}
board_build.ldscript = ${common.ldscript_2m1m}
+build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags_esp8266} -D USE_APA102 #-D CLKPIN=0 -D DATAPIN=2
diff --git a/platformio_override.ini.example b/platformio_override.ini.example
index 240c486a..e6c636a3 100644
--- a/platformio_override.ini.example
+++ b/platformio_override.ini.example
@@ -5,19 +5,26 @@
# Please visit documentation: https://docs.platformio.org/page/projectconf.html
[platformio]
-default_envs = esp8266_1m_custom
+default_envs = WLED_tasmota_1M
-[env:esp8266_1m_custom]
+[env:WLED_tasmota_1M]
board = esp01_1m
-platform = ${common.arduino_core_2_4_2}
+platform = ${common.platform_wled_default}
+platform_packages = ${common.platform_packages}
board_build.ldscript = ${common.ldscript_1m0m}
-build_flags = ${common.build_flags_esp8266}
- -D WLED_DISABLE_OTA
- -D WLED_DISABLE_ALEXA
- -D WLED_DISABLE_BLYNK
- -D WLED_DISABLE_CRONIXIE
- -D WLED_DISABLE_HUESYNC
- -D WLED_DISABLE_INFRARED
+build_unflags = ${common.build_unflags}
+build_flags = ${common.build_flags_esp8266}
+; *********************************************************************
+; *** Use custom settings from file user_config_override.h
+ -DUSE_CONFIG_OVERRIDE
+; *********************************************************************
+; -D WLED_DISABLE_OTA
+; -D WLED_DISABLE_ALEXA
+; -D WLED_DISABLE_BLYNK
+; -D WLED_DISABLE_CRONIXIE
+; -D WLED_DISABLE_HUESYNC
+; -D WLED_DISABLE_INFRARED
+; -D WLED_DISABLE_WEBSOCKETS
; PIN defines - uncomment and change, if needed:
; -D LEDPIN=2
; -D BTNPIN=0
@@ -30,11 +37,11 @@ build_flags = ${common.build_flags_esp8266}
; -D USE_WS2801
; -D USE_LPD8806
; PIN defines for 2 wire LEDs
-; -D CLKPIN=0
-; -D DATAPIN=2
+ -D CLKPIN=0
+ -D DATAPIN=2
; to drive analog LED strips (aka 5050), uncomment the following
; PWM pins 5,12,13,15 are used with Magic Home LED Controller (default)
-; -D WLED_USE_ANALOG_LEDS
+ -D WLED_USE_ANALOG_LEDS
; for the H801 controller (PINs 15,13,12,14 (W2 = 04)) uncomment this
; -D WLED_USE_H801
; for the BW-LT11 controller (PINs 12,4,14,5 ) uncomment this
diff --git a/readme.md b/readme.md
index c3a1f2ad..a1112bd9 100644
--- a/readme.md
+++ b/readme.md
@@ -6,6 +6,7 @@
+
diff --git a/wled00/user_config_override_sample.h b/wled00/user_config_override_sample.h
new file mode 100644
index 00000000..39a61d16
--- /dev/null
+++ b/wled00/user_config_override_sample.h
@@ -0,0 +1,550 @@
+// 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 efd58eb7..f266e8df 100644
--- a/wled00/wled.h
+++ b/wled00/wled.h
@@ -12,6 +12,7 @@
// 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
@@ -559,4 +560,11 @@ public:
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
From 074d53fa1731fca14423fec72898757f86701b9e Mon Sep 17 00:00:00 2001
From: cschwinne
Date: Tue, 17 Nov 2020 22:46:17 +0100
Subject: [PATCH 3/5] Fix a few compiler warnings
---
platformio.ini | 8 ++++++--
wled00/FX.h | 4 ++++
wled00/src/dependencies/espalexa/Espalexa.h | 2 +-
wled00/src/dependencies/espalexa/EspalexaDevice.h | 2 +-
4 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/platformio.ini b/platformio.ini
index 3e2a3ef8..a1937846 100644
--- a/platformio.ini
+++ b/platformio.ini
@@ -125,6 +125,9 @@ build_flags =
-Wno-unused-but-set-variable
-Wno-return-type
-Wno-sequence-point
+ -Wno-narrowing
+ -Wno-reorder
+ -Wno-unused-local-typedefs
-DMQTT_MAX_PACKET_SIZE=1024
-DSECURE_CLIENT=SECURE_CLIENT_BEARSSL
-DBEARSSL_SSL_BASIC
@@ -322,9 +325,10 @@ lib_ignore =
[env:esp32_poe]
board = esp32-poe
-platform = espressif32@1.12.4
+platform = espressif32@2.0
upload_speed = 921600
-build_flags = ${common.build_flags_esp32} ${common.debug_flags} -D RLYPIN=-1 -D WLED_USE_ETHERNET
+build_unflags = ${common.build_unflags}
+build_flags = ${common.build_flags_esp32} -D RLYPIN=-1 -D WLED_USE_ETHERNET
lib_ignore =
ESPAsyncTCP
ESPAsyncUDP
diff --git a/wled00/FX.h b/wled00/FX.h
index 6c893692..75d642cf 100644
--- a/wled00/FX.h
+++ b/wled00/FX.h
@@ -40,8 +40,12 @@
#define DEFAULT_INTENSITY (uint8_t)128
#define DEFAULT_COLOR (uint32_t)0xFFAA00
+#ifndef MIN
#define MIN(a,b) ((a)<(b)?(a):(b))
+#endif
+#ifndef MAX
#define MAX(a,b) ((a)>(b)?(a):(b))
+#endif
/* Not used in all effects yet */
#define WLED_FPS 42
diff --git a/wled00/src/dependencies/espalexa/Espalexa.h b/wled00/src/dependencies/espalexa/Espalexa.h
index 341de015..cf42f9ff 100644
--- a/wled00/src/dependencies/espalexa/Espalexa.h
+++ b/wled00/src/dependencies/espalexa/Espalexa.h
@@ -583,7 +583,7 @@ public:
return perc / 255;
}
- ~Espalexa(){delete devices;} //note: Espalexa is NOT meant to be destructed
+ ~Espalexa(){} //note: Espalexa is NOT meant to be destructed
};
#endif
diff --git a/wled00/src/dependencies/espalexa/EspalexaDevice.h b/wled00/src/dependencies/espalexa/EspalexaDevice.h
index 0653a418..b7f2f184 100644
--- a/wled00/src/dependencies/espalexa/EspalexaDevice.h
+++ b/wled00/src/dependencies/espalexa/EspalexaDevice.h
@@ -4,7 +4,7 @@
#include "Arduino.h"
#include
-typedef class EspalexaDevice;
+class EspalexaDevice;
typedef std::function BrightnessCallbackFunction;
typedef std::function DeviceCallbackFunction;
From 77aa2b6ba95ff45665d9e6d5f0e1fb8581a844ec Mon Sep 17 00:00:00 2001
From: cschwinne
Date: Wed, 18 Nov 2020 00:54:41 +0100
Subject: [PATCH 4/5] Streamline platformio.ini
---
.gitignore | 2 +-
pio/override_copy.py | 9 -
pio/user_config_copy.py | 9 +
platformio.ini | 120 ++----
platformio_override.ini.example | 4 +-
readme.md | 2 +-
wled00/const.h | 5 +-
wled00/my_config_sample.h | 25 ++
wled00/user_config_override_sample.h | 550 ---------------------------
wled00/wled.h | 15 +-
10 files changed, 91 insertions(+), 650 deletions(-)
delete mode 100644 pio/override_copy.py
create mode 100644 pio/user_config_copy.py
create mode 100644 wled00/my_config_sample.h
delete mode 100644 wled00/user_config_override_sample.h
diff --git a/.gitignore b/.gitignore
index 74e5dde3..a95dd5ac 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 82549e75..00000000
--- 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 00000000..1251ca17
--- /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 a1937846..e95f27f1 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 e6c636a3..cf9da268 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 a1112bd9..e85f98ec 100644
--- a/readme.md
+++ b/readme.md
@@ -6,7 +6,7 @@
-
+
diff --git a/wled00/const.h b/wled00/const.h
index a6810120..1f131d76 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 00000000..fc54c1c5
--- /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 39a61d16..00000000
--- 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 f266e8df..73e1f167 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 @@ public:
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
From fe57bfce1bbbf15016cecc9ac15876e1649357f9 Mon Sep 17 00:00:00 2001
From: cschwinne
Date: Wed, 18 Nov 2020 09:45:07 +0100
Subject: [PATCH 5/5] FS define
---
platformio.ini | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/platformio.ini b/platformio.ini
index 070e1c1d..c23047e6 100644
--- a/platformio.ini
+++ b/platformio.ini
@@ -159,6 +159,7 @@ build_flags =
[esp32]
build_flags = -w -g
-DARDUINO_ARCH_ESP32
+ -DCONFIG_LITTLEFS_FOR_IDF_3_2
[scripts_defaults]
extra_scripts = pio/name-firmware.py
@@ -175,8 +176,6 @@ board_build.flash_mode = dout
monitor_speed = 115200
upload_speed = 115200
-lib_extra_dirs = ./wled00/src
-
# ------------------------------------------------------------------------------
# LIBRARIES: required dependencies
# Please note that we don't always use the latest version of a library.