Seite 1 von 1

Item mit Timer ausschalten

Verfasst: 28. Apr 2018 16:03
von tim.dreier
Hallo,
Ich möchte ein Item ich einer bestimmten Zeit nach dem Einschalten wieder ausschalten. Hierfür habe ich bereits eine Regel geschrieben:

Code: Alles auswählen

var Timer md1Timer = null
val int timeoutMinutes = 1

rule "Staubsauger received ON"
when
    Item staubsauger received command ON
then
if(md1Timer == null) {
    md1Timer = createTimer(now.plusMinutes(timeoutMinutes ), [|
    staubsauger.sendCommand(OFF)
    md1Timer = null
])
}
else {
    md1Timer.reschedule(now.plusMinutes(timeoutMinutes )
}
end 
Leider bleibt der Status des Items allerdings trotz der Regel bei ON, weshalb ich etwas ratlos bin woran das liegen könnte.

Danke schonmal für die Hilfe,
Grüße,
Tim

Re: Item mit Timer ausschalten

Verfasst: 28. Apr 2018 18:34
von hr3
Hallo,
Vergleich mit null sollte immer mit === statt finden (ist aber sicherlich nicht der Grund für das Problem)
Wird die Rule überhaupt aufgerufen. Probleirs doch mal mit Item staubsauger changed to ON.
Ich würde in solchen Fällen anstelle der Rule mit dem Expire-Binding arbeiten.

Re: Item mit Timer ausschalten

Verfasst: 29. Apr 2018 22:17
von tim.dreier
Hallo,
Danke für die Antwort. Ich habe das Problem gefunden, das Exec-Binding nimmt nur Strings entgegen. So geht es:

Code: Alles auswählen

staubsauger.sendCommand("OFF")
Das Expire Bindung werde ich mir mal anschauen, Danke!

Re: Item mit Timer ausschalten

Verfasst: 30. Apr 2018 09:32
von hr3
Wenns funktioniert, ist es gut so, ich verstehe allerdings nicht die Aussage "das Exec-Binding nimmt nur Strings entgegen". Das sollte nichts mit Exec-Binding zu tun haben, sondern nur mit den Item-Type. Wenn Staubsauger ein Switch ist, wie "Item staubsauger received command ON" vermuten läßt, dann sollte auch "staubsauger.sendCommand(OFF)" funktionieren. Weche Version von openHAB verwendest du denn?