NEWS
[Gelöst] Pi-Hole Daten auslesen
-
Hey, vielleicht hat ja von euch einer https://pi-hole.net/ am laufen.
Ist es möglich die Daten darauf in ioBroker einzufügen?
Load Memory usw?
Hier steht was mit über Json können die Daten abgegriffen werden:
-
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
-
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:
Viel Spaß beim Nachbauen.
More to come…
Gruß
Pix
-
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
-
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
-
Falls eine Seite von pi-hole geblockt wird bekommst du folgende Meldung:
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.
-
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
-
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?
-
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
-
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
-
-
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 -
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
-
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?
-
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.
-
Ok danke hatte die Änderung nicht bemerkt :roll:
-
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)
-
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.phpPix
-
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. :?
-
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);