expose sensor with remaining timer

This commit is contained in:
Nicu Hodos 2025-02-07 13:23:13 +01:00
parent e6ef1bb8b9
commit 67355c7122
2 changed files with 9 additions and 0 deletions

View File

@ -53,6 +53,8 @@ namespace Devices {
displayTimerMqtt->updateState(value); displayTimerMqtt->updateState(value);
} }
}).withMin(0).withMax(90).withStep(5).restoreStateFromCommand().build(); }).withMin(0).withMax(90).withStep(5).restoreStateFromCommand().build();
Sensor* timerRemainingMqtt = Builder<Sensor>::instance(new Sensor("Timer remaining", "timer_remaining"))
.withUnitMeasure("min").withPrecision(0).build();
Switch* timerMqtt = Builder<Switch>::instance(new Switch{"Timer", "timer", Switch* timerMqtt = Builder<Switch>::instance(new Switch{"Timer", "timer",
[](const char* msg) { [](const char* msg) {
if (strcmp("ON", msg) == 0) { if (strcmp("ON", msg) == 0) {
@ -101,6 +103,7 @@ namespace Devices {
) )
.addSecondary(ledMqtt) .addSecondary(ledMqtt)
.addSecondary(timerMqtt) .addSecondary(timerMqtt)
.addSecondary(timerRemainingMqtt)
.addConfiguration(brightnessMqtt) .addConfiguration(brightnessMqtt)
.addConfiguration(hourFormatMqtt) .addConfiguration(hourFormatMqtt)
.addConfiguration(displayTimerMqtt) .addConfiguration(displayTimerMqtt)
@ -125,5 +128,8 @@ namespace Devices {
Display::Brightness::brightnessChangedCallback = []{ Display::Brightness::brightnessChangedCallback = []{
brightnessMqtt->updateState(Display::Brightness::current); brightnessMqtt->updateState(Display::Brightness::current);
}; };
Display::Timer::timerCallback = []{
timerRemainingMqtt->updateState(to_string(Display::Timer::current).c_str());
};
} }
} }

View File

@ -79,6 +79,8 @@ namespace Display {
namespace Timer { namespace Timer {
int8 timer = 0, current = 0; int8 timer = 0, current = 0;
void (*timerCallback)();
Task tDisplayTimer(SECONDS(10), 2, Task tDisplayTimer(SECONDS(10), 2,
[]{ []{
if (current >= 0) { if (current >= 0) {
@ -101,6 +103,7 @@ namespace Display {
tDisplayTimer.setIterations(TASK_FOREVER); tDisplayTimer.setIterations(TASK_FOREVER);
tDisplayTimer.restart(); tDisplayTimer.restart();
} }
if (timerCallback) timerCallback();
}, &ts, false, nullptr, }, &ts, false, nullptr,
[]{ []{
tDisplayTimer.disable(); tDisplayTimer.disable();