diff --git a/tasmota/tasmota_xdrv_driver/xdrv_04_light.ino b/tasmota/tasmota_xdrv_driver/xdrv_04_light.ino index 7323d4f26..f79e7da82 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_04_light.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_04_light.ino @@ -236,6 +236,7 @@ struct LIGHT { uint8_t fixed_color_index = 1; uint8_t pwm_offset = 0; // Offset in color buffer, used by sm16716 to drive itself RGB, and PWM for CCT (value is 0 or 3) uint8_t max_scheme = LS_MAX -1; + uint8_t last_scheme; uint32_t wakeup_start_time = 0; @@ -246,7 +247,7 @@ struct LIGHT { bool fade_initialized = false; // dont't fade at startup bool fade_running = false; #ifdef USE_DEVICE_GROUPS - uint8_t last_scheme = 0; + uint8_t last_dgr_scheme = 0; bool devgrp_no_channels_out = false; // don't share channels with device group (e.g. if scheme set by other device) #ifdef USE_DGR_LIGHT_SEQUENCE uint8_t sequence_offset = 0; // number of channel changes this light is behind the master @@ -1871,12 +1872,14 @@ void LightAnimate(void) } #ifdef USE_DEVICE_GROUPS - if (Settings->light_scheme != Light.last_scheme) { - Light.last_scheme = Settings->light_scheme; + if (Settings->light_scheme != Light.last_dgr_scheme) { + Light.last_dgr_scheme = Settings->light_scheme; SendDeviceGroupMessage(Light.device, DGR_MSGTYP_UPDATE, DGR_ITEM_LIGHT_SCHEME, Settings->light_scheme); Light.devgrp_no_channels_out = false; } #endif // USE_DEVICE_GROUPS + + Light.last_scheme = Settings->light_scheme; } if ((Settings->light_scheme < LS_MAX) || power_off) { // exclude WS281X Neopixel schemes @@ -2486,7 +2489,7 @@ void LightHandleDevGroupItem(void) break; case DGR_ITEM_LIGHT_SCHEME: if (Settings->light_scheme != value) { - Light.last_scheme = Settings->light_scheme = value; + Light.last_dgr_scheme = Settings->light_scheme = value; Light.devgrp_no_channels_out = (value != 0); send_state = true; } diff --git a/tasmota/tasmota_xlgt_light/xlgt_01_ws2812.ino b/tasmota/tasmota_xlgt_light/xlgt_01_ws2812.ino index d30a4fba5..9ddeb4928 100644 --- a/tasmota/tasmota_xlgt_light/xlgt_01_ws2812.ino +++ b/tasmota/tasmota_xlgt_light/xlgt_01_ws2812.ino @@ -197,7 +197,6 @@ struct WS2812 { uint8_t show_next = 1; uint8_t scheme_offset = 0; bool suspend_update = false; - bool scheme9; } Ws2812; /********************************************************************************************/ @@ -640,9 +639,6 @@ void Ws2812ShowScheme(void) { uint32_t scheme = Settings->light_scheme - Ws2812.scheme_offset; - if (scheme != 9) { - Ws2812.scheme9 = 0; - } #ifdef USE_NETWORK_LIGHT_SCHEMES if ((scheme != 10) && (ddp_udp_up)) { ddp_udp.stop(); @@ -658,9 +654,8 @@ void Ws2812ShowScheme(void) } break; case 9: // Clear - if (!Ws2812.scheme9) { + if (Settings->light_scheme != Light.last_scheme) { Ws2812Clear(); - Ws2812.scheme9 = 1; } break; #ifdef USE_NETWORK_LIGHT_SCHEMES