Merge branch 'detach' into 'master'
detach before call See merge request lukas/pumpensteuerung!11
This commit is contained in:
commit
aee4725379
@ -16,6 +16,6 @@
|
|||||||
#define TempSensorPin D4
|
#define TempSensorPin D4
|
||||||
|
|
||||||
// version info
|
// version info
|
||||||
#define VERSION "v1.2.4-Alpa1"
|
#define VERSION "v1.2.4-Alpha2"
|
||||||
|
|
||||||
#endif //PUMPENSTEUERUNG_PINS_H
|
#endif //PUMPENSTEUERUNG_PINS_H
|
||||||
|
73
src/main.cpp
73
src/main.cpp
@ -15,7 +15,7 @@ bool error = false;
|
|||||||
Ticker status;
|
Ticker status;
|
||||||
|
|
||||||
//pumpendauer maximum ticker
|
//pumpendauer maximum ticker
|
||||||
Ticker pumpendauer;
|
Ticker pumpendauer, wasserSensorDoubleCheck;
|
||||||
|
|
||||||
//WifiManager mang;
|
//WifiManager mang;
|
||||||
Heating mHeat;
|
Heating mHeat;
|
||||||
@ -45,9 +45,10 @@ void pumpeSchalten(bool on) {
|
|||||||
pumpcycles++;
|
pumpcycles++;
|
||||||
generalinfo.setPumpCycles(pumpcycles);
|
generalinfo.setPumpCycles(pumpcycles);
|
||||||
|
|
||||||
pumpendauer.once((float)settingsservice.getSettings()->maxpumpduration + 1, []() {
|
pumpendauer.once((float) settingsservice.getSettings()->maxpumpduration + 1, []() {
|
||||||
//erlaube keine einschaltung von mehr als 60 sek
|
//erlaube keine einschaltung von mehr als 60 sek
|
||||||
if (Timer::getSystemSeconds() - turnontime >= (unsigned)settingsservice.getSettings()->maxpumpduration && turnontime != 0) {
|
if (Timer::getSystemSeconds() - turnontime >=
|
||||||
|
(unsigned) settingsservice.getSettings()->maxpumpduration && turnontime != 0) {
|
||||||
//error zu lange
|
//error zu lange
|
||||||
Serial.println("\n\npumpe lief mehr als 10 Minuten durchgaengig");
|
Serial.println("\n\npumpe lief mehr als 10 Minuten durchgaengig");
|
||||||
pumpeSchalten(false);
|
pumpeSchalten(false);
|
||||||
@ -64,7 +65,8 @@ void pumpeSchalten(bool on) {
|
|||||||
digitalWrite(SchuetzPin, on);
|
digitalWrite(SchuetzPin, on);
|
||||||
Serial.println("[Erfolg] pumpe wird geschalten");
|
Serial.println("[Erfolg] pumpe wird geschalten");
|
||||||
} else {
|
} else {
|
||||||
Serial.println("[FEHLGESCHLAGEN] Schalten des Schütz gesperrt durch Timeout oder Fehler-- sofortiges ausschalten der pumpe\n");
|
Serial.println(
|
||||||
|
"[FEHLGESCHLAGEN] Schalten des Schütz gesperrt durch Timeout oder Fehler-- sofortiges ausschalten der pumpe\n");
|
||||||
turnontime = -1;
|
turnontime = -1;
|
||||||
digitalWrite(SchuetzPin, LOW);
|
digitalWrite(SchuetzPin, LOW);
|
||||||
}
|
}
|
||||||
@ -93,39 +95,46 @@ int wateroutagewaitduration;
|
|||||||
|
|
||||||
void WasserSensorCheck() {
|
void WasserSensorCheck() {
|
||||||
if (digitalRead(WasserSensorPin) == LOW) {
|
if (digitalRead(WasserSensorPin) == LOW) {
|
||||||
Serial.println("Wasser Sensor AUS");
|
// check if water sensor is also low after 500ms and lock it then
|
||||||
//kein Wasser dh timer auf 10min stellen
|
wasserSensorDoubleCheck.once_ms(500, []() {
|
||||||
|
if (digitalRead(WasserSensorPin) == LOW) {
|
||||||
|
Serial.println("Wasser Sensor AUS");
|
||||||
|
//kein Wasser dh timer auf 10min stellen
|
||||||
|
|
||||||
// refresh wateroutage counter
|
// refresh wateroutage counter
|
||||||
generalinfo.setlastWaterOutage(Timer::getSystemSeconds());
|
generalinfo.setlastWaterOutage(Timer::getSystemSeconds());
|
||||||
|
|
||||||
allow = false;
|
allow = false;
|
||||||
Serial.println("Schalte pumpe aus");
|
Serial.println("Schalte pumpe aus");
|
||||||
pumpeSchalten(false);
|
pumpeSchalten(false);
|
||||||
|
|
||||||
Serial.println("warte 30min");
|
Serial.println("warte 30min");
|
||||||
|
|
||||||
status.detach();
|
|
||||||
|
|
||||||
wateroutagewaitduration = settingsservice.getSettings()->waterOutageWaitDuration;
|
|
||||||
status.attach(5, []() {
|
|
||||||
wateroutagewaitduration -= 5;
|
|
||||||
Serial.print("noch ");
|
|
||||||
Serial.print(wateroutagewaitduration);
|
|
||||||
Serial.println(" Sekunden verbleibend");
|
|
||||||
|
|
||||||
if (wateroutagewaitduration <= 0) {
|
|
||||||
if (digitalRead(WasserSensorPin)) {
|
|
||||||
allow = true;
|
|
||||||
Serial.println("Einschalten der Pumpe wieder erlaubt.");
|
|
||||||
|
|
||||||
//pruefen ob drucksensor ein
|
|
||||||
DruckschalterInt();
|
|
||||||
} else {
|
|
||||||
Serial.print("wassersensor immer noch kein Wasser --> verlaengern um 120min\n\n");
|
|
||||||
WasserSensorCheck();
|
|
||||||
}
|
|
||||||
status.detach();
|
status.detach();
|
||||||
|
|
||||||
|
wateroutagewaitduration = settingsservice.getSettings()->waterOutageWaitDuration;
|
||||||
|
|
||||||
|
status.detach();
|
||||||
|
status.attach(5, []() {
|
||||||
|
wateroutagewaitduration -= 5;
|
||||||
|
Serial.print("noch ");
|
||||||
|
Serial.print(wateroutagewaitduration);
|
||||||
|
Serial.println(" Sekunden verbleibend");
|
||||||
|
|
||||||
|
if (wateroutagewaitduration <= 0) {
|
||||||
|
status.detach();
|
||||||
|
if (digitalRead(WasserSensorPin)) {
|
||||||
|
allow = true;
|
||||||
|
Serial.println("Einschalten der Pumpe wieder erlaubt.");
|
||||||
|
|
||||||
|
//pruefen ob drucksensor ein
|
||||||
|
DruckschalterInt();
|
||||||
|
} else {
|
||||||
|
Serial.print("wassersensor immer noch kein Wasser --> verlaengern um 120min\n\n");
|
||||||
|
WasserSensorCheck();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
Reference in New Issue
Block a user