diff --git a/wled00/html_settings.h b/wled00/html_settings.h
index 3fa1dd59e..52b5c3315 100644
--- a/wled00/html_settings.h
+++ b/wled00/html_settings.h
@@ -252,11 +252,13 @@ For best results, only use one of these services at a time.
Device Auth token:
Clear the token field to disable. Setup info
MQTT
-Broker:
-Port:
-Username:
-Password:
-Client ID:
+Broker:
+Port:
+The MQTT credentials are sent over an unsecured connection.
+Never use the MQTT password for another service!
+Username:
+Password:
+Client ID:
Device Topic:
Group Topic:
Reboot required to apply changes. MQTT info
diff --git a/wled00/wled00.ino b/wled00/wled00.ino
index a87e32249..7cc25eaa8 100644
--- a/wled00/wled00.ino
+++ b/wled00/wled00.ino
@@ -3,7 +3,7 @@
*/
/*
* @title WLED project sketch
- * @version 0.8.5-dev #mqttauth @TimothyBrown
+ * @version 0.8.5-dev
* @author Christian Schwinne
*/
@@ -98,7 +98,7 @@
//version code in format yymmddb (b = daily build)
-#define VERSION 190817
+#define VERSION 1908181
char versionString[] = "0.8.5-dev";
@@ -207,7 +207,7 @@ char mqttServer[33] = ""; //both domains and IPs should work
char mqttUser[41] = ""; //optional: username for MQTT auth
char mqttPass[41] = ""; //optional: password for MQTT auth
char mqttClientID[41] = ""; //override the client ID
-char mqttPort[6] = "";
+uint16_t mqttPort = 1883;
bool huePollingEnabled = false; //poll hue bridge for light state
uint16_t huePollIntervalMs = 2500; //low values (< 1sec) may cause lag but offer quicker response
diff --git a/wled00/wled01_eeprom.ino b/wled00/wled01_eeprom.ino
index d3787b3a5..8b57a060e 100644
--- a/wled00/wled01_eeprom.ino
+++ b/wled00/wled01_eeprom.ino
@@ -260,7 +260,8 @@ void saveSettingsToEEPROM()
writeStringToEEPROM(2399, mqttUser, 40);
writeStringToEEPROM(2440, mqttPass, 40);
writeStringToEEPROM(2481, mqttClientID, 40);
- writeStringToEEPROM(2522, mqttPort, 5);
+ EEPROM.write(2522, mqttPort & 0xFF);
+ EEPROM.write(2523, (mqttPort >> 8) & 0xFF);
EEPROM.commit();
}
@@ -481,7 +482,7 @@ void loadSettingsFromEEPROM(bool first)
readStringFromEEPROM(2399, mqttUser, 40);
readStringFromEEPROM(2440, mqttPass, 40);
readStringFromEEPROM(2481, mqttClientID, 40);
- readStringFromEEPROM(2522, mqttPort, 5);
+ mqttPort = EEPROM.read(2522) + ((EEPROM.read(2523) << 8) & 0xFF00);
}
receiveDirect = !EEPROM.read(2200);
diff --git a/wled00/wled02_xml.ino b/wled00/wled02_xml.ino
index 5e465aeb7..cff0ddd46 100644
--- a/wled00/wled02_xml.ino
+++ b/wled00/wled02_xml.ino
@@ -308,10 +308,15 @@ void getSettingsJS(byte subPage, char* dest)
sappend('c',"SA",notifyAlexa);
sappends('s',"BK",(char*)((blynkEnabled)?"Hidden":""));
sappends('s',"MS",mqttServer);
- sappends('s',"MQTTPORT",mqttPort);
- sappends('s',"MQTTUSER",mqttUser);
- sappends('s',"MQTTPASS",mqttPass);
- sappends('s',"MQTTCID",mqttClientID);
+ sappend('v',"MQPORT",mqttPort);
+ sappends('s',"MQUSER",mqttUser);
+ sappends('s',"MQPASS",mqttPass);
+ byte l = strlen(mqttPass);
+ char fpass[l+1]; //fill password field with ***
+ fpass[l] = 0;
+ memset(fpass,'*',l);
+ sappends('s',"MQPASS",fpass);
+ sappends('s',"MQCID",mqttClientID);
sappends('s',"MD",mqttDeviceTopic);
sappends('s',"MG",mqttGroupTopic);
sappend('v',"H0",hueIP[0]);
diff --git a/wled00/wled03_set.ino b/wled00/wled03_set.ino
index 28b76fb00..c1a51bd49 100644
--- a/wled00/wled03_set.ino
+++ b/wled00/wled03_set.ino
@@ -177,10 +177,11 @@ void handleSettingsSet(AsyncWebServerRequest *request, byte subPage)
}
strcpy(mqttServer, request->arg("MS").c_str());
- strcpy(mqttPort, request->arg("MQTTPORT").c_str());
- strcpy(mqttUser, request->arg("MQTTUSER").c_str());
- strcpy(mqttPass, request->arg("MQTTPASS").c_str());
- strcpy(mqttClientID, request->arg("MQTTCID").c_str());
+ t = request->arg("MQPORT").toInt();
+ if (t > 0) mqttPort = t;
+ strcpy(mqttUser, request->arg("MQUSER").c_str());
+ if (request->arg("MQPASS").charAt(0) != '*') strcpy(mqttPass, request->arg("MQPASS").c_str());
+ strcpy(mqttClientID, request->arg("MQCID").c_str());
strcpy(mqttDeviceTopic, request->arg("MD").c_str());
strcpy(mqttGroupTopic, request->arg("MG").c_str());
diff --git a/wled00/wled05_init.ino b/wled00/wled05_init.ino
index b414de1e3..88d1904fa 100644
--- a/wled00/wled05_init.ino
+++ b/wled00/wled05_init.ino
@@ -69,8 +69,8 @@ void wledInit()
//start captive portal if AP active
if (onlyAP || strlen(apSSID) > 0)
{
- dnsServer.setErrorReplyCode(DNSReplyCode::ServerFailure);
- dnsServer.start(53, "wled.me", WiFi.softAPIP());
+ dnsServer.setErrorReplyCode(DNSReplyCode::NoError);
+ dnsServer.start(53, "*", WiFi.softAPIP());
dnsActive = true;
}
@@ -78,22 +78,18 @@ void wledInit()
if (strcmp(cmDNS,"x") == 0) //fill in unique mdns default
{
strcpy(cmDNS, "wled-");
- strcat(cmDNS, escapedMac.c_str());
+ sprintf(cmDNS+5, "%*s", 6, escapedMac.c_str()+6);
}
if (mqttDeviceTopic[0] == 0)
{
strcpy(mqttDeviceTopic, "wled/");
- strcat(mqttDeviceTopic, escapedMac.c_str());
+ sprintf(mqttDeviceTopic+5, "%*s", 6, escapedMac.c_str()+6);
}
if (mqttClientID[0] == 0)
{
strcpy(mqttClientID, "WLED-");
sprintf(mqttClientID+5, "%*s", 6, escapedMac.c_str()+6);
}
- if (mqttPort[0] == 0)
- {
- strcpy(mqttPort, "1883");
- }
strip.service();
diff --git a/wled00/wled17_mqtt.ino b/wled00/wled17_mqtt.ino
index 8350ee843..c70048868 100644
--- a/wled00/wled17_mqtt.ino
+++ b/wled00/wled17_mqtt.ino
@@ -47,13 +47,13 @@ void onMqttConnect(bool sessionPresent)
sendHADiscoveryMQTT();
publishMqtt();
- DEBUG_PRINTLN("MQTT ready");
+ DEBUG_PRINTLN("MQ ready");
}
void onMqttMessage(char* topic, char* payload, AsyncMqttClientMessageProperties properties, size_t len, size_t index, size_t total) {
- DEBUG_PRINT("MQTT callb rec: ");
+ DEBUG_PRINT("MQ callb rec: ");
DEBUG_PRINTLN(topic);
DEBUG_PRINTLN(payload);
@@ -223,9 +223,9 @@ bool initMqtt()
IPAddress mqttIP;
if (mqttIP.fromString(mqttServer)) //see if server is IP or domain
{
- mqtt->setServer(mqttIP, atoi(mqttPort));
+ mqtt->setServer(mqttIP, mqttPort);
} else {
- mqtt->setServer(mqttServer, atoi(mqttPort));
+ mqtt->setServer(mqttServer, mqttPort);
}
mqtt->setClientId(mqttClientID);
if (mqttUser[0] && mqttPass[0] != 0) mqtt->setCredentials(mqttUser, mqttPass);