ReadingsGroup: Unterschied zwischen den Versionen

Aus FHEMWiki
Zeile 185: Zeile 185:
| style="width:40%" |<code>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</code>
| style="width:40%" |<code>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</code>
| 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
| 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]]
| rowspan=9 | [[Datei:ReceiverRG.jpg|thumb]]
| rowspan=9 | [[Datei:ReceiverRG.jpg|thumb]]
[[Datei:ReceiverRGmute.jpg|thumb]]
[[Datei:ReceiverRGmute.jpg|thumb]]

Version vom 3. Januar 2014, 19:03 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 battStatus readingsGroup .*:[Bb]attery Alle readings mit Namen Battery oder battery von allen Devices.
RgBattery.png
attr battStatus alias FHT Batteriestatus Der Alias wird als Überschrift verwendet
attr battStatus mapping %ROOM Mapping %ROOM führt dazu, dass der Raumname als Zeilentitel angezeigt wird.
Definition Erläuterungen Aussehen
define rg_battery readingsGroup .*:[Bb]attery Alle readings mit Namen Battery oder battery von allen Devices.
RgBattery2.png
attr rg_battery alias Batteriestatus Der Alias wird als Überschrift verwendet
attr rg_battery valueFormat {($VALUE eq 'ok')?"batterie":"batterie\@red"} Ein reading Wert ok wird auf das Icon 'batterie' gemapped, jeder andere Wert auf das gleiche icon in rot.
attr rg_battery valueIcon %VALUE Statt des reading Werts soll ein Icon angezeigt werden.
Definition Erläuterungen Aussehen
define rg readingsGroup Contact.Dachboden_gross:sensed.* Alle sensedreadings des Contact.Dachboden_gross device.
RgFenster.png
attr rg mapping { 'sensed.A' => 'links', 'sensed.B' => 'rechts' } Die Zuordnung rechts/links
attr rg valueFormat {($VALUE eq '1')?"fts_window_roof":"fts_window_roof_open_2"} Die Zuordnung von reading Wert zu Icon Namen.
attr rg_battery valueIcon %VALUE Statt des reading Werts soll ein Icon angezeigt werden.
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
S300TH-Werte in einer readingsGroup
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&deg;C", humidity => "%.1f %%", dewpoint => "%.1f&deg;C"} Formatierung der Ausgabewerte. Achtung: "%" die in der Ausgabe erscheinen sollen, müssen verdoppelt werden!
Definition Erläuterungen Aussehen
define culRSSI readingsGroup cul_RSSI=.*:+cul_RSSI Den cul_RSSI Wert aller Devices die einen solchen haben.
Achtung: internal values werden nicht per longpoll aktualisiert sondern nur beim Seitenaufbau.
RgculRSSI.png
Definition Erläuterungen Aussehen
define culRSSI readingsGroup cul_RSSI=.*:+cul_RSSI,+cul_TIME Den cul_RSSI Wert mit der zugehörigen Zeit aller Devices die einen solchen haben.
Achtung: internal values werden nicht per longpoll aktualisiert sondern nur beim Seitenaufbau.
RgculRSSI2.png
Definition Erläuterungen Aussehen
define Systemstatus readingsGroup sysstat Alle readings des sysstat Device
RgSysstat.png
attr Systemstatus nostate 1 Ohne state
attr Systemstatus notime 1 Ohne readings timestamp
attr Systemstatus mapping {'load' => 'Systemauslastung', 'temperature' => 'Systemtemperatur in &deg;C'} Die Zuordnung der reading Namen zu den Zeilentiteln
Definition Erläuterungen Aussehen
define Heizung readingsGroup t(1|2|3):temperature Die Temperatur readings der Devices t1, t2 und t3
RgHeizung.png
attr Heizung mapping {'t1.temperature' => 'Vorlauf', 't2.temperature' => 'R&ücklauf', 't3.temperature' => 'Zirkulation'} Die Zuordnung der reading Namen zu den Zeilentiteln
attr Heizung nameStyle style="text-align:left" Zeilentitel linksbündig wegen floorplan
attr Heizung style style="font-size:20px;color:lightgray" Großer Font und Farbe passend für den floorplan
attr Heizung notime 1 Ohne readings timestamp
attr Heizung valueFormat : %.1f &deg;C Doppelpunkt zwischen Zeilentitel und wert, eine Nachkommastelle plus Einheit
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.
RgVerbrauchPCA301.png
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 wzTemperaturenRG readingsGroup Aussen:,<Temperatur>,temperature,<Luftfeuchte>,humidity Wohnzimmer:,<Temperatur>,temperature,<Luftfeuchte>,humidity Kasten_E_Geraete:,<Temperatur>,temperature,<Luftfeuchte>,humidity Die readings temperatur und humidity der Devices Aussen, Wohnzimmer und Kasten_E_Geraete in einer Zeile pro Device.
TemperaturenRG.png
TemperaturenRG2.png
attr wzTemperaturenRG group 3. Temperaturen Die readingsGroup kommt in eine Gruppe
attr wzTemperaturenRG noheading 1 noheading
attr wzTemperaturenRG nostate 1 nostate
attr wzTemperaturenRG notime 1 notime
attr wzTemperaturenRG valueFormat {temperature => "%.1f °C", humidity =>"%.1f %%" } Die Formatierung für die temperatur und humidity readings: eine Nachkommastelle plus Einheit.
attr wzTemperaturenRG valueStyle { if($DEVICE eq "Aussen" && $READING eq "temperature" && $VALUE > 30) { 'style="color:red"'}elsif($DEVICE eq "Aussen" && $READING eq "temperature" && $VALUE > 20) { 'style="color:orange"'}elsif($DEVICE eq "Aussen" && $READING eq "temperature" && $VALUE < 5) { 'style="color:blue"'}elsif($DEVICE eq "Wohnzimmer" && $READING eq "temperature" && $VALUE > 23) { 'style="color:red"'}elsif($DEVICE eq "Wohnzimmer" && $READING eq "temperature" && $VALUE > 21) { 'style="color:orange"'}elsif($DEVICE eq "Wohnzimmer" && $READING eq "temperature" && $VALUE < 20) { 'style="color:blue"'}elsif($DEVICE eq "Kasten_E_Geraete" && $READING eq "temperature" && $VALUE > 30) { 'style="color:red"'}elsif($DEVICE eq "Kasten_E_Geraete" && $READING eq "temperature" && $VALUE > 28) { 'style="color:orange"'}elsif($READING eq "humidity" && $VALUE > 65) { 'style="color:red"'}elsif($READING eq "humidity" && $VALUE > 60) { 'style="color:orange"'}else{'style="color:green"'} } Diverse Farbkombinationen sind möglich
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

ReceiverRG.jpg
ReceiverRGmute.jpg
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.

sub wzReceiverRGvalueFormat($$$)
{

 my $DEVICE = shift;
my $READING = shift;
my $VALUE = shift;

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 %%"
}
}

}

Dieser Teil kommt in die 99_myUtils.pm

links und trigger

readingGroup mit link

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.