Anwesenheitskontrolle per Wlan Ping und Android 6

Begonnen von Steffmaster, 09 Februar 2016, 09:01:08

Vorheriges Thema - Nächstes Thema

Punkt

Hi Otto,

das wird so nicht funktionieren.
Mein WLAN-Netz kriegt das nicht mit wenn das Handy im Sleep (Doze) Modus ist wenn ich nach Hause komme - genausowenig das Handy selbst.
Erst wenn du den Bildschirm dann kurz aktivierst verbindet sich das Handy mit dem WLAN - so lange zählt das Handy als nicht anwesend.

Android lässt das WIFI zwar an - kappt aber einfach alle Connections.

D.h. ich hab das Problem, dass das Ankommen nicht zuverlässig bemerkt wird - und das "da bleiben" also auch nicht.
Ich habe schon mit diversen Alternativen gespielt um das "verlassen" des Hauses irgendwie dann für die Abwesenheit zu nutzen - aber da hab ich bisher nichts gefunden was so zuverlässig funktionierte wie mein WLAN-Ping...

Das Problem ist also mehrschichtig:

- Ankomnmen wird nicht registriert wenn das Handydisplat seit mindestens 7 Minuten aus war wenn ich nach Hause komme
- das "dableiben" bzw. "zu Hause sein" wird nicht zuverlässig registriert

Alle Tools die ich dafür bisher angetestet hab (z.B. Tasker mit GPS usw.) war alles nicht annähernd so effektiv wie die Netzwerkerkennung...

Bluetooth "könnte" ne Alternative sein - aber da haperts momentan an der Reichweite (evtl. noch andere Bluetooth-Verbinder austesten) oder an meinen openWRT-Routern die keinen Platz mehr haben...

IFTTT wäre beim Einbuchen auch erstmal keine Hilfe - Das Handy bucht sich ja erst ein wenn das Display aktiviert wird.
Und das kriegt mein FHEM ja dann sowieso mit... :-)
Cubieboard-2 mit 1wire-Bus und I2C-Extensions
Datenbank: mysql auf Ubuntu-Server
verschiedene "Satellitensysteme" mit ESP-8266

Marlen

Hi ihr,

ich hatte "natürlich" auch das Problem!

Hab das ganze jetzt mit Tasker gelöst, der wenn ich die definierte Zone verlasse bzw. betrete einen Befehl per HTTPGET an FHEM schickt!

Ist zwar nicht so komfortabel wie mit PING, da man auf jedem Handy Tasker mit dem entsprechenden Tasks laufen haben muss.

Aber auch hier, alles schlechte hat auch was gutes! Hab eine 2. Zone, wenn ich die betrete und mein Handy per Bluetooth mit dem Auto verbunden ist, wir auch eine Befehl an FHEM gesendet und mein Garagentor wird geöffnet!  :)

LG
  Marlen

AndyMu

Schaut euch mal das hier an, falls ihr eine Fritzbox habt: https://wiki.fhem.de/wiki/FRITZBOX#Anwesenheitserkennung_per_regelm.C3.A4.C3.9Figer_Abfrage_.C3.BCber_das_PRESENCE_Modul

Geht komplett ohne Verbiegen mit BT oder so... damit habe ich meine unzuverlässige Anwesenheitserkennung über WLAN Ping (iPhones/Android) so umstellen können, dass sie wieder zuverlässig über das PRESENCE Modul funktioniert... war auch vergleichsweise leicht einzurichten.

Frank_Huber

So, Habe beide Varianten eionige Tage getestet. Lan Ping und FritzBox.

Ergebnis:
Das Handy meiner Frau (Samsung) läuft jetzt über die FritzBox.
Mein Handy (Jiayu Chinese) läuft über lan-ping.

Das Samsung ist über die Fritzbox zuverlässig, über lan-ping nicht.
Das Jiayu grad anderstrum. über die FritzBox unzuverlässig, lan-ping einwandfrei.

Der Mix läuft jetzt seit Tagen perfekt ohne auch nur eine Fehl-Erkennung.

Punkt

so - ich wollte nur mal eine kurze Zwischenbilanz mitteilen:

Erstmal: Danke dass hier trotz meiner hartnäckigen Verweigerung trotzdem immer wieder Leute in Richtung Bluetooth-Erkennung gezeigt haben!  ;)

