diff --git a/tasmota/my_user_config.h b/tasmota/my_user_config.h index aa98f3e82..d69039c10 100644 --- a/tasmota/my_user_config.h +++ b/tasmota/my_user_config.h @@ -218,7 +218,8 @@ // (POWER_ALL_OFF, POWER_ALL_ON, POWER_ALL_SAVED_TOGGLE, POWER_ALL_SAVED, POWER_ALL_ALWAYS_ON, POWER_ALL_OFF_PULSETIME_ON) #define APP_BLINKTIME 10 // [BlinkTime] Time in 0.1 Sec to blink/toggle power for relay 1 #define APP_BLINKCOUNT 10 // [BlinkCount] Number of blinks (0 = 32000) -#define APP_SLEEP 0 // [Sleep] Sleep time to lower energy consumption (0 = Off, 1 - 250 mSec) +#define APP_SLEEP 0 // [Sleep] Sleep time to lower energy consumption (0 = Off, 1 - 250 mSec), +#define PWM_MAX_SLEEP 10 // Sleep will be lowered to this value when light is on, to avoid flickering #define KEY_DEBOUNCE_TIME 50 // [ButtonDebounce] Number of mSeconds button press debounce time #define KEY_HOLD_TIME 40 // [SetOption32] Number of 0.1 seconds to hold Button or external Pushbutton before sending HOLD message diff --git a/tasmota/xdrv_04_light.ino b/tasmota/xdrv_04_light.ino index ab15dbbf0..1f3216c8f 100644 --- a/tasmota/xdrv_04_light.ino +++ b/tasmota/xdrv_04_light.ino @@ -1593,12 +1593,12 @@ void LightAnimate(void) if (!Light.fade_running) { sleep = Settings.sleep; } - } else { -#ifdef PWM_LIGHTSCHEME0_IGNORE_SLEEP - sleep = (LS_POWER == Settings.light_scheme) && (!Light.fade_running) ? Settings.sleep : 0; // If no animation then use sleep as is -#else - sleep = 0; -#endif // PWM_LIGHTSCHEME0_IGNORE_SLEEP + } else { + if (Settings.sleep > PWM_MAX_SLEEP) { + sleep = PWM_MAX_SLEEP; // set a maxumum value of 50 milliseconds to ensure that animations are smooth + } else { + sleep = Settings.sleep; // or keep the current sleep if it's lower than 50 + } switch (Settings.light_scheme) { case LS_POWER: light_controller.calcLevels(Light.new_color);