Hauptmenü

Icons ReadingsGroup

Begonnen von uwirt, 04 Februar 2019, 20:24:51

Vorheriges Thema - Nächstes Thema

uwirt

Ich habe im FHEM eine ReadingsGroup mit roten und grünen Kreisen um den Status meiner LAN-Devices anzuzeigen.

Die Icons werden im ReadingsGroup Widget leider offenbar nicht erkannt. Ich kriege für die Bildchen folgenden Fehler:

File not found: ./www/tablet//fhem/images/default/10px-kreis-rot.png



Muss ich die Bilder noch woanders hin kopieren?
FHEM / Ubuntu / fitlet2
HomeMatic: CCU3|HmIP-STHD|HmIP-PCBS|HmIP-PCBS2|HmIP-PCBS-BAT|HM-WDC7000|HM-WDS100-C6-O|HM-WDS40|HM-LC-Sw1-FM|HM-LC-RGBW-WM|HM-ES-PMSw1-Pl|HM-ES-TX-WM
NAS: DS218+|DS209j|DS216+II|DS412+
Devices: Panasonic Webcams|Withings|Gardena Smart|Tuya

Thorsten Pferdekaemper

Hi,
der doppelte Schrägstrich ist etwas seltsam. Könntest Du mal ein list Deiner readingsGroup liefern?
Gruß,
   Thorsten
FUIP

uwirt

#2
List NetzwerkListe sieht folgendermassen aus:


Internals:
   DEF        <>,<Nr>,<IP-Adresse>,<Status>,<Name>
Netzwerk:@4,#1_ip,<#1>,#1_state,(.*)_alias
   FUUID      5c4779c1-f33f-7eb8-b627-b0f0ff3cf7bcd66f
   NAME       NetzwerkListe
   NR         85
   NTFY_ORDER 50-NetzwerkListe
   STATE      Initialized
   TYPE       readingsGroup
   mayBeVisible 1
   CONTENT:
     Netzwerk   1
   CONTENT2:
   DEVICES:
     ARRAY(0x6b5d1c0)
     ARRAY(0x6b610d8)
   fhem:
     lastDefChange 1
     last_update 1549309680.41937
   groupedList:
     <br2>
     192.168.1.1_ip
     <192.168.1.1>
     192.168.1.1_state
     192.168.1.1_alias
     <br2>
     192.168.1.28_ip
     <192.168.1.28>
     192.168.1.28_state
     192.168.1.28_alias
     <br2> .... etc.

  <br2>
     192.168.1.254_ip
     <192.168.1.254>
     192.168.1.254_state
     192.168.1.254_alias
   helper:
     DEF       
     valueFormat { my $ipAddr = substr($READING,0,index($READING,"_"));
  #Icon für #1_state.absent Spalte 'onl'
  return("<img src='./fhem/images/default/10px-kreis-rot.png' alt='absent'>") if($VALUE eq "absent");
  #Icon für #1_state.present Spalte 'onl'
  return("<img src='./fhem/images/default/10px-kreis-gruen.png' alt='present'>") if($VALUE eq "present");
  #Spalte 'Nr' zur Sortierung aus der IP extrahieren   
  return(substr($VALUE,rindex($VALUE,".")+1)) if(substr($READING,rindex($READING,"_")) eq "_ip");
  return("<a url='http://".$ipAddr."' onclick='window.open(\"http://".$ipAddr."\"); return false;'>".$VALUE."</a>") if(substr(ReadingsVal($DEVICE,$READING,""),rindex(ReadingsVal($DEVICE,$READING,""),"-")+1) eq "80");
  return("<a url='https://".$ipAddr."' onclick='window.open(\"https://".$ipAddr."\"); return false;'>".$VALUE."</a>") if(substr(ReadingsVal($DEVICE,$READING,""),rindex(ReadingsVal($DEVICE,$READING,""),"-")+1) eq "443");
  #Anderenfalls soll das valueFormat leer bleiben bzw. nachstehenden Inhalt verwenden
  return("");
}
     valueStyle {$READING =~ m/(.+)_/;
my $state = ReadingsVal($DEVICE, $1."_state", "NA");
my $style = "";

return('style="text-align: right; '.$style.'"') if($state eq "present" && $READING =~ m/_uptime/);
return('style="color: #bfbfbf; text-align: right; '.$style.'"') if($state eq "absent" && $READING =~ m/_uptime/);

return('style="'.$style.'"') if($state eq "present");
return('style="color: #bfbfbf; '.$style.'"') if($state eq "absent");
}
     cellStyle:
       c:1        style="text-align:right"
       c:3        style="text-align:center"
       c:4        style="text-align:left"
     positions:
       Netzwerk.192.168.1.114_alias 21:4
       Netzwerk.192.168.1.114_ip 21:1
       Netzwerk.192.168.1.114_state 21:3
       Netzwerk.192.168.1.116_alias 22:4
       Netzwerk.192.168.1.116_ip 22:1 .... etc.

       Netzwerk.192.168.1.88_state 19:3
       Netzwerk.192.168.1.90_alias 20:4
       Netzwerk.192.168.1.90_ip 20:1
       Netzwerk.192.168.1.90_state 20:3
     values:
       formated:
         undef
         ARRAY(0x6d1ec68)
         undef
         ARRAY(0x6d9f8e0)
         ARRAY(0x6c9bdb0)
       orig:
         undef
         ARRAY(0x6cfce60)
         undef
         ARRAY(0x6cea160)
         ARRAY(0x6d10390)
       prefixsuffix:
         undef
         ARRAY(0x6d007d8)
         undef
         ARRAY(0x6d9dbb8)
         ARRAY(0x6c199a8)
