From aaf73b2dd71c190aabff9d56e17ff9f210014d6c Mon Sep 17 00:00:00 2001 From: Lukas Heiligenbrunner Date: Sat, 1 Aug 2020 18:00:36 +0200 Subject: [PATCH] add last pump time and duration, chip ontime and last water leakage time to website --- src/WifiManager.cpp | 85 +++++++++++++++++++++++++++++++++++++-------- src/WifiManager.h | 7 ++++ src/main.cpp | 12 +++++-- 3 files changed, 87 insertions(+), 17 deletions(-) diff --git a/src/WifiManager.cpp b/src/WifiManager.cpp index d845f83..871b2d8 100644 --- a/src/WifiManager.cpp +++ b/src/WifiManager.cpp @@ -11,27 +11,28 @@ void WifiManager::init() { boolean result = WiFi.softAP("PumpenSteuerung-Heiligenbrunner", "1qayxsw2"); if (result == true) { Serial.println("Wifi Ready"); - Serial.println( WiFi.softAPIP()); + Serial.println(WiFi.softAPIP()); - server.on("/", HTTP_GET, [this](){ + server.on("/", HTTP_GET, [this]() { handleRoot(); }); - server.on("/get", [this](){ + server.on("/get", [this]() { handleGet(); }); - server.onNotFound([this](){ + server.onNotFound([this]() { handleNotFound(); }); + // server available at 192.168.2.1 server.begin(); } else { Serial.println("Wifi Setup failed!"); } } -WifiManager::WifiManager() : server(80) {} +WifiManager::WifiManager() : server(80), lastPumpTime(0), lastWaterOutage(0), lastPumpDuration(0) {} void WifiManager::handleRoot() { Serial.println("HomePage called"); @@ -41,16 +42,58 @@ void WifiManager::handleRoot() { EEPROM.get(0, value); EEPROM.end(); // stop the eeprom communication - const String index_html = "\n" - " Wastinfoboard-ConfigurationPage\n" - " \n" - " \n" - "
Aktuelle Zeit: "+ String(value / 60) +" Minuten
\n" - "
\n" - " Zeit setzen: \n" - " \n" - "

\n" - ""; + bool pumptimeset = this->lastPumpTime != 0; + bool wateroutageset = this->lastWaterOutage != 0; + bool pumpdurationset = this->lastPumpDuration != 0; + + unsigned long pumptime = pumptimeset ? (millis() - this->lastPumpTime) / 1000 : 0; // in sec + unsigned long wateroutagetime = wateroutageset ? (millis() - this->lastWaterOutage) / 1000 : 0; // in sec + unsigned long pumpduration = pumpdurationset ? (this->lastPumpDuration) / 1000 : 0; // in sec + + + String index_html = "\n" + " Wastinfoboard-ConfigurationPage\n" + " \n" + " \n" + "
Aktuelle Zeit: " + String(value / 60) + + " Minuten
\n" + "
\n" + " Zeit setzen: \n" + " \n" + "

\n"; + if (pumptimeset) { + index_html += "
Zeit seit letztem einschalten: " + + String(pumptime / (60 * 60)) + "Stunden " + + String((pumptime % 3600) / 60) + "Minuten " + + String((pumptime % 60)) + "Sekunden
"; + } else { + index_html += "
Zeit seit letztem einschalten: -
"; + } + + if (wateroutageset) { + index_html += "
Zeit seit letzem Wasserausfall: " + + String(wateroutagetime / (60 * 60 * 24)) + "Tage " + + String((wateroutagetime % 86400) / (60 * 60)) + "Stunden " + + String((wateroutagetime % 3600) / 60) + "Minuten
"; + } else { + index_html += "
Zeit seit letzem Wasserausfall: -
"; + } + + if (pumpdurationset) { + index_html += "
Pumpe lief zuletzt: " + + String(pumpduration / 60) + "Minuten " + + String((pumpduration % 60)) + "Sekunden
"; + } else { + index_html += "
Pumpe lief zuletzt: -
"; + } + unsigned long currtime = millis() / 1000; + + index_html += "
Chip laeuft seit: " + + String(currtime / (60 * 60 * 24)) + "Tage " + + String((currtime % 86400) / (60 * 60)) + "Stunden " + + String((currtime % 3600) / 60) + "Minuten " + + String((currtime % 60)) + "Sekunden
" + + ""; server.send(200, "text/html", index_html); } @@ -98,3 +141,15 @@ int WifiManager::getWaitTime() { EEPROM.end(); // stop the eeprom communication return value; } + +void WifiManager::setlastPumpTime(unsigned long lastPumpTime) { + this->lastPumpTime = lastPumpTime; +} + +void WifiManager::setlastWaterOutage(unsigned long lastWaterOutage) { + this->lastWaterOutage = lastWaterOutage; +} + +void WifiManager::setPumpDuration(unsigned long lastPumpDuration) { + this->lastPumpDuration = lastPumpDuration; +} diff --git a/src/WifiManager.h b/src/WifiManager.h index 47a9140..177b6d9 100644 --- a/src/WifiManager.h +++ b/src/WifiManager.h @@ -17,6 +17,11 @@ public: void holdAlive(); int getWaitTime(); + + void setlastPumpTime(unsigned long lastPumpTime); + void setlastWaterOutage(unsigned long lastWaterOutage); + void setPumpDuration(unsigned long lastPumpDuration); + private: ESP8266WebServer server; @@ -25,4 +30,6 @@ private: void handleNotFound(); void handleGet(); + + unsigned long lastPumpTime, lastWaterOutage, lastPumpDuration; }; diff --git a/src/main.cpp b/src/main.cpp index ebb278c..4f2db88 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -25,12 +25,14 @@ Ticker pumpendauer; WifiManager mang; -int turnontime = -1; +long turnontime = -1; void pumpeSchalten(bool on) { // digitalWrite(4,on); if (on) { Serial.println("versuche Pumpe EIN zuschalten"); + // refresh last pump counter + mang.setlastPumpTime(millis()); } else { Serial.println("versuche Pumpe AUS zuschalten"); } @@ -45,8 +47,11 @@ void pumpeSchalten(bool on) { error = true; } }); + + turnontime = millis(); + }else{ + mang.setPumpDuration(millis() - turnontime); } - turnontime = millis(); digitalWrite(SchuetzPin, on); Serial.println("[Erfolg] pumpe wird geschalten"); } else { @@ -82,6 +87,9 @@ void WasserSensorCheck() { Serial.println("Wasser Sensor AUS"); //kein Wasser dh timer auf 10min stellen + // refresh wateroutage counter + mang.setlastWaterOutage(millis()); + allow = false; Serial.println("Schalte pumpe aus"); pumpeSchalten(false);