FTUI Widget Readingsgroup

Aus FHEMWiki

Das readingsgroup Widget ist ein Widget für FHEM Tablet UI, mit dem eine in FHEM definierte readingsGroup auch im FHEM Tablet UI angezeigt werden kann

Attribute

Attribut Beschreibung Standard-Wert Beispiel
data-device FHEM-Device, dessen HTML-Inhalt angezeigt werden soll
data-get Name des Readings, das eine Änderung der ReadingsGroup anzeigt 'STATE'
data-max-update Maximale Häufigkeit in Sekunden für das Update der ReadingsGoup 60

Hinweise

Im ReadingsGroup widget wird anders als in anderen widgets nicht der angegebene Wert aus dem Device dargestellt, sondern der HTML-Inhalt des angegebenen ReadingsGroup-Devices. Dieser HTML-Inhalt wird ohne Änderungen eingebettet. Das data-get Reading dient nur dazu ein nötiges Update der ReadingsGroup zu erkennen.


CSS-Klassen

Keine eigenen CSS-Klassen, im HTML-Rendering können aber Referenzen auf CSS-Klassen aus FHEMWeb enthalten sein

Beispiele

ReadingsGroup von verschiedenen Thermo/Hygro-Sensoren

Hier werden Readings für verschiedene Typen von Sensoren als Tabelle angezeigt.

Ftui widget readingsGroup.png

  <header>THY readings</header>
  <div class="cell">
    <div data-type="readingsgroup" data-device="MyTHYReadings"></div> 
  </div>


Der Vollständigkeit halber noch die Definition der readingsGroup in FHEM

define MyTHYReadings readingsGroup <%temperature_humidity>,<%temp_temperature>,<>,<%weather_humidity>,<>,<%measure_battery_50>,<>,<Update>
TYPE=LaCrosse:temperature,< >,humidity,< >,battery,< >,<{getTimeDiffDesc(getNewestTimestamp($DEVICE,"temperature","humidity"))}@temperature> 
TYPE=CUL_TX:temperature,< >,humidity,< >,<>,< >,<{getTimeDiffDesc(getNewestTimestamp($DEVICE,"temperature","humidity"))}@temperature> 
HMT_wz:measured-temp,< >,humidity,< >,battery,< >,<{getTimeDiffDesc(getNewestTimestamp($DEVICE,"measured-temp","humidity"))}@measured-temp> 
HMT_lars:measured-temp,< >,<>,< >,battery,< >,<{getTimeDiffDesc(getNewestTimestamp($DEVICE,"measured-temp","battery"))}@measured-temp>
attr MyTHYReadings noheading 1
attr MyTHYReadings room TEMP
attr MyTHYReadings valueStyle style="text-align:right"
attr MyTHYReadings valueSuffix { "temperature" => ' C   ', "measured-temp" => ' C   ' , "humidity" => ' %   '  } 


Und damit auch alles funktioniert hier noch der Perl-Code (aus 99_myUtils) für die beiden Perl-Routinen

##############################################
# Berechne Zeitdifferenz von String zeit -> als Beschreibung
#
sub getTimeDiffDesc($) {

  my ($str) = @_; 
  
  my $now = time;

  my $td = $now - time_str2num( $str );

  my $tstr = "???";
  
  if ( $td < 1 ) {
    $tstr = "<1m";
  } elsif ( $td < 60 ) {
    $tstr = "<1m";
  } elsif ( $td < 3600 ) {
    $tstr = sprintf("%2d", int(($td/60) + 0.5) )."m" ;
  } elsif ( $td < (3600*24) ) {
    $tstr = sprintf("%2d", int(($td/3600) + 0.5) )."h" ;
  } else {
    $tstr = int(($td/(3600*24)) + 0.5)."d" ;
  }
  
  return $tstr;
}


##############################################
# Berechne neuesten Zeitstempel von mehreren Stati
#
sub getNewestTimestamp($@) {

  my ($device, @args) = @_; 

  my $nt = 0;
  my $nts = "";
  
  for(my $i=0; $i < int(@args); $i++) {
    my $tds = ReadingsTimestamp($device,$args[$i],"");
    if ( $tds ne "" ) {
      my $td = time_str2num( $tds );
      if ( $nt == 0 ) {
        $nt = $td;
        $nts = $tds;
      } elsif ( $td > $nt ) {
        $nt = $td;
        $nts = $tds;
      }
    }
  } 
  
  return $nts;
}