OH3 rules But only if

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Locke
Beiträge: 251
Registriert: 14. Apr 2020 11:35
Answers: 3
Wohnort: bei Hamburg

OH3 rules But only if

Beitrag von Locke »

Hi,
ich versuche mich gerade an einer OH3 Regel, ich hoffe ihr könnt mir meine Fehler aufzeigen.

ich möchte mit 2 Tür/Fensterkontakten (1x Haustür, 1x Kellerfenster) die Regel setzen:
Wenn Haustür auf und Kellerfenster ist noch auf ein Alarmsignal auf dem Echo kommt. Das mit dem Alarm habe ich hinbekommen unter VSC.
Die anderen Regeln will ich in OH3 machen.
Die Kontakte sind eingerichtet und laufen auch.
Mein Problem ist im moment das der Alarm vom Echo auch abgespielt wird wenn der Kontakt vom Kellerfenster geschlossen ist, obwohl ich
in der OH3 Regel angebe "But only if" Kellerfenster ist OPEN, dann soll die Regel "Test Offen" (VSC) laufen.

Haustür Auf Regel in OH3 (Kontakt heißt noch FensterSchlafen_FensterSchlafen, wird noch geändert)

Code: Alles auswählen

triggers:
  - id: "1"
    configuration:
      itemName: FensterSchlafen_FensterSchlafen
      state: OPEN
      previousState: CLOSED
    type: core.ItemStateChangeTrigger
conditions:
  - id: "3"
    configuration:
      itemName: TuyaTuerkontakt_Kellerfenster
      operator: =
      state: OPEN
    type: core.ItemStateCondition
actions:
  - inputs: {}
    id: "2"
    configuration:
      considerConditions: true
      ruleUIDs:
        - Alexa_Kellerfenster-1
    type: core.RunRuleAction

Haustür wird geschlossen OH3 Regel

Code: Alles auswählen

triggers:
  - id: "1"
    configuration:
      itemName: FensterSchlafen_FensterSchlafen
      state: CLOSED
      previousState: OPEN
    type: core.ItemStateChangeTrigger
conditions:
  - inputs: {}
    id: "3"
    configuration:
      itemName: FensterSchlafen_FensterSchlafen
      state: CLOSED
      operator: =
    type: core.ItemStateCondition
actions:
  - inputs: {}
    id: "2"
    configuration:
      considerConditions: true
      ruleUIDs:
        - Alexa_Kellerfenster-2
    type: core.RunRuleAction


Die Regeln die ausgeführt werden (VSC)

Code: Alles auswählen

rule "Test Offen"

    when 
        Item FensterSchlafen_FensterSchlafen changed to OPEN   
    
    then
 	         
        Echo_WERKSTATT_PlayAlarmSound.sendCommand('Play Alarm Sound')

    end




rule "Test Geschlossen"

    when 
        Item TuyaTuerkontakt_Kellerfenster changed to CLOSED   

    then
            if(TuyaTuerkontakt_Kellerfenster.state == CLOSED)

        Echo_WERKSTATT_textCommand.sendCommand('Alexa stop')        

    else    
          if(FensterSchlafen_FensterSchlafen.state == CLOSED) 
          
        Echo_WERKSTATT_textCommand.sendCommand('Alexa stop')     

end
Leider bin ich noch nicht wirklich fit was die Regeln betrifft, bin gerade am probieren es hinzubekommen und zu verstehen.

Danke euch
thnx
____Sven_________________________________________________________________________________________
System 1, Raspberry Pi 4, 4GB RAM, openHAB 2.5.10 / System 2, Raspberry Pi 4, 2GB RAM, openHAB 3.3.0 /
System 3, Raspberry Pi 4, 2GB RAM, openHAB 4.0.2 / System 4 (Testsystem), Raspberry Pi 4, 2GB RAM, openHAB 4.1.1 / System 5, (als NAS) Raspberry PI 4, 4 GB RAM, openmediavault 6.8.0-1 (Shaitan)

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

Re: OH3 rules But only if

Beitrag von udo1toni »

Da besteht noch ein Missverständnis:

Die Text Rules (Dateien im Verzeichnis /etc/openhab/rules/ mit der Endung .rules) sind eine Form, DSL Rules anzulegen (ursprünglich die einzige Möglichkeit).
Die UI Rules sind eine andere Form, Rules anzulegen. Der Vorteil besteht hier darin, dass Du die Rules im Browser konfigurieren kannst. Außerdem steht der "but only if" Teil zur Verfügung, aber das kann man ja leicht im Code nachbilden, das ist also kein Totschlagargument frü die UI Rules.

Die beiden Arten Rules sind komplett voneinander unabhängig, sie haben nichts miteinander zu tun.
Insbesondere ist es nicht möglich, Rules der einen Art mit Rules der anderen Art auszulösen (allenfalls indirekt).
Stattdessen muss der auszuführende Code direkt in der Rule angegeben werden.

