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.
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}
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.