Pi-Hole : Statistiken in Fhem anzeigen

Begonnen von fh168, 08 Februar 2018, 16:46:32

Vorheriges Thema - Nächstes Thema

fh168

Ich habe in meinem Blog https://blog.moneybag.de/fhem-pi-hole-statistiken-auslesen/ drüber geschrieben, aber vielleicht ist es hier passender:

Wer Pi-Hole benutzt, kann auf Fhem sich die Statistiken anzeigen lassen. Anzahl der geblockten Sites usw.
Die IP muss noch auf die Pi-Hole IP geändert werden. Die Werte liegen dann als Readings vor.

define pihole HTTPMOD http://192.168.178.152/admin/api.php?summary 60
attr pihole userattr reading01Name reading01Regex reading02Name reading02Regex reading03Name reading03Regex reading04Name reading04Regex reading05Name reading05Regex reading06Name reading06Regex reading07Name reading07Regex reading08Name reading08Regex reading09Name reading09Regex reading10Name reading10Regex
attr pihole reading01Name domains_being_blocked
attr pihole reading01Regex "domains_being_blocked":"(.*?)"
attr pihole reading02Name dns_queries_today
attr pihole reading02Regex "dns_queries_today":"(.*?)"
attr pihole reading03Name ads_blocked_today
attr pihole reading03Regex "ads_blocked_today":"(.*?)"
attr pihole reading04Name ads_percentage_today
attr pihole reading04Regex "ads_percentage_today":"(.*?)"
attr pihole reading05Name unique_domains
attr pihole reading05Regex "unique_domains":"(.*?)"
attr pihole reading06Name queries_forwarded
attr pihole reading06Regex "queries_forwarded":"(.*?)"
attr pihole reading07Name queries_cached
attr pihole reading07Regex "queries_cached":"(.*?)"
attr pihole reading08Name clients_ever_seen
attr pihole reading08Regex "clients_ever_seen":"(.*?)"
attr pihole reading09Name unique_clients
attr pihole reading09Regex "unique_clients":"(.*?)"
attr pihole reading10Name status
attr pihole reading10Regex "status":"(.*?)"
attr pihole verbose 0

Hue, Lacrosse, PCA301, MySensors, V 1.67 CUL 868 V3.4, Lacrosse-WLAN-Gateway, Tasmota RF-

ThomasMagnum

Es geht sogar noch einfacher:

defmod PiHoleInfo HTTPMOD http://127.0.0.1/admin/api.php 300
attr PiHoleInfo userattr getURL
attr PiHoleInfo extractAllJSON 1
attr PiHoleInfo getURL http://127.0.0.1/admin/api.php


Die IP st natürlich anzupassen. Das hatte ich vor einiger Zeit mal irgendwo aufgeschnappt.

Dann noch einfach:
attr PiHoleInfo stateFormat <p align="left"><b>DNS Anfragen:</b> &emsp;;&emsp;;&emsp;;&emsp;; dns_queries_today <br> <b>Geblockte Seiten:</b> &emsp;; ads_blocked_today (ads_percentage_today %)

Und du hast eine übersichtliche Anzeige der wichtigsten Werte.

Gruß, Thomas

C0mmanda

Moin,

muss den alten Thread mal hervorkramen..

Einbindung von PiHole klappt einwandfrei, aber ein Problem habe ich:

Wenn der FasterThanLight (FTL) DNS aus irgendeinem Grund down ist liefert PiHole per JSON "FTLnotrunning 1" zurück.
Wenn der FTL läuft allerdings keine "0" sondern einfach gar nichts.

Wie bringe ich FHEM bzw Httpmod bei wenn "gar nichts" kommt das Reading FTLnotrunning auf "0" zu setzen?

Danke.

Gisbert

ZitatWenn der FasterThanLight (FTL) DNS aus irgendeinem Grund down ist liefert PiHole per JSON "FTLnotrunning 1" zurück.
Wenn der FTL läuft allerdings keine "0" sondern einfach gar nichts.
Ich habe dieses Reading überhaupt nicht; was hat es mit diesem Reading auf sich?

Viele​ Grüße​ Gisbert​
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

Christoph Morrison

Zitat von: Gisbert am 30 Juli 2019, 09:58:17
Ich habe dieses Reading überhaupt nicht; was hat es mit diesem Reading auf sich?

FTLnotrunning kommt nur wenn FTL nicht läuft, sonst existiert der Wert nicht und wenn dein FTL noch nie nicht funktioniert hat, hast du den auch noch nie bekommen.

Zitat von: C0mmanda am 30 Juli 2019, 07:09:35
Wie bringe ich FHEM bzw Httpmod bei wenn "gar nichts" kommt das Reading FTLnotrunning auf "0" zu setzen?

userReadings?

JoWiemann

#5

attr PiHoleInfo userReadings myFTLnotrunning  {ReadingsVal($name,"FTLnotrunning","0")}
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

C0mmanda

Zitat von: JoWiemann am 30 Juli 2019, 17:27:11

attr PiHoleInfo userReadings myFTLnotrunning  {ReadingsVal($name,"FTLnotrunning","0")}


Vielen Dank!
Manchmal kommt man auf die einfachsten Lösungen nicht... meine ist etwas aufwändiger und weniger elegant geworden  :-\

FTL_aktive:status:.* {my $FTL = ReadingsVal($name,"FTLnotrunning",0); ($FTL == 1) ? 'on' : 'off'; }

FHEMAN

Man kann den Werbeblocker über die API übrigens (auch temporär) deaktivieren, was seltsamerweise eine ganz wichtige Anforderung meiner Liebsten darstellt... ::))

