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
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <TimeoutHelper.h>
|
#include <TaskSchedulerDeclarations.h>
|
||||||
|
|
||||||
class MqttHandleInverterTotalClass {
|
class MqttHandleInverterTotalClass {
|
||||||
public:
|
public:
|
||||||
void init();
|
void init(Scheduler* scheduler);
|
||||||
void loop();
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
TimeoutHelper _lastPublish;
|
void loop();
|
||||||
|
|
||||||
|
Task _loopTask;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern MqttHandleInverterTotalClass MqttHandleInverterTotal;
|
extern MqttHandleInverterTotalClass MqttHandleInverterTotal;
|
||||||
@ -10,18 +10,25 @@
|
|||||||
|
|
||||||
MqttHandleInverterTotalClass MqttHandleInverterTotal;
|
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()
|
void MqttHandleInverterTotalClass::loop()
|
||||||
{
|
{
|
||||||
|
// Update interval from config
|
||||||
|
_loopTask.setInterval(Configuration.get().Mqtt.PublishInterval * TASK_SECOND);
|
||||||
|
|
||||||
if (!MqttSettings.getConnected() || !Hoymiles.isAllRadioIdle()) {
|
if (!MqttSettings.getConnected() || !Hoymiles.isAllRadioIdle()) {
|
||||||
|
_loopTask.forceNextIteration();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_lastPublish.occured()) {
|
|
||||||
MqttSettings.publish("ac/power", String(Datastore.getTotalAcPowerEnabled(), Datastore.getTotalAcPowerDigits()));
|
MqttSettings.publish("ac/power", String(Datastore.getTotalAcPowerEnabled(), Datastore.getTotalAcPowerDigits()));
|
||||||
MqttSettings.publish("ac/yieldtotal", String(Datastore.getTotalAcYieldTotalEnabled(), Datastore.getTotalAcYieldTotalDigits()));
|
MqttSettings.publish("ac/yieldtotal", String(Datastore.getTotalAcYieldTotalEnabled(), Datastore.getTotalAcYieldTotalDigits()));
|
||||||
MqttSettings.publish("ac/yieldday", String(Datastore.getTotalAcYieldDayEnabled(), Datastore.getTotalAcYieldDayDigits()));
|
MqttSettings.publish("ac/yieldday", String(Datastore.getTotalAcYieldDayEnabled(), Datastore.getTotalAcYieldDayDigits()));
|
||||||
@ -29,7 +36,4 @@ void MqttHandleInverterTotalClass::loop()
|
|||||||
MqttSettings.publish("dc/power", String(Datastore.getTotalDcPowerEnabled(), Datastore.getTotalDcPowerDigits()));
|
MqttSettings.publish("dc/power", String(Datastore.getTotalDcPowerEnabled(), Datastore.getTotalDcPowerDigits()));
|
||||||
MqttSettings.publish("dc/irradiation", String(Datastore.getTotalDcIrradiation(), 3));
|
MqttSettings.publish("dc/irradiation", String(Datastore.getTotalDcIrradiation(), 3));
|
||||||
MqttSettings.publish("dc/is_valid", String(Datastore.getIsAllEnabledReachable()));
|
MqttSettings.publish("dc/is_valid", String(Datastore.getIsAllEnabledReachable()));
|
||||||
|
|
||||||
_lastPublish.set(Configuration.get().Mqtt.PublishInterval * 1000);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -101,7 +101,7 @@ void setup()
|
|||||||
MqttSettings.init();
|
MqttSettings.init();
|
||||||
MqttHandleDtu.init();
|
MqttHandleDtu.init();
|
||||||
MqttHandleInverter.init();
|
MqttHandleInverter.init();
|
||||||
MqttHandleInverterTotal.init();
|
MqttHandleInverterTotal.init(&scheduler);
|
||||||
MqttHandleHass.init();
|
MqttHandleHass.init();
|
||||||
MessageOutput.println("done");
|
MessageOutput.println("done");
|
||||||
|
|
||||||
@ -161,8 +161,6 @@ void loop()
|
|||||||
yield();
|
yield();
|
||||||
MqttHandleInverter.loop();
|
MqttHandleInverter.loop();
|
||||||
yield();
|
yield();
|
||||||
MqttHandleInverterTotal.loop();
|
|
||||||
yield();
|
|
||||||
MqttHandleHass.loop();
|
MqttHandleHass.loop();
|
||||||
yield();
|
yield();
|
||||||
WebApi.loop();
|
WebApi.loop();
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user