Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Off Topic
  4. [gelöst] FritzBox Routen ein oder ausschalten

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    18
    1
    635

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.0k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.3k

[gelöst] FritzBox Routen ein oder ausschalten

Geplant Angeheftet Gesperrt Verschoben Off Topic
29 Beiträge 6 Kommentatoren 3.1k Aufrufe 7 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • D Dieter_P

    @bananajoe

    Möchtest Du das zwingend automatisiert haben (2 mal im Jahr)?

    Sollte der Glasfaseranschluß ok sein kämmst darüber ja mit einer VPN Verbindung ins Hausnetz also auch an der FB6591 und könntest das Routing setzen.

    Ein Benachrichtung wenn ein Anschluß ausfällt könntest Du ja dennoch bauen um dann aktiv zu werden.

    P Offline
    P Offline
    peterfido
    schrieb am zuletzt editiert von
    #4

    Die FritzBoxen unterstützen ja LTE Sticks. Hat schonmal jemand probiert, ein USB-Lan-Adapter zu nutzen, wo ein zweites WAN dranhängt? Müsste dann nur ein anderer IP-Adressbereich als der der Ur-FritzBox sein.

    Gruß

    Peterfido


    Proxmox auf Intel NUC12WSHi5
    ioBroker: Debian (VM)
    CCU: Debmatic (VM)
    Influx: Debian (VM)
    Grafana: Debian (VM)
    eBus: Debian (VM)
    Zigbee: Debian (VM) mit zigbee2mqtt

    BananaJoeB 2 Antworten Letzte Antwort
    0
    • BananaJoeB Offline
      BananaJoeB Offline
      BananaJoe
      Most Active
      schrieb am zuletzt editiert von
      #5

      @dieter_p naja, Homeoffice ist immer wichtiger und der nächste Ausfall ist ja bestimmt wenn ich nicht da bin.
      Also ich würde die Automation schon cool finden.

      Zudem ich ja eben keine Benachrichtigung nach extern bekäme solange die Route nicht aktiv ist

      ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 9 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV 750W kaskadiert || Creality CR-10 SE 3D-Drucker

      D 1 Antwort Letzte Antwort
      0
      • P peterfido

        Die FritzBoxen unterstützen ja LTE Sticks. Hat schonmal jemand probiert, ein USB-Lan-Adapter zu nutzen, wo ein zweites WAN dranhängt? Müsste dann nur ein anderer IP-Adressbereich als der der Ur-FritzBox sein.

        BananaJoeB Offline
        BananaJoeB Offline
        BananaJoe
        Most Active
        schrieb am zuletzt editiert von
        #6

        @peterfido sagte in FritzBox Routen ein oder ausschalten:

        Die FritzBoxen unterstützen ja LTE Sticks. Hat schonmal jemand probiert, ein USB-Lan-Adapter zu nutzen, wo ein zweites WAN dranhängt? Müsste dann nur ein anderer IP-Adressbereich als der der Ur-FritzBox sein.

        Also ein USB-LAN den ich hier liegen habe erkennt er schon mal nicht (RTL Chip)

        ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 9 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV 750W kaskadiert || Creality CR-10 SE 3D-Drucker

        1 Antwort Letzte Antwort
        1
        • BananaJoeB BananaJoe

          @dieter_p naja, Homeoffice ist immer wichtiger und der nächste Ausfall ist ja bestimmt wenn ich nicht da bin.
          Also ich würde die Automation schon cool finden.

          Zudem ich ja eben keine Benachrichtigung nach extern bekäme solange die Route nicht aktiv ist

          D Offline
          D Offline
          Dieter_P
          schrieb am zuletzt editiert von Dieter_P
          #7

          @bananajoe said in FritzBox Routen ein oder ausschalten:

          Zudem ich ja eben keine Benachrichtigung nach extern bekäme solange die Route nicht aktiv ist

          Wieso nicht. Simpleste Form wäre ein ESP mit Gateway 5530 und der per SMPT aktiv wird wenn die Internetverbindung der 6591 gestört ist.

          So ein Ding hab ich auch laufen als Watchdog ob der IObroker noch läuft.

          Oder Du lässt die 5530 über eine VOIP Nummer bei dir auf dem Handy anrufen.

          MartinPM 1 Antwort Letzte Antwort
          0
          • D Dieter_P

            @bananajoe said in FritzBox Routen ein oder ausschalten:

            Zudem ich ja eben keine Benachrichtigung nach extern bekäme solange die Route nicht aktiv ist

            Wieso nicht. Simpleste Form wäre ein ESP mit Gateway 5530 und der per SMPT aktiv wird wenn die Internetverbindung der 6591 gestört ist.

            So ein Ding hab ich auch laufen als Watchdog ob der IObroker noch läuft.

            Oder Du lässt die 5530 über eine VOIP Nummer bei dir auf dem Handy anrufen.

            MartinPM Online
            MartinPM Online
            MartinP
            schrieb am zuletzt editiert von MartinP
            #8

            @dieter_p Prinzipiell ist das Problem ja schon gelöst, aber eben nur manuell.
            Für eine automatische Aktivierung der Route müsste man eruieren welcher LUA Seite der Fritzbox man was schicken muss, wenn das Ganze nicht per TR Interface machbar ist

            Hier gibt es Hinweise https://mehm.net/blog/?p=1713

            Aus eigener Erfahrung habe ich aber Vorbehalte, dass eine Fritzbox, die ihre Kabel-Internet Verbindung verloren hat klaglos die gewünschten Routen abarbeitet, und ansonsten wartet, dass das Kabel-Internet sich wieder heilt.

            Ich habe schon beobachtet dass die Firmware Programmierer da auch durchaus Holzhammer Methoden programmiert haben, und die Fritzbox komplett neu starten, um die Internet Verbindung zu heilen..

            Intel(R) Celeron(R) CPU N3000 @ 1.04GHz 8G RAM 480G SSD
            Virtualization : unprivileged lxc container (debian 12 on Proxmox 8.4.14)
            Linux pve 6.8.12-16-pve
            6 GByte RAM für den Container
            Fritzbox 6591 FW 8.03 (Vodafone Leih-Box)
            Remote-Access über Wireguard der Fritzbox

            Samson71S BananaJoeB 2 Antworten Letzte Antwort
            0
            • MartinPM MartinP

              @dieter_p Prinzipiell ist das Problem ja schon gelöst, aber eben nur manuell.
              Für eine automatische Aktivierung der Route müsste man eruieren welcher LUA Seite der Fritzbox man was schicken muss, wenn das Ganze nicht per TR Interface machbar ist

              Hier gibt es Hinweise https://mehm.net/blog/?p=1713

              Aus eigener Erfahrung habe ich aber Vorbehalte, dass eine Fritzbox, die ihre Kabel-Internet Verbindung verloren hat klaglos die gewünschten Routen abarbeitet, und ansonsten wartet, dass das Kabel-Internet sich wieder heilt.

              Ich habe schon beobachtet dass die Firmware Programmierer da auch durchaus Holzhammer Methoden programmiert haben, und die Fritzbox komplett neu starten, um die Internet Verbindung zu heilen..

              Samson71S Offline
              Samson71S Offline
              Samson71
              Global Moderator
              schrieb am zuletzt editiert von
              #9

              @martinp sagte in FritzBox Routen ein oder ausschalten:

              Für eine automatische Aktivierung der Route müsste man eruieren welcher LUA Seite der Fritzbox man was schicken muss,

              Vorausgesetzt es handelt sich nicht um eine gebrandete Provider-Box, bei der der LUA-Aufruf unterbunden ist bzw. wo dieser nicht funktioniert. Insbesondere Vodafone (vormals KD) mit ihren Kabel-Boxen ist da ganz vorne mit dabei.

              Markus

              Bitte beachten:
              Hinweise für gute Forenbeiträge
              Maßnahmen zum Schutz des Forums

              MartinPM BananaJoeB 2 Antworten Letzte Antwort
              0
              • Samson71S Samson71

                @martinp sagte in FritzBox Routen ein oder ausschalten:

                Für eine automatische Aktivierung der Route müsste man eruieren welcher LUA Seite der Fritzbox man was schicken muss,

                Vorausgesetzt es handelt sich nicht um eine gebrandete Provider-Box, bei der der LUA-Aufruf unterbunden ist bzw. wo dieser nicht funktioniert. Insbesondere Vodafone (vormals KD) mit ihren Kabel-Boxen ist da ganz vorne mit dabei.

                MartinPM Online
                MartinPM Online
                MartinP
                schrieb am zuletzt editiert von
                #10

                @samson71 ich habe eine Unitymedia Box zumindest die LUA Seite mit den Kabel-Signalqualitätsseiten kann man per Javascript absaugen..
                Stabil wird das Ganze aber wohl eh nicht, wenn sich die Fritzbox alle 10 Minuten neu startet, solange die Kabel- Internet Verbindung fehlschlägt.....

                Intel(R) Celeron(R) CPU N3000 @ 1.04GHz 8G RAM 480G SSD
                Virtualization : unprivileged lxc container (debian 12 on Proxmox 8.4.14)
                Linux pve 6.8.12-16-pve
                6 GByte RAM für den Container
                Fritzbox 6591 FW 8.03 (Vodafone Leih-Box)
                Remote-Access über Wireguard der Fritzbox

                Samson71S BananaJoeB 2 Antworten Letzte Antwort
                0
                • MartinPM MartinP

                  @samson71 ich habe eine Unitymedia Box zumindest die LUA Seite mit den Kabel-Signalqualitätsseiten kann man per Javascript absaugen..
                  Stabil wird das Ganze aber wohl eh nicht, wenn sich die Fritzbox alle 10 Minuten neu startet, solange die Kabel- Internet Verbindung fehlschlägt.....

                  Samson71S Offline
                  Samson71S Offline
                  Samson71
                  Global Moderator
                  schrieb am zuletzt editiert von
                  #11

                  @martinp
                  Meine startet nicht neu. Die "pollt" nur in regelmäßigen Abständen und versucht einen Re-Connect.

                  Markus

                  Bitte beachten:
                  Hinweise für gute Forenbeiträge
                  Maßnahmen zum Schutz des Forums

                  1 Antwort Letzte Antwort
                  0
                  • BananaJoeB BananaJoe

                    So, fritz-route will schon mal bei mir nicht:

                    bananajoe@test:~$ fritz-route --user test --password test1234 --url http://192.168.1.198 --network 192.168.128.0 --subnet 255.255.255.0 --gateway 192.168.1.200 --active false
                    /usr/local/lib/node_modules/fritz-route/node_modules/css-what/lib/commonjs/parse.js:341
                                                throw new Error("Pseudo-selector ".concat(name_2, " cannot be quoted"));
                                                      ^
                    
                    Error: Pseudo-selector not cannot be quoted
                        at parseSelector (/usr/local/lib/node_modules/fritz-route/node_modules/css-what/lib/commonjs/parse.js:341:35)
                        at parse (/usr/local/lib/node_modules/fritz-route/node_modules/css-what/lib/commonjs/parse.js:83:20)
                        at Object.select (/usr/local/lib/node_modules/fritz-route/node_modules/cheerio-select/lib/index.js:191:68)
                        at LoadedCheerio._findBySelector (/usr/local/lib/node_modules/fritz-route/node_modules/cheerio/dist/commonjs/api/traversing.js:115:30)
                        at LoadedCheerio.find (/usr/local/lib/node_modules/fritz-route/node_modules/cheerio/dist/commonjs/api/traversing.js:88:17)
                        at QueryRoutes (/usr/local/lib/node_modules/fritz-route/cli.js:178:17)
                        at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
                        at async main (/usr/local/lib/node_modules/fritz-route/cli.js:251:23)
                    
                    
                    F Offline
                    F Offline
                    fastfoot
                    schrieb am zuletzt editiert von fastfoot
                    #12

                    @bananajoe sagte in FritzBox Routen ein oder ausschalten:

                    So, fritz-route will schon mal bei mir nicht:

                    das Skript geht noch von html Daten aus, die aber mittlerweile auf JSON umgestellt wurden. Ich hab mal mein Kabeldatenscript erweitert, bei mir funktioniert die Umstellung aktiv/disabled. Wenn das bei Dir grundsätzlich funktioniert dann könnte man die Aktivierung der Route von den Kabeldaten abhängig machen. schau mal ab Zeile 217. data.activatedroute0 = 0; schalted die erste Route inaktiv.
                    Das Skript läuft alle Minute und die Aktivierung der Route ist fest verdrahted, probier erstmal
                    dann kann man das anpassen

                    /**
                     * Zweck:       Liest FritzBox Kabeldaten
                     * Datum:       14.08.2024
                     * Autor:       @fastfoot
                     * Idee:        @ichderarnd
                     * Forum:       https://forum.iobroker.net/post/609832
                     *              https://forum.iobroker.net/post/685421
                     *              https://forum.iobroker.net/post/1078839
                     */
                    
                    const fs = require("node:fs");
                    const crypto = require("node:crypto");
                    
                    /**
                     * Alle Einstellungen bis Zeile 44 durchsehen um alle Features einzurichten(History+JSON Tables)
                     */
                    
                    // Wo werden die States erstellt?
                    const baseId = "0_userdata.0.FB6591Cable";
                    
                    // FritzBox Credentials, wenn String leer können User/Passwort von einem File gelesen werden
                    const filePath = "/home/iobroker";
                    const fritzBenutzer = "" || fs.readFileSync(`${filePath}/fbUser`, "utf8").replace(/$[\r\n]/gm, "");
                    const fritzPasswort = "" || fs.readFileSync(`${filePath}/fbPassword`, "utf8").replace(/$[\r\n]/gm, "");
                    
                    // Wie oft werden die Daten abgerufen? 60e3 = 1 Min. Angaben müssen in Millisekunden sein
                    const refreshRate = 1 * 60e3; // 1 Min.
                    
                    // Sollen Einträge für History erstellt werden? Feintuning ist in createStateAndOrSetValue() möglich
                    // Einstellung ist nur bis zur Erstellung der States gültig, danach hat sie keine Auswirkungen
                    const setupHistory = true;
                    const historyInstance = "sql.0";
                    // Nur Änderungen historisieren? Der iobroker-default ist true!!!
                    const changesOnly = true;
                    
                    // Maximale Versuche nach einem Fehler, danach wird das Skript gestoppt.
                    // 10 Versuche sollten einen FB-Restart überstehen bei refreshRate von 1 Min.
                    const maxRetries = 10;
                    
                    // Sollen States für JSON Daten erstellt werden? Nützlich für VIS-Tabellen
                    const createJson = true;
                    
                    // Hilfsausgaben
                    const dbg = false;
                    
                    /**
                     * Ab hier nichts abändern
                     */
                    
                    // Zeit bis zum Holen einer neuen sessionID
                    let timeTillLogout = 20 * 60e3; // 20 Min. FritzBox default,
                    
                    // Fehlerzähler
                    let errorCounter = 0;
                    
                    let sessionID = '0000000000000000';
                    
                    // Abzufragende URLs der FritzBox
                    const loginURL = `http://fritz.box/login_sid.lua?username=${fritzBenutzer}`;
                    const dataURL = "http://fritz.box/data.lua";
                    // setTimeout(() => docsisURL = "http://fritz.box/data.lua", 61e3)
                    
                    // Zwischenspeicher für Fehler pro Minute
                    const errorTable = {};
                    
                    function logout() {
                        httpPostAsync(loginURL, `logout=1&sid=${sessionID}`).then((response) => {
                            if (/<SID>(0{16})<\/SID>/.test(response.data)) console.log("Successfully logged out");
                            // log(response.data)
                        });
                    }
                    
                    async function getSid() {
                        const tstChallenge = new RegExp(/<Challenge>([a-f0-9]{8})<\/Challenge>/);
                        const tstSid = new RegExp(/<SID>([a-f0-9]{16})<\/SID>/);
                        // const loginURL = `http://fritz.box/login_sid.lua?username=${fritzBenutzer}`;
                        let challenge = '';
                        let sid = '';
                        let response = await httpGetAsync(loginURL);
                        if (response.statusCode === 200) {
                            if (tstChallenge.test(response.data)) {
                                challenge = response.data.match(tstChallenge)[1];
                            }
                        } else throw new Error('Fehler beim Holen der Challenge!');
                        const utf16le_encoded = Buffer.from(`${challenge}-${fritzPasswort}`, "utf-16le");
                        const challengeResponse = crypto.createHash("md5").update(utf16le_encoded).digest("hex");
                        // let data = { response: `${challenge}-${challengeResponse}`, username: `${fritzBenutzer}` };
                        const options = {
                            headers: {
                                "Content-Type": "application/x-www-form-urlencoded",
                            },
                        };
                        const data = { response: `${challenge}-${challengeResponse}`, username: `${fritzBenutzer}` };
                    
                        response = await httpPostAsync(loginURL, data, options);
                        if (response.statusCode === 200) {
                            if (tstSid.test(response.data)) {
                                sid = response.data.match(tstSid)[1];
                            }
                        } else throw new Error('Fehler beim Holen der sid!');
                        if (sid) return sid;
                    }
                    
                    async function getFritzBoxData() {
                        let page = 'docInfo';
                        if (!sessionID || sessionID === '0000000000000000' || timeTillLogout <= refreshRate) {
                            sessionID = await getSid();
                            /*dbg && */console.log(`sessionID: ${sessionID}`);
                        }
                    
                        const config = {
                            headers: { "Content-Type": "application/x-www-form-urlencoded", },
                        };
                        const data = { xhr: 1, sid: sessionID, lang: "de", page: 'xxxxxx', xhrId: "all", no_sidrenew: null };
                    
                        data.page = page;
                        let resp = await httpPostAsync(dataURL, data, config);
                        if (resp.statusCode === 200) {
                            const response = JSON.parse(resp.data);
                            timeTillLogout = response.timeTillLogout * 1000;
                            dbg && console.log("Logout in " + timeTillLogout / 60e3 + " Min.");
                            dbg && filePath && fs.writeFileSync(`${filePath}/docInfo.json`, JSON.stringify(response.data, null, 2));
                            const tables = response.data ?? "Fehler";
                            dbg && fs.writeFileSync(`${filePath}/docsis.json`, JSON.stringify(tables, null, 2));
                            if (tables === "Fehler") throw new Error(`Falsche Daten für Seite ${page}`, { cause: page, });
                            const docsis30 = {};
                            const docsis31 = {};
                            docsis30.us = [...tables.channelUs.docsis30];
                            docsis30.ds = [...tables.channelDs.docsis30];
                            docsis31.us = [...tables.channelUs.docsis31];
                            docsis31.ds = [...tables.channelDs.docsis31];
                            handleDocsis(docsis30, 30);
                            handleDocsis(docsis31, 31);
                        }
                    
                        page = "docOv";
                        data.page = page;
                        resp = await httpPostAsync(dataURL, data, config);
                        if (resp.statusCode === 200) {
                            const response = JSON.parse(resp.data)
                            const table = response.data?.connectionData ?? "Fehler";
                            if (table === "Fehler") throw new Error(`Falsche Daten für Seite ${page}`, { cause: page, });
                            dbg && fs.writeFileSync(`${filePath}/${page}.json`, JSON.stringify(table, null, 2));
                            const connection = {
                                dsRate: table.dsRate.replace(",", "."),
                                usRate: table.usRate.replace(",", "."),
                                dsChannels30: table.dsCount,
                                dsChannels31: table.dsCountSecond,
                                usChannels30: table.usCount,
                                usChannels31: table.usCountSecond,
                                timeTillLogout: timeTillLogout / 1000,
                            };
                            handleConnectionData(connection);
                        }
                    
                        page = "overview";
                        data.page = page;
                        resp = await httpPostAsync(dataURL, data, config);
                        if (resp.statusCode === 200) {
                            const response = JSON.parse(resp.data);
                            const table = response.data ?? "Fehler";
                            if (table === "Fehler") throw new Error(`Falsche Daten für Seite ${page}`, { cause: page, });
                            dbg && fs.writeFileSync(`${filePath}/${page}.json`, JSON.stringify(table, null, 2));
                        }
                    
                        page = "netDev";
                        data.page = page;
                        resp = await httpPostAsync(dataURL, data, config);
                        if (resp.statusCode === 200) {
                            const response = JSON.parse(resp.data);
                            const table = response.data ?? "Fehler";
                            if (table === "Fehler") throw new Error(`Falsche Daten für Seite ${page}`, { cause: page, });
                            dbg && fs.writeFileSync(`${filePath}/${page}.json`, JSON.stringify(table, null, 2));
                        }
                    
                        page = "log";
                        data.page = page;
                        resp = await httpPostAsync(dataURL, data, config);
                        if (resp.statusCode === 200) {
                            const response = JSON.parse(resp.data);
                            const table = response.data ?? "Fehler";
                            if (table === "Fehler") throw new Error(`Falsche Daten für Seite ${page}`, { cause: page, });
                            dbg && fs.writeFileSync(`${filePath}/${page}.json`, JSON.stringify(table, null, 2));
                            let logs = table.log;
                            let i = 0;
                            let devices = [];
                            logs.forEach(record => {
                                let d = record.date.replace(/(\d+).(\d+).(\d+)/, '20$3-$2-$1 ' + record.time);
                                record.ts = new Date(d).getTime();
                                // if(i++===0)log(new Date(d))
                                // delete record.time
                                delete record.helplink
                                delete record.nohelp
                                let msg = record.msg.replace('2,4 GHz', '2.4 GHz');
                                let arr = msg.split(',');
                                if (msg.indexOf('MAC') >= 0) {
                                    // arr.forEach((rec) => {
                                    //     console.log(rec)
                                    // })
                                }
                                if (record.id === 748) {
                                    devices.push({
                                        txt: arr[0],
                                        conn: arr[1],
                                        name: arr[2],
                                        ip: arr[3].replace('IP ', ''),
                                        mac: arr[4].replace('MAC ', ''),
                                    })
                                }
                                // record.msg=arr;
                            })
                            logs = logs.sort((a, b) => a.id - b.id).filter((o) => o.id === 748 && o.group === 'wlan');
                            dbg && fs.writeFileSync(`${filePath}/${page}2.json`, JSON.stringify(table, null, 2));
                            // fs.writeFileSync(`${filePath}/devices.json`, JSON.stringify(devices, null, 2));
                        }
                    
                        page = "static_route_table";
                        data.page = page;
                        data.activatedroute0 = 0;
                        data.apply = "ok";
                        resp = await httpPostAsync(dataURL, data, config);
                        if (resp.statusCode === 200) {
                            const response = JSON.parse(resp.data);
                            log(JSON.stringify(response.data));
                        }
                    
                    }
                    
                    function handleConnectionData(connectionData) {
                        let base = `${baseId}.Connection`;
                        Object.entries(connectionData).forEach((key) => createStateAndOrSetValue(base, key));
                    }
                    
                    function handleDocsis({ us, ds }, typ) {
                        // Downstream
                        let base = `${baseId}.Docsis${typ}.DS`;
                        // für den inneren Monk
                        ds.sort((a, b) => a.channelID - b.channelID);
                        createStateAndOrSetValue(base, ["json", JSON.stringify(ds)]);
                        for (let i = 0; i < ds.length; i++) {
                            const channel = "C" + ("0" + ds[i].channelID).slice(-2);
                            const id = `${base}.${channel}`;
                            Object.entries(ds[i]).forEach((key) => {
                                if (key[0].indexOf("orrError") >= 0) {
                                    let result;
                                    if (key[1] === 0) {
                                        result = [`${key[0]}PerMinute`, 0];
                                    } else {
                                        result = handleErrors(key, channel);
                                    }
                                    if (result) {
                                        createStateAndOrSetValue(id, result);
                                    }
                                }
                                createStateAndOrSetValue(id, key);
                            });
                        }
                    
                        // Upstream
                        base = `${baseId}.Docsis${typ}.US`;
                        us.sort((a, b) => a.channelID - b.channelID);
                        createStateAndOrSetValue(base, ["json", JSON.stringify(us)]);
                        for (let i = 0; i < us.length; i++) {
                            // Zum Testen neuer/bisher unbekannter Einträge
                            // ds[i].test2=45;
                            // ds[i].test='test';
                            const ch = "C" + ("0" + us[i].channelID).slice(-2);
                            const id = `${base}.${ch}`;
                            Object.entries(us[i]).forEach((key) => createStateAndOrSetValue(id, key));
                        }
                    }
                    
                    function handleErrors([name, value], ch) {
                        let errDiff;
                        let timeDiff;
                        const now = Date.now();
                    
                        errorTable[ch] = errorTable[ch] ?? {};
                        errorTable[ch][name] = errorTable[ch][name] ?? [value, now];
                        // if (errorTable[ch][name][1] === now) {
                        //     return null;
                        // }
                        let record = errorTable[ch][name];
                        errDiff = value - record[0];
                        timeDiff = Math.round((now - record[1]) / 60e3) || 1;
                        // if (timeDiff < 1 || errDiff === -10) return null;
                        record[0] = value;
                        record[1] = now;
                        // errDiff && dbg && console.error("New Errors: " + errDiff + "   " + now + "  " + timeDiff + "   " + ch);
                        return [`${name}PerMinute`, Math.round((errDiff / timeDiff) * 100) / 100];
                    }
                    
                    async function createStateAndOrSetValue(baseID, key) {
                        // Bekannte Attribute, history: 0 schaltet Historisierung ab, create:0 verhindert createState()
                        const states = {
                            powerLevel: { create: 1, history: 1, name: "PowerLevel", unit: "dBmV", type: "number", desc: "Der Signalpegel auf dem Kanal" },
                            modulation: { name: "Modulation", unit: "QAM", type: "number", desc: "Das verwendete Modulationsverfahren: Quadraturamplitudenmodulation" },
                            frequency: { name: "Frequency", unit: "MHz", type: "number", desc: "Die Frequenz, auf der ein Kanal aktiv ist" },
                            latency: { name: "Latency", unit: "ms", type: "number", desc: "Latenz" },
                            mse: { name: "MSE", unit: "dB", type: "number", desc: "Signalgüte (Mean Squared Error)" },
                            mer: { name: "MER", unit: "dB", type: "number", desc: "Maß für die Qualität von digitalen Modulationsverfahren (Modulation Error Ratio)" },
                            fft: { name: "FFT", unit: "K", type: "number", desc: "Die Anzahl der Subcarrier die ein OFDM Kanal haben kann" },
                            plc: { name: "PLC", unit: "MHz", type: "number", desc: "Kanal für Metainformationen (Physical Layer Link Channel)" },
                            channelID: { create: 1, name: "ChannelID", unit: "", type: "number", desc: " Identifikationsnummer, die jedem Kanal vom Kabelnetzbetreiber zugewiesen wird" },
                            nonCorrErrors: { name: "UncorrectableErrors", unit: "", type: "number", desc: "Nicht korrigierbare Fehler" },
                            corrErrors: { name: "CorrectableErrors", unit: "", type: "number", desc: "Korrigierbare Fehler" },
                            multiplex: { name: "MultiplexMethod", unit: "", type: "string", desc: "Multiplexverfahren, Methode zur Signal- und Nachrichtenübertragung" },
                            activesub: { name: "ActiveSubcarrier", unit: "", type: "number", desc: "Minikanäle, auf denen Nutzdaten übertragen werden." },
                            // Eintrag für unbekannte Attribute
                            others: { name: key[0].toUpperCase(), unit: "", type: "number", desc: "Unbekannter Wert" },
                            // eigene Werte aus Werten der docOV page
                            dsChannels30: { name: "DownStreamKanäle30", unit: "", type: "number", desc: "DownStreamKanäle30" },
                            dsChannels31: { name: "DownStreamKanäle31", unit: "", type: "number", desc: "DownStreamKanäle31" },
                            usChannels30: { name: "UpStreamKanäle30", unit: "", type: "number", desc: "UpStreamKanäle30" },
                            usChannels31: { name: "UpStreamKanäle31", unit: "", type: "number", desc: "UpStreamKanäle31" },
                            dsRate: { name: "DownStreamSpeed", unit: "Mbit/s", type: "number", desc: "DownStreamSpeed" },
                            usRate: { name: "UpStreamSpeed", unit: "Mbit/s", type: "number", desc: "UpStreamSpeed" },
                            timeTillLogout: { create: 0, name: "Logout", unit: "s", type: "number", desc: "Zeit bis zum Logout" },
                            json: { create: createJson, history: 0, name: "json", unit: "", type: "string", desc: "Daten als JSON für VIS" },
                            errorMessage: { history: 1, name: "LastError", unit: "", type: "string", desc: "Letzter aufgetretener Fehler" },
                            nonCorrErrorsPerMinute: { name: "UncorrectableErrorsPerMinute", unit: "", type: "number", desc: "Nicht korrigierbare Fehler pro Minute" },
                            corrErrorsPerMinute: { name: "CorrectableErrorsPerMinute", unit: "", type: "number", desc: "Korrigierbare Fehler pro Minute" },
                        };
                    
                        const common = states?.[key[0]] ?? states.others;
                        const id = `${baseID}.${common.name}`;
                        let value = parseFloat(key[1]);
                        if (isNaN(value)) {
                            value = key[1];
                            common.type = "string";
                        }
                        // Frequenz gibt es als Wert und als String, für String Historisierung abschalten
                        if (key[0] === "frequency" && key[1].indexOf("-") >= 0) {
                            value = key[1];
                            common.type = "string";
                            common.history = 0;
                        }
                    
                        // Erstelle State wenn nicht vorhanden und schalte ggf. Historisierung ein
                        if (!(await existsStateAsync(id))) {
                            if (!(common.create ?? true)) return;
                            // Für bisher unbekannte Werte
                            if (typeof value === "string") common.type = "string";
                    
                            // Löschen der Sonderparameter aus common, die haben da nichts verloren
                            if ("create" in common) delete common.create;
                            if ("history" in common) delete common.history;
                            // common.read = true;
                            common.write = false;
                            await createStateAsync(id, common);
                            // Ist Historisierung eingeschaltet? Standaedwerte ausser changesOnly
                            if (setupHistory && historyInstance && (common.history ?? true)) {
                                const historyOptions = {
                                    enabled: true,
                                    storageType: "",
                                    counter: false,
                                    aliasId: "",
                                    debounceTime: 0,
                                    blockTime: 0,
                                    changesOnly: changesOnly,
                                    changesRelogInterval: 0,
                                    changesMinDelta: 0,
                                    ignoreBelowNumber: "",
                                    disableSkippedValueLogging: false,
                                    retention: 31536000,
                                    customRetentionDuration: 365,
                                    maxLength: 0,
                                    enableDebugLogs: false,
                                    debounce: 1000,
                                };
                                sendTo(historyInstance, "enableHistory", { id, options: historyOptions }, (result) => {
                                    if (result.error) {
                                        dbg && console.log(result);
                                        throw Error("Einschalten der Historisierung fehlgeschlagen");
                                    }
                                });
                            }
                        }
                    
                        setStateAsync(id, value, true);
                    }
                    
                    function setStatesToNull() {
                        const ids = $(`${baseId}.*`);
                        ids.each((id) => setState(id, null, true));
                    }
                    
                    async function start() {
                        try {
                            await getFritzBoxData();
                            if (errorCounter > 0) {
                                console.log('');
                                console.warn('Die Fehlerursache scheint behoben zu sein!');
                                console.log('');
                                errorCounter = 0;
                            }
                        } catch (e) {
                            console.error("Huch! Ein Fehler => " + e.message);
                            setStatesToNull();
                            createStateAndOrSetValue(baseId, ["errorMessage", e.message]);
                            errorCounter++;
                            if (errorCounter >= maxRetries) stopScript(scriptName)
                            else console.warn(`Noch ${maxRetries - errorCounter} Versuche, dann wird das Script beendet`);
                        }
                    }
                    
                    start();
                    
                    let intervalID;
                    intervalID = setInterval(start, refreshRate);
                    //const scheduleID = schedule('* * * * *', () => getCableModemChannelInfosV2())
                    
                    // Bei Stop Interval löschen, Bug im Adapter???
                    onStop(() => {
                        if (intervalID) clearInterval(intervalID);
                        //clearSchedule(scheduleID);
                    
                        // Invalidate SessionID
                        logout();
                    });
                    
                    

                    iobroker läuft unter Docker auf QNAP TS-451+
                    SkriptRecovery: https://forum.iobroker.net/post/930558

                    1 Antwort Letzte Antwort
                    2
                    • MartinPM MartinP

                      @dieter_p Prinzipiell ist das Problem ja schon gelöst, aber eben nur manuell.
                      Für eine automatische Aktivierung der Route müsste man eruieren welcher LUA Seite der Fritzbox man was schicken muss, wenn das Ganze nicht per TR Interface machbar ist

                      Hier gibt es Hinweise https://mehm.net/blog/?p=1713

                      Aus eigener Erfahrung habe ich aber Vorbehalte, dass eine Fritzbox, die ihre Kabel-Internet Verbindung verloren hat klaglos die gewünschten Routen abarbeitet, und ansonsten wartet, dass das Kabel-Internet sich wieder heilt.

                      Ich habe schon beobachtet dass die Firmware Programmierer da auch durchaus Holzhammer Methoden programmiert haben, und die Fritzbox komplett neu starten, um die Internet Verbindung zu heilen..

                      BananaJoeB Offline
                      BananaJoeB Offline
                      BananaJoe
                      Most Active
                      schrieb am zuletzt editiert von
                      #13

                      @martinp sagte in FritzBox Routen ein oder ausschalten:

                      Hier gibt es Hinweise https://mehm.net/blog/?p=1713

                      Ich habe bei dem Herrn auf GitHub mal ein Issue hinterlegt.
                      Ich muss leider zugeben das ich auf Anhieb nicht erkannt habe was genau er da Abfragt bzw. wie er es macht.

                      ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 9 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV 750W kaskadiert || Creality CR-10 SE 3D-Drucker

                      1 Antwort Letzte Antwort
                      0
                      • Samson71S Samson71

                        @martinp sagte in FritzBox Routen ein oder ausschalten:

                        Für eine automatische Aktivierung der Route müsste man eruieren welcher LUA Seite der Fritzbox man was schicken muss,

                        Vorausgesetzt es handelt sich nicht um eine gebrandete Provider-Box, bei der der LUA-Aufruf unterbunden ist bzw. wo dieser nicht funktioniert. Insbesondere Vodafone (vormals KD) mit ihren Kabel-Boxen ist da ganz vorne mit dabei.

                        BananaJoeB Offline
                        BananaJoeB Offline
                        BananaJoe
                        Most Active
                        schrieb am zuletzt editiert von
                        #14

                        @samson71 sagte in FritzBox Routen ein oder ausschalten:

                        Vorausgesetzt es handelt sich nicht um eine gebrandete Provider-Box, bei der der LUA-Aufruf unterbunden ist bzw. wo dieser nicht funktioniert. Insbesondere Vodafone (vormals KD) mit ihren Kabel-Boxen ist da ganz vorne mit dabei.

                        Ist eine gebrandete Kabel-Deutschland-Box,
                        meine Glasfaser-Box ist aber nicht gebrandet und den gleichen Fehler.

                        ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 9 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV 750W kaskadiert || Creality CR-10 SE 3D-Drucker

                        1 Antwort Letzte Antwort
                        0
                        • MartinPM MartinP

                          @samson71 ich habe eine Unitymedia Box zumindest die LUA Seite mit den Kabel-Signalqualitätsseiten kann man per Javascript absaugen..
                          Stabil wird das Ganze aber wohl eh nicht, wenn sich die Fritzbox alle 10 Minuten neu startet, solange die Kabel- Internet Verbindung fehlschlägt.....

                          BananaJoeB Offline
                          BananaJoeB Offline
                          BananaJoe
                          Most Active
                          schrieb am zuletzt editiert von
                          #15

                          @martinp sagte in FritzBox Routen ein oder ausschalten:

                          Stabil wird das Ganze aber wohl eh nicht, wenn sich die Fritzbox alle 10 Minuten neu startet, solange die Kabel- Internet Verbindung fehlschlägt.....

                          wie @Samson71 schrieb: Da wird nichts neu gestartet, die wartet einfach bis die Verbindung wieder da ist.
                          Route war auch sofort aktiv

                          ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 9 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV 750W kaskadiert || Creality CR-10 SE 3D-Drucker

                          1 Antwort Letzte Antwort
                          0
                          • BananaJoeB Offline
                            BananaJoeB Offline
                            BananaJoe
                            Most Active
                            schrieb am zuletzt editiert von BananaJoe
                            #16

                            @fastfoot Klasse, das funktioniert schon mal!

                            Hier das Log für Aus und wieder ein:

                            2024-08-14 19:29:56.877  - info: javascript.1 (1635) script.js.001_Routinen.FritzBoxen.Test_Routen: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
                            2024-08-14 19:29:56.984  - info: javascript.1 (1635) script.js.001_Routinen.FritzBoxen.Test_Routen: sessionID: 9dd765637c35a8b1
                            2024-08-14 19:29:57.139  - info: javascript.1 (1635) script.js.001_Routinen.FritzBoxen.Test_Routen: Logout in 20 Min.
                            2024-08-14 19:30:14.653  - info: javascript.1 (1635) script.js.001_Routinen.FritzBoxen.Test_Routen: {"staticRoutes":{"route":[{"_node":"route0","ipaddr":"192.168.128.0","netmask":"255.255.255.0","activated":"0","gateway":"192.168.1.200"},{"_node":"route1","ipaddr":"0.0.0.0","netmask":"0.0.0.0","activated":"0","gateway":"192.168.1.200"}]},"apply":"ok"}
                            2024-08-14 19:30:20.056  - info: javascript.1 (1635) Stopping script script.js.001_Routinen.FritzBoxen.Test_Routen
                            2024-08-14 19:30:20.108  - info: javascript.1 (1635) script.js.001_Routinen.FritzBoxen.Test_Routen: Successfully logged out
                            2024-08-14 19:31:41.275  - info: javascript.1 (1635) Stopping script script.js.001_Routinen.FritzBoxen.Test_Routen
                            2024-08-14 19:31:41.275  - info: javascript.0 (242636) Stopping script script.js.001_Routinen.FritzBoxen.Test_Routen
                            2024-08-14 19:31:44.327  - info: javascript.1 (1635) Start JavaScript script.js.001_Routinen.FritzBoxen.Test_Routen (Javascript/js)
                            2024-08-14 19:31:44.335  - info: javascript.1 (1635) script.js.001_Routinen.FritzBoxen.Test_Routen: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
                            2024-08-14 19:31:44.437  - info: javascript.1 (1635) script.js.001_Routinen.FritzBoxen.Test_Routen: sessionID: 406dfb960655f6f5
                            2024-08-14 19:31:44.598  - info: javascript.1 (1635) script.js.001_Routinen.FritzBoxen.Test_Routen: Logout in 20 Min.
                            2024-08-14 19:32:01.839  - info: javascript.1 (1635) script.js.001_Routinen.FritzBoxen.Test_Routen: {"staticRoutes":{"route":[{"_node":"route0","ipaddr":"192.168.128.0","netmask":"255.255.255.0","activated":"1","gateway":"192.168.1.200"},{"_node":"route1","ipaddr":"0.0.0.0","netmask":"0.0.0.0","activated":"0","gateway":"192.168.1.200"}]},"apply":"ok"}
                            2024-08-14 19:32:02.646  - info: javascript.1 (1635) Stopping script script.js.001_Routinen.FritzBoxen.Test_Routen
                            2024-08-14 19:32:02.699  - info: javascript.1 (1635) script.js.001_Routinen.FritzBoxen.Test_Routen: Successfully logged out
                            
                            

                            Ich musste das Timeout für den Zugriff auf data.lua erhöhen, das dauert bei mir so 15 bis 20 Sekunden bis da was kommt (bis er beim Ändern der Route ist), ich habe den Wert mal auf 30 Sekunden gesetzt. Die Default 2 Sekunden reichten dafür nicht.

                            291cfe27-4c45-4cbc-b400-16d4c9f0d064-image.png

                            Und wie du geschrieben hast, schaltet er die erste Regel. Was nicht automatisch mit der Reihenfolge der dargestellten Routen übereinstimmt sondern die Reihenfolge ist in der die Routen angelegt sind.
                            Aber das lässt sich ja ausklingeln.

                            ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 9 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV 750W kaskadiert || Creality CR-10 SE 3D-Drucker

                            F 1 Antwort Letzte Antwort
                            0
                            • BananaJoeB Offline
                              BananaJoeB Offline
                              BananaJoe
                              Most Active
                              schrieb am zuletzt editiert von
                              #17

                              Nachtrag: Und die Routen werden sofort übernommen. so 2 bis 3 Sekunden nachdem die Meldung zur Änderung der Route im Log kommt, funktioniert auch ein Dauerping über die Route (oder eben nicht mehr).

                              ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 9 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV 750W kaskadiert || Creality CR-10 SE 3D-Drucker

                              1 Antwort Letzte Antwort
                              0
                              • BananaJoeB BananaJoe

                                @fastfoot Klasse, das funktioniert schon mal!

                                Hier das Log für Aus und wieder ein:

                                2024-08-14 19:29:56.877  - info: javascript.1 (1635) script.js.001_Routinen.FritzBoxen.Test_Routen: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
                                2024-08-14 19:29:56.984  - info: javascript.1 (1635) script.js.001_Routinen.FritzBoxen.Test_Routen: sessionID: 9dd765637c35a8b1
                                2024-08-14 19:29:57.139  - info: javascript.1 (1635) script.js.001_Routinen.FritzBoxen.Test_Routen: Logout in 20 Min.
                                2024-08-14 19:30:14.653  - info: javascript.1 (1635) script.js.001_Routinen.FritzBoxen.Test_Routen: {"staticRoutes":{"route":[{"_node":"route0","ipaddr":"192.168.128.0","netmask":"255.255.255.0","activated":"0","gateway":"192.168.1.200"},{"_node":"route1","ipaddr":"0.0.0.0","netmask":"0.0.0.0","activated":"0","gateway":"192.168.1.200"}]},"apply":"ok"}
                                2024-08-14 19:30:20.056  - info: javascript.1 (1635) Stopping script script.js.001_Routinen.FritzBoxen.Test_Routen
                                2024-08-14 19:30:20.108  - info: javascript.1 (1635) script.js.001_Routinen.FritzBoxen.Test_Routen: Successfully logged out
                                2024-08-14 19:31:41.275  - info: javascript.1 (1635) Stopping script script.js.001_Routinen.FritzBoxen.Test_Routen
                                2024-08-14 19:31:41.275  - info: javascript.0 (242636) Stopping script script.js.001_Routinen.FritzBoxen.Test_Routen
                                2024-08-14 19:31:44.327  - info: javascript.1 (1635) Start JavaScript script.js.001_Routinen.FritzBoxen.Test_Routen (Javascript/js)
                                2024-08-14 19:31:44.335  - info: javascript.1 (1635) script.js.001_Routinen.FritzBoxen.Test_Routen: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
                                2024-08-14 19:31:44.437  - info: javascript.1 (1635) script.js.001_Routinen.FritzBoxen.Test_Routen: sessionID: 406dfb960655f6f5
                                2024-08-14 19:31:44.598  - info: javascript.1 (1635) script.js.001_Routinen.FritzBoxen.Test_Routen: Logout in 20 Min.
                                2024-08-14 19:32:01.839  - info: javascript.1 (1635) script.js.001_Routinen.FritzBoxen.Test_Routen: {"staticRoutes":{"route":[{"_node":"route0","ipaddr":"192.168.128.0","netmask":"255.255.255.0","activated":"1","gateway":"192.168.1.200"},{"_node":"route1","ipaddr":"0.0.0.0","netmask":"0.0.0.0","activated":"0","gateway":"192.168.1.200"}]},"apply":"ok"}
                                2024-08-14 19:32:02.646  - info: javascript.1 (1635) Stopping script script.js.001_Routinen.FritzBoxen.Test_Routen
                                2024-08-14 19:32:02.699  - info: javascript.1 (1635) script.js.001_Routinen.FritzBoxen.Test_Routen: Successfully logged out
                                
                                

                                Ich musste das Timeout für den Zugriff auf data.lua erhöhen, das dauert bei mir so 15 bis 20 Sekunden bis da was kommt (bis er beim Ändern der Route ist), ich habe den Wert mal auf 30 Sekunden gesetzt. Die Default 2 Sekunden reichten dafür nicht.

                                291cfe27-4c45-4cbc-b400-16d4c9f0d064-image.png

                                Und wie du geschrieben hast, schaltet er die erste Regel. Was nicht automatisch mit der Reihenfolge der dargestellten Routen übereinstimmt sondern die Reihenfolge ist in der die Routen angelegt sind.
                                Aber das lässt sich ja ausklingeln.

                                F Offline
                                F Offline
                                fastfoot
                                schrieb am zuletzt editiert von
                                #18

                                @bananajoe Hattest du einen timeout Fehler, kann ich mir fast nicht vorstellen! Das Skript würde das auch anzeigen! Das dauert halt etwas da ja die anderen Pages vorher abgearbeitet werden. Das Ganze war sehr quick'n dirty weil ich keine Lust hatte die anderen Sachen zu entfernen um dann zu hören dass es bei dir nicht funktioniert :-) Da du wohl nicht ständig Routen hinzufügst oder löscht sollte ein fixer Wert ausreichen.

                                Das Skript als solches ist eigentlich auch nicht fertig, ich hatte da erstmal alles eingetragen was mir wichtig schien, wirklich ausgereift ist eig. nur der erste Teil mit den Kabeldaten(docInfo). Den würde ich auch nehmen um den Switch der Route zu steuern

                                iobroker läuft unter Docker auf QNAP TS-451+
                                SkriptRecovery: https://forum.iobroker.net/post/930558

                                BananaJoeB 1 Antwort Letzte Antwort
                                0
                                • F fastfoot

                                  @bananajoe Hattest du einen timeout Fehler, kann ich mir fast nicht vorstellen! Das Skript würde das auch anzeigen! Das dauert halt etwas da ja die anderen Pages vorher abgearbeitet werden. Das Ganze war sehr quick'n dirty weil ich keine Lust hatte die anderen Sachen zu entfernen um dann zu hören dass es bei dir nicht funktioniert :-) Da du wohl nicht ständig Routen hinzufügst oder löscht sollte ein fixer Wert ausreichen.

                                  Das Skript als solches ist eigentlich auch nicht fertig, ich hatte da erstmal alles eingetragen was mir wichtig schien, wirklich ausgereift ist eig. nur der erste Teil mit den Kabeldaten(docInfo). Den würde ich auch nehmen um den Switch der Route zu steuern

                                  BananaJoeB Offline
                                  BananaJoeB Offline
                                  BananaJoe
                                  Most Active
                                  schrieb am zuletzt editiert von
                                  #19

                                  @fastfoot sagte in FritzBox Routen ein oder ausschalten:

                                  Hattest du einen timeout Fehler, kann ich mir fast nicht vorstellen! Das Skript würde das auch anzeigen!

                                  Genau:

                                  2024-08-14 19:27:02.191  - error: javascript.1 (1635) script.js.001_Routinen.FritzBoxen.Test_Routen: httpPost(url=http://192.168.1.198/data.lua, error=timeout of 2000ms exceeded)
                                  2024-08-14 19:27:02.191  - error: javascript.1 (1635) script.js.001_Routinen.FritzBoxen.Test_Routen: Huch! Ein Fehler => timeout of 2000ms exceeded
                                  2024-08-14 19:27:02.197  - warn: javascript.1 (1635) script.js.001_Routinen.FritzBoxen.Test_Routen: Noch 9 Versuche, dann wird das Script beendet
                                  

                                  Schnelle Suche im Internet ergab das manche Boxen nicht so schnell sind bzw. es lange dauert
                                  Hängt eventuell auch damit zusammen was die noch alles machen.
                                  Meine Box wird ja nun auch schon vom FritzDECT-Adapter und vom TR-064 Adapter beackert, jetzt noch dieses Skript dazu.

                                  ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 9 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV 750W kaskadiert || Creality CR-10 SE 3D-Drucker

                                  F 1 Antwort Letzte Antwort
                                  0
                                  • BananaJoeB BananaJoe

                                    @fastfoot sagte in FritzBox Routen ein oder ausschalten:

                                    Hattest du einen timeout Fehler, kann ich mir fast nicht vorstellen! Das Skript würde das auch anzeigen!

                                    Genau:

                                    2024-08-14 19:27:02.191  - error: javascript.1 (1635) script.js.001_Routinen.FritzBoxen.Test_Routen: httpPost(url=http://192.168.1.198/data.lua, error=timeout of 2000ms exceeded)
                                    2024-08-14 19:27:02.191  - error: javascript.1 (1635) script.js.001_Routinen.FritzBoxen.Test_Routen: Huch! Ein Fehler => timeout of 2000ms exceeded
                                    2024-08-14 19:27:02.197  - warn: javascript.1 (1635) script.js.001_Routinen.FritzBoxen.Test_Routen: Noch 9 Versuche, dann wird das Script beendet
                                    

                                    Schnelle Suche im Internet ergab das manche Boxen nicht so schnell sind bzw. es lange dauert
                                    Hängt eventuell auch damit zusammen was die noch alles machen.
                                    Meine Box wird ja nun auch schon vom FritzDECT-Adapter und vom TR-064 Adapter beackert, jetzt noch dieses Skript dazu.

                                    F Offline
                                    F Offline
                                    fastfoot
                                    schrieb am zuletzt editiert von fastfoot
                                    #20

                                    @bananajoe interessant! Dann kansst Du ja noch die 'unnötigen' Pages auskommentieren, dann wird die Belastung auch weniger. Wenn dich nur der Routeswitch interessiert dann kann man auch noch das docInfo verkürzen und da nur auf online/offline abfragen

                                    iobroker läuft unter Docker auf QNAP TS-451+
                                    SkriptRecovery: https://forum.iobroker.net/post/930558

                                    BananaJoeB 1 Antwort Letzte Antwort
                                    0
                                    • BananaJoeB Offline
                                      BananaJoeB Offline
                                      BananaJoe
                                      Most Active
                                      schrieb am zuletzt editiert von
                                      #21

                                      wie mache ich denn das dynamisch?

                                      data.activatedroute0 = 1;
                                      

                                      Ich baue das gerade so um das er die Routen ausliest und Datenpunkte dafür anlegt.
                                      Dementsprechend wird es dann route0, route1, route2 und so weiter geben.
                                      activated wollte ich als Wahr/Falsch Datenpunkt anlegen mit einem Trigger darauf und dann entsprechend umschalten.
                                      Soweit, so gut, das bekomme ich hin.

                                      Aber dann müsste ich mir das ja für das Senden/Schreiben zusammenbauen.

                                      data.activated${myroute} = 1;
                                      

                                      ?

                                      ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 9 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV 750W kaskadiert || Creality CR-10 SE 3D-Drucker

                                      BananaJoeB 1 Antwort Letzte Antwort
                                      0
                                      • BananaJoeB BananaJoe

                                        wie mache ich denn das dynamisch?

                                        data.activatedroute0 = 1;
                                        

                                        Ich baue das gerade so um das er die Routen ausliest und Datenpunkte dafür anlegt.
                                        Dementsprechend wird es dann route0, route1, route2 und so weiter geben.
                                        activated wollte ich als Wahr/Falsch Datenpunkt anlegen mit einem Trigger darauf und dann entsprechend umschalten.
                                        Soweit, so gut, das bekomme ich hin.

                                        Aber dann müsste ich mir das ja für das Senden/Schreiben zusammenbauen.

                                        data.activated${myroute} = 1;
                                        

                                        ?

                                        BananaJoeB Offline
                                        BananaJoeB Offline
                                        BananaJoe
                                        Most Active
                                        schrieb am zuletzt editiert von
                                        #22

                                        @bananajoe ok, etwas in Blockly abschauen und googeln:

                                        let sessionID = '0000000000000000';
                                        const data = { xhr: 1, sid: sessionID, lang: "de", page: 'xxxxxx', xhrId: "all", no_sidrenew: null };
                                        let targetroute = 'route1';
                                        data['activated' + targetroute] = 1;
                                        console.warn(data);
                                        

                                        In Zeile 4 baue ich mir den Attributnamen dynamisch aus einen festen Text und den Inhalt der Variable targetroute zusammen. Ausgabe:

                                        2024-08-14 21:22:29.393  - warn: javascript.1 (1635) script.js.001_Routinen.FritzBoxen.Test_Dynamisch: {
                                          xhr: 1,
                                          sid: '0000000000000000',
                                          lang: 'de',
                                          page: 'xxxxxx',
                                          xhrId: 'all',
                                          no_sidrenew: null,
                                          activatedroute1: 1
                                        }
                                        
                                        

                                        ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 9 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV 750W kaskadiert || Creality CR-10 SE 3D-Drucker

                                        F 1 Antwort Letzte Antwort
                                        0
                                        • F fastfoot

                                          @bananajoe interessant! Dann kansst Du ja noch die 'unnötigen' Pages auskommentieren, dann wird die Belastung auch weniger. Wenn dich nur der Routeswitch interessiert dann kann man auch noch das docInfo verkürzen und da nur auf online/offline abfragen

                                          BananaJoeB Offline
                                          BananaJoeB Offline
                                          BananaJoe
                                          Most Active
                                          schrieb am zuletzt editiert von
                                          #23

                                          @fastfoot sagte in FritzBox Routen ein oder ausschalten:

                                          Dann kansst Du ja noch die 'unnötigen' Pages auskommentieren, dann wird die Belastung auch weniger.

                                          Jepp, wenn ich nur noch die Routen abfrage oder setze, dauert es nur um die 200ms

                                          ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 9 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV 750W kaskadiert || Creality CR-10 SE 3D-Drucker

                                          1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          370

                                          Online

                                          32.5k

                                          Benutzer

                                          81.6k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe