diff --git a/include/PowerMeter.h b/include/PowerMeter.h index 9fba08882..da677c0b5 100644 --- a/include/PowerMeter.h +++ b/include/PowerMeter.h @@ -40,10 +40,6 @@ class PowerMeterClass { float _PowerMeterExport = 0.0; bool mqttInitDone = false; - char PowerMeter_MqttTopicPowerMeter1old[MQTT_MAX_TOPIC_STRLEN + 1]; - char PowerMeter_MqttTopicPowerMeter2old[MQTT_MAX_TOPIC_STRLEN + 1]; - char PowerMeter_MqttTopicPowerMeter3old[MQTT_MAX_TOPIC_STRLEN + 1]; - }; extern PowerMeterClass PowerMeter; diff --git a/src/PowerMeter.cpp b/src/PowerMeter.cpp index 752c08013..19eac501d 100644 --- a/src/PowerMeter.cpp +++ b/src/PowerMeter.cpp @@ -26,39 +26,14 @@ void PowerMeterClass::init() _lastPowerMeterUpdate = 0; CONFIG_T& config = Configuration.get(); -//if(!mqttInitDone){ - if (strlen(config.PowerMeter_MqttTopicPowerMeter1) != 0 && strcmp(PowerMeter_MqttTopicPowerMeter1old, config.PowerMeter_MqttTopicPowerMeter1)) { - MqttSettings.subscribe(config.PowerMeter_MqttTopicPowerMeter1, 0, std::bind(&PowerMeterClass::onMqttMessage, this, _1, _2, _3, _4, _5, _6)); - strlcpy(PowerMeter_MqttTopicPowerMeter1old, config.PowerMeter_MqttTopicPowerMeter1, sizeof(config.PowerMeter_MqttTopicPowerMeter3)); - } - - if (strlen(config.PowerMeter_MqttTopicPowerMeter2) != 0 && strcmp(PowerMeter_MqttTopicPowerMeter2old, config.PowerMeter_MqttTopicPowerMeter2)) { - MqttSettings.subscribe(config.PowerMeter_MqttTopicPowerMeter2, 0, std::bind(&PowerMeterClass::onMqttMessage, this, _1, _2, _3, _4, _5, _6)); - strlcpy(PowerMeter_MqttTopicPowerMeter2old, config.PowerMeter_MqttTopicPowerMeter2, sizeof(config.PowerMeter_MqttTopicPowerMeter3)); - } - if (strlen(config.PowerMeter_MqttTopicPowerMeter3) != 0 && strcmp(PowerMeter_MqttTopicPowerMeter3old, config.PowerMeter_MqttTopicPowerMeter3)) { - MqttSettings.subscribe(config.PowerMeter_MqttTopicPowerMeter3, 0, std::bind(&PowerMeterClass::onMqttMessage, this, _1, _2, _3, _4, _5, _6)); - strlcpy(PowerMeter_MqttTopicPowerMeter3old, config.PowerMeter_MqttTopicPowerMeter3, sizeof(config.PowerMeter_MqttTopicPowerMeter3)); - } + MqttSettings.subscribe(config.PowerMeter_MqttTopicPowerMeter1, 0, std::bind(&PowerMeterClass::onMqttMessage, this, _1, _2, _3, _4, _5, _6)); + MqttSettings.subscribe(config.PowerMeter_MqttTopicPowerMeter2, 0, std::bind(&PowerMeterClass::onMqttMessage, this, _1, _2, _3, _4, _5, _6)); + MqttSettings.subscribe(config.PowerMeter_MqttTopicPowerMeter3, 0, std::bind(&PowerMeterClass::onMqttMessage, this, _1, _2, _3, _4, _5, _6)); + mqttInitDone = true; -//} - sdm.begin(); - /*if(config.PowerMeter_Source != 0){ - if (strlen(config.PowerMeter_MqttTopicPowerMeter1) != 0) { - MqttSettings.unsubscribe(config.PowerMeter_MqttTopicPowerMeter1); - } - - if (strlen(config.PowerMeter_MqttTopicPowerMeter2) != 0) { - MqttSettings.unsubscribe(config.PowerMeter_MqttTopicPowerMeter2); - } - - if (strlen(config.PowerMeter_MqttTopicPowerMeter3) != 0) { - MqttSettings.unsubscribe(config.PowerMeter_MqttTopicPowerMeter3); - } - Hoymiles.getMessageOutput()->printf("PowerMeterClass: MQTT unsubscribed\n"); - }*/ + sdm.begin(); } void PowerMeterClass::onMqttMessage(const espMqttClientTypes::MessageProperties& properties, const char* topic, const uint8_t* payload, size_t len, size_t index, size_t total) @@ -141,6 +116,5 @@ void PowerMeterClass::loop() mqtt(); _lastPowerMeterUpdate = millis(); - } } diff --git a/src/WebApi_powerlimiter.cpp b/src/WebApi_powerlimiter.cpp index 2e2df211b..c1015240b 100644 --- a/src/WebApi_powerlimiter.cpp +++ b/src/WebApi_powerlimiter.cpp @@ -142,10 +142,4 @@ void WebApiPowerLimiterClass::onAdminPost(AsyncWebServerRequest* request) response->setLength(); request->send(response); - - MqttSettings.performReconnect(); - PowerLimiter.init(); - PowerMeter.init(); - MqttHandleHass.forceUpdate(); - MqttHandleVedirectHass.forceUpdate(); } diff --git a/src/WebApi_powermeter.cpp b/src/WebApi_powermeter.cpp index 5bab33f3f..9d8bd1fa8 100644 --- a/src/WebApi_powermeter.cpp +++ b/src/WebApi_powermeter.cpp @@ -118,10 +118,8 @@ void WebApiPowerMeterClass::onAdminPost(AsyncWebServerRequest* request) response->setLength(); request->send(response); - - MqttSettings.performReconnect(); - PowerMeter.init(); - PowerLimiter.init(); - MqttHandleHass.forceUpdate(); - MqttHandleVedirectHass.forceUpdate(); + yield(); + delay(1000); + yield(); + ESP.restart(); }