Merge pull request #8257 from dermm/development

Add Option to activate PWM CT mode without select module 48
This commit is contained in:
Theo Arends 2020-04-26 10:49:01 +02:00 committed by GitHub
commit cc19cc5773
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 6 additions and 4 deletions

View File

@ -283,6 +283,7 @@
#define LIGHT_CHANNEL_MODE false // [SetOption68] Enable multi-channels PWM instead of Color PWM
#define LIGHT_SLIDER_POWER false // [SetOption77] Do not power off if slider moved to far left
#define LIGHT_ALEXA_CT_RANGE false // [SetOption82] Reduced CT range for Alexa
#define LIGHT_PWM_CT_MODE false // [SetOption92] Set PWM Mode from regular PWM to ColorTemp control (Xiaomi Philips ...) a.k.a. module 48 mode
// -- Energy --------------------------------------
#define ENERGY_VOLTAGE_ALWAYS false // [SetOption21] Enable show voltage even if powered off

View File

@ -111,7 +111,7 @@ typedef union { // Restricted by MISRA-C Rule 18.4 bu
uint32_t zigbee_distinct_topics : 1; // bit 7 (v8.1.0.10) - SetOption89 - Distinct MQTT topics per device for Zigbee (#7835)
uint32_t only_json_message : 1; // bit 8 (v8.2.0.3) - SetOption90 - Disable non-json MQTT response
uint32_t fade_at_startup : 1; // bit 9 (v8.2.0.3) - SetOption91 - Enable light fading at start/power on
uint32_t spare10 : 1;
uint32_t pwm_ct_mode : 1; // bit 10 () - SetOption92 - Set PWM Mode from regular PWM to ColorTemp control (Xiaomi Philips ...)
uint32_t spare11 : 1;
uint32_t spare12 : 1;
uint32_t spare13 : 1;

View File

@ -947,6 +947,7 @@ void SettingsDefaultSet2(void)
Settings.flag3.pwm_multi_channels = LIGHT_CHANNEL_MODE;
Settings.flag3.slider_dimmer_stay_on = LIGHT_SLIDER_POWER;
Settings.flag4.alexa_ct_range = LIGHT_ALEXA_CT_RANGE;
Settings.flag4.pwm_ct_mode = LIGHT_PWM_CT_MODE;
Settings.pwm_frequency = PWM_FREQ;
Settings.pwm_range = PWM_RANGE;

View File

@ -1996,7 +1996,7 @@ bool isChannelGammaCorrected(uint32_t channel) {
if (!Settings.light_correction) { return false; } // Gamma correction not activated
if (channel >= Light.subtype) { return false; } // Out of range
#ifdef ESP8266
if (PHILIPS == my_module_type) {
if ((PHILIPS == my_module_type) || (Settings.flag4.pwm_ct_mode)) {
if ((LST_COLDWARM == Light.subtype) && (1 == channel)) { return false; } // PMW reserved for CT
if ((LST_RGBCW == Light.subtype) && (4 == channel)) { return false; } // PMW reserved for CT
}
@ -2007,7 +2007,7 @@ bool isChannelGammaCorrected(uint32_t channel) {
// is the channel a regular PWM or ColorTemp control
bool isChannelCT(uint32_t channel) {
#ifdef ESP8266
if (PHILIPS == my_module_type) {
if ((PHILIPS == my_module_type) || (Settings.flag4.pwm_ct_mode)) {
if ((LST_COLDWARM == Light.subtype) && (1 == channel)) { return true; } // PMW reserved for CT
if ((LST_RGBCW == Light.subtype) && (4 == channel)) { return true; } // PMW reserved for CT
}
@ -2191,7 +2191,7 @@ void calcGammaBulbs(uint16_t cur_col_10[5]) {
uint16_t white_bri10_1023 = (white_bri10 > 1023) ? 1023 : white_bri10; // max 1023
#ifdef ESP8266
if (PHILIPS == my_module_type) { // channel 1 is the color tone, mapped to cold channel (0..255)
if ((PHILIPS == my_module_type) || (Settings.flag4.pwm_ct_mode)) { // channel 1 is the color tone, mapped to cold channel (0..255)
// Xiaomi Philips bulbs follow a different scheme:
cur_col_10[cw1] = light_state.getCT10bits();
// channel 0=intensity, channel1=temperature