mirror of https://github.com/arendst/Tasmota.git
Merge pull request #8155 from s-hadinger/fix_8058_scheme
Fix Scheme 2-4 brightness when SetOption68 1 (#8058)
This commit is contained in:
commit
a397f3cd5a
|
@ -30,6 +30,7 @@
|
||||||
- Add support for Seven Segment display using HT16K33 (#8116)
|
- Add support for Seven Segment display using HT16K33 (#8116)
|
||||||
- Add support for AS3935 Lightning Sensor by device111 (#8130)
|
- Add support for AS3935 Lightning Sensor by device111 (#8130)
|
||||||
- Fix prevent multiple pings to run concurrently
|
- Fix prevent multiple pings to run concurrently
|
||||||
|
- Fix Scheme 2-4 brightness when SetOption68 1 (#8058)
|
||||||
|
|
||||||
### 8.2.0.2 20200328
|
### 8.2.0.2 20200328
|
||||||
|
|
||||||
|
|
|
@ -1299,6 +1299,7 @@ void LightInit(void)
|
||||||
light_controller.setSubType(Light.subtype);
|
light_controller.setSubType(Light.subtype);
|
||||||
light_controller.loadSettings();
|
light_controller.loadSettings();
|
||||||
light_controller.setAlexaCTRange(Settings.flag4.alexa_ct_range);
|
light_controller.setAlexaCTRange(Settings.flag4.alexa_ct_range);
|
||||||
|
light_controller.calcLevels(); // calculate the initial values (#8058)
|
||||||
|
|
||||||
if (LST_SINGLE == Light.subtype) {
|
if (LST_SINGLE == Light.subtype) {
|
||||||
Settings.light_color[0] = 255; // One channel only supports Dimmer but needs max color
|
Settings.light_color[0] = 255; // One channel only supports Dimmer but needs max color
|
||||||
|
@ -1465,7 +1466,9 @@ void LightSetSignal(uint16_t lo, uint16_t hi, uint16_t value)
|
||||||
// convert channels to string, use Option 17 to foce decimal, unless force_hex
|
// convert channels to string, use Option 17 to foce decimal, unless force_hex
|
||||||
char* LightGetColor(char* scolor, boolean force_hex = false)
|
char* LightGetColor(char* scolor, boolean force_hex = false)
|
||||||
{
|
{
|
||||||
light_controller.calcLevels();
|
if ((0 == Settings.light_scheme) || (!Light.pwm_multi_channels)) {
|
||||||
|
light_controller.calcLevels(); // recalculate levels only if Scheme 0, otherwise we mess up levels
|
||||||
|
}
|
||||||
scolor[0] = '\0';
|
scolor[0] = '\0';
|
||||||
for (uint32_t i = 0; i < Light.subtype; i++) {
|
for (uint32_t i = 0; i < Light.subtype; i++) {
|
||||||
if (!force_hex && Settings.flag.decimal_text) { // SetOption17 - Switch between decimal or hexadecimal output
|
if (!force_hex && Settings.flag.decimal_text) { // SetOption17 - Switch between decimal or hexadecimal output
|
||||||
|
@ -1698,9 +1701,14 @@ void LightCycleColor(int8_t direction)
|
||||||
|
|
||||||
// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("LGT: random %d, wheel %d, hue %d"), Light.random, Light.wheel, hue);
|
// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("LGT: random %d, wheel %d, hue %d"), Light.random, Light.wheel, hue);
|
||||||
|
|
||||||
|
if (!Light.pwm_multi_channels) {
|
||||||
uint8_t sat;
|
uint8_t sat;
|
||||||
light_state.getHSB(nullptr, &sat, nullptr); // Allow user control over Saturation
|
light_state.getHSB(nullptr, &sat, nullptr); // Allow user control over Saturation
|
||||||
light_state.setHS(hue, sat);
|
light_state.setHS(hue, sat);
|
||||||
|
} else {
|
||||||
|
light_state.setHS(hue, 255);
|
||||||
|
light_state.setBri(255); // If multi-channel, force bri to max, it will be later dimmed to correct value
|
||||||
|
}
|
||||||
light_controller.calcLevels(Light.new_color);
|
light_controller.calcLevels(Light.new_color);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1808,13 +1816,20 @@ void LightAnimate(void)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case LS_CYCLEUP:
|
case LS_CYCLEUP:
|
||||||
LightCycleColor(1);
|
|
||||||
break;
|
|
||||||
case LS_CYCLEDN:
|
case LS_CYCLEDN:
|
||||||
LightCycleColor(-1);
|
|
||||||
break;
|
|
||||||
case LS_RANDOM:
|
case LS_RANDOM:
|
||||||
|
if (LS_CYCLEUP == Settings.light_scheme) {
|
||||||
|
LightCycleColor(1);
|
||||||
|
} else if (LS_CYCLEDN == Settings.light_scheme) {
|
||||||
|
LightCycleColor(-1);
|
||||||
|
} else {
|
||||||
LightCycleColor(0);
|
LightCycleColor(0);
|
||||||
|
}
|
||||||
|
if (Light.pwm_multi_channels) { // See #8058
|
||||||
|
Light.new_color[0] = changeUIntScale(Light.new_color[0], 0, 255, 0, Settings.light_color[0]);
|
||||||
|
Light.new_color[1] = changeUIntScale(Light.new_color[1], 0, 255, 0, Settings.light_color[1]);
|
||||||
|
Light.new_color[2] = changeUIntScale(Light.new_color[2], 0, 255, 0, Settings.light_color[2]);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
XlgtCall(FUNC_SET_SCHEME);
|
XlgtCall(FUNC_SET_SCHEME);
|
||||||
|
|
Loading…
Reference in New Issue