Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Tester
  4. Neuer Adapter pi-hole2 für pihole>=V6

NEWS

  • Neues YouTube-Video: Visualisierung im Devices-Adapter
    BluefoxB
    Bluefox
    13
    1
    1.3k

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    8
    1
    2.1k

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    11
    1
    1.0k

Neuer Adapter pi-hole2 für pihole>=V6

Geplant Angeheftet Gesperrt Verschoben Tester
63 Beiträge 10 Kommentatoren 5.7k Aufrufe 14 Beobachtet
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • Meister MopperM Meister Mopper

    Da die API von Pi-hole v6 nicht den Abruf der insgesamt geblockten unique domains vorsieht, habe ich mich mal mit einer KI auf die Suche gemacht und eine Lösung vermittels Abfrage der sqlite3-Datenbank des Pi-hole gefunden.

    Diese wird mit einem exec-Befehl vermittels Skript initiiert. Das funktioniert natürlich nur, wenn der Systemuser iobroker auch einen passwortfreien ssh-Zugriff vermittels Schlüssel auf den Pi-hole Server hat und im Javascript-Adapter exec aktiviert wurde.

    736a0952-52af-46cd-ad76-d278c2bf5f91-image.png

    Zur Erläuterung:
    Ich habe zwei Pi-hole Server laufen, deshalb werden hier täglich zwei Datenpunkte befüllt (das muss dann nach eigenen Bedürfnissen angepasst werden).

    Hier das Skript:

    // Konfiguration der Pi-hole Server und Datenpunkte
    const piholeServers = [
       // Struktur: 0_userdata.0.Pihole.piholeX.UniqueGravityDomains
       { host: 'pihole', datapoint: '0_userdata.0.Pihole.pihole0.UniqueGravityDomains' },
       { host: 'rpifr24', datapoint: '0_userdata.0.Pihole.pihole1.UniqueGravityDomains' }
    ];
    
    // Funktion zum Erstellen der Datenpunkte, falls diese noch nicht existieren
    function createDataPoints() {
       piholeServers.forEach(server => {
           createState(server.datapoint, 0, {
               name: `Anzahl der einzigartigen Domains auf ${server.host}`,
               type: 'number',
               role: 'value',
               unit: 'Domains'
           });
       });
       console.log("Struktur der Pi-hole Datenpunkte erstellt oder geprüft.");
    }
    
    // Hauptfunktion zum Abrufen und Aktualisieren der Daten
    function updatePiHoleData() {
       console.log("Starte tägliche Pi-hole Datenaktualisierung...");
    
       // SQL-Befehl: Jetzt werden die inneren doppelten Anführungszeichen escaped,
       // während die einfachen Anführungszeichen ('gravity_count') direkt stehen bleiben können,
       // da sie vom äußeren Doppel-Anführungszeichen-Kontext geschützt werden.
       const sqlQuery = "SELECT value FROM info WHERE property = 'gravity_count';"; 
    
       piholeServers.forEach(server => {
           // ENDGÜLTIGE LÖSUNG: Äußeres JS-Kommando in Backticks.
           // Das SSH-Kommando wird von doppelten Anführungszeichen (`"`) umschlossen.
           // Die innere Anführungszeichenstruktur muss von der Datenbank die einfachen Anführungszeichen erhalten.
           const command = `ssh thomas@${server.host} "sudo pihole-FTL sqlite3 /etc/pihole/gravity.db \\"${sqlQuery}\\""`;
           // HINWEIS: Dies ist die robusteste Form der Verschachtelung, die die innere einfache Anführungszeichenkette
           // an die SQLite-Engine weitergibt, indem die äußeren Doppel-Anführungszeichen escaped werden.
    
           require('child_process').exec(command, function(error, stdout, stderr) {
               if (error) {
                   console.error(`Fehler bei SSH-Verbindung zu ${server.host}: ${error.message}`);
                   console.error(`[${server.host}] Fehlerdetails: ${stderr}`);
                   return;
               }
               if (stderr) {
                   console.error(`Stderr von ${server.host}: ${stderr}`);
               }
               
               const domainCount = parseInt(stdout.trim(), 10);
               
               if (!isNaN(domainCount)) {
                   setState(server.datapoint, domainCount, true);
                   console.log(`[${server.host}] Domainanzahl erfolgreich aktualisiert: ${domainCount}`);
               } else {
                   console.error(`[${server.host}] Konvertierung der Domainanzahl fehlgeschlagen: ${stdout}`);
               }
           });
       });
    }
    
    // 1. Datenpunkte beim Skriptstart erstellen/prüfen
    createDataPoints();
    
    // 2. Skript beim Start einmalig ausführen
    updatePiHoleData();
    
    // 3. Täglich um 01:25 Uhr morgens aktualisieren
    // Die Cron-Syntax ist: 'Minuten Stunden * * *'
    schedule('25 1 * * *', updatePiHoleData);
    

    Vielleicht hilft es ja anderen Nerds (Huch, die Emojis können noch nicht eingefügt werden ggg).

    OliverIOO Offline
    OliverIOO Offline
    OliverIO
    schrieb am zuletzt editiert von OliverIO
    #53

    @Meister-Mopper

    vergleiche bitte dein Ergebnis mal mit der folgenden Abfrage.
    top-domains hat eine count Eigenschaft. die standardmäßig auf 10 eingestellt ist, was dann auch auf dem pihole-dshboard angezeigt wird.
    wenn man die zahl dann hoch genug einstellt, dann kann man das zurückgegebene array zählen.
    das ist wahrscheinlich simpler wie per exec und ssh auf die Datenbank zuzugreifen.

    sendTo(
        'pi-hole2.0',
        'piholeapi',
        {
            method: 'GET',
            endpoint: '/stats/top_domains?blocked=true&count=999999',
        },
        function (data) {
            console.log(data.domains.length);
        },
    );
    

    Meine Adapter und Widgets
    TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
    Links im Profil

    Meister MopperM 1 Antwort Letzte Antwort
    0
    • OliverIOO OliverIO

      @Meister-Mopper

      vergleiche bitte dein Ergebnis mal mit der folgenden Abfrage.
      top-domains hat eine count Eigenschaft. die standardmäßig auf 10 eingestellt ist, was dann auch auf dem pihole-dshboard angezeigt wird.
      wenn man die zahl dann hoch genug einstellt, dann kann man das zurückgegebene array zählen.
      das ist wahrscheinlich simpler wie per exec und ssh auf die Datenbank zuzugreifen.

      sendTo(
          'pi-hole2.0',
          'piholeapi',
          {
              method: 'GET',
              endpoint: '/stats/top_domains?blocked=true&count=999999',
          },
          function (data) {
              console.log(data.domains.length);
          },
      );
      
      Meister MopperM Offline
      Meister MopperM Offline
      Meister Mopper
      Most Active
      schrieb am zuletzt editiert von
      #54

      @OliverIO

      Da komme ich leider nicht weiter, weil ich in der Pi-hole GUI keinen Token angeboten bekomme.


      da1448f0-fa7a-4c93-bdc0-678f5d1149b5-image.png

      Auch mit dem ssh sudo grep -r 'WEBPASSWORD' /etc/pihole/ gefundenen Webpassword bekomme ich einen http 400 Fehler.

      Proxmox und HA - dank KI/AI endlich "blocklyfrei"

      OliverIOO 1 Antwort Letzte Antwort
      0
      • Meister MopperM Meister Mopper

        @OliverIO

        Da komme ich leider nicht weiter, weil ich in der Pi-hole GUI keinen Token angeboten bekomme.


        da1448f0-fa7a-4c93-bdc0-678f5d1149b5-image.png

        Auch mit dem ssh sudo grep -r 'WEBPASSWORD' /etc/pihole/ gefundenen Webpassword bekomme ich einen http 400 Fehler.

        OliverIOO Offline
        OliverIOO Offline
        OliverIO
        schrieb am zuletzt editiert von
        #55

        @Meister-Mopper

        welches token?

        die api gui, sowie der adapter funktioniert mit dem passwort.
        das token wird automatisiert abgerufen.

        adapter:
        8fb84781-4baa-4cd5-9e0e-fda37b0f27e2-image.png

        und die lokale api gui:

        da ist manchmal eine kleine herausforderung die auswahl zu beginn richtig einzustellen

        zunächst die folgende url anwählen
        http://pihole/api/docs/#
        bzw
        http://<ip>/api/docs/#

        dann wichtig, nicht https sondern http auswählen
        und das passwort oben in das feld eintragen und login drücken.
        wenn das erfolgreich grün wird, dann merkt sich die seite erst mal das passwort bis zum nächsten kompletten refresh der seite
        wenn dann ein api zugriff nicht funktioniert, dann bei url noch die ip-adresse eintragen

        032488e3-d315-4fcd-bd26-35b8d7cbf8ef-image.png

        aber das beispiel war ja eigentlich direkt für ein skript im javascript adapter gedacht.
        wenn der adapter richtig eingerichtet ist und daten vom pihle bekommt, dann musst du dich da auch nicht nochmal extra anmelden

        Meine Adapter und Widgets
        TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
        Links im Profil

        1 Antwort Letzte Antwort
        0
        • patricknitschP Offline
          patricknitschP Offline
          patricknitsch
          schrieb am zuletzt editiert von
          #56

          Hallo,

          ich nutze aktuell zwei pihole2 Instanzen, die an sich sehr gut funktionieren. Mir ist aber aufgefallen, dass bei einem Verbindungsabruch die Verbindung nicht automatisch wieder aufgebaut wird. Die erste Instanz stand dann ein paar Tage auf gelb, bis ich sie neu gestartet hatte. Gerade auch, wenn der pihole-Container ein Update durchgeführt hat, war die Verbindung weg.

          Ich habe dazu mal ein Issue zum Thema automatischer Wiederaufbau der Verbindung(oder zumindest Versuch) erstellt.

          1 Antwort Letzte Antwort
          1
          • HomoranH Homoran verschob dieses Thema von Tester am
          • HomoranH Homoran verschob dieses Thema von ...nicht in offiziellem Repo am
          • OliverIOO Offline
            OliverIOO Offline
            OliverIO
            schrieb am zuletzt editiert von OliverIO
            #57

            Um den Pi Hole etwas robuster zu machen, habe ich verbessertes Error Handling eingebaut.
            Das sollte allerdings zuvor getestet werden.
            Dafür steht ein Alpha Release zur Verfügung, welches direkt von Gitter installiert werden muss
            Ich würde mich freuen, wenn ich ein paar Rückmeldungen erhalte.

            Meine Adapter und Widgets
            TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
            Links im Profil

            mcm1957M 1 Antwort Letzte Antwort
            0
            • OliverIOO OliverIO

              Um den Pi Hole etwas robuster zu machen, habe ich verbessertes Error Handling eingebaut.
              Das sollte allerdings zuvor getestet werden.
              Dafür steht ein Alpha Release zur Verfügung, welches direkt von Gitter installiert werden muss
              Ich würde mich freuen, wenn ich ein paar Rückmeldungen erhalte.

              mcm1957M Online
              mcm1957M Online
              mcm1957
              schrieb am zuletzt editiert von
              #58

              @OliverIO sagte:

              Dafür steht ein Alpha Release zur Verfügung, welches direkt von Gitter installiert werden muss

              Warum regst du eine direkte Github Installation an? Alpha Releases können doch ganz sauber von npm (nicht MIT npm) installiert werden. Und du hast die alpha ja auch sauber gepublished...

              a306b606-b3b5-4b66-beca-1fa457130244-image.jpeg

              .

              Anleitung zum Installieren einer ALPHA Release

              siehe https://forum.iobroker.net/post/1263819 (shelly durch pi-hole2 ersetzen).

              Entwicklung u Betreuung: envertech-pv, hoymiles-ms, ns-client, pid, snmp Adapter;
              Support Repositoryverwaltung.

              Wer 'nen Kaffee spendieren will: https://paypal.me

              LESEN - gute Forenbeitrage

              OliverIOO 1 Antwort Letzte Antwort
              0
              • mcm1957M mcm1957

                @OliverIO sagte:

                Dafür steht ein Alpha Release zur Verfügung, welches direkt von Gitter installiert werden muss

                Warum regst du eine direkte Github Installation an? Alpha Releases können doch ganz sauber von npm (nicht MIT npm) installiert werden. Und du hast die alpha ja auch sauber gepublished...

                a306b606-b3b5-4b66-beca-1fa457130244-image.jpeg

                .

                Anleitung zum Installieren einer ALPHA Release

                siehe https://forum.iobroker.net/post/1263819 (shelly durch pi-hole2 ersetzen).

                OliverIOO Offline
                OliverIOO Offline
                OliverIO
                schrieb am zuletzt editiert von
                #59

                @mcm1957
                hatte ich so nicht gewusst, das man da den tag direkt eingeben kann
                wenn man den eintrag aus der liste auswählt wird immer latest installiert
                d7b6b9e2-2be8-44b3-9ec9-87295470fab0-image.jpeg

                ed7eb78d-b29c-4ba3-a6d2-b64e357ff468-image.jpeg

                und ob ich da bei custom den tag oder den github link eintrage
                ist mE kein unterschied

                Meine Adapter und Widgets
                TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                Links im Profil

                1 Antwort Letzte Antwort
                0
                • mcm1957M Online
                  mcm1957M Online
                  mcm1957
                  schrieb am zuletzt editiert von
                  #60

                  Jep

                  Im Prinzip kann man bei 'url' alles eingeben was npm versteht. Das kann ne github url sein oder auch jede npm Angabe (iobroker.pi-hole2@next, iobroker.pi-hole2@1.2.3-alpha.99, ...

                  Voretil bei der Art der Installation ist, dass eine definierte Release installiert wird während bei direkte GH Installation eine enge Kommunikation zwischen Dev und User stattfinden sollte um keinen ungültigen Zwischenstand zu erwischen. Außerdem kann ich persönlich mit 1.2.3-alpha.4 in einer Meldung mehr anfangen als mit "neueste GH Version". Das ist aber meine pers. Einstellung.

                  Entwicklung u Betreuung: envertech-pv, hoymiles-ms, ns-client, pid, snmp Adapter;
                  Support Repositoryverwaltung.

                  Wer 'nen Kaffee spendieren will: https://paypal.me

                  LESEN - gute Forenbeitrage

                  OliverIOO 1 Antwort Letzte Antwort
                  0
                  • mcm1957M Online
                    mcm1957M Online
                    mcm1957
                    schrieb am zuletzt editiert von
                    #61

                    Wenn mehr Bedarf ist kann man ja @Bluefox fragen ob "von npm" da ne Option lernen soll (latest vs. next).

                    Entwicklung u Betreuung: envertech-pv, hoymiles-ms, ns-client, pid, snmp Adapter;
                    Support Repositoryverwaltung.

                    Wer 'nen Kaffee spendieren will: https://paypal.me

                    LESEN - gute Forenbeitrage

                    1 Antwort Letzte Antwort
                    0
                    • mcm1957M mcm1957

                      Jep

                      Im Prinzip kann man bei 'url' alles eingeben was npm versteht. Das kann ne github url sein oder auch jede npm Angabe (iobroker.pi-hole2@next, iobroker.pi-hole2@1.2.3-alpha.99, ...

                      Voretil bei der Art der Installation ist, dass eine definierte Release installiert wird während bei direkte GH Installation eine enge Kommunikation zwischen Dev und User stattfinden sollte um keinen ungültigen Zwischenstand zu erwischen. Außerdem kann ich persönlich mit 1.2.3-alpha.4 in einer Meldung mehr anfangen als mit "neueste GH Version". Das ist aber meine pers. Einstellung.

                      OliverIOO Offline
                      OliverIOO Offline
                      OliverIO
                      schrieb am zuletzt editiert von
                      #62

                      @mcm1957

                      hier zu den details
                      https://github.com/oweitman/ioBroker.pi-hole2/issues/51#issuecomment-4606925378

                      Meine Adapter und Widgets
                      TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                      Links im Profil

                      OliverIOO 1 Antwort Letzte Antwort
                      0
                      • OliverIOO OliverIO

                        @mcm1957

                        hier zu den details
                        https://github.com/oweitman/ioBroker.pi-hole2/issues/51#issuecomment-4606925378

                        OliverIOO Offline
                        OliverIOO Offline
                        OliverIO
                        schrieb zuletzt editiert von OliverIO
                        #63

                        Da, zumindest nach github bereits einige den Adapter geladen haben
                        be9b80b5-4457-47fe-9686-05c89aed3df2-image.jpeg

                        Und keine negativen (leider auch keine positiven) Rückmeldungen kamen, würde ich den Adapter jetzt noch mal normal releasen und schauen, ob es funktioniert.

                        Man kann ja im Zweifel wieder auf das vor Release zurückgehen, falls es Probleme gibt

                        Meine Adapter und Widgets
                        TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                        Links im Profil

                        1 Antwort Letzte Antwort
                        0

                        Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

                        Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

                        Mit deinem Input könnte dieser Beitrag noch besser werden 💗

                        Registrieren Anmelden
                        Antworten
                        • In einem neuen Thema antworten
                        Anmelden zum Antworten
                        • Älteste zuerst
                        • Neuste zuerst
                        • Meiste Stimmen


                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        460

                        Online

                        32.9k

                        Benutzer

                        83.1k

                        Themen

                        1.3m

                        Beiträge
                        Community
                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                        ioBroker Community 2014-2026
                        logo
                        • Anmelden

                        • Du hast noch kein Konto? Registrieren

                        • Anmelden oder registrieren, um zu suchen
                        • Erster Beitrag
                          Letzter Beitrag
                        0
                        • Home
                        • Aktuell
                        • Tags
                        • Ungelesen 0
                        • Kategorien
                        • Unreplied
                        • Beliebt
                        • GitHub
                        • Docu
                        • Hilfe