GetHttpFile("pi.hole", "/admin/api.php?disable=3600&auth=PASSWORDHASH_aus_setupVars.conf");

Mit dem Satz "Computer, Werbeblocker aus" können bei uns nun eine Stunde lang wieder Payback Punkte gesammelt werden...
NUC7i5 | PROXMOX | FHEM 6.2 | 1 HMLAND | 2 UART | HM | LMS | HIFIBERRY | DOORBIRD | BLINK | BUDERUS | HUE | ALEXA | MILIGHT | LUFTDATENINFO | MQTT| ZIGBEE2MQTT | INDEGO | ROBOROCK | SMA | APC | OPENWB

Mumpitz

Zitat von: FHEMAN am 29 August 2019, 00:02:47
Man kann den Werbeblocker über die API übrigens (auch temporär) deaktivieren, was seltsamerweise eine ganz wichtige Anforderung meiner Liebsten darstellt... ::))

GetHttpFile("pi.hole", "/admin/api.php?disable=3600&auth=PASSWORDHASH_aus_setupVars.conf");

Mit dem Satz "Computer, Werbeblocker aus" können bei uns nun eine Stunde lang wieder Payback Punkte gesammelt werden...

Super, genau danach habe ich gesucht!!!
Danke...

Gisbert

Zitat von: FHEMAN am 29 August 2019, 00:02:47
Man kann den Werbeblocker über die API übrigens (auch temporär) deaktivieren, was seltsamerweise eine ganz wichtige Anforderung meiner Liebsten darstellt... ::))

GetHttpFile("pi.hole", "/admin/api.php?disable=3600&auth=PASSWORDHASH_aus_setupVars.conf");

Hallo FHEMAN,

ich weiß hiermit:
PASSWORDHASH_aus_setupVars.conf
noch nichts anzufangen. Ist das das Passwort, was man zum login bei pi-hole benutzt?

Wo wird "GetHttpFile..." eingegeben. Im Browser, in der Kommandozeile in Fhem?

Viele​ Grüße​ Gisbert​
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

CoolTux

Es gibt wohl auf dem PiHole eine Datei setupVars.conf dort steht ein Passwort Hash drin. Der soll wohl an die Stelle.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Gisbert

Hallo CoolTux,

die Datei setupVars.conf in /etc/pihole habe ich gefunden. Dort steht folgendes drin:
WEBPASSWORD=d846802.... (ca. 30-40 Stellen lang)
Ist damit der Passwort Hash gemeint?

Bleibt noch die Frage, an welcher Stelle ich GetHttpFile... eintragen muss.
So wie er geschrieben ist, funktioniert er weder in der Fhem-Kommandozeile noch im Webbrowser.

Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

FHEMAN

#12
Moin Gisbert,
es ist genau diese lange Zahlen-/Buchstabenkonfiguration in der setupVars.conf im pihole Verzeichnis.
Das GetHttpFile müsste laut https://wiki.fhem.de/wiki/HTML_Aufruf_senden eigentlich schon so funktionieren.
Hier mein notify:

Pihole.Off:off {
GetHttpFile("pi.hole", "/admin/api.php?disable=3600&auth=2345645634523456345634567345");
sayex("Werbeblocker aus", "SB.Essen");
}


//edit: Denk dran, im ersten Parameter kein HTTP(S) voranzusetzen.
//edit2: oder besser noch nicht blockierend:

HttpUtils_NonblockingGet( { url=>"http://pi.hole/admin/api.php?disable=3600&auth=123456789123456782345678", callback=>sub() { } });


Schönen Sonntag!
Ronny
NUC7i5 | PROXMOX | FHEM 6.2 | 1 HMLAND | 2 UART | HM | LMS | HIFIBERRY | DOORBIRD | BLINK | BUDERUS | HUE | ALEXA | MILIGHT | LUFTDATENINFO | MQTT| ZIGBEE2MQTT | INDEGO | ROBOROCK | SMA | APC | OPENWB

Supadone

Zitat von: Gisbert am 01 September 2019, 10:47:38
Bleibt noch die Frage, an welcher Stelle ich GetHttpFile... eintragen muss.
So wie er geschrieben ist, funktioniert er weder in der Fhem-Kommandozeile noch im Webbrowser.

Ich hab mir einfach ein notify erstellt:

defmod Pi_Hole_deaktivieren notify Pi_Hole_dummy:off  { GetHttpFile("pi.hole", "/admin/api.php?disable=3600&auth=XXX") }

Bei XXX natürlich den Passwort Hash aus der Datei eintragen. Der Dummy wird dann durch Alexa getriggert

Mumpitz

Hallo zusammen

Ich habe bei mir einen Dummy "Werbeblocker" definierte. Dieser wird durch folgendes DOIF gesteuert:

defmod di_Werbeblocker DOIF ([Werbeblocker] eq "off") ({GetHttpFile("192.168.17.17", "/admin/api.php?disable=3600&auth=PasswortHash")})(setstate Werbeblocker on) DOELSEIF \
([Werbeblocker] eq "on") ({GetHttpFile("192.168.17.17", "/admin/api.php?enable&auth=PasswortHash")})
attr di_Werbeblocker DbLogExclude .*
attr di_Werbeblocker wait 0,3600


Der Dummy ist Standardmässig auf On und damit der Werbeblocker eingeschaltet. Bei Bedarf kann ich ihn deaktivieren durch den Schalter oder mittels Alexa. Nach einer Stude wird er automatisch wieder aktiviert oder ich stelle ihn vorher wieder auf On.

Gruss