Skip to content

Commit

Permalink
Merge pull request #9733 from jamesturton/dimmerstep
Browse files Browse the repository at this point in the history
Add `DimmerStep` command
  • Loading branch information
arendst authored Nov 4, 2020
2 parents 78196f0 + c93bfd1 commit 655a6ec
Show file tree
Hide file tree
Showing 5 changed files with 31 additions and 8 deletions.
1 change: 1 addition & 0 deletions tasmota/i18n.h
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
5 changes: 3 additions & 2 deletions tasmota/settings.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 2 additions & 0 deletions tasmota/settings.ino
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
3 changes: 3 additions & 0 deletions tasmota/tasmota_globals.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
28 changes: 22 additions & 6 deletions tasmota/xdrv_04_light.ino
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand Down Expand Up @@ -2832,8 +2832,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;
Expand All @@ -2851,9 +2851,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
Expand Down Expand Up @@ -2910,6 +2910,22 @@ 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 1..50 - Set dimmer step
if (XdrvMailbox.data_len > 0) {
if (XdrvMailbox.payload < 1) {
Settings.dimmer_step = 1;
} else if (XdrvMailbox.payload > 50) {
Settings.dimmer_step = 50;
} else {
Settings.dimmer_step = XdrvMailbox.payload;
}
}
ResponseCmndNumber(Settings.dimmer_step);
}

void CmndLedTable(void)
{
// LedTable - Show current LedTable state
Expand Down

0 comments on commit 655a6ec

Please sign in to comment.