Ich nutze fhem auf einem Raspi2 mit dem FRITZBOX Modul.
Bisher hat die Presence Lösung (checkFritzMACpresent) aus dem Wiki sehr zuverlässig funktioniert. Seit einigen Tagen leider nicht mehr.
Geändert wurde das Fritz OS auf 6.5 und der Raspi wurde von LAN auf WLAN umgestellt.
Hat jemand eine Idee warum die FRITZBOX Presence Lösung nicht mehr zuverlässig funktioniert?
Keiner hat irgendein Ansatz?
Problem ist halt das der online Status der iPhones nicht mehr zuverlässig erkannt wird. Mache ich einmal einen restart von fhem passt es wieder.
Moin Fredi69,
mir war so, als wenn man für einige Wlan-sticks beim Rpi etwas ändern muss, damit die nicht in Stromspar-modus "gehen". Gibt es von Adafruit eine Anleitung, glaube die war für einen Wireless Access Point.
Vieleicht hilft es Dir...
Viele Grüße
Sunny
Zitat von: Sunny am 01 Januar 2016, 21:17:34
Moin Fredi69,
mir war so, als wenn man für einige Wlan-sticks beim Rpi etwas ändern muss, damit die nicht in Stromspar-modus "gehen". Gibt es von Adafruit eine Anleitung, glaube die war für einen Wireless Access Point.
Vieleicht hilft es Dir...
Viele Grüße
Sunny
Danke, das habe ich gesetzt.
Nutzt sonst niemand die checkFritzMACpresent Lösung aus dem Wiki?
Hallo,
ich frage auch die MAC-Adresse aus der Fritzbox ab. Habe das gleiche Problem. Das iPhone wird immer als Active gekennzeichnet.
Komischerweise klappt es bei einem Android Handy ohne Probleme.
Habe das Problem schon unter
http://forum.fhem.de/index.php/topic,46259.0.html (http://forum.fhem.de/index.php/topic,46259.0.html)
gepostet.
Ich glaube nicht, dass der Fehler die FB ist.
Vielleicht weiß ja irgendwer hier Bescheid.
Gruß
Dominik
Ich kenne die von euch verwendete Lösung nicht und leider verratet ihr auch nicht, um welche iPhone-Modelle es sich handelt. Bei mir läuft die Lösung von Otto123 (http://heinz-otto.blogspot.de/2015/07/die-zeiten-andern-sich.html) in Kombination Fritz!Box 7390, FHEM auf RaspBerry Pi 2 und iPhone 4 (ohne S). Vielleicht versucht ihr mal diese Methode.
Allerdings: iPhones und Anwesenheitserkennung waren schon immer zickig. Mal funktioniert es, mal nicht. Bei läuft es seit über 3 Jahren völlig problemlos, früher mit der WhoIsAtHome-Routine (http://www.fhemwiki.de/wiki/FritzBox:_WhoIsAtHome).
Die Otto Lösung nutze ich auch in Kombination mit einem iPhone 6, RPi2 und FB 7940.
Ging bis vor ein paar Wochen noch problemlos.
Wenn es jetzt nichtmehr geht tippe ich erstmal auf ein iPhone-Update.
Es kann natürlich auch ein FHEM-Update sein aber es wird sich ja noch immer hartnäckig ausgeschwiegen was die Codes angeht.
Aber vermutlich bin ich nur einer der wenigen die keine Lust haben sich die Infos ala "Schnitzeljagd" zusammen suchen zu müssen.
Warum macht man eigentlich eine Abfrage per polling?
Habe mir ein notify für mac_* (o.Ä. kann gerade nicht nachgucken) eingerichtet und werte dann den Status aus.
Hallo Puschel74,
ich glaube nicht, dass es am iPhone liegt. Ich kann ja im FRITZBOX Modul sehen, dass das iPhone nicht mehr im Netz ist.
Nur im Presence Modul wird das Ding immer als anwesend erkannt...
Keiner eine Idee?
Danke!
Tja, dann wäre es vermutlich hilfreicher wenn du uns deinen verwendeten Code zeigst - aber das habe ich ja bereits geschrieben.
Alles andere wäre dann nur "Glaskugelrubbeln".
Meine Presence-Devices funktionieren einwandfrei, egal ob Windows oder Android.
Die Ursache ist wohl eine Änderung des Returnwerts der Fritzbox mit 6.51,
ReadingsVal($_, $MAC, "weg")
liefert nicht mehr den Status des Endgeräts, sondern einfach den Namen und die letzte bekannte Verbindung z.B. (WLAN).
android-2b745bcd9a9a6d55 (WLAN)
Leider habe ich selbst erst vor ein paar Tagen angefangen, mich mit fhem zu beschäftigen und entsprechend ist mein Überblick noch etwas mau und meine aktiven Perl Zeiten liegen auch schon über 10 Jahre zurück, aber:
Mit dem folgenden Kommando bekommt man einen Hash, deren Wert "NewActive" genau das ist, was wir wollen, ein Bool, der angibt, ob dieses Endgerät im Netz angemeldet ist.
Wenn mir jetzt noch jemand sagt, ob man den Hash direkt in der Presence Definition dereferenzieren kann, oder ob wir eine Funktion brauchen, dann sind wir m.E. am Ziel.
get FritzBox tr064Command hosts:1 hosts GetSpecificHostEntry NewMACAddress
$VAR1 = {
'GetSpecificHostEntryResponse' => {
'NewInterfaceType' => '802.11',
'NewAddressSource' => 'DHCP',
'NewIPAddress' => '192.168.29.23',
'NewLeaseTimeRemaining' => '861845',
'NewHostName' => 'android-b2f3bc3cf1bef29',
'NewActive' => '1'
}
};
Grüße
pj
Das würde mich überraschen, wenn über tr064 was anderes zurückkommt als über das Modul-Reading. Das Problem liegt in der Fritzbox selbst und nicht in den Schnittstellen. Die Fritzbox braucht manchmal bei einigen Geräten länger, um eine Gerät abzumelden. Bei solchen Geräten hilft nur ein ping über das Presence-Modul.
ich hab's mehrfach versucht, immer mit dem gleichen Ergebnis: in den Readings bleibt der Wert immer [hostname] (WLAN) und per tr064 query bekomme ich sofort den aktuellen Wert.
D.h. das Reading verschwindet nie? Auch nicht nach einem set update?
Also bei mir verschwindet es auch bei OS 6.51. Da hat sich nichts geändert. .... und das Modul wertet natürlich den "Aktive"-Wert aus.
Hallo,
das muss an FHEM liegen. Bis gestern funktionierte es noch, nach dem FHEM-update (dabei wurde auch das fritzbox-Modul aktualisiert) geht es nicht mehr.
Die Fritte hat nichts damit zu tun.
Hast Du mal das alte Modul probiert, also wieder eingespielt?
Wenn das ann funktioniert, wissen wir, das es nicht an der Fritte liegt. Wenn es auch nicht funktioniert, liegt es an der Fritte.
FRITZBOX.pm alleine zurückspielen brachte es nicht.
Habe mal das letzte Backup vor dem update zurückgespielt. Jetzt geht's wieder. Meine Fritzbox (6360) hat kein update bekommen.
Somit können wir die Fritten ausschliessen. Das letzte update hatte ich letzte Woche durchgeführt. Bleiben also nur Änderungen der letzten Tage.
Meldung im LOG nach update: - error while processing check: unexpected function output (expected 0 or 1): Undefined subroutine &main::checkFritzMACpresent called at (eval 1379) line 1
habe an der Konfig nichts geändert. Meldung ist Folge des updates
In welche Datei hast Du checkFritzMACpresent kopiert? Ist es noch da?
Das war der richtige Tip. Problem vor der Tastatur. Hatte die 99_myUtils editiert.
Gesendet von meinem SM-G903F mit Tapatalk
hmm...
Ich hatte ein Problem und dachte mir "ich schreib schnell ne Regex" - da hatte ich zwei Probleme.
Am Ende kam folgendes dabei heraus:
sub checkFritzMACPresent($$) {
# Benötigt: Name der zu testenden Fritzbox ($Device),
# zu suchende MAC ($MAC),
# Rückgabe: 1 = Gerät gefunden
# 0 = Gerät nicht gefunden
my ($Device, $MAC) = @_;
my $HostStatus = 0;
my $HostResponse;
my $HostResponseS = fhem("get $Device tr064Command hosts:1 hosts GetSpecificHostEntry NewMACAddress $MAC");
$HostResponseS =~ s/^(?:.*\n){1,3}//;
$HostResponseS =~ s{\A\$VAR\d+\s*=\s*}{};
Log 5,"HostResponseS: $HostResponseS" ;
$HostResponse = eval $HostResponseS or return 0;
$HostStatus = $HostResponse->{'GetSpecificHostEntryResponse'}->{'NewActive'};
Log 4,"HostStatus: $HostStatus" ;
return $HostStatus
funktioniert prima.
Aber: auch hier dauert es ca. 5 Minuten, bis der away Status gesetzt wird.
Wenn ich so drüber nachdenke ist das aber kein Problem, denn lieber fünf minuten länger heizen als dauernd hin und her schalten, nur weil ein Gerät nicht stabil im Netz hängt.
Grüße
pj
Zum away ... bei einigen Geräten dauert es bei mir bis zu 15 Minuten, bis es endgültig von der FritzBox abgemeldet ist. Aber es ist auch verständlich, denn wie soll die Fritbox wissen, das ein gerät nicht mehr "da" ist? Laut Spezifikation kann es bis zu 30 Minuten dauern (TimeOut)
na ja, man könnte es schon schneller erzwingen, z.B. kann man über TR064 auch die Connection Speed auslesen. Wenn die 0 ist, dann hat das Gerät das WLAN zumindest insoweit verlassen, dass keine Kommunikation mehr möglich ist.
Aber: es ist wirklich nicht allzu sinnvoll, die Abwesenheitserkennung zu "trigger happy" zu machen, denn gerade bei meinen MAX Geräten führt das nur zu einer immer länger werdenden Queue von Änderungen, die garnicht zeitig übertragen werden können.
pj