implement settingMQTTuniqueid

This commit is contained in:
Rob Roos 2021-03-27 14:21:36 +01:00
parent c2df021f8c
commit 8683739ba2
5 changed files with 30 additions and 8 deletions

View File

@ -35,16 +35,16 @@
String MQTTclientId;
String MQTTPubNamespace = "";
String MQTTSubNamespace = "";
String NodeId = "";
// String NodeId = "";
//===========================================================================================
void startMQTT()
{
if (!settingMQTTenable) return;
stateMQTT = MQTT_STATE_INIT;
//setup for mqtt discovery
NodeId = getUniqueId();
MQTTPubNamespace = settingMQTTtopTopic + "/value/" + NodeId;
MQTTSubNamespace = settingMQTTtopTopic + "/set/" + NodeId;
// NodeId = getUniqueId();
MQTTPubNamespace = settingMQTTtopTopic + "/value/" + settingMQTTuniqueid;
MQTTSubNamespace = settingMQTTtopTopic + "/set/" + settingMQTTuniqueid;
handleMQTT(); //initialize the MQTT statemachine
// handleMQTT(); //then try to connect to MQTT
// handleMQTT(); //now you should be connected to MQTT ready to send
@ -355,14 +355,14 @@ void doAutoConfigure(){
sTopic.replace("%homeassistant%", CSTR(settingMQTThaprefix));
/// node
sTopic.replace("%node_id%", CSTR(NodeId));
sTopic.replace("%node_id%", CSTR(settingMQTTuniqueid));
MQTTDebugf("[%s]\r\n", CSTR(sTopic));
/// ----------------------
MQTTDebugTf("sMsg[%s]==>", CSTR(sMsg));
/// node
sMsg.replace("%node_id%", CSTR(NodeId));
sMsg.replace("%node_id%", CSTR(settingMQTTuniqueid));
/// hostname
sMsg.replace("%hostname%", CSTR(settingHostname));

View File

@ -88,6 +88,7 @@ String settingMQTTuser = "";
String settingMQTTpasswd = "";
String settingMQTThaprefix = HOME_ASSISTANT_DISCOVERY_PREFIX;
String settingMQTTtopTopic = "otgw";
String settingMQTTuniqueid = ""; // Intialized in readsettings
bool settingMQTTOTmessage = false;
bool settingNTPenable = true;
String settingNTPtimezone = DEFAULT_TIMEZONE;

View File

@ -492,7 +492,12 @@
//----document.getElementById("setFld_"+data[i].name).style.background = "white";
document.getElementById(data[i].name).style.background = "white";
//----document.getElementById("setFld_"+data[i].name).value = data[i].value;
document.getElementById(data[i].name).value = data[i].value;
// document.getElementById(data[i].name).value = data[i].value;
// FIX If checkbox change checked iso value
if (data[i].type == "b")
document.getElementById(data[i].name).checked = strToBool(data[i].value);
else document.getElementById(data[i].name).value = data[i].value;
}
}
//console.log("-->done..");
@ -637,6 +642,7 @@
,[ "mqttuser", "MQTT User" ]
,[ "mqttpasswd", "Password MQTT User" ]
,[ "mqtttoptopic", "MQTT Top Topic" ]
,[ "mqttuniqueid", "MQTT Uniqueid" ]
,[ "influxdbhostname", "InfluxDB hostname"]
,[ "influxdbport", "InfluxDB port (default: 8086)"]
,[ "influxdbdatabasename", "InfluxDB database name"]

View File

@ -408,6 +408,7 @@ void sendDeviceSettings()
sendJsonSettingObj("mqttpasswd", CSTR(settingMQTTpasswd), "s", 100);
sendJsonSettingObj("mqtttoptopic", CSTR(settingMQTTtopTopic), "s", 15);
sendJsonSettingObj("mqtthaprefix", CSTR(settingMQTThaprefix), "s", 20);
sendJsonSettingObj("mqttuniqueid", CSTR(settingMQTTuniqueid), "s", 20);
sendJsonSettingObj("mqttotmessage", settingMQTTOTmessage, "b");
sendJsonSettingObj("ntpenable", settingNTPenable, "b");
sendJsonSettingObj("ntptimezone", CSTR(settingNTPtimezone), "s", 50);

