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. ioBroker Allgemein
  4. Pegelwerte Fritzbox 6490 Cable auslesen?

NEWS

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

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

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    2.7k

Pegelwerte Fritzbox 6490 Cable auslesen?

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
199 Beiträge 20 Kommentatoren 44.9k Aufrufe 20 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.
  • MartinPM MartinP

    @ichderarnd

    Habe schon angefangen, nur mit dem httpPost in getCableModemChannelInfosV2()
    gibt es Probleme Auskommentiert der Request, und darunter der httpPost...

    //    var options = {
    //        url: docsisURL,
    //        method: 'POST',
    //        headers: {
    //            'Content-Type': 'application/x-www-form-urlencoded'
    //        },
    //        body: 'xhr=1&sid=' + sid + '&lang=de&page=docInfo&xhrId=all&no_sidrenew='
    //    }
    //    request(options, function(error, response, body) {
          httpPost(docsisURL, 
            {
                title : 'channels',
                body: 'xhr=1&sid=' + sid + '&lang=de&page=docInfo&xhrId=all&no_sidrenew=',
                user_id : '1'
            }, 
            {
    
                timeout: 2000,
                headers: {
                   'Content-Type': 'application/x-www-form-urlencoded'
                },
            },
            (error, response) => {
            if (!error && response.statusCode == 200) {
                log ('status ' + response.statusCode);
                log ('headers ' + response.headers);
                log ('data: ' + response.data);
                const body = response.data;
                tableData = JSON.parse(body);
                if(tableData){
    
    
    F Offline
    F Offline
    fastfoot
    schrieb am zuletzt editiert von
    #166

    @martinp es könnte helfen body: durch data: zu ersetzen

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

    MartinPM 1 Antwort Letzte Antwort
    0
    • F fastfoot

      @martinp es könnte helfen body: durch data: zu ersetzen

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

      @fastfoot Das hat auch nicht geholfen ...

      2024-07-04 07:22:00.197 - info: javascript.0 (33499) script.js.Fritzbox.DOCSISV01: status 200
      2024-07-04 07:22:00.198 - info: javascript.0 (33499) script.js.Fritzbox.DOCSISV01: headers cache-control: no-cache, no-cache, no-store, must-revalidate
      connection: close
      content-type: text/html; charset=utf-8
      date: Thu, 04 Jul 2024 05:22:00 GMT
      expires: -1
      pragma: no-cache
      x-frame-options: SAMEORIGIN
      x-xss-protection: 1; mode=block
      x-content-type-options: nosniff
      content-security-policy: default-src 'none'; connect-src 'self'; font-src 'self'; frame-src https://service.avm.de https://fritzhelp.avm.de/help/ https://help.avm.de https://www.avm.de https://avm.de https://assets.avm.de https://clickonce.avm.de http://clickonce.avm.de http://download.avm.de https://download.avm.de 'self'; img-src 'self' https://tv.avm.de https://help.avm.de/images/ http://help.avm.de/images/ data:; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; frame-ancestors 'self'; media-src 'self'
      2024-07-04 07:22:00.199 - info: javascript.0 (33499) script.js.Fritzbox.DOCSISV01: data:
      2024-07-04 07:22:00.204 - error: javascript.0 (33499) Error in callback: SyntaxError: Unexpected token '<', ")
      2024-07-04 07:22:00.205 - error: javascript.0 (33499) at Object. (script.js.Fritzbox.DOCSISV01:292:30)
      2024-07-04 07:22:00.205 - error: javascript.0 (33499) at /opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1242:38
      2024-07-04 07:22:00.206 - error: javascript.0 (33499) at processTicksAndRejections (node:internal/process/task_queues:95:5)
      
      

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

      MartinPM 1 Antwort Letzte Antwort
      0
      • MartinPM MartinP

        @fastfoot Das hat auch nicht geholfen ...

        2024-07-04 07:22:00.197 - info: javascript.0 (33499) script.js.Fritzbox.DOCSISV01: status 200
        2024-07-04 07:22:00.198 - info: javascript.0 (33499) script.js.Fritzbox.DOCSISV01: headers cache-control: no-cache, no-cache, no-store, must-revalidate
        connection: close
        content-type: text/html; charset=utf-8
        date: Thu, 04 Jul 2024 05:22:00 GMT
        expires: -1
        pragma: no-cache
        x-frame-options: SAMEORIGIN
        x-xss-protection: 1; mode=block
        x-content-type-options: nosniff
        content-security-policy: default-src 'none'; connect-src 'self'; font-src 'self'; frame-src https://service.avm.de https://fritzhelp.avm.de/help/ https://help.avm.de https://www.avm.de https://avm.de https://assets.avm.de https://clickonce.avm.de http://clickonce.avm.de http://download.avm.de https://download.avm.de 'self'; img-src 'self' https://tv.avm.de https://help.avm.de/images/ http://help.avm.de/images/ data:; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; frame-ancestors 'self'; media-src 'self'
        2024-07-04 07:22:00.199 - info: javascript.0 (33499) script.js.Fritzbox.DOCSISV01: data:
        2024-07-04 07:22:00.204 - error: javascript.0 (33499) Error in callback: SyntaxError: Unexpected token '<', ")
        2024-07-04 07:22:00.205 - error: javascript.0 (33499) at Object. (script.js.Fritzbox.DOCSISV01:292:30)
        2024-07-04 07:22:00.205 - error: javascript.0 (33499) at /opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1242:38
        2024-07-04 07:22:00.206 - error: javascript.0 (33499) at processTicksAndRejections (node:internal/process/task_queues:95:5)
        
        
        MartinPM Online
        MartinPM Online
        MartinP
        schrieb am zuletzt editiert von MartinP
        #168

        Das ist der httpPost

        script.js.Fritzbox.DOCSISV01: httpPost(config={"method":"post","url":"http://192.168.2.1/data.lua","responseType":"text","responseEncoding":"utf8","timeout":2000,"headers":{"User-Agent":"Mozilla/5.0 (X11; Linux i686; rv:109.0) Gecko/20100101 Firefox/121.0","Content-Type":"application/x-www-form-urlencoded"},"data":{"title":"channels","body":"xhr=1&sid=4........................&lang=de&page=docInfo&xhrId=all&no_sidrenew=","user_id":"1"}}, data=[object Object])
        

        Auch das geht nicht:

        	script.js.Fritzbox.DOCSISV01: httpPost(config={"method":"post","url":"http://192.168.2.1/data.lua","responseType":"text","responseEncoding":"utf8","timeout":2000,"headers":{"User-Agent":"Mozilla/5.0 (X11; Linux i686; rv:109.0) Gecko/20100101 Firefox/121.0","Content-Type":"application/x-www-form-urlencoded","Authorization":"Bearer ae..............b"},"data":{"title":"channels","body":"xhr=1&sid=ae................b&lang=de&page=docInfo&xhrId=all&no_sidrenew=","user_id":"1"}}, data=[object Object])
        

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

        MartinPM 1 Antwort Letzte Antwort
        0
        • MartinPM MartinP

          Das ist der httpPost

          script.js.Fritzbox.DOCSISV01: httpPost(config={"method":"post","url":"http://192.168.2.1/data.lua","responseType":"text","responseEncoding":"utf8","timeout":2000,"headers":{"User-Agent":"Mozilla/5.0 (X11; Linux i686; rv:109.0) Gecko/20100101 Firefox/121.0","Content-Type":"application/x-www-form-urlencoded"},"data":{"title":"channels","body":"xhr=1&sid=4........................&lang=de&page=docInfo&xhrId=all&no_sidrenew=","user_id":"1"}}, data=[object Object])
          

          Auch das geht nicht:

          	script.js.Fritzbox.DOCSISV01: httpPost(config={"method":"post","url":"http://192.168.2.1/data.lua","responseType":"text","responseEncoding":"utf8","timeout":2000,"headers":{"User-Agent":"Mozilla/5.0 (X11; Linux i686; rv:109.0) Gecko/20100101 Firefox/121.0","Content-Type":"application/x-www-form-urlencoded","Authorization":"Bearer ae..............b"},"data":{"title":"channels","body":"xhr=1&sid=ae................b&lang=de&page=docInfo&xhrId=all&no_sidrenew=","user_id":"1"}}, data=[object Object])
          
          MartinPM Online
          MartinPM Online
          MartinP
          schrieb am zuletzt editiert von
          #169

          Da kann man ja manisch werden, bei dieser Bastelei... ziemlich sperrig die neuen Funktionen ...

          Das ist das, was zwischen Firefox und Fritzbox beim httpPost ausgetauscht wird ...

          02ee9ac1-2030-4889-9805-3a77d148b8b4-grafik.png

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

          F 1 Antwort Letzte Antwort
          0
          • MartinPM MartinP

            Da kann man ja manisch werden, bei dieser Bastelei... ziemlich sperrig die neuen Funktionen ...

            Das ist das, was zwischen Firefox und Fritzbox beim httpPost ausgetauscht wird ...

            02ee9ac1-2030-4889-9805-3a77d148b8b4-grafik.png

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

            @martinp ich mag diese httpGet und httpPost nicht sonderlich, obwohl die Idee dahinter schon sehr gut ist. Mir fehlen da die Async Functionen um die awaiten zu können. Deshalb bevorzuge ich axios direkt, schon wegen der Doku. Anyway, hier sind zwei simple Wrapper die du verwenden kannst, wenn es dir nur um den reinen Aufruf geht dann nimmst du nur die innersten Aufrufe. Ist getestet.

            const httpGetAsync = (url, options) => {
                return new Promise((resolve) => {
                    httpGet(url, options, (err, res) => {
                        if (res.statusCode === 200) {
                            resolve(res)
                        };
                    })
                })
            }
            const httpPostAsync = (url, data, options) => {
                return new Promise((resolve) => {
                    httpPost(url, data, options, (err, res) => {
                        if (res.statusCode === 200) {
                            resolve(res)
                        };
                    })
                })
            }
            // url und data können aus den Options extrahiert werden
            

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

            MartinPM 1 Antwort Letzte Antwort
            0
            • F fastfoot

              @martinp ich mag diese httpGet und httpPost nicht sonderlich, obwohl die Idee dahinter schon sehr gut ist. Mir fehlen da die Async Functionen um die awaiten zu können. Deshalb bevorzuge ich axios direkt, schon wegen der Doku. Anyway, hier sind zwei simple Wrapper die du verwenden kannst, wenn es dir nur um den reinen Aufruf geht dann nimmst du nur die innersten Aufrufe. Ist getestet.

              const httpGetAsync = (url, options) => {
                  return new Promise((resolve) => {
                      httpGet(url, options, (err, res) => {
                          if (res.statusCode === 200) {
                              resolve(res)
                          };
                      })
                  })
              }
              const httpPostAsync = (url, data, options) => {
                  return new Promise((resolve) => {
                      httpPost(url, data, options, (err, res) => {
                          if (res.statusCode === 200) {
                              resolve(res)
                          };
                      })
                  })
              }
              // url und data können aus den Options extrahiert werden
              
              MartinPM Online
              MartinPM Online
              MartinP
              schrieb am zuletzt editiert von
              #171

              @fastfoot Die Fritzbox schickt ja schon etwas zurück - das ist aber nicht die JSON-Tabelle, die ich erwarten würde ...

              Ich vermute ja noch immer, dass da irgendetwas in dem, was ich dem httpPost() übergebe nicht korrekt ist... Werde das aber trotzdem mal probieren

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

              F 1 Antwort Letzte Antwort
              0
              • MartinPM MartinP

                @fastfoot Die Fritzbox schickt ja schon etwas zurück - das ist aber nicht die JSON-Tabelle, die ich erwarten würde ...

                Ich vermute ja noch immer, dass da irgendetwas in dem, was ich dem httpPost() übergebe nicht korrekt ist... Werde das aber trotzdem mal probieren

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

                @martinp das ist mit der FB getestet :-)

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

                MartinPM 1 Antwort Letzte Antwort
                0
                • F fastfoot

                  @martinp das ist mit der FB getestet :-)

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

                  @fastfoot den Status 200 habe ich ja auch schon hinbekommen, nur war der Rest des Ergebnisses zwar VIEL, aber völlig unbrauchbar .....Hilfstexte von AVM usw ...

                  	script.js.Fritzbox.DOCSISV01: data: <!DOCTYPE html> <html lang="de"> <head> <meta http-equiv=content-type content="text/html; charset=utf-8" /> <meta http-equiv="Cache-Control" content="private, no-transform" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="format-detection" content="telephone=no" /> <meta http-equiv="x-rim-auto-match" content="none" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes, minimal-ui" /> <meta name="mobile-web-app-capable" content="yes" /> <meta name="apple-mobile-web-app-capable" content="yes" /> <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" /> <meta http-equiv="cleartype" content="on"> <link rel="icon" href="/favicon.ico" size="16x16"/> <link rel="icon" href="/icon.svg" type="image/svg+xml"/> <link rel="icon" href="/icon.png" type="image/png"/> <link rel="apple-touch-icon" href="/apple-touch-icon.png" /> <link rel="apple-touch-startup-image" href="/apple-touch-icon.png" /> <style> /*@font-face { font-family: 'Source Sans Pro'; font-style: italic; font-stretch: normal; font-weight: 400; src: url('/assets/fonts/SourceSansPro-Italic.woff2') format('woff2'); }*/ @font-face { font-family: 'Source Sans Pro'; font-style: normal; font-stretch: normal; font-weight: 400; src: url('/assets/fonts/source-sans-pro-v11-latin-ext_latin-regular.woff2') format('woff2'); } @font-face { font-family: 'Source Sans Pro'; font-style: normal; font-stretch: normal; font-weight: 600; src: url('/assets/fonts/source-sans-pro-v11-latin-ext_latin-600.woff2') format('woff2'); } @font-face { font-family: 'Source Sans Pro'; font-style: normal; font-stretch: normal; font-weight: 900; src: url('/assets/fonts/SourceSansPro-Black.woff2') format('woff2'); } html, input, textarea, keygen, select, button { font-family: 'Source Sans Pro', Arial, sans-serif; font-size: 100%; } </style> <link rel="stylesheet" type="text/css" href="/css/box.css"> <link rel='stylesheet' type='text/css' href="/css/rd/login.css"/> <title> FRITZ!Box </title> </head> <body> <script> var gNbc = false; </script> <script src="/js/browser.js"></script> <script src="/js/vendor.js"></script> <script src="/js/box-login.js"></script> <script type="module"> import { setConfig } from "/js/config.js"; import login from "/js/login.js"; setConfig({"ZIGBEE":false,"GUI_IS_POWERLINE":false,"isDebug":false,"gu_type":"release","WLAN":{"is_double_wlan":false},"GUI_IS_REPEATER":false,"GUI_IS_GATEWAY":false,"language":"de","GUI_HIDE_TEASER":false}); const data = {"firstTenMin":fa
                  

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

                  F 1 Antwort Letzte Antwort
                  0
                  • MartinPM MartinP

                    @fastfoot den Status 200 habe ich ja auch schon hinbekommen, nur war der Rest des Ergebnisses zwar VIEL, aber völlig unbrauchbar .....Hilfstexte von AVM usw ...

                    	script.js.Fritzbox.DOCSISV01: data: <!DOCTYPE html> <html lang="de"> <head> <meta http-equiv=content-type content="text/html; charset=utf-8" /> <meta http-equiv="Cache-Control" content="private, no-transform" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="format-detection" content="telephone=no" /> <meta http-equiv="x-rim-auto-match" content="none" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes, minimal-ui" /> <meta name="mobile-web-app-capable" content="yes" /> <meta name="apple-mobile-web-app-capable" content="yes" /> <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" /> <meta http-equiv="cleartype" content="on"> <link rel="icon" href="/favicon.ico" size="16x16"/> <link rel="icon" href="/icon.svg" type="image/svg+xml"/> <link rel="icon" href="/icon.png" type="image/png"/> <link rel="apple-touch-icon" href="/apple-touch-icon.png" /> <link rel="apple-touch-startup-image" href="/apple-touch-icon.png" /> <style> /*@font-face { font-family: 'Source Sans Pro'; font-style: italic; font-stretch: normal; font-weight: 400; src: url('/assets/fonts/SourceSansPro-Italic.woff2') format('woff2'); }*/ @font-face { font-family: 'Source Sans Pro'; font-style: normal; font-stretch: normal; font-weight: 400; src: url('/assets/fonts/source-sans-pro-v11-latin-ext_latin-regular.woff2') format('woff2'); } @font-face { font-family: 'Source Sans Pro'; font-style: normal; font-stretch: normal; font-weight: 600; src: url('/assets/fonts/source-sans-pro-v11-latin-ext_latin-600.woff2') format('woff2'); } @font-face { font-family: 'Source Sans Pro'; font-style: normal; font-stretch: normal; font-weight: 900; src: url('/assets/fonts/SourceSansPro-Black.woff2') format('woff2'); } html, input, textarea, keygen, select, button { font-family: 'Source Sans Pro', Arial, sans-serif; font-size: 100%; } </style> <link rel="stylesheet" type="text/css" href="/css/box.css"> <link rel='stylesheet' type='text/css' href="/css/rd/login.css"/> <title> FRITZ!Box </title> </head> <body> <script> var gNbc = false; </script> <script src="/js/browser.js"></script> <script src="/js/vendor.js"></script> <script src="/js/box-login.js"></script> <script type="module"> import { setConfig } from "/js/config.js"; import login from "/js/login.js"; setConfig({"ZIGBEE":false,"GUI_IS_POWERLINE":false,"isDebug":false,"gu_type":"release","WLAN":{"is_double_wlan":false},"GUI_IS_REPEATER":false,"GUI_IS_GATEWAY":false,"language":"de","GUI_HIDE_TEASER":false}); const data = {"firstTenMin":fa
                    
                    F Offline
                    F Offline
                    fastfoot
                    schrieb am zuletzt editiert von fastfoot
                    #174

                    @martinp options und Aufruf?

                    Edit: Wenn wie weiter oben dann mal mit meinem Aufruf vergleichen!

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

                    MartinPM 1 Antwort Letzte Antwort
                    0
                    • F fastfoot

                      @martinp options und Aufruf?

                      Edit: Wenn wie weiter oben dann mal mit meinem Aufruf vergleichen!

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

                      @fastfoot

                      Das hatte ich als Gedächtnisstütze für die vorherige Version auskommentiert behalten

                      //    var options = {
                      //        url: docsisURL, 
                      //        method: 'POST',
                      //        headers: {
                      //            'Content-Type': 'application/x-www-form-urlencoded'
                      //        },
                      //        body: 'xhr=1&sid=' + sid + '&lang=de&page=docInfo&xhrId=all&no_sidrenew='
                      //    };toString
                      //    request(options, function(error, response, body) 
                      

                      Da der Beginn der Auswerteroutine - mit viel Logging aktuell -

                            httpPost(docsisURL, 
                              {
                      //            title : 'channels',
                                  body: 'xhr=1&sid=' + sid + '&lang=de&page=docinfo&xhrId=all&no_sidrenew=',
                      //            user_id : '1'
                              }, 
                              {
                      
                                  timeout: 2000,
                                  // responseType: 'arraybuffer',
                      //            bearerAuth: sid,
                                  headers: {
                                     'Content-Type': 'application/x-www-form-urlencoded'
                                  },
                              },
                              (error, response) => {
                              if (!error && response.statusCode == 200) {
                                  log ('status ' + response.statusCode);
                                  log ('headers ' + response.headers);
                                  log ('data: ' + response.data);
                                  const body = response.data;
                                  // tableData = JSON.parse(body);
                                  tableData = response.data;
                                  if(tableData){
                      

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

                      F 2 Antworten Letzte Antwort
                      0
                      • MartinPM MartinP

                        @fastfoot

                        Das hatte ich als Gedächtnisstütze für die vorherige Version auskommentiert behalten

                        //    var options = {
                        //        url: docsisURL, 
                        //        method: 'POST',
                        //        headers: {
                        //            'Content-Type': 'application/x-www-form-urlencoded'
                        //        },
                        //        body: 'xhr=1&sid=' + sid + '&lang=de&page=docInfo&xhrId=all&no_sidrenew='
                        //    };toString
                        //    request(options, function(error, response, body) 
                        

                        Da der Beginn der Auswerteroutine - mit viel Logging aktuell -

                              httpPost(docsisURL, 
                                {
                        //            title : 'channels',
                                    body: 'xhr=1&sid=' + sid + '&lang=de&page=docinfo&xhrId=all&no_sidrenew=',
                        //            user_id : '1'
                                }, 
                                {
                        
                                    timeout: 2000,
                                    // responseType: 'arraybuffer',
                        //            bearerAuth: sid,
                                    headers: {
                                       'Content-Type': 'application/x-www-form-urlencoded'
                                    },
                                },
                                (error, response) => {
                                if (!error && response.statusCode == 200) {
                                    log ('status ' + response.statusCode);
                                    log ('headers ' + response.headers);
                                    log ('data: ' + response.data);
                                    const body = response.data;
                                    // tableData = JSON.parse(body);
                                    tableData = response.data;
                                    if(tableData){
                        
                        F Offline
                        F Offline
                        fastfoot
                        schrieb am zuletzt editiert von
                        #176

                        @martinp

                        httpPost(url,options.body, options,callback)
                        

                        der zweite Parameter muss ein String sein und options wie im Original.

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

                        1 Antwort Letzte Antwort
                        0
                        • MartinPM MartinP

                          @fastfoot

                          Das hatte ich als Gedächtnisstütze für die vorherige Version auskommentiert behalten

                          //    var options = {
                          //        url: docsisURL, 
                          //        method: 'POST',
                          //        headers: {
                          //            'Content-Type': 'application/x-www-form-urlencoded'
                          //        },
                          //        body: 'xhr=1&sid=' + sid + '&lang=de&page=docInfo&xhrId=all&no_sidrenew='
                          //    };toString
                          //    request(options, function(error, response, body) 
                          

                          Da der Beginn der Auswerteroutine - mit viel Logging aktuell -

                                httpPost(docsisURL, 
                                  {
                          //            title : 'channels',
                                      body: 'xhr=1&sid=' + sid + '&lang=de&page=docinfo&xhrId=all&no_sidrenew=',
                          //            user_id : '1'
                                  }, 
                                  {
                          
                                      timeout: 2000,
                                      // responseType: 'arraybuffer',
                          //            bearerAuth: sid,
                                      headers: {
                                         'Content-Type': 'application/x-www-form-urlencoded'
                                      },
                                  },
                                  (error, response) => {
                                  if (!error && response.statusCode == 200) {
                                      log ('status ' + response.statusCode);
                                      log ('headers ' + response.headers);
                                      log ('data: ' + response.data);
                                      const body = response.data;
                                      // tableData = JSON.parse(body);
                                      tableData = response.data;
                                      if(tableData){
                          
                          F Offline
                          F Offline
                          fastfoot
                          schrieb am zuletzt editiert von
                          #177

                          @martinp oder ganz konkret:

                          let data = `xhr=1&sid=${SID}&lang=de&page=${page}&xhrId=all`
                          let url = docsisURL;
                          let options = {
                              headers: {
                                  "Content-Type": "application/x-www-form-urlencoded",
                              },
                          }
                          httpPost(url, data, options, (err, res) => {
                              if (res.statusCode === 200) {
                                  let fbData = JSON.parse(res.data); // nur wenn ein JSON erwartet wird, 
                              }
                          })
                          

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

                          MartinPM 1 Antwort Letzte Antwort
                          0
                          • F fastfoot

                            @martinp oder ganz konkret:

                            let data = `xhr=1&sid=${SID}&lang=de&page=${page}&xhrId=all`
                            let url = docsisURL;
                            let options = {
                                headers: {
                                    "Content-Type": "application/x-www-form-urlencoded",
                                },
                            }
                            httpPost(url, data, options, (err, res) => {
                                if (res.statusCode === 200) {
                                    let fbData = JSON.parse(res.data); // nur wenn ein JSON erwartet wird, 
                                }
                            })
                            
                            MartinPM Online
                            MartinPM Online
                            MartinP
                            schrieb am zuletzt editiert von
                            #178

                            @fastfoot Wollte doch gerade zum Abendbrot gehen, aber jetzt juckt es in den Fingern ;-)

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

                            F 1 Antwort Letzte Antwort
                            0
                            • MartinPM MartinP

                              @fastfoot Wollte doch gerade zum Abendbrot gehen, aber jetzt juckt es in den Fingern ;-)

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

                              @martinp ein simpler Test wäre dann console.log(fbData.timeTillLogout)). Sollte 1200 zeigen. Die eigentlichen Kanal-Daten finden sich in fbbData.data

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

                              1 Antwort Letzte Antwort
                              0
                              • MartinPM Online
                                MartinPM Online
                                MartinP
                                schrieb am zuletzt editiert von MartinP
                                #180

                                @martinp Funktioniert immer noch nicht ...

                                Das ist der Aufruf

                                      httpPost(docsisURL, 
                                        'xhr=1&sid=' + sid + '&lang=de&page=docinfo&xhrId=all&no_sidrenew=',
                                        {
                                            headers: {
                                               'Content-Type': 'application/x-www-form-urlencoded'
                                            },
                                        },
                                        (error, response) => {
                                        if (!error && response.statusCode == 200) {
                                ....
                                
                                script.js.Fritzbox.DOCSISV01: httpPost(config={"method":"post","url":"http://192.168.2.1/data.lua","responseType":"text","responseEncoding":"utf8","timeout":2000,"headers":{"User-Agent":"Mozilla/5.0 (X11; Linux i686; rv:109.0) Gecko/20100101 Firefox/121.0","Content-Type":"application/x-www-form-urlencoded"},"data":"xhr=1&sid=6xxxxxxxxxxxxxxxx3c&lang=de&page=docinfo&xhrId=all&no_sidrenew="}, data=xhr=1&sid=6.................c&lang=de&page=docinfo&xhrId=all&no_sidrenew=)
                                

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

                                MartinPM 1 Antwort Letzte Antwort
                                0
                                • MartinPM MartinP

                                  @martinp Funktioniert immer noch nicht ...

                                  Das ist der Aufruf

                                        httpPost(docsisURL, 
                                          'xhr=1&sid=' + sid + '&lang=de&page=docinfo&xhrId=all&no_sidrenew=',
                                          {
                                              headers: {
                                                 'Content-Type': 'application/x-www-form-urlencoded'
                                              },
                                          },
                                          (error, response) => {
                                          if (!error && response.statusCode == 200) {
                                  ....
                                  
                                  script.js.Fritzbox.DOCSISV01: httpPost(config={"method":"post","url":"http://192.168.2.1/data.lua","responseType":"text","responseEncoding":"utf8","timeout":2000,"headers":{"User-Agent":"Mozilla/5.0 (X11; Linux i686; rv:109.0) Gecko/20100101 Firefox/121.0","Content-Type":"application/x-www-form-urlencoded"},"data":"xhr=1&sid=6xxxxxxxxxxxxxxxx3c&lang=de&page=docinfo&xhrId=all&no_sidrenew="}, data=xhr=1&sid=6.................c&lang=de&page=docinfo&xhrId=all&no_sidrenew=)
                                  
                                  MartinPM Online
                                  MartinPM Online
                                  MartinP
                                  schrieb am zuletzt editiert von
                                  #181

                                  @martinp

                                  GAAHH "page=docInfo" und nicht "page=docinfo" ...

                                  Jetzt funktioniert es .... Ein paar Werte sind auch schon über Influx in Grafana gelandet ...

                                  Schnell eine Sicherung machen, und später noch alles etwas von Logging "säubern" ...

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

                                  F 1 Antwort Letzte Antwort
                                  0
                                  • MartinPM MartinP

                                    @martinp

                                    GAAHH "page=docInfo" und nicht "page=docinfo" ...

                                    Jetzt funktioniert es .... Ein paar Werte sind auch schon über Influx in Grafana gelandet ...

                                    Schnell eine Sicherung machen, und später noch alles etwas von Logging "säubern" ...

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

                                    @martinp na dann viel Spass beim weiterbasteln :-)

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

                                    MartinPM 1 Antwort Letzte Antwort
                                    0
                                    • F fastfoot

                                      @martinp na dann viel Spass beim weiterbasteln :-)

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

                                      @fastfoot Habe seit neuestem eine Gitea-Instanz in einem LXC-Container auf dem Proxmox auf dem auch der iob in einem LXC läuft aufgesetzt, auf der ich meine Scripte auch noch einmal sichere ... ansonsten ist das immer so ein Gehampel, die "Secrets" secret zu halten ...

                                      Man will ja nicht nach Github sein Fritzbox-Password hochladen ...

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

                                      I F 2 Antworten Letzte Antwort
                                      0
                                      • MartinPM MartinP

                                        @fastfoot Habe seit neuestem eine Gitea-Instanz in einem LXC-Container auf dem Proxmox auf dem auch der iob in einem LXC läuft aufgesetzt, auf der ich meine Scripte auch noch einmal sichere ... ansonsten ist das immer so ein Gehampel, die "Secrets" secret zu halten ...

                                        Man will ja nicht nach Github sein Fritzbox-Password hochladen ...

                                        I Offline
                                        I Offline
                                        ichderarnd
                                        schrieb am zuletzt editiert von
                                        #184

                                        Cool, ich würde gerne mitmachen, muss arbeiten. Quartalsabrechnung :-(

                                        MartinPM F 2 Antworten Letzte Antwort
                                        0
                                        • I ichderarnd

                                          Cool, ich würde gerne mitmachen, muss arbeiten. Quartalsabrechnung :-(

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

                                          @ichderarnd

                                          Hier ein Full-Quote des ganzen Scripts. Das ist aber womöglich ansonsten ein älterer Stand ggüb. Deinen Code, ich habe wohl recht früh geforkt ...

                                          // Version 0.1 -Build 1 03-JUL-2024
                                          // removed double Lines first try with httpGet, httpPush MP
                                          // Version 0.1-2 ß4-JUL-2024
                                          
                                          
                                          var logging = false;
                                          const iconv = require('iconv-lite');
                                          const crypto = require('crypto');
                                          
                                          var DOCSIS30DSChannels = 30;
                                          var DOCSIS31DSChannels = 2;
                                          var DOCSIS30USChannels = 4;
                                          var DOCSIS31USChannels = 1;
                                          
                                          var NullValue = null;
                                          var sid;
                                          var fritzBenutzer = '..........';
                                          var fritzPasswort = '.............';
                                          var loginURL = 'http://192.168.2.1/login_sid.lua?username=';
                                          var docsisURL = 'http://192.168.2.1/data.lua';
                                          var fritzboxJsonVersion = 2; // Version 1: Fritz OS 7.29, Version 2: Fritz OS 7.56
                                          
                                          // Downstream DOCSIS 3.0
                                          for (var i = 1; i <= 30; i++) {
                                              var Channel = 'C' + (i < 10 ? '0' + i.toString() : i.toString());
                                              createState('Internet.Docsis.DS.' + Channel + '.Frequency', 0, false, {
                                                  name: 'Frequency',
                                                  unit: 'MHz',
                                                  type: 'mixed',
                                                  role: 'state'
                                              });
                                              createState('Internet.Docsis.DS.' + Channel + '.Modulation', 0, false, {
                                                  name: 'Modulation',
                                                  unit: 'QAM',
                                                  type: 'mixed',
                                                  role: 'state'
                                              });
                                              createState('Internet.Docsis.DS.' + Channel + '.PowerLevel', 0, false, {
                                                  name: 'PowerLevel',
                                                  unit: 'dBmV',
                                                  type: 'mixed',
                                                  role: 'state'
                                              });
                                              createState('Internet.Docsis.DS.' + Channel + '.MSE', 0, false, {
                                                  name: 'MSE',
                                                  unit: 'dB',
                                                  type: 'mixed',
                                                  role: 'state'
                                              });
                                              createState('Internet.Docsis.DS.' + Channel + '.Latency', 0, false, {
                                                  name: 'Latency',
                                                  unit: 'ms',
                                                  type: 'mixed',
                                                  role: 'state'
                                              });
                                              createState('Internet.Docsis.DS.' + Channel + '.CorrectableErrors', 0, false, {
                                                  name: 'CorrectableErrors',
                                                  type: 'mixed',
                                                  role: 'state'
                                              });
                                              createState('Internet.Docsis.DS.' + Channel + '.CorrectableErrorsPerMinute', 0, false, {
                                                  name: 'CorrectableErrorsPerMinute',
                                                  type: 'mixed',
                                                  role: 'state'
                                              });
                                              createState('Internet.Docsis.DS.' + Channel + '.UncorrectableErrors', 0, false, {
                                                  name: 'UncorrectableErrors',
                                                  type: 'mixed',
                                                  role: 'state'
                                              });
                                              createState('Internet.Docsis.DS.' + Channel + '.UncorrectableErrorsPerMinute', 0, false, {
                                                  name: 'UncorrectableErrorsPerMinute',
                                                  type: 'mixed',
                                                  role: 'state'
                                              });
                                          }
                                          
                                          // Upstream DOCSIS 3.0
                                          for (var i = 0; i < 4; i++) {
                                              var Channel = 'C0' + i.toString();
                                              createState('Internet.Docsis.US.' + Channel + '.Frequency', 0, false, {
                                                  name: 'Frequency',
                                                  unit: 'MHz',
                                                  type: 'mixed',
                                                  role: 'state'
                                              });
                                              createState('Internet.Docsis.US.' + Channel + '.Modulation', 0, false, {
                                                  name: 'Modulation',
                                                  unit: 'QAM',
                                                  type: 'mixed',
                                                  role: 'state'
                                              });
                                              createState('Internet.Docsis.US.' + Channel + '.MultiplexMethod', 0, false, {
                                                  name: 'MultiplexMethod',
                                                  type: 'mixed',
                                                  role: 'state'
                                              });
                                              createState('Internet.Docsis.US.' + Channel + '.PowerLevel', 0, false, {
                                                  name: 'PowerLevel',
                                                  unit: 'dBmV',
                                                  type: 'mixed',
                                                  role: 'state'
                                              });
                                              createState('Internet.Docsis.US.' + Channel + '.ChannelID', 0, false, {
                                                  name: 'ChannelID',
                                                  type: 'mixed',
                                                  role: 'state'
                                              });
                                          }
                                          
                                          // Downstream DOCSIS 3.1
                                          createState('Internet.Docsis31.DS.C01.Frequency', 0, false, {
                                              name: 'Frequency',
                                              unit: 'MHz',
                                              type: 'mixed',
                                              role: 'state'
                                          });
                                          createState('Internet.Docsis31.DS.C01.Modulation', 0, false, {
                                              name: 'Modulation',
                                              unit: 'QAM',
                                              type: 'mixed',
                                              role: 'state'
                                          });
                                          createState('Internet.Docsis31.DS.C01.PowerLevel', 0, false, {
                                              name: 'PowerLevel',
                                              unit: 'dBmV',
                                              type: 'mixed',
                                              role: 'state'
                                          });
                                          createState('Internet.Docsis31.DS.C01.MSE', 0, false, {
                                              name: 'MSE',
                                              unit: 'dB',
                                              type: 'mixed',
                                              role: 'state'
                                          });
                                          createState('Internet.Docsis31.DS.C01.UncorrectableErrors', 0, false, {
                                              name: 'UncorrectableErrors',
                                              type: 'mixed',
                                              role: 'state'
                                          });
                                          createState('Internet.Docsis31.DS.C01.UncorrectableErrorsPerMinute', 0, false, {
                                              name: 'UncorrectableErrorsPerMinute',
                                              type: 'mixed',
                                              role: 'state'
                                          });
                                          createState('Internet.Docsis31.DS.C02.Frequency', 0, false, {
                                              name: 'Frequency',
                                              unit: 'MHz',
                                              type: 'mixed',
                                              role: 'state'
                                          });
                                          createState('Internet.Docsis31.DS.C02.Modulation', 0, false, {
                                              name: 'Modulation',
                                              unit: 'QAM',
                                              type: 'mixed',
                                              role: 'state'
                                          });
                                          createState('Internet.Docsis31.DS.C02.PowerLevel', 0, false, {
                                              name: 'PowerLevel',
                                              unit: 'dBmV',
                                              type: 'mixed',
                                              role: 'state'
                                          });
                                          createState('Internet.Docsis31.DS.C02.MSE', 0, false, {
                                              name: 'MSE',
                                              unit: 'dB',
                                              type: 'mixed',
                                              role: 'state'
                                          });
                                          createState('Internet.Docsis31.DS.C02.UncorrectableErrors', 0, false, {
                                              name: 'UncorrectableErrors',
                                              type: 'mixed',
                                              role: 'state'
                                          });
                                          createState('Internet.Docsis31.DS.C02.UncorrectableErrorsPerMinute', 0, false, {
                                              name: 'UncorrectableErrorsPerMinute',
                                              type: 'mixed',
                                              role: 'state'
                                          });
                                          
                                          // Upstream DOCSIS 3.1
                                          createState('Internet.Docsis31.US.C00.Frequency', 0, false, {
                                              name: 'Frequency',
                                              unit: 'MHz',
                                              type: 'mixed',
                                              role: 'state'
                                          });
                                          createState('Internet.Docsis31.US.C00.Modulation', 0, false, {
                                              name: 'Modulation',
                                              unit: 'QAM',
                                              type: 'mixed',
                                              role: 'state'
                                          });
                                          createState('Internet.Docsis31.US.C00.MultiplexMethod', 0, false, {
                                              name: 'MultiplexMethod',
                                              type: 'mixed',
                                              role: 'state'
                                          });
                                          createState('Internet.Docsis31.US.C00.FFT', 0, false, {
                                              name: 'FFT',
                                              unit: 'K',
                                              type: 'mixed',
                                              role: 'state'
                                          });
                                          createState('Internet.Docsis31.US.C00.PowerLevel', 0, false, {
                                              name: 'PowerLevel',
                                              unit: 'dBmV',
                                              type: 'mixed',
                                              role: 'state'
                                          });
                                          
                                          /**
                                           * Simple XML parser
                                           * @param {String} xml
                                           * @return {Object}
                                           */
                                          function parseXML(xml) {
                                          
                                              var beg = -1;
                                              var end = 0;
                                              var tmp = 0;
                                              var current = [];
                                              var obj = {};
                                              var from = -1;
                                          
                                              while (true) {
                                          
                                                  beg = xml.indexOf('<', beg + 1);
                                                  if (beg === -1)
                                                      break;
                                          
                                                  end = xml.indexOf('>', beg + 1);
                                                  if (end === -1)
                                                      break;
                                          
                                                  var el = xml.substring(beg, end + 1);
                                                  var c = el[1];
                                          
                                                  if (c === '?' || c === '/') {
                                          
                                                      var o = current.pop();
                                          
                                                      if (from === -1 || o !== el.substring(2, el.length - 1))
                                                          continue;
                                          
                                                      var path = current.join('.') + '.' + o;
                                                      var value = xml.substring(from, beg);
                                          
                                                      if (typeof(obj[path]) === 'undefined')
                                                          obj[path] = value;
                                                      else if (obj[path]instanceof Array)
                                                          obj[path].push(value);
                                                      else
                                                          obj[path] = [obj[path], value];
                                          
                                                      from = -1;
                                                      continue;
                                                  }
                                          
                                                  tmp = el.indexOf(' ');
                                                  var hasAttributes = true;
                                          
                                                  if (tmp === -1) {
                                                      tmp = el.length - 1;
                                                      hasAttributes = false;
                                                  }
                                          
                                                  from = beg + el.length;
                                          
                                                  var isSingle = el[el.length - 2] === '/';
                                                  var name = el.substring(1, tmp);
                                          
                                                  if (!isSingle)
                                                      current.push(name);
                                          
                                                  if (!hasAttributes)
                                                      continue;
                                          
                                                  var match = el.match(/\w+\=\".*?\"/g);
                                                  if (match === null)
                                                      continue;
                                          
                                                  var attr = {};
                                                  var length = match.length;
                                          
                                                  for (var i = 0; i < length; i++) {
                                                      var index = match[i].indexOf('"');
                                                      attr[match[i].substring(0, index - 1)] = match[i].substring(index + 1, match[i].length - 1);
                                                  }
                                          
                                                  obj[current.join('.') + (isSingle ? '.' + name : '') + '[]'] = attr;
                                              }
                                          
                                              return obj;
                                          };
                                          
                                          function loginAndGetSID() {
                                          
                                              sid = null;
                                          
                                              // Challenge holen
                                              // var options = {
                                              //    url: loginURL + fritzBenutzer,
                                              //    method: 'GET'
                                              // };
                                              // request(options, function(error, response, body)
                                          
                                              httpGet(loginURL + fritzBenutzer, (error, response) => {
                                                  if (!error && response.statusCode == 200) {
                                                      const body = response.data;
                                                      // log(' response:      ' + ', body: ' + body, 'info');
                                                      var result = parseXML(body);
                                                      var challenge = result['SessionInfo.Challenge'];
                                                      if (logging)
                                                          log('Challenge: ' + challenge);
                                          
                                                      // Einloggen und SID holen
                                                      var utf16le_encoded = iconv.encode(challenge + '-' + fritzPasswort, 'UTF-16LE', {
                                                          addBOM: false
                                                      });
                                                      var challengeResponse = crypto.createHash('md5').update(utf16le_encoded).digest('hex');
                                          
                                                      // options = {
                                                      //     url: loginURL + fritzBenutzer + '&response=' + challenge + '-' + challengeResponse,
                                                      //     method: 'GET'
                                                      // (8 )};
                                                      // request(options, function(error, response, body)
                                                      httpGet(loginURL + fritzBenutzer + '&response=' + challenge + '-' + challengeResponse, (error, response) => {
                                                          if (!error && response.statusCode == 200) {
                                                              const body = response.data;
                                                              var result = parseXML(body);
                                                              sid = result['SessionInfo.SID'];
                                                              if (logging)
                                                                  log('Logged in. SID = ' + sid, 'info');
                                                          } else {
                                                              log('error: ' + error + ', response: ' + response.statusCode.toString(), 'info');
                                                          }
                                                      });
                                                  } else {
                                                      log('error: ' + error + ', response: ' + response.statusCode.toString(), 'info');
                                                  }
                                              });
                                          }
                                          
                                          // Wenn keine Daten abgerufen werden konnten, werden die States auf NULL gesetzt
                                          function setStates2NullValues() {
                                          
                                              var NullValue = null;
                                          
                                              // DOCSIS 3.0 Downstream Channels
                                              for (i = 0; i < DOCSIS30DSChannels; i++) {
                                                  setState('Internet.Docsis.DS.C' + (i < 10 ? '0' : '') + i.toString() + '.Frequency', NullValue, true);
                                                  setState('Internet.Docsis.DS.C' + (i < 10 ? '0' : '') + i.toString() + '.Modulation', NullValue, true);
                                                  setState('Internet.Docsis.DS.C' + (i < 10 ? '0' : '') + i.toString() + '.PowerLevel', NullValue, true);
                                                  setState('Internet.Docsis.DS.C' + (i < 10 ? '0' : '') + i.toString() + '.MSE', NullValue, true);
                                                  setState('Internet.Docsis.DS.C' + (i < 10 ? '0' : '') + i.toString() + '.Latency', NullValue, true);
                                                  setState('Internet.Docsis.DS.C' + (i < 10 ? '0' : '') + i.toString() + '.CorrectableErrors', NullValue, true);
                                                  setState('Internet.Docsis.DS.C' + (i < 10 ? '0' : '') + i.toString() + '.CorrectableErrorsPerMinute', NullValue, true);
                                                  setState('Internet.Docsis.DS.C' + (i < 10 ? '0' : '') + i.toString() + '.UncorrectableErrors', NullValue, true);
                                                  setState('Internet.Docsis.DS.C' + (i < 10 ? '0' : '') + i.toString() + '.UncorrectableErrorsPerMinute', NullValue, true);
                                              }
                                          
                                              // DOCSIS 3.1 Downstream Channel
                                              setState('Internet.Docsis31.DS.C01.PowerLevel', NullValue, true);
                                              setState('Internet.Docsis31.DS.C01.MSE', NullValue, true);
                                              setState('Internet.Docsis31.DS.C01.Modulation', NullValue, true);
                                              setState('Internet.Docsis31.DS.C01.Frequency', NullValue, true);
                                              setState('Internet.Docsis31.DS.C01.UncorrectableErrors', NullValue, true);
                                              setState('Internet.Docsis31.DS.C01.UncorrectableErrorsPerMinute', NullValue, true);
                                              setState('Internet.Docsis31.DS.C02.PowerLevel', NullValue, true);
                                              setState('Internet.Docsis31.DS.C02.MSE', NullValue, true);
                                              setState('Internet.Docsis31.DS.C02.Modulation', NullValue, true);
                                              setState('Internet.Docsis31.DS.C02.Frequency', NullValue, true);
                                              setState('Internet.Docsis31.DS.C02.UncorrectableErrors', NullValue, true);
                                              setState('Internet.Docsis31.DS.C02.UncorrectableErrorsPerMinute', NullValue, true);
                                          
                                              // DOCSIS 3.0 Upstream Channels
                                              for (i = 0; i < DOCSIS30USChannels; i++) {
                                                  setState('Internet.Docsis.US.C' + (i < 10 ? '0' : '') + i.toString() + '.Frequency', NullValue, true);
                                                  setState('Internet.Docsis.US.C' + (i < 10 ? '0' : '') + i.toString() + '.Modulation', NullValue, true);
                                                  setState('Internet.Docsis.US.C' + (i < 10 ? '0' : '') + i.toString() + '.MultiplexMethod', NullValue, true);
                                                  setState('Internet.Docsis.US.C' + (i < 10 ? '0' : '') + i.toString() + '.PowerLevel', NullValue, true);
                                                  setState('Internet.Docsis.US.C' + (i < 10 ? '0' : '') + i.toString() + '.ChannelID', NullValue, true);
                                              }
                                          
                                              // DOCSIS 3.1 Upstream Channel
                                              setState('Internet.Docsis31.US.C00.PowerLevel', NullValue, true);
                                              setState('Internet.Docsis31.US.C00.Modulation', NullValue, true);
                                              if (fritzboxJsonVersion == 1) {
                                                  setState('Internet.Docsis31.US.C00.MultiplexMethod', NullValue, true);
                                              } else {
                                                  setState('Internet.Docsis31.US.C00.FFT', NullValue, true);
                                              }
                                              setState('Internet.Docsis31.US.C00.Frequency', NullValue, true);
                                          }
                                          
                                          // Holt die Informationen von der Fritzbox Benutzeroberfläche. Ab fritz.OS Version 7.2x werden die Informationen als JSON-String übermittelt (getCableModemChannelInfos Version 2)
                                          function getCableModemChannelInfosV2() {
                                          
                                              // const list = getSchedules(true);
                                              // list.forEach(schedule => log(JSON.stringify(schedule)));
                                          
                                          
                                              if (logging)
                                                  log('Schedule V6 Started');
                                              var NullValue = null;
                                              var tableData;
                                          
                                              //    var options = {
                                              //        url: docsisURL,
                                              //        method: 'POST',
                                              //        headers: {
                                              //            'Content-Type': 'application/x-www-form-urlencoded'
                                              //        },
                                              //        body: 'xhr=1&sid=' + sid + '&lang=de&page=docInfo&xhrId=all&no_sidrenew='
                                              //    };toString
                                              //    request(options, function(error, response, body)
                                              // xhr	"1"
                                              // && sid	"e88a7fea301a9529"
                                              // lang	"de"
                                              // page	"docOv"
                                              // xhrId	"all"
                                              httpPost(docsisURL,
                                                  'xhr=1&sid=' + sid + '&lang=de&page=docInfo&xhrId=all&no_sidrenew=', {
                                                  headers: {
                                                      'Content-Type': 'application/x-www-form-urlencoded'
                                                  },
                                              },
                                                  (error, response) => {
                                                  if (!error && response.statusCode == 200) {
                                                      const body = response.data;
                                                      tableData = JSON.parse(body);
                                                      if (tableData) {
                                                          // console.log(tableData.timeTillLogout);
                                                          // DOCSIS 3.0 Downstream Channels
                                          
                                          
                                                          DOCSIS30DSChannels = Object.entries(tableData.data.channelDs.docsis30).length;
                                                          if (logging)
                                                              log('DOCSIS30DSChannels: ' + DOCSIS30DSChannels.toString(), 'info');
                                          
                                                          for (i = 0; i < DOCSIS30DSChannels; i++) {
                                          
                                                              var channelID = parseInt(tableData.data.channelDs.docsis30[i].channelID);
                                          
                                                              setState('Internet.Docsis.DS.C' + (channelID < 10 ? '0' : '') + tableData.data.channelDs.docsis30[i].channelID + '.Frequency', parseInt(tableData.data.channelDs.docsis30[i].frequency), true);
                                                              if (fritzboxJsonVersion == 1) {
                                                                  setState('Internet.Docsis.DS.C' + (channelID < 10 ? '0' : '') + tableData.data.channelDs.docsis30[i].channelID + '.Modulation', parseInt(tableData.data.channelDs.docsis30[i].type.replace('QAM', '')), true);
                                                              } else {
                                                                  setState('Internet.Docsis.DS.C' + (channelID < 10 ? '0' : '') + tableData.data.channelDs.docsis30[i].channelID + '.Modulation', parseInt(tableData.data.channelDs.docsis30[i].modulation.replace('QAM', '')), true);
                                                              }
                                                              setState('Internet.Docsis.DS.C' + (channelID < 10 ? '0' : '') + tableData.data.channelDs.docsis30[i].channelID + '.PowerLevel', parseFloat(tableData.data.channelDs.docsis30[i].powerLevel), true);
                                                              setState('Internet.Docsis.DS.C' + (channelID < 10 ? '0' : '') + tableData.data.channelDs.docsis30[i].channelID + '.MSE', parseFloat(tableData.data.channelDs.docsis30[i].mse), true);
                                                              setState('Internet.Docsis.DS.C' + (channelID < 10 ? '0' : '') + tableData.data.channelDs.docsis30[i].channelID + '.Latency', parseFloat(tableData.data.channelDs.docsis30[i].latency), true);
                                          
                                                              var correctableErrors = getState('Internet.Docsis.DS.C' + (channelID < 10 ? '0' : '') + tableData.data.channelDs.docsis30[i].channelID + '.CorrectableErrors');
                                                              var lastValue = correctableErrors.val;
                                                              var lastTimeStamp = correctableErrors.ts;
                                                              var newValue = parseInt(tableData.data.channelDs.docsis30[i].corrErrors);
                                                              setState('Internet.Docsis.DS.C' + (channelID < 10 ? '0' : '') + tableData.data.channelDs.docsis30[i].channelID + '.CorrectableErrors', newValue, true);
                                          
                                                              // Sicherstellen, dass der letzte und der neue Wert nicht NULL sind und dann die Differenz zum letzten Wert berechnen
                                                              if (lastValue != null && newValue != null && lastTimeStamp != null) {
                                                                  var ts_diff = new Date().getTime() - lastTimeStamp;
                                                                  // Die Differenz zum letzten Wert nur dann speichern, wenn dieser ca. 1 Min. alt ist
                                                                  if (ts_diff > 40000 && ts_diff < 80000 && newValue >= lastValue) {
                                                                      setState('Internet.Docsis.DS.C' + (channelID < 10 ? '0' : '') + tableData.data.channelDs.docsis30[i].channelID + '.CorrectableErrorsPerMinute', newValue - lastValue, true);
                                                                  } else {
                                                                      setState('Internet.Docsis.DS.C' + (channelID < 10 ? '0' : '') + tableData.data.channelDs.docsis30[i].channelID + '.CorrectableErrorsPerMinute', NullValue, true);
                                                                  }
                                                              }
                                          
                                                              var uncorrectableErrors = getState('Internet.Docsis.DS.C' + (channelID < 10 ? '0' : '') + tableData.data.channelDs.docsis30[i].channelID + '.UncorrectableErrors');
                                                              lastValue = uncorrectableErrors.val;
                                                              lastTimeStamp = uncorrectableErrors.ts;
                                                              newValue = parseInt(tableData.data.channelDs.docsis30[i].nonCorrErrors);
                                                              setState('Internet.Docsis.DS.C' + (channelID < 10 ? '0' : '') + tableData.data.channelDs.docsis30[i].channelID + '.UncorrectableErrors', newValue, true);
                                          
                                                              // Sicherstellen, dass der letzte und der neue Wert nicht NULL sind und dann die Differenz zum letzten Wert berechnen
                                                              if (lastValue != null && newValue != null && lastTimeStamp != null) {
                                                                  ts_diff = new Date().getTime() - lastTimeStamp;
                                                                  // Die Differenz zum letzten Wert nur dann speichern, wenn dieser ca. 1 Min. alt ist
                                                                  if (ts_diff > 40000 && ts_diff < 80000 && newValue >= lastValue) {
                                                                      setState('Internet.Docsis.DS.C' + (channelID < 10 ? '0' : '') + tableData.data.channelDs.docsis30[i].channelID + '.UncorrectableErrorsPerMinute', newValue - lastValue, true);
                                                                  } else {
                                                                      setState('Internet.Docsis.DS.C' + (channelID < 10 ? '0' : '') + tableData.data.channelDs.docsis30[i].channelID + '.UncorrectableErrorsPerMinute', NullValue, true);
                                                                  }
                                                              }
                                                          }
                                          
                                                          // DOCSIS 3.1 Downstream Channel
                                                          if (tableData.data.channelDs.docsis31 != null) {
                                                              DOCSIS31DSChannels = Object.entries(tableData.data.channelDs.docsis31).length;
                                                              if (logging)
                                                                  log('DOCSIS31DSChannels: ' + DOCSIS31DSChannels.toString(), 'info');
                                          
                                                              if (DOCSIS31DSChannels > 0) {
                                                                  setState('Internet.Docsis31.DS.C01.PowerLevel', parseFloat(tableData.data.channelDs.docsis31[0].powerLevel), true);
                                                                  if (fritzboxJsonVersion == 1) {
                                                                      setState('Internet.Docsis31.DS.C01.Modulation', parseInt(tableData.data.channelDs.docsis31[0].type.replace('K', '')), true);
                                                                  } else {
                                                                      setState('Internet.Docsis31.DS.C01.Modulation', parseInt(tableData.data.channelDs.docsis31[0].modulation.replace('QAM', '')), true);
                                                                      setState('Internet.Docsis31.DS.C01.MSE', parseInt(tableData.data.channelDs.docsis31[0].mer), true);
                                                                      //           "docsis31": [{
                                                                      //                    "powerLevel": "0.5",
                                                                      //                    "nonCorrErrors": 3717,
                                                                      //                    "modulation": "4096QAM",
                                                                      //                    "plc": "823",
                                                                      //                    "mer": "36",
                                                                      //                    "fft": "4K",
                                                                      //                    "channelID": 193,
                                                                      //                    "frequency": "750.975 - 860.975"
                                                                      var uncorrectableErrors = getState('Internet.Docsis31.DS.C01.UncorrectableErrors');
                                                                      lastValue = uncorrectableErrors.val;
                                                                      lastTimeStamp = uncorrectableErrors.ts;
                                                                      newValue = parseInt(tableData.data.channelDs.docsis31[0].nonCorrErrors);
                                                                      setState('Internet.Docsis31.DS.C01.UncorrectableErrors', newValue, true);
                                                                      setState('Internet.Docsis31.DS.C01.UncorrectableErrorsPerMinute', newValue - lastValue, true);
                                                                  }
                                                                  setState('Internet.Docsis31.DS.C01.Frequency', tableData.data.channelDs.docsis31[0].frequency, true);
                                                              }
                                                              if (DOCSIS31DSChannels > 1) {
                                                                  setState('Internet.Docsis31.DS.C02.PowerLevel', parseFloat(tableData.data.channelDs.docsis31[1].powerLevel), true);
                                                                  if (fritzboxJsonVersion == 1) {
                                                                      setState('Internet.Docsis31.DS.C02.Modulation', parseInt(tableData.data.channelDs.docsis31[1].type.replace('K', '')), true);
                                                                  } else {
                                                                      setState('Internet.Docsis31.DS.C02.Modulation', parseInt(tableData.data.channelDs.docsis31[1].modulation.replace('QAM', '')), true);
                                                                      setState('Internet.Docsis31.DS.C02.MSE', parseInt(tableData.data.channelDs.docsis31[1].mer), true);
                                                                      var uncorrectableErrors = getState('Internet.Docsis31.DS.C02.UncorrectableErrors');
                                                                      lastValue = uncorrectableErrors.val;
                                                                      lastTimeStamp = uncorrectableErrors.ts;
                                                                      newValue = parseInt(tableData.data.channelDs.docsis31[1].nonCorrErrors);
                                                                      setState('Internet.Docsis31.DS.C02.UncorrectableErrors', newValue, true);
                                                                      setState('Internet.Docsis31.DS.C02.UncorrectableErrorsPerMinute', newValue - lastValue, true);
                                                                  }
                                                                  setState('Internet.Docsis31.DS.C02.Frequency', tableData.data.channelDs.docsis31[1].frequency, true);
                                                              }
                                                          }
                                          
                                                          // DOCSIS 3.0 Upstream Channels
                                                          if (tableData.data.channelUs.docsis30 != null) {
                                                              DOCSIS30USChannels = Object.entries(tableData.data.channelUs.docsis30).length;
                                                              if (DOCSIS30USChannels > 0) {
                                                                  if (logging)
                                                                      log('DOCSIS30USChannels: ' + DOCSIS30USChannels.toString(), 'info');
                                                                  for (i = 0; i < DOCSIS30USChannels; i++) {
                                                                      // var channelID = parseInt(tableData.data.channelUs.docsis30[i].channelID);
                                                                      setState('Internet.Docsis.US.C' + (i < 10 ? '0' : '') + i.toString() + '.Frequency', parseFloat(tableData.data.channelUs.docsis30[i].frequency), true);
                                                                      if (fritzboxJsonVersion == 1) {
                                                                          setState('Internet.Docsis.US.C' + (i < 10 ? '0' : '') + i.toString() + '.Modulation', parseInt(tableData.data.channelUs.docsis30[i].type.replace('QAM', '')), true);
                                                                      } else {
                                                                          setState('Internet.Docsis.US.C' + (i < 10 ? '0' : '') + i.toString() + '.Modulation', parseInt(tableData.data.channelUs.docsis30[i].modulation.replace('QAM', '')), true);
                                                                      }
                                                                      setState('Internet.Docsis.US.C' + (i < 10 ? '0' : '') + i.toString() + '.MultiplexMethod', tableData.data.channelUs.docsis30[i].multiplex, true);
                                                                      setState('Internet.Docsis.US.C' + (i < 10 ? '0' : '') + i.toString() + '.PowerLevel', parseFloat(tableData.data.channelUs.docsis30[i].powerLevel), true);
                                                                      setState('Internet.Docsis.US.C' + (i < 10 ? '0' : '') + i.toString() + '.ChannelID', tableData.data.channelUs.docsis30[i].channelID, true);
                                                                  }
                                                              } else {
                                                                  for (i = 1; i <= 4; i++) {
                                                                      // var channelID = parseInt(tableData.data.channelUs.docsis30[i].channelID);
                                                                      setState('Internet.Docsis.US.C0' + i.toString() + '.Frequency', 0, true);
                                                                      setState('Internet.Docsis.US.C0' + i.toString() + '.Modulation', 0, true);
                                                                      setState('Internet.Docsis.US.C0' + i.toString() + '.MultiplexMethod', '', true);
                                                                      setState('Internet.Docsis.US.C0' + i.toString() + '.PowerLevel', 0, true);
                                                                      setState('Internet.Docsis.US.C0' + i.toString() + '.ChannelID', 0, true);
                                                                  }
                                                              }
                                                          }
                                          
                                                          // DOCSIS 3.1 Upstream Channel
                                                          if (tableData.data.channelUs.docsis31 != null) {
                                                              DOCSIS31USChannels = Object.entries(tableData.data.channelUs.docsis31).length; ;
                                                              if (DOCSIS31USChannels > 0) {
                                                                  if (logging)
                                                                      log('DOCSIS31USChannels: ' + DOCSIS31USChannels.toString(), 'info');
                                                                  setState('Internet.Docsis31.US.C00.PowerLevel', parseFloat(tableData.data.channelUs.docsis31[0].powerLevel), true);
                                                                  if (fritzboxJsonVersion == 1) {
                                                                      setState('Internet.Docsis31.US.C00.Modulation', parseInt(tableData.data.channelUs.docsis31[0].type.replace('K', '')), true);
                                                                  } else {
                                                                      setState('Internet.Docsis31.US.C00.Modulation', parseInt(tableData.data.channelUs.docsis31[0].modulation.replace('QAM', '')), true);
                                                                  }
                                                                  if (fritzboxJsonVersion == 1) {
                                                                      setState('Internet.Docsis31.US.C00.MultiplexMethod', tableData.data.channelUs.docsis31[0].multiplex, true);
                                                                  } else {
                                                                      setState('Internet.Docsis31.US.C00.FFT', parseInt(tableData.data.channelUs.docsis31[0].fft.replace('K', '')), true);
                                                                  }
                                                                  setState('Internet.Docsis31.US.C00.Frequency', parseInt(tableData.data.channelUs.docsis31[0].frequency), true);
                                                              } else {
                                                                  // Es ist kein DOCSIS 3.1 Kanal aktiv
                                                                  if (logging)
                                                                      log('DOCSIS31USChannels: ' + DOCSIS31USChannels.toString(), 'info');
                                                                  setState('Internet.Docsis31.US.C00.PowerLevel', 0, true);
                                                                  setState('Internet.Docsis31.US.C00.Modulation', 0, true);
                                                                  if (fritzboxJsonVersion == 1) {
                                                                      setState('Internet.Docsis31.US.C00.MultiplexMethod', NullValue, true);
                                                                  } else {
                                                                      setState('Internet.Docsis31.US.C00.FFT', NullValue, true);
                                                                  }
                                                                  setState('Internet.Docsis31.US.C00.Frequency', 0, true);
                                                              }
                                                          }
                                          
                                                      } else {
                                                          log('Empty response', 'error');
                                                          setStates2NullValues();
                                                          loginAndGetSID();
                                                      }
                                                  } else {
                                                      log('error: ' + error + ', response: ' + response.statusCode.toString(), 'error');
                                                      setStates2NullValues();
                                                      loginAndGetSID();
                                                  }
                                              });
                                          
                                          }
                                          
                                          if (logging)
                                              log('DocsisInfo starting', 'info');
                                          
                                          // SID holen und merken (User Token)
                                          loginAndGetSID();
                                          var getSIDinterval = setInterval(loginAndGetSID, 900000); // Alle 15 Minuten neue SID holen
                                          
                                          if (fritzboxJsonVersion == 1) {
                                              // FFT gibt es in Version 1 noch nicht. Feld leeren.
                                              if (getState('Internet.Docsis31.US.C00.FFT').val != NullValue) {
                                                  setState('Internet.Docsis31.US.C00.FFT', NullValue, true);
                                              }
                                          } else {
                                              // MultiplexMethod gibt es ab Version 2 nicht mehr. Feld leeren.
                                              if (getState('Internet.Docsis31.US.C00.MultiplexMethod').val != NullValue) {
                                                  setState('Internet.Docsis31.US.C00.MultiplexMethod', NullValue, true);
                                              }
                                          }
                                          
                                          schedule("* * * * *", function () { // Zu jeder vollen Minute die Fritzbox DOCSIS-Daten abfragen
                                              getCableModemChannelInfosV2();
                                          });
                                          
                                          

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

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


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate
                                          FAQ Cloud / IOT
                                          HowTo: Node.js-Update
                                          HowTo: Backup/Restore
                                          Downloads
                                          BLOG

                                          801

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          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