Anwesenheitserkennung mittels Gigaset G-Tag

Hallo zusammen,
ich bin mit unten zitierter Anleitung von User traxanos gestartet, um eine Anwesenheitserkennung mittels Bluetooth zu realisieren.

Dies funktioniert sehr gut, wenn man als Bluetooth Device ein Mobiltelefon verwendet. Mit dem iPhone funktioniert es immer nur dann, wenn man Bluetooth aktiv einschaltet. Im Ruhemodus klappt es leider nicht. Die Idee ist nun einen Gigaset G-Tag zu verwenden, damit die Sache klappt. Da es sich um ein Low Energy (LE) Device handelt, habe ich folgende Zeile im PHP Skript ersetzt:

$search = shell_exec("hcitool name $mac");

durch

$search = shell_exec("hcitool lescan $mac");

Das klappt leider nicht wie gehofft, da hcitool lescan in einer Dauerschleife läuft. Einen vergleichbaren Zusatz wie „name“ scheint es für lescan nicht zu geben.

Hat jemand eine Idee, wie man das lösen kann? Eventuell kann man den Scan dazu bewegen, dass er nur 1 Mal scannt und dann so lange wartet, bis das Skrip wieder angestossen wird?

Akutell sieht mein Skript folgendermassen aus:

<?
$group = 47806 /*[Status\Anwesenheit\Bewohner]*/;
$check = array();
$check['7C:2F:80:B2:36:B3'] = 49381 /*[Status\Anwesenheit\Marina]*/;
$check['7C:2F:80:C4:6A:8D'] = 58632 /*[Status\Anwesenheit\Uwe]*/;

// will check
$group_check = false;
foreach($check as $mac => $id) {
$search = shell_exec("hcitool lescan $mac");

  SetValueBoolean($id, $search != '');
  if($search != '') $group_check = true;
}
SetValueBoolean($group, $group_check);

?>

Wenn es funktioniert, würde ich das Skript einfach jede Minute 1 Mal laufen lassen. Zum Beispiel über die Timerfunktion.

Parallelmodus
Quasselmodus

Hatte beide Vorschläge schon mal gesehen, aber mich aufgrund der Komplexität nicht daran gewagt. Hatte gehofft, dass die von mir angestrebte Variante durch eine leichte Änderung / Ergänzung funktionieren kann. Falscher Ansatz?

Wenn es funktioniert, würde ich das Skript einfach jede Minute 1 Mal laufen lassen. Zum Beispiel über die Timerfunktion.

Ich verstehe Deine Intention nicht!
Ein Anwesenheitserkennung führt doch zu irgendeiner Aktion die doch möglichst schnell ausgeführt werden soll.

Bei mir läuft der beschriebene Parallelmodus auf 7 Raspis, die im ganzen Haus und in der Garage verteilt sind. Neben anderen Aufgaben (wie Temperatur messen, Relais schalten) liefern sie dem Hauscomputer die Ereignisse über Erscheinen und Verschwinden von Gigaset G-Tags, die am Schlüsselbund hängen oder im Auto liegen.
Weil das WLAN weit reicht, friert sich jetzt auch ein Raspi Zero abgelegt im Garten-Geräteschrank den Prozessor ab :wink:
Es läuft also auch auf so einem Computer-Zwerg mit IPS:loveips:, Aussetzer gibt es nur bei schlechter WLAN-Anbindung.

Schnelle Aktionen bei Anwesenheitserkennung sind: Garage öffnen, Licht einschalten.
Langsame sind: Garage schliessen, Licht ausschalten, Heizung hochdrehen usw.

Nebenbei lassen sich Rätsel lösen, wie „wo hab ich denn wieder meinen Autoschlüssel verlegt?“ (Standardantwort: „liegen immer noch in der Garage“).

Wenn Dir das zu „komplex“ erscheint, kannst Du ja auch den „Stottermodus“ verwenden und immer ganz kurz laufen lassen, erscheint mir aber veraltet; als ich den noch im Einsatz hatte, gab es immer wieder Wartezeiten vor dem Garagentor.

Dies funktioniert sehr gut, wenn man als Bluetooth Device ein Mobiltelefon verwendet. Mit dem iPhone funktioniert es immer nur dann, wenn man Bluetooth aktiv einschaltet.

