<?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=Fhainz</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=Fhainz"/>
	<link rel="alternate" type="text/html" href="http://wiki.fhem.de/wiki/Spezial:Beitr%C3%A4ge/Fhainz"/>
	<updated>2026-04-14T07:38:54Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=FTUI_Widget_Link&amp;diff=27279</id>
		<title>FTUI Widget Link</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=FTUI_Widget_Link&amp;diff=27279"/>
		<updated>2018-06-27T18:25:43Z</updated>

		<summary type="html">&lt;p&gt;Fhainz: /* CSS Klassen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Das [[{{PAGENAME}}|Link Widget]] ist ein Widget für [[FHEM Tablet UI]] mit dem ein Text-Link oder Button erstellt werden kann um Befehle an FHEM zu senden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:FTUI_Widget_Link_01.png&lt;br /&gt;
File:FTUI_Widget_Link_02.png&lt;br /&gt;
File:FTUI_Widget_Link_03.png&lt;br /&gt;
File:FTUI_Widget_Link_04.png&lt;br /&gt;
File:FTUI_Widget_Link_05.png&lt;br /&gt;
File:FTUI_Widget_Link_06.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Attribute==&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Attribut&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Standard-Wert&lt;br /&gt;
!Beispiel&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data-color&#039;&#039;&#039;||Farbe für Text oder Icon (RGB-Angabe oder Farbname)||orange||data-color=&amp;quot;#c0c0c0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data-background-color&#039;&#039;&#039;||Hintergrundfarbe des Links oder Icons (RGB-Angabe oder Farbname)||||data-background-color=&amp;quot;blue&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data-border-color&#039;&#039;&#039;||Farbe des Rahmens (RGB-Angabe oder Farbname)||||data-border-color=&amp;quot;#ff0000&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data-icon-left&#039;&#039;&#039;||Name des linken Icons||||data-icon-left=&amp;quot;mi-stop&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data-icon-right&#039;&#039;&#039;||Name des rechten Icons||||data-icon-right=&amp;quot;mi-play_circle_outline&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data-width&#039;&#039;&#039;||Breite des Links oder Icons||auto||data-width=&amp;quot;50px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data-height&#039;&#039;&#039;||Höhe des Links oder Icons||auto||data-height=&amp;quot;3em&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data-url&#039;&#039;&#039;||URL zu der verlinkt wird||||data-url=&amp;quot;content-1.html&amp;quot;&amp;lt;br&amp;gt;data-url=&amp;quot;&amp;lt;nowiki&amp;gt;https://fhem.de&amp;lt;/nowiki&amp;gt;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data-get&#039;&#039;&#039;||Name des Readings von dem die URL gelesen werden soll||||data-get=&amp;quot;URL&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data-url-xhr&#039;&#039;&#039;||URL, mit der der Verweis im Hintergrund aufgerufen werden kann||||data-url-xhr=&amp;quot;&amp;lt;nowiki&amp;gt;http://webaradio/control?next&amp;lt;/nowiki&amp;gt;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data-fhem-cmd&#039;&#039;&#039;||FHEM Befehl, der ausgeführt werden soll||||data-fhem-cmd=&amp;quot;SET Lampe ON&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data-load&#039;&#039;&#039;||Lädt den Inhalt einer mit &#039;&#039;data-url&#039;&#039; angegebenen Webseite in ein &#039;&#039;&amp;lt;div&amp;gt;&#039;&#039; Element und ermöglicht so z.B. eine Navigation ähnlich zum [[FTUI Widget Pagetab|Pagetab-Widget]]||||data-load=&amp;quot;#content-1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data-text-align&#039;&#039;&#039;||Ausrichtung des Textes &#039;left&#039;,&#039;center&#039;,&#039;right&#039;||||data-text-align=&amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data-active-pattern&#039;&#039;&#039;||[[Regulärer Ausdruck|RegEx]] mit der der ermittelt wird, ob der Link aktiv ist. Der Check wird gegen die aktuelle &amp;quot;document location&amp;quot; durchgeführt||||data-active-pattern=&amp;quot;.*page1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data-active-color&#039;&#039;&#039;||Farbe des Textes oder Icons wenn das &amp;quot;active-pattern&amp;quot; zutrifft||wie data-color||data-active-color=&amp;quot;#123456&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data-active-background-color&#039;&#039;&#039;||Hintergrundfarbe des Textes oder Icons wenn das &amp;quot;active-pattern&amp;quot; zutrifft||same as data-background-color||data-active-background-color=&amp;quot;yellow&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data-active-border-color&#039;&#039;&#039;||Farbe des Rahmens wenn das &amp;quot;active-pattern&amp;quot; zutrifft||wie data-border-color||data-active-border-color=&amp;quot;grey&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;data-fade-duration&#039;&#039;&#039;||Fade-Dauer beim Umschalten zur nächsten Seite (X ms/slow/fast)||slow||data-fade-duration=&amp;quot;100ms&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==CSS Klassen==&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Klasse!!Beschreibung&lt;br /&gt;
{{FTUI Klasse|round}}{{FTUI Klasse|square}}{{FTUI Klasse|blank}}{{FTUI Klasse|nocache}}{{FTUI Klasse|prefetch}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Beispiele==&lt;br /&gt;
===Link ohne Icon===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;link&amp;quot;&lt;br /&gt;
     data-color=&amp;quot;blue&amp;quot;&lt;br /&gt;
     data-url=&amp;quot;#link.html&amp;quot;&amp;gt;LINK&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[File:FTUI_Widget_Link_04.png]]&lt;br /&gt;
&lt;br /&gt;
===Button-ähnlicher Link===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;link&amp;quot;&lt;br /&gt;
     class=&amp;quot;round&amp;quot;&lt;br /&gt;
     data-color=&amp;quot;grey&amp;quot;&lt;br /&gt;
     data-border-color=&amp;quot;grey&amp;quot;&lt;br /&gt;
     data-icon=&amp;quot;fa-server&amp;quot;&amp;gt;Details&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[File:FTUI_Widget_Link_01.png]]&lt;br /&gt;
&lt;br /&gt;
===Großer Button-ähnlicher Link zum Absenden eines FHEM-Befehls===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;link&amp;quot;&lt;br /&gt;
     class=&amp;quot;round&amp;quot;&lt;br /&gt;
     data-width=&amp;quot;130&amp;quot; data-height=&amp;quot;50&amp;quot;&lt;br /&gt;
     data-color=&amp;quot;white&amp;quot;&lt;br /&gt;
     data-background-color=&amp;quot;red&amp;quot;&lt;br /&gt;
     data-icon=&amp;quot;fa-lock&amp;quot;&lt;br /&gt;
     data-fhem-cmd=&amp;quot;set AllDoors locked&amp;quot;&amp;gt;Lock Doors&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[File:FTUI_Widget_Link_02.png]]&lt;br /&gt;
&lt;br /&gt;
===Button-ähnlicher Link zum Aufrufen einer URL===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;link&amp;quot;&lt;br /&gt;
     data-width=&amp;quot;150&amp;quot;&lt;br /&gt;
     data-icon-left=&amp;quot;fa-video-camera&amp;quot;&lt;br /&gt;
     data-color=&amp;quot;green&amp;quot;&lt;br /&gt;
     data-url=&amp;quot;#cam.html&amp;quot;&amp;gt;View cam&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[File:FTUI_Widget_Link_03.png]]&lt;br /&gt;
&lt;br /&gt;
===Rechteckiger Button===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;link&amp;quot;&lt;br /&gt;
     data-width=&amp;quot;130&amp;quot; data-height=&amp;quot;50&amp;quot;&lt;br /&gt;
     data-color=&amp;quot;white&amp;quot;&lt;br /&gt;
     data-background-color=&amp;quot;green&amp;quot;&lt;br /&gt;
     data-icon=&amp;quot;fa-refresh&amp;quot;&lt;br /&gt;
     data-fhem-cmd=&amp;quot;update all https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt&amp;quot;&amp;gt;Update FTUI&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[File:FTUI_Widget_Link_05.png]]&lt;br /&gt;
&lt;br /&gt;
===Button mit mehrzeiligem Text===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;link&amp;quot; class=&amp;quot;round medium&amp;quot;&lt;br /&gt;
     data-width=&amp;quot;230&amp;quot;&lt;br /&gt;
     data-color=&amp;quot;white&amp;quot;&lt;br /&gt;
     data-background-color=&amp;quot;#717453&amp;quot;&lt;br /&gt;
     data-icon-left=&amp;quot;fa-coffee&amp;quot;&lt;br /&gt;
     data-icon-right=&amp;quot;fa-angle-right&amp;quot;&lt;br /&gt;
     data-text-align=&amp;quot;left&amp;quot;&lt;br /&gt;
     data-url=&amp;quot;#break.html&amp;quot;&amp;gt;This Text is medium&amp;lt;br/&amp;gt;and contains line&amp;lt;br/&amp;gt;breaks&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[File:FTUI_Widget_Link_06.png]]&lt;br /&gt;
&lt;br /&gt;
===Navigationsmenü mit Link-Buttons===&lt;br /&gt;
Dafür werden mehrere HTML-Seiten benötigt. Zum einen eine &amp;quot;Haupt&amp;quot;-Seite, auf der die Links dargestellt werden. Zum anderen die jeweiligen Unterseiten, die auf der Haupt-Seite angezeigt werden sollen. Die Unterseite, die beim ersten Aufruf der Hauptseite geladen werden soll, kann mit &#039;&#039;class=&amp;quot;default&amp;quot;&#039;&#039; markiert werden (im Beispiel ist das &#039;&#039;schlafzimmer.html&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Die Hauptseite könnte wie folgt aussehen:&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width: 100%&amp;quot;&lt;br /&gt;
!style=&amp;quot;text-align: left;&amp;quot;|index.html&lt;br /&gt;
|-&lt;br /&gt;
| class=&amp;quot;mw-collapsible-content&amp;quot; |&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
   [...]&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;panel&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;page&amp;quot; id=&amp;quot;schlafzimmer&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;page&amp;quot; id=&amp;quot;badezimmer&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;div id=&amp;quot;menu&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;default&amp;quot;&lt;br /&gt;
         data-type=&amp;quot;link&amp;quot;&lt;br /&gt;
         data-load=&amp;quot;#schlafzimmer&amp;quot;&lt;br /&gt;
         data-url=&amp;quot;#schlafzimmer.html&amp;quot;&lt;br /&gt;
         data-active-color=&amp;quot;#419aff&amp;quot;&lt;br /&gt;
         data-active-pattern=&amp;quot;.*#schlafzimmer.html&amp;quot;&amp;gt;Schlafzimmer&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;link&amp;quot;&lt;br /&gt;
         data-load=&amp;quot;#badezimmer&amp;quot;&lt;br /&gt;
         data-url=&amp;quot;#badezimmer.html&amp;quot;&lt;br /&gt;
         data-active-color=&amp;quot;#419aff&amp;quot;&lt;br /&gt;
         data-active-pattern=&amp;quot;.*#badezimmer.html&amp;quot;&amp;gt;Badezimmer&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
In den jeweiligen Unterseiten finden sich dann die Inhalte und Widgets, die für den jeweiligen Raum angezeigt werden sollen.&lt;br /&gt;
Hier ein Beispiel für eine Unterseite. Wichtig ist die richtige Benennung der ersten &#039;&#039;&amp;lt;nowiki&amp;gt;&amp;lt;div&amp;gt;&amp;lt;/nowiki&amp;gt;&#039;&#039;-Elements (&#039;&#039;id=&amp;quot;...&amp;quot;&#039;&#039;) analog zum Attribut &#039;&#039;data-load&#039;&#039; der Hauptseite ohne der Raute (#):&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width: 100%&amp;quot;&lt;br /&gt;
!style=&amp;quot;text-align: left;&amp;quot;|schlafzimmer.html&lt;br /&gt;
|-&lt;br /&gt;
| class=&amp;quot;mw-collapsible-content&amp;quot; |&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;page&amp;quot; id=&amp;quot;schlafzimmer&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div id=&amp;quot;panel&amp;quot;&amp;gt;&lt;br /&gt;
      [...]&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:FTUI_Widget_Link_07.png|thumb|none|left|200px|Beispiel für eine Navigation mit dem Link-Widget]]&lt;br /&gt;
&lt;br /&gt;
==Weblinks==&lt;br /&gt;
*[https://knowthelist.github.io/fhem/tablet/demo_link.html Weitere Beispiele]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:FHEM Tablet UI|Link]]&lt;/div&gt;</summary>
		<author><name>Fhainz</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=FHEM_Tablet_UI&amp;diff=14385</id>
		<title>FHEM Tablet UI</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=FHEM_Tablet_UI&amp;diff=14385"/>
		<updated>2016-02-27T11:37:05Z</updated>

		<summary type="html">&lt;p&gt;Fhainz: /* Widgets -- Konfiguration */ weekdaytimer-widget eingefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=Oberfläche für Fhem&lt;br /&gt;
|ModType=x&lt;br /&gt;
|ModFTopic=34233&lt;br /&gt;
|ModForumArea=Frontends&lt;br /&gt;
|ModTechName=n.a.&lt;br /&gt;
|ModOwner=setstate ({{Link2FU|7023|Forum}})&lt;br /&gt;
}}&lt;br /&gt;
[[Datei:tablet_ui.png|200px|thumb|right|Fhem Tablet UI]]&lt;br /&gt;
FHEM Tablet UI ist ein leichtgewichtiges aber funktionsreiches Framework zum Steuern und Überwachen von in Fhem integrierten Geräten. Zahlreiche Widgets können sehr flexibel und leicht per HTML Code konfiguriert werden.&lt;br /&gt;
&lt;br /&gt;
In dieser Anleitung wird die Installation und Konfiguration des FHEM Tablet UI beschrieben.&lt;br /&gt;
&lt;br /&gt;
{{Todo|alle Widgets hier übernehmen, Übersetzung, weitere Beispiele aus dem Forum einfügen (evtl. mit Link!?)}} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen ==&lt;br /&gt;
Dieses User Interface für Tablets benötigt &amp;lt;u&amp;gt;keine&amp;lt;/u&amp;gt; zusätzliche Frameworks, wie PHP, MySQL oder SmartVisu.&lt;br /&gt;
&lt;br /&gt;
Voraussetzungen ist nur ein Standard-Fhem mit HTTPSRV Modul und ein beliebiger Standard-Browser  mit Javascript auf einem beliebigen Betriebssystem oder Webviewcontrol.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
* Im Befehls-Eingabefeld eingeben: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;update all https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Im Befehls-Eingabefeld eingeben: &amp;lt;code&amp;gt;define TABLETUI HTTPSRV ftui/ ./www/tablet Tablet-UI&amp;lt;/code&amp;gt;&lt;br /&gt;
* Im Verzeichnis ./fhem/www/tablet die Datei index-example.html in index.html umbenennen oder eine neue index.html erzeugen und diese index.html wie nachfolgend beschrieben editieren.&lt;br /&gt;
&lt;br /&gt;
Das UI ist über den Link &amp;quot;Tablet-UI&amp;quot; auf der Fhem-Hauptseite oder durch Direktaufruf der URL &amp;quot;&amp;lt;nowiki&amp;gt;http://&amp;lt;Fhem-url&amp;gt;:8083/fhem/tablet/index.html&amp;lt;/nowiki&amp;gt;&amp;quot; zu erreichen.&lt;br /&gt;
&lt;br /&gt;
Hinweise zu einer manuellen Installation und weitere Infos sind auf der Projektseite https://github.com/knowthelist/fhem-tablet-ui zu finden.&lt;br /&gt;
&lt;br /&gt;
== Update ==&lt;br /&gt;
* Prüfen der Änderungen seit dem letzten Download/Update durch Eingabe von: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;update check https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Update des UI durch Eingabe von: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;update all https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Über &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;update add https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
kann seit dem 24.12.2015 die URL zum normalen Updatebefehl von FHEM hinzugefügt werden. Mit einen &amp;quot;update check&amp;quot; sieht man dann  gleich alle Updates aus beiden &amp;quot;Welten&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Weitere Widgets ==&lt;br /&gt;
&lt;br /&gt;
=== Widgets for Fhem-tablet-ui ===&lt;br /&gt;
Zusätzlich zu den bei der Installation des Tablet UI direkt zur Verfügung stehenden Widgets, gibt es eine weitere Widget-Quelle von nesges unter https://github.com/nesges/Widgets-for-fhem-tablet-ui. Die Widgets aus dieser Quelle müssen für eine Nutzung separat installiert werden.&lt;br /&gt;
&lt;br /&gt;
Dazu folgenden Befehl in die Fhem-Befehlszeile eingeben: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;update all https://raw.githubusercontent.com/nesges/Widgets-for-fhem-tablet-ui/master/controls_widgets-for-fhem-tablet-ui.txt&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Näheres zur Installation unter [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/Installation Wiki: Installation]. &lt;br /&gt;
&lt;br /&gt;
Die Dokumentation der einzelnen Widgets befindet sich ebenfalls [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki im Github-Wiki].&lt;br /&gt;
&lt;br /&gt;
== Konfiguration ==&lt;br /&gt;
Die Konfiguration der angezeigten Widgets erfolgt in der Datei &#039;&#039;&#039;index.html&#039;&#039;&#039; im Hauptordner &#039;tablet&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Metadaten-Konfiguration&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Refresh sofort, alle 15 Minuten ein voller Refresh (shortpoll) statt alle 30 Sekunden ein voller Refresh&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;meta name=&amp;quot;longpoll&amp;quot; content=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Drag&amp;amp;Drop deaktivieren&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;meta name=&#039;gridster_disable&#039; content=&#039;1&#039;&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Toast messages deaktivieren&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;meta name=&#039;toast&#039; content=&#039;1&#039;&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Größe des Basis-Rasters (data-sizey=1/data-sizex=1)&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;meta name=&amp;quot;widget_base_width&amp;quot; content=&amp;quot;116&amp;quot;&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;meta name=&amp;quot;widget_base_height&amp;quot; content=&amp;quot;131&amp;quot;&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Abstände der Gridsterelemente verkleinern:&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;meta name=&amp;quot;widget_margin&amp;quot; content=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Folgender Link sollte auskommentiert werden, solange es diese Datei noch nicht gibt, da diese immer wieder zu Problemen beim Laden der Seite führen kann:&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;/fhem/tablet/css/fhem-tablet-ui-user.css&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Layout und das Aussehen des UI kann durch die Klassen-Attribute beeinflusst werden. Verfügbare Klassen sind:&lt;br /&gt;
&lt;br /&gt;
container, left, right, cell, narrow, darker, big, bigger, small&lt;br /&gt;
&lt;br /&gt;
== Farbe ==&lt;br /&gt;
Es besteht die Möglichkeit, die Farbwerte in hexadezimaler Form oder als RGB-Wert anzugeben. Zum Beispiel: Hex: #A3CFA3 RBG: rgb(163, 207, 163).&lt;br /&gt;
&lt;br /&gt;
Knallige Farben wie #ff0000 für Rot oder #00ff00 für Grün sollten vermieden werden. Es ist besser unterhalb von #D0 (208) für die Grundfarben zu bleiben.&lt;br /&gt;
&lt;br /&gt;
Hilfreich bei der Suche nach den Farbwerten ist der color picker: http://www.w3schools.com/tags/ref_colorpicker.asp&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== CSS Class description ==&lt;br /&gt;
&lt;br /&gt;
Not all widgets support all classes&lt;br /&gt;
&lt;br /&gt;
* readonly : changing of state is not allowed&lt;br /&gt;
* wider : 25px extra space for the widget to the top&lt;br /&gt;
* narrow : shorter distant to the widget above&lt;br /&gt;
* w1x, w2x, w3x : set the widget to a fix width: 1x, 2x, 3x width&lt;br /&gt;
* mini : lowest diameter for volume widget&lt;br /&gt;
* small : font 80% size (label), small diameter for volume widget&lt;br /&gt;
* medium : font 120% size&lt;br /&gt;
* large : font 150% size&lt;br /&gt;
* big : font 200% size&lt;br /&gt;
* bigplus : font 270% size&lt;br /&gt;
* bigger : font 320% size&lt;br /&gt;
* bigger.thin : font 450% size&lt;br /&gt;
* grande : font 600% size&lt;br /&gt;
* gigantic: font 144px size + 120px line-height&lt;br /&gt;
* thin : font thin&lt;br /&gt;
* darker : forecolor in gray&lt;br /&gt;
* hue-tick : draw ticks in color range&lt;br /&gt;
* hue-front : draw handle in color range&lt;br /&gt;
* hue-back : draw background in color range&lt;br /&gt;
* dim-tick : draw ticks in brightness range&lt;br /&gt;
* dim-front : draw handle in brightness range&lt;br /&gt;
* dim-back : draw background in brightness range&lt;br /&gt;
* red : foreground color red&lt;br /&gt;
* green : foreground color green&lt;br /&gt;
* blue : foreground color blue&lt;br /&gt;
* doublebox-v : container to place 2 small widgets (e.g. switch) one above the other&lt;br /&gt;
* doublebox-h : container to place 2 small widgets (e.g. switch) side by side&lt;br /&gt;
* timestamp : deliver the date time for the reading instead the value&lt;br /&gt;
* inline : positioning elements in a row, no line break&lt;br /&gt;
* top-space : 15px extra on top (top-space-2x -&amp;gt; 30px; top-space-3x -&amp;gt; 45px)&lt;br /&gt;
* left-space : 15px extra on left (left-space-2x -&amp;gt; 30px; left-space-3x -&amp;gt; 45px)&lt;br /&gt;
* right-space : 15px extra on right (right-space-2x -&amp;gt; 30px; right-space-3x -&amp;gt; 45px)&lt;br /&gt;
* blink : blink animatation for label or symbol widget&lt;br /&gt;
* verticalLine : Vertikale Line am rechten Rand&lt;br /&gt;
&lt;br /&gt;
== Positioning ==&lt;br /&gt;
&lt;br /&gt;
*container : new box or new row&lt;br /&gt;
*col-x-y : new column with x/y of width (col-1-3,col-2-3,col-1-2,col-1-4,col-1-8,col-1-5,col-2-5,col-3-5,col-4-5)&lt;br /&gt;
*inline : positioning elements in a row, no line break&lt;br /&gt;
*top-space : 15px extra on top (top-space-2x -&amp;gt; 30px; top-space-3x -&amp;gt; 45px)&lt;br /&gt;
*left-space : 15px extra on left (left-space-2x -&amp;gt; 30px; left-space-3x -&amp;gt; 45px)&lt;br /&gt;
*right-space : 15px extra on right (right-space-2x -&amp;gt; 30px; right-space-3x -&amp;gt; 45px)&lt;br /&gt;
*top-narrow : -15px closer on top (top-narrow-2x -&amp;gt; -30px; top-narrow-10 -&amp;gt; -10px)&lt;br /&gt;
*centered : horizontal centered&lt;br /&gt;
*left-align : align text left&lt;br /&gt;
*right-align : align text right&lt;br /&gt;
*wider : 15px extra space for the widget all around&lt;br /&gt;
*narrow : shorter distant to the widget above&lt;br /&gt;
*fullsize : 100% in width and height&lt;br /&gt;
&lt;br /&gt;
== Widgets -- Konfiguration ==&lt;br /&gt;
&lt;br /&gt;
Teilweise dokumentierte Widgets:&lt;br /&gt;
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/button button]: Variante der push und switch Widgets, die entweder einen URL ansteuern oder einen Fhem-Befehl absetzen kann.&lt;br /&gt;
* [[#chart|chart]]: chart with similar capabilities as the FHEM plots &lt;br /&gt;
* checkbox:&lt;br /&gt;
* [[#circlemenu|circlemenu]]: Mehrere Widgets hinter einem Widget verborgen, trotz des &#039;circle&#039; im Namen kann das Menue jetzt auch horizontal oder vertikal ausgeklappt werden &lt;br /&gt;
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/clicksound clicksound]: Mit dem Widget &amp;quot;clicksound&amp;quot; können Sounds an Click-Events von Elementen gebunden werden. &lt;br /&gt;
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/clock clock]: Das Widget &amp;quot;clock&amp;quot; stellt eine einfach Uhr zur verfügung.&lt;br /&gt;
* colorwheel:&lt;br /&gt;
* daytimepicker:&lt;br /&gt;
* departure:&lt;br /&gt;
* [[#dimmer|dimmer]]: toogle button with a setter for on value&lt;br /&gt;
* eventmonitor:&lt;br /&gt;
* highchart:&lt;br /&gt;
* [[#homestatus|homestatus]]: selector for 4 states (1=home, 2=night, 3=away, 4=holiday)&lt;br /&gt;
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/iframe iframe]]: Widget zum Einbinden externer Inhalte in einem Iframe. &lt;br /&gt;
* [[#image|image]]: insert an image, the URL is given by a reading&lt;br /&gt;
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/itunes_artwork itunes_artwork]: itunes_artwork durchsucht die iTunes-Datenbank anhand eines Arrays von beliebigen Suchworten nach einem Cover-Artwork und zeigt dieses an. &lt;br /&gt;
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/javascript javascript]: Ermöglicht die Ausführung beliebigen Javascript-Codes aus einem Reading.&lt;br /&gt;
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/joinedlabel joinedlabel]: verbindet mehrere Readings zu einem Feld&lt;br /&gt;
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/klimatrend klimatrend]: wandelt Daten aus dem statistics-Modul in einen Pfeil um, der den aktuellen Trend anzeigt. &lt;br /&gt;
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/kodinowplaying kodinowplaying]: zeigt Informationen zu grade in KODI gespielten Medien in Form eines Labels an.&lt;br /&gt;
* [[#label|label]]: ein state als Text anzeigen (Farbe einstellbar)&lt;br /&gt;
* [[#level|level]]: vertical/horizontal bar to show values between min/max value&lt;br /&gt;
* link:&lt;br /&gt;
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/mpdnowplaying mpdnowplaying]: zeigt Titelinformationen eines per MPD-Modul angebundenen Music Player Daemon an. &lt;br /&gt;
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/multistatebutton multistatebutton]: Variante des push-Widgets das den set-Befehl abhängig vom gelesenen Status ändert.&lt;br /&gt;
* [[#pagetab|pagetab]]: Element to smoothly exchange the whole page with another page&lt;br /&gt;
* pagebutton:&lt;br /&gt;
* [[#playstream|playstream]]: Abspielen eines Webradio-Streams per Button&lt;br /&gt;
* [[#popup|popup]]: a popup dialog which open on click on another widget &lt;br /&gt;
* [[#progress|progress]]: round symbolic display for percent values&lt;br /&gt;
* [[#push|push]]: send any command to Fhem e.g. up / down&lt;br /&gt;
* range:&lt;br /&gt;
* readingsgroup:&lt;br /&gt;
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/reload reload]: auslösen eine Pagereloads&lt;br /&gt;
* [[#rotor|rotor]]: Umschalten von zwei oder mehr Widgets an einer Position&lt;br /&gt;
* [[#select|select]]: Combobox to provide a list for selection&lt;br /&gt;
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/settimer settimer]: zum anzeigen und einstellen einer Uhrzeit.&lt;br /&gt;
* [[#simplechart|simplechart]]: simple XY line chart for one value (reads directly from Fhem log file) &lt;br /&gt;
* [[#slider|slider]]: vertical slider to select between min/max value&lt;br /&gt;
* spinner:&lt;br /&gt;
* swiper:&lt;br /&gt;
* [[#switch|switch]]: Toggle any command to Fhem (e.g. on / off)&lt;br /&gt;
* [[#symbol|symbol]]: State als Symbol darstellen (z.B. Fenster offen)&lt;br /&gt;
* [[#thermostat|thermostat]]: dial for heater thermostates to set desired value and show current value&lt;br /&gt;
* [[#volume|volume]]: dial to set a single value (e.g. 0-60)&lt;br /&gt;
* [[#weather|weather]]: insert an icon or image, represending a weather literal&lt;br /&gt;
* [https://github.com/svenson08/ftui-weekdaytimer-widget weekdaytimer]: Visualisierung des [[WeekdayTimer]] Modul&lt;br /&gt;
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/wind_direction wind_direction]: Zeigt die Windrichtung auf einer Windrose an. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ein Demo der Widgets findet ihr [http://knowthelist.github.io/fhem/tablet/demo_widgets.html Hier].&lt;br /&gt;
----------------------------------&lt;br /&gt;
&lt;br /&gt;
Für alle Widgets gilt:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+allgemeine Attribute&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-type&lt;br /&gt;
|Widget-Typ&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-device&lt;br /&gt;
|Fhem-Name des Gerätes (mit dem Befehl &#039;list&#039; bekommt man im Fhem die kpl. Liste)&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |class&lt;br /&gt;
|CSS-Klassen für Aussehen und Formatierung des Widgets&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;chart&amp;quot;&amp;gt;&#039;&#039;&#039;CHART&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!HTML Attribut&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Default Wert&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-logdevice&lt;br /&gt;
|name of the logdevice (e.g. FileLog_WohnzimmerHeizung) or array of names if more than one graph shall be displayed&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-logfile&lt;br /&gt;
|name of the logfile (e.g. WohnzimmerHeizung-2015.log) or or array of names if more than one graph shall be displayed&lt;br /&gt;
|&#039;-&#039; or omitting this data means current logfile&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-columnspec&lt;br /&gt;
|definition for how to find the values (e.g. &amp;quot;4:meas.*:1:int&amp;quot;) or or array of columnspecs if more than one graph shall be displayed&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-style&lt;br /&gt;
|name of the graph style to be used (e.g. &#039;SVGplot l0&#039; or &#039;ftui l0dash&#039;) or or array of styles if more than one graph shall be displayed using different stlyes. The standard fhem plot styles can be used furthermore there are some more predefined styles existing (details see css file). Own styles can be specified e.g. in the fhem-table-ui-user.css file.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-ptype&lt;br /&gt;
|name of the plot type (e.g. &#039;lines&#039; or &#039;fa-cog&#039;) or or array of plottypes if more than one graph shall be displayed. All fhem plot styles are supported. Additionally it is possible to specify symbols (currently supported are font awesome (&#039;fa-...&#039;), open automation (&#039;oa-...&#039;) and fhem symbols (&#039;fs-...&#039;))&lt;br /&gt;
|&#039;lines&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-uaxis&lt;br /&gt;
|name of the axis to be used (&#039;primary&#039; or &#039;secondary&#039;) or or array of axis&#039; to be used if more than one graph shall be displayed. The &#039;primary&#039; axis is labelled on the left side, the &#039;secondary&#039; axis is labelled on the right side&lt;br /&gt;
|&#039;primary&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-legend&lt;br /&gt;
|caption of the graph (used in the legend and at the cursor) or an array of legend texts if more than one graph shall be displayed.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-minvalue&lt;br /&gt;
|min Y value to Show or an array of values for dynamic minY for primary axis. A value of &#039;auto&#039; means that the value is calculated from the data displayed dynamically&lt;br /&gt;
|10&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-minvalue_sec&lt;br /&gt;
|min Y value to Show or an array of values for dynamic minY for secondary axis. A value of &#039;auto&#039; means that the value is calculated from the data displayed dynamically&lt;br /&gt;
|&#039;auto&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-maxvalue&lt;br /&gt;
|max Y value to Show or an array of values for dynamic maxY for primary axis. A value of &#039;auto&#039; means that the value is calculated from the data displayed dynamically&lt;br /&gt;
|30&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-maxvalue_sec&lt;br /&gt;
|max Y value to Show or an array of values for dynamic maxY for secondary axis. A value of &#039;auto&#039; means that the value is calculated from the data displayed dynamically&lt;br /&gt;
|&#039;auto&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-yticks&lt;br /&gt;
|value distance between Y tick lines (related to primary axis). A value of &#039;auto&#039; means that the value is calculated from the data displayed dynamically.&lt;br /&gt;
|&#039;auto&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-xticks&lt;br /&gt;
|time range between each X tick lines (in minutes). A value of &#039;auto&#039; means that the value is calculated from the data displayed dynamically&lt;br /&gt;
|&#039;auto&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-daysago_start&lt;br /&gt;
|number of days back from now for the start of the plot (0 means the plot starts from today 0:00). Additionally the x-axis start value can be set here unsing standard data formats like (&#039;2013-10-23&#039;), the time portion of the string is only used when &amp;lt;code&amp;gt;data-nofulldays&amp;lt;/code&amp;gt; is &#039;true&#039;.&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-daysago_end&lt;br /&gt;
|number of days back from now for the end of the plot (-1 means the plot ends today 24:00). Additionally the x-axis end value can be set here unsing standard data formats like (&#039;2013-10-23&#039;), the time portion of the string is only used when &amp;lt;code&amp;gt;data-nofulldays&amp;lt;/code&amp;gt; is &#039;true&#039;.&lt;br /&gt;
|-1&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-nofulldays&lt;br /&gt;
|switch to activate/deactivate rounding of the xaxis start and end values to full days (&#039;true&#039; or &#039;false&#039;)&lt;br /&gt;
|&#039;false&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-ytext&lt;br /&gt;
|text to be shown besides the primary y axis.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-ytext_sec&lt;br /&gt;
|text to be shown besides the secondary y axis.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-yunit&lt;br /&gt;
|unit of the value to show beside of each Y ticks for primary y axis.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-crosshair&lt;br /&gt;
|switch to activate/deactivate the crosshair cursor (&#039;true&#039; or &#039;false&#039;)&lt;br /&gt;
|&#039;false&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-cursorgroup&lt;br /&gt;
|number to define coupling of the crosshair cursor. The cursors of all charts having the same number are coupled and move together.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-scrollgroup&lt;br /&gt;
|number to define coupling of the scrolling (shift and zoom). All charts having the same number are scrolled (shifted and zoomed) together.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-showlegend&lt;br /&gt;
|switch to activate/deactivate the initial display of the legend window (&#039;true&#039; or &#039;false&#039;)&lt;br /&gt;
|&#039;false&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-yunit_sec&lt;br /&gt;
|unit of the value to show beside of each Y ticks for secondary y axis.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-width&lt;br /&gt;
|fixed size for width (in&amp;amp;nbsp;% or px)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-height&lt;br /&gt;
|fixed size for height (in&amp;amp;nbsp;% or px)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |class&lt;br /&gt;
|fullsize, noticks, nobuttons&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;data-logfile&amp;lt;/code&amp;gt; can be omitted in this case the default value &amp;quot;-&amp;quot; will be used. This means that the current logfile is going to be used.&lt;br /&gt;
&lt;br /&gt;
There are several buttons that control the dynamic behaviour of the chart. The &amp;lt;-, -&amp;gt;, + and - buttons shift and zoom the displayed data. The &amp;quot;legend&amp;quot; and &amp;quot;cursor&amp;quot; buttons are switching on and off the display of the legend window and the crosshair cursor respectively.&lt;br /&gt;
&lt;br /&gt;
When the legend window is displayed, a click on the legend text shows/hides the respective graph. The legend window can be dragged to other positions on desktop browsers (currently not yet working for iOS and Android).&lt;br /&gt;
&lt;br /&gt;
The crosshair cursor currently only works dynamically on desktop browsers. On iOS and Android you have to tap on the screen to set the cursor to a new position.&lt;br /&gt;
&lt;br /&gt;
There is a number of css styles that control the visible appearance of the chart. The following classes are supported:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!CSS class name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
!.chart-background&lt;br /&gt;
|Color etc. for the chart background&lt;br /&gt;
|-&lt;br /&gt;
!.text.axes&lt;br /&gt;
|Font and color for the chart axes&lt;br /&gt;
|-&lt;br /&gt;
!.buttons&lt;br /&gt;
|Size and color for the buttons (shift etc.)&lt;br /&gt;
|-&lt;br /&gt;
!.gridlines&lt;br /&gt;
|Size and color for gridlines generally&lt;br /&gt;
|-&lt;br /&gt;
!.xaxis&lt;br /&gt;
|Font, size and color for xaxis&lt;br /&gt;
|-&lt;br /&gt;
!.yaxis&lt;br /&gt;
|Font, size and color for yaxis&lt;br /&gt;
|-&lt;br /&gt;
!.xticks&lt;br /&gt;
|Font, size and color for xticks&lt;br /&gt;
|-&lt;br /&gt;
!.yticks&lt;br /&gt;
|Font, size and color for yticks&lt;br /&gt;
|-&lt;br /&gt;
!.crosshair&lt;br /&gt;
|Font, size and color (foreground/background) for the crosshair cursor&lt;br /&gt;
|-&lt;br /&gt;
!.caption&lt;br /&gt;
|Font, size and color for text buttons for legend and cursor switching&lt;br /&gt;
|-&lt;br /&gt;
!.legend&lt;br /&gt;
|Font, size and background color for legend window&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[#Beispiel_chart|Link zu einem Beispiel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;circlemenu&amp;quot;&amp;gt;&#039;&#039;&#039;CIRCLEMENU&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!HTML Attribut&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Default Wert&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-item-diameter&lt;br /&gt;
|diameter of the circle&lt;br /&gt;
|52&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-circle-radius&lt;br /&gt;
|radius of each item, in pixel&lt;br /&gt;
|70&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-direction&lt;br /&gt;
|position of the items in relation to the center&lt;br /&gt;
|&#039;full&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-close-after&lt;br /&gt;
|closing time of the circle-menu&lt;br /&gt;
|(item-count + 1s) or a minimum of 4s&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |class&lt;br /&gt;
|keepopen&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Optionen für data-direction: top | right | bottom | left | top-right | top-left | bottom-right | bottom-left | top-half | right-half | bottom-half | left-half | full | vertical | horizontal&lt;br /&gt;
&lt;br /&gt;
[[#Beispiel_circlemenu|Link zu einem Beispiel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;dimmer&amp;quot;&amp;gt;&#039;&#039;&#039;DIMMER&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!HTML Attribut&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Default Wert&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get&lt;br /&gt;
|name of the reading to get from Fhem&lt;br /&gt;
|&#039;STATE&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get-on&lt;br /&gt;
|value for ON status to get&lt;br /&gt;
|&#039;on&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get-off&lt;br /&gt;
|value for OFF status to get&lt;br /&gt;
|&#039;off&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-set&lt;br /&gt;
|(&amp;lt;command&amp;gt; &amp;lt;device&amp;gt; &amp;lt;reading&amp;gt; &amp;lt;value&amp;gt;) &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-set-on&lt;br /&gt;
|value for ON status to set&lt;br /&gt;
|value of data-get-on&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-set-off&lt;br /&gt;
|value for OFF status to set&lt;br /&gt;
|value of data-get-off&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-cmd&lt;br /&gt;
|name of the command (&amp;lt;command&amp;gt; &amp;lt;device&amp;gt; &amp;lt;value&amp;gt;) (e.g. setstate, set, setreading, trigger)&lt;br /&gt;
|&#039;set&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-dim&lt;br /&gt;
|name of the reading responsible for dim (&amp;lt;command&amp;gt; &amp;lt;device&amp;gt; &amp;lt;reading&amp;gt; &amp;lt;value&amp;gt;) &lt;br /&gt;
|value of data-get-on&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-icon&lt;br /&gt;
|name of the font-awesome icon&lt;br /&gt;
|fa-lightbulb-o&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[#Beispiel_dimmer|Link zu einem Beispiel]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;homestatus&amp;quot;&amp;gt;&#039;&#039;&#039;HOMESTATUS&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!HTML Attribut&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Default Wert&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get&lt;br /&gt;
|name of the reading to get from Fhem&lt;br /&gt;
|&#039;STATE&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-set&lt;br /&gt;
|command to send to Fhem (&amp;lt;code&amp;gt;set &amp;lt;device&amp;gt; &amp;lt;command&amp;gt; &amp;lt;value&amp;gt;&amp;lt;/code&amp;gt;)&lt;br /&gt;
|&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-alias&lt;br /&gt;
|array of fix names to show only in the UI as an alias to the real states&lt;br /&gt;
|&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-icons&lt;br /&gt;
|array of icons related to the data-get-on array&lt;br /&gt;
|&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-version&lt;br /&gt;
|name of the status model e.g. &#039;residents&#039;,&#039;roommate&#039;,&#039;guest&#039; &lt;br /&gt;
|(default NULL)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The default version has 4 states: &#039;1&#039;,&#039;2&#039;,&#039;3&#039;,&#039;4&#039; The default aliases are &#039;Home&#039;,&#039;Night&#039;,&#039;Away&#039;,&#039;Holiday&#039;; data-version=&#039;residents&#039; or &#039;roommate&#039; or &#039;guest&#039; has 5 states (&#039;home&#039;,&#039;asleep&#039;,&#039;absent&#039;,&#039;gone&#039;,&#039;gotosleep&#039;) They have these aliases &#039;Home&#039;,&#039;Night&#039;,&#039;Away&#039;,&#039;Holiday&#039;,&#039;Retire&#039;&lt;br /&gt;
&lt;br /&gt;
[[#Beispiel_homestatus|Link zu einem Beispiel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;image&amp;quot;&amp;gt;&#039;&#039;&#039;IMAGE&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!HTML Attribut&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Default Wert&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get&lt;br /&gt;
|name of the reading to get an URL from Fhem&lt;br /&gt;
|&#039;STATE&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-size&lt;br /&gt;
|width of the image in px or %, the height scales proportionally&lt;br /&gt;
|50%&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-url&lt;br /&gt;
|URL of the image to show (use data-url or data-device + data-get, not both)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-refresh&lt;br /&gt;
|Interval in seconds for image refresh for usage together with data-url&lt;br /&gt;
|900&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[#Beispiel_image|Link zu einem Beispiel]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;label&amp;quot;&amp;gt;&#039;&#039;&#039;LABEL&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!HTML Attribut&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Default Wert&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get&lt;br /&gt;
|name of the reading to get from Fhem&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-fix&lt;br /&gt;
|keeping a specified number of decimals. &lt;br /&gt;
|&#039;-1&#039; -&amp;gt; non-numeric&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-part&lt;br /&gt;
|split position of the space separated value to show or an RegEx&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-colors&lt;br /&gt;
|a array of color values to affect the colour of the label according to the limit value&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-limits-get&lt;br /&gt;
|name of the DEVICE:Reading to colorize the label &lt;br /&gt;
|data-device:data-get&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-limits&lt;br /&gt;
|an array of numeric values to affect the colour of the Label&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-limits-part&lt;br /&gt;
|part number of the space separated value to show or a RegEx &lt;br /&gt;
|&#039;-1&#039; -&amp;gt; all&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-unit&lt;br /&gt;
|add a unit after a numeric value. use encoded strings e.g. &amp;quot;%B0C%0A&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-substitution&lt;br /&gt;
|regex-substitution to apply on the value. Standard regex notation (s/regex/subst/modifier) is expected&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |class&lt;br /&gt;
|small, large, big, bigger, thin, red, green, blue, darker, timestamp, w1x, w2x, w3x, fixedlabel, icon, bg-limit&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Mit der Class &#039;fixedlabel&#039; kann man Label einbauen, die einen festen Text (direkt im HTML) haben, aber trotzdem die Farbe per Reading Value beeinflusst werden könnte.&amp;lt;br&amp;gt;&lt;br /&gt;
Mit der Class &#039;icon&#039; kann man Label einbauen, die wie Icons aussehen. Als Hintergrund gibt es &#039;icon round&#039; (rund), &#039;icon square&#039; (Rechteck mit abgerundeten Ecken) und &#039;icon squareborder&#039; (Rechteck mit abgerundeten Ecken und einem zusätzlichen Rand).&amp;lt;br&amp;gt;&lt;br /&gt;
Mit der Class &#039;bg-limit&#039; wird der Hintergrund des Icon auf grün oder rot gesetzt, passend zum on/off Status des data-limits.&lt;br /&gt;
&lt;br /&gt;
[[#Beispiel_label|Link zu einem Beispiel]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;level&amp;quot;&amp;gt;&#039;&#039;&#039;LEVEL&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!HTML Attribut&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Default Wert&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get&lt;br /&gt;
|name of the reading to get from Fhem&lt;br /&gt;
|&#039;STATE&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-min&lt;br /&gt;
|minimal value to set&lt;br /&gt;
|&#039;0&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-max&lt;br /&gt;
|maximal value to set&lt;br /&gt;
|&#039;100&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-on&lt;br /&gt;
|value where the slider moves to max&lt;br /&gt;
|&#039;on&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-off&lt;br /&gt;
|value where the slider moves to min&lt;br /&gt;
|&#039;off&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-colors&lt;br /&gt;
|a array of color values to affect the colour of the label according to the limit value&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-limits&lt;br /&gt;
|a array of numeric or RegEx values to affect the colour of the label&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |class&lt;br /&gt;
|mini, horizontal&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[#Beispiel_level|Link zu einem Beispiel]] (fehlt noch)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;pagetab&amp;quot;&amp;gt;&#039;&#039;&#039;PAGETAB&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!HTML Attribut&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Default Wert&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-url&lt;br /&gt;
|URL of the new page to show&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-icon&lt;br /&gt;
|name of the font-awesome icon&lt;br /&gt;
|&#039;fa-power-off&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-background-icon&lt;br /&gt;
|name of the font-awesome icon for background &lt;br /&gt;
|&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-on-background-color&lt;br /&gt;
|color of ON state&lt;br /&gt;
|&#039;#aa6900&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-off-background-color&lt;br /&gt;
|color of OFF state&lt;br /&gt;
|&#039;#505050&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-on-color&lt;br /&gt;
|color of ON state&lt;br /&gt;
|&#039;#aa6900&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-off-color&lt;br /&gt;
|color of Off state&lt;br /&gt;
|&#039;#505050&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get-on&lt;br /&gt;
|array of status to assign a special icon-list from data-icons&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-icons&lt;br /&gt;
|array of icons related to the a data-get-on array&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |class&lt;br /&gt;
|warn, activate (as additionals for data-icons)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[#Beispiel_pagetab|Link zu einem Beispiel]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;playstream&amp;quot;&amp;gt;&#039;&#039;&#039;PLAYSTREAM&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!HTML Attribut&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Default Wert&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-url&lt;br /&gt;
|URL des Radio-Streams&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get&lt;br /&gt;
|name of the reading to get the control state from FHEM&lt;br /&gt;
|&#039;STATE&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get-on&lt;br /&gt;
|value for PLAY status to get. &lt;br /&gt;
|&#039;on&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get-off&lt;br /&gt;
|value for STOP status to get. &lt;br /&gt;
|&#039;off&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-volume&lt;br /&gt;
|name of the reading to get the volume value (0-100) &lt;br /&gt;
|volume&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[#Beispiel_playstream|Link zu einem Beispiel]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;popup&amp;quot;&amp;gt;&#039;&#039;&#039;POPUP&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!HTML Attribut&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Default Wert&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get&lt;br /&gt;
|name of the reading where to get the alert value from&lt;br /&gt;
|&#039;STATE&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get-on&lt;br /&gt;
|value which trigger to open the dialog&lt;br /&gt;
|&#039;on&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-off&lt;br /&gt;
|value which trigger to close the dialog &lt;br /&gt;
|&#039;off&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-width&lt;br /&gt;
|fixe size for width (in % or px)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-height&lt;br /&gt;
|fixe size for height (in % or px)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[#Beispiel_popup|Link zu einem Beispiel]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;progress&amp;quot;&amp;gt;&#039;&#039;&#039;PROGRESS&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!HTML Attribut&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Default Wert&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get&lt;br /&gt;
|name of the reading to get from Fhem&lt;br /&gt;
|&#039;STATE&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-max&lt;br /&gt;
|maximal value to set or name of the reading which helds the max value&lt;br /&gt;
|100&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |class&lt;br /&gt;
|novalue, percent&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[#Beispiel_progress|Link zu einem Beispiel]] (fehlt noch)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;push&amp;quot;&amp;gt;&#039;&#039;&#039;PUSH&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!HTML Attribut&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Default-Wert&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-set&lt;br /&gt;
| name of the reading to set on FHEM (&amp;lt;command&amp;gt; &amp;lt;device&amp;gt; &amp;lt;reading&amp;gt; &amp;lt;value&amp;gt;) &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-set-on&lt;br /&gt;
|value to send when the the button get pressed oder ein Array zwischen dessen Werten umgeschaltet werden kann&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-icon&lt;br /&gt;
|name of the font-awesome icon&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-background-icon&lt;br /&gt;
|name of the font-awesome icon for background &lt;br /&gt;
|&#039;fa-circle&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-cmd&lt;br /&gt;
|name of the command (&amp;lt;command&amp;gt; &amp;lt;device&amp;gt; &amp;lt;value&amp;gt;) (e.g. setstate, set, setreading, trigger)&lt;br /&gt;
|&#039;set&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-doubleclick&lt;br /&gt;
|timeout to wait for a second click or touch. &#039;0&#039; disables the doubleclick feature. &lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-countdown&lt;br /&gt;
|secondes for the countdown progress control &lt;br /&gt;
|autodetect from &#039;on-for-timer&#039; command&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-background-icon&lt;br /&gt;
|name of the font-awesome icon for background &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-off-background-color&lt;br /&gt;
|fix color attribute for OFF state or DEVICE:READING for dynamic setting &lt;br /&gt;
|#505050&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-off-color&lt;br /&gt;
|fix color attribute for Off state or DEVICE:READING for dynamic setting&lt;br /&gt;
|#505050&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[#Beispiel_push|Link zu einem Beispiel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;rotor&amp;quot;&amp;gt;&#039;&#039;&#039;ROTOR&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!HTML Attribut&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Default Wert&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | data-delay&lt;br /&gt;
|time in millisecondes to wait until next list item get shown&lt;br /&gt;
|3500&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |class&lt;br /&gt;
|fade, rotate&lt;br /&gt;
|&#039;&#039; &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
Ohne Angabe von class erfolgt keine Animation.&lt;br /&gt;
&lt;br /&gt;
[[#Beispiel_rotor|Link zu einem Beispiel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;select&amp;quot;&amp;gt;&#039;&#039;&#039;SELECT&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!HTML Attribut&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Default Wert&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get&lt;br /&gt;
|name of the reading that get the selected item of the list&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-set&lt;br /&gt;
|name of the reading to set on Fhem (&amp;lt;command&amp;gt; &amp;lt;device&amp;gt; &amp;lt;reading&amp;gt; &amp;lt;value&amp;gt;)&lt;br /&gt;
|&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-list&lt;br /&gt;
|name of the reading to get a :-separated list from Fhem&lt;br /&gt;
|&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-items&lt;br /&gt;
|an array of fix items to show in the selection box (alternative if data-list is empty)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-alias&lt;br /&gt;
|an array of fix names to show only in the selection box as an alias to the real items&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-cmd&lt;br /&gt;
|name of the command to send to Fhem (&amp;lt;command&amp;gt; &amp;lt;device&amp;gt; &amp;lt;reading&amp;gt; &amp;lt;value&amp;gt;) (e.g. setstate, set, setreading, trigger)&lt;br /&gt;
|&#039;set&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-quote&lt;br /&gt;
|characters to enclose the send value&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |class&lt;br /&gt;
|wider, w1x, w2x, w3x, large, big&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
[[#Beispiel_select|Link zu einem Beispiel]]&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;div id=&amp;quot;simplechart&amp;quot;&amp;gt;&#039;&#039;&#039;SIMPLECHART&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!HTML Attribut&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Default Wert&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-logdevice&lt;br /&gt;
|name of the logdevice (e.g. FileLog_WohnzimmerHeizung)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-logfile&lt;br /&gt;
|name of the logfile (e.g. WohnzimmerHeizung-2015.log)&lt;br /&gt;
|&#039;-&#039; means current logfile&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-columnspec&lt;br /&gt;
|definition for how to find the values (e.g. &amp;quot;4:meas.*:1:int&amp;quot;)&lt;br /&gt;
|&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-minvalue&lt;br /&gt;
|min Y value to Show or an array of values for dynamic minY &lt;br /&gt;
|10&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-maxvalue&lt;br /&gt;
|max Y value to Show or an array of values for dynamic maxY &lt;br /&gt;
|30&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-yticks&lt;br /&gt;
|value distance between Y tick lines&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-xticks&lt;br /&gt;
|time range between each X tick line (in Minuten)&lt;br /&gt;
|360 minutes&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-daysago&lt;br /&gt;
|number of days back from now &lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-caption&lt;br /&gt;
|name of the chart to show as text &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-yunit&lt;br /&gt;
|unit of the value to show beside of each Y ticks&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-width&lt;br /&gt;
|fixe size for width (in % or px)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-height&lt;br /&gt;
|fixe size for height (in % or px)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |class&lt;br /&gt;
|fullsize, noticks&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
[[#Beispiel_simplechart|Link zu einem Beispiel]] (fehlt noch)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;data-logfile&amp;lt;/code&amp;gt; kann man auch weglassen, dann greift der Defaultwert &amp;quot;-&amp;quot;. Damit wird das neuste Logfile gelesen.&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;div id=&amp;quot;slider&amp;quot;&amp;gt;&#039;&#039;&#039;SLIDER&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!HTML Attribut&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Default Wert&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get&lt;br /&gt;
|name of the reading to get from Fhem&lt;br /&gt;
|&#039;STATE&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-set&lt;br /&gt;
|command to send to Fhem (&amp;lt;code&amp;gt;set &amp;lt;device&amp;gt; &amp;lt;command&amp;gt; &amp;lt;value&amp;gt;&amp;lt;/code&amp;gt;)&lt;br /&gt;
|&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-cmd&lt;br /&gt;
|name of the command (&amp;lt;command&amp;gt; &amp;lt;device&amp;gt; &amp;lt;value&amp;gt;) (e.g. setstate, set, setreading, trigger)&lt;br /&gt;
|&#039;set&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-min&lt;br /&gt;
|minimal value to set&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-max&lt;br /&gt;
|maximal value to set&lt;br /&gt;
|100&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-on&lt;br /&gt;
|value where the slider moves to max&lt;br /&gt;
|&#039;on&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-off&lt;br /&gt;
|value where the slider moves to min&lt;br /&gt;
|&#039;off&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-value&lt;br /&gt;
|wenn true wird beim sliden der Wert angezeigt&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-width&lt;br /&gt;
|width for horizontal sliders&lt;br /&gt;
|&#039;120px&#039;, for mini &#039;60px&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-height&lt;br /&gt;
|height for vertical sliders &lt;br /&gt;
|&#039;120px&#039;, for mini &#039;60px&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |class&lt;br /&gt;
|Aussehen/Ausrichtung&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Für class steht mini, horizontal und negated (0 liegt oben) zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
[[#Beispiel_slider|Link zu einem Beispiel]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;switch&amp;quot;&amp;gt;&#039;&#039;&#039;SWITCH&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!HTML-Attribut&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Default-Wert&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get&lt;br /&gt;
|Name des Reading, was gelesen werden soll&lt;br /&gt;
|&#039;STATE&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get-on&lt;br /&gt;
|Wert, bei dem zum Status ON geschaltet werden soll. &lt;br /&gt;
|&#039;on&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get-off&lt;br /&gt;
|Wert, bei dem zum Status OFF geschaltet werden soll. &lt;br /&gt;
|&#039;off&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-set-on&lt;br /&gt;
|Wert, der zu Fhem gesendet werden soll, wenn das Widget auf ON geschaltet wurde  &lt;br /&gt;
|Wert von data-get-on&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-set-off&lt;br /&gt;
|Wert, der zu Fhem gesendet werden soll, wenn das Widget auf OFF geschaltet wurde &lt;br /&gt;
|Wert von data-get-off&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-cmd&lt;br /&gt;
|Kommando Name (&amp;lt;command&amp;gt; &amp;lt;device&amp;gt; &amp;lt;value&amp;gt;) &amp;lt;br /&amp;gt;(z.B setstate, set, setreading, trigger) &lt;br /&gt;
|&#039;set&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-icon&lt;br /&gt;
|Name des Font-Awesome Icon. &lt;br /&gt;
|&#039;fa-lightbulb-o&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-background-icon&lt;br /&gt;
|Name des Font-Awesome Hintergrund Icon. &lt;br /&gt;
|&#039;fa-circle&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-on-color&lt;br /&gt;
|Widget Farbe beim Status ON &lt;br /&gt;
|&#039;#aa6900&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-off-color&lt;br /&gt;
|Widget Farbe beim Status OFF &lt;br /&gt;
|&#039;#505050&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;data-get-on&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;data-get-off&amp;lt;/code&amp;gt; accept also RegEx values. e.g. data-get-on=&amp;quot;[0-9]{1,3}|on&amp;quot; means set switch on if STATE is a numeric value or &#039;on&#039;. data-get-off=&amp;quot;!on&amp;quot; means accept all but the data-get-on value (negation)&lt;br /&gt;
&lt;br /&gt;
[[#Beispiel_switch|Link zu einem Beispiel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;symbol&amp;quot;&amp;gt;&#039;&#039;&#039;SYMBOL&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
dual state notation&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!HTML Attribut&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Default Wert&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get&lt;br /&gt;
|Name des Reading, was gelesen werden soll&lt;br /&gt;
|&#039;STATE&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get-on&lt;br /&gt;
|value for ON status to get. &lt;br /&gt;
|&#039;open&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get-off&lt;br /&gt;
|value for OFF status to get. &lt;br /&gt;
|&#039;closed&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-icon&lt;br /&gt;
|Name des font-awesome-Symbols  &lt;br /&gt;
|&#039;ftui-window&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-background-icon&lt;br /&gt;
|Hintergrundsymbol&lt;br /&gt;
|&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-on-background-color&lt;br /&gt;
|Farbe für ON-Zustand.&lt;br /&gt;
|&#039;#aa6900&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-off-background-color&lt;br /&gt;
|Farbe für OFF-Zustand.&lt;br /&gt;
|&#039;#505050&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-on-color&lt;br /&gt;
|Farbe für ON-Zustand.&lt;br /&gt;
|&#039;#aa6900&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-off-color&lt;br /&gt;
|Farbe für OFF-Zustand.&lt;br /&gt;
|&#039;#505050&#039;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
multi state notation&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!HTML Attribut&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Default Wert&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get&lt;br /&gt;
|Name des Reading, was gelesen werden soll&lt;br /&gt;
|&#039;STATE&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-states&lt;br /&gt;
|array of states. &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-icons&lt;br /&gt;
|Array mit Icons zu data-states Array&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-background-icons&lt;br /&gt;
|Array mit Icons zu data-states Array&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-colors&lt;br /&gt;
|array of colors related to the data-states array&lt;br /&gt;
|&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-background-colors&lt;br /&gt;
|array of background-colors related to the data-states array&lt;br /&gt;
|&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
data-get-on,data-get-off and data-states accept also RegEx values. The value for one icon can also contain an additional animatation CSS name, e.g. &amp;quot;fa-exclamation-triangle fa-blink&amp;quot; for a blinking Symbol&lt;br /&gt;
&lt;br /&gt;
[[#Beispiel_symbol|Link zu einem Beispiel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;thermostat&amp;quot;&amp;gt;&#039;&#039;&#039;THERMOSTAT&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!HTML Attribut&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Default Wert&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get&lt;br /&gt;
|name of the reading to get from Fhem&lt;br /&gt;
|&#039;desired-temp&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-temp&lt;br /&gt;
|reading for measured temperature of thermostates&lt;br /&gt;
|&#039;measured-temp&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-set&lt;br /&gt;
|command to send to Fhem (set &amp;lt;device&amp;gt; &amp;lt;command&amp;gt; &amp;lt;value&amp;gt;)&lt;br /&gt;
|&#039;desired-temp&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-valve&lt;br /&gt;
|reading for valve position of thermostates&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-min&lt;br /&gt;
|minimal value to set&lt;br /&gt;
| 10&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-max&lt;br /&gt;
|maximal value to set&lt;br /&gt;
| 30&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-minColor&lt;br /&gt;
|Farbe des Keises für Min&lt;br /&gt;
| #4477FF&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-maxColor&lt;br /&gt;
|Farbe des Kreises für Max, zwischen Min und Max wird linear interpoliert &lt;br /&gt;
| #FF0000&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-step&lt;br /&gt;
|step size for value adjustment e.g. 0.5 &lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-bgColor&lt;br /&gt;
|Die Farbe der Kreises zwischen den ticks&lt;br /&gt;
|&#039;transparent&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-fgColor&lt;br /&gt;
|Die Farbe der zahl im Kreismittelpunkt&lt;br /&gt;
|#bbbbbb&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-tkColor&lt;br /&gt;
|Die Farbe der ticks&lt;br /&gt;
|#696969&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-angleOffset&lt;br /&gt;
|Start der ticks im Kreis (in Winkelgraden, 0 = oben)&lt;br /&gt;
| -120&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-angleArc&lt;br /&gt;
|Bereich der ticks im Kreis (in Winkelgraden)&lt;br /&gt;
|240&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |class&lt;br /&gt;
|big, readonly&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[#Beispiel_thermostat|Link zu einem Beispiel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;volume&amp;quot;&amp;gt;&#039;&#039;&#039;VOLUME&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!HTML Attribut&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Default Wert&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get&lt;br /&gt;
|name of the reading to get from Fhem &lt;br /&gt;
|&#039;STATE&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-set&lt;br /&gt;
|command to send to Fhem (set &amp;lt;device&amp;gt; &amp;lt;command&amp;gt; &amp;lt;value&amp;gt;)&lt;br /&gt;
|&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;rigth&amp;quot; |data-cmd&lt;br /&gt;
|name of the command (&amp;lt;command&amp;gt; &amp;lt;device&amp;gt; &amp;lt;value&amp;gt;) (e.g. setstate, set, setreading, trigger) &lt;br /&gt;
|&#039;set&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-min&lt;br /&gt;
|minimal value to set&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-max&lt;br /&gt;
|maximal value to set&lt;br /&gt;
|70&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |class&lt;br /&gt;
|small, hue-tick, hue-front, hue-back, dim-tick ,dim-front, dim-back&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[#Beispiel_volume|Link zu einem Beispiel]] (fehlt noch)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;weather&amp;quot;&amp;gt;&#039;&#039;&#039;WEATHER&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!HTML Attribut&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Default Wert&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get&lt;br /&gt;
|name of the reading to get the weather literal from Fhem&lt;br /&gt;
|&#039;STATE&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-imageset&lt;br /&gt;
|collection of images to display current weather situation. Possible values: &#039;meteocons&#039;, &#039;kleinklima&#039;&lt;br /&gt;
|&#039;meteocons&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-image-path&lt;br /&gt;
|path to the images of the selected imageset&lt;br /&gt;
|/images/weather/&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[#Beispiel_weather|Link zu einem Beispiel]]&lt;br /&gt;
&lt;br /&gt;
== Widgets -- Beispiele ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_chart&amp;quot;&amp;gt;&#039;&#039;&#039;Chart&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Display a chart with similar capabilities as the FHEM plots&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div    data-type=&amp;quot;chart&amp;quot;&lt;br /&gt;
	data-logdevice=&#039;[&amp;quot;Log.Garden&amp;quot;,&amp;quot;Log.Garden&amp;quot;,&amp;quot;Log.Garden&amp;quot;,&amp;quot;Log.Predicted&amp;quot;]&#039;&lt;br /&gt;
	data-columnspec=&#039;[&amp;quot;4:Garden.T:15:&amp;quot;,&amp;quot;10:Garden.T:0:delta-h&amp;quot;,&amp;quot;10:Garden.T:0:delta-d&amp;quot;,&amp;quot;4:predicted.*:15:&amp;quot;]&#039;&lt;br /&gt;
	data-style=&#039;[&amp;quot;ftui l0fill&amp;quot;,&amp;quot;ftui l1fill&amp;quot;,&amp;quot;ftui l2&amp;quot;,&amp;quot;ftui l3dot&amp;quot;]&#039;&lt;br /&gt;
	data-ptype=&#039;[&amp;quot;lines&amp;quot;,&amp;quot;histeps&amp;quot;,&amp;quot;histeps&amp;quot;,&amp;quot;cubic&amp;quot;]&#039;&lt;br /&gt;
	data-uaxis=&#039;[&amp;quot;primary&amp;quot;,&amp;quot;secondary&amp;quot;,&amp;quot;secondary&amp;quot;,&amp;quot;primary&amp;quot;]&#039;&lt;br /&gt;
	data-legend=&#039;[&amp;quot;Temperature&amp;quot;,&amp;quot;Rain/hour&amp;quot;,&amp;quot;Rain/day&amp;quot;,&amp;quot;Predicted Temp.&amp;quot;]&#039;&lt;br /&gt;
	data-yunit=&amp;quot;°C&amp;quot;&lt;br /&gt;
	data-ytext=&amp;quot;Temperature&amp;quot;&lt;br /&gt;
	data-minvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
	data-maxvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
	data-yunit_sec=&amp;quot;mm&amp;quot;&lt;br /&gt;
	data-ytext_sec=&amp;quot;Rain (mm)&amp;quot;&lt;br /&gt;
	data-height=&amp;quot;250&amp;quot;&lt;br /&gt;
	data-yticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
	data-minvalue_sec=&amp;quot;auto&amp;quot;&lt;br /&gt;
	data-maxvalue_sec=&amp;quot;auto&amp;quot;&lt;br /&gt;
	data-nofulldays=&amp;quot;true&amp;quot;&lt;br /&gt;
	data-daysago_start=&amp;quot;2013-08-13T00:00:00&amp;quot;&lt;br /&gt;
	data-daysago_end=&amp;quot;2013-08-14T00:00:00&amp;quot;&lt;br /&gt;
	data-cursorgroup=&amp;quot;1&amp;quot;&lt;br /&gt;
	data-scrollgroup=&amp;quot;1&amp;quot;&lt;br /&gt;
	data-xticks=&amp;quot;auto&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:chart_tabletUI.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_circlemenu&amp;quot;&amp;gt;&#039;&#039;&#039;Circlemenu&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cover a lot of other button behind one single button&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;circlemenu&amp;quot; class=&amp;quot;cell circlemenu&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ul class=&amp;quot;menu&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;div data-type=&amp;quot;push&amp;quot; data-icon=&amp;quot;fa-wrench&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;div data-type=&amp;quot;push&amp;quot; data-device=&amp;quot;AvReceiver&amp;quot; &lt;br /&gt;
               data-set=&amp;quot;remoteControl subwoofer-temporary-level -6&amp;quot; &lt;br /&gt;
               data-icon=&amp;quot;&amp;quot;&amp;gt;-6&amp;lt;/div&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;div data-type=&amp;quot;push&amp;quot; data-device=&amp;quot;AvReceiver&amp;quot; &lt;br /&gt;
               data-set=&amp;quot;remoteControl subwoofer-temporary-level -2&amp;quot; &lt;br /&gt;
               data-icon=&amp;quot;&amp;quot;&amp;gt;-2&amp;lt;/div&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;div data-type=&amp;quot;push&amp;quot; data-device=&amp;quot;AvReceiver&amp;quot; &lt;br /&gt;
               data-set=&amp;quot;remoteControl subwoofer-temporary-level 0&amp;quot; &lt;br /&gt;
               data-icon=&amp;quot;&amp;quot;&amp;gt;0&amp;lt;/div&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;div data-type=&amp;quot;push&amp;quot; data-device=&amp;quot;AvReceiver&amp;quot; &lt;br /&gt;
               data-set=&amp;quot;remoteControl subwoofer-temporary-level +3&amp;quot; &lt;br /&gt;
               data-icon=&amp;quot;&amp;quot;&amp;gt;2&amp;lt;/div&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;div data-type=&amp;quot;push&amp;quot; data-device=&amp;quot;AvReceiver&amp;quot; &lt;br /&gt;
               data-set=&amp;quot;remoteControl subwoofer-temporary-level +9&amp;quot; &lt;br /&gt;
               data-icon=&amp;quot;&amp;quot;&amp;gt;9&amp;lt;/div&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;div data-type=&amp;quot;push&amp;quot; data-device=&amp;quot;AvReceiver&amp;quot; &lt;br /&gt;
               data-set=&amp;quot;remoteControl subwoofer-temporary-level +C&amp;quot; &lt;br /&gt;
               data-icon=&amp;quot;&amp;quot;&amp;gt;12&amp;lt;/div&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Woofer&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:circlemenu_tabletUI.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_dimmer&amp;quot;&amp;gt;&#039;&#039;&#039;Dimmer&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dimmer Widget Beispiel für Philips Hue&lt;br /&gt;
&lt;br /&gt;
Minimalvariante&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
&amp;lt;div data-type=&amp;quot;dimmer&amp;quot; data-device=&amp;quot;HUEDevice1&amp;quot;&lt;br /&gt;
        data-get-on=&amp;quot;!off&amp;quot; data-get-off=&amp;quot;off&amp;quot;&lt;br /&gt;
        data-set=&amp;quot;pct&amp;quot;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit Anzeige der Dimstufe&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;dimmer&amp;quot; data-device=&amp;quot;HUEDevice1&amp;quot;&lt;br /&gt;
       data-get=&amp;quot;onoff&amp;quot;&lt;br /&gt;
       data-get-on=&amp;quot;1&amp;quot; data-get-off=&amp;quot;0&amp;quot;&lt;br /&gt;
       data-set=&amp;quot;&amp;quot;&lt;br /&gt;
       data-set-on=&amp;quot;on&amp;quot; data-set-off=&amp;quot;off&amp;quot;&lt;br /&gt;
       data-dim=&amp;quot;pct&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dimmer Widget für MilightDevice&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;dimmer&amp;quot;&lt;br /&gt;
  data-device=&amp;quot;SonstWas&amp;quot;&lt;br /&gt;
  data-get=&amp;quot;brightness&amp;quot;&lt;br /&gt;
  data-get-off=&amp;quot;0&amp;quot;&lt;br /&gt;
  data-get-on=&amp;quot;[1-9][0-9]*&amp;quot;&lt;br /&gt;
  data-set-on=&amp;quot;on&amp;quot;&lt;br /&gt;
  data-set-off=&amp;quot;off&amp;quot;&lt;br /&gt;
  data-dim=&amp;quot;dim&amp;quot;&lt;br /&gt;
  data-min=&amp;quot;0&amp;quot;&lt;br /&gt;
  data-max=&amp;quot;100&amp;quot;&lt;br /&gt;
&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_homestatus&amp;quot;&amp;gt;&#039;&#039;&#039;Homestatus&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel rechts im Bild:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;homestatus&amp;quot; data-device=&#039;dummy1&#039;&lt;br /&gt;
       data-get-on=&#039;[&amp;quot;1&amp;quot;,&amp;quot;2&amp;quot;,&amp;quot;3&amp;quot;,&amp;quot;4&amp;quot;]&#039;&lt;br /&gt;
       data-alias=&#039;[&amp;quot;Home&amp;quot;,&amp;quot;Night&amp;quot;,&amp;quot;Away&amp;quot;,&amp;quot;Holiday&amp;quot;]&#039;&lt;br /&gt;
       data-icons=&#039;[&amp;quot;fa-home&amp;quot;,&amp;quot;fa-bed&amp;quot;,&amp;quot;fa-car&amp;quot;,&amp;quot;fa-suitcase&amp;quot;]&#039;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel links im Bild:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;homestatus&amp;quot; data-device=&#039;dummy1&#039;&lt;br /&gt;
        data-get-on=&#039;[&amp;quot;home&amp;quot;,&amp;quot;asleep&amp;quot;,&amp;quot;absent&amp;quot;,&amp;quot;gone&amp;quot;,&amp;quot;gotosleep&amp;quot;]&#039;&lt;br /&gt;
        data-alias=&#039;[&amp;quot;Home&amp;quot;,&amp;quot;Night&amp;quot;,&amp;quot;Away&amp;quot;,&amp;quot;Holiday&amp;quot;,&amp;quot;Retire&amp;quot;]&#039;&lt;br /&gt;
        data-icons=&#039;[&amp;quot;fa-fire&amp;quot;,&amp;quot;fa-film&amp;quot;,&amp;quot;fa-plus&amp;quot;,&amp;quot;fa-car&amp;quot;,&amp;quot;fa-tint&amp;quot;]&#039;&lt;br /&gt;
        data-version=&#039;residents&#039;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:homestatus_tabletUI.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_image&amp;quot;&amp;gt;&#039;&#039;&#039;Image&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Erzeugt ein Widget mit einem Bild aus dem www, das alle 5 Sekunden aktualisiert wird (hier eine Wetterkarte vom DWD).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;image&amp;quot;&lt;br /&gt;
     data-size=&amp;quot;80%&amp;quot;&lt;br /&gt;
     data-url=&amp;quot;http://www.dwd.de/wundk/wetter/de/Deutschland.jpg&amp;quot;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:image_tabletUI.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example for how to add an image to the dashboard which its URL is delivered by a Fhem module like PROPLANTA:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;image&amp;quot; data-device=&amp;quot;Wetter1&amp;quot; &lt;br /&gt;
     data-get=&amp;quot;fc0_weatherDayIcon&amp;quot; &lt;br /&gt;
     data-size=&amp;quot;40px&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_label&amp;quot;&amp;gt;&#039;&#039;&#039;Label&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for HM-WDS40-TH-I Funk-Temperatur-/Feuchtesensor innen&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
STATE   T: 20.0 H: 61&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;THSensorWZ&amp;quot; &lt;br /&gt;
     data-part=&amp;quot;2&amp;quot; data-unit=&amp;quot;%B0C%0A&amp;quot; class=&amp;quot;cell big&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Temperatur&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;THSensorWZ&amp;quot; data-part=&amp;quot;4&amp;quot; &lt;br /&gt;
     data-unit=&amp;quot;%&amp;quot; class=&amp;quot;cell big&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Luftfeuchte&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
But the same result can reached by getting single readings:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
humidity    58&lt;br /&gt;
temperature 20.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;THSensorWZ&amp;quot; &lt;br /&gt;
     data-get=&amp;quot;temperature&amp;quot; data-unit=&amp;quot;%B0C%0A&amp;quot; class=&amp;quot;cell big&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Temperatur&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;THSensorWZ&amp;quot; &lt;br /&gt;
     data-get=&amp;quot;humidity&amp;quot; data-unit=&amp;quot;%&amp;quot; class=&amp;quot;cell big&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Luftfeuchte&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for how to influence the color of the label according to value limits&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; &lt;br /&gt;
     data-device=&amp;quot;OutTemp&amp;quot; &lt;br /&gt;
     data-limits=&#039;[-73,10,23]&#039; &lt;br /&gt;
     data-colors=&#039;[&amp;quot;#6699FF&amp;quot;,&amp;quot;#AA6900&amp;quot;,&amp;quot;#FF0000&amp;quot;]&#039; &lt;br /&gt;
     data-unit=&amp;quot;%B0C%0A&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell big&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for how to create a widget for shutter via push: show state and set up/down&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;switch&amp;quot; &lt;br /&gt;
     data-device=&amp;quot;wzRollo&amp;quot; &lt;br /&gt;
     data-get-on=&amp;quot;up&amp;quot; &lt;br /&gt;
     data-get-off=&amp;quot;down&amp;quot; &lt;br /&gt;
     data-icon=&amp;quot;fa-bars&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell&amp;quot;&amp;gt;Rollo&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for how to create a label for a time value in short format with usage of RegEx.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; &lt;br /&gt;
     data-device=&amp;quot;dummy1&amp;quot; &lt;br /&gt;
     data-part=&amp;quot;(\d\d\.\d\d\.).*&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for how to show two labels in one line.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;div type=&amp;quot;label&amp;quot; device=&amp;quot;OnSunrise&amp;quot; class=&amp;quot;inline&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;bis&lt;br /&gt;
   &amp;lt;div type=&amp;quot;label&amp;quot; device=&amp;quot;OnSunset&amp;quot; class=&amp;quot;inline&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel für die Anzeige des UV-Indexes und der Abhängigkeit der anzuzeigenden Farbe.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;wider cell bigger&amp;quot; data-device=&amp;quot;ProVorhersage&amp;quot;&lt;br /&gt;
        data-get=&amp;quot;fc0_uv&amp;quot;&lt;br /&gt;
        data-limits=&amp;quot;[-2, 2, 5, 7, 10]&amp;quot; &lt;br /&gt;
	data-colors=&#039;[&amp;quot;#66FF33&amp;quot;,&amp;quot;#FFFF00&amp;quot;,&amp;quot;#FF6600&amp;quot;,&amp;quot;#FF0000&amp;quot;,&amp;quot;#993399&amp;quot;]&#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
   &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot; data-device=&amp;quot;ProVorhersage&amp;quot; data-get=&amp;quot;fc0_date&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
   &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;wider cell bigger&amp;quot; data-device=&amp;quot;ProVorhersage&amp;quot;&lt;br /&gt;
        data-get=&amp;quot;fc1_uv&amp;quot;&lt;br /&gt;
	data-limits=&amp;quot;[-2, 2, 5, 7, 10]&amp;quot;&lt;br /&gt;
	data-colors=&#039;[&amp;quot;#66FF33&amp;quot;,&amp;quot;#FFFF00&amp;quot;,&amp;quot;#FF6600&amp;quot;,&amp;quot;#FF0000&amp;quot;,&amp;quot;#993399&amp;quot;]&#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
   &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot; data-device=&amp;quot;ProVorhersage&amp;quot; data-get=&amp;quot;fc1_date&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:label_tabletUI.jpg]]&lt;br /&gt;
&lt;br /&gt;
Beispiel für die Anzeige des Labels als Icon.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;AvReceiver&amp;quot; data-get=&amp;quot;input&amp;quot; class=&amp;quot;icon round bg-red cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;AvReceiver&amp;quot; data-get=&amp;quot;input&amp;quot; class=&amp;quot;icon square bg-blue cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;AvReceiver&amp;quot; data-get=&amp;quot;input&amp;quot; class=&amp;quot;icon squareborder cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;PowerAV_Sw&amp;quot; data-colors=&#039;[&amp;quot;red&amp;quot;,&amp;quot;green&amp;quot;]&#039; data-limits=&#039;[&amp;quot;off&amp;quot;,&amp;quot;on&amp;quot;]&#039; class=&amp;quot;icon round bg-limit cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Label_tabletUI_icon.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_pagetab&amp;quot;&amp;gt;&#039;&#039;&#039;Pagetab&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for a tab menu to switch smoothly between multiple pages. Multiple pagetabs in a template file: menu.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;header&amp;gt;MENU&amp;lt;/header&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;pagetab&amp;quot; data-url=&amp;quot;index.html&amp;quot;  data-icon=&amp;quot;fa-home&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;pagetab&amp;quot; data-url=&amp;quot;index_2.html&amp;quot; data-icon=&amp;quot;fa-sliders&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;pagetab&amp;quot; data-url=&amp;quot;index_3.html&amp;quot; data-icon=&amp;quot;fa-music&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;pagetab&amp;quot; data-url=&amp;quot;index_4.html&amp;quot; data-icon=&amp;quot;fa-hotel&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;pagetab&amp;quot; data-url=&amp;quot;index_5.html&amp;quot; data-icon=&amp;quot;fa-music&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;pagetab&amp;quot; data-url=&amp;quot;index_6.html&amp;quot; data-icon=&amp;quot;fa-database&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;pagetab&amp;quot; data-url=&amp;quot;index_7.html&amp;quot; data-icon=&amp;quot;fa-fax&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_playstream&amp;quot;&amp;gt;&#039;&#039;&#039;Playstream&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Erzeugt einen Knopf zum direkten Abspielen eines Webradio-Streams.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
     &amp;lt;div data-type=&amp;quot;playstream&amp;quot; data-url=&amp;quot;http://radioeins.de/stream&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
     &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;darker&amp;quot;&amp;gt;Radio eins&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_push&amp;quot;&amp;gt;&#039;&#039;&#039;Push&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for how to create a push button widget to trigger all devices on:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;push&amp;quot; &lt;br /&gt;
     data-device=&amp;quot;LightAll&amp;quot; &lt;br /&gt;
     data-cmd=&amp;quot;trigger&amp;quot; &lt;br /&gt;
     data-set=&amp;quot;on&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Beispiel für zwei horizontale Buttons:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;doublebox-h&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;push&amp;quot; data-device=&amp;quot;Rollo&amp;quot; &lt;br /&gt;
             data-icon=&amp;quot;fa-angle-up&amp;quot; data-background-icon=&amp;quot;fa-square-o&amp;quot; &lt;br /&gt;
             data-set=&amp;quot;up&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;push&amp;quot; data-device=&amp;quot;Rollo&amp;quot; &lt;br /&gt;
             data-icon=&amp;quot;fa-angle-down&amp;quot; data-background-icon=&amp;quot;fa-square-o&amp;quot; &lt;br /&gt;
             data-set=&amp;quot;down&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:push1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Beispiel für zwei quadratische vertikale Buttons:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;doublebox-v&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;push&amp;quot; data-device=&amp;quot;Rollo&amp;quot; &lt;br /&gt;
             data-icon=&amp;quot;fa-chevron-up&amp;quot; data-background-icon=&amp;quot;fa-square-o&amp;quot; &lt;br /&gt;
             data-set=&amp;quot;up&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;push&amp;quot; data-device=&amp;quot;Rollo&amp;quot; &lt;br /&gt;
            data-icon=&amp;quot;fa-chevron-down&amp;quot; data-background-icon=&amp;quot;fa-square-o&amp;quot; &lt;br /&gt;
            data-set=&amp;quot;down&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:push2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_rotor&amp;quot;&amp;gt;&#039;&#039;&#039;Rotor&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for a rotor widget, which switches between to days of weather forecast&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;rotor&amp;quot; class=&amp;quot;fade&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;darker&amp;quot;&amp;gt;Heute&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;weather&amp;quot; data-device=&amp;quot;AgroWeather&amp;quot; data-get=&amp;quot;fc0_weatherDay&amp;quot; class=&amp;quot;big&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;AgroWeather&amp;quot; data-get=&amp;quot;fc0_weatherDay&amp;quot; class=&amp;quot;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;AgroWeather&amp;quot; data-get=&amp;quot;fc0_tempMax&amp;quot; data-unit=&amp;quot;%B0C%0A&amp;quot; class=&amp;quot;large&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;darker&amp;quot;&amp;gt;Morgen&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;weather&amp;quot; data-device=&amp;quot;AgroWeather&amp;quot; data-get=&amp;quot;fc1_weatherDay&amp;quot; class=&amp;quot;big&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;AgroWeather&amp;quot; data-get=&amp;quot;fc1_weatherDay&amp;quot; class=&amp;quot;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;AgroWeather&amp;quot; data-get=&amp;quot;fc1_tempMax&amp;quot; data-unit=&amp;quot;%B0C%0A&amp;quot; class=&amp;quot;large&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_select&amp;quot;&amp;gt;&#039;&#039;&#039;Select&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Erzeugt zwei Comboboxen zur Auswahl des Eingang eines 2-Zonen-AV-Receivers. Die Liste für Zone2 ist fest, die Liste für Zone1 wird von Fhem übergeben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cell wider&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;inline wider&amp;quot;&amp;gt;Zone2&amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;div data-type=&amp;quot;select&amp;quot; data-device=&amp;quot;AvReceiverZ2&amp;quot; data-items=&#039;[&amp;quot;Airplay&amp;quot;,&amp;quot;Webradio&amp;quot;,&amp;quot;BD/DVD&amp;quot;,&amp;quot;PHONO&amp;quot;]&#039; data-get=&amp;quot;input&amp;quot; data-set=&amp;quot;input&amp;quot; class=&amp;quot;cell w2x&amp;quot; &amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;inline&amp;quot;&amp;gt;Zone1&amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;div data-type=&amp;quot;select&amp;quot; data-device=&amp;quot;AvReceiver&amp;quot; data-list=&amp;quot;inputs&amp;quot; data-get=&amp;quot;input&amp;quot; data-set=&amp;quot;input&amp;quot; class=&amp;quot;cell w2x&amp;quot; &amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:select_tabeltUI.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_slider&amp;quot;&amp;gt;&#039;&#039;&#039;Slider&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Slider mit einstellbaren Werten von 10 bis 90:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;slider&amp;quot; &lt;br /&gt;
     data-device=&#039;Dummy1&#039; &lt;br /&gt;
     data-min=&amp;quot;10&amp;quot; &lt;br /&gt;
     data-max=&amp;quot;90&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Light1&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:slider_tabletUI.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Horizontal angeordneter Slider:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;slider&amp;quot;&lt;br /&gt;
     data-device=&#039;Dummy1&#039; &lt;br /&gt;
     data-min=&amp;quot;0&amp;quot; &lt;br /&gt;
     data-max=&amp;quot;100&amp;quot; &lt;br /&gt;
     class=&amp;quot;horizontal&amp;quot; &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:slider_tabletUI2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_switch&amp;quot;&amp;gt;&#039;&#039;&#039;Switch&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Schalter. Usage of RegEx pattern for state request:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;switch&amp;quot; class=&amp;quot;cell&amp;quot; &lt;br /&gt;
            data-device=&amp;quot;MILIGHT_Zone1_Wohnzimmer&amp;quot; &lt;br /&gt;
            data-get-on=&amp;quot;on.*&amp;quot;&lt;br /&gt;
            data-get-off=&amp;quot;off&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:switch.png]]&lt;br /&gt;
&lt;br /&gt;
Beispiel für eine Gruppe von Schaltern, um zwischen vier verschiedenen Werten eines device umzuschalten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cell left&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;div data-type=&amp;quot;switch&amp;quot; data-device=&amp;quot;dummy1&amp;quot; &lt;br /&gt;
      data-get-off=&amp;quot;((?!Wert1).)*&amp;quot; &lt;br /&gt;
      data-get-on=&amp;quot;Wert1&amp;quot; class=&amp;quot;cell&amp;quot; &amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Wert1&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;div data-type=&amp;quot;switch&amp;quot; data-device=&amp;quot;dummy1&amp;quot; &lt;br /&gt;
      data-get-off=&amp;quot;((?!Wert2).)*&amp;quot; &lt;br /&gt;
      data-get-on=&amp;quot;Wert2&amp;quot; class=&amp;quot;cell&amp;quot; &amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Wert2&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;div data-type=&amp;quot;switch&amp;quot; data-device=&amp;quot;dummy1&amp;quot; &lt;br /&gt;
      data-get-off=&amp;quot;((?!Wert3).)*&amp;quot; &lt;br /&gt;
      data-get-on=&amp;quot;Wert3&amp;quot; class=&amp;quot;cell&amp;quot; &amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Wert3&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;div data-type=&amp;quot;switch&amp;quot; data-device=&amp;quot;dummy1&amp;quot; &lt;br /&gt;
      data-get-off=&amp;quot;((?!Wert4).)*&amp;quot; &lt;br /&gt;
      data-get-on=&amp;quot;Wert4&amp;quot; class=&amp;quot;cell&amp;quot; &amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Wert4&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:switch4.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_symbol&amp;quot;&amp;gt;&#039;&#039;&#039;Symbol&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for a tristate icon&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;symbol&amp;quot; data-device=&amp;quot;dummy1&amp;quot; &lt;br /&gt;
     data-get-on=&#039;[&amp;quot;wert1&amp;quot;,&amp;quot;wert2&amp;quot;,&amp;quot;wert3&amp;quot;]&#039; &lt;br /&gt;
     data-icons=&#039;[&amp;quot;fa-arrow-up&amp;quot;,&amp;quot;fa-user&amp;quot;,&amp;quot;fa-arrow-down&amp;quot;]&#039; &lt;br /&gt;
     data-on-colors=&#039;[&amp;quot;SeaGreen&amp;quot;,&amp;quot;SlateBlue&amp;quot;,&amp;quot;IndianRed&amp;quot;]&#039; &lt;br /&gt;
     class=&amp;quot;cell big&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example for a tristate icon with blink and spin animation&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;symbol&amp;quot; data-device=&amp;quot;dummy1&amp;quot; &lt;br /&gt;
     data-icons=&#039;[&amp;quot;fa-exclamation-triangle fa-blink&amp;quot;,&amp;quot;fa-exclamation-circle&amp;quot;,&amp;quot;fa-cog fa-spin&amp;quot;]&#039; &lt;br /&gt;
     data-on-colors=&#039;[&amp;quot;Crimson&amp;quot;,&amp;quot;GoldenRod&amp;quot;,&amp;quot;SeaGreen&amp;quot;]&#039; &lt;br /&gt;
     data-get-on=&#039;[&amp;quot;Wert1&amp;quot;,&amp;quot;Wert2&amp;quot;,&amp;quot;Wert3&amp;quot;]&#039; &amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example for a battery level control with RegEx&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;symbol&amp;quot; data-device=&amp;quot;BadHeizung&amp;quot; data-get=&amp;quot;batteryLevel&amp;quot;&lt;br /&gt;
     data-icons=&#039;[&amp;quot;oa-measure_battery_100&amp;quot;,&amp;quot;oa-measure_battery_75&amp;quot;,&amp;quot;oa-measure_battery_50&amp;quot;,&amp;quot;oa-measure_battery_25&amp;quot;,&amp;quot;oa-measure_battery_0&amp;quot;]&#039;&lt;br /&gt;
     data-get-on=&#039;[&amp;quot;3\\.[0-9]&amp;quot;,&amp;quot;2\\.[789]&amp;quot;,&amp;quot;2\\.[456]&amp;quot;,&amp;quot;2\\.[123]&amp;quot;,&amp;quot;((2\\.0)|([01]\\.[0-9]))&amp;quot;]&#039;&lt;br /&gt;
     data-on-colors=&#039;[&amp;quot;#505050&amp;quot;,&amp;quot;#505050&amp;quot;,&amp;quot;#505050&amp;quot;,&amp;quot;#ad3333&amp;quot;,&amp;quot;#ad3333&amp;quot;]&#039;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example for a battery level control with greater-equal compare and 90° rotated symbols&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;symbol&amp;quot; data-device=&amp;quot;BadHeizung&amp;quot; data-get=&amp;quot;batteryLevel&amp;quot;&lt;br /&gt;
    data-icons=&#039;[&amp;quot;oa-measure_battery_0 fa-rotate-90&amp;quot;,&amp;quot;oa-measure_battery_25 fa-rotate-90&amp;quot;,&amp;quot;oa-measure_battery_50 fa-rotate-90&amp;quot;,&amp;quot;oa-measure_battery_75 fa-rotate-90&amp;quot;,&amp;quot;oa-measure_battery_0 fa-rotate-90&amp;quot;]&#039;&lt;br /&gt;
    data-get-on=&#039;[&amp;quot;0&amp;quot;,&amp;quot;2&amp;quot;,&amp;quot;2.4&amp;quot;,&amp;quot;2.7&amp;quot;,&amp;quot;3.0&amp;quot;]&#039;&lt;br /&gt;
    data-on-colors=&#039;[&amp;quot;#ad3333&amp;quot;,&amp;quot;#ad3333&amp;quot;,&amp;quot;#505050&amp;quot;,&amp;quot;#505050&amp;quot;,&amp;quot;#505050&amp;quot;]&#039;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_thermostat&amp;quot;&amp;gt;&#039;&#039;&#039;Thermostat&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure as data-device=&#039;...&#039; that item which delivers temp and desired-temp as reading.&lt;br /&gt;
&lt;br /&gt;
Default parameters are:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
data-get=&amp;quot;desired-temp&amp;quot; data-temp=&amp;quot;measured-temp&amp;quot; data-set=&amp;quot;desired-temp&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Therefor for HomaMatic HM-CC-RT-DN this is sufficient.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;thermostat&amp;quot; data-device=&#039;KH_Clima&#039; class=&amp;quot;cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The long format looks like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;thermostat&amp;quot; &lt;br /&gt;
     data-device=&amp;quot;KH_Clima&amp;quot; &lt;br /&gt;
     data-get=&amp;quot;desired-temp&amp;quot; &lt;br /&gt;
     data-temp=&amp;quot;measured-temp&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example for MAX!:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;thermostat&amp;quot; data-device=&amp;quot;HZ_Tuer&amp;quot; &lt;br /&gt;
    data-valve=&amp;quot;valveposition&amp;quot; &lt;br /&gt;
    data-get=&amp;quot;desiredTemperature&amp;quot; &lt;br /&gt;
    data-temp=&amp;quot;temperature&amp;quot; &lt;br /&gt;
    data-set=&amp;quot;desiredTemperature&amp;quot; &lt;br /&gt;
    class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The wigets will show the valve value only in case of a valid data-valve attribute. The default for data-valve ist null. That means, a empty data-valve attribute hides the valve label for the widget.&lt;br /&gt;
&lt;br /&gt;
[[Datei:thermostat.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_weather&amp;quot;&amp;gt;&#039;&#039;&#039;Weather&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Widget fügt ein dem Wetter entsprechendes Bild ein. Die Daten können durch Fhem-Module wie [[PROPLANTA]], [[OPENWEATHER]] und [[Weather]] bereitgestellt werden. &lt;br /&gt;
Add &#039;big&#039; or &#039;bigger&#039; to CSS class to get a bigger weather icon.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;weather&amp;quot; &lt;br /&gt;
     data-device=&amp;quot;Weather&amp;quot; &lt;br /&gt;
     data-get=&amp;quot;fc0_weatherDay&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell big&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:weather.png]]&lt;br /&gt;
&lt;br /&gt;
== Icon-Konfiguration ==&lt;br /&gt;
&lt;br /&gt;
* Eingebaute Icons: Diese haben das ftui-Präfix. Zurzeit sind folgende verfügbar: ftui-window, ftui-door&lt;br /&gt;
&lt;br /&gt;
* Mehr als 500 Icons von &amp;quot;http://fortawesome.github.io/Font-Awesome/icons&amp;quot; verfügbar. Einfach den Icon-Namen angeben (Präfix &amp;quot;fa-&amp;quot; nicht vergessen, Z.B. &amp;lt;code&amp;gt;data-icon=&amp;quot;fa-volume-up&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Es stehen auch Openautomation Font-Files zur Verfügung. Wer sie nutzen möchte, muss folgende Stylesheets in die index.html hinzufügen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;/fhem/tablet/lib/openautomation.css&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;/fhem/tablet/lib/fhemSVG.css&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese font icons haben das Präfix &#039;fs-&#039; bzw. &#039;oa-&#039;.&lt;br /&gt;
&lt;br /&gt;
Beispiel bei einem Schalter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;div data-type=&amp;quot;switch&amp;quot; data-device=&#039;dummy1&#039; data-icon=&amp;quot;oa-secur_locked&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Und so als großes Symbol:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;symbol&amp;quot; data-device=&#039;dummy1&#039;&lt;br /&gt;
        data-icon=&amp;quot;oa-status_frost&amp;quot;&lt;br /&gt;
        data-on-color=&amp;quot;#bb3232&amp;quot;&lt;br /&gt;
        data-get-on=&amp;quot;on&amp;quot;&lt;br /&gt;
        data-get-off=&amp;quot;!on&amp;quot;&lt;br /&gt;
        class=&amp;quot;bigger&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Icons kann man auch etwas dicker darstellen mit den Zusatz bold: &amp;lt;code&amp;gt;data-icon=&amp;quot;oa-secur_locked bold&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Namen der verfügbaren Icons findet man auch in den CSS Files (openautomation.css / fhemSVG.css)&lt;br /&gt;
&lt;br /&gt;
== Spezial ==&lt;br /&gt;
Folgender Befehl setzt einen direkten Befehl an Fhem ab (&amp;lt;code&amp;gt;set dummy1 off&amp;lt;/code&amp;gt;):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
     &amp;lt;div onclick=&amp;quot;setFhemStatus(&#039;set dummy1 off&#039;)&amp;quot;&amp;gt;All off!&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
Häufig gestellte Fragen zum FHEM Tablet UI sind in der [[FHEM_Tablet_UI/FAQ|FHEM Tablet UI FAQ]] zusammengestellt.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://forum.fhem.de/index.php/topic,34233.0.html Forums-Beitrag]&lt;br /&gt;
* [https://github.com/knowthelist/fhem-tablet-ui Projekt auf Github]&lt;br /&gt;
* [http://forum.fhem.de/index.php/topic,37378.0.html User-Demos]&lt;br /&gt;
* [https://github.com/ovibox/fhem-ftui-user-demos Download der User-Demo-Dateien]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:FHEM Frontends]]&lt;/div&gt;</summary>
		<author><name>Fhainz</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=FHEM_auf_Mac_OS_X&amp;diff=11037</id>
		<title>FHEM auf Mac OS X</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=FHEM_auf_Mac_OS_X&amp;diff=11037"/>
		<updated>2015-04-18T09:03:03Z</updated>

		<summary type="html">&lt;p&gt;Fhainz: Benötigte / Optionale Pakete&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== OS X vorbereiten ==&lt;br /&gt;
&lt;br /&gt;
=== Perl installieren ===&lt;br /&gt;
Anscheinend ist die [[Perl]]-Installation von OS X nicht komplett oder fehlerhaft wodurch nach der Installation zB die Icon-List nicht komplett geladen wurde. Deshalb wird Perl zur Sicherheit nochmals neu installiert. [http://learn.perl.org/installing/osx.html]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;width:50%;&amp;quot;&amp;gt;curl -L http://xrl.us/installperlosx | bash&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Randnotiz|RNText=Optionale Pakete&lt;br /&gt;
* JSON&lt;br /&gt;
** [[Hue]]&lt;br /&gt;
** [[Volkszaehler]]&lt;br /&gt;
** [[Pushbullet]]&lt;br /&gt;
** [[withings]]&lt;br /&gt;
** [[Ubiquit mFi/mPower]]&lt;br /&gt;
** etc.&lt;br /&gt;
* Net::Telnet&lt;br /&gt;
**[[Ubiquit mFi/mPower]]&lt;br /&gt;
* Net::WebSocket::Server&lt;br /&gt;
** [[Fronthem]]&lt;br /&gt;
* XML::Simple&lt;br /&gt;
** [[Enigma2 Receiver (Dreambox, VUplus etc.) steuern|ENIGMA2 Modul]]&lt;br /&gt;
}}&lt;br /&gt;
=== Benötigte Pakete installieren ===&lt;br /&gt;
&lt;br /&gt;
In der Konsole folgende Befehle eingeben:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;width:50%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo -i&lt;br /&gt;
cpan install Bundle::CPAN&lt;br /&gt;
cpan install Device::SerialPort &lt;br /&gt;
cpan install IO::Socket::SSL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Optionale Pakete installieren ===&lt;br /&gt;
In der Konsole folgende Befehle eingeben:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;width:50%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo -i&lt;br /&gt;
cpan install JSON&lt;br /&gt;
cpan install Net::Telnet&lt;br /&gt;
cpan install Net::WebSocket::Server&lt;br /&gt;
cpan install XML::Simple&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==FHEM installieren==&lt;br /&gt;
&lt;br /&gt;
=== FHEM herunterladen ===&lt;br /&gt;
Anschließend wird FHEM von der [http://fhem.de/fhem.html#Download Website] heruntergeladen und ins gewünschte Verzeichnis entpackt. &amp;lt;br /&amp;gt;&lt;br /&gt;
In dieser Anleitung wird FHEM nach &#039;&#039;/Users/Name/fhem&#039;&#039; entpackt&lt;br /&gt;
&lt;br /&gt;
=== Makefile bearbeiten ===&lt;br /&gt;
In der Datei &#039;&#039;/Users/Name/fhem/Makefile&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;width:50%;&amp;quot;&amp;gt;BINDIR=/usr/local/bin&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
den Pfad&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;width:50%;&amp;quot;&amp;gt;BINDIR=/Users/Name/fhem&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
entsprechend ändern.&lt;br /&gt;
&lt;br /&gt;
=== FHEM installieren ===&lt;br /&gt;
In der Konsole folgende Befehle eingeben:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;width:50%;&amp;quot;&amp;gt;&lt;br /&gt;
cd /Users/Name/fhem&lt;br /&gt;
sudo make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun sollte FHEM korrekt installiert und unter der URL http://IP-Adresse:8083 erreichbar sein.&lt;br /&gt;
&lt;br /&gt;
== Infos ==&lt;br /&gt;
&lt;br /&gt;
=== FHEM starten ===&lt;br /&gt;
In der Konsole folgenden Befehl eingeben:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;width:50%;&amp;quot;&amp;gt;&lt;br /&gt;
cd /Users/Name/fhem/ &amp;amp;&amp;amp; perl fhem.pl fhem.cfg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== FHEM stoppen ===&lt;br /&gt;
In der Konsole folgende Befehle eingeben:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;width:50%;&amp;quot;&amp;gt;&lt;br /&gt;
telnet IP-Adresse 7072&lt;br /&gt;
shutdown&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
[[Kategorie:OSX]]&lt;/div&gt;</summary>
		<author><name>Fhainz</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Ubiquit_mFi/mPower&amp;diff=10879</id>
		<title>Ubiquit mFi/mPower</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Ubiquit_mFi/mPower&amp;diff=10879"/>
		<updated>2015-04-06T07:26:28Z</updated>

		<summary type="html">&lt;p&gt;Fhainz: /* Features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Ubiquiti mFi/mPower==&lt;br /&gt;
&lt;br /&gt;
{{Baustelle}}&lt;br /&gt;
&#039;&#039;&#039;Ubiquiti mFi&amp;amp;copy;/mPower&amp;amp;copy; IP Steckdosen&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Über WiFi/LAN schaltbare Steckdosenleiste mit Verbrauchsmessung. (LAN nur mit Pro Version)&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
230V IP-Steckdosenleiste mit unterschiedlicher Portanzahl. Jede Steckdose kann extra per Befehl geschaltet werden. Die angeschlossene Last wird gemessen und stellt folgende Werte pro Port zur Verfügung:&lt;br /&gt;
* Stromaufnahme&lt;br /&gt;
* Stromspannung &lt;br /&gt;
* Wirkleistungsfaktor&lt;br /&gt;
* aktuelle Energieaufnahme&lt;br /&gt;
* verbrauchte Energie - aktuelles Monat (ab Firmware 2.1.x)&lt;br /&gt;
* verbrauchte Energie - Vormonat (ab Firmware 2.1.x)&lt;br /&gt;
&lt;br /&gt;
Protokolle&lt;br /&gt;
* http, https, HTTPS, telnet, ssh, ntp&lt;br /&gt;
&lt;br /&gt;
== Allgemein ==&lt;br /&gt;
Die Leisten lassen sich komplett per Web Browser flashen,bedienen und konfigurieren. &amp;lt;br /&amp;gt;&lt;br /&gt;
Die Standard Login-Zugangsdaten zur Ubi-WEB-UI lauten: User:ubnt / Passwort: ubnt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich waren die Geräte in Verbindung mit der Ubiquiti Kontroller Software vorgesehen, können nun aber auch problemlos &amp;quot;standalone&amp;quot; verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Bei Lieferungen im April 2015 war auf allen Leisten die Firmware Version 2.0.8 installiert. Diese Firmware bietet nur rudimentäre Funktionen und auch die Energiemessung funktioniert nur in Verbindung mit der 64-Bit Java-Kontrollersoftware.&lt;br /&gt;
&#039;&#039;&#039;Darum ist ein Firmwareupdate auf mind. 2.1.8 (Stand 2/2015) notwendig.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
&lt;br /&gt;
=== Verhalten nach Stromausfall===&lt;br /&gt;
Nach einem Stromausfall (bzw. direkt nach dem Einstecken in eine Steckdose) werden die Ports nach dem Starten der Firmware immer eingeschaltet. &lt;br /&gt;
&lt;br /&gt;
=== Auslieferungsfirmware Version 2.0.8 ===&lt;br /&gt;
* In dieser Version funktioniert die Energiemessung im Standalone-Modus nicht. &lt;br /&gt;
* Keine Möglichkeit die Zeitzone sowie die NTP Zeit-Synchronistaion über die WEB-UI einzustellen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Lösung: Firmware auf mind. 2.1.8 upgraden.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Firmware Versionen ==&lt;br /&gt;
Folgende Versionen wurden von Ubiquiti zum Download freigegeben.&lt;br /&gt;
&lt;br /&gt;
*    2.0.7&lt;br /&gt;
* 2.0.8 (Download nicht auffindbar - Standard-Auslieferungsversion? &lt;br /&gt;
*    2.0.12&lt;br /&gt;
*    2.0.13&lt;br /&gt;
*    2.0.14&lt;br /&gt;
*    2.0.15&lt;br /&gt;
*    2.0.23&lt;br /&gt;
*    2.0.24&lt;br /&gt;
*    2.1.1&lt;br /&gt;
*    2.1.2&lt;br /&gt;
*    2.1.3&lt;br /&gt;
*    2.1.4&lt;br /&gt;
*    2.1.5&lt;br /&gt;
*    2.1.8 - 2015-02-26&lt;br /&gt;
 &lt;br /&gt;
== Modelle EU Raum ==&lt;br /&gt;
* 1 Port / P1E / WiFi&lt;br /&gt;
* 3 Port / P3E / WiFi&lt;br /&gt;
* 6 Port / P6E / WiFi &amp;amp; LAN (Pro Version)&lt;br /&gt;
&lt;br /&gt;
=== Spezifikationen mPower Pro (EU)===&lt;br /&gt;
[[Datei:Ubi-mPower6eu.jpg|200px|thumb|right|mPower 6 Port EU]]&lt;br /&gt;
* Größe: 250.37 x 116.7 x 49 mm&lt;br /&gt;
* Gewicht: 754,4g&lt;br /&gt;
* Spannung: 220-250VAC, 50Hz, 16A pro Ausgang, 16A Gesamt&lt;br /&gt;
* Ausgänge: 6&lt;br /&gt;
* Speicher: 16 MB RAM, 8 MB Flash&lt;br /&gt;
* LAN: 1 x 10/100 Ethernet&lt;br /&gt;
* WiFi Standard: 802.11b/g/n&lt;br /&gt;
* LEDs: 1 LED Status&lt;br /&gt;
* Betriebstemperatur: 0 bis 40°C&lt;br /&gt;
* Luftfeuchte: 10 bis 90% Nichtkondensierend&lt;br /&gt;
&lt;br /&gt;
=== Spezifikationen mPower (EU)===&lt;br /&gt;
[[Datei:Ubi-mPower3eu.jpg|200px|thumb|right|mPower 3 Port EU]]&lt;br /&gt;
* Größe: 240 x 82.8 x 41.5 mm&lt;br /&gt;
* Gewicht: 545g&lt;br /&gt;
* Spannung: 220-250VAC, 50Hz, 16A pro Ausgang, 16A Gesamt&lt;br /&gt;
* Ausgänge: 3&lt;br /&gt;
* Speicher: 16 MB RAM, 8 MB Flash&lt;br /&gt;
* WiFi Standard: 802.11b/g/n&lt;br /&gt;
* LEDs: 1 LED Status&lt;br /&gt;
* Betriebstemperatur: -10 bis 45°C&lt;br /&gt;
* Luftfeuchte: 95% max.&lt;br /&gt;
&lt;br /&gt;
=== Spezifikationen mPower mini (EU)===&lt;br /&gt;
[[Datei:Ubi-mPower1eu.jpg|100px|thumb|right|mPower 1 Port EU]]&lt;br /&gt;
* Größe: 110.8 x 71 x 67.7 mm&lt;br /&gt;
* Gewicht: 170g&lt;br /&gt;
* Spannung: 220-250VAC, 50Hz, 10A &lt;br /&gt;
* Ausgänge: 1&lt;br /&gt;
* Speicher: 16 MB RAM, 8 MB Flash&lt;br /&gt;
* WiFi Standard: 802.11b/g/n&lt;br /&gt;
* LEDs: 1 LED Status&lt;br /&gt;
* Betriebstemperatur: 0 bis 40°C&lt;br /&gt;
* Luftfeuchte: 10 bis 90% Nichtkondensierend&lt;br /&gt;
&lt;br /&gt;
== Hinweis zum Betrieb mit FHEM ==&lt;br /&gt;
Es befindet sich gerade ein neues Modul in Entwicklung. Die Infos dazu sind in dieser [http://forum.fhem.de/index.php/topic,35722.0.html Diskussion im Fhem Forum]zu finden.&lt;br /&gt;
&lt;br /&gt;
== Ersteinrichtung ohne Controller == &lt;br /&gt;
&lt;br /&gt;
=== Ersteinrichtung der Leiste ohne Controller / Iphone ===&lt;br /&gt;
&lt;br /&gt;
Smartphone / z.B. mit dem  Iphone unter IOS7 &amp;lt;br /&amp;gt;&lt;br /&gt;
Ubiquiti Auslieferungs-Firmware Version: 2.0.8&lt;br /&gt;
&lt;br /&gt;
#    Reset der Leiste mit &amp;quot;Factory reset&amp;quot; - Drücken der reset Taste auf der Leiste für mindestend 10 Sekunden.  &amp;lt;br /&amp;gt;Die Leiste startet neu hoch und erstellt einen Accesspoint mit einer eigenen SSID mit dem Namen mfi-xxxxx.   &lt;br /&gt;
#    Verbinden mit dem neuen WLAN Netzwerk - nach ein paar Sekunden erscheint die UBI-Web Oberfläche automtatisch. (Captive Portal).  &amp;lt;br /&amp;gt; Einfach warten, bis das Portal erscheint, das kann schon mal 10 bis 20 Sekunden dauern. &lt;br /&gt;
#    Sobald das Portal sichtbar ist, das eigene WLAN auswählen und die Zugangsdaten eingeben.&lt;br /&gt;
#    Danach den mFi Account konfigurieren. Dabei ist der Eintrag Personal auszuwählen und alles andere frei zu lassen. &lt;br /&gt;
#    Apply dücken, die mPower Leiste startet neu und nach ca. 1 Minute sollte sie sich mit dem WiFi verbunden haben und per DHCP eine IP-Adresse  erhalten haben. &lt;br /&gt;
#    Um die IP-Adresse herauszufinden, einfach das [http://www.ubnt.com/downloads/discovery/ubnt-discovery-v2.3.zip IP-Address Ubiquiti Discovery Tool v2.3] runterladen und entpacken.  &amp;lt;br /&amp;gt;Dann die .bat oder die .jar Datei doppelklicken und  das Tool sucht im lokalen Netz nach UBI-Produkten. &lt;br /&gt;
#    Nun die Firmware Version 2.1.8 von http://www.ubnt.com/downloads/mfi/2.1.8/firmware/M2M/firmware.bin   downloaden.  &amp;lt;br /&amp;gt; Ab der 2.1x Version gibt es für alle Leisten (1-Port, 3-Port und 6 Port) die selbe firmware.bin   &lt;br /&gt;
#    Jetzt wird die Leiste mit einem Browser geflasht (am Besten mit Firefox) indem man auf die IP der Leiste geht und direkt zur upgrade.cgi surft. &amp;lt;br /&amp;gt;   &#039;&#039;&#039;&amp;lt;nowiki&amp;gt; http://IP-UBILeiste/upgrade.cgi&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;    -     Username=ubnt / Passwort=ubnt  &amp;lt;br /&amp;gt;Wenn das Upgrade fertig ist bleibt der Updatebalken  bei 100% stehen. &lt;br /&gt;
#   &#039;&#039;&#039;Nach dem Updaten die Ports der Leiste über die WEB Oberfläche aus- und einschalten.&#039;&#039;&#039;  &amp;lt;br /&amp;gt;Ab sofort zählt sie dann auch die verbrauchte Energie wie gewünscht ohne Ubi-Kontroller!&lt;br /&gt;
# Weiter geht es mit der Einrichtung der  [[#Einstellung_der_Timezone_und_NTP_Timesync|Zeitzone/Timesync]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Screenshots Iphone:&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Ubi-discoverytool.JPG|Ubi Discovery Toolbox&lt;br /&gt;
File:Iphone-captive1.jpg|Captive Portal - select WiFi Network / mFi Account&lt;br /&gt;
File:Iphone-captive2.jpg|Captive Portal - select mFi Account&lt;br /&gt;
File:upgrade-2-0-8.jpg|UBI Web UI - upgrade.cgi&lt;br /&gt;
File:upgrade-2-0-8-final.jpg|UBI Web UI - upgrade.cgi done&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ersteinrichtung der Leiste ohne Controller / Windows7 ===&lt;br /&gt;
&lt;br /&gt;
#    Reset der Leiste mit &amp;quot;Factory reset&amp;quot; - Drücken der reset Taste auf der Leiste für mindestend 10 Sekunden.  &amp;lt;br /&amp;gt;Die Leiste startet neu hoch und erstellt einen Accesspoint mit einer eigenen SSID mit dem Namen mfi-xxxxx.   &lt;br /&gt;
# Verbinden des PC  mit dem neuen WLAN Netzwerk. &lt;br /&gt;
# Warten bis das Fenster zum neuen Netzwerk erscheint - dann Heimnetzwerk wählen. &lt;br /&gt;
# Dann mit dem Firefox auf &amp;lt;nowiki&amp;gt; http://192.168.2.20 &amp;lt;/nowiki&amp;gt; gehen und eine Ausnahme für das Zertifikat hinzufügen. &lt;br /&gt;
# Es erschein  die Konfigurationsseite. Dort Network scannen und die Security Daten des WLAN eingeben. &#039;&#039;&#039;Beim mFi Account ist NICHTS auszuwählen - alles leer lassen! &#039;&#039;&#039;&lt;br /&gt;
# Apply dücken. Die mPower Leiste startet neu und nach ca. 1 Minute sollte sie sich mit dem WiFi verbunden haben und per DHCP eine IP-Adresse  erhalten haben &lt;br /&gt;
#    Um die IP-Adresse herauszufinden, einfach das [http://www.ubnt.com/downloads/discovery/ubnt-discovery-v2.3.zip IP-Address Ubiquiti Discovery Tool v2.3] runterladen und entpacken.  &amp;lt;br /&amp;gt;Dann die .bat oder die .jar Datei doppelklicken und  das Tool sucht im lokalen Netz nach UBI-Produkten. &lt;br /&gt;
#    Nun die Firmware Version 2.1.8 von http://www.ubnt.com/downloads/mfi/2.1.8/firmware/M2M/firmware.bin   downloaden.  &amp;lt;br /&amp;gt; Ab der 2.1x Version gibt es für alle Leisten (1-Port, 3-Port und 6 Port) die selbe firmware.bin.&lt;br /&gt;
#   Vor dem Flashen mit dem Browser normal  auf die Leiste surfen. &amp;lt;nowiki&amp;gt; http://IP-Leiste&amp;lt;/nowiki&amp;gt; &amp;lt;br /&amp;gt; Wechseln zum Reiter Configuration. Wenn nochmal die Konfigurationsseite kommen sollte, einfach den Kontroller neu einstellen - alles leer lassen.  &lt;br /&gt;
#    Jetzt wird die Leiste mit einem Browser geflasht (am Besten mit Firefox) indem man auf die IP der Leiste geht und direkt zur upgrade.cgi surft. &amp;lt;br /&amp;gt;   &#039;&#039;&#039;&amp;lt;nowiki&amp;gt; http://IP-UBILeiste/upgrade.cgi&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;    -     Username=ubnt / Passwort=ubnt  &amp;lt;br /&amp;gt;Wenn das Upgrade fertig ist bleibt der Updatebalken  bei 100% stehen. &lt;br /&gt;
#   &#039;&#039;&#039;Nach dem Updaten die Ports der Leiste über die WEB Oberfläche aus- und einschalten.&#039;&#039;&#039;  &amp;lt;br /&amp;gt;Ab sofort zählt sie dann auch die verbrauchte Energie wie gewünscht ohne Ubi-Kontroller!&lt;br /&gt;
# Weiter geht es mit der Einrichtung der  [[#Einstellung_der_Timezone_und_NTP_Timesync|Zeitzone/Timesync]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Screenshots:&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Pc-wlan1.jpg|WiFi verbinden&lt;br /&gt;
File:Pc-wlan2-netzwerk.JPG|Netztwerktyp&lt;br /&gt;
File:Pc-wlan3-firefox.JPG|Firefox Zertifikat 1&lt;br /&gt;
File:Pc-wlan4-firefox.JPG|Firefox Zertifikat 2&lt;br /&gt;
File:Pc-wlan5-firefox.JPG|UBI Config UI&lt;br /&gt;
File:Pc-wlan7-firefox.JPG|UBI Config UI&lt;br /&gt;
File:Iphone-captive2.jpg|UBI FW 2.0.8 UI&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Einstellung der Timezone und NTP Timesync ===&lt;br /&gt;
Die UBI-Web-UI der Firmware 2.1.8 zeigt 2 neue Reiter System und Machines.&lt;br /&gt;
Im Reiter System  wird die Zeitzone eingestellt. &amp;lt;br /&amp;gt; GMT+1 Central European Time (Daylight Savings) und aktivieren Enable NTP Client mit dem Server pool-ntp.org. &amp;lt;br /&amp;gt;&lt;br /&gt;
Dann den Button &amp;quot;Change&amp;quot;  klicken und &amp;quot;Configuration contains changes. Apply these changes? APPLY&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ab sofort hat die Leiste immer die richtige Zeit.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
File:ubi-fw-2.1.8-ui.jpg|Web UI 2.1.8&lt;br /&gt;
File:ubi-zeitzone.jpg|Zeitzoneneinstellung&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* Website von Ubiquiti[http://www.ubnt.com/]&lt;br /&gt;
* PDF Datenblatt mFi/mPower [http://dl.ubnt.com/datasheets/mfi/mFi_DS.pdf]&lt;br /&gt;
* Forum des Herstellers [http://community.ubnt.com/t5/mFi/bd-p/mFi]&lt;br /&gt;
* mFi/mPower Firmware release 2.1.8 (2/2015) [http://community.ubnt.com/t5/mFi/mFi-release-2-1-8/td-p/1188368/jump-to/first-unread-message]&lt;br /&gt;
* Upgrade Prozedur aus dem Ubiquiti Forum [https://community.ubnt.com/t5/mFi-Frequently-Asked-Questions/mFi-Can-I-upgrade-mFi-device-firmware-manually/ta-p/485311]&lt;br /&gt;
* Varia Store Deutschland (Bezugsquelle) [http://varia-store.com/Hardware/UBIQUITI-Networks:::637_734.html]&lt;br /&gt;
* Forenbeitrag Fhem: {{Link2Forum|Topic=35722}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:IP Components]]&lt;br /&gt;
[[Kategorie:Schalter (Empfänger)]]&lt;br /&gt;
[[Kategorie:Energieverbrauchsmessung]]&lt;/div&gt;</summary>
		<author><name>Fhainz</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Fronthem_Installation&amp;diff=10588</id>
		<title>Fronthem Installation</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Fronthem_Installation&amp;diff=10588"/>
		<updated>2015-03-22T09:05:26Z</updated>

		<summary type="html">&lt;p&gt;Fhainz: /* Installation Fronthem */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Einen Überblick über Fronthem findet man auf der Seite zu [[Fronthem]]&lt;br /&gt;
&lt;br /&gt;
== Allgemein ==&lt;br /&gt;
=== Fhem ===&lt;br /&gt;
Ein lauffähiges Fhem mit einem aktuellen Update sollte installiert sein.&lt;br /&gt;
&lt;br /&gt;
=== Webserver ===&lt;br /&gt;
Für smartVISU muss ein Webserver (z.B. lighttpd oder Apache oder nginx) installiert sein.&lt;br /&gt;
&lt;br /&gt;
==== lighttpd ====&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get update&lt;br /&gt;
    sudo apt-get install lighttpd&lt;br /&gt;
    sudo apt-get install php5-common php5-cgi php5&lt;br /&gt;
    cd /var/www&lt;br /&gt;
    sudo lighty-enable-mod fastcgi-php&lt;br /&gt;
    sudo service lighttpd force-reload&lt;br /&gt;
    sudo chown www-data:www-data /var/www&lt;br /&gt;
    sudo chmod 775 /var/www&lt;br /&gt;
    sudo usermod -a -G www-data pi&lt;br /&gt;
    sudo usermod -a -G www-data bananapi&lt;br /&gt;
&lt;br /&gt;
==== nginx ====&lt;br /&gt;
Folgende Pakete werden benötigt:&lt;br /&gt;
 $ apt-get install nginx php5-fpm&lt;br /&gt;
&lt;br /&gt;
Die Konfiguration für nginx kann man unter&lt;br /&gt;
 sudo nano /etc/nginx/sites-enabled/default&lt;br /&gt;
vornehmen.&lt;br /&gt;
&lt;br /&gt;
Folgende Konfiguration sollte direkt funktionieren:&lt;br /&gt;
 server {&lt;br /&gt;
 listen 80;&lt;br /&gt;
 root /var/www;&lt;br /&gt;
 index index.html index.php;&lt;br /&gt;
 server_name localhost;&lt;br /&gt;
 location / {&lt;br /&gt;
 try_files $uri $uri/ /index.php?$args;&lt;br /&gt;
 }&lt;br /&gt;
 location ~ \.php$ {&lt;br /&gt;
 try_files $uri =404;&lt;br /&gt;
 fastcgi_pass unix:/var/run/php5-fpm.sock;&lt;br /&gt;
 fastcgi_index index.php;&lt;br /&gt;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;&lt;br /&gt;
 include fastcgi_params;&lt;br /&gt;
 }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Installation smartVISU ==&lt;br /&gt;
Die Installation stammt aus Jörg Herrmanns git-Repo: https://github.com/herrmannj/smartvisu-cleaninstall&lt;br /&gt;
&lt;br /&gt;
Folgende Pakete werden benötigt:&lt;br /&gt;
 $ apt-get install git&lt;br /&gt;
&lt;br /&gt;
Hierbei handelt es sich um das original smartVISU inkl. diverser Anpassungen (fhem-Treiber, ...).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Download:&#039;&#039;&#039;&lt;br /&gt;
 $ mkdir ~/install&lt;br /&gt;
 $ cd ~/install&lt;br /&gt;
 $ git clone https://github.com/herrmannj/smartvisu-cleaninstall.git&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Installation:&#039;&#039;&#039;&lt;br /&gt;
 $ sudo cp -rp smartvisu-cleaninstall /var/www/smartvisu&lt;br /&gt;
 $ cd /var/www&lt;br /&gt;
 $ sudo chown -R www-data:www-data smartvisu&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Installation überprüfen:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Beim Aufruf der Seite http://&amp;lt;IP-Adresse&amp;gt;/smartvisu sollte folgende Seite angezeigt werden: {{Randnotiz|RNTyp=y|RNText=Wenn ihr hier einen Fehler erhaltet und euch nicht die SmartVisu Seite angezeigt wird müsst ihr die Datei &amp;quot;config.ini.default&amp;quot; zu &amp;quot;config.ini&amp;quot; umbenennen, am besten erstellt ihr eine neue Kopie wie folgt:&lt;br /&gt;
&amp;lt;code&amp;gt;$ sudo cp /var/www/smartvisu/config.ini.default /var/www/smartvisu/config.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
Ebenso bitte ggf. in der php.ini (error_reporting) die Ausgabe von Warnings abschalten, wenn so was kommt wie &amp;quot;Notice: Undefined index...&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Datei:Installation_SmartVISU.png]]&lt;br /&gt;
&lt;br /&gt;
== Installation Fronthem ==&lt;br /&gt;
Folgende Pakete werden benötigt:&lt;br /&gt;
 curl -L https://cpanmin.us | perl - --sudo App::cpanminus&lt;br /&gt;
 sudo cpanm Net::WebSocket::Server&lt;br /&gt;
 sudo cpanm JSON&lt;br /&gt;
&lt;br /&gt;
Mit folgendem Befehl kann man Fronthem installieren / updaten:&lt;br /&gt;
 update force https://raw.githubusercontent.com/herrmannj/fronthem/master/controls_fronthem.txt&lt;br /&gt;
&lt;br /&gt;
Konfiguration von Fronthem in Fhem  (Eingabe in der Fhem Web Kommandozeile):&lt;br /&gt;
 define &amp;lt;Name Webservice&amp;gt; fronthem&lt;br /&gt;
 define &amp;lt;Name Endgerät&amp;gt; fronthemDevice &amp;lt;IP Endgerät&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
 define meinfronthem fronthem&lt;br /&gt;
 define meiniphone fronthemDevice 192.168.178.25&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Save&amp;quot; nicht vergessen!&lt;br /&gt;
Näheres dazu findet man auch unter http://www.fhemwiki.de/wiki/Fronthem#Basic_Syntax&lt;br /&gt;
&lt;br /&gt;
== Eigenes smartVISU Projekt anlegen ==&lt;br /&gt;
*  im Ordner &amp;quot;&#039;&#039;/var/www/smartVISU/pages&#039;&#039;&amp;quot; einen neuen Ordner &amp;quot;&#039;&#039;MeinHaus&amp;quot;&#039;&#039; anlegen.&lt;br /&gt;
*  aus dem Ordner &amp;quot;&#039;&#039;../pages/_template&#039;&#039;&amp;quot; alles in den neuen Ordner (&amp;quot;&#039;&#039;/var/www/smartVISU/pages/MeinHaus&amp;quot;&#039;&#039;) kopieren.&lt;br /&gt;
*  &amp;quot;&#039;&#039;rooms_menu.html&#039;&#039;&amp;quot; an eigene Gegebenheiten anpassen hierzu dienen die &amp;quot;_template-Dateien&amp;quot; als Orientierung.&lt;br /&gt;
* alle rooms anlegen durch Kopien des Beispielraumes (&#039;&#039;room_sleeping.html&#039;&#039;) und passende icons und Überschriften verteilen. ([http://www.smartvisu.de/docu/2.7/index.php?page=design/design_icons SmartVisu Icons])&lt;br /&gt;
* SmartVISU nutzt [http://twig.sensiolabs.org/ Twig] als Template engine und die Seiten bestehen aus Blöcken und Widgets, die immer in doppelten geschweiften Klammern stehen &amp;lt;nowiki&amp;gt;{{ ... }}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* Widget Syntax auf [http://www.smartvisu.de/docu/2.7/index.php SmartVISU Doku] nachschlagen und kopieren.&lt;br /&gt;
* innerhalb eines Raums zwischen {% block content %} und {% endblock %} als Beispiel folgenden Abschnitt einfügen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;&amp;lt;img class=&amp;quot;icon&amp;quot; src=&#039;{{ icon0 }}scene_livingroom.png&#039;/&amp;gt;Wohnzimmer&amp;lt;/h1&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;preblock&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;block&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;set-2&amp;quot; data-role=&amp;quot;collapsible-set&amp;quot; data-theme=&amp;quot;c&amp;quot; data-content-theme=&amp;quot;a&amp;quot; data-mini=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;div data-role=&amp;quot;collapsible&amp;quot; data-collapsed=&amp;quot;false&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;h3&amp;gt;Licht&amp;lt;/h3&amp;gt;&lt;br /&gt;
          &amp;lt;table width=&amp;quot;90%&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&amp;lt;td align=&amp;quot;left&amp;quot; width=&amp;quot;100px&amp;quot;&amp;gt;&amp;amp;nbsp;{{ basic.switch(&#039;Leselampe&#039;, &#039;Leselampe.sw&#039;, icon1~&#039;light_floor_lamp.png&#039;, icon0~&#039;light_floor_lamp.png&#039;) }}&amp;lt;/td&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;Leselampe&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
          &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
   &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Datei speichern und checken, dass die Rechte mindestens auf &amp;quot;755&amp;quot; stehen, ansonsten  mit &amp;quot;sudo chmod 755&amp;quot; korrigieren.&lt;br /&gt;
* smartVISU aufrufen, Zahnrad = configmenü, eigenes Haus auswählen (Ordnername!) und als Treiber DOMOTIGA (oder auch FHEM) mit Port 2121 mit der IP des FHEM-Servers&lt;br /&gt;
* speichern der Config nicht vergessen (Save ganz unten!)&lt;br /&gt;
* jetzt ist es wichtig, dass ihr einmal eure Seiten in Smartvisu aufruft damit im Hintergrund die GADs erstellt werden.&lt;br /&gt;
* In Fhem eure fronthemDevice Detailansicht öffnen&lt;br /&gt;
* Nun seht ihr eure GADs, aus der gadliste ein gad auswählen (hier: &amp;quot;Leselampe.sw&amp;quot; wie im obigen Code-Beispiel definiert.) und die Parameter vergeben:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    device: &amp;lt;fhem-Name-des-fhem-devices&amp;gt; (in diesem Fall die Leselampe.sw)&lt;br /&gt;
    reading: state&lt;br /&gt;
    converter: OnOff&lt;br /&gt;
    cmd set: state&lt;br /&gt;
    write: ja (haken setzen)&lt;br /&gt;
    read: ja (haken setzen)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: &amp;quot;state&amp;quot; immer klein schreiben und speichern nicht vergessen!&lt;br /&gt;
* Die Settings für das Device gelten für alle Endgeräte, aber die read/write Rechte müssen für jedes Endgerät separat gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
== Verbindung smartVISU mit Fhem ==&lt;br /&gt;
=== Konfiguration smartVISU-Treiber ===&lt;br /&gt;
==== Interface ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== I/O-Connection ====&lt;br /&gt;
Unter smartVISU in die Konfigurationsoberfläche wechseln (http://&amp;lt;IP-Adresse&amp;gt;/smartvisu/index.php?page=config)&lt;br /&gt;
&lt;br /&gt;
Driver: &#039;&#039;Fhem&#039;&#039;  (wird in Github von hermmanj bereitgestellt, falls smartvisu nicht von dort bezogen wird)&lt;br /&gt;
&lt;br /&gt;
Adresse: &#039;&#039;&amp;lt;IP-Adresse Fhem-Server&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Port: &#039;&#039;2121&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
TODO&lt;/div&gt;</summary>
		<author><name>Fhainz</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Fronthem&amp;diff=9952</id>
		<title>Fronthem</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Fronthem&amp;diff=9952"/>
		<updated>2015-02-08T11:02:48Z</updated>

		<summary type="html">&lt;p&gt;Fhainz: /* Löschungs Aufruf geändert  */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=Anbindung von externen Frontends an FHEM (befindet sich in der Alpha-Phase)&lt;br /&gt;
|ModType=x&lt;br /&gt;
&amp;lt;!-- |ModCategory= (noch?) nicht verwendet --&amp;gt;&lt;br /&gt;
&amp;lt;!-- |ModCmdRef=   wird automatisch generiert --&amp;gt;&lt;br /&gt;
|ModForumArea=Sonstige Systeme&lt;br /&gt;
|ModTechName=01_fronthem.pm&lt;br /&gt;
|ModOwner=[http://forum.fhem.de/index.php?action=profile;u=769 Jörg alias herrmannj]&lt;br /&gt;
}}&lt;br /&gt;
Fronthem ist ein Projekt von herrmannj und wurde im fhem-Forum erstmalig angekündigt: http://forum.fhem.de/index.php/topic,27291.0.html&lt;br /&gt;
&lt;br /&gt;
Fronthem verfolgt die Idee, ein externes Web-Frontend (z. B. smartVISU http://smartvisu.de) an fhem anzukoppeln und den Datenverkehr sowie die Zusammenarbeit von Befehlen und Parametern zwischen FHEM und dem Web-Frontend zu übernehmen.&lt;br /&gt;
&lt;br /&gt;
Eine Installation für die Verwendung von smartVISU mit Fronthem findet man hier [[Installation Fronthem|Installation Fronthem]].&lt;br /&gt;
&lt;br /&gt;
Dazu besteht fronthem aus vier Bausteinen:&lt;br /&gt;
&lt;br /&gt;
==Bausteine==&lt;br /&gt;
=== websocket ===&lt;br /&gt;
Der Websocket ist eine generische http-Schnittstelle, die von einem externen Frontend aus angesprochen werden kann.&lt;br /&gt;
&lt;br /&gt;
Der Websocket wird durch ein fhem-Modul 01_fronthem.pm realisiert, das im Ordner .../fhem/FHEM/ abgelegt wird.&lt;br /&gt;
&lt;br /&gt;
Der Websocket ist auf Port 2121 fest eingestellt, wird implizit durch die anderen Bausteine verwendet und benötigt im Prinzip keine weitere Beachtung, außer man möchte das Webinterface auf einem anderen Device neben FHEM laufen lassen.&lt;br /&gt;
&lt;br /&gt;
=== device connector ===&lt;br /&gt;
Die Device-Connectoren dienen dazu, Endgeräte des Benutzers (PCs, Tablets, Smartphones usw.) als Clients zuzulassen und deren Berechtigungen (read, write) auf der Ebene einzelner Objekte zu steuern. Damit können z. B. die lieben Kinder zwar das Licht und die eigene Heizung steuern, aber nicht die Heizung umprogrammieren oder den Alarm ausschalten. Auch ein PIN-Schutz ist vorgesehen, im Moment aber noch nicht umgesetzt.&lt;br /&gt;
&lt;br /&gt;
Die Device-Connectoren werden durch das fhem-Modul 31_fronthemDevice.pm realisiert, welches im Ordner .../fhem/FHEM/ abgelegt wird.&lt;br /&gt;
&lt;br /&gt;
An den einzelnen Device-Connectoren werden die durch den websocket vom externen Frontend mitgeteilten Objekte aufgelistet und können dort einerseits mit fhem devices und andererseits in den Berechtigungen des jeweiligen Endgerätes konfiguriert werden.&lt;br /&gt;
&lt;br /&gt;
Umgekehrt bedeutet dies, dass man die Kombination der Frontend-items mit den fhem-Devices über die Converter nur einmal pro item machen muss, die Berechtigungen der verwendeten Endgeräte muss man aber jeweils pro Endgerät einzeln setzen.&lt;br /&gt;
&lt;br /&gt;
=== readings converter ===&lt;br /&gt;
Die Readings von fhem müssen in die Form der möglichen Werte des Frontends umgewandelt werden. Im umgekehrten Fall müssen Befehle des Frontends in fhem kompatible Befehle umgesetzt werden.&lt;br /&gt;
Diese Aufgabe übernehmen die Readings Converter. Sie werden durch die Datei fhconverter.pm realisiert, die im Ordner .../fhem/FHEM/ abgelegt wird. &lt;br /&gt;
Bisher gibt es folgende Converter:&lt;br /&gt;
* [[#Direct]] für Übertragung ohne Konvertierung&lt;br /&gt;
* [[#NumDirect]] für Übertragung von Zahlenwerten in einem begrenzten Werteraum zwischen Min und Max&lt;br /&gt;
* [[#NumDisplay]] für Zahlenwerte aus fhem Readings, nur lesend&lt;br /&gt;
* [[#WordDisplay]] ist in Planung, für Übertragung von selbst definierbaren Wörtern/Sätze&lt;br /&gt;
* [[#OnOff]] für Schalter, Übersetzung von On in 1 und Off in 0&lt;br /&gt;
* [[#RGBCombined]] für Übertragung von RGB-Werten so das sie FHEM akzeptiert&lt;br /&gt;
Näheres zu denn Convertern unter [[#Converter]]&lt;br /&gt;
&lt;br /&gt;
Weitere Readings Converter werden noch folgen.&lt;br /&gt;
&lt;br /&gt;
=== fronthemEditor ===&lt;br /&gt;
Der Javascript Editor ist eine fhem WebIF Erweiterung, um die Bindung der fremden Frontend-Objekte an FHEM Devices/Readings vorzunehmen und die dazu notwendigen Konvertierungen zu wählen.&lt;br /&gt;
Er wird durch die Datei fronthemEditor.js repräsentiert, die in den Ordner .../fhem/www/frontend/pgm2/ kopiert wird.&lt;br /&gt;
&lt;br /&gt;
Der Editor erscheint in fhem als komplette gad-Liste in den Details von jedem definierten fronthemDevice. Das mag auf den ersten Blick irreführend sein, weil die Definition der gad/items/plots fhem-global geschieht, war aber wohl die beste mögliche Umsetzung zur Zeit.&lt;br /&gt;
&lt;br /&gt;
Man muss also durch den Editor an einem beliebigen fronthemDevice die Verknüpfung zwischen fhem-devices und smartVISU items herstellen, dann gilt diese für alle fhem Devices. Nur die Berechtigungen der einzelnen fhem Devices werden unterschiedlich gepflegt. (im Moment aber inaktiviert!)&lt;br /&gt;
&lt;br /&gt;
==Basic Syntax==&lt;br /&gt;
===Websocket===&lt;br /&gt;
:&amp;lt;code&amp;gt;define &amp;lt;name&amp;gt; fronthem&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Device Connector===&lt;br /&gt;
Man muss jedes Device, mit dem man zugreifen will definieren.&lt;br /&gt;
&lt;br /&gt;
Dadurch kann genau festgelegt werden, welches Device Rechte für eine jeweilige Schaltfunktion hat.&lt;br /&gt;
====IP-Identify====&lt;br /&gt;
Identifizierung per IP-Adresse. Dies ist nur im internen Netzwerk sehr sinnvoll.&lt;br /&gt;
Ein Device wird definiert mit:&lt;br /&gt;
:&amp;lt;code&amp;gt;define &amp;lt;device&amp;gt; fronthemDevice &amp;lt;ip&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
====Zertificate-Identify====&lt;br /&gt;
Das Device wird über ein Zertifikat identifiziert.&lt;br /&gt;
Zuerst wird ein Zertifikat generiert, welches dann auf dem Device installiert werden muss.&lt;br /&gt;
&lt;br /&gt;
Diese Methode der Identifizierung verspricht höhere Sicherheit, wie auch denn Vorteil, das man sich nicht einloggen muss.&lt;br /&gt;
&lt;br /&gt;
Diese Funktion ist noch in Entwicklung.&lt;br /&gt;
&lt;br /&gt;
==Converter==&lt;br /&gt;
Die Converter sind alle kompatibel mit dem oben erwähnten Frontend SmartVisu und werden auf Basis dieses Frontends erklärt.&lt;br /&gt;
&lt;br /&gt;
Wenn jemand ein anderes Frontend verwenden will, muss er möglicherweise die Converter anpassen.&lt;br /&gt;
===Direct===&lt;br /&gt;
Die Werte werden ohne Konvertierung weitergegeben.&lt;br /&gt;
&lt;br /&gt;
Gibt den Wert des von &amp;lt;reading&amp;gt; ohne weitere Wandlung an das Frontend weiter. In umgekehrter Richtung wird der vom Frontend geliefert Wert ohne Wandlung im hinterlegten &amp;lt;set&amp;gt; eingesetzt.&lt;br /&gt;
&lt;br /&gt;
Beispiel: &lt;br /&gt;
Anzeige eines An- oder Abwesenheitszustandes im Frontend (Textanzeige, Icon, Button)&lt;br /&gt;
&lt;br /&gt;
===NumDirect===&lt;br /&gt;
NumDirect arbeitet bidirektional. Die Werte werden genau wie bei Direct ohne Umwandlung weitergegeben.&lt;br /&gt;
&lt;br /&gt;
Der feine Unterschied zu Direct ist jedoch, das nur Zahlenwerte übergeben werden können.&lt;br /&gt;
&lt;br /&gt;
Desweiteren kann man einen minimalen und maximalen Wert mitangeben. Dies hat denn Sinn, das man keine Werte einstellen kann, die überhaupt nicht möglich wären.&lt;br /&gt;
&lt;br /&gt;
In der SmartVisu kann man z.B. -100°C einstellen, das wäre in FHEM jedoch gar nicht möglich.&lt;br /&gt;
&lt;br /&gt;
===NumDelayed===&lt;br /&gt;
NumDelayed ist noch in Arbeit.&lt;br /&gt;
&lt;br /&gt;
Ein bidirektionaler numerischer Converter mit einstellbarer Verzögerung.&lt;br /&gt;
&lt;br /&gt;
Bietet bei der Ansteuerung mechanischer Aktoren (Markise, Jalousie) Vorteile gegenüber NumDirect. Als Beispiel sei die Steuerung einer Jalousie über einen Slider genannt. Da Slider ihre Werte kontinuierlich an FHEM übermitteln, würde bei der Verwendung anderer Converter dem entsprechenden Aktor (z.B. HM-BP), während der Benutzer den Slider bedient, mehrfach der vermeindliche Sollwert übermittelt werden. Gleichzeitig beginnt der Aktor seine Fahrt und übermittelt dem Slider seine aktuelle ist Position. Das führt zu einem springen des Sliders und einer &amp;quot;unschönen&amp;quot; Bedienung.&lt;br /&gt;
&lt;br /&gt;
NumDelayed nimmt daher die Signale des Sliders entgegen, wartet jedoch mit der Weitergabe solange, bis sich der Slider (xxx ms, konfigurierbar) nicht mehr bewegt. In Gegenrichtung wird ebenso verfahren, erst wenn der Aktor seine Endposition erreicht, wird der Slider im Frontend aktualisiert. In diesem Beispiel würde das bedeuten das der Slider im Normalfall ohnehin so steht (Soll) wie vom Aktor gemeldet (Ist). Natürlich könnte der Benutzer oder ein Hindernis die Fahrt auch unterbrochen haben, dann würde der Slider auf die gemeldete Position aktualisiert.&lt;br /&gt;
&lt;br /&gt;
===NumDisplay===&lt;br /&gt;
NumDisplay arbeitet nur in eine Richting, FHEM zu Frontend. Die Werte werden ohne Umwandlung weitergegeben.&lt;br /&gt;
&lt;br /&gt;
Es ist dazu gedacht Zahlenwerte zu übergeben, ohne etwas zu verändern.&lt;br /&gt;
&lt;br /&gt;
z.B. für Temperaturwerte&lt;br /&gt;
&lt;br /&gt;
===WordDisplay===&lt;br /&gt;
WordDisplay ist derzeit in Planung, es wird noch über die Umsetzung diskutiert.&lt;br /&gt;
&lt;br /&gt;
WordDisplay soll nur in eine Richtung arbeiten, FHEM zu Frontend. Es ist dazu gedacht Wörter oder Textpassagen zu übertragen.&lt;br /&gt;
&lt;br /&gt;
Jedoch soll es möglich sein, eine Umwandlung selbst festzulegen. So kann man einfach mehrere Textausgaben abhängig vom Zustand an das Frontend schicken:&lt;br /&gt;
&lt;br /&gt;
z.B. Geofancy: Home -&amp;gt; Zuhause, Underway -&amp;gt; Unterwegs, Work -&amp;gt; Arbeit&lt;br /&gt;
&lt;br /&gt;
===OnOff===&lt;br /&gt;
Für einfache Ein/Aus-Funktionen.&lt;br /&gt;
&lt;br /&gt;
FHEM interpretiert Ein/Aus-Funktionen mit on/off, SmartVisu jedoch mit 1/0.&lt;br /&gt;
&lt;br /&gt;
Der OnOff-Converter wandelt diese bidirektional, damit sie richtig interpretiert werden.&lt;br /&gt;
&lt;br /&gt;
===RGBCombined===&lt;br /&gt;
Ein Converter zur Steuerung von RGB Leuchtmitteln über Farbauswahlfelder (zb. Farbkreis)&lt;br /&gt;
&lt;br /&gt;
Bidirektional, wandelt, verwendet 3 Frontend Items&lt;br /&gt;
&lt;br /&gt;
reading: Name eines reading mit HEX RGB Wert des Leuchtmittels&lt;br /&gt;
converter (mit Parameter): &amp;lt;code&amp;gt;RGBCombined &amp;lt;itemRed&amp;gt;, &amp;lt;itemYellow&amp;gt;, &amp;lt;itemBlue&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
set: Name des set Befehls, bekommt HEX RGB Wert übergeben &lt;br /&gt;
&lt;br /&gt;
Dieser Converter muss gleichlautend für alle 3 RGB Kanäle des Frontends definiert werden.&lt;br /&gt;
&lt;br /&gt;
==Device Connector==&lt;br /&gt;
Sobald ein fronthemDevice definiert ist, kann man über die device details in fhem die GADs definieren und die Rechte verteilen.&lt;br /&gt;
===GAD definieren===&lt;br /&gt;
Eine GAD-Definierung besteht aus:&lt;br /&gt;
[[Datei:DeviceDefine.png|400px|thumb|right|GADs definieren]]&lt;br /&gt;
*mode&lt;br /&gt;
*device&lt;br /&gt;
*reading&lt;br /&gt;
*converter&lt;br /&gt;
*cmd set&lt;br /&gt;
====mode====&lt;br /&gt;
Es gibt 2 Modis:&lt;br /&gt;
*item&lt;br /&gt;
*plot&lt;br /&gt;
====device====&lt;br /&gt;
Hier wird der Name des FHEM-Devices eingetragen, an das die Befehle geschickt werden. Die vorhandenen Devices in fhem werden als Liste unter dem Eingabefeld angezeigt, sobald man mit der Eingabe beginnt. &lt;br /&gt;
&lt;br /&gt;
Groß/Kleinschreibung muss beachtet werden!&lt;br /&gt;
&lt;br /&gt;
====reading====&lt;br /&gt;
Das für die Anzeige zu verwendende Reading des fhem Devices, z. B. &amp;quot;state&amp;quot; oder &amp;quot;Level&amp;quot;. Die vorhandenen Readings des gewählten fhem-Devices werden als Liste unter dem Eingabefeld angezeigt, sobald man mit der Eingabe beginnt.&lt;br /&gt;
&lt;br /&gt;
Readings werden, wenn das Frontend dies anfordert, aktiv von fronthem gelesen und (per push) proaktiv an das Frontend gesendet wenn fhem entsprechende events erzeugt.&lt;br /&gt;
&lt;br /&gt;
====converter====&lt;br /&gt;
Hier gibt man denn Namen des Converters an, denn man verwenden möchte.&lt;br /&gt;
Es stehen unterschiedliche converter für verschiedene Aufgabenstellungen zur Verfügung. Über das Konzept der converter können fhem Device unterschiedlichster Typen und Funktionen über das Frontend bedient werden. So versorgt der gleiche converter der die Solltemperatur des virtuellen Heizungsthermostats (bidriektional) einstellt auch die Füllstandanzeige der Zisterne sowie den Dimmer. In all diesen Fällen handelt es sich um die Übertragung von numerischen Werten. Converter können dabei auch Spezialaufgaben wie die Begrenzung des Wertebereichs übernehmen. So lässt sich über NumDirect zum Beispiel die Solltemperatur Einstellung für virtuelle Heizungsregler auf Min und Max Werte begrenzen. &lt;br /&gt;
&lt;br /&gt;
Oben ist eine Standardliste der [[#Converter]]. Die meisten Devices können mit diesen Convertern angesteuert werden.&lt;br /&gt;
&lt;br /&gt;
Groß/Kleinschreibung muss beachtet werden!&lt;br /&gt;
&lt;br /&gt;
====cmd set====&lt;br /&gt;
Das zum Schreiben zu verwendende Reading des fhem Devices, z. B. &amp;quot;state&amp;quot; oder &amp;quot;Level&amp;quot;. Die vorhandenen Readings des gewählten fhem-Devices werden als Liste unter dem Eingabefeld angezeigt, sobald man mit der Eingabe beginnt.&lt;br /&gt;
&lt;br /&gt;
Das gewählte Reading gibt den &amp;quot;set&amp;quot; des fhem Devices an, der die Rückgabe des Converters entgegen nimmt.&lt;br /&gt;
&lt;br /&gt;
Bei Lampe z.B. &amp;quot;state&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Devicerechte vergeben===&lt;br /&gt;
[[Datei:DeviceRechte.png|400px|thumb|right|Devicerechte vergeben]]&lt;br /&gt;
Devicerechte bestehen aus:&lt;br /&gt;
*read&lt;br /&gt;
*write&lt;br /&gt;
*PIN GAD&lt;br /&gt;
====read====&lt;br /&gt;
Das Device darf die Statuswerte auslesen, jedoch nicht verändern.&lt;br /&gt;
&lt;br /&gt;
====write====&lt;br /&gt;
Das Device darf Statuswerte ändern.&lt;br /&gt;
&lt;br /&gt;
====PIN GAD====&lt;br /&gt;
In Entwicklung...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Universelle ZeitSchaltUhr UZSU==&lt;br /&gt;
Es existiert ein Widget für eine universelle ZeitSchaltUhr auf GitHub unter https://github.com/mworion/uzsu_widget .&lt;br /&gt;
&lt;br /&gt;
Man muss dazu die uzsu_widget.html in das eigene Verzeichnis in ../pages/.. kopieren und die visu.js und die visu.css in seine Installation integrieren (Achtung, wenn die beiden Dateien schon bestehen, dann muss man das manuell zusammenkopieren!)&lt;br /&gt;
&lt;br /&gt;
Das Widget kann in SmartVISU wie gewohnt eingebunden werden:&lt;br /&gt;
&lt;br /&gt;
(für ein Ergebnis, das der Benutzer direkt eintippen kann, z.B. &#039;on&#039; oder &#039;off&#039;)&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{% import &amp;quot;widget_uzsu.html&amp;quot; as visu %}&lt;br /&gt;
&lt;br /&gt;
{{ visu.uzsu_icon(&#039;UZSUtxt&#039;, gad_uzsu, &#039;&#039;, &#039;&#039;, &#039;&#039;, &#039;&#039;, &#039;text&#039;) }}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oder (für ein Ergebnis zwischen 0 und 100)&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{% import &amp;quot;widget_uzsu.html&amp;quot; as visu %}&lt;br /&gt;
&lt;br /&gt;
{{ visu.uzsu_icon(&#039;UZSUnum&#039;, gad_uzsu, &#039;&#039;, &#039;&#039;, &#039;&#039;, &#039;&#039;, &#039;num&#039;, 0, 100) }}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oder (für ein Ergebnis {0,1}, das aber als flip mit &#039;an&#039; und &#039;aus&#039; angezeigt wird)&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{% import &amp;quot;widget_uzsu.html&amp;quot; as visu %}&lt;br /&gt;
&lt;br /&gt;
{{ visu.uzsu_icon(&#039;UZSUnum&#039;, gad_uzsu, &#039;&#039;, &#039;&#039;, &#039;&#039;, &#039;&#039;, &#039;bool&#039;, &#039;an&#039;, &#039;aus&#039;) }}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Um die Antwort des Widgets in fhem zu verarbeiten, benötigt man &lt;br /&gt;
&lt;br /&gt;
1. je ein Reading uzsu an dem zu schaltenden Device, das man mit &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
setreading &amp;lt;device&amp;gt; uzsu {}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
erzeugen MUSS.&lt;br /&gt;
&lt;br /&gt;
2. eine Anbindung des uzsu-GAD per UZSU Converter an das Reading uzsu des zu schaltenden Device read und write in fhem&lt;br /&gt;
&lt;br /&gt;
3. folgenden Code in der 99_FronthemUtils.pm:&lt;br /&gt;
&lt;br /&gt;
Im Package Main:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
use JSON;&lt;br /&gt;
&lt;br /&gt;
###############################################################################&lt;br /&gt;
#&lt;br /&gt;
# Umsetzen der UZSU-Settings für ein device&lt;br /&gt;
#&lt;br /&gt;
###############################################################################&lt;br /&gt;
sub UZSU_execute($$)&lt;br /&gt;
{&lt;br /&gt;
  my ($device, $uzsu) = @_;&lt;br /&gt;
  &lt;br /&gt;
  $uzsu = decode_json($uzsu);&lt;br /&gt;
&lt;br /&gt;
  fhem(&#039;delete wdt_&#039;.$device.&#039;_uzsu.*&#039;);&lt;br /&gt;
&lt;br /&gt;
  for(my $i=0; $i &amp;lt; @{$uzsu-&amp;gt;{list}}; $i++) {&lt;br /&gt;
	  my $weekdays = $uzsu-&amp;gt;{list}[$i]-&amp;gt;{rrule};&lt;br /&gt;
	  $weekdays = substr($weekdays,18,50);	&lt;br /&gt;
	  &lt;br /&gt;
	  fhem(&#039;define wdt_&#039;.$device.&#039;_uzsu&#039;.$i.&#039; WeekdayTimer &#039;.$device.&#039; en &#039;.$weekdays.&#039;|&#039;.$uzsu-&amp;gt;{list}[$i]-&amp;gt;{time}.&#039;|&#039;.$uzsu-&amp;gt;{list}[$i]-&amp;gt;{value});&lt;br /&gt;
	  &lt;br /&gt;
	  if (($uzsu-&amp;gt;{active}) &amp;amp;&amp;amp; ($uzsu-&amp;gt;{list}[$i]-&amp;gt;{active})) {&lt;br /&gt;
  		fhem(&#039;attr wdt_&#039;.$device.&#039;_uzsu&#039;.$i.&#039; disable 0&#039;);&lt;br /&gt;
	  } else {&lt;br /&gt;
  		fhem(&#039;attr wdt_&#039;.$device.&#039;_uzsu&#039;.$i.&#039; disable 1&#039;);&lt;br /&gt;
  	  }&lt;br /&gt;
  }   &lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Package fronthem, selbe Datei:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
use JSON;&lt;br /&gt;
&lt;br /&gt;
###############################################################################&lt;br /&gt;
#&lt;br /&gt;
# Setreading a device reading using JSON conversion (gadval =&amp;gt; reading=decode_json() =&amp;gt; setval =&amp;gt; encode_json(reading) )&lt;br /&gt;
#&lt;br /&gt;
###############################################################################&lt;br /&gt;
&lt;br /&gt;
sub UZSU(@)&lt;br /&gt;
{&lt;br /&gt;
  my ($param) = @_;&lt;br /&gt;
  my $cmd = $param-&amp;gt;{cmd};&lt;br /&gt;
  my $gad = $param-&amp;gt;{gad};&lt;br /&gt;
  my $gadval = $param-&amp;gt;{gadval};&lt;br /&gt;
&lt;br /&gt;
  my $device = $param-&amp;gt;{device};&lt;br /&gt;
  my $reading = $param-&amp;gt;{reading};&lt;br /&gt;
  my $event = $param-&amp;gt;{event};&lt;br /&gt;
  &lt;br /&gt;
  my @args = @{$param-&amp;gt;{args}};&lt;br /&gt;
  my $cache = $param-&amp;gt;{cache};&lt;br /&gt;
&lt;br /&gt;
  if ($param-&amp;gt;{cmd} eq &#039;get&#039;)&lt;br /&gt;
  {&lt;br /&gt;
    $param-&amp;gt;{cmd} = &#039;send&#039;;&lt;br /&gt;
  }&lt;br /&gt;
  if ($param-&amp;gt;{cmd} eq &#039;send&#039;)&lt;br /&gt;
  {&lt;br /&gt;
    $param-&amp;gt;{gad} = $gad;&lt;br /&gt;
	$param-&amp;gt;{gadval} = decode_json(main::ReadingsVal($device, $reading, &#039;&#039;));&lt;br /&gt;
	$param-&amp;gt;{gads} = [];&lt;br /&gt;
    return undef;&lt;br /&gt;
  }&lt;br /&gt;
  elsif ($param-&amp;gt;{cmd} eq &#039;rcv&#039;)&lt;br /&gt;
  {&lt;br /&gt;
	$gadval = encode_json($gadval);&lt;br /&gt;
	$gadval =~ s/;/;;/ig;&lt;br /&gt;
	$param-&amp;gt;{result} = main::fhem(&amp;quot;setreading $device $reading $gadval&amp;quot;);&lt;br /&gt;
	$param-&amp;gt;{results} = [];&lt;br /&gt;
    return &#039;done&#039;;&lt;br /&gt;
  }&lt;br /&gt;
  elsif ($param-&amp;gt;{cmd} eq &#039;?&#039;)&lt;br /&gt;
  {&lt;br /&gt;
    return &#039;usage: UZSU&#039;;&lt;br /&gt;
  }&lt;br /&gt;
  return undef;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Code erzeugt aus den Einstellungen im Widget entsprechende WeekdayTimer in fhem und löscht und erstellt neu bei jeder Änderung in SmartVISU.&lt;br /&gt;
&lt;br /&gt;
4. Die Funktion muss getriggert werden. Dazu ist ein notify nötig, das auf die Veränderung der uzsu Readings reagiert:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
define UZSU notify .*:uzsu:.* { UZSU_execute($NAME, $EVTPART1) }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voila!&lt;/div&gt;</summary>
		<author><name>Fhainz</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Pushbullet&amp;diff=9692</id>
		<title>Pushbullet</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Pushbullet&amp;diff=9692"/>
		<updated>2015-01-30T09:38:58Z</updated>

		<summary type="html">&lt;p&gt;Fhainz: Modul Infobox und Client Links geändert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Pushbullet&#039;&#039;&#039; ist ein Dienst, um Benachrichtigungen an unterschiedliche Endgeräte zu senden. Pushbullet stellt Apps für iPhone, Android, Windows (Beta), Mac OS X (bald erhältlich) sowie Plugins für Chrome und Firefox an. Eine genaue Liste kann [http://www.pushbullet.com/apps hier] eingesehen werden. Der Dienst sowie die Apps sind kostenlos. &lt;br /&gt;
{{Infobox Modul&lt;br /&gt;
|ModPurpose=Senden von Push-Nachrichten an unterschiedliche Endgeräte&lt;br /&gt;
|ModType=d&lt;br /&gt;
|ModForumArea=Unterstützende Dienste&lt;br /&gt;
|ModTechName=70_Pushbullet.pm&lt;br /&gt;
|ModOwner=fhainz&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&lt;br /&gt;
Zur Benutzung von Pushbullet ist ein Google Account zwingend notwenig. Falls noch kein Google Account vorhanden ist kann man diesen [https://accounts.google.com/SignUp hier einrichten]. Anschließend kann man sich auf [http://pushbullet.com pushbullet.com] mit den Google Benutzerdaten einloggen. Den benötigten accessToken findet man in den Account Settings (rechts oben auf das Benutzer-Symbol klicken). &lt;br /&gt;
Auf dem gewünschten Endgerät muss nur noch der entsprechende Client installiert werden.&lt;br /&gt;
&lt;br /&gt;
===Offizielle Clients===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Smartphones&#039;&#039;&#039;&lt;br /&gt;
*iOS: [https://www.pushbullet.com/apps Pushbullet App]&lt;br /&gt;
*Android: [https://www.pushbullet.com/apps Pushbullet App]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Browser-Erweiterungen&#039;&#039;&#039;&lt;br /&gt;
*Firefox: [https://www.pushbullet.com/apps Pushbullet Plugin]&lt;br /&gt;
*Chrome: [https://www.pushbullet.com/apps Pushbullet Plugin]&lt;br /&gt;
*Opera: [https://www.pushbullet.com/apps Pushbullet Plugin]&lt;br /&gt;
*Safari: [https://www.pushbullet.com/apps Pushbullet Plugin]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Betriebssystem-Erweiterungen&#039;&#039;&#039;&lt;br /&gt;
*Windows: [https://www.pushbullet.com/apps Pushbullet App]&lt;br /&gt;
*Mac OS X: [https://www.pushbullet.com/apps Pushbullet App]&lt;br /&gt;
&lt;br /&gt;
===Clients durch die Community===&lt;br /&gt;
*Blackberry: [https://www.pushbullet.com/apps BlackBullet]&lt;br /&gt;
*Windows Phone: [https://www.pushbullet.com/apps PushPin]&lt;br /&gt;
*Ubuntu: [https://www.pushbullet.com/apps PB Indicator]&lt;br /&gt;
&lt;br /&gt;
Übersicht aller Clients: [https://www.pushbullet.com/apps]&lt;br /&gt;
&lt;br /&gt;
==Einbinden des Dienstes in Fhem==&lt;br /&gt;
&lt;br /&gt;
Das Modul wird mit dem folgenden Befehl in fhem definiert:&lt;br /&gt;
&lt;br /&gt;
 define &amp;lt;name&amp;gt; Pushbullet &amp;lt;accessToken&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Push Benachrichtigung senden==&lt;br /&gt;
&lt;br /&gt;
===Nachricht===&lt;br /&gt;
&lt;br /&gt;
Nachricht ohne Titel oder Gerät:&lt;br /&gt;
 set &amp;lt;name&amp;gt; message Das ist eine Nachricht&lt;br /&gt;
&lt;br /&gt;
Nachricht mit Titel ohne Gerät:&lt;br /&gt;
 set &amp;lt;name&amp;gt; message Das ist eine Nachricht | Ein Titel&lt;br /&gt;
&lt;br /&gt;
Nachricht mit Titel an Gerät iPhone:&lt;br /&gt;
 set &amp;lt;name&amp;gt; message Das ist eine Nachricht | Ein Titel | iPhone&lt;br /&gt;
&lt;br /&gt;
Nachricht mit Titel an Kontakt Max Mustermann&lt;br /&gt;
 set &amp;lt;name&amp;gt; message Das ist eine Nachricht | Ein Titel | Max Mustermann&lt;br /&gt;
&lt;br /&gt;
Wenn kein Titel angegeben wird tritt das Attribut defaultTitel in Kraft. Falls dies nicht gesetzt ist wird der Titel auf FHEM gesetzt.&lt;br /&gt;
Wenn kein Device angeben wird tritt das Attribut defaultDevice in Kraft. Falls dies nicht gesetzt ist geht der Push an alle &#039;&#039;&#039;deine&#039;&#039;&#039; Devices. Kontakte erhalten die Benachrichtigung &#039;&#039;&#039;nicht!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Link===&lt;br /&gt;
Der Inhalt des Links wird in der App direkt angezeigt. Ein Webcam Foto kann somit mit einem Touch direkt am Endgerät angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
Link ohne Titel oder Gerät:&lt;br /&gt;
 set &amp;lt;name&amp;gt; link http://google.com&lt;br /&gt;
&lt;br /&gt;
Link mit Titel ohne Gerät:&lt;br /&gt;
 set &amp;lt;name&amp;gt; link http://google.com | Google&lt;br /&gt;
&lt;br /&gt;
Link mit Titel an Gerät iPhone&lt;br /&gt;
 set &amp;lt;name&amp;gt; link http://google.com | Google | iPhone&lt;br /&gt;
&lt;br /&gt;
Link mit Titel an Kontakt Max Mustermann&lt;br /&gt;
 set &amp;lt;name&amp;gt; link http://google.com | Google | MaxMustermann&lt;br /&gt;
&lt;br /&gt;
*Wenn kein Titel angegeben wird tritt das Attribut defaultTitel in Kraft. Falls dies nicht gesetzt ist wird der Titel auf FHEM gesetzt.&lt;br /&gt;
*Wenn kein Device angeben wird tritt das Attribut defaultDevice in Kraft. Falls dies nicht gesetzt ist geht der Push an alle &#039;&#039;&#039;deine&#039;&#039;&#039; Devices. Kontakte erhalten die Benachrichtigung &#039;&#039;&#039;nicht!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Liste===&lt;br /&gt;
&lt;br /&gt;
Liste ohne Titel oder Gerät:&lt;br /&gt;
 set &amp;lt;name&amp;gt; list Milch, Brot, Zucker&lt;br /&gt;
&lt;br /&gt;
Liste mit Titel ohne Gerät:&lt;br /&gt;
 set &amp;lt;name&amp;gt; list Milch, Brot, Zucker | Einkaufsliste&lt;br /&gt;
&lt;br /&gt;
Liste mit Titel an Gerät iPhone&lt;br /&gt;
 set &amp;lt;name&amp;gt; list Milch, Brot, Zucker | Einkaufsliste | iPhone&lt;br /&gt;
&lt;br /&gt;
Liste mit Titel an Kontakt Max Mustermann&lt;br /&gt;
 set &amp;lt;name&amp;gt; list Milch, Brot, Zucker | Einkaufsliste | MaxMustermann&lt;br /&gt;
&lt;br /&gt;
*Wenn kein Titel angegeben wird tritt das Attribut defaultTitel in Kraft. Falls dies nicht gesetzt ist wird der Titel auf FHEM gesetzt.&lt;br /&gt;
*Wenn kein Device angeben wird tritt das Attribut defaultDevice in Kraft. Falls dies nicht gesetzt ist geht der Push an alle &#039;&#039;&#039;deine&#039;&#039;&#039; Devices. Kontakte erhalten die Benachrichtigung &#039;&#039;&#039;nicht!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Kontakt hinzufügen==&lt;br /&gt;
Mit&lt;br /&gt;
 set &amp;lt;name&amp;gt; contactAdd &amp;lt;Name&amp;gt; | &amp;lt;email&amp;gt;&lt;br /&gt;
wird eine neuer Kontakt hinzugefügt. Dieser bekommt erstmal eine E-Mail mit einer Einladung zur Pushbullet App. Fall die App nicht installiert wird, bekommt der Kontakt Push-Benachrichtigungen als E-Mail zugestellt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Gerät / Kontakt umbenennen==&lt;br /&gt;
Mit&lt;br /&gt;
 set &amp;lt;name&amp;gt; deviceRename &amp;lt;alterName&amp;gt; | &amp;lt;neuerName&amp;gt;&lt;br /&gt;
wird ein Gerät oder Kontakt umbenannt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Gerät / Kontakt löschen==&lt;br /&gt;
Mit&lt;br /&gt;
  set &amp;lt;name&amp;gt; deviceDelete &amp;lt;name&amp;gt;&lt;br /&gt;
wird ein Gerät oder Kontakt gelöscht.&lt;br /&gt;
&lt;br /&gt;
==Geräte / Kontakte neu einlesen==&lt;br /&gt;
Mit&lt;br /&gt;
  get &amp;lt;name&amp;gt; devices&lt;br /&gt;
kann man die Device Liste von pushbullet.com neu einlesen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Pushbullet Website==&lt;br /&gt;
Die Pushbullet Website bietet umfangreiche Möglichkeiten die gesendeten Push Nachrichten, Geräte und Kontakte zu verwalten. Weiters kann man auch Nachrichten versenden und löschen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
*Thread über das Modul im [http://forum.fhem.de/index.php/topic,29796.0.html FHEM-Forum]&lt;br /&gt;
*Pushbullet [https://www.pushbullet.com/apps Apps]&lt;br /&gt;
*Pushbullet [https://docs.pushbullet.com API]&lt;br /&gt;
*Homepage: [http://pushbullet.com pushbullet.com]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: Code Snippets]]&lt;/div&gt;</summary>
		<author><name>Fhainz</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Pushbullet&amp;diff=9422</id>
		<title>Pushbullet</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Pushbullet&amp;diff=9422"/>
		<updated>2015-01-18T11:08:20Z</updated>

		<summary type="html">&lt;p&gt;Fhainz: Link korrigiert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Pushbullet&#039;&#039;&#039; ist ein Dienst, um Benachrichtigungen an unterschiedliche Endgeräte zu senden. Pushbullet stellt Apps für iPhone, Android, Windows (Beta), Mac OS X (bald erhältlich) sowie Plugins für Chrome und Firefox an. Eine genaue Liste kann [http://www.pushbullet.com/apps hier] eingesehen werden. Der Dienst sowie die Apps sind kostenlos. &lt;br /&gt;
{{Infobox Modul&lt;br /&gt;
|ModPurpose=Senden von Push-Nachrichten an unterschiedliche Endgeräte&lt;br /&gt;
|ModType=x&lt;br /&gt;
|ModForumArea=Unterstützende Dienste&lt;br /&gt;
|ModTechName=70_Pushbullet.pm (noch nicht eingecheckt)&lt;br /&gt;
|ModOwner=fhainz&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&lt;br /&gt;
Zur Benutzung von Pushbullet ist ein Google Account zwingend notwenig. Falls noch kein Google Account vorhanden ist kann man diesen [https://accounts.google.com/SignUp hier einrichten]. Anschließend kann man sich auf [http://pushbullet.com pushbullet.com] mit den Google Benutzerdaten einloggen. Den benötigten accessToken findet man in den Account Settings (rechts oben auf das Benutzer-Symbol klicken). &lt;br /&gt;
Auf dem gewünschten Endgerät muss nur noch der entsprechende Client installiert werden.&lt;br /&gt;
&lt;br /&gt;
===Offizielle Clients===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Smartphones&#039;&#039;&#039;&lt;br /&gt;
*Apple iOS: [https://itunes.apple.com/us/app/pushbullet/id810352052 Pushbullet App]&lt;br /&gt;
*Android: [https://play.google.com/store/apps/details?id=com.pushbullet.android&amp;amp;hl=de Pushbullet App]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Browser-Erweiterungen&#039;&#039;&#039;&lt;br /&gt;
*Firefox: [https://addons.mozilla.org/de/firefox/addon/pushbullet Pushbullet Plugin]&lt;br /&gt;
*Chrome: [https://chrome.google.com/webstore/detail/pushbullet/chlffgpmiacpedhhbkiomidkjlcfhogd Pushbullet Plugin]&lt;br /&gt;
*Opera: [https://addons.opera.com/en/extensions/details/pushbullet/ Pushbullet Plugin]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Betriebssystem-Erweiterungen&#039;&#039;&#039;&lt;br /&gt;
*Windows: [https://update.pushbullet.com/pb_install.exe Pushbullet App]&lt;br /&gt;
&lt;br /&gt;
===Clients durch die Community===&lt;br /&gt;
*Blackberry: [http://appworld.blackberry.com/webstore/content/58534486/?countrycode=de&amp;amp;lang=de BlackBullet]&lt;br /&gt;
*Windows Phone: [http://www.windowsphone.com/en-us/store/app/pushpin/b6764b31-9f2a-4ba4-9e00-aba343928459 PushPin]&lt;br /&gt;
*Ubuntu: [http://www.atareao.es/tag/pushbullet-indicator/ PB Indicator]&lt;br /&gt;
&lt;br /&gt;
Übersicht aller Clients: [https://www.pushbullet.com/apps]&lt;br /&gt;
&lt;br /&gt;
==Einbinden des Dienstes in Fhem==&lt;br /&gt;
&lt;br /&gt;
Das Modul wird mit dem folgenden Befehl in fhem definiert:&lt;br /&gt;
&lt;br /&gt;
 define &amp;lt;name&amp;gt; Pushbullet &amp;lt;accessToken&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Push Benachrichtigung senden==&lt;br /&gt;
&lt;br /&gt;
===Nachricht===&lt;br /&gt;
&lt;br /&gt;
Nachricht ohne Titel oder Gerät:&lt;br /&gt;
 set &amp;lt;name&amp;gt; message Das ist eine Nachricht&lt;br /&gt;
&lt;br /&gt;
Nachricht mit Titel ohne Gerät:&lt;br /&gt;
 set &amp;lt;name&amp;gt; message Das ist eine Nachricht | Ein Titel&lt;br /&gt;
&lt;br /&gt;
Nachricht mit Titel an Gerät iPhone:&lt;br /&gt;
 set &amp;lt;name&amp;gt; message Das ist eine Nachricht | Ein Titel | iPhone&lt;br /&gt;
&lt;br /&gt;
Nachricht mit Titel an Kontakt Max Mustermann&lt;br /&gt;
 set &amp;lt;name&amp;gt; message Das ist eine Nachricht | Ein Titel | Max Mustermann&lt;br /&gt;
&lt;br /&gt;
Wenn kein Titel angegeben wird tritt das Attribut defaultTitel in Kraft. Falls dies nicht gesetzt ist wird der Titel auf FHEM gesetzt.&lt;br /&gt;
Wenn kein Device angeben wird tritt das Attribut defaultDevice in Kraft. Falls dies nicht gesetzt ist geht der Push an alle &#039;&#039;&#039;deine&#039;&#039;&#039; Devices. Kontakte erhalten die Benachrichtigung &#039;&#039;&#039;nicht!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Link===&lt;br /&gt;
Der Inhalt des Links wird in der App direkt angezeigt. Ein Webcam Foto kann somit mit einem Touch direkt am Endgerät angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
Link ohne Titel oder Gerät:&lt;br /&gt;
 set &amp;lt;name&amp;gt; link http://google.com&lt;br /&gt;
&lt;br /&gt;
Link mit Titel ohne Gerät:&lt;br /&gt;
 set &amp;lt;name&amp;gt; link http://google.com | Google&lt;br /&gt;
&lt;br /&gt;
Link mit Titel an Gerät iPhone&lt;br /&gt;
 set &amp;lt;name&amp;gt; link http://google.com | Google | iPhone&lt;br /&gt;
&lt;br /&gt;
Link mit Titel an Kontakt Max Mustermann&lt;br /&gt;
 set &amp;lt;name&amp;gt; link http://google.com | Google | MaxMustermann&lt;br /&gt;
&lt;br /&gt;
*Wenn kein Titel angegeben wird tritt das Attribut defaultTitel in Kraft. Falls dies nicht gesetzt ist wird der Titel auf FHEM gesetzt.&lt;br /&gt;
*Wenn kein Device angeben wird tritt das Attribut defaultDevice in Kraft. Falls dies nicht gesetzt ist geht der Push an alle &#039;&#039;&#039;deine&#039;&#039;&#039; Devices. Kontakte erhalten die Benachrichtigung &#039;&#039;&#039;nicht!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Liste===&lt;br /&gt;
&lt;br /&gt;
Liste ohne Titel oder Gerät:&lt;br /&gt;
 set &amp;lt;name&amp;gt; list Milch, Brot, Zucker&lt;br /&gt;
&lt;br /&gt;
Liste mit Titel ohne Gerät:&lt;br /&gt;
 set &amp;lt;name&amp;gt; list Milch, Brot, Zucker | Einkaufsliste&lt;br /&gt;
&lt;br /&gt;
Liste mit Titel an Gerät iPhone&lt;br /&gt;
 set &amp;lt;name&amp;gt; list Milch, Brot, Zucker | Einkaufsliste | iPhone&lt;br /&gt;
&lt;br /&gt;
Liste mit Titel an Kontakt Max Mustermann&lt;br /&gt;
 set &amp;lt;name&amp;gt; list Milch, Brot, Zucker | Einkaufsliste | MaxMustermann&lt;br /&gt;
&lt;br /&gt;
*Wenn kein Titel angegeben wird tritt das Attribut defaultTitel in Kraft. Falls dies nicht gesetzt ist wird der Titel auf FHEM gesetzt.&lt;br /&gt;
*Wenn kein Device angeben wird tritt das Attribut defaultDevice in Kraft. Falls dies nicht gesetzt ist geht der Push an alle &#039;&#039;&#039;deine&#039;&#039;&#039; Devices. Kontakte erhalten die Benachrichtigung &#039;&#039;&#039;nicht!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Kontakt hinzufügen==&lt;br /&gt;
Mit&lt;br /&gt;
 set &amp;lt;name&amp;gt; contactAdd &amp;lt;Name&amp;gt; | &amp;lt;email&amp;gt;&lt;br /&gt;
wird eine neuer Kontakt hinzugefügt. Dieser bekommt erstmal eine E-Mail mit einer Einladung zur Pushbullet App. Fall die App nicht installiert wird, bekommt der Kontakt Push-Benachrichtigungen als E-Mail zugestellt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Gerät / Kontakt umbenennen==&lt;br /&gt;
Mit&lt;br /&gt;
 set &amp;lt;name&amp;gt; deviceRename &amp;lt;alterName&amp;gt; | &amp;lt;neuerName&amp;gt;&lt;br /&gt;
wird ein Gerät oder Kontakt umbenannt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Gerät / Kontakt löschen==&lt;br /&gt;
Mit&lt;br /&gt;
  set &amp;lt;name&amp;gt; deviceDelete &amp;lt;name&amp;gt;&lt;br /&gt;
wird ein Gerät oder Kontakt gelöscht.&lt;br /&gt;
&lt;br /&gt;
==Geräte / Kontakte neu einlesen==&lt;br /&gt;
Mit&lt;br /&gt;
  get &amp;lt;name&amp;gt; devices&lt;br /&gt;
kann man die Device Liste von pushbullet.com neu einlesen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Pushbullet Website==&lt;br /&gt;
Die Pushbullet Website bietet umfangreiche Möglichkeiten die gesendeten Push Nachrichten, Geräte und Kontakte zu verwalten. Weiters kann man auch Nachrichten versenden und löschen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
*Thread über das Modul im [http://forum.fhem.de/index.php/topic,29796.0.html FHEM-Forum]&lt;br /&gt;
*Pushbullet [https://www.pushbullet.com/apps Apps]&lt;br /&gt;
*Pushbullet [https://docs.pushbullet.com API]&lt;br /&gt;
*Homepage: [http://pushbullet.com pushbullet.com]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: Gerätemodul | Code Snippets]]&lt;/div&gt;</summary>
		<author><name>Fhainz</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=ReadingsGroup&amp;diff=8847</id>
		<title>ReadingsGroup</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=ReadingsGroup&amp;diff=8847"/>
		<updated>2014-12-13T18:03:02Z</updated>

		<summary type="html">&lt;p&gt;Fhainz: /* Anpassung für Update 7196 */&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 und deren Steuerung&lt;br /&gt;
|ModType=h&lt;br /&gt;
|ModCmdRef=readingsGroup&lt;br /&gt;
|ModForumArea=Frontends&lt;br /&gt;
|ModTechName=33_readingsGroup.pm&lt;br /&gt;
|ModOwner=Andre ([http://forum.fhem.de/index.php?action=profile;u=430 Forum] / [[Benutzer Diskussion:justme|Wiki]])}}&lt;br /&gt;
&lt;br /&gt;
Das Fhem-[[:Kategorie:Hilfsmodul|Hilfsmodul]] [[readingsGroup]] bietet eine einfache Möglichkeit, &#039;&#039;Readings&#039;&#039; (kein Präfix vor dem Reading-Namen), &#039;&#039;Internals&#039;&#039; (Präfix &amp;quot;+&amp;quot; vor dem Namen des internen Wertes) und &#039;&#039;Attributes&#039;&#039; (Präfix &amp;quot;?&amp;quot; vor dem Namen des Attributs) von einem oder mehreren &#039;&#039;Devices&#039;&#039; darzustellen und flexibel zu formatieren.&lt;br /&gt;
&lt;br /&gt;
Die Aktualisierung im Browserfenster geschieht per longpoll und überträgt nur die jeweils geänderten Zellen. Wenn eine readingsGroup in keinem Browserfenster angezeigt wird findet keine longpoll aktualisierung statt.&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;
Bitte beachten: die folgenden Beispiele enthalten keine Maskierungen oder Verdoppelungen für ; und Zeilenende, sondern sind so angegeben, wie sie im [[PGM2|Web Interface]] im Befehls-Eingabefeld 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;
=== Übersicht HomeMatic Geräte ===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define HM_Components readingsGroup &amp;lt;Gerät&amp;gt;,&amp;lt;Name&amp;gt;,&amp;lt;Model&amp;gt;,&amp;lt;S/N&amp;gt; TYPE=CUL_HM:+NAME,?model,D-serialNr&amp;lt;/nowiki&amp;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 RSSI Wert aller Devices (am IODev &#039;&#039;cul&#039;&#039;) 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 RSSI Wert mit der zugehörigen Zeit aller Devices (am IODev &#039;&#039;cul&#039;&#039;) 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=2 | [[Datei:rgculRSSI2.png|thumb]]&lt;br /&gt;
|-&lt;br /&gt;
|attr culRSSI valueStyle {return undef if($READING =~ m/TIME/); ($VALUE &amp;lt;= -85)?&#039;style=&amp;quot;color:red&amp;quot;&#039;:($VALUE &amp;lt;= -80)?&#039;style=&amp;quot;color:yellow&amp;quot;&#039;:undef}&lt;br /&gt;
|Schlechte RSSI Werte sollen abhängig von zwei Schwellwerten gelb oder rot eingefärbt werden (auf dem Screenshot nicht zu sehen).&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-temp,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 Raum &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 Batteriezustand 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;
=== 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;
=== Heizungswerte, Status, Steuerung und Wochenprofil ===&lt;br /&gt;
Dieses Beispiel funktioniert nur mit HomeMatic HM-CC-RT-DN, für andere Thermostate müssen an diversen Stellen Änderungen vorgenommen werden.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Definition !! Erläuterungen &lt;br /&gt;
|-&lt;br /&gt;
| colspan=2 | [[Datei:RgThermostate.png|thumb|500px|links|Status, Steuerung und Wochenprofil]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; |&amp;lt;code&amp;gt;&lt;br /&gt;
set d_label Heizung Heizung &amp;lt;br&amp;gt;&lt;br /&gt;
set d_label Temperatur Temperatur &amp;lt;br&amp;gt;&lt;br /&gt;
set d_label  Status Status &amp;lt;br&amp;gt;&lt;br /&gt;
set d_label Wochenplan Wochenplan &amp;lt;br&amp;gt;&lt;br /&gt;
set d_label Werktag Werktag &amp;lt;br&amp;gt;&lt;br /&gt;
set d_label Samstag Samstag &amp;lt;br&amp;gt;&lt;br /&gt;
set d_label Sonntag Sonntag &amp;lt;br&amp;gt;&lt;br /&gt;
set d_label Zeitraum1 Zeitraum 1 &amp;lt;br&amp;gt;&lt;br /&gt;
set d_label Zeitraum2 Zeitraum 2 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
|Erzeugen der Readings im device [[Dummy_Hilfen#d_label|d_label]].&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&lt;br /&gt;
define rg_thermostate readingsGroup &amp;lt;&amp;gt;,Heizung@d_label,&amp;lt;|&amp;gt;,Temperatur@d_label,&amp;lt;|&amp;gt;,Status@d_label,&amp;lt;|&amp;gt;,Wochenplan@d_label,&amp;lt;|&amp;gt;,Werktag@d_label,&amp;lt;|&amp;gt;,Samstag@d_label,&amp;lt;|&amp;gt;,Sonntag@d_label,&amp;lt;|&amp;gt;,&amp;lt;&amp;gt; CUL_HM_HM_CC_RT_DN_......_Clima:&amp;lt;&amp;gt;,?alias,&amp;lt;|&amp;gt;,&amp;lt;Soll&amp;gt;,desired-temp,&amp;lt;Tag&amp;gt;,dayTemp@{rg($DEVICE.&amp;quot;§clima&amp;quot;)},impossible@{$DEVICE},&amp;lt;|&amp;gt;,controlMode,R-globalBtnLock@{rg($DEVICE.&amp;quot;§device&amp;quot;)},&amp;lt;|&amp;gt;,Zeitraum1@d_label,&amp;lt;|&amp;gt;,workday_period_1_start@{rg($DEVICE.&amp;quot;§clima&amp;quot;)},workday_period_1_stop@{rg($DEVICE.&amp;quot;§clima&amp;quot;)},&amp;lt;|&amp;gt;,saturday_period_1_start@{rg($DEVICE.&amp;quot;§clima&amp;quot;)},saturday_period_1_stop@{rg($DEVICE.&amp;quot;§clima&amp;quot;)},&amp;lt;|&amp;gt;,sunday_period_1_start@{rg($DEVICE.&amp;quot;§clima&amp;quot;)},sunday_period_1_stop@{rg($DEVICE.&amp;quot;§clima&amp;quot;)},&amp;lt;|&amp;gt;,impossible@{$DEVICE},&amp;lt;%system_fhem_update&amp;gt;,&amp;lt;nowiki&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/nowiki&amp;gt;,state@{rg($DEVICE.&amp;quot;§device&amp;quot;)},&amp;lt;%getConfig&amp;gt;,&amp;lt;|&amp;gt;,&amp;lt;Ist&amp;gt;,measured-temp,&amp;lt;Nacht&amp;gt;,nightTemp@{rg($DEVICE.&amp;quot;§clima&amp;quot;)},&amp;lt;|&amp;gt;,&amp;lt;Ventil&amp;gt;,ValvePosition,&amp;lt;|&amp;gt;,Zeitraum2@d_label,&amp;lt;|&amp;gt;,workday_period_2_start@{rg($DEVICE.&amp;quot;§clima&amp;quot;)},workday_period_2_stop@{rg($DEVICE.&amp;quot;§clima&amp;quot;)},&amp;lt;|&amp;gt;,saturday_period_2_start@{rg($DEVICE.&amp;quot;§clima&amp;quot;)},saturday_period_2_stop@{rg($DEVICE.&amp;quot;§clima&amp;quot;)},&amp;lt;|&amp;gt;,sunday_period_2_start@{rg($DEVICE.&amp;quot;§clima&amp;quot;)},sunday_period_2_stop@{rg($DEVICE.&amp;quot;§clima&amp;quot;)},&amp;lt;|&amp;gt;,impossible@{$DEVICE},impossible@{rg($DEVICE.&amp;quot;§device&amp;quot;)},&amp;lt;%burstXmit&amp;gt; &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
| Diverse readings aller Devices &amp;lt;b&amp;gt;CUL_HM_HM_CC_RT_DN_......_Clima&amp;lt;/b&amp;gt;, entsprechender [[Makefine#d_climaControl|d_climaControl]] (müssen vorher angelegt werden) und [[Dummy_Hilfen#d_label|d_label]]. &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&lt;br /&gt;
attr rg_thermostate commands { &#039;desired-temp&#039; =&amp;gt; &#039;desired-temp:&#039;, &#039;dayTemp&#039; =&amp;gt; &#039;dayTemp:&#039;, &#039;controlMode&#039; =&amp;gt; &#039;trigger ntfy_rg $DEVICE controlMode&#039;, &#039;R-globalBtnLock&#039; =&amp;gt; &#039;trigger ntfy_rg $DEVICE globalBtnLock&#039;, &#039;workday_period_1_start&#039; =&amp;gt; &#039;workday_period_1_start:&#039;, &#039;workday_period_1_stop&#039; =&amp;gt; &#039;workday_period_1_stop:&#039;, &#039;saturday_period_1_start&#039; =&amp;gt; &#039;saturday_period_1_start:&#039;, &#039;saturday_period_1_stop&#039; =&amp;gt; &#039;saturday_period_1_stop:&#039;, &#039;sunday_period_1_start&#039; =&amp;gt; &#039;sunday_period_1_start:&#039;, &#039;sunday_period_1_stop&#039; =&amp;gt; &#039;sunday_period_1_stop:&#039;, &#039;rg_thermostate.system_fhem_update&#039; =&amp;gt; &#039;trigger ntfy_rg $DEVICE setTimeTable&#039;, &#039;rg_thermostate.getConfig&#039; =&amp;gt; &#039;set $DEVICE getConfig&#039;, &#039;nightTemp&#039; =&amp;gt; &#039;nightTemp:&#039;, &#039;workday_period_2_start&#039; =&amp;gt; &#039;workday_period_2_start:&#039;, &#039;workday_period_2_stop&#039; =&amp;gt; &#039;workday_period_2_stop:&#039;, &#039;saturday_period_2_start&#039; =&amp;gt; &#039;saturday_period_2_start:&#039;, &#039;saturday_period_2_stop&#039; =&amp;gt; &#039;saturday_period_2_stop:&#039;, &#039;sunday_period_2_start&#039; =&amp;gt; &#039;sunday_period_2_start:&#039;, &#039;sunday_period_2_stop&#039; =&amp;gt; &#039;sunday_period_2_stop:&#039;, &#039;rg_thermostate.burstXmit&#039; =&amp;gt; &#039;set $DEVICE burstXmit&#039;}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
| Temperaturen werden als DropDown Auswahl dargestellt, Icons triggern [[readingsGroup#sub_rg|ntfy_rg]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&lt;br /&gt;
attr rg_thermostate mapping { &#039;desired-temp&#039; =&amp;gt; &#039;&#039;, &#039;dayTemp&#039; =&amp;gt; &#039;&#039;, &#039;workday_period_1_start&#039; =&amp;gt; &#039;&#039;, &#039;workday_period_1_stop&#039; =&amp;gt; &#039;&#039;, &#039;saturday_period_1_start&#039; =&amp;gt; &#039;&#039;, &#039;saturday_period_1_stop&#039; =&amp;gt; &#039;&#039;, &#039;sunday_period_1_start&#039; =&amp;gt; &#039;&#039;, &#039;sunday_period_1_stop&#039; =&amp;gt; &#039;&#039;, &#039;nightTemp&#039; =&amp;gt; &#039;&#039;, &#039;workday_period_2_start&#039; =&amp;gt; &#039;&#039;, &#039;workday_period_2_stop&#039; =&amp;gt; &#039;&#039;, &#039;saturday_period_2_start&#039; =&amp;gt; &#039;&#039;, &#039;saturday_period_2_stop&#039; =&amp;gt; &#039;&#039;, &#039;sunday_period_2_start&#039; =&amp;gt; &#039;&#039;, &#039;sunday_period_2_stop&#039; =&amp;gt; &#039;&#039;}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
| Ausblenden der Texte vor den DropDowns.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&lt;br /&gt;
attr rg_thermostate nameStyle{($READING eq &amp;quot;Soll&amp;quot; ||$READING eq &amp;quot;Tag&amp;quot; ||$READING eq &amp;quot;%getConfig&amp;quot; ||$READING eq &amp;quot;Ist&amp;quot; ||$READING eq &amp;quot;Nacht&amp;quot; ||$READING eq &amp;quot;Ventil&amp;quot; )?&#039;style=&amp;quot;text-align:right&amp;quot;&#039; :($READING eq &amp;quot;%burstXmit&amp;quot; )?&#039;style=&amp;quot;text-align:center&amp;quot;&#039; :&#039;style=&amp;quot;&amp;quot;&#039;}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
| Ausrichten der Überschriften die keine readings sind.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&lt;br /&gt;
attr rg_thermostate nonames 1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
| Ausblenden der Device Namen.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&lt;br /&gt;
attr rg_thermostate valueColumns { &#039;Heizung&#039; =&amp;gt; &#039;colspan=&amp;quot;2&amp;quot;&#039;, &#039;Temperatur&#039; =&amp;gt; &#039;colspan=&amp;quot;4&amp;quot;&#039;, &#039;Status&#039; =&amp;gt; &#039;colspan=&amp;quot;2&amp;quot;&#039;, &#039;Werktag&#039; =&amp;gt; &#039;colspan=&amp;quot;2&amp;quot;&#039;, &#039;Samstag&#039; =&amp;gt; &#039;colspan=&amp;quot;2&amp;quot;&#039;, &#039;Sonntag&#039; =&amp;gt; &#039;colspan=&amp;quot;2&amp;quot;&#039;, &#039;alias&#039; =&amp;gt; &#039;colspan=&amp;quot;2&amp;quot;&#039;}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
| Diverse Readings sollen über mehrere Spalten dargestellt werden.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&lt;br /&gt;
attr rg_thermostate valueFormat { &#039;measured-temp&#039; =&amp;gt; &amp;quot;%0.1f &amp;amp;deg;C&amp;quot;, &#039;ValvePosition&#039; =&amp;gt; &amp;quot;%0.1f %%&amp;quot;}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
| Formatierung für measured-temp und ValvePosition.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&lt;br /&gt;
attr rg_thermostate valueIcon &lt;br /&gt;
attr rg_thermostate valueIcon { &#039;controlMode.auto&#039; =&amp;gt; &#039;sani_heating_automatic@green&#039;, &#039;controlMode.set_auto&#039; =&amp;gt; &#039;sani_heating_automatic@orange&#039;, &#039;controlMode.manual&#039; =&amp;gt; &#039;sani_heating_manual@red&#039;, &#039;controlMode.set_manual&#039; =&amp;gt; &#039;sani_heating_manual@orange&#039;, &#039;R-globalBtnLock.on&#039; =&amp;gt; &#039;secur_locked@green&#039;, &#039;R-globalBtnLock.on &#039; =&amp;gt; &#039;secur_locked@green&#039;, &#039;R-globalBtnLock.set_on &#039; =&amp;gt; &#039;secur_locked@orange&#039;, &#039;R-globalBtnLock.off&#039; =&amp;gt; &#039;secur_open@red&#039;, &#039;R-globalBtnLock.off &#039; =&amp;gt; &#039;secur_open@red&#039;, &#039;R-globalBtnLock.set_off &#039; =&amp;gt; &#039;secur_open@orange&#039;}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
| Zuweisung der Icons.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&lt;br /&gt;
attr rg_thermostate valueStyle{($READING eq &amp;quot;Heizung&amp;quot; ||$READING eq &amp;quot;Temperatur&amp;quot; ||$READING eq &amp;quot;Status&amp;quot; ||$READING eq &amp;quot;Wochenplan&amp;quot; ||$READING eq &amp;quot;Werktag&amp;quot; ||$READING eq &amp;quot;Samstag&amp;quot; ||$READING eq &amp;quot;Sonntag&amp;quot; )?&#039;style=&amp;quot;font-size:20px;;color:RoyalBlue;;text-align:center&amp;quot;&#039; :($READING eq &amp;quot;alias&amp;quot; )?&#039;style=&amp;quot;font-size:11px;;font-weight:bold;;text-align:left&amp;quot;&#039; :($READING eq &amp;quot;ValvePosition&amp;quot; &amp;amp;&amp;amp;$VALUE &amp;gt; 40 )?&#039;style=&amp;quot;font-weight:bold;;color:Orange;;text-align:left&amp;quot;&#039; :($READING eq &amp;quot;desired-temp&amp;quot; ||$READING eq &amp;quot;measured-temp&amp;quot; )?&#039;style=&amp;quot;text-align:center&amp;quot;&#039; :($READING eq &amp;quot;state&amp;quot; ||$READING eq &amp;quot;ValvePosition&amp;quot; )?&#039;style=&amp;quot;text-align:left&amp;quot;&#039; :&#039;style=&amp;quot;text-align:right&amp;quot;&#039;}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
| Ausrichten und einfärben der readings.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Readings aus zusätzlichen Devices ===&lt;br /&gt;
Im folgenden Beispiel wird gezeigt wie sich Readings zusätzlicher Devices zu einer Zeile mit mehreren Readings hinzufügen lassen. Diese zusätzlichen Devices können z.b. die unterschiedlichen Channel eines HomeMatic Gerätes sein. Im folgenden Beispiel wird der Name des zugehörigen Geräts dynamisch bestimmt.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Definition !! Erläuterungen &lt;br /&gt;
|-&lt;br /&gt;
| colspan=2 | [[Datei:rgHeizung4.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 myTemp readingsGroup &amp;lt;Raum&amp;gt;,&amp;lt;Tist&amp;gt;,&amp;lt;Tsoll&amp;gt;,&amp;lt;Mode&amp;gt;,&amp;lt;Tnight&amp;gt;,&amp;lt;Tday&amp;gt;,&amp;lt;Hum&amp;gt;,&amp;lt;BatTC&amp;gt;,&amp;lt;Vist&amp;gt;,&amp;lt;Vsoll&amp;gt;,&amp;lt;Verr&amp;gt;,&amp;lt;BatVD&amp;gt; Thermostat.(WZ|OZ|AZ|Bad|Kueche|SZ|GZ|Bad.OG):measured-temp,desired-temp,controlMode,night-temp,day-temp,humidity,battery,ValvePosition@{valveOfDevice($DEVICE)},ValveDesired@{valveOfDevice($DEVICE)},R-valveErrorPos@{valveOfDevice($DEVICE)},battery@{valveOfDevice($DEVICE)} Broetje:ToutIst &amp;lt;/code&amp;gt;&lt;br /&gt;
| Diverse Readings aller Thermostat Devices und des jeweils zugehörigen Ventilantriebs. &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr myTemp mapping    { &#039;Broetje&#039; =&amp;gt; &#039;Garten&#039;,&#039;Thermostat.AZ&#039; =&amp;gt; &#039;EG Arbeitszimmer&#039;,&#039;Thermostat.SZ&#039; =&amp;gt; &#039;OG Schlafzimmer&#039;,&#039;Thermostat.WZ&#039;=&amp;gt;&#039;EG Wohnzimmer&#039;,&#039;Thermostat.Kueche&#039; =&amp;gt; &#039;EG Küche&#039;,&#039;Thermostat.GZ&#039; =&amp;gt; &#039;OG Gästezimmer&#039;,&#039;Thermostat.Bad&#039; =&amp;gt; &#039;EG Bad&#039;,&#039;Thermostat.Bad.OG&#039; =&amp;gt; &#039;OG Bad&#039;,&#039;Thermostat.OZ&#039; =&amp;gt; &#039;EG Kaminzimmer&#039;,&#039;desired-temp&#039; =&amp;gt; &amp;lt;nowiki&amp;gt;&#039;&#039;&amp;lt;/nowiki&amp;gt; }&amp;lt;/code&amp;gt;&lt;br /&gt;
| Die Benennung der Zeilentitel (Das ist je nach Konfiguration auch über $ALIAS und/oder $ROOM lösbar).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr myTemp commands   { &#039;desired-temp&#039; =&amp;gt; &#039;desired-temp:&#039; }&amp;lt;/code&amp;gt;&lt;br /&gt;
| desired-temp soll per dropDown einstellbar sein.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr myTemp nameStyle style=&amp;quot;color:yellow&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 myTemp 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 Batteriestand sollen jeweils Icons angezeigt werden.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr myTemp valueFormat { &#039;measured-temp&#039; =&amp;gt; &amp;quot;%0.1f &amp;amp;amp;deg;C&amp;quot;,&#039;ToutIst&#039; =&amp;gt; &amp;quot;%.1f &amp;amp;amp;deg;C&amp;quot;,&#039;night-temp&#039; =&amp;gt; &amp;quot;%.1f &amp;amp;amp;deg;C&amp;quot;,&#039;day-temp&#039; =&amp;gt; &amp;quot;%.1f &amp;amp;amp;deg;C&amp;quot;,&#039;humidity&#039; =&amp;gt; &amp;quot;%.0f &lt;br /&gt;
%%&amp;quot;,&#039;ValvePosition&#039; =&amp;gt; &amp;quot;%.0f %%&amp;quot;,&#039;ValveDesired&#039; =&amp;gt; &amp;quot;%.0f %%&amp;quot;,&#039;R-valveErrorPos&#039; =&amp;gt; &amp;quot;%.0f %%&amp;quot; }&amp;lt;/code&amp;gt;&lt;br /&gt;
| Die Formatierung der Werte. &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&lt;br /&gt;
 #namen des ventil device aus thermostat device ableiten&lt;br /&gt;
 sub valveOfDevice ($) {&lt;br /&gt;
   my ($DEVICE) = @_;&lt;br /&gt;
  &lt;br /&gt;
   if ($DEVICE =~ m/AZ/) {&lt;br /&gt;
  	return &amp;quot;Ventil.&amp;quot;.substr($DEVICE,11).&amp;quot;.Nord&amp;quot;;&lt;br /&gt;
   } else {&lt;br /&gt;
  	return &amp;quot;Ventil.&amp;quot;.substr($DEVICE,11);  	&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]]: Hier wird aus dem Namen des Thermostaten der Name des zugehörigen Ventilantriebs abgeleitet.&lt;br /&gt;
|}&lt;br /&gt;
Da im {...} Teil des &amp;lt;reading&amp;gt;@&amp;lt;device&amp;gt; Arguments keine Leerzeichen oder Kommas vorkommen dürfen ist er in der Regel das Einfachste die Funktionalität wie in diesem Beispiel in eine eigene Routine auszulagern. Mit ein paar &#039;Tricks&#039; lässt es sich aber manchmal auch ohne Leerzeichen oder Kommas lösen und dann direkt in die Definition schreiben:&amp;lt;code&amp;gt;...,ValvePosition@{$DEVICE=~s/Thermostat/Ventil/;$DEVICE;},...&amp;lt;/code&amp;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;
=== 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;, die in der 99_myUtils.pm definiert wird. Das abschließende @disabled sorgt dafür, dass 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, dass 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;
 }&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;
=== readingsGroup mit Link ===&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 in {{Link2Forum|Topic=14425|Message=109383|LinkText=diesem Forenbeitrag}}: dort wird damit eine readingsGroup dynamisch umgeschaltet, um nur die eingeschalteten, nur die ausgeschalteten oder alle Lampen anzuzeigen.&lt;br /&gt;
&lt;br /&gt;
=== sub rg ===&lt;br /&gt;
Damit beim klicken auf ein Icon oder einen Text in einer readingsGroup etwas passiert ist es möglich dies über das commands Attribut auf ein &amp;lt;code&amp;gt;&#039;trigger ntfy_rg $DEVICE $READING&#039;&amp;lt;/code&amp;gt; oder Ähnliches zu mappen.&lt;br /&gt;
Anlegen des ntfy_rg notify&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define ntfy_rg notify ntfy_rg {rg($EVENT)}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Folgender Code muss noch in de [[99_myUtils_anlegen|99_myUtils.pm]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sub rg($){&lt;br /&gt;
  my @input    = split(/[§\s]+/,shift);&lt;br /&gt;
  my $device   = $input[0];&lt;br /&gt;
  my $function = $input[1];&lt;br /&gt;
&lt;br /&gt;
if($function eq &amp;quot;clima&amp;quot;){&lt;br /&gt;
  my $room =  AttrVal($device, &#039;room&#039;, &#039;undef&#039;);&lt;br /&gt;
  $room =~ s/\D//g;&lt;br /&gt;
  &lt;br /&gt;
  return((&amp;quot;d_climaControl_&amp;quot;.$room));&lt;br /&gt;
}&lt;br /&gt;
elsif($function eq &amp;quot;device&amp;quot;){&lt;br /&gt;
  return InternalVal($device,&amp;quot;device&amp;quot;,&amp;quot;device error&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
elsif($function eq &amp;quot;controlMode&amp;quot;){&lt;br /&gt;
  my $controlMode = ReadingsVal($device,&amp;quot;controlMode&amp;quot;,&amp;quot;controlMode error&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  if($controlMode ~~ /manual/)&lt;br /&gt;
    {fhem(&amp;quot;set $device controlMode auto&amp;quot;)}&lt;br /&gt;
  elsif($controlMode ~~ /auto/)&lt;br /&gt;
    {fhem(&amp;quot;set $device controlMode manual&amp;quot;)};&lt;br /&gt;
}&lt;br /&gt;
elsif($function eq &amp;quot;globalBtnLock&amp;quot;){&lt;br /&gt;
  my $globalBtnLock = ReadingsVal($device,&amp;quot;R-globalBtnLock&amp;quot;,&amp;quot;globalBtnLock error&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  if($globalBtnLock ~~ /off/){&lt;br /&gt;
    {fhem(&amp;quot;set $device regSet globalBtnLock on&amp;quot;)}&lt;br /&gt;
    {fhem (&amp;quot;set $device getConfig&amp;quot;)}&lt;br /&gt;
  }&lt;br /&gt;
  elsif($globalBtnLock ~~ /on/){&lt;br /&gt;
    {fhem(&amp;quot;set $device regSet globalBtnLock off&amp;quot;)}&lt;br /&gt;
    {fhem (&amp;quot;set $device getConfig&amp;quot;)}&lt;br /&gt;
  };&lt;br /&gt;
}&lt;br /&gt;
elsif($function eq &amp;quot;state&amp;quot;){&lt;br /&gt;
  my $state = Value($device);&lt;br /&gt;
&lt;br /&gt;
  if($state ~~ /off/){&lt;br /&gt;
    {fhem(&amp;quot;set $device on&amp;quot;)}&lt;br /&gt;
  }&lt;br /&gt;
  elsif($state ~~ /on/){&lt;br /&gt;
    {fhem(&amp;quot;set $device off&amp;quot;)}&lt;br /&gt;
  };&lt;br /&gt;
}&lt;br /&gt;
elsif($function eq &amp;quot;setTimeTable&amp;quot;){&lt;br /&gt;
  my $room         =  AttrVal($device, &#039;room&#039;, &#039;undef&#039;);&lt;br /&gt;
  $room         =~ s/\D//g;&lt;br /&gt;
  my $climaControl = (&amp;quot;d_climaControl_&amp;quot;.$room);&lt;br /&gt;
  my $dayTemp           = ReadingsVal( $climaControl, &amp;quot;dayTemp&amp;quot;          , 21.0    );&lt;br /&gt;
  my $nightTemp         = ReadingsVal( $climaControl, &amp;quot;nightTemp&amp;quot;        , 17.0    );&lt;br /&gt;
  my $workday_period_1_start  = ReadingsVal( $climaControl, &amp;quot;workday_period_1_start&amp;quot;  , &amp;quot;06:30&amp;quot; );&lt;br /&gt;
  my $workday_period_1_stop   = ReadingsVal( $climaControl, &amp;quot;workday_period_1_stop&amp;quot;   , &amp;quot;18:00&amp;quot; );&lt;br /&gt;
  my $workday_period_2_start  = ReadingsVal( $climaControl, &amp;quot;workday_period_2_start&amp;quot;  , &amp;quot;24:00&amp;quot; );&lt;br /&gt;
  my $workday_period_2_stop   = ReadingsVal( $climaControl, &amp;quot;workday_period_2_stop&amp;quot;   , &amp;quot;24:00&amp;quot; );&lt;br /&gt;
  my $saturday_period_1_start = ReadingsVal( $climaControl, &amp;quot;saturday_period_1_start&amp;quot; , &amp;quot;06:30&amp;quot; );&lt;br /&gt;
  my $saturday_period_1_stop  = ReadingsVal( $climaControl, &amp;quot;saturday_period_1_stop&amp;quot;  , &amp;quot;12:00&amp;quot; );&lt;br /&gt;
  my $saturday_period_2_start = ReadingsVal( $climaControl, &amp;quot;saturday_period_2_start&amp;quot; , &amp;quot;24:00&amp;quot; );&lt;br /&gt;
  my $saturday_period_2_stop  = ReadingsVal( $climaControl, &amp;quot;saturday_period_2_stop&amp;quot;  , &amp;quot;24:00&amp;quot; );&lt;br /&gt;
  my $sunday_period_1_start   = ReadingsVal( $climaControl, &amp;quot;sunday_period_1_start&amp;quot;   , &amp;quot;24:00&amp;quot; );&lt;br /&gt;
  my $sunday_period_1_stop    = ReadingsVal( $climaControl, &amp;quot;sunday_period_1_stop&amp;quot;    , &amp;quot;24:00&amp;quot; );&lt;br /&gt;
  my $sunday_period_2_start   = ReadingsVal( $climaControl, &amp;quot;sunday_period_2_start&amp;quot;   , &amp;quot;24:00&amp;quot; );&lt;br /&gt;
  my $sunday_period_2_stop    = ReadingsVal( $climaControl, &amp;quot;sunday_period_2_stop&amp;quot;    , &amp;quot;24:00&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
  {fhem(&amp;quot;set $device tempListMon prep $workday_period_1_start  $nightTemp $workday_period_1_stop  $dayTemp $workday_period_2_start  $nightTemp $workday_period_2_stop  $dayTemp 24:00 $nightTemp&amp;quot;)};&lt;br /&gt;
  {fhem(&amp;quot;set $device tempListTue prep $workday_period_1_start  $nightTemp $workday_period_1_stop  $dayTemp $workday_period_2_start  $nightTemp $workday_period_2_stop  $dayTemp 24:00 $nightTemp&amp;quot;)};&lt;br /&gt;
  {fhem(&amp;quot;set $device tempListWed prep $workday_period_1_start  $nightTemp $workday_period_1_stop  $dayTemp $workday_period_2_start  $nightTemp $workday_period_2_stop  $dayTemp 24:00 $nightTemp&amp;quot;)};&lt;br /&gt;
  {fhem(&amp;quot;set $device tempListThu prep $workday_period_1_start  $nightTemp $workday_period_1_stop  $dayTemp $workday_period_2_start  $nightTemp $workday_period_2_stop  $dayTemp 24:00 $nightTemp&amp;quot;)};&lt;br /&gt;
  {fhem(&amp;quot;set $device tempListFri prep $workday_period_1_start  $nightTemp $workday_period_1_stop  $dayTemp $workday_period_2_start  $nightTemp $workday_period_2_stop  $dayTemp 24:00 $nightTemp&amp;quot;)};&lt;br /&gt;
  {fhem(&amp;quot;set $device tempListSat prep $saturday_period_1_start $nightTemp $saturday_period_1_stop $dayTemp $saturday_period_2_start $nightTemp $saturday_period_2_stop $dayTemp 24:00 $nightTemp&amp;quot;)};&lt;br /&gt;
  {fhem(&amp;quot;set $device tempListSun exec $sunday_period_1_start   $nightTemp $sunday_period_1_stop   $dayTemp $sunday_period_2_start   $nightTemp $sunday_period_2_stop   $dayTemp 24:00 $nightTemp&amp;quot;)};&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Hier sind die benötigten CodeBlöcke für [[ReadingsGroup#Heizungswerte.2C_Status.2C_Steuerung_und_Wochenprofil|Heizungswerte, Status, Steuerung und Wochenprofil]] enthalten, aber auch um state zu triggern.&lt;br /&gt;
== Sonstiges ==&lt;br /&gt;
In der Regel werden die Parameter zu einem reading in den mappings unter &amp;lt;$DEVICE&amp;gt; und dann &amp;lt;$DEVICE&amp;gt;.&amp;lt;$READING&amp;gt; und dann unter &amp;lt;$READING&amp;gt;.&amp;lt;$VALUE&amp;gt; gesucht.&lt;br /&gt;
&lt;br /&gt;
=== Lesbar machen ===&lt;br /&gt;
Für die meisten Attribute gilt:&lt;br /&gt;
&lt;br /&gt;
* Wenn es komplexer wird ist es einfacher, den Code in eine eigene Routine in (beispielsweise) [[99 myUtils anlegen|99_myUtils]] auszulagern und diese aufzurufen:&lt;br /&gt;
:&amp;lt;code&amp;gt; attr &amp;lt;name&amp;gt; valueStyle {myValueToFormat($READING,$VALUE)}&amp;lt;/code&amp;gt;&lt;br /&gt;
* code für unterschiedliche readings kann auch im mapping schon aufgeteilt werden:&lt;br /&gt;
:&amp;lt;code&amp;gt;attr &amp;lt;name&amp;gt; valueStyle { SuperE5 =&amp;gt; &#039;{perl code}&#039;, Diesel =&amp;gt; &#039;{perl code}&#039; }&amp;lt;/code&amp;gt;&lt;br /&gt;
* Ifs lassen sich verschachteln und sortieren. So kann die Anzahl der Klammern und Else-Zweige reduziert werden:&lt;br /&gt;
 &amp;lt;code&amp;gt;if( $READING eq ... ) {&lt;br /&gt;
   return xxx if( $VALUE &amp;lt; 1 );&lt;br /&gt;
   return yyy if( $VALUE &amp;lt; 1.5 );&lt;br /&gt;
   return zzz;&lt;br /&gt;
 } elsif( $READING eq ... ) {&lt;br /&gt;
   ...&lt;br /&gt;
 }&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Da alles lässt sich natürlich auch kombinieren und so viel lesbarer machen als ein einziger langer Bandwurm.&lt;br /&gt;
&lt;br /&gt;
=== readingsGroup in einer Gruppe ===&lt;br /&gt;
Wenn der doppelte Rahmen um eine readingsGroup bei Darstellung in einer Gruppe stört, lässt er sich mit dem passenden style entfernen: &lt;br /&gt;
:&amp;lt;code&amp;gt;attr &amp;lt;rgName&amp;gt; style style=&amp;quot;border:0px;background:none;box-shadow:none&amp;quot;&amp;lt;/code&amp;gt; &lt;br /&gt;
Für die readingsGroup &#039;&#039;rgName&#039;&#039; wird der Darstellungsstil verändert.&lt;br /&gt;
&lt;br /&gt;
=== readingsGroup Styling mit CSS ===&lt;br /&gt;
Jede readingsGroup lässt sich durch CSS individuell stylen. &lt;br /&gt;
&lt;br /&gt;
==== Allgemeines ====&lt;br /&gt;
Damit der eigene CSS Code nach einem [[Update]] der FHEM-Style Dateien vorhanden bleibt, ist es notwenig eine eigene .css Datei (zB ios7ReadingsGroups.css) zu erstellen und ins Verzeichnis &#039;&#039;fhem/www/pgm2/&#039;&#039; zu kopieren. Anschließend muss in der [[FHEMWEB]] Instanz das Attribut &#039;&#039;CssFiles&#039;&#039; auf zB &#039;&#039;pgm2/ios7ReadingsGroups.css&#039;&#039; gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
==== Erweiterte Device Übersicht ====&lt;br /&gt;
Diese ReadingsGroup ist an der [[FHEMWEB]] Device-Übersicht angelehnt. Zusätzlich werden weitere Readings, hier Leistung, Betriebszeit Heute und Jahr, ein Link zu Detail-Seite der ReadingsGroup und Links zu den jeweiligen Device-Detail-Seite, dargestellt.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| [[Datei:RgStylingOhneCss.png|600px|mini|left|Device ReadingsGroup ohne CSS]] [[Datei:RgStylingMitCss.png|600px|mini|left|Device ReadingsGroup mit CSS]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Definition =====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define rg_devices readingsGroup &amp;lt;{rgLink($DEVICE,&amp;quot;konfigurieren&amp;quot;,&amp;quot;Details&amp;quot;)}&amp;gt;,&amp;lt;Device&amp;gt;,&amp;lt;Status&amp;gt;,&amp;lt;Leistung&amp;gt;,&amp;lt;Heute&amp;gt;,&amp;lt;Jahr&amp;gt;\&lt;br /&gt;
wzDeckenfluter:&amp;lt;%light_floor_lamp&amp;gt;,&amp;lt;{rgLink(&amp;quot;wzDeckenfluter&amp;quot;,&amp;quot;detail&amp;quot;,&amp;quot;Deckenfluter&amp;quot;)}&amp;gt;,state,&amp;lt;&amp;gt;,dauerHeute,dauerJahr\&lt;br /&gt;
wzMacMini:&amp;lt;%it_nas&amp;gt;,&amp;lt;{rgLink(&amp;quot;wzMacMini&amp;quot;,&amp;quot;detail&amp;quot;,&amp;quot;MacMini&amp;quot;)}&amp;gt;,state,power,consumption,consumptionYear\&lt;br /&gt;
attr rg_devices noheading 1&lt;br /&gt;
attr rg_devices nonames 1&lt;br /&gt;
attr rg_devices notime 1&lt;br /&gt;
attr rg_devices room ReadingsGroup Styling&lt;br /&gt;
attr rg_devices style class=&amp;quot;block wide rgDevices&amp;quot;&lt;br /&gt;
attr rg_devices valueFormat { &#039;power&#039; =&amp;gt; &amp;quot;%.1f W &amp;quot;, consumption =&amp;gt; &amp;quot;%.2f kWh&amp;quot;, &#039;consumptionYear&#039; =&amp;gt; &amp;quot;%.2f kWh&amp;quot;  }&lt;br /&gt;
attr rg_devices valueIcon { state =&amp;gt; &#039;%devStateIcon&#039; }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit sich der CSS auf die richtige readingsGroup bezieht, ist es nötigt &lt;br /&gt;
das Attribut &#039;&#039;style&#039;&#039; anzupassen.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Definition !! Erläuterungen &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; |&amp;lt;code&amp;gt;attr &amp;lt;rgName&amp;gt; style class=&amp;quot;block wide rgDevices&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Die Klassen &#039;&#039;block&#039;&#039; und &#039;&#039;wide&#039;&#039; müssen eingetragen werden. Der Name der Nachfolgenden Klasse, hier &#039;&#039;rgDevices&#039;&#039;, ist frei wählbar.&lt;br /&gt;
|}&lt;br /&gt;
===== Funktion rgLink() =====&lt;br /&gt;
Die Funktion rgLink($name,$action,$label) liefert einen Link mit dem Namen $label zurück. Der Code gehört in die [[99 myUtils anlegen|99_myUtils.pm]].&lt;br /&gt;
* $name - Name des Device das aufgerufen werden soll &lt;br /&gt;
* $action - Aktion die Ausgeführt werden soll. &lt;br /&gt;
**&#039;&#039;konfigurieren&#039;&#039; erzeugt den kleinen &#039;&#039;Details&#039;&#039; Button links oben der einem zur Detail Seite der ReadingsGroup führt - nützlich wenn das ReadingsGroup-Attribut &#039;&#039;noheading&#039;&#039; gesetzt ist&lt;br /&gt;
** &#039;&#039;detail&#039;&#039; erzeugt einen Link zu Device-Detail Seite&lt;br /&gt;
* $label - Link-Name&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sub rgLink($$$){&lt;br /&gt;
  my ($name,$action,$label) = @_; &lt;br /&gt;
  my $link = &amp;quot;&amp;quot;;&lt;br /&gt;
  my $fhemLink = &amp;quot;&amp;quot;;&lt;br /&gt;
  my $txt = &amp;quot;&amp;quot;;&lt;br /&gt;
  my $ret = &amp;quot;&amp;quot;;&lt;br /&gt;
  my $divStyle = &amp;quot;&amp;quot;;&lt;br /&gt;
  my $aStyle = &amp;quot;&amp;quot;;&lt;br /&gt;
  &lt;br /&gt;
  # FHEM Variablen einbinden&lt;br /&gt;
  use vars qw($FW_ME);&lt;br /&gt;
  use vars qw($FW_subdir);&lt;br /&gt;
  use vars qw($FW_ss);&lt;br /&gt;
  use vars qw($FW_tp);&lt;br /&gt;
&lt;br /&gt;
  if( $action eq &amp;quot;konfigurieren&amp;quot; ){&lt;br /&gt;
    $fhemLink  = &amp;quot;detail=$name&amp;quot;;&lt;br /&gt;
    $divStyle = &amp;quot;cursor:pointer;font-size:11px;padding-bottom:2px;padding-left:3px;&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  elsif( $action eq &amp;quot;detail&amp;quot; ){&lt;br /&gt;
    $fhemLink  = &amp;quot;detail=$name&amp;quot;;&lt;br /&gt;
    $divStyle = &amp;quot;cursor:pointer;display:inline;&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  $link = &#039;&amp;lt;a onclick=&amp;quot;location.href=\&#039;&#039; . $FW_ME . $FW_subdir . &#039;?&#039; . $fhemLink . &#039;\&#039;&amp;quot; style=&amp;quot;&#039; . $aStyle . &#039;&amp;quot;&amp;gt;&#039; . $label . &#039;&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
  $txt  = &#039;&amp;lt;div style=&amp;quot;&#039; . $divStyle . &#039;&amp;quot;&amp;gt;&#039; . $link . &#039;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
  $ret  = &amp;quot;$txt&amp;quot;;&lt;br /&gt;
  &lt;br /&gt;
  return $ret;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Randnotiz|RNText=Tipp&lt;br /&gt;
Verwende zum Bearbeiten der eigenen .css Dateien entweder den [http://fhem.de/commandref_DE.html#JavaScripts Codemirror Editor] oder einen eigenen Editor mit [http://de.wikipedia.org/wiki/Syntaxhervorhebung Syntax Highlighting] . Das hilft bei der Fehlersuche enorm. }}&lt;br /&gt;
===== Styling =====&lt;br /&gt;
Die eigene .css Datei erscheint in FHEM unter Edit-Files --&amp;gt; styles und kann direkt im FHEM-Editor oder mit eigenen Editor bearbeitet werden.&lt;br /&gt;
&lt;br /&gt;
ios7ReadingsGroups.css:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/*  Readings Groups Devices */&lt;br /&gt;
table.rgDevices tr td{ text-align: center; }&lt;br /&gt;
table.rgDevices tr:first-child td:nth-child(2){ /* 1. Zeile 2. Spalte */ text-align: center; }&lt;br /&gt;
table.rgDevices tr td:first-child{  /* 1. Spalte */ width: 45px; text-align: center; }&lt;br /&gt;
table.rgDevices tr td:nth-child(2){ /* 2. Spalte */ width: 33%;  text-align: left; }&lt;br /&gt;
table.rgDevices tr td:nth-child(3){ /* 3. Spalte */ width: 15%; }&lt;br /&gt;
table.rgDevices tr td:nth-child(4){ /* 4. Spalte */ width: 15%; }&lt;br /&gt;
table.rgDevices tr td:nth-child(5){ /* 5. Spalte */ width: 15%; }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Auf Portrait / Landscape Modus des Smartphone unterscheiden ====&lt;br /&gt;
Dieses Beispiel ist an das obige Beispiel [[#Erweiterte_Device_.C3.9Cbersicht|Erweiterte Device Übersicht]] angelehnt. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; |[[Datei:RgStylingSmallscreenPortrait.png|300px|mini|center|Device ReadingsGroup im Portrait Modus]]&lt;br /&gt;
|[[Datei:RgStylingSmallscreenLandscape.png|550px|mini|center|Device ReadingsGroup im Landscape Modus]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Allgemeines =====&lt;br /&gt;
Mit CSS ist man in der Lage auf die aktuelle Bildschirmlage zu reagieren. Alle Anweisungen die in diesen beiden Funktionen zwischen den beiden { } stehen, werden je nach Bildschirmlage aufgerufen&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/* Portrait Modus */&lt;br /&gt;
@media all and (orientation:portrait) { }&lt;br /&gt;
&lt;br /&gt;
/* Landscape Modus */&lt;br /&gt;
@media all and (orientation:landscape) { }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Styling =====&lt;br /&gt;
{{Randnotiz|RNText=Info&lt;br /&gt;
* &#039;&#039;width: xx%&#039;&#039; ändert die Breite der Spalte&lt;br /&gt;
* &#039;&#039;display: none&#039;&#039; blendet die Spalte aus}}&lt;br /&gt;
In der FHEMWEB_phone Instanz muss wie [[#Allgemeines|hier]] beschrieben eine neue eigene .css Datei eingetragen werden. In diesem Beispiel ios7smallscreenReadingsGroups.css&lt;br /&gt;
&lt;br /&gt;
ios7smallscreenReadingsGroups.css&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/* landscape und portrait modus */&lt;br /&gt;
table.rgDevices tr td { /* Zuerst alles centern */ text-align: center; }&lt;br /&gt;
table.rgDevices tr:first-child td:nth-child(1){ /* 1. Zeile 1. Spalte */ text-align: center; }&lt;br /&gt;
table.rgDevices tr td:first-child { /* 1. Spalte */ width: 5%; }&lt;br /&gt;
table.rgDevices tr:first-child td:nth-child(2) { /* 1. Zeile 2. Spalte */ text-align: center; }&lt;br /&gt;
table.block table tr td table.rgDevices tr td { border-bottom: 1px solid #cbcbcb; }&lt;br /&gt;
&lt;br /&gt;
/* Portrait Modus */&lt;br /&gt;
@media all and (orientation:portrait) {&lt;br /&gt;
  table.rgDevices tr td:nth-child(2){ /* 2. Spalte */ width: 50%; text-align: left; }&lt;br /&gt;
  table.rgDevices tr td:nth-child(3){ /* 3. Spalte */ width: auto; text-align: right; display: table-cell; }&lt;br /&gt;
  table.rgDevices tr td:nth-child(4){ /* 4. Spalte */ width: 0; display: none; }&lt;br /&gt;
  table.rgDevices tr td:nth-child(5){ /* 5. Spalte */ width: 0; display: none; }&lt;br /&gt;
  table.rgDevices tr td:nth-child(6){ width: 0; display: none; }	&lt;br /&gt;
  table.rgDevices tr td div a svg{ margin-left: 90px; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Landscape Modus */&lt;br /&gt;
@media all and (orientation:landscape) { &lt;br /&gt;
  table.rgDevices tr td:nth-child(2){ /* 2. Spalte */ width: 35%; text-align: left; }&lt;br /&gt;
  table.rgDevices tr td:nth-child(3){ /* 3. Spalte */ width: 15%; }&lt;br /&gt;
  table.rgDevices tr td:nth-child(4){ /* 4. Spalte */ width: 15%; }&lt;br /&gt;
  table.rgDevices tr td:nth-child(5){ /* 5. Spalte */ width: 15%; }&lt;br /&gt;
  table.rgDevices tr td:nth-child(5){ /* 5. Spalte */ width: 15%; }	&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Plots im Portrait Modus des Smartphones ausblenden ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; |[[Datei:RgStylingSmallscreenPortraitPlot.png|350px|mini|center|Device ReadingsGroup im Portrait Modus]]&lt;br /&gt;
|[[Datei:RgStylingSmallscreenLandscapePlot.PNG|550px|mini|center|Plot nur im Landscape]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Um die Plot und alle Steuerelemente im Portrait Modus auszublenden fügt man in seine eigene smallscreen.css wie [[#Allgemeines|hier beschrieben]] folgendes ein:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@media all and (orientation:portrait) {&lt;br /&gt;
  .SVGplot, .SVGlabel, .Zoom-in, .Zoom-out, .Prev { width: 0; display: none; }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
[[Kategorie:Code Snippets]]&lt;/div&gt;</summary>
		<author><name>Fhainz</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=99_myUtils_anlegen&amp;diff=8753</id>
		<title>99 myUtils anlegen</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=99_myUtils_anlegen&amp;diff=8753"/>
		<updated>2014-12-06T07:37:01Z</updated>

		<summary type="html">&lt;p&gt;Fhainz: nowiki duch pre ersetzt, code einrückungen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mit wachsender Anzahl von eigenen Helfer-Programmen wird die Speicherung von perl-code in notify unübersichtlich. Es besteht die Möglichkeit, eine eigene Programmdatei zu erzeugen, in der mehrere kleine Programme gesammelt und dann aus diversen notify- oder at-Anweisungen aufgerufen werden.&lt;br /&gt;
== Eine neue Programmdatei erzeugen ==&lt;br /&gt;
Eine ‚leere‘ Programmdatei sieht folgendermassen aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;package main;&lt;br /&gt;
use strict;&lt;br /&gt;
use warnings;&lt;br /&gt;
use POSIX;&lt;br /&gt;
sub&lt;br /&gt;
myUtils_Initialize($$)&lt;br /&gt;
{&lt;br /&gt;
  my ($hash) = @_;&lt;br /&gt;
}&lt;br /&gt;
1;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Legen Sie in Ihrem fhem-Programmverzeichnis (FHEM) eine Datei mit dem Name 99_myUtils.pm an und kopieren Sie den o.g. Inhalt hinein.&lt;br /&gt;
&lt;br /&gt;
Eine einfache Möglichkeit: Wählen Sie in fhem den Menüpunkt &#039;Edit Files&#039;, klicken Sie die Datei &#039;99_Utils.pm&#039; an. Im oberen Bereich gibt es einen button &#039;Save as&#039; - tragen Sie in dem Textfeld 99_myUtils.pm ein und klicken dann auf den Save as-button. Danach erscheint Ihre Programmdatei ebenfalls unter dem Menüpunkt &#039;Edit Files&#039;. Ersetzen Sie dann den Inhalt mit dem Programmcode von oben - oder löschen Sie alle Routinen heraus, so dass der code wie oben übrig bleibt&amp;amp;#160;:)&lt;br /&gt;
&lt;br /&gt;
Für etwas längere Programme ist ein externer Editor empfohlen, der Sie dabei unterstützt, z.B. Klammernpaare korrekt zu setzen - dies ist der häufigste Fehler! Dabei unterstützt z.B. das kostenlose Notepad++.&lt;br /&gt;
&lt;br /&gt;
Drei Dinge sind für Ihre Programmdatei besonders zu beachten:&lt;br /&gt;
&lt;br /&gt;
# Der Dateiname muss mit 99_ beginnen. Fhem lädt beim Start alle Programmdateien mit dem prefix 99_. Andere Programmdateien werden erst dann geladen, wenn sie durch eine define-Anweisung in fhem.cfg angefordert werden. So wird z.B. 10_FS20.pm erst geladen, wenn beim Einlesen der Datei fhem.cfg das erste define für ein FS20-device abgearbeitet wird. Da Ihre eigene Programmsammlung wahrscheinlich kein neues Gerät mit einem zugehörigen define-Befehl implementiert, würde sie also nie geladen, wenn ihr Name nicht mit 99_ beginnt.&lt;br /&gt;
# Damit die neue Datei bei &amp;quot;Edit Files&amp;quot; angezeigt wird, muss sie mit Utils.pm enden. Also zum Beispiel 99_meineUtils.pm&lt;br /&gt;
# Der Name der Programmdatei muss mit dem Namen der Initialize-Routine übereinstimmen. Wenn Sie Ihr Programm also 99_Werkzeugkasten.pm nennen, muss die im code dargestellte initialize-Routine sub Werkzeugkasten_Initialize heißen.&lt;br /&gt;
# Die Zeile &amp;lt;code&amp;gt; 1; &amp;lt;/code&amp;gt; muss immer die letzte Programmzeile sein. Wenn Sie also eigene Routinen in Ihre Programmsammlung einfügen, tragen Sie diese zwischen dem Ende der Initialize-Routine und der abschließenden Zeile &amp;lt;code&amp;gt; 1; &amp;lt;/code&amp;gt; ein.&lt;br /&gt;
== Eigene Routinen einfügen ==&lt;br /&gt;
Als Beispiel dient das Umsetzen von FS20 toggle-Events aus dem Artikel &amp;quot;[[FS20 Toggle Events auf On/Off umsetzen]]&amp;quot;.&lt;br /&gt;
Das gesamte Programm sieht dann folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;package main;&lt;br /&gt;
use strict;&lt;br /&gt;
use warnings;&lt;br /&gt;
use POSIX;&lt;br /&gt;
sub&lt;br /&gt;
myUtils_Initialize($$)&lt;br /&gt;
{&lt;br /&gt;
  my ($hash) = @_;&lt;br /&gt;
}&lt;br /&gt;
##########################################################&lt;br /&gt;
# Untoggle&lt;br /&gt;
# toggle-Vorgänge in den Status on/off umsetzen&lt;br /&gt;
sub Untoggle($) {&lt;br /&gt;
  my ($obj) = @_;&lt;br /&gt;
&lt;br /&gt;
  if( Value($obj) eq &amp;quot;toggle&amp;quot; ){&lt;br /&gt;
    if( OldValue($obj) eq &amp;quot;off&amp;quot; ) {&lt;br /&gt;
      fhem( &amp;quot;setstate $obj on&amp;quot; );&lt;br /&gt;
    }&lt;br /&gt;
    else {&lt;br /&gt;
      fhem( &amp;quot;setstate $obj off&amp;quot; );&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  else {&lt;br /&gt;
    fhem( &amp;quot;setstate $obj &amp;quot;.Value($obj) );&lt;br /&gt;
  } &lt;br /&gt;
}&lt;br /&gt;
1;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Der Aufruf erfolgt dann z.B. so:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;#fhem.cfg&lt;br /&gt;
define lampe_untoggle notify lampe {Untoggle(„@“)}&amp;lt;/pre&amp;gt;&lt;br /&gt;
Der Aufruf aus einem notify (oder at) erfolgt als Perl-code, muss also in geschweiften Klammern stehen. Der Aufruf erfolgt durch Angabe des Namens der Routine (Untoggle) unter Angabe der zu übergebenden Parameter (hier &amp;quot;@&amp;quot;).&lt;br /&gt;
Im Programm wurde die Routine Untoggle mit &#039;&#039;&#039;einem&#039;&#039;&#039; Parameter definiert ( Untoggle($) , die Anzahl der $-Zeichen bestimmt die Anzahl der zu übergebenden Parameter). Der Wert des übergebenen Parameters wird in der ersten Programmzeile in die Variable $obj übernommen (my ($obj) = @_; ). &lt;br /&gt;
Der Aufruf erfolgt mit Untoggle(„@“) . Der Platzhalter @ in fhem steht für den Namen des Geräts. Im o.g. Beispiel erfolgt der Aufruf also eigentlich mit Untoggle(„lampe“). Natürlich können beim Aufruf auch feste Werte ( „lampe1“ ) oder Variablen ( $hour ) übergeben werden.&lt;br /&gt;
&lt;br /&gt;
=== Routinen mit mehreren Parametern ===&lt;br /&gt;
In der Definition der Routine geben Sie außerdem an, wieviele Parameter übergeben werden sollen, für 2 Parameter z.B. so:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;define test at *09:00 { wakeup($we, „Schlafzimmerlampe“) }&amp;lt;/pre&amp;gt;&lt;br /&gt;
Die Deklaration der Routine in Ihrer Programmdatei muss dann so beginnen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#Nur am Wochenende eingeschaltet&lt;br /&gt;
sub wakeup($$) {&lt;br /&gt;
  my ($wochenende, $device) = @_;&lt;br /&gt;
  if ($wochenende) {&lt;br /&gt;
    fhem( &amp;quot;set $device on&amp;quot; );&lt;br /&gt;
  }&lt;br /&gt;
  else {&lt;br /&gt;
    fhem( &amp;quot;set $device off&amp;quot; );&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
Durch die Anzahl der $-Zeichen in der Routinen-Deklaration wird also die Anzahl der Parameter festgelegt. In der ersten Programmzeile Ihrer Routine übernehmen Sie dann die übergebenen Parameterwerte in lokale Variablen. Wie beim Routinen-Aufruf muss auch hierbei die Anzahl der Parameter mit der Routinen-Deklaration (also Anzahl der $-Zeichen) übereinstimmen.&lt;br /&gt;
&lt;br /&gt;
=== Routinen ohne Parameter ===&lt;br /&gt;
Auch Routinen ohne Parameter sind natürlich möglich. Definition und Aufruf sehen dann folgendermassen aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sub parameterlos() {&lt;br /&gt;
  ...&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
 { parameterlos() }&lt;br /&gt;
&lt;br /&gt;
== Eigene Programmdatei laden ==&lt;br /&gt;
Ihre Programmdatei wird nur bei fhem-start geladen - es sei denn Sie verwenden das Kommando reload. &lt;br /&gt;
Also bearbeiten Sie Ihr Programm, speichern die Programmdatei, und weisen fhem dann an, die Programmdatei erneut zu laden. Der Befehl dazu, der in das fhem Kommandofeld eingegeben wird, lautet:&lt;br /&gt;
&lt;br /&gt;
 reload 99_myUtils.pm&lt;br /&gt;
Treten beim Laden (Syntax)fehler auf, werden diese am Bildschirm wie auch im Log angezeigt. Da der Ladevorgang fehlgeschlagen ist, stehen Ihre eigenen Routinen nun nicht zur Verfügung (bzw in der zuletzt erfolgreich geladenen Version). Beheben Sie also alle Fehler, speichern Sie Ihre Programmdatei erneut und führen Sie wieder ein reload aus.&lt;br /&gt;
&lt;br /&gt;
Viel Erfolg!&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://notepad-plus-plus.org/ Notepad++] Editor&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Code Snippets]]&lt;/div&gt;</summary>
		<author><name>Fhainz</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=ReadingsGroup&amp;diff=8505</id>
		<title>ReadingsGroup</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=ReadingsGroup&amp;diff=8505"/>
		<updated>2014-11-16T12:30:19Z</updated>

		<summary type="html">&lt;p&gt;Fhainz: /* ReadingsGroup Styling mit CSS */&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;
|ModCmdRef=readingsGroup&lt;br /&gt;
|ModForumArea=Frontends&lt;br /&gt;
|ModTechName=33_readingsGroup.pm&lt;br /&gt;
|ModOwner=Andre ([http://forum.fhem.de/index.php?action=profile;u=430 Forum] / [[Benutzer Diskussion:justme|Wiki]])}}&lt;br /&gt;
&lt;br /&gt;
Das Fhem-[[:Kategorie:Hilfsmodul|Hilfsmodul]] [[readingsGroup]] bietet eine einfache Möglichkeit, &#039;&#039;Readings&#039;&#039; (kein Präfix vor dem Reading-Namen), &#039;&#039;Internals&#039;&#039; (Präfix &amp;quot;+&amp;quot; vor dem Namen des internen Wertes) und &#039;&#039;Attributes&#039;&#039; (Präfix &amp;quot;?&amp;quot; vor dem Namen des Attributs) von einem oder mehreren &#039;&#039;Devices&#039;&#039; darzustellen und flexibel zu formatieren.&lt;br /&gt;
&lt;br /&gt;
Die Aktualisierung im Browserfenster geschieht per longpoll und überträgt nur die jeweils geänderten Zellen. Wenn eine readingsGroup in keinem Browserfenster angezeigt wird findet keine longpoll aktualisierung statt.&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;
Bitte beachten: die folgenden Beispiele enthalten keine Maskierungen oder Verdoppelungen für ; und Zeilenende, sondern sind so angegeben, wie sie im [[PGM2|Web Interface]] im Befehls-Eingabefeld 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;
=== Übersicht HomeMatic Geräte ===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define HM_Components readingsGroup &amp;lt;Gerät&amp;gt;,&amp;lt;Name&amp;gt;,&amp;lt;Model&amp;gt;,&amp;lt;S/N&amp;gt; TYPE=CUL_HM:+NAME,?model,D-serialNr&amp;lt;/nowiki&amp;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 RSSI Wert aller Devices (am IODev &#039;&#039;cul&#039;&#039;) 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 RSSI Wert mit der zugehörigen Zeit aller Devices (am IODev &#039;&#039;cul&#039;&#039;) 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=2 | [[Datei:rgculRSSI2.png|thumb]]&lt;br /&gt;
|-&lt;br /&gt;
|attr culRSSI valueStyle {return undef if($READING =~ m/TIME/); ($VALUE &amp;lt;= -85)?&#039;style=&amp;quot;color:red&amp;quot;&#039;:($VALUE &amp;lt;= -80)?&#039;style=&amp;quot;color:yellow&amp;quot;&#039;:undef}&lt;br /&gt;
|Schlechte RSSI Werte sollen abhängig von zwei Schwellwerten gelb oder rot eingefärbt werden (auf dem Screenshot nicht zu sehen).&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-temp,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 Raum &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 Batteriezustand 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;
=== 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;
=== Noch ein Heizungsbeispiel ===&lt;br /&gt;
noch zu übernehmen: http://forum.fhem.de/index.php/topic,26479.msg195482.html#msg195482&lt;br /&gt;
&lt;br /&gt;
=== Readings aus zusätzlichen Devices ===&lt;br /&gt;
Im folgenden Beispiel wird gezeigt wie sich Readings zusätzlicher Devices zu einer Zeile mit mehreren Readings hinzufügen lassen. Diese zusätzlichen Devices können z.b. die unterschiedlichen Channel eines HomeMatic Gerätes sein. Im folgenden Beispiel wird der Name des zugehörigen Geräts dynamisch bestimmt.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Definition !! Erläuterungen &lt;br /&gt;
|-&lt;br /&gt;
| colspan=2 | [[Datei:rgHeizung4.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 myTemp readingsGroup &amp;lt;Raum&amp;gt;,&amp;lt;Tist&amp;gt;,&amp;lt;Tsoll&amp;gt;,&amp;lt;Mode&amp;gt;,&amp;lt;Tnight&amp;gt;,&amp;lt;Tday&amp;gt;,&amp;lt;Hum&amp;gt;,&amp;lt;BatTC&amp;gt;,&amp;lt;Vist&amp;gt;,&amp;lt;Vsoll&amp;gt;,&amp;lt;Verr&amp;gt;,&amp;lt;BatVD&amp;gt; Thermostat.(WZ|OZ|AZ|Bad|Kueche|SZ|GZ|Bad.OG):measured-temp,desired-temp,controlMode,night-temp,day-temp,humidity,battery,ValvePosition@{valveOfDevice($DEVICE)},ValveDesired@{valveOfDevice($DEVICE)},R-valveErrorPos@{valveOfDevice($DEVICE)},battery@{valveOfDevice($DEVICE)} Broetje:ToutIst &amp;lt;/code&amp;gt;&lt;br /&gt;
| Diverse Readings aller Thermostat Devices und des jeweils zugehörigen Ventilantriebs. &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr myTemp mapping    { &#039;Broetje&#039; =&amp;gt; &#039;Garten&#039;,&#039;Thermostat.AZ&#039; =&amp;gt; &#039;EG Arbeitszimmer&#039;,&#039;Thermostat.SZ&#039; =&amp;gt; &#039;OG Schlafzimmer&#039;,&#039;Thermostat.WZ&#039;=&amp;gt;&#039;EG Wohnzimmer&#039;,&#039;Thermostat.Kueche&#039; =&amp;gt; &#039;EG Küche&#039;,&#039;Thermostat.GZ&#039; =&amp;gt; &#039;OG Gästezimmer&#039;,&#039;Thermostat.Bad&#039; =&amp;gt; &#039;EG Bad&#039;,&#039;Thermostat.Bad.OG&#039; =&amp;gt; &#039;OG Bad&#039;,&#039;Thermostat.OZ&#039; =&amp;gt; &#039;EG Kaminzimmer&#039;,&#039;desired-temp&#039; =&amp;gt; &amp;lt;nowiki&amp;gt;&#039;&#039;&amp;lt;/nowiki&amp;gt; }&amp;lt;/code&amp;gt;&lt;br /&gt;
| Die Benennung der Zeilentitel (Das ist je nach Konfiguration auch über $ALIAS und/oder $ROOM lösbar).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr myTemp commands   { &#039;desired-temp&#039; =&amp;gt; &#039;desired-temp:&#039; }&amp;lt;/code&amp;gt;&lt;br /&gt;
| desired-temp soll per dropDown einstellbar sein.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr myTemp nameStyle style=&amp;quot;color:yellow&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 myTemp 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 Batteriestand sollen jeweils Icons angezeigt werden.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attr myTemp valueFormat { &#039;measured-temp&#039; =&amp;gt; &amp;quot;%0.1f &amp;amp;amp;deg;C&amp;quot;,&#039;ToutIst&#039; =&amp;gt; &amp;quot;%.1f &amp;amp;amp;deg;C&amp;quot;,&#039;night-temp&#039; =&amp;gt; &amp;quot;%.1f &amp;amp;amp;deg;C&amp;quot;,&#039;day-temp&#039; =&amp;gt; &amp;quot;%.1f &amp;amp;amp;deg;C&amp;quot;,&#039;humidity&#039; =&amp;gt; &amp;quot;%.0f &lt;br /&gt;
%%&amp;quot;,&#039;ValvePosition&#039; =&amp;gt; &amp;quot;%.0f %%&amp;quot;,&#039;ValveDesired&#039; =&amp;gt; &amp;quot;%.0f %%&amp;quot;,&#039;R-valveErrorPos&#039; =&amp;gt; &amp;quot;%.0f %%&amp;quot; }&amp;lt;/code&amp;gt;&lt;br /&gt;
| Die Formatierung der Werte. &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&lt;br /&gt;
 #namen des ventil device aus thermostat device ableiten&lt;br /&gt;
 sub valveOfDevice ($) {&lt;br /&gt;
   my ($DEVICE) = @_;&lt;br /&gt;
  &lt;br /&gt;
   if ($DEVICE =~ m/AZ/) {&lt;br /&gt;
  	return &amp;quot;Ventil.&amp;quot;.substr($DEVICE,11).&amp;quot;.Nord&amp;quot;;&lt;br /&gt;
   } else {&lt;br /&gt;
  	return &amp;quot;Ventil.&amp;quot;.substr($DEVICE,11);  	&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]]: Hier wird aus dem Namen des Thermostaten der Name des zugehörigen Ventilantriebs abgeleitet.&lt;br /&gt;
|}&lt;br /&gt;
Da im {...} Teil des &amp;lt;reading&amp;gt;@&amp;lt;device&amp;gt; Arguments keine Leerzeichen oder Kommas vorkommen dürfen ist er in der Regel das Einfachste die Funktionalität wie in diesem Beispiel in eine eigene Routine auszulagern. Mit ein paar &#039;Tricks&#039; lässt es sich aber manchmal auch ohne Leerzeichen oder Kommas lösen und dann direkt in die Definition schreiben:&amp;lt;code&amp;gt;...,ValvePosition@{$DEVICE=~s/Thermostat/Ventil/;$DEVICE;},...&amp;lt;/code&amp;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;
=== 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;, die in der 99_myUtils.pm definiert wird. Das abschließende @disabled sorgt dafür, dass 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, dass 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;
 }&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 in {{Link2Forum|Topic=14425|Message=109383|LinkText=diesem Forenbeitrag}}: 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;
In der Regel werden die Parameter zu einem reading in den mappings unter &amp;lt;$DEVICE&amp;gt; und dann &amp;lt;$DEVICE&amp;gt;.&amp;lt;$READING&amp;gt; und dann unter &amp;lt;$READING&amp;gt;.&amp;lt;$VALUE&amp;gt; gesucht.&lt;br /&gt;
&lt;br /&gt;
=== Lesbar machen ===&lt;br /&gt;
Für die meisten Attribute gilt:&lt;br /&gt;
&lt;br /&gt;
* Wenn es komplexer wird ist es einfacher, den Code in eine eigene Routine in (beispielsweise) [[99 myUtils anlegen|99_myUtils]] auszulagern und diese aufzurufen:&lt;br /&gt;
:&amp;lt;code&amp;gt; attr &amp;lt;name&amp;gt; valueStyle {myValueToFormat($READING,$VALUE)}&amp;lt;/code&amp;gt;&lt;br /&gt;
* code für unterschiedliche readings kann auch im mapping schon aufgeteilt werden:&lt;br /&gt;
:&amp;lt;code&amp;gt;attr &amp;lt;name&amp;gt; valueStyle { SuperE5 =&amp;gt; &#039;{perl code}&#039;, Diesel =&amp;gt; &#039;{perl code}&#039; }&amp;lt;/code&amp;gt;&lt;br /&gt;
* Ifs lassen sich verschachteln und sortieren. So kann die Anzahl der Klammern und Else-Zweige reduziert werden:&lt;br /&gt;
 &amp;lt;code&amp;gt;if( $READING eq ... ) {&lt;br /&gt;
   return xxx if( $VALUE &amp;lt; 1 );&lt;br /&gt;
   return yyy if( $VALUE &amp;lt; 1.5 );&lt;br /&gt;
   return zzz;&lt;br /&gt;
 } elsif( $READING eq ... ) {&lt;br /&gt;
   ...&lt;br /&gt;
 }&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Da alles lässt sich natürlich auch kombinieren und so viel lesbarer machen als ein einziger langer Bandwurm.&lt;br /&gt;
&lt;br /&gt;
=== readingsGroup in einer Gruppe ===&lt;br /&gt;
Wenn der doppelte Rahmen um eine readingsGroup bei Darstellung in einer Gruppe stört, lässt er sich mit dem passenden style entfernen: &lt;br /&gt;
:&amp;lt;code&amp;gt;attr &amp;lt;rgName&amp;gt; style style=&amp;quot;border:0px;background:none;box-shadow:none&amp;quot;&amp;lt;/code&amp;gt; &lt;br /&gt;
Für die readingsGroup &#039;&#039;rgName&#039;&#039; wird der Darstellungsstil verändert.&lt;br /&gt;
&lt;br /&gt;
=== readingsGroup Styling mit CSS ===&lt;br /&gt;
Jede readingsGroup lässt sich durch CSS individuell stylen. &lt;br /&gt;
&lt;br /&gt;
==== Allgemeines ====&lt;br /&gt;
Damit der eigene CSS Code nach einem [[Update]] der FHEM-Style Dateien vorhanden bleibt, ist es notwenig eine eigene .css Datei (zB ios7ReadingsGroups.css) zu erstellen und ins Verzeichnis &#039;&#039;fhem/www/pgm2/&#039;&#039; zu kopieren. Anschließend muss in der [[FHEMWEB]] Instanz das Attribut &#039;&#039;CssFiles&#039;&#039; auf zB &#039;&#039;pgm2/ios7ReadingsGroups.css&#039;&#039; gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
==== Erweiterte Device Übersicht ====&lt;br /&gt;
Diese ReadingsGroup ist an der [[FHEMWEB]] Device-Übersicht angelehnt. Zusätzlich werden weitere Readings, hier Leistung, Betriebszeit Heute und Jahr, ein Link zu Detail-Seite der ReadingsGroup und Links zu den jeweiligen Device-Detail-Seite, dargestellt.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| [[Datei:RgStylingOhneCss.png|600px|mini|left|Device ReadingsGroup ohne CSS]] [[Datei:RgStylingMitCss.png|600px|mini|left|Device ReadingsGroup mit CSS]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Definition =====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define rg_devices readingsGroup &amp;lt;{rgLink($DEVICE,&amp;quot;konfigurieren&amp;quot;,&amp;quot;Details&amp;quot;)}&amp;gt;,&amp;lt;Device&amp;gt;,&amp;lt;Status&amp;gt;,&amp;lt;Leistung&amp;gt;,&amp;lt;Heute&amp;gt;,&amp;lt;Jahr&amp;gt;\&lt;br /&gt;
wzDeckenfluter:&amp;lt;%light_floor_lamp&amp;gt;,&amp;lt;{rgLink(&amp;quot;wzDeckenfluter&amp;quot;,&amp;quot;detail&amp;quot;,&amp;quot;Deckenfluter&amp;quot;)}&amp;gt;,state,&amp;lt;&amp;gt;,dauerHeute,dauerJahr\&lt;br /&gt;
wzMacMini:&amp;lt;%it_nas&amp;gt;,&amp;lt;{rgLink(&amp;quot;wzMacMini&amp;quot;,&amp;quot;detail&amp;quot;,&amp;quot;MacMini&amp;quot;)}&amp;gt;,state,power,consumption,consumptionYear\&lt;br /&gt;
attr rg_devices noheading 1&lt;br /&gt;
attr rg_devices nonames 1&lt;br /&gt;
attr rg_devices notime 1&lt;br /&gt;
attr rg_devices room ReadingsGroup Styling&lt;br /&gt;
attr rg_devices style class=&amp;quot;block wide rgDevices&amp;quot;&lt;br /&gt;
attr rg_devices valueFormat { &#039;power&#039; =&amp;gt; &amp;quot;%.1f W &amp;quot;, consumption =&amp;gt; &amp;quot;%.2f kWh&amp;quot;, &#039;consumptionYear&#039; =&amp;gt; &amp;quot;%.2f kWh&amp;quot;  }&lt;br /&gt;
attr rg_devices valueIcon { state =&amp;gt; &#039;%devStateIcon&#039; }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit sich der CSS auf die richtige readingsGroup bezieht, ist es nötigt &lt;br /&gt;
das Attribut &#039;&#039;style&#039;&#039; anzupassen.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Definition !! Erläuterungen &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; |&amp;lt;code&amp;gt;attr &amp;lt;rgName&amp;gt; style class=&amp;quot;block wide rgDevices&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Die Klassen &#039;&#039;block&#039;&#039; und &#039;&#039;wide&#039;&#039; müssen eingetragen werden. Der Name der Nachfolgenden Klasse, hier &#039;&#039;rgDevices&#039;&#039;, ist frei wählbar.&lt;br /&gt;
|}&lt;br /&gt;
===== Funktion rgLink() =====&lt;br /&gt;
Die Funktion rgLink($name,$action,$label) liefert einen Link mit dem Namen $label zurück. Der Code gehört in die [[99 myUtils anlegen|99_myUtils.pm]].&lt;br /&gt;
* $name - Name des Device das aufgerufen werden soll &lt;br /&gt;
* $action - Aktion die Ausgeführt werden soll. &lt;br /&gt;
**&#039;&#039;konfigurieren&#039;&#039; erzeugt den kleinen &#039;&#039;Details&#039;&#039; Button links oben der einem zur Detail Seite der ReadingsGroup führt - nützlich wenn das ReadingsGroup-Attribut &#039;&#039;noheading&#039;&#039; gesetzt ist&lt;br /&gt;
** &#039;&#039;detail&#039;&#039; erzeugt einen Link zu Device-Detail Seite&lt;br /&gt;
* $label - Link-Name&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sub rgLink($$$){&lt;br /&gt;
  my ($name,$action,$label) = @_; &lt;br /&gt;
  my $link = &amp;quot;&amp;quot;;&lt;br /&gt;
  my $fhemLink = &amp;quot;&amp;quot;;&lt;br /&gt;
  my $txt = &amp;quot;&amp;quot;;&lt;br /&gt;
  my $ret = &amp;quot;&amp;quot;;&lt;br /&gt;
  my $divStyle = &amp;quot;&amp;quot;;&lt;br /&gt;
  my $aStyle = &amp;quot;&amp;quot;;&lt;br /&gt;
  &lt;br /&gt;
  # FHEM Variablen einbinden&lt;br /&gt;
  use vars qw($FW_ME);&lt;br /&gt;
  use vars qw($FW_subdir);&lt;br /&gt;
  use vars qw($FW_ss);&lt;br /&gt;
  use vars qw($FW_tp);&lt;br /&gt;
&lt;br /&gt;
  if( $action eq &amp;quot;konfigurieren&amp;quot; ){&lt;br /&gt;
    $fhemLink  = &amp;quot;detail=$name&amp;quot;;&lt;br /&gt;
    $divStyle = &amp;quot;cursor:pointer;font-size:11px;padding-bottom:2px;padding-left:3px;&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  elsif( $action eq &amp;quot;detail&amp;quot; ){&lt;br /&gt;
    $fhemLink  = &amp;quot;detail=$name&amp;quot;;&lt;br /&gt;
    $divStyle = &amp;quot;cursor:pointer;display:inline;&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  $link = &#039;&amp;lt;a onclick=&amp;quot;location.href=\&#039;&#039; . $FW_ME . $FW_subdir . &#039;?&#039; . $fhemLink . &#039;\&#039;&amp;quot; style=&amp;quot;&#039; . $aStyle . &#039;&amp;quot;&amp;gt;&#039; . $label . &#039;&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
  $txt  = &#039;&amp;lt;div style=&amp;quot;&#039; . $divStyle . &#039;&amp;quot;&amp;gt;&#039; . $link . &#039;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
  $ret  = &amp;quot;$txt&amp;quot;;&lt;br /&gt;
  &lt;br /&gt;
  return $ret;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Randnotiz|RNText=Tipp&lt;br /&gt;
Verwende zum Bearbeiten der eigenen .css Dateien entweder den [http://fhem.de/commandref_DE.html#JavaScripts Codemirror Editor] oder einen eigenen Editor mit [http://de.wikipedia.org/wiki/Syntaxhervorhebung Syntax Highlighting] . Das hilft bei der Fehlersuche enorm. }}&lt;br /&gt;
===== Styling =====&lt;br /&gt;
Die eigene .css Datei erscheint in FHEM unter Edit-Files --&amp;gt; styles und kann direkt im FHEM-Editor oder mit eigenen Editor bearbeitet werden.&lt;br /&gt;
&lt;br /&gt;
ios7ReadingsGroups.css:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/*  Readings Groups Devices */&lt;br /&gt;
table.rgDevices tr td{ text-align: center; }&lt;br /&gt;
table.rgDevices tr:first-child td:nth-child(2){ /* 1. Zeile 2. Spalte */ text-align: center; }&lt;br /&gt;
table.rgDevices tr td:first-child{  /* 1. Spalte */ width: 45px; text-align: center; }&lt;br /&gt;
table.rgDevices tr td:nth-child(2){ /* 2. Spalte */ width: 33%;  text-align: left; }&lt;br /&gt;
table.rgDevices tr td:nth-child(3){ /* 3. Spalte */ width: 15%; }&lt;br /&gt;
table.rgDevices tr td:nth-child(4){ /* 4. Spalte */ width: 15%; }&lt;br /&gt;
table.rgDevices tr td:nth-child(5){ /* 5. Spalte */ width: 15%; }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Auf Portrait / Landscape Modus des Smartphone unterscheiden ====&lt;br /&gt;
Dieses Beispiel ist an das obige Beispiel [[#Erweiterte_Device_.C3.9Cbersicht|Erweiterte Device Übersicht]] angelehnt. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; |[[Datei:RgStylingSmallscreenPortrait.png|300px|mini|center|Device ReadingsGroup im Portrait Modus]]&lt;br /&gt;
|[[Datei:RgStylingSmallscreenLandscape.png|550px|mini|center|Device ReadingsGroup im Landscape Modus]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Allgemeines =====&lt;br /&gt;
Mit CSS ist man in der Lage auf die aktuelle Bildschirmlage zu reagieren. Alle Anweisungen die in diesen beiden Funktionen zwischen den beiden { } stehen, werden je nach Bildschirmlage aufgerufen&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/* Portrait Modus */&lt;br /&gt;
@media all and (orientation:portrait) { }&lt;br /&gt;
&lt;br /&gt;
/* Landscape Modus */&lt;br /&gt;
@media all and (orientation:landscape) { }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Styling =====&lt;br /&gt;
{{Randnotiz|RNText=Info&lt;br /&gt;
* &#039;&#039;width: xx%&#039;&#039; ändert die Breite der Spalte&lt;br /&gt;
* &#039;&#039;display: none&#039;&#039; blendet die Spalte aus}}&lt;br /&gt;
In der FHEMWEB_phone Instanz muss wie [[#Allgemeines|hier]] beschrieben eine neue eigene .css Datei eingetragen werden. In diesem Beispiel ios7smallscreenReadingsGroups.css&lt;br /&gt;
&lt;br /&gt;
ios7smallscreenReadingsGroups.css&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/* landscape und portrait modus */&lt;br /&gt;
table.rgDevices tr td { /* Zuerst alles centern */ text-align: center; }&lt;br /&gt;
table.rgDevices tr:first-child td:nth-child(1){ /* 1. Zeile 1. Spalte */ text-align: center; }&lt;br /&gt;
table.rgDevices tr td:first-child { /* 1. Spalte */ width: 5%; }&lt;br /&gt;
table.rgDevices tr:first-child td:nth-child(2) { /* 1. Zeile 2. Spalte */ text-align: center; }&lt;br /&gt;
table.block table tr td table.rgDevices tr td { border-bottom: 1px solid #cbcbcb; }&lt;br /&gt;
&lt;br /&gt;
/* Portrait Modus */&lt;br /&gt;
@media all and (orientation:portrait) {&lt;br /&gt;
  table.rgDevices tr td:nth-child(2){ /* 2. Spalte */ width: 50%; text-align: left; }&lt;br /&gt;
  table.rgDevices tr td:nth-child(3){ /* 3. Spalte */ width: auto; text-align: right; }&lt;br /&gt;
  table.rgDevices tr td:nth-child(4){ /* 4. Spalte */ width: 0; display: none; }&lt;br /&gt;
  table.rgDevices tr td:nth-child(5){ /* 5. Spalte */ width: 0; display: none; }&lt;br /&gt;
  table.rgDevices tr td:nth-child(6){ width: 0; display: none; }	&lt;br /&gt;
  table.rgDevices tr td div a svg{ margin-left: 90px; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Landscape Modus */&lt;br /&gt;
@media all and (orientation:landscape) { &lt;br /&gt;
  table.rgDevices tr td:nth-child(2){ /* 2. Spalte */ width: 35%; text-align: left; }&lt;br /&gt;
  table.rgDevices tr td:nth-child(3){ /* 3. Spalte */ width: 15%; }&lt;br /&gt;
  table.rgDevices tr td:nth-child(4){ /* 4. Spalte */ width: 15%; }&lt;br /&gt;
  table.rgDevices tr td:nth-child(5){ /* 5. Spalte */ width: 15%; }&lt;br /&gt;
  table.rgDevices tr td:nth-child(5){ /* 5. Spalte */ width: 15%; }	&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Plots im Portrait Modus des Smartphones ausblenden ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; |[[Datei:RgStylingSmallscreenPortraitPlot.png|350px|mini|center|Device ReadingsGroup im Portrait Modus]]&lt;br /&gt;
|[[Datei:RgStylingSmallscreenLandscapePlot.PNG|550px|mini|center|Plot nur im Landscape]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Um die Plot und alle Steuerelemente im Portrait Modus auszublenden fügt man in seine eigene smallscreen.css wie [[#Allgemeines|hier beschrieben]] folgendes ein:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@media all and (orientation:portrait) {&lt;br /&gt;
  .SVGplot, .SVGlabel, .Zoom-in, .Zoom-out, .Prev { width: 0; display: none; }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
[[Kategorie:Code Snippets]]&lt;/div&gt;</summary>
		<author><name>Fhainz</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:RgStylingSmallscreenPortraitPlot.png&amp;diff=8504</id>
		<title>Datei:RgStylingSmallscreenPortraitPlot.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:RgStylingSmallscreenPortraitPlot.png&amp;diff=8504"/>
		<updated>2014-11-16T12:10:38Z</updated>

		<summary type="html">&lt;p&gt;Fhainz: Fhainz lud eine neue Version von „Datei:RgStylingSmallscreenPortraitPlot.png“ hoch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ReadingsGroups Styling - Portrait Plot&lt;/div&gt;</summary>
		<author><name>Fhainz</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:RgStylingSmallscreenPortraitPlot.png&amp;diff=8503</id>
		<title>Datei:RgStylingSmallscreenPortraitPlot.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:RgStylingSmallscreenPortraitPlot.png&amp;diff=8503"/>
		<updated>2014-11-16T12:08:47Z</updated>

		<summary type="html">&lt;p&gt;Fhainz: ReadingsGroups Styling - Portrait Plot&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ReadingsGroups Styling - Portrait Plot&lt;/div&gt;</summary>
		<author><name>Fhainz</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:RgStylingSmallscreenLandscapePlot.PNG&amp;diff=8502</id>
		<title>Datei:RgStylingSmallscreenLandscapePlot.PNG</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:RgStylingSmallscreenLandscapePlot.PNG&amp;diff=8502"/>
		<updated>2014-11-16T12:03:37Z</updated>

		<summary type="html">&lt;p&gt;Fhainz: ReadingsGroups Styling - Landscape Plot&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ReadingsGroups Styling - Landscape Plot&lt;/div&gt;</summary>
		<author><name>Fhainz</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:RgStylingSmallscreenLandscape.png&amp;diff=8501</id>
		<title>Datei:RgStylingSmallscreenLandscape.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:RgStylingSmallscreenLandscape.png&amp;diff=8501"/>
		<updated>2014-11-16T11:31:37Z</updated>

		<summary type="html">&lt;p&gt;Fhainz: Fhainz lud eine neue Version von „Datei:RgStylingSmallscreenLandscape.png“ hoch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ReadingsGroup Styling - Smallscreen Landscape Modus&lt;/div&gt;</summary>
		<author><name>Fhainz</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:RgStylingSmallscreenPortrait.png&amp;diff=8500</id>
		<title>Datei:RgStylingSmallscreenPortrait.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:RgStylingSmallscreenPortrait.png&amp;diff=8500"/>
		<updated>2014-11-16T11:31:20Z</updated>

		<summary type="html">&lt;p&gt;Fhainz: Fhainz lud eine neue Version von „Datei:RgStylingSmallscreenPortrait.png“ hoch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ReadingsGroup Styling - Smallscreen Portrait Modus&lt;/div&gt;</summary>
		<author><name>Fhainz</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:RgStylingSmallscreenLandscape.png&amp;diff=8499</id>
		<title>Datei:RgStylingSmallscreenLandscape.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:RgStylingSmallscreenLandscape.png&amp;diff=8499"/>
		<updated>2014-11-16T11:25:36Z</updated>

		<summary type="html">&lt;p&gt;Fhainz: ReadingsGroup Styling - Smallscreen Landscape Modus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ReadingsGroup Styling - Smallscreen Landscape Modus&lt;/div&gt;</summary>
		<author><name>Fhainz</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:RgStylingSmallscreenPortrait.png&amp;diff=8498</id>
		<title>Datei:RgStylingSmallscreenPortrait.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:RgStylingSmallscreenPortrait.png&amp;diff=8498"/>
		<updated>2014-11-16T11:25:04Z</updated>

		<summary type="html">&lt;p&gt;Fhainz: ReadingsGroup Styling - Smallscreen Portrait Modus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ReadingsGroup Styling - Smallscreen Portrait Modus&lt;/div&gt;</summary>
		<author><name>Fhainz</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:RgStylingMitCss.png&amp;diff=8497</id>
		<title>Datei:RgStylingMitCss.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:RgStylingMitCss.png&amp;diff=8497"/>
		<updated>2014-11-16T09:00:17Z</updated>

		<summary type="html">&lt;p&gt;Fhainz: ReadingsGroup Styling mit CSS&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ReadingsGroup Styling mit CSS&lt;/div&gt;</summary>
		<author><name>Fhainz</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:RgStylingOhneCss.png&amp;diff=8496</id>
		<title>Datei:RgStylingOhneCss.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:RgStylingOhneCss.png&amp;diff=8496"/>
		<updated>2014-11-16T08:42:25Z</updated>

		<summary type="html">&lt;p&gt;Fhainz: ReadingsGroup ohne CSS&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ReadingsGroup ohne CSS&lt;/div&gt;</summary>
		<author><name>Fhainz</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Benutzer:Fhainz&amp;diff=8447</id>
		<title>Benutzer:Fhainz</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Benutzer:Fhainz&amp;diff=8447"/>
		<updated>2014-11-09T14:04:56Z</updated>

		<summary type="html">&lt;p&gt;Fhainz: Die Seite wurde geleert.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Fhainz</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=FHEM_auf_Mac_OS_X&amp;diff=8446</id>
		<title>FHEM auf Mac OS X</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=FHEM_auf_Mac_OS_X&amp;diff=8446"/>
		<updated>2014-11-09T14:03:54Z</updated>

		<summary type="html">&lt;p&gt;Fhainz: FHEM auf Mac OS X&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== OS X vorbereiten ==&lt;br /&gt;
&lt;br /&gt;
=== Perl installieren ===&lt;br /&gt;
Anscheinend ist die [[Perl]]-Installation von OS X nicht komplett oder fehlerhaft wodurch nach der Installation zB die Icon-List nicht komplett geladen wurde. Deshalb wird Perl zur Sicherheit nochmals neu installiert. [http://learn.perl.org/installing/osx.html]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;width:50%;&amp;quot;&amp;gt;curl -L http://xrl.us/installperlosx | bash&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Randnotiz|RNText=Zusatzinfo&lt;br /&gt;
* XML::Simple&lt;br /&gt;
** [[Enigma2 Receiver (Dreambox, VUplus etc.) steuern|ENIGMA2 Modul]]&lt;br /&gt;
* JSON&lt;br /&gt;
** [[Hue]]&lt;br /&gt;
** [[Volkszaehler]]&lt;br /&gt;
** [[Pushbullet]]&lt;br /&gt;
** [[withings]]&lt;br /&gt;
** etc.&lt;br /&gt;
}}&lt;br /&gt;
=== Benötigte Pakete installieren ===&lt;br /&gt;
&lt;br /&gt;
In der Console folgende Befehle eingeben:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;width:50%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo cpan install Bundle::CPAN&lt;br /&gt;
sudo cpan install Device::SerialPort &lt;br /&gt;
sudo cpan install IO::Socket::SSL&lt;br /&gt;
sudo cpan install XML::Simple&lt;br /&gt;
sudo cpan install JSON&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==FHEM installieren==&lt;br /&gt;
&lt;br /&gt;
=== FHEM herunterladen ===&lt;br /&gt;
Anschließend wird FHEM von der [http://fhem.de/fhem.html#Download Website] heruntergeladen und ins gewünschte Verzeichnis entpackt. &amp;lt;br /&amp;gt;&lt;br /&gt;
In dieser Anleitung wird FHEM nach &#039;&#039;/Users/Name/fhem&#039;&#039; entpackt&lt;br /&gt;
&lt;br /&gt;
=== Makefile bearbeiten ===&lt;br /&gt;
In der Datei &#039;&#039;/Users/Name/fhem/Makefile&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;width:50%;&amp;quot;&amp;gt;BINDIR=/usr/local/bin&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
den Pfad&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;width:50%;&amp;quot;&amp;gt;BINDIR=/Users/Name/fhem&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
entsprechend ändern.&lt;br /&gt;
&lt;br /&gt;
=== FHEM installieren ===&lt;br /&gt;
In der Console folgende Befehle eingeben:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;width:50%;&amp;quot;&amp;gt;&lt;br /&gt;
cd /Users/Name/fhem&lt;br /&gt;
sudo make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun sollte FHEM korrekt installiert und unter der URL http://IP-Adresse:8083 erreichbar sein.&lt;br /&gt;
&lt;br /&gt;
== Infos ==&lt;br /&gt;
&lt;br /&gt;
=== FHEM starten ===&lt;br /&gt;
In der Console folgenden Befehl eingeben:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;width:50%;&amp;quot;&amp;gt;&lt;br /&gt;
cd /Users/Name/fhem/ &amp;amp;&amp;amp; perl fhem.pl fhem.cfg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== FHEM stoppen ===&lt;br /&gt;
In der Console folgende Befehle eingeben:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;width:50%;&amp;quot;&amp;gt;&lt;br /&gt;
telnet IP-Adresse 7072&lt;br /&gt;
shutdown&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
[[Kategorie:OSX]]&lt;/div&gt;</summary>
		<author><name>Fhainz</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Pushbullet&amp;diff=8445</id>
		<title>Pushbullet</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Pushbullet&amp;diff=8445"/>
		<updated>2014-11-09T12:06:14Z</updated>

		<summary type="html">&lt;p&gt;Fhainz: /* Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Pushbullet&#039;&#039;&#039; ist ein Dienst, um Benachrichtigungen an unterschiedliche Endgeräte zu senden. Pushbullet stellt Apps für iPhone, Android, Windows (Beta), Mac OS X (bald erhältlich) sowie Plugins für Chrome und Firefox an. Eine genaue Liste kann [http://www.pushbullet.com/apps hier] eingesehen werden. Der Dienst sowie die Apps sind kostenlos. &lt;br /&gt;
{{Infobox Modul&lt;br /&gt;
|ModPurpose=Senden von Push-Nachrichten an unterschiedliche Endgeräte&lt;br /&gt;
|ModType=x&lt;br /&gt;
|ModForumArea=Unterstützende Dienste&lt;br /&gt;
|ModTechName=70_Pushbullet.pm (noch nicht eingecheckt)&lt;br /&gt;
|ModOwner=fhainz&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&lt;br /&gt;
Zur Benutzung von Pushbullet ist ein Google Account zwingend notwenig. Falls noch kein Google Account vorhanden ist kann man diesen [https://accounts.google.com/SignUp hier einrichten]. Anschließend kann man sich auf [http://pushbullet.com pushbullet.com] mit den Google Benutzerdaten einloggen. Den benötigten accessToken findet man in den Account Settings. (Rechts oben auf das Benutzer-Symbol klicken). &lt;br /&gt;
Auf dem gewünschtem Endgerät muss nur noch der entsprechende Client installiert werden.&lt;br /&gt;
&lt;br /&gt;
===Offizielle Clients===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Smartphones&#039;&#039;&#039;&lt;br /&gt;
*Apple iOS: [https://itunes.apple.com/us/app/pushbullet/id810352052 Pushbullet App]&lt;br /&gt;
*Android: [https://play.google.com/store/apps/details?id=com.pushbullet.android&amp;amp;hl=de Pushbullet App]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bowser Erweiterungen&#039;&#039;&#039;&lt;br /&gt;
*Firefox: [https://addons.mozilla.org/de/firefox/addon/pushbullet Pushbullet Plugin]&lt;br /&gt;
*Chrome: [https://chrome.google.com/webstore/detail/pushbullet/chlffgpmiacpedhhbkiomidkjlcfhogd Pushbullet Plugin]&lt;br /&gt;
*Opera: [https://addons.opera.com/en/extensions/details/pushbullet/ Pushbullet Plugin]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Betriebsystem Erweiterungen&#039;&#039;&#039;&lt;br /&gt;
*Windows: [https://update.pushbullet.com/pb_install.exe Pushbullet App]&lt;br /&gt;
&lt;br /&gt;
===Clients durch die Community===&lt;br /&gt;
*Blackberry: [http://appworld.blackberry.com/webstore/content/58534486/?countrycode=de&amp;amp;lang=de BlackBullet]&lt;br /&gt;
*Windows Phone: [http://www.windowsphone.com/en-us/store/app/pushpin/b6764b31-9f2a-4ba4-9e00-aba343928459 PushPin]&lt;br /&gt;
*Ubuntu: [http://www.atareao.es/tag/pushbullet-indicator/ PB Indicator]&lt;br /&gt;
&lt;br /&gt;
Übersicht aller Clients: [https://www.pushbullet.com/apps]&lt;br /&gt;
&lt;br /&gt;
==Einbinden des Dienstes in Fhem==&lt;br /&gt;
&lt;br /&gt;
Das Modul wird mit dem folgenden Befehl in fhem definiert:&lt;br /&gt;
&lt;br /&gt;
 define &amp;lt;name&amp;gt; Pushbullet &amp;lt;accessToken&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Push Benachrichtigung senden==&lt;br /&gt;
&lt;br /&gt;
===Nachricht===&lt;br /&gt;
&lt;br /&gt;
Nachricht ohne Titel oder Gerät:&lt;br /&gt;
 set &amp;lt;name&amp;gt; message Das ist eine Nachricht&lt;br /&gt;
&lt;br /&gt;
Nachricht mit Titel ohne Gerät:&lt;br /&gt;
 set &amp;lt;name&amp;gt; message Das ist eine Nachricht | Ein Titel&lt;br /&gt;
&lt;br /&gt;
Nachricht mit Titel an Gerät iPhone:&lt;br /&gt;
 set &amp;lt;name&amp;gt; message Das ist eine Nachricht | Ein Titel | iPhone&lt;br /&gt;
&lt;br /&gt;
Nachricht mit Titel an Kontakt Max Mustermann&lt;br /&gt;
 set &amp;lt;name&amp;gt; message Das ist eine Nachricht | Ein Titel | Max Mustermann&lt;br /&gt;
&lt;br /&gt;
Wenn kein Titel angegeben wird tritt das Attribut defaultTitel in Kraft. Falls dies nicht gesetzt ist wird der Titel auf FHEM gesetzt.&lt;br /&gt;
Wenn kein Device angeben wird tritt das Attribut defaultDevice in Kraft. Falls dies nicht gesetzt ist geht der Push an alle &#039;&#039;&#039;deine&#039;&#039;&#039; Devices. Kontakte erhalten die Benachrichtigung &#039;&#039;&#039;nicht!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Link===&lt;br /&gt;
Der Inhalt des Links wird in der App direkt angezeigt. Ein Webcam Foto kann somit mit einem Touch direkt am Endgerät angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
Link ohne Titel oder Gerät:&lt;br /&gt;
 set &amp;lt;name&amp;gt; link http://google.com&lt;br /&gt;
&lt;br /&gt;
Link mit Titel ohne Gerät:&lt;br /&gt;
 set &amp;lt;name&amp;gt; link http://google.com | Google&lt;br /&gt;
&lt;br /&gt;
Link mit Titel an Gerät iPhone&lt;br /&gt;
 set &amp;lt;name&amp;gt; link http://google.com | Google | iPhone&lt;br /&gt;
&lt;br /&gt;
Link mit Titel an Kontakt Max Mustermann&lt;br /&gt;
 set &amp;lt;name&amp;gt; link http://google.com | Google | MaxMustermann&lt;br /&gt;
&lt;br /&gt;
*Wenn kein Titel angegeben wird tritt das Attribut defaultTitel in Kraft. Falls dies nicht gesetzt ist wird der Titel auf FHEM gesetzt.&lt;br /&gt;
*Wenn kein Device angeben wird tritt das Attribut defaultDevice in Kraft. Falls dies nicht gesetzt ist geht der Push an alle &#039;&#039;&#039;deine&#039;&#039;&#039; Devices. Kontakte erhalten die Benachrichtigung &#039;&#039;&#039;nicht!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Liste===&lt;br /&gt;
&lt;br /&gt;
Liste ohne Titel oder Gerät:&lt;br /&gt;
 set &amp;lt;name&amp;gt; list Milch, Brot, Zucker&lt;br /&gt;
&lt;br /&gt;
Liste mit Titel ohne Gerät:&lt;br /&gt;
 set &amp;lt;name&amp;gt; list Milch, Brot, Zucker | Einkaufsliste&lt;br /&gt;
&lt;br /&gt;
Liste mit Titel an Gerät iPhone&lt;br /&gt;
 set &amp;lt;name&amp;gt; list Milch, Brot, Zucker | Einkaufsliste | iPhone&lt;br /&gt;
&lt;br /&gt;
Liste mit Titel an Kontakt Max Mustermann&lt;br /&gt;
 set &amp;lt;name&amp;gt; list Milch, Brot, Zucker | Einkaufsliste | MaxMustermann&lt;br /&gt;
&lt;br /&gt;
*Wenn kein Titel angegeben wird tritt das Attribut defaultTitel in Kraft. Falls dies nicht gesetzt ist wird der Titel auf FHEM gesetzt.&lt;br /&gt;
*Wenn kein Device angeben wird tritt das Attribut defaultDevice in Kraft. Falls dies nicht gesetzt ist geht der Push an alle &#039;&#039;&#039;deine&#039;&#039;&#039; Devices. Kontakte erhalten die Benachrichtigung &#039;&#039;&#039;nicht!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Kontakt hinzufügen==&lt;br /&gt;
Mit&lt;br /&gt;
 set &amp;lt;name&amp;gt; contactAdd &amp;lt;Name&amp;gt; | &amp;lt;email&amp;gt;&lt;br /&gt;
wird eine neuer Kontakt hinzugefügt. Dieser bekommt erstmal eine Email mit einer Einladung zur Pushbullet App. Fall die App nicht installiert wird, bekommt der Kontakt Push Benachrichtigungen als Email zugestellt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Gerät / Kontakt umbenennen==&lt;br /&gt;
Mit&lt;br /&gt;
 set &amp;lt;name&amp;gt; deviceRename &amp;lt;alterName&amp;gt; | &amp;lt;neuerName&amp;gt;&lt;br /&gt;
wird ein Gerät oder Kontakt umbenannt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Gerät / Kontakt löschen==&lt;br /&gt;
Mit&lt;br /&gt;
  set &amp;lt;name&amp;gt; deviceDelete &amp;lt;name&amp;gt;&lt;br /&gt;
wird ein Gerät oder Kontakt gelöscht.&lt;br /&gt;
&lt;br /&gt;
==Geräte / Kontakte neu einlesen==&lt;br /&gt;
Mit&lt;br /&gt;
  get &amp;lt;name&amp;gt; devices&lt;br /&gt;
kann man die Device Liste von pushbullet.com neu einlesen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Pushbullet Website==&lt;br /&gt;
Die Pushbullet Website biete umfangreiche Möglichkeiten die gesendet Push Nachrichten, Geräte und Kontakte zu verwalten. Weiters kann man auch Nachrichten versenden und löschen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
*Thread über das Modul im [http://forum.fhem.de/index.php/topic,25615.0.html FHEM-Forum]&lt;br /&gt;
*Pushbullet [https://www.pushbullet.com/apps Apps]&lt;br /&gt;
*Pushbullet [https://docs.pushbullet.com API]&lt;br /&gt;
*Homepage: [http://pushpullet.com pushbullet.com]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: Gerätemodul | Code Snippets]]&lt;/div&gt;</summary>
		<author><name>Fhainz</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Benutzer:Fhainz&amp;diff=8444</id>
		<title>Benutzer:Fhainz</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Benutzer:Fhainz&amp;diff=8444"/>
		<updated>2014-11-09T11:46:53Z</updated>

		<summary type="html">&lt;p&gt;Fhainz: /* Fehlende Pakete installieren: IO::Socket::SSL hinzugefügt */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=FHEM Installation auf Mac OS X= &lt;br /&gt;
&lt;br /&gt;
== Perl installieren ==&lt;br /&gt;
Anscheinend ist die Perl-Installation von OS X nicht komplett oder fehlerhaft. Bei mir wurde zB die Icon-List nicht fertig geladen. Deshalb wird Perl nochmals neu installiert. [http://learn.perl.org/installing/osx.html]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;curl -L http://xrl.us/installperlosx | bash&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fehlende Pakete installieren ==&lt;br /&gt;
&lt;br /&gt;
Folgende Befehle in der Console absetzten:&lt;br /&gt;
XML::Simple wird vom ENIGMA2 Modul benötigt&lt;br /&gt;
JSON wird von diversen Modulen benötigt&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo cpan install Bundle::CPAN&lt;br /&gt;
sudo cpan install Device::SerialPort &lt;br /&gt;
sudo cpan install XML::Simple&lt;br /&gt;
sudo cpan install IO::Socket::SSL&lt;br /&gt;
sudo cpan install JSON&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==FHEM runterladen==&lt;br /&gt;
Anschließend zB. nach /Users/Name/fhem entpacken&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Makefile bearbeiten ==&lt;br /&gt;
In der Datei Makefile &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;BINDIR=/usr/local/bin&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
auf zB.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;BINDIR=/Users/Name/fhem&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ändern.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== FHEM installieren ==&lt;br /&gt;
In der Console folgendes eingeben&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /Users/Name/fhem&lt;br /&gt;
sudo make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Infos ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fhem starten: cd /Users/Name/fhem/ &amp;amp;&amp;amp; perl fhem.pl fhem.cfg&lt;br /&gt;
fhem stopen: telnet 10.0.0.40 7072 --&amp;gt; shutdown&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Fhainz</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Pushbullet&amp;diff=8440</id>
		<title>Pushbullet</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Pushbullet&amp;diff=8440"/>
		<updated>2014-11-08T08:23:40Z</updated>

		<summary type="html">&lt;p&gt;Fhainz: Blackberry Client hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Pushbullet&#039;&#039;&#039; ist ein Dienst, um Benachrichtigungen an unterschiedliche Endgeräte zu senden. Pushbullet stellt Apps für iPhone, Android, Windows (Beta), Mac OS X (bald erhältlich) sowie Plugins für Chrome und Firefox an. Eine genaue Liste kann [http://www.pushbullet.com/apps hier] eingesehen werden. Der Dienst sowie die Apps sind kostenlos. &lt;br /&gt;
{{Infobox Modul&lt;br /&gt;
|ModPurpose=Senden von Push-Nachrichten an unterschiedliche Endgeräte&lt;br /&gt;
|ModType=x&lt;br /&gt;
|ModForumArea=Unterstützende Dienste&lt;br /&gt;
|ModTechName=70_Pushbullet.pm (noch nicht eingecheckt)&lt;br /&gt;
|ModOwner=fhainz&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&lt;br /&gt;
Es muss zwingend ein Google Account vorhanden sein. Anschließend kann man sich auf [http://pushbullet.com pushbullet.com] mit den Google Benutzerdaten einloggen. Den benötigten accessToken findet man in den Account Settings. (Rechts oben auf das Benutzer-Symbol klicken). &lt;br /&gt;
Auf dem gewünschtem Endgerät muss nur noch die entsprechende Applikation installiert werden.&lt;br /&gt;
&lt;br /&gt;
*Apple iOS: [https://itunes.apple.com/us/app/pushbullet/id810352052 Pushbullet App]&lt;br /&gt;
*Android: [https://play.google.com/store/apps/details?id=com.pushbullet.android&amp;amp;hl=de Pushbullet App]&lt;br /&gt;
*Blackberry: [http://appworld.blackberry.com/webstore/content/58534486/?countrycode=de&amp;amp;lang=de BlackBullet Beta App]&lt;br /&gt;
*Chrome: [https://chrome.google.com/webstore/detail/pushbullet/chlffgpmiacpedhhbkiomidkjlcfhogd Pushbullet Plugin]&lt;br /&gt;
*Firefox: [https://addons.mozilla.org/de/firefox/addon/pushbullet Pushbullet Plugin]&lt;br /&gt;
&lt;br /&gt;
==Einbinden des Dienstes in Fhem==&lt;br /&gt;
&lt;br /&gt;
Das Modul wird mit dem folgenden Befehl in fhem definiert:&lt;br /&gt;
&lt;br /&gt;
 define &amp;lt;name&amp;gt; Pushbullet &amp;lt;accessToken&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Push Benachrichtigung senden==&lt;br /&gt;
&lt;br /&gt;
===Nachricht===&lt;br /&gt;
&lt;br /&gt;
Nachricht ohne Titel oder Gerät:&lt;br /&gt;
 set &amp;lt;name&amp;gt; message Das ist eine Nachricht&lt;br /&gt;
&lt;br /&gt;
Nachricht mit Titel ohne Gerät:&lt;br /&gt;
 set &amp;lt;name&amp;gt; message Das ist eine Nachricht | Ein Titel&lt;br /&gt;
&lt;br /&gt;
Nachricht mit Titel an Gerät iPhone:&lt;br /&gt;
 set &amp;lt;name&amp;gt; message Das ist eine Nachricht | Ein Titel | iPhone&lt;br /&gt;
&lt;br /&gt;
Nachricht mit Titel an Kontakt Max Mustermann&lt;br /&gt;
 set &amp;lt;name&amp;gt; message Das ist eine Nachricht | Ein Titel | Max Mustermann&lt;br /&gt;
&lt;br /&gt;
Wenn kein Titel angegeben wird tritt das Attribut defaultTitel in Kraft. Falls dies nicht gesetzt ist wird der Titel auf FHEM gesetzt.&lt;br /&gt;
Wenn kein Device angeben wird tritt das Attribut defaultDevice in Kraft. Falls dies nicht gesetzt ist geht der Push an alle &#039;&#039;&#039;deine&#039;&#039;&#039; Devices. Kontakte erhalten die Benachrichtigung &#039;&#039;&#039;nicht!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Link===&lt;br /&gt;
Der Inhalt des Links wird in der App direkt angezeigt. Ein Webcam Foto kann somit mit einem Touch direkt am Endgerät angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
Link ohne Titel oder Gerät:&lt;br /&gt;
 set &amp;lt;name&amp;gt; link http://google.com&lt;br /&gt;
&lt;br /&gt;
Link mit Titel ohne Gerät:&lt;br /&gt;
 set &amp;lt;name&amp;gt; link http://google.com | Google&lt;br /&gt;
&lt;br /&gt;
Link mit Titel an Gerät iPhone&lt;br /&gt;
 set &amp;lt;name&amp;gt; link http://google.com | Google | iPhone&lt;br /&gt;
&lt;br /&gt;
Link mit Titel an Kontakt Max Mustermann&lt;br /&gt;
 set &amp;lt;name&amp;gt; link http://google.com | Google | MaxMustermann&lt;br /&gt;
&lt;br /&gt;
*Wenn kein Titel angegeben wird tritt das Attribut defaultTitel in Kraft. Falls dies nicht gesetzt ist wird der Titel auf FHEM gesetzt.&lt;br /&gt;
*Wenn kein Device angeben wird tritt das Attribut defaultDevice in Kraft. Falls dies nicht gesetzt ist geht der Push an alle &#039;&#039;&#039;deine&#039;&#039;&#039; Devices. Kontakte erhalten die Benachrichtigung &#039;&#039;&#039;nicht!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Liste===&lt;br /&gt;
&lt;br /&gt;
Liste ohne Titel oder Gerät:&lt;br /&gt;
 set &amp;lt;name&amp;gt; list Milch, Brot, Zucker&lt;br /&gt;
&lt;br /&gt;
Liste mit Titel ohne Gerät:&lt;br /&gt;
 set &amp;lt;name&amp;gt; list Milch, Brot, Zucker | Einkaufsliste&lt;br /&gt;
&lt;br /&gt;
Liste mit Titel an Gerät iPhone&lt;br /&gt;
 set &amp;lt;name&amp;gt; list Milch, Brot, Zucker | Einkaufsliste | iPhone&lt;br /&gt;
&lt;br /&gt;
Liste mit Titel an Kontakt Max Mustermann&lt;br /&gt;
 set &amp;lt;name&amp;gt; list Milch, Brot, Zucker | Einkaufsliste | MaxMustermann&lt;br /&gt;
&lt;br /&gt;
*Wenn kein Titel angegeben wird tritt das Attribut defaultTitel in Kraft. Falls dies nicht gesetzt ist wird der Titel auf FHEM gesetzt.&lt;br /&gt;
*Wenn kein Device angeben wird tritt das Attribut defaultDevice in Kraft. Falls dies nicht gesetzt ist geht der Push an alle &#039;&#039;&#039;deine&#039;&#039;&#039; Devices. Kontakte erhalten die Benachrichtigung &#039;&#039;&#039;nicht!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Kontakt hinzufügen==&lt;br /&gt;
Mit&lt;br /&gt;
 set &amp;lt;name&amp;gt; contactAdd &amp;lt;Name&amp;gt; | &amp;lt;email&amp;gt;&lt;br /&gt;
wird eine neuer Kontakt hinzugefügt. Dieser bekommt erstmal eine Email mit einer Einladung zur Pushbullet App. Fall die App nicht installiert wird, bekommt der Kontakt Push Benachrichtigungen als Email zugestellt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Gerät / Kontakt umbenennen==&lt;br /&gt;
Mit&lt;br /&gt;
 set &amp;lt;name&amp;gt; deviceRename &amp;lt;alterName&amp;gt; | &amp;lt;neuerName&amp;gt;&lt;br /&gt;
wird ein Gerät oder Kontakt umbenannt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Gerät / Kontakt löschen==&lt;br /&gt;
Mit&lt;br /&gt;
  set &amp;lt;name&amp;gt; deviceDelete &amp;lt;name&amp;gt;&lt;br /&gt;
wird ein Gerät oder Kontakt gelöscht.&lt;br /&gt;
&lt;br /&gt;
==Geräte / Kontakte neu einlesen==&lt;br /&gt;
Mit&lt;br /&gt;
  get &amp;lt;name&amp;gt; devices&lt;br /&gt;
kann man die Device Liste von pushbullet.com neu einlesen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Pushbullet Website==&lt;br /&gt;
Die Pushbullet Website biete umfangreiche Möglichkeiten die gesendet Push Nachrichten, Geräte und Kontakte zu verwalten. Weiters kann man auch Nachrichten versenden und löschen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
*Thread über das Modul im [http://forum.fhem.de/index.php/topic,25615.0.html FHEM-Forum]&lt;br /&gt;
*Pushbullet [https://www.pushbullet.com/apps Apps]&lt;br /&gt;
*Pushbullet [https://docs.pushbullet.com API]&lt;br /&gt;
*Homepage: [http://pushpullet.com pushbullet.com]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: Gerätemodul | Code Snippets]]&lt;/div&gt;</summary>
		<author><name>Fhainz</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Benutzer:Fhainz&amp;diff=8169</id>
		<title>Benutzer:Fhainz</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Benutzer:Fhainz&amp;diff=8169"/>
		<updated>2014-10-18T17:37:34Z</updated>

		<summary type="html">&lt;p&gt;Fhainz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=FHEM Installation auf Mac OS X= &lt;br /&gt;
&lt;br /&gt;
== Perl installieren ==&lt;br /&gt;
Anscheinend ist die Perl-Installation von OS X nicht komplett oder fehlerhaft. Bei mir wurde zB die Icon-List nicht fertig geladen. Deshalb wird Perl nochmals neu installiert. [http://learn.perl.org/installing/osx.html]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;curl -L http://xrl.us/installperlosx | bash&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fehlende Pakete installieren ==&lt;br /&gt;
&lt;br /&gt;
Folgende Befehle in der Console absetzten:&lt;br /&gt;
XML::Simple wird vom ENIGMA2 Modul benötigt&lt;br /&gt;
JSON wird von diversen Modulen benötigt&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo cpan install Bundle::CPAN&lt;br /&gt;
sudo cpan install Device::SerialPort &lt;br /&gt;
sudo cpan install XML::Simple&lt;br /&gt;
cpan install JSON&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==FHEM runterladen==&lt;br /&gt;
Anschließend zB. nach /Users/Name/fhem entpacken&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Makefile bearbeiten ==&lt;br /&gt;
In der Datei Makefile &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;BINDIR=/usr/local/bin&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
auf zB.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;BINDIR=/Users/Name/fhem&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ändern.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== FHEM installieren ==&lt;br /&gt;
In der Console folgendes eingeben&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /Users/Name/fhem&lt;br /&gt;
sudo make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Infos ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fhem starten: cd /Users/Name/fhem/ &amp;amp;&amp;amp; perl fhem.pl fhem.cfg&lt;br /&gt;
fhem stopen: telnet 10.0.0.40 7072 --&amp;gt; shutdown&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Fhainz</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Benutzer:Fhainz&amp;diff=8168</id>
		<title>Benutzer:Fhainz</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Benutzer:Fhainz&amp;diff=8168"/>
		<updated>2014-10-18T17:18:31Z</updated>

		<summary type="html">&lt;p&gt;Fhainz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;- FHEM Installation auf Mac OSX&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.&lt;br /&gt;
sudo cpan install Bundle::CPAN&lt;br /&gt;
sudo cpan install Device::SerialPort &lt;br /&gt;
sudo cpan install XML::Simple&lt;br /&gt;
cpan install JSON&lt;br /&gt;
&lt;br /&gt;
2.&lt;br /&gt;
&lt;br /&gt;
fhem runterladen und zB. /Users/Name/fhemInstall entpacken&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3.&lt;br /&gt;
&lt;br /&gt;
In der Datei Makefile &lt;br /&gt;
&lt;br /&gt;
BINDIR=/usr/local/bin&lt;br /&gt;
&lt;br /&gt;
auf zB.&lt;br /&gt;
&lt;br /&gt;
BINDIR=/Users/Name/fhem&lt;br /&gt;
&lt;br /&gt;
ändern.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4.&lt;br /&gt;
&lt;br /&gt;
cd /Users/Name/fhem&lt;br /&gt;
&lt;br /&gt;
sudo make install&lt;br /&gt;
&lt;br /&gt;
fhem starten: cd /Users/Fabian/fhem/ &amp;amp;&amp;amp; perl fhem.pl fhem.cfg&lt;br /&gt;
&lt;br /&gt;
fhem stopen: telnet 10.0.0.40 7072 --&amp;gt; shutdown&lt;/div&gt;</summary>
		<author><name>Fhainz</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Benutzer:Fhainz&amp;diff=8167</id>
		<title>Benutzer:Fhainz</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Benutzer:Fhainz&amp;diff=8167"/>
		<updated>2014-10-18T17:18:10Z</updated>

		<summary type="html">&lt;p&gt;Fhainz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;- FHEM Installation auf Mac OSX&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.&lt;br /&gt;
&amp;lt;nowiki&amp;gt; &lt;br /&gt;
sudo cpan install Bundle::CPAN&lt;br /&gt;
sudo cpan install Device::SerialPort &lt;br /&gt;
sudo cpan install XML::Simple&lt;br /&gt;
cpan install JSON&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2.&lt;br /&gt;
&lt;br /&gt;
fhem runterladen und zB. /Users/Name/fhemInstall entpacken&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3.&lt;br /&gt;
&lt;br /&gt;
In der Datei Makefile &lt;br /&gt;
&lt;br /&gt;
BINDIR=/usr/local/bin&lt;br /&gt;
&lt;br /&gt;
auf zB.&lt;br /&gt;
&lt;br /&gt;
BINDIR=/Users/Name/fhem&lt;br /&gt;
&lt;br /&gt;
ändern.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4.&lt;br /&gt;
&lt;br /&gt;
cd /Users/Name/fhem&lt;br /&gt;
&lt;br /&gt;
sudo make install&lt;br /&gt;
&lt;br /&gt;
fhem starten: cd /Users/Fabian/fhem/ &amp;amp;&amp;amp; perl fhem.pl fhem.cfg&lt;br /&gt;
&lt;br /&gt;
fhem stopen: telnet 10.0.0.40 7072 --&amp;gt; shutdown&lt;/div&gt;</summary>
		<author><name>Fhainz</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Benutzer:Fhainz&amp;diff=8166</id>
		<title>Benutzer:Fhainz</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Benutzer:Fhainz&amp;diff=8166"/>
		<updated>2014-10-18T17:18:02Z</updated>

		<summary type="html">&lt;p&gt;Fhainz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;- FHEM Installation auf Mac OSX&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.&lt;br /&gt;
&amp;lt;nowiki&amp;gt; &lt;br /&gt;
sudo cpan install Bundle::CPAN&lt;br /&gt;
sudo cpan install Device::SerialPort &lt;br /&gt;
sudo cpan install XML::Simple&lt;br /&gt;
cpan install JSON&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2.&lt;br /&gt;
&lt;br /&gt;
fhem runterladen und zB. /Users/Name/fhemInstall entpacken&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3.&lt;br /&gt;
&lt;br /&gt;
In der Datei Makefile &lt;br /&gt;
&lt;br /&gt;
BINDIR=/usr/local/bin&lt;br /&gt;
&lt;br /&gt;
auf zB.&lt;br /&gt;
&lt;br /&gt;
BINDIR=/Users/Name/fhem&lt;br /&gt;
&lt;br /&gt;
ändern.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4.&lt;br /&gt;
&lt;br /&gt;
cd /Users/Name/fhem&lt;br /&gt;
&lt;br /&gt;
sudo make install&lt;br /&gt;
&lt;br /&gt;
fhem starten: cd /Users/Fabian/fhem/ &amp;amp;&amp;amp; perl fhem.pl fhem.cfg&lt;br /&gt;
&lt;br /&gt;
fhem stopen: telnet 10.0.0.40 7072 --&amp;gt; shutdown&lt;/div&gt;</summary>
		<author><name>Fhainz</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Benutzer:Fhainz&amp;diff=8165</id>
		<title>Benutzer:Fhainz</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Benutzer:Fhainz&amp;diff=8165"/>
		<updated>2014-10-18T17:17:18Z</updated>

		<summary type="html">&lt;p&gt;Fhainz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;- FHEM Installation auf Mac OSX&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.&lt;br /&gt;
 &lt;br /&gt;
sudo cpan install Bundle::CPAN&lt;br /&gt;
&lt;br /&gt;
sudo cpan install Device::SerialPort &lt;br /&gt;
&lt;br /&gt;
sudo cpan install XML::Simple&lt;br /&gt;
&lt;br /&gt;
cpan install JSON&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2.&lt;br /&gt;
&lt;br /&gt;
fhem runterladen und zB. /Users/Name/fhemInstall entpacken&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3.&lt;br /&gt;
&lt;br /&gt;
In der Datei Makefile &lt;br /&gt;
&lt;br /&gt;
BINDIR=/usr/local/bin&lt;br /&gt;
&lt;br /&gt;
auf zB.&lt;br /&gt;
&lt;br /&gt;
BINDIR=/Users/Name/fhem&lt;br /&gt;
&lt;br /&gt;
ändern.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4.&lt;br /&gt;
&lt;br /&gt;
cd /Users/Name/fhem&lt;br /&gt;
&lt;br /&gt;
sudo make install&lt;br /&gt;
&lt;br /&gt;
fhem starten: cd /Users/Fabian/fhem/ &amp;amp;&amp;amp; perl fhem.pl fhem.cfg&lt;br /&gt;
&lt;br /&gt;
fhem stopen: telnet 10.0.0.40 7072 --&amp;gt; shutdown&lt;/div&gt;</summary>
		<author><name>Fhainz</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=FS20_Toggle_Events_auf_On/Off_umsetzen&amp;diff=8142</id>
		<title>FS20 Toggle Events auf On/Off umsetzen</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=FS20_Toggle_Events_auf_On/Off_umsetzen&amp;diff=8142"/>
		<updated>2014-10-14T15:11:54Z</updated>

		<summary type="html">&lt;p&gt;Fhainz: /* Aufruf */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* &#039;&#039;&#039;Situation:&#039;&#039;&#039; Ein Wandschalter (z.B. [[FS20 S4A Aufputz Sender|FS20 S4 A]]), der so belegt ist, dass jede Taste einen einzelnen Kanal schaltet. &lt;br /&gt;
* &#039;&#039;&#039;Problem:&#039;&#039;&#039; Der Schalter sendet &#039;&#039;toggle&#039;&#039; events aus, die zwar an einen Empfänger weitergeleitet werden können, allerdings kann man dann nicht abfragen, ob der Empfänger (z.B. [[FS20 ST Steckdosenfunkschalter|FS20 ST]]) an oder aus ist.&lt;br /&gt;
* &#039;&#039;&#039;Lösung:&#039;&#039;&#039; Das &#039;&#039;toggle&#039;&#039; event auf &#039;&#039;on&#039;&#039; oder &#039;&#039;off&#039;&#039; umsetzen:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Version für direkte Kopplung von Sender und Aktor ==&lt;br /&gt;
&lt;br /&gt;
=== Implementierung ===&lt;br /&gt;
&#039;&#039;&#039;Diese Funktion ist seit 10/2012 Bestandteil der fhem-Standardauslieferung. Sie liegt in 99_Utils.pm und heisst UntoggleDirect($)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ausserdem bedient sich Untoggle der neuen Funktionen Value() und OldValue(), die in Fhem mit der Version 5.1 bereitgestellt wurden. &lt;br /&gt;
&lt;br /&gt;
Danach fhem mit dem Befehl &#039;shutdown&#039; beenden und dann NEU STARTEN.&lt;br /&gt;
&lt;br /&gt;
=== Code ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sub UntoggleDirect($) {&lt;br /&gt;
 my ($obj) = @_;&lt;br /&gt;
 if (Value($obj) eq &amp;quot;toggle&amp;quot;){&lt;br /&gt;
  if (OldValue($obj) eq &amp;quot;off&amp;quot;) {&lt;br /&gt;
   {fhem (&amp;quot;setstate &amp;quot;.$obj.&amp;quot; on&amp;quot;)}&lt;br /&gt;
  }&lt;br /&gt;
  else {&lt;br /&gt;
   {fhem (&amp;quot;setstate &amp;quot;.$obj.&amp;quot; off&amp;quot;)}&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
 else {&lt;br /&gt;
  {fhem &amp;quot;setstate &amp;quot;.$obj.&amp;quot; &amp;quot;.Value($obj)}&lt;br /&gt;
 } &lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
=== Aufruf ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define &amp;amp;lt;name&amp;amp;gt; notify &amp;amp;lt;Sensor&amp;amp;gt; {UntoggleDirect(&amp;quot;&amp;amp;lt;Sensor&amp;amp;gt;&amp;quot;)}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Um nicht für jedes device ein separates notify anlegen zu müssen, gibt es folgende Möglichkeit:&lt;br /&gt;
&lt;br /&gt;
* Je relevantem device das Attribute &amp;quot;comment&amp;quot; mit dem Wert &amp;quot;Untoggle&amp;quot; setzen (&amp;lt;code&amp;gt;attr &amp;amp;lt;device&amp;amp;gt; comment Untoggle&amp;lt;/code&amp;gt;)&lt;br /&gt;
* Nur ein notify anlegen, das wie folgt aussieht:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define n_Untoggle notify .*:toggle {UntoggleDirect(&amp;quot;$NAME&amp;quot;) if( AttrVal($NAME, &amp;quot;comment&amp;quot;, &amp;quot;&amp;quot;) eq &amp;quot;Untoggle&amp;quot; )}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hinweise ==&lt;br /&gt;
* Der &amp;amp;lt;Sensor&amp;amp;gt; muss sich anfangs einmal im state ON oder OFF befnden.&lt;br /&gt;
* Die Änderung des Status nach toggle wird auf dem Webfrontend erst nach einem manuellen refresh (F5) sichtbar, sofern bei der Definition des fhemweb nicht der Parameter refresh angegeben ist, siehe [http://fhem.de/commandref.html#FHEMWEB]&lt;br /&gt;
=== Mögliche Probleme ===&lt;br /&gt;
Der obige Code eignet sich nur für direkte Kopplung von Sender und Aktor, das heißt der Sender steuert den Aktor direkt und FHEM „lauscht“ nur und protokolliert den Status, der sich aus dem &#039;&#039;toggle&#039;&#039;-Befehl ergibt. Sobald ein einziges Mal ein Fehler auftritt (das heißt nur entweder der Aktor oder FHEM empfangen den toggle-Befehl, der jeweils andere aber nicht), geht der synchrone Status dauerhaft verloren, das heißt, ab nun schaltet bei einem von Aktor und FHEM empfangenen &#039;&#039;toggle&#039;&#039;-Befehl jeweils einer der beiden in den Status &#039;&#039;&#039;on&#039;&#039;&#039;und der andere in den Status &#039;&#039;&#039;off&#039;&#039;&#039;. Dieser asnchrone Zustand wird erst behoben, wenn derselbe Fehler (nur entweder der Aktor oder FHEM empfangen den toggle-Befehl, der jeweils andere aber nicht) ein zweites Mal auftritt.&lt;br /&gt;
&lt;br /&gt;
Die Statusabfrage ist daher nicht besonders zuverlässig. Die Zuverlässigkeit kann durch eine [[#Version_f.C3.BCr_indirekte_Kopplung_von_Sender_und_Aktor|&#039;&#039;Untoggle&#039;&#039;-Version für indirekte Kopplung]] verbessert werden.&lt;br /&gt;
&lt;br /&gt;
== Version für indirekte Kopplung von Sender und Aktor ==&lt;br /&gt;
=== Implementierung ===&lt;br /&gt;
Bei dieser Version triggert der Sender lediglich den Untoggle-Befehl, der seinerseits den Aktor auf &#039;&#039;&#039;on&#039;&#039;&#039;oder &#039;&#039;&#039;off&#039;&#039;&#039;schaltet. Zwar kann auch in dieser Version die Synchronizität zwischen Aktor und FHEM-Status verloren gehen (wenn zwar FHEM den Sender-Befehl empfängt, aber der Aktor beim Empfang des als Konsequenz von FHEM gesendeten Befehls gestört ist), aber dieser Fehler wird mit dem nächsten ungestörten Steuerbefehl sofort wieder behoben, weil FHEM ja stets den zu seinem Status passenden Befehl an den Aktor sendet.&lt;br /&gt;
&lt;br /&gt;
Allerdings [http://culfw.de/commandref.html#misc funktioniert bei indirekter Kopplung zur Zeit das Dimmen von FS20-Aktoren nicht]. Als Workaround setzt der folgende Code FS20-Dimm-Befehle so um, dass zu einer definierten Zwischenhelligkeit umgeschaltet wird, deren Wert als dritter Parameter an die Funktion übergeben wird. (Die verwendete Heuristik funktioniert allerdings nicht immer; siehe Kommentar im Code.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Diese Routine ist seit 10/2012 Bestandteil der fhem-Standardauslieferung. Sie liegt in 99_Utils.pm und heisst UntoggleIndirect($$$)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Code ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sub UntoggleIndirect($;$;$)&lt;br /&gt;
{&lt;br /&gt;
 my ($sender, $actor, $dimvalue) = @_;&lt;br /&gt;
 if (Value($sender) eq &amp;quot;toggle&amp;quot;)&lt;br /&gt;
 {&lt;br /&gt;
  if (Value($actor) eq &amp;quot;off&amp;quot;) {fhem (&amp;quot;set &amp;quot;.$actor.&amp;quot; on&amp;quot;)}&lt;br /&gt;
  else {fhem (&amp;quot;set &amp;quot;.$actor.&amp;quot; off&amp;quot;)}&lt;br /&gt;
 }&lt;br /&gt;
 ## workaround for dimming currently not working with indirect pairing&lt;br /&gt;
 ## ([http://culfw.de/commandref.html http://culfw.de/commandref.html]: &amp;quot;TODO/Known BUGS - FS20 dim commands should not repeat.&amp;quot;)&lt;br /&gt;
 elsif (Value($sender) eq &amp;quot;dimup&amp;quot;) {fhem (&amp;quot;set &amp;quot;.$actor.&amp;quot; dim100%&amp;quot;)}&lt;br /&gt;
 elsif (Value($sender) eq &amp;quot;dimdown&amp;quot;) {fhem (&amp;quot;set &amp;quot;.$actor.&amp;quot; &amp;quot;.$dimvalue)}&lt;br /&gt;
 elsif (Value($sender) eq &amp;quot;dimupdown&amp;quot;)&lt;br /&gt;
 {&lt;br /&gt;
  if (Value($actor) eq $dimvalue) {fhem (&amp;quot;set &amp;quot;.$actor.&amp;quot; dim100%&amp;quot;)}&lt;br /&gt;
    ## Heuristic above doesn&#039;t work if lamp was dimmed, then switched off, then switched on, because state is &amp;quot;on&amp;quot;, but the lamp is actually dimmed.&lt;br /&gt;
  else {fhem (&amp;quot;set &amp;quot;.$actor.&amp;quot; &amp;quot;.$dimvalue)}&lt;br /&gt;
  sleep 1;&lt;br /&gt;
 }&lt;br /&gt;
 ## end of workaround&lt;br /&gt;
 else {fhem (&amp;quot;set &amp;quot;.$actor.&amp;quot; &amp;quot;.Value($sender))}&lt;br /&gt;
 return;&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
=== Aufruf ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define &amp;amp;lt;name&amp;amp;gt; notify &amp;amp;lt;Sender&amp;amp;gt; {UntoggleIndirect(&amp;quot;&amp;amp;lt;Sender&amp;amp;gt;&amp;quot;,&amp;quot;&amp;amp;lt;Aktor&amp;amp;gt;&amp;quot;,&amp;quot;&amp;amp;lt;Dimm_Wert&amp;amp;gt;&amp;quot;)}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Beim Dimm-Wert ist zu beachten, dass „%“ als Variable interpretiert wird, so dass stattdessen „%%“ anzugeben ist.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Wohnzimmerlampe_PAIR notify Wohnzimmerlampe_SENDER {UntoggleIndirect(&amp;quot;Wohnzimmerlampe_SENDER&amp;quot;,&amp;quot;Wohnzimmerlampe&amp;quot;,&amp;quot;dim12%%&amp;quot;)}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Code Snippets]]&lt;/div&gt;</summary>
		<author><name>Fhainz</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Pushbullet&amp;diff=7971</id>
		<title>Pushbullet</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Pushbullet&amp;diff=7971"/>
		<updated>2014-09-20T07:41:01Z</updated>

		<summary type="html">&lt;p&gt;Fhainz: /* Nachricht */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Pushbullet&#039;&#039;&#039; ist ein Dienst, um Benachrichtigungen an unterschiedliche Endgeräte zu senden. Pushbullet stellt Apps für iPhone, Android, Windows (Beta), Mac OS X (bald erhältlich) sowie Plugins für Chrome und Firefox an. Eine genaue Liste kann [http://www.pushbullet.com/apps hier] eingesehen werden. Der Dienst sowie die Apps sind kostenlos. &lt;br /&gt;
{{Infobox Modul&lt;br /&gt;
|ModPurpose=Senden von Push-Nachrichten an unterschiedliche Endgeräte&lt;br /&gt;
|ModType=x&lt;br /&gt;
|ModForumArea=Unterstützende Dienste&lt;br /&gt;
|ModTechName=70_Pushbullet.pm (noch nicht eingecheckt)&lt;br /&gt;
|ModOwner=fhainz&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&lt;br /&gt;
Es muss zwingend ein Google Account vorhanden sein. Anschließend kann man sich [http://pushbullet.com pushbullet.com] mit den Google Benutzerdaten einloggen. Den benötigten accessToken findet man in den Account Settings. (Rechts oben auf das Benutzer-Symbol klicken). &lt;br /&gt;
Auf dem gewünschtem Endgerät muss nur noch die entsprechende Applikation installiert werden.&lt;br /&gt;
&lt;br /&gt;
*Apple Geräte: [https://itunes.apple.com/us/app/pushbullet/id810352052 Pushbullet App]&lt;br /&gt;
*Android Gräte: [https://play.google.com/store/apps/details?id=com.pushbullet.android&amp;amp;hl=de Pushbullet App]&lt;br /&gt;
*Chrome: [https://chrome.google.com/webstore/detail/pushbullet/chlffgpmiacpedhhbkiomidkjlcfhogd Pushbullet Plugin]&lt;br /&gt;
*Firefox: [https://addons.mozilla.org/de/firefox/addon/pushbullet Pushbullet Plugin]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Einbinden des Dienstes in Fhem==&lt;br /&gt;
&lt;br /&gt;
Das Modul wird mit dem folgenden Befehl in fhem definiert:&lt;br /&gt;
&lt;br /&gt;
 define &amp;lt;name&amp;gt; Pushbullet &amp;lt;accessToken&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Push Benachrichtigung senden==&lt;br /&gt;
&lt;br /&gt;
===Nachricht===&lt;br /&gt;
&lt;br /&gt;
Nachricht ohne Titel oder Gerät:&lt;br /&gt;
 set &amp;lt;name&amp;gt; message Das ist eine Nachricht&lt;br /&gt;
&lt;br /&gt;
Nachricht mit Titel ohne Gerät:&lt;br /&gt;
 set &amp;lt;name&amp;gt; message Das ist eine Nachricht | Ein Titel&lt;br /&gt;
&lt;br /&gt;
Nachricht mit Titel an Gerät iPhone:&lt;br /&gt;
 set &amp;lt;name&amp;gt; message Das ist eine Nachricht | Ein Titel | iPhone&lt;br /&gt;
&lt;br /&gt;
Nachricht mit Titel an Kontakt Max Mustermann&lt;br /&gt;
 set &amp;lt;name&amp;gt; message Das ist eine Nachricht | Ein Titel | Max Mustermann&lt;br /&gt;
&lt;br /&gt;
Wenn kein Titel angegeben wird tritt das Attribut defaultTitel in Kraft. Falls dies nicht gesetzt ist wird der Titel auf FHEM gesetzt.&lt;br /&gt;
Wenn kein Device angeben wird tritt das Attribut defaultDevice in Kraft. Falls dies nicht gesetzt ist geht der Push an alle &#039;&#039;&#039;deine&#039;&#039;&#039; Devices. Kontakte erhalten die Benachrichtigung &#039;&#039;&#039;nicht!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Link===&lt;br /&gt;
Der Inhalt des Links wird in der App direkt angezeigt. Ein Webcam Foto kann somit mit einem Touch direkt am Endgerät angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
Link ohne Titel oder Gerät:&lt;br /&gt;
 set &amp;lt;name&amp;gt; link http://google.com&lt;br /&gt;
&lt;br /&gt;
Link mit Titel ohne Gerät:&lt;br /&gt;
 set &amp;lt;name&amp;gt; link http://google.com | Google&lt;br /&gt;
&lt;br /&gt;
Link mit Titel an Gerät iPhone&lt;br /&gt;
 set &amp;lt;name&amp;gt; link http://google.com | Google | iPhone&lt;br /&gt;
&lt;br /&gt;
Link mit Titel an Kontakt Max Mustermann&lt;br /&gt;
 set &amp;lt;name&amp;gt; link http://google.com | Google | MaxMustermann&lt;br /&gt;
&lt;br /&gt;
*Wenn kein Titel angegeben wird tritt das Attribut defaultTitel in Kraft. Falls dies nicht gesetzt ist wird der Titel auf FHEM gesetzt.&lt;br /&gt;
*Wenn kein Device angeben wird tritt das Attribut defaultDevice in Kraft. Falls dies nicht gesetzt ist geht der Push an alle &#039;&#039;&#039;deine&#039;&#039;&#039; Devices. Kontakte erhalten die Benachrichtigung &#039;&#039;&#039;nicht!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Liste===&lt;br /&gt;
&lt;br /&gt;
Liste ohne Titel oder Gerät:&lt;br /&gt;
 set &amp;lt;name&amp;gt; list Milch, Brot, Zucker&lt;br /&gt;
&lt;br /&gt;
Liste mit Titel ohne Gerät:&lt;br /&gt;
 set &amp;lt;name&amp;gt; list Milch, Brot, Zucker | Einkaufsliste&lt;br /&gt;
&lt;br /&gt;
Liste mit Titel an Gerät iPhone&lt;br /&gt;
 set &amp;lt;name&amp;gt; list Milch, Brot, Zucker | Einkaufsliste | iPhone&lt;br /&gt;
&lt;br /&gt;
Liste mit Titel an Kontakt Max Mustermann&lt;br /&gt;
 set &amp;lt;name&amp;gt; list Milch, Brot, Zucker | Einkaufsliste | MaxMustermann&lt;br /&gt;
&lt;br /&gt;
*Wenn kein Titel angegeben wird tritt das Attribut defaultTitel in Kraft. Falls dies nicht gesetzt ist wird der Titel auf FHEM gesetzt.&lt;br /&gt;
*Wenn kein Device angeben wird tritt das Attribut defaultDevice in Kraft. Falls dies nicht gesetzt ist geht der Push an alle &#039;&#039;&#039;deine&#039;&#039;&#039; Devices. Kontakte erhalten die Benachrichtigung &#039;&#039;&#039;nicht!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Kontakt hinzufügen==&lt;br /&gt;
Mit&lt;br /&gt;
 set &amp;lt;name&amp;gt; contactAdd &amp;lt;Name&amp;gt; | &amp;lt;email&amp;gt;&lt;br /&gt;
wird eine neuer Kontakt hinzugefügt. Dieser bekommt erstmal eine Email mit einer Einladung zur Pushbullet App. Fall die App nicht installiert wird, bekommt der Kontakt Push Benachrichtigungen als Email zugestellt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Gerät / Kontakt umbenennen==&lt;br /&gt;
Mit&lt;br /&gt;
 set &amp;lt;name&amp;gt; deviceRename &amp;lt;alterName&amp;gt; | &amp;lt;neuerName&amp;gt;&lt;br /&gt;
wird ein Gerät oder Kontakt umbenannt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Gerät / Kontakt löschen==&lt;br /&gt;
Mit&lt;br /&gt;
  set &amp;lt;name&amp;gt; deviceDelete &amp;lt;name&amp;gt;&lt;br /&gt;
wird ein Gerät oder Kontakt gelöscht.&lt;br /&gt;
&lt;br /&gt;
==Geräte / Kontakte neu einlesen==&lt;br /&gt;
Mit&lt;br /&gt;
  get &amp;lt;name&amp;gt; devices&lt;br /&gt;
kann man die Device Liste von pushbullet.com neu einlesen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Pushbullet Website==&lt;br /&gt;
Die Pushbullet Website biete umfangreiche Möglichkeiten die gesendet Push Nachrichten, Geräte und Kontakte zu verwalten. Weiters kann man auch Nachrichten versenden und löschen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
*Thread über das Modul im [http://forum.fhem.de/index.php/topic,25615.0.html FHEM-Forum]&lt;br /&gt;
*Pushbullet [https://www.pushbullet.com/apps Apps]&lt;br /&gt;
*Pushbullet [https://docs.pushbullet.com API]&lt;br /&gt;
*Homepage: [http://pushpullet.com pushbullet.com]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: Gerätemodul | Code Snippets]]&lt;/div&gt;</summary>
		<author><name>Fhainz</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Pushbullet&amp;diff=7970</id>
		<title>Pushbullet</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Pushbullet&amp;diff=7970"/>
		<updated>2014-09-20T07:40:05Z</updated>

		<summary type="html">&lt;p&gt;Fhainz: /* Nachricht */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Pushbullet&#039;&#039;&#039; ist ein Dienst, um Benachrichtigungen an unterschiedliche Endgeräte zu senden. Pushbullet stellt Apps für iPhone, Android, Windows (Beta), Mac OS X (bald erhältlich) sowie Plugins für Chrome und Firefox an. Eine genaue Liste kann [http://www.pushbullet.com/apps hier] eingesehen werden. Der Dienst sowie die Apps sind kostenlos. &lt;br /&gt;
{{Infobox Modul&lt;br /&gt;
|ModPurpose=Senden von Push-Nachrichten an unterschiedliche Endgeräte&lt;br /&gt;
|ModType=x&lt;br /&gt;
|ModForumArea=Unterstützende Dienste&lt;br /&gt;
|ModTechName=70_Pushbullet.pm (noch nicht eingecheckt)&lt;br /&gt;
|ModOwner=fhainz&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&lt;br /&gt;
Es muss zwingend ein Google Account vorhanden sein. Anschließend kann man sich [http://pushbullet.com pushbullet.com] mit den Google Benutzerdaten einloggen. Den benötigten accessToken findet man in den Account Settings. (Rechts oben auf das Benutzer-Symbol klicken). &lt;br /&gt;
Auf dem gewünschtem Endgerät muss nur noch die entsprechende Applikation installiert werden.&lt;br /&gt;
&lt;br /&gt;
*Apple Geräte: [https://itunes.apple.com/us/app/pushbullet/id810352052 Pushbullet App]&lt;br /&gt;
*Android Gräte: [https://play.google.com/store/apps/details?id=com.pushbullet.android&amp;amp;hl=de Pushbullet App]&lt;br /&gt;
*Chrome: [https://chrome.google.com/webstore/detail/pushbullet/chlffgpmiacpedhhbkiomidkjlcfhogd Pushbullet Plugin]&lt;br /&gt;
*Firefox: [https://addons.mozilla.org/de/firefox/addon/pushbullet Pushbullet Plugin]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Einbinden des Dienstes in Fhem==&lt;br /&gt;
&lt;br /&gt;
Das Modul wird mit dem folgenden Befehl in fhem definiert:&lt;br /&gt;
&lt;br /&gt;
 define &amp;lt;name&amp;gt; Pushbullet &amp;lt;accessToken&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Push Benachrichtigung senden==&lt;br /&gt;
&lt;br /&gt;
===Nachricht===&lt;br /&gt;
&lt;br /&gt;
Nachricht ohne Titel oder Gerät:&lt;br /&gt;
 set &amp;lt;name&amp;gt; message Das ist eine Nachricht&lt;br /&gt;
&lt;br /&gt;
Nachricht mit Titel ohne Gerät:&lt;br /&gt;
 set &amp;lt;name&amp;gt; message Das ist eine Nachricht | Ein Titel&lt;br /&gt;
&lt;br /&gt;
Nachricht mit Titel an Gerät iPhone:&lt;br /&gt;
set &amp;lt;name&amp;gt; message Das ist eine Nachricht | Ein Titel | iPhone&lt;br /&gt;
&lt;br /&gt;
 Nachricht mit Titel an Kontakt Max Mustermann&lt;br /&gt;
set &amp;lt;name&amp;gt; message Das ist eine Nachricht | Ein Titel | Max Mustermann&lt;br /&gt;
&lt;br /&gt;
Wenn kein Titel angegeben wird tritt das Attribut defaultTitel in Kraft. Falls dies nicht gesetzt ist wird der Titel auf FHEM gesetzt.&lt;br /&gt;
Wenn kein Device angeben wird tritt das Attribut defaultDevice in Kraft. Falls dies nicht gesetzt ist geht der Push an alle &#039;&#039;&#039;deine&#039;&#039;&#039; Devices. Kontakte erhalten die Benachrichtigung &#039;&#039;&#039;nicht!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Link===&lt;br /&gt;
Der Inhalt des Links wird in der App direkt angezeigt. Ein Webcam Foto kann somit mit einem Touch direkt am Endgerät angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
Link ohne Titel oder Gerät:&lt;br /&gt;
 set &amp;lt;name&amp;gt; link http://google.com&lt;br /&gt;
&lt;br /&gt;
Link mit Titel ohne Gerät:&lt;br /&gt;
 set &amp;lt;name&amp;gt; link http://google.com | Google&lt;br /&gt;
&lt;br /&gt;
Link mit Titel an Gerät iPhone&lt;br /&gt;
 set &amp;lt;name&amp;gt; link http://google.com | Google | iPhone&lt;br /&gt;
&lt;br /&gt;
Link mit Titel an Kontakt Max Mustermann&lt;br /&gt;
 set &amp;lt;name&amp;gt; link http://google.com | Google | MaxMustermann&lt;br /&gt;
&lt;br /&gt;
*Wenn kein Titel angegeben wird tritt das Attribut defaultTitel in Kraft. Falls dies nicht gesetzt ist wird der Titel auf FHEM gesetzt.&lt;br /&gt;
*Wenn kein Device angeben wird tritt das Attribut defaultDevice in Kraft. Falls dies nicht gesetzt ist geht der Push an alle &#039;&#039;&#039;deine&#039;&#039;&#039; Devices. Kontakte erhalten die Benachrichtigung &#039;&#039;&#039;nicht!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Liste===&lt;br /&gt;
&lt;br /&gt;
Liste ohne Titel oder Gerät:&lt;br /&gt;
 set &amp;lt;name&amp;gt; list Milch, Brot, Zucker&lt;br /&gt;
&lt;br /&gt;
Liste mit Titel ohne Gerät:&lt;br /&gt;
 set &amp;lt;name&amp;gt; list Milch, Brot, Zucker | Einkaufsliste&lt;br /&gt;
&lt;br /&gt;
Liste mit Titel an Gerät iPhone&lt;br /&gt;
 set &amp;lt;name&amp;gt; list Milch, Brot, Zucker | Einkaufsliste | iPhone&lt;br /&gt;
&lt;br /&gt;
Liste mit Titel an Kontakt Max Mustermann&lt;br /&gt;
 set &amp;lt;name&amp;gt; list Milch, Brot, Zucker | Einkaufsliste | MaxMustermann&lt;br /&gt;
&lt;br /&gt;
*Wenn kein Titel angegeben wird tritt das Attribut defaultTitel in Kraft. Falls dies nicht gesetzt ist wird der Titel auf FHEM gesetzt.&lt;br /&gt;
*Wenn kein Device angeben wird tritt das Attribut defaultDevice in Kraft. Falls dies nicht gesetzt ist geht der Push an alle &#039;&#039;&#039;deine&#039;&#039;&#039; Devices. Kontakte erhalten die Benachrichtigung &#039;&#039;&#039;nicht!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Kontakt hinzufügen==&lt;br /&gt;
Mit&lt;br /&gt;
 set &amp;lt;name&amp;gt; contactAdd &amp;lt;Name&amp;gt; | &amp;lt;email&amp;gt;&lt;br /&gt;
wird eine neuer Kontakt hinzugefügt. Dieser bekommt erstmal eine Email mit einer Einladung zur Pushbullet App. Fall die App nicht installiert wird, bekommt der Kontakt Push Benachrichtigungen als Email zugestellt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Gerät / Kontakt umbenennen==&lt;br /&gt;
Mit&lt;br /&gt;
 set &amp;lt;name&amp;gt; deviceRename &amp;lt;alterName&amp;gt; | &amp;lt;neuerName&amp;gt;&lt;br /&gt;
wird ein Gerät oder Kontakt umbenannt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Gerät / Kontakt löschen==&lt;br /&gt;
Mit&lt;br /&gt;
  set &amp;lt;name&amp;gt; deviceDelete &amp;lt;name&amp;gt;&lt;br /&gt;
wird ein Gerät oder Kontakt gelöscht.&lt;br /&gt;
&lt;br /&gt;
==Geräte / Kontakte neu einlesen==&lt;br /&gt;
Mit&lt;br /&gt;
  get &amp;lt;name&amp;gt; devices&lt;br /&gt;
kann man die Device Liste von pushbullet.com neu einlesen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Pushbullet Website==&lt;br /&gt;
Die Pushbullet Website biete umfangreiche Möglichkeiten die gesendet Push Nachrichten, Geräte und Kontakte zu verwalten. Weiters kann man auch Nachrichten versenden und löschen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
*Thread über das Modul im [http://forum.fhem.de/index.php/topic,25615.0.html FHEM-Forum]&lt;br /&gt;
*Pushbullet [https://www.pushbullet.com/apps Apps]&lt;br /&gt;
*Pushbullet [https://docs.pushbullet.com API]&lt;br /&gt;
*Homepage: [http://pushpullet.com pushbullet.com]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: Gerätemodul | Code Snippets]]&lt;/div&gt;</summary>
		<author><name>Fhainz</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Trick_der_Woche&amp;diff=7354</id>
		<title>Trick der Woche</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Trick_der_Woche&amp;diff=7354"/>
		<updated>2014-08-15T08:01:50Z</updated>

		<summary type="html">&lt;p&gt;Fhainz: /* Perl-Skripte Online testen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diese Seite enthält Tipps und Tricks, die zu unbedeutend sind, einen eigenen Artikel zu rechtfertigen, alternative Schreibweisen/Lösungen für eine Problem darstellen, Ungenauigkeiten oder unklare Formulierungen in den offiziellen Dokumenten ergänzen und ähnliches. Jeder Eintrag ist typischerweise sehr kurz (wenige Zeilen lang) und beleuchtet vielleicht nur einen Aspekt von Fhem, er kann allgemeiner Natur sein, oder sich auf ein spezielles Gerät oder einen speziellen Anwendungsfall beziehen. Dieser Artikel wendet sich eher an den Anfänger.&lt;br /&gt;
== August 2014 ==&lt;br /&gt;
&lt;br /&gt;
=== Perl-Skripte Online testen ===&lt;br /&gt;
Im Internet existieren Webseiten auf denen man Perl-Code online testen kann. Beispielsweise auf [http://www.compileonline.com/execute_perl_online.php www.compileonline.com] kann man Code zum testen eingeben und die Auswirkungen betrachten. Dies eignet sich zur schnellen Fehleranalyse oder um Perl zu lernen. Natürlich lassen sich keine Fhem-Besonderheiten nutzen.&lt;br /&gt;
&lt;br /&gt;
== Juni 2014 ==&lt;br /&gt;
&lt;br /&gt;
=== Batteriestatus bei HomeMatic Devices aktivieren===&lt;br /&gt;
Zumindest einige (wenn nicht alle) batteriegespeisten HM-Geräte können Batteriemeldungen senden, tun dies in der normalen Konfiguration aber nicht.&lt;br /&gt;
Dazu muss das Register cyclicInfoMsg auf on gesetzt werden. &lt;br /&gt;
&lt;br /&gt;
Wie man das macht steht z.b. hier&lt;br /&gt;
[[HM-SEC-SC_Tür-Fensterkontakt#Batteriestatus_aktivieren]]&lt;br /&gt;
und hier&lt;br /&gt;
[[HomeMatic_Type_ThreeState]]&lt;br /&gt;
&lt;br /&gt;
== Mai 2014 ==&lt;br /&gt;
&lt;br /&gt;
=== Dummywert mit aktueller Uhrzeit versehen in anderen Dummy kopieren===&lt;br /&gt;
&lt;br /&gt;
Der Inhalt von Dummy1 soll erweitert um  Uhrzeit und Datum in Dummy2 kopiert werden (z.b. um die Urzeit der letzten Auslösung einer Alarmanlage anzuzeigen)&lt;br /&gt;
&lt;br /&gt;
 { fhem(&amp;quot;set dummy2 &amp;quot; . (Value(&amp;quot;Dummy1&amp;quot;).&amp;quot; &amp;quot;.TimeNow()) )  } &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== zwei Dummywerte in einen anderen Dummy kopieren ===&lt;br /&gt;
Der String in Dummy1 soll um den String in Dummy2 erweitert werden und in Dummy3 kopiert werden:&lt;br /&gt;
&lt;br /&gt;
 { fhem(&amp;quot;set Dummy3 &amp;quot;.(Value(&amp;quot;Dummy1&amp;quot;)+Value(&amp;quot;Dummy2&amp;quot;))) } &lt;br /&gt;
&lt;br /&gt;
(Achtung: &amp;quot;+&amp;quot;  ist Zahlen addieren, &amp;quot;.&amp;quot; ist String konkatenieren) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== April 2014==&lt;br /&gt;
&lt;br /&gt;
=== Code sparen ===&lt;br /&gt;
Wer Definitionen wie die aus dem März zum [[Trick_der_Woche#Zuverl.C3.A4ssigkeit_von_FS20_Schaltungen_erh.C3.B6hen|Abfangen von Fehlbedienungen]] verwendet, kann durch eine ELSE Erweiterung auch gleich das Auschalten erledigen.&lt;br /&gt;
&lt;br /&gt;
 define act_on_TV_on notify TV { if (&amp;quot;%&amp;quot; eq &amp;quot;on&amp;quot; || &amp;quot;%&amp;quot; eq &amp;quot;dimup&amp;quot;) { fhem(&amp;quot;set TV on&amp;quot;) } else { fhem(&amp;quot;set TV off&amp;quot;) } }&lt;br /&gt;
&lt;br /&gt;
Hierdurch schaltet ON oder versehentlich zu langes Drücken, also DIMUP den Fernseher ein, jeder &#039;&#039;andere&#039;&#039; Tastendruck (also insbesondere die OFF Taste oder zu langes Drücken der OFF Taste -&amp;gt; DIMDOWN) den Fernseher aus.&lt;br /&gt;
&lt;br /&gt;
Voraussetzung ist, dass die Fernbedienung standardkonfiguriert ist, siehe auch nächster Tip.&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration eines FS20 Senders prüfen ===&lt;br /&gt;
Gelegentlich reagieren bestimmte notifys nicht, die von Sendern (Fernbedienungen, Sensoren oder Schaltern) ausgelöst werden sollen. Speziell bei FS20 aber auch bei HomeMatic kann das daran liegen, dass der Sender nicht sendet was man denkt. So gut wie alle FS20 Sender kennen nämlich nicht nur ON und OFF, sondern über ein Dutzend Schaltzustände. Dimmen ist einem noch hinreichend bewusst, es gibt aber auch exotische Dinge wie  Ein-für-Zeitdauer, Ein-auf-alte-Helligkeit, Aus-für-Zeitdauer (nur FS20), Ein-für-Zeitdauer-dannach-alter-Zustand und vieles mehr.&lt;br /&gt;
&lt;br /&gt;
Was also ein Infrarot-Bewegungsmelder bei Auslösung sendet und auch was eine Fernbedienungstaste sendet ist einstellbar. Wenn jetzt zum Beispiel an einer Fernbedienung auf Tastendruck nicht ON sondern Ein-für-Zeitdauer (ON-FOR-TIMER) gesendet wird, wird&lt;br /&gt;
 define act_on_TV_on notify TV:on set TV on&lt;br /&gt;
seltsamerweise nicht auslösen, obwohl die richtige Taste (und diese auch nicht zu lang) gedrückt wurde.&lt;br /&gt;
&lt;br /&gt;
Auch wenn man sich sicher ist, das Richtige in die Fernbedienung/Sensoren einprogramiert zu haben, ist ein einfacher Test immer, dies mit&lt;br /&gt;
 define act_on_TV notify TV set TV on&lt;br /&gt;
zu prüfen. Dieses notify löst immer aus, wenn &amp;quot;TV&amp;quot;  &#039;&#039;irgendetwas&#039;&#039; sendet, egal was. (Beachte: Man kann dann den Fernseher aber nicht mehr ausschalten, da auch die Austaste das notify auslöst und zum TV-Aktor nur &amp;quot;on&amp;quot; sendet)&lt;br /&gt;
Geht die Schaltung jetzt (kann man den Fernseher als jetzt EINschalten), liegt der Verdacht nahe, dass die Konfiguration des Senders / Sensors anders ist als man denkt. Das Logfile gibt Aufschluss, welcher Befehl tatsächlich empfangen wurde.&lt;br /&gt;
&lt;br /&gt;
=== Alles in FHEM, nichts in der Fernbedienung ===&lt;br /&gt;
Versuche in deiner FHEM Umgebung nicht, das Verhalten von Aktoren durch entsprechende Befehle aus Sensoren oder Fernbedienungen zu steuern. An Besten senden die nur ON und OFF oder DIM, den Rest möglichst immer in FHEM erledigen. &lt;br /&gt;
&lt;br /&gt;
Wer eine Lampe immer für vier Minuten einschalten will, programmiert seinen Schalter (Fernbedienung) also so, das nur &amp;quot;on&amp;quot; gesendet wird und erledigt den Rest in FHEM:&lt;br /&gt;
 define act_on_Schalter notify Schalter set Lampe-on-for-timer 240&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== März 2014==&lt;br /&gt;
&lt;br /&gt;
=== Zuverlässigkeit von FS20 Schaltungen erhöhen ===&lt;br /&gt;
FS20 Fernbedienungen senden bei Tastendrücken von mehr als 0,4 Sekunden anstatt ON bzw. OFF DIMUP bzw DIMDOWN.&lt;br /&gt;
&lt;br /&gt;
Das führt gelegentlich zu allgemein schlechter Bedienbarkeit (und schlechtem WAF), da 0,4 Sekunden relativ kurz ist und gerne aus versehen länger gedrückt wird. Das ist vor allem problematisch, wenn etwas geschaltet werden soll, was keinen Dimmer hat oder Dimmen nicht unterstützt.&lt;br /&gt;
&lt;br /&gt;
Eine Konfiguration wie &lt;br /&gt;
 define act_on_TV_on notify TV:on set TV on&lt;br /&gt;
hat also dann den Nachteil, dass bei versehentlich zu langem Tastendruck das TV nicht angeht. Da die meisten Nutzer unbewusst dazu neigen, bei Misserfolg die selbe Taste erneut aber länger zu drücken (was erneut keinen Erfolg zeigt) ist Frustration zu erwarten.&lt;br /&gt;
&lt;br /&gt;
Es kann daher speziell bei nicht dimmbaren Aktoren von Vorteil sein, auch dimmen abzufangen, z.b. durch eine zweite zusätzliche Definition:&lt;br /&gt;
&lt;br /&gt;
 define act_on_TV_dimup notify TV:dimup set TV on&lt;br /&gt;
&lt;br /&gt;
Es ist idR. einfacher einige dieser zusätzlichen Definitionen einzufügen, als allen Bedienern des Systems zu erklären, dass man keinesfalls länger als 0,4 Sekunden drücken darf.&lt;br /&gt;
&lt;br /&gt;
Alternativ kann man auch beide Befehle in einer Definition durch Perlbefehle {} abfangen:&lt;br /&gt;
&lt;br /&gt;
 define act_on_TV_on notify TV { if (&amp;quot;%&amp;quot; eq &amp;quot;on&amp;quot; || &amp;quot;%&amp;quot; eq &amp;quot;dimup&amp;quot;) { fhem(&amp;quot;set TV on&amp;quot;) }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Andere Möglichkeiten vergleiche: [[Trick_der_Woche#notify_durch_mehrere_Ereignisse_ausl.C3.B6sen_lassen|Notify durch mehrere Ereignisse auslösen lassen]]&lt;br /&gt;
&lt;br /&gt;
== Februar 2014==&lt;br /&gt;
&lt;br /&gt;
=== Sequence nutzen ===&lt;br /&gt;
Man kann Aktionen statt mit einem Tastedruck auch mit einer Sequenz von Tastendücken auslösen. Das Format des Befehle ist:&lt;br /&gt;
&lt;br /&gt;
 define &amp;lt;name&amp;gt; sequence &amp;lt;re1&amp;gt; &amp;lt;timeout1&amp;gt; &amp;lt;re2&amp;gt; [&amp;lt;timeout2&amp;gt; &amp;lt;re3&amp;gt; ...] &lt;br /&gt;
&lt;br /&gt;
wobei &amp;lt;re1&amp;gt; ...&amp;lt;re_n&amp;gt; die Aktionen sind und &amp;lt;timeout_n&amp;gt; der maximale Abstand der Tastendrücke in Sekunden.&lt;br /&gt;
&lt;br /&gt;
Angenommen, man wolle z.B. eine Lampe dann anschalten, wenn man zuerst Taste1 EIN , dann Taste2 AUS  und dann wieder Taste1 EIN einer Fernbedienung drückt, könnte das konkret so aussehen:&lt;br /&gt;
&lt;br /&gt;
 define MeineLampenSequenz1 sequence Btn1:on 0.5 Btn2:off 0.5 Btn1:on&lt;br /&gt;
&lt;br /&gt;
Zwischen jedem der Tastendrücke darf eine halbe Sekunde Abstand sein. &lt;br /&gt;
Diese Definition selbst löst die Lampe nicht aus, sondern definiert nur wie die Sequenz aussehen soll.&lt;br /&gt;
Um die Lampe bei erfolgreicher Betätigung der Sequenz auch einzuschalten bedarf es zusätzlich etwas wie:&lt;br /&gt;
&lt;br /&gt;
 define MeineLampe notify MeineLampenSequenz1:trigger set Lampe on&lt;br /&gt;
&lt;br /&gt;
Sequence kann man gut nutzen, um mit einer Fernbedienung mehr Funktionen zu schalten als Tasten zur Verfügung stehen. Ebenso könnte man damit simple Codeschlösser für Alarmanlagen bauen, z.b. um eine Anlage auszuschalten, wenn eine bestimmte Abfolge von Tasten gedrückt wird.&lt;br /&gt;
&lt;br /&gt;
Je nach Funksystem nimmt die Zuverlässigkeit aber rasch ab. Angenommen im Bereich FS20 (das System ist etwas unzuverlässiger ist als z.b. HomeMatic) seien 95% aller Funktsignale ungestört übertragbar, dann würden in der Praxis von 100 Tastendrücken an einer Fernbedienung 95x Erfolg zeigen und 5x fehlschlagen; das ist sicher tolerabel. &lt;br /&gt;
Bei einer Sequenzlänge von nur 4 Tasten würde die kombinierte Erfolgsquote der Sequenz jedoch nur noch ca. 80% sein, zum Ausschalten einer Alarmanlage vermutlich bereits unpraktisch.&lt;br /&gt;
&lt;br /&gt;
== Januar 2014==&lt;br /&gt;
&lt;br /&gt;
===isday===&lt;br /&gt;
&lt;br /&gt;
Bekanntlich kann man  mit &amp;quot;isday&amp;quot; leicht testen ob es draussen hell ist oder nicht. isday ist eine Funktion des (automatisch geladenen) 99_SUNRISE_EL.pm Moduls das auch sunset und sunrise enthält.&lt;br /&gt;
&lt;br /&gt;
Problematisch bei isday ist die fehlende Möglichkeit, Sonnenaufgang und Untergang einzustellen. (zumindest wenn man nicht 99_SUNRISE_EL.pm verändern will): isday ist wahr, wenn die Sonne im gegebenen Breitengrad sichtbar ist. Wenn örtliche Gegebenheiten eine Anpassung erfordern, kann man sich auch ein eigenes isday basteln, in dem man sunrise und sunset verwendet und dieses mit getrennten offsets versieht.&lt;br /&gt;
&lt;br /&gt;
Zuerst definiert man sich eine Variable (&amp;quot;dummy&amp;quot;) der anstelle isday eingesetzt werden soll, z.b.:&lt;br /&gt;
&lt;br /&gt;
 define Tageslicht dummy &lt;br /&gt;
&lt;br /&gt;
Dann wird diese mit sunset und sunrise befüllt:&lt;br /&gt;
&lt;br /&gt;
 define SetDummy1 at *{sunset(-3600)} set Tageslicht hell &lt;br /&gt;
 define SetDummy2 at *{sunrise(+1800)} set Tageslicht dunkel &lt;br /&gt;
&lt;br /&gt;
Jetzt kann für jeden Wechsel ein eigener Offset gewählt werden, im Beispiel 3600 Sekunden vor Sonnenuntergang und 1800 Sekunden nach Sonnenaufgang. Anstatt das Dummy &amp;quot;Tageslicht&amp;quot; mit den Werten &amp;quot;hell/dunkel&amp;quot; zu befüllen, kann natürlich auch 1/0 oder &amp;quot;Tag/Nacht&amp;quot; etc. verwendet werden, je nach dem was bei der Anwendung besser passt.&lt;br /&gt;
&lt;br /&gt;
Für höhere Ansprüche könnte hingegen das Twiglight-Modul verwendet werden, das Dämmerungsstufen kennt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Struktur von &amp;quot;Else IF&amp;quot; Schleifen===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 define ... notify ... {\&lt;br /&gt;
  if ... {\&lt;br /&gt;
   fhem (&amp;quot;... ;; ...&amp;quot;)\&lt;br /&gt;
  }\&lt;br /&gt;
  elsif {\&lt;br /&gt;
   if ... {\&lt;br /&gt;
    fhem (&amp;quot;... ;; ...&amp;quot;)\&lt;br /&gt;
  }\&lt;br /&gt;
  elsif {\&lt;br /&gt;
   if ... {\&lt;br /&gt;
    fhem (&amp;quot;... ;; ...&amp;quot;)\&lt;br /&gt;
  }\&lt;br /&gt;
  else {\&lt;br /&gt;
   if ... {\&lt;br /&gt;
    fhem (&amp;quot;... ;; ...&amp;quot;)\&lt;br /&gt;
  }\&lt;br /&gt;
 }}}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Achtung: es muss tatsächlich &amp;quot;elsif&amp;quot; heissen und nicht &amp;quot;elseif&amp;quot; oder &amp;quot;else if&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Dezember 2013==&lt;br /&gt;
&lt;br /&gt;
===notify durch mehrere Ereignisse auslösen lassen===&lt;br /&gt;
&lt;br /&gt;
Bekanntermassen löst&lt;br /&gt;
&lt;br /&gt;
 define irgendwas notify MeinSchalter …&lt;br /&gt;
&lt;br /&gt;
aus, wenn irgendein Ereignis vom Sender &amp;quot;MeinSchalter&amp;quot; eintrifft.&lt;br /&gt;
&lt;br /&gt;
Mit&lt;br /&gt;
&lt;br /&gt;
 define irgendwas notify MeinSchalter:on …&lt;br /&gt;
&lt;br /&gt;
wird das notify jedoch nur ausgelöst, wenn dieses Ereignis eine &amp;quot;on&amp;quot; ist.&lt;br /&gt;
Wenn man aber möchte, das z.B. &amp;quot;on&amp;quot; und &amp;quot;off&amp;quot; auslöst (um etwa Dim-Befehle auszuschliessen) kann dies wie folgt erreicht werden:&lt;br /&gt;
&lt;br /&gt;
 define irgendwas notify MeinSchalter:(on|off) …&lt;br /&gt;
&lt;br /&gt;
Die Klammern sind wichtig, vergleiche eine Lösung, bei der zwei Sender alternativ das notify auslösen können:&lt;br /&gt;
&lt;br /&gt;
 define irgendwas notify MeinSchalter:on|MeinAndererSchalter:on …&lt;br /&gt;
 &lt;br /&gt;
Selbstverständlich geht z.B. auch folgendes:&lt;br /&gt;
&lt;br /&gt;
 define irgendwas notify MeinSchalter:on|MeinAndererSchalter …&lt;br /&gt;
&lt;br /&gt;
Hier wird ausgelöst wenn &amp;quot;MeinSchalter&amp;quot; das Ereignis &amp;quot;on&amp;quot; liefert oder &amp;quot;MeinAndererSchalter&amp;quot; irgendein Ereignis&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aktoren über mehrere Funkschnittstellen ansprechen ===&lt;br /&gt;
Falls man mehrere Funkschnittstellen zur Reichweitenverlängerung hat (CUL / CUNO etc), und ein Aktor von beiden Funkschnittstellen in etwa gleich (schlecht) erreichbar ist, mag der Wunsch aufkommen, einen Funkbefehl über beide Schnittstellen auszusenden. Dies ist bei Funkprotokollen möglich, die kein echtes Pairing der Aktoren an die Funkschnittstelle erfordern, also z.b. FS20 oder Intertechno, nicht jedoch bei HomeMatic.&lt;br /&gt;
&lt;br /&gt;
Problematisch ist aber, dass die Funkschnittstelle über IODev eindeutige je Aktor festgelegt werden muss, eine Zuordnung mehrerer IODevs ist nicht vorgesehen.&lt;br /&gt;
(wenn man IODev nicht setzt, wird per default die LETZTE definiert Schnittstelle verwendet)&lt;br /&gt;
&lt;br /&gt;
Diess Problem kann mit einem Trick aber umgangen werden. Und zwar legt man den Aktor 2x mit gleicher Adresse aber abweichenden Namen und IOdevs an, z.b. so:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 define brenner_CUL1 FS20 11114244 11&lt;br /&gt;
 attr brenner_CUL1 IODev CUL1&lt;br /&gt;
 attr brenner_CUL2 room Keller&lt;br /&gt;
&lt;br /&gt;
 define brenner_CUL2 FS20 11114244 11&lt;br /&gt;
 attr brenner_CUL2 IODev CUL2&lt;br /&gt;
 attr brenner_CUL2 room Keller&lt;br /&gt;
&lt;br /&gt;
Ein Befehl der Art:&lt;br /&gt;
&lt;br /&gt;
 set brenner_CUL1,brenner_CUL2 on&lt;br /&gt;
&lt;br /&gt;
sendet den ON Befehl für den FS20 Aktor 11114244 11  jetzt tatsächlich über beide CULs aus!&lt;br /&gt;
&lt;br /&gt;
Achtung: Wenn die Schnittstellen gleich schnell angebunden sind, sollte vermutlich der [[Sendpool]] verwendet werden, da die Aussendungen sonst tatsächlich gleichzeitig erfolgen könnten und sich dann gegenseitig stören würden.&lt;br /&gt;
&lt;br /&gt;
=== Retrycount bei FHTs ist überflüssig===&lt;br /&gt;
Das von der Funktion &#039;&#039;autocreate&#039;&#039; älterer FHEM Versionen beim Anlegen von FHT80 Heizungsreglern voreingetragene attribute &amp;quot;retrycount&amp;quot; hat in den allermeisten Fällen keine Wirkung, da es NUR greift, wenn man als Funkschnittstelle eine FHZ1X00PC verwendet und dann den Softbuffer einschaltet. Selbst wenn man diese Konfiguration nutzt, will gut überlegt werden, ob die Wirkung postiv ist: Bei ungenügender Empfangslage vergrössert es Kommunikationsprobleme eventuell sogar.&lt;br /&gt;
&lt;br /&gt;
Es kann also in der Regel entfernt oder auf den Wert &amp;quot;1&amp;quot; gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
 define Heizung_Bad FHT 060d&lt;br /&gt;
 attr Heizung_Bad retrycount 3       &amp;lt;=== Diese Zeile entfernen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Siehe auch:[[Kommunikationsprobleme mit FHT]]&lt;br /&gt;
&lt;br /&gt;
== November 2013 ==&lt;br /&gt;
=== FS20 Funksteckdose sicherer schalten===&lt;br /&gt;
Seltsamerweise kommt es vor, das FS20 Aktoren - insbesondere die FS20 Funksteckdose - an der Grenze der Funkreichweite bestimmte Befehle eines Typs empfängt, andere aber nicht. Z.B. lässt sich die FS20 Steckdose zwar immer einschalten, aber oft nicht mehr aus (oder umgekehrt).&lt;br /&gt;
&lt;br /&gt;
Gelegentlich kann man die Zuverlässigkeit erhöhen, indem man statt dem nicht funktionierenden Befehl das Gegenteil mit &amp;quot;for-timer 1&amp;quot; verwendet.&lt;br /&gt;
&lt;br /&gt;
Im Fall, dass eine FS20 Steckdose sich also einwandfrei EINschalten lässt:&lt;br /&gt;
 set SteckdoseA on&lt;br /&gt;
aber oft ein AUSschalten mittels&lt;br /&gt;
 set SteckdoseA off&lt;br /&gt;
nicht funktioniert, kann man versuchen die Dose anstelle mit &amp;quot;off&amp;quot; mit dem Befehl&lt;br /&gt;
 set SteckdoseA on-for-timer 1&lt;br /&gt;
auszuschalten.&lt;br /&gt;
&lt;br /&gt;
Analog kann man mit off-for-timer arbeiten, wenn sich Aktoren nicht einschalten lassen, ausschalten aber geht.&lt;br /&gt;
&lt;br /&gt;
Achtung: Dieser Trick funtioniert ausdrücklich nur, wenn der &amp;quot;on/off-for-timer&amp;quot; Befehl im Aktor selber abgebildet wird. Daher ist der Trick vermutlich nicht auf andere Funksysteme übertragbar.&lt;br /&gt;
&lt;br /&gt;
=== Mehrere Geräte zugleich schalten===&lt;br /&gt;
Ein Ereignis soll mehrere Geräte schalten:&lt;br /&gt;
&lt;br /&gt;
 define act_on_Bewegungsmelder notify Bewegungsmelder set Lampe1 on;;set Lampe2 on;;set FunksteckdoseA on&lt;br /&gt;
&lt;br /&gt;
Aus Übersichtlichkeitsgründen können vor und nach den Semikolons auch Leerzeichen eingefügt werden (obwohl in einigen Dokumentation behauptet wird, dies dürfe man nicht machen):&lt;br /&gt;
&lt;br /&gt;
 define act_on_Bewegungsmelder notify Bewegungsmelder set Lampe1 on ;; set Lampe2 on ;; set FunksteckdoseA on&lt;br /&gt;
&lt;br /&gt;
Wenn der Schaltbefehl bei allen Geräten gleich ist, kann man wie folgt zusammenfassen:&lt;br /&gt;
&lt;br /&gt;
 define act_on_Bewegungsmelder notify Bewegungsmelder set Lampe1,Lampe2,FunksteckdoseA on&lt;br /&gt;
&lt;br /&gt;
Das Komma wird nicht [[Escapen in Perlbefehlen|escaped]] (verdoppelt), hier darf tatsächlich KEIN Leerzeichen vor oder nach dem Komma eingefügt werden.&lt;br /&gt;
&lt;br /&gt;
=== Logfileinträge unterdrücken===&lt;br /&gt;
&lt;br /&gt;
Das Attribute &amp;quot;verbose 0&amp;quot; verhindert, dass das Gerät Logfileinträge erzeugt.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 define Funksteckdose FS20 22224222 01&lt;br /&gt;
 attr Funksteckdose verbose 0&lt;br /&gt;
&lt;br /&gt;
===FHT Lazy Mode benutzen===&lt;br /&gt;
Es gibt wenig Gründe, den FHT &amp;quot;Lazy Mode&amp;quot; nicht zu verwenden&lt;br /&gt;
 define Heizung_Bad FHT 060d&lt;br /&gt;
 attr Heizung_Bad lazy&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dieser sorgt dafür, das Temperaturänderungen (genau genommen alle Änderungen, auch z.b. date) nur übertragen werden, wenn sie nicht sowieso schon am FHT eingestellt sind und veringern die Funklast dadurch deutlich. &lt;br /&gt;
&lt;br /&gt;
Siehe auch:[[Kommunikationsprobleme mit FHT]]&lt;br /&gt;
&lt;br /&gt;
== Oktober 2013 ==&lt;br /&gt;
&lt;br /&gt;
=== Zuverlässigkeit von Wiedereinschalten erhöhen ===&lt;br /&gt;
Speziell bei FS20 Aktoren ist wegen des fehlenden Rückkanals nicht leicht erkennbar, ob ein Einschaltbefehl Wirkung gezeigt hat. Das hat ganz schlechten WAF, wenn man z.b. mit einem FS20 Aktor eine Heizung ausschaltet und das Wiedereinschalten nach z.b. einer Stunde nicht klappt.&lt;br /&gt;
&lt;br /&gt;
Hier empfiehlt es sich, das Ausschalten mittels &lt;br /&gt;
 set Heizungs_schalter off-for-timer 3584   (= fast eine Stunde)&lt;br /&gt;
zu erledigen. Da bei FS20 der off-for-timer Befehl im Aktor abgewickelt wird (und nicht durch FHEM), schaltet sich der Aktor auch dann garantiert wieder ein, wenn Fhem abstürzt, eine Funkstörung vorliegt oder ähnliches.  Bei Bedarf kann der Befehl off-for-timer zur  Verlängerung der Ausschaltzeit wiederholt werden. Dies kann z.B. nötig sein, wenn die Ausschaltung länger als 4,5 Stunden (15360  Sekunden = der Maximalwert des Timers) dauern soll.&lt;br /&gt;
&lt;br /&gt;
Achtung: dieser Trick funktioniert nur, wenn der Aktor &amp;quot;off-for-timer&amp;quot; selbst beherrscht. FS20 Geräte können das, HomeMatic können aber nur &amp;quot;on-for-timer&amp;quot;. Man kann off-for-timer mit HomeMatic trotzdem verwenden, aber in diesem Fall sendet Fhem den Einschaltbefehl nach der Timerzeit. InterTechno, RSL etc, können gar keinen Timer, hier sendet Fhem immer 2 Befehle im passenden Abstand.&lt;br /&gt;
&lt;br /&gt;
=== FS20 Timerzeiten ===&lt;br /&gt;
FS20 Timer werden in Sekunden angegeben. Es sind jedoch nicht alle Werte einstellbar. Da der Timer Wert in 7 Bit übertragen werden muss, sind nur 128 Werte möglich. Um mit diesen Werten im unteren Bereich möglichst fein aufzulösen, andererseits aber auch lange Zeiten zu ermöglichen, ist die Verteilung nicht linear. Einstellbar sind folgende Zeiten in Sekunden;&lt;br /&gt;
&lt;br /&gt;
0,25  0,5  0,75  1  1,25  1,5  1,75  2  2,25  2,5  2,75  3  3,25  3,5  3,75   &lt;br /&gt;
4  4,5  5  5,5  6  6,5  7  7,5  8  9  10  11  12  13  14  15  16  18  20  22   &lt;br /&gt;
24  26  28  30  32  36  40  44  48  52  56  60  64  72  80  88  96  104  112   &lt;br /&gt;
120  128  144  160  176  192  208  224  240  256  288  320  352  384  416   &lt;br /&gt;
448  480  512  576  640  704  768  832  896  960  1024  1152  1280  1408   &lt;br /&gt;
1536  1664  1792  1920  2048  2304  2560  2816  3072  3328  3584  3840  4096   &lt;br /&gt;
4608  5120  5632  6144  6656  7168  7680  8192  9216  10240  11264  12288   &lt;br /&gt;
13312  14336  15360 &lt;br /&gt;
&lt;br /&gt;
Andere Zeiten werden von Fhem gerundet. Ein neues Setzen des Timer für FS20 löscht den alten Wert.&lt;br /&gt;
&lt;br /&gt;
===Butterflecken in Wollpullovern===&lt;br /&gt;
Butterflecken in Wollpullovern können leicht durch grossflächiges Aufstreichen von Teer beseitigt werden.&lt;/div&gt;</summary>
		<author><name>Fhainz</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Pushbullet&amp;diff=7162</id>
		<title>Pushbullet</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Pushbullet&amp;diff=7162"/>
		<updated>2014-08-10T17:41:40Z</updated>

		<summary type="html">&lt;p&gt;Fhainz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Pushbullet&#039;&#039;&#039; ist ein Dienst, um Benachrichtigungen an unterschiedliche Endgeräte zu senden. Pushbullet stellt Apps für iPhone, Android, Windows (Beta), Mac OS X (bald erhältlich) sowie Plugins für Chrome und Firefox an. Eine genaue Liste kann [http://www.pushbullet.com/apps hier] eingesehen werden. Der Dienst sowie die Apps sind kostenlos. &lt;br /&gt;
{{Infobox Modul&lt;br /&gt;
|ModPurpose=Senden von Push-Nachrichten an unterschiedliche Endgeräte&lt;br /&gt;
|ModType=d&lt;br /&gt;
|ModForumArea=[http://forum.fhem.de/index.php/board,44.0.html Unterstützende Dienste]&lt;br /&gt;
|ModTechName=70_Pushbullet.pm (noch nicht eingecheckt)&lt;br /&gt;
|ModOwner=fhainz&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&lt;br /&gt;
Es muss zwingend ein Google Account vorhanden sein. Anschließend kann man sich [http://pushbullet.com pushbullet.com] mit den Google Benutzerdaten einloggen. Den benötigten accessToken findet man in den Account Settings. (Rechts oben auf das Benutzer-Symbol klicken). &lt;br /&gt;
Auf dem gewünschtem Endgerät muss nur noch die entsprechende Applikation installiert werden.&lt;br /&gt;
&lt;br /&gt;
*Apple Geräte: [https://itunes.apple.com/us/app/pushbullet/id810352052 Pushbullet App]&lt;br /&gt;
*Android Gräte: [https://play.google.com/store/apps/details?id=com.pushbullet.android&amp;amp;hl=de Pushbullet App]&lt;br /&gt;
*Chrome: [https://chrome.google.com/webstore/detail/pushbullet/chlffgpmiacpedhhbkiomidkjlcfhogd Pushbullet Plugin]&lt;br /&gt;
*Firefox: [https://addons.mozilla.org/de/firefox/addon/pushbullet Pushbullet Plugin]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Einbinden des Dienstes in Fhem==&lt;br /&gt;
&lt;br /&gt;
Das Modul wird mit dem folgenden Befehl in fhem definiert:&lt;br /&gt;
&lt;br /&gt;
 define &amp;lt;name&amp;gt; Pushbullet &amp;lt;accessToken&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Push Benachrichtigung senden==&lt;br /&gt;
&lt;br /&gt;
===Nachricht===&lt;br /&gt;
&lt;br /&gt;
Nachricht ohne Titel oder Gerät:&lt;br /&gt;
 set &amp;lt;name&amp;gt; message Das ist eine Nachricht&lt;br /&gt;
&lt;br /&gt;
Nachricht mit Titel ohne Gerät:&lt;br /&gt;
 set &amp;lt;name&amp;gt; message Das ist eine Nachricht&lt;br /&gt;
&lt;br /&gt;
Nachricht mit Titel an Gerät iPhone:&lt;br /&gt;
set &amp;lt;name&amp;gt; message Das ist eine Nachricht | Ein Titel | iPhone&lt;br /&gt;
&lt;br /&gt;
 Nachricht mit Titel an Kontakt Max Mustermann&lt;br /&gt;
set &amp;lt;name&amp;gt; message Das ist eine Nachricht | Ein Titel | Max Mustermann&lt;br /&gt;
&lt;br /&gt;
Wenn kein Titel angegeben wird tritt das Attribut defaultTitel in Kraft. Falls dies nicht gesetzt ist wird der Titel auf FHEM gesetzt.&lt;br /&gt;
Wenn kein Device angeben wird tritt das Attribut defaultDevice in Kraft. Falls dies nicht gesetzt ist geht der Push an alle &#039;&#039;&#039;deine&#039;&#039;&#039; Devices. Kontakte erhalten die Benachrichtigung &#039;&#039;&#039;nicht!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Link===&lt;br /&gt;
Der Inhalt des Links wird in der App direkt angezeigt. Ein Webcam Foto kann somit mit einem Touch direkt am Endgerät angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
Link ohne Titel oder Gerät:&lt;br /&gt;
 set &amp;lt;name&amp;gt; link http://google.com&lt;br /&gt;
&lt;br /&gt;
Link mit Titel ohne Gerät:&lt;br /&gt;
 set &amp;lt;name&amp;gt; link http://google.com | Google&lt;br /&gt;
&lt;br /&gt;
Link mit Titel an Gerät iPhone&lt;br /&gt;
 set &amp;lt;name&amp;gt; link http://google.com | Google | iPhone&lt;br /&gt;
&lt;br /&gt;
Link mit Titel an Kontakt Max Mustermann&lt;br /&gt;
 set &amp;lt;name&amp;gt; link http://google.com | Google | MaxMustermann&lt;br /&gt;
&lt;br /&gt;
*Wenn kein Titel angegeben wird tritt das Attribut defaultTitel in Kraft. Falls dies nicht gesetzt ist wird der Titel auf FHEM gesetzt.&lt;br /&gt;
*Wenn kein Device angeben wird tritt das Attribut defaultDevice in Kraft. Falls dies nicht gesetzt ist geht der Push an alle &#039;&#039;&#039;deine&#039;&#039;&#039; Devices. Kontakte erhalten die Benachrichtigung &#039;&#039;&#039;nicht!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Liste===&lt;br /&gt;
&lt;br /&gt;
Liste ohne Titel oder Gerät:&lt;br /&gt;
 set &amp;lt;name&amp;gt; list Milch, Brot, Zucker&lt;br /&gt;
&lt;br /&gt;
Liste mit Titel ohne Gerät:&lt;br /&gt;
 set &amp;lt;name&amp;gt; list Milch, Brot, Zucker | Einkaufsliste&lt;br /&gt;
&lt;br /&gt;
Liste mit Titel an Gerät iPhone&lt;br /&gt;
 set &amp;lt;name&amp;gt; list Milch, Brot, Zucker | Einkaufsliste | iPhone&lt;br /&gt;
&lt;br /&gt;
Liste mit Titel an Kontakt Max Mustermann&lt;br /&gt;
 set &amp;lt;name&amp;gt; list Milch, Brot, Zucker | Einkaufsliste | MaxMustermann&lt;br /&gt;
&lt;br /&gt;
*Wenn kein Titel angegeben wird tritt das Attribut defaultTitel in Kraft. Falls dies nicht gesetzt ist wird der Titel auf FHEM gesetzt.&lt;br /&gt;
*Wenn kein Device angeben wird tritt das Attribut defaultDevice in Kraft. Falls dies nicht gesetzt ist geht der Push an alle &#039;&#039;&#039;deine&#039;&#039;&#039; Devices. Kontakte erhalten die Benachrichtigung &#039;&#039;&#039;nicht!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Kontakt hinzufügen==&lt;br /&gt;
Mit&lt;br /&gt;
 set &amp;lt;name&amp;gt; contactAdd &amp;lt;Name&amp;gt; | &amp;lt;email&amp;gt;&lt;br /&gt;
wird eine neuer Kontakt hinzugefügt. Dieser bekommt erstmal eine Email mit einer Einladung zur Pushbullet App. Fall die App nicht installiert wird, bekommt der Kontakt Push Benachrichtigungen als Email zugestellt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Gerät / Kontakt umbenennen==&lt;br /&gt;
Mit&lt;br /&gt;
 set &amp;lt;name&amp;gt; deviceRename &amp;lt;alterName&amp;gt; | &amp;lt;neuerName&amp;gt;&lt;br /&gt;
wird ein Gerät oder Kontakt umbenannt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Gerät / Kontakt löschen==&lt;br /&gt;
Mit&lt;br /&gt;
  set &amp;lt;name&amp;gt; deviceDelete &amp;lt;name&amp;gt;&lt;br /&gt;
wird ein Gerät oder Kontakt gelöscht.&lt;br /&gt;
&lt;br /&gt;
==Geräte / Kontakte neu einlesen==&lt;br /&gt;
Mit&lt;br /&gt;
  get &amp;lt;name&amp;gt; devices&lt;br /&gt;
kann man die Device Liste von pushbullet.com neu einlesen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Pushbullet Website==&lt;br /&gt;
Die Pushbullet Website biete umfangreiche Möglichkeiten die gesendet Push Nachrichten, Geräte und Kontakte zu verwalten. Weiters kann man auch Nachrichten versenden und löschen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
*Thread über das Modul im [http://forum.fhem.de/index.php/topic,25615.0.html FHEM-Forum]&lt;br /&gt;
*Pushbullet [https://www.pushbullet.com/apps Apps]&lt;br /&gt;
*Pushbullet [https://docs.pushbullet.com API]&lt;br /&gt;
*Homepage: [http://pushpullet.com pushbullet.com]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: Gerätemodul | Code Snippets]]&lt;/div&gt;</summary>
		<author><name>Fhainz</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Pushbullet&amp;diff=7161</id>
		<title>Pushbullet</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Pushbullet&amp;diff=7161"/>
		<updated>2014-08-10T17:21:52Z</updated>

		<summary type="html">&lt;p&gt;Fhainz: Die Seite wurde neu angelegt: „&amp;#039;&amp;#039;&amp;#039;Pushbullet&amp;#039;&amp;#039;&amp;#039; ist ein Dienst, um Benachrichtigungen an unterschiedliche Endgeräte zu senden. Pushbullet stellt Apps für iPhone, Android, Windows (Beta), M…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Pushbullet&#039;&#039;&#039; ist ein Dienst, um Benachrichtigungen an unterschiedliche Endgeräte zu senden. Pushbullet stellt Apps für iPhone, Android, Windows (Beta), Mac OS X (bald erhältlich) sowie Plugins für Chrome und Firefox an. Eine genaue Liste kann [http://www.pushbullet.com/apps hier] eingesehen werden. Der Dienst sowie die Apps sind kostenlos. &lt;br /&gt;
{{Infobox Modul&lt;br /&gt;
|ModPurpose=Senden von Push-Nachrichten an unterschiedliche Endgeräte&lt;br /&gt;
|ModType=d&lt;br /&gt;
|ModForumArea=[http://forum.fhem.de/index.php/board,44.0.html Unterstützende Dienste]&lt;br /&gt;
|ModTechName=70_Pushbullet.pm (noch nicht eingecheckt)&lt;br /&gt;
|ModOwner=fhainz&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&lt;br /&gt;
Es muss zwingend ein Google Account vorhanden sein. Anschließend kann man sich [http://pushbullet.com pushbullet.com] mit den Google Benutzerdaten einloggen. Den benötigten accessToken findet man in den Account Settings. (Rechts oben auf das Benutzer-Symbol klicken). &lt;br /&gt;
Auf dem gewünschtem Endgerät muss nur noch die entsprechende Applikation installiert werden.&lt;br /&gt;
&lt;br /&gt;
*Apple Geräte: [https://itunes.apple.com/us/app/pushbullet/id810352052 Pushbullet App]&lt;br /&gt;
*Android Gräte: [https://play.google.com/store/apps/details?id=com.pushbullet.android&amp;amp;hl=de Pushbullet App]&lt;br /&gt;
*Chrome: [https://chrome.google.com/webstore/detail/pushbullet/chlffgpmiacpedhhbkiomidkjlcfhogd Pushbullet Plugin]&lt;br /&gt;
*Firefox: [https://addons.mozilla.org/de/firefox/addon/pushbullet Pushbullet Plugin]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Einbinden des Dienstes in Fhem==&lt;br /&gt;
&lt;br /&gt;
Das Modul wird mit dem folgenden Befehl in fhem definiert:&lt;br /&gt;
&lt;br /&gt;
 define &amp;lt;name&amp;gt; Pushbullet &amp;lt;accessToken&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Push Benachrichtigung senden==&lt;br /&gt;
&lt;br /&gt;
===Nachricht===&lt;br /&gt;
&lt;br /&gt;
Nachricht ohne Titel oder Gerät:&lt;br /&gt;
 set &amp;lt;name&amp;gt; message Das ist eine Nachricht&lt;br /&gt;
&lt;br /&gt;
Nachricht mit Titel ohne Gerät:&lt;br /&gt;
 set &amp;lt;name&amp;gt; message Das ist eine Nachricht&lt;br /&gt;
&lt;br /&gt;
Nachricht mit Titel an Gerät iPhone:&lt;br /&gt;
set &amp;lt;name&amp;gt; message Das ist eine Nachricht | Ein Titel | iPhone&lt;br /&gt;
&lt;br /&gt;
 Nachricht mit Titel an Kontakt Max Mustermann&lt;br /&gt;
set &amp;lt;name&amp;gt; message Das ist eine Nachricht | Ein Titel | Max Mustermann&lt;br /&gt;
&lt;br /&gt;
Wenn kein Titel angegeben wird tritt das Attribut defaultTitel in Kraft. Falls dies nicht gesetzt ist wird der Titel auf FHEM gesetzt.&lt;br /&gt;
Wenn kein Device angeben wird tritt das Attribut defaultDevice in Kraft. Falls dies nicht gesetzt ist geht der Push an alle &#039;&#039;&#039;deine&#039;&#039;&#039; Devices. Kontakte erhalten die Benachrichtigung &#039;&#039;&#039;nicht!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Link===&lt;br /&gt;
Der Inhalt des Links wird in der App direkt angezeigt. Ein Webcam Foto kann somit mit einem Touch direkt am Endgerät angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
Link ohne Titel oder Gerät:&lt;br /&gt;
 set &amp;lt;name&amp;gt; link http://google.com&lt;br /&gt;
&lt;br /&gt;
Link mit Titel ohne Gerät:&lt;br /&gt;
 set &amp;lt;name&amp;gt; link http://google.com | Google&lt;br /&gt;
&lt;br /&gt;
Link mit Titel an Gerät iPhone&lt;br /&gt;
 set &amp;lt;name&amp;gt; link http://google.com | Google | iPhone&lt;br /&gt;
&lt;br /&gt;
Link mit Titel an Kontakt Max Mustermann&lt;br /&gt;
 set &amp;lt;name&amp;gt; link http://google.com | Google | MaxMustermann&lt;br /&gt;
&lt;br /&gt;
*Wenn kein Titel angegeben wird tritt das Attribut defaultTitel in Kraft. Falls dies nicht gesetzt ist wird der Titel auf FHEM gesetzt.&lt;br /&gt;
*Wenn kein Device angeben wird tritt das Attribut defaultDevice in Kraft. Falls dies nicht gesetzt ist geht der Push an alle &#039;&#039;&#039;deine&#039;&#039;&#039; Devices. Kontakte erhalten die Benachrichtigung &#039;&#039;&#039;nicht!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Liste===&lt;br /&gt;
&lt;br /&gt;
Liste ohne Titel oder Gerät:&lt;br /&gt;
 set &amp;lt;name&amp;gt; list Milch, Brot, Zucker&lt;br /&gt;
&lt;br /&gt;
Liste mit Titel ohne Gerät:&lt;br /&gt;
 set &amp;lt;name&amp;gt; list Milch, Brot, Zucker | Einkaufsliste&lt;br /&gt;
&lt;br /&gt;
Liste mit Titel an Gerät iPhone&lt;br /&gt;
 set &amp;lt;name&amp;gt; list Milch, Brot, Zucker | Einkaufsliste | iPhone&lt;br /&gt;
&lt;br /&gt;
Liste mit Titel an Kontakt Max Mustermann&lt;br /&gt;
 set &amp;lt;name&amp;gt; list Milch, Brot, Zucker | Einkaufsliste | MaxMustermann&lt;br /&gt;
&lt;br /&gt;
*Wenn kein Titel angegeben wird tritt das Attribut defaultTitel in Kraft. Falls dies nicht gesetzt ist wird der Titel auf FHEM gesetzt.&lt;br /&gt;
*Wenn kein Device angeben wird tritt das Attribut defaultDevice in Kraft. Falls dies nicht gesetzt ist geht der Push an alle &#039;&#039;&#039;deine&#039;&#039;&#039; Devices. Kontakte erhalten die Benachrichtigung &#039;&#039;&#039;nicht!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
&lt;br /&gt;
*Thread über das Modul im [http://forum.fhem.de/index.php/topic,25615.0.html FHEM-Forum]&lt;br /&gt;
*Pushbullet [https://www.pushbullet.com/apps Apps]&lt;br /&gt;
*Pushbullet [https://docs.pushbullet.com API]&lt;br /&gt;
*Homepage: [http://pushpullet.com pushbullet.com]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: Gerätemodul | Code Snippets]]&lt;/div&gt;</summary>
		<author><name>Fhainz</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Benutzer:Fhainz&amp;diff=4832</id>
		<title>Benutzer:Fhainz</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Benutzer:Fhainz&amp;diff=4832"/>
		<updated>2014-02-09T21:50:59Z</updated>

		<summary type="html">&lt;p&gt;Fhainz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;- FHEM Installation auf Mac OSX&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.&lt;br /&gt;
 &lt;br /&gt;
sudo cpan install Bundle::CPAN&lt;br /&gt;
&lt;br /&gt;
sudo cpan install Device::SerialPort &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2.&lt;br /&gt;
&lt;br /&gt;
fhem runterladen und zB. /Users/Name/fhemInstall entpacken&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3.&lt;br /&gt;
&lt;br /&gt;
In der Datei Makefile &lt;br /&gt;
&lt;br /&gt;
BINDIR=/usr/local/bin&lt;br /&gt;
&lt;br /&gt;
auf zB.&lt;br /&gt;
&lt;br /&gt;
BINDIR=/Users/Name/fhem&lt;br /&gt;
&lt;br /&gt;
ändern.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4.&lt;br /&gt;
&lt;br /&gt;
cd /Users/Name/fhem&lt;br /&gt;
&lt;br /&gt;
sudo make install&lt;br /&gt;
&lt;br /&gt;
fhem starten: cd /Users/Fabian/fhem/ &amp;amp;&amp;amp; perl fhem.pl fhem.cfg&lt;br /&gt;
&lt;br /&gt;
fhem stopen: telnet 10.0.0.40 7072 --&amp;gt; shutdown&lt;/div&gt;</summary>
		<author><name>Fhainz</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Benutzer:Fhainz&amp;diff=4828</id>
		<title>Benutzer:Fhainz</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Benutzer:Fhainz&amp;diff=4828"/>
		<updated>2014-02-09T15:27:16Z</updated>

		<summary type="html">&lt;p&gt;Fhainz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;- FHEM Installation auf Mac OSX&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.&lt;br /&gt;
 &lt;br /&gt;
sudo cpan install Bundle::CPAN&lt;br /&gt;
&lt;br /&gt;
sudo cpan install Device::SerialPort &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2.&lt;br /&gt;
&lt;br /&gt;
fhem runterladen und zB. /Users/Name/fhemInstall entpacken&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3.&lt;br /&gt;
&lt;br /&gt;
In der Datei Makefile &lt;br /&gt;
&lt;br /&gt;
BINDIR=/usr/local/bin&lt;br /&gt;
&lt;br /&gt;
auf zB.&lt;br /&gt;
&lt;br /&gt;
BINDIR=/Users/Name/fhem&lt;br /&gt;
&lt;br /&gt;
ändern.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4.&lt;br /&gt;
&lt;br /&gt;
cd /Users/Name/fhem&lt;br /&gt;
&lt;br /&gt;
sudo make install&lt;br /&gt;
&lt;br /&gt;
fhem starten: cd /Users/Fabian/fhem &amp;amp;&amp;amp; perl fhem.pl fhem.cfg&lt;br /&gt;
&lt;br /&gt;
fhem stopen: stop -&amp;gt; Return -&amp;gt; STRG + C&lt;/div&gt;</summary>
		<author><name>Fhainz</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Benutzer:Fhainz&amp;diff=4823</id>
		<title>Benutzer:Fhainz</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Benutzer:Fhainz&amp;diff=4823"/>
		<updated>2014-02-09T14:09:35Z</updated>

		<summary type="html">&lt;p&gt;Fhainz: Die Seite wurde neu angelegt: „- FHEM Installation auf Mac OSX   1.   sudo cpan install Bundle::CPAN  sudo cpan install Device::SerialPort    2.  fhem runterladen und zB. /Users/Name/fhemIns…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;- FHEM Installation auf Mac OSX&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.&lt;br /&gt;
 &lt;br /&gt;
sudo cpan install Bundle::CPAN&lt;br /&gt;
&lt;br /&gt;
sudo cpan install Device::SerialPort &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2.&lt;br /&gt;
&lt;br /&gt;
fhem runterladen und zB. /Users/Name/fhemInstall entpacken&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3.&lt;br /&gt;
&lt;br /&gt;
In der Datei Makefile &lt;br /&gt;
&lt;br /&gt;
BINDIR=/usr/local/bin&lt;br /&gt;
&lt;br /&gt;
auf zB.&lt;br /&gt;
&lt;br /&gt;
BINDIR=/Users/Name/fhem&lt;br /&gt;
&lt;br /&gt;
ändern.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4.&lt;br /&gt;
&lt;br /&gt;
cd /Users/Name/fhem&lt;br /&gt;
&lt;br /&gt;
sudo make install&lt;br /&gt;
&lt;br /&gt;
fhem starten: perl fhem.pl fhem.cfg&lt;br /&gt;
&lt;br /&gt;
fhem stopen: stop -&amp;gt; Return -&amp;gt; STRG + C&lt;/div&gt;</summary>
		<author><name>Fhainz</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=FHEM_on_OS_X&amp;diff=4821</id>
		<title>FHEM on OS X</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=FHEM_on_OS_X&amp;diff=4821"/>
		<updated>2014-02-09T12:50:48Z</updated>

		<summary type="html">&lt;p&gt;Fhainz: /* Install Fhem */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Most of the the time Fhem is installed on Linux based systems. That could be the reason why most of the HowTos, FAQs and Tips are dealing with Unix issues. As you may know, Apple&#039;s OS X is based on Unix as well and it is no big deal to run Fhem on OS X.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= HOWTO install Fhem on OS X =&lt;br /&gt;
== Description ==&lt;br /&gt;
This HOWTO describes the necessary steps to install Fhem on a Mac running OS X. Especially Fhem in combination with the FHZ 1000 Device.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
To install Fhem on a Mac, you have to follow these steps:&lt;br /&gt;
&lt;br /&gt;
* Install USB Driver for FHZ 1X00 PC&lt;br /&gt;
* Install the C Compiler from XTools&lt;br /&gt;
* Install SerialPort Sources from CPAN&lt;br /&gt;
* Modify Fhem Makefile&lt;br /&gt;
* Install Fhem&lt;br /&gt;
== USB Driver for FHZ 1X00 PC ==&lt;br /&gt;
FHZ 1000 PC (and the newer version FHZ 1300 PC) is an interface device between the FS20 radio protocol and a PC via an USB interface.&lt;br /&gt;
FHZ 1000 PC has a fairly straight forward structure based on standard components. It is build around a PIC16F628 processor and uses a FT232AM (FT8U232AM) chip from FTDI for USB communication.&lt;br /&gt;
The vendor of this chip provides drivers for Mac OS X 10.3, 10.4, 10.5 and 10.6. Please download and install the most recent version from their website: [http://www.ftdichip.com/Drivers/VCP.htm FTDIUSBSerialDriver]&lt;br /&gt;
&lt;br /&gt;
When the computer has rebooted, plug in the device and check if the device is installed properly. &lt;br /&gt;
Take a look at the the OS X System Logfile (/var/log/system.log). The FHZ1000 device should recognize by the system as follows:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;kernel [0]: FTDIUSBSerialDriver:		0	403f06f start - ok&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
If not, please check the device and the USB cable on a different system (e.g. Linux &amp;amp;gt; 2.6).&lt;br /&gt;
&lt;br /&gt;
After that, you will see two entries in the &#039;&#039;/dev&#039;&#039;directory. To check this, open the OS X Terminal Application and execute the following command:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;$ls /dev/cu.*&lt;br /&gt;
/dev/cu.usbserial-xxxxxxxx&lt;br /&gt;
$ls /dev/tty.*&lt;br /&gt;
/dev/tty.usbserial-xxxxxxxx&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
where &#039;&#039;xxxxxxxx&#039;&#039;is either the device&#039;s serial number.&lt;br /&gt;
&lt;br /&gt;
Now you can talk to the box via &#039;&#039;/dev/tty.usbserial-xxxx&#039;&#039;using the FS20 Protocol.&lt;br /&gt;
&lt;br /&gt;
=== Symbolic Link to ttyUSB0 ===&lt;br /&gt;
Because Fhem is talking to the device using &#039;&#039;/dev/ttyUSB0&#039;, for better handling you should define a symbolic link: &#039;&#039;Open the OS X Terminal Application and execute the following command:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;$ sudo ln -s /dev/tty.usbserial-xxxxxx /dev/ttyUSB0&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;NOTE!&#039;&#039;&#039;Under specific circumstances, the symlink disappears after a reboot. &lt;br /&gt;
If someone can solve this issue or know the reason for that, please edit this paragraph!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The issue can simply be fixed by specifying the /dev/cu.usbmodem-xxxx instead of /dev/ttyUSB0 as the serial device in fhem.cfg.&lt;br /&gt;
&lt;br /&gt;
== GNU C Compiler ==&lt;br /&gt;
Apple&#039;s brand-name for the &#039;developer tools&#039; is &#039;XCode Tools&#039;, it is GCC and a few other bits and bobs. To install it is a simple matter, you simply install the package on your OS X DVD. I&#039;m led to believe the CD version of Mac OS X has a dedicated CD called &#039;X-Code Tools&#039;.&lt;br /&gt;
If you have lost the DVD already then you can download X-code tools from [http://developer.apple.com/technologies/xcode.html Apple&#039;s website]. Although you must sign-in to be able to to get the file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE!&#039;&#039;&#039;Always make sure to install the latest available version of Xcode Tools for your Mac OS X release; using outdated versions of Xcode Tools may cause port install failures. Also note that Xcode Tools are not updated via Mac OS X&#039;s Software Update utility.&lt;br /&gt;
&lt;br /&gt;
* Run the Xcode Tools package installer.&lt;br /&gt;
* Click the button Customize, expand the Applications category and click the check box beside X11 SDK to add it to the default items.&lt;br /&gt;
* Ensure that the option for command line development, which is labeled Unix Development in the Xcode 3.x installer, is checked.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SerialPort Perl Modul ==&lt;br /&gt;
SerialPort for Linux is a user interface to Serial API calls. The module provides an object-based user interface essentially identical to the one provided by the Win32::SerialPort module.&lt;br /&gt;
To install this modul you can get the right sources from the CPAN Website.&lt;br /&gt;
&lt;br /&gt;
Open the OS X Terminal Application and execute the following command:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo perl –MCPAN –e shell&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
If you do this the first time, Perl may ask you a few questions... just enter YES.&lt;br /&gt;
At the end you will read something like &#039;&#039;cpan shell -- CPAN exploration and modules installation (v1.9205)&#039;&#039;. Within the CPAN Shell, you have to execute the following two commands: &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[cpan[1]&amp;amp;gt;] install Bundle::CPAN&lt;br /&gt;
[cpan[1]&amp;amp;gt;] install Device::SerialPort&lt;br /&gt;
[cpan[1]&amp;amp;gt;] quit&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
=== Some testing ===&lt;br /&gt;
Now you should be ready to use the Module &#039;&#039;Device::SerialPort&#039;&#039;. If have already configured your Hardware (CUN, CUL, FHZ1000...) you can check the functionality with a little Perl script:&lt;br /&gt;
[http://fhz4linux.info/tiki-download_file.php?fileId=4 elv.pl]&lt;br /&gt;
&lt;br /&gt;
As a result, you will get something link this:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# ./elv.pl &lt;br /&gt;
Sending ...8106c98602011f64 &lt;br /&gt;
Got: 810bc93b01021f0278075c44f8 [0]&lt;br /&gt;
Sending ...810804afc90184570208 Result: 10&lt;br /&gt;
Got: 810fc9ae010284010807f8136e3118 [1]&lt;br /&gt;
Got: 4c09 [2]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Install Fhem ==&lt;br /&gt;
Download the most recent version of Fhem from [http://www.koeniglich.de/fhem/fhem.html Rudi&#039;s Website].&lt;br /&gt;
Extract the archive and install the Software as described on the Website. &lt;br /&gt;
&lt;br /&gt;
You most likely will have fhem installed in some custom directory, so you need to adapt the first lines in the Makefile, for example change to:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;BINDIR=/usr/local/bin&lt;br /&gt;
MODDIR=/usr/local/share/fhem&lt;br /&gt;
VARDIR=/var/log/fhem&lt;br /&gt;
DOCDIR=/usr/local/share/doc/fhem&lt;br /&gt;
MANDIR=/usr/local/share/man/man1&lt;br /&gt;
ETCDIR=/usr/local/etc&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Open the OS X Terminal Application and execute the following command:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo make install-pgm2&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Comment fhainz:&lt;br /&gt;
&lt;br /&gt;
sudo make install-pgm2 won&#039;t work. --&amp;gt; &#039;&#039;&#039;make: *** No rule to make target `install-pgm2&#039;.  Stop.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This &lt;br /&gt;
&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;sudo make install&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
works on OSX 10.9.1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Modify fhem.cfg ===&lt;br /&gt;
You have to modify the main configuration file on your personal effort. &lt;br /&gt;
There are many samples an descriptions on the web...&lt;br /&gt;
&lt;br /&gt;
== Run Fhem ==&lt;br /&gt;
To make sure that Fhem Server is starting on every Reboot, just place a start script under /Library/StartupItems.&lt;br /&gt;
&lt;br /&gt;
Create a startup script:&lt;br /&gt;
&lt;br /&gt;
=== Launchd ===&lt;br /&gt;
The more modern way would be to create a lauch daemon like the following example.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;!DOCTYPE plist PUBLIC &amp;quot;-//Apple Computer//DTD PLIST 1.0//EN&amp;quot;&lt;br /&gt;
    &amp;quot;[http://www.apple.com/DTDs/PropertyList-1.0.dtd http://www.apple.com/DTDs/PropertyList-1.0.dtd]&amp;quot;&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;plist version=&amp;quot;1.0&amp;quot;&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;dict&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;key&amp;amp;gt;Label&amp;amp;lt;/key&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;string&amp;amp;gt;de.fhemwiki.fhem&amp;amp;lt;/string&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;key&amp;amp;gt;ProgramArguments&amp;amp;lt;/key&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;array&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;string&amp;amp;gt;/usr/bin/perl&amp;amp;lt;/string&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;string&amp;amp;gt;/usr/local/bin/fhem.pl&amp;amp;lt;/string&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;string&amp;amp;gt;/usr/local/etc/fhem.cfg&amp;amp;lt;/string&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;/array&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;key&amp;amp;gt;RunAtLoad&amp;amp;lt;/key&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;true/&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;key&amp;amp;gt;UserName&amp;amp;lt;/key&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;string&amp;amp;gt;YOURUSERNAMETORUNFHEM&amp;amp;lt;/string&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/dict&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/plist&amp;amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Save this to a file named de.fhemwiki.fhem.plist in the directory /Library/LaunchDaemons/&lt;br /&gt;
For this to work, you must add &amp;quot;attr global nofork 1&amp;quot; to fhem.cfg.&lt;br /&gt;
&lt;br /&gt;
You might run into some permission problems if not running fhem as &amp;quot;root&amp;quot;, but running as root is not a good idea, so go out and fix the file permissions for the user fhem runs as.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
[[Kategorie:OSX]]&lt;/div&gt;</summary>
		<author><name>Fhainz</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=ReadingsGroup&amp;diff=4243</id>
		<title>ReadingsGroup</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=ReadingsGroup&amp;diff=4243"/>
		<updated>2014-01-03T17:03:13Z</updated>

		<summary type="html">&lt;p&gt;Fhainz: /* Beispiele */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SEITENTITEL:readingsGroup}}&lt;br /&gt;
Das Fhem-[[:Kategorie:Hilfsmodul|Hilfsmodul]] &#039;&#039;&#039;readingsGroup[http://fhem.de/commandref.html#readingsGroup ]&#039;&#039;&#039; 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;
== Beispiele ==&lt;br /&gt;
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.     &lt;br /&gt;
{| class=&amp;quot;wikitable zebra hintergrundfarbe5&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 Überschrift 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;
{| class=&amp;quot;wikitable zebra hintergrundfarbe5&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 .*:[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=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 valueFormat {($VALUE eq &#039;ok&#039;)?&amp;quot;batterie&amp;quot;:&amp;quot;batterie\@red&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
| Ein reading Wert ok wird auf das Icon &#039;batterie&#039; gemapped, jeder andere Wert auf das gleiche icon in rot.&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;
{| class=&amp;quot;wikitable zebra hintergrundfarbe5&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;
{| class=&amp;quot;wikitable zebra hintergrundfarbe5&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 readingGroup 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;
{| class=&amp;quot;wikitable zebra hintergrundfarbe5&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.&amp;lt;br&amp;gt; &#039;&#039;&#039;Achtung&#039;&#039;&#039;: internal values 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;
{| class=&amp;quot;wikitable zebra hintergrundfarbe5&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.&amp;lt;br&amp;gt; &#039;&#039;&#039;Achtung&#039;&#039;&#039;: internal values werden nicht per longpoll aktualisiert sondern nur beim Seitenaufbau.&lt;br /&gt;
| rowspan=1 | [[Datei:rgculRSSI2.png|thumb]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable zebra hintergrundfarbe5&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;
{| class=&amp;quot;wikitable zebra hintergrundfarbe5&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;
{| class=&amp;quot;wikitable zebra hintergrundfarbe5&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 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;
| rowspan=7 | [[Datei:rgVerbrauchPCA301.png|thumb]]&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;
{| class=&amp;quot;wikitable zebra hintergrundfarbe5&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 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;
| rowspan=7 | [[Datei:TemperaturenRG.png|thumb]]&lt;br /&gt;
[[Datei:TemperaturenRG2.png|thumb]]&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;
{| class=&amp;quot;wikitable zebra hintergrundfarbe5&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 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;
| rowspan=9 | [[Datei:ReceiverRG.jpg|thumb]]&lt;br /&gt;
[[Datei:ReceiverRGmute.jpg|thumb]]&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;nbsp;&amp;lt;/code&amp;gt;&lt;br /&gt;
| mapping wird auf &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;
| &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($$$)&amp;lt;br&amp;gt;&lt;br /&gt;
{&amp;lt;br&amp;gt;&lt;br /&gt;
  my $DEVICE = shift;&amp;lt;br&amp;gt;&lt;br /&gt;
  my $READING = shift;&amp;lt;br&amp;gt;&lt;br /&gt;
  my $VALUE = shift;&amp;lt;br&amp;gt;&lt;br /&gt;
  &amp;lt;br&amp;gt;&lt;br /&gt;
  if($READING eq &#039;hdd1_capacity&#039;) &amp;lt;br&amp;gt;&lt;br /&gt;
  { &lt;br /&gt;
    return &amp;quot;%.2f MB&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
  }&amp;lt;br&amp;gt;&lt;br /&gt;
  elsif( $READING eq &#039;hdd1_free&#039;)&amp;lt;br&amp;gt;&lt;br /&gt;
  {&amp;lt;br&amp;gt;&lt;br /&gt;
    return &amp;quot;%.2f MB&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
  } &amp;lt;br&amp;gt;&lt;br /&gt;
  elsif( $READING eq &#039;volume&#039; )&amp;lt;br&amp;gt;&lt;br /&gt;
  {&amp;lt;br&amp;gt;&lt;br /&gt;
    if( ReadingsVal($DEVICE, &amp;quot;mute&amp;quot;, &amp;quot;&amp;quot;) eq &amp;quot;on&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
    { &amp;lt;br&amp;gt;&lt;br /&gt;
      return &amp;quot;mute&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
    }&amp;lt;br&amp;gt;&lt;br /&gt;
    else&amp;lt;br&amp;gt;&lt;br /&gt;
    { &amp;lt;br&amp;gt;&lt;br /&gt;
      return &amp;quot;%i %%&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
    }&amp;lt;br&amp;gt;&lt;br /&gt;
  }&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;/code&amp;gt;&lt;br /&gt;
| Dieser Teil kommt in die [[99_myUtils.pm]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== links und trigger ==&lt;br /&gt;
[[Datei:rgPCA-detail.png|mini|hochkant=1.5|readingGroup mit link]]&lt;br /&gt;
Das PCA301 Beispiel oben lässt sich mit einem ans Ende des define angehängten &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; 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. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define clearVerbrauch notify Verbrauch:clear set TYPE=PCA301 clear&lt;br /&gt;
&amp;lt;/pre&amp;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;
Noch ein Beispiel für &#039;custom links und trigger&#039; findet sich [http://forum.fhem.de/index.php/topic,14425.msg109383.html#msg109383 im 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;
&lt;br /&gt;
Mit &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; 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:Hilfsmodul]]&lt;/div&gt;</summary>
		<author><name>Fhainz</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=ReadingsGroup&amp;diff=4242</id>
		<title>ReadingsGroup</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=ReadingsGroup&amp;diff=4242"/>
		<updated>2014-01-03T16:59:27Z</updated>

		<summary type="html">&lt;p&gt;Fhainz: /* Beispiele */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SEITENTITEL:readingsGroup}}&lt;br /&gt;
Das Fhem-[[:Kategorie:Hilfsmodul|Hilfsmodul]] &#039;&#039;&#039;readingsGroup[http://fhem.de/commandref.html#readingsGroup ]&#039;&#039;&#039; 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;
== Beispiele ==&lt;br /&gt;
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.     &lt;br /&gt;
{| class=&amp;quot;wikitable zebra hintergrundfarbe5&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 Überschrift 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;
{| class=&amp;quot;wikitable zebra hintergrundfarbe5&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 .*:[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=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 valueFormat {($VALUE eq &#039;ok&#039;)?&amp;quot;batterie&amp;quot;:&amp;quot;batterie\@red&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
| Ein reading Wert ok wird auf das Icon &#039;batterie&#039; gemapped, jeder andere Wert auf das gleiche icon in rot.&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;
{| class=&amp;quot;wikitable zebra hintergrundfarbe5&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;
{| class=&amp;quot;wikitable zebra hintergrundfarbe5&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 readingGroup 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;
{| class=&amp;quot;wikitable zebra hintergrundfarbe5&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.&amp;lt;br&amp;gt; &#039;&#039;&#039;Achtung&#039;&#039;&#039;: internal values 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;
{| class=&amp;quot;wikitable zebra hintergrundfarbe5&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.&amp;lt;br&amp;gt; &#039;&#039;&#039;Achtung&#039;&#039;&#039;: internal values werden nicht per longpoll aktualisiert sondern nur beim Seitenaufbau.&lt;br /&gt;
| rowspan=1 | [[Datei:rgculRSSI2.png|thumb]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable zebra hintergrundfarbe5&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;
{| class=&amp;quot;wikitable zebra hintergrundfarbe5&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;
{| class=&amp;quot;wikitable zebra hintergrundfarbe5&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 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;
| rowspan=7 | [[Datei:rgVerbrauchPCA301.png|thumb]]&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;
{| class=&amp;quot;wikitable zebra hintergrundfarbe5&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 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;
| rowspan=7 | [[Datei:TemperaturenRG.png|thumb]]&lt;br /&gt;
[[Datei:TemperaturenRG2.png|thumb]]&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;
{| class=&amp;quot;wikitable zebra hintergrundfarbe5&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 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;
| rowspan=9 | [[Datei:ReceiverRG.jpg|thumb]]&lt;br /&gt;
[[Datei:ReceiverRGmute.jpg|thumb]]&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;nbsp;&amp;lt;/code&amp;gt;&lt;br /&gt;
| mapping wird auf &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;
| &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($$$)&amp;lt;br&amp;gt;&lt;br /&gt;
{&amp;lt;br&amp;gt;&lt;br /&gt;
  my $DEVICE = shift;&amp;lt;br&amp;gt;&lt;br /&gt;
  my $READING = shift;&amp;lt;br&amp;gt;&lt;br /&gt;
  my $VALUE = shift;&amp;lt;br&amp;gt;&lt;br /&gt;
  &amp;lt;br&amp;gt;&lt;br /&gt;
  if($READING eq &#039;hdd1_capacity&#039;) &amp;lt;br&amp;gt;&lt;br /&gt;
  { &lt;br /&gt;
    return &amp;quot;%.2f MB&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
  }&amp;lt;br&amp;gt;&lt;br /&gt;
  elsif( $READING eq &#039;hdd1_free&#039;)&amp;lt;br&amp;gt;&lt;br /&gt;
  {&amp;lt;br&amp;gt;&lt;br /&gt;
    return &amp;quot;%.2f MB&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
  } &amp;lt;br&amp;gt;&lt;br /&gt;
  elsif( $READING eq &#039;volume&#039; )&amp;lt;br&amp;gt;&lt;br /&gt;
  {&amp;lt;br&amp;gt;&lt;br /&gt;
    if( ReadingsVal($DEVICE, &amp;quot;mute&amp;quot;, &amp;quot;&amp;quot;) eq &amp;quot;on&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
    { &amp;lt;br&amp;gt;&lt;br /&gt;
      return &amp;quot;mute&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
    }&amp;lt;br&amp;gt;&lt;br /&gt;
    else&amp;lt;br&amp;gt;&lt;br /&gt;
    { &amp;lt;br&amp;gt;&lt;br /&gt;
      return &amp;quot;%i %%&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
    }&amp;lt;br&amp;gt;&lt;br /&gt;
  }&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;/code&amp;gt;&lt;br /&gt;
| Dieser Teil kommt in die [[99_myUtils.pm]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== links und trigger ==&lt;br /&gt;
[[Datei:rgPCA-detail.png|mini|hochkant=1.5|readingGroup mit link]]&lt;br /&gt;
Das PCA301 Beispiel oben lässt sich mit einem ans Ende des define angehängten &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; 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. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define clearVerbrauch notify Verbrauch:clear set TYPE=PCA301 clear&lt;br /&gt;
&amp;lt;/pre&amp;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;
Noch ein Beispiel für &#039;custom links und trigger&#039; findet sich [http://forum.fhem.de/index.php/topic,14425.msg109383.html#msg109383 im 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;
&lt;br /&gt;
Mit &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; 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:Hilfsmodul]]&lt;/div&gt;</summary>
		<author><name>Fhainz</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:ReceiverRGmute.jpg&amp;diff=4241</id>
		<title>Datei:ReceiverRGmute.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:ReceiverRGmute.jpg&amp;diff=4241"/>
		<updated>2014-01-03T16:29:14Z</updated>

		<summary type="html">&lt;p&gt;Fhainz: receiver readingsGroup mit 70_ENIGMA2.pm Modul - mute&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;receiver readingsGroup mit 70_ENIGMA2.pm Modul - mute&lt;/div&gt;</summary>
		<author><name>Fhainz</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:ReceiverRG.jpg&amp;diff=4240</id>
		<title>Datei:ReceiverRG.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:ReceiverRG.jpg&amp;diff=4240"/>
		<updated>2014-01-03T16:28:44Z</updated>

		<summary type="html">&lt;p&gt;Fhainz: receiver readingsGroup mit 70_ENIGMA2.pm Modul&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;receiver readingsGroup mit 70_ENIGMA2.pm Modul&lt;/div&gt;</summary>
		<author><name>Fhainz</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=ReadingsGroup&amp;diff=3996</id>
		<title>ReadingsGroup</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=ReadingsGroup&amp;diff=3996"/>
		<updated>2013-12-22T18:12:15Z</updated>

		<summary type="html">&lt;p&gt;Fhainz: /* Beispiele */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SEITENTITEL:readingsGroup}}&lt;br /&gt;
Das Fhem-[[:Kategorie:Hilfsmodul|Hilfsmodul]] &#039;&#039;&#039;readingsGroup[http://fhem.de/commandref.html#readingsGroup ]&#039;&#039;&#039; 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;
== Beispiele ==&lt;br /&gt;
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.     &lt;br /&gt;
{| class=&amp;quot;wikitable zebra hintergrundfarbe5&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 Überschrift 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;
{| class=&amp;quot;wikitable zebra hintergrundfarbe5&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 .*:[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=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 valueFormat {($VALUE eq &#039;ok&#039;)?&amp;quot;batterie&amp;quot;:&amp;quot;batterie\@red&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
| Ein reading Wert ok wird auf das Icon &#039;batterie&#039; gemapped, jeder andere Wert auf das gleiche icon in rot.&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;
{| class=&amp;quot;wikitable zebra hintergrundfarbe5&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;
{| class=&amp;quot;wikitable zebra hintergrundfarbe5&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 readingGroup 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;
{| class=&amp;quot;wikitable zebra hintergrundfarbe5&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 mit der zugehörigen zeit aller Devices die einen solchen haben. &amp;lt;br&amp;gt; &#039;&#039;&#039;Achtung&#039;&#039;&#039;: internal values 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;
{| class=&amp;quot;wikitable zebra hintergrundfarbe5&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 aller Devices die einen solchen haben. &amp;lt;br&amp;gt; &#039;&#039;&#039;Achtung&#039;&#039;&#039;: internal values werden nicht per longpoll aktualisiert sondern nur beim Seitenaufbau.&lt;br /&gt;
| rowspan=1 | [[Datei:rgculRSSI2.png|thumb]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable zebra hintergrundfarbe5&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;
{| class=&amp;quot;wikitable zebra hintergrundfarbe5&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;
{| class=&amp;quot;wikitable zebra hintergrundfarbe5&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 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;
| rowspan=7 | [[Datei:rgVerbrauchPCA301.png|thumb]]&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;
{| class=&amp;quot;wikitable zebra hintergrundfarbe5&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 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;
| rowspan=7 | [[Datei:TemperaturenRG.png|thumb]]&lt;br /&gt;
[[Datei:TemperaturenRG2.png|thumb]]&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;
== links und trigger ==&lt;br /&gt;
[[Datei:rgPCA-detail.png|mini|hochkant=1.5|readingGroup mit link]]&lt;br /&gt;
Das PCA301 Beispiel oben lässt sich mit einem ans Ende des define angehängten &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; 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. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define clearVerbrauch notify Verbrauch:clear set TYPE=PCA301 clear&lt;br /&gt;
&amp;lt;/pre&amp;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;
Noch ein Beispiel für &#039;custom links und trigger&#039; findet sich [http://forum.fhem.de/index.php/topic,14425.msg109383.html#msg109383 im 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;
&lt;br /&gt;
Mit &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; 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:Hilfsmodul]]&lt;/div&gt;</summary>
		<author><name>Fhainz</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:TemperaturenRG2.png&amp;diff=3995</id>
		<title>Datei:TemperaturenRG2.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:TemperaturenRG2.png&amp;diff=3995"/>
		<updated>2013-12-22T18:10:24Z</updated>

		<summary type="html">&lt;p&gt;Fhainz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Fhainz</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=ReadingsGroup&amp;diff=3984</id>
		<title>ReadingsGroup</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=ReadingsGroup&amp;diff=3984"/>
		<updated>2013-12-22T11:38:34Z</updated>

		<summary type="html">&lt;p&gt;Fhainz: /* Beispiele */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SEITENTITEL:readingsGroup}}&lt;br /&gt;
Das Fhem-[[:Kategorie:Hilfsmodul|Hilfsmodul]] &#039;&#039;&#039;readingsGroup[http://fhem.de/commandref.html#readingsGroup ]&#039;&#039;&#039; 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;
== Beispiele ==&lt;br /&gt;
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.     &lt;br /&gt;
{| class=&amp;quot;wikitable zebra hintergrundfarbe5&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 Überschrift 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;
{| class=&amp;quot;wikitable zebra hintergrundfarbe5&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 .*:[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=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 valueFormat {($VALUE eq &#039;ok&#039;)?&amp;quot;batterie&amp;quot;:&amp;quot;batterie\@red&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
| Ein reading Wert ok wird auf das Icon &#039;batterie&#039; gemapped, jeder andere Wert auf das gleiche icon in rot.&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;
{| class=&amp;quot;wikitable zebra hintergrundfarbe5&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;
{| class=&amp;quot;wikitable zebra hintergrundfarbe5&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 readingGroup 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;
{| class=&amp;quot;wikitable zebra hintergrundfarbe5&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 mit der zugehörigen zeit aller Devices die einen solchen haben. &amp;lt;br&amp;gt; &#039;&#039;&#039;Achtung&#039;&#039;&#039;: internal values 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;
{| class=&amp;quot;wikitable zebra hintergrundfarbe5&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 aller Devices die einen solchen haben. &amp;lt;br&amp;gt; &#039;&#039;&#039;Achtung&#039;&#039;&#039;: internal values werden nicht per longpoll aktualisiert sondern nur beim Seitenaufbau.&lt;br /&gt;
| rowspan=1 | [[Datei:rgculRSSI2.png|thumb]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable zebra hintergrundfarbe5&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;
{| class=&amp;quot;wikitable zebra hintergrundfarbe5&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;
{| class=&amp;quot;wikitable zebra hintergrundfarbe5&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 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;
| rowspan=7 | [[Datei:rgVerbrauchPCA301.png|thumb]]&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;
{| class=&amp;quot;wikitable zebra hintergrundfarbe5&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 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;
| rowspan=7 | [[Datei:TemperaturenRG.png|thumb]]&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;
== links und trigger ==&lt;br /&gt;
[[Datei:rgPCA-detail.png|mini|hochkant=1.5|readingGroup mit link]]&lt;br /&gt;
Das PCA301 Beispiel oben lässt sich mit einem ans Ende des define angehängten &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; 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. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define clearVerbrauch notify Verbrauch:clear set TYPE=PCA301 clear&lt;br /&gt;
&amp;lt;/pre&amp;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;
Noch ein Beispiel für &#039;custom links und trigger&#039; findet sich [http://forum.fhem.de/index.php/topic,14425.msg109383.html#msg109383 im 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;
&lt;br /&gt;
Mit &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; 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:Hilfsmodul]]&lt;/div&gt;</summary>
		<author><name>Fhainz</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:TemperaturenRG.png&amp;diff=3983</id>
		<title>Datei:TemperaturenRG.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:TemperaturenRG.png&amp;diff=3983"/>
		<updated>2013-12-22T11:36:13Z</updated>

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