submitting PR

Here they are the PR #2776, #2803 and #2804 rebased for 0_14 branch,
I hope that now they are OK!
This commit is contained in:
ingDIY 2022-10-02 23:23:24 +02:00
parent f385af595a
commit 503835d47e
7 changed files with 68 additions and 26 deletions

View File

@ -1,20 +1,17 @@
# Auto Save # Auto Save
v2 Usermod to automatically save settings v2 Usermod to automatically save settings
to preset number AUTOSAVE_PRESET_NUM after a change to any of to preset number AUTOSAVE_PRESET_NUM after a change to any of:
* brightness * brightness
* effect speed * effect speed
* effect intensity * effect intensity
* mode (effect) * mode (effect)
* palette * palette
but it will wait for AUTOSAVE_SETTLE_MS milliseconds, a "settle" but it will wait for AUTOSAVE_AFTER_SEC seconds,
period in case there are other changes (any change will a "settle" period in case there are other changes (any change will extend the "settle" window).
extend the "settle" window).
It will additionally load preset AUTOSAVE_PRESET_NUM at startup. It will additionally load preset AUTOSAVE_PRESET_NUM at startup during the first `loop()`.
during the first `loop()`. Reasoning below.
AutoSaveUsermod is standalone, but if FourLineDisplayUsermod is installed, it will notify the user of the saved changes. AutoSaveUsermod is standalone, but if FourLineDisplayUsermod is installed, it will notify the user of the saved changes.
@ -28,10 +25,21 @@ This file should be placed in the same directory as `platformio.ini`.
### Define Your Options ### Define Your Options
* `USERMOD_AUTO_SAVE` - define this to have this the Auto Save usermod included wled00\usermods_list.cpp * `USERMOD_AUTO_SAVE` - define this to have this the Auto Save usermod included wled00\usermods_list.cpp
* `USERMOD_FOUR_LINE_DISPLAY` - define this to have this the Four Line Display mod included wled00\usermods_list.cpp - also tells this usermod that the display is available (see the Four Line Display usermod `readme.md` for more details) * `AUTOSAVE_AFTER_SEC` - define the delay time after the settings auto-saving routine should be executed
* `AUTOSAVE_PRESET_NUM` - define the preset number used by autosave usermod
* `USERMOD_AUTO_SAVE_ON_BOOT` - define if autosave should be enabled on boot
* `USERMOD_FOUR_LINE_DISPLAY` - define this to have this the Four Line Display mod included wled00\usermods_list.cpp
also tells this usermod that the display is available
(see the Four Line Display usermod `readme.md` for more details)
You can configure auto-save parameters using Usermods settings page. Example to add in platformio_override:
-D USERMOD_AUTO_SAVE
-D AUTOSAVE_AFTER_SEC=10
-D AUTOSAVE_PRESET_NUM=100
-D USERMOD_AUTO_SAVE_ON_BOOT=true
You can also configure auto-save parameters using Usermods settings page.
### PlatformIO requirements ### PlatformIO requirements

View File

