Shrink module configuration webpage

This commit is contained in:
arendst 2017-08-19 16:29:51 +02:00
parent d96191888d
commit dbab55758a
4 changed files with 27 additions and 20 deletions

View File

@ -1,7 +1,7 @@
## Sonoff-Tasmota
Provide ESP8266 based Sonoff by [iTead Studio](https://www.itead.cc/) and ElectroDragon IoT Relay with Serial, Web and MQTT control allowing 'Over the Air' or OTA firmware updates using Arduino IDE.
Current version is **5.6.1** - See [sonoff/_releasenotes.ino](https://github.com/arendst/Sonoff-Tasmota/blob/master/sonoff/_releasenotes.ino) for change information.
Current version is **5.6.1a** - See [sonoff/_releasenotes.ino](https://github.com/arendst/Sonoff-Tasmota/blob/master/sonoff/_releasenotes.ino) for change information.
### ATTENTION All versions

View File

@ -1,4 +1,7 @@
/* 5.6.1 20170818
/* 5.6.1a
* Shrink module configuration webpage
*
* 5.6.1 20170818
* Change module list order in webpage
* Fix Sonoff T1 1CH and 2CH configuration (#751)
*

View File

@ -25,7 +25,7 @@
- Select IDE Tools - Flash Size: "1M (no SPIFFS)"
====================================================*/
#define VERSION 0x05060100 // 5.6.1
#define VERSION 0x05060101 // 5.6.1a
enum log_t {LOG_LEVEL_NONE, LOG_LEVEL_ERROR, LOG_LEVEL_INFO, LOG_LEVEL_DEBUG, LOG_LEVEL_DEBUG_MORE, LOG_LEVEL_ALL};
enum week_t {Last, First, Second, Third, Fourth};

View File

@ -128,7 +128,7 @@ const char HTTP_SCRIPT_CONSOL[] PROGMEM =
"return false;"
"}"
"</script>";
const char HTTP_SCRIPT_MODULE[] PROGMEM =
const char HTTP_SCRIPT_MODULE1[] PROGMEM =
"var os;"
"function sk(s,g){"
"var o=os.replace(\"value='\"+s+\"'\",\"selected value='\"+s+\"'\");"
@ -136,6 +136,11 @@ const char HTTP_SCRIPT_MODULE[] PROGMEM =
"}"
"function sl(){"
"var o0=\"";
const char HTTP_SCRIPT_MODULE2[] PROGMEM =
"}1'%d'>%02d %s}2"; // "}1" and "}2" means do not use "}" in Module name and Sensor name
const char HTTP_SCRIPT_MODULE3[] PROGMEM =
"\";"
"os=o0.replace(/}1/g,\"<option value=\").replace(/}2/g,\"</option>\");";
const char HTTP_MSG_RSTRT[] PROGMEM =
"<br/><div style='text-align:center;'>Device will restart in a few seconds</div><br/>";
const char HTTP_BTN_MENU1[] PROGMEM =
@ -167,7 +172,7 @@ const char HTTP_BTN_CONF[] PROGMEM =
const char HTTP_FORM_MODULE[] PROGMEM =
"<fieldset><legend><b>&nbsp;Module parameters&nbsp;</b></legend><form method='get' action='sv'>"
"<input id='w' name='w' value='6' hidden><input id='r' name='r' value='1' hidden>"
"<br/><b>Module type</b> ({mt})<br/><select id='mt' name='mt'>";
"<br/><b>Module type</b> ({mt})<br/><select id='g99' name='g99'></select></br>";
const char HTTP_LNK_ITEM[] PROGMEM =
"<div><a href='#p' onclick='c(this)'>{v}</a>&nbsp;<span class='q'>{i} {r}%</span></div>";
const char HTTP_LNK_SCAN[] PROGMEM =
@ -648,37 +653,36 @@ void handleModule()
String page = FPSTR(HTTP_HEAD);
page.replace(F("{v}"), F("Config module"));
page += FPSTR(HTTP_FORM_MODULE);
snprintf_P(stemp, sizeof(stemp), modules[MODULE].name);
page.replace(F("{mt}"), stemp);
for (byte i = 0; i < MAXMODULE; i++) {
midx = pgm_read_byte(nicelist + i);
snprintf_P(stemp, sizeof(stemp), modules[midx].name);
snprintf_P(line, sizeof(line), PSTR("<option%s value='%d'>%02d %s</option>"),
(midx == sysCfg.module) ? " selected" : "", midx, midx +1, stemp);
page += line;
}
page += F("</select></br>");
mytmplt cmodule;
memcpy_P(&cmodule, &modules[sysCfg.module], sizeof(cmodule));
String func = FPSTR(HTTP_SCRIPT_MODULE);
String func = FPSTR(HTTP_SCRIPT_MODULE1);
for (byte i = 0; i < MAXMODULE; i++) {
midx = pgm_read_byte(nicelist + i);
snprintf_P(stemp, sizeof(stemp), modules[midx].name);
snprintf_P(line, sizeof(line), HTTP_SCRIPT_MODULE2, midx, midx +1, stemp);
func += line;
}
func += FPSTR(HTTP_SCRIPT_MODULE3);
snprintf_P(line, sizeof(line), PSTR("sk(%d,99);o0=\""), sysCfg.module); // g99
func += line;
for (byte j = 0; j < GPIO_SENSOR_END; j++) {
if (!inModule(j, cmodule.gp.io)) {
snprintf_P(stemp, sizeof(stemp), sensors[j]);
snprintf_P(line, sizeof(line), PSTR("-1'%d'>%02d %s-2"), j, j, stemp);
snprintf_P(line, sizeof(line), HTTP_SCRIPT_MODULE2, j, j, stemp);
func += line;
}
}
func += F("\";os=o0.replace(/-1/g,\"<option value=\").replace(/-2/g,\"</option>\");");
func += FPSTR(HTTP_SCRIPT_MODULE3);
for (byte i = 0; i < MAX_GPIO_PIN; i++) {
if (GPIO_USER == cmodule.gp.io[i]) {
snprintf_P(line, sizeof(line), PSTR("<br/><b>GPIO%d</b> %s<select id='g%d' name='g%d'></select></br>"),
i, (0==i)?"Button1":(1==i)?"Serial Out":(3==i)?"Serial In":(12==i)?"Relay1":(13==i)?"Led1I":(14==i)?"Sensor":"", i, i);
page += line;
snprintf_P(line, sizeof(line), PSTR("sk(%d,%d);"), my_module.gp.io[i], i);
snprintf_P(line, sizeof(line), PSTR("sk(%d,%d);"), my_module.gp.io[i], i); // g0 - g16
func += line;
}
}
@ -1029,7 +1033,7 @@ void handleSave()
addLog(LOG_LEVEL_INFO, log);
break;
case 6:
byte new_module = (!strlen(webServer->arg("mt").c_str())) ? MODULE : atoi(webServer->arg("mt").c_str());
byte new_module = (!strlen(webServer->arg("g99").c_str())) ? MODULE : atoi(webServer->arg("g99").c_str());
byte new_modflg = (sysCfg.module != new_module);
sysCfg.module = new_module;
mytmplt cmodule;