Ich hatte bei meinen ersten Versuchen ein paar Fehler gemacht - unter Anderem bin ich dran verzweifelt, dass 'hcitool scan' mein Handy andauernd scheinbar nicht erkannt hat.
Hier muss man dazu sagen: Bei der neuen Android-Version stellt man nicht einfach ein 'Bluetooth sichtbar' sondern da ist das Handy tatsächlich nur dann sichtbar wenn man auch genau in dem Menü drin ist wo das in den Bluetooth-Einstellungen des Handys steht! Geht man auf den Homescreen ist das Handy wieder 'unsichtbar'....

...und ich Depp hatte gedacht die Reichweite meines Bluetooth-Dongels wäre so grottig...  ::)

Lange Rede - kurzer Sinn: Ich habe es hinbekommen!

Vorab schonmal ein paar Stichpunkte:
- openWRT
- USB-Bluetooth-Dongle
- ubus (openWRT-RPC-Dienst) !!! sehr sehr geil!
- eigenes ubus-Objekt mit entsprechenden Methoden
- PRESENCE-Modul mit Shell-Script eingebunden mit dem ich den ubus vom openWRT abfrage

Ich werde in den nächsten Tagen eine Doku darüber erstellen was man alles dafür machen muss damit das so mit openWRT-Routern und den USB-Bluetooth-Dongeln funktioniert - da gibt es ein paar sehr schmutzige Fallstricke zu beachten! Ich kann euch schonmal soviel verraten: Ich habe EINIGE Nächte an dem Thema gesessen!

Aber: es funktioniert!  8) Und im Nachhinein muss ich mich wirklich korrigieren: Die Reichweite der Bluetooth-Adapter ist weeeeesentlich besser als ich gedacht habe!  ::)

Das schonmal um euch evtl. die Nase lang zu machen - bin jetzt erstmal beruflich nochmal 1-2 Tage weg.
Aber ich versuche das übers Wochenende zusammen zu schreiben ...höchstwahrscheinlich in einem neuen Thread (kann man ja hier verlinken).

Hier aber schonmal meine Quellen welche mich auf den rechten Pfad gebracht haben:

openWRT ubus:
https://forum.fhem.de/index.php?topic=33554.0

eigene ubus-PlugIns:
https://wiki.openwrt.org/doc/techref/rpcd

und nicht zuletzt der SHELL-Parser für JSON-Messages (für Systeme die kein 'jq' verfügbar haben):
https://gist.github.com/cjus/1047794


Viele Grüße

Michael


PS: das mit der Prüfung der aktiven Sessions auf der Fritzbox hatte ich auch ähnlich mit diesem ubus getestet.
Funktioniert zwar ganz gut aber bei folgender Situation hilft es nicht:

Handy im WLAN -> Handy geht ins Standby (nach paar Minuten) -> aktive Session immer noch in openWRT/Fritzbox -> Haus verlassen (aktive Session wird gelöscht weil Endgerät nicht mehr erreichbar ist) -> Handy NICHT aus dem Standby wecken (also Display nicht anschalten) -> wieder nach Hause kommen: Voila! Man ist zu Hause aber es gibt keine aktive Session mehr in der Fritzbox/openWRT...aus dem Grund fiel das bei mir dann auch raus. Kurz zum Nachbar, wieder nach Hause, in der Zwischenzeit mal nicht aufs Handy gekuckt: Abwesend für FHEM...
Cubieboard-2 mit 1wire-Bus und I2C-Extensions
Datenbank: mysql auf Ubuntu-Server
verschiedene "Satellitensysteme" mit ESP-8266

TeleDet

Punkt ... Na bitte wer sagt's denn ... geht doch  ;)

Und so Google will wird es noch sehr, sehr lang gut funktionieren! Es sei denn  ::) ... Bluetooth wird irgendwann abgeschafft  :o :-\

Glückwunsch zum Gelingen und ich bin gespannt was du uns so alles bezüglich OpenWRT, ubus usw. mitteilen kannst. 
Ich habe hier auch noch ein paar TL-WR1043ND von TP-Link rumzustehen die sehnsüchtig auf Beschäftigung warten!
Marlen hat mir da schon einen Floh ins Ohr gesetzt und Begehrlichkeiten geweckt! ;)

Gruß TeleDet

Punkt

so - ich habe mal das Ganze zu einer (hoffentlich verständlichen) Anleitung zusammengefasst:

https://forum.fhem.de/index.php/topic,73894.0.html

Ich hoffe ich hab jetzt noch alles korrekt zusammenbekommen - es ist wieder mal etwas spät am Abend geworden...
Verbesserungsvorschläge gerne in dem Anleitungs-Thread... :-)


Viele Grüße

Michael
Cubieboard-2 mit 1wire-Bus und I2C-Extensions
Datenbank: mysql auf Ubuntu-Server
verschiedene "Satellitensysteme" mit ESP-8266

ErzGabriel

