From 0261f186bd1684647b76a7c88137c19a42cad1df Mon Sep 17 00:00:00 2001 From: Lukas Heiligenbrunner Date: Sun, 2 Aug 2020 11:31:36 +0000 Subject: [PATCH] move turnontime back to on and off context live view of pressure and watersensor --- src/WifiManager.cpp | 37 ++++++++++++++++++++++++------------- src/WifiManager.h | 4 ++++ src/main.cpp | 11 +++++++---- 3 files changed, 35 insertions(+), 17 deletions(-) diff --git a/src/WifiManager.cpp b/src/WifiManager.cpp index 871b2d8..d9c1cf4 100644 --- a/src/WifiManager.cpp +++ b/src/WifiManager.cpp @@ -8,7 +8,7 @@ void WifiManager::init() { Serial.print("Setting up Access Point"); // start softap - boolean result = WiFi.softAP("PumpenSteuerung-Heiligenbrunner", "1qayxsw2"); + const bool result = WiFi.softAP("PumpenSteuerung-Heiligenbrunner", "1qayxsw2"); if (result == true) { Serial.println("Wifi Ready"); Serial.println(WiFi.softAPIP()); @@ -25,7 +25,7 @@ void WifiManager::init() { handleNotFound(); }); - // server available at 192.168.2.1 + // server available at 192.168.4.1 server.begin(); } else { Serial.println("Wifi Setup failed!"); @@ -37,30 +37,33 @@ WifiManager::WifiManager() : server(80), lastPumpTime(0), lastWaterOutage(0), la void WifiManager::handleRoot() { Serial.println("HomePage called"); + // read maxpumptime from eeprom int value = 0; EEPROM.begin(4096); // init the eeprom EEPROM.get(0, value); EEPROM.end(); // stop the eeprom communication - bool pumptimeset = this->lastPumpTime != 0; - bool wateroutageset = this->lastWaterOutage != 0; - bool pumpdurationset = this->lastPumpDuration != 0; + const bool pumptimeset = this->lastPumpTime != 0; + const bool wateroutageset = this->lastWaterOutage != 0; + const 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 + const unsigned long pumptime = pumptimeset ? (millis() - this->lastPumpTime) / 1000 : 0; // in sec + const unsigned long wateroutagetime = wateroutageset ? (millis() - this->lastWaterOutage) / 1000 : 0; // in sec + const unsigned long pumpduration = pumpdurationset ? (this->lastPumpDuration) / 1000 : 0; // in sec String index_html = "\n" " Wastinfoboard-ConfigurationPage\n" " \n" " \n" - "
Aktuelle Zeit: " + String(value / 60) + + "
Aktuelle Max-Pumpzeit: " + String(value / 60) + " Minuten
\n" "
\n" " Zeit setzen: \n" " \n" "

\n"; + + // append last pump pump cycle if (pumptimeset) { index_html += "
Zeit seit letztem einschalten: " + String(pumptime / (60 * 60)) + "Stunden " + @@ -70,6 +73,7 @@ void WifiManager::handleRoot() { index_html += "
Zeit seit letztem einschalten: -
"; } + // append last water outage info if (wateroutageset) { index_html += "
Zeit seit letzem Wasserausfall: " + String(wateroutagetime / (60 * 60 * 24)) + "Tage " + @@ -79,6 +83,7 @@ void WifiManager::handleRoot() { index_html += "
Zeit seit letzem Wasserausfall: -
"; } + // append pump run duration if (pumpdurationset) { index_html += "
Pumpe lief zuletzt: " + String(pumpduration / 60) + "Minuten " + @@ -86,14 +91,20 @@ void WifiManager::handleRoot() { } else { index_html += "
Pumpe lief zuletzt: -
"; } - unsigned long currtime = millis() / 1000; + // append chip alive time + const 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
" + - ""; + String((currtime % 60)) + "Sekunden

"; + + // read live sensor values + index_html += "
Drucksensor: " + String((digitalRead(DruckSensorPin) ? "EIN" : "AUS")) + "
"; + index_html += "
Wassersensor: " + String((digitalRead(WasserSensorPin) ? "EIN" : "AUS")) + "
"; + + index_html += ""; server.send(200, "text/html", index_html); } @@ -105,7 +116,7 @@ void WifiManager::handleNotFound() { void WifiManager::handleGet() { Serial.println("get called"); - String s = "\n" + const String s = "\n" " Wastinfoboard-ConfigurationPage\n" " \n" " \n" diff --git a/src/WifiManager.h b/src/WifiManager.h index 177b6d9..b9834c0 100644 --- a/src/WifiManager.h +++ b/src/WifiManager.h @@ -23,6 +23,10 @@ public: void setPumpDuration(unsigned long lastPumpDuration); private: + // todo more dynamic + static const uint8_t WasserSensorPin = 14; + static const uint8_t DruckSensorPin = 12; + ESP8266WebServer server; void handleRoot(); diff --git a/src/main.cpp b/src/main.cpp index 4f2db88..3898a38 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -39,7 +39,8 @@ void pumpeSchalten(bool on) { if (allow && !error) { if (on) { - pumpendauer.once(maxpumpdauer + 1, []() { //erlaube keine einschaltung von mehr als 60 sek + pumpendauer.once(maxpumpdauer + 1, []() { + //erlaube keine einschaltung von mehr als 60 sek if (millis() - turnontime >= maxpumpdauer * 1000 && turnontime != -1) { //error zu lange Serial.println("\n\npumpe lief mehr als 10 Minuten durchgaengig"); @@ -47,11 +48,13 @@ void pumpeSchalten(bool on) { error = true; } }); - - turnontime = millis(); - }else{ + } else { mang.setPumpDuration(millis() - turnontime); } + + // save pump start time + turnontime = millis(); + digitalWrite(SchuetzPin, on); Serial.println("[Erfolg] pumpe wird geschalten"); } else {