mirror of
https://github.com/arendst/Tasmota.git
synced 2025-04-24 14:57:16 +00:00
Refactor Gui Configure Domoticz save settings
This commit is contained in:
parent
f0f6f94374
commit
10484fbdce
@ -420,12 +420,39 @@ static void WebGetArg(const char* arg, char* out, size_t max)
|
||||
// out[max-1] = '\0'; // Ensure terminating NUL
|
||||
}
|
||||
|
||||
String AddWebCommand(const char* command, const char* webarg, const char* dflt) {
|
||||
char arg[100]; // Allow parameter with lenght up to 99 characters
|
||||
WebGetArg(webarg, arg, sizeof(arg));
|
||||
char cmnd[120];
|
||||
snprintf_P(cmnd, sizeof(cmnd), PSTR(";%s %s"), command, (!strlen(arg)) ? dflt : (StrCaseStr_P(command, PSTR("Password")) && (strlen(arg) < 5)) ? "" : arg);
|
||||
String AddWebCommand(const char* command, const char* arg, const char* dflt) {
|
||||
// OK but fixed max argument
|
||||
char param[200]; // Allow parameter with lenght up to 199 characters
|
||||
WebGetArg(arg, param, sizeof(param));
|
||||
uint32_t len = strlen(param);
|
||||
char cmnd[232];
|
||||
snprintf_P(cmnd, sizeof(cmnd), PSTR(";%s %s"), command, (0 == len) ? dflt : (StrCaseStr_P(command, PSTR("Password")) && (len < 5)) ? "" : param);
|
||||
return String(cmnd);
|
||||
|
||||
/*
|
||||
// Any argument size (within stack space) +48 bytes
|
||||
String param = Webserver->arg((const __FlashStringHelper *)arg);
|
||||
uint32_t len = param.length();
|
||||
// char cmnd[len + strlen_P(command) + strlen_P(dflt) + 4];
|
||||
char cmnd[64 + len];
|
||||
snprintf_P(cmnd, sizeof(cmnd), PSTR(";%s %s"), command, (0 == len) ? dflt : (StrCaseStr_P(command, PSTR("Password")) && (len < 5)) ? "" : param.c_str());
|
||||
return String(cmnd);
|
||||
*/
|
||||
/*
|
||||
// Exception (3) +24 bytes
|
||||
String result = F(";");
|
||||
result += command;
|
||||
result += F(" ");
|
||||
String param = Webserver->arg((const __FlashStringHelper *)arg);
|
||||
uint32_t len = param.length();
|
||||
if (0 == len) {
|
||||
result += dflt;
|
||||
}
|
||||
else if (!(StrCaseStr_P(command, PSTR("Password")) && (len < 5))) {
|
||||
result += param;
|
||||
}
|
||||
return result;
|
||||
*/
|
||||
}
|
||||
|
||||
static bool WifiIsInManagerMode(){
|
||||
|
@ -602,31 +602,27 @@ void HandleDomoticzConfiguration(void) {
|
||||
}
|
||||
|
||||
void DomoticzSaveSettings(void) {
|
||||
char tmp1[CMDSZ];
|
||||
WebGetArg(PSTR("ut"), tmp1, sizeof(tmp1));
|
||||
char command[500];
|
||||
snprintf_P(command, sizeof(command), PSTR(D_CMND_BACKLOG "0 " D_PRFX_DOMOTICZ D_CMND_UPDATETIMER " %s"),
|
||||
(!strlen(tmp1)) ? STR(DOMOTICZ_UPDATE_TIMER) : tmp1);
|
||||
char arg_idx[8];
|
||||
char tmp2[CMDSZ];
|
||||
char tmp3[CMDSZ];
|
||||
String cmnd = F(D_CMND_BACKLOG "0 ");
|
||||
cmnd += AddWebCommand(PSTR(D_PRFX_DOMOTICZ D_CMND_UPDATETIMER), PSTR("ut"), STR(DOMOTICZ_UPDATE_TIMER));
|
||||
char arg_idx[5];
|
||||
char cmnd2[24];
|
||||
for (uint32_t i = 1; i <= MAX_DOMOTICZ_IDX; i++) {
|
||||
snprintf_P(cmnd2, sizeof(cmnd2), PSTR(D_PRFX_DOMOTICZ D_CMND_IDX "%d"), i);
|
||||
snprintf_P(arg_idx, sizeof(arg_idx), PSTR("r%d"), i -1);
|
||||
WebGetArg(arg_idx, tmp1, sizeof(tmp1));
|
||||
cmnd += AddWebCommand(cmnd2, arg_idx, PSTR("0"));
|
||||
snprintf_P(cmnd2, sizeof(cmnd2), PSTR(D_PRFX_DOMOTICZ D_CMND_KEYIDX "%d"), i);
|
||||
arg_idx[0] = 'k';
|
||||
WebGetArg(arg_idx, tmp2, sizeof(tmp2));
|
||||
cmnd += AddWebCommand(cmnd2, arg_idx, PSTR("0"));
|
||||
snprintf_P(cmnd2, sizeof(cmnd2), PSTR(D_PRFX_DOMOTICZ D_CMND_SWITCHIDX "%d"), i);
|
||||
arg_idx[0] = 's';
|
||||
WebGetArg(arg_idx, tmp3, sizeof(tmp3));
|
||||
snprintf_P(command, sizeof(command),PSTR("%s;" D_PRFX_DOMOTICZ D_CMND_IDX "%d %s;" D_PRFX_DOMOTICZ D_CMND_KEYIDX "%d %s;" D_PRFX_DOMOTICZ D_CMND_SWITCHIDX "%d %s"),
|
||||
command, i, (!strlen(tmp1)) ? "0" : tmp1, i, (!strlen(tmp2)) ? "0" : tmp2, i, (!strlen(tmp3)) ? "0" : tmp3);
|
||||
cmnd += AddWebCommand(cmnd2, arg_idx, PSTR("0"));
|
||||
}
|
||||
for (uint32_t i = 1; i <= DZ_MAX_SENSORS; i++) {
|
||||
snprintf_P(cmnd2, sizeof(cmnd2), PSTR(D_PRFX_DOMOTICZ D_CMND_SENSORIDX "%d"), i);
|
||||
snprintf_P(arg_idx, sizeof(arg_idx), PSTR("l%d"), i -1);
|
||||
WebGetArg(arg_idx, tmp1, sizeof(tmp1));
|
||||
snprintf_P(command, sizeof(command),PSTR("%s;" D_PRFX_DOMOTICZ D_CMND_SENSORIDX "%d %s"),
|
||||
command, i, (!strlen(tmp1)) ? "0" : tmp1);
|
||||
cmnd += AddWebCommand(cmnd2, arg_idx, PSTR("0"));
|
||||
}
|
||||
ExecuteWebCommand(command); // Note: beware of max number of commands in backlog currently 30 (MAX_BACKLOG)
|
||||
ExecuteWebCommand((char*)cmnd.c_str()); // Note: beware of max number of commands in backlog currently 30 (MAX_BACKLOG)
|
||||
}
|
||||
#endif // USE_WEBSERVER
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user