Presence und iPhone

Begonnen von dascrip, 27 Dezember 2015, 14:52:35

Vorheriges Thema - Nächstes Thema

dascrip

Hallo Zusammen,

ich versuche eine Anwesenheitserkennung per WLAN & Presence zu realisieren (Rasperry PI & FritzBox). Leider erscheint mein iPhone nach abschalten des WLAN immer noch als Present in der Liste, obwohl es weder an der Fritzbox als angemeldet erscheint, noch in FHEM in der Fritzboxanwesenheitserkennung.

Ich habe folgendes in der fhem.cfg definiert:

#Anwesenheitserkennung
define FritzBox FRITZBOX
attr FritzBox allowTR064Command 1
attr FritzBox room Sonstiges
define FritzRepeater1750E FRITZBOX
attr FritzRepeater1750E allowTR064Command 1
attr FritzRepeater1750E fritzBoxIP 192.168.2.22
attr FritzRepeater1750E room Sonstiges

define DoBrosiPhone PRESENCE function {NetDevDa("78:7D:5F:24:89:38")} 10 30
attr DoBrosiPhone userattr home_structure home_structure_map structexclude
attr DoBrosiPhone event-on-change-reading state
attr DoBrosiPhone home_structure HomeStatus
attr DoBrosiPhone room Sonstiges
attr DoBrosiPhone sortby 6


Und folgenden Code habe ich aus dem Forum für die 99_myutils übernommen:
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;
    }
}


Beim Handy meiner Frau (Android) funktioniert es einwandfrei? Woher kann sich das System die MAC-Adresse ziehen?

Hat irgendwer eine Idee?

Danke im Voraus.

Gruß

Dominik

Otto123

Hallo Dominik

schau mal bitte ins Wiki, da gibt es eine ähnliche Routine mit Logging. Da siehst Du was die Sub wirklich tut

Du kannst auch mal mit deletereading alle readings löschen, vielleicht gammelt ja irgendwas altes rum.

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

dascrip

Hallo Otto,

vielen Dank für Deine Hilfe. Habe mal versucht das Logging einzurichten. Da ich aber eine Fritzbox und einen FB repeater betreibe, ist es schwer das Logging hinzukriegen. So gut bin ich dann in Programmieren nicht, dass ich die Lösung mit dem Array auch für das Logging hinkriege.

Habe auch mal ein deletereading DoBrosiPhone durchgeführt. Danach geht das ganze wieder für eine umbestimmte Zeit, um danach wieder nicht zu funktionieren. Wenn ich dann wieder deletereading DoBrosiPhone mache, geht es sofort wieder. Strange?!

Irgendeine Idee?

Danke


Gruß

Dominik

Otto123

So sollte das Logging, gehen. Ich habe in der zweite Variante das Logging extra rausgenommen  8)
sub checkAllFritzMACpresent($) {
  # Benötigt: nur die zu suchende MAC ($MAC),
  # Es werden alle Instanzen vom Type FRITZBOX abgefragt
  #
  # Rückgabe: 1 = Gerät gefunden
  #           0 = Gerät nicht gefunden
  my ($MAC) = @_;
  # Wird in keiner Instanz die MAC Adresse gefunden bleibt der Status 0
  my $Status = 0;
  $MAC =~ tr/:/_/;
  $MAC = "mac_".uc($MAC);
  my @FBS = devspec2array("TYPE=FRITZBOX");
    foreach( @FBS ) {
my $StatusFritz = ReadingsVal($_, $MAC, "weg");
if ($StatusFritz eq "weg") {
Log 1, ("checkAllFritzMACpresent ($_): $MAC nicht gefunden, also abwesend.");
} elsif ($StatusFritz eq "inactive") {
Log 1, ("checkAllFritzMACpresent ($_): $MAC ist >inactive<, also abwesend.");
} else {
  # Reading existiert, Rückgabewert ist nicht "inactive", also ist das Gerät am Netzwerk angemeldet.
  Log 1, ("checkAllFritzMACpresent ($_): $MAC gefunden, Gerät heißt >$StatusFritz<.");
  $Status = 1;
}
    }
  return $Status
}


Das Problem wird sein, dass die Fritzbox Dein Device irgendwie behält. Ich hatte das gestern mit einem Raspberry gehabt, der war mit zwei Schnittstellen (Ethernet und Wlan) angemeldet. Wenn ich ihn runtergefahren habe und den Wlan Stiick gezogen habe blieb der Eintrag fürs Wlan stabil. Erst nach Boot der FB war alles gut  :o

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

