Update 
Ich habe das dann nun wie folgt umgebaut.
Reduziert auf die Entwässerungspumpe, das abschalten der Pumpe ist nur temporär, da das (piep) Ding im Moment rumzickt und der Schwimmerschalter manchmal hängt
Das ist besonders Nachts blöd, wenn dann die Pumpe "trocken" läuft und natürlich auch die Nachbarn durch den Krach gestört werden könnten. Dennoch wäre es mit einer neuen Pumpe interessant zu wissen, wie lange die dann immer läuft.

Ich habe das dann nun wie folgt umgebaut.
Code:
[B]var long Drainage_Starttime var Number Drainage_Length[/B] rule PumpAction when Member of gPumpOn received update then /* Entwässerungspumpe EIN */ if (triggeringItem.state == (ON) && triggeringItem.name.split("_").get(0) == PumpDrainage_Power.name.split("_").get(0)) { if (t_watchdogdrainage === null) { [B]Drainage_Starttime = now.millis / 1000[/B] logInfo("Water", Drainage_Starttime.toString) logInfo("Water", "Note: Alarmtimer für {} gestartet", PumpDrainage_vSwitch.label) pushNotification("Note: " + now, PumpDrainage_vSwitch.label + " ist angelaufen.") t_watchdogdrainage = createTimer(now.plusSeconds(45))[| if (PumpDrainage_vSwitch.state == (ON) && Parents.state == OPEN) { [B]Drainage_Length = (now.millis / 1000) - Drainage_Starttime[/B] pushNotification("ALARM: " + now, PumpDrainage_vSwitch.label + " läuft seit " + Drainage_Length.toString + " Sekunden!") Steckd_PumpDrainage.sendCommand(OFF) Steckd_OG_Schlafz_Schrank.sendCommand(ON) } else if (PumpDrainage_vSwitch.state == (ON) && Parents.state == CLOSED) { [B]Drainage_Length = (now.millis / 1000) - Drainage_Starttime[/B] pushNotification("ALARM: " + now, PumpDrainage_vSwitch.label + " läuft seit " + Drainage_Length.toString + " Sekunden!") t_watchdogdrainage.reschedule(now.plusSeconds(30)) } else if (PumpDrainage_vSwitch.state == (OFF)) { t_watchdogdrainage.cancel t_watchdogdrainage = null return; } ] } } end

Kommentar