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

Bitte einmal Screenshot der FritzBox-IO Instanz (Splitter) zeigen und prüfen ob der angezeigte Webhook korrekt ist und sich aus dem Netzwerk der Fritzbox erreichen lässt (Zugriff auf WebFront aus dem FritzBox-Netz reicht auch).
Lass mir bitte einmal ein Debug zukommen.

  • Jeweils bitte die Debug-Reiter vom FritzBox-IO und einer Fehlerhaften Device-Instanz öffnen und das Limit ausschalten.
  • In der Device-Instanz einmal etwas in der Konfig hin und zurückändern, so das die Einstellungen neu übernommen werden können.
  • Die Dumps der beiden Instanzen nach dem übernehmen der Einstellungen anhalten und mir zukommen lassen (mt@neo-ami.de)

Da das Event ‚PhysicalLinkStatus‘ heißt, schätze ich mal das es wirklich den physikalischen WAN-Anschluss meint, welcher hier nur Up/Down/Initializing/Unavailable als Status hat.
Es gibt dort als ‚WANAccessType‘ auch nur physikalischen und keine logischen Werte.
Die adaptive Anpassung wird da also nicht reinspielen.
Das Reconnect wirst du dort auch nicht finden, wenn es nur auf PPPoE Ebene passiert.
Das ist dann in der WAN DSL Link Instanz (die ist/war aber noch kaputt) und dort ist das Event ‚LinkStatus‘ also der logische Zustand.



Bitte einmal wie oben bei @Slummi

Screenshot der FritzBox-IO Instanz (Splitter) zeigen und prüfen ob der angezeigte Webhook korrekt ist und sich aus dem Netzwerk der Fritzbox erreichen lässt (Zugriff auf WebFront aus dem FritzBox-Netz reicht auch).
Lass mir bitte einmal ein Debug zukommen.

  • Jeweils bitte die Debug-Reiter vom FritzBox-IO und einer Fehlerhaften Device-Instanz öffnen und das Limit ausschalten.
  • In der Device-Instanz einmal etwas in der Konfig hin und zurückändern, so das die Einstellungen neu übernommen werden können.
  • Die Dumps der beiden Instanzen nach dem übernehmen der Einstellungen anhalten und mir zukommen lassen (mt@neo-ami.de)

Das alte Projekt ist nicht vergleichbar, da es die UPnP-Events zwar ausgewertet; deren ausbleiben aber nicht erkannt hat.
Es gab hier im Modul aber dazu keine Änderungen; wenn es also mit dem Modul mal funktioniert hat, und jetzt nicht mehr, dann haben sich andere Umstände geändert.

Nö… da es anders funktioniert :wink:

Das ist dann kein Wunder, und vollkommen korrekt das die Box nicht gefunden wird.



Und

Korrekt, ist ein ‚Fehler‘ im Design. Wird korrigiert.

Finger weg nicht anfassen :stuck_out_tongue:
Die Werte können sich jederzeit ändern und werden auch nicht von mir dokumentiert.
Alles was das Modul ‚intern‘ mit seinen Variablen macht ist nicht public. In einem Script Funktionen der API wie FB_GetInfo() aufrufen geht aber, nur dann muss man sich selber um die übergebenen Werte kümmern.
Eventuell kommen noch Aktionen hinzu um z.B. ‚RefreshState‘ anzubieten. Aber eine Instanz-Funktion wird es dafür nicht mehr geben.

Vollkommen egal. Das macht VS Code/CS-Fixer automatisch wenn (k)ein UTF-Zeichen im Code ist.
Und die tests\stubs sind eh von Symcon und nicht mir :smiley:



Ich vermute du hast die alten VariablenProfile vom FritzBox-Projekt nicht gelöscht. Und durch die Fehlermeldung wurde dann die IP auch nicht abgefragt.

Michael

Hallo,

ich komme drauf zurück, werde am Wochenende aber erst zum Testen kommen.

Soweit ich das bisher sehe, ist es in der Tat ein MultiCast Problem. Ich habe aktuell ein Multicast-Relay-Proxy auf der Unifi laufen und damit kann ich die FritzBox vom IPS erreichen.

Eigentlich will ich damit nur testen, ob SkyQ damit läuft und wenn nicht fliegt der wieder runter.

Das sollte aber nur die Discovery Instanz beeinträchtigen. Der Rest funktioniert auch ohne Multicast. Ist wirklich die Frage ob die Box dein Symcon erreichen kann. Eventuell wird ja die falsche URL/IP im Splitter angezeigt. Dann wäre zu prüfen ob es mit aktiven NatSupport und PublicIP läuft. Wobei das ja kein Routing wäre, sondern NAT mit Portforwarding.

Michael

Moin @Nall-chan,

hier noch ein Typo. Unter FritzBox MyFritz ist der Name der Variablen FritBox registered :wink:

Gruß
Hans

Danke, und nicht nur das. Da fehlen doch noch alle Übersetzungen…ups.
Michael

Moin @Nall-chan,

ein FB_GetInfo auf die Instanz FritzBox Geräteinformationen aktualisiert nicht die zugehörigen Variablen. Mit RefreshState funktioniert es - soll aber eigentlich ja nicht so benutzt werden :slight_smile:

Nachtrag: Ich vermute, dass mit FB_GetInfo auch gar nichts gesetzt werden soll - sorry :slight_smile: Also wäre ein FB_RefreshState wie von dir angekündigt die korrekte Maßnahme.

Gruß
Hans

GetInfo ist eine generische Funktion der API. Mach ein var_dump drum und teste mit den Instanzen.
Fast immer kommt da was zurück :wink:

Ich habe die nicht angekündigt; sondern gesagt das die nicht kommt.

Michael

Moin @Nall-chan,

das hatte ich gemacht und deshalb auch geschrieben, dass GetInfo nicht zur Aktualisierung gedacht ist.

Eventuell kommen noch Aktionen hinzu um z.B. ‚RefreshState‘ anzubieten.

Das ist es was ich meinte :wink:

Gruß
Hans

@Nall-chan Konntest du mit den Dumps, die ich dir geschickt habe etwas anfangen?

Scheinbar tritt das Problem mit der Variablenaktualisierung ja nur nach einem Update des Moduls und/oder ggf. Neustart des Dienstes auf.

Wenn ich die Einstellungen der Instanz ändere, läuft es bis zum nächsten Update/Neustart.

Habe ich bekommen, aber noch keine Zeit gefunden. Ich hoffe gerade auf den Sonntag.
Michael

Hallo, kurze Frage:
wird es im Release eine Funktion geben welche die FritzBox neustartet bzw. kann dieses auch anders gelöst werden?

Geht jetzt schon, allerdings fehlt noch die Aktion dazu.
Somit aktuell nur per FB_Reboot(ID von FritzBox-IO);
Michael

1 „Gefällt mir“

Hallo,

Würdest Du uns teilhaben lassen, wie Du das genau machst (ggf. Code posten) ?

Grüße
Proxima

Hi,
wenn Bedarf vorhanden ist stelle ich meine Ergüsse seit 35 Jahren zur Verfügung :grinning_face_with_smiling_eyes:

Du hast es so gewollt.

switch ($_IPS['SENDER']){
    case 'FritzBox':
        $nummer = $_IPS['NUMBER'];
// Die Datei tellows.csv muss angegebenen Verzeichnis von IPS liegen
// Auf https://www.tellows.de/openapi/index.html ist ein Link wie man zu einer Testdatei kommt.
// Zuerst prüfen ob es Nummer bei Tellows gibt = schlechtes Zeichen
        $file = '/var/lib/symcon/rbsoft/tellows.csv';
// Testnummer für Tellows
//        $nummer = '015214547081';
        $name = false;
        $handle = @fopen($file, "r");
        if (!$handle){
            get_tellows();
            $handle = @fopen($file, "r");
        }
        if ($handle) {
            while (($line = fgets($handle)) !== false) {
                $row = explode(';', $line);
                if ($row[0] == $nummer){
                    $name = $row[1] . ':' . $row[7] . ', ' . $row[8] . ', ' . $row[6];
                    break;
                }
            }
            fclose($handle);
        }
// checken ob und wenn ja welche Vorwahl es war
        if ($name === false){
            $file = '/var/lib/symcon/rbsoft/vorwahlen.csv';
            $name = false;
            $handle = @fopen($file, "r");
            if ($handle) {
                while (($line = fgets($handle)) != false) {
                    $row = explode(';', $line);
                    if (!empty($row[1])){
                        $pos = strpos($nummer, $row[1]);
                        if ($pos === 0){
                            $name = $row[0] . ':' . $row[2];
                            break;
                        }
                    }
                }
                fclose($handle);
                if ($name === false) $name = 'illegale Vorwahl';
            }
        }
// Wenn bisher noch nix gefunden wurde die Rückwärtsuchen von 11880 und Das Örtliche fragen. Bei gehören zum Modul.
// ID von Instanz Rückwärtssuche 11880
        if ($name === false) $name = CIRS_GetName(55629, $nummer);
// ID von Instanz Rückwärtssuche Das Örtliche
        if ($name === false) $name = CIRS_GetName(26033, $nummer);

        break;
}