The-Holgi

Hallo Dominik,
sieh dir doch mal das Geofancy Modul an.
Funktioniert mit meinem iPhone sehr gut. In diesem Wiki wird es weiter unten recht gut beschrieben:
http://www.fhemwiki.de/wiki/Anwesenheitserkennung
Einziger Nachteil aus meiner Sicht ist, das du die Gefency oder Geofancy app auf dem iPhone installieren mußt.

Gruß Holgi
Raspberry Pi 5

dascrip

Hallo Otto,

vielen Dank. Funktioniert soweit erstmal. Ich lass jetzt mal laufen, bis der Fehler wieder auftritt. Vielleicht finde ich heraus, woran es liegt.

@Holgi: Habe ich schon gesehen, finde nur die Geofancy App nicht so den Burner, wenn ich es vllt. auch mit Hausmitteln realisieren kann.

Danke

Dominik

Fredi69

Zitat von: Otto123 am 15 Januar 2016, 20:45:48
Das Problem wird sein, dass die Fritzbox Dein Device irgendwie behält. Ich hatte das gestern mit einem Raspberry gehabt, der war mit zwei Schnittstellen (Ethernet und Wlan) angemeldet. Wenn ich ihn runtergefahren habe und den Wlan Stiick gezogen habe blieb der Eintrag fürs Wlan stabil. Erst nach Boot der FB war alles gut  :o

Gruß Otto

Das Problem habe ich aktuell mit unseren iOS Geräten auch.
fhem auf Raspberry Pi 3
FRITZ!Box7490, Fritz!Box 3270 AP, 3xHMLAN, CUL868, nanoCUL 433 für IT, JeeLink für LaCrosse, HUE Bridge 2.0, Samsung UE46C8790 (STV), mehrere Homematic, Intertechno, Shelly und LaCrosse Komponenten

dascrip

Hallo Zusammen,

Sorry, für die späte Antwort, aber ich habe meist nur am WE Zeit für fhem ;-<
Ich habe es jetzt einmal analysiert.

So sieht der Eintrag aus, wenn das iPhone da ist:

Zitat2016.01.24 10:32:51.671 1: checkAllFritzMACpresent (FritzBox): mac_78_D7_5F_24_82_58 nicht gefunden, also abwesend.
2016.01.24 10:32:51.672 1: checkAllFritzMACpresent (FritzRepeater1750E): mac_78_D7_5F_24_82_58 gefunden, Gerät heißt >PC-192-168-2-
21<.

So wenn nicht:

Zitat2016.01.24 11:39:33.659 1: checkAllFritzMACpresent (FritzBox): mac_78_D7_5F_24_82_58 gefunden, Gerät heißt >DoBros-iPhone<.
2016.01.24 11:39:33.660 1: checkAllFritzMACpresent (FritzRepeater1750E): mac_78_D7_5F_24_82_58 gefunden, Gerät heißt >PC-192-168-2-21<.

Im Repeater selber ist das Gerät aber nicht mehr zu sehen bzw. wird als ungenutzte Verbindung angezeigt. Schaue ich in Fhem, wird es dort als aktiv angezeigt?!

Irgendwas stimmt doch hier nicht?

Danke für eine Hilfestellung.

Dominik

Otto123

Hallo Dominik,

naja dann scheinen die Readings im FRITZBOX Modul nicht aktualisiert zu werden. Verschiebe das ganze mal besser ins Fritzboxunterforum.

Vielleicht hat tupol ne Idee.

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

andi11

ich dachte auch zuerst, dass Geofancing übertrieben ist, und habe die Anwesenheitserkennung mit der Fritzbox gelöst. Mittlerweile schwöre ich auf das Geofancing, da es einfach viel schneller den Status aktualisiert.

dascrip

Hallo Andy,

danke für Deinen Beitrag. Ich schaue mir Geofancy mal in Ruhe an, aber wenn ich da sehe, das ich dafür die Firewall aufbohren muss, fände ich es toller, wenn presence funktionieren würde.

Du sagst quasi, 'Dominik Du hast einen Platten am Auto, dann nimm doch die Bahn, mit der fahre ich auch immer gut.' Was das Problem am Auto nicht löst  8)

