From c57124e87643c7ba528cfaa62429f398713f241a Mon Sep 17 00:00:00 2001 From: Timothy Brown Date: Sat, 17 Aug 2019 21:34:47 -0400 Subject: [PATCH] Added MQTT port field, bumped user, pass and CID to 40 characters --- wled00/html_settings.h | 7 ++++--- wled00/wled00.ino | 9 +++++---- wled00/wled01_eeprom.ino | 14 ++++++++------ wled00/wled02_xml.ino | 1 + wled00/wled03_set.ino | 1 + wled00/wled05_init.ino | 4 ++++ wled00/wled17_mqtt.ino | 6 +++--- 7 files changed, 26 insertions(+), 16 deletions(-) diff --git a/wled00/html_settings.h b/wled00/html_settings.h index e7c0d3491..3fa1dd59e 100644 --- a/wled00/html_settings.h +++ b/wled00/html_settings.h @@ -253,9 +253,10 @@ Device Auth token:
Clear the token field to disable. Setup info

MQTT

Broker:
-Username:
-Password:
-Client ID:
+Port:
+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 276072360..a87e32249 100644 --- a/wled00/wled00.ino +++ b/wled00/wled00.ino @@ -98,7 +98,7 @@ //version code in format yymmddb (b = daily build) -#define VERSION 1906201 +#define VERSION 190817 char versionString[] = "0.8.5-dev"; @@ -204,9 +204,10 @@ bool e131Multicast = false; char mqttDeviceTopic[33] = ""; //main MQTT topic (individual per device, default is wled/mac) char mqttGroupTopic[33] = "wled/all"; //second MQTT topic (for example to group devices) char mqttServer[33] = ""; //both domains and IPs should work (no SSL) -char mqttUser[33] = ""; //optional: username for MQTT auth -char mqttPass[33] = ""; //optional: password for MQTT auth -char mqttClientID[33] = ""; //override the client ID +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] = ""; 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 faaf3a538..d3787b3a5 100644 --- a/wled00/wled01_eeprom.ino +++ b/wled00/wled01_eeprom.ino @@ -257,9 +257,10 @@ void saveSettingsToEEPROM() writeStringToEEPROM(2300, mqttServer, 32); writeStringToEEPROM(2333, mqttDeviceTopic, 32); writeStringToEEPROM(2366, mqttGroupTopic, 32); - writeStringToEEPROM(2399, mqttUser, 32); - writeStringToEEPROM(2432, mqttPass, 32); - writeStringToEEPROM(2465, mqttClientID, 32); + writeStringToEEPROM(2399, mqttUser, 40); + writeStringToEEPROM(2440, mqttPass, 40); + writeStringToEEPROM(2481, mqttClientID, 40); + writeStringToEEPROM(2522, mqttPort, 5); EEPROM.commit(); } @@ -477,9 +478,10 @@ void loadSettingsFromEEPROM(bool first) if (lastEEPROMversion > 10) { - readStringFromEEPROM(2399, mqttUser, 32); - readStringFromEEPROM(2432, mqttPass, 32); - readStringFromEEPROM(2465, mqttClientID, 32); + readStringFromEEPROM(2399, mqttUser, 40); + readStringFromEEPROM(2440, mqttPass, 40); + readStringFromEEPROM(2481, mqttClientID, 40); + readStringFromEEPROM(2522, mqttPort, 5); } receiveDirect = !EEPROM.read(2200); diff --git a/wled00/wled02_xml.ino b/wled00/wled02_xml.ino index 4b4bc4970..5e465aeb7 100644 --- a/wled00/wled02_xml.ino +++ b/wled00/wled02_xml.ino @@ -308,6 +308,7 @@ 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); diff --git a/wled00/wled03_set.ino b/wled00/wled03_set.ino index a45d6a563..28b76fb00 100644 --- a/wled00/wled03_set.ino +++ b/wled00/wled03_set.ino @@ -177,6 +177,7 @@ 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()); diff --git a/wled00/wled05_init.ino b/wled00/wled05_init.ino index ea383851f..b414de1e3 100644 --- a/wled00/wled05_init.ino +++ b/wled00/wled05_init.ino @@ -90,6 +90,10 @@ void wledInit() 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 795d62723..8350ee843 100644 --- a/wled00/wled17_mqtt.ino +++ b/wled00/wled17_mqtt.ino @@ -2,7 +2,7 @@ * MQTT communication protocol for home automation */ -#define WLED_MQTT_PORT 1883 +//#define WLED_MQTT_PORT 1883 void parseMQTTBriPayload(char* payload) { @@ -223,9 +223,9 @@ bool initMqtt() IPAddress mqttIP; if (mqttIP.fromString(mqttServer)) //see if server is IP or domain { - mqtt->setServer(mqttIP, WLED_MQTT_PORT); + mqtt->setServer(mqttIP, atoi(mqttPort)); } else { - mqtt->setServer(mqttServer, WLED_MQTT_PORT); + mqtt->setServer(mqttServer, atoi(mqttPort)); } mqtt->setClientId(mqttClientID); if (mqttUser[0] && mqttPass[0] != 0) mqtt->setCredentials(mqttUser, mqttPass);