Add PWMDimmerPWMs command, Set brightness LEDs in setBriRGB & setBriCT

This commit is contained in:
Paul C Diem 2020-10-02 12:40:45 -05:00
parent a9630b9d05
commit e3cc5df996
4 changed files with 48 additions and 6 deletions

View File

@ -615,6 +615,7 @@
// Commands xdrv_34_pwm_dimmer.ino // Commands xdrv_34_pwm_dimmer.ino
#ifdef USE_PWM_DIMMER #ifdef USE_PWM_DIMMER
#define D_CMND_BRI_PRESET "BriPreset" #define D_CMND_BRI_PRESET "BriPreset"
#define D_CMND_PWM_DIMMER_PWMS "PWMDimmerPWMs"
#endif #endif
// Commands xdrv_38_ping.ino // Commands xdrv_38_ping.ino

View File

@ -277,6 +277,18 @@ typedef union {
}; };
} SensorCfg1; } SensorCfg1;
typedef union {
uint8_t data;
struct {
uint8_t pwm_count : 3; // Number of PWMs to use for light
uint8_t spare3 : 1;
uint8_t spare4 : 1;
uint8_t spare5 : 1;
uint8_t spare6 : 1;
uint8_t spare7 : 1;
};
} PWMDimmerCfg;
typedef union { typedef union {
uint8_t data; uint8_t data;
struct { struct {
@ -589,7 +601,7 @@ struct {
uint8_t sps30_inuse_hours; // F02 uint8_t sps30_inuse_hours; // F02
uint8_t hotplug_scan; // F03 uint8_t hotplug_scan; // F03
uint8_t bri_power_on; // F04 uint8_t bri_power_on; // F04
uint8_t bri_min; // F05 PWMDimmerCfg pwm_dimmer_cfg; // F05
uint8_t bri_preset_low; // F06 uint8_t bri_preset_low; // F06
uint8_t bri_preset_high; // F07 uint8_t bri_preset_high; // F07
int8_t hum_comp; // F08 int8_t hum_comp; // F08

View File

@ -564,9 +564,6 @@ class LightStateClass {
#ifdef DEBUG_LIGHT #ifdef DEBUG_LIGHT
AddLog_P2(LOG_LEVEL_DEBUG_MORE, "LightStateClass::setBri RGB raw (%d %d %d) HS (%d %d) bri (%d)", _r, _g, _b, _hue, _sat, _briRGB); AddLog_P2(LOG_LEVEL_DEBUG_MORE, "LightStateClass::setBri RGB raw (%d %d %d) HS (%d %d) bri (%d)", _r, _g, _b, _hue, _sat, _briRGB);
#endif #endif
#ifdef USE_PWM_DIMMER
if (PWM_DIMMER == my_module_type) PWMDimmerSetBrightnessLeds(0);
#endif // USE_PWM_DIMMER
} }
// changes the RGB brightness alone // changes the RGB brightness alone
@ -574,6 +571,9 @@ class LightStateClass {
uint8_t prev_bri = _briRGB; uint8_t prev_bri = _briRGB;
_briRGB = bri_rgb; _briRGB = bri_rgb;
if (bri_rgb > 0) { addRGBMode(); } if (bri_rgb > 0) { addRGBMode(); }
#ifdef USE_PWM_DIMMER
if (PWM_DIMMER == my_module_type) PWMDimmerSetBrightnessLeds(0);
#endif // USE_PWM_DIMMER
return prev_bri; return prev_bri;
} }
@ -582,6 +582,9 @@ class LightStateClass {
uint8_t prev_bri = _briCT; uint8_t prev_bri = _briCT;
_briCT = bri_ct; _briCT = bri_ct;
if (bri_ct > 0) { addCTMode(); } if (bri_ct > 0) { addCTMode(); }
#ifdef USE_PWM_DIMMER
if (PWM_DIMMER == my_module_type) PWMDimmerSetBrightnessLeds(0);
#endif // USE_PWM_DIMMER
return prev_bri; return prev_bri;
} }
@ -1275,6 +1278,13 @@ bool LightModuleInit(void)
light_type = LT_PWM2; light_type = LT_PWM2;
} }
#endif // ESP8266 #endif // ESP8266
#ifdef USE_PWM_DIMMER
#ifdef USE_DEVICE_GROUPS
else if (PWM_DIMMER == my_module_type) {
light_type = Settings.pwm_dimmer_cfg.pwm_count + 1;
}
#endif // USE_DEVICE_GROUPS
#endif // USE_PWM_DIMMER
if (light_type > LT_BASIC) { if (light_type > LT_BASIC) {
devices_present++; devices_present++;

View File

@ -33,10 +33,18 @@
#define XDRV_35 35 #define XDRV_35 35
const char kPWMDimmerCommands[] PROGMEM = "|" // No prefix const char kPWMDimmerCommands[] PROGMEM = "|" // No prefix
D_CMND_BRI_PRESET; D_CMND_BRI_PRESET
#ifdef USE_DEVICE_GROUPS
"|" D_CMND_PWM_DIMMER_PWMS
#endif // USE_DEVICE_GROUPS
;
void (* const PWMDimmerCommand[])(void) PROGMEM = { void (* const PWMDimmerCommand[])(void) PROGMEM = {
&CmndBriPreset }; &CmndBriPreset,
#ifdef USE_DEVICE_GROUPS
&CmndPWMDimmerPWMs,
#endif // USE_DEVICE_GROUPS
};
#ifdef USE_PWM_DIMMER_REMOTE #ifdef USE_PWM_DIMMER_REMOTE
struct remote_pwm_dimmer { struct remote_pwm_dimmer {
@ -731,6 +739,17 @@ void CmndBriPreset(void)
Response_P(PSTR("{\"" D_CMND_BRI_PRESET "\":{\"Low\":%d,\"High\":%d}}"), Settings.bri_preset_low, Settings.bri_preset_high); Response_P(PSTR("{\"" D_CMND_BRI_PRESET "\":{\"Low\":%d,\"High\":%d}}"), Settings.bri_preset_low, Settings.bri_preset_high);
} }
#ifdef USE_DEVICE_GROUPS
void CmndPWMDimmerPWMs(void)
{
if (XdrvMailbox.data_len > 0 && XdrvMailbox.payload <= 5) {
Settings.pwm_dimmer_cfg.pwm_count = XdrvMailbox.payload - 1;
restart_flag = 2;
}
Response_P(PSTR("{\"" D_CMND_PWM_DIMMER_PWMS "\":%u}"), Settings.pwm_dimmer_cfg.pwm_count + 1);
}
#endif // USE_DEVICE_GROUPS
/*********************************************************************************************\ /*********************************************************************************************\
* Interface * Interface
\*********************************************************************************************/ \*********************************************************************************************/