Attributes:
   cellStyle  { "c:1" => 'style="text-align:right"',"c:3" => 'style="text-align:center"',"c:4" => 'style="text-align:left"' }
   icon       it_network
   room       92 Intranet
   sortColumn 1
   sortFn     rgSortIP
   valueFormat { my $ipAddr = substr($READING,0,index($READING,"_"));
  #Icon für #1_state.absent Spalte 'onl'
  return("<img src='./fhem/images/default/10px-kreis-rot.png' alt='absent'>") if($VALUE eq "absent");
  #Icon für #1_state.present Spalte 'onl'
  return("<img src='./fhem/images/default/10px-kreis-gruen.png' alt='present'>") if($VALUE eq "present");
  #Spalte 'Nr' zur Sortierung aus der IP extrahieren   
  return(substr($VALUE,rindex($VALUE,".")+1)) if(substr($READING,rindex($READING,"_")) eq "_ip");
  return("<a url='http://".$ipAddr."' onclick='window.open(\"http://".$ipAddr."\"); return false;'>".$VALUE."</a>") if(substr(ReadingsVal($DEVICE,$READING,""),rindex(ReadingsVal($DEVICE,$READING,""),"-")+1) eq "80");
  return("<a url='https://".$ipAddr."' onclick='window.open(\"https://".$ipAddr."\"); return false;'>".$VALUE."</a>") if(substr(ReadingsVal($DEVICE,$READING,""),rindex(ReadingsVal($DEVICE,$READING,""),"-")+1) eq "443");
  #Anderenfalls soll das valueFormat leer bleiben bzw. nachstehenden Inhalt verwenden
  return("");
}
   valueStyle {$READING =~ m/(.+)_/;
my $state = ReadingsVal($DEVICE, $1."_state", "NA");
my $style = "";

return('style="text-align: right; '.$style.'"') if($state eq "present" && $READING =~ m/_uptime/);
return('style="color: #bfbfbf; text-align: right; '.$style.'"') if($state eq "absent" && $READING =~ m/_uptime/);

return('style="'.$style.'"') if($state eq "present");
return('style="color: #bfbfbf; '.$style.'"') if($state eq "absent");
}

/code]
FHEM / Ubuntu / fitlet2
HomeMatic: CCU3|HmIP-STHD|HmIP-PCBS|HmIP-PCBS2|HmIP-PCBS-BAT|HM-WDC7000|HM-WDS100-C6-O|HM-WDS40|HM-LC-Sw1-FM|HM-LC-RGBW-WM|HM-ES-PMSw1-Pl|HM-ES-TX-WM
NAS: DS218+|DS209j|DS216+II|DS412+
Devices: Panasonic Webcams|Withings|Gardena Smart|Tuya

Thorsten Pferdekaemper

Hi,
ich hab das grad mal ausprobiert. Das ist im Widget selbst eher schwierig allgemein zu lösen, aber Du kannst einfach absolute Pfade zu den Bildern verwenden. D.h. folgendes funktioniert bei mir sowohl in FHEMWEB als auch in FUIP (und sollte damit auch in Tablet UI ohne FUIP gehen):

return("<img src='/fhem/images/default/10px-kreis-rot.png' alt='absent'>") if($VALUE eq "absent");

Also einfach den Punkt vor "/fhem..." weglassen.
Gruß,
   Thorsten
FUIP

uwirt

Das war's ... alles ok jetzt.

Merci
FHEM / Ubuntu / fitlet2
HomeMatic: CCU3|HmIP-STHD|HmIP-PCBS|HmIP-PCBS2|HmIP-PCBS-BAT|HM-WDC7000|HM-WDS100-C6-O|HM-WDS40|HM-LC-Sw1-FM|HM-LC-RGBW-WM|HM-ES-PMSw1-Pl|HM-ES-TX-WM
NAS: DS218+|DS209j|DS216+II|DS412+
Devices: Panasonic Webcams|Withings|Gardena Smart|Tuya