mirror of https://github.com/arendst/Tasmota.git
Fix labeling of web buttons for shutters
Instead of switching power of the shutter relais web buttons will issue shutter commands to work right when in shuttermode 1. Up down labels arrow up/down fixed for more than one shutter.
This commit is contained in:
parent
7c68d7a754
commit
2c6659fca4
|
@ -502,6 +502,8 @@
|
|||
#define D_CMND_SHUTTER_CLOSE "Close"
|
||||
#define D_CMND_SHUTTER_UP "Up"
|
||||
#define D_CMND_SHUTTER_DOWN "Down"
|
||||
#define D_CMND_SHUTTER_TOGGLEUP "ToggleUp"
|
||||
#define D_CMND_SHUTTER_TOGGLEDOWN "ToggleDown"
|
||||
#define D_CMND_SHUTTER_STOP "Stop"
|
||||
#define D_CMND_SHUTTER_POSITION "Position"
|
||||
#define D_CMND_SHUTTER_OPENTIME "OpenDuration"
|
||||
|
|
|
@ -1120,20 +1120,12 @@ void HandleRoot(void)
|
|||
for (uint32_t idx = 1; idx <= devices_present; idx++) {
|
||||
bool set_button = ((idx <= MAX_BUTTON_TEXT) && strlen(SettingsText(SET_BUTTON1 + idx -1)));
|
||||
#ifdef USE_SHUTTER
|
||||
if (Settings.flag3.shutter_mode) { // SetOption80 - Enable shutter support
|
||||
bool shutter_used = false;
|
||||
for (uint32_t i = 0; i < MAX_SHUTTERS; i++) {
|
||||
if (Settings.shutter_startrelay[i] == (((idx -1) & 0xFFFFFFFE) +1)) {
|
||||
shutter_used = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (shutter_used) {
|
||||
WSContentSend_P(HTTP_DEVICE_CONTROL, 100 / devices_present, idx,
|
||||
(set_button) ? SettingsText(SET_BUTTON1 + idx -1) : (idx % 2) ? "▲" : "▼",
|
||||
"");
|
||||
continue;
|
||||
}
|
||||
int32_t ShutterWebButton;
|
||||
if (ShutterWebButton = IsShutterWebButton(idx)) {
|
||||
WSContentSend_P(HTTP_DEVICE_CONTROL, 100 / devices_present, idx,
|
||||
(set_button) ? SettingsText(SET_BUTTON1 + idx -1) : (ShutterWebButton>0) ? "▲" : "▼",
|
||||
"");
|
||||
continue;
|
||||
}
|
||||
#endif // USE_SHUTTER
|
||||
snprintf_P(stemp, sizeof(stemp), PSTR(" %d"), idx);
|
||||
|
@ -1216,7 +1208,18 @@ bool HandleRootStatusRefresh(void)
|
|||
}
|
||||
} else {
|
||||
#endif // USE_SONOFF_IFAN
|
||||
ExecuteCommandPower(device, POWER_TOGGLE, SRC_IGNORE);
|
||||
#ifdef USE_SHUTTER
|
||||
int32_t ShutterWebButton;
|
||||
if (ShutterWebButton = IsShutterWebButton(device)) {
|
||||
snprintf_P(svalue, sizeof(svalue), PSTR("ShutterPosition%d %s"), abs(ShutterWebButton), (ShutterWebButton>0) ? PSTR(D_CMND_SHUTTER_TOGGLEUP) : PSTR(D_CMND_SHUTTER_TOGGLEDOWN));
|
||||
AddLog_P2(LOG_LEVEL_INFO, PSTR("SHT: WebButton %d, %s"), ShutterWebButton, svalue);
|
||||
ExecuteWebCommand(svalue, SRC_WEBGUI);
|
||||
} else {
|
||||
#endif // USE_SHUTTER
|
||||
ExecuteCommandPower(device, POWER_TOGGLE, SRC_IGNORE);
|
||||
#ifdef USE_SHUTTER
|
||||
}
|
||||
#endif // USE_SHUTTER
|
||||
#ifdef USE_SONOFF_IFAN
|
||||
}
|
||||
#endif // USE_SONOFF_IFAN
|
||||
|
@ -1301,6 +1304,22 @@ bool HandleRootStatusRefresh(void)
|
|||
return true;
|
||||
}
|
||||
|
||||
#ifdef USE_SHUTTER
|
||||
int32_t IsShutterWebButton(uint32_t idx) {
|
||||
/* 0: Not a shutter, 1..4: shutter up idx, -1..-4: shutter down idx */
|
||||
int32_t ShutterWebButton = 0;
|
||||
if (Settings.flag3.shutter_mode) { // SetOption80 - Enable shutter support
|
||||
for (uint32_t i = 0; i < MAX_SHUTTERS; i++) {
|
||||
if (Settings.shutter_startrelay[i] && ((Settings.shutter_startrelay[i] == idx) || (Settings.shutter_startrelay[i] == (idx-1)))) {
|
||||
ShutterWebButton = (Settings.shutter_startrelay[i] == idx) ? (i+1): (-1-i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return ShutterWebButton;
|
||||
}
|
||||
#endif // USE_SHUTTER
|
||||
|
||||
/*-------------------------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef FIRMWARE_MINIMAL
|
||||
|
|
|
@ -667,15 +667,15 @@ void CmndShutterPosition(void)
|
|||
// value 0 with data_len > 0 can mean Open
|
||||
if ((XdrvMailbox.data_len > 1) && (XdrvMailbox.payload <= 0)) {
|
||||
//UpperCase(XdrvMailbox.data, XdrvMailbox.data);
|
||||
if (!strcasecmp(XdrvMailbox.data,D_CMND_SHUTTER_UP) || !strcasecmp(XdrvMailbox.data,D_CMND_SHUTTER_OPEN)) {
|
||||
if (!strcasecmp(XdrvMailbox.data,D_CMND_SHUTTER_UP) || !strcasecmp(XdrvMailbox.data,D_CMND_SHUTTER_OPEN) || ((Shutter.direction[index]==0) && !strcasecmp(XdrvMailbox.data,D_CMND_SHUTTER_TOGGLEUP))) {
|
||||
CmndShutterOpen();
|
||||
return;
|
||||
}
|
||||
if (!strcasecmp(XdrvMailbox.data,D_CMND_SHUTTER_DOWN) || !strcasecmp(XdrvMailbox.data,D_CMND_SHUTTER_CLOSE)) {
|
||||
if (!strcasecmp(XdrvMailbox.data,D_CMND_SHUTTER_DOWN) || !strcasecmp(XdrvMailbox.data,D_CMND_SHUTTER_CLOSE) || ((Shutter.direction[index]==0) && !strcasecmp(XdrvMailbox.data,D_CMND_SHUTTER_TOGGLEDOWN))) {
|
||||
CmndShutterClose();
|
||||
return;
|
||||
}
|
||||
if (!strcasecmp(XdrvMailbox.data,D_CMND_SHUTTER_STOP)) {
|
||||
if (!strcasecmp(XdrvMailbox.data,D_CMND_SHUTTER_STOP) || ((Shutter.direction[index]) && (!strcasecmp(XdrvMailbox.data,D_CMND_SHUTTER_TOGGLEUP) || !strcasecmp(XdrvMailbox.data,D_CMND_SHUTTER_TOGGLEDOWN)))) {
|
||||
XdrvMailbox.payload = -99;
|
||||
CmndShutterStop();
|
||||
return;
|
||||
|
|
Loading…
Reference in New Issue