@ -33,9 +33,23 @@ class AutoSaveUsermod : public Usermod {
bool enabled = true; bool enabled = true;
// configurable parameters // configurable parameters
#ifdef AUTOSAVE_AFTER_SEC
uint16_t autoSaveAfterSec = AUTOSAVE_AFTER_SEC;
#else
uint16_t autoSaveAfterSec = 15; // 15s by default uint16_t autoSaveAfterSec = 15; // 15s by default
#endif
#ifdef AUTOSAVE_PRESET_NUM
uint8_t autoSavePreset = AUTOSAVE_PRESET_NUM;
#else
uint8_t autoSavePreset = 250; // last possible preset uint8_t autoSavePreset = 250; // last possible preset
#endif
#ifdef USERMOD_AUTO_SAVE_ON_BOOT
bool applyAutoSaveOnBoot = USERMOD_AUTO_SAVE_ON_BOOT;
#else
bool applyAutoSaveOnBoot = false; // do we load auto-saved preset on boot? bool applyAutoSaveOnBoot = false; // do we load auto-saved preset on boot?
#endif
// If we've detected the need to auto save, this will be non zero. // If we've detected the need to auto save, this will be non zero.
unsigned long autoSaveAfter = 0; unsigned long autoSaveAfter = 0;

View File

@ -15,11 +15,14 @@ This file should be placed in the same directory as `platformio.ini`.
### Define Your Options ### Define Your Options
* `USERMOD_ROTARY_ENCODER_UI` - define this to have this user mod included wled00\usermods_list.cpp * `USERMOD_ROTARY_ENCODER_UI` - define this to have this user mod included wled00\usermods_list.cpp
* `USERMOD_FOUR_LINE_DISPLAY` - define this to have this the Four Line Display mod included wled00\usermods_list.cpp - also tells this usermod that the display is available (see the Four Line Display usermod `readme.md` for more details) * `USERMOD_ROTARY_ENCODER_GPIO` - define the GPIO function (INPUT, INPUT_PULLUP, etc...)
* `ENCODER_DT_PIN` - The encoders DT pin, defaults to 12 * `USERMOD_FOUR_LINE_DISPLAY` - define this to have this the Four Line Display mod included wled00\usermods_list.cpp
* `ENCODER_CLK_PIN` - The encoders CLK pin, defaults to 14 also tells this usermod that the display is available
* `ENCODER_SW_PIN` - The encoders SW pin, defaults to 13 (see the Four Line Display usermod `readme.md` for more details)
* `ENCODER_DT_PIN` - The encoders DT pin, defaults to 12
* `ENCODER_CLK_PIN` - The encoders CLK pin, defaults to 14
* `ENCODER_SW_PIN` - The encoders SW pin, defaults to 13
### PlatformIO requirements ### PlatformIO requirements

View File

@ -110,9 +110,13 @@ public:
return; return;
} }
pinMode(pinA, INPUT_PULLUP); #ifndef USERMOD_ROTARY_ENCODER_GPIO
pinMode(pinB, INPUT_PULLUP); #define USERMOD_ROTARY_ENCODER_GPIO INPUT_PULLUP
pinMode(pinC, INPUT_PULLUP); #endif
pinMode(pinA, USERMOD_ROTARY_ENCODER_GPIO);
pinMode(pinB, USERMOD_ROTARY_ENCODER_GPIO);
pinMode(pinC, USERMOD_ROTARY_ENCODER_GPIO);
currentTime = millis(); currentTime = millis();
loopTime = currentTime; loopTime = currentTime;

View File

@ -278,9 +278,13 @@ public:
return; return;
} }
pinMode(pinA, INPUT_PULLUP); #ifndef USERMOD_ROTARY_ENCODER_GPIO
pinMode(pinB, INPUT_PULLUP); #define USERMOD_ROTARY_ENCODER_GPIO INPUT_PULLUP
pinMode(pinC, INPUT_PULLUP); #endif
pinMode(pinA, USERMOD_ROTARY_ENCODER_GPIO);
pinMode(pinB, USERMOD_ROTARY_ENCODER_GPIO);
pinMode(pinC, USERMOD_ROTARY_ENCODER_GPIO);
loopTime = millis(); loopTime = millis();
currentCCT = (approximateKelvinFromRGB(RGBW32(col[0], col[1], col[2], col[3])) - 1900) >> 5; currentCCT = (approximateKelvinFromRGB(RGBW32(col[0], col[1], col[2], col[3])) - 1900) >> 5;

View File

@ -319,6 +319,7 @@
#define ABL_MILLIAMPS_DEFAULT 850 // auto lower brightness to stay close to milliampere limit #define ABL_MILLIAMPS_DEFAULT 850 // auto lower brightness to stay close to milliampere limit
#else #else
#if ABL_MILLIAMPS_DEFAULT < 250 // make sure value is at least 250 #if ABL_MILLIAMPS_DEFAULT < 250 // make sure value is at least 250
#warning "make sure value is at least 250"
#define ABL_MILLIAMPS_DEFAULT 250 #define ABL_MILLIAMPS_DEFAULT 250
#endif #endif
#endif #endif

View File

@ -24,10 +24,18 @@
//#define WLED_DISABLE_OTA // saves 14kb //#define WLED_DISABLE_OTA // saves 14kb
// You can choose some of these features to disable: // You can choose some of these features to disable:
//#define WLED_DISABLE_ALEXA // saves 11kb #ifndef WLED_ENABLE_ALEXA
//#define WLED_DISABLE_BLYNK // saves 6kb #define WLED_DISABLE_ALEXA // saves 11kb
//#define WLED_DISABLE_HUESYNC // saves 4kb #endif
//#define WLED_DISABLE_INFRARED // saves 12kb #ifndef WLED_ENABLE_BLYNK
#define WLED_DISABLE_BLYNK // saves 6kb
#endif
#ifndef WLED_ENABLE_HUESYNC
#define WLED_DISABLE_HUESYNC // saves 4kb
#endif
#ifndef WLED_ENABLE_INFRARED
#define WLED_DISABLE_INFRARED // there is no pin left for this on ESP8266-01, saves 12kb
#endif
#ifndef WLED_DISABLE_MQTT #ifndef WLED_DISABLE_MQTT
#define WLED_ENABLE_MQTT // saves 12kb #define WLED_ENABLE_MQTT // saves 12kb
#endif #endif