FTUI Widget Readingsgroup
Das readingsgroup Widget ist ein Widget für FHEM Tablet UI V2, 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.
<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; }