Anwesenheit BT v4.23 (stable)

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

Benutzeravatar
blackhole
Beiträge: 3718
Registriert: 21.07.2015, 14:03
System: CCU
Hat sich bedankt: 184 Mal
Danksagung erhalten: 586 Mal

Anwesenheit BT v4.23 (stable)

Beitrag von blackhole » 20.02.2017, 15:35

Hallo zusammen,


ich stelle hiermit eine modernisierte, fehlerbereinigte und gestraffte Version der "Bluetooth Anwesenheitssteuerung" von realwheel unter dem Namen Anwesenheit BT als Bereicherung zur freien Verfügung.

Anwesenheit BT ermöglicht eine funktionale, kombinierte Anwesenheitskennung für Android Smartphones, iPhones, iOS, Featurephones und andere Mobilgeräte via Bluetooth, welche in Form eines Shell-Skriptes unter Linux lauffähig ist. Geeignete Grundlagen sind z.B. ein Raspbberry Pi mit Raspbian bzw. Raspberry Pi OS, ein Rechner oder eine VM mit einer Standard Linux-Distribution nach persönlichem Gusto oder vergleichbares. Die nachfolgende Anleitung bezieht sich auf einen Raspbberry Pi mit aktuellem Raspberry Pi OS als Betriebssystem.

Für mich relevante Mängel der Ursprungsversion sind ausgebessert, geändert, umgeschrieben und modifiziert. Dies hat unter anderem dazu geführt, dass keinerlei Abhängigkeit zu einem CCU-/HomeMatic-Addon besteht.


Motivation

Ab Android 7, musste ich schmerzlich feststellen, dass Google es mit den Energiesparmaßnahmen deutlich übertrieben hat. Im Ergebnis hat meine automatische Anwesenheitserkennung per ICMP ("Ping"), trotz aller "WLAN-Wachhalte-Tricks" mit Tasker (seit Android 5/6 nötig und erfolgreich im Einsatz), nicht mehr zuverlässig funktioniert.

Da ich schon seit längerem mit der Idee schwanger gehe meine Addon-Abhängigkeiten aufzulösen, war für mich genau jetzt der Zeitpunkt gekommen mich nach einer vernünftig funktionierenden Alternative umzuschauen.

Grund für die Veröffentlichung ist der (OSS-)Gedanke, dass andere von meiner Arbeit profitieren können, wie ich von der Arbeit Dritter profitiert habe.


Verteiler

Falls das kostenlos erhältliche Paket für jemanden von Interesse sein sollte, einfach hier im Thread nachfragen oder eine PN an mich richten:
  • Bitte in jedem Fall angeben welche Zentrale verwendet wird und welche Firmware-Version installiert ist.
  • Die Antwort-PN bitte innerhalb von 24 Stunden abholen.

Installationsanleitung
  • Grundlage ist eine lauffähige Linux-Installation mit funktionierendem Bluetooth (Onboard-Chip oder per USB-Adapter)
  • Nach dem Download der Installationsdatei wird das Paket (vor dem Entpacken!) auf den Raspberry Pi/den Linux-PC kopiert (z.B. mittels WinSCP).
  • Das Entpacken des Paketes erfolgt an der Konsole (z.B. via PuTTY bzw. einer SSH-Terminal-Session) mittels nachfolgendem Befehl.

    Code: Alles auswählen

    sudo tar xvf anwesenheit-4.23.tar.gz -C /
  • Ein Update einer älteren Version von Anwesenheit-BT erfolg nach dem gleichen Schema.
  • Abschließend die Prozesse beenden und wieder starten oder alternativ einen Reboot durchführen.

Installation der Beispielkonfigurationsdateien
  • Nach dem Download wird das Paket mit den Beispieldateien (vor dem Entpacken!) auf den Raspberry Pi/den Linux-PC kopiert (z.B. mittels WinSCP).
  • Das Entpacken des Paketes erfolgt an der Konsole (z.B. via PuTTY bzw. einer SSH-Terminal-Session) mittels nachfolgendem Befehl.

    Code: Alles auswählen

    sudo tar xvf anwesenheit-conf.tar.gz -C /

