mirror of https://github.com/arendst/Tasmota.git
Merge pull request #7893 from malbinola/development
New command ShutterInvertWebButtons
This commit is contained in:
commit
b0399a550e
|
@ -542,6 +542,7 @@
|
||||||
#define D_CMND_SHUTTER_BUTTON "Button"
|
#define D_CMND_SHUTTER_BUTTON "Button"
|
||||||
#define D_CMND_SHUTTER_LOCK "Lock"
|
#define D_CMND_SHUTTER_LOCK "Lock"
|
||||||
#define D_CMND_SHUTTER_ENABLEENDSTOPTIME "EnableEndStopTime"
|
#define D_CMND_SHUTTER_ENABLEENDSTOPTIME "EnableEndStopTime"
|
||||||
|
#define D_CMND_SHUTTER_INVERTWEBBUTTONS "InvertWebButtons"
|
||||||
|
|
||||||
// Commands xdrv_32_hotplug.ino
|
// Commands xdrv_32_hotplug.ino
|
||||||
#define D_CMND_HOTPLUG "HotPlug"
|
#define D_CMND_HOTPLUG "HotPlug"
|
||||||
|
|
|
@ -1164,7 +1164,7 @@ void HandleRoot(void)
|
||||||
int32_t ShutterWebButton;
|
int32_t ShutterWebButton;
|
||||||
if (ShutterWebButton = IsShutterWebButton(idx)) {
|
if (ShutterWebButton = IsShutterWebButton(idx)) {
|
||||||
WSContentSend_P(HTTP_DEVICE_CONTROL, 100 / devices_present, idx,
|
WSContentSend_P(HTTP_DEVICE_CONTROL, 100 / devices_present, idx,
|
||||||
(set_button) ? SettingsText(SET_BUTTON1 + idx -1) : ((Settings.shutter_options[abs(ShutterWebButton)-1] & 2) /* is locked */ ? "-" : ((ShutterWebButton>0) ? "▲" : "▼")),
|
(set_button) ? SettingsText(SET_BUTTON1 + idx -1) : ((Settings.shutter_options[abs(ShutterWebButton)-1] & 2) /* is locked */ ? "-" : ((Settings.shutter_options[abs(ShutterWebButton)-1] & 8) /* invert web buttons */ ? ((ShutterWebButton>0) ? "▼" : "▲") : ((ShutterWebButton>0) ? "▲" : "▼"))),
|
||||||
"");
|
"");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,13 +40,13 @@ const char kShutterCommands[] PROGMEM = D_PRFX_SHUTTER "|"
|
||||||
D_CMND_SHUTTER_OPEN "|" D_CMND_SHUTTER_CLOSE "|" D_CMND_SHUTTER_STOP "|" D_CMND_SHUTTER_POSITION "|"
|
D_CMND_SHUTTER_OPEN "|" D_CMND_SHUTTER_CLOSE "|" D_CMND_SHUTTER_STOP "|" D_CMND_SHUTTER_POSITION "|"
|
||||||
D_CMND_SHUTTER_OPENTIME "|" D_CMND_SHUTTER_CLOSETIME "|" D_CMND_SHUTTER_RELAY "|"
|
D_CMND_SHUTTER_OPENTIME "|" D_CMND_SHUTTER_CLOSETIME "|" D_CMND_SHUTTER_RELAY "|"
|
||||||
D_CMND_SHUTTER_SETHALFWAY "|" D_CMND_SHUTTER_SETCLOSE "|" D_CMND_SHUTTER_INVERT "|" D_CMND_SHUTTER_CLIBRATION "|"
|
D_CMND_SHUTTER_SETHALFWAY "|" D_CMND_SHUTTER_SETCLOSE "|" D_CMND_SHUTTER_INVERT "|" D_CMND_SHUTTER_CLIBRATION "|"
|
||||||
D_CMND_SHUTTER_MOTORDELAY "|" D_CMND_SHUTTER_FREQUENCY "|" D_CMND_SHUTTER_BUTTON "|" D_CMND_SHUTTER_LOCK "|" D_CMND_SHUTTER_ENABLEENDSTOPTIME;
|
D_CMND_SHUTTER_MOTORDELAY "|" D_CMND_SHUTTER_FREQUENCY "|" D_CMND_SHUTTER_BUTTON "|" D_CMND_SHUTTER_LOCK "|" D_CMND_SHUTTER_ENABLEENDSTOPTIME "|" D_CMND_SHUTTER_INVERTWEBBUTTONS;
|
||||||
|
|
||||||
void (* const ShutterCommand[])(void) PROGMEM = {
|
void (* const ShutterCommand[])(void) PROGMEM = {
|
||||||
&CmndShutterOpen, &CmndShutterClose, &CmndShutterStop, &CmndShutterPosition,
|
&CmndShutterOpen, &CmndShutterClose, &CmndShutterStop, &CmndShutterPosition,
|
||||||
&CmndShutterOpenTime, &CmndShutterCloseTime, &CmndShutterRelay,
|
&CmndShutterOpenTime, &CmndShutterCloseTime, &CmndShutterRelay,
|
||||||
&CmndShutterSetHalfway, &CmndShutterSetClose, &CmndShutterInvert, &CmndShutterCalibration , &CmndShutterMotorDelay,
|
&CmndShutterSetHalfway, &CmndShutterSetClose, &CmndShutterInvert, &CmndShutterCalibration , &CmndShutterMotorDelay,
|
||||||
&CmndShutterFrequency, &CmndShutterButton, &CmndShutterLock, &CmndShutterEnableEndStopTime};
|
&CmndShutterFrequency, &CmndShutterButton, &CmndShutterLock, &CmndShutterEnableEndStopTime, &CmndShutterInvertWebButtons};
|
||||||
|
|
||||||
const char JSON_SHUTTER_POS[] PROGMEM = "\"" D_PRFX_SHUTTER "%d\":{\"Position\":%d,\"Direction\":%d,\"Target\":%d}";
|
const char JSON_SHUTTER_POS[] PROGMEM = "\"" D_PRFX_SHUTTER "%d\":{\"Position\":%d,\"Direction\":%d,\"Target\":%d}";
|
||||||
const char JSON_SHUTTER_BUTTON[] PROGMEM = "\"" D_PRFX_SHUTTER "%d\":{\"Button%d\":%d}";
|
const char JSON_SHUTTER_BUTTON[] PROGMEM = "\"" D_PRFX_SHUTTER "%d\":{\"Button%d\":%d}";
|
||||||
|
@ -239,10 +239,10 @@ void ShutterInit(void)
|
||||||
dtostrfd((float)Shutter.open_time[i] / 10 , 1, shutter_open_chr);
|
dtostrfd((float)Shutter.open_time[i] / 10 , 1, shutter_open_chr);
|
||||||
char shutter_close_chr[10];
|
char shutter_close_chr[10];
|
||||||
dtostrfd((float)Shutter.close_time[i] / 10, 1, shutter_close_chr);
|
dtostrfd((float)Shutter.close_time[i] / 10, 1, shutter_close_chr);
|
||||||
AddLog_P2(LOG_LEVEL_INFO, PSTR("SHT: Shutter %d (Relay:%d): Init. Pos: %d [%d %%], Open Vel.: 100, Close Vel.: %d , Max Way: %d, Opentime %s [s], Closetime %s [s], CoeffCalc: c0: %d, c1 %d, c2: %d, c3: %d, c4: %d, binmask %d, is inverted %d, is locked %d, end stop time enabled %d, shuttermode %d, motordelay %d"),
|
AddLog_P2(LOG_LEVEL_INFO, PSTR("SHT: Shutter %d (Relay:%d): Init. Pos: %d [%d %%], Open Vel.: 100, Close Vel.: %d , Max Way: %d, Opentime %s [s], Closetime %s [s], CoeffCalc: c0: %d, c1 %d, c2: %d, c3: %d, c4: %d, binmask %d, is inverted %d, is locked %d, end stop time enabled %d, webButtons inverted %d, shuttermode %d, motordelay %d"),
|
||||||
i+1, Settings.shutter_startrelay[i], Shutter.real_position[i], Settings.shutter_position[i], Shutter.close_velocity[i], Shutter.open_max[i], shutter_open_chr, shutter_close_chr,
|
i+1, Settings.shutter_startrelay[i], Shutter.real_position[i], Settings.shutter_position[i], Shutter.close_velocity[i], Shutter.open_max[i], shutter_open_chr, shutter_close_chr,
|
||||||
Settings.shuttercoeff[0][i], Settings.shuttercoeff[1][i], Settings.shuttercoeff[2][i], Settings.shuttercoeff[3][i], Settings.shuttercoeff[4][i],
|
Settings.shuttercoeff[0][i], Settings.shuttercoeff[1][i], Settings.shuttercoeff[2][i], Settings.shuttercoeff[3][i], Settings.shuttercoeff[4][i],
|
||||||
Shutter.mask, (Settings.shutter_options[i]&1) ? 1 : 0, (Settings.shutter_options[i]&2) ? 1 : 0, (Settings.shutter_options[i]&4) ? 1 : 0, Shutter.mode, Shutter.motordelay[i]);
|
Shutter.mask, (Settings.shutter_options[i]&1) ? 1 : 0, (Settings.shutter_options[i]&2) ? 1 : 0, (Settings.shutter_options[i]&4) ? 1 : 0, (Settings.shutter_options[i]&8) ? 1 : 0, Shutter.mode, Shutter.motordelay[i]);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
// terminate loop at first INVALID shutter.
|
// terminate loop at first INVALID shutter.
|
||||||
|
@ -1143,6 +1143,18 @@ void CmndShutterEnableEndStopTime(void) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CmndShutterInvertWebButtons(void)
|
||||||
|
{
|
||||||
|
if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= shutters_present)) {
|
||||||
|
if (XdrvMailbox.payload == 0) {
|
||||||
|
Settings.shutter_options[XdrvMailbox.index -1] &= ~(8);
|
||||||
|
} else if (XdrvMailbox.payload == 1) {
|
||||||
|
Settings.shutter_options[XdrvMailbox.index -1] |= (8);
|
||||||
|
}
|
||||||
|
ResponseCmndIdxNumber((Settings.shutter_options[XdrvMailbox.index -1] & 8) ? 1 : 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*********************************************************************************************\
|
/*********************************************************************************************\
|
||||||
* Interface
|
* Interface
|
||||||
\*********************************************************************************************/
|
\*********************************************************************************************/
|
||||||
|
|
Loading…
Reference in New Issue