Seite 2 von 2

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

Verfasst: 9. Jun 2021 23:15
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.

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

Verfasst: 9. Jun 2021 23:57
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.

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

Verfasst: 10. Jun 2021 08:38
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

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

Verfasst: 10. Jun 2021 10:13
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:

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

Verfasst: 10. Jun 2021 10:41
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.

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

Verfasst: 10. Jun 2021 14:32
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.

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

Verfasst: 10. Jun 2021 14:51
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

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

Verfasst: 10. Jun 2021 20:25
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... ;)