Und Verknüfpung in Regel

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
JoschiRaab
Beiträge: 22
Registriert: 6. Okt 2019 15:47
Answers: 0

Und Verknüfpung in Regel

Beitrag von JoschiRaab »

Hallo ,
ich möchte um 22.00 Uhr prüfen ob das Garagentor zu ist und alle Türen verschlossen.
Meine Regel dazu sieht so aus :

Code: Alles auswählen

rule "Garagentor noch AUF"
when 
    Time cron "0 0 22 * * ?" and
    Item Garagentor is ON 
then
    Echo_Schlafzimmer_TTS.sendCommand('Das Garagentor ist noch AUF')
end
Das es "and" in einer Regel wohl nicht gibt habe ich schon herausgefunden , aber wie könnte ich das Lösen ?
am besten wäre es wenn ab 22.00 Uhr jede 15 Minten überprüft wird ob noch alles abgeschlossen ist .
Bis um 5.00 Uhr morgens oder so .

Kann mir da jemand was schreiben ?
Ich denke es gibt diese Frage schon irgendwo , habe auch danach gesucht , aber nix gefunden was mich weiter bringt .

Vielen Dank
Joschi

Darkwin101
Beiträge: 424
Registriert: 6. Mär 2019 11:19
Answers: 14

Re: Und Verknüfpung in Regel

Beitrag von Darkwin101 »

Also zu Verständnis bei dem Was du Versucht müssten beide Ereignisse zu selben Zeit auf die Milisekunde eintreffen damit das funktionieren würde, darum gibt es die UND Bedingung nicht bei Triggern du musst dir einen Trigger nehmen und dann die Unterscheidung in den Then Teil

Code: Alles auswählen

rule "Garagentor noch AUF"
when 
    Time cron "0 0/15 * * * ?"  // Ausführung alle 15 Minuten
    then
    if ( Garagentor.state == ON && ((now.getHourOfDay < 5) || (now.getHourOfDay >= 22))){ //Garagentor ist auf und Uhrzeit zwischen 22 Uhr und 5 Uhr
     Echo_Schlafzimmer_TTS.sendCommand('Das Garagentor ist noch AUF') } 
end
Ein Oder mehrere Ereignisse lösen die Rule aus im When Teil aber nie 2 Erreignisse gleichzeitig da das gleichzeitige Auftreten in der Realität so gut wie nie erreicht wird.

Benutzeravatar
udo1toni
Beiträge: 15249
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Und Verknüfpung in Regel

Beitrag von udo1toni »

Knapp daneben... :)

Der Time cron Trigger ist schon ok. Du möchtest um 22 Uhr etwas prüfen, also Trigger für 22 Uhr.
Die andere Sache ist, festzustellen, ob zu diesem Zeitpunkt ein Item einen bestimmten Status hat. Dieser Teil ist aber per Definition kein Trigger, sondern eine Bedingung. Dieser Teil wird also im Verlauf der Rule überprüft. Deine Rule muss also lauten:

Code: Alles auswählen

rule "Garagentor noch AUF"
when 
    Time cron "0 0 22 * * ?" 
then
    if(Garagentor.state == ON)
        Echo_Schlafzimmer_TTS.sendCommand('Das Garagentor ist noch AUF')
end
Diese Rule triggert nur um 22 Uhr, sollte also das Tor nach 22 Uhr geöffnet werden, gibt es keine Meldung. Das würde ich aber nicht wie von Darkwin101 vorgeschlagen lösen, sondern eher eine Rule anlegen, die, falls das Tor nach 22 Uhr geöffnet wird, einen Timer startet, der dann z.B. nach 5 Minuten eine Meldung verschickt.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Darkwin101
Beiträge: 424
Registriert: 6. Mär 2019 11:19
Answers: 14

Re: Und Verknüfpung in Regel

Beitrag von Darkwin101 »

@Udo1Toni meine Regel zielt halt auf seine Konkrete Frage ab ich wüsste jetzt nicht wie ich das anders lösen könnte :D
JoschiRaab hat geschrieben: 13. Apr 2020 13:39 am besten wäre es wenn ab 22.00 Uhr jede 15 Minten überprüft wird ob noch alles abgeschlossen ist .
Bis um 5.00 Uhr morgens oder so .

Benutzeravatar
udo1toni
Beiträge: 15249
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Und Verknüfpung in Regel

Beitrag von udo1toni »

Ah. Den Teil hatte ich überlesen.

Man könnte den Trigger Zeitraum eingrenzen über

Code: Alles auswählen

Zime cron "0 0/15 0-4,22-23 * * ?"

aber sonderlich schön ist das auch nicht.

Wie gesagt würde ich das eher andersrum lösen, um 22 Uhr triggert die Rule, wenn das Tor zu dem Zeitpunkt offen ist, wird die Meldung ausgegeben. Man kann dann auch einen Timer starten, der alle 15 Minuten die Meldung wiederholt. Ansonsten beim Öffnen des Tors prüfen, ob es zwischen 22 Uhr und 5 Uhr ist und gegebenenfalls einen Timer starten. Der Timer kann dann immer wieder neu geplant werden. Wenn das Tor geschlossen wird, wird der Timer abgebrochen, ebenso von einer Rule, die um 5 Uhr triggert.

Das mag komplizierter in der Programmierung sein, vermeidet aber Rules, die zyklisch starten, es vermeidet auch eine ungleichmäßige Meldung, wenn man z.B. das Tor um 22:14 auffährt, kommt bei zyklischer Meldung schon um 22:15 die Meldung, dass das Tor noch offen ist, das ist unschön.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten