Hauptmenü

FHEM und pihole V6

Begonnen von juemuc, 01 Januar 2025, 20:38:12

Vorheriges Thema - Nächstes Thema

Ralli

Zitat von: Rudi_Hirsch am 01 März 2025, 14:46:04Ich habe keine Docker-Installation sondern eine raspi 3B-Installation

Zitatmein name: pihole ->  { my $docker_jn=ReadingsVal('pihole','version_docker_local','unknown')} ->
leere Antwort.

:-\

Dann ist das das erwartete Verhalten.
Gruß,
Ralli

Proxmox 8.4 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.4 dev, virtualisierte RaspberryMatic (3.81.5.20250527) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.4.1) und HMW-GW, FRITZBOX 7490 (07.59), FBDECT, Siri und Alexa

juemuc

Zitat von: Rudi_Hirsch am 05 März 2025, 15:53:59mein name: pihole ->  { my $docker_jn=ReadingsVal('pihole','version_docker_local','unknown')} ->
leere Antwort.
Macht nix, funktioniert ja sonst alles

Gibt es denn bei Dir das Reading "version_docker_local"? Amsonsten verstehe ich das Verhalten nicht.

IM Bedarfsfall kannst Du ja die Abfrage in der 99_myUtils anpassen.

Viele Grüße
Jürgen
3x Sonos Play 1, 1x Sonos Arc + Sub, 1 Sonos-One, 1x Sonos Playbar
FB6690 + FB7490 mit 4x Dect 200 und 3 Dect-ULE-Thermostate,  raspberry3B+, HM Funkmodul HM-MOD-RPI-PCB, HM Klingelsensor HM-Sen-DB-PCB, HM (IP) Fensterkontakte und  Amazon Echo Dot,  piVCCU, pi OS (bookworm).

Ralli

Schau gerne in die API-Dokumentation. Wird /info/version abgefragt, kommt ein JSON mit eben all diesen Werten zurück, inkl. Docker-Version(en) obwohl ggf. gar keine Docker-Image genutzt wird.

Ich verweise ein letztes mal auf meinen Beitrag, in dem ich die Docker-Versionen ausblende, wenn der Rückgabewert "" ist.
Gruß,
Ralli

Proxmox 8.4 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.4 dev, virtualisierte RaspberryMatic (3.81.5.20250527) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.4.1) und HMW-GW, FRITZBOX 7490 (07.59), FBDECT, Siri und Alexa

Rudi_Hirsch

Gibt es denn bei Dir das Reading "version_docker_local"? Ansonsten verstehe ich das Verhalten nicht.
->
Alle Updateinfos sind aktuell vorhanden. Nur die beiden readings sind vorhanden aber leer

version_docker_local                     2025-03-07 00:13:33
version_docker_remote                    2025-03-07 00:13:33
AVM FB, Raspi-4B, Raspi-2C, Raspi-Zero, Z-WAVE, SignalDuino, Jeelink, wM-Bus, Alexa, Tasmota, Fibaro, ESP, Eco-Dim, nas-wr01ze, mcohome/mh7h, Qubino, HKZW-DWS01, Optolink, alpha2 ,...

juemuc

Du hast aber schon - wie Ralli auch schon geschrieben hat - die Abfrage auf "leer" in Deinem Coding?

if($docker_jn eq 'unknown' or $docker_jn eq '') oder das Coding von Ralli.

Viele Grüße
Jürgen
3x Sonos Play 1, 1x Sonos Arc + Sub, 1 Sonos-One, 1x Sonos Playbar
FB6690 + FB7490 mit 4x Dect 200 und 3 Dect-ULE-Thermostate,  raspberry3B+, HM Funkmodul HM-MOD-RPI-PCB, HM Klingelsensor HM-Sen-DB-PCB, HM (IP) Fensterkontakte und  Amazon Echo Dot,  piVCCU, pi OS (bookworm).

Rudi_Hirsch