Konfiguration
  • Nach der Installation finded man im Verzeichnis /etc/ mehrere beispielhafte Konfigurationsdateien (fon-vater.conf, fon-mutter.conf und fon-kind.conf)
  • Die Beispieldateien können nach belieben umbenannt und kopiert werden. Einen treffenden Namen zu verwenden ist sinnvoll, da im Fehlerfall der Dateiname auch zur Identifizierung des jeweiligen Prozesses benutzt werden kann.
  • Die Konfiguration erfolgt durch Editieren und Anpassen der Konfigurationsdateien. Die anzupassenden Einträge sind jeweils entsprechend kommentiert.
  • Falls vorhanden, können Konfigurationsdateien um die nachfolgenden zwei Zeilen erleichtert werden, da sie keinerlei Verwendung mehr finden:

    Code: Alles auswählen

    # WLAN IP-Adresse (...)
    IPAddressWIFI=192.168.x.x

CCU-Systemvariablen
  • Die zu verwendende(n) CCU-Systemvariable(n) (pro Gerät eine) müssen vom Typ "Logikwert" sein (wahr=anwesend, falsch=nicht anwesend)

Testen der Konfiguration
  • Zum Testen einer Konfiguration erfolgt der Aufruf des Skriptes unter Angabe der jeweiligen Konfigurationsdatei wie nachfolgend angegeben.
  • Entsprechende Textausgaben sollten die Überprüfung der Konfiguration und eine eventuelle Fehlersuche erleichtern.
  • Die im nachfolgenden Beispiel angegebene Konfigurationsdatei ist ggf. anzupassen.

    Code: Alles auswählen

    anwesenheit.sh /etc/fon-vater.conf

Autostart einrichten
  • Für den automatischen Start aller Instanzen des Skriptes (eine pro Gerät/Smartphone) im Hintergrund (z.B. nach einem Reboot des Raspberry Pis/des Linux-PCs), wird die Datei /etc/rc.local um nachfolgende Einträge erweitert (einfügen vor der letzten Befehlszeile "exit 0").
  • Die im nachfolgenden Beispiel angegebene(n) Konfigurationsdatei(en) ist/sind ggf.anzupassen.

    Code: Alles auswählen

    anwesenheit.sh /etc/fon-vater.conf > /dev/null &
    sleep 3
    anwesenheit.sh /etc/fon-mutter.conf > /dev/null &
    sleep 3
    anwesenheit.sh /etc/fon-kind.conf > /dev/null &
    
  • Schnelle Kontrolle, ob nach erfolgtem Reboot alle Prozesse laufen:

    Code: Alles auswählen

    ps ax|grep anw

Fehlersuche I: Erreichbarkeit via Bluetooth -unabhängig vom Skript- testen
  • Mittels l2ping die Erreichbarkeit des Gerätes überprüfen:

    Code: Alles auswählen

    sudo l2ping -c3 <MAC-Addresse>

Fehlersuche II: Abschließende Kontrollen
  • Abschließend die eingegebenen Adressen in den Konfigurationsdateien mit den tasächlichen Adressen der Geräte vergleichen und ggf. korrigieren. Anhand der Beispiel-Konfigurationsdateien auch die korrekte Syntax überprüfen.
  • Kontrolle, ob die Systemvariable(n) in der CCU korrekt eingerichtet ist/sind: Siehe How-To, Abschnitt "CCU-Systemvariablen". Die Systemvariable(n) auch in der/den Konfigurationsdateie(n) auf Richtigkeit überprüfen (Kommentar beachten!).

Fehlersuche III: Reichweitenkiller in the box
  • Ein hilfreicher, aufklärende Beitrag auf welchen ich kürzlich gestoßen bin: Raspberry Pi: Kühlung und Kühlkörper
    Ich habe das mittels vcgencmd measure_temp mehrfach und über längere Zeiträume hinweg überprüft und kann das nur bestätigen.
    Was allerdings nur selten in solchen und ähnlichen Artikeln erwähnt wird: Die überflüssigen Kühlkörper sind zudem auch Reichweitenkiller.
  • Gleiches gilt natürlich auch für Metallgehäuse und größere Metallansammlungen u.Ä. in näherer Umgebung des BT-Chips/des Raspberry Pi.
  • Den HDMI-Port zu deaktivieren ist auch eine gute Idee. Ich erledige das per Skript ca. 10 Minuten nach erfolgtem Bootvorgang (mittels tvservice -o und vcgencmd display_power 0).

