Verwendung Timer

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Nybass
Beiträge: 43
Registriert: 25. Mär 2017 11:15

Verwendung Timer

Beitrag von Nybass »

Hallo zusammen,

ich verwende seit neustem openhab für meine Hausautomatisierung mit Homematic und KNX.

Ich habe mir nun eine Steckdose mit Leistungsmessung gegönnt, sodass ich eine Nachricht erhalte, wenn die Waschmaschine fertig ist.
Es hatte mal funktioniert - aber nun klappt es irgendwie nicht mehr. Ich vermute, dass es an der Timer-Funktion liegt. Diese ist mir leider noch etwas unklar in der Verwendung.

Vielleicht findet von euch einer der Fehler bei der folgenden Regel:

Code: Alles auswählen

import org.openhab.model.script.actions.Timer

val String filename = "waschmaschine.rules"

var Timer timerFinished = null

val Number MODE_OFF = 0
val Number MODE_STANDBY = 1
val Number MODE_ACTIVE = 2
val Number MODE_FINISHED = 3

rule "Waschmaschine Überwachung: Init"
when
    System started
then
    logInfo(filename, "Waschmaschine: System started")
    
    createTimer(now.plusSeconds(180)) [|
       if (Waschmaschine_Current < 8)         opState_Waschmaschine.postUpdate(MODE_OFF)
       else if (Waschmaschine_Current > 100)  opState_Waschmaschine.postUpdate(MODE_ACTIVE)
       else                                   opState_Waschmaschine.postUpdate(MODE_STANDBY)
       ]
    
    timerFinished = null
end

/*
 * Waschmaschine
 * Aus: 0-10mA
 * Standby/Fertig: 34mA
 * Aktiv: bis 11000mA (gesehener Mindestwert: 434mA) 
 */
rule "Waschmaschine Überwachung: Verbrauchszuordnung"
when
   Item Waschmaschine_Current changed
then
   if (Waschmaschine_Current.state < 8) 
   {
      opState_Waschmaschine.postUpdate(MODE_OFF)
      logInfo(filename, "Waschmaschine (OFF) Current: " + Waschmaschine_Current.state)
      timerFinished = null
   }
   else if (Waschmaschine_Current.state > 100)
   {
      opState_Waschmaschine.postUpdate(MODE_ACTIVE)
      logInfo(filename, "Waschmaschine (ACTIVE) Current: " + Waschmaschine_Current.state)
      if (timerFinished !== null)
      {
         timerFinished.cancel()
      }
   }
   else
   {
      if (opState_Waschmaschine.state == MODE_OFF)
      {
         opState_Waschmaschine.postUpdate(MODE_STANDBY)
         logInfo(filename, "Waschmaschine (STANDBY) Current: " + Waschmaschine_Current.state)
      }
      else if (opState_Waschmaschine.state == MODE_ACTIVE)
      {
         logInfo(filename, "Waschmaschine (ACTIVE->FINISHED?) Current: " + Waschmaschine_Current.state)
         if(timerFinished === null || timerFinished.hasTerminated)
         {
            timerFinished = createTimer(now.plusMinutes(3), [|
               timerFinished = null
               opState_Waschmaschine.postUpdate(MODE_FINISHED)
               logInfo(filename, "Waschmaschine: finished")    ]) 
         }
      }   
   }
end

rule "Waschmaschine Überwachung: Benachrichtigung"
when
   Item opState_Waschmaschine changed
then
   if (opState_Waschmaschine.state == MODE_FINISHED)
   {
      logInfo(filename, "Waschmaschine: fertig")
      pushover("Waschmaschine ist fertig!")
   }
end
Folgende Logausgaben erhalte (gekürzt)

Code: Alles auswählen

