allow configure mqtt broker port via web server

This commit is contained in:
technyon
2022-03-27 12:21:53 +02:00
parent a8ce3fc44c
commit 3eaaab0c66
4 changed files with 29 additions and 5 deletions

View File

@@ -44,9 +44,18 @@ void Network::initialize()
const char* brokerAddr = _preferences->getString(preference_mqtt_broker).c_str(); const char* brokerAddr = _preferences->getString(preference_mqtt_broker).c_str();
strcpy(_mqttBrokerAddr, brokerAddr); strcpy(_mqttBrokerAddr, brokerAddr);
int port = _preferences->getInt(preference_mqtt_broker_port);
if(port == 0)
{
port = 1883;
_preferences->putInt(preference_mqtt_broker_port, port);
}
Serial.print(F("MQTT Broker: ")); Serial.print(F("MQTT Broker: "));
Serial.println(_mqttBrokerAddr); Serial.print(_mqttBrokerAddr);
_mqttClient.setServer(_mqttBrokerAddr, 1883); Serial.print(F(":"));
Serial.println(port);
_mqttClient.setServer(_mqttBrokerAddr, port);
_mqttClient.setCallback(Network::onMqttDataReceivedCallback); _mqttClient.setCallback(Network::onMqttDataReceivedCallback);
} }
@@ -58,14 +67,14 @@ bool Network::reconnect()
Serial.println("Attempting MQTT connection"); Serial.println("Attempting MQTT connection");
// Attempt to connect // Attempt to connect
if (_mqttClient.connect("nukiHub")) { if (_mqttClient.connect("nukiHub")) {
Serial.println("MQTT connected"); Serial.println(F("MQTT connected"));
// ... and resubscribe // ... and resubscribe
_mqttClient.subscribe(mqtt_topc_lockstate_action); _mqttClient.subscribe(mqtt_topc_lockstate_action);
} }
else else
{ {
Serial.print("MQTT connect failed, rc="); Serial.print(F("MQTT connect failed, rc="));
Serial.println(_mqttClient.state()); Serial.println(_mqttClient.state());
_nextReconnect = millis() + 5000; _nextReconnect = millis() + 5000;
} }

View File

@@ -1,6 +1,7 @@
#pragma once #pragma once
#define preference_mqtt_broker "mqttbroker" #define preference_mqtt_broker "mqttbroker"
#define preference_mqtt_broker_port "mqttport"
#define preference_query_interval_lockstate "lockStInterval" #define preference_query_interval_lockstate "lockStInterval"
#define preference_query_interval_battery "batInterval" #define preference_query_interval_battery "batInterval"

View File

@@ -66,6 +66,11 @@ void WebCfgServer::update()
_preferences->putString(preference_mqtt_broker, token); _preferences->putString(preference_mqtt_broker, token);
configChanged = true; configChanged = true;
} }
else if(lastTokenType == TokenType::MqttPort && tokenType == TokenType::None)
{
_preferences->putInt(preference_mqtt_broker_port, String(token).toInt());
configChanged = true;
}
else if(lastTokenType == TokenType::QueryIntervalLockstate && tokenType == TokenType::None) else if(lastTokenType == TokenType::QueryIntervalLockstate && tokenType == TokenType::None)
{ {
_preferences->putInt(preference_query_interval_lockstate, String(token).toInt()); _preferences->putInt(preference_query_interval_lockstate, String(token).toInt());
@@ -109,10 +114,14 @@ void WebCfgServer::serveHtml(WiFiClient &client)
client.println("<FORM ACTION=method=get >"); client.println("<FORM ACTION=method=get >");
client.print("MQTT Server: <INPUT TYPE=TEXT VALUE=\""); client.print("MQTT Broker: <INPUT TYPE=TEXT VALUE=\"");
client.print(_preferences->getString(preference_mqtt_broker)); client.print(_preferences->getString(preference_mqtt_broker));
client.println("\" NAME=\"MQTTSERVER\" SIZE=\"25\" MAXLENGTH=\"40\"><BR>"); client.println("\" NAME=\"MQTTSERVER\" SIZE=\"25\" MAXLENGTH=\"40\"><BR>");
client.print("MQTT Broker port: <INPUT TYPE=TEXT VALUE=\"");
client.print(_preferences->getInt(preference_mqtt_broker_port));
client.println("\" NAME=\"MQTTPORT\" SIZE=\"25\" MAXLENGTH=\"40\"><BR>");
client.print("Query interval lock state (seconds): <INPUT TYPE=TEXT VALUE=\""); client.print("Query interval lock state (seconds): <INPUT TYPE=TEXT VALUE=\"");
client.print(_preferences->getInt(preference_query_interval_lockstate)); client.print(_preferences->getInt(preference_query_interval_lockstate));
client.println("\" NAME=\"LSTINT\" SIZE=\"25\" MAXLENGTH=\"16\"><BR>"); client.println("\" NAME=\"LSTINT\" SIZE=\"25\" MAXLENGTH=\"16\"><BR>");
@@ -145,6 +154,10 @@ TokenType WebCfgServer::getParameterType(char *&token)
{ {
return TokenType::QueryIntervalBattery; return TokenType::QueryIntervalBattery;
} }
if (strcmp(token, "MQTTPORT") == 0)
{
return TokenType::MqttPort;
}
return TokenType::None; return TokenType::None;
} }

View File

@@ -7,6 +7,7 @@ enum class TokenType
{ {
None, None,
MqttServer, MqttServer,
MqttPort,
QueryIntervalLockstate, QueryIntervalLockstate,
QueryIntervalBattery, QueryIntervalBattery,
}; };