Zigbee Bewegungsmelder

Allgemeine Fragen rund um die "Smart Home" Hardware/Komponenten

Moderatoren: seppy, udo1toni

Antworten
Raspberry Kai
Beiträge: 27
Registriert: 24. Jul 2022 12:31

Zigbee Bewegungsmelder

Beitrag von Raspberry Kai »

Hallo zusammen!

Ich hänge als Anfänger etwas bei den Regeln in den Seilen.

Das Ziel:
Sobald einer meiner 4 Bewegungsmelder "motion" meldet soll ein Aktor eingeschaltet werden
Wird keine Bewegung mehr gemeldet soll der Aktor wieder ausgeschaltet werden.

Ich habe zum testen der eine Deckenlampe eingesetzt.

Ich habe die Regel wie folgt aufgebaut:
1) Übersicht:
https://i.imgur.com/8IFXNHq.png

2) When:
https://i.imgur.com/rQI0ozS.png

3) Then:
https://i.imgur.com/YH2PGK6.png

Anmerkung:
"motion" wird vom Bewegungsmelder als "ON" und "OFF" korrekt ausgeführt.
(Ich lasse mir den Zustand des Bewegungsmelders nebenbei zur Kontrolle anzeigen)
und ist auch der einzige "Wert" am Bewegungsmelder der sich bei Bewegung verändert (OFF / OFF).

Komischerweise funktioniert die Regel mit einem Türkontakt einwandfrei...

Code: Alles auswählen

configuration: {}
triggers:
  - id: "1"
    configuration:
      itemName: LidlBWM1LIDLSilvercrest_Motion
    type: core.ItemStateUpdateTrigger
conditions: []
actions:
  - inputs: {}
    id: "2"
    configuration:
      blockSource: <xml xmlns="https://developers.google.com/blockly/xml"><block
        type="controls_if" id="d6w$[u5N8CBtC@Y6VAtN" x="83" y="79"><mutation
        elseif="1"></mutation><value name="IF0"><block type="logic_compare"
        id="a_6o-m(SOd%|5vJ~6_fK"><field name="OP">EQ</field><value
        name="A"><block type="oh_getitem_state" id="Rk;p=9`6D^VxY5-TEEPd"><value
        name="itemName"><shadow type="oh_item" id="w|vt#D3Q6H8M47he@5np"><field
        name="itemName">LidlBWM1LIDLSilvercrest</field></shadow></value></block></value><value
        name="B"><block type="text" id="(zB-HFX[:k%oinDR][ps"><field
        name="TEXT">ON</field></block></value></block></value><statement
        name="DO0"><block type="oh_event" id="=C#t9~nh;hVt1`_5Hshb"><field
        name="eventType">sendCommand</field><value name="value"><shadow
        type="text" id="m+0X=mFAD#yIp|=x0Ft4"><field
        name="TEXT">ON</field></shadow></value><value name="itemName"><shadow
        type="oh_item" id="69v)w?EkR63Y6fC0rUW$"><field
        name="itemName">LichtFlur_Betrieb</field></shadow></value></block></statement><value
        name="IF1"><block type="logic_compare" id="BB_%7sP~GDl4BEHn0rlG"><field
        name="OP">EQ</field><value name="A"><block type="oh_getitem_state"
        id="DQA_#@eh3-3Ob^8)!i!Y"><value name="itemName"><shadow type="oh_item"
        id="_4zbvIhp!?{ty1}hqWrC"><field
        name="itemName">LidlBWM1LIDLSilvercrest_Motion</field></shadow></value></block></value><value
        name="B"><block type="text" id="VZ(b-[s}}qjAE49gORhI"><field
        name="TEXT">OFF</field></block></value></block></value><statement
        name="DO1"><block type="oh_event" id="$x$Da$3w$y2~HQ$9?-l;"><field
        name="eventType">sendCommand</field><value name="value"><shadow
        type="text" id="$abbLjVcDw@l^IDjrd7s"><field
        name="TEXT">OFF</field></shadow></value><value name="itemName"><shadow
        type="oh_item" id="y:Wc.xI+-]!kyyx(j6v4"><field
        name="itemName">LichtFlur_Betrieb</field></shadow></value></block></statement></block></xml>
      type: application/javascript
      script: >
        if (itemRegistry.getItem('LidlBWM1LIDLSilvercrest').getState() == 'ON')
        {
          events.sendCommand('LichtFlur_Betrieb', 'ON');
        } else if (itemRegistry.getItem('LidlBWM1LIDLSilvercrest_Motion').getState() == 'OFF') {
          events.sendCommand('LichtFlur_Betrieb', 'OFF');
        }
    type: script.ScriptAction
