[Modul] FritzBox (Ersatz für FritzBox-Project)

dump.txt (8,7 KB)

Die Instanz stand auf IDG, davon ist der erste Teil. Ich habe dann auf IDG2 umgestellt, davon ist der zweite Teil.

Hi,
bei der Hosttabelle fände ich Name und Verbindung linksbündig und IP+MAC monospaced eleganter.

Ralf

Hallo Michael,
Habe gleich nach Deiner Ankündigung die Module installiert. Die Fritzbox-Discovery zeiget zunächst nichts an. Erst nachdem ich den Konfigurator installiert habe, erschien dieser dann dort. Allerdings rosa unterlegt. Einige Services habe ich dann über den Konfigurator angelegt. Mit Ausnahme der Services unter igd2Desc .xml klappte das Problemlos. Beim Anlegen unter igd2Desc .xml bekam ich eine Fehlermeldung. War nur zu müde, um hier strukturiert weiterzumachen. Heute Vormittag klappte es dann problemlos.
Anbei einige Log-Einträge von heute Vormittag:

28.06.2021 10:24:36 | 34769 | ERROR   | InstanceManager      | Kann Schnittstellen-Instanz nicht erstellen: 
Fatal error: Uncaught Error: Class 'FritzBoxModulBase\Exception' not found in F:\DATA\Symcon\modules\.store\de.nall.chan.fritzbox\libs\FritzBoxBase.php(6) : eval()'d code:177
Stack trace:
#0 F:\DATA\Symcon\modules\.store\de.nall.chan.fritzbox\libs\FritzBoxBase.php(6) : eval()'d code(120): FritzBoxModulBase->RegisterProfile(2, 'FB.MByte', '', '', ' MB', 0, 0, 0, 2)
#1 F:\DATA\Symcon\modules\.store\de.nall.chan.fritzbox\FritzBox WAN Common Interface\module.php(67): FritzBoxModulBase->RegisterProfileFloat('FB.MByte', '', '', ' MB', 0, 0, 0, 2)
#2 C:\Windows\System32\-(3): FritzBoxWANCommonInterface->ApplyChanges()
#3 {main}
  thrown in F:\DATA\Symcon\modules\.store\de.nall.chan.fritzbox\libs\FritzBoxBase.php(6) : eval()'d code on line 177


28.06.2021 10:36:59 | 28570 | ERROR   | FlowHandler          | Kann Daten nicht zur Instanz #28570 weiterleiten: 
Warning: strpos(): Empty needle in F:\DATA\Symcon\modules\.store\de.nall.chan.fritzbox\FritzBox Callmonitor\module.php on line 504
RESULT:1

28.06.2021 13:05:23 | 28570 | ERROR   | FlowHandler          | Kann Daten nicht 
zur Instanz #28570 weiterleiten: Warning: strpos(): Empty needle in 
F:\DATA\Symcon\modules\.store\de.nall.chan.fritzbox\FritzBox 
Callmonitor\module.php on line 504 RESULT:1

Außerdem vermisse ich noch dieVoip-Services :

