Pi-Hole : Statistiken in Fhem anzeigen

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

Vorheriges Thema - Nächstes Thema

Christoph Morrison

Zitat von: Mumpitz am 03 September 2019, 19:09:57
Ich habe bei mir einen Dummy "Werbeblocker" definierte. Dieser wird durch folgendes DOIF gesteuert:

Alles was du mit dem Dummy+DOIF machst, kannst du auch mit einem einzeln DOIF erledigen.

FHEMAN

Zitat von: Christoph Morrison am 03 September 2019, 20:47:49
Alles was du mit dem Dummy+DOIF machst, kannst du auch mit einem einzeln DOIF erledigen.
...und das DOELSEIF kann auch weg, da der Timer (3600 Sek) schon im Aufruflink steckt.
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: Christoph Morrison am 03 September 2019, 20:47:49
Alles was du mit dem Dummy+DOIF machst, kannst du auch mit einem einzeln DOIF erledigen.
Hallo

Da bin ich auf deine Lösung gespannt!

blixx

#18
Nice2Know: Habe eben einen Button programmiert, damit PiHole für 10 Minuten ausgeschaltet werden kann. Geht per httpmod:

define pihole1 HTTPMOD none 0
attr pihole1 userattr set01URL
attr pihole1 set01Hint 6,100,200,600
attr pihole1 set01Max 600
attr pihole1 set01Min 6
attr pihole1 set01Name PiHoleDisable
attr pihole1 set01URL http://piholeadresse/admin/api.php?disable=$val&auth=hiermussderpasswordstringaus/etc/pihole/setupVars.confhin

Und manuell Enable (zum Beispiel, wenn man es sich anders überlegt) mit:
attr pihole1 set02Name PiHoleEnable
attr pihole1 set02NoArg 1
attr pihole1 set02URL http://piholeadresse/admin/api.php?enable&auth=hiermussderpasswordstringaus/etc/pihole/setupVars.confhin

SeriousPat

Ich habe das ganze mal abgeleitet, das man auch per alexa-fhem den Pihole für eine stunden aus stellen kann.
Was mir noch fehlt das wenn ich es auf on oder of stelle das device einmal "set PiHole reread macht". Hat da einer eine Idee?

defmod PiHole HTTPMOD http://IP/admin/api.php?summary 300
attr PiHole alexaName Webung
attr PiHole event-on-change-reading state
attr PiHole genericDeviceType switch
attr PiHole homebridgeMapping On=state,valueOn=enabled,valueOff=disabled,cmdOn=on,cmdOff=off
attr PiHole reading01Name state
attr PiHole reading01Regex "status":"(.*?)"
attr PiHole room IT
attr PiHole set01Name off
attr PiHole set01NoArg 1
attr PiHole set01URL http://IP/admin/api.php?disable=3600&auth=hiermussderpasswordstringaus/etc/pihole/setupVars.confhin
attr PiHole set02Name on
attr PiHole set02NoArg 1
attr PiHole set02URL http://IP/admin/api.php?enable&auth=hiermussderpasswordstringaus/etc/pihole/setupVars.confhin
attr PiHole webCmd on:off

MadMax-FHEM

notify auf on/off und dann rearead...
Oder als weiteres Kommando bei alexa-fhem...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

SeriousPat

Zitat von: MadMax-FHEM am 29 Januar 2022, 19:29:08
notify auf on/off und dann rearead...
Oder als weiteres Kommando bei alexa-fhem...

Gruß, Joachim

kannst du mir für beides die befehle nennen?
bin noch nicht ganz so fit.

MadMax-FHEM

#22
Zitat von: SeriousPat am 30 Januar 2022, 13:10:50
kannst du mir für beides die befehle nennen?
bin noch nicht ganz so fit.

Eventmonitor aufmachen (Filter auf das Device setzen), on/off stellen und dann die entsprechende Zeile markieren und notify anlegen lassen und dann anpassen...

sowas in der Art:
define nNotify notify Device:on set httpmod reread

https://wiki.fhem.de/wiki/Event_monitor
https://wiki.fhem.de/wiki/Notify

Oder eben im homebridgeMapping mehrere Kommandos angeben, also:

cmdOn=on+set+reread (geht so nat. nicht! Soll nur zeigen was ich meine)

Konnte allerdings leider nichts finden wie man mehrere Kommandos angibt.
Evtl. mal selber suchen oder vielleicht finde ich noch was...

EDIT: aber ganz generell hat das nichts mit piHole an sich zu tun (außer, dass du ein "alexa-fhem Problem" mit deinem piHole-HTTPMOD hast ;)  ) ! Ist also eigentlich in DIESEM THREAD (total) falsch! Besser (wenn es weiter geht/gehen soll) einen eigenen/neuen Thread aufmachen im PASSENDEN Unterforum (Sprachsteuerung)! Dann gibt es bestimmt auch "bessere" Hilfe ;)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

draddy

moin

würde gern das ganze als cmdalias machen, damit ich leicht sagen kann 5 min off,  10 min off etc ...


set PiHoleInfo pioff.* AS {GetHttpFile("192.168.177.101", "/admin/api.php?disable=$EVTPART2&auth=pw#gedönse")}; setreading $EVTPART0 status disabled


funktioniert auch problemlos, einzig störend - nach ausführen von set PiHoleInfo pioff 30 bekomme ich eine rückmeldung alla "{"status":"disabled"}" <-- kann ich das irgendwie unterdrücken? so das der befehl einfach ausgeführt wird und ruhe ist (wegen mir darf er ins log spammen, aber sonst will  ich nix) ^^

thx
Jens
OMV5@AsRock j3455 8GB RAM
FHEM@Docker, Shelly "starter pack" 4x PlugS, 2x Bulb Duo RGB, Shelly 2.5, Shelly Plus 1, DoorBird 2103V

