ReadingsGroup: Unterschied zwischen den Versionen
Fhainz (Diskussion | Beiträge) |
Justme (Diskussion | Beiträge) etwas platzspaarender formatiert |
||
| Zeile 211: | Zeile 211: | ||
|- | |- | ||
| <code> | | <code> | ||
sub wzReceiverRGvalueFormat($$$) | sub wzReceiverRGvalueFormat($$$) | ||
{ | { | ||
my ($DEVICE,$READING,$VALUE) = @_; | |||
if($READING eq 'hdd1_capacity') { | |||
return "%.2f MB"; | |||
} elsif( $READING eq 'hdd1_free') { | |||
return "%.2f MB"; | |||
} elsif( $READING eq 'volume' ) { | |||
if( ReadingsVal($DEVICE, "mute", "") eq "on") { | |||
return "mute"; | |||
} else { | |||
return "%i %%"; | |||
} | |||
} | |||
}</code> | |||
}</code> | |||
| Dieser Teil kommt in die [[99_myUtils.pm]] | | Dieser Teil kommt in die [[99_myUtils.pm]] | ||
|} | |} | ||
Version vom 3. Januar 2014, 21:15 Uhr
Das Fhem-Hilfsmodul readingsGroup[1] bietet eine einfache Möglichkeit, readings und internal values von einem oder mehreren Devices darzustellen und flexibel zu formatieren.
Hier soll eine Sammlung von Beispielen zur Verwendung der readingsGroup mitsamt der zugehörigen Screenshots entstehen.
Beispiele
Achtung: Die Beispielen enthalten keine Maskierungen oder Verdoppelungen für ; und Zeilenende sondern sind so angegeben wie sie in Fhemweb in der command box oder nach Klick auf DEF eingegeben werden. Beim manuellen Einfügen in ein config file sind diese Maskierungen oder Verdoppelungen natürlich vorzunehmen.
| Definition | Erläuterungen | Aussehen |
|---|---|---|
define TempHygro readingsGroup TYPE=CUL_WS:temperature,humidity,dewpoint
|
Alle readings mit Namen temperature, humidity, dewpoint von allen Devices des Typs CUL_WS | ![]() |
attr TempHygro alias Temperatur / rel. Feuchte / Taupunkt
|
Der Alias der readingGroup wird als Überschrift verwendet | |
attr TempHygro mapping %ALIAS
|
Mapping %ALIAS führt dazu, dass der Alias des Geräts als Zeilentitel angezeigt wird. | |
attr TempHygro valueFormat { temperature => "%.1f°C", humidity => "%.1f %%", dewpoint => "%.1f°C"}
|
Formatierung der Ausgabewerte. Achtung: "%" die in der Ausgabe erscheinen sollen, müssen verdoppelt werden! |
| Definition | Erläuterungen | Aussehen |
|---|---|---|
define Verbrauch readingsGroup TYPE=PCA301:state,power,consumption
|
Die readings state, power und consumption aller PCA301 Devices mit einer Zeile pro Device. | |
attr Verbrauch mapping %ROOM %ALIAS
|
Der Raumname und der Alias werden als Zeilentitel verwendet | |
attr Verbrauch nameStyle style="font-weight:bold"
|
Der Zeilentitel soll fett sein | |
attr Verbrauch style style="font-size:20px"
|
Alles in einem größeren Font | |
attr Verbrauch valueFormat {power => "%.1f W", consumption => "%.2f kWh"}
|
Die Formatierung für die power und consumption readings: eine Nachkommastelle plus Einheit. | |
attr Verbrauch valueIcon { state => '%devStateIcon' }
|
Für die Dosen, die schaltbar sind, soll das anklickbare device icon gezeigt werden. | |
attr Verbrauch valueStyle {($READING eq "power" && $VALUE > 40)?'style="color:red"':'style="color:green"'}
|
Wenn das power reading >40 ist, soll es in rot angezeigt werden, alle anderen Werte und readings in grün |
| Definition | Erläuterungen | Aussehen |
|---|---|---|
define wzReceiverRG readingsGroup wzReceiver:,<Aktuell>,eventtitle,<Rest>,eventremaining_hr,<Dauer>,eventduration_hr wzReceiver:<Beschreibung>,eventdescription wzReceiver:,<Nächste>,eventtitle_next,<Start>,eventstart_next_hr,<Dauer>,eventduration_next_hr wzReceiver:,<HDD Kapazität>,hdd1_capacity,<Frei>,wzReceiver:hdd1_free wzReceiver:,<Lautstärke>,volume,<HDD>,hdd1_capacity,<Frei>,hdd1_free
|
Mehrere readings des Device wzReceiver in mehreren Zeilen. Wenn der Receiver auf mute ist wird anstatt der Lautstärke, mute angezeigt. Farbige Anzeige des Freien Speicherplatzes
Benötigt: ENIGMA2 Receiver, 70_ENIGMA2.pm - Siehe: Enigma2 Receiver (Dreambox, VUplus etc.) steuern |
|
attr wzReceiverRG group Fernseher Receiver
|
Die readingsGroup kommt in eine Gruppe | |
attr wzReceiverRG mapping
|
mapping wird auf (Leerzeichen) gesetzt, damit der Device Name nicht angezeigt wird | |
attr wzReceiverRG noheading 1
|
noheading | |
attr wzReceiverRG nostate 1
|
nostate | |
attr wzReceiverRG notime 1
|
notime | |
attr wzReceiverRG valueFormat { wzReceiverRGvalueFormat($DEVICE,$READING,$VALUE);; }
|
Die Formatierung wird in die 99_myUtils.pm ausgelagert. Siehe: 99 myUtils anlegen | |
attr wzReceiverRG valueStyle { if($READING eq "hdd1_free" && $VALUE < 200){ 'style="color:red"' }elsif( $READING eq "hdd1_free" && $VALUE < 500 ){ 'style="color:orange"' }elsif( $READING eq "volume" && ReadingsVal($DEVICE, "mute", "") eq "on" ){ 'style="color:red"' }else{ 'style="color:green"' } }
|
Diverse Farbkombinationen sind möglich. Wenn der Receiver auf mute ist, wird anstatt der Lautstärke mute angezeigt. | |
|
Dieser Teil kommt in die 99_myUtils.pm |
links und trigger

