allow configure mqtt broker port via web server
This commit is contained in:
17
Network.cpp
17
Network.cpp
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ enum class TokenType
|
|||||||
{
|
{
|
||||||
None,
|
None,
|
||||||
MqttServer,
|
MqttServer,
|
||||||
|
MqttPort,
|
||||||
QueryIntervalLockstate,
|
QueryIntervalLockstate,
|
||||||
QueryIntervalBattery,
|
QueryIntervalBattery,
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user