09:56:02.965 [INFO ] [ome.model.script.waschmaschine.rules] - Waschmaschine (ACTIVE) Current: 354.00
09:56:10.837 [INFO ] [ome.model.script.waschmaschine.rules] - Waschmaschine (ACTIVE) Current: 190.00
09:56:18.884 [INFO ] [ome.model.script.waschmaschine.rules] - Waschmaschine (ACTIVE->FINISHED?) Current: 39.00
09:56:23.892 [INFO ] [ome.model.script.waschmaschine.rules] - Waschmaschine (ACTIVE->FINISHED?) Current: 48.00
09:58:13.993 [INFO ] [ome.model.script.waschmaschine.rules] - Waschmaschine (ACTIVE) Current: 3963.00
09:58:21.827 [INFO ] [ome.model.script.waschmaschine.rules] - Waschmaschine (ACTIVE) Current: 2387.00
09:58:29.826 [INFO ] [ome.model.script.waschmaschine.rules] - Waschmaschine (ACTIVE->FINISHED?) Current: 39.00
09:58:37.860 [INFO ] [ome.model.script.waschmaschine.rules] - Waschmaschine (ACTIVE) Current: 2389.00
09:58:45.822 [INFO ] [ome.model.script.waschmaschine.rules] - Waschmaschine (ACTIVE->FINISHED?) Current: 39.00
09:58:53.823 [INFO ] [ome.model.script.waschmaschine.rules] - Waschmaschine (ACTIVE) Current: 2014.00
....
11:54:38.611 [INFO ] [ome.model.script.waschmaschine.rules] - Waschmaschine (ACTIVE) Current: 1446.00
11:55:44.684 [INFO ] [ome.model.script.waschmaschine.rules] - Waschmaschine (ACTIVE) Current: 1344.00
11:56:52.991 [INFO ] [ome.model.script.waschmaschine.rules] - Waschmaschine (ACTIVE) Current: 1332.00
11:59:26.687 [INFO ] [ome.model.script.waschmaschine.rules] - Waschmaschine (ACTIVE) Current: 871.00
11:59:29.024 [INFO ] [ome.model.script.waschmaschine.rules] - Waschmaschine (ACTIVE) Current: 365.00
11:59:34.616 [INFO ] [ome.model.script.waschmaschine.rules] - Waschmaschine (ACTIVE) Current: 378.00
11:59:52.687 [INFO ] [ome.model.script.waschmaschine.rules] - Waschmaschine (ACTIVE) Current: 532.00
12:00:01.824 [INFO ] [ome.model.script.waschmaschine.rules] - Waschmaschine (ACTIVE) Current: 191.00
12:00:08.991 [INFO ] [ome.model.script.waschmaschine.rules] - Waschmaschine (ACTIVE->FINISHED?) Current: 58.00
12:00:16.606 [INFO ] [ome.model.script.waschmaschine.rules] - Waschmaschine (ACTIVE) Current: 191.00
12:00:24.695 [INFO ] [ome.model.script.waschmaschine.rules] - Waschmaschine (ACTIVE->FINISHED?) Current: 38.00
12:00:34.691 [INFO ] [ome.model.script.waschmaschine.rules] - Waschmaschine (ACTIVE) Current: 335.00
12:00:42.609 [INFO ] [ome.model.script.waschmaschine.rules] - Waschmaschine (ACTIVE->FINISHED?) Current: 36.00
12:00:54.679 [INFO ] [ome.model.script.waschmaschine.rules] - Waschmaschine (ACTIVE) Current: 1886.00
12:01:02.611 [INFO ] [ome.model.script.waschmaschine.rules] - Waschmaschine (ACTIVE->FINISHED?) Current: 38.00
12:01:13.678 [INFO ] [ome.model.script.waschmaschine.rules] - Waschmaschine (ACTIVE) Current: 1676.00
12:01:21.608 [INFO ] [ome.model.script.waschmaschine.rules] - Waschmaschine (ACTIVE->FINISHED?) Current: 55.00
12:01:50.390 [INFO ] [ome.model.script.waschmaschine.rules] - Waschmaschine (ACTIVE->FINISHED?) Current: 35.00
12:09:36.331 [INFO ] [ome.model.script.waschmaschine.rules] - Waschmaschine (ACTIVE->FINISHED?) Current: 34.00
19:20:08.957 [INFO ] [ome.model.script.waschmaschine.rules] - Waschmaschine (OFF) Current: 0.00
Wenn ich die Zeit prüfe von der Meldung "Waschmaschine (ACTIVE->FINISHED?)" zur nächsten - dann sind es in der Regel nur ca. 20 Sekunden.
Meine Erwartung, dass der Timer zuschlägt wäre um 12:04:21 Uhr - oder verstehe ich da etwas falsch?

lemon
Beiträge: 6
Registriert: 4. Mär 2018 22:32

Re: Verwendung Timer

Beitrag von lemon »

Das ist doch das Beispiel von Michael, da gibt's einen eigenen Thread dazu mit der Lösung deines Problems (viewtopic.php?f=15&t=585) oder aber auf seiner Webseite, da wurde der Fehler gestern ausgebessert.

Viele Grüße

Andreas

Antworten