Migrate MqttHandleInverterTotal to TaskSchedule
This commit is contained in:
parent
c045b5df48
commit
98c30d1042
@ -1,15 +1,16 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#pragma once
|
||||
|
||||
#include <TimeoutHelper.h>
|
||||
#include <TaskSchedulerDeclarations.h>
|
||||
|
||||
class MqttHandleInverterTotalClass {
|
||||
public:
|
||||
void init();
|
||||
void loop();
|
||||
void init(Scheduler* scheduler);
|
||||
|
||||
private:
|
||||
TimeoutHelper _lastPublish;
|
||||
void loop();
|
||||
|
||||
Task _loopTask;
|
||||
};
|
||||
|
||||
extern MqttHandleInverterTotalClass MqttHandleInverterTotal;
|
||||
@ -10,26 +10,30 @@
|
||||
|
||||
MqttHandleInverterTotalClass MqttHandleInverterTotal;
|
||||
|
||||
void MqttHandleInverterTotalClass::init()
|
||||
void MqttHandleInverterTotalClass::init(Scheduler* scheduler)
|
||||
{
|
||||
_lastPublish.set(Configuration.get().Mqtt.PublishInterval * 1000);
|
||||
scheduler->addTask(_loopTask);
|
||||
_loopTask.setCallback(std::bind(&MqttHandleInverterTotalClass::loop, this));
|
||||
_loopTask.setIterations(TASK_FOREVER);
|
||||
_loopTask.setInterval(Configuration.get().Mqtt.PublishInterval * TASK_SECOND);
|
||||
_loopTask.enable();
|
||||
}
|
||||
|
||||
void MqttHandleInverterTotalClass::loop()
|
||||
{
|
||||
// Update interval from config
|
||||
_loopTask.setInterval(Configuration.get().Mqtt.PublishInterval * TASK_SECOND);
|
||||
|
||||
if (!MqttSettings.getConnected() || !Hoymiles.isAllRadioIdle()) {
|
||||
_loopTask.forceNextIteration();
|
||||
return;
|
||||
}
|
||||
|
||||
if (_lastPublish.occured()) {
|
||||
MqttSettings.publish("ac/power", String(Datastore.getTotalAcPowerEnabled(), Datastore.getTotalAcPowerDigits()));
|
||||
MqttSettings.publish("ac/yieldtotal", String(Datastore.getTotalAcYieldTotalEnabled(), Datastore.getTotalAcYieldTotalDigits()));
|
||||
MqttSettings.publish("ac/yieldday", String(Datastore.getTotalAcYieldDayEnabled(), Datastore.getTotalAcYieldDayDigits()));
|
||||
MqttSettings.publish("ac/is_valid", String(Datastore.getIsAllEnabledReachable()));
|
||||
MqttSettings.publish("dc/power", String(Datastore.getTotalDcPowerEnabled(), Datastore.getTotalDcPowerDigits()));
|
||||
MqttSettings.publish("dc/irradiation", String(Datastore.getTotalDcIrradiation(), 3));
|
||||
MqttSettings.publish("dc/is_valid", String(Datastore.getIsAllEnabledReachable()));
|
||||
|
||||
_lastPublish.set(Configuration.get().Mqtt.PublishInterval * 1000);
|
||||
}
|
||||
MqttSettings.publish("ac/power", String(Datastore.getTotalAcPowerEnabled(), Datastore.getTotalAcPowerDigits()));
|
||||
MqttSettings.publish("ac/yieldtotal", String(Datastore.getTotalAcYieldTotalEnabled(), Datastore.getTotalAcYieldTotalDigits()));
|
||||
MqttSettings.publish("ac/yieldday", String(Datastore.getTotalAcYieldDayEnabled(), Datastore.getTotalAcYieldDayDigits()));
|
||||
MqttSettings.publish("ac/is_valid", String(Datastore.getIsAllEnabledReachable()));
|
||||
MqttSettings.publish("dc/power", String(Datastore.getTotalDcPowerEnabled(), Datastore.getTotalDcPowerDigits()));
|
||||
MqttSettings.publish("dc/irradiation", String(Datastore.getTotalDcIrradiation(), 3));
|
||||
MqttSettings.publish("dc/is_valid", String(Datastore.getIsAllEnabledReachable()));
|
||||
}
|
||||
|
||||
@ -101,7 +101,7 @@ void setup()
|
||||
MqttSettings.init();
|
||||
MqttHandleDtu.init();
|
||||
MqttHandleInverter.init();
|
||||
MqttHandleInverterTotal.init();
|
||||
MqttHandleInverterTotal.init(&scheduler);
|
||||
MqttHandleHass.init();
|
||||
MessageOutput.println("done");
|
||||
|
||||
@ -161,8 +161,6 @@ void loop()
|
||||
yield();
|
||||
MqttHandleInverter.loop();
|
||||
yield();
|
||||
MqttHandleInverterTotal.loop();
|
||||
yield();
|
||||
MqttHandleHass.loop();
|
||||
yield();
|
||||
WebApi.loop();
|
||||
|
||||
Loading…
Reference in New Issue
Block a user