mirror of
https://github.com/arendst/Tasmota.git
synced 2025-07-27 20:56:35 +00:00
Merge pull request #15371 from dgwynne/CmndDimmerStepValue
extend dimmer command so the step size can be specified
This commit is contained in:
commit
893b7bad00
@ -2902,6 +2902,44 @@ void LightDimmerOffset(uint32_t index, int32_t offset) {
|
|||||||
CmndDimmer();
|
CmndDimmer();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int DimmerStep(int dimmer)
|
||||||
|
{
|
||||||
|
int step;
|
||||||
|
int plus = 1;
|
||||||
|
int payload;
|
||||||
|
|
||||||
|
if (0 == XdrvMailbox.data_len) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (XdrvMailbox.data[0]) {
|
||||||
|
case '-':
|
||||||
|
plus = 0;
|
||||||
|
case '+':
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (1 == XdrvMailbox.data_len) {
|
||||||
|
step = Settings->dimmer_step;
|
||||||
|
} else {
|
||||||
|
char *ep;
|
||||||
|
step = strtoul(XdrvMailbox.data + 1, &ep, 10);
|
||||||
|
if ('\0' != *ep || 1 > step) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (plus) {
|
||||||
|
payload = min(100, dimmer + step);
|
||||||
|
} else {
|
||||||
|
payload = max(1, dimmer - step);
|
||||||
|
}
|
||||||
|
|
||||||
|
return payload;
|
||||||
|
}
|
||||||
|
|
||||||
void CmndDimmer(void)
|
void CmndDimmer(void)
|
||||||
{
|
{
|
||||||
// Dimmer - Show current Dimmer state
|
// Dimmer - Show current Dimmer state
|
||||||
@ -2926,12 +2964,11 @@ void CmndDimmer(void)
|
|||||||
dimmer = light_state.getDimmer(XdrvMailbox.index);
|
dimmer = light_state.getDimmer(XdrvMailbox.index);
|
||||||
}
|
}
|
||||||
// Handle +/-/!/</> special commands
|
// Handle +/-/!/</> special commands
|
||||||
if (1 == XdrvMailbox.data_len) {
|
int payload = DimmerStep(dimmer);
|
||||||
if ('+' == XdrvMailbox.data[0]) {
|
if (-1 != payload) {
|
||||||
XdrvMailbox.payload = (dimmer > (100 - Settings->dimmer_step - 1)) ? 100 : dimmer + Settings->dimmer_step;
|
XdrvMailbox.payload = payload;
|
||||||
} else if ('-' == XdrvMailbox.data[0]) {
|
} else if (1 == XdrvMailbox.data_len) {
|
||||||
XdrvMailbox.payload = (dimmer < (Settings->dimmer_step + 1)) ? 1 : dimmer - Settings->dimmer_step;
|
if ('!' == XdrvMailbox.data[0] && Light.fade_running) {
|
||||||
} else if ('!' == XdrvMailbox.data[0] && Light.fade_running) {
|
|
||||||
XdrvMailbox.payload = LightGetCurFadeBri();
|
XdrvMailbox.payload = LightGetCurFadeBri();
|
||||||
} else if ('<' == XdrvMailbox.data[0] ) {
|
} else if ('<' == XdrvMailbox.data[0] ) {
|
||||||
XdrvMailbox.payload = 1;
|
XdrvMailbox.payload = 1;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user