benötigte Vorwahl-Datei hängt am Post. Hier kann man den Namen bestimmen der in der Anrufliste erscheint mit Kommentaren.

Für die VOIP-Instanz habe ich es noch umfangreicher gemacht falls da auch Interesse besteht. Dort berücksichtige ich abhängig von der Zeit eigene VIP-Nummern da man die leider von der Fritz nicht bekommt. Von 12-15Uhr bekommen alle Anrufer z.B. die Ansage „Ich mache gerade Mittagsschlaf“ :innocent:

Ich hoffe das gibt dir einen Denkanstoß.

Ralf

vorwahlen.zip (44,7 KB)

Hallo,

ich wollte mal ein kurze Update geben, beüglich der Verbindungsproblem zw. IPS und meiner FritzBox6591, die bei mir im andere VLAN hängt.

Nall-chan hat schon einige Logs und Screesnhot bekommen.
Vielleicht hat aber jemand hier noch eine Idee.

Die FritzBox antworte problemlos auf die Aktualisierungen alle halbwegs statischen Daten, die in großen Intervallen abgefragt werden

Sobald ich aber z.b. die Instanz „FritzBox WAN Common Interface 1“ dazu nehme, die in 5sec Intervall upgedatet wird, fangen die Fehler nach kurzer Zeit an:

04.10.2021, 17:04:45 | Error on subscribe | /igd2upnp/control/WANCommonIFC1

Da ändert auch das Vergrößern des Intervalls z.b. auf 60sec. nichts.
Irgentwann gehen dann auch alle anderen Instanzen auf Fehler und werden nicht mehr aktualisiert.

Meine Vermutung: die FritzBox macht dicht - und blockiert weitere Abfragen für eine Zeit x

Es gibt halt Instanzen welche sich auf Events der Box Subscribe und die welche die das nicht machen.

Der Fehler hat nichts mit dem Intervall zu tun, sondern wird geworfen wenn die Instanzen die Einstellung übernimmt und die Events nicht abonnieren kann.

Michael

Seit dem letzten Update des Moduls spinnt die Instanz „Allgemeine WAN-Schnittstelle“ irgendwie komplett. Nach dem Update ist die Instanz erst mal 5 Minuten fehlerhaft (kann nicht erstellt werden). Wenn sie dann wieder läuft und ich die Einstellungen der Instanz ändere, dauert es wieder 5 Minuten, bis diese gespeichert werden.

Ist aber nur bei dieser Instanz so. Irgendwie ist die verhext.

Gruß
Slummi

Welches Update?
Es gab doch länger keins im Store.
Michael

Das kann sein. Ich hatte das Modul damals direkt über das Modul Control eingebunden.

Ich glaube ich werde das Modul und die Instanzen bei Gelegenheit noch mal komplett neu aufsetzen. Vielleicht ist die Instanz einfach von Anfang an korrupt gewesen (warum auch immer) und es wird durch neue Versionen nicht besser.

Es ist ja auch nur diese eine Instanz, die immer wieder Probleme macht.

Nimm einfach die Version aus dem Store.
Auf GitHub liegen schon Versionen welche noch nicht zum benutzen gedacht sind :slight_smile:
Michael