Seite 1 von 1
restoreOnStartup löst Rule aus
Verfasst: 9. Jan 2021 15:46
von Chaosmax
Ich habe eine rule, die ausgelöst wird, wenn sich ein item "changed". Nun habe ich festgestellt, dass diese Regel auch nach dem nächtlichen Restart ausgeführt wird. Das item steht in der Persist-Datei mit restoreOnStartup drin, soll also wiederhergestellt werden, jedoch soll die Regel dabei nicht ausgelöst werden. Kann man das irgendwie einstellen. Danke.
Ich nutze Openhab3 auf eine Raspberry Pi 4.
Re: restoreOnStartup löst Rule aus
Verfasst: 9. Jan 2021 17:57
von int5749
Nun, warum startest Du jeden Abend neu?? Dabei hat das Item zunächst ein "NULL" oder "UNDEF" und wird dann richtigerweise mit dem letzten Wert befüllt. Dies ist dann "Item Changed" und triggered die Regel.
Du könntest dies z.B. abfangen über
Code: Alles auswählen
(item.state == ON && (previousState != NULL || previousState != UNDEF)
Somit wird die Regel nur bei der Initialisierung nicht ausgelöst
Finde ich nicht ganz schön, aber sollte funktionieren?
Re: restoreOnStartup löst Rule aus
Verfasst: 9. Jan 2021 18:00
von ThomasW
Hey du könntest die rule ändern indem du sagst das sie nur auslösen soll wenn sich der Status von einem von dir festgelegten wert zu einem anderen ändert
siehe bild
Screenshot 2021-01-09 175921.jpg
Re: restoreOnStartup löst Rule aus
Verfasst: 9. Jan 2021 19:38
von Chaosmax
manchmal sollte man doch etwas länger darüber nachdenken und dann Google mit den richtigen Begriffen füttern.
Dann kommt man zu dieser Lösung
https://www.openhab.org/docs/configurat ... p-behavior
Werde es mal mit Option 1 probieren.
Re: restoreOnStartup löst Rule aus
Verfasst: 9. Jan 2021 19:49
von int5749
Chaosmax hat geschrieben: ↑9. Jan 2021 19:38
Werde es mal mit Option 1 probieren.
Dann sind wir mal gespannt und freuen uns auf Dein Update und die Lösung

Re: restoreOnStartup löst Rule aus
Verfasst: 11. Jan 2021 11:09
von Chaosmax
Option 1 funktioniert für mich. Wie beschrieben, habe ich einen Switch Item angelegt, welches bei einem Neustart automatisch auf "NULL" gesetzt wird und durch eine Regel, welche 10 min nach dem Restart läuft dann den Switch auf "ON" setzt.
In den anderen Regel habe ich dann eine IF-Funktion eingebaut, die nachdem sich der Status eines Items ändert prüft, ob der Switch auf "ON" ist. Wenn ja wird die Regel ausgeführt sonst nicht.
Problematisch sind aus meiner Sicht zwei Dinge. Zum einen ist dies nur praktikabel, wenn man eine geringe Anzahl von Regeln hat, für die das relevant ist. Bei mir waren es zwei, da ist es ok, ansonsten kann es aber evt. unpraktikabel sein, dies so umzusetzen.
Zweites Problem ist aber ein nicht planmässiger Neustart des Pi. Daher werde ich nun Option 1 und 2 kombinieren und eine Regel und Script zum verzögerten laden der "Umschalt-Regel" schreiben, die jedesmal nach einem Neustart ausgeführt wird.
Edit: der hervorgehobene Teil ist natürlich Quatsch, wenn man die Regel zum ändern des Switches an den Neustart koppelt und nicht an eine feste Uhrzeit. Ursprünglich hatte ich den Neustart für 04:30 Uhr und die Regel zum Umschalten auf 04:40 gesetzt.
Jetzt habe ich mit "when System started" und "createTimer" die Regel so geändert, dass sie nach jedem Restart greift.