Openhab3 und Rules: Mehrere Conditions (And/Or Verknüpfung)

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

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

Re: Openhab3 und Rules: Mehrere Conditions (And/Or Verknüpfung)

Beitrag von udo1toni »

martin_aus_Ddorf hat geschrieben: 9. Jun 2021 19:42 Der Button "runn now" sollte das "when" sumulieren.
Nö.
Der "Run Now" Knopf macht genau das. Er startet den Then-Teil OHNE Berücksichtigung des "But Only If" Teils.
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Benutzeravatar
peter-pan
Beiträge: 2773
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: Openhab3 und Rules: Mehrere Conditions (And/Or Verknüpfung)

Beitrag von peter-pan »

...das ist genau was ich gesagt/geschrieben habe.

Anstelle des Triggers (event), tritt der "Run Now"-Knopf. Aber anscheinend werden die Bedingungen (Conditions) aus dem "Then-Teil" hier nicht berücksichtigt. (Egal ob "and" oder "or").

Schau mal hier rüber. Da geht es um das gleiche Thema.

Edit: Wenn der Run-Now-Knopf bei der Rule-Engine nur die halbe Arbeit (in meinen Augen) macht, dann brauch ich ihn auch nicht. Da benutze ich liebe die DSL-Schreibweise und kann den Schalter in korrekter Weise (mein Verständnis) benutzen.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

martin_aus_Ddorf
Beiträge: 56
Registriert: 2. Apr 2018 15:45
Answers: 0

Re: Openhab3 und Rules: Mehrere Conditions (And/Or Verknüpfung)

Beitrag von martin_aus_Ddorf »

peter-pan hat geschrieben: 9. Jun 2021 23:57 Wenn der Run-Now-Knopf bei der Rule-Engine nur die halbe Arbeit (in meinen Augen) macht, dann brauch ich ihn auch nicht.
das sehe ich auch so und halte es eher für einen Bug, ansonsten für einen Designfehler. Aber alles gut! Ich bin froh, dass ich Rules über diesen Weg eingeben kann. Das Testen dauert dann halt was länger - ich muss jetzt auf Regen warten - aber die Funktion ist grundsätzlich prima!

und "P.S.:", wenn ich das richtig gesehen habe, dann habe ich wohl diesen und meinen eigenen Thread über "run now" vertauscht. Hier ging es um die ODER Verknüpfung von WHEN, THEN und BUT NOT IF. Das mit dem "run now" war ein anderer Thread. Sorry!

Grüße
Martin

Benutzeravatar
peter-pan
Beiträge: 2773
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: Openhab3 und Rules: Mehrere Conditions (And/Or Verknüpfung)

Beitrag von peter-pan »

Ich hab mir das heute Nacht im Traum überlegt ;) . Ich glaube da liegt eine etwas andere Logik dahinter. Udo hat da im Prinzip schon Recht.

Damit ist es, so wie ich das verstehe, die Verknüpfung einer bestimmten Bedingung mit einer bestimmten Aktion nicht möglich. Also z.B., wenn Bedingung X erfüllt, dann mache Aktion X, wenn Bedingung Y erfüllt, dann mache Aktion Y.

Deshalb bleibe ich auch erstmal beim Scripten mit DSL. Ich habe zwar auch eine Python-Variante von OH2, habe es aber noch nicht geschafft, die nach OH3 zu portieren. :? :roll:
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

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

Re: Openhab3 und Rules: Mehrere Conditions (And/Or Verknüpfung)

Beitrag von udo1toni »

Ja, die Threads haben sich (mindestns) etwas überschnitten.
Aber ich schreibe es auch hier nochmal, nur um sicherzugehen...

DSL-Rules bestehen aus einem when-Teil und einem then-Teil. Der when-Teil enthält die Trigger, welche die Rule starten. Jeder einzelne Trigger führt zur Ausführung des Codes. Der then-Teil einhält den Code, der ausgeführt wird. Es gibt keine Möglichkeit, zu verhindern, dass eine Rule ausgeführt wird, wenn ein Trigger auftritt. Daraus folgt, dass man im Code selbst die Randbedingungen prüfen muss, ob die Aktionen ausgeführt werden dürfen.

Die "neuen" Rules, welche über die UI erstellt werden, haben den when-Teil und den then-Teil, aber zusätzlich dazu noch den but-only-if-Teil. Der but-only-if-Teil der Rule erlaubt erst, dass der/die Trigger im when-Teil den then-Teil zur Ausführung bringen. Diese Conditions sind aber nicht Bestandteil des Codes. Sie verhindern, dass der Code überhaupt gestartet wird.

