Pi-Hole Integration in openHAB
Tags: Ads, Blocker, Coding, Nerd, openHAB, Pi-Hole, Raspberry Pi, Smart Home, Spam
Die nächste technische Neuerung hält Einzug in die interne Infrastruktur und wird ebenfalls in das openHAB aufgenommen: Pi-Hole. Eine Software-Komponente, welche Netzwerk-weit die Auflösung von Domainnamen auf IP-Adressen mit Blacklisten abgleichen kann, um sowohl Werbung als auch Gambling, Porn etc. zu unterdrücken. Das Pi-Hole ist direkt a den Router gekoppelt. Dadurch sind alle DNS Anfragen im Netzwerk betroffen und entsprechend alle Apps (auch auf Smartphones und co.) können die Adressen der Blacklist nicht mehr auflösen. Sehr praktisch. Nun wollte ich das Pi-Hole aber nicht nur integrieren, sondern auch mittels openHAB steuern können. So bin ich vorgegangen…
Pi-Hole aufsetzen
Der Pi-Hole kann theoretisch auf verschiedenen Hardwaresystemen betrieben werden (auch Docker möglich), ich habe mich jedoch für einen “Raspberry Pi Zero WH” entschieden, da dieser zwar die Namensauflösung macht, jedoch nicht der Traffic selbst über die Hardware läuft. Dadurch reicht die Hardware aus. Der Pi inkl. Gehäuse, Netzteil und USB-LAN Adapter liegt aktuell bei ca. 25€. Via Raspberry Pi Imager habe ich die Lite Version (ohne Desktop-Umgebung) von Raspberry Pi OS installiert. Im Anschluss habe ich mich mit dem System verbunden und den sehr detaillierten Installations-Prozess durchgeführt. Vieles passiert hier automatisch und kann individuell konfiguriert werden. Im Anschluss hat das Pi-Hole eine feste IP und eine grafische Oberfläche, welche via Browser erreichbar ist.
Damit ist es jedoch noch nicht getan. Im Router muss nun noch der Pi-Hole für die Auflösung von DNS Anfragen hinterlegt werden (Dokumentation). Und das war es schon. Einfach, oder? Während der Installation des Pi-Hole konnte man zudem den Upstream-DNS Server wählen und auch schon Block-Listen auswählen, welche direkt mitinstalliert werden. Im Nachgang kann man den Pi-Hole noch nach konfigurieren und feintunen. Dies geht dann alles über die Web-Oberfläche. Aber auch ohne weitere Konfiguration läuft dieser echt gut!
Integration in openHAB
Nun möchte ich jedoch nicht nur einen Nezwerkweiten DNS Blocker im Einsatz haben, sondern auch Informationen im Smart Home im Zugriff haben und/oder diesen temporär ausschalten können. Dazu eignet sich die API des Pi-Hole, wo man auf aktuelle Statistiken zugreifen kann, aber auch das Blocken ein-/ausschalten kann. Für den Zugriff braucht man zunächst den API Key, welchen man unter “Settings -> API -> API Token” findet. Ist dieser gefunden, kann im openHAB ein HTTP Binding Thing mit der folgenden Konfiguration angelegt werden. Dabei werden 4 Channels konfiguriert.
- Anfragen heute (Zahl)
- Geblockt heute (Zahl)
- Quote in Prozent heute (Zahl)
- Ein-/ausschalten (Switch)
UID: http:url:pihole
label: Pi-Hole
thingTypeUID: http:url
configuration:
authMode: BASIC
ignoreSSLErrors: false
baseURL: http://YOUR_PI_HOLE_DOMAIN_HERE/admin/
delay: 0
stateMethod: GET
refresh: 300
commandMethod: GET
timeout: 3000
bufferSize: 2048
channels:
- id: dns_queries_today
channelTypeUID: http:number
label: DNS queries today
description: null
configuration:
mode: READONLY
stateExtension: api.php?summaryRaw&auth=API_AUTH_TOKEN_HERE
stateTransformation: JSONPATH:$.dns_queries_today
- id: ads_blocked_today
channelTypeUID: http:number
label: Ads blocked today
description: null
configuration:
mode: READONLY
stateExtension: api.php?summaryRaw&auth=API_AUTH_TOKEN_HERE
stateTransformation: JSONPATH:$.ads_blocked_today
- id: ads_percentage_today
channelTypeUID: http:number
label: Ads percentage today
description: null
configuration:
mode: READONLY
unit: "%"
stateExtension: api.php?summaryRaw&auth=API_AUTH_TOKEN_HERE
stateTransformation: JSONPATH:$.ads_percentage_today
- id: status
channelTypeUID: http:switch
label: Status
description: null
configuration:
onValue: enable
offValue: disable
stateExtension: api.php?summaryRaw&auth=API_AUTH_TOKEN_HERE
commandExtension: api.php?%2$s&auth=API_AUTH_TOKEN_HERE
stateTransformation: JSONPATH:$.status∩REGEX:s/led/le/g
Nachdem das “Thing” konfiguriert ist, könnt ihr Items anlegen und in z.B. Sitemaps darstellen. Ein separater Zugriff auf die Pi-Hole Oberfläche ist dann für eine Prüfung nicht mehr nötig, sondern wird nur noch für die weitere Konfiguration benötigt. Zudem kann der Blocker dann einfach via openHAB-App gesteuert werden. Wie das in einer Sitemap aussehen kann, seht ihr hier:
Fazit
Einfach nur Mega! Ich hatte bereits Anfang letzten Jahres von Pi-Hole gehört, bin aber bisher nicht dazu gekommen einen einzurichten. Jetzt wo der Pi-Hole läuft, frage ich mich, warum ich dies nicht schon früher gemacht habe. Es ist Mega praktisch, weil es alle Geräte/Clients im Netzwerk betrifft und auch alle Applikationen/Apps mit einschließt. Durch die Weboberfläche kann man das Regelwerk und die Ad-Listen dann noch im Detail einstellen. Wirklich mächtiges Tool, was einem ein wenig Privatsphäre zurück gibt ;)
Hinterlasse einen Kommentar/Leserbrief!