From 22f9c5643dfc2b82e380b095a1909b13aff5119e Mon Sep 17 00:00:00 2001 From: technyon Date: Sun, 10 Apr 2022 21:26:01 +0200 Subject: [PATCH] allow to configure hostname --- Network.cpp | 16 ++++++++++++++-- PreferencesKeys.h | 1 + WebCfgServer.cpp | 6 ++++++ 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/Network.cpp b/Network.cpp index 07b6dd7..5d4a123 100644 --- a/Network.cpp +++ b/Network.cpp @@ -23,6 +23,13 @@ Network::Network(Preferences* preferences) void Network::initialize() { + String hostname = _preferences->getString(preference_hostname); + if(hostname == "") + { + hostname = "nukihub"; + _preferences->putString(preference_hostname, hostname); + } + WiFi.mode(WIFI_STA); // explicitly set mode, esp defaults to STA+AP // it is a good practice to make sure your code sets wifi mode how you want it. @@ -34,6 +41,7 @@ void Network::initialize() wm_menu.push_back("exit"); wm.setShowInfoUpdate(false); wm.setMenu(wm_menu); + wm.setHostname(hostname); bool res = false; @@ -58,6 +66,9 @@ void Network::initialize() Serial.println(WiFi.localIP().toString()); } + Serial.print(F("Host name: ")); + Serial.println(hostname); + const char* brokerAddr = _preferences->getString(preference_mqtt_broker).c_str(); strcpy(_mqttBrokerAddr, brokerAddr); @@ -107,6 +118,7 @@ void Network::initialize() Serial.print(_mqttBrokerAddr); Serial.print(F(":")); Serial.println(port); + _mqttClient.setServer(_mqttBrokerAddr, port); _mqttClient.setCallback(Network::onMqttDataReceivedCallback); } @@ -122,12 +134,12 @@ bool Network::reconnect() if(strlen(_mqttUser) == 0) { Serial.println(F("MQTT: Connecting without credentials")); - success = _mqttClient.connect("nukiHub"); + success = _mqttClient.connect(_preferences->getString(preference_hostname).c_str()); } else { Serial.print(F("MQTT: Connecting with user: ")); Serial.println(_mqttUser); - success = _mqttClient.connect("nukiHub", _mqttUser, _mqttPass); + success = _mqttClient.connect(_preferences->getString(preference_hostname).c_str(), _mqttUser, _mqttPass); } diff --git a/PreferencesKeys.h b/PreferencesKeys.h index d7eaf5a..29870ee 100644 --- a/PreferencesKeys.h +++ b/PreferencesKeys.h @@ -6,6 +6,7 @@ #define preference_mqtt_user "mqttuser" #define preference_mqtt_password "mqttpass" #define preference_mqtt_path "mqttpath" +#define preference_hostname "hostname" #define preference_query_interval_lockstate "lockStInterval" #define preference_query_interval_battery "batInterval" #define preference_cred_user "crdusr" diff --git a/WebCfgServer.cpp b/WebCfgServer.cpp index bb2cf81..98f3927 100644 --- a/WebCfgServer.cpp +++ b/WebCfgServer.cpp @@ -135,6 +135,11 @@ bool WebCfgServer::processArgs(String& message) _preferences->putString(preference_mqtt_path, value); configChanged = true; } + else if(key == "HOSTNAME") + { + _preferences->putString(preference_hostname, value); + configChanged = true; + } else if(key == "LSTINT") { _preferences->putInt(preference_query_interval_lockstate, value.toInt()); @@ -243,6 +248,7 @@ void WebCfgServer::buildHtml(String& response) printInputField(response, "MQTTUSER", "MQTT User (# to clear)", _preferences->getString(preference_mqtt_user).c_str(), 30); printInputField(response, "MQTTPASS", "MQTT Password", "*", 30, true); printInputField(response, "MQTTPATH", "MQTT Path", _preferences->getString(preference_mqtt_path).c_str(), 180); + printInputField(response, "HOSTNAME", "Host name", _preferences->getString(preference_hostname).c_str(), 100); printInputField(response, "LSTINT", "Query interval lock state (seconds)", _preferences->getInt(preference_query_interval_lockstate), 10); printInputField(response, "BATINT", "Query interval battery (seconds)", _preferences->getInt(preference_query_interval_battery), 10); printInputField(response, "PRDTMO", "Presence detection timeout (seconds, -1 to disable)", _preferences->getInt(preference_presence_detection_timeout), 10);