get and set config via mqtt messages
This commit is contained in:
@@ -88,7 +88,14 @@ public:
|
||||
file.close(); // close config file before unmounting filesystem
|
||||
};
|
||||
|
||||
void updateConfig(ArduinoJson::JsonDocument &json)
|
||||
ArduinoJson::JsonDocument& getConfig()
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(m_mutex);
|
||||
serialize();
|
||||
return m_configJson;
|
||||
}
|
||||
|
||||
void setConfig(const ArduinoJson::JsonDocument &json)
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(m_mutex);
|
||||
{
|
||||
@@ -97,8 +104,9 @@ public:
|
||||
deserialize();
|
||||
saveConfig();
|
||||
}; // filesystem is unmounted here
|
||||
delay(500);
|
||||
esp_restart(); // configuration updates trigger a cpu restart
|
||||
LOG_WARN("setConfig will cause restart!");
|
||||
delay(5000);
|
||||
esp_restart();
|
||||
}
|
||||
|
||||
void resetConfig()
|
||||
@@ -150,8 +158,8 @@ private:
|
||||
auto ethernet = m_configJson["ethernet"].to<ArduinoJson::JsonObject>();
|
||||
ethernet["hostname"] = m_ethHostname;
|
||||
ethernet["ipAddr"] = m_ethIpAddr;
|
||||
ethernet["netmask "] = m_ethNetmask;
|
||||
ethernet["gateway "] = m_ethGateway;
|
||||
ethernet["netmask"] = m_ethNetmask;
|
||||
ethernet["gateway"] = m_ethGateway;
|
||||
};
|
||||
|
||||
{
|
||||
@@ -188,6 +196,7 @@ private:
|
||||
mqtt["loopTime"] = m_mqttLoopTime;
|
||||
mqtt["clientName"] = m_mqttClientName;
|
||||
mqtt["retries"] = m_mqttRetries;
|
||||
mqtt["keepalive"] = m_mqttKeepalive;
|
||||
auto publish = mqtt["publish"].to<ArduinoJson::JsonObject>();
|
||||
for (auto v : m_mqttPublish)
|
||||
{
|
||||
@@ -235,10 +244,11 @@ private:
|
||||
auto temperature = m_configJson["temperature"];
|
||||
m_tempExpectedSensors = temperature["expectedSensors"].as<uint8_t>();
|
||||
auto values = temperature["correctionValues"].as<JsonArray>();
|
||||
m_tempCorrectionValues.clear();
|
||||
m_tempCorrectionValues.reserve(values.size());
|
||||
for (auto v : values)
|
||||
{
|
||||
m_tempCorrectionValues.push_back(v.as<float>());
|
||||
m_tempCorrectionValues.emplace_back(v.as<float>());
|
||||
}
|
||||
};
|
||||
|
||||
@@ -255,7 +265,8 @@ private:
|
||||
m_mqttHost = mqtt["host"].as<std::string>();
|
||||
m_mqttPort = mqtt["port"].as<uint16_t>();
|
||||
m_mqttLoopTime = mqtt["loopTime"].as<uint16_t>();
|
||||
m_mqttRetries = mqtt["retries"].as<uint16_t>();
|
||||
m_mqttKeepalive = mqtt["keepalive"].as<uint8_t>();
|
||||
m_mqttRetries = mqtt["retries"].as<uint8_t>();
|
||||
auto subscribe = mqtt["subsribe"].as<ArduinoJson::JsonObject>();
|
||||
for (auto v : subscribe)
|
||||
{
|
||||
@@ -304,6 +315,7 @@ public:
|
||||
std::string m_mqttHost = "10.0.2.249";
|
||||
uint16_t m_mqttPort = 1883;
|
||||
uint16_t m_mqttLoopTime = 100; // in milliseconds
|
||||
uint8_t m_mqttKeepalive = 15;
|
||||
uint8_t m_mqttRetries = 5;
|
||||
std::string m_mqttClientName = "etcontrollerPRO";
|
||||
|
||||
|
||||
Reference in New Issue
Block a user