Rechtschreibfehler sind gewollt und dienen zur Konzentrationsförderung bei dem Leser :D

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

Re: Zigbee Bewegungsmelder

Beitrag von udo1toni »

Frage 1: meldet der Motionsensor tatsächlich aktiv OFF?
Frage 2: Warum dann überhaupt als Rule?
Du kannst einfach die beiden Channel mit dem gleichen Item verkoppeln. Wichtig dabei, für den Aktor als Profile "follow" setzen. Nun wird der Status des BWM (ON oder OFF) vom Aktor als Befehl interpretiert und das Licht wird direkt geschaltet.

Falls es unbedingt per Rule sein soll:
Der bessere Trigger ist hier changed.
Warum die Rule so nicht funktioniert (unabhängig vom Trigger) kann ich so nicht sagen. Evtl. verrät das Log etwas dazu.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Raspberry Kai
Beiträge: 27
Registriert: 24. Jul 2022 12:31

Re: Zigbee Bewegungsmelder

Beitrag von Raspberry Kai »

Hallo udo1toni!

Danke für Deine schnelle Antwort.

Also Frage 1: Ja über das Objekt "motion" wird "ON" für Bewegung und "OFF" für den Ruhezustand ausgeben.
Ich habe dies per Developer Sidebar sehen können.

Frage 2: Eine Regel, weil ich 5 Bewegungsmelder und 5 Fensterkontakte einsetzen möchte und
diese dann bei Bewegung einen Aktor auslösen sollen.

Die grobe Idee für eine Regel war folgende:

Wenn Melder 1 oder Melder 2 oder Melder... oder Fensterkontakt 1 oder Fensterkontakt 2 oder...

Aber nur wenn das ganze per Taster / Schalter oder ähnlichem aktiviert wurde.
Stichwort "Überwachung aktiv / inaktiv"

Was ich nehme weiß ich noch nicht genau (Alexa - Befehl, Abwesenheit, Kodeschloss,...)

Wenn es einen einfacheren Weg gibt: Bitte her damit.
Am besten direkt mit Yaml...
Bin wie gesagt noch nicht wirklich fit mit dem System

BTW: Ich merke gerade: Es kann zur Sucht werden das ganze...
Rechtschreibfehler sind gewollt und dienen zur Konzentrationsförderung bei dem Leser :D

Raspberry Kai
Beiträge: 27
Registriert: 24. Jul 2022 12:31

Re: Zigbee Bewegungsmelder

Beitrag von Raspberry Kai »

Nachtrag:
Ich habe mal alle verfügbaren Objekte des Bewegungsmelder auf eine Testseite gepackt.
Wie man sieht verändert sich nur das Objekt "Motion".
Bild

Bild
Rechtschreibfehler sind gewollt und dienen zur Konzentrationsförderung bei dem Leser :D

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

Re: Zigbee Bewegungsmelder

Beitrag von udo1toni »

Ja, der Suchtfaktor ist definitiv vorhanden.

Zu Deiner Aufgabe: Tatsächlich ist das auch sehr einfach. Du brauchst dazu:
  1. Ein Item für die Aktivierung
  2. Ein Group Item für die Bewegungsmelder
  3. Wahlweise ein weiteres Group Item für die Kontakte, oder aber Du packst die Kontakte mit in die erste Gruppe
  4. Pro Melder/Kontakt ein Item, welches der Gruppe zugeordnet wird.
  5. Das zu schaltende Item.
Nun brauchst Du eine Rule. Du kannst die Rule auf verschiedene Arten erstellen, ich schreibe sie hier aber als DSL Rule hin:

Code: Alles auswählen

rule "Alarm"
when
    Member of gMelder changed or
    Member of gFenster changed