Was die Text Rule betrifft, so gehe ich davon aus, dass Du in der zweiten Rule eigentlich nur den Fensterkontakt abfragen willst. Die Rule triggert, sobald TuyaTuerkontakt_Kellerfenster den Status CLOSED erreicht. Damit muss innerhalb der Rule der erste if-Block immer wahr sein (if(TuyaTuerkontakt_Kellerfenster.state == CLOSED)).

Was Du eigentlich haben willst:

Code: Alles auswählen

rule "Test Offen"
when
    Item FensterSchlafen_FensterSchlafen changed to OPEN              // Hasutür wurde geöffnet
then
    if(TuyaTuerkontakt_Kellerfenster.state == OPEN)                   // Falls Kellerfenster offen
        Echo_WERKSTATT_PlayAlarmSound.sendCommand('Play Alarm Sound') // Spiele Alarm ab
end
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Locke
Beiträge: 251
Registriert: 14. Apr 2020 11:35
Answers: 3
Wohnort: bei Hamburg

Re: OH3 rules But only if

Beitrag von Locke »

Hi udo1toni,
wenn ich Dich richtig verstehe, kann ich entweder Rules in OH3 erstellen/ausführen oder in VSC.
Kombinieren geht nicht.

Ich habe es jetzt mal mit Deiner geänderten Rule in VSC probiert und alle in OH3 deaktiviert, jetzt kommt kein Alarm vom Echo.
Habe ich sie in OH3 Aktiviert und gebe an, das die OH3 Rules, die in VSC erstellten Rules ausgeführt werden sollen funktioniert der Alarm wieder.
Allerdings geht der Alarm immer sobald die Tür geöffnet wird, unabhängig vom Kellerfenster Status.
Irgendwie glaube ich bin im moment etwas verwirrt :roll:


EDIT
ich habe es jetzt hinbekommen nur mit den OH3 Rules
thnx
____Sven_________________________________________________________________________________________
System 1, Raspberry Pi 4, 4GB RAM, openHAB 2.5.10 / System 2, Raspberry Pi 4, 2GB RAM, openHAB 3.3.0 /
System 3, Raspberry Pi 4, 2GB RAM, openHAB 4.0.2 / System 4 (Testsystem), Raspberry Pi 4, 2GB RAM, openHAB 4.1.1 / System 5, (als NAS) Raspberry PI 4, 4 GB RAM, openmediavault 6.8.0-1 (Shaitan)

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

Re: OH3 rules But only if

Beitrag von udo1toni »

Nein, Du kannst beide Rules Arten verwenden, auch gleichzeitig.
Aber beide Rules Arten haben nichts miteinander zu tun, sie sind komplett unabhängig voneinander.
Und noch wichtiger: Man kann keine Rules aus Rules heraus direkt ausführen lassen.
Man kann natürlich innerhalb einer Rule einem Item per sendCommand() einen Befehl erteilen oder per postUpdate() den Status des Items setzen.
Jede Rule, welche auf Item Itemname received command bzw. Item Itemname received update triggert, wird dann loslaufen. Wenn der Status vorher ein anderer war, wird auch jede Rule, welche auf Item Itemname changed triggert loslaufen.
Dies ist aber, wie beschrieben, nur das indirekte Auslösen einer Rule aus einer anderen Rule heraus. Um nur den Code anders zu definieren, macht man sowas nicht :) Etwas anders sieht es aus, wenn man dies nutzt, um eine bestimmte Funktion auszuführen, die man aus mehreren Rules heraus benötigt, z.B. um verschiedene Nachrichten zu verschicken. Man kann dann eine Rule als Funktion betrachten, die aus anderen Rules heraus aufgerufen wird. es spielt wiederum keine Rolle, wo die beteiligten Rules definiert sind.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Locke
Beiträge: 251
Registriert: 14. Apr 2020 11:35
Answers: 3
Wohnort: bei Hamburg

Re: OH3 rules But only if

Beitrag von Locke »

Hi udo1toni,
danke für die super Erklärung, jetzt leuchtet es mir auch ein warum erst nicht funktionierte.

Danke
thnx
____Sven_________________________________________________________________________________________
System 1, Raspberry Pi 4, 4GB RAM, openHAB 2.5.10 / System 2, Raspberry Pi 4, 2GB RAM, openHAB 3.3.0 /
System 3, Raspberry Pi 4, 2GB RAM, openHAB 4.0.2 / System 4 (Testsystem), Raspberry Pi 4, 2GB RAM, openHAB 4.1.1 / System 5, (als NAS) Raspberry PI 4, 4 GB RAM, openmediavault 6.8.0-1 (Shaitan)

Antworten