View File

@ -37,6 +37,7 @@ void writeSettings(bool show)
root["MQTTpasswd"] = settingMQTTpasswd;
root["MQTTtoptopic"] = settingMQTTtopTopic;
root["MQTThaprefix"] = settingMQTThaprefix;
root["MQTTuniqueid"] = settingMQTTuniqueid;
root["MQTTOTmessage"] = settingMQTTOTmessage;
root["NTPenable"] = settingNTPenable;
root["NTPtimezone"] = settingNTPtimezone;
@ -76,6 +77,7 @@ void readSettings(bool show)
if (error)
{
DebugTln(F("Failed to read file, use existing defaults."));
DebugTf("Settings Deserialisation error: %s \r\n", error.c_str());
return;
}
@ -94,6 +96,9 @@ void readSettings(bool show)
}
settingMQTThaprefix = doc["MQTThaprefix"].as<String>();
if (settingMQTThaprefix=="null") settingMQTThaprefix = HOME_ASSISTANT_DISCOVERY_PREFIX;
settingMQTTuniqueid = doc["MQTTuniqueid"].as<String>();
if (settingMQTTuniqueid=="null") settingMQTTuniqueid = getUniqueId();
settingMQTTOTmessage = doc["MQTTOTmessage"]|settingMQTTOTmessage;
settingNTPenable = doc["NTPenable"];
settingNTPtimezone = doc["NTPtimezone"].as<String>();
@ -121,6 +126,7 @@ void readSettings(bool show)
Debugf("MQTT password : %s\r\n", CSTR(settingMQTTpasswd));
Debugf("MQTT toptopic : %s\r\n", CSTR(settingMQTTtopTopic));
Debugf("HA prefix : %s\r\n", CSTR(settingMQTThaprefix));
Debugf("MQTT uniqueid : %s\r\n", CSTR(settingMQTTuniqueid));
Debugf("NTP enabled : %s\r\n", CBOOLEAN(settingNTPenable));
Debugf("NPT timezone : %s\r\n", CSTR(settingNTPtimezone));
Debugf("Led Blink : %s\r\n", CBOOLEAN(settingLEDblink));
@ -154,7 +160,7 @@ void updateSetting(const char *field, const char *newValue)
startMDNS(CSTR(settingHostname));
startLLMNR(CSTR(settingHostname));
//Resetart MQTT connection every "save settings"
//Restart MQTT connection every "save settings"
startMQTT();
Debugln();
@ -176,6 +182,10 @@ void updateSetting(const char *field, const char *newValue)
settingMQTThaprefix = String(newValue);
if (settingMQTThaprefix.length()==0) settingMQTThaprefix = HOME_ASSISTANT_DISCOVERY_PREFIX;
}
if (stricmp(field, "MQTTuniqueid") == 0) {
settingMQTTuniqueid = String(newValue);
if (settingMQTTuniqueid.length() == 0) settingMQTTuniqueid = getUniqueId();
}
if (stricmp(field, "MQTTOTmessage")==0) settingMQTTOTmessage = EVALBOOLEAN(newValue);
if (strstr(field, "mqtt") != NULL) startMQTT();//restart MQTT on change of any setting
@ -206,6 +216,10 @@ void updateSetting(const char *field, const char *newValue)
//finally update write settings
writeSettings(false);
//Restart MQTT connection every "save settings" (this seems to be save to do, but is called for each changed field now )
if (settingMQTTenable) startMQTT();
// if (strstr(field, "hostname")!= NULL) {
// //restart wifi
// startWIFI( CSTR(settingHostname), 240)