OdfFhem

@draddy

Wird wohl die Rückgabe von GetHttpFile sein. Weil das Ergebnis "uninteressant" scheint, kann man die Perl-Klammer (ungetestet) mit "return undef;" oder "return '';" (vor dem Semikolon sind 2 einfache Anführungszeichen) verlassen - somit sollte keine Meldung mehr nach außen dringen und "nerven" ...

Wernieman

Da ein GetHttpFile FHEM blockiert und Dich das Ergebnis nicht interessiert, warum verwendest Du dann nicht ein HttpUtils_NonblockingGet?

Siehe https://wiki.fhem.de/wiki/HttpUtils
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

OdfFhem

 HttpUtils_NonblockingGet erwartet zwanghaft die Angabe einer callback-Routine ... vermutlich zu kompliziert ? ...

draddy

#27
danke euch beiden, probier ich aus :)


set PiHoleInfo pioff.* AS {HttpUtils_NonblockingGet({url=>"192.168.177.101/admin/api.php?disable=$EVTPART2&auth=pw#gedönse", callback=>sub() { }})}; setreading $EVTPART0 status disabled


hmmm

also, ich bekomme keine rückgabe ... aber ... es wird auch nix geschaltet ^^ auch wenn ich $EVTPART2 durch feste zahl ersetze ...

gebe ich die url im browser ein, (mit zahl) klappts

also, mit einfach nur ,return gehts ...

set PiHoleInfo pioff.* AS {GetHttpFile("192.168.177.101", "/admin/api.php?disable=$EVTPART2&auth=pw#gedönse"), return}; setreading $EVTPART0 status disabled

OMV5@AsRock j3455 8GB RAM
FHEM@Docker, Shelly "starter pack" 4x PlugS, 2x Bulb Duo RGB, Shelly 2.5, Shelly Plus 1, DoorBird 2103V

draddy

#28
soo, habe da mal etwas gebastelt, vll. kanns wer brauchen ... ;)

Status öffnet Pihole in neuem tab, der switch deaktiviert für 12h, gewohnte Infos wie im Webinterface von Pihole, und 4 Verschiedene Zeiten fürs Disable

raw vom PiInfo

defmod PiHoleInfo HTTPMOD http://192.168.177.101/admin/api.php 30
attr PiHoleInfo extractAllJSON 1
attr PiHoleInfo getURL http://192.168.177.101/admin/api.php
attr PiHoleInfo devStateIcon {my $state = ReadingsVal($name,'status','enabled') eq 'enabled'?'ios-on-green':'ios-off';; $state = FW_makeImage($state);;\
my $tq = '<style>.mysvg {height:15px;;;; width:15px}</style>'.FW_makeImage('it_i-net','','mysvg');; \
my $block =FW_makeImage('time_manual_mode','','mysvg');; \
my $bList = FW_makeImage('edit_delete','','mysvg');; \
my $tquer = ReadingsVal($name,'dns_queries_all_types','0');;\
my $blDay = ReadingsVal($name,'ads_blocked_today','0');;\
my $blDaypct = round(ReadingsVal($name,'ads_percentage_today','0'),1);;\
my $dList =ReadingsVal($name,'domains_being_blocked','0');;\
\
my $stateCMD = ReadingsVal($name,'status','enabled') eq 'enabled'?'<a href="/fhem?cmd.dummy=set '.$name.' pioff 43200">'.$state.'</a>':'<a href="/fhem?cmd.dummy=set '.$name.' pion">'.$state.'</a>';;\
my $dis1 = '<a href="/fhem?cmd.dummy=set '.$name.' pioff 60">1min</a>';;\
my $dis5 = '<a href="/fhem?cmd.dummy=set '.$name.' pioff 300">5min</a>';;\
my $dis15 = '<a href="/fhem?cmd.dummy=set '.$name.' pioff 900">15min</a>';;\
my $dis60 = '<a href="/fhem?cmd.dummy=set '.$name.' pioff 3600">60min</a>';;\
\
qq\
\
(<table border="0">\
  <tr>\
    <th><a style="color: yellow;;" href="http://192.168.177.101/admin" target="_blank">Status</a></th><th>Queries</th><th>Blocked today</th><th>Adlist</th><th><a style="color: yellow;;">Disable for:</a></th> \
  </tr>\
  <tr>\
    <td>${stateCMD} </td><td>${tq} ${tquer}</td><td>${block} ${blDay} | ${blDaypct}%</td><td>${bList} ${dList}</td><td>${dis1} ${dis5} ${dis15} ${dis60}</td>\
  </tr>\
</table>)\
}


dazu 2 cmdAlias für off

defmod caPiholeoff cmdalias set PiHoleInfo pioff.* AS {GetHttpFile("192.168.177.101", "/admin/api.php?disable=$EVTPART2&auth=HIER_DER_PW_HASH"),return };; setreading $EVTPART0 status disabled

setstate caPiholeoff defined

und on

defmod caPiholeon cmdalias set PiHoleInfo pion.* AS {my $nix=GetHttpFile("192.168.177.101", "/admin/api.php?enable&auth=HIER_DER_PW_HASH"), return};; setreading $EVTPART0 status enabled;;\

setstate caPiholeon defined



hf
Jens

p.s. ihr müsste natürlich EURE pihole IP überall eintragen, ist klar :D
OMV5@AsRock j3455 8GB RAM
FHEM@Docker, Shelly "starter pack" 4x PlugS, 2x Bulb Duo RGB, Shelly 2.5, Shelly Plus 1, DoorBird 2103V

mumpitzstuff

Wo genau bekomme ich den hash vom Passwort her? Könntest du das bitte auch kurz beschreiben?