[urnXVoIPcomserviceIdXVoIP1] => Array
                (
                    [descXML] => tr64desc.xml
                    [uri] => urn:dslforum-org:service:X_VoIP:1
                    [location] => http://192.168.31.1:49000/upnp/control/x_voip
                    [SCPDURL] => x_voipSCPD.xml

Wenn ich damit die Klingelsperre durchführen kann, könnte ich mich endlich von meiner alten http-Schnittstelle verabschieden.Ist da noch was geplant?
An Aktionen habe ich bisher die Rufumleitung getestet. Klappt. Ich bleibe am Ball.
Du willst ja noch keine Requests haben, aber bevor ich es wieder vergesse: Zusätzlich zu den Webfront-html-Tabellen wären json-codierte Arrays m.E. sinnvoll. Dan könnte man diese auch individuell weiter verarbeiten (z.B. auch für IPS-View.) In den angelegten Device-Variablen (Lan und WLAN) fehlen im Gegensatz zum FB-Projekt die zusätzlichen Eigenschaften (IP, Netzqualität).
Im übrigen bin ich nicht der Meinung, bei einer Mesh-Installation die Repeater zu ignorieren, denn dann hat man keine weitergehenden Informationen zu den WLAN-Devices.
Insgesamt sieht das ganze schon sehr gut aus, tolle Arbeit. Vielen Dank - das schafft neue Perspektiven.
BONOX

Da @Nall-chan sie nicht mehr als einzelne Variablen anlegt, müsste ich ein paar Dinge umbauen. Das ist aber nicht so viel arbeit und ich wollte da eh mal ran. Ich nutze den Online Status einzelner Geräte zu Anwesenheits- und Überwachungszwecken. Einiges ist schon auf eigene pings umgestellt.

Aber die FB ist da auch nicht so optimal, wenn sich bei einer VM die MAC ändert, was QNAP leider immer beim reboot macht, dann stimmt die Zuordnung auch nicht mehr und es gibt lauter Devies mit gleichem Namen und verschiedener MAC.

Hallo @ralf,
kannst Du doch in der Instance einstellen, dass Variablen angelegt werden sollen. Klappt bei mir auch. Allerding fände ich einen json-codierten Array besser.
Gruß BONOX

ok, ich hatte noch nicht alle Instanzen offen, so nebenbei ist eher Fehlersuche und rumspielen machbar :innocent:.

@Nall-chan
Hallo Michael, ich habe die Rufsperren getestet. Funktioniert für Telefonbücher > 0.
Getestet über Rquest-Actin und im Testbereich der Instanz.
Funktioniert nicht für das Telefonbuch 0 (Standard). Da das bei mir leer ist habe ich es in der FB auf gesperrt gesetzt. Entsperren zeigt keine Reaktion.
Meine FB ist übrigen eine 4790.
Ich wollte eine zweite Fritzbox (7530) über VPN (Ferienwohnung) integrieren.: Neuen Konfigurator, neuer IO-Splitter und neuen Port auf die VPN-IP. Antwort: not authorisized.
Dort läuft noch die 7.21-Firmware. Logon ohne Userid. Kann es daran liegen?
BONOX

Nö, das kommt nicht.
Aber es gibt alle Funktionen der Box auch als Instanz-Funktion.
Dokumentation folgt noch, aber zum spielen bringt das dich hier weiter:

int FB_GetHostNumberOfEntries(12345);
array FB_GetGenericHostEntry(12345, int $Index);
string FB_GetHostListPath(12345);

Jup, Gilt auch für Android und iPhone. Darum als erstes bei den Geräten die Funktion private / anonyme MAC-Adresse ausschalten. Sollte das QNAP auch können, weil wechselnde MACs mögen DHCP-Server ja auch nicht :slight_smile:

Gibt es schon, sind die Anrufblockaden und finden sich in der Telefonie-Instanz.
Bei der x_voipSCPD ist die Wahlhilfe enthalten, die fehlt noch (siehe oben ToDo).

Die gab es vorher nur bei WLAN und sind auch wieder bei WLAN-Instanzen enthalten.

Bitte mach wie du meinst, kannst du alles in der Instanz konfigurieren.

@all
Die Fehler bei der Einrichtung der Instanzen schaue ich mir heute abend an. Ebenso das Thema mit der DSL-Instanz.
Ich empfehle immer den Konfigurator zu benutzen, damit die Instanzen gleich korrekt konfiguriert werden. Gerade bei dem Thema IGD/IGD2 weiß doch keiner was er manuell auswählen soll :stuck_out_tongue:
Michael

Warum neuen Port? Die Box sollte innerhalb des VPN auch über 49000 erreichbar sein, oder du benutzt https:// mit port 49443

Dann benutze im FritzBox-IO den Namen ‚root‘, eventuell funktioniert das.
Außerdem muss der Fernzugriff auf der Box aktiv sein und dein Symcon per Connect-Dienst erreichbar sein und das auch im FritzBox-IO aktiviert sein.
Michael

Das normale Telefonbuch kann imho nicht dafür benutzt werden. Zumindest kann ich das in der FritzBox nicht auswählen. Die Sperr-Telefonbücher haben glaube nichts mit dem normalen zu tun.
Außer du wählst gezielt einen Kontakt aus dem normalen Telefonbuch aus.

Sperre/Entsperre ist aber (siehe ToDo) auch noch nicht korrekt / gut übersetzt. Eventuell ist dann der Fehler auch weg, wenn ich das fertig habe :slight_smile:
Michael

Die Klingelsperre ist etwas anderes als die Rufblockade (kann individuell pro Gerät eingestellt werden. Wenn ich ins Bett gehe, möchte ich Schlafzimmer nicht gestört werden, aber meine Frau im Wohnzimmer soll das Telefon dort noch hören). Laut AVM-Doku sollte die im x_voipSCPD enthalten sein. Als Workaround werde ich bis dahin die Rufblocke einsetzen.

Du hast recht, das hatte ich selbst im FB-Projekt eingebaut. Sorry

Schade, aber mit den Instance-Funktionen werde ich wohl zurecht kommen.
BONOX

Sorry, war ein Freudscher-Verschreiber - Ich meinte IO-Instance. Bei meiner ersten FB ist der Port allerdings 1012 - analog zum Call Monitor. Klappt das ganze überhaupt (2 identische Event-Receiver). Beim FB-Projekt, hatte ich das auf einem anderen Rechner installiert und die relevanten Daten per RPC an die Zentrale geschickt. War hier nur ein Versuch, den ich ggf auch abbrechen kann.
BONOX

Die IO-Instanz (Clientsocket unter IO) ist nur für den Anrufmonitor zuständig.
Brauchst du nicht, wenn du keinen Anrufmonitor benutzen willst. Und ja klar geht der Port mehrfach, ist ja abgehend zur Box.

Der Event-Receiver geht immer über den FritzBox-IO (unter Splitter) und über einen pro IO eigenen Webhook. Also kein Problem.

Teste nur einmal den FritzBox-IO zu verbinden.

Michael

Der Zugriff auf die 2. Fritzbox funktioniert nun. Es klappte vorher nicht, weil für die lokale Anmeldung ein login ohne UserId konfiguriert war. Das Leerlassen der Userid im FB-IO-Splitter führte zu dem Autorisierungsfehler. Nachdem ich das geändert und einen eigenen User angelegt habe, funktioniert der Zugriff analog zur 1. FB.

Moin Michael,

danke für den Hinweis. War ganz einfach und nu ist es wie gewünscht. Falls es jemand braucht es „versteckt“ sich hinter CSS und mit

font-family:Arial, sans-serif

kann man dann z.B. Arial wählen bzw. mit

font-family:Courier

einen monospaced Zeichensatz wählen.

Ralf

1 „Gefällt mir“

Hallo Michael, meine Euphorie bzgl. der Anbindung einer 2. FB wurde nun doch getrübt. Ich kann zwar alle Dienste ohne Events installieren. Bei den event-gesteuerten Services (Ereignisse = ja), bekomme ich die Fehlermeldung, dass eine Substription nicht möglich ist. Die Instance wird zwar angelegt (nicht unter der entsprechenden Kategorie), ist jedoch unvollständig.
Hier die Eintragungen aus dem Log:

28.06.2021 17:59:40 | 11995 | ERROR   | FlowHandler          | Kann Daten nicht zur Instanz #11995 weiterleiten: 
Warning: strpos(): Empty needle in F:\DATA\Symcon\modules\.store\de.nall.chan.fritzbox\FritzBox Callmonitor\module.php on line 504
RESULT:1

Ich habe entsprechend Deinem Rat keinen Monitor und auch keinen Client-Socket installiert. Muss ich ggf. doch einen Client-Socket mit Port 49000 anlegen? Kann im Moment nicht weiter testen, da meine remote FB beim Firmwareupdate den Geist aufgegeben hat. Hoffentlich geht es morgen wieder.
Gruß BONOX

Nein. Der ClientSocket ist ausschließlich für den Anrufmonitor/Callmonitor. Die Fehlermeldung muss ich mir anschauen.

Dann kann deine FritzBox den IPS-Server nicht erreichen. Die URL welche die FritzBox erreichen muss, steht im FritzBox-IO (unter Splitter). Wenn du eine VPN Anbindung hast, war mein Hinweis zum Connect-Dienst und dem Haken im FritzBox-IO natürlich falsch.
Michael

Moin Michael,

vielen Dank für das neue Modul, welches man wirklich nur als super bezeichnen kann :loveips:

Im Einsatz ist bei mir eine FB 7590 mit SW 154.07.27. Aufgefallen sind mir folgende Punkte:

  • Zum Teil sind die Instanzen in Englisch und Deutsch vorhanden

  • Bei Hosts und bei WLAN gibt es die Schalter „Erzeuge Variablen für erweiterte Informationen“ (WLAN) und „WLAN/Netzwerkgeräte-Variablen automatisch umbenennen“. Egal wie die Schalter stehen sieht das Ergebnis nach Löschen der Geräte und Neueinlesen immer identisch aus. Bei den Geräten wurde bislang immer die IP-Adresse dahintergesetzt, was derzeit nicht der Fall ist.

  • Beim Anlegen der Instanz upnp/control/wanipconncetion1 kommt es zum folgenden Fehler. Port Weiterleitungen sind bei mir nicht aktiviert.

Warning: UPnPError(402)
Invalid Args in C:\ProgramData\Symcon\modules\.store\de.nall.chan.fritzbox\libs\FritzBoxBase.php on line 331
 (Code: -32603)

Ansonsten konnte ich bislang nichts feststellen :slight_smile:

Gruß
Hans

Hallo Michael auch von mir ein dickes Lob !
musste heute zwangsläufig vom „Projekt“ auf dein Modul umstellen,
wirklich gut strukturiert/übersichtlich, zumal modular aufgebaut, muss nicht alles installiert werden, da war das „Projekt“ doch sehr „ballaststoffreich“
Gruß Axel

Korrekt, die ist für Cable Geräte und bei DSL ist das eine anderen. Fix dafür ist schon fertig, aber noch nicht online.

Wenn du den Konfigurator benutzt sind sie in deiner eingestellten Sprache. Unter Instanz hinzufügen sind beide Sprachen enthalten.

Die Erweiterten Information gibt es nur bei WLAN, nicht bei Host. Und sie betreffen nicht die WLAN-Geräte, sondern die WLAN-Variablen wie Restlaufzeit, Automatische Abschaltung usw…

Korrekt. Die Namen entsprechen jetzt den Namen wie sie in der FritzBox vorliegen. Und darauf bezieht sich auch das Variablen automatisch umbenennen.
Wie schon oben in der ToDo steht:

Wird es da später eventuell die Möglichkeit geben z.B. ein Namens-Schema und/oder autorename zu setzen, oder auch Variablen zu löschen/sperren. Das ist aber nicht zum Release geplant.
Aktuell kannst du dann nur das automatische umbenennen abschalten und die IP selber eintragen.
Michael