Das PCA301 Beispiel oben lässt sich mit einem ans Ende des define angehängten <{appendTrigger($DEVICE,"clear","Alle löschen")}> und der folgenden appendTrigger definition in 99_myUtils.pm um einen Link erweitern der ein Event auslöst an das man z.b. ein notify hängen kann um die Verbrauchszähler der PCA301 Dosen zurückzusetzen.
define clearVerbrauch notify Verbrauch:clear set TYPE=PCA301 clear
use vars qw($FW_ME);
use vars qw($FW_subdir);
sub
appendTrigger($$$)
{
my ($name,$trigger,$label) = @_;
my $ret .= "</table></td></tr>";
my $link = "cmd=trigger $name $trigger";
my $txt = "<a onClick=\"FW_cmd('$FW_ME$FW_subdir?XHR=1&$link')\">$label</a>";
$ret .= "<td colspan=\"99\"><div style=\"cursor:pointer;color:#888888;text-align:right\">$txt</div></td>";
return ($ret,0);
}
Noch ein Beispiel für 'custom links und trigger' findet sich im Forum: Dort wird damit eine readingsGroup dynamisch umgeschaltet um nur die eingeschalteten, nur die ausgeschalteten oder alle Lampen anzuzeigen.
Sonstiges
Mit attr <device> style style="border:0px;background:none;box-shadow:none" lässt sich der Rahmen um eine readingsGroup entfernen wenn sie in einer group verwendet wird und der doppelte Rahmen stört.












