diff --git a/tasmota/_changelog.ino b/tasmota/_changelog.ino index 4157613036fa..5de8cf19947d 100644 --- a/tasmota/_changelog.ino +++ b/tasmota/_changelog.ino @@ -2,6 +2,7 @@ * 7.0.0.2 20191102 * Add command WebColor19 to control color of Module and Name (#6811) * Add support for Honeywell I2C HIH series Humidity and Temperetaure sensor (#6808) + * Fix wrong Dimmer behavior introduced with #6799 when SetOption37 < 128 * * 7.0.0.1 20191027 * Remove references to versions before 6.0 diff --git a/tasmota/xdrv_04_light.ino b/tasmota/xdrv_04_light.ino index f4fb6dbaba9b..034ed005fec7 100644 --- a/tasmota/xdrv_04_light.ino +++ b/tasmota/xdrv_04_light.ino @@ -2163,11 +2163,12 @@ void CmndColorTemperature(void) void CmndDimmer(void) { uint32_t dimmer; - - if ((1 == XdrvMailbox.index) || (2 == XdrvMailbox.index)) { // Dimmer1 is RGB, Dimmer 2 iw white - dimmer = light_state.getDimmer(XdrvMailbox.index); - } else { + if (XdrvMailbox.index > 2) { XdrvMailbox.index = 1; } + + if ((light_controller.isCTRGBLinked()) || (0 == XdrvMailbox.index)) { dimmer = light_state.getDimmer(); + } else { + dimmer = light_state.getDimmer(XdrvMailbox.index); } // Handle +/- special command if (1 == XdrvMailbox.data_len) { @@ -2179,10 +2180,17 @@ void CmndDimmer(void) } // If value is ok, change it, otherwise report old value if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 100)) { - if ((1 == XdrvMailbox.index) || (2 == XdrvMailbox.index)) { - light_controller.changeDimmer(XdrvMailbox.payload, XdrvMailbox.index); - } else { + if (light_controller.isCTRGBLinked()) { + // normal state, linked RGB and CW light_controller.changeDimmer(XdrvMailbox.payload); + } else { + if (0 != XdrvMailbox.index) { + light_controller.changeDimmer(XdrvMailbox.payload, XdrvMailbox.index); + } else { + // change both dimmers + light_controller.changeDimmer(XdrvMailbox.payload, 1); + light_controller.changeDimmer(XdrvMailbox.payload, 2); + } } Light.update = true; LightPreparePower();