From 2a3bbc36286ffaba31c55569acc21e30aefee807 Mon Sep 17 00:00:00 2001 From: Jens True Date: Tue, 16 Jul 2019 12:56:05 +0200 Subject: [PATCH] Empty timer handler. Cleaned up code --- src/main.cpp | 66 ++++++++++++++++------------------------------------ 1 file changed, 20 insertions(+), 46 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index f52a415..00bc77d 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -8,52 +8,44 @@ const int PIN_RELAY = D1; int timer = 0; HomieNode powerNode("power", "switch"); - - -bool powerOnHandler(const HomieRange& range, const String& value) { +bool powerStateHandler(const HomieRange& range, const String& value) { if (value != "true" && value != "false") return false; bool on = (value == "true"); digitalWrite(PIN_RELAY, on ? LOW : HIGH); - powerNode.setProperty("on").send(value); + powerNode.setProperty("state").send(value); Homie.getLogger() << "Power is " << (on ? "on" : "off") << endl; return true; } -bool powerTimerHandler(const HomieRange& range, const String& value); +bool powerTimerHandler(const HomieRange& range, const String& value) { + int settimer = value.toInt(); + if(settimer == 0 || settimer > 120) + return false; + + powerNode.setProperty("timer").send(String(settimer)); + powerNode.setProperty("state").send("on"); + Homie.getLogger() << "Power is on for " << settimer << "minutes" << endl; + digitalWrite(PIN_RELAY, on ? LOW : HIGH); + return true; +} void setupHandler() { pinMode(PIN_RELAY, OUTPUT); digitalWrite(PIN_RELAY, HIGH); - powerNode.setProperty("on").send("false"); + powerNode.setProperty("state").send("off"); } void onHomieEvent(const HomieEvent& event) { switch(event.type) { - case HomieEventType::STANDALONE_MODE: - // Do whatever you want when standalone mode is started - break; - case HomieEventType::CONFIGURATION_MODE: - // Do whatever you want when configuration mode is started - break; - case HomieEventType::NORMAL_MODE: - // Do whatever you want when normal mode is started - break; - case HomieEventType::OTA_STARTED: - // Do whatever you want when OTA is started - break; - case HomieEventType::OTA_PROGRESS: - // Do whatever you want when OTA is in progress - - // You can use event.sizeDone and event.sizeTotal - break; case HomieEventType::OTA_FAILED: + syslog.log(LOG_INFO, "OTA failed"); // Do whatever you want when OTA is failed break; case HomieEventType::OTA_SUCCESSFUL: - // Do whatever you want when OTA is successful + syslog.log(LOG_INFO, "OTA completed"); break; case HomieEventType::ABOUT_TO_RESET: // Do whatever you want when the device is about to reset @@ -64,38 +56,20 @@ void onHomieEvent(const HomieEvent& event) { syslog.appName("deskcontrol"); syslog.defaultPriority(LOG_ERR); syslog.log(LOG_INFO, "WiFi Connected, software version: 1.0"); - // You can use event.ip, event.gateway, event.mask - break; - case HomieEventType::WIFI_DISCONNECTED: - // Do whatever you want when Wi-Fi is disconnected in normal mode - // You can use event.wifiReason break; case HomieEventType::MQTT_READY: - // Do whatever you want when MQTT is connected in normal mode syslog.log(LOG_INFO, "MQTT connected"); break; case HomieEventType::MQTT_DISCONNECTED: - // Do whatever you want when MQTT is disconnected in normal mode syslog.log(LOG_INFO, "MQTT disconnected"); - // You can use event.mqttReason break; - case HomieEventType::MQTT_PACKET_ACKNOWLEDGED: - // Do whatever you want when an MQTT packet with QoS > 0 is acknowledged by the broker - - // You can use event.packetId - break; - case HomieEventType::READY_TO_SLEEP: - // After you've called `prepareToSleep()`, the event is triggered when MQTT is disconnected - break; - case HomieEventType::SENDING_STATISTICS: - // Do whatever you want when statistics are sent in normal mode + default: break; } } void setup() { syslog.server("192.168.1.100", 514); - Serial.begin(115200); @@ -106,10 +80,10 @@ void setup() { Homie_setFirmware("deskcontrol", "1.0.0"); Homie_setBrand("FuryFire"); - powerNode.advertise("on").settable(powerOnHandler); - + powerNode.advertise("state").settable(powerStateHandler); + powerNode.advertise("timer").settable(powerTimerHandler); Homie.setSetupFunction(setupHandler); - Homie.onEvent(onHomieEvent); // before Homie.setup() + Homie.onEvent(onHomieEvent); // before Homie.setup() Homie.setup(); }