Changelog
  • v2.10: Abhängigkeit zur XML-API aufgelöst ("Anwesenheit BT" funktioniert ohne jegliche Addons)
  • v2.10: Auslagerung aller(!) Einstellungen in Konfigurationsdateien (pro Gerät eine).
  • v2.10: Einziger Parameter bei Aufruf des Skriptes ist die Konfigarationsdatei (Bsp: anwesenheit.sh /etc/fon-blackhole.conf). Alle Parameter sind somit pro Gerät einstellbar (neben MAC und IP auch Zeiten, Wiederholungen, sogar die CCU, falls mehrere im Einsatz)
  • v2.10: Eindeutig bezeichnete Konfigurationsdateien esetzen Gerätenamen als Parameter (der Gerätename ist Teil des Dateinamens).
  • v2.10: "Wifi-Scan" (arp-scan), die "Backuplösung" zu BT, funktioniert nun zuverlässig (bei Einsatz von Repeatern klappte das gar nicht) und wurde daher durch "Wifi-Ping" (ping) ersetzt. Nachteil: Er müssen feste Leases eingerichtet werden. Vorteile: Es funktioniert sehr zuverlässig, wenn das Gerät wach ist, unabhängig vom Einsatz von Repeatern/Bridges etc..
  • v2.10: Der Coding-Style wurde angepasst und bereinigt
  • v2.10: Umstellung komplett auf UTF-8
  • v2.20: Aktualisierter Debug-Modus mit neuen Ausgaben
  • v2.21: Optimierung der While-Schleifen
  • v2.22: Ressourcenoptimierung (XML-Auswertung)
  • v2.23: Kommentierung der Beispiel-.conf-Dateien
  • v2.24: Reduzierung von Programmaufrufen und überflüssige Shell-Aufrufe entfernt
  • v2.25: Erster Release für Tester
  • v2.26: Zweiter Release für Tester
  • v2.27: öffentlicher Release
  • v2.28: Korrektur einer Textausgabe im Debug-Betrieb (Danke an danberg)
  • v2.29: Angabe der Zeiteinheit in den Beispiel-.conf-Dateien (Danke an mike9677)
  • v2.29: Korrektur und Verbesserung wenn keine Prüfung via WLAN erfolgen soll (Danke an danberg)
  • v2.30: Überflüssige Hochkommata entfernt
  • v2.30: Exit im Falle eines Typos hinzugefügt
  • v2.30: Verwendung von verkürzten Timeouts
  • v2.30: Code gestrafft und Einrückungen korrigiert
  • v2.30: Anwesenheitsüberprüfungen ausgelagert an zentrale Stelle
  • v2.30: Aufteilung in Skript- und Beipieldatei-Paket, How-To angepasst
  • v2.31: Exit-Befehle haben eine Code-Nummer erhalten (Danke an danberg)
  • v2.31: Code-Rewrite, die ehemals "doppelte Abwesenheitsprüfung" erfolgt nun in einer zentralen While-Schleife (Danke an danberg)
  • v2.40: Bugfix, kleinere Anpassungen, Versionierung wg. Code-Rewrite angepasst
  • v2.41: Code gestrafft, Redundanzen entfernt
  • v2.44: Jubiläumsausgabe, Code gestrafft, Kommentierungen angepasst
  • v2.45: Zyklischer Abgleich der Systemvariable zur Synchronisierung nach Nichterreichbarkeit der CCU2 (Danke an cyclopz)
  • v2.46: Typo korrigiert, Code gestrafft und Einrückungen korrigiert
  • v3.01: Code-Optimierung für die CCU3, die obsolete sekundäre Anwesenheitskennung wurde entfernt
  • v4.01: Durchgängige Modernisierung des bisherigen Coding-Styles
  • v4.23: Für eine umfangreichere OS-Kompatibilität wurden sämtliche "Bashisms" entfernt. Der Default-Interpreter ist jetzt /bin/sh und nicht mehr /bin/bash. Das Einlesen der Config-Datei geschieht nun durch Sourcing und ist somit deutlich effektiver. Viele kleinere Code-Optimierungen
Zuletzt geändert von blackhole am 02.10.2023, 07:45, insgesamt 232-mal geändert.

Benutzeravatar
Herbert_Testmann
Beiträge: 11062
Registriert: 17.01.2009, 11:30
Danksagung erhalten: 7 Mal

Re: Anwesenheit BT v2.2x (NYR)

Beitrag von Herbert_Testmann » 20.02.2017, 22:12

Diskussion zu grundsätzlichen Forenfragen verschoben -> http://homematic-forum.de/forum/viewtop ... =1&t=35791
---
Dieses Schreiben wurde maschinell erstellt und ist ohne Unterschrift gültig