then
    var mySwitch = OFF                                           // lokale Variable definieren, welche OnOffType halten kann
    if(LichtFlur_Betrieb.state != ON && Alarmswitch.state != ON) // Falls Lixht aus und Alarmschalter aus
        return;                                                  // Rule beenden
    if(Alarmswitch.state == ON)                                  // Falls Alarmschalter ON
        if(gMelder.members.filter[i|i.state == ON].size > 0 
         || gFenster.members.filter[i|i.state == OPEN].size > 0) // Falls mindestens eines der Items ON oder OPEN
            mySwitch = ON                                        // neuen Sollstatus auf ON ändern
    if(LichtFlur_Betrieb.state != mySwitch)                      // Falls Sollstatus von Iststatus abweicht
        LichtFlur_Betrieb.sendCommand(mySwitch.toString)         // neuen Status als Befehl senden
end
Die eine if-Zeile habe ich hier der besseren Lesbarkeit halber umgebrochen. Das ist auch zulässig, aber evtl. optisch suboptimal.
Der grundsätzliche Ablauf: Sobald sich der Status eines der Items, welche in der Gruppe sind ändert, löst die Rule aus.
Die Variable wird mit OFF vorbelegt
Anschließend wird geprüft, ob überhaupt Grund besteht, den Alarm auszulösen (Schalter nicht ON und Licht nicht ON).
Sind beide nicht ON, so kan die Rule direkt abgebrochen werden.
Falls das Licht ON ist, soll die Rule das Licht aber abschalten (falls das anders gewollt ist kann die Verknüpfung natürlich entsprechend vereinfacht werden).
Als nächstes prüft die Rule nochmals, ob der Alarmschalter ON ist. Ist das der Fall, so werden die beiden Gruppen auf den Status ON bzw. OPEN überprüft. Gibt es mindestens einen Member, dessen Status ON bzw. OPEN ist, wird der neue Status für das Licht auf ON gesetzt.
Abschließend prüft die Rule, ob der aktuelle Status vom Soll abweicht und ändert gegebenenfalls den Zustand.

Mit einer simplen Verknüpfung geht das natürlich nicht, wohl aber mit Blockly oder auch einer der anderen verfügbaren Sprachen.
Auch die DSL kann über die UI genutzt werden (Wichtig: DSL auswählen), der when-Teil entspricht dem when-Teil der UI, der then-Teil entspricht dem Code. Man lässt also den rule-Rahmen weg und trägt nur den Code zwischen then und end in der UI ein.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Raspberry Kai
Beiträge: 27
Registriert: 24. Jul 2022 12:31

Re: Zigbee Bewegungsmelder

Beitrag von Raspberry Kai »

Vielen Danke!
Ich werde Deine Text nachher mal durcharbeiten. Mir raucht gerade der Kopf.

Nachdem ich das Objekt "Power" am Bewegungsmelder auf "OFF" gestellt habe funktioniert auch meine Regel...
Ich habe keinen blassen Schimmer was das Objekt "Power" zu sagen hat.
Alle anderen Objekte des Bewegungsmelder sind selbsterklärend.

Dient es eventuell zur Übersteuerung der Meldung???
Ich kenne das aus der KNX. Dort nennt es sich eben "Übersteuerern" je nach Hersteller.
Rechtschreibfehler sind gewollt und dienen zur Konzentrationsförderung bei dem Leser :D

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

Re: Zigbee Bewegungsmelder

Beitrag von udo1toni »

Sind Lampe und Bewegungsmelder eins? Das würde dann die Power Funktion erklären. Aber mit Zigbee selbst kenne ich mich nicht aus.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

BOP
Beiträge: 197
Registriert: 23. Sep 2018 19:43
Answers: 1

Re: Zigbee Bewegungsmelder

Beitrag von BOP »

Je nachdem, was du damit schalten möchtest, kann es sinnvoll sein, noch eine Abschaltverzögerung einzubauen.
So habe ich das inzwischen bei meiner Unterschrankbeleuchtung in der Küche gelöst. Der Zigbee Bewegungsmelder meldet ebenfalls ON und OFF. Ich habe aber festgestellt, dass er auch schon mal OFF schaltet, wenn ich mich noch im Bereich bewege.

Mit einer 20 sekündigen Abschaltverzögerung hat er genügend Zeit, wieder auf ON zu schalten und das Licht bleibt dann durchgängig an. Gut, ganz selten stehe ich dann kurz trotzdem im Dunkeln, kommt aber selten vor. Ggf. müsste ich die Zeit noch etwas erhöhen.

Antworten