Homematic Anwesenheiterkennung per Bluetooth
Im Artikel Homematic Anwesenheitserkennung per Smartphone habe ich bereits eine gut funktionierende Lösung zur Anwesenheitserkennung vorgestellt.
Warum jetzt auch noch eine Homematic Bluetooth Anwesenheitserkennung?
Zum einen ist die Lösung an Wlan-fähige Geräte gebunden und zum anderen wird es immer mehr Mode, ein Smartphone mit Standby-Wlan auf den Markt zu bringen.
Mit dieser Anleitung möchte ich Ihnen zeigen, wie man die Homematic Anwesenheitserkennung mit Bluetooth erweitert. So können die Smartphones zusätzlich auf Bluetooth-Erreichbarkeit und viele weitere Geräte Wie Fitness-Tracker, G-Tags, usw. auf Anwesenheit geprüft werden.
Voraussetzung: Lauffähige ioBroker Installation (auf Raspberry Pi)
-> ioBroker auf Raspberry Pi installieren
Los gehts!
Benötigte Linux-Pakete installieren
Mit Hilfe des Programms Putty auf dem Raspberry Pi per SSH einloggen

Unter Host/IP den Hostnamen oder die IP-Adresse eurer ioBroker-Insallation eintragen
Port 22 / SSH
Open
sudo apt-get update sudo apt-get install bluetooth bluez libbluetooth-dev libudev-dev fping arp-scan systemctl start bluetooth
Damit holt sich der APT-Paketmanager die neuesten Source-Listen und installiert anschließend die benötigten Pakete.
Hat alles erfolgreich geklappt, kann die Console mit dem Befehl exit geschlossen werden.
ioBroker Adapter
- Die iobroker.Admin Seite (http://deine-iobroker-ip:8081) aufrufen
- ioBroker Radar Adapter hinzufügen
- ioBroker Radar-Adapter konfigurieren
- ioBroker Javascript Adapter hinzufügen
mit + wird der Adapter hinzugefügt. - ioBroker Javascript Adapter konfigurieren
Sobald der Adapter installiert ist, taucht er unter Instanzen auf.
Über dasIcon gelangt man zur Konfiguration.
Ist alles erledigt, kann dieser Adapter nun ebenfalls gestartet werden.
mit + wird der Adapter hinzugefügt. Bitte hierbei achten, dass mindestens Version 1.1.3 installiert wird.
Falls eine niedrigere Version installiert wurde, so bitte über Github auf die neueste Version updaten.
Dazu auf das Icon klicken, Radar auswählen und Installieren klicken.
Sobald der Adapter installiert ist, taucht er unter Instanzen auf.
Über das Icon gelangt man zur Konfiguration.
Über + werden jetzt neue Geräte hinzugefügt, die auf IP-Adresse und Bluetooth Mac-Adresse geprüft werden.
Wie man die IP-Adresse für das Smartphone fest vergibt, das habe ich bereits im Artikel Homematic Anwesenheitserkennung per Smartphone beschrieben.
Die Bluetooth-Adresse bekommt man bei Android-Geräten unter Einstellungen – Geräteinformationen – Status leicht heraus. Man kann auch die Geräte erstmal weglassen und den Adapter starten. Dann werden unter den ioBroker-Zuständen bei dem Wert radar.0.AllUnknownBTs alle unbekannten Bluetooth-Adressen aufgelistet.
Bei den Einstellungen „Verzögerung in Sekunden zwischen Abfragen“ und „Wie oft muss ein Device nicht verfügbar sein bevor es als ’nicht da‘ markiert wird“ muss man ein wenig experimentieren, falls es zu einem Fehlstatus kommt. Bei diesem Beispiel haben die Werte 30 / 6 sehr gut beim Samsung Galaxy S7 und dem Iphone 6 funktioniert. Für G-Tags lieber 60 / 10 benutzen, da diese seltener ein Bluetooth-Signal aussenden. Möchte man für verschiedene Geräte auch verschiedene Parameter nutzen, so können auch mehrere Adapter hinzugefügt werden.
Nun wird der Radar-Adapter noch aktiviert
ioBroker Script
Dies geschieht über das Icon

Ist der Reiter Script jetzt zu sehen, kann der Bearbeitungsmodus mit erneutem Klick auf das Symbol beendet werden.

Wechseln wir nun zum Reiter Scripte.
Anschließend wird per Klick auf das Icon

Diesem geben wir einen sinnvollen Namen (z.B. Anwesenheitserkennung) und fügen folgenden Code ein:
// ioBroker-Script für Homematic Bluetooth Anwesenheitserkennung by Homematic-Guru.de // https://homematic-guru.de/homematic-bluetooth-anwesenheitserkennung var tuerkontakt = "hm-rpc.0.NEQ0123456.1.STATE"; /*Hier die ID des Türkontakts eintragen*/ var anwesenheit = "hm-rega.0.12345"; /*Hier die ID der Anwesenheitsvariable eintragen*/ var min = 15; /*Hier die Zeitspanne der aktiven Abwesenheitserkennung nach Türschließung*/ var inrange = false; /*Falls kein Türkontakt vorhanden auf true setzen*/ on(tuerkontakt, function(obj) { if (obj.newState.val === false) { inrange = true; setTimeout(function() { inrange = false; }, min * 60 * 1000); } }); on("radar.0.countHere", function(obj) { if (obj.newState.val === 0) { if (inrange === true) { setState(anwesenheit,false); } else { log("Radar CountHere 0 nach Zeit abgelaufen", "warn"); } } if (obj.newState.val > 0) { setState(anwesenheit,true); } }); // Script Ende
Jetzt werden noch die Parameter anwesenheit und tuerkontakt und ggf. min angepasst.
anwesenheit steht für die ID der Homematic-Variable Anwesenheit
tuerkontakt steht für die ID des Homematic Türkontakts.
min steht für die Zeitspanne, in der das Script greift, nachdem die Türe geschlossen wurde.
Somit wird ein Fehlverhalten bei z.B. Akku vom Smartphone leer unterbunden. Ist kein Türkontakt vorhanden, so kann der Parameter inrange auf true gesetzt werden. Die Logik überspringt dann die Abfrage.
Die dazu jeweiligen IDs findet man im ioBroker unter Objekte.
Ist alles soweit erledigt, kann das Script gespeichert und gestartet werden.
Fertig!
Verwendete Hardware
-
Homematic Zentrale CCU3 inkl. AIO CREATOR NEO Lizenz
€179,95
Enthält 19% Mwst.zzgl. VersandIn den Warenkorb -
Raspberry Pi 3 Kit
Jetzt Preis prüfen! -
Homematic IP Smart Home Fenster- und Türkontakt HMIP-SWDO-2, optisch
€34,95
Enthält 19% Mwst.zzgl. VersandIn den Warenkorb
Funktionsweise Homematic Bluetooth Anwesenheitserkennung
- Der Radar-Adapter prüft alle X Sekunden ob die Geräte (Smartphone, G-TAG, Fitness-Tracker) per IP oder Bluetooth erreichbar sind und füllt Objekt-Variablen mit dessen Zustand.
Die Objekt-IDs beginnen mit radar.0.*
Wichtig ist hierbei die radar.0.countHere. Diese Variable zählt die anwesenden Geräte/Personen. - Das von mir erstellte Script prüft die Variable radar.0.countHere auf Änderung und setzt die Homematic Anwesenheitsvariable im Fall größer 0 immer sofort auf Anwesend.
Im Fall 0 wird zusätzlich geprüft, ob die Türe innerhalb einer Zeitspanne (Standard 15 Minuten) geöffnet wurde und setzt im positiven Fall die Homematic Anwesenheitsvariable auf Abwesend. Dies verhindert, dass man nicht plötzlich im Dunkeln steht, wenn das Smartphone nicht erreichbar ist.
Ist keine zusätzliche Prüfung gewünscht, kann man im Script die Variable inrange auf true setzen.