Ich würde gerne verstehen, woher das Problem kommt. Oder dass mir hier irgendwer zu 100 % sagen kann, dass ist ein Bug im iPhone oder der FritzBox, dann muss ich wohl umsteigen.

Danke

Dominik

Benni

Zitat von: dascrip am 31 Januar 2016, 13:54:06
das ich dafür die Firewall aufbohren muss

Auch wenn es beim Problem mit dem Auto erst mal nicht weiterhilft ;)

Ein Aufbohren der Firewall ist für die Nutzung von Geofencing nicht unbedingt erforderlich.
Ich nutze Geofencing über die iOS-Ortsbestimmung in der ifttt-App (IF) in Verbindung mit Mailcheck: Die App verschickt je nach Standort eine Mail an ein Postfach das von FHEM überwacht wird.
So bleibt die Firewall völlig unangetastet.

Bahnfahren funktioniert bei mir so seit Monaten absolut zuverlässig und problemlos. ;D

Otto123

Zitat von: dascrip am 31 Januar 2016, 13:54:06
... wenn presence funktionieren würde.
Hallo Dominik,

presence selbst funktioniert doch! Was nicht perfekt funktioniert ist die Erkennung von Geräten. Das Geräte erkannt werden, dafür kann man alles Mögliche tun - nur schimpfen wird nicht helfen.
Also folgende Tücken sind mir bekannt (ist auch alles mehrfach hier in Diskussionen und Berichten zu finden)
Fritzbox:
Die Verbindung zum WLAN dauert etwa 1 bis 3 minuten wenn man zu Hause ankommt. Vorausgesetzt es will sich jemand verbinden.
Die Abmeldung aus dem WLAN (oder LAN) ist nicht existent, dass Gerät ist einfach weg. Damit wartet die Fritzbox ein Weilchen bis sie diesen Status meldet. Wie sie das macht und wann und warum kann keiner von uns beeinflussen.
In Verbindung mit Repeatern behält gerne mal eines von beiden Geräten den Status, dass ein Gerät da ist. Warum? Keine Ahnung, kann auch keiner beeinflussen.
Die Geräte iPhone, Android usw...
Energiesparen ist die Device, also wird versucht ständig alles abzuschalten was Strom braucht.
Wenn das das Gerät gar nicht ins Wlan will oder das einer draufschaut oder eine App was tut oder oder oder, tja können wir auch nicht beeinflussen.
Bluetooth
Geht relativ schnell (bei mir 10 sec) und ist in einem bestimmten Umkreis stabil und zuverlässig. Wird der Umkreis größer braucht man einen zweiten Bluetooth "Ermittler"

Ansonsten noch so wie Benni schreibt: Man braucht sogar nur IFTTT, der weiß nämlich selbst wo man ist 8)

Und ob Auto oder Bahn oder Fahrrad ist doch auch ne ziemlich persönliche Sache 8)

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

Benni

Zitat von: Otto123 am 31 Januar 2016, 15:16:27
Man braucht sogar nur IFTTT, der weiß nämlich selbst wo man ist 8)

Nein, weiß es nicht! Es bedient sich logischerweise der Ortungsdienste des iOS.
Fände ich auch ganz schön gruselig, wenn IFTTT selbst wüsste wo ich gerade bin ;)

Es ist sogar so, dass ich eigentlich auf IFTTT verzichten kann und das ganze über die Apple Freunde-App, die ja mit iOS sowieso schon auf dem Gerät ist, erledigen kann. Allerdings fand ich, dass IFTTT etwas zuverlässiger funktioniert.

Otto123

Zitat von: Benni am 31 Januar 2016, 16:49:26
Nein, weiß es nicht! Es bedient sich logischerweise der Ortungsdienste des iOS.
Fände ich auch ganz schön gruselig, wenn IFTTT selbst wüsste wo ich gerade bin ;)

Es ist sogar so, dass ich eigentlich auf IFTTT verzichten kann und das ganze über die Apple Freunde-App, die ja mit iOS sowieso schon auf dem Gerät ist, erledigen kann. Allerdings fand ich, dass IFTTT etwas zuverlässiger funktioniert.
Isch haabe gar gein eifone ....  8)

Ich  meinte nur, man braucht die geofancy app nicht. IFTTT weiß durch den Ortungsdienst vom System natürlich wo es ist.

Lässt sich das durch die Freunde App so eingrenzen? Ich finde das genial, dass man in IFTTT ja ziemlich genau das Areal festlegen kann. Also Umkreis ums Ziel ...

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