Ankündigung

Einklappen
Keine Ankündigung bisher.

Und verknüfung

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

    Und verknüfung

    HAllo ich würde gerne eine Und verknüfung basteln aber ich bin offensichtlich zu doof!!ich habe zwei items die ich dazu verwenden will ( später werden es andere aber zum testen wählte ich diese!!
    Funktionbeschreibung Essen licht muss ein sein(Item EG_Essen_Licht) und der Stahler Küche (EG_Kueche_Strahler)soll eingeschaltet werden dann soll ein telegramm abgesendet werden.. hiermeine bisherrige lösung die aber leider nur bedingt funktioniert...testule"und2"

    when

    Item EG_Kueche_Strahler changed from OFF to ON or

    Item EG_Essen_Licht changed

    then EG_Kueche_Strahler

    sendTelegram("bot1", "Einbruch ")

    end
    leider setzt diese rule immer eine meldung ab hat jemad eine Idee?

    #2
    Da liegt ein Denkfehler vor Du befindest Dich aber in guter Gesellschaft.
    Das Schlüsselwort when ist bewusst ein anderes als if. Es handelt sich hier nicht um Bedingungen, sondern um Trigger, das ist etwas anderes.

    Im Triggerbereich ist es auch nicht sinnvoll, eine Und-Verknüpfung zu bilden, denn das würde ja bedeuten, dass zwei Trigger exakt gleichzeitig auftreten müssten, also etwas, was 1. nur zufällig auftreten kann und 2. etwas anderes, als was Du gerne haben möchtest.

    Was Du willst, ist eine Rule, die verschieden Trigger hat, aber nur dann auslöst, wenn alle Items einen bestimmten Status haben. Das sieht so aus:
    Code:
    rule "Testrule und"
    when
        Item EG_Kueche_Strahler changed to ON or
        Item Essen_Licht changed to ON
    then
        if (EG_Kueche_Strahler.state == ON && Essen_Licht.state == ON) {
            sendTelegram ("bot1","Einbruch")
        }
    end
    Die Rule wird also jedesmal getriggert, wenn eine der beiden Leuchten eingeschaltet wird. Die Rule prüft dann, ob alle Items den Zustand ON haben. Nur in diesem Fall wird der Codeblock innerhalb der {} ausgeführt.

    In dem Zusammenhang möchte ich aber gleich darauf hinweisen, vor allem, wenn es mehr Items gibt, die zu brücksichtigen sind, bietet es sich an, alle Items in einer Gruppe zusammenzufassen.

    Wobei ich mich jetzt mal weit aus dem Fenster lehne und vermute, dass Du eine Alarmanlage basteln möchtest. Das heißt, Du hast auf der einen Seite ein Item, welches ON sein muss (der Scharf-Schalter), und wenn eines der anderen Items (die Alarmkontakte) ON ist, soll der Alarm los gehen. es gibt dazu eine große Menge fertiger Lösungen (vor allem natürlich im englischen Forum), aber nur so als Dankanstoß:
    Alarm.items:
    Code:
    Group:Contact:OR(OPEN,CLOSED) Alarmgruppe "Anzahl Alarmkontakte [%d]"
    Switch AlarmMode "Alarmanlage [%s]"
    Contact Alarmkontakt_1 "Alarmkontakt 1 [%s]" (Alarmgruppe)
    Contact Alarmkontakt_2 "Alarmkontakt 2 [%s]" (Alarmgruppe)
    Contact Alarmkontakt_3 "Alarmkontakt 3 [%s]" (Alarmgruppe)
    ...
    Code:
    rule "Alarmmeldung"
    when
        Item Alarmkontakt_1 changed to ON or
        Item Alarmkontakt_2 changed to ON or
        Item Alarmkontakt_3 changed to ON
    then
        if (AlarmMode.state == ON) {
            var String MyContacts = ""
            AlarmGruppe.filter(g|g.state == CLOSED).forEach[f|
                MyContacts = MyContacts + f.name + ", "
            ]
            sendTelegramm ("bot1","Einbruch: Folgende Kontakte wurden ausgeloest: " + MyContacts)
        }
    end
    Die Rule wird für jedes Item getrennt getriggert, weil es - zumindest im stable Zweig - noch einen Bug gibt, die Rule wird beim update Trigger für jedes Gruppenmitglied getriggert, auch wenn nur ein Gruppenmitglied ein Update oder ein Change auslöst. changed als Trigger für die Gruppe kommt nicht in Frage, weil das OR den state auf OPEN festlegt, sobald ein Gruppenmitglied OPEN ist.
    Sobald die Rule ausgelöst wurde, prüft openHAB, ob die Alarmanlage scharf ist. Wenn das der Fall ist, wird die Gruppe der Alarmkontakte gefiltert, so dass nur die offenen Kontakte übrig bleiben. Diese Liste wird anschließend durchlaufen und eine Zeichenkette mit den Namen dieser Kontakte gebildet, welche zum Abschluss als Nachricht verschickt wird.

    Kommentar


      #3
      JA du hast richtig vermutet ich will eine alarmanlag basteln und dazu die vorhandenen Präsenzmelder verweden...die Items präsenz habe ich schon und drum hab ich mir so gedacht nehm ich doch einfach die ,die ich ehh schon habe....
      Ich bin noch relativ neu und tue mir mit dem code noch ein wenig schwer vor allem wenn es um die verschachtelung von codes geht.
      Ich hoffe das ich hier nicht zu sehr den Ablauf mit meinen einfachen fragen störe!

      Kommentar


        #4
        Nein, gar nicht. Sinn des Forums ist es ja, Fragen zu beantworten, und dabei ist es doch gleichgültig, wer die Fragen stellt, und wie einfach zu beantworten sie sind Der Hinweis auf vorhandenen Code war eher so gemeint, dass Du vielleicht keine Lust hast, selbst komplett neu zu entwickeln, was schon jemand anderes entwickelt hat.

        Kommentar

        Lädt...
        X