Ankündigung

Einklappen
Keine Ankündigung bisher.

Regel für Nachricht

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

    Regel für Nachricht

    Hallo zusammen,
    ich bräuchte ein paar Richtungs-Tipps bei meiner ersten eigenen Regelerstellung.
    Ich möchte das wenn in der unteren Etage ein Fenster oder eineTür geöffnet wird und keiner im WLan ist, dass ich eine Nachricht aufs Handy bekomme.
    Taste mich mal heran…….

    rule „Fenster wird geöffnet“

    when Item Window_EG_Terrasse changed to Open //Tür ändert den Zustand
    then
    if ((fbMAOnline == Off) && (fbMACOnline==Off)) //die beiden sind nicht im Wlan

    then
    sendBroadcastNotification („Die Terrassentür wurde geöffnet) //Nachricht senden

    end

    …..kann man die Gruppe Fenster/Türen auch gesammt verwenden über z.B. var Windows?
    Da ich mich immer weiter in die Rules reinwagen will , welche Importe am Anfang sind bei OpenHab2 noch erforderlich?

    Danke für Eure Mühe

    LG Frank

    #2
    Imports: In openHAB2 sind nur für etwas speziellere Anwendungen Imports nötig, die Standardfunktionen (openHAB Actions und Methoden und z.B. Joda Time) sind direkt verfügbar.

    Deine Rule sieht auch schon gar nicht schlecht aus, aber...

    Wenn es um mehrere Fenster/Türkontakte geht, bietet es sich an, diese in einer Gruppe zusammenzufassen. Die Gruppe muss dann mit einem OR definiert werden:
    Code:
    Group:Contact:OR(OPEN,CLOSED) gKontake "geöffnet [%d]"
    Jedes Contact Item wird dann dieser Gruppe zugeordnet. Die Gruppe wechselt auf OPEN, sobald einer der Kontakte auf OPEN wechselt.
    Die zugehörige Rule wäre dann z.B.
    Code:
    rule "Fenster oder Tür geöffnet"
    when
       Item gKontakte changed to OPEN
    then
        if (fbMAOnline.state == OFF && fbMACOnline.state == OFF)
            sendBroadcastNotification ("Ein Kontakt wurde ausgelöst!")
    end
    Der erste Punkt ist, dass openHAB Case Sensitive ist, alle Schlüsselworte, Variablen oder auch Itemnamen müssen exakt so geschrieben werden, wie das System sie irgendwo definiert hat (beim Status kannst Du Dich z.B. am events.log orientieren).

    Der zweite Punkt ist, dass man das .state nicht weglassen darf. Der Itemname steht für das Item selbst, nicht für dessen Status.

    In der Form gibt es natürlich auch einen Nachteil, nämlich, dass man nicht erkennen kann, welcher Kontakt ausgelöst hat, oder ob es gar mehrere Kontakte sind.
    Beides ist aber recht leicht lösbar, indem man die Gruppe abfragt und die entsprechenden Namen ausgibt, bzw. die Größe der gefilterten Gruppe. Es gibt dazu etliche Beispiele hier und vor allem im englischen Forum.

    Man muss noch im Hinterkopf behalten, dass die Gruppe natürlich nur beim ersten geöffneten Kontakt triggert, denn solange ein Kontakt offen ist, ändert sich der Status der Gruppe nicht mehr von OPEN weg. Man kann hier mit received update arbeiten, was allerdings erst in den jüngsten Nightly Versionen gut funktioniert, die vorherigen Versionen triggern eine Rule dann nicht einmal, sondern immer mit der Anzahl der Gruppenmitglieder. Wenn Du also 10 Kontakte in der Gruppe hast, wird die Rule jedesmal, wenn ein Kontakt upgedatet wird, zehn mal ausgeführt. Das kann man nur verhindern, indem man jeden Trigger einzeln aufführt.

    Kommentar


      #3
      Moin moin....
      schon mal ein kurzes Danke für die Mühe von unterwegs und die tolle Erläuterung.
      Werde es heute Abend mal so umsetzen.
      Zuletzt geändert von Fahren; 20.03.2018, 09:43. Grund: Wortkorrektur nicht bemerkt :-)

      Kommentar


        #4
        Immer wieder toll, was man hier so lernt.
        Mal eine Frage zu der Gruppe: Kann ich über eine Rule die Anzahl der geöffneten Fenster abfragen?
        Wenn ich das oben richtig gelesen habe, dann steht doch in Klammern hinter der Gruppe eine Zahl (Wenn alles geschlossen ist eine 0, ansonsten die Anzahl der geöffneten Fenster)
        Kann man nicht auf die Zahl triggern?

        Kommentar


          #5
          Im englischen Forum gibt es einige Abhandlungen über die Gruppen für geöffnete/gekippte/geschlossene Fenster. Einer der informativsten Artikel finde ich diesen hier: https://community.openhab.org/t/upda...temap/12698/18


          Kommentar


            #6
            Zitat von hoggle1969 Beitrag anzeigen
            Kann man nicht auf die Zahl triggern?
            Nein, das geht leider nicht. Der Grund liegt hier darin, dass der Status des Group Items immer noch dem Typ der gruppierten Items entspricht, also OFF/ON oder OPEN/CLOSED. Strenggenommen ist die Anzeige der Menge schon zu viel des Guten, auf der anderen Seite ist es ja genau das, was man unkompliziert haben möchte. openHAB ist also schlau genug, im Label auf die Anzahl zu schauen, während in den Rules immer noch stur der echte Status betrachtet wird. Dafür kann man aber innerhalb einer Rule leicht beliebige Zahlen ausgeben, also nicht nur die konkrete, z.B. wieviele Lichter haben den Status ON:
            Code:
            gMyGroup.members.filter[ i|i.state == OFF ].size // Anzahl ausgeschalteter Lichter
            gMyGroup.members.filter[ i|i.state == ON ].size // Anzahl eingeschalteter Lichter
            gMyGroup.members.filter[ i|i.state == NULL ].size // Anzahl nichtinitialisierter Lichter
            Die Formulierung ist also etwas komplizierter, aber dafür wesentlich mächtiger, denn es geht jedesmal um die selbe Gruppe!
            Eine so gefilterte Gruppe kann man natürlich auch durchlaufen und für jedes Item einen Befehl oder eine Befehlsabfolge ausgeben. Auch kann man eine gefilterte Gruppe wiederum filtern (z.B. im ersten Filter nur die Elemente aussortieren, die ungültig sind, damit im zweiten Filter keine Fehlermeldung kommt).

            Kommentar

            Lädt...
            X