mirror of
https://github.com/arendst/Tasmota.git
synced 2025-07-26 04:06:34 +00:00
Add DGR CW/RGBW light fixed color support
This commit is contained in:
parent
485cc5d03e
commit
f4894226f7
@ -2400,7 +2400,7 @@ void LightHandleDevGroupItem(void)
|
|||||||
send_state = true;
|
send_state = true;
|
||||||
break;
|
break;
|
||||||
case DGR_ITEM_LIGHT_FIXED_COLOR:
|
case DGR_ITEM_LIGHT_FIXED_COLOR:
|
||||||
if (Light.subtype >= LST_RGBW) {
|
if (Light.subtype >= LST_COLDWARM) {
|
||||||
send_state = true;
|
send_state = true;
|
||||||
#ifdef USE_LIGHT_PALETTE
|
#ifdef USE_LIGHT_PALETTE
|
||||||
if (Light.palette_count) {
|
if (Light.palette_count) {
|
||||||
@ -2409,21 +2409,28 @@ void LightHandleDevGroupItem(void)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
#endif // !USE_LIGHT_PALETTE
|
#endif // !USE_LIGHT_PALETTE
|
||||||
value = value % MAX_FIXED_COLOR + 1;
|
if (Light.subtype <= LST_COLDWARM) {
|
||||||
if (value) {
|
value = value % (MAX_FIXED_COLD_WARM - 1) + 201;
|
||||||
bool save_decimal_text = Settings.flag.decimal_text;
|
|
||||||
char str[16];
|
|
||||||
LightColorEntry(str, sprintf_P(str, PSTR("%u"), value));
|
|
||||||
Settings.flag.decimal_text = save_decimal_text;
|
|
||||||
uint32_t old_bri = light_state.getBri();
|
|
||||||
light_controller.changeChannels(Light.entry_color);
|
|
||||||
light_controller.changeBri(old_bri);
|
|
||||||
Settings.light_scheme = 0;
|
|
||||||
Light.devgrp_no_channels_out = false;
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
light_state.setColorMode(LCM_CT);
|
uint32_t max = MAX_FIXED_COLOR;
|
||||||
|
if (Light.subtype >= LST_RGB) {
|
||||||
|
max++;
|
||||||
|
if (Light.subtype >= LST_RGBCW) max += (MAX_FIXED_COLD_WARM - 2);
|
||||||
|
}
|
||||||
|
value = value % max + 1;
|
||||||
|
if (value > MAX_FIXED_COLOR) value += 200 - MAX_FIXED_COLOR;
|
||||||
}
|
}
|
||||||
|
Light.fixed_color_index = value;
|
||||||
|
bool save_decimal_text = Settings.flag.decimal_text;
|
||||||
|
char str[16];
|
||||||
|
LightColorEntry(str, sprintf_P(str, PSTR("%u"), value));
|
||||||
|
Settings.flag.decimal_text = save_decimal_text;
|
||||||
|
uint32_t old_bri = light_state.getBri();
|
||||||
|
light_controller.changeChannels(Light.entry_color);
|
||||||
|
light_controller.changeBri(old_bri);
|
||||||
|
Settings.light_scheme = 0;
|
||||||
|
Light.devgrp_no_channels_out = false;
|
||||||
if (!restore_power && !Light.power) {
|
if (!restore_power && !Light.power) {
|
||||||
Light.old_power = Light.power;
|
Light.old_power = Light.power;
|
||||||
Light.power = 0xff;
|
Light.power = 0xff;
|
||||||
|
@ -204,10 +204,15 @@ void PWMDimmerHandleDevGroupItem(void)
|
|||||||
remote_pwm_dimmer->power_button_increases_bri = (remote_pwm_dimmer->bri < 128);
|
remote_pwm_dimmer->power_button_increases_bri = (remote_pwm_dimmer->bri < 128);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case DGR_ITEM_LIGHT_FIXED_COLOR:
|
|
||||||
if (!device_is_local) remote_pwm_dimmer->fixed_color_index = value;
|
|
||||||
break;
|
|
||||||
#endif // USE_PWM_DIMMER_REMOTE
|
#endif // USE_PWM_DIMMER_REMOTE
|
||||||
|
case DGR_ITEM_LIGHT_FIXED_COLOR:
|
||||||
|
#ifdef USE_PWM_DIMMER_REMOTE
|
||||||
|
if (!device_is_local)
|
||||||
|
remote_pwm_dimmer->fixed_color_index = value;
|
||||||
|
else
|
||||||
|
#endif // USE_PWM_DIMMER_REMOTE
|
||||||
|
local_fixed_color_index = value;
|
||||||
|
break;
|
||||||
case DGR_ITEM_BRI_POWER_ON:
|
case DGR_ITEM_BRI_POWER_ON:
|
||||||
#ifdef USE_PWM_DIMMER_REMOTE
|
#ifdef USE_PWM_DIMMER_REMOTE
|
||||||
if (!device_is_local)
|
if (!device_is_local)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user