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;
}
