Skip to content

Commit

Permalink
v3.1.16
Browse files Browse the repository at this point in the history
3.1.16 20170109
* Fix Domoticz possible error condition
* Remove Wifi password from connection message (#216)
* Add Configure Other menu item to web page (#209)
* Add command FriendlyName, field Friendly Name and define FRIENDLY_NAME
to be used by Alexa
*   eliminating current use of MQTT_CLIENT_ID (#209)
* Add friendlyname to webpage replacing former hostname
  • Loading branch information
arendst committed Jan 9, 2017
1 parent e9da9b4 commit b0df9a6
Show file tree
Hide file tree
Showing 7 changed files with 125 additions and 48 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
## Sonoff-MQTT-OTA-Arduino
Provide ESP8266 based itead Sonoff with Serial, Web and MQTT control allowing 'Over the Air' or OTA firmware updates using Arduino IDE.

Current version is **3.1.15** - See ```sonoff/_releasenotes.ino``` for change information.
Current version is **3.1.16** - See ```sonoff/_releasenotes.ino``` for change information.

Starting with version 2.0.0 the following devices are supported:
<img alt="Sonoff" src="https://github.com/arendst/arendst.github.io/blob/master/media/sonoffbasic.jpg" width="250" align="right" />
Expand Down
Binary file modified api/arduino/sonoff.ino.bin
Binary file not shown.
10 changes: 9 additions & 1 deletion sonoff/_releasenotes.ino
Original file line number Diff line number Diff line change
@@ -1,4 +1,12 @@
/* 3.1.15 20170108
/* 3.1.16 20170109
* Fix Domoticz possible error condition
* Remove Wifi password from connection message (#216)
* Add Configure Other menu item to web page (#209)
* Add command FriendlyName, field Friendly Name and define FRIENDLY_NAME to be used by Alexa
* eliminating current use of MQTT_CLIENT_ID (#209)
* Add friendlyname to webpage replacing former hostname
*
* 3.1.15 20170108
* Fix Domoticz send key regression with Toggle command
*
* 3.1.14 20170107
Expand Down
44 changes: 31 additions & 13 deletions sonoff/sonoff.ino
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
* ====================================================
*/

#define VERSION 0x03010F00 // 3.1.15
#define VERSION 0x03011000 // 3.1.16

#define SONOFF 1 // Sonoff, Sonoff RF, Sonoff SV, Sonoff Dual, Sonoff TH, S20 Smart Socket, 4 Channel
#define SONOFF_POW 9 // Sonoff Pow
Expand Down Expand Up @@ -429,7 +429,7 @@ void CFG_DefaultSet()
sysCfg.model = 0;
sysCfg.timezone = APP_TIMEZONE;
strlcpy(sysCfg.otaUrl, OTA_URL, sizeof(sysCfg.otaUrl));
strlcpy(sysCfg.friendlyname, MQTT_TOPIC, sizeof(sysCfg.friendlyname));
strlcpy(sysCfg.friendlyname, FRIENDLY_NAME, sizeof(sysCfg.friendlyname));

sysCfg.seriallog_level = SERIAL_LOG_LEVEL;
sysCfg.sta_active = 0;
Expand Down Expand Up @@ -637,6 +637,9 @@ void CFG_Delta()
sysCfg.blinktime = APP_BLINKTIME;
sysCfg.blinkcount = APP_BLINKCOUNT;
}
if (sysCfg.version < 0x03011000) { // 3.1.16 - Add parameter
getClient(sysCfg.friendlyname, sysCfg.mqtt_client, sizeof(sysCfg.friendlyname));
}

sysCfg.version = VERSION;
}
Expand Down Expand Up @@ -1012,23 +1015,32 @@ void mqttDataCb(char* topic, byte* data, unsigned int data_len)
unsigned long idx = 0;
int16_t nvalue;

if (strlen(dataBuf) < 20) return;
if (data_len < 20) return;
idx = getKeyIntValue(dataBuf,"\"idx\"");
nvalue = getKeyIntValue(dataBuf,"\"nvalue\"");
dataBuf[0] = '\0';

snprintf_P(svalue, sizeof(svalue), PSTR("DMTZ: idx %d, nvalue %d"), idx, nvalue);
addLog(LOG_LEVEL_DEBUG_MORE, svalue);

data_len = 0;
if (nvalue == 0 || nvalue == 1) {
for (i = 0; i < Maxdevice; i++) {
if (idx > 0 && idx == sysCfg.domoticz_relay_idx[i]) {
if ((idx > 0) && (idx == sysCfg.domoticz_relay_idx[i])) {
snprintf_P(dataBuf, sizeof(dataBuf), PSTR("%d"), nvalue);
data_len = strlen(dataBuf);
break;
}
}
}
if (!strlen(dataBuf)) return;
if (!data_len) return;
if (((power >> i) &1) == nvalue) return;
snprintf_P(stemp1, sizeof(stemp1), PSTR("%d"), i +1);
snprintf_P(topicBuf, sizeof(topicBuf), PSTR("%s/%s/%s%s"),
SUB_PREFIX, sysCfg.mqtt_topic, sysCfg.mqtt_subtopic, (Maxdevice > 1) ? stemp1 : "");

snprintf_P(svalue, sizeof(svalue), PSTR("DMTZ: Receive topic %s, data size %d, data %s"), topicBuf, data_len, dataBuf);
addLog(LOG_LEVEL_DEBUG_MORE, svalue);

domoticz_update_flag = 0;
}
#endif // USE_DOMOTICZ
Expand Down Expand Up @@ -1266,6 +1278,12 @@ void mqttDataCb(char* topic, byte* data, unsigned int data_len)
snprintf_P(svalue, sizeof(svalue), PSTR("{\"WifiConfig\":\"%d (%s)\"}"), sysCfg.sta_config, stemp1);
}
}
else if (!strcmp(type,"FRIENDLYNAME")) {
if ((data_len > 0) && (data_len < sizeof(sysCfg.friendlyname))) {
strlcpy(sysCfg.friendlyname, (payload == 1) ? FRIENDLY_NAME : dataBuf, sizeof(sysCfg.friendlyname));
}
snprintf_P(svalue, sizeof(svalue), PSTR("{\"FriendlyName\":\"%s\"}"), sysCfg.friendlyname);
}
#ifdef USE_WALL_SWITCH
else if (!strcmp(type,"SWITCHMODE")) {
if ((data_len > 0) && (payload >= 0) && (payload < MAX_SWITCH_OPTION)) {
Expand Down Expand Up @@ -1293,13 +1311,6 @@ void mqttDataCb(char* topic, byte* data, unsigned int data_len)
snprintf_P(svalue, sizeof(svalue), PSTR("{\"WebLog\":%d}"), sysCfg.weblog_level);
}
#endif // USE_WEBSERVER
else if (!grpflg && !strcmp(type,"MQTTCLIENT")) { // Also Alexa friendlyname
if ((data_len > 0) && (data_len < sizeof(sysCfg.mqtt_client))) {
strlcpy(sysCfg.mqtt_client, (payload == 1) ? MQTT_CLIENT_ID : dataBuf, sizeof(sysCfg.mqtt_client));
restartflag = 2;
}
snprintf_P(svalue, sizeof(svalue), PSTR("{\"MqttClient\":\"%s\"}"), sysCfg.mqtt_client);
}
else if (!strcmp(type,"MQTTUNITS")) {
if ((data_len > 0) && (payload >= 0) && (payload <= 1)) {
sysCfg.mqtt_units = payload;
Expand Down Expand Up @@ -1330,6 +1341,13 @@ void mqttDataCb(char* topic, byte* data, unsigned int data_len)
snprintf_P(svalue, sizeof(svalue), PSTR("{\"MqttFingerprint\":\"%s\"}"), sysCfg.mqtt_fingerprint);
}
#endif
else if (!grpflg && !strcmp(type,"MQTTCLIENT")) {
if ((data_len > 0) && (data_len < sizeof(sysCfg.mqtt_client))) {
strlcpy(sysCfg.mqtt_client, (payload == 1) ? MQTT_CLIENT_ID : dataBuf, sizeof(sysCfg.mqtt_client));
restartflag = 2;
}
snprintf_P(svalue, sizeof(svalue), PSTR("{\"MqttClient\":\"%s\"}"), sysCfg.mqtt_client);
}
else if (!strcmp(type,"MQTTUSER")) {
if ((data_len > 0) && (data_len < sizeof(sysCfg.mqtt_user))) {
strlcpy(sysCfg.mqtt_user, (payload == 1) ? MQTT_USER : dataBuf, sizeof(sysCfg.mqtt_user));
Expand Down
4 changes: 2 additions & 2 deletions sonoff/support.ino
Original file line number Diff line number Diff line change
Expand Up @@ -430,8 +430,8 @@ void WIFI_begin(uint8_t flag)
} // 3: Current AP
if (strlen(sysCfg.sta_ssid[1]) == 0) sysCfg.sta_active = 0;
WiFi.begin(sysCfg.sta_ssid[sysCfg.sta_active], sysCfg.sta_pwd[sysCfg.sta_active]);
snprintf_P(log, sizeof(log), PSTR("Wifi: Connecting to AP%d %s (%s) in mode 11%c as %s..."),
sysCfg.sta_active +1, sysCfg.sta_ssid[sysCfg.sta_active], sysCfg.sta_pwd[sysCfg.sta_active], PhyMode[WiFi.getPhyMode() & 0x3], Hostname);
snprintf_P(log, sizeof(log), PSTR("Wifi: Connecting to AP%d %s in mode 11%c as %s..."),
sysCfg.sta_active +1, sysCfg.sta_ssid[sysCfg.sta_active], PhyMode[WiFi.getPhyMode() & 0x3], Hostname);
addLog(LOG_LEVEL_INFO, log);
}

Expand Down
3 changes: 2 additions & 1 deletion sonoff/user_config.h
Original file line number Diff line number Diff line change
Expand Up @@ -101,8 +101,9 @@

// -- HTTP -----------------------------------
#define USE_WEBSERVER // Enable web server and wifi manager (+43k code, +2k mem) - Disable by //
// #define USE_WEMO_EMULATION // Enable Belkin WeMo PowerSwitch emulation for Alexa (+4k code, +2k mem)
#define FRIENDLY_NAME "Sonoff" // [FriendlyName] Friendlyname up to 32 characters used by webpages and Alexa
#define WEB_SERVER 2 // [WebServer] Web server (0 = Off, 1 = Start as User, 2 = Start as Admin)
// #define USE_WEMO_EMULATION // Enable Belkin WeMo PowerSwitch emulation for Alexa (+4k code, +2k mem)

// -- mDNS -----------------------------------
#define USE_DISCOVERY // Enable mDNS for the following services (+8k code, +0.3k mem)
Expand Down
110 changes: 80 additions & 30 deletions sonoff/webserver.ino
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ const char HTTP_HEAD[] PROGMEM =
"<body>"
"<div style='text-align:left;display:inline-block;min-width:260px;'>"
"<div style='text-align:center;'><h3>" APP_NAME "</h3><h2>{h}</h2></div>";
// "<div style='text-align:center;'><h3>" APP_NAME "</h3><h2>{h}</h2>({ha})</div><br/>";
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 =
Expand All @@ -99,13 +100,14 @@ const char HTTP_BTN_RSTRT[] PROGMEM =
"<br/><form action='/rb' method='post'><button>Restart</button></form>";
const char HTTP_BTN_MENU2[] PROGMEM =
"<br/><form action='/w0' method='post'><button>Configure WiFi</button></form>"
"<br/><form action='/mq' method='post'><button>Configure MQTT</button></form>"
#ifdef USE_MQTT
"<br/><form action='/mq' method='post'><button>Configure MQTT</button></form>"
#ifdef USE_DOMOTICZ
"<br/><form action='/dm' method='post'><button>Configure Domoticz</button></form>"
#endif // USE_DOMOTICZ
#endif // USE_MQTT
"<br/><form action='/lg' method='post'><button>Configure logging</button></form>"
"<br/><form action='/lg' method='post'><button>Configure Logging</button></form>"
"<br/><form action='/co' method='post'><button>Configure Other</button></form>"
"<br/><form action='/rt' method='post'><button>Reset Configuration</button></form>";
const char HTTP_BTN_MAIN[] PROGMEM =
"<br/><br/><form action='/' method='post'><button>Main menu</button></form>";
Expand All @@ -123,6 +125,7 @@ const char HTTP_FORM_WIFI[] PROGMEM =
"<br/><b>AP2 SSId</b> (" STA_SSID2 ")<br/><input id='s2' name='s2' length=32 placeholder='" STA_SSID2 "' value='{s2}'><br/>"
"<br/><b>AP2 Password</b></br><input id='p2' name='p2' length=64 type='password' placeholder='" STA_PASS2 "' value='{p2}'><br/>"
"<br/><b>Hostname</b> ({h0})<br/><input id='h' name='h' length=32 placeholder='" WIFI_HOSTNAME" ' value='{h1}'><br/>";
#ifdef USE_MQTT
const char HTTP_FORM_MQTT[] PROGMEM =
"<fieldset><legend><b>&nbsp;MQTT parameters&nbsp;</b></legend><form method='post' action='sv'>"
"<input id='w' name='w' value='2' hidden><input id='r' name='r' value='1' hidden>"
Expand All @@ -133,7 +136,6 @@ const char HTTP_FORM_MQTT[] PROGMEM =
// "<br/><b>Password</b> (" MQTT_PASS ")<br/><input id='mp' name='mp' length=32 placeholder='" MQTT_PASS "' value='{m5}'><br/>"
"<br/><b>Password</b><br/><input id='mp' name='mp' length=32 type='password' placeholder='" MQTT_PASS "' value='{m5}'><br/>"
"<br/><b>Topic</b> (" MQTT_TOPIC ")<br/><input id='mt' name='mt' length=32 placeholder='" MQTT_TOPIC" ' value='{m6}'><br/>";
#ifdef USE_MQTT
#ifdef USE_DOMOTICZ
const char HTTP_FORM_DOMOTICZ[] PROGMEM =
"<fieldset><legend><b>&nbsp;Domoticz parameters&nbsp;</b></legend><form method='post' action='sv'>"
Expand All @@ -145,33 +147,25 @@ const char HTTP_FORM_DOMOTICZ2[] PROGMEM =
"<br/><b>Update timer</b> (" STR(DOMOTICZ_UPDATE_TIMER) ")<br/><input id='ut' name='ut' length=32 placeholder='" STR(DOMOTICZ_UPDATE_TIMER) "' value='{d7}'><br/>";
#endif // USE_DOMOTICZ
#endif // USE_MQTT
const char HTTP_FORM_LOG[] PROGMEM =
const char HTTP_FORM_LOG1[] PROGMEM =
"<fieldset><legend><b>&nbsp;Logging parameters&nbsp;</b></legend><form method='post' action='sv'>"
"<input id='w' name='w' value='3' hidden><input id='r' name='r' value='0' hidden>"
"<br/><b>Serial log level</b> (" STR(SERIAL_LOG_LEVEL) ")<br/><select id='ls' name='ls'>"
"<input id='w' name='w' value='3' hidden><input id='r' name='r' value='0' hidden>";
const char HTTP_FORM_LOG2[] PROGMEM =
"<br/><b>{b0} level</b> ({b1})<br/><select id='{b2}' name='{b2}'>"
"<option{a0value='0'>0 None</option>"
"<option{a1value='1'>1 Error</option>"
"<option{a2value='2'>2 Info</option>"
"<option{a3value='3'>3 Debug</option>"
"<option{a4value='4'>4 More debug</option>"
"</select></br>"
"<br/><b>Web log level</b> (" STR(WEB_LOG_LEVEL) ")<br/><select id='lw' name='lw'>"
"<option{b0value='0'>0 None</option>"
"<option{b1value='1'>1 Error</option>"
"<option{b2value='2'>2 Info</option>"
"<option{b3value='3'>3 Debug</option>"
"<option{b4value='4'>4 More debug</option>"
"</select></br>"
"<br/><b>Syslog level</b> (" STR(SYS_LOG_LEVEL) ")<br/><select id='ll' name='ll'>"
"<option{c0value='0'>0 None</option>"
"<option{c1value='1'>1 Error</option>"
"<option{c2value='2'>2 Info</option>"
"<option{c3value='3'>3 Debug</option>"
"<option{c4value='4'>4 More debug</option>"
"</select></br>"
"</select></br>";
const char HTTP_FORM_LOG3[] PROGMEM =
"<br/><b>Syslog host</b> (" SYS_LOG_HOST ")<br/><input id='lh' name='lh' length=32 placeholder='" SYS_LOG_HOST "' value='{l2}'><br/>"
"<br/><b>Syslog port</b> (" STR(SYS_LOG_PORT) ")<br/><input id='lp' name='lp' length=5 placeholder='" STR(SYS_LOG_PORT) "' value='{l3}'><br/>"
"<br/><b>Telemetric period</b> (" STR(TELE_PERIOD) ")<br/><input id='lt' name='lt' length=4 placeholder='" STR(TELE_PERIOD) "' value='{l4}'><br/>";
const char HTTP_FORM_OTHER[] PROGMEM =
"<fieldset><legend><b>&nbsp;Other parameters&nbsp;</b></legend><form method='post' action='sv'>"
"<input id='w' name='w' value='5' hidden><input id='r' name='r' value='0' hidden>"
"<br/><b>Friendly Name</b> (" FRIENDLY_NAME ")<br/><input id='an' name='an' length=32 placeholder='" FRIENDLY_NAME" ' value='{a1}'><br/>";
const char HTTP_FORM_END[] PROGMEM =
"<br/><button type='submit'>Save</button></form></fieldset>";
const char HTTP_FORM_UPG[] PROGMEM =
Expand Down Expand Up @@ -276,13 +270,14 @@ void startWebserver(int type, IPAddress ipweb)
webServer->on("/cn", handleConfig);
webServer->on("/w1", handleWifi1);
webServer->on("/w0", handleWifi0);
webServer->on("/mq", handleMqtt);
#ifdef USE_MQTT
webServer->on("/mq", handleMqtt);
#ifdef USE_DOMOTICZ
webServer->on("/dm", handleDomoticz);
#endif // USE_DOMOTICZ
#endif // USE_MQTT
webServer->on("/lg", handleLog);
webServer->on("/co", handleOther);
webServer->on("/sv", handleSave);
webServer->on("/rt", handleReset);
webServer->on("/up", handleUpgrade);
Expand Down Expand Up @@ -351,7 +346,8 @@ void pollDnsWeb()

void showPage(String &page)
{
page.replace("{h}", Hostname);
page.replace("{h}", String(sysCfg.friendlyname));
page.replace("{ha}", Hostname);
if (_httpflag == HTTP_MANAGER) {
if (WIFI_configCounter()) {
page.replace("<body>", "<body onload='u()'>");
Expand Down Expand Up @@ -650,6 +646,7 @@ void handleWifi(boolean scan)
showPage(page);
}

#ifdef USE_MQTT
void handleMqtt()
{
if (_httpflag == HTTP_USER) {
Expand All @@ -675,7 +672,6 @@ void handleMqtt()
showPage(page);
}

#ifdef USE_MQTT
#ifdef USE_DOMOTICZ
void handleDomoticz()
{
Expand Down Expand Up @@ -722,12 +718,37 @@ void handleLog()

String page = FPSTR(HTTP_HEAD);
page.replace("{v}", "Config logging");
page += FPSTR(HTTP_FORM_LOG);
for (byte i = LOG_LEVEL_NONE; i < LOG_LEVEL_ALL; i++) {
page.replace("{a" + String(i), (i == sysCfg.seriallog_level) ? " selected " : " ");
page.replace("{b" + String(i), (i == sysCfg.weblog_level) ? " selected " : " ");
page.replace("{c" + String(i), (i == sysCfg.syslog_level) ? " selected " : " ");
page += FPSTR(HTTP_FORM_LOG1);
for (byte idx = 0; idx < 3; idx++) {
page += FPSTR(HTTP_FORM_LOG2);
switch (idx) {
case 0:
page.replace("{b0}", "Serial log");
page.replace("{b1}", STR(SERIAL_LOG_LEVEL));
page.replace("{b2}", "ls");
for (byte i = LOG_LEVEL_NONE; i < LOG_LEVEL_ALL; i++) {
page.replace("{a" + String(i), (i == sysCfg.seriallog_level) ? " selected " : " ");
}
break;
case 1:
page.replace("{b0}", "Web log");
page.replace("{b1}", STR(WEB_LOG_LEVEL));
page.replace("{b2}", "lw");
for (byte i = LOG_LEVEL_NONE; i < LOG_LEVEL_ALL; i++) {
page.replace("{a" + String(i), (i == sysCfg.weblog_level) ? " selected " : " ");
}
break;
case 2:
page.replace("{b0}", "Syslog");
page.replace("{b1}", STR(SYS_LOG_LEVEL));
page.replace("{b2}", "ll");
for (byte i = LOG_LEVEL_NONE; i < LOG_LEVEL_ALL; i++) {
page.replace("{a" + String(i), (i == sysCfg.syslog_level) ? " selected " : " ");
}
break;
}
}
page += FPSTR(HTTP_FORM_LOG3);
page.replace("{l2}", String(sysCfg.syslog_host));
page.replace("{l3}", String(sysCfg.syslog_port));
page.replace("{l4}", String(sysCfg.tele_period));
Expand All @@ -736,6 +757,23 @@ void handleLog()
showPage(page);
}

void handleOther()
{
if (_httpflag == HTTP_USER) {
handleRoot();
return;
}
addLog_P(LOG_LEVEL_DEBUG, PSTR("HTTP: Handle other config"));

String page = FPSTR(HTTP_HEAD);
page.replace("{v}", "Configure Other");
page += FPSTR(HTTP_FORM_OTHER);
page.replace("{a1}", String(sysCfg.friendlyname));
page += FPSTR(HTTP_FORM_END);
page += FPSTR(HTTP_BTN_CONF);
showPage(page);
}

void handleSave()
{
if (_httpflag == HTTP_USER) {
Expand Down Expand Up @@ -803,6 +841,12 @@ void handleSave()
break;
#endif // USE_DOMOTICZ
#endif // USE_MQTT
case 5:
strlcpy(sysCfg.friendlyname, (!strlen(webServer->arg("an").c_str())) ? FRIENDLY_NAME : webServer->arg("an").c_str(), sizeof(sysCfg.friendlyname));
snprintf_P(log, sizeof(log), PSTR("HTTP: Other Friendly Name %s"),
sysCfg.friendlyname);
addLog(LOG_LEVEL_INFO, log);
break;
}

restart = (!strlen(webServer->arg("r").c_str())) ? 1 : atoi(webServer->arg("r").c_str());
Expand Down Expand Up @@ -1135,6 +1179,7 @@ void handleInfo()
// page += F("<fieldset><legend><b>&nbsp;Information&nbsp;</b></legend>");
page += F("<style>td{padding:0px 5px;}</style>");
page += F("<table style'width:100%;'>");
page += F("<tr><td><b>Friendly name</b></td><td>"); page += String(sysCfg.friendlyname); page += F("</td></tr>");
page += F("<tr><td><b>Program version</b></td><td>"); page += Version; page += F("</td></tr>");
page += F("<tr><td><b>Core/SDK version</b></td><td>"); page += ESP.getCoreVersion(); page += F("/"); page += String(ESP.getSdkVersion()); page += F("</td></tr>");
// page += F("<tr><td><b>Boot version</b></td><td>"); page += String(ESP.getBootVersion()); page += F("</td></tr>");
Expand All @@ -1157,13 +1202,17 @@ void handleInfo()
page += F("<tr><td><b>AP MAC address</b></td><td>"); page += WiFi.softAPmacAddress(); page += F("</td></tr>");
}
page += F("<tr><td>&nbsp;</td></tr>");
#ifdef USE_MQTT
page += F("<tr><td><b>MQTT Host</b></td><td>"); page += sysCfg.mqtt_host; page += F("</td></tr>");
page += F("<tr><td><b>MQTT Port</b></td><td>"); page += String(sysCfg.mqtt_port); page += F("</td></tr>");
page += F("<tr><td><b>MQTT Client and<br/>&nbsp;Fallback Topic</b></td><td>"); page += MQTTClient; page += F("</td></tr>");
page += F("<tr><td><b>MQTT User</b></td><td>"); page += sysCfg.mqtt_user; page += F("</td></tr>");
// page += F("<tr><td><b>MQTT Password</b></td><td>"); page += sysCfg.mqtt_pwd; page += F("</td></tr>");
page += F("<tr><td><b>MQTT Topic</b></td><td>"); page += sysCfg.mqtt_topic; page += F("</td></tr>");
page += F("<tr><td><b>MQTT Group Topic</b></td><td>"); page += sysCfg.mqtt_grptopic; page += F("</td></tr>");
#else
page += F("<tr><td><b>MQTT</b></td><td>Disabled</td></tr>");
#endif // USE_MQTT
page += F("<tr><td>&nbsp;</td></tr>");
page += F("<tr><td><b>ESP Chip id</b></td><td>"); page += String(ESP.getChipId()); page += F("</td></tr>");
page += F("<tr><td><b>Flash Chip id</b></td><td>"); page += String(ESP.getFlashChipId()); page += F("</td></tr>");
Expand Down Expand Up @@ -1223,7 +1272,8 @@ void handleUPnPsetup()
addLog_P(LOG_LEVEL_DEBUG, PSTR("HTTP: Handle WeMo setup"));

String setup_xml = FPSTR(WEMO_SETUP_XML);
setup_xml.replace("{x1}", String(MQTTClient));
// setup_xml.replace("{x1}", String(MQTTClient));
setup_xml.replace("{x1}", String(sysCfg.friendlyname));
setup_xml.replace("{x2}", wemo_UUID());
setup_xml.replace("{x3}", wemo_serial());
webServer->send(200, "text/xml", setup_xml);
Expand Down

0 comments on commit b0df9a6

Please sign in to comment.