FB 7490 WLAN Presence Probleme mit fhem auf Raspi

Begonnen von Fredi69, 30 Dezember 2015, 20:25:10

Vorheriges Thema - Nächstes Thema

raspi55

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.

Wernieman

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.
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

raspi55

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.

raspi55

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

tupol

In welche Datei hast Du checkFritzMACpresent kopiert? Ist es noch da?

raspi55

Das war der richtige Tip. Problem vor der Tastatur. Hatte die 99_myUtils editiert.

Gesendet von meinem SM-G903F mit Tapatalk


pjakobs

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

Wernieman

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)
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

pjakobs

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