Bei Gelegenheit kannst Du mir ja noch erklären, wie man ein iPhone so zum Senden bringt, dass man die Signale mit dem „hcitool lescan“-Tool empfangen kann. Mir ist das leider noch nie geglückt.

Viele Grüsse
Harald

Hallo Harald,
vielen Dank für Deine ausführliche Antwort. Das gibt mir auf jeden Fall weitere Denkanstöße in Richtung Automatisierung. Die Intention für meine Anwesenheitserkennung ist das aktive Steuern einer Licht Simulation im Haus. Typischer Fall einer Anwesenheitssimulation. Dazu ist es nicht notwendig, dass „sofort“ eine Reaktion von Komponenten des KNX Systems erfolgt, sondern es soll lediglich sicher gestellt werden, dass zuverlässig mittels Tags erkannt wird, wann die Lichtsimulation aktiviert werden kann. Logik: Sind beide „Tags“ „ausser Haus“ läuft die Simulation los. Sobald einer der „Tags“ zu Hause ist, stoppt die Lichtsimulation.
Mittlerweile habe ich eine Lösung umgesetzt, die User traxanos erstellt hat. Siehe: https://github.com/traxanos/SymconBTP/blob/master/README.md#7-php-befehlsreferenz

Damit klappt die Erkennung beider „Tags“ zuverlässig. Es braucht allerdings für jeden „Tag“ eine eigene Instanz. Nun muss ich nur noch ein Skript erstellen, das mir den Boolean Wert der „Tags“ ausliest und dann die Simulation aktiviert. Für einen „Tag“ habe ich das folgendermassen realisiert:

<?

$Request = GetValue(57770);
echo $Request;

if ($Request == false) {
  echo "Anwesenheitssimulation soll aktiviert werden";
  SetValue(31850, true);
} else {
  echo "Anwesenheitssimulation soll nicht aktiviert werden";
  SetValue(31850, false);
}
echo " - done";

?>

Jetzt muss ich „nur“ noch den zweiten „Tag“ da mit reinbasteln…Mal sehen, wie ich das mache.

Was die Sichtbarkeit des iPhones mittels hciscan anbelangt darfst Du nicht den Zusatz „lescan“ verwenden, sondern einfach nur hcitool scan. Beim iPhone musst Du in die Einstellungen gehen und dann Bluetooth auswählen,

Sieht dann auf dem Raspi so aus:

hcitool scan.png

Viele Grüße, Uwe

Läuft jetzt wie gewünscht.

Die Erkennung der Bluetooth Tags mach ich über folgendes Modul:
https://github.com/traxanos/SymconBTP

Zusätzlich habe ich folgendes Skript, das über die Timerfunktion 1 mal pro Minute läuft, unter der Bedingung, dass es zwischen 16.00 Uhr und 23:10 ist und die Helligkeit unter 500 Lux geht:

<?

$Request1 = GetValue(57770);
$Request2 = GetValue(40123);
echo $Request1;
echo $Request2;

if ($Request1 == false and $Request2 == false) {
  echo "Anwesenheitssimulation soll aktiviert werden";
  AS_SetSimulation(21128, true);
} 

else {
  echo "Anwesenheitssimulation soll nicht aktiviert werden";
  AS_SetSimulation(21128, false);
}
echo " - done";

?>

Die eigentlich Simulation habe ich mit folgendem Modul abgebildet:

https://github.com/symcon/SymconMisc/tree/master/AnwesenheitsSimulation

Hat das jemand auf einem Raspberry Zero zuverlässig zum laufen gebracht?bei mir stürzt er immer wieder ab.

Habe die aktuelle Linux und IPS Version am laufen. Linux ohne Desktop und mit minimalen Grafikspeicher.

Auf dem Raspberry 4 läuft es ganz gut. Ist aber fast weng übertrieben nur für die Erkennung.

Gesendet von meinem VOG-L29 mit Tapatalk

OK auch auf dem Rasp 4 ist nach einiger Zeit Schluss.
Es wird dann nichts mehr erkannt.

wenn ich über PuTTY sudo hcitool lescan starte dann steht
Set Scan Parameters failed: Input / output error

Wie habt ihr das gelöst?

Gesendet von meinem VOG-L29 mit Tapatalk

Hallo Tommy,
hatte auch Probleme mit dem hängen von lescan.
Seitdem ich lescan anders verwende funktionierts ohne hänger.
Beschreibung im Beitrag: Raspi Problem mit bluetooth-Modul

Grüße
Stefan