NEWS
Anwesenheitserkennung mit ESPresense
-
@amg_666 sagte in Anwesenheitserkennung mit ESPresense:
@smarthome2020 Geht bei mir relativ fix. Ich hab in meinem Arbeitszimmer ein Awtrix-Display und das schaltet sich ein, wenn ich im Raum bin (dauert gefühlt max 20 Sek) und aus, wenn ich den Raum verlasse. Wenn ich mal kurz aus dem Raum gehe und zurückkomme ist das Display aus, die "Abwesenheitserkennung" ist also auch ziemlich fix.
Das ist zum Steuern von zB Lampen zu langsam. Auch das Ausschalten dauert zu lang. Wenn man die Entfernung des Geräts mal beobachtet, dann verringert sich beim Reinkommen die Entfernung (zB von 3m ausgehend) nur sehr langsam . Wenn ich Bluetooth ausgeschaltet habe und das Smartphone 50 cm weit weg lege, geht es dagegen nach Einschalten sofort auf die Distanz .
Wieso also dauert es so lange bei rascher Veränderung der Distanz bis der Sensor sich auf die wirkliche Distanz angepasst hat? -
Hab das auch mal auf nen esp32 gehauen...
Muß mir noch etwas mehr Gedanken darüber machen, jedoch scheint der einzige Anwendungszweck zu sein festzustellen wo jemand ist wenn alle Bewegungsmelder keine Bewegung anzeigen.
Hatte mir da jetzt mehr von versprochen.
-
@ticaki said in Anwesenheitserkennung mit ESPresense:
Hatte mir da jetzt mehr von versprochen.
Da ist der Name halt Programm. Dafür gehts fix und einfach.
Habe auch OpenMQTTGateway am laufen, aber das ist wohl noch etwas Bastelei in Sachen Devices, auf dass der ioBroker nicht nur mitgeteilt bekommt, dass da etwas ist, sondern auch, was es mitteilen möchte.
Hab hier für diese Bastel-Zwecke (Daten auslesen) jetzt ein Zigbee-Tasmota Gate und einen nRF52840 BLE-Sniffer, wobei zweiterer noch nicht laufen will.
Gruss von der Ostsee
ChrisPS: Tasmota-IR Gateway und Bresser-868MHz-Wetter->MQTT warten auch noch auf sinnvollen Einsatz Erstmal Basteln & Horten
-
Muß mal morgen schauen wieviele esp ich noch habe, vielleicht kann man da was aus den Daten vieler berechnen.
-
Wem espresense zu träge ist:
Ich nutze für die erste Erkennung einer Anwesenheit mit BWMs. Die Abwesenheit wird dann anschließend über BLE Tracker registriert. Nutze dafür allerdings meine Shelly Plus Devices, habe dafür was eigenes programmiert. Funktioniert aber mit espresense genauso.
Wenn die Trägheit trotzdem zu stark erscheint, kann man mit Apps die Häufigkeit der BLE Advertisements seiner Uhr o.ä. prüfen. Die Android App "nrf connect" zeigt zum Beispiel den Sende-Intervall an.@ticaki
Triangulation kannst du vergessen, auch wenn du mehrere verwendest. Hatte da mal mehrere Versuche gestartet und es als "gescheitert" beendet.
Was stattdessen funktionieren müsste, ist Fingerprinting:
https://synyx.de/blog/fingerprinting-indoor-positionsbestimmung-mit-bluetooth-low-energy-2-2/Habe es selbst noch nicht getestet, da ich mich aktuell mit anderen Projekten beschäftige.
-
@giuseppes said in Anwesenheitserkennung mit ESPresense:
Advertisements seiner Uhr o.ä. prüfen. Die Android App "nrf connect" zeigt zum Beispiel den Sende-Intervall an.
Ja so eine Hacke... nRF Connect gibts "einfach so" fürs Handy?
Und ich tüddel mir hier einen mit nRF52840-Dongle, Connect Desktop und Wireshark ab und komme nicht vorwärtsChris
-
@chris-1
Ähm ja, Play Store. Sorry für deine Mühen
Glaub, ist sogar kostenlos. Zeigt echt viele Infos. -
@giuseppes Hab's mir eben schon direkt runter geladen
An der Stelle: Danke für den Hinweis
Gruss von der Ostsee
Chris -
@giuseppes Da ich über die Feiertage ab nächster Woche zum alljährlichen Weihnachtstreffen weg bin, werde ich - in Ermangelung eines Rechner - wohl mal ein paar Screenshots von nRF (EQ-3 Thermostat) mitnehmen und den Code von EQ-3 auf Github durchforsten, auf dass ich mir etwas auf die Sprünge helfe.
Von den 2 Paketen ist eine Characteristic recht kurz (hex 4) und readonly, das legt ja den verdacht nahe, dass es sich um die gemessene Temperatur handelt.
Wie man nun von 00-10-02-00 auf circa 20,4°C kommt.... oder 20,01?
Ich les erstmal besser Code, wie es der Mensch mit dem Python-Script bzw ioBroker-Adapter gemacht hat.Chris
-
Ich schreibe einen Adapter zu ESPresense.
Als Anwesenheitserkennung ist es zuverlässig und da die hping Methode nicht mehr mit Apple funktioniert ist das hier meine Alternative.
Da der homeassistant Topic bei mir nur config daten enthält, frage ich mich wo sich der counter versteckt. Oder ob ha auf diese Topics ne Antwort schickt. Weiß das jemand?
-
@ticaki sagte in Anwesenheitserkennung mit ESPresense:
Als Anwesenheitserkennung ist es zuverlässig und da die hping Methode nicht mehr mit Apple funktioniert ist das hier meine Alternative.
welche Indizien hast du dass hping3 nicht mehr funktioniert?
bei mir funktioniert das einwandfrei. gerade gecheckt.
selbst mit der option tracking der ip adresse beschränken.die Erkennung läuft sogar in kurzen abständen mit deaktivierung des wlans auf dem iphone und im anschluss wieder aktivieren.
#!/bin/bash #Enter your ip of your device here DEVICES="192.168.1.209 192.168.1.225" #DEVICES="192.168.1.225" for i in `echo $DEVICES`; do ping $i -c 1 hping3 -2 -c 10 -p 5353 -i u1 $i -q >/dev/null 2>&1 sleep 1 # Only arp specific device, grep for a mac-address status=`arp -an $i | awk '{print $4}' | grep "..:..:..:..:..:.."` #A mac will be 17 characters including the ":" IP=${i//./-} if [ ${#status} -eq 17 ]; then echo "Phone $i is detected!" echo "curl http://192.168.1.85:8087/set/0_userdata.0.Anwesenheit.$IP?value=1" curl http://192.168.1.85:8087/set/0_userdata.0.Anwesenheit.$IP?value=1 else echo "Phone $i is not present" echo "curl http://192.168.1.85:8087/set/0_userdata.0.Anwesenheit.$IP?value=0" curl http://192.168.1.85:8087/set/0_userdata.0.Anwesenheit.$IP?value=0 fi done
Erkennung funktioniert hier jetzt sogar ohne hping3
meine vorgänger iphones hatten ohne immer schwierigkeiten wegen deep sleep.
hab aber jetzt keinen langen ausführlichen test gemacht. -
Mit wlan:
16:29:00.109 info javascript.0 (589) script.js.common.Anwesenheit_Haus: Tims iPhone erreichbar result: ? (192.168.178.109) auf <unvollständig> auf ens18
wlan aus:
16:31:00.105 info javascript.0 (589) script.js.common.Anwesenheit_Haus: Tims iPhone erreichbar result: ? (192.168.178.109) auf <unvollständig> auf ens18
wlan an, display an:
16:34:00.104 info javascript.0 (589) script.js.common.Anwesenheit_Haus: Tims iPhone erreichbar result: ? (192.168.178.109) auf 17:85:f2:4f:43:03 [ether] auf ens18
Auszug aus dem Skript:
ip = devices[counter].ip exec('sudo /sbin/ip neigh flush dev '+int_face+' '+ip,callback2) } function callback2(result, error) { if (stop1) return exec('/bin/hping3 -2 -c 10 -p 5353 -i u1 '+ip+' -q', callback3) } function callback3(result, error) { exec('sudo arp -an '+ip+' | awk '+ip+' ', callback4) //| grep "..:..:..:..:..:.." } async function callback4(error, result) { let presence:boolean = false if (error) {