Habe alles exakt nach RALLI gemacht (importiert). Nur bei 99_myUtils habe ich die Deaktivierungs-Zeiten nach Forum angepasst
AVM FB, Raspi-4B, Raspi-2C, Raspi-Zero, Z-WAVE, SignalDuino, Jeelink, wM-Bus, Alexa, Tasmota, Fibaro, ESP, Eco-Dim, nas-wr01ze, mcohome/mh7h, Qubino, HKZW-DWS01, Optolink, alpha2 ,...

Gisbert

Hallo Jürgen,

ich hatte das Device und die Definition in 99_myUtils.pm geändert, teils nach meinen Vorstellungen, und alles sah sehr vernünftig und funktional aus.

Heute bekomme ich den im angehängten Bild gezeigten Zustand. Irgendetwas bei state scheint nicht mehr zu funktionieren, ohne dass ich mir irgendeiner Änderung bewusst bin.

Hier ist die Definition in 99_myUtils.pm:
sub piholeV6DevStateIcon
{
    my $name = shift;
    my $noHeader=shift;
   
    $noHeader=0 if(!defined($noHeader));
   
    #get %%base_url%% replacement from httpmod device (using HTTPMOD method)
    # -> this is the url to the web-ui of Pi-Hole
    my $baseURL= "https://".HTTPMOD::DoReplacement($defs{$name},'get','%%ip%%')."/admin/";

    #get required readings from pihole httpmod device
    my $state =ReadingsVal($name,'blocking','unknown');
    my $totalQueries = ReadingsVal($name,'queries_total','0');
    my $blocked = ReadingsVal($name,'queries_blocked','0');
    my $blockedPercentage = round(ReadingsVal($name,'queries_percent_blocked','0'),1);
    my $adListCount =ReadingsVal($name,'gravity_domains_being_blocked','0');
    my $messageCount=ReadingsNum($name,'count','0');
  
    my $ver_info = 'CORE: '.ReadingsVal($name,'version_core_local_version','unknown').' => '.ReadingsVal($name,'version_core_remote_version','unknown');
       $ver_info.= "\nFTL: ".ReadingsVal($name,'version_ftl_local_version','unknown').' => '.ReadingsVal($name,'version_ftl_remote_version','unknown');
       $ver_info.= "\nWEB: ".ReadingsVal($name,'version_web_local_version','unknown').' => '.ReadingsVal($name,'version_web_remote_version','unknown');
  
    my $ftl_upd=ReadingsNum($name,'FTL_update',0);
    my $core_upd=ReadingsNum($name,'core_update',0);
    my $web_upd=ReadingsNum($name,'web_update',0);

    my $anyUpd=$ftl_upd+$core_upd+$web_upd+0;
  

    #prepare dedicated css
    #hint: html of device overview is by default embedded in a <div> container
    #      which has id attribute set to device's NAME
    my $styleClass ='<style>';
       $styleClass.='#'.$name.' svg {height:15px; width:15px; padding-right:1px;} ';
       $styleClass.='#'.$name.' td {padding-left:10px; padding-right:10px} ';
       $styleClass.='</style>';
   
    #prepare images
    #ist schön bunt, wird aber nicht benötigt
    #my $imgQueries=FW_makeImage('it_i-net@cyan');
    #ist schön bunt, wird aber nicht benötigt   
    #my $imgBlocked=FW_makeImage('time_manual_mode@red');
    my $imgState  =FW_makeImage($state eq 'enabled' ? '15px-green' : '15px-red');
       $imgState  =FW_makeImage('15px-orange') if ($state eq 'enabled' and $messageCount > 0);
    my $imgUpdate =FW_makeImage($anyUpd > 0 ? '15px-red' : '15px-green',$ver_info);  

        if ($anyUpd > 0) {
                # fhem("setreading ".$name." available_updates 1")
                readingsSingleUpdate($defs{$name},"available_updates","1",1)
        } else {
                # fhem("setreading ".$name." available_updates 0")
                readingsSingleUpdate($defs{$name},"available_updates","0",0)
        }

    #prepare disable/enable command
    my $cmd='';
    #my $callMe='<a href="/fhem?cmd.'.$name.'=set '.$name.' PiHole';
    my $callMe='<a href="/fhem?cmd.'.$name.'=set '.$name . ' ';
    if($state eq 'disabled') {
        $cmd =$callMe.'enable">enable</a>';   
    } else {
        $cmd  =       $callMe.'disable 60">1</a>';
        $cmd .= ' | '.$callMe.'disable 300">5</a>';       
        $cmd .= ' | '.$callMe.'disable 600">10</a>';
       #$cmd .= ' | '.$callMe.'disable 900">15</a>';
    }

    #finally build the html for device overview
    my $ret  = $styleClass;
       $ret .= '<table border=0"><tr>';
       #if second argument of this method call is true (=1)
       #then do NOT create a table header. Defaults to false (=0)
       if(!$noHeader) {      
               $ret .= '<td><center>state</center></td>';
               $ret .= '<td><center>queries</center></td>';
               $ret .= '<td><center>blocked</center></td>';
               #$ret .= '<th>Adlist</th>';      
               $ret .= '<td><center>'.($state eq 'enabled' ? 'disabled':'disabled').'</center></td>';
            $ret .= '<td><center>update</center></td>';
               $ret .= '</tr><tr>';
       }      
       $ret .= '<td><center><a href="'.$baseURL.'?sid='.urlEncode(InternalVal("$name","sid","")).'" target="_blank">'.$imgState.'</a></center></td>';
       #$imgQueries und $imgBlocked entfernt
       #$ret .= '<td><center>'.$imgQueries.' '.$totalQueries.'</center></td>';
       #$ret .= '<td><center>'.$imgBlocked.' '.$blocked.' ('.$blockedPercentage.'%)'.'</center></td>';
       $ret .= '<td><center>'.$totalQueries.'</center></td>';
       $ret .= '<td><center>'.$blocked.' ('.$blockedPercentage.'%)'.'</center></td>';
       #$ret .= '<td>'.$imgAdList.' '.$adListCount.'</td>';
       $ret .= '<td><center>'.$cmd.'</center></td>';
       $ret .= '<td><center>'.$imgUpdate.'</center></td>';
       $ret .= '</tr></table>';

    return $ret;
}