Benutzeravatar
blackhole
Beiträge: 3718
Registriert: 21.07.2015, 14:03
System: CCU
Hat sich bedankt: 184 Mal
Danksagung erhalten: 586 Mal

Re: Anwesenheit BT v2.26 (NYR)

Beitrag von blackhole » 22.02.2017, 11:44

Das How-To ist fertig und die Todo-Liste ist abgearbeitet. Der ERD kann also eingehalten werden.

Die verbleibende Zeit würde ich, neben kleineren Anpassungen, gerne für einen Stable- und How-To-Test nutzen und sehen wo noch Erklärungsbedarf ist, was die Anleitung betrifft.
Falls also ein zuverlässiger Tester etwas Zeit zum Ausprobieren von Anwesenheit BT (und How-To) opfern möchte, kann er sich gerne hier oder per PN melden.

[ Edit: Links entfernt ]
Zuletzt geändert von blackhole am 23.02.2017, 13:24, insgesamt 1-mal geändert.

Benutzeravatar
blackhole
Beiträge: 3718
Registriert: 21.07.2015, 14:03
System: CCU
Hat sich bedankt: 184 Mal
Danksagung erhalten: 586 Mal

Re: Anwesenheit BT v2.27

Beitrag von blackhole » 23.02.2017, 08:58

Die Tests waren erfolgreich, das How-To und die Kommentierungen wurden für gut befunden.
Daher werde ich den öffentlichen Release um eine Woche vorverlegen.

Anwesenheit BT wird somit, eine Woche früher als geplant, am kommenden Samstag wurde soeben in der Version 2.27 veröffentlicht.
Zuletzt geändert von blackhole am 25.02.2017, 00:00, insgesamt 2-mal geändert.

mike9677
Beiträge: 422
Registriert: 17.04.2011, 11:08

Re: Anwesenheit BT v2.27 (NYR)

Beitrag von mike9677 » 24.02.2017, 09:59

Hallo,
ich bin mal gespannt wie ein Flitzebogen auf die Anwendung.
Habe gestern noch eifrig versucht, BT am PI2 mit einem USB-Dongle einzurichten.
Hat auch soweit alles geklappt, Pairing hat stattgefunden. Nur verliert der PI (oder der Client, je nach dem wie man es nimmt) dann immer wieder die Verbindung.
Gehört jetzt zwar nicht unbedingt hier rein, aber egal.

Wie gesagt, mal sehen ob die Anwendung trotzdem läuft.

gruß
mike

Benutzeravatar
blackhole
Beiträge: 3718
Registriert: 21.07.2015, 14:03
System: CCU
Hat sich bedankt: 184 Mal
Danksagung erhalten: 586 Mal

Re: Anwesenheit BT v2.27 (NYR)

Beitrag von blackhole » 24.02.2017, 10:11

mike9677 hat geschrieben:Nur verliert der PI (oder der Client, je nach dem wie man es nimmt) dann immer wieder die Verbindung.
Man sollte ja meinen, dass das Smartphone (i.d.R. nur Bluetooth Class 2) maßgeblich ist.
Ich habe im Vorfeld reichlich experimentiert und bei gleichem Smartphone folgende Adapter in meinem EFH ausprobiert:
  1. Raspberry Pi 3, interner BT-Chip, Bluetooth v4.1 (LE), Class 2
  2. LogiLink BT0015, Bluetooth v4.0, Class1
  3. SENA UD300, Class 1, max. 300m, mit der wechselbarer Standard-SMA-Antenne, bis 1 Km mit Spezialantennen
1.) hat bei mir nicht gereicht, 2.) hat zufriedenstellend funktioniert, 3.) ist der Hammer und legt eine Bluetooth-Glocke um Haus, Garten und Garage.

> Hier die aktuellen Erkenntnisse und (m)ein aktuelles Setup. <

Da wir hier aber letztendlich von Funk reden und jede Örtlichkeit andere funktechnische Eigenheiten hat, muss letztendlich jeder seine eigenen Erfahrungen machen.
Zuletzt geändert von blackhole am 02.02.2018, 21:39, insgesamt 1-mal geändert.

Luxtra
Beiträge: 452
Registriert: 13.12.2014, 07:00
Danksagung erhalten: 1 Mal

Re: Anwesenheit BT v2.27 (NYR)

