Merge pull request #9497 from pcdiem/pwm5

Add DGR CW/RGBW light fixed color support
This commit is contained in:
Theo Arends 2020-10-08 14:50:55 +02:00 committed by GitHub
commit f7369744de
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 28 additions and 16 deletions

View File

@ -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,8 +2409,19 @@ 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;
}
else {
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; bool save_decimal_text = Settings.flag.decimal_text;
char str[16]; char str[16];
LightColorEntry(str, sprintf_P(str, PSTR("%u"), value)); LightColorEntry(str, sprintf_P(str, PSTR("%u"), value));
@ -2420,10 +2431,6 @@ void LightHandleDevGroupItem(void)
light_controller.changeBri(old_bri); light_controller.changeBri(old_bri);
Settings.light_scheme = 0; Settings.light_scheme = 0;
Light.devgrp_no_channels_out = false; Light.devgrp_no_channels_out = false;
}
else {
light_state.setColorMode(LCM_CT);
}
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;

View File

@ -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)