@ psycho160
Ich finde Deine Lösung die beste für mich geeignete Lösung aber leider komme ich damit nicht ganz klar.
Wo muss ich das Script hinpacken und starten, das es funktioniert?
Mein System sieht wie folgt aus:
Fritzbox
Fhem läuft auf dem Raspberry Pi, per Lan ans Netzwerk angeschlossen
Erkennen, will ich das Handy meiner Freundin und meines, beide auf Android 7.0

ThomasMagnum

Hallo ErzGabriel,

schau dir den Eintrag im Wiki (https://wiki.fhem.de/wiki/FRITZBOX#Anwesenheitserkennung_per_regelm.C3.A4.C3.9Figer_Abfrage_.C3.BCber_das_PRESENCE_Modul) bzw. den Artikel in Ottos Blog (http://heinz-otto.blogspot.de/2015/07/die-zeiten-andern-sich.html) an.

Dort steh recht genau beschrieben was zu tun ist. Bzgl. Android 7 ist die Erkennung scheinbar stark vom verwendeten Smartphone abhängig.
Bei mir funktioniert das allerdings sehr verlässlich (Galaxy S7 und weitere Android 6 sowie iOS Geräte).

Gruß, Thomas

ErzGabriel

Habe die Anleitung vom Wiki und die Anleitung von Otto probiert, bei beiden habe ich keinen Erfolg. Geräte sind immer abwesend, obwohl ich mit den Geräten aktiv im WLan unterwegs bin.
Kann aber keinen Fehler finden. Im Log steht für die Wiki Anleitung, Gerät abwesend und bei Otto's Anleitung habe ich noch nicht mal einen Eintrag im Log.

Otto123

Hi,

dann poste doch mal Deine 99_myUtils.pm. Ich vermute die ist falsch angelegt.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

ErzGabriel

Glaube ich zwar nicht, weil die Kalender Funktion klappt ohne Probleme aber ich bin für jede Hilfe dankbar.
#########################################
##########                     ##########
########## Datei Grundstruktur ##########
##########                     ##########
#########################################

package main;

use strict;
use warnings;
use POSIX;


sub
myUtils_Initialize($$)
{
  my ($hash) = @_;
}

########## Datei Grundstruktur Ende ##########

########## Google Kalender Aktionen ##########

sub
KalenderAktion($$)
{
  my ($KalenderEreignis, $KalenderUids) = @_;
  my @uids=split(/;/,$KalenderUids);
  my $aktion;

Log3 undef, 3, "Kalenderereignis:".$KalenderEreignis;

  if($KalenderEreignis eq "start:") { $aktion = "on" } else { $aktion = "off" }

Log3 undef, 3, "Kalenderaktion:".$aktion;

  #falls mehrere Termine gleichzeitig starten, diese nun durchlaufen
  foreach my $uid (@uids)
  {
     #Summary auslesen und prüfen, ob es sich um ein Device handelt
     my $Device = fhem("get Kalender_Aktion summary $uid");

Log3 undef, 3, "Kalendersummary:".$Device;

     #falls das Device existiert, so wie es im Kalender steht kann die Schaltung direkt erfolgen
     if( defined($defs{$Device}) )
     {
Log3 undef, 3, "Kalender Device existiert";

         fhem("set $Device $aktion");
     }
  }
}

1;

########## Google Kalender Ende ##########

######## Netzwerk Gerät über Fritzbox abfragen ############
sub
NetDevDa($)
{
    my $n = 0;
    my ($Reading) = @_;
    $Reading =~ tr/:/_/;
    my @fbs = devspec2array("TYPE=FRITZBOX");
       foreach( @fbs ) {
          my $Name = ReadingsVal($_,"mac_" . $Reading,"");
          if( ($Name ne "") && ($Name ne "inactive") ) {
              $n++;
          }
       }
    if( $n == 0) {
        return 0;
    } else {
        return 1;
    }
}

CoolTux

Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Otto123

#103
Zitat von: CoolTux am 16 Juli 2017, 11:09:56
1;

Gehört ganz ans Ende Deiner myUtils
Manchmal hat man schon die richtigen Vermutungen  8)
https://wiki.fhem.de/wiki/99_myUtils_anlegen
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

ErzGabriel

Komisch, das die Kalender Funktion dann klappte.
myUtils geändert, aber an der Anwesenheit hat sich nichts geändert.
Gerät im WLan aktiv und laut Ping auch vorhanden, Funktion von Otto, Gerät abwesend und im Log nichts zu finden.
Fhem und Gerät neu gestartet, MAC Adresse mehrmals auf Richtigkeit kontrolliert.