Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. [Gelöst] Pi-Hole Daten auslesen

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [Gelöst] Pi-Hole Daten auslesen

    This topic has been deleted. Only users with topic management privileges can see it.
    • 0
      0018 last edited by

      Interessantes Thema… habe auch Pi-Hole vor kurzem auf meinem Raspi installiert. Wäre natürlich cool wenn ich das direkt über ioBroker auf meinem Tablet einsehen kann 😄

      Mfg

      1 Reply Last reply Reply Quote 0
      • P
        pix last edited by

        Hallo,

        auf diesen Hinweis hin habe ich mir meinenersten Raspi gekauft 😄

        Die Anleitung klappt einwandfrei (unter OS X), Raspi eingerichtet und pi-hole gestartet.

        Hier das neueste Skript zum Auslesen der Daten (24.4.2017):

        ! ````
        /* Pi-hole
        pi-hole JSON Leser
        ! erstellt: 23.04.2017 von Pix
        /
        var logging = false;
        var pfad = '.Pi-hole.';
        var zeitplan = '
        /5 * * * *';
        var url = 'http://192.168.178.20/admin/api.php';
        ! // ab hier nix mehr ändern
        ! // Instanz des Javascript-Adapters ermitteln
        var instanz = 'javascript.' + instance;
        if (logging) log(instanz);
        ! // ID definieren
        var idJSON = instanz + pfad + 'JSON',
        idDomains = instanz + pfad + 'Domains_blocked',
        idDNSQueries = instanz + pfad + 'DNS_queries',
        idAdsBlocked = instanz + pfad + 'Ads_blocked',
        idAdsPercentage = instanz + pfad + 'Ads_percentage',
        idActive = instanz + pfad + 'aktiv',
        idTabelle = instanz + pfad + 'Tabelle';
        ! // States erstellen
        createState(idJSON, '', {
        name: 'JSON Datei vom Pi-hole Server',
        desc: 'Kopie der JSON Datei',
        type: 'string',
        read: true,
        write: true,
        role: 'json'
        });
        createState(idDomains, {
        name: 'Pi-hole Domains blocked today',
        desc: 'Heute blockierte Domains',
        type: 'number',
        def: 0,
        read: true,
        write: true,
        role: 'value'
        });
        createState(idDNSQueries, {
        name: 'Pi-hole DNS Queries today',
        desc: 'Heutige DOmain Name Server Anfragen',
        type: 'number',
        def: 0,
        read: true,
        write: true,
        role: 'value'
        });
        createState(idAdsBlocked, {
        name: 'Pi-hole Ads blocked today',
        desc: 'Heute blockierte Werbungen',
        type: 'number',
        def: 0,
        read: true,
        write: true,
        role: 'value'
        });
        createState(idAdsPercentage, {
        name: 'Pi-hole Ads percentage today',
        desc: 'Anteil heute blockierter Werbungen an allen Werbungen', // weiß nicht, ob das korrekt übersetzt ist
        type: 'number',
        def: 0,
        read: true,
        write: true,
        role: 'value'
        });
        createState(idActive, false, {
        name: 'Ist der Pi-hole Server aktiv?',
        desc: 'Liefert das Webinterface pi.hole/admin/api.php Daten?',
        type: 'boolean',
        read: true,
        write: true,
        role: 'indicator'
        });
        createState(idTabelle, '', {
        name: 'Pi-hole HTML Tabelle',
        desc: 'HMTL Tabelle mit den Daten der JSON-Datei',
        type: 'string',
        read: true,
        write: true,
        role: 'html'
        });
        ! // weitere Datenpunkte möglich (Abfragen des PI und dessen Zustands)
        ! var request = require('request');
        ! function readPihole() {
        if (logging) log('Pi-hole: URL "' + url + '" wird abgefragt ...');
        request(url, function (error, response, body) {
        if (!error && response.statusCode == 200) {
        var result;
        try{
        result = JSON.parse(body);
        var data = JSON.stringify(result, null, 2);
        if (logging) log(data);
        if (logging) log(body);
        setState(idJSON, data);
        if (logging) log('JSON: '+ getState(idJSON).val);
        } catch (fehler_try) {
        log('Pi-hole - Parse Fehler: ' + fehler_try, 'error');
        }
        var tabelle ='';
        var dnsblocked,
        dnsqueries,
        adsblocked,
        adspercentage;

                if (result) { // CHECK
        
                    setState(idActive, true);
                    if (logging) log('Pi-hole liefert Daten und ist aktiv');
        
                    dnsblocked = (result.domains_being_blocked).replace(/,/, "");
                    dnsqueries = (result.dns_queries_today).replace(/,/, "");
                    adsblocked = result.ads_blocked_today;
                    adspercentage = result.ads_percentage_today;
        
                    setState(idDomains, parseFloat(dnsblocked));
                    setState(idDNSQueries, parseFloat(dnsqueries));
                    setState(idAdsBlocked, parseFloat(adsblocked));
                    setState(idAdsPercentage, parseFloat(adspercentage));
        
                    // Eintrag anfügen
                    tabelle += ''
                            +  ''
        
                            +  ''
                            +  ''
        
                            +  ''
                            +  ''
        
                            +  ''
                            +  '';
        
                } else tabelle += '';
                tabelle += '
        

        ! <caption>Pi-hole</caption>
        | Admin Service: ' + url + ' |
        | --- |
        | Anzahl blockierter Domains: | ' + dnsblocked + ' |
        | DNS-Abfragen (heute): | ' + dnsqueries + ' |
        | Blockierte Werbung (heute): | ' + adsblocked + ' |
        | Werbeanteil (heute in Prozent): | ' + adspercentage + ' |
        | Pi-hole nicht gefunden! |
        ! ';
        setState(idTabelle, tabelle);
        if (logging) log('HTML-Tabelle: ' + tabelle);
        } else {
        log('Pi-hole - Fehler: ' + error);
        }
        }); // Ende request
        }
        ! schedule(zeitplan, readPihole);
        setTimeout(readPihole, 500);

        
        Hier das erste Skript zum Auslesen der Daten (alt):
        
        >! ````
        /* Pi-hole
        pi-hole JSON Leser
        >! erstellt: 23.04.2017 von Pix
        */
        var logging = false;
        var pfad = '.Pi-hole.';
        var zeitplan = '*/30 * * * *';
        var url = 'http://192.168.178.20/admin/api.php';
        >! // ab hier nix mehr ändern
        >! // Instanz des Javascript-Adapters ermitteln
        var instanz = 'javascript.' + instance;
        if (logging) log(instanz);
        >! // ID definieren
        var idJSON          = instanz + pfad + 'JSON',
            idDomains       = instanz + pfad + 'Domains_blocked',
            idDNSQueries    = instanz + pfad + 'DNS_queries',
            idAdsBlocked    = instanz + pfad + 'Ads_blocked',
            idAdsPercentage = instanz + pfad + 'Ads_percentage',
            idActive        = instanz + pfad + 'aktiv',
            idTabelle       = instanz + pfad + 'Tabelle';
        >! // States erstellen
        createState(idJSON, '', {
            name: 'JSON Datei vom Pi-hole Server',
            desc: 'Kopie der JSON Datei',
            type: 'string',
            read: true,
            write: true,
            role: 'json'
        });
        createState(idDomains, {
            name: 'Pi-hole Domains blocked today', 
            desc: 'Heute blockierte Domains',
            type: 'number', 
            def:  0,
            read: true,
            write: true,
            role: 'value'
        });
        createState(idDNSQueries, {
            name: 'Pi-hole DNS Queries today', 
            desc: 'Heutige DOmain Name Server Anfragen',
            type: 'number', 
            def:  0,
            read: true,
            write: true,
            role: 'value'
        });
        createState(idAdsBlocked, {
            name: 'Pi-hole Ads blocked today', 
            desc: 'Heute blockierte Werbungen',
            type: 'number', 
            def:  0,
            read: true,
            write: true,
            role: 'value'
        });
        createState(idAdsPercentage, {
            name: 'Pi-hole Ads percentage today', 
            desc: 'Anteil heute blockierter Werbungen an allen Werbungen', // weiß nicht, ob das korrekt übersetzt ist
            type: 'number', 
            def:  0,
            read: true,
            write: true,
            role: 'value'
        });
        createState(idActive, false, {
            name: 'Ist der Pi-hole Server aktiv?', 
            desc: 'Liefert das Webinterface pi.hole/admin/api.php Daten?',
            type: 'boolean', 
            read: true,
            write: true,
            role: 'indicator'
        });
        createState(idTabelle, '', {
            name: 'Pi-hole HTML Tabelle',
            desc: 'HMTL Tabelle mit den Daten der JSON-Datei',
            type: 'string',
            read: true,
            write: true,
            role: 'html'    
        });
        >! // weitere Datenpunkte möglich (Abfragen des PI und dessen Zustands)
        >! var request = require('request');
        >! function readPihole() {
            if (logging) log('Pi-hole: URL "' + url + '" wird abgefragt ...');
            request(url, function (error, response, body) {
                if (!error && response.statusCode == 200) {
                    var result;
                    try{
                        result = JSON.parse(body);
                        var data = JSON.stringify(result, null, 2);
                        if (logging) log(data);
                        if (logging) log(body);
                        setState(idJSON, data);
                        if (logging) log('JSON: '+ getState(idJSON).val);
                    } catch (fehler_try) {
                        log('Pi-hole - Parse Fehler: ' + fehler_try, 'error');
                    }    
                    var tabelle ='';
                    var dnsblocked,
                        dnsqueries,
                        adsblocked,
                        adspercentage;  
        
                    if (result) { // CHECK
        
                        setState(idActive, true);
                        if (logging) log('Pi-hole liefert Daten und ist aktiv');
        
                        dnsblocked = result.domains_being_blocked;
                        dnsqueries = result.dns_queries_today;
                        adsblocked = result.ads_blocked_today;
                        adspercentage = result.ads_percentage_today;
        
                        setState(idDomains, dnsblocked);
                        setState(idDNSQueries, dnsqueries);
                        setState(idAdsBlocked, adsblocked);
                        setState(idAdsPercentage, adspercentage);
        
                        // Eintrag anfügen
                        tabelle += ''
                                +  ''
        
                                +  ''
                                +  ''
        
                                +  ''
                                +  ''
        
                                +  ''
                                +  '';
        
                    } else tabelle += '';
                    tabelle += '
        >! <caption>Pi-hole</caption>
        | Admin Service: ' + url + ' |
        | --- |
        | Anzahl blockierter Domains: | ' + dnsblocked + ' |
        | DNS-Abfragen (heute): | ' + dnsqueries + ' |
        | Blockierte Werbung (heute): | ' + adsblocked + ' |
        | Werbeanteil (heute in Prozent): | ' + adspercentage + ' |
        | Pi-hole nicht gefunden! |
        >! ';  
                    setState(idTabelle, tabelle);                     
                    if (logging) log('HTML-Tabelle: ' + tabelle);
                } else {
                    log('Pi-hole - Fehler: ' + error);
                }
            });   // Ende request 
        }
        >! schedule(zeitplan, readPihole);
        setTimeout(readPihole, 500);
        

        Hier ein Widget mit etwas CSS Formatierung. Es nutzt die HTML-tabelle, die im Skript zusammengebaut wird.

        [{"tpl":"tplHtml","data":{"g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","refreshInterval":"0","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"html":"{javascript.2.Pi-hole.Tabelle}"},"style":{"left":"197px","top":"588px","z-index":"25","font-size":"60%","width":"231px","height":"130px"},"widgetSet":"basic"}]
        

        So siehts aus: 261_bildschirmfoto_2017-04-23_um_13.39.28.jpg

        Viel Spaß beim Nachbauen.

        More to come…

        Gruß

        Pix

        1 Reply Last reply Reply Quote 0
        • kmxak
          kmxak Most Active last edited by

          Hi pix.

          Toll das du sowas gebaut hast.

          Leider kann ich aktuell nichts mit dem Script anfangen da ich nicht weiß wo ich es ausführen soll. In ioBroker unter Scripte dann javascript/js oder direkt auf dem Pi?

          Anmerkung zum Pi-Hole.

          Habe mit ein paar Filterlisten Probleme da sie google und web.de geblockt haben.

          Das waren die Easylist Filter

          1 Reply Last reply Reply Quote 0
          • Homoran
            Homoran Global Moderator Administrators last edited by

            Ich habe mir jetzt endlich die Seite mal genauer angesehen.

            Klingt Gut, aber…

            Was passiert mit Seiten, die einen Adblocker-Blocker haben und dann nichts mehr anzeigen?

            Kann man die dann lokal ausnehmen, oder muss man das zentral im piHole machen oder geht das gar nicht?

            Bevor ich das netzwerkweit einrichte und mir anschließend der Rest der Familie aufs Dach steigt 😉

            Gruß

            Rainer

            1 Reply Last reply Reply Quote 0
            • kmxak
              kmxak Most Active last edited by

              Falls eine Seite von pi-hole geblockt wird bekommst du folgende Meldung:
              2343_pihole.png

              Diese kannst du dann direkt Whitelisten.

              Du musst die DNS abfragen ja nicht über PI Hole laufen lassen.

              Ich hatte bis eben nur den einen Rechner darüber laufen zum Testen.

              Habe nun da alles lief die Fritzbox angewieden den DNS an die DHCP Clients raus zu geben.

              Edit:

              Habe es eben mal auf Bild.de getestet. Adblock Plus erkennt Bild.de und blockiert den Inhalt. Pi-Hole erkennt Bild.de nicht.

              1 Reply Last reply Reply Quote 0
              • P
                pix last edited by

                Hallo,

                für mich war der Raspi ja schon ein böhmisches Dorf. Ganz stolz, dass das gleich geklappt hat.

                Pi-hole ist bei mir noch in der Testphase. Ich habe in der Fritzbox den Pi-hole als lokalen DNS-Server angegeben. Mehr noch nicht.

                Allerdings wird zB Bild.de geblockt (kein AdBlocker im Browser, sondern Pi-hole). Dafür muss ich irgendwo eine Ausnahme einstellen, aber? :roll:

                Das oben geteilte Skript muss im Javascript-Adapter von ioBroker erstellt werden. Wie das geht, steht auf der Webseite iobroker.net hier: http://www.iobroker.net/docu/?page_id=6818&lang=de

                Hier eine Einführung in die Sprache: http://www.iobroker.net/docu/?page_id=5385&lang=de

                Das Skript legt die Datenpunkte an, die in VIS verwendet werden können. Es wird auch ein Datenpunkt Tabelle angelegt und mit einem HTML-Code gefüllt, der die Daten abbildet (siehe Widget oben). Alternativ lassen sich die einzelnen Daten natürlich auch in anderen Widgets anzeigen. Ein Datenpunkt "Aktiv" zeigt nur an, ob der pi-hole-Server die Daten in JSON geliefert hat.

                Gruß

                Pix

                1 Reply Last reply Reply Quote 0
                • kmxak
                  kmxak Most Active last edited by

                  ok

                  das script ist drin und läuft allerdings weiß ich nicht was:````
                  var pfad = '.Pi-hole.';

                  
                  Die IP ist klar.
                  
                  So das Script rennt schon mal 8-)
                  
                  Musste nur im Widget````
                  javascript.2.Pi-hole.Tabelle
                  ````anpassen du hast wohl mehrere js adapter am laufen?!
                  
                  Jetzt geht alles.
                  
                  In wiefern wird Bild.de bei dir geblockt?
                  
                  Welche Filter hast du aktiv?
                  1 Reply Last reply Reply Quote 0
                  • P
                    pix last edited by

                    Hallo kmxak,

                    ja, ich habe für Testzwecke mehrere Javascript Adapter. Habe das im Widget nicht angepasst, mein Fehler.

                    var pfad = '.Pi-hole.';
                    ````ist tatsächlich nur der Pfad zum Objekt im Objektreiter. Es sollen ja nicht alle Datenpunkte im Hauptverzeichnis liegen.
                    
                    Hier nochmal eine andere Variante für die VIS-Darstellung. Daten werden einzeln dargestellt (nicht HTML-Datenpunkt). Bitte Javascript-Instanz ggf. anpassen (steht auf 2). Es sind 5 einzelne Widgets, die sich natürlich auch gut gruppieren lassen. Der Hintergrund wird rot dargestellt, wenn das Skript nicht aktiv ist (übers Objekt __javascript.2.scriptEnabled.Test.Test_pihole__)
                    

                    [{"tpl":"tplValueString","data":{"oid":"javascript.2.Pi-hole.DNS_queries","visibility-cond":"==","visibility-val":1,"name":"Elevation Anzeige","html_prepend":"

                    DNS-Abfragen (heute)

                    ","html_append":"","test_html":"","gestures-offsetX":0,"gestures-offsetY":0,"signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"label_true":"Hauptschalter
                    Beschattung aktiviert Automatische Erkennung, ob Beschattung notwendig ist","visibility-groups-action":"hide"},"style":{"left":"91px","top":"901px","z-index":"21","width":"140px","color":"rgba(250,250,250,1)","font-size":"25px","height":"45px","text-align":"right","padding":"10px","background":"rgba(150,150,150,0.5)"},"widgetSet":"basic"},{"tpl":"tplValueString","data":{"oid":"javascript.2.Pi-hole.Ads_blocked","visibility-cond":"==","visibility-val":1,"name":"Anzeige Sonnenuntergang","html_prepend":"

                    Blockierte Werbung (heute)

                    ","html_append":"","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"visibility-groups-action":"hide"},"style":{"left":"91px","top":"972px","z-index":"21","width":"140px","height":"45px","text-align":"right","background-color":"rgba(150,150,150,0.5)","color":"rgba(250,250,250,1)","font-size":"25px","font-weight":"","padding":"10"},"widgetSet":"basic"},{"tpl":"tplValueString","data":{"oid":"javascript.2.Pi-hole.Ads_percentage","visibility-cond":"==","visibility-val":1,"name":"Anzeige Sonnenaufgang","html_prepend":"

                    Werbeanteil (heute)

                    ","html_append":" %","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"visibility-groups-action":"hide"},"style":{"left":"91px","top":"1043px","z-index":"21","width":"140px","height":"45px","text-align":"right","background-color":"rgba(150,150,150,0.5)","color":"rgba(250,250,250,1)","font-size":"25px","font-weight":"","padding":"10"},"widgetSet":"basic"}]

                    
                    Ich habe diese Domain Name Server verwendet:
                    ~~@[url=https://www.kuketz-blog.de/pi-hole-schwarzes-loch-fuer-werbung-raspberry-pi-teil1/:~~ 
                    
                    > ~~www.kuketz-blog.de"]~~Custom: 85.214.20.141, 213.73.91.35 [Ergänzung: DNS: Unzensierte und freie DNS-Server ohne Protokollierung] `  und die Standard Gravity Liste.
                    
                    Welche Domain müsste ich zB für Bild.de in die Whitelist eintragen? Die Werbung kommt ja wohl nicht von bild.de..
                    
                    Eintrag in die Whitelist:````
                    pihole -w domainname.de
                    

                    Gruß

                    Pix

                    1 Reply Last reply Reply Quote 0
                    • kmxak
                      kmxak Most Active last edited by

                      mit

                      nano /etc/pihole/adlists.list
                      

                      kannst du ja die ADListen bearbeiten

                      Und mir pihole -g neu einlesen.

                      Habe die ersten 6

                      die w10 telemetry

                      die erste untestet list url

                      aktiv

                      Bild.de habe ich nicht whitelisted.

                      Wird bei mir nicht geblockt

                      1 Reply Last reply Reply Quote 0
                      • P
                        pix last edited by

                        @kmxak:

                        mit

                        nano /etc/pihole/adlists.list
                        

                        kannst du ja die ADListen bearbeiten `
                        Die ist bei mir leer.

                        @kmxak:

                        Habe die ersten 6

                        die w10 telemetry

                        die erste untestet list url

                        aktiv `
                        Kannst du das nochmal genauer beschreiben?

                        Danke

                        Pix

                        1 Reply Last reply Reply Quote 0
                        • kmxak
                          kmxak Most Active last edited by

                          ach wahrscheinlich musst du noch die Befehle ausführen.

                          Siehe Bild.

                          Aber warum er per default bei dir Bild.de blockt weiß ich jetzt nicht.

                          Kommt bei aufruf bild.de gleich site was blocked by pi hole?

                          Du kannst im pi-hole admin ja auch schauen was er aktuell geblockt hat und dann gleich whitelisten oder blacklisten.
                          2343_pi-hole.png

                          1 Reply Last reply Reply Quote 0
                          • P
                            pix last edited by

                            Danke, sehe mir das morgen nochmal an.

                            Ich habe das Javascript nochmal leicht optimiert. Die Zahlen sind nicht ganz sauber. Da werden Kommas als Tausendertrennzeichen verwendet, deshalb gab es Mecker im Log. Das neue Skript ist oben eingestellt.

                            Gruß

                            Pix

                            1 Reply Last reply Reply Quote 0
                            • kmxak
                              kmxak Most Active last edited by

                              Hab in den Logs folgende Ausgabe:

                              javascript.0	2017-05-17 19:33:51.239	warn	Wrong type of javascript.0.Pi-hole.Ads_percentage: "string". Please fix, while deprecated and will not work in next versions.
                              javascript.0	2017-05-17 19:33:51.239	warn	Wrong type of javascript.0.Pi-hole.Ads_blocked: "string". Please fix, while deprecated and will not work in next versions.
                              javascript.0	2017-05-17 19:33:51.238	warn	Wrong type of javascript.0.Pi-hole.DNS_queries: "string". Please fix, while deprecated and will not work in next versions.
                              javascript.0	2017-05-17 19:33:51.237	warn	Wrong type of javascript.0.Pi-hole.Domains_blocked: "string". Please fix, while deprecated and will not work in next versions.
                              

                              Kannst du damit was anfangen? Sollten wir was fixen oder irgnorieren?

                              1 Reply Last reply Reply Quote 0
                              • paul53
                                paul53 last edited by

                                @kmxak:

                                Sollten wir was fixen oder irgnorieren? `
                                Das ist in der letzten Version von Pix schon gefixed:

                                                dnsblocked = (result.domains_being_blocked).replace(/,/, "");
                                                dnsqueries = (result.dns_queries_today).replace(/,/, "");
                                                adsblocked = result.ads_blocked_today;
                                                adspercentage = result.ads_percentage_today;
                                
                                                setState(idDomains, parseFloat(dnsblocked));
                                                setState(idDNSQueries, parseFloat(dnsqueries));
                                                setState(idAdsBlocked, parseFloat(adsblocked));
                                                setState(idAdsPercentage, parseFloat(adspercentage));
                                
                                

                                parseFloat() macht den Unterschied.

                                1 Reply Last reply Reply Quote 0
                                • kmxak
                                  kmxak Most Active last edited by

                                  Ok danke hatte die Änderung nicht bemerkt :roll:

                                  1 Reply Last reply Reply Quote 0
                                  • kmxak
                                    kmxak Most Active last edited by

                                    Habe heute Pi-Hole geupdatet.

                                    Seitdem bekomme ich folgende Fehlermeldung:

                                    host.FHEM	2017-05-25 18:12:33.021	error	instance system.adapter.javascript.0 terminated with code 0 (OK)
                                    javascript.0	2017-05-25 18:12:32.972	error	TypeError: result.domains_being_blocked.replace is not a function at Request._callback (script.js.Test.pi-hole:118:61) at Request.self.callback (/opt/iobroker/node_modules/iobroker.javascript/
                                    javascript.0	2017-05-25 18:12:32.971	error	uncaught exception: result.domains_being_blocked.replace is not a function
                                    
                                    18:13:02.679	[error]	javascript.0 TypeError: result.domains_being_blocked.replace is not a function at Request._callback (script.js.Test.pi-hole:118:61) at Request.self.callback (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:188:22) at emitTwo (events.js:87:13) at Request.emit (events.js:172:7) at Request. (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:1171:10) at emitOne (events.js:77:13) at Request.emit (events.js:169:7) at IncomingMessage. (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:1091:12) at IncomingMessage.g (events.js:260:16) at emitNone (events.js:72:20)
                                    
                                    1 Reply Last reply Reply Quote 0
                                    • P
                                      pix last edited by

                                      Hallo,

                                      den Fehler kann ich nicht bestätigen. Habe über das Dashboard mit Tools/Lists ein update ausgeführt. Danach keine Probleme mit dem Skript.

                                      Werden die anderen Werte gefüllt?

                                      Kannst du die API mit````
                                      http://IPPIHOLE/admin/api.php

                                      
                                      Pix
                                      1 Reply Last reply Reply Quote 0
                                      • kmxak
                                        kmxak Most Active last edited by

                                        Ja die Api wird geladen.

                                        Habe aber nicht nur die Listen geupdatet sondern das ganze Programm.

                                        der befehl war pihole -up

                                        Pi-hole Version v3.0.1 Web Interface Version v3.0.1 FTL Version v2.7.
                                        

                                        Finde es auch komisch das es jedes mal gleich die JS Instanz mit zum absturz bringt:

                                        host.FHEM	2017-05-26 16:46:28.570	error	instance system.adapter.javascript.0 terminated with code 0 (OK)
                                        

                                        Edit: Was ich gerade bemerkt habe ist das irgendwie mein FTL immer crashed. Ist schon wieder offline

                                        Edit: Gerade nochmal PiHole neu aufgesetzt… immer noch gleicher Fehler. :?

                                        1 Reply Last reply Reply Quote 0
                                        • ruhr70
                                          ruhr70 last edited by

                                          @kmxak:

                                          Habe heute Pi-Hole geupdatet.

                                          Seitdem bekomme ich folgende Fehlermeldung:

                                          host.FHEM	2017-05-25 18:12:33.021	error	instance system.adapter.javascript.0 terminated with code 0 (OK)
                                          javascript.0	2017-05-25 18:12:32.972	error	TypeError: result.domains_being_blocked.replace is not a function at Request._callback (script.js.Test.pi-hole:118:61) at Request.self.callback (/opt/iobroker/node_modules/iobroker.javascript/
                                          javascript.0	2017-05-25 18:12:32.971	error	uncaught exception: result.domains_being_blocked.replace is not a function
                                          ```` `  
                                          

                                          Probier mal den Block hier auszutauschen:

                                                          dnsblocked = JSON.stringify(result.domains_being_blocked).replace(/,/, "");
                                                          dnsqueries = JSON.stringify(result.dns_queries_today).replace(/,/, "");
                                                          adsblocked = JSON.stringify(result.ads_blocked_today);
                                                          adspercentage = JSON.stringify(result.ads_percentage_today);
                                          
                                          
                                          1 Reply Last reply Reply Quote 0
                                          • P
                                            pix last edited by

                                            Hallo,

                                            ich habe es etwas verändert, so läuft es bei mir:

                                                            dnsblocked = (result.domains_being_blocked)/*.replace(/,/, "")*/;
                                                            dnsqueries = (result.dns_queries_today)/*.replace(/,/, "")*/;
                                                            adsblocked = result.ads_blocked_today;
                                                            adspercentage = result.ads_percentage_today;
                                            
                                                            if ( isNaN(parseFloat(adspercentage)) === false ) {
                                                                setState(idAdsPercentage, parseFloat(adspercentage));
                                                            } else setState(idAdsPercentage, 100);
                                                            setState(idDomains, parseFloat(dnsblocked));
                                                            setState(idDNSQueries, parseFloat(dnsqueries));
                                                            setState(idAdsBlocked, parseFloat(adsblocked));
                                            

                                            Gruß

                                            Pix

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

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

                                            459
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            13
                                            47
                                            11779
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo