From f8115a5abde45eac2748ccfb28fa5aba5e6cb9cc Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 13 Sep 2018 11:43:23 -0300 Subject: [PATCH 1/2] Added support for Xiaomi-Phillips bulb https://github.com/arendst/Sonoff-Tasmota/issues/3055 --- sonoff/sonoff_template.h | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/sonoff/sonoff_template.h b/sonoff/sonoff_template.h index 1ab62ae63..781b1004d 100644 --- a/sonoff/sonoff_template.h +++ b/sonoff/sonoff_template.h @@ -230,6 +230,7 @@ enum SupportedModules { BLITZWOLF_BWSHP2, SHELLY1, SHELLY2, + PHILIPS, MAXMODULE }; /********************************************************************************************/ @@ -399,7 +400,8 @@ const uint8_t kModuleNiceList[MAXMODULE] PROGMEM = { KMC_70011, AILIGHT, WEMOS, - WITTY + WITTY, + PHILIPS }; // Default module settings @@ -1044,6 +1046,14 @@ const mytmplt kModules[MAXMODULE] PROGMEM = { GPIO_SWT2_NP, // GPIO14 0, // GPIO15 MCP39F501 Reset 0, 0 + }, + { "Xiaomi Philips", // Xiaomi Philips bulb (ESP8266) + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + GPIO_PWM2, // GPIO12 cold/warm light + 0, 0, + GPIO_PWM1, // GPIO15 light intensity + 0, 0 } }; From 6f724e705b63b93d38a24ea66109ff0ac04deca6 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 13 Sep 2018 11:45:01 -0300 Subject: [PATCH 2/2] Added support for Xiaomi-Phillips bulb --- sonoff/xdrv_04_light.ino | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/sonoff/xdrv_04_light.ino b/sonoff/xdrv_04_light.ino index 93c2c522c..2a5a15b0c 100644 --- a/sonoff/xdrv_04_light.ino +++ b/sonoff/xdrv_04_light.ino @@ -427,6 +427,11 @@ void LightSetColorTemp(uint16_t ct) } uint16_t icold = (100 * (347 - my_ct)) / 136; uint16_t iwarm = (100 * my_ct) / 136; + if (PHILIPS == Settings.module) { + // Xiaomi Philips bulbs follow a different scheme: + // channel 0=intensity, channel2=temperature + Settings.light_color[1] = (uint8_t)icold; + } else if (LST_RGBWC == light_subtype) { Settings.light_color[0] = 0; Settings.light_color[1] = 0; @@ -458,6 +463,15 @@ void LightSetDimmer(uint8_t myDimmer) { float temp; + if (PHILIPS == Settings.module) { + // Xiaomi Philips bulbs use two PWM channels with a different scheme: + float dimmer = 100 / (float)myDimmer; + temp = (float)Settings.light_color[0] / dimmer; // channel 1 is intensity + light_current_color[0] = (uint8_t)temp; + temp = (float)Settings.light_color[1]; // channel 2 is temperature + light_current_color[1] = (uint8_t)temp; + return; + } if (LT_PWM1 == light_type) { Settings.light_color[0] = 255; // One PWM channel only supports Dimmer but needs max color }