diff --git a/include/devices.h b/include/devices.h index 3b4d5da..2bb18e4 100644 --- a/include/devices.h +++ b/include/devices.h @@ -53,6 +53,8 @@ namespace Devices { displayTimerMqtt->updateState(value); } }).withMin(0).withMax(90).withStep(5).restoreStateFromCommand().build(); + Sensor* timerRemainingMqtt = Builder::instance(new Sensor("Timer remaining", "timer_remaining")) + .withUnitMeasure("min").withPrecision(0).build(); Switch* timerMqtt = Builder::instance(new Switch{"Timer", "timer", [](const char* msg) { if (strcmp("ON", msg) == 0) { @@ -101,6 +103,7 @@ namespace Devices { ) .addSecondary(ledMqtt) .addSecondary(timerMqtt) + .addSecondary(timerRemainingMqtt) .addConfiguration(brightnessMqtt) .addConfiguration(hourFormatMqtt) .addConfiguration(displayTimerMqtt) @@ -125,5 +128,8 @@ namespace Devices { Display::Brightness::brightnessChangedCallback = []{ brightnessMqtt->updateState(Display::Brightness::current); }; + Display::Timer::timerCallback = []{ + timerRemainingMqtt->updateState(to_string(Display::Timer::current).c_str()); + }; } } \ No newline at end of file diff --git a/include/display.h b/include/display.h index 1eb4674..81579fa 100644 --- a/include/display.h +++ b/include/display.h @@ -79,6 +79,8 @@ namespace Display { namespace Timer { int8 timer = 0, current = 0; + void (*timerCallback)(); + Task tDisplayTimer(SECONDS(10), 2, []{ if (current >= 0) { @@ -101,6 +103,7 @@ namespace Display { tDisplayTimer.setIterations(TASK_FOREVER); tDisplayTimer.restart(); } + if (timerCallback) timerCallback(); }, &ts, false, nullptr, []{ tDisplayTimer.disable();