<?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=Waschto</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=Waschto"/>
	<link rel="alternate" type="text/html" href="http://wiki.fhem.de/wiki/Spezial:Beitr%C3%A4ge/Waschto"/>
	<updated>2026-04-12T17:40:48Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=FHEM_Tablet_UI&amp;diff=23259</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=23259"/>
		<updated>2017-11-12T11:41:03Z</updated>

		<summary type="html">&lt;p&gt;Waschto: Link zur einer FHEM und TabletUI Live-Demo hinzugefü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;
[[FHEM Tablet UI]] (FTUI) ist ein leichtgewichtiges aber funktionsreiches Frontend-Framework zum Steuern und Überwachen von in FHEM integrierten Geräten. Es basiert auf HTML/CSS/JavaScript und stellt somit keine zusätzlichen Anforderungen an den FHEM-Server.&lt;br /&gt;
&lt;br /&gt;
Mit Hilfe zahlreicher Widgets, die sehr leicht mit HTML Code konfiguriert werden können, ist es möglich, innerhalb kurzer Zeit ein den eigenen Wünschen entsprechendes User-Interface aufzubauen.&lt;br /&gt;
&lt;br /&gt;
Für den Betrieb ist nur eine FHEM-Installation mit [[HTTPSRV|HTTPSRV-Modul]] sowie ein gängiger Webbrowser notwendig.&lt;br /&gt;
&lt;br /&gt;
Mit wenigen Anpassungen ist es auch möglich das UI auf anderen Webservern (Apache, u.a.) zu betreiben. Somit können FHEM und FHEM Tablet UI auch auf getrennten Systemen ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
[[File:tablet_ui.png|thumb|500px|center|Beispiel für ein mit [[FHEM Tablet UI]] erstelltes User-Interface]]&lt;br /&gt;
&lt;br /&gt;
{{Todo|Design-Möglichkeiten erklären, Navigationsmethoden ausformulieren}} &lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Die Installation von FHEM Tablet UI erzeugt keinen großen Aufwand und besteht im Großen und Ganzen aus drei Schritten:&lt;br /&gt;
*Dateien aus dem GitHub-Repository herunterladen&lt;br /&gt;
*FHEM konfigurieren ([[HTTPSRV]]-Device erstellen, [[FHEMWEB]]-Attribut longpoll einstellen)&lt;br /&gt;
*Eine Beispieldatei anlegen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Hinweis|Diese Anleitung geht davon aus, dass FHEM unter Debian nach der Anleitung [https://debian.fhem.de Stable build using apt] installiert wurde.&lt;br /&gt;
Ist dies nicht der Fall, muss der Pfad &#039;&#039;&#039;/opt/fhem&#039;&#039;&#039; dementsprechend angepasst werden.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.&#039;&#039;&#039; Zuerst müssen alle Dateien von FHEM Tablet UI in das FHEM-Verzeichnis &#039;&#039;&#039;/opt/fhem/www&#039;&#039;&#039; kopiert werden. Das geht mit folgendem &#039;&#039;&#039;update&#039;&#039;&#039;-Befehl über die FHEM-Befehlszeile.&lt;br /&gt;
:&amp;lt;code&amp;gt;update all https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:[[Datei:FTUI_Installation_01.png|thumb|none|Schritt 1: Dateien kopieren]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2.&#039;&#039;&#039; Anschließend ist ein neues [[HTTPSRV]]-Device in FHEM anzulegen, welches auf den Ordner mit den gerade heruntergeladenen Dateien verweist.&lt;br /&gt;
:&amp;lt;code&amp;gt;define TABLETUI HTTPSRV ftui/ ./www/tablet/ Tablet-UI&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:[[Datei:FTUI_Installation_02.png|thumb|none|Schritt 2: HTTPSRV-Device anlegen]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3.&#039;&#039;&#039; Damit FHEM Tablet UI mit FHEM kommunizieren kann, ist noch die &#039;&#039;&#039;longpoll&#039;&#039;&#039;-Einstellung im [[FHEMWEB]] Device festzulegen.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;attr WEB longpoll websocket&amp;lt;/code&amp;gt;&lt;br /&gt;
:bzw. bei Problemen mit &#039;&#039;websocket&#039;&#039;&lt;br /&gt;
:&amp;lt;code&amp;gt;attr WEB longpoll 1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:[[Datei:FTUI_Installation_03.png|thumb|none|Schritt 3: longpoll einstellen]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4.&#039;&#039;&#039; Weil FTUI noch nichts anzuzeigen hat, wird die Datei &#039;&#039;&#039;/opt/fhem/www/tablet/index-example.html&#039;&#039;&#039; nach &#039;&#039;&#039;/opt/fhem/www/tablet/index.html&#039;&#039;&#039; kopiert.&lt;br /&gt;
:&amp;lt;code&amp;gt;sudo cp -a /opt/fhem/www/tablet/index-example.html /opt/fhem/www/tablet/index.html&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:[[Datei:FTUI_Installation_04.png|thumb|none|Schritt 4: index.html erstellen]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;5.&#039;&#039;&#039; Abschließend muss FHEM noch &#039;&#039;&#039;neu gestartet&#039;&#039;&#039; werden (&#039;&#039;shutdown restart&#039;&#039;) da das Attribut &#039;&#039;&#039;longpoll&#039;&#039;&#039; geändert wurde.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Somit ist FHEM Tablet UI bereit zur Verwendung und kann durch Aufruf der URL &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;http://&amp;lt;fhem-server&amp;gt;:8083/fhem/ftui&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039; oder den Link im FHEM-Menü geöffnet werden&lt;br /&gt;
&lt;br /&gt;
== Update ==&lt;br /&gt;
Ein Update von FTUI kann ebenfalls über die FHEM-Kommandozeile erfolgen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.&#039;&#039;&#039; Prüfen der Änderungen seit dem letzten Download/Update durch Eingabe von:&lt;br /&gt;
:&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;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2.&#039;&#039;&#039; Update der geänderten Dateien durch Eingabe von:&lt;br /&gt;
:&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;
&lt;br /&gt;
Eine weitere Option ist das Hinzufügen des FTUI-Git-Repositories zum allgemeinem Update-Vorgang von FHEM. Dabei wird dann bei einem FHEM-Update auch gleich FHEM Tablet UI aktualisiert, bzw. die Änderungen angezeigt.&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;
&lt;br /&gt;
== Konfiguration ==&lt;br /&gt;
===DOCTYPE===&lt;br /&gt;
In allen HTML-Dateien, die im Browser geladen werden und das typische HTML-Gerüst besitzen (also alle Hauptseiten, jedoch keine Template-Dateien), sollte eine DOCTYPE-Deklaration eingefügt werden. Mit ihr wird festgelegt, in welcher Version der nachfolgende HTML-Code vom Browser interpretiert werden soll. Lässt man sie weg, oder definiert sie auf verschiedenen Seiten unterschiedlich, kann ein und der selbe HTML-Code zu unterschiedlichen Darstellungen führen. Die DOCTYPE-Deklaration erfolgt immer auch der ersten Zeile, noch vor dem &amp;lt;code&amp;gt;&amp;lt;html&amp;gt;&amp;lt;/code&amp;gt;-Tag. Nachfolgend wird HTML5 verwendet.&lt;br /&gt;
&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;...&amp;lt;/head&amp;gt;&lt;br /&gt;
    &amp;lt;body&amp;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;
===META-Parameter===&lt;br /&gt;
Das Tablet UI lässt sich über die META-Parameter konfigurieren. Diese Parameter sind in jeder &#039;&#039;&#039;.html&#039;&#039;&#039; Datei (z.B. index.html) im Abschnitt &#039;&#039;&#039;&amp;lt;head&amp;gt;&#039;&#039;&#039; einzutragen. Ausgenommen davon sind Dateien, die als Template, Pagebutton-Zielseiten oder ähnliches eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
Die Parameter sind immer nach diesem Schema aufgebaut:&lt;br /&gt;
 &amp;lt;meta name=&amp;quot;[Parameter-Name]&amp;quot; content=&amp;quot;[Parameter-Wert]&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Verbindung zu FHEM===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Parameter-Name!!Standard-Wert!!Mögliche Werte!!Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|web_device||WEB||String||FHEM-Device, welches für das Polling verwendet wird&lt;br /&gt;
|-&lt;br /&gt;
|longpoll||1||0, 1||&lt;br /&gt;
&#039;&#039;&#039;0&#039;&#039;&#039;: Longpoll deaktiviert; alle 30s ein Shortpoll (Neuladen der gesamten Statusänderungen)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1&#039;&#039;&#039;: Longpoll aktiv; geänderte Stati werden sofort aktualisiert, zusätzlich werden alle 15min die gesamten Statusänderungen geladen.&lt;br /&gt;
|-&lt;br /&gt;
|longpoll_type||websocket||websocket, ajax, 0||&lt;br /&gt;
&#039;&#039;&#039;websocket&#039;&#039;&#039;: Für die Aktualisierung der Daten wird das Websocket-Protokoll verwendet. Werden vom Browser keine Websockets unterstützt, gibt es einen automatischen Fallback auf Ajax.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ajax&#039;&#039;&#039;: Ajax wird für die Aktualisierung verwendet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0&#039;&#039;&#039;: Longpoll deaktiviert, Shortpoll wird verwendet.&lt;br /&gt;
|-&lt;br /&gt;
|longpoll_filter||.*||RegEx||Event-Filter. Kann verwendet werden, wenn z.B. Devices, die in FTUI angezeigt werden, in einem eigenen FHEM-Room sind.&lt;br /&gt;
|-&lt;br /&gt;
|longpoll_maxage||240||Integer||Kommen in diesem Zeitraum (Sekunden) keine Longpoll-Events bei FTUI an, wird die Verbindung als &amp;quot;disconnected&amp;quot; angesehen und ein neuer Verbindungsversuch wird gestartet.&lt;br /&gt;
|-&lt;br /&gt;
|shortpoll_interval||900||Integer||Zeitraum in Sekunden, nach dem ein vollständiger Refresh stattfindet&lt;br /&gt;
|-&lt;br /&gt;
|shortpoll_only_interval||30||Integer||Zeitraum in Sekunden, nach dem ein vollständiger Refresh stattfindet, sollte Longpoll deaktiviert sein&lt;br /&gt;
|-&lt;br /&gt;
|fhemweb_url||/fhem/||Integer||URL zu FHEM. Wird benötigt wenn FTUI auf einem anderen als dem FHEM Server läuft oder nicht im Standard-Pfad installiert ist. &lt;br /&gt;
Hinweis: Wenn FHEM auf einem anderem Server/Domain läuft muss man das &amp;quot;CORS&amp;quot; Attribut im FHEMWEB Modul (s.o.) auf 1 setzen, sonst bekommt man Cross Origin Fehler. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Funktionalität===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Parameter-Name!!Standard-Wert!!Mögliche Werte!!Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|debug||0||0 - 5||Log-Level&lt;br /&gt;
|-&lt;br /&gt;
|toast||5||Integer||Anzahl an gleichzeitig angezeigten Toast-Nachrichten. Um keine anzuzeigen, ist der Wert auf 0 zu setzen.&lt;br /&gt;
|-&lt;br /&gt;
|toast_position||bottom-left||||Position im Browserfenster, wo die Toast-Nachrichten angezeigt werden.&lt;br /&gt;
|-&lt;br /&gt;
|lang||de||de||Sprache der Oberfläche (für z.B. Datums-/Zeitfunktionen)&lt;br /&gt;
|-&lt;br /&gt;
|username||||String||Benutzername für eine Basic-Authentifierung *&lt;br /&gt;
|-&lt;br /&gt;
|password||||String||Passwort für eine Basic-Authentifizierung *&lt;br /&gt;
|}&lt;br /&gt;
&#039;&#039;&#039;*&#039;&#039;&#039; Derzeit wird die Basic-Authentifizierung in Kombination mit WebSockets nicht unterstützt. Die Verwendung von &#039;&#039;&#039;longpoll=1&#039;&#039;&#039; (ajax) ist daher notwendig.&lt;br /&gt;
&lt;br /&gt;
===Toast-Nachrichten===&lt;br /&gt;
[[Datei:Ftui_toast.png|thumb|Toast-Nachrichten]]&lt;br /&gt;
Tablet-UI liefert Informationen darüber, was im Moment gerade passiert. Das geschieht über Toast-Nachrichten, die in der Standardeinstellung unten links im Browser auftauchen.&lt;br /&gt;
&lt;br /&gt;
Wird beispielsweise ein Gerät eingeschaltet, so erscheint eine kleine Nachricht mit dem abgesetzten Befehl. Auch Fehlermeldungen und Statusinformationen werden angezeigt. Ob überhaupt und was konkret angezeigt wird, richtet sich nach dem eingestellten Debug-Level (siehe oben). Beim Debug-Level 5 werden alle Nachrichten angezeigt, bei 0 keine.&lt;br /&gt;
&lt;br /&gt;
Die Position der Toast-Nachrichten kann über den Meta-Tag &amp;lt;code&amp;gt;meta name=&#039;toast_position&#039;&amp;lt;/code&amp;gt; festgelegt werden. Für oben-mittig müsste folgender Code eingefügt werden:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;meta name=&#039;toast_position&#039; content=&#039;top-center&#039;&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Möglich sind folgende Positionen:&lt;br /&gt;
* &amp;lt;code&amp;gt;top-left&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;top-right&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;bottom-left&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;bottom-right&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;top-center&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;bottom-center&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;mid-center&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die maximale Anzahl an Nachrichten, die gleichzeitig angezeigt werden können, lässt sich mit &amp;lt;code&amp;gt;meta name=&#039;toast&#039;&amp;lt;/code&amp;gt; Sind maximal 2 Nachrichten gewünscht, muss folgender Meta-Tag gesetzt werden:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;meta name=&#039;toast&#039; content=&#039;2&#039;&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Navigationsmethoden==&lt;br /&gt;
{{Todo|Dieser Abschnitt dient derzeit lediglich als Sammlung von Stichpunkten und muss vollständig überarbeitet werden.}} &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Unterschied zwischen Pagetab und Pagebutton:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pagetab:&#039;&#039;&#039; Ganze Seite austauschen -&amp;gt; Menü muss auf jede Seite&lt;br /&gt;
[[FTUI_Widget_Pagetab]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pagebutton:&#039;&#039;&#039; Teil der Seite austauschen -&amp;gt; Menü nur in erster Seite&lt;br /&gt;
[[FTUI_Widget_Pagebutton]]&lt;br /&gt;
&lt;br /&gt;
==Gestaltung==&lt;br /&gt;
===Layout-Optionen===&lt;br /&gt;
* [[FTUI Layout Gridster|Gridster]]&lt;br /&gt;
* [[FTUI Layout Flex|Flex]]&lt;br /&gt;
* [[FTUI Layout Sheet|Tabelle]]&lt;br /&gt;
* [[FTUI Layout Row|Reihen]]&lt;br /&gt;
&lt;br /&gt;
=== Farben ===&lt;br /&gt;
Es besteht die Möglichkeit, die Farbwerte in hexadezimaler Form, als RGB-Wert oder mit dem Farbnamen anzugeben. Zum Beispiel: &lt;br /&gt;
&lt;br /&gt;
*HEX: #ADD8E6&lt;br /&gt;
*RBG: rgb(173, 216, 230)&lt;br /&gt;
*Namen: lightblue&lt;br /&gt;
&lt;br /&gt;
Knallige Farben wie &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color: #ff0000;&amp;quot;&amp;gt;#ff0000&amp;lt;/span&amp;gt;&#039;&#039;&#039; für Rot oder &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color: #00ff00;&amp;quot;&amp;gt;#00ff00&amp;lt;/span&amp;gt;&#039;&#039;&#039; für Grün sollten vermieden werden.&lt;br /&gt;
Es ist besser unterhalb von #D0 (208) für die Grundfarben zu bleiben.&lt;br /&gt;
&lt;br /&gt;
Empfohlene Farben sind z.B.:&lt;br /&gt;
&lt;br /&gt;
*Orange: &amp;lt;span style=&amp;quot;color: #aa6900;&amp;quot;&amp;gt;#aa6900&amp;lt;/span&amp;gt;&lt;br /&gt;
*Rot: &amp;lt;span style=&amp;quot;color: #ad3333;&amp;quot;&amp;gt;#ad3333&amp;lt;/span&amp;gt;&lt;br /&gt;
*Grün: &amp;lt;span style=&amp;quot;color: #32a054;&amp;quot;&amp;gt;#32a054&amp;lt;/span&amp;gt;&lt;br /&gt;
*Blau: &amp;lt;span style=&amp;quot;color: #6699FF;&amp;quot;&amp;gt;#6699FF&amp;lt;/span&amp;gt;&lt;br /&gt;
*Grau: &amp;lt;span style=&amp;quot;color: #8C8C8C;&amp;quot;&amp;gt;#8C8C8C&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hilfreich bei der Suche nach den Farbwerten ist zum Beispiel der Color-Picker auf dieser Seite: http://www.colorpicker.com. Für die Suche nach Farben, die einen guten Kontrast bilden, diese Webseite: http://vanisoft.pl/~lopuszanski/public/colors/&lt;br /&gt;
&lt;br /&gt;
Im Ordner &#039;&#039;css&#039;&#039; der FTUI Installation finden sich einige vorbereitete Farbschemas. Diese können mit einem zusätzlichen Eintrag im &amp;lt;nowiki&amp;gt;&amp;lt;head&amp;gt;&amp;lt;/nowiki&amp;gt;-Bereich der FTUI-Seite(n) aktiviert werden.&lt;br /&gt;
&lt;br /&gt;
Hier am Beispiel eines blauen Farbschemas:&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;head&amp;gt;&lt;br /&gt;
   [...]&lt;br /&gt;
   &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;/fhem/tablet/css/fhem-blue-ui.css&amp;quot; /&amp;gt;&lt;br /&gt;
   [...]&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Schema-Dateien ändern alle Widgets. Einzelne Widgets können durch Hinzufügen der jeweiligen [[#CSS-Klassen|CSS-Klasse]] geändert werden.&lt;br /&gt;
&lt;br /&gt;
===CSS-Styles===&lt;br /&gt;
Das Layout und das Aussehen des UI kann durch diverse vorgegebene CSS-Klassen beeinflusst werden. Die verfügbaren Klassen sind im Abschnitt [[#CSS-Klassen|CSS-Klassen]] aufgeführt.&lt;br /&gt;
&lt;br /&gt;
Soll das Aussehen des UI durch eigene CSS-Klassen oder durch Überschreiben der vorhandenen verändert werden, kann eine eigene CSS-Datei erstellt werden, die dann bei einem eventuellen Update von FTUI nicht überschrieben wird. Diese Datei muss den Dateinamen &#039;&#039;&#039;fhem-tablet-ui-user.css&#039;&#039;&#039; haben und im Ordner &#039;&#039;&#039;/fhem/tablet/css&#039;&#039;&#039; abgelegt werden. Sie wird dann beim Aufruf von FTUI automatisch mitgeladen.&lt;br /&gt;
&lt;br /&gt;
=== CSS-Klassen ===&lt;br /&gt;
Nicht alle Widgets unterstützen alle hier angegebenen Klassen. Welche genau unterstützt werden, kann auf der jeweiligen Widget-Seite nachgelesen werden.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: left;&amp;quot;|sheet/row/cell-Layout&lt;br /&gt;
|-&lt;br /&gt;
!class=&amp;quot;mw-collapsible-content&amp;quot;|Klasse!!Beschreibung&lt;br /&gt;
{{FTUI Klasse|sheet}}{{FTUI Klasse|row}}{{FTUI Klasse|cell}}{{FTUI Klasse|cell-1-x}}{{FTUI Klasse|cell-x}}{{FTUI Klasse|left-align}}{{FTUI Klasse|right-align}}{{FTUI Klasse|bottom-align}}{{FTUI Klasse|top-align}}{{FTUI Klasse|center-align}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: left;&amp;quot;|row/col-Layout&lt;br /&gt;
|-&lt;br /&gt;
!class=&amp;quot;mw-collapsible-content&amp;quot;|Klasse!!Beschreibung&lt;br /&gt;
{{FTUI Klasse|col}}{{FTUI Klasse|col-1-x}}{{FTUI Klasse|col-x}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: left;&amp;quot;|hbox/vbox-Layout&lt;br /&gt;
|-&lt;br /&gt;
!class=&amp;quot;mw-collapsible-content&amp;quot;|Klasse!!Beschreibung&lt;br /&gt;
{{FTUI Klasse|vbox}}{{FTUI Klasse|hbox}}{{FTUI Klasse|card}}{{FTUI Klasse|phone-width}}{{FTUI Klasse|full-height}}{{FTUI Klasse|full-width}}{{FTUI Klasse|grow-0}}{{FTUI Klasse|grow-1}}{{FTUI Klasse|grow-2}}{{FTUI Klasse|grow-x}}{{FTUI Klasse|items-top}}{{FTUI Klasse|items-center}}{{FTUI Klasse|items-bottom}}{{FTUI Klasse|items-space-between}}{{FTUI Klasse|items-space-around}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: left;&amp;quot;|Generelle Klassen für die Positionierung&lt;br /&gt;
|-&lt;br /&gt;
!class=&amp;quot;mw-collapsible-content&amp;quot;|Klasse!!Beschreibung&lt;br /&gt;
{{FTUI Klasse|inline}}{{FTUI Klasse|newline}}{{FTUI Klasse|top-space}}{{FTUI Klasse|top-space-2x}}{{FTUI Klasse|top-space-3x}}{{FTUI Klasse|left-space}}{{FTUI Klasse|left-space-2x}}{{FTUI Klasse|left-space-3x}}{{FTUI Klasse|right-space}}{{FTUI Klasse|right-space-2x}}{{FTUI Klasse|right-space-3x}}{{FTUI Klasse|top-narrow}}{{FTUI Klasse|top-narrow-2x}}{{FTUI Klasse|top-narrow-10}}{{FTUI Klasse|left-narrow}}{{FTUI Klasse|left-narrow-2x}}{{FTUI Klasse|left-narrow-3x}}{{FTUI Klasse|right-narrow}}{{FTUI Klasse|right-narrow-2x}}{{FTUI Klasse|right-narrow-3x}}{{FTUI Klasse|centered}}{{FTUI Klasse|wider}}{{FTUI Klasse|narrow}}{{FTUI Klasse|fullsize}}{{FTUI Klasse|compressed}}{{FTUI Klasse|height-narrow}}{{FTUI Klasse|w1x}}{{FTUI Klasse|w2x}}{{FTUI Klasse|w3x}}{{FTUI Klasse|maxw40}}{{FTUI Klasse|doublebox-v}}{{FTUI Klasse|doublebox-h}}{{FTUI Klasse|triplebox-v}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: left;&amp;quot;|Vordergrundfarben&lt;br /&gt;
|-&lt;br /&gt;
!class=&amp;quot;mw-collapsible-content&amp;quot;|Klasse!!Beschreibung&lt;br /&gt;
{{FTUI Klasse|red}}{{FTUI Klasse|green}}{{FTUI Klasse|blue}}{{FTUI Klasse|lightblue}}{{FTUI Klasse|orange}}{{FTUI Klasse|gray}}{{FTUI Klasse|lightgray}}{{FTUI Klasse|white}}{{FTUI Klasse|black}}{{FTUI Klasse|mint}}{{FTUI Klasse|yellow}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: left;&amp;quot;|Hintergrundfarben&lt;br /&gt;
|-&lt;br /&gt;
!class=&amp;quot;mw-collapsible-content&amp;quot;|Klasse!!Beschreibung&lt;br /&gt;
{{FTUI Klasse|bg-red}}{{FTUI Klasse|bg-green}}{{FTUI Klasse|bg-blue}}{{FTUI Klasse|bg-lightblue}}{{FTUI Klasse|bg-orange}}{{FTUI Klasse|bg-gray}}{{FTUI Klasse|bg-lightgray}}{{FTUI Klasse|bg-white}}{{FTUI Klasse|bg-black}}{{FTUI Klasse|bg-mint}}{{FTUI Klasse|bg-yellow}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: left;&amp;quot;|Rahmen&lt;br /&gt;
|-&lt;br /&gt;
!class=&amp;quot;mw-collapsible-content&amp;quot;|Klasse!!Beschreibung&lt;br /&gt;
{{FTUI Klasse|verticalLine}}{{FTUI Klasse|border-black}}{{FTUI Klasse|border-white}}{{FTUI Klasse|border-orange}}{{FTUI Klasse|border-red}}{{FTUI Klasse|border-green}}{{FTUI Klasse|border-mint}}{{FTUI Klasse|border-lightblue}}{{FTUI Klasse|border-blue}}{{FTUI Klasse|border-gray}}{{FTUI Klasse|border-yellow}}{{FTUI Klasse|border-lightgray}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: left;&amp;quot;|Größen&lt;br /&gt;
|-&lt;br /&gt;
!class=&amp;quot;mw-collapsible-content&amp;quot;|Klasse!!Beschreibung&lt;br /&gt;
{{FTUI Klasse|mini}}{{FTUI Klasse|tiny}}{{FTUI Klasse|small}}{{FTUI Klasse|normal}}{{FTUI Klasse|large}}{{FTUI Klasse|big}}{{FTUI Klasse|bigger}}{{FTUI Klasse|tall}}{{FTUI Klasse|great}}{{FTUI Klasse|grande}}{{FTUI Klasse|gigantic}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: left;&amp;quot;|Schriftstil&lt;br /&gt;
|-&lt;br /&gt;
!class=&amp;quot;mw-collapsible-content&amp;quot;|Klasse!!Beschreibung&lt;br /&gt;
{{FTUI Klasse|thin}}{{FTUI Klasse|bold}}{{FTUI Klasse|darker}}{{FTUI Klasse|truncate}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: left;&amp;quot;|Sonstiges&lt;br /&gt;
|-&lt;br /&gt;
!class=&amp;quot;mw-collapsible-content&amp;quot;|Klasse!!Beschreibung&lt;br /&gt;
{{FTUI Klasse|blank}}{{FTUI Klasse|transparent}}{{FTUI Klasse|half-transparent}}{{FTUI Klasse|blurry}}{{FTUI Klasse|shake}}{{FTUI Klasse|fail-shake}}{{FTUI Klasse|marquee}}{{FTUI Klasse|icon round}}{{FTUI Klasse|icon square}}{{FTUI Klasse|readonly}}{{FTUI Klasse|blink}}{{FTUI Klasse|rotate-90}}{{FTUI Klasse|horizontal}}{{FTUI Klasse|circleborder}}{{FTUI Klasse|autohide}}{{FTUI Klasse|notransmit}}{{FTUI Klasse|tab}}{{FTUI Klasse|FS20}}{{FTUI Klasse|value}}{{FTUI Klasse|novalue}}{{FTUI Klasse|timestamp}}{{FTUI Klasse|percent}}{{FTUI Klasse|nocache}}{{FTUI Klasse|fade}}{{FTUI Klasse|rotate}}{{FTUI Klasse|nolabels}}{{FTUI Klasse|default}}{{FTUI Klasse|prefetch}}{{FTUI Klasse|circulate}}{{FTUI Klasse|valueonly}}{{FTUI Klasse|positiononly}}{{FTUI Klasse|lineIndicator}}{{FTUI Klasse|barIndicator}}{{FTUI Klasse|roundIndicator}}{{FTUI Klasse|dim-tick}}{{FTUI Klasse|dim-front}}{{FTUI Klasse|dim-back}}{{FTUI Klasse|hue-tick}}{{FTUI Klasse|hue-front}}{{FTUI Klasse|hue-back}}{{FTUI Klasse|warn}}{{FTUI Klasse|activate}}{{FTUI Klasse|labelright}}{{FTUI Klasse|interlock}}{{FTUI Klasse|keepopen}}{{FTUI Klasse|noshade}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Icons ===&lt;br /&gt;
FTUI bringt einige Icons-&amp;quot;Schriftarten&amp;quot; mit, die für die Darstellung genützt werden können. Diese werden automatisch beim Start des UI eingebunden, sobald ein entsprechendes Icon-Präfix im Code der Seite vorkommt.&lt;br /&gt;
&lt;br /&gt;
Verfügbare Icon-Schriftarten sind:&lt;br /&gt;
* Eingebaute Icons &#039;&#039;ftui-windows&#039;&#039; und &#039;&#039;ftui-door&#039;&#039;. Präfix &#039;&#039;&#039;ftui-&#039;&#039;&#039;. Beispiel: &amp;lt;code&amp;gt;data-icon=&amp;quot;ftui-door&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* [http://fontawesome.io/icons/ Font-Awesome]: Mehr als 500 Icons zur Auswahl. Präfix &#039;&#039;&#039;fa-&#039;&#039;&#039;. Beispiel: &amp;lt;code&amp;gt;data-icon=&amp;quot;fa-volume-up&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* [https://material.io/icons/ Material Icons]: Mehr als 900 Icons zur Auswahl. Präfix &#039;&#039;&#039;mi-&#039;&#039;&#039;. Beispiel: &amp;lt;code&amp;gt;data-icon=&amp;quot;mi-local_gas_station&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* FHEM und OpenAutomation Icons: Präfix &#039;&#039;&#039;fs-&#039;&#039;&#039; und &#039;&#039;&#039;oa-&#039;&#039;&#039;. Beispiel: &amp;lt;code&amp;gt;data-icon=&amp;quot;oa-secur_locked&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* [https://erikflowers.github.io/weather-icons/ Weather-Icons]: Präfix &#039;&#039;&#039;wi-&#039;&#039;&#039;. Beispiel: &amp;lt;code&amp;gt;data-icon=&amp;quot;wi-day-rain-mix&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternativ können auch Bilder Icons (bspw. png) über CSS verwendet werden. Bspw:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
  &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
        .logo-fhem {&lt;br /&gt;
            background: url(https://wiki.fhem.de/fhemlogo.png) no-repeat;&lt;br /&gt;
            width: 120px;&lt;br /&gt;
            height: 132px;&lt;br /&gt;
            background-size: contain;&lt;br /&gt;
        }&lt;br /&gt;
  &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
  &amp;lt;div data-type=&amp;quot;symbol&amp;quot; data-icon=&amp;quot;logo-fhem&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Widgets ==&lt;br /&gt;
===Allgemeine Attribute===&lt;br /&gt;
Jedes Widget kann über verschiedene Attribute konfiguriert werden. Folgende Attribute gelten für alle Widgets:&lt;br /&gt;
&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;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Daten Empfangen&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get&lt;br /&gt;
|Reading Name&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get-on&lt;br /&gt;
|Wert für den Status on&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get-off&lt;br /&gt;
|Wert für den Status off&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Daten Senden&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-set&lt;br /&gt;
|Reading Name&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-set-on&lt;br /&gt;
|Wert für den Status on&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-set-off&lt;br /&gt;
|Wert für den Status off&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Widget-spezifische Attribute können auf der jeweiligen Widget-Seite nachgelesen werden.&lt;br /&gt;
&lt;br /&gt;
=== Integrierte Widgets ===&lt;br /&gt;
Folgende Widgets sind direkt in FHEM Tablet UI integriert und können &amp;quot;out of the box&amp;quot; verwendet werden.&lt;br /&gt;
&lt;br /&gt;
* [[FTUI Widget Button|button]]: Variante der push und switch Widgets, die entweder einen URL ansteuern oder einen FHEM-Befehl absetzen kann.&lt;br /&gt;
* [[FTUI Widget Checkbox|checkbox]]: Umschalter zwischen zwei definierten Zuständen&lt;br /&gt;
* [[FTUI Widget 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;
* [[FTUI Widget Clock|clock]]: Stellt eine einfach Uhr zur Verfügung.&lt;br /&gt;
* [[FTUI Widget Colorwheel|colorwheel]]: Farbpalette zur Auswahl von Farben&lt;br /&gt;
* [[FTUI Widget Controlbutton|controlbutton]]: iOS-ähnlicher Button um zwischen zwei Zuständen zu schalten (z.B. on / off)&lt;br /&gt;
* [[FTUI Widget Controller|controller]]: iOS-ähnlicher vertikaler Schieberegler um einen Wert einzustellen&lt;br /&gt;
* [[FTUI Widget Datetimepicker|datetimepicker]]: Erstellt eine Auswahl für Datum/Uhrzeit&lt;br /&gt;
* [[FTUI Widget Departure|departure]]: Abfahrtszeiten öffentlicher Verkehrsmittel&lt;br /&gt;
* [[FTUI Widget Dimmer|dimmer]]: Ein-/Aus-Button mit integriertem Schieberegler für z.B. einen Dim-Wert&lt;br /&gt;
* [[FTUI Widget Eventmonitor|eventmonitor]]:&lt;br /&gt;
* [[FTUI Widget Homestatus|homestatus]]: Auswahl für vier oder fünf definierte Stati eines Objects (z.B.: FHEM Residents)&lt;br /&gt;
* [[FTUI Widget Html|html]]:&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;
* [[FTUI Widget Image|image]]: Zeigt ein Bild, dessen URL fest vorgegeben oder aus einem Device-Reading gelesen werden kann.&lt;br /&gt;
* [[FTUI Widget Input|input]]: Erstellen eines Texteingabefeldes&lt;br /&gt;
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/joinedlabel joinedlabel]: verbindet mehrere Readings zu einem Feld&lt;br /&gt;
* [[FTUI Widget Klimatrend|klimatrend]]: wandelt Daten aus dem statistics-Modul in einen Pfeil um, der den aktuellen Trend anzeigt. &lt;br /&gt;
* [[FTUI Widget Knob|knob]]: Erstellt einen Statusbalken auf einer Kreisbahn&lt;br /&gt;
* [[FTUI Widget Label|label]]: Reading als Text anzeigen&lt;br /&gt;
* [[FTUI Widget Level|level]]: Vertikale oder horizontale Leiste zur Anzeige von Werten zwischen einem Minimal- und einem Maximalwert&lt;br /&gt;
* [[FTUI Widget Link|link]]: Erstellt einen Link oder Button zum Aufrufen von URLs oder Senden von Befehlen an FHEM&lt;br /&gt;
* [[FTUI Widget Medialist|medialist]]:&lt;br /&gt;
* [[FTUI Widget Multistatebutton|multistatebutton]]: Variante des push-Widgets, welches den set-Befehl abhängig vom gelesenen Status ändert.&lt;br /&gt;
* [[FTUI Widget Notify|notify]]: Blendet ein Hinweisfenster im Browser ein&lt;br /&gt;
* [[FTUI Widget Pagebutton|pagebutton]]: Button, mit dem auf andere Seiten gesprungen werden kann. Eignet sich gut für eine Navigation&lt;br /&gt;
* [[FTUI Widget Pagetab|pagetab]]: Tauscht den Inhalt einer Seite durch den einer anderen. Eignet sich gut für ein Navigationsmenü.&lt;br /&gt;
* [[FTUI Widget Playstream|playstream]]: Abspielen eines Webradio-Streams per Button&lt;br /&gt;
* [[FTUI Widget Popup|popup]]: Öffnet ein Popup nach einem Klick auf ein Widget oder HTML-Element &lt;br /&gt;
* [[FTUI Widget Progress|progress]]: Zeigt einen Prozentwert in Form einer runden Fortschrittsleiste&lt;br /&gt;
* [[FTUI_Widget_Push|push]]: Button, mir dem ein Befehl an FHEM gesendet werden kann.&lt;br /&gt;
* [[FTUI Widget Range|range]]: Erstellt vertikale Balken, die einen Wertebereich in unterschiedlichen Farben darstellen&lt;br /&gt;
* [[FTUI Widget Readingsgroup|readingsgroup]]: Zeigt eine Readingsgroup an, wie sie in FHEM definiert wurde&lt;br /&gt;
* [[FTUI Widget Rotor|rotor]]: Animiertes Umschalten von zwei oder mehr Widgets an einer Position&lt;br /&gt;
* [[FTUI_Widget_Select|select]]: Combobox, die eine Liste an Werten zur Auswahl anzeigt&lt;br /&gt;
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/settimer settimer]: Zum Anzeigen und Einstellen einer Uhrzeit.&lt;br /&gt;
* [[FTUI Widget Simplechart|simplechart]]: Einfaches XY-Diagramm zur Anzeige eines Wertes, der direkt aus einem FHEM-Logfile gelesen wird&lt;br /&gt;
* [[FTUI Widget Slideout|slideout]]:&lt;br /&gt;
* [[FTUI Widget Slider|slider]]: Vertikaler Schieberegler um einen Wert einzustellen&lt;br /&gt;
* [[FTUI Widget Spinner|spinner]]: Element um Werte durch Drücken auf Plus- und Minus- oder Höher-/Tiefer-Icons zu ändern&lt;br /&gt;
* [[FTUI Widget Swiper|swiper]]: Bietet die Möglichkeit, durch Wischen, zwischen verschiedenen Widgets zu wechseln&lt;br /&gt;
* [[FTUI Widget Switch|switch]]: Button um zwischen zwei Zuständen zu schalten (z.B. on / off)&lt;br /&gt;
* [[FTUI Widget Symbol|symbol]]: Status eines Devices als Symbol darstellen (z.B. Fenster offen)&lt;br /&gt;
* [[FTUI Widget Thermostat|thermostat]]: Anzeige für Heizungsthermostate, mit der die gewünschte Temperatur eingestellt werden kann&lt;br /&gt;
* [[FTUI Widget Volume|volume]]: Einstellscheibe zur Änderung eines einzelnen Wertes&lt;br /&gt;
* [[FTUI Widget Weather|weather]]: Wettersymbol anzeigen&lt;br /&gt;
* [[FTUI Widget WindDirection|wind_direction]]: Anzeige der Windrichtung auf einer Windrose&lt;br /&gt;
&lt;br /&gt;
===3rd Party Widgets===&lt;br /&gt;
Für diese Widgets kann nicht sichergestellt werden, dass sie mit der jeweils aktuellen Version von FTUI funktionieren.&lt;br /&gt;
* [[FTUI Widget Agenda|agenda]]: Zeigt Kalendereinträge in einer Listenform an&lt;br /&gt;
* [[FTUI Widget Calview|calview]]: Zeigt Einträge aus einem [[CALVIEW]]-Device an&lt;br /&gt;
* [[FTUI Widget Chart|chart]]: Diagramm mit ähnlichen Möglichkeiten wie die FHEM-Plots&lt;br /&gt;
* [[FTUI Widget Classchanger|classchanger]]: Ändert seine CSS-Klassen je nach Status eines Devices&lt;br /&gt;
* [[FTUI Widget Clicksound|clicksound]]: Mit dem Widget &amp;quot;clicksound&amp;quot; können Sounds an Click-Events von Elementen gebunden werden.&lt;br /&gt;
* [[FTUI Widget Filelog|filelog]]:&lt;br /&gt;
* [[FTUI Widget Fullcalview|fullcalview]]:&lt;br /&gt;
* [[FTUI Widget Gds|gds]]:&lt;br /&gt;
* [[FTUI Widget Highchart|highchart]]:&lt;br /&gt;
* [[FTUI Widget Highchart3d|highchart3d]]:&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/kodinowplaying kodinowplaying]: zeigt Informationen zu grade in KODI gespielten Medien in Form eines Labels an.&lt;br /&gt;
* [[FTUI Widget Loading|loading]]:&lt;br /&gt;
* [[FTUI Widget Meteogram|meteogram]]:&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/reload reload]: auslösen eine Pagereloads&lt;br /&gt;
* [[FTUI Widget Screensaver|screensaver]]:&lt;br /&gt;
* [[FTUI Widget Svgplot|svgplot]]:&lt;br /&gt;
* [[FTUI Widget Tts|tts]]: Sprachausgabe eines Textes aus einem Reading auf dem Endgerät.&lt;br /&gt;
* [[FTUI Widget UWZ|uwz]]: Anzeige der Warnungen der Unwetterzentrale&lt;br /&gt;
* [[FTUI Widget Wakeup|wakeup]]:&lt;br /&gt;
* [https://github.com/svenson08/ftui-weekdaytimer-widget wdtimer]: Visualisierung des [[WeekdayTimer]] Modul&lt;br /&gt;
* [[FTUI Widget Weekprofile|weekprofile]]: Visualisierung des [[weekprofile]] Moduls&lt;br /&gt;
&lt;br /&gt;
==Templates==&lt;br /&gt;
Kommt ein bestimmtes &amp;quot;Code-Fragment&amp;quot; auf mehreren Seiten oder öfter pro Seite vor, bietet FTUI die Option, Templates zu erstellen. Diese werden einmal gebaut und können dann mit dem Attribut &#039;&#039;&#039;data-template&#039;&#039;&#039; nach Belieben in eine Seite eingefügt werden. Dabei besteht auch die Möglichkeit, Variablen zu verwenden.&lt;br /&gt;
&lt;br /&gt;
Die Variablennamen sollten möglichst eindeutig und unverwechselbar gewählt werden, da bei der Verwendung von Templates im Prinzip Suchen &amp;amp; Ersetzen angewendet wird. Verwendet man beispielsweise die Variablen &#039;&#039;&#039;dev:Thermostat_Kueche&#039;&#039;&#039; und &#039;&#039;&#039;dev_temp:temperatue&#039;&#039;&#039;, so kann es passieren, dass die Ergebnisse im erzeugten Code dann &#039;&#039;&#039;Thermostat_Kueche&#039;&#039;&#039; und &#039;&#039;&#039;Thermostat_Kueche_temp&#039;&#039;&#039; lauten, statt wie gewünscht &#039;&#039;&#039;Thermostat_Kueche&#039;&#039;&#039; und &#039;&#039;&#039;temperature&#039;&#039;&#039;. Um dies zu vermeiden, sollten die Variablen besser &#039;&#039;&#039;device:Thermostat_Kueche&#039;&#039;&#039; und &#039;&#039;&#039;temp:temperatue&#039;&#039;&#039; lauten.&lt;br /&gt;
&lt;br /&gt;
Im Folgenden ein paar Beispiele, wie Templates verwendet werden können.&lt;br /&gt;
&lt;br /&gt;
===Einzelnes Widget===&lt;br /&gt;
Soll ein Widget an mehreren Stellen in exakt der selben Ausführung eingebunden werden, kann diese Widget in einer eigenen Datei erstellt und diese dann auf den Zielseiten automatisch mitgeladen werden.&lt;br /&gt;
&lt;br /&gt;
;Template-Seite&lt;br /&gt;
Die Template-Seite soll in diesem Beispiel &#039;&#039;template_symbol.html&#039;&#039; genannt werden. Diese wird daher zuerst im FTUI-Verzeichnis erstellt.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;symbol&amp;quot;&lt;br /&gt;
     data-device=&amp;quot;dummy1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Haupt-Seite&lt;br /&gt;
Die oben erstellte Template-Seite kann nun in jeder gewünschten Seite eingebunden werden.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot; highlight=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
[...]&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;gridster&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;li data-row=&amp;quot;1&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizey=&amp;quot;1&amp;quot; data-sizex=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;div data-template=&amp;quot;template_symbol.html&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;/body&amp;gt;&lt;br /&gt;
[...]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Gridster-Element===&lt;br /&gt;
Natürlich kann auch ein ganzes Gridster-Element - in diesem Fall ein Menü - als Template eingebunden werden.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li data-row=&amp;quot;1&amp;quot; data-col=&amp;quot;1&amp;quot; data-sizex=&amp;quot;1&amp;quot; data-sizey=&amp;quot;4&amp;quot; data-template=&amp;quot;menu.html&amp;quot;&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Widget-Gruppen ===&lt;br /&gt;
Die Template-Datei des [[#Einzelnes Widget|ersten Beispiels]] kann natürlich auch mehrere Widgets auf einmal enthalten.&lt;br /&gt;
&lt;br /&gt;
=== Verwendung von Variablen ===&lt;br /&gt;
==== Einfaches Beispiel ====&lt;br /&gt;
Oft wird ein und dasselbe Widget für verschiedenen Devices verwendet. Um nicht für jedes Device das Widget neu kopieren zu müssen (bzw. bei Änderungen alle Seiten ausbessern zu müssen), kann ein Template verwendet werden, dem einfach per Parameter mitgeteilt wird, von welchem Device es gerade die Daten empfangen soll.&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel wird ein Template erzeugt, dass nur die Temperatur verschiedenen Thermostate mittels eines [[FTUI Widget Label|Label-Widgets]] anzeigt.&lt;br /&gt;
&lt;br /&gt;
;Template-Seite&lt;br /&gt;
Die Template-Seite enthält nur ein einfaches Label-Widget und wird in diesem Beispiel &#039;&#039;template_label.html&#039;&#039; genannt. Um sie für mehrere Devices verwenden zu können, wird im Attribut &#039;&#039;&#039;data-device&#039;&#039;&#039; der Name des eigentlichen Devices durch den Parameter &#039;&#039;&#039;par01&#039;&#039;&#039; ersetzt.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot; highlight=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot;&lt;br /&gt;
     data-device=&amp;quot;par01&amp;quot;&lt;br /&gt;
     data-get=&amp;quot;measured-temp&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Haupt-Seite&lt;br /&gt;
Auf der Haupt-Seite wird die Template-Seite mit dem Attribut &#039;&#039;&#039;data-template&#039;&#039;&#039; eingebunden und ihr via Attribut &#039;&#039;&#039;data-parameter&#039;&#039;&#039; das jeweils gewünschte Device übergeben.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
[...]&lt;br /&gt;
&amp;lt;div data-template=&amp;quot;template_label.html&amp;quot; data-parameter=&#039;{&amp;quot;par01&amp;quot;:&amp;quot;Thermostat1&amp;quot;}&#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-template=&amp;quot;template_label.html&amp;quot; data-parameter=&#039;{&amp;quot;par01&amp;quot;:&amp;quot;Thermostat2&amp;quot;}&#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-template=&amp;quot;template_label.html&amp;quot; data-parameter=&#039;{&amp;quot;par01&amp;quot;:&amp;quot;Thermostat3&amp;quot;}&#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[...]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Wetter-Slider mit Template ====&lt;br /&gt;
In diesem Beispiel wird ein [[FTUI Widget Slider|Slider-Widget]] erstellt, welches die verschiedenen Tage eines Wetterberichtes anzeigt. Dabei wird für den Wetterbericht des jeweiligen Tages immer dasselbe Template verwendet um nicht für jeden Tag ein eigenes Widget schreiben zu müssen.&lt;br /&gt;
&lt;br /&gt;
;Template-Seite&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&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;label&amp;quot; data-device=&amp;quot;AgroWeather&amp;quot; data-get=&amp;quot;par01&amp;quot; data-unit=&amp;quot;&amp;amp;deg;C&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
   &amp;lt;div class=&amp;quot;inline&amp;quot;&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;par02&amp;quot;&amp;gt;&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;par02&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
       min:&amp;amp;nbsp;&amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;AgroWeather&amp;quot; data-get=&amp;quot;par03&amp;quot; data-unit=&amp;quot;&amp;amp;deg;C&amp;quot;&amp;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;div class=&amp;quot;left&amp;quot;&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;par04&amp;quot; data-substitution=&amp;quot;toDate().eeee()+&#039;,&#039;&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;par04&amp;quot; data-substitution=&amp;quot;toDate().ddmm()&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Haupt-Seite&lt;br /&gt;
In der Haupt-Seite wird das Template dann für jede Slider-Seite eingebunden und das Reading für den jeweiligen Tag via Parameter übergeben.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
[...]&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;swiper&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
   &amp;lt;li data-template=&amp;quot;templates/wetter.html&amp;quot; data-parameter=&#039;{&amp;quot;par01&amp;quot;:&amp;quot;fc0_tempMax&amp;quot;,&amp;quot;par02&amp;quot;:&amp;quot;fc0_weatherDay&amp;quot;,&amp;quot;par03&amp;quot;:&amp;quot;fc0_tempMin&amp;quot;,&amp;quot;par04&amp;quot;:&amp;quot;fc0_date&amp;quot;}&#039;&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li data-template=&amp;quot;templates/wetter.html&amp;quot; data-parameter=&#039;{&amp;quot;par01&amp;quot;:&amp;quot;fc1_tempMax&amp;quot;,&amp;quot;par02&amp;quot;:&amp;quot;fc1_weatherDay&amp;quot;,&amp;quot;par03&amp;quot;:&amp;quot;fc1_tempMin&amp;quot;,&amp;quot;par04&amp;quot;:&amp;quot;fc1_date&amp;quot;}&#039;&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li data-template=&amp;quot;templates/wetter.html&amp;quot; data-parameter=&#039;{&amp;quot;par01&amp;quot;:&amp;quot;fc2_tempMax&amp;quot;,&amp;quot;par02&amp;quot;:&amp;quot;fc2_weatherDay&amp;quot;,&amp;quot;par03&amp;quot;:&amp;quot;fc2_tempMin&amp;quot;,&amp;quot;par04&amp;quot;:&amp;quot;fc2_date&amp;quot;}&#039;&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li data-template=&amp;quot;templates/wetter.html&amp;quot; data-parameter=&#039;{&amp;quot;par01&amp;quot;:&amp;quot;fc3_tempMax&amp;quot;,&amp;quot;par02&amp;quot;:&amp;quot;fc3_weatherDay&amp;quot;,&amp;quot;par03&amp;quot;:&amp;quot;fc3_tempMin&amp;quot;,&amp;quot;par04&amp;quot;:&amp;quot;fc3_date&amp;quot;}&#039;&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;
[...]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== JavaScript-Funktionen ==&lt;br /&gt;
Neben den Widgets können auch einige JavaScript-Funktionen verwendet werden, um Befehle an FHEM zu senden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Folgende Zeile 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;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&amp;lt;div onclick=&amp;quot;ftui.setFhemStatus(&#039;set dummy1 off&#039;)&amp;quot;&amp;gt;Dummy1 aus&amp;lt;/div&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Diese Zeile veranlasst FHEM dazu, eine Funktion aus der 99_myUtils.pm auszuführen (&amp;lt;code&amp;gt;myUtils_HeizungUpDown(&amp;quot;WZ.Thermostat_Climate&amp;quot;,&amp;quot;up&amp;quot;)&amp;lt;/code&amp;gt;):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&amp;lt;div onclick=&amp;quot;ftui.setFhemStatus(&#039;{myUtils_HeizungUpDown(&amp;amp;quot;WZ.Thermostat_Climate&amp;amp;quot;,&amp;amp;quot;up&amp;amp;quot;)}&#039;)&amp;quot;&amp;gt;+&amp;lt;/div&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel, wie ein Kommando an FHEM gesendet wird und gleichzeitig der Wert eines bereits in FTUI angezeigten Readings verwendet werden kann:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;dummy1&amp;quot; data-get=&amp;quot;temperature&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div onClick=&amp;quot;ftui.setFhemStatus(&#039;set dummy2 &#039;+ftui.getDeviceParameter(&#039;dummy1&#039;,&#039;temperature&#039;).val);&amp;quot;&amp;gt;Senden&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Eigene Widgets erstellen ==&lt;br /&gt;
Wie eigenen Widgets für FTUI erstellt werden können, ist auf der Seite [[FTUI eigene Widgets]] beschrieben.&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]] zusammengestellt.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [https://github.com/knowthelist/fhem-tablet-ui Projekt auf Github]&lt;br /&gt;
* {{Link2Forum|Topic=34233|LinkText=Forums-Beitrag}}&lt;br /&gt;
* [[FTUI_Snippets|Snippets]]&lt;br /&gt;
* [http://knowthelist.github.io/fhem/tablet/demo_widgets.html Live-Demos]&lt;br /&gt;
* [https://waschto.eu/fhem-und-tabletui-livedemo/ FHEM und TabletUI Live-Demo]&lt;br /&gt;
* {{Link2Forum|Topic=37378|LinkText=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 Tablet UI]]&lt;/div&gt;</summary>
		<author><name>Waschto</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=TRAFFIC&amp;diff=23092</id>
		<title>TRAFFIC</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=TRAFFIC&amp;diff=23092"/>
		<updated>2017-10-29T16:57:21Z</updated>

		<summary type="html">&lt;p&gt;Waschto: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=Verkehrsdaten zu fest definierten Routen ermitteln&lt;br /&gt;
|ModType=d&lt;br /&gt;
|ModForumArea=Unterstützende Dienste&lt;br /&gt;
|ModTechName=98_TRAFFIC.pm&lt;br /&gt;
|ModOwner=jmike &amp;lt;br /&amp;gt;({{Link2Forum|Topic=56045|LinkText=Forum}} / [[Benutzer:Jmike|Wiki]])&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Dieses Modul erfasst Fahrzeiten in aktueller Verkehrslage mittels Google Maps Directions API.&lt;br /&gt;
&lt;br /&gt;
== Features / Funktionen ==&lt;br /&gt;
* Distanz einer Route&lt;br /&gt;
* Fahrzeit ohne Verkehr&lt;br /&gt;
* Fahrzeit mit Verkehr&lt;br /&gt;
* Verzögerung der geplanten Route&lt;br /&gt;
* Waypoints definieren&lt;br /&gt;
* Ausgabesprache festlegen &lt;br /&gt;
* Outputs in Sekunden / Meter (raw)&lt;br /&gt;
* Ausgabe als Text, in Minuten, Sekunden oder als Durchschnitt&lt;br /&gt;
* Device STATE frei wählbar&lt;br /&gt;
* einstellbares Update Interval&lt;br /&gt;
* update-burst für Stosszeiten&lt;br /&gt;
* Strecke kann zusätzlich in gegengesetzte Richtung ausgelesen werden&lt;br /&gt;
* Ankunfszeit bei Abfahrt zum Update-Zeitpunkt&lt;br /&gt;
* verschiedene Travel Modes (driving, walking, bicycling und transit)&lt;br /&gt;
* flexibler Update Schedule für Stosszeiten&lt;br /&gt;
* integrierte, konfigurierbare Google Map zum Visualisieren der konfigurierten Route&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen ==&lt;br /&gt;
Erstmal muss ein eigener API Key angefordert werden. &lt;br /&gt;
Das geht über Googles [https://console.developers.google.com/apis/ API Manager]&amp;lt;br&amp;gt;&lt;br /&gt;
Dort  &amp;quot;Google Maps Directions API&amp;quot; suchen und ein neues Projekt erstellen, anschliessend API aktivieren.&lt;br /&gt;
Für die Karte ist zusätzlich der &amp;quot;Google Maps JavaScript API&amp;quot; notwendig und sollte an dieser Stelle auch aktiviert werden.&lt;br /&gt;
&lt;br /&gt;
Je nach FHEM Installation zusätzlich die Perl Module LWP::Simple, JSON und MIME::Base64 nach installieren:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;sudo apt-get install libwww-perl&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;sudo apt-get install libjson-perl&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
oder&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;sudo cpan -i LWP::Simple&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;sudo cpan -i JSON&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;sudo cpan -i MIME::Base64&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Definition ==&lt;br /&gt;
&amp;lt;code&amp;gt; define &amp;lt;devicename&amp;gt; TRAFFIC &amp;lt;API-KEY&amp;gt; [update-interval] &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beispiel:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;define muc2berlin TRAFFIC ABCDEFGHIJKLMNOPQRSTVWYZ 600&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der API Key muss selbstverständlich mit dem eigenen Key aus dem API Manager ersetzt werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Das Intervall in Sekunden ist optional, der default beträgt 3600 (1 Stunde).&amp;lt;br&amp;gt;&lt;br /&gt;
Attribute start_address und end_address definieren.&lt;br /&gt;
&lt;br /&gt;
== Readings ==&lt;br /&gt;
* average_delay_min&lt;br /&gt;
* average_duration_in_traffic_min&lt;br /&gt;
* average_duration_min&lt;br /&gt;
* delay&lt;br /&gt;
* delay_min&lt;br /&gt;
* distance&lt;br /&gt;
* duration&lt;br /&gt;
* duration_in_traffic&lt;br /&gt;
* duration_in_traffic_min&lt;br /&gt;
* duration_in_traffic_sec&lt;br /&gt;
* duration_min&lt;br /&gt;
* duration_sec&lt;br /&gt;
* [error_message]&lt;br /&gt;
* eta&lt;br /&gt;
* state&lt;br /&gt;
* status&lt;br /&gt;
&lt;br /&gt;
== Befehle ==&lt;br /&gt;
&lt;br /&gt;
==== update  [burst-update-count] [burst-update-interval] ====&lt;br /&gt;
Readings manuell aktualisieren,  der optionale Burst kann wie folgt genutzt werden:&amp;lt;br&amp;gt;&lt;br /&gt;
- erster Wert gibt an wie viele Updates abgearbeitet werden&amp;lt;br&amp;gt;&lt;br /&gt;
- zweiter Wert gibt an wie viele Sekunden zwischen den Updates gewartet wird&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel um für 1 Stunde alle 5 Minuten zu aktualisieren:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;set &amp;lt;device&amp;gt; update 12 300&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== STATE ==&lt;br /&gt;
* Initialized       - modul initialisiert&lt;br /&gt;
* OK        - update war erfolgreich&lt;br /&gt;
* incomplete configuration - Konfigurationsfehler (start_address oder end_address leer)&lt;br /&gt;
* &amp;lt;APIRETURN&amp;gt;         - Fehlermeldung von Google Maps, falls vorhanden (siehe Reading error_message)&lt;br /&gt;
* &amp;lt;Reading&amp;gt; - der Wert des Readings welches mit Attribut stateReading ausgewählt wurde&lt;br /&gt;
* disabled - das Device wurde über das Attribut disable deaktiviert&lt;br /&gt;
&lt;br /&gt;
== Attribute ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Attribut&lt;br /&gt;
!Default Wert&lt;br /&gt;
!mögliche Werte&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Beispiel&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |start_address&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;text&amp;gt;&lt;br /&gt;
|die vollständige Startadresse (erforderlich!)&lt;br /&gt;
|Startstr 1, 12345 Startcity&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |end_address&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;text&amp;gt;&lt;br /&gt;
|die vollständige Zieladresse (erforderlich!)&lt;br /&gt;
|Zielstr 99, 99099 Zielstadt&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |raw_data&lt;br /&gt;
|0&lt;br /&gt;
|0:1&lt;br /&gt;
|legt Readings an mit allen unbearbeiteten Werten &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |language&lt;br /&gt;
|&lt;br /&gt;
|de, en, etc.&lt;br /&gt;
|Google ermittelt die Sprache automatisch, falls nicht fest definiert&lt;br /&gt;
|de&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |waypoints&lt;br /&gt;
|&lt;br /&gt;
|lat, long&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;lat, long&lt;br /&gt;
|fixe Wegpunkte auf der Strecke, mehrere Werte per pipe &amp;lt;nowiki&amp;gt;(|)&amp;lt;/nowiki&amp;gt; trennen, LAT, LONG Koordinaten angeben&lt;br /&gt;
|48.187918, 11.590514&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |returnWaypoints&lt;br /&gt;
|&lt;br /&gt;
|lat, long&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;lat, long&lt;br /&gt;
|fixe Wegpunkte für den Rückweg, mehrere Werte per pipe &amp;lt;nowiki&amp;gt;(|)&amp;lt;/nowiki&amp;gt; trennen, LAT, LONG Koordinaten angeben, wenn leer werden &amp;quot;waypoints&amp;quot; in umgekehrter Reihenfolge verwendet&lt;br /&gt;
|48.187918, 11.590514&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |disable&lt;br /&gt;
|0&lt;br /&gt;
|0:1&lt;br /&gt;
|Modul deaktivieren&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |stateReading&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;beliebiges-Reading&amp;gt;&lt;br /&gt;
|Name eines Readings, dessen Wert in den STATE des Devices geschrieben wird&lt;br /&gt;
|delay_min&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |outputReadings&lt;br /&gt;
|text&lt;br /&gt;
|text,min,sec,average&lt;br /&gt;
|Konfiguration, welche Readings erstellt werden sollen, eine oder mehrere möglich&lt;br /&gt;
|text min&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |includeReturn&lt;br /&gt;
|0&lt;br /&gt;
|0:1&lt;br /&gt;
|aktiviert/deaktiviert, ob die gleiche Strecke in umgekehrter Richtung hinzugefügt werden soll&amp;lt;br&amp;gt;Readings werden mit return_* angegeben&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |verbose&lt;br /&gt;
|1&lt;br /&gt;
|0:1:2:3:4:5&lt;br /&gt;
|gibt vor, wie ausführlich geloggt wird&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |travelMode&lt;br /&gt;
|driving&lt;br /&gt;
|driving:walking:bicycling:transit&lt;br /&gt;
|Fortbewegungsmethode für Kalkulation&lt;br /&gt;
|walking&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |updateSchedule&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;Beginn-volle-Stunde&amp;gt;-&amp;lt;Ende-volle-Stunde&amp;gt; [&amp;lt;Tag&amp;gt;] &amp;lt;update-Intervall-in-Sekunden&amp;gt;&lt;br /&gt;
|definiert einen flexiblen Zeitraum für feinere Updates, Tag als Zahl (Sonntag 0, Montag 1 etc.), mehrere Definitionen per &amp;lt;nowiki&amp;gt;(|)&amp;lt;/nowiki&amp;gt; getrennt&lt;br /&gt;
| 6-8 1 60|6-8 2 60|6-8 3 60|6-8 4 60|6-8 5 60&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |GoogleMapsStyle&lt;br /&gt;
|default&lt;br /&gt;
|default,silver,dark,night&lt;br /&gt;
|definiert einen der vorgegebenen Map Styles&lt;br /&gt;
|&amp;lt;i&amp;gt;dropdown&amp;lt;/i&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |GoogleMapsSize&lt;br /&gt;
|800,600&lt;br /&gt;
|&amp;lt;Breite&amp;gt;,&amp;lt;Höhe&amp;gt;&lt;br /&gt;
|definiert die Breite und Höhe der Karte&lt;br /&gt;
| 600,300&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |GoogleMapsCenter&lt;br /&gt;
|&amp;lt;i&amp;gt;auto-generiert&amp;lt;/i&amp;gt;&lt;br /&gt;
|&amp;lt;lat&amp;gt;,&amp;lt;lang&amp;gt;&lt;br /&gt;
|definiert den Mittelpunkt der Karte&lt;br /&gt;
| 48.2322157,11.6867434 &lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |GoogleMapsZoom&lt;br /&gt;
|10&lt;br /&gt;
|&amp;lt;Zoom wert&amp;gt;&lt;br /&gt;
|definiert den Zoom Wert der Karte&lt;br /&gt;
| 14&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |GoogleMapsStroke&lt;br /&gt;
|#4cde44,6,100,#FF0000,1,100&lt;br /&gt;
|&amp;lt;#-6-digit-hex-code&amp;gt;,[&amp;lt;weight&amp;gt;[,&amp;lt;opacity&amp;gt;],]&amp;lt;#-6-digit-hex-code&amp;gt;,[&amp;lt;weight&amp;gt;,[&amp;lt;opacity&amp;gt;]]&lt;br /&gt;
|definiert die Farbe der Wegstrecken im HEX Format, Dicke der Linie und Transparenz. Getrennte Angabe von Hin- und Rückweg sind möglich.&lt;br /&gt;
| #019cdf,#ffeb19&amp;lt;br&amp;gt;#019cdf,15,50,#ffeb19,15,50&amp;lt;br&amp;gt;#019cdf,20,80,#ffeb19&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |GoogleMapsTrafficLayer&lt;br /&gt;
|0&lt;br /&gt;
|0:1&lt;br /&gt;
|schaltet den Standard Google Maps Traffic Overlay ein/aus&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |GoogleMapsDisableUI&lt;br /&gt;
|0&lt;br /&gt;
|0:1&lt;br /&gt;
|Dropdown um die Map Controls zu deaktivieren&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Integrierte Karte ==&lt;br /&gt;
* Zum Überprüfen der verwendeten Wegstrecke können der Hin- und Rückweg für ein TRAFFIC-Device auf einer Karte angezeigt werden.&lt;br /&gt;
* Um die Karte anzuzeigen einfach oben auf &amp;quot;toggle Map&amp;quot; klicken&lt;br /&gt;
* Für Einbindung in andere Anwendungen (TabletUI z.b) kann die Karte zusätzlich über den eingeblendeten Link erreicht werden: &amp;lt;nowiki&amp;gt;http://fhem-ip:port/fhem/TRAFFIC?name=&amp;lt;TRAFFIC-DEVICE&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* Karte anpassen:&lt;br /&gt;
** Die Karte lässt sich über folgende Attribute anpassen:&lt;br /&gt;
** GoogleMapsStyle, GoogleMapsSize, GoogleMapsCenter, GoogleMapsZoom, GoogleMapsStroke und GoogleMapsTrafficLayer&lt;br /&gt;
** GoogleMapsZoom und GoogleMapsCenter können direkt in der Kartenansicht gespeichert werden. Dazu die Karte verschieben/zoomen und anschliessend auf die Buttons &amp;quot;save Zoom&amp;quot; bzw. &amp;quot;save Center&amp;quot; klicken&lt;br /&gt;
** weitere Beispiele bitte dem Forum entnehmen&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
* STATE: &amp;quot;REQUEST DENIED&amp;quot;&lt;br /&gt;
* Reading error_message: &amp;quot;This API project is not authorized to use this API&amp;quot;&lt;br /&gt;
** =&amp;gt;  API Key ist nicht aktiviert. Google API &amp;gt; API Manager &amp;gt; Google Maps Directions API &amp;gt; AKTIVIEREN &lt;br /&gt;
&lt;br /&gt;
* STATE: &amp;quot;UNKNOWN_ERROR&amp;quot;&lt;br /&gt;
** =&amp;gt; Es liegt ein Fehler bei Google vor.&lt;br /&gt;
** =&amp;gt; &amp;quot;UNKNOWN_ERROR indicates a directions request could not be processed due to a server error. The request may succeed if you try again.&amp;quot; [https://developers.google.com/maps/documentation/javascript/directions?hl=de]&lt;br /&gt;
&lt;br /&gt;
* STATE: &amp;quot;OVER_QUERY_LIMIT&amp;quot;&lt;br /&gt;
** Es wurden mehr als 2500 requests pro Tag abgesetzt. Abhilfe: Update Intervalle der TRAFFIC Devices erhöhen und &amp;quot;burst&amp;quot; zu den Stosszeiten nutzen.&lt;br /&gt;
&lt;br /&gt;
* STATE: &amp;quot;ZERO_RESULTS&amp;quot;&lt;br /&gt;
** Die Waypoint Definition kann Google nicht realisieren. Statt Städtenamen besser exakte Koordinaten verwenden.&lt;br /&gt;
&lt;br /&gt;
* Karte zeigt nur ein graues Bild &amp;quot;Ops...&amp;quot;&lt;br /&gt;
** checkt eure Javascript Konsole nach dem exakten Fehler&lt;br /&gt;
** Google Maps API error: ApiNotActivatedMapError https://developers.google.com/maps/documentation/javascript/error-messages#api-not-activated-map-error&lt;br /&gt;
** =&amp;gt; Google Maps JavaScript API aktivieren&lt;br /&gt;
&lt;br /&gt;
== Tips ==&lt;br /&gt;
* täglicher Burst Update zum Feierabend, 1 Stunde alle 5 Minuten updaten:&lt;br /&gt;
** &amp;lt;code&amp;gt;define FeierabendCheck AT *17:00 set &amp;lt;device&amp;gt; update 12 300&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* komplette Reisezeit, also Hin- und Rückweg, im STATE anzeigen:&lt;br /&gt;
** &amp;lt;code&amp;gt;attr &amp;lt;device&amp;gt; stateFormat {int(ReadingsVal($name,&amp;quot;delay_min&amp;quot;,0)) + int(ReadingsVal($name,&amp;quot;return_delay_min&amp;quot;,0))}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* updateSchedule einsetzen um default update Intervall zu verfeinern&lt;br /&gt;
** Montag bis Freitag von 6 bis 8 Uhr alle 60 Sekunden&lt;br /&gt;
** &amp;lt;code&amp;gt;attr &amp;lt;device&amp;gt; updateSchedule 6-8 1 60|6-8 2 60|6-8 3 60|6-8 4 60|6-8 5 60&amp;lt;/code&amp;gt;&lt;br /&gt;
** jeden Tag von 17 bis 19 Uhr alle 2 Minuten&lt;br /&gt;
** &amp;lt;code&amp;gt;attr &amp;lt;device&amp;gt; updateSchedule 17-19 120&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Waypoints definieren (Tip von erdo_king)&lt;br /&gt;
** In Google-Maps die gewünschte Route auswählen (am PC)&lt;br /&gt;
** Auf eine signifikante Stelle der Route klicken - hierbei auf die Fahrtrichtung achten!&lt;br /&gt;
** Hier auf die Koordinaten klicken, diese können dann aus dem Suchfeld kopiert werden&lt;br /&gt;
** Im Browser zurückgehen, bis die Route wieder sichtbar ist (zum späteren Datenabgleich)&lt;br /&gt;
** Waypoints in FHEM deklarieren, Daten aktualisieren (set &amp;lt;device&amp;gt; update)&lt;br /&gt;
** distance + duration mit den Daten von Google-Maps am PC abgleichen&lt;br /&gt;
&lt;br /&gt;
== to Do ==&lt;br /&gt;
* Reading error_message löschen wenn update erfolgreich&lt;br /&gt;
* deutsche Commandref&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* {{Link2Forum|Topic=56045|LinkText=Modul Vorstellung und Diskussionen}}&lt;br /&gt;
* [http://fhem.de/commandref.html#TRAFFIC Commandref]&lt;br /&gt;
* [https://console.developers.google.com/apis Google API Manager]&lt;br /&gt;
* [https://waschto.eu/verkehrsinfo-und-traffic-verkehrsmeldungen-in-fhem-einbinden/ How-To: Verkehrsinfos in FHEM einbinden]&lt;/div&gt;</summary>
		<author><name>Waschto</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Staumelder&amp;diff=23091</id>
		<title>Staumelder</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Staumelder&amp;diff=23091"/>
		<updated>2017-10-29T16:56:33Z</updated>

		<summary type="html">&lt;p&gt;Waschto: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Vorüberlegungen ==&lt;br /&gt;
Die Überlegung, sich Stau- und Verkehrsmeldung per FHEM bereitstellen zu lassen klingt verlockend. &lt;br /&gt;
Für die Realisierung wurden mehrere Wege betrachtet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Umsetzungen ==&lt;br /&gt;
Es gibt bereits mehrere Möglichkeiten Stau- und Verkehrsmeldung mit FHEM auszulesen und darzustellen&lt;br /&gt;
{{Randnotiz|RNText= Variante per HTTPMOD  oder Google Maps muss noch beschrieben werden }}&lt;br /&gt;
* Stau- und Verkehrsmeldung über das Modul Verkehrsinfo&lt;br /&gt;
* Stau- und Verkehrsmeldung per HTTPMOD&lt;br /&gt;
* Stau- und Verkehrsmeldung über Google Maps&lt;br /&gt;
&lt;br /&gt;
== Das Verkehrsinfo Modul ==&lt;br /&gt;
Das Modul {{Link2Forum|Topic=55118|Message=467732|LinkText=Verkehrsinfo}} bietet für Stau- und Verkehrsmeldung eine übersichtliche Möglichkeit die potentiellen Meldungen anzeigen zu lassen.&lt;br /&gt;
Dabei bedient es sich aktuell aus zwei Webseiten.&lt;br /&gt;
&lt;br /&gt;
* https://www.verkehrsinfo.de&lt;br /&gt;
* http://hessenschau.de/index.html&lt;br /&gt;
&lt;br /&gt;
Für das Modul werden die Perlmodule HTML::TreeBuilder::XPath sowie libjson-perl benötigt.&lt;br /&gt;
Installiert werden können diese mit nachfolgendem Befehl.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;sudo apt-get install libxml-treebuilder-perl libhtml-treebuilder-xpath-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt; sudo apt-get install libjson-perl &amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Die Grundsätzliche Definition des Moduls sieht wie Folgt aus:&lt;br /&gt;
:&amp;lt;code&amp;gt;define  &amp;lt;name&amp;gt; Verkehrsinfo &amp;lt;url&amp;gt; &amp;lt;interval&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Aktuell Mögliche Varianten ===&lt;br /&gt;
==== &amp;quot;Verkehrsinfo.de&amp;quot; ====&lt;br /&gt;
Über die Webseite verkehrsinfo.de können die Stau- und Verkehrsmeldungen von ganz Deutschland abgefragt werden.&lt;br /&gt;
Dabei kann über die Webseite nach Bundesland oder Strassentyp gefiltert werden. &lt;br /&gt;
Aus dieser Filterung wird auch der anschließend benötigte Link für das Modul generiert.&lt;br /&gt;
&lt;br /&gt;
Eine Beispielkonfiguration anhand der Filterung auf einen Strassentyp. Abfrageintervall hier 3600 Sekunden.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;define A66 Verkehrsinfo https://www.verkehrsinfo.de/index.php?country=1&amp;amp;street=A66&amp;amp;UIN= 3600&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;hessenschau.de&amp;quot; ====&lt;br /&gt;
Über die Webseite hessenschau.de können die Stau- und Verkehrsmeldungen von Hessen abgefragt werden.&lt;br /&gt;
Eine Filterung auf bestimmte Strassentypen ist über die zusätzlichen Attribute filter_exclude sowie filter_include möglich.&lt;br /&gt;
&lt;br /&gt;
Eine Beispielkonfiguration mit Abfrageintervall von 3600 Sekunden.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;define Staumelder Verkehrsinfo http://hessenschau.de/verkehr/index.html 3600&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;radiosaw.de&amp;quot; ====&lt;br /&gt;
Über die Webseite radiosaw.de können die Stau- und Verkehrsmeldungen von Mitteldeutschland abgefragt werden.&lt;br /&gt;
Eine Filterung auf bestimmte Strassentypen ist über die zusätzlichen Attribute filter_exclude sowie filter_include möglich.&lt;br /&gt;
&lt;br /&gt;
Eine Beispielkonfiguration mit Abfrageintervall von 3600 Sekunden.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;define Staumelder Verkehrsinfo radiosaw 3600&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Die Angabe einer URL ist bei radiosaw nicht notwendig.&lt;br /&gt;
&lt;br /&gt;
=== Zusätzliche Einstellungen ===&lt;br /&gt;
Neues Attribut für die Formatierung der Meldungen (Voranstellen von Strasse, Richtung, beides oder keines von beiden --&amp;gt; siehe commandref) (nur für Verkehrsinfo.de Verfügbar)&lt;br /&gt;
&lt;br /&gt;
{{Randnotiz|RNText= &lt;br /&gt;
Beide Filter können gleichzeitig benutzt werden, &lt;br /&gt;
aber es kann auch wahlweise nur einer verwendet werden.&lt;br /&gt;
Die Filter sind mit einem Logischen UND verknüpft. &lt;br /&gt;
Das heißt z.B.: wenn etwas ausgeschlossen wurde,&lt;br /&gt;
kann es nicht mit dem Einschlussfilter wieder geholt werden.}}&lt;br /&gt;
&lt;br /&gt;
Das Modul erlaubt das Filtern von Meldungen anhand von Attributen wie &#039;&#039;&#039;filter_exclude&#039;&#039;&#039; und &#039;&#039;&#039;filter_include&#039;&#039;&#039;.&lt;br /&gt;
Dabei werden die geladenen Meldung nach bestimmten Schlagwörtern durchsucht und somit nur die Meldung in Readings &lt;br /&gt;
gespeichert, für die einer der beiden Attribute zutrifft.&lt;br /&gt;
	&lt;br /&gt;
:&amp;lt;code&amp;gt;attr Staumeldungen filter_exclude Baustelle | Sperrung &amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;attr Staumeldungen filter_include Frankfurt | Unfall&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die neuste Version erlaubt auch eine Sortierung der Meldung anhand der z.B Strasse.&lt;br /&gt;
Dazu muss das Attribute &#039;&#039;&#039;orderby&#039;&#039;&#039; gesetzt werden&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;attr Staumeldungen orderby A3 | A5 &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Randnotiz|RNText=Das Attribute msg_format ist nur für Verkehrsinfo.de verfügbar}} &lt;br /&gt;
Mit Hilfe des Attributes msg_format kann die Meldung (Voranstellen von Strasse, Richtung, beides oder keines von beiden ) formatiert werden.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;attr Staumeldungen msg_format road &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Funktion kann überall in FHEM aufgerufen werden und liefert als Rückgabewert das gleiche Ergebnis wie der get &amp;lt;name&amp;gt; info Aufruf.&lt;br /&gt;
Der Rückgabewert als Text, kann dann für weiteres verwendet werden.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;Verkehrsinfo_GetData(&amp;lt;devicename&amp;gt;)&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;my $result = Verkehrsinfo_GetData(&#039;A8&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Vorlesen von Meldungen ===&lt;br /&gt;
&lt;br /&gt;
Die Meldungen aus den Readings lassen sich auch mit FHEM vorlesen.&lt;br /&gt;
Dazu bedarfs es einem System, welches Text in Sprache (TTS) umwandeln kann. Hier bietet sich das Modul TTS oder z.b ein Sonossystem an.&lt;br /&gt;
Auch weitere System zum Vorlesen von Meldungen sind Nutzbar.&lt;br /&gt;
&lt;br /&gt;
Folgendes Beispiel zeigt ein at welches dynamisch anhand der Meldungsanzahl eine Variable füllt.&lt;br /&gt;
Diese Variable wird dann von einem Sonossystem oder alternativ einem TTS System vorgelesen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Staumelder at*05:36:00  {&lt;br /&gt;
my $stau_counter = ReadingsVal(&amp;quot;Stau&amp;quot;,&amp;quot;count&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
my $stau = &amp;quot;Es liegen &amp;quot; . &amp;quot; &amp;quot; . &amp;quot;$stau_counter&amp;quot; .&amp;quot; Staumeldungen um &amp;quot;. TimeNow() .&amp;quot; vor:&amp;quot;;&lt;br /&gt;
my $complete_message;&lt;br /&gt;
&lt;br /&gt;
## Anhand Meldungszahl das Reading in der Schleife zusammenbauen&lt;br /&gt;
my $reading_pre=&amp;quot;e_&amp;quot;;&lt;br /&gt;
my $reading_suff=&amp;quot;_msg&amp;quot;;&lt;br /&gt;
my $reading;&lt;br /&gt;
&lt;br /&gt;
## Iterationsvariable&lt;br /&gt;
my $i = 0;&lt;br /&gt;
&lt;br /&gt;
while ($stau_counter &amp;gt;= $i)&lt;br /&gt;
     {&lt;br /&gt;
       $reading = &amp;quot;$reading_pre&amp;quot; . &amp;quot;$i&amp;quot; . &amp;quot;$reading_suff&amp;quot;;&lt;br /&gt;
       $complete_message = &amp;quot;$complete_message&amp;quot; .&amp;quot;.&amp;quot;. ReadingsVal(&amp;quot;Stau&amp;quot;,$reading ,&amp;quot;&amp;quot;);&lt;br /&gt;
       $i++;&lt;br /&gt;
     }&lt;br /&gt;
&lt;br /&gt;
fhem &amp;quot;set Staudummy $stau$complete_message &amp;quot;;&lt;br /&gt;
fhem &amp;quot;set MeinSonossystem Speak 50 de $stau$complete_message&amp;quot;;&lt;br /&gt;
fhem &amp;quot;set MeinTTS tts $stau$complete_message&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Senden von Meldungen per Messenger ===&lt;br /&gt;
&lt;br /&gt;
Befindet man sich allerdings nicht zu Hause und möchte dennoch wissen, ob es im definierten Bereich Verkehsbehinderung gibt, können die Meldungen auch per Messenger Modul zugesendet werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Jabber ====&lt;br /&gt;
&lt;br /&gt;
Wenn das [[Jabber|Jabbermodul]] bereits installiert und konfiguriert wurde kann mit folgendem Code in der 99_myUtils.pm das &lt;br /&gt;
Abrufen von Staumeldungen implementiert werden. Der Code bezieht sich dabei auf die Grundeinrichtung des Jabbermoduls von hier: [[FHEM spricht jabber]]&lt;br /&gt;
{{Randnotiz|RNText=Die Anzahl Meldungen zum Versenden wurde auf fünf begrenzt.}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 # Staumeldung abrufen&lt;br /&gt;
  if($cmd eq &amp;quot;stau&amp;quot;) &lt;br /&gt;
  {&lt;br /&gt;
    fhem(&amp;quot;set Staumeldungen update&amp;quot;);&lt;br /&gt;
    $newmsg.= &amp;quot;Staumeldungen von: &amp;quot;;&lt;br /&gt;
    $newmsg.=ReadingsVal(&amp;quot;Staumeldungen&amp;quot;, &amp;quot;date_time&amp;quot;, &amp;quot;---&amp;quot;).&amp;quot;:::&amp;quot;;&lt;br /&gt;
    $newmsg=$newmsg.&amp;quot;\n&amp;quot;;&lt;br /&gt;
    $newmsg.=ReadingsVal(&amp;quot;Staumeldungen&amp;quot;, &amp;quot;e_1_msg&amp;quot;, &amp;quot;---&amp;quot;).&amp;quot; , &amp;quot;;&lt;br /&gt;
    $newmsg=$newmsg.&amp;quot;\n&amp;quot;;&lt;br /&gt;
    $newmsg.=ReadingsVal(&amp;quot;Staumeldungen&amp;quot;, &amp;quot;e_2_msg&amp;quot;, &amp;quot;---&amp;quot;).&amp;quot; , &amp;quot;;&lt;br /&gt;
    $newmsg=$newmsg.&amp;quot;\n&amp;quot;;&lt;br /&gt;
    $newmsg.=ReadingsVal(&amp;quot;Staumeldungen&amp;quot;, &amp;quot;e_3_msg&amp;quot;, &amp;quot;---&amp;quot;).&amp;quot; , &amp;quot;;&lt;br /&gt;
    $newmsg=$newmsg.&amp;quot;\n&amp;quot;;&lt;br /&gt;
    $newmsg.=ReadingsVal(&amp;quot;Staumeldungen&amp;quot;, &amp;quot;e_4_msg&amp;quot;, &amp;quot;---&amp;quot;).&amp;quot; , &amp;quot;;&lt;br /&gt;
    $newmsg=$newmsg.&amp;quot;\n&amp;quot;;&lt;br /&gt;
    $newmsg.=ReadingsVal(&amp;quot;Staumeldungen&amp;quot;, &amp;quot;e_5_msg&amp;quot;, &amp;quot;//Ende&amp;quot;).&amp;quot;.&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== telegram  ====&lt;br /&gt;
&lt;br /&gt;
Das telegram Modul muss bereits installiert sein. Optional das Verkehsmodul anlegen und konfigurieren.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;define traffic.a8 Verkehrsinfo https://www.verkehrsinfo.de/httpsmobil/index.php?c=staulist&amp;amp;street=A8&amp;amp;lat=&amp;amp;lon= 3600&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit Hilfe des Notify können die Meldung per [[TelegramBot]] versendet werden.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define ntf.telebot.traffic notify telebot.msgText:\s(?i)stau.* {\&lt;br /&gt;
   my $msgpeer = ReadingsVal(&#039;telebot&#039;, &#039;msgPeer&#039;,&#039;&#039;);;\&lt;br /&gt;
   fhem(&amp;quot;set traffic.a8 update&amp;quot;);;\&lt;br /&gt;
   fhem(&amp;quot;set telebot message @&amp;quot;. $msgpeer . &amp;quot; &amp;quot; . Verkehrsinfo_GetData(&#039;traffic.a8&#039;));;\&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Einbindung der Staumelderdaten für das Tablet UI===&lt;br /&gt;
&lt;br /&gt;
Für die Nutzer der Tablet UI Oberfläche besteht nun die Möglichkeit das Ergebnis von Staumeldungen aus dem Modul anzeigen zu lassen.&lt;br /&gt;
Dafür ist es notwendig eine widget_verkehrsinfo.js im Verzeichnis /opt/fhem/www/tablet/js anzulegen, die mit dem Inhalt aus dem  [https://github.com/knowthelist/fhem-tablet-ui/pull/185 Repository] gefüllt wird. &lt;br /&gt;
&lt;br /&gt;
Für die angelegte Datei sollten noch die Berechtigungen angepasst werden &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo chown fhem:dialout /opt/fhem/www/tablet/js/widget_verkehrsinfo.js &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[Datei:tabletUI_Verkehrsinfo.png|mini|rechts|400px|Beispiel_TabletUI]]&lt;br /&gt;
&lt;br /&gt;
Um das Widget in FTUI nutzen zu können muss in der Datei index.html wie Folgt definiert werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
Version 0.6&lt;br /&gt;
&lt;br /&gt;
Ein Widget für Modul Verkehrsmeldungen&lt;br /&gt;
&lt;br /&gt;
Paul79 04.03.2017&lt;br /&gt;
&lt;br /&gt;
paul79@gmx.de&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------&lt;br /&gt;
HTML&lt;br /&gt;
 für maximale Attribute:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;div data-type=&amp;quot;verkehrsinfo&amp;quot;  data-device=&amp;quot;name in FHEM&amp;quot; data-max=&amp;quot;5&amp;quot;  data-color-msg=&amp;quot;#CEBCB7&amp;quot; data-color-head=&amp;quot;#FD6F3F&amp;quot; data-shadow=&amp;quot;true&amp;quot; data-shadow-head=&amp;quot;true&amp;quot; data-icon=&amp;quot;2&amp;quot; &amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
            &lt;br /&gt;
 für minimale Attribute:&lt;br /&gt;
 &lt;br /&gt;
  &amp;lt;div data-type=&amp;quot;verkehrsinfo&amp;quot;  data-device=&amp;quot;name in FHEM&amp;quot; &amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ATTRIBUTE:&lt;br /&gt;
~~~~~~~~~~&lt;br /&gt;
    Attribute (Pflicht):&lt;br /&gt;
    ---------------&lt;br /&gt;
    data-type=&amp;quot;verkehrsinfo&amp;quot; : Widget-Typ&lt;br /&gt;
    data-device : FHEM Device Name&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
    Attribute (Optional):&lt;br /&gt;
    -----------------&lt;br /&gt;
    data-count: maximale Anzahl der Einträge (Default &#039;5&#039;).&lt;br /&gt;
    data-icon: &#039;1&#039; Icon links, &#039;No&#039; kein icon , &#039;2&#039; 2 Icons links und rechts (Default &#039;2&#039;)&lt;br /&gt;
   date-shadow: &#039;true&#039; Schatten unter Icons (Default &#039;true&#039;)&lt;br /&gt;
   date-shadow-head: &#039;true&#039; Schatten unter Headtext (Default &#039;false&#039;)   &lt;br /&gt;
   data-color-head: Farbe Headtext (Default &#039;#FFE066&#039;)&lt;br /&gt;
   data-color-mag: Farbe Headtext (Default &#039;#FFFFFF&#039;)&lt;br /&gt;
*/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Attribute unter &amp;quot;Optional&amp;quot; können bei Bedarf auf den eigenen Geschmack verändert werden.&lt;br /&gt;
&lt;br /&gt;
=== Bekannte Probleme / Fehlermeldungen ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Can&#039;t call method &amp;quot;as_trimmed_text&amp;quot; on an undefined value at ./FHEM/98_Verkehrsinfo.pm line 220.&amp;lt;/pre&amp;gt;&lt;br /&gt;
Die obiger Fehlermeldung wird durch Änderungen der Webseiten hervorgerufen. Hier muss ggf. das Modul angepasst/erweitert werden.&lt;br /&gt;
&lt;br /&gt;
=== Ideen ===&lt;br /&gt;
&lt;br /&gt;
Attribut zur Priorisierung von Meldungen&lt;br /&gt;
&lt;br /&gt;
== Das TRAFFIC Modul ==&lt;br /&gt;
&lt;br /&gt;
Mit diesem Modul können eigene Wegstrecken, und deren Verkehr, über Google Maps Directions API erfasst werden.&lt;br /&gt;
Das Modul sowie die Grundeinstellungen sind im Modulartikel [[TRAFFIC]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ansprechpartner ==&lt;br /&gt;
# {{Link2FU|20569|martins}} (martins) für Modul Verkehrsinfo und Doku&lt;br /&gt;
# {{Link2FU|16204|jmike}} (jmike) für Modul TRAFFIC und Doku&lt;br /&gt;
# [[Benutzer Diskussion:Devender|Devender]] ({{Link2FU|20043|Dirk}}) für Wiki und Doku&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [https://waschto.eu/verkehrsinfo-und-traffic-verkehrsmeldungen-in-fhem-einbinden/ How-To: Verkehrsinfos in FHEM einbinden]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Code Snippets]]&lt;br /&gt;
[[Kategorie:Glossary]]&lt;/div&gt;</summary>
		<author><name>Waschto</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Wetter_und_Wettervorhersagen&amp;diff=23090</id>
		<title>Wetter und Wettervorhersagen</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Wetter_und_Wettervorhersagen&amp;diff=23090"/>
		<updated>2017-10-29T16:56:01Z</updated>

		<summary type="html">&lt;p&gt;Waschto: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wetterdaten und Wettervorhersagen können auf verschiedene Weise in FHEM eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
== Yahoo-Wetter ==&lt;br /&gt;
Für die einfache Einbindung des Yahoo-Wetters gibt es das spezielle Modul [[Weather]].&lt;br /&gt;
&lt;br /&gt;
== Unwetterzentrale ==&lt;br /&gt;
Informationen der Seite(n) Unwetterzentrale.de können mit Hilfe des Moduls [[UWZ]] eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
== Modul OPENWEATHER ==&lt;br /&gt;
Das Modul [[OPENWEATHER]] extrahiert Wetterdaten über die &amp;quot;openweather&amp;quot;-Schnittstelle (API) von www.wetter.com. &lt;br /&gt;
*Vorschau-Zeitraum: 3 Tage&lt;br /&gt;
*Vorschau-Interval: 6:00, 11:00, 17:00, 23:00&lt;br /&gt;
*Aktuelle Daten: keine&lt;br /&gt;
&lt;br /&gt;
== Modul PROPLANTA ==&lt;br /&gt;
Das Modul [[PROPLANTA]] extrahiert Wetterdaten von der Website www.proplanta.de. (keine API)&lt;br /&gt;
*Vorschau-Zeitraum: 12 Tage&lt;br /&gt;
*Vorschau-Interval: 3 h&lt;br /&gt;
*Aktuelle Daten: jede volle Stunde&lt;br /&gt;
&lt;br /&gt;
== Modul WWO ==&lt;br /&gt;
Das Modul extrahiert Wetterdaten über die (alte) API von worldweatheronline.com&lt;br /&gt;
*Vorschau-Zeitraum: ?? Tage&amp;lt;BR&amp;gt;&lt;br /&gt;
*Vorschau-Interval: ??&amp;lt;br&amp;gt;&lt;br /&gt;
*Aktuelle Daten: ??&lt;br /&gt;
&lt;br /&gt;
== Wetterwarnungen des DWD ==&lt;br /&gt;
{{Randnotiz|RNTyp=y|RNText=Die Nutzung der Vorhersagedaten wurde vom DWD verändert und ist momentan nicht wie hier beschrieben möglich. Eine Alternative bietet das Modul [[UWZ]]!}}&lt;br /&gt;
Der Deutsche Wetterdienst [http://www.dwd.de DWD] stellt neben diversen Wetterdaten auch Wetterwarnungen bereit. Diese können sehr einfach via [http://fhem.de/commandref_DE.html#weblink weblink iframe] in FHEM eingebunden werden - das ist zwar nicht die schönste Form, aber die schnellste.&lt;br /&gt;
&lt;br /&gt;
Dazu sucht man sich zuerst auf der [http://www.dwd.de/bvbw/appmanager/bvbw/dwdwwwDesktop?_nfpb=true&amp;amp;_pageLabel=_dwdwww_wetter_warnungen_warnungen&amp;amp;T92053gsbDocumentPath=BEA__Navigation%2FWetter__Warnungen%2FWarnungen.html%3F__nnn%3Dtrue&amp;amp;lastPageLabel=dwdwww_wetter_warnungen Warnungsseite des DWD] die eigene Region heraus (in der Karte durchklicken). Die gewünschte URL für Berlin Stadt ist z.B. &amp;lt;code&amp;gt;http://www.dwd.de/dyn/app/ws/html/reports/BXX_warning_de.html#WS_ANCHOR_0&amp;lt;/code&amp;gt;. Das Anhängsel &amp;lt;code&amp;gt;#WS_ANCHOR_0&amp;lt;/code&amp;gt; kann man in der Konfiguration auch weglassen.&lt;br /&gt;
&lt;br /&gt;
Die Einbindung in FHEM sieht dann wie folgt aus:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define dwd_warnmeldung weblink iframe http://www.dwd.de/dyn/app/ws/html/reports/BXX_warning_de.html&lt;br /&gt;
attr dwd_warnmeldung group Wetterwarnungen (DWD)&lt;br /&gt;
attr dwd_warnmeldung htmlattr width=&amp;quot;100%&amp;quot; height=&amp;quot;300&amp;quot; frameborder=&amp;quot;0&amp;quot; marginheight=&amp;quot;0&amp;quot; marginwidth=&amp;quot;0&amp;quot;&lt;br /&gt;
attr dwd_warnmeldung room Wettervorhersage,Startseite&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vorhersage-Diagramm von YR ==&lt;br /&gt;
[http://www.yr.no YR] ist die Seite des norwegischen Wetterdiensts. Er ist zwar nur in Teilen auf Englisch (und gar nicht auf Deutsch) verfügbar, bietet aber sehr gute Wettervorhersagen - auch mit eigenen Vorhersagen für kleine Dörfer. Neben etlichen Detailinfos bietet YR eine sehr schicke 48h-Vorhersage-Grafik. Diese kann sehr einfach via [http://fhem.de/commandref_DE.html#weblink weblink iframe] in FHEM eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
Dazu geht man auf die [http://www.yr.no Startseite von YR] und gibt in das Suchfeld den Namen seines Dörfchens ein - die Ergebnissliste kann ziemlich lang werden, sodass man evtl. sehr genau schauen muss, welches das eigene Kaff ist - bei mir war es an 29. Stelle... ;-) Auf der gewünschten Seite gibt es einen Unterpunkt &amp;quot;Hour by hour&amp;quot;, wo sich die besagte Grafik findet. Hier kopiert man sich einfach die URL der Grafik.&lt;br /&gt;
&lt;br /&gt;
Die Einbindung in FHEM sieht dann bspw. wie folgt aus:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Wetter_yr_Vorhersage weblink iframe http://www.yr.no/place/Germany/Berlin/Berlin/meteogram.png&lt;br /&gt;
attr Wetter_yr_Vorhersage group Wettervorhersage (yr)&lt;br /&gt;
attr Wetter_yr_Vorhersage htmlattr width=&amp;quot;100%&amp;quot; height=&amp;quot;300&amp;quot; frameborder=&amp;quot;0&amp;quot; marginheight=&amp;quot;0&amp;quot; marginwidth=&amp;quot;0&amp;quot;&lt;br /&gt;
attr Wetter_yr_Vorhersage room Wettervorhersage,Start&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Wetter von Weather Underground ==&lt;br /&gt;
{{Randnotiz|RNTyp=y|RNText=Neben dem hier vorgestellten Abruf der Weather Underground-Daten mit [[HTTPMOD]] kann auf Weather Underground-Daten auch mit dem darauf spezialisierten Modul [http://fhem.de/commandref.html#Wunderground Wunderground] zugegriffen werden.}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Dieses Vorgehen ist etwas anspruchsvoller und somit eher für erfahrene FHEM-User geeignet.&lt;br /&gt;
&lt;br /&gt;
[http://www.wunderground.com/ Weather Underground] ist bietet eine sehr umfassende Sammlung aller möglichen offiziellen und privaten (aber teils sehr professionellen) Wetterstationen weltweit. Es besteht eine recht hohe Wahrscheinlichkeit, dass es in der eigenen Umgebung schon eine Wetterstation gibt. Anstatt nun selbst eine komplette Wetterstation aufzubauen, kann man alternativ auf die Daten der Nachbarstation zugreifen.&lt;br /&gt;
&lt;br /&gt;
Dazu sind grundsätzlich die folgenden Schritte notwendig:&lt;br /&gt;
* Finden der geeigneten Station&lt;br /&gt;
* Auswerten der XML-Daten&lt;br /&gt;
* Erstellen passender gplot-Dateien&lt;br /&gt;
&lt;br /&gt;
=== Finden der geeigneten Station ===&lt;br /&gt;
Als erstes geht man auf die [http://www.wunderground.com Startseite von Weather Underground] und gibt in das Suchfeld den Namen seines Dörfchens oder der nächsten Stadt ein - für Berlin landet man bspw. auf Seite für &amp;quot;Berlin Alexanderplatz&amp;quot;. Es gibt aber manchmal sehr viele Wetterstationen in der direkten Umgebung. Diese findet man indem am auf &amp;quot;Change Station&amp;quot; klickt und sich eine passende Station aussucht. Nähere Infos (zB. zur verwendeten Hard- und Software) zu der gewählten Wetterstation erhält man, wenn man auf den Namen der Station klickt und dann auf &amp;quot;About this PWS&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Weather Underground stellt die Daten der Wetterstation auch über eine API als XML bereit, die wir auswerten können. Die entsprechende URL findet sich ebenfalls unter &amp;quot;About this PWS&amp;quot; unter &amp;quot;Download current conditions XML&amp;quot;. Für Berlin Prenzlauer Berg wäre dies bspw. &lt;br /&gt;
&amp;lt;code&amp;gt;http://api.wunderground.com/weatherstation/WXDailyHistory.asp?ID=IBERLIN15&amp;amp;format=XML&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Entscheidend für die jeweilige Station ist der Teil nach &amp;quot;?=ID&amp;quot;, also in diesem Fall &amp;quot;IBERLIN15&amp;quot;. Dieser Teil des Links lässt sich leicht durch die ID einer anderen Station ersetzen und die Suche nach dem entsprechenden Link auf der Seite der Station bleibt erspart.&lt;br /&gt;
&lt;br /&gt;
=== Auswerten der XML-Daten ===&lt;br /&gt;
Die Auswertung der XML-Daten erfolgt via [[HTTPMOD]]. Da dies nicht ganz trivial ist, sind im Folgenden zuerst die wesentlichen Konfigurationsschritte exemplarisch beschrieben. Weiter unten findet sich dann die fertige vollständige Konfiguration.&lt;br /&gt;
&lt;br /&gt;
Es erstes wird das Device HTTPMOD definiert (die 600 am Schluss ist der Aktualisierungszyklus in Sekunden, also alle 10 min):&lt;br /&gt;
:&amp;lt;code&amp;gt;define wetter_prenzelberg HTTPMOD http://api.wunderground.com/weatherstation/WXCurrentObXML.asp?ID=IBERLIN15 600 &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann werden Attribute für alle Readings definiert:&lt;br /&gt;
:&amp;lt;code&amp;gt;attr wetter_prenzelberg userattr readingsName_cloudiness readingsName_date ... &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann wird jedem Attribut ein Name zugewiesen (unter diesem Namen wird der Wert ins Log geschrieben):&lt;br /&gt;
:&amp;lt;code&amp;gt;attr wetter_prenzelberg readingsName_cloudiness cloudiness &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Schluss wird das Reading selbst definiert:&lt;br /&gt;
:&amp;lt;code&amp;gt;attr wetter_prenzelberg readingsRegex_cloudiness cloudiness id=&amp;quot;NN&amp;quot; percent=&amp;quot;([\d\.]+) &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die gesamte Konfiguration für alle von der API angebotenen Wetterwerte sieht dann wie folgt aus:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define wetter_prenzelberg HTTPMOD http://api.wunderground.com/weatherstation/WXCurrentObXML.asp?ID=IBERLIN15 600&lt;br /&gt;
attr wetter_prenzelberg userattr readingsName_cloudiness readingsName_date readingsName_dewpointTemperature readingsName_fog readingsName_heatindex readingsName_humidity readingsName_pressure readingsName_solarRadiation readingsName_solarUV readingsName_temperature readingsName_time readingsName_windChill readingsName_windDegrees readingsName_windDirection readingsName_windGust readingsName_windSpeed readingsRegex_cloudiness readingsRegex_date readingsRegex_dewpointTemperature readingsRegex_fog readingsRegex_heatindex readingsRegex_humidity readingsRegex_pressure readingsRegex_solarRadiation readingsRegex_solarUV readingsRegex_temperature readingsRegex_time readingsRegex_windChill readingsRegex_windDegrees readingsRegex_windDirection readingsRegex_windGust readingsRegex_windSpeed&lt;br /&gt;
attr wetter_prenzelberg readingsName_cloudiness cloudiness&lt;br /&gt;
attr wetter_prenzelberg readingsName_date date&lt;br /&gt;
attr wetter_prenzelberg readingsName_dewpointTemperature dewpointTemperature&lt;br /&gt;
attr wetter_prenzelberg readingsName_fog fog&lt;br /&gt;
attr wetter_prenzelberg readingsName_heatindex heatindex&lt;br /&gt;
attr wetter_prenzelberg readingsName_humidity humidity&lt;br /&gt;
attr wetter_prenzelberg readingsName_pressure pressure&lt;br /&gt;
attr wetter_prenzelberg readingsName_solarRadiation solarRadiation&lt;br /&gt;
attr wetter_prenzelberg readingsName_solarUV solarUV&lt;br /&gt;
attr wetter_prenzelberg readingsName_temperature temperature&lt;br /&gt;
attr wetter_prenzelberg readingsName_time time&lt;br /&gt;
attr wetter_prenzelberg readingsName_windChill windChill&lt;br /&gt;
attr wetter_prenzelberg readingsName_windDegrees windDegrees&lt;br /&gt;
attr wetter_prenzelberg readingsName_windDirection windDirection&lt;br /&gt;
attr wetter_prenzelberg readingsName_windGust windGust&lt;br /&gt;
attr wetter_prenzelberg readingsName_windSpeed windSpeed&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_cloudiness cloudiness id=&amp;quot;NN&amp;quot; percent=&amp;quot;([\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_date date date&amp;quot; content=&amp;quot;([\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_dewpointTemperature &amp;lt;dewpoint_c&amp;gt;(\+|-?[\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_fog fog id=&amp;quot;FOG&amp;quot; percent=&amp;quot;([\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_heatindex &amp;lt;heat_index_c&amp;gt;(\+|-?[\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_humidity &amp;lt;relative_humidity&amp;gt;([\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_pressure &amp;lt;pressure_mb&amp;gt;([\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_solarRadiation &amp;lt;solar_radiation&amp;gt;([\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_solarUV &amp;lt;UV&amp;gt;([\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_temperature &amp;lt;temp_c&amp;gt;(\+|-?[\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_time time Zeit([\d\:]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_windChill &amp;lt;windchill_c&amp;gt;(\+|-?[\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_windDegrees &amp;lt;wind_degrees&amp;gt;([\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_windDirection &amp;lt;wind_dir&amp;gt;([\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_windGust &amp;lt;wind_gust_mph&amp;gt;([\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_windSpeed &amp;lt;wind_mph&amp;gt;([\d\.]+)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Hinweis: Nicht immer werden alle Werte geliefert (wenn keine Sonne, dann kein UV-Wert...). Im System-Log kann das als Fehler auftauchen, ist aber kein Problem.&lt;br /&gt;
&lt;br /&gt;
=== Erstellen passender gplot-Dateien ===&lt;br /&gt;
Um die ausgelesenen Werte als Graphen darstellen zu können müssen eigene gplot-Dateien erstellt werden. Eine grundsätzliche Anleitung dazu findet sich unter [[Creating Plots]]. Deshalb sollen hier nur Beispiele für die eigentlichen gplot-Dateien vorgestellt werden. Beispiele sollten sowohl für [[FileLog]] wie [[DbLog]] funktionieren.&lt;br /&gt;
&lt;br /&gt;
Temperatur und Luftfeuchte:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
#set title &#039;&amp;lt;L1&amp;gt;&#039;&lt;br /&gt;
set title &#039;&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid ytics&lt;br /&gt;
set ylabel &amp;quot;Temperature in C&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Humidity (%)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#FileLog 4:temperature\x3a::&lt;br /&gt;
#FileLog 4:windChill\x3a::&lt;br /&gt;
#FileLog 4:humidity\x3a::&lt;br /&gt;
&lt;br /&gt;
#DbLog &amp;lt;SPEC1&amp;gt;:temperature::&lt;br /&gt;
#DbLog &amp;lt;SPEC1&amp;gt;:windChill::&lt;br /&gt;
#DbLog &amp;lt;SPEC1&amp;gt;:humidity::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Temperatur (C)&#039; ls l0 lw 1.5 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Gefühlte Temperatur (C)&#039; ls l1 lw 1.5 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Luftfeuchtigkeit (%)&#039; ls l2fill lw 0.2 with lines&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wind und Windrichtung:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
&lt;br /&gt;
set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
&lt;br /&gt;
set ytics&lt;br /&gt;
set y2tics (&amp;quot;Nord&amp;quot; 0, &amp;quot;Ost&amp;quot; 80, &amp;quot;S&amp;amp;#252;d&amp;quot; 180, &amp;quot;West&amp;quot; 270, &amp;quot;Nord&amp;quot; 360)&lt;br /&gt;
&lt;br /&gt;
#set title &#039;&amp;lt;L1&amp;gt;&#039;&lt;br /&gt;
set title &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
set grid xtics ytics&lt;br /&gt;
&lt;br /&gt;
set yrange [0:20]&lt;br /&gt;
set y2range [0:360]&lt;br /&gt;
&lt;br /&gt;
set ylabel &amp;quot;Wind (mph)&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Richtung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#FileLog 4:windSpeed:0:&lt;br /&gt;
#FileLog 4:windGust:0:&lt;br /&gt;
#FileLog 4:windDegrees:0:&lt;br /&gt;
&lt;br /&gt;
#DbLog &amp;lt;SPEC1&amp;gt;:windSpeed::&lt;br /&gt;
#DbLog &amp;lt;SPEC1&amp;gt;:windGust::&lt;br /&gt;
#DbLog &amp;lt;SPEC1&amp;gt;:windDegrees::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Wind (mph)&#039; ls l0 lw 1.5 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Böen (mph)&#039; ls l1 lw 1.5 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Windrichtung (°)&#039; ls l2fill lw 0.2 with points&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sonnenintensität und UV-Werte:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
&lt;br /&gt;
set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
&lt;br /&gt;
set ytics&lt;br /&gt;
set y2tics&lt;br /&gt;
&lt;br /&gt;
#set title &#039;&amp;lt;L1&amp;gt;&#039;&lt;br /&gt;
set title &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
set grid xtics ytics&lt;br /&gt;
&lt;br /&gt;
set ylabel &amp;quot;Sonnenstrahlung (W/qm)&amp;quot;&lt;br /&gt;
set y2label &amp;quot;UV&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#FileLog 4:solarRadiation:0:&lt;br /&gt;
#FileLog 4:solarUV:0:&lt;br /&gt;
&lt;br /&gt;
#DbLog &amp;lt;SPEC1&amp;gt;:solarRadiation::&lt;br /&gt;
#DbLog &amp;lt;SPEC1&amp;gt;:solarUV::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Strahlung&#039; ls l0 lw 1.5 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;UV&#039; ls l1 lw 1.5 with lines&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Weitere TBD&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Vergangene Daten abfragen ===&lt;br /&gt;
Ein konkretes vergangenes Datum der Wetterstation kann man übrigens auch abrufen - für den 28.11.2014 wäre dies bspw. &lt;br /&gt;
&amp;lt;code&amp;gt;http://www.wunderground.com/weatherstation/WXDailyHistory.asp?ID=IBERLIN15&amp;amp;day=28&amp;amp;month=11&amp;amp;year=2014&amp;amp;graphspan=day&amp;amp;format=1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Eigene Wetterdaten hochladen ===&lt;br /&gt;
{{Randnotiz|RNTyp=g|RNText=Unterstützung für das Modul gibt es im dazugehörigen {{Link2Forum|Topic=65587|LinkText=Forumsthread }}.}}&lt;br /&gt;
&lt;br /&gt;
Wer eigene Wetterdaten hochladen will, kann hierzu das Modul [http://fhem.de/commandref.html#WUup WUup] verwenden. Dazu benötigt man die Zugangsdaten (stationID und Paßwort) für eine eigene Wetterstation. Mit dem Modul können die meisten vom [http://wiki.wunderground.com/index.php/PWS_-_Upload_Protocol PWS Upload Protocol] unterstützten Daten hochgeladen werden:&lt;br /&gt;
* Winddir - [0-360 momentane Windrichtung]&lt;br /&gt;
* Windspeedmph - [mph momentane Windgeschwindigkeit]&lt;br /&gt;
* Windgustmph - [mph aktuellen Böe, mit Software-spezifischem Zeitraum]&lt;br /&gt;
* Windgustdir - [0-360 mit Software-spezifischer Zeit]&lt;br /&gt;
* Windspdmph_avg2m - [mph durchschnittliche Windgeschwindigkeit innerhalb 2 Minuten]&lt;br /&gt;
* Winddir_avg2m - [0-360 durchschnittliche Windrichtung innerhalb 2 Minuten]&lt;br /&gt;
* Windgustmph_10m - [mph Böen der vergangenen 10 Minuten]&lt;br /&gt;
* Windgustdir_10m - [0-360 Richtung der Böen der letzten 10 Minuten]&lt;br /&gt;
* Feuchtigkeit - [% Außenfeuchtigkeit 0-100%]&lt;br /&gt;
* Dewptf- [F Taupunkt im Freien]&lt;br /&gt;
* Tempf - [F Außentemperatur]&lt;br /&gt;
* Rainin - [in Regen in der vergangenen Stunde]&lt;br /&gt;
* Dailyrainin - [in Regenmenge bisher heute]&lt;br /&gt;
* Baromin - [inHg barometrischer Druck]&lt;br /&gt;
* Soiltempf - [F Bodentemperatur]&lt;br /&gt;
* Bodenfeuchtigkeit - [%]&lt;br /&gt;
* Solarradiation - [W/m²]&lt;br /&gt;
* UV - [Index]&lt;br /&gt;
&lt;br /&gt;
Die Werte werden im Modul für Wunderground ins anglo-amerikanische System umgerechnet. Temperaturen werden also automatisch von °Celsius in Fahrenheit, Windgeschwindigkeiten von km/h in mph, mm in Inch und der barometrische Druck von hPa in inHg umgerechnet.&lt;br /&gt;
&lt;br /&gt;
== Wetternetzwerk auf wetter.com ==&lt;br /&gt;
Ein vollständiges Beispiel zur Nutzung der Informationen über die Regenmenge (Station 1445, Weinheim) von wetter.com ist in {{Link2Forum|Topic=39600|Message=332837|LinkText=diesem Forenbeitrag}} beschrieben.&lt;br /&gt;
&lt;br /&gt;
== Wetter von netatmo ==&lt;br /&gt;
Das FHEM-Modul [[netatmo]] ermöglicht den Datenimport von privaten und öffentlichen netatmo Wetterstationen. Eine Übersicht über die verfügbaren öffentlichen Stationen findet sich auf der Seite [http://www.netatmo.com/de-DE/weathermap Weathermap]. Die meisten öffentlichen Stationen liefern Temperatur, Luftfeuchte und Luftdruck, einige auch Wind, Regen und Daten zur Luftqualität (CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* {{Link2Forum|Topic=33610}} mit Sammlung und Beipielen von Internet-Links für die Anzeige von teilweise animierten Wetterbildern&lt;br /&gt;
* [http://bloglich.de/art/rpi/wetterdaten-auf-dem-raspberry-pi-in-fhem/ Beispiel in Blog(de)]&lt;br /&gt;
* [[HTTPMOD]]&lt;br /&gt;
* [[GDS|Modul GDS]] zum Auslesen von DWD-Daten&lt;br /&gt;
* [https://waschto.eu/wetterdienste-in-fhem-einbinden/ How-To: Wetterdienste in FHEM einbinden]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Code Snippets]]&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
[[Kategorie:Wetterstationen]] &amp;lt;!-- eigentlich eine &amp;quot;Hardware-Kategorie&amp;quot;, passt aber trotzdem --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Waschto</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Wetter_und_Wettervorhersagen&amp;diff=23089</id>
		<title>Wetter und Wettervorhersagen</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Wetter_und_Wettervorhersagen&amp;diff=23089"/>
		<updated>2017-10-29T16:51:19Z</updated>

		<summary type="html">&lt;p&gt;Waschto: Link zum Wetterdienste in FHEM einbinden&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wetterdaten und Wettervorhersagen können auf verschiedene Weise in FHEM eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
== Yahoo-Wetter ==&lt;br /&gt;
Für die einfache Einbindung des Yahoo-Wetters gibt es das spezielle Modul [[Weather]].&lt;br /&gt;
&lt;br /&gt;
== Unwetterzentrale ==&lt;br /&gt;
Informationen der Seite(n) Unwetterzentrale.de können mit Hilfe des Moduls [[UWZ]] eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
== Modul OPENWEATHER ==&lt;br /&gt;
Das Modul [[OPENWEATHER]] extrahiert Wetterdaten über die &amp;quot;openweather&amp;quot;-Schnittstelle (API) von www.wetter.com. &lt;br /&gt;
*Vorschau-Zeitraum: 3 Tage&lt;br /&gt;
*Vorschau-Interval: 6:00, 11:00, 17:00, 23:00&lt;br /&gt;
*Aktuelle Daten: keine&lt;br /&gt;
&lt;br /&gt;
== Modul PROPLANTA ==&lt;br /&gt;
Das Modul [[PROPLANTA]] extrahiert Wetterdaten von der Website www.proplanta.de. (keine API)&lt;br /&gt;
*Vorschau-Zeitraum: 12 Tage&lt;br /&gt;
*Vorschau-Interval: 3 h&lt;br /&gt;
*Aktuelle Daten: jede volle Stunde&lt;br /&gt;
&lt;br /&gt;
== Modul WWO ==&lt;br /&gt;
Das Modul extrahiert Wetterdaten über die (alte) API von worldweatheronline.com&lt;br /&gt;
*Vorschau-Zeitraum: ?? Tage&amp;lt;BR&amp;gt;&lt;br /&gt;
*Vorschau-Interval: ??&amp;lt;br&amp;gt;&lt;br /&gt;
*Aktuelle Daten: ??&lt;br /&gt;
&lt;br /&gt;
== Wetterwarnungen des DWD ==&lt;br /&gt;
{{Randnotiz|RNTyp=y|RNText=Die Nutzung der Vorhersagedaten wurde vom DWD verändert und ist momentan nicht wie hier beschrieben möglich. Eine Alternative bietet das Modul [[UWZ]]!}}&lt;br /&gt;
Der Deutsche Wetterdienst [http://www.dwd.de DWD] stellt neben diversen Wetterdaten auch Wetterwarnungen bereit. Diese können sehr einfach via [http://fhem.de/commandref_DE.html#weblink weblink iframe] in FHEM eingebunden werden - das ist zwar nicht die schönste Form, aber die schnellste.&lt;br /&gt;
&lt;br /&gt;
Dazu sucht man sich zuerst auf der [http://www.dwd.de/bvbw/appmanager/bvbw/dwdwwwDesktop?_nfpb=true&amp;amp;_pageLabel=_dwdwww_wetter_warnungen_warnungen&amp;amp;T92053gsbDocumentPath=BEA__Navigation%2FWetter__Warnungen%2FWarnungen.html%3F__nnn%3Dtrue&amp;amp;lastPageLabel=dwdwww_wetter_warnungen Warnungsseite des DWD] die eigene Region heraus (in der Karte durchklicken). Die gewünschte URL für Berlin Stadt ist z.B. &amp;lt;code&amp;gt;http://www.dwd.de/dyn/app/ws/html/reports/BXX_warning_de.html#WS_ANCHOR_0&amp;lt;/code&amp;gt;. Das Anhängsel &amp;lt;code&amp;gt;#WS_ANCHOR_0&amp;lt;/code&amp;gt; kann man in der Konfiguration auch weglassen.&lt;br /&gt;
&lt;br /&gt;
Die Einbindung in FHEM sieht dann wie folgt aus:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define dwd_warnmeldung weblink iframe http://www.dwd.de/dyn/app/ws/html/reports/BXX_warning_de.html&lt;br /&gt;
attr dwd_warnmeldung group Wetterwarnungen (DWD)&lt;br /&gt;
attr dwd_warnmeldung htmlattr width=&amp;quot;100%&amp;quot; height=&amp;quot;300&amp;quot; frameborder=&amp;quot;0&amp;quot; marginheight=&amp;quot;0&amp;quot; marginwidth=&amp;quot;0&amp;quot;&lt;br /&gt;
attr dwd_warnmeldung room Wettervorhersage,Startseite&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vorhersage-Diagramm von YR ==&lt;br /&gt;
[http://www.yr.no YR] ist die Seite des norwegischen Wetterdiensts. Er ist zwar nur in Teilen auf Englisch (und gar nicht auf Deutsch) verfügbar, bietet aber sehr gute Wettervorhersagen - auch mit eigenen Vorhersagen für kleine Dörfer. Neben etlichen Detailinfos bietet YR eine sehr schicke 48h-Vorhersage-Grafik. Diese kann sehr einfach via [http://fhem.de/commandref_DE.html#weblink weblink iframe] in FHEM eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
Dazu geht man auf die [http://www.yr.no Startseite von YR] und gibt in das Suchfeld den Namen seines Dörfchens ein - die Ergebnissliste kann ziemlich lang werden, sodass man evtl. sehr genau schauen muss, welches das eigene Kaff ist - bei mir war es an 29. Stelle... ;-) Auf der gewünschten Seite gibt es einen Unterpunkt &amp;quot;Hour by hour&amp;quot;, wo sich die besagte Grafik findet. Hier kopiert man sich einfach die URL der Grafik.&lt;br /&gt;
&lt;br /&gt;
Die Einbindung in FHEM sieht dann bspw. wie folgt aus:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Wetter_yr_Vorhersage weblink iframe http://www.yr.no/place/Germany/Berlin/Berlin/meteogram.png&lt;br /&gt;
attr Wetter_yr_Vorhersage group Wettervorhersage (yr)&lt;br /&gt;
attr Wetter_yr_Vorhersage htmlattr width=&amp;quot;100%&amp;quot; height=&amp;quot;300&amp;quot; frameborder=&amp;quot;0&amp;quot; marginheight=&amp;quot;0&amp;quot; marginwidth=&amp;quot;0&amp;quot;&lt;br /&gt;
attr Wetter_yr_Vorhersage room Wettervorhersage,Start&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Wetter von Weather Underground ==&lt;br /&gt;
{{Randnotiz|RNTyp=y|RNText=Neben dem hier vorgestellten Abruf der Weather Underground-Daten mit [[HTTPMOD]] kann auf Weather Underground-Daten auch mit dem darauf spezialisierten Modul [http://fhem.de/commandref.html#Wunderground Wunderground] zugegriffen werden.}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Dieses Vorgehen ist etwas anspruchsvoller und somit eher für erfahrene FHEM-User geeignet.&lt;br /&gt;
&lt;br /&gt;
[http://www.wunderground.com/ Weather Underground] ist bietet eine sehr umfassende Sammlung aller möglichen offiziellen und privaten (aber teils sehr professionellen) Wetterstationen weltweit. Es besteht eine recht hohe Wahrscheinlichkeit, dass es in der eigenen Umgebung schon eine Wetterstation gibt. Anstatt nun selbst eine komplette Wetterstation aufzubauen, kann man alternativ auf die Daten der Nachbarstation zugreifen.&lt;br /&gt;
&lt;br /&gt;
Dazu sind grundsätzlich die folgenden Schritte notwendig:&lt;br /&gt;
* Finden der geeigneten Station&lt;br /&gt;
* Auswerten der XML-Daten&lt;br /&gt;
* Erstellen passender gplot-Dateien&lt;br /&gt;
&lt;br /&gt;
=== Finden der geeigneten Station ===&lt;br /&gt;
Als erstes geht man auf die [http://www.wunderground.com Startseite von Weather Underground] und gibt in das Suchfeld den Namen seines Dörfchens oder der nächsten Stadt ein - für Berlin landet man bspw. auf Seite für &amp;quot;Berlin Alexanderplatz&amp;quot;. Es gibt aber manchmal sehr viele Wetterstationen in der direkten Umgebung. Diese findet man indem am auf &amp;quot;Change Station&amp;quot; klickt und sich eine passende Station aussucht. Nähere Infos (zB. zur verwendeten Hard- und Software) zu der gewählten Wetterstation erhält man, wenn man auf den Namen der Station klickt und dann auf &amp;quot;About this PWS&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Weather Underground stellt die Daten der Wetterstation auch über eine API als XML bereit, die wir auswerten können. Die entsprechende URL findet sich ebenfalls unter &amp;quot;About this PWS&amp;quot; unter &amp;quot;Download current conditions XML&amp;quot;. Für Berlin Prenzlauer Berg wäre dies bspw. &lt;br /&gt;
&amp;lt;code&amp;gt;http://api.wunderground.com/weatherstation/WXDailyHistory.asp?ID=IBERLIN15&amp;amp;format=XML&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Entscheidend für die jeweilige Station ist der Teil nach &amp;quot;?=ID&amp;quot;, also in diesem Fall &amp;quot;IBERLIN15&amp;quot;. Dieser Teil des Links lässt sich leicht durch die ID einer anderen Station ersetzen und die Suche nach dem entsprechenden Link auf der Seite der Station bleibt erspart.&lt;br /&gt;
&lt;br /&gt;
=== Auswerten der XML-Daten ===&lt;br /&gt;
Die Auswertung der XML-Daten erfolgt via [[HTTPMOD]]. Da dies nicht ganz trivial ist, sind im Folgenden zuerst die wesentlichen Konfigurationsschritte exemplarisch beschrieben. Weiter unten findet sich dann die fertige vollständige Konfiguration.&lt;br /&gt;
&lt;br /&gt;
Es erstes wird das Device HTTPMOD definiert (die 600 am Schluss ist der Aktualisierungszyklus in Sekunden, also alle 10 min):&lt;br /&gt;
:&amp;lt;code&amp;gt;define wetter_prenzelberg HTTPMOD http://api.wunderground.com/weatherstation/WXCurrentObXML.asp?ID=IBERLIN15 600 &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann werden Attribute für alle Readings definiert:&lt;br /&gt;
:&amp;lt;code&amp;gt;attr wetter_prenzelberg userattr readingsName_cloudiness readingsName_date ... &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann wird jedem Attribut ein Name zugewiesen (unter diesem Namen wird der Wert ins Log geschrieben):&lt;br /&gt;
:&amp;lt;code&amp;gt;attr wetter_prenzelberg readingsName_cloudiness cloudiness &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Schluss wird das Reading selbst definiert:&lt;br /&gt;
:&amp;lt;code&amp;gt;attr wetter_prenzelberg readingsRegex_cloudiness cloudiness id=&amp;quot;NN&amp;quot; percent=&amp;quot;([\d\.]+) &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die gesamte Konfiguration für alle von der API angebotenen Wetterwerte sieht dann wie folgt aus:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define wetter_prenzelberg HTTPMOD http://api.wunderground.com/weatherstation/WXCurrentObXML.asp?ID=IBERLIN15 600&lt;br /&gt;
attr wetter_prenzelberg userattr readingsName_cloudiness readingsName_date readingsName_dewpointTemperature readingsName_fog readingsName_heatindex readingsName_humidity readingsName_pressure readingsName_solarRadiation readingsName_solarUV readingsName_temperature readingsName_time readingsName_windChill readingsName_windDegrees readingsName_windDirection readingsName_windGust readingsName_windSpeed readingsRegex_cloudiness readingsRegex_date readingsRegex_dewpointTemperature readingsRegex_fog readingsRegex_heatindex readingsRegex_humidity readingsRegex_pressure readingsRegex_solarRadiation readingsRegex_solarUV readingsRegex_temperature readingsRegex_time readingsRegex_windChill readingsRegex_windDegrees readingsRegex_windDirection readingsRegex_windGust readingsRegex_windSpeed&lt;br /&gt;
attr wetter_prenzelberg readingsName_cloudiness cloudiness&lt;br /&gt;
attr wetter_prenzelberg readingsName_date date&lt;br /&gt;
attr wetter_prenzelberg readingsName_dewpointTemperature dewpointTemperature&lt;br /&gt;
attr wetter_prenzelberg readingsName_fog fog&lt;br /&gt;
attr wetter_prenzelberg readingsName_heatindex heatindex&lt;br /&gt;
attr wetter_prenzelberg readingsName_humidity humidity&lt;br /&gt;
attr wetter_prenzelberg readingsName_pressure pressure&lt;br /&gt;
attr wetter_prenzelberg readingsName_solarRadiation solarRadiation&lt;br /&gt;
attr wetter_prenzelberg readingsName_solarUV solarUV&lt;br /&gt;
attr wetter_prenzelberg readingsName_temperature temperature&lt;br /&gt;
attr wetter_prenzelberg readingsName_time time&lt;br /&gt;
attr wetter_prenzelberg readingsName_windChill windChill&lt;br /&gt;
attr wetter_prenzelberg readingsName_windDegrees windDegrees&lt;br /&gt;
attr wetter_prenzelberg readingsName_windDirection windDirection&lt;br /&gt;
attr wetter_prenzelberg readingsName_windGust windGust&lt;br /&gt;
attr wetter_prenzelberg readingsName_windSpeed windSpeed&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_cloudiness cloudiness id=&amp;quot;NN&amp;quot; percent=&amp;quot;([\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_date date date&amp;quot; content=&amp;quot;([\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_dewpointTemperature &amp;lt;dewpoint_c&amp;gt;(\+|-?[\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_fog fog id=&amp;quot;FOG&amp;quot; percent=&amp;quot;([\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_heatindex &amp;lt;heat_index_c&amp;gt;(\+|-?[\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_humidity &amp;lt;relative_humidity&amp;gt;([\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_pressure &amp;lt;pressure_mb&amp;gt;([\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_solarRadiation &amp;lt;solar_radiation&amp;gt;([\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_solarUV &amp;lt;UV&amp;gt;([\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_temperature &amp;lt;temp_c&amp;gt;(\+|-?[\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_time time Zeit([\d\:]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_windChill &amp;lt;windchill_c&amp;gt;(\+|-?[\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_windDegrees &amp;lt;wind_degrees&amp;gt;([\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_windDirection &amp;lt;wind_dir&amp;gt;([\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_windGust &amp;lt;wind_gust_mph&amp;gt;([\d\.]+)&lt;br /&gt;
attr wetter_prenzelberg readingsRegex_windSpeed &amp;lt;wind_mph&amp;gt;([\d\.]+)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Hinweis: Nicht immer werden alle Werte geliefert (wenn keine Sonne, dann kein UV-Wert...). Im System-Log kann das als Fehler auftauchen, ist aber kein Problem.&lt;br /&gt;
&lt;br /&gt;
=== Erstellen passender gplot-Dateien ===&lt;br /&gt;
Um die ausgelesenen Werte als Graphen darstellen zu können müssen eigene gplot-Dateien erstellt werden. Eine grundsätzliche Anleitung dazu findet sich unter [[Creating Plots]]. Deshalb sollen hier nur Beispiele für die eigentlichen gplot-Dateien vorgestellt werden. Beispiele sollten sowohl für [[FileLog]] wie [[DbLog]] funktionieren.&lt;br /&gt;
&lt;br /&gt;
Temperatur und Luftfeuchte:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
#set title &#039;&amp;lt;L1&amp;gt;&#039;&lt;br /&gt;
set title &#039;&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid ytics&lt;br /&gt;
set ylabel &amp;quot;Temperature in C&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Humidity (%)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#FileLog 4:temperature\x3a::&lt;br /&gt;
#FileLog 4:windChill\x3a::&lt;br /&gt;
#FileLog 4:humidity\x3a::&lt;br /&gt;
&lt;br /&gt;
#DbLog &amp;lt;SPEC1&amp;gt;:temperature::&lt;br /&gt;
#DbLog &amp;lt;SPEC1&amp;gt;:windChill::&lt;br /&gt;
#DbLog &amp;lt;SPEC1&amp;gt;:humidity::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Temperatur (C)&#039; ls l0 lw 1.5 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Gefühlte Temperatur (C)&#039; ls l1 lw 1.5 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Luftfeuchtigkeit (%)&#039; ls l2fill lw 0.2 with lines&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wind und Windrichtung:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
&lt;br /&gt;
set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
&lt;br /&gt;
set ytics&lt;br /&gt;
set y2tics (&amp;quot;Nord&amp;quot; 0, &amp;quot;Ost&amp;quot; 80, &amp;quot;S&amp;amp;#252;d&amp;quot; 180, &amp;quot;West&amp;quot; 270, &amp;quot;Nord&amp;quot; 360)&lt;br /&gt;
&lt;br /&gt;
#set title &#039;&amp;lt;L1&amp;gt;&#039;&lt;br /&gt;
set title &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
set grid xtics ytics&lt;br /&gt;
&lt;br /&gt;
set yrange [0:20]&lt;br /&gt;
set y2range [0:360]&lt;br /&gt;
&lt;br /&gt;
set ylabel &amp;quot;Wind (mph)&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Richtung&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#FileLog 4:windSpeed:0:&lt;br /&gt;
#FileLog 4:windGust:0:&lt;br /&gt;
#FileLog 4:windDegrees:0:&lt;br /&gt;
&lt;br /&gt;
#DbLog &amp;lt;SPEC1&amp;gt;:windSpeed::&lt;br /&gt;
#DbLog &amp;lt;SPEC1&amp;gt;:windGust::&lt;br /&gt;
#DbLog &amp;lt;SPEC1&amp;gt;:windDegrees::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Wind (mph)&#039; ls l0 lw 1.5 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Böen (mph)&#039; ls l1 lw 1.5 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Windrichtung (°)&#039; ls l2fill lw 0.2 with points&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sonnenintensität und UV-Werte:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
&lt;br /&gt;
set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
&lt;br /&gt;
set ytics&lt;br /&gt;
set y2tics&lt;br /&gt;
&lt;br /&gt;
#set title &#039;&amp;lt;L1&amp;gt;&#039;&lt;br /&gt;
set title &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
set grid xtics ytics&lt;br /&gt;
&lt;br /&gt;
set ylabel &amp;quot;Sonnenstrahlung (W/qm)&amp;quot;&lt;br /&gt;
set y2label &amp;quot;UV&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#FileLog 4:solarRadiation:0:&lt;br /&gt;
#FileLog 4:solarUV:0:&lt;br /&gt;
&lt;br /&gt;
#DbLog &amp;lt;SPEC1&amp;gt;:solarRadiation::&lt;br /&gt;
#DbLog &amp;lt;SPEC1&amp;gt;:solarUV::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Strahlung&#039; ls l0 lw 1.5 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;UV&#039; ls l1 lw 1.5 with lines&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Weitere TBD&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Vergangene Daten abfragen ===&lt;br /&gt;
Ein konkretes vergangenes Datum der Wetterstation kann man übrigens auch abrufen - für den 28.11.2014 wäre dies bspw. &lt;br /&gt;
&amp;lt;code&amp;gt;http://www.wunderground.com/weatherstation/WXDailyHistory.asp?ID=IBERLIN15&amp;amp;day=28&amp;amp;month=11&amp;amp;year=2014&amp;amp;graphspan=day&amp;amp;format=1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Eigene Wetterdaten hochladen ===&lt;br /&gt;
{{Randnotiz|RNTyp=g|RNText=Unterstützung für das Modul gibt es im dazugehörigen {{Link2Forum|Topic=65587|LinkText=Forumsthread }}.}}&lt;br /&gt;
&lt;br /&gt;
Wer eigene Wetterdaten hochladen will, kann hierzu das Modul [http://fhem.de/commandref.html#WUup WUup] verwenden. Dazu benötigt man die Zugangsdaten (stationID und Paßwort) für eine eigene Wetterstation. Mit dem Modul können die meisten vom [http://wiki.wunderground.com/index.php/PWS_-_Upload_Protocol PWS Upload Protocol] unterstützten Daten hochgeladen werden:&lt;br /&gt;
* Winddir - [0-360 momentane Windrichtung]&lt;br /&gt;
* Windspeedmph - [mph momentane Windgeschwindigkeit]&lt;br /&gt;
* Windgustmph - [mph aktuellen Böe, mit Software-spezifischem Zeitraum]&lt;br /&gt;
* Windgustdir - [0-360 mit Software-spezifischer Zeit]&lt;br /&gt;
* Windspdmph_avg2m - [mph durchschnittliche Windgeschwindigkeit innerhalb 2 Minuten]&lt;br /&gt;
* Winddir_avg2m - [0-360 durchschnittliche Windrichtung innerhalb 2 Minuten]&lt;br /&gt;
* Windgustmph_10m - [mph Böen der vergangenen 10 Minuten]&lt;br /&gt;
* Windgustdir_10m - [0-360 Richtung der Böen der letzten 10 Minuten]&lt;br /&gt;
* Feuchtigkeit - [% Außenfeuchtigkeit 0-100%]&lt;br /&gt;
* Dewptf- [F Taupunkt im Freien]&lt;br /&gt;
* Tempf - [F Außentemperatur]&lt;br /&gt;
* Rainin - [in Regen in der vergangenen Stunde]&lt;br /&gt;
* Dailyrainin - [in Regenmenge bisher heute]&lt;br /&gt;
* Baromin - [inHg barometrischer Druck]&lt;br /&gt;
* Soiltempf - [F Bodentemperatur]&lt;br /&gt;
* Bodenfeuchtigkeit - [%]&lt;br /&gt;
* Solarradiation - [W/m²]&lt;br /&gt;
* UV - [Index]&lt;br /&gt;
&lt;br /&gt;
Die Werte werden im Modul für Wunderground ins anglo-amerikanische System umgerechnet. Temperaturen werden also automatisch von °Celsius in Fahrenheit, Windgeschwindigkeiten von km/h in mph, mm in Inch und der barometrische Druck von hPa in inHg umgerechnet.&lt;br /&gt;
&lt;br /&gt;
== Wetternetzwerk auf wetter.com ==&lt;br /&gt;
Ein vollständiges Beispiel zur Nutzung der Informationen über die Regenmenge (Station 1445, Weinheim) von wetter.com ist in {{Link2Forum|Topic=39600|Message=332837|LinkText=diesem Forenbeitrag}} beschrieben.&lt;br /&gt;
&lt;br /&gt;
== Wetter von netatmo ==&lt;br /&gt;
Das FHEM-Modul [[netatmo]] ermöglicht den Datenimport von privaten und öffentlichen netatmo Wetterstationen. Eine Übersicht über die verfügbaren öffentlichen Stationen findet sich auf der Seite [http://www.netatmo.com/de-DE/weathermap Weathermap]. Die meisten öffentlichen Stationen liefern Temperatur, Luftfeuchte und Luftdruck, einige auch Wind, Regen und Daten zur Luftqualität (CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* {{Link2Forum|Topic=33610}} mit Sammlung und Beipielen von Internet-Links für die Anzeige von teilweise animierten Wetterbildern&lt;br /&gt;
* [http://bloglich.de/art/rpi/wetterdaten-auf-dem-raspberry-pi-in-fhem/ Beispiel in Blog(de)]&lt;br /&gt;
* [[HTTPMOD]]&lt;br /&gt;
* [[GDS|Modul GDS]] zum Auslesen von DWD-Daten&lt;br /&gt;
* [https://waschto.eu/wetterdienste-in-fhem-einbinden/ Wetterdienste in FHEM einbinden]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Code Snippets]]&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
[[Kategorie:Wetterstationen]] &amp;lt;!-- eigentlich eine &amp;quot;Hardware-Kategorie&amp;quot;, passt aber trotzdem --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Waschto</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=RandomTimer&amp;diff=22536</id>
		<title>RandomTimer</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=RandomTimer&amp;diff=22536"/>
		<updated>2017-09-10T19:46:18Z</updated>

		<summary type="html">&lt;p&gt;Waschto: Link zu einem HowTo hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=Generierung von &amp;quot;Zufallszeiten&amp;quot;&lt;br /&gt;
|ModType=h&lt;br /&gt;
|ModForumArea=Unterstützende Dienste/Kalendermodule&lt;br /&gt;
|ModTechName=98_RandomTimer.pm&lt;br /&gt;
|ModOwner=dietmar63&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[RandomTimer]] ist ein Hilfsmodul, mit dem in einem bestimmten Zeitraum zu zufälligen Zeitpunkten Schaltvorgänge ausgelöst werden können (ähnlich der Funktionalität der FS20 ZSU).&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen ==&lt;br /&gt;
Keine speziellen Voraussetzungen erforderlich.&lt;br /&gt;
&lt;br /&gt;
== Anwendung ==&lt;br /&gt;
&lt;br /&gt;
=== Define ===&lt;br /&gt;
Die Syntax für die Definition eines RandomTimer:&lt;br /&gt;
:&amp;lt;code&amp;gt;define &amp;lt;name&amp;gt; RandomTimer &amp;lt;timespec_start&amp;gt; &amp;lt;device&amp;gt; &amp;lt;timespec_stop&amp;gt; [&amp;lt;timeToSwitch&amp;gt;]&amp;lt;/code&amp;gt;&lt;br /&gt;
Parameterbedeutung:&lt;br /&gt;
;name&lt;br /&gt;
:Eindeutiger Name des anzulegenden RandomTimer.&lt;br /&gt;
;timespec_start&lt;br /&gt;
:Zeitpunkt, ab wann der Timer aktiv ist, im Format &#039;&#039;HH:MM:SS&#039;&#039;.&lt;br /&gt;
;device&lt;br /&gt;
:Der Name des Gerätes, das zu schalten ist.&lt;br /&gt;
;timespec_stop&lt;br /&gt;
:Zeitpunkt, ab wann der Timer nicht mehr aktiv ist, im Format &#039;&#039;HH:MM:SS&#039;&#039;.&lt;br /&gt;
;timeToSwitch &lt;br /&gt;
:Zeit zwischen zwei An- und Aus-Schaltvorgängen; Angabe in Sekunden zwischen 10 und 9999&lt;br /&gt;
&lt;br /&gt;
=== Attribute ===&lt;br /&gt;
RandomTimer unterstützt die folgenden Attribute:&lt;br /&gt;
;disableCond&lt;br /&gt;
:Bedingungen, unter denen der RandomTimer nicht aktiv wird &amp;lt;br /&amp;gt;Beispiel: &amp;lt;code&amp;gt;(!isVerreist())&amp;lt;/code&amp;gt; würde bedeuten, dass der RandomTimer nur aktiv wird, wenn der Status auf eine Abwesenheit hinweist.&lt;br /&gt;
;keepDeviceAlive&lt;br /&gt;
:Wenn dieses Attribut gesetzt ist, wird das Gerät bei Erreichen der Ende-Zeit nicht ausgeschaltet&lt;br /&gt;
;onCmd&lt;br /&gt;
:Befehl, der als &#039;&#039;&#039;Ein&#039;&#039;&#039;schaltbefehl verwendet werden soll (Standardwert: &amp;lt;code&amp;gt;set &amp;lt;device&amp;gt; on&amp;lt;/code&amp;gt;)&lt;br /&gt;
;offCmd&lt;br /&gt;
:Befehl, der als &#039;&#039;&#039;Aus&#039;&#039;&#039;schaltbefehl verwendet werden soll (Standardwert: &amp;lt;code&amp;gt;set &amp;lt;device&amp;gt; off&amp;lt;/code&amp;gt;)&lt;br /&gt;
;runonce&lt;br /&gt;
:Legt fest, ob ... (ist in der commandref (noch?) nicht beschrieben)&lt;br /&gt;
;switchmode nnn/nnn&lt;br /&gt;
:Wahrscheinlichkeit (in Promille), dass der on- bzw. off-Befehl wirklich gesendet wird. Standardwert: 800/200&lt;br /&gt;
&lt;br /&gt;
== Anwendungsbeispiel(e) ==&lt;br /&gt;
Ein mit &lt;br /&gt;
:&amp;lt;code&amp;gt;define ZufallsTimerTisch RandomTimer *{sunset_abs()} StehlampeTisch *{sunset_abs(3*3600)} 480&amp;lt;/code&amp;gt;&lt;br /&gt;
definierter RandomTimer beginnt bei &#039;&#039;&#039;Sonnenuntergang&#039;&#039;&#039; das Gerät &#039;&#039;&#039;StehlampeTisch&#039;&#039;&#039; alle &#039;&#039;&#039;480 Sekunden&#039;&#039;&#039; Ein- bzw. Auszuschalten. Diese Schaltvorgänge stoppen &#039;&#039;&#039;3 Stunden&#039;&#039;&#039; nach &#039;&#039;&#039;Sonnenuntergang&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* {{Link2Forum|Topic=14010|LinkText=Thread}} im Fhem Forum&lt;br /&gt;
* [https://waschto.eu/anwesenheitssimulation-zufaelliges-schalten-von-licht/ How-To: Anwesenheitssimulation mit dem RandomTimer]&lt;/div&gt;</summary>
		<author><name>Waschto</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=WeekdayTimer&amp;diff=22535</id>
		<title>WeekdayTimer</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=WeekdayTimer&amp;diff=22535"/>
		<updated>2017-09-10T19:44:00Z</updated>

		<summary type="html">&lt;p&gt;Waschto: Link zu einem HowTo hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Todo|Der Commandref-Abschnitt zu diesem Modul enthält noch einige Fehler und Ungenauigkeiten, die im Zusammenhang mit der Ausarbeitung dieser Wiki-Seite korrigiert werden sollten. Auf dieser Seite fehlen insbesondere noch Anwendungsbeispiele mit Screenshots sowie die Beschreibung von Besonderheiten wie die vereinfachte/integrierte Unterstützung von enable/disable.}}&lt;br /&gt;
&lt;br /&gt;
{{Infobox Modul&lt;br /&gt;
|ModPurpose=Definition von Wochen-Zeitschaltplänen&lt;br /&gt;
|ModType=h&lt;br /&gt;
|ModForumArea=Unterstuetzende Dienste&lt;br /&gt;
|ModTechName=98_WeekdayTimer.pm&lt;br /&gt;
|ModOwner={{Link2FU|405|Dietmar63}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[WeekdayTimer]] ist ein Hilfsmodul zur Erstellung von (Wochen-)Zeitschaltplänen für Geräte.&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen ==&lt;br /&gt;
Keine.&lt;br /&gt;
&lt;br /&gt;
== Anwendung ==&lt;br /&gt;
=== Define ===&lt;br /&gt;
Ein WeekdayTimer wird angelegt mittels&lt;br /&gt;
:&amp;lt;code&amp;gt;define &#039;&#039;meinWDT&#039;&#039; WeekdayTimer &#039;&#039;meinDevice&#039;&#039; &amp;lt;nowiki&amp;gt;&amp;lt;profil&amp;gt;&amp;lt;/nowiki&amp;gt; ...&amp;lt;/code&amp;gt;&lt;br /&gt;
Details: siehe commandref&lt;br /&gt;
&lt;br /&gt;
=== Attribute ===&lt;br /&gt;
Siehe commandref.&lt;br /&gt;
&lt;br /&gt;
== Anwendungsbeispiele ==&lt;br /&gt;
* Rollläden schließen nach Zeitplan aber mit Zusatzbedingungen: siehe {{Link2Forum|Topic=27247|LinkText=dieses Forenthema}}&lt;br /&gt;
* &#039;&#039;disable&#039;&#039; Attribut setzen für WeekdayTimer: siehe {{Link2Forum|Topic=23655|LinkText=dieses Forenthema}}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [https://waschto.eu/weekdaytimer-einfache-zeitschaltuhr/ How-To: Einfache Zeitschaltuhr mit dem WeekdayTimer]&lt;/div&gt;</summary>
		<author><name>Waschto</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=LightScene&amp;diff=22534</id>
		<title>LightScene</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=LightScene&amp;diff=22534"/>
		<updated>2017-09-10T19:39:38Z</updated>

		<summary type="html">&lt;p&gt;Waschto: Link zu einem HowTo hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=Speicherung und Wiederherstellung des Zustands von einer Gruppe von Geräten.&lt;br /&gt;
|ModType=h&lt;br /&gt;
&amp;lt;!-- |ModCategory=?? --&amp;gt;&lt;br /&gt;
&amp;lt;!-- |ModCmdRef=http://fhem.de/commandref.html#LightScene --&amp;gt;&lt;br /&gt;
|ModTechName=31_LightScene.pm&lt;br /&gt;
|ModOwner=justme1968&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;LightScene&#039;&#039;&#039; ist ein Hilfsmodul, das es erlaubt, Zustände einer Gruppe von Geräten abzuspeichern und wiederherzustellen.&lt;br /&gt;
&lt;br /&gt;
== Anwendung ==&lt;br /&gt;
=== Define ===&lt;br /&gt;
:&amp;lt;code&amp;gt;define &amp;lt;name&amp;gt; LightScene [&amp;lt;dev1&amp;gt;] [&amp;lt;dev2&amp;gt;] [&amp;lt;dev3&amp;gt;] ... &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Set ===&lt;br /&gt;
&lt;br /&gt;
=== Get ===&lt;br /&gt;
&lt;br /&gt;
=== Attributes ===&lt;br /&gt;
&lt;br /&gt;
== Funktionen ==&lt;br /&gt;
&lt;br /&gt;
== Anwendungsbeispiele ==&lt;br /&gt;
* [[XBMC#Lichtsteuerung_durch_KODI_oder_PLEX|Lichtsteuerung durch KODI oder PLEX]]&lt;br /&gt;
* [[Zuhause-Status|Umsetzung Zuhause-Status mit LightScene]]&lt;br /&gt;
* [[ReadingsGroup#LightScene_DropDown-Men.C3.BC_f.C3.BCr_smallscreen_Styles_oder_Floorplan|LightScene-DropDown-Menü für Smallscreen-Styles oder Floorplan]]&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [https://waschto.eu/lightscene-erstellen-von-lichtszenen/ How-To: Lichtszenen erstellen mit LightScene]&lt;br /&gt;
* weitere Dokumentation&lt;br /&gt;
* ...&lt;/div&gt;</summary>
		<author><name>Waschto</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=DLCD&amp;diff=22533</id>
		<title>DLCD</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=DLCD&amp;diff=22533"/>
		<updated>2017-09-10T19:35:01Z</updated>

		<summary type="html">&lt;p&gt;Waschto: Link zu einem Projekt mit DLCD hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=Daten sammeln und formatiert auf LCD ausgeben&lt;br /&gt;
|ModType=x&lt;br /&gt;
|ModCmdRef= ---- noch nicht Teil von FHEM ----&lt;br /&gt;
|ModForumArea=Codeschnipsel&lt;br /&gt;
|ModTechName=39_DLCD.pm&lt;br /&gt;
|ModOwner=epsrw1 ([http://forum.fhem.de/index.php?action=profile;u=6340 Forum] / [[Benutzer Diskussion:Epsrw1|Wiki]])}}&lt;br /&gt;
&lt;br /&gt;
Das [[DLCD]]-Modul bietet eine einfache Möglichkeit, Daten zu sammeln und für die Anzeige auf einem seriellen LCD aufzubereiten.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&amp;lt;u&amp;gt;Diese Wiki-Seite beschreibt den Versionsstand 2.0 des DLCD-Moduls.&amp;lt;/u&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Thread im {{Link2Forum|Topic=24519|LinkText=Fhem-Forum}} mit der jeweils aktuellen Version des Moduls als Anhang im ersten Beitrag.&lt;br /&gt;
&lt;br /&gt;
== Beschreibung ==&lt;br /&gt;
[[Datei:dok39_DLCD.jpg|mini|Funktionsweise]]&lt;br /&gt;
&lt;br /&gt;
DLCD bietet als kleines Helferlein die Möglichkeit, Textzeilen eines LCD Displays als Readings vorzubereiten und mit Daten frei konfigurierbarer Readings zu befüllen.&lt;br /&gt;
&lt;br /&gt;
Jede Zeile wird als Attr vordefiniert, und mit Platzhaltern (z.B.: %1%) für die einzutragenden Werte versehen.&lt;br /&gt;
&lt;br /&gt;
Die Liste aller einzulesenden Devices:Readings wird in einem attr eingestellt. Das Modul prüft dann regelmäßig (attr: poll interval) die Daten der Fhem-Devices &lt;br /&gt;
und aktualisiert dann die Anzeige sobald sich einer der Werte geändert hat.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich können Zahlen einfach über attr formatiert werden (Kommastellen, Rundung, Anzeige von + und - Zeichen).&lt;br /&gt;
&lt;br /&gt;
Eine Reihe von Platzhaltern ermöglicht das Einsetzen von Datum und Zeit-Werten in die Ausgabezeilen (zB Minute einzeln, Wochentag, Datum, ....)&lt;br /&gt;
&lt;br /&gt;
Die über attr einschaltbare Rollierfunktion verschiebt die Zeilen bei jedem Update um eine Ziffer nach oben. So läßt sich zB eine wechselanzeige auf einem einzeiligen Display realisieren.&lt;br /&gt;
&lt;br /&gt;
Die eigentliche Ausgabe auf das LCD erfolgt jeweils immer dann wenn eine Änderung der Daten festgestellt wird, auf beliebiges konfigurierbares Device. Zum beispiel I2C LCD über FHEM, oder auch über shell-command für nicht von FHEM unterstützte displays.&lt;br /&gt;
&lt;br /&gt;
Manche Displays können Leerzeichen oder Umlaute nicht richtig wiedergeben. Daher kann DLCD über attr eingestellte Ersetzungen vornehmen, bevor die Daten an das LCD-device übergeben werden.&lt;br /&gt;
&lt;br /&gt;
Um die Einrichtung zu erleichtern, kann man mit dem attr dlcdDebugOutput die jeweils an das Device abgesetzten Befehle als &#039;&#039;reading&#039;&#039; ausgeben lassen. &lt;br /&gt;
&lt;br /&gt;
Mit stateFormat state&amp;amp;lt;br&amp;amp;gt;Line1&amp;amp;lt;br&amp;amp;gt;Line2&amp;amp;lt;br&amp;amp;gt;Line3&amp;amp;lt;br&amp;amp;gt;Line4 kann man sich ein Abbild des Displayinhaltes im Web-frontend anzeigen lassen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:dlcd_stateformat.png|mini|Frontend-Beispiel]]&lt;br /&gt;
&lt;br /&gt;
== Define ==&lt;br /&gt;
:&amp;lt;code&amp;gt;define &amp;lt;name&amp;gt; DLCD &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;In der Basisversion wurde Number::Format von cpan benötigt. Dies ist ab v. 1.1. nicht mehr der Fall.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Attribute ==&lt;br /&gt;
Alle Attribute sind auch in fhem durch das Kommando get attrHelp &amp;lt;varname&amp;gt; erklärt, für&#039;s &amp;quot;schnelle Nachschauen zwischendurch&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* dlcdRows -&amp;gt; Anzahl Datenzeilen (kann mehr als am Display sein mit eingeschaltetem Scrolling)&lt;br /&gt;
* dlcdCols -&amp;gt; Anzahl Spalten des LC-Displays&lt;br /&gt;
* dlcdPollInterval -&amp;gt; Zeitintervall, nach dem FHEM versucht, die Daten zu aktualisieren&lt;br /&gt;
* dlcdLine1 -&amp;gt; Formatvorlage für LCD-Zeile z.B.: text: %1% text: %2%&lt;br /&gt;
* dlcdLine2 -&amp;gt; Formatvorlage für LCD-Zeile z.B.: text: %3% text: %4%&lt;br /&gt;
* dlcdLine3 -&amp;gt; Formatvorlage für LCD-Zeile z.B.: text: %5% text: %6%&lt;br /&gt;
* dlcdLine4 -&amp;gt; Formatvorlage für LCD-Zeile Text: %7% text: %8%&lt;br /&gt;
* dlcdLine5 -&amp;gt; Formatvorlage für LCD-Zeile Text: %11% text: %12%&lt;br /&gt;
* dlcdVal1 -&amp;gt; Quelle für den Wert %1% im Format: FhemDev:reading&lt;br /&gt;
* dlcdVal2 -&amp;gt; Quelle für den Wert %2% im Format: FhemDev:reading&lt;br /&gt;
* dlcdVal3 -&amp;gt; Quelle für den Wert %3% im Format: FhemDev:reading&lt;br /&gt;
* ...&lt;br /&gt;
* dlcdVal20 -&amp;gt; Quelle für den Wert %12% im Format: FhemDev:reading&lt;br /&gt;
&lt;br /&gt;
* dlcdTriggerCmd -&amp;gt; Fhem-Befehl zum Schreiben einer LCD-Zeile, z.B.: &amp;lt;code&amp;gt;set lcd_wand writeXY 0,%L%,20,1 %T%&amp;lt;/code&amp;gt;&lt;br /&gt;
* dlcdVal1formatnum -&amp;gt; Zahlenformatierung für Wert %1%, muss none sein bei Nicht-Zahl&lt;br /&gt;
* dlcdVal2formatnum -&amp;gt; Zahlenformatierung für Wert %1%, muss none sein bei Nicht-Zahl&lt;br /&gt;
* dlcdVal3formatnum -&amp;gt; Zahlenformatierung für Wert %1%, muss none sein bei Nicht-Zahl&lt;br /&gt;
* ...&lt;br /&gt;
* dlcdVal20formatnum -&amp;gt; Zahlenformatierung für Wert %1%, muss none sein bei Nicht-Zahl&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
dlcdVal .. formatnum setzen die Anzahl Dezimalstellen fest, sowie ob ein + bzw. - Zeichen vorangestellt wird. Es funktioniert wie folgt:&lt;br /&gt;
&lt;br /&gt;
erste Ziffer: Gesamtzahl Ziffern in der Ausgabe.&lt;br /&gt;
zweite Ziffer: Anzahl fester Dezimalstellen&lt;br /&gt;
optional: +- an dritter Stelle&lt;br /&gt;
&lt;br /&gt;
Beispiele: &lt;br /&gt;
2+1 -&amp;gt; 1.1 9.0 0.4&lt;br /&gt;
4+2+- -&amp;gt; -12.34 +10.50&lt;br /&gt;
4+0+- -&amp;gt; -0012 +0010&lt;br /&gt;
&lt;br /&gt;
Die möglichen Optionen sind in einer Liste fest vorgegeben, um Fehleinstellungen zu vermeiden. Über manuellen Eintrag in der fhem-config können Eigenkreationen eingestellt werden, die nicht in der Liste enthalten sind (zB. 10+2+-).&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
* dlcdVal1formatstring -&amp;gt; benutzerdefinierter sprintf format pattern, setzt formatnum außer kraft. zB: %03f&lt;br /&gt;
* dlcdVal2formatstring -&amp;gt; benutzerdefinierter sprintf format pattern, setzt formatnum außer kraft. zB: %03f&lt;br /&gt;
* dlcdVal3formatstring -&amp;gt; benutzerdefinierter sprintf format pattern, setzt formatnum außer kraft. zB: %03f&lt;br /&gt;
* ...&lt;br /&gt;
* dlcdVal20formatstring -&amp;gt; benutzerdefinierter sprintf format pattern, setzt formatnum außer kraft. zB: %03f&lt;br /&gt;
&lt;br /&gt;
* dlcdBlankspaceReplace -&amp;gt; Leerzeichen wird im dlcdTriggerCmd durch diesen attr-Wert ersetzt. z.B.: \\x20 oder \\x{10}&lt;br /&gt;
* dlcdReplaceRegex -&amp;gt; beliebige ersetzung von zeichen, kommagetrennte paare mit = zeichen, zB.: ä=\\xE1,ö=\\xEF,ü=\\xF5,Ä=\\xE1,Ö=\\xEF,Ü=\\xF5,ß=\\xE2,°=\\x{DF}, Unicode-Beispiel: \N{U+code}, zB \N{U+0041}und  \N{U+41} werden zu A und A&lt;br /&gt;
* dlcdPhysicalRows -&amp;gt; Anzahl physikalisch vorhandener Zeilen am Ausgabedisplay&lt;br /&gt;
* dlcdScrolling -&amp;gt; Zeilen automatisch scrollen, 1=an 0=aus&lt;br /&gt;
* dlcdDebugOutput -&amp;gt; zusätzliche readings für aktuelle Display-ausgabe zum testen der Scroll-Funktion&lt;br /&gt;
* dlcdClearLineCmd -&amp;gt; optional: command um lcd-zeile zu leeren (%L%=line 0-n), zB. Set lcd42 clear %L%&lt;br /&gt;
* dlcdClearAllCmd -&amp;gt; optional: command um lcd komplett zu leeren (nur bei scrolling)&lt;br /&gt;
* dlcdLineAddrMap -&amp;gt; alternative Zeilenadressierung. Default ist 0,1,2,3,4,5,6,7,8,9. Beispiel: 1,2,3 verwendet nur 2. bis 4. LCD-zeile und überspringt die erste.&lt;br /&gt;
* disable -&amp;gt; keine neuen schreibvorgänge&lt;br /&gt;
&lt;br /&gt;
== Settings ==&lt;br /&gt;
reset -&amp;gt;alle Readings zurücksetzen&lt;br /&gt;
&lt;br /&gt;
== Readings ==&lt;br /&gt;
Line1 -&amp;gt; Aktuelle Anzeige der Zeile 1&lt;br /&gt;
&lt;br /&gt;
Line2 -&amp;gt; Aktuelle Anzeige der Zeile 2&lt;br /&gt;
&lt;br /&gt;
Line3 -&amp;gt; Aktuelle Anzeige der Zeile 3&lt;br /&gt;
&lt;br /&gt;
Line4 -&amp;gt; Aktuelle Anzeige der Zeile 4&lt;br /&gt;
&lt;br /&gt;
Line5 -&amp;gt; Aktuelle Anzeige der Zeile 5&lt;br /&gt;
&lt;br /&gt;
== Spezielle Anzeigefunktionen ==&lt;br /&gt;
&lt;br /&gt;
Datum und Uhrzeit basieren aktuell auf der Systemzeit des FHEM-Servers. Eine Möglichkeit, als Zeitbasis den Timestamp eines FHEM-Readings zu verwenden, ist denkbar; wer das nutzen möchte, bitte im Forum melden.&lt;br /&gt;
&lt;br /&gt;
=== Datum ===&lt;br /&gt;
* %date_Y% --&amp;gt; Jaheszahl 4-stellig&lt;br /&gt;
* %date_y% --&amp;gt; Jahreszahl 2-stellig&lt;br /&gt;
* %date_M% --&amp;gt; Monat als Zahl, 2-stellig&lt;br /&gt;
* %date_M_eng% --&amp;gt; Monat, Abkürzung englisch&lt;br /&gt;
* %date_M_ger% --&amp;gt; Monat, Abkürzung deutsch&lt;br /&gt;
* %date_D% --&amp;gt; Tag des Monats 2-stellig&lt;br /&gt;
* %date_WD% --&amp;gt; Wochentag 1-stellig im Format 0(So) ... 6(Sa)&lt;br /&gt;
* %date_WD_eng% --&amp;gt; Wochentag, Abkürzung englisch&lt;br /&gt;
* %date_WD_ger% --&amp;gt; Wochentag, Abkürzung deutsch&lt;br /&gt;
* %date_dmy% --&amp;gt; Datum im Format 25.08.2014&lt;br /&gt;
&lt;br /&gt;
=== Zeit ===&lt;br /&gt;
* %time_hms% --&amp;gt; HH:MM:SS Uhrzeit&lt;br /&gt;
* %time_h% --&amp;gt; Stunde&lt;br /&gt;
* %time_m% --&amp;gt; Minute&lt;br /&gt;
* %time_s% --&amp;gt; Sekunde&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== LCD-Abbild im Web-frontend ===&lt;br /&gt;
attr &amp;amp;lt;name&amp;amp;gt; stateFormat state&amp;amp;lt;br&amp;amp;gt;Line1&amp;amp;lt;br&amp;amp;gt;Line2&amp;amp;lt;br&amp;amp;gt;Line3&amp;amp;lt;br&amp;amp;gt;Line4&amp;amp;lt;br&amp;amp;gt;Line5&lt;br /&gt;
&lt;br /&gt;
=== Mathematische Werteberechnung ===&lt;br /&gt;
* Noch in Arbeit - Ideen sind willkommen ;) --&amp;gt; Forum&lt;br /&gt;
* To be continued&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* {{Link2Forum|Topic=24519|LinkText=Thread}} im Forum, in dem dieses Modul vorgestellt wurde&lt;br /&gt;
* [https://waschto.eu/statusdisplay-mit-esp-easy-dlcd-und-fhem/ Projekt: Statusdisplay mit ESP Easy und DLCD]&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;/div&gt;</summary>
		<author><name>Waschto</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=99_myUtils_anlegen&amp;diff=22532</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=22532"/>
		<updated>2017-09-10T19:10:09Z</updated>

		<summary type="html">&lt;p&gt;Waschto: Link zu einem HowTo hinzugefügt&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;
FHEM enthält seit Updatestand 01/2015 eine Vorlage &#039;myUtilsTemplate.pm&#039;, die zur Erzeugung der Programmdatei genutzt werden sollte. &lt;br /&gt;
Vorgehensweise:&lt;br /&gt;
* FHEM-Menüpunkt {{Taste|Edit files}} anklicken&lt;br /&gt;
* Weblink &#039;myUtilsTemplate.pm&#039; anklicken&lt;br /&gt;
* Im Textfeld hinter &#039;Save as&#039; den Dateinamen &#039;99_myUtils.pm&#039; für die Programmdatei  eintragen&lt;br /&gt;
: Hinweis: Wenn ein anderer Dateiname angegeben wird, muss der Name Initialize-Routine entsprechend angepasst werden (siehe nachfolgende Erläuterung zur Grundstruktur unter Nr. 3)&lt;br /&gt;
* {{Taste|Save as}} anklicken&lt;br /&gt;
Nun ist die eigene Programmdatei &#039;99_myUtils.pm&#039; mit der notwendigen Grundstruktur unter dem Menüpunkt &#039;Edit files&#039; zur Bearbeitung mit dem [[Konfiguration#Integrierter_Editor|Integrierter Editor]] zu finden. Für eine einfache und fehlerminimierende Bearbeitung sollten die [[Konfiguration#Syntaxhervorhebung|Syntaxhervorhebungs-, Befehlsauswahl- und Befehlsvervollständigungsfunktionen]] im Integrierten Editor eingeschaltet sein.&lt;br /&gt;
&lt;br /&gt;
Für Experten ist auch die Nutzung eines [[Konfiguration#Externer Editor|Externen Editors]] zur Bearbeitung möglich, aber nicht empfohlen.&lt;br /&gt;
&lt;br /&gt;
Eine ‚leere‘ Programmdatei muss grundsätzlich folgenden Grundstruktur besitzen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&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;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Folgende Dinge sind für die 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 der [[Konfiguration]] angefordert werden. So wird z.B. 10_FS20.pm erst geladen, wenn beim Einlesen der Konfiguration 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 &#039;Edit files&#039; 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;
&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;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&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;/source&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(„$NAME“)}&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;$NAME&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(„$NAME“) . Der Platzhalter $NAME 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;source lang=&amp;quot;perl&amp;quot;&amp;gt;define test at *09:00 { wakeup($we, „Schlafzimmerlampe“) }&amp;lt;/source&amp;gt;&lt;br /&gt;
Die Deklaration der Routine in Ihrer Programmdatei muss dann so beginnen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&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;/source&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;source lang=&amp;quot;perl&amp;quot;&amp;gt;sub parameterlos() {&lt;br /&gt;
  ...&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
 { parameterlos() }&lt;br /&gt;
&lt;br /&gt;
== Eigene Programmdatei laden ==&lt;br /&gt;
Die Programmdatei wird beim FHEM-Start immer automatisch geladen. &lt;br /&gt;
&lt;br /&gt;
Bei Änderungen an der Programmdatei bei laufendem FHEM ist bezüglich Neuladen ohne FHEM-Neustart zwischen den verschiedenen Bearbeitungsvarianten der Progammdatei zu unterscheiden.&lt;br /&gt;
&lt;br /&gt;
Bei der Bearbeitung über den &#039;&#039;&#039;Integrierten Editor&#039;&#039;&#039; wird die Programmdatei beim Abspeichern automatisch mit den Änderungen neu geladen.&lt;br /&gt;
&lt;br /&gt;
Bei der nicht empfohlenen Bearbeitung der Programmdatei mit einem &#039;&#039;&#039;externen Editor&#039;&#039;&#039; muss FHEM manuell angewiesen werden, die Programmdatei mit den Änderungen zu laden. Also bearbeiten Sie Ihr Programm, speichern die Programmdatei, und weisen FHEM dann explizit an, die Programmdatei erneut zu laden. Der Befehl dazu, der in das Befehls-Eingabefeld eingegeben wird, lautet: &amp;lt;code&amp;gt;reload 99_myUtils.pm&amp;lt;/code&amp;gt;&lt;br /&gt;
&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).&lt;br /&gt;
== Eigene Programmdatei dokumentieren ==&lt;br /&gt;
In der lokalen Commandref kann man die eigenen Routinen auch dokumentieren.&lt;br /&gt;
Dazu muss am Ende der 99_myUtils folgender Codeblock eingefügt werden&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
=pod&lt;br /&gt;
=begin html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;a name=&amp;quot;myUtils&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;myUtils&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
  &amp;lt;b&amp;gt;Name&amp;lt;/b&amp;gt;&lt;br /&gt;
  &amp;lt;br&amp;gt;&lt;br /&gt;
  Text&amp;lt;br&amp;gt;&lt;br /&gt;
  Examples:&lt;br /&gt;
  &amp;lt;ul&amp;gt;&lt;br /&gt;
   &amp;lt;code&amp;gt;Example Code &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
  &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=end html&lt;br /&gt;
=begin html_DE&lt;br /&gt;
&lt;br /&gt;
&amp;lt;a name=&amp;quot;myUtils&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;myUtils&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=end html_DE&lt;br /&gt;
=cut&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der a Tag stellt einen Verweis dar, der h3 Tag kennzeichnet die Überschrift. Beide Tags müssen sein, ansonsten kann FHEM die Doku nicht in die commandref einbinden. Der Abschnitt für die deutsche Doku kann komplett fehlen. Die Beschreibungen der einzelnen Routinen werden mit ul Tags geklammert und eventuell mit ul Tags weiter untergliedert. Dabei entsteht ein eingerückter Text. Beispiele können mit dem code Tag formatiert werden.&lt;br /&gt;
&lt;br /&gt;
Mit diesem Befehl kann die Erzeugung des Commandrefeintrages initiiert und getestet werden:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;{system(&amp;quot;/usr/bin/perl ./contrib/commandref_join.pl&amp;quot;)}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* {{Link2Forum|Topic=34363|Message=266811|LinkText=Zeit- und Datumsvariablen $hour, $wday, $month, ... in 99_myUtils.pm verfügbar machen}}&lt;br /&gt;
* [https://waschto.eu/eigene-routinen-erstellen-und-auslagern/ How-To: Eigene Routinen erstellen und auslagern]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Code Snippets]]&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Waschto</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Icons&amp;diff=22498</id>
		<title>Icons</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Icons&amp;diff=22498"/>
		<updated>2017-09-06T08:17:00Z</updated>

		<summary type="html">&lt;p&gt;Waschto: How-To hinzugefügt zum Erstellen eigener Icons&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Icons - alles rund um die Icons in FHEM&lt;br /&gt;
= FHEM mit Icons verschönern =&lt;br /&gt;
== Geräten Icons zuweisen ==&lt;br /&gt;
Im [[FHEMWEB]] auf Detail-Ansicht des Gerätes gehen, danach in der attr Zeile per dropdown&lt;br /&gt;
# Icon auswählen, um das Icon zu wählen, das standardmäßig links vom Gerät gezeigt wird; alternativ ganz unten auf &#039;&#039;&#039;Select Icon&#039;&#039;&#039; klicken, dann bekommt ihr alle Bilder angezeigt&lt;br /&gt;
# &#039;&#039;&#039;[[devStateIcon]] auswählen&#039;&#039;&#039;, um unterschiedliche Schaltzustände mit unterschiedlichen Icons zu versehen; alternativ ganz unten auf &#039;&#039;&#039;Extend devStateIcon&#039;&#039;&#039; klicken, dann bekommt ihr alle Bilder angezeigt und könnt sie dem jeweiligen Schaltzustand zuordnen.&lt;br /&gt;
&lt;br /&gt;
Dabei gilt folgendes:&lt;br /&gt;
* Icon-Dateiname OHNE Dateiendung eingeben&lt;br /&gt;
* wenn es sich bei dem Icon um eine svg-Datei handelt, kann mit @farbe die Farbe beeinflusst werden, z.B. &amp;lt;br /&amp;gt; &amp;lt;code&amp;gt;attr Geraet devStateIcon an:general_an@green aus:general_aus@red&amp;lt;/code&amp;gt;, &amp;lt;br /&amp;gt; wobei hier die beiden Dateien general_an.svg und general_aus.svg heißen.&lt;br /&gt;
* statt des Standardfarbnamens, kann übrigens auch der 6-stellige Hex-Code übergeben werden (ohne # am Anfang). Den Code könnt ihr z.B. hier bei [http://www.colorpicker.com Colorpicker] generieren&lt;br /&gt;
* Möchte man dass bei Klick auf das Icon auch eine Aktion ausgelöst wird, kann man dies als dritten Parameter mit angeben. Beispiel für einen Wechsel zwischen &amp;quot;around&amp;quot; und &amp;quot;away&amp;quot;: &amp;lt;code&amp;gt;around:status_available:away away:status_away_2:around&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Wenn ihr die Änderungen wie oben beschrieben durchführt, könnt ihr das Ergebnis gleich betrachten. Wenn alles passt, dann noch &#039;&#039;&#039;Save config&#039;&#039;&#039; drücken, dann wird alles fest abgespeichert.&lt;br /&gt;
&lt;br /&gt;
== Größe der Icons verändern ==&lt;br /&gt;
Auch das kein Problem. Öffnet einfach die für Eurer Template (wie sieht fhem bei Euch aus: rechts unten -&amp;gt; Select Style -&amp;gt; das was ihr dort gewählt habt ist Euer Template) zuständige css-Datei. Diese findet ihr im fhem-Verzeichnis unter www/pgm2. Dort fügt ihr einfach folgende Zeile ein und ändert ggf. die Größenangaben.&lt;br /&gt;
&amp;lt;pre&amp;gt;svg { height:32px; width:32px; }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mehr Icons zur Auswahl ==&lt;br /&gt;
Grundsätzlich sind bei aktuellen fhem-Installationen die meisten Icons standardmäßig aktiviert. Navigiert doch einfach mal im fhem Verzeichnis in den www Ordner und dort in images. Die Ordner default, openautomation und fhemSVG sind standardmäßig aktiviert, d.h., Icons aus diesen Ordnern werden in fhem angezeigt. Wenn ihr zusätzlich die Icons auch aus den anderen Ordnern (z.B. icons_small) verwenden wollt, dann ergänzt einfach die entsprechende Zeile &amp;quot;WEB iconPath&amp;quot; in der fhem.cfg:&lt;br /&gt;
&amp;lt;pre&amp;gt;attr WEB iconPath fhemSVG:openautomation:default:icons_small&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das gleiche gilt, wenn ihr eine ältere fhem-Installation habt und noch nicht die Bilder z.B. aus fhemSVG angezeigt bekommt.&lt;br /&gt;
&lt;br /&gt;
== Icons Farben zuweisen ==&lt;br /&gt;
Man kann Icons beliebige Farben zuweisen, indem man den Icon-Namen per &amp;quot;@&amp;quot; mit einem Farbnamen oder einer Farbcodierung versieht.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rc_dot@red&lt;br /&gt;
rc_dot@#a1d490&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Hilfe zur Bestimmung der Farbcodierung kann man auf den folgenden Seiten finden:&lt;br /&gt;
* [http://www.colorpicker.com www.colorpicker.com]&lt;br /&gt;
* [http://www.html-color-names.com www.html-color-names.com]&lt;br /&gt;
&lt;br /&gt;
== Weitere Tipps ==&lt;br /&gt;
Weitere Tipps zu Icons finden sich auch auf der Seite [[Slider für HM-Rolladensteuerung anzeigen]].&lt;br /&gt;
&lt;br /&gt;
= Eigene Icons erstellen =&lt;br /&gt;
Falls ihr eigene Icons basteln wollt - sehr gerne. Umso besser, wenn ihr diese dann mit uns teilt. Der passende {{Link2Forum|Topic=12605|LinkText=Thread im Forum}}.&lt;br /&gt;
&lt;br /&gt;
== SVG-Icons ==&lt;br /&gt;
Hier einige Tipps zum Erstellen von SVG-Icons. SVGs bieten einige Vorteile:&lt;br /&gt;
* SVGs sind vektorbasiert und somit frei skalierbar&lt;br /&gt;
* SVGs sind, wenn man sie genauer betrachtet, gut lesbarer und veränderbarer Quellcode und können deswegen leicht über css manipuliert werden&lt;br /&gt;
&lt;br /&gt;
Wie geht es nun:&lt;br /&gt;
* [http://inkscape.org/download/?lang=de Inkscape] besorgen (Open Source)&lt;br /&gt;
* Loszeichnen&lt;br /&gt;
&lt;br /&gt;
Jetzt wird es wichtig - fhem ist etwas sensibel, was svgs anbelangt und will diese zudem farblich umgestalten. Daher folgendes unbedingt beachten:&lt;br /&gt;
&lt;br /&gt;
* fhem ersetzt bei allen fill:#000000 und fill=&amp;quot;#000000&amp;quot; die sechs Nullen mit einem Farbcode, wenn dieser mit übergeben wurde (sh. FHEM mit Icons verschönern weiter oben) - das solltet ihr beim zeichnen beachten&lt;br /&gt;
* daher arbeite ich immer so, dass ich beispielsweise Rechtecke/Kreise zeichne und diese dann mit &amp;quot;Kontur in Pfad umwandeln&amp;quot; umwandle -&amp;gt; dann ist das Rechteck transparent, die Linie schwarz (und wird von fhem erstetzt) und alles klappt&lt;br /&gt;
* alle Texte müssen in Pfade umgewandelt werden&lt;br /&gt;
* das gesamte Bild muss als &amp;quot;Normales SVG&amp;quot; gespeichert werden (Standardeinstellung bei Inkscape ist &amp;quot;Inkscape SVG&amp;quot;)&lt;br /&gt;
* Wenn die Grafik nicht angezeigt wird sondern nur Text: In einem Editor den Inhalt mit einer funktionierenden SVG-Datei vergleichen und anpassen.&lt;br /&gt;
* letzter wichtiger Tipp: Eine Zeile darf im SVG nicht fehlen, sonst zeigt fhem es nicht an. Wenn ihr Euer SVG in einem Texteditor öffnet (ich empfehle notepad++), schaut in in der &amp;lt;svg&amp;gt;-Definition, ob die Zeile mit viewBox dabei ist. Wenn nicht, dann nach unterem Format ergänzen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!-- Created with Inkscape (http://www.inkscape.org/) --&amp;gt;&lt;br /&gt;
&amp;lt;svg&lt;br /&gt;
   version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
   width=&amp;quot;585&amp;quot;&lt;br /&gt;
   height=&amp;quot;585&amp;quot;&lt;br /&gt;
   viewBox=&amp;quot;0 0 585 585&amp;quot;&lt;br /&gt;
   id=&amp;quot;svg2421&amp;quot;&lt;br /&gt;
   sodipodi:docname=&amp;quot;usb-stick.svg&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SVG-Icons für das Modul remotecontrol: Schriftvorlage ==&lt;br /&gt;
Wer beispielsweise für das Modul remotecontrol noch andere Beschriftungen braucht, der kann sich diese ganz fix selbst machen. Im Ordner fhem\www\images\fhemSVG findet ihr die Datei rc_templatebutton.svg. Mit der macht ihr folgendes:&lt;br /&gt;
Ganz einfach inkscape runterladen (http://inkscape.org/download/?lang=de), Datei öffnen, auf Text klicken, dann oben in der Leiste auf Text -&amp;gt; Schrift und Text -&amp;gt; Reiter Text, Text ändern. Ggf. Größe/Position anpassen, dann Pfad -&amp;gt; Objekt in Pfad umwandeln, dann Datei -&amp;gt; Speichern unter -&amp;gt; euer name und &amp;quot;Normales SVG&amp;quot; =&amp;gt; FERTIG&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
* [https://waschto.eu/aufwerten-von-fhem-devices-durch-icons/ How-To: FHEM-Devices mit Icons aufwerten]&lt;br /&gt;
* [https://waschto.eu/eigene-icons-fuer-fhem-erstellen/ How-To: Eigene Icons erstellen und in FHEM einbinden]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Waschto</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Icons&amp;diff=22497</id>
		<title>Icons</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Icons&amp;diff=22497"/>
		<updated>2017-09-06T08:15:37Z</updated>

		<summary type="html">&lt;p&gt;Waschto: Link zu einem How-To hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Icons - alles rund um die Icons in FHEM&lt;br /&gt;
= FHEM mit Icons verschönern =&lt;br /&gt;
== Geräten Icons zuweisen ==&lt;br /&gt;
Im [[FHEMWEB]] auf Detail-Ansicht des Gerätes gehen, danach in der attr Zeile per dropdown&lt;br /&gt;
# Icon auswählen, um das Icon zu wählen, das standardmäßig links vom Gerät gezeigt wird; alternativ ganz unten auf &#039;&#039;&#039;Select Icon&#039;&#039;&#039; klicken, dann bekommt ihr alle Bilder angezeigt&lt;br /&gt;
# &#039;&#039;&#039;[[devStateIcon]] auswählen&#039;&#039;&#039;, um unterschiedliche Schaltzustände mit unterschiedlichen Icons zu versehen; alternativ ganz unten auf &#039;&#039;&#039;Extend devStateIcon&#039;&#039;&#039; klicken, dann bekommt ihr alle Bilder angezeigt und könnt sie dem jeweiligen Schaltzustand zuordnen.&lt;br /&gt;
&lt;br /&gt;
Dabei gilt folgendes:&lt;br /&gt;
* Icon-Dateiname OHNE Dateiendung eingeben&lt;br /&gt;
* wenn es sich bei dem Icon um eine svg-Datei handelt, kann mit @farbe die Farbe beeinflusst werden, z.B. &amp;lt;br /&amp;gt; &amp;lt;code&amp;gt;attr Geraet devStateIcon an:general_an@green aus:general_aus@red&amp;lt;/code&amp;gt;, &amp;lt;br /&amp;gt; wobei hier die beiden Dateien general_an.svg und general_aus.svg heißen.&lt;br /&gt;
* statt des Standardfarbnamens, kann übrigens auch der 6-stellige Hex-Code übergeben werden (ohne # am Anfang). Den Code könnt ihr z.B. hier bei [http://www.colorpicker.com Colorpicker] generieren&lt;br /&gt;
* Möchte man dass bei Klick auf das Icon auch eine Aktion ausgelöst wird, kann man dies als dritten Parameter mit angeben. Beispiel für einen Wechsel zwischen &amp;quot;around&amp;quot; und &amp;quot;away&amp;quot;: &amp;lt;code&amp;gt;around:status_available:away away:status_away_2:around&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Wenn ihr die Änderungen wie oben beschrieben durchführt, könnt ihr das Ergebnis gleich betrachten. Wenn alles passt, dann noch &#039;&#039;&#039;Save config&#039;&#039;&#039; drücken, dann wird alles fest abgespeichert.&lt;br /&gt;
&lt;br /&gt;
== Größe der Icons verändern ==&lt;br /&gt;
Auch das kein Problem. Öffnet einfach die für Eurer Template (wie sieht fhem bei Euch aus: rechts unten -&amp;gt; Select Style -&amp;gt; das was ihr dort gewählt habt ist Euer Template) zuständige css-Datei. Diese findet ihr im fhem-Verzeichnis unter www/pgm2. Dort fügt ihr einfach folgende Zeile ein und ändert ggf. die Größenangaben.&lt;br /&gt;
&amp;lt;pre&amp;gt;svg { height:32px; width:32px; }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mehr Icons zur Auswahl ==&lt;br /&gt;
Grundsätzlich sind bei aktuellen fhem-Installationen die meisten Icons standardmäßig aktiviert. Navigiert doch einfach mal im fhem Verzeichnis in den www Ordner und dort in images. Die Ordner default, openautomation und fhemSVG sind standardmäßig aktiviert, d.h., Icons aus diesen Ordnern werden in fhem angezeigt. Wenn ihr zusätzlich die Icons auch aus den anderen Ordnern (z.B. icons_small) verwenden wollt, dann ergänzt einfach die entsprechende Zeile &amp;quot;WEB iconPath&amp;quot; in der fhem.cfg:&lt;br /&gt;
&amp;lt;pre&amp;gt;attr WEB iconPath fhemSVG:openautomation:default:icons_small&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das gleiche gilt, wenn ihr eine ältere fhem-Installation habt und noch nicht die Bilder z.B. aus fhemSVG angezeigt bekommt.&lt;br /&gt;
&lt;br /&gt;
== Icons Farben zuweisen ==&lt;br /&gt;
Man kann Icons beliebige Farben zuweisen, indem man den Icon-Namen per &amp;quot;@&amp;quot; mit einem Farbnamen oder einer Farbcodierung versieht.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rc_dot@red&lt;br /&gt;
rc_dot@#a1d490&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Hilfe zur Bestimmung der Farbcodierung kann man auf den folgenden Seiten finden:&lt;br /&gt;
* [http://www.colorpicker.com www.colorpicker.com]&lt;br /&gt;
* [http://www.html-color-names.com www.html-color-names.com]&lt;br /&gt;
&lt;br /&gt;
== Weitere Tipps ==&lt;br /&gt;
Weitere Tipps zu Icons finden sich auch auf der Seite [[Slider für HM-Rolladensteuerung anzeigen]].&lt;br /&gt;
&lt;br /&gt;
= Eigene Icons erstellen =&lt;br /&gt;
Falls ihr eigene Icons basteln wollt - sehr gerne. Umso besser, wenn ihr diese dann mit uns teilt. Der passende {{Link2Forum|Topic=12605|LinkText=Thread im Forum}}.&lt;br /&gt;
&lt;br /&gt;
== SVG-Icons ==&lt;br /&gt;
Hier einige Tipps zum Erstellen von SVG-Icons. SVGs bieten einige Vorteile:&lt;br /&gt;
* SVGs sind vektorbasiert und somit frei skalierbar&lt;br /&gt;
* SVGs sind, wenn man sie genauer betrachtet, gut lesbarer und veränderbarer Quellcode und können deswegen leicht über css manipuliert werden&lt;br /&gt;
&lt;br /&gt;
Wie geht es nun:&lt;br /&gt;
* [http://inkscape.org/download/?lang=de Inkscape] besorgen (Open Source)&lt;br /&gt;
* Loszeichnen&lt;br /&gt;
&lt;br /&gt;
Jetzt wird es wichtig - fhem ist etwas sensibel, was svgs anbelangt und will diese zudem farblich umgestalten. Daher folgendes unbedingt beachten:&lt;br /&gt;
&lt;br /&gt;
* fhem ersetzt bei allen fill:#000000 und fill=&amp;quot;#000000&amp;quot; die sechs Nullen mit einem Farbcode, wenn dieser mit übergeben wurde (sh. FHEM mit Icons verschönern weiter oben) - das solltet ihr beim zeichnen beachten&lt;br /&gt;
* daher arbeite ich immer so, dass ich beispielsweise Rechtecke/Kreise zeichne und diese dann mit &amp;quot;Kontur in Pfad umwandeln&amp;quot; umwandle -&amp;gt; dann ist das Rechteck transparent, die Linie schwarz (und wird von fhem erstetzt) und alles klappt&lt;br /&gt;
* alle Texte müssen in Pfade umgewandelt werden&lt;br /&gt;
* das gesamte Bild muss als &amp;quot;Normales SVG&amp;quot; gespeichert werden (Standardeinstellung bei Inkscape ist &amp;quot;Inkscape SVG&amp;quot;)&lt;br /&gt;
* Wenn die Grafik nicht angezeigt wird sondern nur Text: In einem Editor den Inhalt mit einer funktionierenden SVG-Datei vergleichen und anpassen.&lt;br /&gt;
* letzter wichtiger Tipp: Eine Zeile darf im SVG nicht fehlen, sonst zeigt fhem es nicht an. Wenn ihr Euer SVG in einem Texteditor öffnet (ich empfehle notepad++), schaut in in der &amp;lt;svg&amp;gt;-Definition, ob die Zeile mit viewBox dabei ist. Wenn nicht, dann nach unterem Format ergänzen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!-- Created with Inkscape (http://www.inkscape.org/) --&amp;gt;&lt;br /&gt;
&amp;lt;svg&lt;br /&gt;
   version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
   width=&amp;quot;585&amp;quot;&lt;br /&gt;
   height=&amp;quot;585&amp;quot;&lt;br /&gt;
   viewBox=&amp;quot;0 0 585 585&amp;quot;&lt;br /&gt;
   id=&amp;quot;svg2421&amp;quot;&lt;br /&gt;
   sodipodi:docname=&amp;quot;usb-stick.svg&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SVG-Icons für das Modul remotecontrol: Schriftvorlage ==&lt;br /&gt;
Wer beispielsweise für das Modul remotecontrol noch andere Beschriftungen braucht, der kann sich diese ganz fix selbst machen. Im Ordner fhem\www\images\fhemSVG findet ihr die Datei rc_templatebutton.svg. Mit der macht ihr folgendes:&lt;br /&gt;
Ganz einfach inkscape runterladen (http://inkscape.org/download/?lang=de), Datei öffnen, auf Text klicken, dann oben in der Leiste auf Text -&amp;gt; Schrift und Text -&amp;gt; Reiter Text, Text ändern. Ggf. Größe/Position anpassen, dann Pfad -&amp;gt; Objekt in Pfad umwandeln, dann Datei -&amp;gt; Speichern unter -&amp;gt; euer name und &amp;quot;Normales SVG&amp;quot; =&amp;gt; FERTIG&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
* [https://waschto.eu/aufwerten-von-fhem-devices-durch-icons/ How-To: FHEM-Devices mit Icons aufwerten]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Waschto</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=FRITZBOX&amp;diff=22385</id>
		<title>FRITZBOX</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=FRITZBOX&amp;diff=22385"/>
		<updated>2017-08-26T18:39:35Z</updated>

		<summary type="html">&lt;p&gt;Waschto: Link zum How-To: Traffic als Balkendiagramm&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=Steuerung einer Fritz!Box über FHEM &lt;br /&gt;
|ModType=d&lt;br /&gt;
|ModForumArea=FRITZ!Box&lt;br /&gt;
|ModTechName=72_FRITZBOX.pm&lt;br /&gt;
|ModOwner=tupol/Topos ({{Link2FU|5432|Forum}} / [[Benutzer Diskussion:Topos|Wiki]])}}&lt;br /&gt;
&lt;br /&gt;
Das Modul [[FRITZBOX]] ermöglicht die Steuerung einer [[AVM Fritz!Box]] und von AVM FRITZ!WLAN Repeatern durch FHEM . An Fritzboxen können sowohl Geräte abgefragt werden, auf denen FHEM selbst läuft (lokaler Modus), als auch entfernte (externe) Geräte.&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen ==&lt;br /&gt;
=== Remote-Zugang ===&lt;br /&gt;
Für den Remote-Zugang müssen die Module JSON:XS, LWP und SOAP::Lite installiert sein; auf einem [[Raspberry Pi]] oder unter Ubuntu z.&amp;amp;nbsp;B. mit dem Befehl&lt;br /&gt;
:&amp;lt;code&amp;gt;sudo apt-get install libjson-perl libwww-perl libsoap-lite-perl libjson-xs-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Teilweise ist derzeit zusätzlich die Installation der telnet Libraries erforderlich, auch wenn der Telnet-Zugang nicht genutzt werden soll. Siehe dazu den nachfolgenden Abschnitt.&lt;br /&gt;
&lt;br /&gt;
=== Telnet ===&lt;br /&gt;
Das Modul basierte ursprünglich auf dem Zugriff auf die Fritzbox per Telnet. Ab FRITZ!OS 6.2x baut AVM den abgekündigten Telnet-Zugang sowie die webcm-Schnittstelle sukzessive zurück bzw. hat dies, je nach Firmware, schon ganz abgestellt (siehe {{Link2Forum|Topic=38586|LinkText=dieses Forenthema}}). Der zukunftssichere Zugriff auf die Fritzbox sollte also per TR-064 erfolgen. Der Vollständigkeit halber und für ältere Firmwareversionen: &lt;br /&gt;
&lt;br /&gt;
# Wer den Zugang per Telnet (noch) nutzen (kann und) möchte, muss dies zuerst freischalten. Üblicherweise durch Eingabe von #96*7* an einem direkt an der entsprechenden FritzBox angeschlosssenen Telefon&lt;br /&gt;
# Auf dem System, auf dem FHEM  läuft ([[Systemübersicht#Server|Server]]) muss Telnet installiert sein; auf einem [[Raspberry Pi]] und unter Ubuntu z.&amp;amp;nbsp;B. mit dem Befehl&lt;br /&gt;
::&amp;lt;code&amp;gt;sudo apt-get install libnet-telnet-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
=== Erste Schritte ===&lt;br /&gt;
Zur Erstinstallation reicht ein einfaches &amp;lt;code&amp;gt;define FritzBox FRITZBOX&amp;lt;/code&amp;gt;, dieses Modul funktioniert lokal (FHEM auf Fritzbox) sowie per Fernzugriff (FHEM auf einem anderen Server im Netz, siehe nächsten Schritt).&lt;br /&gt;
&lt;br /&gt;
==== TR-064: Modul FRITZBOX für Zugriff auf einem externen Server einrichten ====&lt;br /&gt;
Für den Fernzugriff über TR-064 auf eine oder mehrere Fritzboxen und/oder einen FRITZ!WLAN Repeater sind die folgenden Schritte nötig (für jedes Gerät):&lt;br /&gt;
&lt;br /&gt;
Fritzbox definieren:&lt;br /&gt;
:&amp;lt;code&amp;gt;define FritzBox FRITZBOX&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn die Fritzbox nicht unter &amp;lt;nowiki&amp;gt;http://fritz.box&amp;lt;/nowiki&amp;gt; erreichbar ist, IP im define setzen:&lt;br /&gt;
:&amp;lt;code&amp;gt;define FritzBox FRITZBOX 192.168.168.168&amp;lt;/code&amp;gt;&lt;br /&gt;
192.168.168.168 dabei natürlich durch die passende IP ersetzen... Alternativ kann statt der IP auch der Hostname eingegeben werden.&lt;br /&gt;
&lt;br /&gt;
Wenn (&#039;&#039;&#039;und nur wenn&#039;&#039;&#039;) das Login auf der Benutzeroberfläche der FritzBox mit User und Passwort (und nicht nur per Passwort) geschieht, den User konfigurieren:&lt;br /&gt;
:&amp;lt;code&amp;gt;attr FritzBox boxUser &#039;&#039;Benutzername&#039;&#039; &amp;lt;/code&amp;gt;&lt;br /&gt;
In der Fritzbox muss dann auch &amp;quot;Anmeldung mit FRITZ!Box-Benutzernamen und Kennwort&amp;quot; ausgewählt sein.&lt;br /&gt;
&lt;br /&gt;
Passwort konfigurieren:&lt;br /&gt;
:&amp;lt;code&amp;gt;set FritzBox password &#039;&#039;Passwort&#039;&#039;&amp;lt;/code&amp;gt;  - legt das zugehörige Passwort fest (nur einmal --&amp;gt; gehört nicht in die cfg-Datei) &lt;br /&gt;
&lt;br /&gt;
Manuelle TR-064 Kommandos erlauben (Das Auslesen der Readings per TR-064 funktioniert auch ohne dieses Attribut.):&lt;br /&gt;
:&amp;lt;code&amp;gt;attr FritzBox allowTR064Command 1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Telnet: Modul FRITZBOX für Zugriff auf einem externen Server einrichten ====&lt;br /&gt;
[[Datei:Screenshot_FritzBox_TelnetUser.png|mini|300px|rechts|Anlegen des Attributs telnetUser]]&lt;br /&gt;
Bei Fernzugriff über Telnet sind weitere Schritte nötig:&lt;br /&gt;
# Telnet auf der Fritzbox freischalten (Tastenkombination #96*7* am angeschlossenen Telefon (auch FritzFon)&lt;br /&gt;
# TelnetUser definieren (wie im Screenshot gezeigt)&lt;br /&gt;
# Passwort zum Benutzer auf der Fritzbox definieren&lt;br /&gt;
&lt;br /&gt;
[[Datei:Screenshot_FritzBox_Passwort.png|mini|300px|rechts|Passwort definieren]]&lt;br /&gt;
&lt;br /&gt;
(bitte die Buttons {{Taste|set}} und {{Taste|attr}} bei der Definition der jeweiligen Einträge nicht vergessen)&lt;br /&gt;
&lt;br /&gt;
Wer stattdessen lieber das [[Konfiguration|Befehl-Eingabefeld]] verwendet:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define FritzBox FRITZBOX&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;attr FritzBox telnetUser &#039;&#039;Benutzername&#039;&#039; &amp;lt;/code&amp;gt; - legt den Benutzer fest&lt;br /&gt;
:&amp;lt;code&amp;gt;set FritzBox password &#039;&#039;Passwort&#039;&#039; &amp;lt;/code&amp;gt; - legt das zugehörige Passwort fest&lt;br /&gt;
&lt;br /&gt;
Wer keinen User konfiguriert hat, kann das Feld &amp;quot;telnetUser&amp;quot; leer lassen.&lt;br /&gt;
&lt;br /&gt;
Wer sicher gehen möchte, dass auch tatsächlich Telnet und nicht andere Zugriffe benutzt werden, sollte außerdem noch setzen:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;attr FritzBox forceTelnetConnection 1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mögliche Fehlermeldungen ===&lt;br /&gt;
Sollte schon bei &amp;lt;code&amp;gt;define FritzBox FRITZBOX&amp;lt;/code&amp;gt; die Fehlermeldung kommen, dass dieses Modul nicht existiert, dann bitte prüfen, ob FHEM  auf dem aktuellen Stand ist und ggf. [[Update|aktualisieren]].&lt;br /&gt;
&lt;br /&gt;
Kommt jetzt bei der erneuten Definition die Fehlermeldung &amp;lt;code&amp;gt;Error: Perl modul Net::Telnet is missing on this system&amp;lt;/code&amp;gt; bitte wie oben schon erwähnt den Befehl &lt;br /&gt;
:&amp;lt;code&amp;gt;sudo apt-get install libnet-telnet-perl&amp;lt;/code&amp;gt; &lt;br /&gt;
direkt per Telnet/SSH auf dem FHEM-Server ausführen und neu starten.&lt;br /&gt;
Sollte alles geklappt haben, seht ihr nun eure Fritzbox und könnt diverse Einstellungen manuell vornehmen und/oder automatisch vornehmen lassen.&lt;br /&gt;
&lt;br /&gt;
== Anwendung ==&lt;br /&gt;
=== Define ===&lt;br /&gt;
Siehe [http://fhem.de/commandref_DE.html#FRITZBOX commandref]&lt;br /&gt;
&lt;br /&gt;
=== Attribute ===&lt;br /&gt;
Siehe commandref&lt;br /&gt;
&lt;br /&gt;
=== TR-064 ===&lt;br /&gt;
Die offizielle Programmier-Schnittstelle der Fritz!Box läuft über das Protokoll TR-064.&lt;br /&gt;
&lt;br /&gt;
mit dem Attribute&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;attr &amp;lt;device&amp;gt; allowTR064Command 1&amp;lt;/code&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
kann man den Befehl&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;get &amp;lt;device&amp;gt; tr064Command &amp;lt;service&amp;gt; &amp;lt;control&amp;gt; &amp;lt;action&amp;gt; [[parameterName1 parameterValue1] ...]&amp;lt;/code&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
freischalten und damit auf diese Schnittstelle zugreifen.&lt;br /&gt;
&lt;br /&gt;
AVM hat die Schnittstellenbeschreibung unter [http://avm.de/service/schnittstellen/] veröffentlicht. Diese wird jedoch nur sehr sporadisch gepflegt.&amp;lt;br&amp;gt;&lt;br /&gt;
Ein besserer Einstiegspunkt befindet sich auf der Box unter http://fritz.box:49000/tr64desc.xml.&amp;lt;br&amp;gt;&lt;br /&gt;
Die möglichen TR-064-Aktionen kann man auch über den Befehl &amp;lt;code&amp;gt;get &amp;lt;device&amp;gt; tr064ServiceList&amp;lt;/code&amp;gt; auslesen.&lt;br /&gt;
&lt;br /&gt;
Folgende Service und Controls existieren (für den get-Befehl &#039;&#039;tr064Command&#039;&#039; werden nur die fett formatierten Wörter benötigt)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!serviceType!!controlURL!!XML!!Dokument bei AVM&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;urn:dslforum-org:service:&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;DeviceInfo:1&#039;&#039;&#039;||/upnp/control/&#039;&#039;&#039;deviceinfo&#039;&#039;&#039;||[http://fritz.box:49000/deviceinfoSCPD.xml deviceinfoSCPD.xml]||[http://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/deviceinfoSCPD.pdf deviceinfoSCPD.pdf]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;urn:dslforum-org:service:&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;DeviceConfig:1&#039;&#039;&#039;||/upnp/control/&#039;&#039;&#039;deviceconfig&#039;&#039;&#039;||[http://fritz.box:49000/deviceconfigSCPD.xml deviceconfigSCPD.xml]||[http://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/deviceconfigSCPD.pdf deviceconfigSCPD.pdf]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;urn:dslforum-org:service:&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;Layer3Forwarding:1&#039;&#039;&#039;||/upnp/control/&#039;&#039;&#039;layer3forwarding&#039;&#039;&#039;||[http://fritz.box:49000//layer3forwardingSCPD.xml layer3forwardingSCPD.xml]||[http://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/layer3forwardingSCPD.pdf layer3forwardingSCPD.pdf]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;urn:dslforum-org:service:&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;LANConfigSecurity:1&#039;&#039;&#039;||/upnp/control/&#039;&#039;&#039;lanconfigsecurity&#039;&#039;&#039;||[http://fritz.box:49000//lanconfigsecuritySCPD.xml lanconfigsecuritySCPD.xml]||[http://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/lanconfigsecuritySCPD.pdf lanconfigsecuritySCPD.pdf]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;urn:dslforum-org:service:&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;ManagementServer:1&#039;&#039;&#039;||/upnp/control/&#039;&#039;&#039;mgmsrv&#039;&#039;&#039;||[http://fritz.box:49000//mgmsrvSCPD.xml mgmsrvSCPD.xml]||[http://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/mgmsrvSCPD.pdf mgmsrvSCPD.pdf]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;urn:dslforum-org:service:&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;Time:1&#039;&#039;&#039;||/upnp/control/&#039;&#039;&#039;time&#039;&#039;&#039;||[http://fritz.box:49000//timeSCPD.xml timeSCPD.xml]||[http://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/timeSCPD.pdf timeSCPD.pdf]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;urn:dslforum-org:service:&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;UserInterface:1&#039;&#039;&#039;||/upnp/control/&#039;&#039;&#039;userif&#039;&#039;&#039;||[http://fritz.box:49000//userifSCPD.xml userifSCPD.xml]||[http://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/userifSCPD.pdf userifSCPD.pdf]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;urn:dslforum-org:service:&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;X_VoIP:1&#039;&#039;&#039;||/upnp/control/&#039;&#039;&#039;x_voip&#039;&#039;&#039;||[http://fritz.box:49000//x_voipSCPD.xml x_voipSCPD.xml]||[http://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/x_voipSCPD.pdf x_voipSCPD.pdf]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;urn:dslforum-org:service:&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;X_AVM-DE_Storage:1&#039;&#039;&#039;||/upnp/control/&#039;&#039;&#039;x_storage&#039;&#039;&#039;||[http://fritz.box:49000//x_storageSCPD.xml x_storageSCPD.xml]||[http://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/x_storageSCPD.pdf x_storageSCPD.pdf]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;urn:dslforum-org:service:&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;X_AVM-DE_OnTel:1&#039;&#039;&#039;||/upnp/control/&#039;&#039;&#039;x_contact&#039;&#039;&#039;||[http://fritz.box:49000//x_contactSCPD.xml x_contactSCPD.xml]||[http://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/x_contactSCPD.pdf x_contactSCPD.pdf]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;urn:dslforum-org:service:&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;X_AVM-DE_WebDAVClient:1&#039;&#039;&#039;||/upnp/control/&#039;&#039;&#039;x_webdav&#039;&#039;&#039;||[http://fritz.box:49000//x_webdavSCPD.xml x_webdavSCPD.xml]||[http://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/x_webdavSCPD.pdf x_webdavSCPD.pdf]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;urn:dslforum-org:service:&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;X_AVM-DE_UPnP:1&#039;&#039;&#039;||/upnp/control/&#039;&#039;&#039;x_upnp&#039;&#039;&#039;||[http://fritz.box:49000//x_upnpSCPD.xml x_upnpSCPD.xml]||[http://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/x_upnp.pdf x_upnp.pdf]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;urn:dslforum-org:service:&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;X_AVM-DE_RemoteAccess:1&#039;&#039;&#039;||/upnp/control/&#039;&#039;&#039;x_remote&#039;&#039;&#039;||[http://fritz.box:49000/x_remoteSCPD.xml x_remoteSCPD.xml]||[http://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/x_remoteSCPD.pdf x_remoteSCPD.pdf]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;urn:dslforum-org:service:&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;X_AVM-DE_MyFritz:1&#039;&#039;&#039;||/upnp/control/&#039;&#039;&#039;x_myfritz&#039;&#039;&#039;||[http://fritz.box:49000/x_myfritzSCPD.xml x_myfritzSCPD.xml]||[http://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/x_myfritzSCPD.pdf x_myfritzSCPD.pdf]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;urn:dslforum-org:service:&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;X_AVM-DE_TAM:1&#039;&#039;&#039;||/upnp/control/&#039;&#039;&#039;x_tam&#039;&#039;&#039;||[http://fritz.box:49000/x_tamSCPD.xml x_tamSCPD.xml]||[http://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/x_tam.pdf x_tam.pdf]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;urn:dslforum-org:service:&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;X_AVM-DE_AppSetup:1&#039;&#039;&#039;||/upnp/control/&#039;&#039;&#039;x_appsetup&#039;&#039;&#039;||[http://fritz.box:49000/x_homeautoSCPD.xml x_homeautoSCPD.xml]||[http://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/x_appsetupSCPD.pdf x_appsetupSCPD.pdf]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;urn:dslforum-org:service:&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;X_AVM-DE_Homeauto:1&#039;&#039;&#039;||/upnp/control/&#039;&#039;&#039;x_homeauto&#039;&#039;&#039;||[http://fritz.box:49000/x_homeautoSCPD.xml x_homeautoSCPD.xml]||[http://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/x_homeautoSCPD.pdf x_homeautoSCPD.pdf]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;urn:dslforum-org:service:&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;WLANConfiguration:1&#039;&#039;&#039;||/upnp/control/&#039;&#039;&#039;wlanconfig1&#039;&#039;&#039;||[http://fritz.box:49000/wlanconfigSCPD.xml wlanconfigSCPD.xml]||[http://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/wlanconfigSCPD.pdf wlanconfigSCPD.pdf]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;urn:dslforum-org:service:&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;WLANConfiguration:2&#039;&#039;&#039;||/upnp/control/&#039;&#039;&#039;wlanconfig2&#039;&#039;&#039;||[http://fritz.box:49000/wlanconfigSCPD.xml wlanconfigSCPD.xml]||[http://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/wlanconfigSCPD.pdf wlanconfigSCPD.pdf]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;urn:dslforum-org:service:&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;WLANConfiguration:3&#039;&#039;&#039;||/upnp/control/&#039;&#039;&#039;wlanconfig3&#039;&#039;&#039;||[http://fritz.box:49000/wlanconfigSCPD.xml wlanconfigSCPD.xml]||[http://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/wlanconfigSCPD.pdf wlanconfigSCPD.pdf]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;urn:dslforum-org:service:&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;Hosts:1&#039;&#039;&#039;||/upnp/control/&#039;&#039;&#039;hosts&#039;&#039;&#039;||[http://fritz.box:49000/hostsSCPD.xml hostsSCPD.xml]||[http://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/hostsSCPD.pdf hostsSCPD.pdf]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;urn:dslforum-org:service:&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;LANEthernetInterfaceConfig:1&#039;&#039;&#039;||/upnp/control/&#039;&#039;&#039;lanethernetifcfg&#039;&#039;&#039;||[http://fritz.box:49000/lanifconfigSCPD.xml lanifconfigSCPD.xml]||[http://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/lanifconfigSCPD.pdf lanifconfigSCPD.pdf]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;urn:dslforum-org:service:&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;LANHostConfigManagement:1&#039;&#039;&#039;||/upnp/control/&#039;&#039;&#039;lanhostconfigmgm&#039;&#039;&#039;||[http://fritz.box:49000/lanhostconfigmgmSCPD.xml lanhostconfigmgmSCPD.xml]||[http://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/lanhostconfigmgmSCPD.pdf lanhostconfigmgmSCPD.pdf]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;urn:dslforum-org:service:&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;WANCommonInterfaceConfig:1&#039;&#039;&#039;||/upnp/control/&#039;&#039;&#039;wancommonifconfig1&#039;&#039;&#039;||[http://fritz.box:49000/wancommonifconfigSCPD.xml wancommonifconfigSCPD.xml]||[http://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/wancommonifconfigSCPD.pdf wancommonifconfigSCPD.pdf]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;urn:dslforum-org:service:&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;WANDSLInterfaceConfig:1&#039;&#039;&#039;||/upnp/control/&#039;&#039;&#039;wandslifconfig1&#039;&#039;&#039;||[http://fritz.box:49000/wandslifconfigSCPD.xml wandslifconfigSCPD.xml]||[http://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/wandslifconfigSCPD.pdf wandslifconfigSCPD.pdf]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;urn:dslforum-org:service:&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;WANDSLLinkConfig:1&#039;&#039;&#039;||/upnp/control/&#039;&#039;&#039;wandsllinkconfig1&#039;&#039;&#039;||[http://fritz.box:49000/wandsllinkconfigSCPD.xml wandsllinkconfigSCPD.xml]||[http://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/wandsllinkconfigSCPD.pdf wandsllinkconfigSCPD.pdf]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;urn:dslforum-org:service:&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;WANEthernetLinkConfig:1&#039;&#039;&#039;||/upnp/control/&#039;&#039;&#039;wanethlinkconfig1&#039;&#039;&#039;||[http://fritz.box:49000/wanethlinkconfigSCPD.xml wanethlinkconfigSCPD.xml]||[http://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/wanethlinkconfigSCPD.pdf wanethlinkconfigSCPD.pdf]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;urn:dslforum-org:service:&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;WANPPPConnection:1&#039;&#039;&#039;||/upnp/control/&#039;&#039;&#039;wanpppconn1&#039;&#039;&#039;||[http://fritz.box:49000/wanpppconnSCPD.xml wanpppconnSCPD.xml]||[http://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/wanpppconnSCPD.pdf wanpppconnSCPD.pdf]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;urn:dslforum-org:service:&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;WANIPConnection:1&#039;&#039;&#039;||/upnp/control/&#039;&#039;&#039;wanipconnection1&#039;&#039;&#039;||[http://fritz.box:49000/wanipconnSCPD.xml wanipconnSCPD.xml]||[http://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/wanipconnSCPD.pdf wanipconnSCPD.pdf]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Status-Symbol ===&lt;br /&gt;
&amp;lt;code&amp;gt;attr &amp;lt;device&amp;gt; devStateIcon .*on.*off:WLAN_on_gWLAN_off .*on.*on.*:WLAN_on_gWLAN_on WLAN..off.*:WLAN_off&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Verzeichnis www/images/default müssen die passenden Dateien &amp;quot;WLAN_on_gWLAN_off.png&amp;quot;, &amp;quot;WLAN_on_gWLAN_on.png&amp;quot; und &amp;quot;WLAN_off.png&amp;quot; liegen. Wenn die PNGs fehlen, können sie {{Link2Forum|Topic=29725|Message=318113|LinkText=hier}} heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
== Anwendungsbeispiele ==&lt;br /&gt;
[[Datei:Screenshot_FritzBox1.png|mini|300px|rechts|FRITZBOX Gerät auf der FHEM  Oberfläche]]&lt;br /&gt;
Sollte alles geklappt haben, seht ihr nun unter &amp;quot;Unsortiert&amp;quot; den im nebenstehenden Screenshot gezeigten Eintrag für das &amp;quot;Gerät&amp;quot; (hier mit dem Icon &amp;quot;it_router&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
=== TR-064 Beispiele ===&lt;br /&gt;
*Box Reboot: &amp;lt;code&amp;gt;get &amp;lt;device&amp;gt; tr064Command DeviceConfig:1 deviceconfig Reboot&amp;lt;/code&amp;gt;&lt;br /&gt;
*Internet Reconnect: &amp;lt;code&amp;gt;get &amp;lt;device&amp;gt; tr064Command WANIPConnection:1 wanipconnection1 ForceTermination&amp;lt;/code&amp;gt;&lt;br /&gt;
*Daten eines Smart-Home-Gerätes auslesen: &amp;lt;code&amp;gt;get &amp;lt;device&amp;gt; tr064Command X_AVM-DE_Homeauto:1 x_homeauto GetGenericDeviceInfos NewIndex 0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Klingel- und Sprachausgabe per TR-064 ===&lt;br /&gt;
Das geht derzeit nicht, da entsprechende Kommandos per TR-064 nicht verfügbar sind. Da Telnet sukzessive abgestellt wird, sollten sich Interessenten per Feature-Request an AVM wenden, wie {{Link2Forum|Topic=38586|LinkText=hier}} beschrieben.&lt;br /&gt;
&lt;br /&gt;
Eine Alternative um Telefone klingeln zu lassen, ist die Nutzung des [[SIP-Client]]s.&lt;br /&gt;
&lt;br /&gt;
=== Anwesenheitserkennung per regelmäßiger Abfrage über das PRESENCE Modul ===&lt;br /&gt;
Fritzboxen und die FRITZ!WLAN Repeater speichern den Status angemeldeter Geräte. Dieser Status lässt sich mittels des FRITZBOX Moduls über Readings abfragen, die das Format mac_AA_AA_AA_AA_AA_AA haben und die MAC-Adressen der jeweils angemeldeten Geräte (AA:AA:AA:AA:AA:AA) enthalten. Das Reading existiert, wenn das Gerät angemeldet ist. Wenn das Gerät abgemeldet ist, existiert es nicht mehr. Es gibt auch noch den Zwischenstatus &amp;quot;inactive&amp;quot;, der anscheinend gesetzt wird, bevor das Reading gelöscht wird.&lt;br /&gt;
&lt;br /&gt;
Mit Hilfe des [[PRESENCE]] Moduls (vgl. [[Anwesenheitserkennung]]) kann man auf diese Weise den Anwesenheitsstatus abfragen. Anregungen dazu gibt es im zugehörigen {{Link2Forum|Topic=39433|LinkText=Forenthread}} zur Anwesenheitserkennung und in [http://heinz-otto.blogspot.de/2015/07/die-zeiten-andern-sich.html diesem  Blogpost]. Auf dieser Basis könnte eine einfache Implementierung zum Beispiel so aussehen:&lt;br /&gt;
&lt;br /&gt;
Funktion in [[99_myUtils anlegen|99_myUtils]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;perl&#039;&amp;gt;sub checkFritzMACpresent($$) {&lt;br /&gt;
  # Benötigt: Name der zu testenden Fritzbox ($Device),&lt;br /&gt;
  #           zu suchende MAC ($MAC), &lt;br /&gt;
  # Rückgabe: 1 = Gerät gefunden&lt;br /&gt;
  #           0 = Gerät nicht gefunden&lt;br /&gt;
  my ($Device, $MAC) = @_;&lt;br /&gt;
  my $Status = 0;&lt;br /&gt;
  $MAC =~ tr/:/_/;&lt;br /&gt;
  $MAC = &amp;quot;mac_&amp;quot;.uc($MAC);&lt;br /&gt;
  my $StatusFritz = ReadingsVal($Device, $MAC, &amp;quot;weg&amp;quot;);&lt;br /&gt;
  if ($StatusFritz eq &amp;quot;weg&amp;quot;) {&lt;br /&gt;
    Log 1, (&amp;quot;checkFritzMACpresent ($Device): $MAC nicht gefunden, abwesend.&amp;quot;);&lt;br /&gt;
    $Status = 0;&lt;br /&gt;
  } elsif ($StatusFritz eq &amp;quot;inactive&amp;quot;) {&lt;br /&gt;
    Log 1, (&amp;quot;checkFritzMACpresent ($Device): $MAC ist &amp;gt;inactive&amp;lt;, also abwesend.&amp;quot;);&lt;br /&gt;
    $Status = 0;&lt;br /&gt;
  } else {&lt;br /&gt;
    # Reading existiert, Rückgabewert ist nicht &amp;quot;inactive&amp;quot;, also ist das Gerät per WLAN angemeldet.&lt;br /&gt;
    Log 1, (&amp;quot;checkFritzMACpresent ($Device): $MAC gefunden, Gerät heißt &amp;gt;$StatusFritz&amp;lt;.&amp;quot;);&lt;br /&gt;
    $Status = 1;&lt;br /&gt;
  }&lt;br /&gt;
  return $Status&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nutzung dieser Funktion mit dem PRESENCE Modul definieren:&lt;br /&gt;
:&amp;lt;code&amp;gt;define &amp;lt;Name&amp;gt; PRESENCE function {checkFritzMACpresent(&amp;quot;Fritzbox&amp;quot;,&amp;quot;AA:BB:CC:DD:EE:FF&amp;quot;)}  60 60&amp;lt;/code&amp;gt;&lt;br /&gt;
wobei&lt;br /&gt;
*&amp;lt;Name&amp;gt; ein beliebig zu wählender Name für die PRESENCE-Funktion ist,&lt;br /&gt;
*Fritzbox der Name ist, mit dem ihr die abzufragende Fritzbox als FRITZBOX definiert habt,&lt;br /&gt;
*AA:BB:CC:DD:EE:FF die MAC-Adresse des gesuchten Geräts ist.&lt;br /&gt;
* &amp;quot;60 60&amp;quot; sagt, dass der Anwesenheitsstatus im 60-Sekunden-Takt abgefragt wird. Das macht natürlich nur Sinn, wenn ihr mit &amp;lt;code&amp;gt;attr Fritzbox INTERVAL 60&amp;lt;/code&amp;gt; den Abfrageinterval bei der Fritzbox auch entsprechend hochgesetzt habt. Der Standard ist 300.&lt;br /&gt;
* &amp;quot;Log 1&amp;quot; führt immer zum Loggen. Das ist zum Einrichten praktisch, ohne dass man gleich für das ganze Modul oder ganz FHEM &amp;lt;code&amp;gt;attr &amp;lt;device&amp;gt; verbose 5&amp;lt;/code&amp;gt; setzen muss. Wenn es läuft, können die &amp;quot;Log 1&amp;quot;-Zeilen gelöscht, auskommentiert (# an den Zeilenanfang) oder in &amp;quot;Log 5&amp;quot; geändert werden.&lt;br /&gt;
&lt;br /&gt;
=== Anwesenheitserkennung über mehrere Fritzboxen oder AVM Repeater und Fritzbox ===&lt;br /&gt;
Existiert ein AVM Repeater im Netzwerk, kann der als eigenständiges Gerät mit FRITZBOX definiert werden. WLAN Geräte an der Fritzbox werden in der Instanz der Fritzbox gelistet und WLAN Geräte am Repeater in der Repeater Instanz. Um trotzdem die Anwesenheit im Netzwerk einfach zu erkennen, muss die Subroutine in 99_myUtils.pm abgewandelt werden.&lt;br /&gt;
&lt;br /&gt;
Existiert eine zweite Fritzbox im Accesspointmodus, werden die WLAN Geräte im Netzwerk alle in der Hauptfritzbox an einem LAN Anschluss gelistet. D.h. man sieht an der Hauptfritzbox nicht, dass sie im WLAN sind. Eine zweite Instanz mit dem FRITZBOX Modul muss wegen der Anwesenheitserkennung nicht gemacht werden. Die folgende Routine kann aber universell eingesetzt werden, unabhängig von der Anzahl der FRITZBOX Instanzen. Wer mitloggen will, kann das analog zur obigen Routine einbauen&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;perl&#039;&amp;gt;sub checkAllFritzMACpresent($) {&lt;br /&gt;
  # Benötigt: nur die zu suchende MAC ($MAC), &lt;br /&gt;
  # Es werden alle Instanzen vom Type FRITZBOX abgefragt&lt;br /&gt;
  #&lt;br /&gt;
  # Rückgabe: 1 = Gerät gefunden&lt;br /&gt;
  #           0 = Gerät nicht gefunden&lt;br /&gt;
  my ($MAC) = @_;&lt;br /&gt;
  # Wird in keiner Instanz die MAC Adresse gefunden bleibt der Status 0&lt;br /&gt;
  my $Status = 0;&lt;br /&gt;
  $MAC =~ tr/:/_/;&lt;br /&gt;
  $MAC = &amp;quot;mac_&amp;quot;.uc($MAC);&lt;br /&gt;
  my @FBS = devspec2array(&amp;quot;TYPE=FRITZBOX&amp;quot;);&lt;br /&gt;
    foreach( @FBS ) {&lt;br /&gt;
		my $StatusFritz = ReadingsVal($_, $MAC, &amp;quot;weg&amp;quot;);&lt;br /&gt;
		if ($StatusFritz eq &amp;quot;weg&amp;quot;) {&lt;br /&gt;
		} elsif ($StatusFritz eq &amp;quot;inactive&amp;quot;) {&lt;br /&gt;
		} else {&lt;br /&gt;
		  # Reading existiert, Rückgabewert ist nicht &amp;quot;inactive&amp;quot;, also ist das Gerät am Netzwerk angemeldet.&lt;br /&gt;
		  $Status = 1;&lt;br /&gt;
		}&lt;br /&gt;
    }&lt;br /&gt;
  return $Status&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Da hiermit nach allen Instanzen mit dem TYPE=FRITZBOX durchsucht wird, braucht der Name der Fritzbox nicht angegeben werden.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define &amp;lt;Name&amp;gt; PRESENCE function {checkAllFritzMACpresent(&amp;quot;AA:BB:CC:DD:EE:FF&amp;quot;)}  60 60&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Abfrage auf einen bestimmten Status kann einfach erweitert werden, ist aber immer vom Entwicklunsgstand der Fritzbox Firmware und des FRITZBOX Moduls abhängig. Eventuell erreicht man bessere Reaktionszeiten auf Abwesenheit  durch diesen Zusatz:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;perl&#039;&amp;gt;my $StatusFritz = ReadingsVal($_, $MAC, &amp;quot;weg&amp;quot;);&lt;br /&gt;
		if ($StatusFritz eq &amp;quot;weg&amp;quot;) {&lt;br /&gt;
		} elsif ($StatusFritz eq &amp;quot;inactive&amp;quot;) {&lt;br /&gt;
		} elsif ($StatusFritz =~ /(.*)s, 0/) { &lt;br /&gt;
                # Dieser Zweig testet auf &amp;quot;&amp;lt;geraetename&amp;gt; (WLAN, 0 / 0 Mbit/s, 0)&amp;quot;&lt;br /&gt;
		} else {&lt;br /&gt;
		  $Status = 1;&lt;br /&gt;
		}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weitere Hinweise zu komplexeren Abfragen mehrere Boxen auf einmal etc. findet ihr auch im diesem {{Link2Forum|Topic=39433|LinkText=Forenthread}}.&lt;br /&gt;
&lt;br /&gt;
=== Anwesenheitserkennung per Notify ===&lt;br /&gt;
Der von Fritzboxen und Fritz!WLAN Repeatern gespeicherte Status zum Status angemeldeter Geräte lässt sich (statt per PRESENCE, s.o.) auch per [[notify]] anfragen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define &amp;lt;Name&amp;gt; notify Fritzbox:mac_AA_BB_CC_DD_EE_FF:.* {&lt;br /&gt;
  if (ReadingsVal(&amp;quot;Fritzbox&amp;quot;, &amp;quot;mac_AA_BB_CC_DD_EE_FF&amp;quot;, &amp;quot;inactive&amp;quot;) eq &amp;quot;inactive&amp;quot;) &lt;br /&gt;
  {&lt;br /&gt;
    fhem(&amp;quot;set anwesend_smartphone absent&amp;quot;);&lt;br /&gt;
  } &lt;br /&gt;
  else &lt;br /&gt;
  {&lt;br /&gt;
    fhem(&amp;quot;set anwesend_smartphone present&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hinweise:&lt;br /&gt;
* &amp;lt;code&amp;gt;fhem(&amp;quot;set anwesend_smartphone absent&amp;quot;);&amp;lt;/code&amp;gt; ist nur ein Beispiel, das einen Dummy auf den Status &amp;quot;absent&amp;quot; bzw. &amp;quot;present&amp;quot; setzt. Man kann hier natürlich auch gleich entsprechende Aktionen durchführen. Wer das Beispiel übernehmen möchte, sollte den Dummy vorher definieren (&amp;lt;code&amp;gt;define anwesend_smartphone dummy&amp;lt;/code&amp;gt;).&lt;br /&gt;
* mac_AA_BB_CC_DD_EE_FF ist die MAC-Adresse des gesuchten Geräts.&lt;br /&gt;
* &amp;quot;Fritzbox&amp;quot; ist der Name, unter dem die Fritzbox als FRITZBOX-Modul definiert wurde.&lt;br /&gt;
* Das Notify funktioniert, weil Geräte, wenn sie sich abgemeldet haben, erst den Status &amp;quot;inactive&amp;quot; erhalten. Ist das Gerät ganz abgemeldet, verschwindet das mac_.*-Reading. Dabei löst das Notify nicht mehr aus. Da das mac-.*-Reading aber vorher auf &amp;quot;inactive&amp;quot; stand, wurde die Abwesend-Aktion schon ausgeführt.&lt;br /&gt;
* Damit der Notify nicht andauernd losgeht, sollte man mittels &amp;lt;code&amp;gt;attr Fritzbox [[event-on-change-reading]] mac_AA_BB_CC_DD_EE_FF&amp;lt;/code&amp;gt; Events nur auslösen, wenn sich der Status des Gerätes ändert. Will man mehrere Geräte abfragen, sollte man &amp;lt;code&amp;gt;attr Fritzbox event-on-change-reading mac_AA_BB_CC_DD_EE_FF,mac_GG_HH_II_JJ_KK_LL&amp;lt;/code&amp;gt; setzen, damit bei der Änderung jedes Readings ein Event ausgelöst wird.&lt;br /&gt;
&lt;br /&gt;
=== Vergleich Anwesenheitserkennung PRESENCE/Notify ===&lt;br /&gt;
Die Anwesenheitserkennung per regelmäßiger PRESENCE-Abfrage hat den Vorteil, dass sie im Turnus der regelmäßigen Abfragen immer einen aktuellen Status produziert. Sie hat dafür den Nachteil, dass die PRESENCE-Funktionen regelmäßig abgearbeitet werden müssen, auch wenn sich gar nichts ändert. Außerdem aktualisiert sich der Status nicht sofort, sondern erst bei der nächsten regelmäßigen Abfrage. Durch häufiges Abfragen kann dieser Nachteil verringert werden (bei entsprechend höherer Systemlast).&lt;br /&gt;
&lt;br /&gt;
Die Anwesenheitserkennung per Notify hat den Vorteil, dass ein sich ändernder Status sofort abgebildet wird. Ändert sich kein Status, werden keine Routinen ausgeführt, was die Systemlast gering hält. Der Nachteil ist, dass - z.B. nach einem Systemstart - die entsprechende Aktion erst bei einer Änderung des Status ausgeführt wird. D.h. ist das zu testende Gerät anwesend, wird dann FHEM beendet, das Gerät entfernt und FHEM wieder gestartet, ist der Status in FHEM immer noch &amp;quot;anwesend&amp;quot;. Da das Reading für das Gerät nicht existiert, wird darauf auch erst wieder ein Notify ausgeführt, wenn sich der Status des Geräts wieder ändert, d.h. es wieder ankommt. Bis dahin ist der Status im System falsch. &lt;br /&gt;
Der Nachteil des Notify kann verringert werden, wenn man statt &amp;lt;code&amp;gt;attr Fritzbox event-on-change-reading mac_AA_BB_CC_DD_EE_FF&amp;lt;/code&amp;gt; ein &amp;lt;code&amp;gt;attr Fritzbox [[event-on-update-reading]] mac_AA_BB_CC_DD_EE_FF&amp;lt;/code&amp;gt; setzt. Das erhöht allerdings die Systemlast und funktioniert auch nur für den Status &amp;quot;anwesend&amp;quot;. Bei &amp;quot;abwesend&amp;quot; ist kein Reading vorhanden, so dass auch event-on-update-reading nicht ausgeführt wird.&lt;br /&gt;
Eine weitere Möglichkeit, den Nachteil der Notify-Methode auszugleichen, ist, die Statusabfrage beim Systemstart einmal manuell auszuführen, durch ein notify auf &amp;quot;GLOBAL:initialized&amp;quot;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
global:INITIALIZED {&lt;br /&gt;
  Reset_Variables;&lt;br /&gt;
  if (ReadingsVal(&amp;quot;Fritzbox&amp;quot;, &amp;quot;mac_AA_BB_CC_DD_EE_FF&amp;quot;, &amp;quot;inactive&amp;quot;) eq &amp;quot;inactive&amp;quot;) {&lt;br /&gt;
    fhem(&amp;quot;set anwesend_smartphone absent&amp;quot;);&lt;br /&gt;
  } else {&lt;br /&gt;
    fhem(&amp;quot;set anwesend_smartphone present&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Das hilft allerdings nur beim Systemstart. Nicht, wenn FHEM aufgrund irgendwelcher Hänger eine Aktualisierung des Status verpasst hat.&lt;br /&gt;
&lt;br /&gt;
=== userReadings per get tr064Command ===&lt;br /&gt;
Um dem Gerätewert &amp;lt;userReadingName&amp;gt; den Wert von &amp;lt;VariabelName&amp;gt; aus der Rückgabe des get-Befehls &#039;&#039;tr064Command&#039;&#039; zuzuordnen&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr &amp;lt;device&amp;gt; userReadings &amp;lt;userReadingName&amp;gt; {my $resp=fhem(&amp;quot;get &amp;lt;device&amp;gt; tr064Command &amp;lt;service&amp;gt; &amp;lt;control&amp;gt; &amp;lt;action&amp;gt; [[&amp;lt;argName1&amp;gt; &amp;lt;argValue1&amp;gt;] ...]&amp;quot;,1);;$resp =~/\&#039;&amp;lt;VariabelName&amp;gt;\&#039; =&amp;gt; &#039;(.*)&#039;/;;return $1;;}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Beispielsweise&lt;br /&gt;
&amp;lt;pre&amp;gt;attr Fritzbox userReadings urMobilteil_1 {my $resp=fhem(&amp;quot;get Fritzbox tr064Command X_AVM-DE_OnTel:1 x_contact GetDECTHandsetInfo NewDectID 1&amp;quot;,1);;$resp =~/&#039;NewHandsetName&#039; =&amp;gt; &#039;(.*)&#039;/;;return $1;;},&lt;br /&gt;
        urDownstreamDSLRate {my $resp=fhem(&amp;quot;get Fritzbox tr064Command WANDSLInterfaceConfig:1 wandslifconfig1 GetInfo&amp;quot;,1);;$resp =~/&#039;NewDownstreamCurrRate&#039; =&amp;gt; &#039;(.*)&#039;/;;return $1;;},&lt;br /&gt;
        urUpstreamDSLRate {my $resp=fhem(&amp;quot;get Fritzbox tr064Command WANDSLInterfaceConfig:1 wandslifconfig1 GetInfo&amp;quot;,1);;$resp =~/&#039;NewUpstreamCurrRate&#039; =&amp;gt; &#039;(.*)&#039;/;;return $1;;}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Klingelton-Einstellung und Abspielen von Sprachnachrichten bei Fritz!OS-Versionen &amp;gt;6.24 ===&lt;br /&gt;
Wenn die Fritzbox weder die Telnet- noch die webcmd-Schnittstelle hat, kann der Klingelton der Fritz!Fons nicht mehr verstellt und auch keine Sprachnachricht über ein Fritz!Fon ausgegeben werden.&lt;br /&gt;
&lt;br /&gt;
Es gibt eine Behelfslösung über das Attribut &#039;&#039;useGuiHack&#039;&#039;. Dadurch wird eine Eingabe in die WebGUI der Fritzbox simuliert. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ACHTUNG&#039;&#039;&#039;: Vor allem nach einem Update der FritzBox kann es durch dieses Attribut zu ungewolltem Verstellen von Werten in der Fritzbox kommen.&lt;br /&gt;
&lt;br /&gt;
Bei Verwendung der ring-Parameter &amp;quot;play:&amp;quot; und &amp;quot;say:&amp;quot; wird die abzuspielende URL in die M3U-Datei, die unter dem Internal &#039;&#039;M3U_LOCAL&#039;&#039; steht, eingetragen.&amp;lt;br&amp;gt; &lt;br /&gt;
Standardmäßig wird versucht, diese Datei im image-Verzeichnis von FHEM abzulegen. Diese kann dann vom Fritz!Fon über [[FHEMWEB]] abgespielt werden (IP-Freigaben beachten). Direkt nach dem ersten Anlegen der m3u-Datei kennt [[FHEMWEB]] diese noch nicht, daher bitte entweder &#039;&#039;set &amp;lt;webdevice&amp;gt; rereadicons&#039;&#039; ausführen oder FHEM neu starten.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aufgrund der Beschränkungen von [[FHEMWEB]] oder auch bei Authentifizierungsanforderungen ist es empfehlenswert, die Datei über das Attribute &#039;&#039;m3uFileLocal&#039;&#039; selber vorzugeben. Am besten auf einem Webserver, der auf dem FHEM-Server läuft und dessen Seiten-Verzeichnis durch FHEM beschreibbar ist.&amp;lt;br&amp;gt;&lt;br /&gt;
Beispiel: &amp;lt;code&amp;gt;attr Fritzbox m3uFileLocal /var/www/mp3/Fritzbox.m3u&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In dem Radioeintrag &#039;&#039;FHEM&#039;&#039; muss dann &#039;&#039;&#039;auf der FritzBox&#039;&#039;&#039;, die &#039;&#039;&#039;Web&#039;&#039;&#039;-Adresse der entsprechenden Datei eingetragen werden. Dieser Sender sollte zu Testzwecken dann auch einmal am Fritz!Fon von Hand gestartet werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Das Modul versucht, beim Start die einzutragende Radio-URL im image-Verzeichnis selber zu ermitteln (IP-Freigabe beachten). Gelingt dies, so steht diese im Internal &#039;&#039;M3U_URL&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Ring auf mehreren Telefonen gleichzeitig ===&lt;br /&gt;
&lt;br /&gt;
Damit mehrere Telefone per ring gleichzeitig Klingel, muss in der Fritzbox eine Rufgruppe definiert werden.&lt;br /&gt;
Sollte eine Türsprechanlage schon in Benutzung sein, kann die eventuell hierfür bereits eingerichtete Gruppe verwendet werden.&lt;br /&gt;
Das anlegen der Gruppe erfolgt wie in folgender AVM Anleitung erledigt werden. [http://http://avm.de/service/fritzbox/fritzbox-7390/wissensdatenbank/publication/show/1148_Interne-Rufgruppe-in-FRITZ-Box-einrichten-Gruppenruf/ AVM Interne Rufgruppe anlegen]&lt;br /&gt;
&lt;br /&gt;
Es muss eine Kurzwahl bei der Gruppe zwingend hinterlegt sein.&lt;br /&gt;
Danach kann mit folgendem Beispiel Code gearbeitet werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;set FritzBox ring 791 15 show:Türklingel&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Name des Devices, Rufgruppen Nummer, Länge und gezeigter Text auf das gewünschte anpassen.&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme / Fehlersuche ==&lt;br /&gt;
=== Fehler nach Firmware Update===&lt;br /&gt;
Nach einem Firmwareupdate der Fritzbox am besten auch FHEM neu starten.&lt;br /&gt;
&lt;br /&gt;
=== Modul bleibt im Status &amp;quot;Check APIs&amp;quot; hängen===&lt;br /&gt;
Im Log steht die Meldung: &amp;quot;Error: Timeout when reading Fritz!Box data.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Mögliche Ursache: Nutzung des FHEM-Befehls [[FHEM_Command_Beispiele#rereadcfg|rereadcfg]]. Dieser verträgt sich nicht mit dem Modul &amp;quot;blocking.pm&amp;quot;, das für parallel laufende FHEM-Prozesse genutzt wird.&lt;br /&gt;
&lt;br /&gt;
Abhilfe schafft ein Neustart &amp;lt;code&amp;gt;shutdown restart&amp;lt;/code&amp;gt; oder das Einfügen eines zusätzlichen, lokalen Telnet-Ports z.B. durch &amp;lt;code&amp;gt;define tPortLocal telnet 7073&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nachtschaltung Doppel-WLAN ===&lt;br /&gt;
Beim Abschalten des WLAN über das Modul wird (über TR064) zuerst das 2.4 GHz und dann das 5 GHz WLAN ausgeschaltet. Bei der gleichzeitigen Nutzung der WLAN-Nachtschaltung (Anschalten über das Fritz!OS) wird dann jedoch nur noch das 5 GHz WLAN wieder angeschaltet. Die Box interpretiert den TR064-Befehl anscheinend als ein komplettes Abwählen des 2.4 GHz WLAN.&lt;br /&gt;
&lt;br /&gt;
Abhilfe schafft hier nur ein notify auf das 5 GHz WLAN mit einem nachträglichem Anschalten des 2.4 GHz WLAN.&lt;br /&gt;
&lt;br /&gt;
Alternativ kann das Ausschalten des WLANs nicht direkt über TR064-Kommandos, sondern über einen indirekten Weg erfolgen: über TR064 ein set call abzusetzen und hier den Tastencode zum Ausschalten des WLANs einzugeben, bei einer FritzBox 7490 wäre dies z. B. #96*0*. &lt;br /&gt;
Schaltet man über diese Methode das WLAN aus, kann es über die Nachtschaltung wieder automatisch auf beiden Frequenzen angeschaltet werden.&lt;br /&gt;
&lt;br /&gt;
=== Kabelboxen ===&lt;br /&gt;
Bei Fritz!Boxen für den Kabelanschluss (z.B. Kabel Deutschland) scheint neben Telnet auch die TR064-API nicht zu funktionieren. Vermutlich wurde die API von AVM auf Betreiberwunsch deaktiviert, da man sonst Dinge ändern kann, die das gesamte Kabelnetz stören können.&lt;br /&gt;
&lt;br /&gt;
Zumindest für Unitymedia und einer FRITZ!Box 6490 Cable (lgi) mit FRITZ!OS:06.50 funktioniert TR064. &lt;br /&gt;
&lt;br /&gt;
Eine Rufumleitung bei Abwesenheit (Modul PRESENCE) funktioniert mit einer vorher eingerichten Telefonnummer wie folgt: &lt;br /&gt;
&amp;lt;code&amp;gt;define Rufumleitung DOIF ([Anwesenheit.dum:state] eq &amp;quot;off&amp;quot;) (set FritzBox6490 diversity 1 on) DOELSEIF ([Anwesenheit.dum:state] eq &amp;quot;on&amp;quot;) (set FritzBox6490 diversity 1 off)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Wenn&#039;s nicht klingelt ===&lt;br /&gt;
Das Klingeln erfolgt über die Wählhilfe. Eventuell muss über die Weboberfläche der Fritz!Box ein anderer Port eingestellt werden. Der aktuelle steht in &amp;quot;box_stdDialPort&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== TR064-Transport-Error: 500 Can&#039;t connect to ...:49443 (certificate verify failed) ===&lt;br /&gt;
Eventuell hilft es, die Perl Module Net::HTTPS, Net::SSL und IO::Socket::SSL zu aktualisieren.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Error: Old SID not valid anymore.&amp;quot; nach Erlauben von IPv6 auf der Fritzbox ===&lt;br /&gt;
Ohne hier den genauen Grund zu kennen - es hilft die Angabe der IPv4-Adresse: also statt &amp;lt;code&amp;gt;define FritzBox FRITZBOX&amp;lt;/code&amp;gt; dann &amp;lt;code&amp;gt;define FritzBox FRITZBOX &amp;lt;IP&amp;gt;&amp;lt;/code&amp;gt; (z.B. &amp;lt;code&amp;gt;define FritzBox FRITZBOX 192.168.10.1&amp;lt;/code&amp;gt;), so dass das Modul nicht über IPv6 geht.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Didn&#039;t get a session ID&amp;quot; ===&lt;br /&gt;
Höchstwahrscheinlich wurde ein falsches Passwort gesetzt.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;set &amp;lt;DEVICE&amp;gt; password &amp;lt;PASSWORD&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  TR064-Error 401:invalid action ===&lt;br /&gt;
Eventuell ist auf der Fritzbox ein Benutzer gesetzt und im Modul nicht korrekt angegeben bzw. mit falschen Rechten versehen (attribut boxUser).&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* {{Link2Forum|Topic=29725|LinkText=Forenthread}} zu diesem Modul&lt;br /&gt;
* [https://waschto.eu/traffic/ How-To: Traffic der FritzBox als Balkendiagramm darstellen]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:FritzBox]] &lt;br /&gt;
&amp;lt;!-- (Modulkategorie wird automatisch gesetzt) --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Waschto</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=WifiLight&amp;diff=22382</id>
		<title>WifiLight</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=WifiLight&amp;diff=22382"/>
		<updated>2017-08-26T18:16:39Z</updated>

		<summary type="html">&lt;p&gt;Waschto: Links zu How-Tos eingefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=Steuern von LEDs / Stripes mit Hilfe eines WLAN LED Moduls&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=32_WifiLight.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;
&lt;br /&gt;
&amp;lt;!-- Ich habe den Namen des Artikels angepasst, damit später die Links in die Commandref funktionieren (Groß-/Kleinschreibung ist da relevant --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FHEM Modul zum steuern diverser LED Leuchtmittel über WLAN wie Mi-Light, Limitless, IVY, sengled, LW12, LED Streifen, 2,4GHz E27 RGB Lampen ...&lt;br /&gt;
&lt;br /&gt;
=== Basic Syntax ===&lt;br /&gt;
==== Definition ====&lt;br /&gt;
:&amp;lt;code&amp;gt;define &amp;lt;name&amp;gt; WifiLight &amp;lt;Leuchtmitteltyp&amp;gt; &amp;lt;bridgetyp&amp;gt;:&amp;lt;IP|FQDN&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;Für die Milight Typen die Gruppen unterstützen werden die Gruppen in der Reihenfolge der Definition automatisch erstellt.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== on / off ====&lt;br /&gt;
:&amp;lt;code&amp;gt;set &amp;lt;name&amp;gt; on|off&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;quot;on&amp;quot; schaltet weißes Licht mit 100% ein. (Ausnahme Milight/RGB(old) da dort kein weiß unterstützt wird: 100% rot)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Erweiterte Parameter:&lt;br /&gt;
* ramp&lt;br /&gt;
&lt;br /&gt;
==== dim ====&lt;br /&gt;
:&amp;lt;code&amp;gt;set &amp;lt;name&amp;gt; dim level&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;quot;dim&amp;quot; behält die aktuell gesetzte Farbe bei und so kann &amp;quot;dim 100&amp;quot; anstelle von &amp;quot;on&amp;quot; verwendet werden wenn die aktuelle Lichtfarbe beibehalten werden soll.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
erweiterte Parameter:&lt;br /&gt;
* ramp&lt;br /&gt;
* queue&lt;br /&gt;
&lt;br /&gt;
==== HSV ====&lt;br /&gt;
:&amp;lt;code&amp;gt;set &amp;lt;name&amp;gt; HSV H,S,V&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;Farbangaben im Farbraum &amp;quot;HSV&amp;quot; sind vollständig und in der Regel intuitiver als RGB. H (HUE: 0..360) gibt die Grundfarbe in einem Farbkreis (Regenbogen) an. Rot liegt bei 0°, Grün bei 120° und blau bei 240°. S (Saturation/Sättigung: 0..100) steht für die Sättigung der Farbe. Eine Sättigung von 100 bedeutet die Farbe ist &amp;quot;rein&amp;quot; oder komplett gesättigt. Blau zum Beispiel mit 100% Sättigung entspricht RGB #0000FF. V (Value: 0..100) gibt die Helligkeit an. Ein V von 50 heist: &amp;quot;halbe Helligkeit&amp;quot;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
erweiterte Parameter:&lt;br /&gt;
* ramp&lt;br /&gt;
* queue&lt;br /&gt;
* direction&lt;br /&gt;
* event&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ramp&amp;lt;/code&amp;gt;&lt;br /&gt;
Dieser Parameter steuert einen weichen Übergang zwischen zwei Zuständen und wird in Sekunden angegeben.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;set &amp;lt;name&amp;gt; on&amp;lt;/code&amp;gt; : schaltet die LED sofort an.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;set &amp;lt;name&amp;gt; on 20&amp;lt;/code&amp;gt; : Die LED wird über einen Zeitraum von 20 Sekunden weich hoch-gedimmt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;queue&amp;lt;/code&amp;gt;&lt;br /&gt;
Angenommen das Modul arbeitet gerade intern eine Transition, also dem weichen Übergang zu einem anderen Zustand (siehe ramp), ab. Der user setzt während der Transition einen weiteren Befehl für die LED ab.&lt;br /&gt;
&lt;br /&gt;
Ohne den Parameter &amp;quot;q&amp;quot; wird die laufende Transition sofort unterbrochen und der neue Befehl wird ausgeführt.&lt;br /&gt;
Mit dem Parameter &amp;quot;q&amp;quot; wird der neue Befehl in eine interne Queue geschrieben und erst bearbeitet nachdem die laufende Transition, und alle vorher in die Queue geschriebenen Befehle, abgearbeitet wurden.&lt;br /&gt;
&lt;br /&gt;
Dadurch wird es möglich das mit einem Befehl mehrere ganz unterschiedliche Farb- oder Helligkeitswechsel an das modul übergibt die dann nacheinander abgearbeitet werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;direction&amp;lt;/code&amp;gt;&lt;br /&gt;
Im HSV Farbraum entsprechen die Farben einem Winkel (0° Rot, 120° Grün, 240° Blau). Der weiche Übergang von einer Farbe zu einer anderen wird Standardmäßig auf dem &amp;quot;kürzesten Weg&amp;quot; durchlaufen. Der Wechsel von Grün auf Rot sieht also so aus: 120°, 119°, 118°, ... 2°, 1°, 0°.  Das entspricht der default direction &amp;quot;s&amp;quot; für &amp;quot;short&amp;quot; - dem kürzesten Weg.&lt;br /&gt;
&lt;br /&gt;
Mit dem Flag &amp;quot;l&amp;quot; für &amp;quot;long&amp;quot; (langer Weg) wird die gleiche Transition jetzt mit dem &amp;quot;Umweg&amp;quot; über Blau ausgeführt, also so: 120°, 121°, 122°, ... 358°, 359°, 360° ( = 0°).&lt;br /&gt;
&lt;br /&gt;
==== RGB ====&lt;br /&gt;
:&amp;lt;code&amp;gt;set &amp;lt;name&amp;gt; RGB RRGGBB&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;RGB Angaben werden im 6 stelligen Hexadezimalen Format erwartet.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
erweiterte Parameter:&lt;br /&gt;
* ramp&lt;br /&gt;
* queue&lt;br /&gt;
* direction&lt;br /&gt;
* event&lt;br /&gt;
&lt;br /&gt;
===== Unterschiede von Farbangaben HSV zu RGB =====&lt;br /&gt;
Angenommen das Ziel ist ein Farbverlauf Rot (ganz dunkel, Helligkeit 0) auf Blau sowie ein Farbverlauf von Grün (ebenfalls 0) auf Blau. Im RGB Farbraum starten beide Farbverläufe bei #000000 auf gehen dann auf #0000FF. Damit lassen sie sich nicht unterscheiden und anders als erwartet beginnt der Farbverlauf in beiden Fällen mit einem neutralen &amp;quot;Grau&amp;quot; (RGB #010101). Die entsprechende Beschreibung im HSV Farbraumraum ist hingegen eindeutig (120,100,0 -&amp;gt; 240,100,100 für GRÜN 0% auf BLAU 100%) und funktioniert wie erwartet.&lt;br /&gt;
&lt;br /&gt;
==== Erweiterte Funktionen / Transitions ====&lt;br /&gt;
Das Modul unterstützt komplexe programmierbare Farbverläufe. Da diese im Modul berechnet werden hängt die flüssige Wiedergabe von einer ganzen Reihe von Faktoren ab:&lt;br /&gt;
* FHEM Host Hardware&lt;br /&gt;
* FHEM Auslastung und &amp;quot;Kooperation&amp;quot; von anderen Modulen&lt;br /&gt;
* verwendete Leuchtmittel&lt;br /&gt;
* Auslastung der &#039;&#039;Bridge&#039;&#039;  &lt;br /&gt;
Das Modul ist stark optimiert um die Farbverläufe flüssig wiedergeben zu können. Auf der anderen Seite reagiert das menschliche Auge sehr empfindlich. Deshalb sind gelegentliche &amp;quot;Sprünge&amp;quot; bei Farbverläufen unvermeidlich und sehr von der konkreten Umgebung abhängig.&lt;br /&gt;
&lt;br /&gt;
== Unterstützte Wifi-Leuchtmittel ==&lt;br /&gt;
&lt;br /&gt;
=== RGB LED (Streifen) am LW12 Wifi LED Controller === &lt;br /&gt;
&lt;br /&gt;
{{Randnotiz|RNTyp=Info|RNText=Achtung: Vom LW12 existieren mindestens zwei Ausführungen. Unterscheidbar am &amp;quot;eigenen&amp;quot; WLAN. LW12 spannt ein Netz mit der Bezeichnung &amp;quot;LEDNET...&amp;quot; auf. LW12 - HX001 spannt ein Netz mit der Bezeichnung &amp;quot;HX...&amp;quot; auf. Beide Typen werden unterstützt, müssen jedoch mit anderer Signatur definiert werden}}&lt;br /&gt;
[[Datei:LW12.JPG|mini|LW12 LED stripe WiFi Controller]]&lt;br /&gt;
&lt;br /&gt;
Der LW12 vereint die LED Steuereinheit und den Wifi Empfänger. Zum Betrieb ist noch der LED Streifen mit gemeinsamer Anode sowie ein in Spannung und Leistung zum LED Streifen passendes Netzteil erforderlich. Alle Anschlüsse am Controller sind als Schraubklemmen ausgeführt.&lt;br /&gt;
&lt;br /&gt;
==== Alternative Bezeichnungen ==== &lt;br /&gt;
* WF200 Controller &lt;br /&gt;
&lt;br /&gt;
Der Controller erstellt im Werkszustand ein WLAN mit eigener SSID und wird über die vom Hersteller gelieferte Smartphone App in das eigene Netzwerk eingebunden.&lt;br /&gt;
* Android Version im Google PlayStore [https://play.google.com/store/apps/details?id=com.Zengge.LEDWifiMagicColor&amp;amp;hl=de LED Magic Color Controller v2]&lt;br /&gt;
* Apple Version im Apple App-Store [https://itunes.apple.com/de/app/led-magic-color/id595148649?mt=8 LED Magic Color]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Definition erfolgt im Modul so:&lt;br /&gt;
&lt;br /&gt;
LW12 (eigene SSID &amp;quot;LEDNET...&amp;quot;):&lt;br /&gt;
:&amp;lt;code&amp;gt;define &amp;lt;name&amp;gt; WifiLight RGB LW12:&amp;lt;IP|FQDN&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
LW12 (eigene SSID &amp;quot;HX...&amp;quot;):&lt;br /&gt;
:&amp;lt;code&amp;gt;define &amp;lt;name&amp;gt; WifiLight RGB LW12HX:&amp;lt;IP|FQDN&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es können eine beliebige Anzahl LW12 definiert werden. Ein LW12 steuert jeweils nur einen LED RGB Streifen.&lt;br /&gt;
&lt;br /&gt;
Der LW12 erzeugt weißes Licht durch RGB Farbmischung und unterstützt beliebige Sättigungen sowie Helligkeiten. &amp;lt;strike&amp;gt;Deshalb und wegen seiner hohen Aktualisierungsrate, ist er für reine RGB Streifen die erste Wahl.&amp;lt;/strike&amp;gt; Mittlerweile ist der (bessere) LD382 vom gleichen Hersteller verfügbar.&lt;br /&gt;
&lt;br /&gt;
Zum Betrieb sind der LW12, ein RGB LED Streifen sowie passendes Netzteil (Klemmschrauben) erforderlich.&lt;br /&gt;
&lt;br /&gt;
==== Bezug ====&lt;br /&gt;
&lt;br /&gt;
* Zum Zeitpunkt der Erstellung dieses Artikels ist der LW12 bei eBay von diversen Händlern ab ca 30,- Euro erhältlich.&lt;br /&gt;
* [http://www.amazon.de/NEUER-STRIPS-CONTROLLER-iPhone-Android/dp/B00G55329A/ref=sr_1_1?ie=UTF8&amp;amp;qid=1390006342&amp;amp;sr=8-1&amp;amp;keywords=lw12+led LW12 RGB LED Stripecontroller Amazon]&lt;br /&gt;
&lt;br /&gt;
=== RGB und RGBW LED (Streifen) am LD382 Wifi LED Controller === &lt;br /&gt;
&lt;br /&gt;
Der LD382 vereint die LED Steuereinheit und den Wifi Empfänger. Am LD382 können reine RGB Streifen, RGBW Streifen oder eine Kombination beider angeschlossen werden. Zum Betrieb ist noch der LED Streifen mit gemeinsamer Anode sowie ein in Spannung und Leistung zum LED Streifen passendes Netzteil erforderlich. Alle Anschlüsse am Controller sind als Schraubklemmen ausgeführt, das Netzteil verfügt zusätzlich über einen Steckeranschluss.&lt;br /&gt;
&lt;br /&gt;
Der LD382 verfügt über einen WPS Button, kann also per &amp;quot;one-click&amp;quot; ins Netzwerk genommen werden.&lt;br /&gt;
&lt;br /&gt;
==== Alternative Bezeichnungen ==== &lt;br /&gt;
* LED Magic UFO (XCSOURCE)&lt;br /&gt;
&lt;br /&gt;
Die Definition erfolgt im Modul so:&lt;br /&gt;
&lt;br /&gt;
LD382 mit RGB Streifen (Weiß wird gemischt)&lt;br /&gt;
:&amp;lt;code&amp;gt;define &amp;lt;name&amp;gt; WifiLight RGB LD382:&amp;lt;IP|FQDN&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
LD382 mit RGBW Streifen (oder Kombination aus RGB und separatem Weiß)&lt;br /&gt;
:&amp;lt;code&amp;gt;define &amp;lt;name&amp;gt; WifiLight RGBW LD382:&amp;lt;IP|FQDN&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für neuere Modelle ist als Typ LD382A anzugeben.&lt;br /&gt;
&lt;br /&gt;
=== RGBW LD316 LED-Lampe Wifi === &lt;br /&gt;
&lt;br /&gt;
Der LD316 vereint LED-Lampe (Fassung E27), Steuereinheit und Wifi Empfänger. Eine externe Steuereinheit ist nicht notwendig. Einfach gegen vorhandene Glühbirne auswechseln. Mittels App Magic Color(sh. LW12) kann LD316 gesteuert und eingestellt werden. Betrieb im eigenen WLAN ist möglich. Weiterhin sind Einstellungen über den in LD316 vorhandenen Webserver möglich (Benutzer: admin, Kennwort: nimda). &lt;br /&gt;
&lt;br /&gt;
Die Definition erfolgt im Modul so:&lt;br /&gt;
:&amp;lt;code&amp;gt;define &amp;lt;name&amp;gt; WifiLight RGBW LD316:&amp;lt;IP|FQDN&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Alternative Bezeichnungen ====&lt;br /&gt;
* WIFI WLAN LED Lampe IWY MASTER Color (RGB)&lt;br /&gt;
* diverse wechselnde Bezeichnungen bei AliExpress&lt;br /&gt;
&lt;br /&gt;
==== Bezug ====&lt;br /&gt;
* Amazon, ab und an vorhanden, Preis schwankt zwischen 40 und 55 €&lt;br /&gt;
* ebay, ab und an vorhanden, Preis meist um 45 €&lt;br /&gt;
* AliExpress, fast immer was zu finden, Preis zwischen 22 $ und 34 $, Coupon beim Angebot beachten, [http://de.aliexpress.com/item/Free-shipping-smartphone-controlled-lights-bulb-7w-e27-rgbw-colors/32437430102.html?adminSeq=223453226&amp;amp;shopNumber=1763377 Beispiel 1], [http://de.aliexpress.com/item/LED-Smart-bulb-7-5w-E27-RGB-LED-WIFI-Bulb-Light-Color-Temperature-Brightness-Adjustable-Light/32254107494.html?adminSeq=201473654&amp;amp;shopNumber=811614 Beispiel 2] &#039;&#039;&#039;ACHTUNG! Teilweise nicht kompatibel, sh. Abschnitt LD316A&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== RGBW LD316A LED-Lampe Wifi === &lt;br /&gt;
&lt;br /&gt;
Mittlerweile sind einige Lampen mit unterschiedlicher Firmware bei gleicher Verpackung im Handel. Diese werden mit der App. Magic Home eingestellt. Abhängig von der vom Hersteller eingesetzten Firmware ist ein Betrieb als LD316A möglich. Betrieb im eigenen WLAN ist möglich. Je nach Firmware ist die Einstellung über den Webserver nicht mehr möglich. Es erscheint zwar die Abfrage nach Benutzer und Kennwort, danach eine Fehlermeldung. Einzelheiten im Forum, Thread (sh. unten) oder Suchbegriff &amp;quot;Magic Home&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Die Definition erfolgt im Modul so:&lt;br /&gt;
:&amp;lt;code&amp;gt;define &amp;lt;name&amp;gt; WifiLight RGBW LD316A:&amp;lt;IP|FQDN&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== sengled Boost LED-Lampe Wifi === &lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Sengled Boost.JPG|sengled Boost&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Die sengled Boost vereint eine Weiß-LED-Lampe (Fassung E27), Wifi Empfänger und Steuereinheit und bietet eine Wifi Repeater Funktion. Eine externe Steuereinheit ist nicht notwendig. Einfach gegen vorhandene Glühbirne auswechseln. Mittels App (&amp;quot;sengled Boost&amp;quot; unter {{Link2Forum|Topic=36811|LinkText=Android}} oder [https://itunes.apple.com/de/app/sengled-boost/id848792893?mt=8 iOS]) kann die sengled Boost gesteuert und eingestellt werden. Betrieb im eigenen WLAN ist möglich. Weiterhin sind Einstellungen (besonders zur Wifi Repeater Funktion) über den in der sengled Boost vorhandenen Webserver möglich (Benutzer: admin, Kennwort: admin). &lt;br /&gt;
&lt;br /&gt;
Die Definition erfolgt im Modul so:&lt;br /&gt;
:&amp;lt;code&amp;gt;define &amp;lt;name&amp;gt; WifiLight White SENGLED:&amp;lt;IP|FQDN&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weitere Informationen können im entsprechenden {{Link2Forum|Topic=36811|LinkText=Forumsthema}} nachgelesen werden.&lt;br /&gt;
&lt;br /&gt;
=== Milight Systeme für LED Streifen und E27 Leuchtmittel === &lt;br /&gt;
&lt;br /&gt;
Milight Leuchtmittel sind von diversen Herstellern unter diversen Handelsnamen erhältlich. Verfügbar sind preiswerte Ansteuerungen (RGB, RGB oder Weiß, RGB und Weiß, Warm- und Kaltweiß) für LED Streifen, Downlights sowie E27 Leuchtmittel. Die E27 Leuchtmittel haben den Empfänger integriert und können direkt in vorhandenen Fassungen eingesetzt werden.&lt;br /&gt;
&lt;br /&gt;
Die Lampen / Controller sprechen ein proprietäres 2,4GHz Protokoll. Zur Ansteuerung mit FHEM wird eine zusätzliche bridge benötigt.&lt;br /&gt;
&lt;br /&gt;
==== Alternative Bezeichnungen ==== &lt;br /&gt;
* Rocket LED&lt;br /&gt;
* Limitless LED&lt;br /&gt;
* Easybulb&lt;br /&gt;
* s`luce iLight&lt;br /&gt;
* iBulb &lt;br /&gt;
* Kreuzer&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
==== Milight WiFi bridge ====&lt;br /&gt;
Es sind verschiedenen bridge Versionen erschienen, wobei die Versionen vor iBox2 nicht mehr hergestellt und praktisch nicht mehr erhältlich sind. Der bridge erstellen im Werkszustand ein WLAN mit eigener SSID und werden über eine Smartphone App in das eigene Netzwerk eingebunden. Zum Betrieb ist ein 5V USB Netzteil erforderlich. Ein Betrieb an den USB Ports des Host ist möglich, wegen eventueller Energiemanagement Funktionen des Host jedoch nicht empfohlen.&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
BridgeV2.JPG|Milight v2 bridge&lt;br /&gt;
BridgeV3.JPG|Milight v3 bridge mit Limitless Aufkleber&lt;br /&gt;
BridgeV4.JPG|Milight v4 bridge&lt;br /&gt;
MiLight iBox2-small.jpg|Milight iBox2 bridge&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Milight bridge v1 =====&lt;br /&gt;
&lt;br /&gt;
Wird nicht unterstützt.&lt;br /&gt;
&lt;br /&gt;
===== Milight bridge v2 =====&lt;br /&gt;
&lt;br /&gt;
Die v2 bridge hört auf UDP Port 50000 und ist typischerweise am blauen Etikett erkennbar. Eine v2 bridge kann ansteuern:&lt;br /&gt;
* ein RGB Leuchtmittel &lt;br /&gt;
ODER&lt;br /&gt;
* ein RGBW1 Leuchtmittel&lt;br /&gt;
UND&lt;br /&gt;
* vier Gruppen Warmwhite/Coldwhite (White)&lt;br /&gt;
&lt;br /&gt;
===== Milight bridge v3 =====&lt;br /&gt;
&lt;br /&gt;
Die v3 bridge hört auf UDP Port 8899 und hat typischerweise ein dunkles Etikett. Eine v3 bridge kann ansteuern:&lt;br /&gt;
* ein RGB Leuchtmittel &lt;br /&gt;
ODER&lt;br /&gt;
* ein RGBW1 Leuchtmittel&lt;br /&gt;
&lt;br /&gt;
UND&lt;br /&gt;
&lt;br /&gt;
* vier Gruppen Warmwhite/Coldwhite (White)&lt;br /&gt;
UND&lt;br /&gt;
* vier Gruppen RGB + White (RGBW2)&lt;br /&gt;
&lt;br /&gt;
===== Milight bridge v4 =====&lt;br /&gt;
&lt;br /&gt;
Die Funktionen der v4 entsprechen im wesentlichen der v3, allerdings ist das WLAN Modul ein anderes (Draft-N) und das Web Interface wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
===== Milight bridge iBox2 =====&lt;br /&gt;
&lt;br /&gt;
Diese Version lässt sich aktuell nicht mit WifiLight einbinden.&lt;br /&gt;
&lt;br /&gt;
==== Leuchtmittel ====&lt;br /&gt;
&lt;br /&gt;
===== Milight Leuchtmitteltyp RGB =====&lt;br /&gt;
&lt;br /&gt;
E27, LED Streifen Controller oder Downlight.&lt;br /&gt;
&lt;br /&gt;
Dieser Typ RGB Leuchtmittel ist veraltet und von Neuanschaffungen wird abgeraten. Die Ansteuerung ist nur im Farbkreis möglich (keine volle RGB Mischung, keine Sättigung, kein Weiß). Das Protokoll zur Ansteuerung dieses Typ ist fehleranfällig und sehr langsam. Eine parallele Benutzung der FB oder der App verursacht ebenfalls Fehler. &lt;br /&gt;
&lt;br /&gt;
Benötigt eine bridge ab v2.&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Milight-RGB-Stripe.jpg|Milight RGB LED stripe Controller mit FB&lt;br /&gt;
Milight-RGB-e27.JPG|Milight RGB e27 mit FB&lt;br /&gt;
Milight-RGB-downlight.JPG|s&#039;luce RGB Downlight&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Milight Leuchtmitteltyp RGBW1 =====&lt;br /&gt;
&lt;br /&gt;
LED Streifen Controller. (RGB mit separatem Weiß Kanal)&lt;br /&gt;
&lt;br /&gt;
Dieser Typ RGB Leuchtmittel ist veraltet. &lt;br /&gt;
&lt;br /&gt;
FHEM kann mit diesem Controller Farbe, Helligkeit und Sättigung komplett steuern. Durch den extra Weißkanal sind sehr angenehme Farbmischungen möglich allerdings ist das verwendete Protokoll wie beim RGB langsam und fehleranfällig. Daher eignet sich der Controller nicht für häufige dynamische Farbwechsel und nur bedingt für unbeaufsichtigten / automatischen Betrieb. &lt;br /&gt;
&lt;br /&gt;
Die Sättigung wird durch die Balance des Weiß- und des Farbkanals erreicht. Bei einer Sättigung von 50% werden Weiß und Farbe jeweils voll angesteuert. &lt;br /&gt;
&lt;br /&gt;
Benötigt eine bridge ab v2.&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Milight-RGBW1.JPG|Milight RGBW LED stripe Controller mit FB&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Milight Leuchtmitteltyp White =====&lt;br /&gt;
&lt;br /&gt;
E27, LED Streifen Controller oder Downlight.&lt;br /&gt;
&lt;br /&gt;
Pur weiße LED Leuchtmittel mit Unterstützung der Farbtemperatur (Kaltweiß/Warmweiß).&lt;br /&gt;
&lt;br /&gt;
FHEM steuert die Helligkeit der Leuchtmittel. Ein Unterstützung der Farbtemperatur (Weiß Kelvin) ist noch nicht implementiert. Die Farbtemperatur sollte initial über die app eingestellt werden und wird von den Leuchtmitteln beibehalten. Die e27 Lampen sind zum Zeitpunkt der Erstellung dieses Artikels (04/14) ab etwa 11,- Euro bei eBay verfügbar. Erhältlich in 9Watt (Alukühlkörper) und in 6Watt (OEM, Kunststoffsockel). Die Lichtausbeute ist sehr gut.&lt;br /&gt;
&lt;br /&gt;
Benötigt eine bridge ab v2. Eine bridge kann vier getrennte Gruppen White ansteuern. Wenn mehr als vier Gruppen eingesetzt werden sollen können weitere bridge eingebunden werden. &lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Milight-WWCW-FB.JPG|Milght Warmweiß/kaltweiß LED Streifen controller mit FB&lt;br /&gt;
Milight-E27-WWCW-OEM.JPG|Milight Warmweiß/kaltweiß 6 Watt E27 OEM&lt;br /&gt;
Milight-E27-WWCW-9W.JPG|Milight Warmweiß/kaltweiß 9 Watt E27&lt;br /&gt;
Milight-Downlight-WWCW.JPG|Milight Warmweiß/kaltweiß Downlight (IWY STAR 6 Watt)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Milight Leuchtmitteltyp RGBW2 =====&lt;br /&gt;
&lt;br /&gt;
E27, LED Streifen Controller oder Downlight.&lt;br /&gt;
&lt;br /&gt;
Aktuelle Typen mit neuem und robusterem Protokoll.&lt;br /&gt;
&lt;br /&gt;
Dieser Typ Leuchtmittel gibt farbiges oder weißes Licht. Die Sättigung ist nicht stufenlos sondern 0% oder 100%. Die E27 Typen sind dabei wahlweise mit Warm- oder Kaltweiß bestellbar. &lt;br /&gt;
&lt;br /&gt;
Erhältlich in 9Watt (Alukühlkörper) und in 6Watt (OEM, Kunststoffsockel).&lt;br /&gt;
&lt;br /&gt;
Benötigt eine bridge ab v3. Eine bridge kann vier getrennte Gruppen RGBW2 ansteuern. Mehr als vier Gruppen können mit zusätzlichen bridge verwendet werden. &lt;br /&gt;
&lt;br /&gt;
Die Sättigung wird wie folgt umgesetzt: S: 0..20 =&amp;gt; 0% / S: 21..100 =&amp;gt; 100%.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Bei Farbverläufen (Sonnenaufgang) die bei einer Farbe beginnen und bei Weiß enden kann es sinnvoll sein in zwei Schritten zuerst auf 100% Gelb zu faden, dort auf 20%..40% Weiß (typenabhängig) umzuschalten und dann Weiß weiter auf 100% zu dimmen.&#039;&#039;&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Milight-rgbw2-LED.jpg|Milight RGB/Weiß LED Streifen Controller 4 Zonen&lt;br /&gt;
Milight-E27-RGBW2-OEM.JPG|Milight RGB/Weiß 6 Watt E27 OEM&lt;br /&gt;
Milight-E27-RGBW2-9Watt.JPG|Milight RGB/Weiß 9 Watt E27 mit FB&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Color-Picker aktivieren ==&lt;br /&gt;
Um den sog. &amp;quot;Color-Picker&amp;quot; zu aktivieren müssen die beiden folgenden Attribute gesetzt werden:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr &amp;lt;name&amp;gt; webCmd RGB&lt;br /&gt;
attr &amp;lt;name&amp;gt; widgetOverride RGB:colorpicker,RGB&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Wifiled_colorpicker.png|Colorpicker Beispiel&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weitere Informationen unter [[Color|Color Wiki Artikel]]&lt;br /&gt;
&lt;br /&gt;
== Farbiges Icon ==&lt;br /&gt;
Weiterhin kann das Lampen-Icon auch farbig dargestellt werden. Dazu ist es erforderlich, das folgende Attribut zu setzen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr &amp;lt;name&amp;gt; devStateIcon {Color_devStateIcon(ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;))}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* Thread über das Modul im {{Link2Forum|Topic=18958|LinkText=FHEM Forum}}&lt;br /&gt;
* [http://www.ledsee.com/datasheet_ledsee/LED%20WiFi%20controller%20for%20home%20use_Hontech-wins__-EN.pdf LW12 Datasheet]&lt;br /&gt;
* [https://waschto.eu/wifilight-led-leuchtmittel-in-fhem-einbinden/ How-To: Wifilight-Geräte in FHEM einbinden]&lt;br /&gt;
* [https://waschto.eu/milight-geraete-in-fhem-einrichten/ How-To: Milight-Geräte in FHEM einbinden]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Unterhaltungselektronik]]&lt;br /&gt;
[[Kategorie:Code Snippets]]&lt;/div&gt;</summary>
		<author><name>Waschto</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=MilightDevice&amp;diff=22381</id>
		<title>MilightDevice</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=MilightDevice&amp;diff=22381"/>
		<updated>2017-08-26T18:01:22Z</updated>

		<summary type="html">&lt;p&gt;Waschto: Link zu einem How-To hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=Unterstützung für MiLight Devices&lt;br /&gt;
|ModType=d&lt;br /&gt;
|ModForumArea=Beleuchtung&lt;br /&gt;
|ModTechName=31_MilightDevice.pm&lt;br /&gt;
|ModOwner=mattwire ({{Link2FU|8783|Forum}})&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Das Modul [[MilightDevice]] beinhaltet die Unterstützung für MiLight Geräte wie Lampen, LED-Streifen (Controller), etc.&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen ==&lt;br /&gt;
* Eine Instanz des Typs [[MilightBridge]] muss definiert sein.&lt;br /&gt;
&lt;br /&gt;
== Anwendung ==&lt;br /&gt;
Bei den folgenden Beispielen wird davon ausgegangen, dass die MilightBridge unter dem Namen &#039;&#039;MilightBridge&#039;&#039; angelegt wurde.&lt;br /&gt;
&lt;br /&gt;
=== Definition einer Zone ===&lt;br /&gt;
:&amp;lt;code&amp;gt;define &amp;lt;Lampen-Name&amp;gt; MilightDevice &amp;lt;Leuchtmittel-Typ&amp;gt; MilightBridge &amp;lt;Zone&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
Hier gilt es zu beachten, dass der Bereich von 5-8 für RGBW Zonen vorgesehen ist, somit wird die erste Zone für RGBW Leuchtmittel mit Zone 5 definiert.&lt;br /&gt;
&lt;br /&gt;
Beispiel RGB:&lt;br /&gt;
:&amp;lt;code&amp;gt;define wz.DeckenLampe MilightDevice RGB MilightBridge 1 &amp;lt;/code&amp;gt;&lt;br /&gt;
Beispiel RGBW:&lt;br /&gt;
:&amp;lt;code&amp;gt;define wz.DeckenLampe MilightDevice RGBW MilightBridge 5 &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Attribute ===&lt;br /&gt;
&lt;br /&gt;
== Anwendungsbeispiele ==&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* API Dokumentation [http://www.limitlessled.com/dev]&lt;br /&gt;
* [https://waschto.eu/milight-geraete-in-fhem-einrichten/ How-To: Milight-Geräte in FHEM einbinden]&lt;/div&gt;</summary>
		<author><name>Waschto</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=MilightBridge&amp;diff=22380</id>
		<title>MilightBridge</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=MilightBridge&amp;diff=22380"/>
		<updated>2017-08-26T17:59:07Z</updated>

		<summary type="html">&lt;p&gt;Waschto: Link zu einem How-Auto hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=Unterstützung für das Interface zu MiLight Devices&lt;br /&gt;
|ModType=d&lt;br /&gt;
|ModForumArea=Beleuchtung&lt;br /&gt;
|ModTechName=30_MilightBridge.pm&lt;br /&gt;
|ModOwner=mattwire ({{Link2FU|8783|Forum}})&lt;br /&gt;
}}&lt;br /&gt;
Das Modul [[MilightBridge]] beinhaltet die Unterstützung für das (Hardware-)[[Interface]] zu Milight Komponenten und Zonen.&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen ==&lt;br /&gt;
* Die IP Adresse der MilightBridge muss bekannt sein (am einfachsten über die Milight Smartphone App zu ermitteln) &lt;br /&gt;
* &#039;&#039;libmath-round-perl&#039;&#039; muss installiert sein, z.B. mit:&lt;br /&gt;
:&amp;lt;code&amp;gt;$ sudo apt-get install libmath-round-perl &amp;amp;&amp;amp; sudo reboot&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Anwendung ==&lt;br /&gt;
=== Definition ===&lt;br /&gt;
Anschließend wird die Bridge in FHEM konfiguriert:&lt;br /&gt;
:&amp;lt;code&amp;gt;define &amp;lt;MilightBridge-Namen-definieren&amp;gt; MilightBridge &amp;lt;MilightBridge-IP-Adresse&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Beispiel:&lt;br /&gt;
:&amp;lt;code&amp;gt;define MilightBridge MilightBridge 192.168.x.x&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jetzt ist die MilightBridge einsatzbereit und es können mit dem [[MilightDevice]]-Modul einzelne Zonen bzw. Lampen definiert werden&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* API Dokumentation [http://www.limitlessled.com/dev]&lt;br /&gt;
* [https://waschto.eu/milight-geraete-in-fhem-einrichten/ How-To: Milight-Geräte in FHEM einbinden]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:IP Components]]&lt;/div&gt;</summary>
		<author><name>Waschto</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Spritpreismonitor&amp;diff=21683</id>
		<title>Spritpreismonitor</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Spritpreismonitor&amp;diff=21683"/>
		<updated>2017-06-09T11:00:52Z</updated>

		<summary type="html">&lt;p&gt;Waschto: Hinzufügen eines Links zu einem anpassbarem Spritpreismonitor / Tankalarm&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die hier vorgestellten Fragmente ermöglichen es, mit Hilfe von [[HTTPMOD]] bei [http://www.clever-tanken.de clever-tanken.de] von Wunschtankstellen die Spritpreise zu protokollieren. Die Credits dafür gehen an Forum-Benutzer {{Link2FU|1774|Phil__}}. Die Original Diskussion im Forum ist {{Link2Forum|Topic=22554|Message=210795|LinkText=hier}}.&lt;br /&gt;
&lt;br /&gt;
Alternativ können die Kraftstoffpreise auch über die Webseite tankerkönig.de bezogen werden. Die Vorgehensweise dafür ist im Detail in [http://www.cyberwulf.de/2016/fhem-spritpreise-von-tankerkoenig-de/ diesem Blog] beschrieben.&lt;br /&gt;
&lt;br /&gt;
== Einleitung ==&lt;br /&gt;
{{Randnotiz|RNTyp=y|RNText=Die gezeigten Anweisungen basieren noch auf einer alten Version (vor Februar 2016) des Moduls HTTPMOD. Das betrifft insbesondere die gewählten &#039;&#039;readings...&#039;&#039;-Namen. Dieses Namensschema wird u.U. in Zukunft nicht mehr unterstützt.&lt;br /&gt;
Zur Umstellung auf das aktuelle Namensschema (am Beispiel &#039;&#039;Shell&#039;&#039;) bitte folgende Aktionen (Eingabe in das Befehlsfenster!) ausführen:&lt;br /&gt;
:&amp;lt;code&amp;gt;attr Shell enableControlSet 1&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;set Shell upgradeAttributes&amp;lt;/code&amp;gt;&lt;br /&gt;
Im FHEM-Log sollten dann Meldungen auftauchen nach dem Schema &lt;br /&gt;
:&#039;&#039;Shell: upgraded attribute ... to new syntax ...&#039;&#039;&lt;br /&gt;
:&#039;&#039;Shell: dropping readings... from userattr list&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Im folgenden wird mit Hilfe des Moduls HTTPMOD der Spritpreis von ausgewählten Tankstellen abgerufen. Die Daten werden [[Regulärer Ausdruck|gefiltert]], gespeichert und als Diagramm aufbereitet.&lt;br /&gt;
&lt;br /&gt;
Zum Nachbau ist es erforderlich, &amp;quot;seine&amp;quot; Wunschtankstellen bei Clever-Tanken zu suchen. Jede Tankstelle hat eine eigene Nummer:&lt;br /&gt;
:&amp;lt;code&amp;gt;/tankstelle_details/0815&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die &#039;&#039;600&#039;&#039; in den Beispielen gibt das Abrufintervall in Sekunden an.&lt;br /&gt;
&lt;br /&gt;
== Konfiguration ==&lt;br /&gt;
Die erforderlichen Definitionen in der FHEM [[Konfiguration]] bestehen aus mehreren Teilen. Zunächst die erforderlichen Einstellungen, um die Daten der gewünschten Tankstellen abzuholen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Shell HTTPMOD http://www.clever-tanken.de/tankstelle_details/4871 600&lt;br /&gt;
attr Shell group Spritpreise&lt;br /&gt;
attr Shell icon tanken&lt;br /&gt;
attr Shell readingsName_Diesel Diesel&lt;br /&gt;
attr Shell readingsName_SuperE5 SuperE5&lt;br /&gt;
attr Shell readingsRegex_Diesel &amp;lt;span&amp;gt;Diesel&amp;lt;/span&amp;gt;[^0-9]+([0-9\.]+)&lt;br /&gt;
attr Shell readingsRegex_SuperE5 &amp;lt;span&amp;gt;Super E5&amp;lt;/span&amp;gt;[^0-9]+([0-9\.]+)&lt;br /&gt;
attr Shell room Spritpreise&lt;br /&gt;
attr Shell stateFormat Liter_Diesel: Diesel&lt;br /&gt;
attr Shell timeout 5&lt;br /&gt;
&lt;br /&gt;
define Total HTTPMOD http://www.clever-tanken.de/tankstelle_details/4870 600&lt;br /&gt;
attr Total group Spritpreise&lt;br /&gt;
attr Total icon tanken&lt;br /&gt;
attr Total readingsName_Diesel Diesel&lt;br /&gt;
attr Total readingsName_SuperE5 SuperE5&lt;br /&gt;
attr Total readingsRegex_Diesel &amp;lt;span&amp;gt;Diesel&amp;lt;/span&amp;gt;[^0-9]+([0-9\.]+)&lt;br /&gt;
attr Total readingsRegex_SuperE5 &amp;lt;span&amp;gt;Super E5&amp;lt;/span&amp;gt;[^0-9]+([0-9\.]+)&lt;br /&gt;
attr Total room Spritpreise&lt;br /&gt;
attr Total stateFormat Liter_Diesel: Diesel&lt;br /&gt;
attr Total timeout 5&lt;br /&gt;
&lt;br /&gt;
define Aral HTTPMOD http://www.clever-tanken.de/tankstelle_details/4869 600&lt;br /&gt;
attr Aral group Spritpreise&lt;br /&gt;
attr Aral icon tanken&lt;br /&gt;
attr Aral readingsName_Diesel Diesel&lt;br /&gt;
attr Aral readingsName_SuperE5 SuperE5&lt;br /&gt;
attr Aral readingsRegex_Diesel &amp;lt;span&amp;gt;Diesel&amp;lt;/span&amp;gt;[^0-9]+([0-9\.]+)&lt;br /&gt;
attr Aral readingsRegex_SuperE5 &amp;lt;span&amp;gt;Super E5&amp;lt;/span&amp;gt;[^0-9]+([0-9\.]+)&lt;br /&gt;
attr Aral room Spritpreise&lt;br /&gt;
attr Aral stateFormat Liter_Diesel: Diesel&lt;br /&gt;
attr Aral timeout 5&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wer die Anzeige der Benzinpreise inklusive der obligatorisch abschließenden &amp;quot;9&amp;quot; möchte, muss zu jedem readingsName einen entsprechenden Zusatzzeile hinzufügen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Addiert zum Wert ($val) des Readings (readingsName_Diesel) den Wert 0.009&lt;br /&gt;
attr Shell readingsExpr_Diesel $val + 0.009&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Zeile fügt dem Dieselpreis der Shell-Tankstelle bei einem Literpreis von 1.29 die Ziffer &amp;quot;9&amp;quot; hinzu und ergibt 1.299.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dazu kommen noch die Definitionen für das [[FileLog]]:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define FileLog_Spritpreise FileLog /media/usblog/fhem/log/spritpreise-langen-%Y-%m.log (Shell|Total|Aral):(SuperE5|Diesel).*&lt;br /&gt;
attr FileLog_Spritpreise alias Log Spritpreise&lt;br /&gt;
attr FileLog_Spritpreise group Logfile&lt;br /&gt;
attr FileLog_Spritpreise logtype text&lt;br /&gt;
attr FileLog_Spritpreise room Spritpreise&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sowie eine passende [[readingsGroup]]:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Spritpreise readingsGroup (Shell|Total|Aral):(SuperE5|Diesel).*&lt;br /&gt;
attr Spritpreise group Spritpreisuebersicht&lt;br /&gt;
attr Spritpreise notime 1&lt;br /&gt;
attr Spritpreise room Spritpreise&lt;br /&gt;
#attr Spritpreise style style=&amp;quot;font-size:16px&amp;quot;     # führt ggf. zu einem PERL WARNING&lt;br /&gt;
attr Spritpreise valueFormat {&#039;%.2f €&#039;}&lt;br /&gt;
#attr Spritpreise valueStyle {Werte($READING,$VALUE)}     # führt ggf. zu einem PERL WARNING&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Und eine [[SVG|Plotdefinition]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define SVG_FileLog_Spritpreise_1 SVG FileLog_Spritpreise:SVG_FileLog_Spritpreise_1:CURRENT&lt;br /&gt;
attr SVG_FileLog_Spritpreise_1 group Spritpreisverlauf&lt;br /&gt;
attr SVG_FileLog_Spritpreise_1 room Spritpreise&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Farbliche Hervorhebung ==&lt;br /&gt;
Folgender Code gehört in [[99 myUtils anlegen|99_myUtils.pm]]; die Werte können natürlich entsprechend eigener Wünsche und Vorlieben angepasst werden.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
###################################################&lt;br /&gt;
###     Spritpreisübersicht - Farbsortierung    ###&lt;br /&gt;
###################################################&lt;br /&gt;
&lt;br /&gt;
sub Werte($$) {&lt;br /&gt;
  my ($name, $wert) = @_;&lt;br /&gt;
# Log(3,&amp;quot;$name $wert&amp;quot;);&lt;br /&gt;
  if ($name eq &amp;quot;Diesel&amp;quot;) {&lt;br /&gt;
    return &#039;style=&amp;quot;color:red&amp;quot;&#039; if($wert &amp;gt;= 1.39); &lt;br /&gt;
    return &#039;style=&amp;quot;color:blue&amp;quot;&#039; if(($wert &amp;gt;= 1.33) &amp;amp;&amp;amp; ($wert &amp;lt; 1.39));&lt;br /&gt;
    return &#039;style=&amp;quot;color:green;;font-weight:bold&amp;quot;&#039; if($wert &amp;lt;= 1.32);&lt;br /&gt;
  }elsif ($name eq &amp;quot;SuperE10&amp;quot;) {&lt;br /&gt;
    return &#039;style=&amp;quot;color:crimson&amp;quot;&#039; if($wert &amp;gt;= 1.70); &lt;br /&gt;
    return &#039;style=&amp;quot;color:yellow&amp;quot;&#039; if(($wert &amp;gt;= 1.55) &amp;amp;&amp;amp; ($wert &amp;lt; 1.70));&lt;br /&gt;
    return &#039;style=&amp;quot;color:lightgreen;;font-weight:bold&amp;quot;&#039; if($wert &amp;lt; 1.55);&lt;br /&gt;
  }elsif ($name eq &amp;quot;SuperE5&amp;quot;) {&lt;br /&gt;
    return &#039;style=&amp;quot;color:red&amp;quot;&#039; if($wert &amp;gt;= 1.59); &lt;br /&gt;
    return &#039;style=&amp;quot;color:blue&amp;quot;&#039; if(($wert &amp;gt;= 1.49) &amp;amp;&amp;amp; ($wert &amp;lt; 1.59));&lt;br /&gt;
    return &#039;style=&amp;quot;color:green;;font-weight:bold&amp;quot;&#039; if($wert &amp;lt;= 1.48);&lt;br /&gt;
  }  &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Die zugehörige .gplot Datei ===&lt;br /&gt;
SVG_FileLog_Spritpreise_1.gplot&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Created by FHEM/98_SVG.pm, 2014-10-22 12:57:34&lt;br /&gt;
set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set title &#039;Spritpreise&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid&lt;br /&gt;
set ylabel &amp;quot;Preise (€/Liter)&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Preise (€/Liter)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#FileLog 4:Aral.Diesel\x3a:1:&lt;br /&gt;
#FileLog 4:Shell.Diesel\x3a:1:&lt;br /&gt;
#FileLog 4:Total.Diesel\x3a:1:&lt;br /&gt;
#FileLog 4:Aral.SuperE5\x3a:1:&lt;br /&gt;
#FileLog 4:Shell.SuperE5\x3a:1:&lt;br /&gt;
#FileLog 4:Total.SuperE5\x3a:1:&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Aral Diesel&#039; ls l2 lw 1 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Shell Diesel&#039; ls l1 lw 1 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Total Diesel&#039; ls l0 lw 1 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Aral Super&#039; ls l3 lw 1 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Shell Super&#039; ls l4 lw 1 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Total Super&#039; ls l5 lw 1 with lines&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tricks für HTTPMOD ==&lt;br /&gt;
Je nach Internetverbindung und Geschwindigkeit des FHEM Rechners kann das Modul manchmal Probleme haben, die Daten schnell genug zu verarbeiten.&lt;br /&gt;
&lt;br /&gt;
Eine Lösung dazu wäre, die Daten vorher mit wget auf einem eigenen Webserver zu speichern (z.B. ein lokaler Apache) und HTTPMOD auf diesen zugreifen zu lassen. &lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* Vorstellung und Diskussion im {{Link2Forum|Topic=22554|LinkText=FHEM Forum}}&lt;br /&gt;
* Der &amp;quot;Datenlieferant&amp;quot;: [http://www.clever-tanken.de/ Clever Tanken]&lt;br /&gt;
* Eine Anleitung, wie man das mit wget macht, gibt es {{Link2Forum|Topic=28123|Message=216228|LinkText=hier}} (ist aber noch nicht ganz fertig)&lt;br /&gt;
* Umsetzung für [http://www.cyberwulf.de/2016/fhem-spritpreise-von-tankerkoenig-de/ Tankerkönig API]&lt;br /&gt;
* Anpassbarer Spritpreismonitor mit Tankalarm: [https://waschto.eu/spritmonitor-2-0-individualisierter-tankalarm/ waschto.eu] (Beta-Phase)&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Code Snippets]]&lt;br /&gt;
[[Kategorie:Examples]]&lt;/div&gt;</summary>
		<author><name>Waschto</name></author>
	</entry>
</feed>