config: add new Configuration class to simplify handling json config update api

This commit is contained in:
2023-02-20 07:07:32 +01:00
parent 53d5775c6a
commit 64666bbfb6
8 changed files with 85 additions and 42 deletions

View File

@@ -200,17 +200,14 @@ MQTTTelemetry::handleEventOnline(const InputEvent& evt)
}
void
MQTTTelemetry::handleConfigChange(const InputEvent& event)
MQTTTelemetry::handleConfigChange(const Configuration& cfg)
{
Log.notice("Config change in mqtt");
const JsonObject* obj = event.as<JsonObject>();
if (obj->containsKey("mqtt.ip")) {
const char* newIP = (*obj)["mqtt.ip"].as<JsonString>().c_str();
Log.notice("ip: %s", newIP);
strncpy(m_hostBuf, newIP, sizeof(m_hostBuf));
m_hostBuf[sizeof(m_hostBuf)-1] = 0;
m_mqtt.disconnect();
}
const char* newIP = cfg.get("mqtt.ip", m_hostBuf);
Log.notice("ip: %s", newIP);
strncpy(m_hostBuf, newIP, sizeof(m_hostBuf));
m_hostBuf[sizeof(m_hostBuf)-1] = 0;
m_mqtt.disconnect();
}
void

View File

@@ -3,6 +3,7 @@
#include <PubSubClient.h>
#include <ArduinoLog.h>
#include "../../Config.h"
#include "../../Sequencer.h"
@@ -47,7 +48,7 @@ class MQTTTelemetry : public BufferedInputSource, OnlineTaskMixin, ConfigTaskMix
void handleEvent(const InputEvent& evt) override;
void handleEventOnline(const InputEvent& evt) override;
void handleConfigChange(const InputEvent& evt) override;
void handleConfigChange(const Configuration& cfg) override;
void loop() override;
void loopOnline() override;