Der Knopf heißt Run Now, nicht Run Now but only if. Er dient explizit zum Starten des Codes OHNE weitere Bedingungen.
Genauso deaktiviert der Pausenknopf die Rule als Ganzes - evtl. sogar, indem einfach das Ergebnis von but-only-if fest auf false gesetzt wird. Dafür spricht, dass man auch eine deaktivierte Rule mit Run Now ausführen kann.

Das Ganze ist also weder Bug noch Designfehler, sondern pure Absicht. Es ist genau das, was die Entwickler wollten.
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Benutzeravatar
peter-pan
Beiträge: 2773
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: Openhab3 und Rules: Mehrere Conditions (And/Or Verknüpfung)

Beitrag von peter-pan »

udo1toni hat geschrieben: 10. Jun 2021 10:41 Das Ganze ist also weder Bug noch Designfehler, sondern pure Absicht.
👍. Super, super. Dank deiner Erläuterungen und noch ein bisschen Lesen in der Doku ist mir die Sache klarer geworden.

Ich habe über die UI "einfach" den Trigger (when) angegeben und bei "then" die Action "Run Script --> Rule DSL". Hier erscheint dann ein einfacher Editor, in dem man dann den gewünschten Code eingeben kann. Das sieht dann so aus:

Code: Alles auswählen

triggers:
  - id: "1"
    configuration:
      itemName: Sonoff_Basic_03
      state: ON
      previousState: OFF
    type: core.ItemStateChangeTrigger
conditions: []
actions:
  - inputs: {}
    id: "2"
    configuration:
      type: application/vnd.openhab.dsl.rule
      script: >2
         if (Sonoff_T1_01.state == ON) {
             logInfo("Sonoff-Schalter", "Deckenlampe brennt")
             Sonoff_Basic_04.sendCommand(ON)
             }
         else {
            logInfo("Sonoff-Schalter","Deckenlampe ist nicht angeschaltet {}", Sonoff_T1_01.state )
              }
    type: script.ScriptAction
...ist aber gewöhnungsbedürftig.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

martin_aus_Ddorf
Beiträge: 56
Registriert: 2. Apr 2018 15:45
Answers: 0

Re: Openhab3 und Rules: Mehrere Conditions (And/Or Verknüpfung)

Beitrag von martin_aus_Ddorf »

... ist nicht nur gewöhnungsbedürftig, sondern eher unglücklich.

Udo, ich habe dich verstanden, dass der Button "run now" NUR den THEN Teil ausführt. Also kein Verständnisproblem, keine Sorge.

Nur...
die ganze Seite ist in die Reiter "Design" und "Code" unterteilt und nichts, deutet darauf hin, dass mit "run now" nur Teile des Codes ausgeführt werden. Wenn es also weder Bug, noch Designfehler, sondern Absicht ist, dann ist es eine verwirrende UI Steuerung. Wenn es absichtlich so ist, wie du schreibst, dann hätte ich die Funktion "run now" mit seinem blauen Dreieck und der Pausentaste gleich neben der Überschrift "Then" vermutet - oder eben diese Funktion "run Action" genannt.

Aber auch noch mal der Hinweis, dass ich über diese Design-Rule Funktion sehr happy bin und noch glücklicher über Leute wie euch beiden, die einem über den einen oder andern Fallstrick helfen, vor Dummheiten bewahren und auch mal eine nachvollziehbare Erklärung für manchmal nicht unmittelbar nachvollziehbares Verhalten von OH zur Hand haben!

Grüße
Martin

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

Re: Openhab3 und Rules: Mehrere Conditions (And/Or Verknüpfung)

Beitrag von udo1toni »

Da liegt wieder ein Missverständnis vor :)

Code auf der Seite meint den Code, mit dem die Rule as it is im System gespeichert ist. Korrekt müsste dort als Überschrift YAML Code stehen. Das ist aber nicht der ausgeführte Code, sondern die gesamte Rule mit allem was dazu gehört. Der Code, von dem ich oben spreche, ist der ausgeführte Code (also der Teil, welcher unter actions gelistet ist). Eventuell sollte der Hilfetext zum Play-Button "Run Actions" heißen, dann wäre es deutlicher...

:) und keine Sorge, solange keinen wüsten Beschimpfungen abgesondert werden, nehme ich nichts als Angriff wahr - das passiert mir gewöhnlich nur im Straßenverkehr... ;)
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Antworten