diff --git a/include/devices.h b/include/devices.h index 60b0bb1..376fb21 100644 --- a/include/devices.h +++ b/include/devices.h @@ -28,10 +28,9 @@ namespace Devices { .addSecondary(Builder::instance(SENSOR_ID).withValueTemplate("{{ value_json.pressure }}").build()) .build(); - Switch* ledMqtt = Builder::instance(new Switch{ "Led", "led", + auto ledMqtt = Builder::instance(new Switch{ "Led", "led", [](const char* msg) { - strcmp("ON", msg) == 0 ? digitalWrite(LED_BUILTIN, LOW) : digitalWrite(LED_BUILTIN, HIGH); - ledMqtt->updateState(!digitalRead(LED_BUILTIN)); + turnLed(strcmp("ON", msg) == 0); } }).withStateTopic().restoreFromState().build(); diff --git a/src/esp_clock.cpp b/src/esp_clock.cpp index b6e0678..6c286e1 100644 --- a/src/esp_clock.cpp +++ b/src/esp_clock.cpp @@ -14,6 +14,10 @@ Scheduler ts; Task tCheckWifi(5 * TASK_MINUTE, TASK_ONCE, checkWifiCallback, &ts); Task tWifiConnected(TASK_IMMEDIATE, TASK_ONCE, onWifiConnected, &ts); +void turnLed(bool on = true) { + on ? digitalWrite(LED_BUILTIN, LOW) : digitalWrite(LED_BUILTIN, HIGH); +} + #include "bme.h" #include "ntp_time.h" #include "wifi.h" @@ -56,7 +60,10 @@ void setup() { Ota::setup(); Ntp::setup(); Bme::setup(); - Mqtt::setup(&ts); + Mqtt::setup(&ts, + [] {turnLed(false);}, + [] {turnLed();} + ); Devices::setup(); Wifi::setup();