NEWS
Probleme mit Anwesenheitserkennung
-
Hallo.
Ich habe ein Problem mit der Anwesenheitserkennung. Ich habe sie realisiert indem ich im Fritzbox Adapter auslese, ob das Familienmitglied im WLAN ist. Bei 2 Personen klappt das auch ganz einwandfrei. Alle 3 Familienmitglieder haben ein iPhone.
Bei der 3. Person wechselt der Status ständig zwischen true und false, obwohl das Handy permanent im WLAN ist. Ca. 15 Sekunden true, dann 5 Sekunden false dann wieder 15 Sekunden false ....Ich weiß nicht wo genau das Problem liegt. Auf der FritzBox Oberfläche kann ich nicht erkennen, dass sich das Gerät immer wieder abmeldet. In den Objekten, des tr-064 unter devices ändert sich jedoch ständig das active, lastActive und lastActive-ts
Eventuell liegt es ja auch am iPhone selbst!?
iPhone 11 und XR funktionieren, Beim XS treten die Probleme auf.Ich komme da einfach nicht weiter. Vielleicht hat ja schon mal jemand ein ähnliches Problem gehabt.
Vielen Dank
-
@jörn-kessels
Private WLAN-Adresse ist aber aus, oder? -
@reutli
Ich habe das mal Versuchsweise ausgeschaltet. Hat sich dadurch aber nichts geändert. Auf den "funktionierenden" iPhones ist das auch eingeschaltet. Daran hat es also nicht gelegen.
Trotzdem Danke -
@jörn-kessels
Hat das iPhone denn auch wirklich dauerhaft WLAN?
Oftmals liegt es an den Einstellungen in der Fritzbox (z.B. SSID versteckt), obiges (private WLAN Adresse) in Kombination mit WLAN > Sicherheit die Option „Alle neuen WLAN-Geräte zulassen“ ... -
@reutli
Sowohl in den Einstellungen der iPhones als auch in den Einstellungen der FritzBox finde ich keine Unterschiede bei den 3 iPhones.
SSID sichtbar, alle Geräte zugelassen
Das iPhone funktioniert einwandfrei und ist auch permanent im WLAN. Selbst wenn ich auf dem iPhone streame (Youtube oder Spotyfy) wechselt der Status im ioBroker ständig.
Ich kann es mir nicht erklären -
@jörn-kessels
Habe den Adapter nicht im Einsatz, mache Anwesenheitserkennung über CCU und dort einem Skript, sollte ja aber gleich funktionieren.
Als "Problem" würde ich das iPhone sehen. Würde Gerät in Fritzbox mal löschen und die WLAN Einstellungen am iPhone zurücksetzen.Irgendwelche Einschränkungen in der Fritzbox Stichwort "Kindersicherung" sind sicher auch nicht gesetzt?
Mehr Ideen habe ich aktuell auch nicht ...
-
Kindersicherung ist nicht aktiv.
Auch ein löschen und trennen des Gerätes und neu einbinden brachte leider keine Änderung ...Es ist zum verzweifeln
-
@jörn-kessels
Dann bin ich mit meinem Latein auch am Ende. Hast Du den Adapter mal im Debüt laufen lassen, was da so passiert? Das hilft meist den ioB Profis um der Sache näher zu kommen.
Hat sich ja aber bisher keiner gemeldet, auch keiner der das bereits so wie Du nutzt .... -
<Hast Du den Adapter mal im Debüt laufen lassen, was da so passiert?
Das sagt mir garnichts
Ich warte mal ab, ob sich noch jemand meldet. Trotzdem großen Dank an dich.
-
@jörn-kessels
Sorry "Debüt" sollte "DEBUG" heissen (immer die Rechtschreibprüfung ) -
lese dir mal diesen thread durch.
https://forum.iobroker.net/topic/49880/iphone-verliert-immer-das-wlan/40?_=1658485674599deinen effekt kenne ich, ist bei mir genau so. allerdings kommen die meisten hier mit dem radar adapter zurecht, weil der effekt wohl nicht bei allen iphones auftritt.
meine erklärung dafür ist,
das handy besteht ja aus mehreren einzelnen hardware komponenten. um die akkuleistung optimal auszunutzen, werden die komponenten so oft als möglich in einen schlafmodus geschickt (teilweise auch nur millisekundenweise), so auch die wlan komponente. das hat keine auswirkung auf die anzeige. demnach ist das gerät immer im wlan.
aber im hintergrund wird die verbindung abgebaut und nach gewissen regeln wieder aufgebaut. nachts wohl seltener wie tagsüber.mit dem skript im verlinkten thread kann man auch die geräte dazu überreden, auf eine bestimmte nachfrage (hping3 muss separat für linux installiert werden ) zu reagieren.
seit dem einsatz funktioniert die anwesenheitskontrolle bei mir einwandfrei
-
Ach du sch.... Ich glaube das übersteigt meine Fähigkeiten. Trotzdem ganz lieben Dank. Da muss ich mir eine andere Lösung einfallen lassen.
-
Hab ich auch schonmal gelesen.
Habe es dann versucht in Blockly umzusetzen.Aber ohne Erfolg.
Per exec mit Ergebnis musste man es doch eigentlich auch hinbekommen..... -
ja genau,
wird alle 5 Minuten aufgerufen
evtl ist noch auf die rechte der Datei
/opt/iobroker/cmd/iphone.sh
zu achten.
sonst kann iobroker diese nicht aufrufen.damit das folgende skript funktioniert muss auf dem rechner auf dem sich der iobroker befindet hping3 installiert sein (pefehl gilt für debian-artige betriebssysteme (auch ubuntu, mint, etc. bei anderen entsprechend dem paketmanager anpassen)
sudo apt update sudo apt install hping3
function wakeIphone() { exec("bash /opt/iobroker/cmd/iphone.sh") } schedule ("*/5 * * * *", function(){ wakeIphone(); });
und damit wir hier in diesem thread komplett sind, hier nochmal das skript welches sich in der datei
/opt/iobroker/cmd/iphone.sh
befinden muss. es ist ein shellskript und kein javascript
hier muss man einmal bei Devices in Zeile 3 die ipadressen der telefone einpflegen (ich glaube mit leerzeichen getrennt bei mehreren und
in Zeile 16 und 19 die ipadresse des iobrokers und die Datenpunkbezeichnung wo man es hinhaben will. Falls es nicht schreibt, müsst ihr den Datenpunkt selbst anlegen-
das skript nutzt den adapter simple api um über http-abfrage datenpunkte zu beschreiben, den müsst ihr auch noch installieren und ggfs. in Zeile 16 und 19 noch die Portnummer des adapters eintragen (hier 8087)
um das skript zu testen könnt ihr es direkt von der shell aus aufrufen, es zeigt dann an ob die geräte da sind oder nicht
wenn ihr probleme habt, dann melden#!/bin/bash #Enter your ip of your device here DEVICES="192.168.178.82" 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!" curl http://192.168.178.98:8087/set/0_userdata.0.Anwesenheit.$IP?value=1 else echo "Phone $i is not present" curl http://192.168.178.98:8087/set/0_userdata.0.Anwesenheit.$IP?value=0 fi done
zur Funktionsweise
in Zeile 7 wird ein normaler Ping und in Zeile
8 ein spezieller Ping (mit hping3) an das telefon gesendet.
diese kombination hat sich gezeigt, das es noch zuverlässiger läuftdas wacht dann aus, meldet sich vereinfacht gesehen im netzwerk und taucht dann in den routing-tabellen auf, die dann mit dem befehl arp ausgelesen wird.
wenn handy erreichbar, dann ist es in der liste, wenn nicht, dann nicht.
dieser status wird ausgewertet und dann entsprechend der datenpunkt gesetztam besten den geräten feste ip-adressen zuordnen, sonst könnten sich die auch mal ändern, je nach lease-time und nach längerer abwesenheit
-
@jörn-kessels
Beim Huawei meiner Frau habe ich dasselbe Problem. Da ich abhängig von der An- bzw. Abwesenheit eine Cam ein- bzw. ausschalten will, werde ich demnächst eine Zeitschleife einbauen:Wenn Zustand geändert auf abwesend.
Warte 30 Sekunden.
Immer noch abwesend?
Cam einschalten.