From c9e603b2de817970abb90f9906eabd25e3e4eb20 Mon Sep 17 00:00:00 2001 From: Thomas Basler Date: Wed, 15 Jun 2022 22:15:02 +0200 Subject: [PATCH] Replace EVERY_N_SECONDS with millis EVERY_N_SECONDS is not updated without a reboot of the controller --- include/MqttPublishing.h | 1 + lib/Hoymiles/src/Hoymiles.cpp | 5 +++-- lib/Hoymiles/src/Hoymiles.h | 1 + src/MqttPublishing.cpp | 5 +++-- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/include/MqttPublishing.h b/include/MqttPublishing.h index b43a5a6e..e42472a9 100644 --- a/include/MqttPublishing.h +++ b/include/MqttPublishing.h @@ -14,6 +14,7 @@ private: void publishField(String subtopic, std::shared_ptr inv, uint8_t channel, uint8_t fieldId); uint32_t _lastPublishStats[INV_MAX_COUNT]; + uint32_t _lastPublish; }; extern MqttPublishingClass MqttPublishing; \ No newline at end of file diff --git a/lib/Hoymiles/src/Hoymiles.cpp b/lib/Hoymiles/src/Hoymiles.cpp index 919db46c..3fd611d0 100644 --- a/lib/Hoymiles/src/Hoymiles.cpp +++ b/lib/Hoymiles/src/Hoymiles.cpp @@ -19,8 +19,7 @@ void HoymilesClass::loop() _radio->loop(); if (getNumInverters() > 0) { - EVERY_N_SECONDS(_pollInterval) - { + if (millis() - _lastPoll > (_pollInterval * 1000)) { static uint8_t inverterPos = 0; std::shared_ptr iv = getInverterByPos(inverterPos); @@ -42,6 +41,8 @@ void HoymilesClass::loop() if (++inverterPos >= getNumInverters()) { inverterPos = 0; } + + _lastPoll = millis(); } } } diff --git a/lib/Hoymiles/src/Hoymiles.h b/lib/Hoymiles/src/Hoymiles.h index 0ed5823f..4064690f 100644 --- a/lib/Hoymiles/src/Hoymiles.h +++ b/lib/Hoymiles/src/Hoymiles.h @@ -29,6 +29,7 @@ private: std::unique_ptr _radio; uint32_t _pollInterval; + uint32_t _lastPoll = 0; }; extern HoymilesClass Hoymiles; \ No newline at end of file diff --git a/src/MqttPublishing.cpp b/src/MqttPublishing.cpp index c225c8cb..489d5f5f 100644 --- a/src/MqttPublishing.cpp +++ b/src/MqttPublishing.cpp @@ -16,8 +16,7 @@ void MqttPublishingClass::loop() CONFIG_T& config = Configuration.get(); - EVERY_N_SECONDS(config.Dtu_PollInterval) - { + if (millis() - _lastPublish > (config.Dtu_PollInterval * 1000)) { MqttSettings.publish("dtu/uptime", String(millis() / 1000)); MqttSettings.publish("dtu/ip", WiFi.localIP().toString()); @@ -58,6 +57,8 @@ void MqttPublishingClass::loop() yield(); } + + _lastPublish = millis(); } }