Startseite » , QR-Code für diese Seite

Pi-Hole Integration in openHAB

12 Februar 2024, 112x angezeigt, Kein Kommentar
Tags: , , , , , , , ,

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!

Das Dashboard des Pi-Hole nach einem Tag Laufzeit

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:

Netzwerk Informationen um Pi-Hole Information erweitert.

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 ;)

Tim Lochmüller Autor
Name: Tim Lochmüller
Webseite: http://360friends.de
Posts: 272 Posts

Hinterlasse einen Kommentar/Leserbrief!

Füge deinen Kommentar hinzu oder sende einen Trackback von deiner Webseite aus.
Du kannst zudem die Kommentare via RSS abonnieren .

Sei freundlich! Halt dich ans Thema! Kein Spam!

Mit dem Absenden bestätigst du, dass es sich um keinen Spam handelt.