Präsenz

An- und Abwesenheiterkennung mit HomeMatic und ioBroker

Die HomeMatic Zentrale bringt von sich aus schon eine Variable zur An- und Abwesenheit mit. Diese Variable kannst du z.B. setzen lassen, wenn Du den Taster auf einer Schlüsselfernbedienung betätigst oder das Schloss KeyMatic den Zustand verschlossen einnimmt.

Variable Anwesenheit
Variable Anwesenheit

Auf die Variable “Anwesenheit” in ioBroker reagieren

Damit nun Dinge in ioBroker passieren, sobald die Variable Anwesenheit geändert wird, legst Du ein Programm in JavaScript an, welches auf die Änderungen reagiert.

Zuerst suchst Du dir den passenden Datenpunkt der Variable in ioBroker.
Diesen findest Du unter unter dem Namen: ${sysVarPresence}

Variable Anwesenheit (${sysVarPresence}) in ioBroker
Variable Anwesenheit (${sysVarPresence}) in ioBroker

Mit dem nachfolgenden Skript abonnierst Du den Datenpunkt und kannst auf die Änderungen von HomeMatic in ioBroker reagieren:

//An- und Abwesenheit der HomeMatic
 var status = "hm-rega.0.950";
 
 on({id: status, change: "any"}, function (obj) {
     if(getState("hm-rega.0.950").val==false){
         log("Abwesenheit erkannt. Schalte alle Geräte aus!");
     }
 });

Skript erweitern und Schaltbefehle hinzufügen

Damit nun auch Schaltbefehle in dem Skript ausgeführt werden, muss das Skript um die jeweiligen Datenpunkte erweitert werden. Ich habe hier mal das Beispiel genommen, das mein Onkyo Receiver (verbunden über den Onkyo-Adapter) augeschaltet wird, sobald “Abwesend” auf nicht wahr steht.

//An- und Abwesenheit der HomeMatic
 var status = "hm-rega.0.950";
 
 //Receiver
 var receiver = "onkyo.0.Zone1.Power";
 on({id: status, change: "any"}, function (obj) {
     //Geräte ausschalten, wenn abwesend
     if(getState("hm-rega.0.950").val==false){
         log("Abwesenheit erkannt. Schalte alle Geräte aus!");
         setState(receiver,false);
     }
 });

Das Skript kannst Du jetzt natürlich um ganze viele Datenpunkte erweitern. Z.B. kannst Du nun alle Shelly Aktoren mit einfügen, die dann ausgeschaltet werden.

Damit das Skript nun auf Anwesenheit reagiert, musst Du noch einen neuen Skript-Block hinzugefügen.

//An- und Abwesenheit der HomeMatic
 var status = "hm-rega.0.950";
 
 on({id: status, change: "any"}, function (obj) {
     //Geräte ausschalten, wenn abwesend
     if(getState("hm-rega.0.950").val==false){
         log("Abwesenheit erkannt. Schalte alle Geräte aus!");
     }
     //Geräte einschalten, wenn anwesend
     if(getState("hm-rega.0.950").val==true){
         log("Anwesenheit erkannt. Schalte alle Geräte ein!");
     }
 });

Jetzt ist das Skript bereit, um die beiden Zustände Anwesend und Abwesend zu erkennen und darauf zu reagieren.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.