Beitrag von Luxtra » 24.02.2017, 16:01

mike9677 hat geschrieben:Hallo,
ich bin mal gespannt wie ein Flitzebogen auf die Anwendung.
Habe gestern noch eifrig versucht, BT am PI2 mit einem USB-Dongle einzurichten.
Hat auch soweit alles geklappt, Pairing hat stattgefunden. Nur verliert der PI (oder der Client, je nach dem wie man es nimmt) dann immer wieder die Verbindung.
Gehört jetzt zwar nicht unbedingt hier rein, aber egal.

Wie gesagt, mal sehen ob die Anwendung trotzdem läuft.

gruß
mike
Hast du schon die Ursprungsversion getestet?
viewtopic.php?f=31&t=25715

Funktioniert bei mir mit dem Original-Chip auf dem Pi3 sowohl zu Hause aus dem Keller über EG, OG bis ins Dach einwandfrei, im Büro aus dem ersten Stock bis in den Keller und ins Dachgeschoss, gelegentliche Aussetzer werden zuverlässig mit dem arp-scan auf die Wifi-Adresse abgefangen.


danberg
Beiträge: 106
Registriert: 15.11.2015, 23:03

Re: Anwesenheit BT v2.27

Beitrag von danberg » 25.02.2017, 21:41

Hallo

Zuerst einmal vielen Dank für die zur Verfügungsstellung der Anwendung.

Funktioniert bei mir leider irgendwie nicht korrekt.
Die Variable wird zwar bei Abwesenheit korrekt gesetzt aber dann nie bei Anwesenheit.

Bei nicht Erreichbarkeit wird auf der Konsole ausgegeben:

Gerät ist nicht erreichbar.
Gerätestatus hat sich geändert. Systemvariable wird geändert (Gerät erreichbar)

Warum steht hier 'Gerät erreichbar', die CCU-Variable wird aber korrekt auf 0 gesetzt.

Bei Erreichbarkeit wird auf der Konsole ausgegeben:

Gerät ist per Bluetooth erreichbar.
Gerät war nicht erreichbar, aber wurde wiedergefunden. Keine Aktion durchführen und 6 Sekunden warten...
Erreichbarkeit per Bluetooth wird geprüft.
Gerät ist per Bluetooth erreichbar.
Gerätestatus ist unverändert. Systemvariable bleibt unberührt. Warte 120 Sekunden

Warum wird hier 'keine Aktion durchführen' ausgegeben, hier sollte doch die CCU-Variable wieder entsprechend gesetzt werden.
Viele Grüsse Danberg
__________________________
RaspberryMatic@RPi2 / FW 2.27.8.20170410

Benutzeravatar
blackhole
Beiträge: 3718
Registriert: 21.07.2015, 14:03
System: CCU
Hat sich bedankt: 184 Mal
Danksagung erhalten: 586 Mal

Re: Anwesenheit BT v2.27

Beitrag von blackhole » 25.02.2017, 22:09

danberg hat geschrieben:Zuerst einmal vielen Dank für die zur Verfügungsstellung der Anwendung.
Gerne geschehen.
danberg hat geschrieben:Warum wird hier 'keine Aktion durchführen' ausgegeben, hier sollte doch die CCU-Variable wieder entsprechend gesetzt werden.
Weil das Gerät bereits vorher wiedergefunden wurde ("Gerätestatus hat sich geändert. Systemvariable wird geändert (Gerät erreichbar)"). Das ist dann wohl auch der Grund, warum die Systemvariable bei dir nicht auf Abwesenheit gesetzt wurde:

Du warst beim Testen vermutlich einfach zu ungeduldig und deshalb schlicht und einfach nicht lange genug per Bluetooth und WLAN unerreichbar. Siehe hierzu auch die Kommentare in der Konfigurationsdatei im Abschnitt "Optionale Einstellungen".

Teste das noch einmal in Ruhe aus: Bluetooth und WLAN eine Weile abschalten - wirklich bis die Systemvariable geändert wurde, später Bluetooth wieder einschalten, etwas eingeschaltet lassen und vice versa). Ich denke, die Systematik wird klarer, wenn Du das eine Zeit lang und ein paar Ein-/Aus-Zyklen lang beobachtest.

Hilft das alles nicht, wirf einfach einmal einen Blick in das Skript: Es ist auf Grund der Einfachheit recht leicht herauszulesen was wann passiert.

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“