<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>http://wiki.fhem.de/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Tpm88</id>
	<title>FHEMWiki - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.fhem.de/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Tpm88"/>
	<link rel="alternate" type="text/html" href="http://wiki.fhem.de/wiki/Spezial:Beitr%C3%A4ge/Tpm88"/>
	<updated>2026-05-02T21:04:24Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=ReadingsGroup&amp;diff=6545</id>
		<title>ReadingsGroup</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=ReadingsGroup&amp;diff=6545"/>
		<updated>2014-06-12T12:15:57Z</updated>

		<summary type="html">&lt;p&gt;Tpm88: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SEITENTITEL:readingsGroup}}&lt;br /&gt;
{{Infobox Modul&lt;br /&gt;
|ModPurpose=Einfache zusammenfassende Darstellung von Informationen über mehrere Geräte&lt;br /&gt;
|ModType=h&lt;br /&gt;
&amp;lt;!-- |ModCategory= (noch?) nicht verwendet --&amp;gt;&lt;br /&gt;
|ModCmdRef=readingsGroup&lt;br /&gt;
|ModTechName=33_readingsGroup.pm&lt;br /&gt;
|ModOwner=[http://forum.fhem.de/index.php?action=profile;u=430 Andre / justme1968]}}&lt;br /&gt;
Das Fhem-[[:Kategorie:Hilfsmodul|Hilfsmodul]] [[readingsGroup]] bietet eine einfache Möglichkeit, &#039;&#039;readings&#039;&#039; und &#039;&#039;internal values&#039;&#039; von einem oder mehreren &#039;&#039;Devices&#039;&#039; darzustellen und flexibel zu formatieren. &lt;br /&gt;
&lt;br /&gt;
Hier soll eine Sammlung von Beispielen zur Verwendung der &#039;&#039;readingsGroup&#039;&#039; mitsamt der zugehörigen Screenshots entstehen.&lt;br /&gt;
&lt;br /&gt;
== Definition == &lt;br /&gt;
Siehe commandref.&lt;br /&gt;
&lt;br /&gt;
== Attribute ==&lt;br /&gt;
Weitergehende Erläuterungen zu einzelnen Attributen:&lt;br /&gt;
&lt;br /&gt;
=== noheading ===&lt;br /&gt;
[[Datei:ReadingsGroup_noheading.png|mini|rechts|400px|ReadingsGroup: rechts mit &amp;quot;noheading&amp;quot; Attribut, links der anklickbare Titel]]&lt;br /&gt;
Das Attribut &amp;lt;code&amp;gt;noheading&amp;lt;/code&amp;gt; führt dazu, dass der Alias der ReadingsGroup nicht mehr als Titel angezeigt wird. Das kann wünschenswert sein, wenn die ReadingsGroup auf einer [[Dashboard]]-Seite angezeigt werden soll, hat allerdings den Nachteil, dass die Detail-Ansicht der ReadingsGroup nicht mehr über einen Klick auf den Titel aufgerufen werden kann. Der Einstellungsdialog der ReadingsGroup ist dann nur noch (z.&amp;amp;nbsp;B.) über&lt;br /&gt;
* einen &amp;quot;Probably associated with&amp;quot;-Link eines anderen Objekts oder über&lt;br /&gt;
* manuelle Modifikation der URL eines anderen Objekts (&amp;lt;code&amp;gt;http:.../fhem?detail=&amp;lt;objektname&amp;gt;&amp;lt;/code&amp;gt;)&lt;br /&gt;
erreichbar.&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
Achtung: Die Beispiele 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 eine [[Konfiguration|Konfigurationsdatei]] sind diese Maskierungen oder Verdoppelungen natürlich vorzunehmen.&lt;br /&gt;
&lt;br /&gt;
=== Einfache Auswahl über Reading-Namen ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Definition !! Erläuterungen !! Aussehen &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; |&amp;lt;code&amp;gt;define battStatus readingsGroup .*:[Bb]attery&amp;lt;/code&amp;gt;&lt;br /&gt;
| Alle readings mit Namen &#039;&#039;&#039;Battery&#039;&#039;&#039; oder &#039;&#039;&#039;battery&#039;&#039;&#039; von allen Devices. &lt;br /&gt;
| rowspan=3 | [[Datei:rgBattery.png|thumb]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr battStatus alias FHT Batteriestatus &amp;lt;/code&amp;gt;&lt;br /&gt;
| Der Alias wird als Zeilentitel verwendet&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr battStatus mapping %ROOM &amp;lt;/code&amp;gt;&lt;br /&gt;
| &#039;&#039;Mapping %ROOM&#039;&#039; führt dazu, dass der Raumname als Zeilentitel angezeigt wird.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Auswahl über Reading-Namen, Status als Symbol dargestellt&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Definition !! Erläuterungen !! Aussehen &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; |&amp;lt;code&amp;gt;define rg_battery readingsGroup .*:battery&amp;lt;/code&amp;gt;&lt;br /&gt;
| Alle readings mit Namen &#039;&#039;&#039;battery&#039;&#039;&#039; von allen Devices. &lt;br /&gt;
| rowspan=4 | [[Datei:rgBattery2.png|thumb]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr rg_battery alias Batteriestatus &amp;lt;/code&amp;gt;&lt;br /&gt;
| Der Alias wird als Überschrift verwendet&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr rg_battery valueIcon {&#039;battery.ok&#039; =&amp;gt; &#039;batterie&#039;, &#039;battery.low&#039; =&amp;gt; &#039;batterie@red&#039;}&amp;lt;/code&amp;gt;&lt;br /&gt;
| Statt der reading Werte &amp;quot;ok&amp;quot; und &amp;quot;low&amp;quot; soll ein Icon angezeigt werden.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;attr rg_battery commands { &amp;quot;battery.low&amp;quot; =&amp;gt; &amp;quot;set %DEVICE replaceBatteryForSec 60&amp;quot; }&amp;lt;/code&amp;gt;&lt;br /&gt;
| Für LaCrosse devices kann man beim Klick auf ein rotes &amp;quot;battery low icon&amp;quot; direkt replaceBatteryForSec setzen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Reading-Werte zuordnen (Icon / Text) ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Definition !! Erläuterungen !! Aussehen &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; |&amp;lt;code&amp;gt;define rg readingsGroup Contact.Dachboden_gross:sensed.*&amp;lt;/code&amp;gt;&lt;br /&gt;
| Alle sensedreadings des Contact.Dachboden_gross device. &lt;br /&gt;
| rowspan=4 | [[Datei:rgFenster.png|thumb]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr rg mapping { &#039;sensed.A&#039; =&amp;gt; &#039;links&#039;, &#039;sensed.B&#039; =&amp;gt; &#039;rechts&#039; }&amp;lt;/code&amp;gt;&lt;br /&gt;
| Die Zuordnung rechts/links&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr rg valueFormat {($VALUE eq &#039;1&#039;)?&amp;quot;fts_window_roof&amp;quot;:&amp;quot;fts_window_roof_open_2&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
| Die Zuordnung von reading Wert zu Icon Namen.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr rg_battery valueIcon %VALUE &amp;lt;/code&amp;gt;&lt;br /&gt;
| Statt des reading Werts soll ein Icon angezeigt werden.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Formatvorgabe für Ausgabewerte ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Definition !! Erläuterungen !! Aussehen &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; |&amp;lt;code&amp;gt;define TempHygro readingsGroup TYPE=CUL_WS:temperature,humidity,dewpoint&amp;lt;/code&amp;gt;&lt;br /&gt;
| Alle readings mit Namen &#039;&#039;&#039;temperature&#039;&#039;&#039;, &#039;&#039;&#039;humidity&#039;&#039;&#039;, &#039;&#039;&#039;dewpoint&#039;&#039;&#039; von allen Devices des Typs &#039;&#039;&#039;CUL_WS&#039;&#039;&#039;&lt;br /&gt;
| rowspan=4 | [[Datei:rgTemperatur.png|thumb|[[S300TH]]-Werte in einer readingsGroup]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr TempHygro alias Temperatur / rel. Feuchte / Taupunkt&amp;lt;/code&amp;gt;&lt;br /&gt;
| Der Alias der readingsGroup wird als Überschrift verwendet&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr TempHygro mapping %ALIAS&amp;lt;/code&amp;gt;&lt;br /&gt;
| &#039;&#039;Mapping %ALIAS&#039;&#039; führt dazu, dass der Alias des Geräts als Zeilentitel angezeigt wird.&lt;br /&gt;
|- &lt;br /&gt;
| &amp;lt;code&amp;gt;attr TempHygro valueFormat { temperature =&amp;gt; &amp;quot;%.1f&amp;amp;amp;deg;C&amp;quot;, humidity =&amp;gt; &amp;quot;%.1f %%&amp;quot;, dewpoint =&amp;gt; &amp;quot;%.1f&amp;amp;amp;deg;C&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
| Formatierung der Ausgabewerte. &#039;&#039;&#039;Achtung:&#039;&#039;&#039; &amp;quot;%&amp;quot; die in der Ausgabe erscheinen sollen, müssen verdoppelt werden!&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Ausgabestil (hier rechtsbündig) ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Definition !! Erläuterungen !! Aussehen &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; |&amp;lt;code&amp;gt;define Wetter readingsGroup WetterXXX:&amp;lt;%temp_temperature&amp;gt;,&amp;lt;Temperatur&amp;gt;,temperature WetterXXX:&amp;lt;%weather_humidity&amp;gt;,&amp;lt;Luftfeuchte&amp;gt;,humidity WetterXXX:&amp;lt;%weather_baraometric_pressure&amp;gt;,&amp;lt;Luftdruck&amp;gt;,pressure&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
| Die readings mit Namen &#039;&#039;&#039;temperature&#039;&#039;&#039;, &#039;&#039;&#039;humidity&#039;&#039;&#039; und &#039;&#039;&#039;pressure&#039;&#039;&#039; vom Device WetterXXX jeweils mit einem Icon und einem Label davor.&lt;br /&gt;
| rowspan=3 | [[Datei:rgWetter.png|thumb]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr Wetter valueFormat { temperature =&amp;gt; &#039;%1.f &amp;amp;amp;deg;C&#039;, humidity =&amp;gt; &#039;%1.f %%&#039;, pressure =&amp;gt; &#039;%i mbar&#039; }&amp;lt;/code&amp;gt;&lt;br /&gt;
| Die Formatierung der Readingswerte&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr Wetter valueStyle style=&amp;quot;text-align:right&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Die Readings sollen rechtsbündig dargestellt werden.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Internal Value ausgeben ===&lt;br /&gt;
Diese Beispiel könnte entfallen (nächstes Beispiel ist sehr ähnlich; es wird lediglich ein weiterer Wert ausgegeben).&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Definition !! Erläuterungen !! Aussehen &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; |&amp;lt;code&amp;gt;define culRSSI readingsGroup cul_RSSI=.*:+cul_RSSI&amp;lt;/code&amp;gt;&lt;br /&gt;
| Den cul_RSSI Wert aller Devices die einen solchen haben anzeigen.&amp;lt;br&amp;gt; &#039;&#039;&#039;Achtung&#039;&#039;&#039;: &amp;quot;internal values&amp;quot; werden nicht per longpoll aktualisiert, sondern nur beim Seitenaufbau.&lt;br /&gt;
| rowspan=1 | [[Datei:rgculRSSI.png|thumb]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Internal Values ausgeben ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Definition !! Erläuterungen !! Aussehen &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; |&amp;lt;code&amp;gt;define culRSSI readingsGroup cul_RSSI=.*:+cul_RSSI,+cul_TIME&amp;lt;/code&amp;gt;&lt;br /&gt;
| Den cul_RSSI Wert mit der zugehörigen Zeit aller Devices die einen solchen haben anzeigen.&amp;lt;br&amp;gt; &#039;&#039;&#039;Achtung&#039;&#039;&#039;: &amp;quot;internal values&amp;quot; werden nicht per longpoll aktualisiert, sondern nur beim Seitenaufbau.&amp;lt;br&amp;gt;&amp;quot;Internal Values&amp;quot; werden durch das vorangestellte &#039;&#039;&#039;+&#039;&#039;&#039; (Pluszeichen) identifiziert.&lt;br /&gt;
| rowspan=1 | [[Datei:rgculRSSI2.png|thumb]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Alle Readings eines Gerätes, mit Ausnahme von... ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Definition !! Erläuterungen !! Aussehen &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; |&amp;lt;code&amp;gt;define Systemstatus readingsGroup sysstat&amp;lt;/code&amp;gt;&lt;br /&gt;
| Alle readings des sysstat Device&lt;br /&gt;
| rowspan=4 | [[Datei:rgSysstat.png|thumb]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr Systemstatus nostate 1&amp;lt;/code&amp;gt;&lt;br /&gt;
| Ohne state&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr Systemstatus notime 1&amp;lt;/code&amp;gt;&lt;br /&gt;
| Ohne readings timestamp&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr Systemstatus mapping {&#039;load&#039; =&amp;gt; &#039;Systemauslastung&#039;, &#039;temperature&#039; =&amp;gt; &#039;Systemtemperatur in &amp;amp;amp;deg;C&#039;}&amp;lt;/code&amp;gt;&lt;br /&gt;
| Die Zuordnung der reading Namen zu den Zeilentiteln&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Anzeige auf einem Floorplan ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Definition !! Erläuterungen !! Aussehen &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; |&amp;lt;code&amp;gt;define Heizung readingsGroup t(1|2|3):temperature&amp;lt;/code&amp;gt;&lt;br /&gt;
| Die Temperatur readings der Devices t1, t2 und t3&lt;br /&gt;
| rowspan=6 | [[Datei:rgHeizung.png|thumb]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr Heizung mapping {&#039;t1.temperature&#039; =&amp;gt; &#039;Vorlauf&#039;, &#039;t2.temperature&#039; =&amp;gt; &#039;R&amp;amp;amp;&amp;amp;uuml;cklauf&#039;, &#039;t3.temperature&#039; =&amp;gt; &#039;Zirkulation&#039;}&amp;lt;/code&amp;gt;&lt;br /&gt;
| Die Zuordnung der reading Namen zu den Zeilentiteln&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr Heizung nameStyle style=&amp;quot;text-align:left&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Zeilentitel linksbündig wegen floorplan&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr Heizung style style=&amp;quot;font-size:20px;color:lightgray&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Großer Font und Farbe passend für den floorplan&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr Heizung notime 1&amp;lt;/code&amp;gt;&lt;br /&gt;
| Ohne readings timestamp&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr Heizung valueFormat : %.1f &amp;amp;amp;deg;C&amp;lt;/code&amp;gt;&lt;br /&gt;
| Doppelpunkt zwischen Zeilentitel und Wert, eine Nachkommastelle plus Einheit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Schriftgrößen, Farben, Icons ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Definition !! Erläuterungen &lt;br /&gt;
|-&lt;br /&gt;
| colspan=2 | [[Datei:rgVerbrauchPCA301.png|links|mini|400px|Schriftgröße, Farbe, Icons...]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; |&amp;lt;code&amp;gt;define Verbrauch readingsGroup TYPE=PCA301:state,power,consumption&amp;lt;/code&amp;gt;&lt;br /&gt;
| Die readings state, power und consumption aller [[PCA301 Funkschaltsteckdose mit Energieverbrauchsmessung|PCA301]] Devices mit einer Zeile pro Device. &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr Verbrauch mapping %ROOM %ALIAS&amp;lt;/code&amp;gt;&lt;br /&gt;
| Der Raumname und der Alias werden als Zeilentitel verwendet&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr Verbrauch nameStyle style=&amp;quot;font-weight:bold&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Der Zeilentitel soll fett sein&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr Verbrauch style style=&amp;quot;font-size:20px&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Alles in einem größeren Font&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr Verbrauch valueFormat {power =&amp;gt; &amp;quot;%.1f W&amp;quot;, consumption =&amp;gt; &amp;quot;%.2f kWh&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
| Die Formatierung für die power und consumption readings: eine Nachkommastelle plus Einheit.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;attr Verbrauch valueIcon { state =&amp;gt; &#039;%devStateIcon&#039; }&amp;lt;/code&amp;gt;&lt;br /&gt;
| Für die Dosen, die schaltbar sind, soll das anklickbare device icon gezeigt werden.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;attr Verbrauch valueStyle {($READING eq &amp;quot;power&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 40)?&#039;style=&amp;quot;color:red&amp;quot;&#039;:&#039;style=&amp;quot;color:green&amp;quot;&#039;}&amp;lt;/code&amp;gt;&lt;br /&gt;
|Wenn das power reading &amp;gt;40 ist, soll es in rot angezeigt werden, alle anderen Werte und readings in grün&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Wertabhängige Farbgebung ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Definition !! Erläuterungen &lt;br /&gt;
|-&lt;br /&gt;
| colspan=2 | [[Datei:TemperaturenRG.png|600px|mini|links|Wertabhängige Farben]]&lt;br /&gt;
[[Datei:TemperaturenRG2.png|600px|mini|links|Andere Werte - andere Farben]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; |&amp;lt;code&amp;gt;define wzTemperaturenRG readingsGroup Aussen:,&amp;lt;Temperatur&amp;gt;,temperature,&amp;lt;Luftfeuchte&amp;gt;,humidity Wohnzimmer:,&amp;lt;Temperatur&amp;gt;,temperature,&amp;lt;Luftfeuchte&amp;gt;,humidity Kasten_E_Geraete:,&amp;lt;Temperatur&amp;gt;,temperature,&amp;lt;Luftfeuchte&amp;gt;,humidity&amp;lt;/code&amp;gt;&lt;br /&gt;
| Die readings temperatur und humidity der Devices Aussen, Wohnzimmer und Kasten_E_Geraete in einer Zeile pro Device. &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr wzTemperaturenRG group 3. Temperaturen&amp;lt;/code&amp;gt;&lt;br /&gt;
| Die readingsGroup kommt in eine Gruppe&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr wzTemperaturenRG noheading 1&amp;lt;/code&amp;gt;&lt;br /&gt;
| noheading&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr wzTemperaturenRG nostate 1&amp;lt;/code&amp;gt;&lt;br /&gt;
| nostate&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr wzTemperaturenRG notime 1&amp;lt;/code&amp;gt;&lt;br /&gt;
| notime&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr wzTemperaturenRG valueFormat {temperature =&amp;gt; &amp;quot;%.1f °C&amp;quot;, humidity =&amp;gt;&amp;quot;%.1f %%&amp;quot; }&amp;lt;/code&amp;gt;&lt;br /&gt;
| Die Formatierung für die temperatur und humidity readings: eine Nachkommastelle plus Einheit.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;attr wzTemperaturenRG valueStyle { if($DEVICE eq &amp;quot;Aussen&amp;quot; &amp;amp;&amp;amp; $READING eq &amp;quot;temperature&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 30) { &#039;style=&amp;quot;color:red&amp;quot;&#039;}elsif($DEVICE eq &amp;quot;Aussen&amp;quot; &amp;amp;&amp;amp; $READING eq &amp;quot;temperature&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 20) { &#039;style=&amp;quot;color:orange&amp;quot;&#039;}elsif($DEVICE eq &amp;quot;Aussen&amp;quot; &amp;amp;&amp;amp; $READING eq &amp;quot;temperature&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt; 5) { &#039;style=&amp;quot;color:blue&amp;quot;&#039;}elsif($DEVICE eq &amp;quot;Wohnzimmer&amp;quot; &amp;amp;&amp;amp; $READING eq &amp;quot;temperature&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 23) { &#039;style=&amp;quot;color:red&amp;quot;&#039;}elsif($DEVICE eq &amp;quot;Wohnzimmer&amp;quot; &amp;amp;&amp;amp; $READING eq &amp;quot;temperature&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 21) { &#039;style=&amp;quot;color:orange&amp;quot;&#039;}elsif($DEVICE eq &amp;quot;Wohnzimmer&amp;quot; &amp;amp;&amp;amp; $READING eq &amp;quot;temperature&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt; 20) { &#039;style=&amp;quot;color:blue&amp;quot;&#039;}elsif($DEVICE eq &amp;quot;Kasten_E_Geraete&amp;quot; &amp;amp;&amp;amp; $READING eq &amp;quot;temperature&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 30) { &#039;style=&amp;quot;color:red&amp;quot;&#039;}elsif($DEVICE eq &amp;quot;Kasten_E_Geraete&amp;quot; &amp;amp;&amp;amp; $READING eq &amp;quot;temperature&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 28) { &#039;style=&amp;quot;color:orange&amp;quot;&#039;}elsif($READING eq &amp;quot;humidity&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 65) { &#039;style=&amp;quot;color:red&amp;quot;&#039;}elsif($READING eq &amp;quot;humidity&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 60) { &#039;style=&amp;quot;color:orange&amp;quot;&#039;}else{&#039;style=&amp;quot;color:green&amp;quot;&#039;} }&amp;lt;/code&amp;gt;&lt;br /&gt;
| Diverse Farbkombinationen sind möglich&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Enigma Receiver ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Definition !! Erläuterungen &lt;br /&gt;
|-&lt;br /&gt;
| colspan=2 | [[Datei:ReceiverRG.jpg|600px|mini|links|Wertabhängige Farben]]&lt;br /&gt;
[[Datei:ReceiverRGmute.jpg|600px|mini|links|Wertabhängige Farben]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; |&amp;lt;code&amp;gt;define wzReceiverRG readingsGroup wzReceiver:,&amp;lt;Aktuell&amp;gt;,eventtitle,&amp;lt;Rest&amp;gt;,eventremaining_hr,&amp;lt;Dauer&amp;gt;,eventduration_hr wzReceiver:&amp;lt;Beschreibung&amp;gt;,eventdescription wzReceiver:,&amp;lt;Nächste&amp;gt;,eventtitle_next,&amp;lt;Start&amp;gt;,eventstart_next_hr,&amp;lt;Dauer&amp;gt;,eventduration_next_hr wzReceiver:,&amp;lt;HDD Kapazität&amp;gt;,hdd1_capacity,&amp;lt;Frei&amp;gt;,wzReceiver:hdd1_free wzReceiver:,&amp;lt;Lautstärke&amp;gt;,volume,&amp;lt;HDD&amp;gt;,hdd1_capacity,&amp;lt;Frei&amp;gt;,hdd1_free&amp;lt;/code&amp;gt;&lt;br /&gt;
| 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&lt;br /&gt;
&#039;&#039;&#039;Benötigt:&#039;&#039;&#039; ENIGMA2 Receiver, 70_ENIGMA2.pm - Siehe: [[Enigma2 Receiver (Dreambox, VUplus etc.) steuern]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr wzReceiverRG group Fernseher Receiver&amp;lt;/code&amp;gt;&lt;br /&gt;
| Die readingsGroup kommt in eine Gruppe&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr wzReceiverRG mapping &amp;amp;amp;nbsp;&amp;lt;/code&amp;gt;&lt;br /&gt;
| mapping wird auf &amp;amp;amp;nbsp; (Leerzeichen) gesetzt, damit der Device Name nicht angezeigt wird&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr wzReceiverRG noheading 1&amp;lt;/code&amp;gt;&lt;br /&gt;
| noheading&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr wzReceiverRG nostate 1&amp;lt;/code&amp;gt;&lt;br /&gt;
| nostate&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr wzReceiverRG notime 1&amp;lt;/code&amp;gt;&lt;br /&gt;
| notime&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr wzReceiverRG valueColumns { eventdescription =&amp;gt; &#039;colspan=&amp;quot;4&amp;quot;&#039; }&amp;lt;/code&amp;gt;&lt;br /&gt;
| Die Beschreibung soll über 4 Spalten gehen&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr wzReceiverRG valueFormat { wzReceiverRGvalueFormat($DEVICE,$READING,$VALUE);; }&amp;lt;/code&amp;gt;&lt;br /&gt;
| Die Formatierung wird in die 99_myUtils.pm ausgelagert. Siehe: [[99 myUtils anlegen]]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;attr wzReceiverRG valueStyle { if($READING eq &amp;quot;hdd1_free&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt; 200){ &#039;style=&amp;quot;color:red&amp;quot;&#039; }elsif( $READING eq &amp;quot;hdd1_free&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt; 500 ){ &#039;style=&amp;quot;color:orange&amp;quot;&#039; }elsif( $READING eq &amp;quot;volume&amp;quot; &amp;amp;&amp;amp; ReadingsVal($DEVICE, &amp;quot;mute&amp;quot;, &amp;quot;&amp;quot;) eq &amp;quot;on&amp;quot; ){ &#039;style=&amp;quot;color:red&amp;quot;&#039; }else{ &#039;style=&amp;quot;color:green&amp;quot;&#039; } }&amp;lt;/code&amp;gt;&lt;br /&gt;
| Diverse Farbkombinationen sind möglich. Wenn der Receiver auf mute ist, wird anstatt der Lautstärke &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;mute&amp;lt;/span&amp;gt; angezeigt.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&lt;br /&gt;
 sub wzReceiverRGvalueFormat($$$)&lt;br /&gt;
 {&lt;br /&gt;
   my ($DEVICE,$READING,$VALUE) = @_;&lt;br /&gt;
 &lt;br /&gt;
   if($READING eq &#039;hdd1_capacity&#039;) { &lt;br /&gt;
     return &amp;quot;%.2f MB&amp;quot;;&lt;br /&gt;
   } elsif( $READING eq &#039;hdd1_free&#039;) {&lt;br /&gt;
     return &amp;quot;%.2f MB&amp;quot;;&lt;br /&gt;
   } elsif( $READING eq &#039;volume&#039; ) {&lt;br /&gt;
     if( ReadingsVal($DEVICE, &amp;quot;mute&amp;quot;, &amp;quot;&amp;quot;) eq &amp;quot;on&amp;quot;) {&lt;br /&gt;
       return &amp;quot;mute&amp;quot;;&lt;br /&gt;
     } else {&lt;br /&gt;
       return &amp;quot;%i %%&amp;quot;;&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
 }&amp;lt;/code&amp;gt;&lt;br /&gt;
| Dieser Teil kommt in die [[99_myUtils_anlegen|99_myUtils.pm]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Heizungswerte inklusive Batterie- und Fensterstatus ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Definition !! Erläuterungen &lt;br /&gt;
|-&lt;br /&gt;
| colspan=2 | [[Datei:rgHeizung3.png|thumb|links|500px|Heizungswerte inklusive Batterie- und Fensterstatus]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; |&amp;lt;code&amp;gt;define Heizungswerte readingsGroup &amp;lt;%sani_heating&amp;gt;,&amp;lt; &amp;gt;,&amp;lt;Act&amp;gt;,&amp;lt;Soll&amp;gt;,&amp;lt;Ist&amp;gt; TYPE=FHT:actuator,desired-temp,measured-temp,&amp;lt;%18&amp;gt;,&amp;lt;%20&amp;gt;,&amp;lt;%22&amp;gt;,window,battery&amp;lt;/code&amp;gt;&lt;br /&gt;
| Diverse readings aller Devices des Typs &amp;lt;b&amp;gt;FHT&amp;lt;/b&amp;gt;. &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr Heizungswerte commands { &#039;Heizungswerte.18&#039; =&amp;gt; &#039;set $DEVICE desired-temp 18&#039;, &#039;Heizungswerte.20&#039; =&amp;gt; &#039;set $DEVICE desired-temp 20&#039;, &#039;Heizungswerte.22&#039; =&amp;gt; &#039;set $DEVICE desired-temp 22&#039; }&amp;lt;/code&amp;gt;&lt;br /&gt;
| Die Links/Kommandos die hinter den 18, 20 und 22 liegen sollen.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr Heizungswerte nameStyle style=&amp;quot;color:yellow;font-weight:bold&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Die Überschriften sollen gelb sein.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr Heizungswerte valueIcon {&#039;battery.ok&#039; =&amp;gt; &#039;batterie@lightgreen&#039;, &#039;battery.low&#039; =&amp;gt; &#039;batterie@red&#039;, &#039;window.closed&#039; =&amp;gt; &#039;fts_window_1w@lightgreen&#039;, &#039;window.open&#039; =&amp;gt; &#039;fts_window_1w_open@red&#039;}&amp;lt;/code&amp;gt;&lt;br /&gt;
| Für den Batteriestand und den Zustand der Fenster sollen jeweils Icons angezeigt werden.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Heizungswerte inklusive Ventilposition ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Definition !! Erläuterungen &lt;br /&gt;
|-&lt;br /&gt;
| colspan=2 | [[Datei:Rg_Heizung_Valveposition.png|thumb|links|500px|Heizungswerte inklusive Statusinformationen (MAX!)]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; |&amp;lt;code&amp;gt;define Heizungswerte readingsGroup &amp;lt;%sani_heating&amp;gt;,&amp;lt;Ventil&amp;gt;,&amp;lt;Soll&amp;gt;,&amp;lt;Ist&amp;gt;,&amp;lt;MaxV&amp;gt;,&amp;lt;GID&amp;gt;,&amp;lt;Mode&amp;gt;,&amp;lt;Batterie&amp;gt; type=CUL_HM:ValvePosition,desired-tempe,measured-temp,R-valveMaxPos,groupid,mode,battery&amp;lt;/code&amp;gt;&lt;br /&gt;
| Diverse readings aller Devices des Typs &amp;lt;b&amp;gt;MAX&amp;lt;/b&amp;gt;. &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr Heizungswerte mapping %ROOM&amp;lt;/code&amp;gt;&lt;br /&gt;
| Die Raumnamen werden angezeigt.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr Heizungswerte nameStyle style=&amp;quot;color:yellow;font-weight:bold&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Die Überschriften sollen gelb (fett) sein.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr Heizungswerte room Heizung&amp;lt;/code&amp;gt;&lt;br /&gt;
| Die &amp;quot;readingsgroup&amp;quot; wird dem Ruam &amp;quot;Heizung&amp;quot; zugeordnet.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr Heizungswerte valueFormat {temperature =&amp;gt; &amp;quot;%.0f °C&amp;quot;, desiredTemperature =&amp;gt; &amp;quot;%.0f °C&amp;quot;, valveposition =&amp;gt;&amp;quot;%.0f %%&amp;quot;,maxValveSetting =&amp;gt;&amp;quot;%.0f %%&amp;quot; }&amp;lt;/code&amp;gt;&lt;br /&gt;
| Es wird noch die Einheit °C hinter den Temperaturwerten angezeigt.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr Heizungswerte valueIcon {&#039;battery.ok&#039; =&amp;gt; &#039;batterie@lightgreen&#039;, &#039;battery.low&#039; =&amp;gt; &#039;batterie@red&#039;}&amp;lt;/code&amp;gt;&lt;br /&gt;
| Für den Batterzustand werden Icons anstatt Klartextwerte genommen!&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr Heizungswerte valueStyle { if($READING eq &amp;quot;temperature&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 20){ &#039;style=&amp;quot;color:green;;font-weight:bold&amp;quot;&#039; }elsif( $READING eq &amp;quot;temperature&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 20 ){ &#039;style=&amp;quot;color:blue&amp;quot;&#039; }elsif( $READING eq &amp;quot;temperature&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 23 ){ &#039;style=&amp;quot;color:red&amp;quot;&#039; }else{ &#039;style=&amp;quot;color:gray&amp;quot;&#039; } }&amp;lt;/code&amp;gt;&lt;br /&gt;
| Die Temperaturwerte werden abhängig vom Wert farbig dargestellt.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr Heizungswerte valueIcon {&#039;battery.ok&#039; =&amp;gt; &#039;batterie@lightgreen&#039;, &#039;battery.low&#039; =&amp;gt; &#039;batterie@red&#039;, &#039;window.closed&#039; =&amp;gt; &#039;fts_window_1w@lightgreen&#039;, &#039;window.open&#039; =&amp;gt; &#039;fts_window_1w_open@red&#039;}&amp;lt;/code&amp;gt;&lt;br /&gt;
| Für den Batteriestand und den Zustand der Fenster sollen jeweils Icons angezeigt werden.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Heizungswerte, Status und Regelmöglichkeit ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Definition !! Erläuterungen &lt;br /&gt;
|-&lt;br /&gt;
| colspan=2 | [[Datei:rgHeizung2.png|thumb|500px|links|Anzeige + Regelmöglichkeit]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; |&amp;lt;code&amp;gt;define Heizungswerte2 readingsGroup &amp;lt;%sani_heating&amp;gt;,&amp;lt; &amp;gt;,&amp;lt;Act&amp;gt;,&amp;lt;Soll&amp;gt;,&amp;lt;Ist&amp;gt; TYPE=FHT:actuator,desired-temp,measured-temp,&amp;lt;{myUtils_HeizungUpDown($DEVICE,&amp;quot;up&amp;quot;)}@desired-temp&amp;gt;,desired-new,&amp;lt;{myUtils_HeizungUpDown($DEVICE,&amp;quot;down&amp;quot;)}@desired-temp&amp;gt;,window,battery&amp;lt;/code&amp;gt;&lt;br /&gt;
| Diverse readings aller Devices des Typs &amp;lt;b&amp;gt;FHT&amp;lt;/b&amp;gt;. &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr Heizungswerte2 nameStyle style=&amp;quot;color:yellow;font-weight:bold&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Die Überschriften sollen gelb sein.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr Heizungswerte2 valueIcon {&#039;battery.ok&#039; =&amp;gt; &#039;batterie@lightgreen&#039;, &#039;battery.low&#039; =&amp;gt; &#039;batterie@red&#039;, &#039;window.closed&#039; =&amp;gt; &#039;fts_window_1w@lightgreen&#039;, &#039;window.open&#039; =&amp;gt; &#039;fts_window_1w_open@red&#039;}&amp;lt;/code&amp;gt;&lt;br /&gt;
| Für den Batteriestand und den Zustand der Fenster sollen jeweils Icons angezeigt werden.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr Heizungswerte2 valueStyle {($VALUE eq &amp;quot;00&amp;quot;)?&#039;style=&amp;quot;visibility:hidden&amp;quot;&#039;:&#039;&#039;}&amp;lt;/code&amp;gt;&lt;br /&gt;
| Nach dem Einstellen den Wert wieder ausblenden. &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&lt;br /&gt;
 #Heizung regeln in readingsGroup&lt;br /&gt;
 sub&lt;br /&gt;
 myUtils_HeizungUpDown($$)&lt;br /&gt;
 {&lt;br /&gt;
   my($DEVICE,$CMD) = @_;&lt;br /&gt;
  &lt;br /&gt;
   my $icon = $CMD;&lt;br /&gt;
   my $VALUE = ReadingsVal($DEVICE,&amp;quot;desired-new&amp;quot;,&amp;quot;20&amp;quot; );&lt;br /&gt;
   $VALUE = ReadingsVal($DEVICE,&amp;quot;desired-temp&amp;quot;,&amp;quot;20&amp;quot; )&lt;br /&gt;
      if( !$VALUE || $VALUE == 0 );&lt;br /&gt;
   my $link;&lt;br /&gt;
  &lt;br /&gt;
   if( $CMD eq &amp;quot;up&amp;quot; ) {&lt;br /&gt;
     $icon = &amp;quot;control_arrow_upward&amp;quot;;&lt;br /&gt;
     $VALUE += 1;&lt;br /&gt;
  &lt;br /&gt;
     if( $VALUE &amp;lt;= 24 ) {&lt;br /&gt;
       $icon .= &amp;quot;\@red&amp;quot;;&lt;br /&gt;
       $link = &amp;quot;setreading $DEVICE desired-new $VALUE&amp;quot;;&lt;br /&gt;
     }&lt;br /&gt;
   } elsif( $CMD eq &amp;quot;down&amp;quot; ) {&lt;br /&gt;
     $icon = &amp;quot;control_arrow_downward&amp;quot;;&lt;br /&gt;
     $VALUE -= 1;&lt;br /&gt;
  &lt;br /&gt;
     if( $VALUE &amp;gt;= 18 ) {&lt;br /&gt;
       $icon .= &amp;quot;\@blue&amp;quot;;&lt;br /&gt;
       $link = &amp;quot;setreading $DEVICE desired-new $VALUE&amp;quot;;&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
  &lt;br /&gt;
   my $notify = &amp;quot;notifyHeizungUpDown&amp;quot;;&lt;br /&gt;
   if( !defined($defs{$notify}) ) {&lt;br /&gt;
     CommandDefine(undef,&lt;br /&gt;
                    &amp;quot;$notify notify .*:desired-new.* &amp;quot;&lt;br /&gt;
                    .&amp;quot;{ myUtils_HeizungUpDownNotify(\$NAME,\$EVTPART1); }&amp;quot; );&lt;br /&gt;
   }&lt;br /&gt;
  &lt;br /&gt;
   my $ret = &amp;quot;%$icon&amp;quot;;&lt;br /&gt;
   $ret .= &amp;quot;%$link&amp;quot; if( $link );&lt;br /&gt;
  &lt;br /&gt;
   return $ret;&lt;br /&gt;
 }&lt;br /&gt;
 sub&lt;br /&gt;
 myUtils_HeizungUpDownNotify($$)&lt;br /&gt;
 {&lt;br /&gt;
   my($DEVICE,$VALUE) = @_;&lt;br /&gt;
  &lt;br /&gt;
   return if( $VALUE == 0 );&lt;br /&gt;
  &lt;br /&gt;
   my $at = &amp;quot;triggerHeizungUpDown_$DEVICE&amp;quot;;&lt;br /&gt;
   CommandDelete(undef, $at) if( defined($defs{$at}) );&lt;br /&gt;
   CommandDefine(undef,&lt;br /&gt;
                  &amp;quot;$at at +00:00:03 &amp;quot;&lt;br /&gt;
                  .&amp;quot;{my \$v = ReadingsVal(\&amp;quot;$DEVICE\&amp;quot;,\&amp;quot;desired-new\&amp;quot;,undef);&amp;quot;&lt;br /&gt;
                  .&amp;quot;fhem(\&amp;quot;set $DEVICE desired-temp \$v\&amp;quot;) if( \$v );&amp;quot;&lt;br /&gt;
                  .&amp;quot;fhem(\&amp;quot;setreading $DEVICE desired-new 00\&amp;quot;);}&amp;quot; );&lt;br /&gt;
  &lt;br /&gt;
   return undef;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
| Dieser Teil kommt in die [[99_myUtils_anlegen|99_myUtils.pm]]: Hiermit werden die Icons zum Ändern der gewünschten Temperatur dargestellt und im Bereich &amp;gt;=18 und &amp;lt;= 24 Grad anklickbar gemacht. Zwischen den Pfeilen wird der gerade eingestellte Wert angezeigt. Wenn dieser drei Sekunden nicht mehr geändert wurde wird die desired-temp auf diesen Wert gesetzt und die Anzeige zwischen den Pfeilen ausgeblendet.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Dynamische Inhalte ===&lt;br /&gt;
[[Datei:rgDynamic-1.png|mini|450px|readingsGroup mit umschaltbarem Inhalt 1]]&lt;br /&gt;
[[Datei:rgDynamic-2.png|mini|450px|readingsGroup mit umschaltbarem Inhalt 2]]&lt;br /&gt;
Es ist möglich, den in einer readingsGroup dargestellten Inhalt dynamisch von zusätzlichen Bedingungen abhängig zu machen. Im folgenden Beispiel lässt sich&lt;br /&gt;
einstellen, dass nur die Devices angezeigt werden, die einen bestimmten Zustand (hier: on/off, open/tilted/closed) haben. Hier wird zum Umschalten ein dummy, der direkt über der readingsGroup dargestellt wird, verwendet. Über das links und/oder commands lässt sich auch eine Darstellung erzeugen, bei der das Umschalten direkt innerhalb der readingsGroup möglich ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define LXrg dummy&lt;br /&gt;
attr LXrg group -&lt;br /&gt;
attr LXrg setList mode1:on,off mode2:open,closed,tilted&lt;br /&gt;
attr LXrg stateFormat 1=mode1 2=mode2&lt;br /&gt;
attr LXrg webCmd mode1:mode2&lt;br /&gt;
&lt;br /&gt;
define rg readingsGroup Window.*:state Light.*:state&lt;br /&gt;
attr rg group -&lt;br /&gt;
attr rg valueFormat { return $VALUE if ( $VALUE eq ReadingsVal(&amp;quot;LXrg&amp;quot;,&amp;quot;mode1&amp;quot;,&amp;quot;&amp;quot;) || $VALUE eq ReadingsVal(&amp;quot;LXrg&amp;quot;,&amp;quot;mode2&amp;quot;,&amp;quot;&amp;quot;) );; return undef;;}&lt;br /&gt;
&lt;br /&gt;
define Watch_LX notify LX.*:.* {my $value = ReadingsVal($NAME,&#039;state&#039;,&#039;&#039;);;;;fhem(&amp;quot;setreading $NAME $value&amp;quot;)}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable Button am Beispiel eines WeekdayTimer ===&lt;br /&gt;
Dieses Beispiel zeigt die Anwendung einer readingsGroup, um im Frontend einen Enable/Disable Button für ein Objekt darzustellen. Für den WeekdayTimer gibt es hier spezielle Erweiterungen (set Routinen, um das disable Attribut zu setzen, Reading &amp;quot;disabled&amp;quot;). Es gibt aber auch eine allgemeinere Variante (siehe [http://forum.fhem.de/index.php/topic,23655.msg169141.html#msg169141 diesen Forumsbeitrag]) für alle Objekte, die das FHEM Attribut &amp;quot;disable&amp;quot; unterstützen.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Definition !! Erläuterungen &lt;br /&gt;
|-&lt;br /&gt;
| colspan=2 | [[Datei:rg_scheduling.png|thumb|500px|links|Enable/Disable Button]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; |&amp;lt;code&amp;gt;define rg_Timer_Wasser readingsGroup timer_Wasser_..:disabled,+DEF,&amp;lt;{rg_timer_Wasser_show_conditional($DEVICE,&amp;quot;nextUpdate&amp;quot;)}@disabled&amp;gt;,&amp;lt;{rg_timer_Wasser_show_conditional($DEVICE,&amp;quot;nextValue&amp;quot;)}@disabled&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Definition der angezeigten Readings. Das Reading disabled wird mit den u.a. Attributen zum Button, +DEF zeigt die Definition, d.h. die Schaltzeiten, des Timers an. Die Readings nextUpdate und nextValue sollen nur angezeigt werden, falls der Timer aktiv ist. Hierfür sorgt eine Routine &amp;lt;code&amp;gt;rg_timer_Wasser_show_conditional&amp;lt;/code&amp;gt;, welche in der 99_myUtils.pm definiert wird. Das abschließende @disabled sorgt dafür, daß der LongPoll Mechanismus die Anzeige sofort ändert, wenn der Button betätigt wird. &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr rg_Timer_Wasser valueFormat  { if ( $READING =~ m/.*DEF/ ) { my @text = split(&amp;quot; &amp;quot;, $VALUE); shift @text; return join(&amp;quot; &amp;quot;, @text) }}&amp;lt;/code&amp;gt;&lt;br /&gt;
| Der Name des Timers wird aus dem interal Reading &amp;quot;+DEF&amp;quot; vorne abgeschnitten. Damit werden nur die definierten Schaltpunkte angezeigt. &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr rg_Timer_Wasser valueIcon { &#039;disabled.0&#039; =&amp;gt; &#039;Restart&#039;, &#039;disabled.1&#039; =&amp;gt; &#039;Shutdown&#039; }&amp;lt;/code&amp;gt;&lt;br /&gt;
| Die beiden Zustände für den Button werden durch zwei Standard-Icons angezeigt.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr rg_Timer_Wasser commands  { &#039;disabled.0&#039; =&amp;gt; &#039;set $DEVICE disable&#039;, &#039;disabled.1&#039; =&amp;gt; &#039;set $DEVICE enable&#039; }&amp;lt;/code&amp;gt;&lt;br /&gt;
| Toggle-Funktion für den Button. Wenn der Timer aktiv (&amp;quot;disabled.0&amp;quot;) sorgt ein Klick auf den Button, daß der Timer deaktiviert wird (&amp;quot;set $DEVICE disable&amp;quot;).&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;&lt;br /&gt;
sub rg_timer_Wasser_show_conditional($$)&lt;br /&gt;
{&lt;br /&gt;
  my ($DEVICE,$READING) = @_;&lt;br /&gt;
  return ( ReadingsVal($DEVICE, &amp;quot;disabled&amp;quot;, &amp;quot;1&amp;quot;) eq &amp;quot;0&amp;quot; )? &lt;br /&gt;
     ReadingsVal($DEVICE, $READING, &amp;quot;reading_undef&amp;quot;) : &amp;quot;disabled&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
| Dieser Teil kommt in die [[99_myUtils_anlegen|99_myUtils.pm]]: Hiermit wird das übergebene Reading des Timers nur angezeigt, wenn der Timer aktiv ist. Andernfalls wird der String &amp;quot;disabled&amp;quot; stattdessen angezeigt.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Links und Trigger ==&lt;br /&gt;
[[Datei:rgPCA-detail.png|mini|400px|readingsGroup mit Link]]&lt;br /&gt;
Das PCA301 Beispiel oben lässt sich mit einem ans Ende des define angehängten &lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;{appendTrigger($DEVICE,&amp;quot;clear&amp;quot;,&amp;quot;Alle löschen&amp;quot;)}&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
und der folgenden appendTrigger Definition in 99_myUtils.pm um einen Link erweitern, der ein Event auslöst, an das z.B. ein notify gehängt werden kann, um die Verbrauchszähler der PCA301 Dosen zurückzusetzen. &lt;br /&gt;
:&amp;lt;code&amp;gt;define clearVerbrauch notify Verbrauch:clear set TYPE=PCA301 clear&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;use vars qw($FW_ME);&lt;br /&gt;
use vars qw($FW_subdir);&lt;br /&gt;
sub&lt;br /&gt;
appendTrigger($$$)&lt;br /&gt;
{&lt;br /&gt;
  my ($name,$trigger,$label) = @_; &lt;br /&gt;
&lt;br /&gt;
  my $ret .= &amp;quot;&amp;lt;/table&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  my $link = &amp;quot;cmd=trigger $name $trigger&amp;quot;;&lt;br /&gt;
  my $txt = &amp;quot;&amp;lt;a onClick=\&amp;quot;FW_cmd(&#039;$FW_ME$FW_subdir?XHR=1&amp;amp;$link&#039;)\&amp;quot;&amp;gt;$label&amp;lt;/a&amp;gt;&amp;quot;;&lt;br /&gt;
  $ret .= &amp;quot;&amp;lt;td colspan=\&amp;quot;99\&amp;quot;&amp;gt;&amp;lt;div style=\&amp;quot;cursor:pointer;color:#888888;text-align:right\&amp;quot;&amp;gt;$txt&amp;lt;/div&amp;gt;&amp;lt;/td&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  return ($ret,0);&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein weiteres Beispiel für &#039;custom links und trigger&#039; findet sich im  [http://forum.fhem.de/index.php/topic,14425.msg109383.html#msg109383 Forum]: dort wird damit eine readingsGroup dynamisch umgeschaltet, um nur die eingeschalteten, nur die ausgeschalteten oder alle Lampen anzuzeigen.&lt;br /&gt;
&lt;br /&gt;
== Sonstiges ==&lt;br /&gt;
Mit &lt;br /&gt;
:&amp;lt;code&amp;gt;attr &amp;lt;device&amp;gt; style style=&amp;quot;border:0px;background:none;box-shadow:none&amp;quot;&amp;lt;/code&amp;gt; &lt;br /&gt;
lässt sich der Rahmen um eine readingsGroup entfernen, wenn sie in einer group verwendet wird und der doppelte Rahmen stört.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
[[Kategorie:Code Snippets]]&lt;/div&gt;</summary>
		<author><name>Tpm88</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:Rg_scheduling.png&amp;diff=6544</id>
		<title>Datei:Rg scheduling.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:Rg_scheduling.png&amp;diff=6544"/>
		<updated>2014-06-12T11:44:46Z</updated>

		<summary type="html">&lt;p&gt;Tpm88: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tpm88</name></author>
	</entry>
</feed>