Added DimmerStep to allow the change of the Dimmer Auto (+/-) Step value

Signed-off-by: Scoobler <jamienwood@hotmail.com>
This commit is contained in:
Scoobler 2020-10-30 13:49:36 +00:00 committed by James Turton
parent bdbe1f9ec2
commit 473362cbee
5 changed files with 34 additions and 8 deletions

View File

@ -421,6 +421,7 @@
#define D_CMND_COLORTEMPERATURE "CT"
#define D_CMND_DIMMER "Dimmer"
#define D_CMND_DIMMER_RANGE "DimmerRange"
#define D_CMND_DIMMER_STEP "DimmerStep"
#define D_CMND_HSBCOLOR "HSBColor"
#define D_CMND_LED "Led"
#define D_CMND_LEDTABLE "LedTable"

View File

@ -635,8 +635,9 @@ struct {
uint8_t shutter_mode; // F43
uint16_t energy_power_delta[3]; // F44
uint16_t shutter_pwmrange[2][MAX_SHUTTERS]; // F4A
uint8_t free_f5a[89]; // F5A Decrement if adding new Setting variables just above and below
uint8_t dimmer_step; // F5A
uint8_t free_f5b[88]; // F5B - Decrement if adding new Setting variables just above and below
// Only 32 bit boundary variables below
SysBitfield5 flag5; // FB4

View File

@ -1015,6 +1015,8 @@ void SettingsDefaultSet2(void)
Settings.dimmer_hw_max = DEFAULT_DIMMER_MAX;
Settings.dimmer_hw_min = DEFAULT_DIMMER_MIN;
Settings.dimmer_step = DEFAULT_DIMMER_STEP;
// Display
// Settings.display_model = 0;
Settings.display_mode = 1;

View File

@ -219,6 +219,9 @@ String EthernetMacAddress(void);
#ifndef DEFAULT_DIMMER_MIN
#define DEFAULT_DIMMER_MIN 0
#endif
#ifndef DEFAULT_DIMMER_STEP
#define DEFAULT_DIMMER_STEP 10
#endif
#ifndef DEFAULT_LIGHT_DIMMER
#define DEFAULT_LIGHT_DIMMER 10
#endif

View File

@ -129,7 +129,7 @@ enum LightSchemes { LS_POWER, LS_WAKEUP, LS_CYCLEUP, LS_CYCLEDN, LS_RANDOM, LS_M
const uint8_t LIGHT_COLOR_SIZE = 25; // Char array scolor size
const char kLightCommands[] PROGMEM = "|" // No prefix
D_CMND_COLOR "|" D_CMND_COLORTEMPERATURE "|" D_CMND_DIMMER "|" D_CMND_DIMMER_RANGE "|" D_CMND_LEDTABLE "|" D_CMND_FADE "|"
D_CMND_COLOR "|" D_CMND_COLORTEMPERATURE "|" D_CMND_DIMMER "|" D_CMND_DIMMER_RANGE "|" D_CMND_DIMMER_STEP "|" D_CMND_LEDTABLE "|" D_CMND_FADE "|"
D_CMND_RGBWWTABLE "|" D_CMND_SCHEME "|" D_CMND_SPEED "|" D_CMND_WAKEUP "|" D_CMND_WAKEUPDURATION "|"
D_CMND_WHITE "|" D_CMND_CHANNEL "|" D_CMND_HSBCOLOR
#ifdef USE_LIGHT_PALETTE
@ -141,7 +141,7 @@ const char kLightCommands[] PROGMEM = "|" // No prefix
"|UNDOCA" ;
void (* const LightCommand[])(void) PROGMEM = {
&CmndColor, &CmndColorTemperature, &CmndDimmer, &CmndDimmerRange, &CmndLedTable, &CmndFade,
&CmndColor, &CmndColorTemperature, &CmndDimmer, &CmndDimmerRange, &CmndDimmerStep, &CmndLedTable, &CmndFade,
&CmndRgbwwTable, &CmndScheme, &CmndSpeed, &CmndWakeup, &CmndWakeupDuration,
&CmndWhite, &CmndChannel, &CmndHsbColor,
#ifdef USE_LIGHT_PALETTE
@ -2829,8 +2829,8 @@ void CmndDimmer(void)
// Dimmer1 0..100 - Change RGB Dimmer
// Dimmer2 0..100 - Change W(W) Dimmer
// Dimmer3 0..100 - Change both RGB and W(W) Dimmers with no fading
// Dimmer<x> + - Incerement Dimmer in steps of 10
// Dimmer<x> - - Decrement Dimmer in steps of 10
// Dimmer<x> + - Incerement Dimmer in steps of DimmerStep
// Dimmer<x> - - Decrement Dimmer in steps of DimmerStep
uint32_t dimmer;
if (XdrvMailbox.index == 3) {
TasmotaGlobal.skip_light_fade = true;
@ -2848,9 +2848,9 @@ void CmndDimmer(void)
// Handle +/- special command
if (1 == XdrvMailbox.data_len) {
if ('+' == XdrvMailbox.data[0]) {
XdrvMailbox.payload = (dimmer > 89) ? 100 : dimmer + 10;
XdrvMailbox.payload = (dimmer > (100 - Settings.dimmer_step - 1)) ? 100 : dimmer + Settings.dimmer_step;
} else if ('-' == XdrvMailbox.data[0]) {
XdrvMailbox.payload = (dimmer < 11) ? 1 : dimmer - 10;
XdrvMailbox.payload = (dimmer < (Settings.dimmer_step + 1)) ? 1 : dimmer - Settings.dimmer_step;
}
}
// If value is ok, change it, otherwise report old value
@ -2907,6 +2907,25 @@ void CmndDimmerRange(void)
Response_P(PSTR("{\"" D_CMND_DIMMER_RANGE "\":{\"Min\":%d,\"Max\":%d}}"), Settings.dimmer_hw_min, Settings.dimmer_hw_max);
}
void CmndDimmerStep(void)
{
// DimmerStep - Show current dimmer step as used by Dimmer +/-
// DimmerStep - Set dimmer step
if (XdrvMailbox.data_len > 0) {
uint32_t parm[1];
parm[0] = Settings.dimmer_step;
ParseParameters(1, parm);
if (parm[0] < 1) {
Settings.dimmer_step = 1;
} else if (parm[0] > 10) {
Settings.dimmer_step = 10;
} else {
Settings.dimmer_step = parm[0];
}
}
Response_P(PSTR("{\"" D_CMND_DIMMER_STEP "\":%d}"), Settings.dimmer_step);
void CmndLedTable(void)
{
// LedTable - Show current LedTable state