Pi-hole | Werbeblocker für das Heimnetz auf dem Raspberry Pi

  • Ich nutze dein Plugin nicht, kann also nur mutmaßen.


    Der Befehl pihole status ergibt bei mir

    Code
    pi@redpi:~ $ pihole status
    [?] DNS service is running
    [?] Pi-hole blocking is Enabled


    Dein Befehl pihole status | grep -i 'Pi-hole blocking is Enabled' ergibt:

    Code
    pi@redpi:~ $ pihole status | grep -i 'Pi-hole blocking is Enabled'
    [?] Pi-hole blocking is Enabled


    Das wäre übrigens auch mit pihole status | grep blocking gegangen, aber das nur mal so nebenbei. Sieht trotzdem gut aus.


    Was mir auf homebridge-ssh auffällt, ist dass da auch ein "on_value" in der config.json steht, der bei dir fehlt. Ich würde ja fast glauben, dass die Konfiguration so aussehen müsste:

    Code
    "on_value": "Enabled",
    "exact_match": false

    oder

    Code
    "on_value": "[?] Pi-hole blocking is Enabled",
    "exact_match": true

    wobei letzteres mit dem Häkchen Probleme machen könnte. Das "exact_match" steht wahrscheinlich dafür, dass der der "on_value" exakt mit dem Ergebnis von "state" übereinstimmen muss (true) oder nur ein Teil davon übereinstimmen muss (false).


    Stefan

  • sschuste Erstmal vielen Dank. Einen Schritt weiter Dank Dir.

    Allerdings funktioniert es noch nicht.

    Wenn ich den Switch in HomeKit (Eve) aktualisiere, wird im Log angezeigt

    [Pi-hole] State of Pi-hole is: [?] pi-hole blocking is enabled

    Allerdings springt der Switch nach ein paar Sekunden wieder auf "aus".


    In der command line vom Pi-hole Rasperry wird der Status anders angezeigt.


    Zitat
    Code
    pi@raspberrypi:~ $ pihole status  
    [?] DNS service is running
    [?] Pi-hole blocking is Enabled


    Eintrag in der config, egal ob "Enabled", oder "enabled", macht keinen Unterschied. ?(


    Hilfreich?

  • Nö!

    #24 war gemeint.

    :saint:


  • Kannst du kurz erklären wie das passiert sein soll? ;)

    Sorry, keine Ahnung. Habe Homebridge benutzt auf meinem pi zero welche hat auch sehr gut funktioniert.

    Habe gedacht wen der pi ganze zeit läuft mit homebridge installer zusätzlich Pi Hole.

    Hat auch funktioniert bis ich nächste tag von Arbeit nachhause kam habe ich gemerkt das meine Szenen gehen nicht an.

    war der kleine Raspi überlastet? Falsche Einstellung? keine Ahnung. Habe die usb wlan stick reimgemacht. _Wlan und homebridge geht Pi hole hat mir keine Werbung gefiltert.

  • Sobald du das komplett geloest kriegst, bin ich auf die config gespannt, weil das wuerde ich bei mir auch gern implementieren!

  • Gleich vorne weg: ich habe absolut keine Ahnung von Linux und meine oben angegebene config war mehr ein educated guess als eine sinnvoll abgeleitete Lösung, aber ich habe mir mal den Befehl grep ein wenig näher angeschaut. Unter


    Code
    grep —help


    Erhält man unter anderem den Hinweis:


    Code
    Der Rückgabewert ist 0, wenn eine Zeile passte, ansonsten 1;

    Vielleicht würde über ssh also sowas wie folgendes passen:



    Code
    "on_value": "0",
    "exact_match": true


    Ist aber auch eher geraten...

  • SamBucca Auch Dir Dankeschön.

    Leider komm ich auch nach gestern Abend Stunden des Ausprobierens nicht weiter. Auch mit dem "on_value": "0" erkennt der Switch den aktuellen Status nicht.

    Auch "exact_match": true oder false, macht keinen Unterschied, obwohl im Homebridge Log nach wie vor angezeigt wird [Pi-hole] State of Pi-hole is: [?] pi-hole blocking is enabled , also der Status ja offensichtlich erkannt wird.

    Für den Moment, geb ich erstmal auf. :|

    Hilfreich?

  • Allerdings springt der Switch nach ein paar Sekunden wieder auf "aus".


    In der command line vom Pi-hole Rasperry wird der Status anders angezeigt.

    Ja, das habe ich auch gesehen. Ich musste das jetzt mal nachbauen und komme zu diesem Ergebnis:


    Code
    "on": "/usr/local/bin/pihole enable",
    "off": "/usr/local/bin/pihole disable",
    "state": "/usr/local/bin/pihole status | grep -i 'Pi-hole blocking is'",
    "on_value": "[?] pi-hole blocking is enabled",
    "exact_match": true,


    Ich habe den Wert, den homebridge-ssh in das Homebridge-Log schreibt genommen und in die config.json eingefügt, mitsamt dem Häkchen. Das funktioniert bei mir. Nach dem Neustart von Homebridge zumindest wird der Schalter in der Home-App auf on gesetzt und bleibt da auch. In EVE passiert das gleiche, der Schalter steht auf on und bleibt dort.


    Allerdings bleibt der Schalter auch auf on, wenn man Pi-Hole manuell auf der Shell stoppt, indem man dort pihole disable eingibt. Das ist unschön, liegt aber wohl daran, das homebridge-ssh den Status nur dann checkt, wenn man mit den Apps den Raum aufruft und der Schalter aktualisiert wird.


    Stefan

  • Na aber DAS ist doch schon was! Vielen Dank sschuste ! Die Bauteile funktionieren nun auch hier. :thumbup:

    Das es nur einen Refresh des Button gibt, wenn man in z.B. Eve den Raum in dem der Switch ist, oder manuell aktualisiert, liegt wohl am fehlenden automatischen polling.

    Ist im ssh Plugin wahrscheinlich nicht drin. Da können wir also tatsächlich wenig ändern.

    Ich kann auf alle Fälle gerade sehr damit leben.


    So lässt sich nun das "Web Blocking" durch Homebridge auf dem anderen Raspberry mit Pi-hole komfortabel aus/einschalten.

    In den Issues des ssh-Plugin, habe ich mich mal bei einem vorhandenen Beitrag bezüglich "polling" beteiligt. Somit auch gerne der Hinweis hierzu und ggf. ebenfalls für eine Beteiligung. Erwarten tu ich mir zwar dort nicht viel, da das Plugin bereits seit einigen Jahren ohne Update ist. Aaaaber... wer nicht fragt, hat schon verloren. ;)


    Hilfreich?

  • Vielen Dank für die Idee mit dem Schalter für Pi-Hole! Das ist ja echt genial!

  • Hi ...


    aber etwas Hilfe bräuchte ich da noch ;)

    Ist der User "pihole" ? und muss ich bei key den ssh key einfügen?


    - Habs hinbekommen ... war ja nicht der user vom PiHole sondern vom Raspi gemeint !


    Danke und Gruß Kai

  • Hi,


    Es gibt auf github ein script fuer pihole, welches ueber das cmd4 plugin ausgeloest wird. Der code dafuer lautet folgendermaßen:


    Dieser funktioniert so, bei mir, aber nicht. Als Antwort erhielt ich auf github:


    Zitat

    After a Set a Get is done. I tired the Get, it seems okay. The Set for $4 seems incorrect. The command sent would be: Set PiHole On true or Set PiHole On false There is a note in the README about Homebridge sending true, but Homebridge-cmd4 interpreting the results as either 0 or 1. pihole enable or pihole disable must return 0 (Seccessful) according to your script.

    Da ich hier wahrscheinlich schneller eine Antwort erhalte, heißt das ich muesste true durch 1 ersetze und false durch 0 an dieser Stelle:


    Code
    if [ $4 = true ]; then
          pihole enable
          exit $?
       elif [ $4 = false ]; then
          pihole disable

    Vielen Dank im voraus fuer jegliche Hilfe!

  • Wir helfen gern. Vielleicht noch mal so nebenbei, auch wenn es vielleicht uninteressant ist: was soll dieses Skript genau machen?


    Ich will diesem namenlosen Skript mal den Namen namenlosesSkript.sh geben und dann kann man damit offenbar das machen:


    namenlosesSkript.sh Get ruft den Befehl pihole status auf. Wenn das Ergebnis dieses Befehls das Wort Enabled enthält, dann soll ein Wert ausgegeben werden. Enthält das Ergebnis des Befehls dagegen nicht das Wort Enabled, dann soll genau das gleiche passieren. Das nenne ich fortgeschrittene Logik. Ein

    Code
    if [ "$1" = "Get" ]; then
        state=$(pihole status | grep -c Enabled)
        echo "$state"
        exit 0
    fi

    hätte das gleiche getan.


    namenlosesSkript.sh Set fragt das 4. Argument des Befehls ab, wobei die Argumente 2 und 3 völlig frei wählbar sind. Also

    namenlosesSkript.sh Set Bla Fasel 0 macht das gleiche wie namenlosesSkript.sh Set Aber Holla 0 und stoppt damit pi-hole.


    Wozu braucht man das jetzt wirklich, wenn man direkt pihole disable eingeben könnte?


    Stefan

  • Ich dachte mit diesem Skript kann ich auch pihole aktivieren-deaktivieren, aber so wie es scheint, ist es erstens zu umstaendlich geschrieben und kann am Ende auch nur den Status abfragen?


    Heißt ich komme damit eh nicht zum eigentlichen Ziel und sollte eher darauf aufbauen:


    Pi-Hole

  • Moin!


    Heute morgen habe ich die homebridge-ssh Konfiguration für Pi-Hole übernommen und es funktionierte auf Anhieb!


    Klasse! Vielen Dank!
    Das ist doch um einiges einfacher als über die Weboberfläche.


    Nur der Status wird anscheinend nicht beim Neustart von Homebridge gelesen und entsprechend eingestellt.

  • Denke dauerhaft. Muesste man dann wahrscheinlich mit einem delay switch und ner Automation loesen:


    Wenn aus, aktiviere switch

    Wenn switch deaktiviert, schalte pihole ein.


    Außer man koennte die Befehle der pi-hole website fuers disablen als separate switches mit einbauen?! Waer natuerlich angenehmer ?


    EDIT: Als ein schneller Test von unterwegs hat ergeben, auch wenn man pi-hole fuer 10sek disabled, wird uebers terminal Auch nur das ausgegebn:


    Code
    pi@raspberrypi:~ $ pihole status
      [?] DNS service is running
      [?] Pi-hole blocking is Disabled
    pi@raspberrypi:~ $ pihole status
      [?] DNS service is running
      [?] Pi-hole blocking is Disabled
    pi@raspberrypi:~ $ pihole status
      [?] DNS service is running
      [?] Pi-hole blocking is Enabled

    Einmal editiert, zuletzt von vgnsxe ()

  • Heißt ich komme damit eh nicht zum eigentlichen Ziel und sollte eher darauf aufbauen:


    Pi-Hole

    Ja, das habe ich tatsächlich so ausprobiert und das funktionierte auch. Viel Erfolg!


    Stefan

  • Hab gerade das discourse Forum durchsucht bezueglich eines terminal Befehls fuer ein temporaeres deaktivieren und siehe da, das gibt es schon:


    Discourse pi-hole


    hab es gerade getestet, einfach im Terminal folgendes eingegeben:


    Code
    pi@raspberrypi:~ $ pihole disable 5s
      [i] Disabling blocking for 5 seconds...
      [?] Reloading DNS service
      [?] Pi-hole Disabled

    Und dann im separatten Fenster geprueft:


    Code
    pi@raspberrypi:~ $ pihole status
      [?] DNS service is running
      [?] Pi-hole blocking is Disabled
    pi@raspberrypi:~ $ pihole status
      [?] DNS service is running
      [?] Pi-hole blocking is Enabled

    Wie kriegen wir jetzt diesen simplen Befehl in einen ?zusaetzlichen? Schalter integriert? Noch viel geiler waer natuerlich ein slider mit dem sich stufenlos die Sekunden auswaehlen lassen koennten, aber das wird denke ich eher nicht moeglich sein :D

  • Am Beispiel von homebridge_cmdswitch2


    "on_cmd": "/usr/local/bin/pihole enable",

    "off_cmd": "/usr/local/bin/pihole disable 5s",