Ankündigung

Einklappen
Keine Ankündigung bisher.

Wie Rules kombinieren?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Wie Rules kombinieren?

    Hallo,

    ich habe für meine Fensterkontakte je Fenster eine Rule (hier ein Beispiel fürs Dachfenster)
    ---
    rule "Veluxfenster Waschraum offen"
    Item Window_FF_Utilityraum changed to OPEN
    then
    pushover("Veluxfenster Waschraum offen!")
    end
    ---

    Diese Rule funktioniert. Es wir jetzt nur beim Öffnen eine Info gesendet.

    Jetzt habe ich mir noch eine weitere Rule für Regen eingerichtet, die ebenfalls funktioniert.
    ---
    rule "Achtung Regen"
    when
    Item Regen changed to ON
    then
    pushover("Achtung Regen!")
    end
    ----

    Ich möchte gern eine Meldung erhalten, wenn bei Regen ein Dachfenster offen ist. Obwohl das "Fenster" schon lange auf ist....

    Wie kann ich diese beiden Regeln kombinieren? Funktioniert das mit "and"? Wie kann man den Status OPEN abfragen?

    ---
    rule "Achtung Regen! Dachfenster schliessen!"
    when
    Item Windows_FF_Utilityroom changed to OPEN
    and
    Item Regen changed to ON
    then
    pushover ("Achtung Regen! Dachfenster schliessen!")
    end
    ----

    Danke
    Marcus

    #2
    Nein, der When-Teil der Rule ist der Trigger für die Rule. Dein Trigger ist der Regen. Danach musst Du überprüfen, ob ein Fenster offen ist, also:
    Code:
    rule "Achtung Regen"
    when
        Item Regen changed to ON
    then
        if (Window_FF_Utilityraum.state == OPEN)
            pushover("Achtung, Regen, Veluxfenster Waschraum offen!")
    end
    Wenn Du viele Fenster hast, bietet es sich an, das mit einer Gruppe zu erschlagen. Also im items-File eine Gruppe für alle betroffenen Fenster anlegen und bei den Fenstern mit eintragen:
    Code:
    Group Contact:OR(OPEN,CLOSED) Dachfenster "Offene Dachfenster [%d]"
    Contact Window_FF_Utilityraum "Waschraum" (Dachfenster) {...}
    ...
    und dann eine Rule für alle Fenster:
    Code:
    rule "Regenmeldung"
    when
        Item Regen changed to ON
    then
        if (Dachfenster?.members.filter(s|s.state==OPEN).count > 0) {
            pushover ("Es regnet! {} Fenster offen!",(Dachfenster.state as DecimalType)) // z.B. "Es regnet! 5 Fenster offen!"
            Dachfenster?.members.filter(s|s.state==OPEN).forEach(f|pushover("Fenster "+ f.name +" offen!")) // z.B. "Fenster Window_FF_Utilityraum offen!"
        }
    end
    Dies allerdings so aus dem Kopf, da kann durchaus noch der eine oder andere Fehler drin sein aber ich denke, Du erkennst die Eleganz. Natürlich sollten die Fenster-Items dann günstig benannt sein, da der Name des Items im pushover übergeben wird. Wenn Du den Designer verwendest, kannst Du mit <strg>+<Leertaste> die möglichen Codeergänzungen anzeigen lassen, z.B. um zu schauen, was der members-filter alles anbietet.

    Kommentar

    Lädt...
    X