Hab ich unwissentlich was geändert, oder woran könnte es liegen?

Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | tuya local | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY | DEYE | JK-BMS | ESPHome

bertl

Hallo Gisbert,

das Bild/Icon "15px-orange.png" gibt es bei dir nicht (bei mir übrigens auch nicht).
Nimm einfach "15px-yellow" das ist vorhanden  ;)

Oder du kopierst dir unter "/opt/fhem/www/images/default" eines hin!

Gruß Robert

buzzmain

Moin ihr Lieben,
für einen nicht so scriptversierten User (also z.B. Ich  ;D  ) ist das echt kompliziert.
Wie aufwendig wäre es, PiHole als Funktion (nennt man das so?) ins Repository mit zu übernehmen.
Als so in der Art:
Define Pihole pihole IP-Adresse Passwort
Würde vielen vieles leichter machen.
Ist vermutlich zu aufwendig oder?
... And on the 8th Day God Created The Homeautomation.

juemuc

Was ist bei Copy& Paste so schwierig?

Ist doch nur kopieren und eigene Daten eintragen.
3x Sonos Play 1, 1x Sonos Arc + Sub, 1 Sonos-One, 1x Sonos Playbar
FB6690 + FB7490 mit 4x Dect 200 und 3 Dect-ULE-Thermostate,  raspberry3B+, HM Funkmodul HM-MOD-RPI-PCB, HM Klingelsensor HM-Sen-DB-PCB, HM (IP) Fensterkontakte und  Amazon Echo Dot,  piVCCU, pi OS (bookworm).