Ankündigung

Einklappen
Keine Ankündigung bisher.

Pumpenüberwachung

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    #31
    Update

    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
    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.

    Kommentar


      #32
      Zitat von JoergA Beitrag anzeigen
      Dennoch wäre es mit einer neuen Pumpe interessant zu wissen, wie lange die dann immer läuft.
      Dafür könnte auch noch ein anderer Weg passen, wenn Du die Werte sowieso persistierst:

      Beim Ausschaltereignis der Pumpe den Zeitpunkt des letzten Einschaltens abfragen, dann solltest Du direkt damit die Laufzeit berechnen können. (habe ich allerdings auch noch nicht ausprobiert)

      Code:
      <item>.previousState(true).getTimestamp()
      siehe https://www.openhab.org/docs/configu...rsistence.html

      Btw.: Statt

      Code:
      if (PumpDrainage_vSwitch.state == (ON) && Parents.state == OPEN) {
      	Drainage_Length = (now.millis / 1000) - Drainage_Starttime
      	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) {
      	Drainage_Length = (now.millis / 1000) - Drainage_Starttime
      	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;
      }
      Könntest Du auch
      Code:
      if (PumpDrainage_vSwitch.state == (ON)) {
          Drainage_Length = (now.millis / 1000) - Drainage_Starttime
          pushNotification("ALARM: " + now, PumpDrainage_vSwitch.label + " läuft seit " + Drainage_Length.toString + " Sekunden!")
          if (Parents.state == OPEN) {
        	    Steckd_PumpDrainage.sendCommand(OFF)
      	    Steckd_OG_Schlafz_Schrank.sendCommand(ON)
          } else {
      	    t_watchdogdrainage.reschedule(now.plusSeconds(30))
          }
      } else if (PumpDrainage_vSwitch.state == (OFF)) {
          t_watchdogdrainage.cancel
          t_watchdogdrainage = null
          return;
      }
      schreiben um Code-Duplizierung zu vermeiden.
      Zuletzt geändert von wknx; 03.02.2020, 01:25.

      Kommentar

      Lädt...
      X