Seite 1 von 1

Nochmal: Rule mit Timer arbeitet nicht

Verfasst: 28. Aug 2019 21:58
von wolliboy
Hallo zusammen.

Ich habe nun schon einige Beispiele durchforstet, aber komme nicht drauf warum meine Rule nicht arbeitet:

Code: Alles auswählen

// Kopf der *.rules Datei
// Alle globalen Variablen werden zu Beginn der Datei definiert
var Timer tDelay = null

// Ende der Definition globaler Variablen und Konstanten
// ab hier können Rules stehen

rule "Terrasse Sued schliessen"
when
    Item TE_Sued_Shutter changed to UP or
    Item TE_Sued_Shutter changed to DOWN
then
    tDelay?.cancel                                 // lösche Timer, falls einer existiert
    tDelay = createTimer(now.plusSeconds(30), [ |
            TE_Sued_Shutter.sendCommand(STOP)      // Relais absteuern
            ])

end
Es wird keinerlei Meldung im Log angezeigt.
Hat jemand eine Idee?

Grüße
Wolfgang

Re: Nochmal: Rule mit Timer arbeitet nicht

Verfasst: 28. Aug 2019 23:24
von udo1toni
Ist TE_Sued_Shutter ein Rollershutter Item?

Es gibt in openHAB keinen Status UP oder DOWN. Der Trigger changed wertet aber den Status aus.

Wohl kennt openHAB aber ein Kommando UP oder DOWN (beim Rollershutter Item). Wenn es also um einen Befehl geht, musst Du den Trigger received command verwenden.

Re: Nochmal: Rule mit Timer arbeitet nicht

Verfasst: 28. Aug 2019 23:25
von peter-pan
Du gibst ja auch keine Logging-Informationen aus. Probiers mal so:

Code: Alles auswählen

// Kopf der *.rules Datei
// Alle globalen Variablen werden zu Beginn der Datei definiert
var Timer tDelay = null

// Ende der Definition globaler Variablen und Konstanten
// ab hier können Rules stehen

rule "Terrasse Sued schliessen"
when
    Item TE_Sued_Shutter changed to UP or
    Item TE_Sued_Shutter changed to DOWN
then
   logInfo("Terasse Sued schliessen", "Triggering Item {} : ", triggeringItem)  // welches Item triggerd
    tDelay?.cancel                                                              // lösche Timer, falls einer existiert	
    logInfo("Terasse Sued schliessen", "Timer wird initalisiert",)              // Timer wird initialisiert
   tDelay = createTimer(now.plusSeconds(30), [ |
            TE_Sued_Shutter.sendCommand(STOP)      // Relais absteuern
            ])

end
Vielleicht bringt dich das ein Stückchen weiter!?

Re: Nochmal: Rule mit Timer arbeitet nicht

Verfasst: 29. Aug 2019 21:17
von wolliboy
Danke Udo.
Das wars! Jetzt geht es.
Wenn man nicht alle Feinheiten kennt, kommt man halt nicht weiter. :)

Danke Peter-Pan für die Info mit dem Log.
Ich werde es bei Gelegenheit nutzen.

Grüße
Wolfgang