<?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=Suelle</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=Suelle"/>
	<link rel="alternate" type="text/html" href="http://wiki.fhem.de/wiki/Spezial:Beitr%C3%A4ge/Suelle"/>
	<updated>2026-05-02T09:43:07Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=FHEM_Connector_f%C3%BCr_Amazon_Alexa&amp;diff=33091</id>
		<title>FHEM Connector für Amazon Alexa</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=FHEM_Connector_f%C3%BCr_Amazon_Alexa&amp;diff=33091"/>
		<updated>2020-04-25T07:56:21Z</updated>

		<summary type="html">&lt;p&gt;Suelle: Rechtschreibfehler korrigiert: hombridge -&amp;gt; homebridge&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Baustelle}}&lt;br /&gt;
&#039;&#039;&#039;Alexa FHEMlazy&#039;&#039;&#039; war historisch ein Fork des Original [[Alexa-Fhem|alexa-fhem]], der im Januar 2019 mit dem Original zusammengeführt wurde und nun als &#039;&#039;&#039;FHEM Connector&#039;&#039;&#039; verfügbar ist.&lt;br /&gt;
&lt;br /&gt;
Er ermöglicht innerhalb von Minuten die Verknüpfung von FHEM mit einem Amazon Echo Gerät. Auch Geräte anderer Hersteller mit verbauten Mikrofonen und Alexa-Sprachassistenten-Unterstützung sollten problemlos funktionieren. Für folgende Geräte ist dies bspw. der Fall (Falls Ihr andere/weitere Gerätemodelle bzw. Hersteller in Verwendung habt, bitte hier pflegen):&lt;br /&gt;
&lt;br /&gt;
* SONOS Beam und SONOS One   &lt;br /&gt;
&lt;br /&gt;
Gegenüber dem klassischen Ansatz ergeben sich Einschränkungen, so läuft die Software normalerweise unter dem gleichen Benutzer wie FHEM auf dem gleichen Server, und es wird z.Zt. nur der Smarthome-Skill unterstützt (die Variante, bei der die Möglichkeiten der Interaktion von Amazon festgelegt wurden).&lt;br /&gt;
Dafür ist weder ein Developer-Account bei Amazon, eigene Lambda- und Skillfunktionen, noch das Öffnen eines eingehenden Ports aus dem Internet nötig. &lt;br /&gt;
* Die Software integriert einen Installer, der die Erstkonfiguration und Anmeldung übernimmt&lt;br /&gt;
* Die Kommunikation zur Software auf dem heimischen Rechner und dann zu FHEM verläuft über SSH und einen vom FHEM-Verein gehosteten Server&lt;br /&gt;
* Funktioniert mit IPv4, IPv6, echtem Dual Stack und DS-Lite&lt;br /&gt;
* Als Skill bei Amazon wird der Skill &amp;quot;FHEM Connector&amp;quot; verwendet.&lt;br /&gt;
&lt;br /&gt;
Der Thread im Forum zur Software ist hier: {{Link2Forum|Topic=94817}}.&lt;br /&gt;
&lt;br /&gt;
{{Infobox Modul&lt;br /&gt;
|ModPurpose=Einfache Anbindung von FHEM an Amazon Assistent Alexa&lt;br /&gt;
|ModType=h&lt;br /&gt;
|ModCmdRef=alexa&lt;br /&gt;
|ModTechName=39_alexa.pm / alexa-fhem&lt;br /&gt;
|ModForumArea=Frontends/Sprachsteuerung&lt;br /&gt;
|ModOwner=gvzdus, André/ justme1968 ({{Link2FU|430|Forum}} / [[Benutzer Diskussion:Justme|Wiki]])&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Einführung==&lt;br /&gt;
&lt;br /&gt;
===Arbeitsweise und Datenfluss===&lt;br /&gt;
Vorläufig ist alexa-fhem im &amp;quot;FHEM Connector-Modus&amp;quot; ein reiner [https://developer.amazon.com/de/docs/smarthome/understand-the-smart-home-skill-api.html SmartHome-Skill].&lt;br /&gt;
SmartHome-Skills erhalten weder die Sprachdaten selber noch das, was Amazon in Textform verstanden hat, sondern vielmehr extrahiert Amazon aus dem verstandenen Text Anweisungen und Abfragen für Geräte, die dann an den Skill übermittelt werden. Charmant ist dabei, dass unmittelbar gefragt werden kann &amp;quot;Alexa, wie ist die Temperatur im Wohnzimmer?&amp;quot;, während andere Skills zunächst explizit angesprochen werden müssen (&amp;quot;Alexa, frage FHEM nach der Temperatur im Wohnzimmer&amp;quot;). Außerdem kann der Nutzer mehrere Smarthome-Skills installieren, und die Geräte werden zu einer Gesamtmenge zusammengefasst.&lt;br /&gt;
&lt;br /&gt;
Gehen wir den Datenfluss bei der konkreten Frage &amp;quot;Wie ist die Temperatur im Wohnzimmer?&amp;quot; durch:&lt;br /&gt;
* Alexa hat bei der Skillinstallation gelernt, dass &amp;quot;FHEM Connector&amp;quot; bei Dir einen Thermostaten im Raum Wohnzimmer kennt. Dadurch wird bei der Sprachanalyse von &amp;quot;Alexa Voice Service&amp;quot; in der Cloud erkannt, dass eine Abfrage an &amp;quot;FHEM Connector&amp;quot; erfolgversprechend ist.&lt;br /&gt;
* Zunächst wird die zentrale &amp;quot;Lambda-Funktion&amp;quot; von &amp;quot;FHEM Connector&amp;quot; aufgerufen. Die Funktion leitet aber im Kern nur den Request unverändert an den vom Verein bereitgestellten Server weiter. Im Request enthalten ist ein Token, das sogenannte &amp;quot;Bearer-Token&amp;quot;.&lt;br /&gt;
* Der &amp;quot;Vereinsserver&amp;quot; prüft anhand dieses Tokens, ob es überhaupt bekannt ist, und zu welchem Nutzer es gehört. Ist dieser Nutzer verbunden, wird der Request wiederum quasi unverändert an den Nutzer weitergeleitet.&lt;br /&gt;
* Diese Weiterleitung passiert über einen sogenannten SSH-Reverse-Tunnel, der von Deiner Seite und der Software auf dem FHEM-Tunnel automatisch aufgebaut wird.&lt;br /&gt;
* Auf Deiner Seite läuft die eigentliche Software, und zwar unter nodeJS. nodeJS ist ein Javascript ausführender Miniserver, der lokal auf einem Zufallsport auf Requests &amp;quot;lauscht&amp;quot;. In der Original-Version  [[Alexa-Fhem|Alexa FHEM]] kommen die Requests aus dem Internet (hoffentlich von der eigenen Lambda-Funktion), hier bei &amp;quot;FHEM Connector&amp;quot; kommen sie ausschließlich aus dem SSH-Tunnel von lokal.&lt;br /&gt;
* Die Software validiert nun diesen Request anhand des Bearer-Tokens. Konkret wird dabei das bei der Installation generierte Token, dass bei der Skill-Aktivierung an Amazon übertragen wurde, mit dem lokal gespeicherten Wert verglichen. Stimmt das Token, wird der Befehl verarbeitet, üblicherweise wird hierbei ein Aufruf an die Webschnittstelle von FHEM abgesetzt.&lt;br /&gt;
* FHEM führt den Befehl aus&lt;br /&gt;
&lt;br /&gt;
Hört sich langsam und kompliziert an? Kompliziert: Okay. Langsam eher nicht, in etlichen Fällen liegt die Gesamtantwortszeit unter 200 ms.&lt;br /&gt;
&lt;br /&gt;
Soweit ein erster Überblick über die Datenflüsse. Im Abschnitt Sicherheit ist das Konzept der Absicherung deutlich genauer und ausführlicher beschrieben.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&lt;br /&gt;
Du wirst bei der Installation zuerst auf der Kommandozeile auf Deinem Raspberry (o.ä.) unterwegs sein, anschließend im Webfrontend von FHEM, und zum Schluss auf der Alexa-Konsole im Web.&lt;br /&gt;
&lt;br /&gt;
===node.js installieren===&lt;br /&gt;
&lt;br /&gt;
Ab Jessy liegt NodeJS bereits in einer ausreichend aktuellen Version vor (Stretch und Buster funktionieren ebenfalls). Mit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:50%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install nodejs npm&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
kannst Du es installieren. Mit &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:50%;&amp;quot;&amp;gt;&lt;br /&gt;
node --version&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
erfährst Du die aktuelle Version - wenn hier etwas mit &amp;quot;8&amp;quot; oder höher vorneweg erscheint, ist alles gut.&lt;br /&gt;
Ansonsten suche Dir bitte eine Anleitung im Web, wie Du NodeJS auf Deinem System auf einen aktuellen Stand bringen kannst.&lt;br /&gt;
&lt;br /&gt;
=== Alexa-FHEM installieren ===&lt;br /&gt;
&lt;br /&gt;
Nun installieren wir Alexa-fhem aus dem offiziellen Repository:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:50%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo npm install -g alexa-fhem&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Vorgang benötigt etwas Zeit.&lt;br /&gt;
&lt;br /&gt;
=== Alexa-FHEM aktivieren ===&lt;br /&gt;
&lt;br /&gt;
Wechsele jetzt in FHEM-Web!&lt;br /&gt;
&lt;br /&gt;
Wichtig ist, dass das Alexa-Modul in der Version ab Januar 2019 vorliegt. Dafür bitte einmal FHEM aktualisieren:&lt;br /&gt;
Speichern der Config nicht vergessen, und&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:50%;&amp;quot;&amp;gt;&lt;br /&gt;
update&lt;br /&gt;
shutdown restart&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alles, was jetzt noch nötig ist, ist das Anlegen eines Alexa-Devices. Gib dafür in der FHEM-Web-Kommandozeile&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:50%;&amp;quot;&amp;gt;&lt;br /&gt;
define alexa alexa&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
an. Nun läuft, während Du bereits das neu angelegte Alexa-Devices siehst, ein komplexer Prozess im Hintergrund:&lt;br /&gt;
&lt;br /&gt;
* Falls noch kein SSH-Key für den Benutzer, unter dem FHEM läuft, existiert, wird einer generiert&lt;br /&gt;
* Es wird ein Secret-Key im Prozess generiert, dass den Server nicht verlässt, und der Skillanmeldung dient.&lt;br /&gt;
* Du wirst auf dem Server &amp;quot;va-fhem.fhem.de&amp;quot; des FHEM-Vereins mit dem SSH-Key angemeldet, und der Hash-Wert Deines Secret-Key dort abgelegt.&lt;br /&gt;
&lt;br /&gt;
Und wenn Du diese Sätze gelesen hast, sollte inzwischen sich das Alexa-Device in FHEM-Web aktualisiert haben, und &lt;br /&gt;
ungefähr so aussehen:&lt;br /&gt;
&lt;br /&gt;
[[Datei:Alexa-Device-2.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Neben dem Status für alexa-fhem und der Proxyverbindung ist wichtig, dass diese beiden Zeilen beim Reload aufgetaucht sind:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:90%;&amp;quot;&amp;gt;&lt;br /&gt;
alexaFHEM.bearerToken crypt:...&lt;br /&gt;
alexaFHEM.skillRegKey crypt:...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ja, und diesen Schlüssel benötigst Du wirklich! Also am besten schon einmal mit &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:90%;&amp;quot;&amp;gt;&lt;br /&gt;
get &amp;lt;alexa&amp;gt; proxyKey&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in Klartext anzeigen lassen und in ein Editor-Fenster dauerhaft wegsichern.&lt;br /&gt;
&lt;br /&gt;
Jetzt solltest Du Dein Alexa-Device nicht mehr löschen, denn das im Reading angezeigte &amp;quot;bearerToken&amp;quot; zu löschen bedeutet, dass die Software die Zugriffe von nicht mehr überprüfen kann und keine Kommandos mehr funktionieren. In diesem Fall hilft nur die Neuinstallation des Skills.&lt;br /&gt;
&lt;br /&gt;
==== Fehler bei der Aktivierung ====&lt;br /&gt;
&lt;br /&gt;
Während kompliziertere Fehlerfälle im Abschnitt &amp;quot;Mögliche Probleme und Lösungen&amp;quot; behandelt werden, hier häufige Fälle, warum die kryptischen Zeilen nicht auftauchen:&lt;br /&gt;
&lt;br /&gt;
* Zuerst bitte einfach einmal die Seite neu laden.&lt;br /&gt;
&lt;br /&gt;
===== 401: Authorization Required =====&lt;br /&gt;
&lt;br /&gt;
Wenn Du FHEM-Web mit einem User/Passwort-Schutz versehen hast, wirst du folgende Fehlermeldung sehen: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:90%;&amp;quot;&amp;gt;&lt;br /&gt;
alexaFHEM stopped; failed to connect to fhem: 401: Authorization Required&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der Regel musst du die Angaben User/Passwort noch einmal explizit setzen. Im Attribute-Abschnitt &amp;quot;alexaFHEM-auth&amp;quot; auswählen, User/Passwort mit &amp;quot;:&amp;quot; getrennt angeben und &amp;quot;attr&amp;quot; anklicken. alexa-fhem wird automatisch neu gestartet. Hier das Ganze in der Text-Variante:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:90%;&amp;quot;&amp;gt;&lt;br /&gt;
attr alexa alexaFHEM-auth user:pass&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Permission denied =====&lt;br /&gt;
&lt;br /&gt;
Wenn du folgende Fehlermeldungen im Alexa Logfile siehst, wurde das Verzeichnis &amp;quot;/opt/fhem/.ssh/&amp;quot; von dir bei der Arbeit mit &amp;quot;root&amp;quot; oder &amp;quot;sudo&amp;quot; mit den falschen Berechtigungen versehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:90%;&amp;quot;&amp;gt;&lt;br /&gt;
[2019-7-25 11:59:12] sshautoconf: aborted with ssh-keygen returned error - key_save_private: Permission denied&lt;br /&gt;
[2019-7-25 11:59:12] *** SSH: proxy configuration failed: ssh-keygen returned error - key_save_private: Permission denied&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Prüfen kannst du die Berechtigungen mit folgendem Befehl auf der Shell-Konsole: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:90%;&amp;quot;&amp;gt;&lt;br /&gt;
ls -l /opt/fhem/.ssh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Du solltest dann folgende Ausgabe erhalten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:90%;&amp;quot;&amp;gt;&lt;br /&gt;
insgesamt 12&lt;br /&gt;
-rw------- 1 fhem dialout 1675 Jul 12 13:10 id_rsa&lt;br /&gt;
-rw-r--r-- 1 fhem dialout  391 Jul 12 13:10 id_rsa.pub&lt;br /&gt;
-rw-r--r-- 1 fhem dialout  884 Jul 12 13:10 known_hosts&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Steht in der Ausgabe nicht &amp;quot;fhem dialout&amp;quot; (dein fhem User), sondern bspw. &amp;quot;root root&amp;quot;, dann bspw. mit folgendem Befehl an deinen fhem User anpassen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:90%;&amp;quot;&amp;gt;&lt;br /&gt;
chown fhem:dialout /opt/fhem/.ssh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit dem ersten Befehl &amp;quot;ls -l ...&amp;quot; kannst du dann nochmal prüfen, ob die Berechtigungen korrekt übernommen wurden. &lt;br /&gt;
&lt;br /&gt;
===== weitere Prüfungen =====&lt;br /&gt;
&lt;br /&gt;
Hast Du noch die Shell-Konsole offen? Dann prüfe bitte noch einmal auf der Konsole, ob nun zwei Prozesse laufen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:50%;&amp;quot;&amp;gt;&lt;br /&gt;
ps -ef | egrep &#039;(alexa|ssh)&#039;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
sollte Dir idealerweise so etwas anzeigen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:90%;&amp;quot;&amp;gt;&lt;br /&gt;
fhem     31322     1 99 13:56 ?        00:00:03 alexa                              &lt;br /&gt;
fhem     31332 31322  8 13:56 ?        00:00:00 /usr/bin/ssh -R 1234:127.0.0.1:&amp;lt;zufälliger port&amp;gt; -oServerAliveInterval=90 -p 58824 fhem-va.fhem.de&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;alexa&amp;quot; ist dabei der Node-JS-Prozess, der ssh-Prozess ist die aufgebaute Verbindung zum Vereinsserver.&lt;br /&gt;
&lt;br /&gt;
Wenn Du diese Prozesse &#039;&#039;&#039;nicht&#039;&#039;&#039; siehst oder das Alexa-Device keinen Registrierungskey anzeigt, dann ist leider der Start nicht glatt verlaufen.&lt;br /&gt;
&lt;br /&gt;
Im Logfile (über den link &amp;lt;code&amp;gt;Logfile&amp;lt;/code&amp;gt; in der Detail-Ansicht über &amp;lt;code&amp;gt;set&amp;lt;/code&amp;gt;, oder über den Namen bei &#039;&#039;currentlogfile&#039;&#039; in den Internals) findest Du idealerweise selber Hinweise, wo es hakt, oder kannst im Forum nachfragen.&lt;br /&gt;
&lt;br /&gt;
=== Geräte im FHEM-Webfrontend zuweisen ===&lt;br /&gt;
Um das Aha-Erlebnis zu vergrößern, ist jetzt ein guter Zeitpunkt, 1 oder besser mind. 2 Geräte für den Alexa-Dienst zuzuweisen. Von Haus aus wird keines Deiner FHEM-Geräte automatisch Alexa zugewiesen!&lt;br /&gt;
&lt;br /&gt;
Wähle die Geräte aus, rufe sie auf und setze das Attribut &amp;quot;alexaName&amp;quot;. Hierbei in Kürze nur der Hinweis:&lt;br /&gt;
* Keine Angst vor Leerzeichen und Umlauten, funktioniert.&lt;br /&gt;
* Große Angst vor Rechtschreibfehlern (Terrasse, Rollladen) oder komplizierten Wörtern &amp;quot;handgebastelte Martinslaterne im Kinderzimmer Iphigenie-Chantal&amp;quot;.&lt;br /&gt;
* Das Attribut &amp;quot;alexaRoom&amp;quot; ist NUR FÜR DEN CUSTOM SKILL relevant. Ausnahme: structure und LightScene Devices, siehe: [[FHEM_Connector_f%C3%BCr_Amazon_Alexa#Was_geht_alles_.3F]].&lt;br /&gt;
&lt;br /&gt;
Lade die Geräte neu in die Software, indem Du &amp;lt;code&amp;gt;set &amp;lt;alexa&amp;gt; restart&amp;lt;/code&amp;gt; ausführst!&lt;br /&gt;
[[Datei:HowToSet alexaName.png|alternativtext=How to set alexaName|ohne|mini|Wie setzt man das Attribut alexaName]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anmerkungen (weil oft gestellte Fragen im Forum) bzgl. Erkennung von Geräten:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Wichtig ist, dass die Filtereinstellung in der alexa-fhem.cfg (zu finden unter &amp;quot;Edit Files&amp;quot;) passt.&lt;br /&gt;
Das, was dort eingetragen ist (Standard: alexaName=..* / also es ist ein alexaName vergeben) auch an den entsprechenden Devices in fhem vorhanden ist.&lt;br /&gt;
Stimmt das nicht überein, kann alexa-fhem keine Devices von fhem abfragen/finden.&lt;br /&gt;
Ob der Filter entsprechend funktioniert kann man wie folgt testen: &#039;&#039;list Filtereinstellung&#039;&#039; beispiel mit Standardfilter: &#039;&#039;list alexaName=..*&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Hat alexa-fhem per Filter Devices aus fhem &amp;quot;gefunden&amp;quot;, geht es weiter mit der &amp;quot;Erkennung&amp;quot;. Also um welches Device (Typ und &amp;quot;Fähigkeiten&amp;quot;) handelt es sich. Dazu gilt folgendes:&lt;br /&gt;
** sind entsprechende Readings beim Device vorhanden (z.B. temperature, state mit on/off, ...) erkennt das alexa-fhem automatisch. Die Liste der automatisch erkannten Readings wächst ständig. Daher erst mal schauen ob das Device bereits entsprechend erkannt (typisiert) wurde. Das kann durch prüfen des alexa-fhem-Logs geschehen (NICHT fhem-log!).&lt;br /&gt;
** sind entsprechende &amp;quot;set-Befehle&amp;quot; erkennbar (oft auch durch Readings). Also ist beispielsweise (wie beim Dummy nötig) ein &#039;&#039;setList&#039;&#039; mit entsprechenden Einträgen vorhanden oder entsprechende Readings, z.B. desired-temp zum Stellen der Temperatur etc.&lt;br /&gt;
** wird das Device nicht richtig oder &amp;quot;unvollständig&amp;quot; erkannt helfen folgende Attribute:&lt;br /&gt;
*** genericDeviceType: hiermit kann alexa-fhem in die gewünschte Richtung &amp;quot;geschubbst&amp;quot; werden. Anmerkung: man kann nicht alles erzwingen, Readings bzw. set-Befehle müssen passen (oder per homebridgeMapping passend gemacht werden). Wenn ein genericDeviceType nicht per &amp;quot;Drop-Down&amp;quot; erscheint, dann kann er auch (wenn bekannt) einfach per WEB-cmd eingegeben werden: &#039;&#039;attr Devicename genericDeviceType media&#039;&#039;&lt;br /&gt;
*** homebridgeMapping: hierdurch kann alexa-fhem bei der Erkennung von Zuständen und möglichen Einstellungen (also WAS kann das Device) unterstützt werden. Mittels homebridgeMapping können vorhandene Readings (Zustände) auf für alexa-fhem bekannte Zustände gemappt werden. Ebenso können damit Standard-fhem-Kommandos von alexa-fhem auf Device-spezifische gemappt werden. Beispiel: on/off auf Ein/Aus (falls das Device statt on/off eben ein Ein/Aus erwartet). Zum Beispiel: &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:50%;&amp;quot;&amp;gt;&lt;br /&gt;
attr &amp;lt;thermostat&amp;gt; homebridgeMapping TargetTemperature=target::target,minValue=18,maxValue=25,minStep=0.5 CurrentTemperature=myTemp:temperature&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; [https://github.com/justme-1968/homebridge-fhem/blob/master/README.md weitere Beispiele]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anmerkung bzgl. genericDeviceType und homebridgeMapping:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
* diese Attribute werden von verschiedenen &amp;quot;Sprachsteuerungsmodulen&amp;quot; in fhem verwendet (homebridge [dort wurde es &amp;quot;erfunden&amp;quot;], alexa-fhem, gassistant, ...). Daher ist nicht jedes Mapping für alle &amp;quot;Dienste&amp;quot; verwendbar. Ausprobieren schadet aber nicht.&lt;br /&gt;
* ebenso kann man mit diesen Attributen (homebridgeMapping wird gerne so &amp;quot;missbraucht&amp;quot;) nichts erzwingen, was seitens Amazon/Alexa nicht unterstützt bzw. verstanden wird! D.h. zunächst ist zu prüfen, ob ein bestimmter (gewünschter) Sprachbefehl seitens Amazon/Alexa unterstützt wird! Aktuelles Beispiel (Stand Jan 2020): &amp;quot;Alexa, fahre den Rollo hoch/runter&amp;quot;. Da ist Amazon/Alexa gerade dabei etwas zu tun. Bislang wird das nicht unterstützt, also ist das auch mit einem entsprechenden homebridgeMapping nicht zu erzwingen! Was unterstützt wird kann man bei Amazon nachlesen: [https://developer.amazon.com/es-ES/docs/alexa/device-apis/list-of-interfaces.html]&lt;br /&gt;
&lt;br /&gt;
== Finale: Skill verknüpfen ==&lt;br /&gt;
Suche im WebFrontend oder der Alexa-App den Skill &amp;quot;FHEM Connector&amp;quot;. Für nicht-Mac/iOS Anwerder empfiehlt das WebFrontend (https://alexa.amazon.de) statt die App, damit Du den Anmeldeschlüssel auch bequem kopieren kannst.&lt;br /&gt;
&lt;br /&gt;
Wenn du noch nicht bei Amazon angemeldet bist, erwartet Amazon zunächst, dass Du Dich normal bei Amazon anmeldest.&lt;br /&gt;
&lt;br /&gt;
Sobald Du &amp;quot;FHEM Connector&amp;quot; aktivierst, öffnet sich ein Browser-Tab mit folgender Maske:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Datei:FHEMlazy_login.png|240px]]&lt;br /&gt;
&lt;br /&gt;
Hier kopierst Du Deinen Anmeldeschlüssel (im Klartext!) hinein und klickst auf Check. Als glücklicher Mensch ist auf der folgenden Statusseite alles grün:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Datei:FHEMlazy_check.png|240px]]&lt;br /&gt;
&lt;br /&gt;
Im Einzelnen wird hier geprüft, ob Du per SSH verbunden bist (und auch Deine IP zur Sicherheit angezeigt), ob der Reverse-Tunnel steht, ob nodeJS erreichbar ist und wie viele Geräte Alexa gleich finden sollte (in meinem Fall 22).&lt;br /&gt;
&lt;br /&gt;
Sollte etwas nicht grün sein und Du eine Idee zum Fixen haben, kannst Du mit &amp;quot;Retry&amp;quot; neue Versuche auslösen.&lt;br /&gt;
&lt;br /&gt;
Ist alles okay, klicke rechts den Button &amp;quot;Activate Skill&amp;quot;. Du springst damit wieder zurück zu Amazon, die Dir hoffentlich zur erfolgreichen Verknüpfung gratulieren.&lt;br /&gt;
&lt;br /&gt;
Amazon möchte nun unmittelbar die Gerätesuche starten, und unter SmartHome-Geräte sollten diese nun auftauchen.&lt;br /&gt;
&lt;br /&gt;
== Was geht alles ? ==&lt;br /&gt;
&lt;br /&gt;
* Geräte, die sich ein- und ausschalten lassen:&lt;br /&gt;
** Automatisch: Müssen &amp;lt;code&amp;gt;set on&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;set off&amp;lt;/code&amp;gt; Kommandos haben&lt;br /&gt;
** dummys müssen &amp;lt;code&amp;gt;setList&amp;lt;/code&amp;gt; mit on und off haben&lt;br /&gt;
** Über &amp;lt;code&amp;gt;genericDeviceType&amp;lt;/code&amp;gt; switch bzw. light kann bestimmt werden ob es in alexa als Schalter oder Licht behandelt wird.&lt;br /&gt;
** Wenn die Set-Kommandos im FHEM Device anders benannt sind: homebridgeMapping On:cmdOn=&amp;lt;ein&amp;gt;,cmdOff=&amp;lt;aus&amp;gt; setzen&lt;br /&gt;
** Kommandos:&lt;br /&gt;
***Alexa, schalte &amp;lt;name&amp;gt; ein/aus&lt;br /&gt;
***Alexa, Licht an/aus&lt;br /&gt;
***Alexa, schalte &amp;lt;gruppe&amp;gt; ein/aus&lt;br /&gt;
* Geräte, die eine Temperatur messen&lt;br /&gt;
** Automatisch: Es muss ein Reading &amp;lt;code&amp;gt;temperature&amp;lt;/code&amp;gt; geben&lt;br /&gt;
** Über &amp;lt;code&amp;gt;genericDeviceType&amp;lt;/code&amp;gt; thermometer&lt;br /&gt;
** Sonst: homebridgeMapping CurrentTemperature:reading=&amp;lt;reading&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Geräte, deren Helligkeit sich ändern lässt&lt;br /&gt;
** Automatisch: wenn &amp;lt;code&amp;gt;dim&amp;lt;/code&amp;gt; oder &amp;lt;code&amp;gt;pct&amp;lt;/code&amp;gt; Kommandos erkannt werden&lt;br /&gt;
** Über &amp;lt;code&amp;gt;genericDeviceType&amp;lt;/code&amp;gt; light&lt;br /&gt;
** Über homebridgeMapping: Wenn &amp;lt;code&amp;gt;helligkeit&amp;lt;/code&amp;gt; das Reading für die aktuelle Helligkeit enthält und die Helligkeit mit &amp;lt;code&amp;gt;set &amp;lt;device&amp;gt; prozent xxx&amp;lt;/code&amp;gt; gesetzt wird, sieht das homebridgeMapping wie folgt aus: homebridgeMapping Brightness=helligkeit::prozent,minValue=0,maxValue=&amp;lt;maximalwert&amp;gt;&lt;br /&gt;
** Kommandos:&lt;br /&gt;
*** Alexa, mache &amp;lt;name&amp;gt; heller/dunkler&lt;br /&gt;
*** Alexa, Licht heller/dunkler&lt;br /&gt;
* Geräte, deren Farbe sich ändern lässt&lt;br /&gt;
** ...&lt;br /&gt;
&lt;br /&gt;
* Geräte, deren Farbtemperatur sich ändern lässt&lt;br /&gt;
** ...&lt;br /&gt;
&lt;br /&gt;
* Geräte, bei denen sich eine Lautstärke einstellen lässt&lt;br /&gt;
** ...&lt;br /&gt;
&lt;br /&gt;
* Geräte, bei denen sich ein prozentualer Wert einstellen lässt&lt;br /&gt;
** Automatisch: wenn &amp;lt;code&amp;gt;dim&amp;lt;/code&amp;gt; oder &amp;lt;code&amp;gt;pct&amp;lt;/code&amp;gt; Kommandos erkannt werden&lt;br /&gt;
** ...&lt;br /&gt;
&lt;br /&gt;
* elektrische Türschlösser&lt;br /&gt;
** &amp;lt;code&amp;gt;genericDeviceType&amp;lt;/code&amp;gt;: lock&lt;br /&gt;
** homebridgeMapping mit LockCurrentState und LockTargetState&lt;br /&gt;
&lt;br /&gt;
* Thermostate&lt;br /&gt;
** Über &amp;lt;code&amp;gt;genericDeviceType&amp;lt;/code&amp;gt; thermostate&lt;br /&gt;
** ...&lt;br /&gt;
&lt;br /&gt;
* structure Devices aus FHEM (ab alexa-fhem version 0.5.7)&lt;br /&gt;
** können mit &amp;lt;code&amp;gt;genericDeviceType&amp;lt;/code&amp;gt; scene als Szene eingebunden werden&lt;br /&gt;
** über &amp;lt;code&amp;gt;alexaRoom&amp;lt;/code&amp;gt; kann der name um einen Ort ergänzt werden&lt;br /&gt;
** Szenen aus einer structure lassen sich ein- und ausschalten&lt;br /&gt;
** Wichtig:&lt;br /&gt;
*** Ein Skill darf nur 12 Szenen automatisch erkennen und einbinden.&lt;br /&gt;
&lt;br /&gt;
* LightScene Devices aus FHEM (ab alexa-fhem version 0.5.8)&lt;br /&gt;
** können mit &amp;lt;code&amp;gt;genericDeviceType&amp;lt;/code&amp;gt; scene als Szenen eingebunden werden&lt;br /&gt;
** über &amp;lt;code&amp;gt;alexaRoom&amp;lt;/code&amp;gt; kann der name um einen Ort ergänzt werden&lt;br /&gt;
** Szenen aus einer LightScene lassen sich nur einschalten&lt;br /&gt;
** Wichtig:&lt;br /&gt;
*** Ein Skill darf nur 12 Szenen automatisch erkennen und einbinden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Geräte, deren Kanal sich umschalten lässt (ab alexa-fhem version 0.5.13)&lt;br /&gt;
** Über &amp;lt;code&amp;gt;genericDeviceType&amp;lt;/code&amp;gt; media&lt;br /&gt;
** homebridgeMapping ChannelController:reading=&amp;lt;reading&amp;gt;,cmd=&amp;lt;cmd&amp;gt;&lt;br /&gt;
** Erlaubte Werte siehe hier: https://developer.amazon.com/de/docs/device-apis/alexa-channelcontroller.html#changechannel&lt;br /&gt;
** ...&lt;br /&gt;
&lt;br /&gt;
* Geräte, deren Playback status sich schalten lässt (ab alexa-fhem version 0.5.13)&lt;br /&gt;
** Über &amp;lt;code&amp;gt;genericDeviceType&amp;lt;/code&amp;gt; media&lt;br /&gt;
** homebridgeMapping PlaybackController:playback,values=Play;Pause;Stop;Previous;Next&lt;br /&gt;
** Erlaubte Werte siehe hier: https://developer.amazon.com/de/docs/device-apis/alexa-playbackcontroller.html#discovery&lt;br /&gt;
** ...&lt;br /&gt;
&lt;br /&gt;
* Geräte, deren Eingang sich umschalten lässt (ab alexa-fhem version 0.5.13)&lt;br /&gt;
** Über &amp;lt;code&amp;gt;genericDeviceType&amp;lt;/code&amp;gt; media&lt;br /&gt;
** homebridgeMapping InputController:reading=&amp;lt;reading&amp;gt;,cmd=&amp;lt;cmd&amp;gt;,values=HDMI+1;HDMI+2;XBOX&lt;br /&gt;
** Erlaubte Werte siehe hier: https://developer.amazon.com/de/docs/device-apis/alexa-property-schemas.html#input&lt;br /&gt;
** ...&lt;br /&gt;
&lt;br /&gt;
* Kontaktsensoren (ab alexa-fhem version 0.5.15)&lt;br /&gt;
** Über &amp;lt;code&amp;gt;genericDeviceType&amp;lt;/code&amp;gt; contact&lt;br /&gt;
** homebridgeMapping ContactSensorState:reading=&amp;lt;reading&amp;gt; oder CurrentDoorState:reading=&amp;lt;reading&amp;gt;&lt;br /&gt;
** Die Anzeige in der Alexa-App funktioniert sofort, die Abfrage per Sprache erst ab Version 0.5.27.&lt;br /&gt;
&lt;br /&gt;
* Geräte, deren Lautstärke sich ändern lässt (ab alexa-fhem version 0.5.24)&lt;br /&gt;
** Über &amp;lt;code&amp;gt;genericDeviceType&amp;lt;/code&amp;gt; speaker&lt;br /&gt;
** Automatisch: es muss ein Reading &amp;lt;code&amp;gt;volume&amp;lt;/code&amp;gt; und/oder &amp;lt;code&amp;gt;mute&amp;lt;/code&amp;gt; geben&lt;br /&gt;
** homebridgeMapping Volume:reading=&amp;lt;reading&amp;gt;,cmd=&amp;lt;cmd&amp;gt; Mute:reading=&amp;lt;reading&amp;gt;,cmd=&amp;lt;cmd&amp;gt;&lt;br /&gt;
** ...&lt;br /&gt;
&lt;br /&gt;
* Geräte, die sich ein- (und optional) ausschalten lassen als Szene (ab alexa-fhem version 0.5.26)&lt;br /&gt;
** Über &amp;lt;code&amp;gt;genericDeviceType&amp;lt;/code&amp;gt; scene&lt;br /&gt;
** Automatisch: Müssen &amp;lt;code&amp;gt;set on&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;set off&amp;lt;/code&amp;gt; Kommandos haben&lt;br /&gt;
** homebridgeMapping On:reading=&amp;lt;reading&amp;gt;,cmdOn=&amp;lt;cmd&amp;gt;[,cmdOff=&amp;lt;cmd&amp;gt;]&lt;br /&gt;
** Hinweis: Fehlende Kommandos lassen sich mit cmdalias erzeugen&lt;br /&gt;
** Wichtig:&lt;br /&gt;
*** Ein Skill darf nur 12 Szenen automatisch erkennen und einbinden.&lt;br /&gt;
* Rollläden. Lange ein Problemthema, das nur mit &amp;quot;Schalte auf 0%, schalte auf 100% lief&amp;quot;. Wichtig: &amp;quot;alexa-fhem&amp;quot; ab Version 0.5.39 einsetzen. GenericDevice-Type auf &amp;quot;blind&amp;quot; setzen. Nach Restart von alexa-fhem und neuer Gerätesuche sollte folgendes funktionieren:&lt;br /&gt;
** &amp;quot;..., öffne &amp;lt;Name&amp;gt; ganz&amp;quot;&lt;br /&gt;
** &amp;quot;..., schließe &amp;lt;Name&amp;gt; komplett&amp;quot;&lt;br /&gt;
** &amp;quot;hoch&amp;quot; und &amp;quot;runter&amp;quot; (ohne &amp;quot;ganz&amp;quot; oder &amp;quot;komplett&amp;quot;) schalten jeweils nur einen bestimmten Prozentsatz hoch oder runter. Dieser kann mit &amp;lt;code&amp;gt;attr &amp;lt;name&amp;gt; homebridgeMapping TargetPosition:minStep=&amp;lt;wert&amp;gt;&amp;lt;/code&amp;gt;geändert werden. Aber Achtung: In diesem Intervall kann dann auch nur noch ein absoluter Prozentwert per Sprache oder Slider eingestellt werden! Bei z.B. 25% würden 13% zu 25% aufgerundet, 12% zu 0% abgerundet werden.&lt;br /&gt;
* Kontaktsensoren (ab alexa-fhem version 0.5.47)&lt;br /&gt;
** Automatisch wenn ein Reading &amp;lt;code&amp;gt;motion&amp;lt;/code&amp;gt; vorhanden ist oder es sich um einen Zigbee bewgungsmelder an einer HUE oder deCONZ Bridge handelt&lt;br /&gt;
** Über &amp;lt;code&amp;gt;genericDeviceType&amp;lt;/code&amp;gt; MotionSensor&lt;br /&gt;
** homebridgeMapping MotionDetected:reading=&amp;lt;reading&amp;gt;,values=&amp;lt;wert für bewgung&amp;gt;:1;&amp;lt;wert für keine bewegung&amp;gt;:0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Es werden noch einige andere häufig verwendete Geräte (Homematic, hue,...) automatisch erkannt.&lt;br /&gt;
&lt;br /&gt;
to be continued ...&lt;br /&gt;
&lt;br /&gt;
In der [https://developer.amazon.com/docs/device-apis/list-of-interfaces.html List of Capability Interfaces] bei Amazon kann man sehen, welche Möglichkeiten das Smart Home Skill API aktuell in einzelnen Ländern bietet. Leider ohne die jeweiligen landessprachlichen Kommandos.&lt;br /&gt;
&lt;br /&gt;
=== Aktiv Routinen starten ===&lt;br /&gt;
Routinen (eine Funktionalität, die rein - genauso wie &amp;quot;Räume&amp;quot; - bei Amazon liegt und nicht von FHEM Connector beeinflusst wird) waren lange die ewige Antwort auf die Frage: &amp;quot;Meine Frau möchte aber &#039;&#039;&#039;Öffne Rollläden&#039;&#039;&amp;lt;nowiki/&amp;gt;&#039; sagen&amp;quot;: In der Alexa-App gibt es im Menü den Punkt &amp;quot;Routinen&amp;quot;, und hier lässt sich eine gewisse Anzahl von Aktionen (unter optionalen Bedingungen) an ein Sprachkommando knüpfen.&lt;br /&gt;
&lt;br /&gt;
Neu: Routinen können inzwischen auch von Skills getriggert werden, und seit Version 0.5.47 (Februar 2020) auch von FHEM Connector. Das braucht niemand, um die Rollläden hochzufahren, denn das kann FHEM ja selber, aber um z.B. eine Ansage auf einem Alexa-Gerät zu triggern. Dafür gibt es auch das FHEM-Modul &amp;quot;echodevice&amp;quot;, aber es erfordert ein paar Klimmzüge. Mit dem aktiven Triggern von Routinen kann FHEM auslösen, dass Alexa ungefragt (!) Dinge wie &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;quot;Die Temperatur in der Tiefkühltruhe hat -16 Grad überschritten&amp;quot;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
in den Raum sagt. Also eine Alternative bzw. Ergänzung zu Alarmen / Erinnerungen per Telegram o.ä.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vorgeschichte&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Die Smarthome-Skill-API von Amazon sah schon lange das &amp;quot;proactiveReporting&amp;quot; vor: Also z.B. die gemessene Temperatur nicht erst auf Anfrage hin zu übermitteln, sondern laufend aktiv zu pushen. Aber warum Daten an Amazon senden, wenn es dafür keinen Mehrwert gibt? Beim Öffnen z.B. des Thermostaten in der Alexa-App kommen ohnehin laufend Statusabfragen. Warum also einen Datenpool bei Amazon über die Haustemperatur aufbauen und Änderungen pushen, wenn es keinen Mehrwert dafür gibt? &lt;br /&gt;
&lt;br /&gt;
Inzwischen lassen sich (reale oder vermeintliche) Änderungen von &#039;&#039;Bewegungssensoren&#039;&#039; und &#039;&#039;Fensterkontakten&#039;&#039; als Startbedingung an Alexa-Routinen koppeln. Man kann in der Alexa-App (ggf. fiktive) Öffnen eines Fensterkontaktes an das Aufsagen eines freien Textes durch die Hausbutlerin knüpfen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Umsetzung&#039;&#039;&#039;:&lt;br /&gt;
* Jedes Alexa-Device, dessen Status aktiv zu Amazon gepusht werden soll, im Attribut &amp;quot;alexaProactiveEvents&amp;quot; mit einer &amp;quot;1&amp;quot; versehen. Per Default wird &#039;&#039;kein&#039;&#039; Gerät laufend aktiv zu Amazon gepusht!&lt;br /&gt;
* das geänderte Device einmal zu Amazon pushen &amp;quot;set &amp;lt;alexa&amp;gt; add &amp;lt;device&amp;gt;&amp;quot; (oder &#039;Alexa, suche neue Geräte&#039; murmeln)&lt;br /&gt;
* Das Gerät sollte jetzt beim Anlegen einer neuen Routine (&amp;quot;Neue Routine&amp;quot;, &amp;quot;Wenn Folgendes passiert&amp;quot;, &amp;quot;Smart Home&amp;quot;) als möglicher Triggerpunkt erscheinen.&lt;br /&gt;
&lt;br /&gt;
==== Dummygeräte: ====&lt;br /&gt;
Ein Dummydevice sollte einen Kontaktschalter oder Bewegungssensor simulieren, um dann in FHEM eine beliebige Bedingung als Trigger zu definieren, und eine freie Ansage in Alexa als Routine zu definieren. Hier ein Beispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:90%;&amp;quot;&amp;gt;&lt;br /&gt;
define voicetrigger1 dummy&lt;br /&gt;
attr voicetrigger1 alexaName Trigger 1&lt;br /&gt;
attr voicetrigger1 alexaProactiveEvents 1&lt;br /&gt;
attr voicetrigger1 genericDeviceType contact&lt;br /&gt;
attr voicetrigger1 homebridgeMapping ContactSensorState=state,values=closed:CONTACT_DETECTED;;open:CONTACT_NOT_DETECTED&lt;br /&gt;
attr voicetrigger1 readingList 0:closed 1:open&lt;br /&gt;
attr voicetrigger1 setList closed open&lt;br /&gt;
&lt;br /&gt;
set alexa add voicetrigger1&lt;br /&gt;
set alexa restart&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fehlersuche:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Push setzt ein intaktes Push-Token voraus. Sollte im Alexa-Logfile Folgendes erscheinen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;failed to refresh token: invalid_grant: &#039;The request has an invalid grant parameter : refresh_token&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
so ist das Push-Token nicht aktuell. Weil die Auswirkung lange nur war, dass Geräteänderungen nicht aktiv an Amazon gemeldet wurden, gibt es noch keine umfassende Analyse des Problems. Es lässt sich lösen, indem eine oder beide folgenden Aktionen ausgeführt werden:&lt;br /&gt;
* Löschen des &amp;quot;.eventToken&amp;quot; im Alexa-Device über &amp;quot;deletereading&amp;quot;&lt;br /&gt;
* &amp;quot;FHEM-Connector&amp;quot;-Skill auf &amp;quot;alexa.amazon.de&amp;quot; einmal deaktivieren und dann neu verbinden&lt;br /&gt;
&lt;br /&gt;
== Mögliche Probleme und Lösungen ==&lt;br /&gt;
&lt;br /&gt;
Es kann vorkommen, dass Geräte zwar korrekt erkannt werden, aber das durch Alexa erkannte Kommando nicht richtig umgesetzt wird (Beispiel - mittlerweile behoben: {{Link2Forum|Topic=96766}}). Neben dem FHEM-Log gibt es noch das Logfile, welches von alexa-fhem angelegt wird. &lt;br /&gt;
&lt;br /&gt;
=== Fehlersuche über die FHEM-Oberfläche ===&lt;br /&gt;
&lt;br /&gt;
* alexa-fhem Logfile anschauen (Detail-Ansicht des &amp;lt;alexa&amp;gt;-Device aufrufen, klick auf &#039;&#039;&#039;Logfile&#039;&#039;&#039; oben)&lt;br /&gt;
* alexa-fhem im Debug-Modus aufrufen:&lt;br /&gt;
** -D zum alexaFHEM-params attribut hinzufügen&lt;br /&gt;
** Alexa-Befehl auslösen&lt;br /&gt;
** -D aus dem alexaFHEM-params attribut entfernen&lt;br /&gt;
* Die notwendigen Informationen finden sich in dem alexa-Logfile (siehe oben)&lt;br /&gt;
&lt;br /&gt;
=== Fehlersuche über Kommandozeile (lies: Shell) + FHEM-Oberfläche ===&lt;br /&gt;
&lt;br /&gt;
:* set &amp;lt;alexa&amp;gt; stop (FHEM-Oberfläche)&lt;br /&gt;
:* Auf der Kommandozeile &amp;lt;code&amp;gt;alexa-fhem -D -c /opt/fhem/alexa-fhem.cfg &amp;gt; debug.log&amp;lt;/code&amp;gt; starten (dadurch wird die Datei debug.log erzeugt im aktuellen Verzeichnis)&lt;br /&gt;
:* Alexa-Befehl auslösen&lt;br /&gt;
:* alexa-fhem auf der Kommandozeile wieder stoppen (CTRL-C)&lt;br /&gt;
:* set &amp;lt;alexa&amp;gt; start (FHEM-Oberfläche)&lt;br /&gt;
&lt;br /&gt;
Die Datei debug.log sollte Hinweise enthalten, wie das Problem zu lösen ist oder Dich zumindest in die richtige Richtung schieben.&lt;br /&gt;
&lt;br /&gt;
Im Beispiel aus dem Forum fand sich in dem Logfile der Hinweis darauf, dass das Device mit falschen min/max-Werten unterwegs war.&lt;br /&gt;
&lt;br /&gt;
=== Registrierungskey vergessen, Registrierung zurücksetzen ===&lt;br /&gt;
&lt;br /&gt;
Auf der Kommandoshell:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:90%;&amp;quot;&amp;gt;&lt;br /&gt;
pi@raspberrypi:~# sudo -u fhem ssh -p 58824 fhem-va.fhem.de status&lt;br /&gt;
Registered.&lt;br /&gt;
Registered on 2019-01-13T15:38:13Z.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
heisst, das der Vereinsserver eigentlich alles hat, was er will. Es wird kein neuer Schlüssel generiert.&lt;br /&gt;
Wenn Du die Situation zurücksetzen möchtest, wäre die hässliche Methode, Deinen SSH-Key zu löschen. Eleganter ist, die Registrierung auf Vereinsseite zu löschen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:90%;&amp;quot;&amp;gt;&lt;br /&gt;
pi@raspberrypi:~# sudo -u fhem ssh -p 58824 fhem-va.fhem.de unregister&lt;br /&gt;
Your registration has been removed&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
löscht Deinen Schlüssel mitsamt allen dort gespeicherten Daten auf Vereinsseite. Bei Restart von alexa-fhem in FHEM-WEB wird jetzt ein neuer Registrierungskey angefordert.&lt;br /&gt;
&lt;br /&gt;
== Sicherheitskonzept und Secrets ==&lt;br /&gt;
&lt;br /&gt;
Um diesen Abschnitt zu verstehen, solltest Du den Abschnitt &amp;quot;Arbeitsweise&amp;quot; im Kopf haben. Einerseits ist Dir vermutlich einleuchtend, dass ein Server, der per SSH rückwärts nur ausgewählte Kommandos in den Tunnel, den Du aufgebaut hast, leitet, &amp;quot;irgendwie sicherer&amp;quot; ist. Andererseits möchte man nicht blind vertrauen.&lt;br /&gt;
&lt;br /&gt;
=== SSH ===&lt;br /&gt;
==== SSH - macht das nichts Gefährliches? ====&lt;br /&gt;
SSH ist ein Veteran des Internet und entstand, um sich sicher (verschlüsselt) und schnell auf Servern einzuloggen. Schon früh wurde dabei der sogenannte &amp;quot;Reverse-Tunnel&amp;quot; implementiert: Also der vom Client (Deinem Rechner) geäußerte Wunsch: &amp;quot;Bitte leite mir Requests, die bei Dir, Server, auf Port xy eingehen, an meinen lokalen Port yz weiter.&amp;quot;. Dieses Verfahren implementiert der Reverseproxy, wobei tatsächlich auf dem Server für Dich kein echter Port geöffnet wird.&lt;br /&gt;
&lt;br /&gt;
Wie Dir ggf. sicher der Unix-Guru Deines Vertrauens bestätigen wird: Die Kombination&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:50%;&amp;quot;&amp;gt;&lt;br /&gt;
ssh -R 1234:localhost:&amp;lt;zufälliger port&amp;gt; zielserver &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
erlaubt keine Ausführung von Shell-Kommandos auf Deinem Server, sondern einzig, dass vom SSH-Programm Verbindungen zu einem lokalen Port auf Deinem Server auf dem alexa-fhem lauscht aufgebaut werden. Du kannst also z.B. mit einem&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:50%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo /usr/sbin/tcpdump -X -s 0 -i lo port &amp;lt;zufälliger port&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
vollständig überwachen (oder ggf. permanent aufzeichen), was auf Deinem Server von außen gesteuert passiert.&lt;br /&gt;
&lt;br /&gt;
==== Wie wird bei SSH verschlüsselt? ====&lt;br /&gt;
Im Prinzip wie im Web auf SSL-Seiten, teils mit den gleichen Verschlüsselungsverfahren. Allerdings arbeitet SSH eher wie das im Web recht seltene Verfahren: Bei jeder Verbindung übermitteln sowohl Server wie auch Client den öffentlichen Teil ihres Schlüssels. Anders als im Web wird der Schlüssel aber nicht von einer öffentlichen Zertifizierungsstelle wie &amp;quot;LetsEncrypt&amp;quot; unterschrieben. Stattdessen entscheiden Server wie Client beim ersten Verbindungsaufbau typischerweise per manueller Frage: &amp;quot;Willst Du jetzt und künftig diesem Schlüssel vertrauen?&amp;quot; Bei der Installation wird diese Frage für Deine Seite bejaht, und fortan wird der öffentliche Schlüssel des FHEM-Servers auf Deinem Rechner gespeichert. Ab da bist Du z.B. davor sicher, dass jemand den DNS-Eintrag verbiegt oder sich in den Datenfluss Deines Providers einhängt: Ein geänderter Serverschlüssel würde bemerkt werden.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Soweit klar? Aus Deinem öffentlichen Schlüssel wiederum leitet der Server her: &amp;quot;Das ist definitiv wieder derjenige, der sich damals &amp;quot;registriert&amp;quot; hat&amp;quot;. Und an dieser Stelle kann ich auch den &amp;lt;b&amp;gt;ersten Teil des 3-teiligen Registrierungskeys&amp;lt;/b&amp;gt; erläutern: Die typischerweise 6-stellige Hex-Zahl am Anfang ist der Java-Hashcode Deines öffentlichen Schlüssel. Sie ist damit sozusagen Deine aus Deinem öffentlichen Schlüssel abgeleitete Benutzer-ID.&lt;br /&gt;
&lt;br /&gt;
=== Die Rolle der Secrets ===&lt;br /&gt;
Wenn jetzt klar ist, dass die Verbindung zum Vereinsserver sicher und vertauschungsfrei funktioniert, bleiben noch 2 Probleme zu lösen:&lt;br /&gt;
1) Im Web bei der Skill-Aktivierung musst Du beweisen, dass Du der Mensch am Browser bist, dem der SSH-Tunnel von IP xy mit dem öffentlichen Schlüssel X gehört. Bei der automatischen Registrierung werden lokal auf Deinem Rechner zwei 64-Bit-Secrets generiert:&lt;br /&gt;
* Das &amp;lt;b&amp;gt;Anmelde&amp;lt;/b&amp;gt;-Secret&lt;br /&gt;
* Das &amp;lt;b&amp;gt;Bearer&amp;lt;/b&amp;gt;-Token&lt;br /&gt;
Beim Anmelden des SSH-Keys auf dem öffentlichen Server wird nun der &amp;lt;b&amp;gt;Hashwert&amp;lt;/b&amp;gt; des ersten Secrets übertragen und dort in Verbindung mit Deinem öffentlichen Schlüssel gespeichert. Ein Hashwert bedeutet, dass (sofern das Verfahren, hier SHA256, funktioniert), niemand aus dem Hash das Secret zurückrechnen kann. Ein Datenbankklau auf dem Server gefährdet also nicht die Sicherheit Deines Passwortes.&lt;br /&gt;
&lt;br /&gt;
Wenn Du nun beim Skill-Aktivieren den Registrierungskey eingibst, dann &amp;quot;sieht&amp;quot; der Server zum ersten Mal Dein ausgewürfeltes Secret, vergleicht es mit dem Hashwert und wird es anschließend wieder umgehend vergessen. Anhand des Hashwertes kann der Server aber entscheiden, dass Du der legitime Nutzer zum öffentlichen Schlüssel XY bist.&lt;br /&gt;
&lt;br /&gt;
2) Das zweite Problem ist: Wie soll Amazon &amp;quot;beweisen&amp;quot;, dass sie der legitime Aufrufer sind? Amazon erhält binnen wenigen Sekunden nach dem Klick auf &amp;quot;Activate Skill&amp;quot; den &amp;lt;b&amp;gt;dritten Teil&amp;lt;/b&amp;gt; des Registrierungskeys als sogenanntes Bearer-Token. Zwar läuft er durch den Registrierungsserver, er wird dort, auf dem Registrierungs/Vereinsserver aber nicht gespeichert. Das Bearer-Token wird von Amazon bei allen Requests zu Deinem Server mitgesendet. Da es am Anfang zusätzlich Deine &amp;quot;User-ID&amp;quot; enthält, weiß der Vereinsserver, zu welchem SSH-Tunnel der Request zu senden ist. Aber lokal auf Deinem Rechner wird ausgewertet, ob das Token &amp;quot;stimmt&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== alexa-fhem Updaten bzw. &amp;quot;Upgraden&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Updaten einer &amp;quot;Connector&amp;quot; Installation:&#039;&#039;&#039;&lt;br /&gt;
* alexa-fhem über FHEM anhalten (Name des Alexa-Device: alexa):&lt;br /&gt;
:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot; style=&amp;quot;width:50%;&amp;quot;&amp;gt;set alexa stop&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Auf der Konsole wie anfangs bei der Installation:&lt;br /&gt;
:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:50%;&amp;quot;&amp;gt;sudo npm update -g alexa-fhem&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Manchmal hat npm Probleme mit einem Update. Dann einfach die aktuelle Version noch mal drüber Installieren: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:50%;&amp;quot;&amp;gt;sudo npm install -g alexa-fhem&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*alexa-fhem über FHEM wieder starten:&lt;br /&gt;
:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot; style=&amp;quot;width:50%;&amp;quot;&amp;gt;set alexa start&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Upgraden von einer &amp;quot;Nicht-Connector&amp;quot; Installation (z.B. manuelle Installation per pm-Download):&#039;&#039;&#039;&lt;br /&gt;
* Daten der aktuellen Installation sichern (v.a. config.json / man weiß ja nie)&lt;br /&gt;
* Autostart der aktuellen alexa-fhem Installation deaktivieren:&lt;br /&gt;
** Bei initd: Service deaktivieren mittels: &amp;lt;code&amp;gt;sudo update-rc.d -f alexa remove&amp;lt;/code&amp;gt; Vorher mittels stoppen: &amp;lt;code&amp;gt;sudo service alexa stop&amp;lt;/code&amp;gt; Startscript unter /etc/init.d/ löschen.&lt;br /&gt;
** Bei systemd: Service deaktivieren mittels: &amp;lt;code&amp;gt;sudo systemctl disable alexa&amp;lt;/code&amp;gt; Vorher mittels stoppen: &amp;lt;code&amp;gt;sudo systemctl alexa stop&amp;lt;/code&amp;gt; Startscript unter /etc/systemd/system/ löschen.&lt;br /&gt;
* ALLE vorhandenen alexa-fhem Daten LÖSCHEN! Bleiben Dinge zurück und wird dann laut Connector installiert kann es zu Problemen kommen!&lt;br /&gt;
* (reboot)&lt;br /&gt;
* Installation von alexa-fhem laut Anleitung (Beginn dieses Wiki)&lt;br /&gt;
* Falls eigene Dinge von früher genutzt werden wollen/sollen (z.B. Custom Skill), dann die entsprechenden Einträge aus der gesicherten config.json in die neu angelegte alexa-fhem.cfg (zu finden unter &amp;quot;Edit files&amp;quot;) übernehmen.&lt;br /&gt;
* Werden keine eigenen Dinge verwendet, dann kann der Port (Standard: 3000) geschlossen werden und auch die Daten unter Amazon-Developer können gelöscht werden.&lt;br /&gt;
&lt;br /&gt;
== Bug- und Wunschliste ==&lt;br /&gt;
* Ist beim Start keine Internetverbindung vorhanden, erfolgt kein Retry -- alexa-fhem muss restartet werden (ssh_autoconfig wertet keine temporären Fehler aus)&lt;br /&gt;
&lt;br /&gt;
==Weitergehende Informationen==&lt;br /&gt;
*[[Alexa und Mappings]]&lt;br /&gt;
*[[Alexa Tipps und Kniffe]]&lt;br /&gt;
*[[FHEM Connector for Amazon Alexa]]&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
[[Kategorie:Sprachsteuerung]]&lt;/div&gt;</summary>
		<author><name>Suelle</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HomeMatic_Firmware_Update&amp;diff=32827</id>
		<title>HomeMatic Firmware Update</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HomeMatic_Firmware_Update&amp;diff=32827"/>
		<updated>2020-02-21T19:09:44Z</updated>

		<summary type="html">&lt;p&gt;Suelle: Korrigiert: set eq3 attrTemplate homematic_fw_check_v2&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Seit 2014 ist es möglich, bei einigen [[HomeMatic]] Komponenten selbst Firmware Updates durchzuführen. Vorher ging das nur per CCU oder durch Einsenden des Gerätes an ELV.&lt;br /&gt;
Dabei gibt es verschiedene Möglichkeiten das Firmware Update durchzuführen. Um in FHEM die aktuelle Firmware nach dem Update angezeigt zu bekommen, ist ein erneutes Pairen mit FHEM notwendig. Es muss aber nicht gelöscht oder zurückgesetzt werden.&lt;br /&gt;
&lt;br /&gt;
== Varianten für Firmwareupdates ==&lt;br /&gt;
=== Firmware Update mit CUL/HM-CFG-USB/HMUARTLGW unter FHEM ===&lt;br /&gt;
FW Updates sind in FHEM möglich. Benötigt wird dafür ein [[CUL]] oder ein [[HM-CFG-USB USB Konfigurations-Adapter|HM-CFG-USB]] oder ein [[HMUARTLGW]]. Mit einem [[HMLAN]] ist ein Update nicht möglich.&lt;br /&gt;
&lt;br /&gt;
Vor dem Update ist sicherzustellen, dass das korrekte IO für das Device genutzt wird (falls mehrere IOs im System zu Verfügung stehen). Siehe Attribut IODev und IOgrp bei der Verwendung einer [[Virtueller Controller VCCU|VCCU]]. Ein HMLAN kann mit dem Befehl: &amp;lt;code&amp;gt;set &amp;lt;HMLAN Name&amp;gt; close&amp;lt;/code&amp;gt; temporär ausgeschlossen werden.&lt;br /&gt;
&lt;br /&gt;
Um das Update durchführen zu können, wird die in dem entsprechenden Zip/tgz-File vorhandene .eq3-Datei benötigt. Bitte genau darauf achten, dass nicht versehentlich eine falsches Firmware-Datei verwendet wird. Der Vorgang selbst erfolgt mittels folgendem Befehl:&lt;br /&gt;
:&amp;lt;code&amp;gt;set &amp;lt;device&amp;gt; fwUpdate &amp;lt;filename&amp;gt; &amp;lt;nowiki&amp;gt;[&amp;lt;time&amp;gt;]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;filename&amp;gt; ist der Name der .eq3 Datei inklusive absolutem oder relativem Pfad zu fhem-Root.&lt;br /&gt;
Die Angabe von [&amp;lt;time&amp;gt;] ist optional. Es ist die Zeit in Sekunden, die FHEM wartet, bis das Device in den Bootloader-Modus versetzt wird. Bei den meisten Devices ist die Zeit nicht notwendig, da FHEM das Gerät selbst in den Bootloader-Mode versetzen kann.&lt;br /&gt;
&lt;br /&gt;
Bei einigen älteren FW-Versionen wie z.B. bei den [[HM-CC-RT-DN]] v1.0 geht das allerdings nicht automatisch. Um den Flashvorgang zu starten, müssen hier noch die Batterien entfernt werden und beim wiedereinlegen die beiden äußeren Knöpfe gedrückt werden. Jene Zeit, die man für eben diese Aktion benötigt, wird hier eingegeben. &lt;br /&gt;
&lt;br /&gt;
Wichtig: während des Updates können keine weiteren Nachrichten in FHEM von Homematic verarbeitet werden.&lt;br /&gt;
&lt;br /&gt;
Da nach dem Update immer noch die alte FW-Version in FHEM steht, kann man entweder bei einigen Geräten die Version mit &lt;br /&gt;
:&amp;lt;code&amp;gt; set &amp;lt;device&amp;gt; getVersion &amp;lt;/code&amp;gt;&lt;br /&gt;
auslesen oder wenn das Kommando wie z.B. bei den oben genannten Heizkörperventilen nicht zur Verfügung steht, genügt es, am Gerät selbst die Anlerntaste zu drücken (was am Beispiel der RTs bedeutet, dass die Boost-Taste für mindestens drei Sekunden gedrückt werden  muss). Nach der Aktualisierung der Firmware-Information in FHEM, muss die [[Konfiguration]] noch gespeichert werden.&lt;br /&gt;
&lt;br /&gt;
==== Fehlersuche / Probleme beim Update via FHEM ====&lt;br /&gt;
* Der Firmware-Update nimmt mehrere Minuten in Anspruch (bei einem HM-LC-Bl1PBU-FM bis zu 10 Minuten). Über &amp;lt;code&amp;gt;attr &amp;lt;device&amp;gt; verbose 5&amp;lt;/code&amp;gt; kann man für das HM-Device im Log den Fortschritt detaillierter beobachten. &lt;br /&gt;
* Sollte es zu einem Abbruch kommen, kann es dazu kommen, dass weitere FW-Update-Versuche abgebrochen werden mit der Fehlermeldung &amp;quot;fail:notInBootLoader&amp;quot; und einem grünen Dauerblinken an der Anlerntaste ({{Link2Forum|Topic=84200|Message=764555}}). In diesem Fall kann die explizite Angabe des Parameters &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[&amp;lt;time&amp;gt;]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; helfen.&lt;br /&gt;
&lt;br /&gt;
=== Firmware Update mit CUL/HM-CFG-USB unter Linux ===&lt;br /&gt;
Für Linux hat mgernoth ein Updatetool erstellt.&lt;br /&gt;
&lt;br /&gt;
Zunächst muss sichergestellt werden, dass alle benötigten Pakete installiert sind. Um das Tool zu installieren und auszuführen, müssen die folgenden Pakete mit den gezeigten Befehlen installiert werden. Unter Debian:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install libusb-1.0-0-dev git build-essential&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Unter OpenSuse 13.2 64 Bit:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo zypper install libusb-1.0-0-dev git &lt;br /&gt;
sudo zypper install --type pattern devel_basis&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als nächstes wird der Sourcecode für das Tool heruntergeladen (vorher z.B. in den Pfad &amp;lt;code&amp;gt;/usr/src&amp;lt;/code&amp;gt; wechseln):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git clone git://git.zerfleddert.de/hmcfgusb&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Und mit den Anweisungen&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd hmcfgusb&lt;br /&gt;
make&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
wird daraus eine ausführbare Datei erstellt.&lt;br /&gt;
&lt;br /&gt;
Weiterhin muss die nötige Firmware heruntergeladen und entpackt werden. Die offiziellen Updates gibt es unter [http://www.eq-3.de/downloads.html eq-3 Downloads]. Die Befehle, um beispielsweise die benötigte Datei für die Firmware Version 1.4 des HM-CC-RT-DN zu erhalten lauten:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
wget http://www.eq-3.de/Downloads/Software/Firmware/hm_cc_rt_dn_update_V1_4_001_141020.tgz&lt;br /&gt;
tar xvzf hm_cc_rt_dn_update_V1_4_001_141020.tgz&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Zu guter Letzt muss noch das Tool mit einigen Parametern und der Seriennummer des HomeMatic Devices aufgerufen werden. Für ein Update mit einem CUL (&amp;lt;code&amp;gt;/dev/ttyACM0&amp;lt;/code&amp;gt; ist in diesem Beispiel die Adresse des CULs) muss folgendes eingegeben werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo ./flash-ota -c /dev/ttyACM0 -f &amp;lt;FirmwareImageName&amp;gt;.eq3 -s &amp;lt;DeviceSerialNo&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Für ein Update mit einem COC muss folgendes eingegeben werden (/dev/ttyAMA0):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo ./flash-ota -c /dev/ttyAMA0 -f &amp;lt;FirmwareImageName&amp;gt;.eq3 -s &amp;lt;DeviceSerialNo&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Für ein Update mit HM-CFG-USB&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo ./flash-ota -f &amp;lt;FirmwareImageName&amp;gt;.eq3 -s &amp;lt;DeviceSerialNo&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Nun muss nur noch das HomeMatic Gerät in den Update-Modus versetzt werden. Wie das geht, steht in der jeweils mit der Firmwaredatei gelieferten &amp;quot;readme&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Firmware Update mit HM-CFG-USB unter Windows ===&lt;br /&gt;
Für ein Firmwareupdate unter Windows wird das &amp;quot;HomeMatic Firmware Update Tool&amp;quot; von eq-3 benötigt: [https://www.eq-3.de/service/downloads.html?id=274 eQ-3 Downloads]. Zur Zeit ist das Update damit nur mit dem HM-CFG-USB-2 möglich, nicht aber mit dem HM-CFG-LAN oder dem HM-CFG-USB der ersten Generation.&lt;br /&gt;
&lt;br /&gt;
Nach dem Start muss die Seriennummer des HomeMatic-Device eingegeben und die Firmware-Datei ausgewählt werden. Dann wird das Update-Tool durch einen Klick auf den entsprechenden Button in &amp;quot;Bereitschaft&amp;quot; gesetzt und anschließend muss das HomeMatic-Gerät in den Update-Modus versetzt werden. Bei Unterputz-Geräten ist das eventuell gar nicht so einfach, man kann in diesem Fall aber von FHEM aus dem Gerät ein Kommando schicken um es in den Bootloader Modus zu bringen. Dies geht mit dem Befehl&lt;br /&gt;
:&amp;lt;code&amp;gt;set &amp;lt;device&amp;gt; fwUpdate onlyEnterBootLoader&amp;lt;/code&amp;gt;&lt;br /&gt;
Direkt danach sollte das Update Tool mit seiner Arbeit beginnen.&lt;br /&gt;
&lt;br /&gt;
Falls das Update-Tool beim Auswählen der Firmware-Datei abstürzt (&amp;quot;Home Matic Firmware Update Tool funktioniert nicht mehr&amp;quot;), dann stimmt wahrscheinlich etwas mit der Firmware-Datei nicht. Die Datei darf nicht ausgepackt, sondern muss als &amp;quot;.tar.gz&amp;quot;-Datei, so wie sie heruntergeladen wurde, benutzt werden. Es kann Probleme geben, wenn die Datei mit dem Internet Explorer heruntergeladen wurde. Am einfachsten ist es, die Datei mit einem anderen Browser herunterzuladen.&lt;br /&gt;
&lt;br /&gt;
== Mögliche Probleme ==&lt;br /&gt;
Lässt sich die Firmware nicht OTA auf das HomeMatic-Device flashen, kann dies folgende Ursachen haben:&lt;br /&gt;
* Die FHEM-Software ist nicht auf dem neuesten Stand. Bitte vorher ein &#039;&#039;update&#039;&#039; durchführen.&lt;br /&gt;
* &#039;&#039;&#039;Entfernung&#039;&#039;&#039; zwischen Sender und Empfänger &#039;&#039;&#039;zu klein&#039;&#039;&#039;. 1,5 bis 2 m Abstand sollten beide Geräte zueinander mindestens haben.&lt;br /&gt;
* &#039;&#039;&#039;Entfernung&#039;&#039;&#039; zwischen Sender und Empfänger &#039;&#039;&#039;zu groß&#039;&#039;&#039;. Überprüfen Sie die RSSI-Werte des zu flashenden Device. Schlechter als - 70 sollten sie nicht sein (also keine - 75 oder noch kleiner). Ansonsten muss der Abstand für die Dauer des Flashens verringert werden.&lt;br /&gt;
* Durch wiederholte Firmware-Updates oder Update-Versuche hat die [[1% Regel]] zugeschlagen. Der dort genannte Notbehelf (Funkschnittstelle kurz stromlos machen) schafft Abhilfe.&lt;br /&gt;
&lt;br /&gt;
== Tool zur Firmware Versionsprüfung ==&lt;br /&gt;
[[Datei:HM-FWUpdate-eQ3.png|mini|400px|left|Beispiel einer Liste der relevanten Firmware Updates&amp;lt;br /&amp;gt;&#039;&#039;&#039;Legende:&#039;&#039;&#039;&amp;lt;br /&amp;gt;1 - Link auf die eQ-3 Download-Seite &amp;lt;br /&amp;gt;2 - Link auf die Details des HTTPMOD Device &amp;lt;br /&amp;gt;3 - Link auf die Details des HomeMatic Device &amp;lt;br /&amp;gt;4 - (Download) Link auf die Firmware Datei &amp;lt;br /&amp;gt;5 - &amp;quot;reread&amp;quot;: Aktualisierung dieser Liste auslösen]]&lt;br /&gt;
Im FHEM-Forum wurden unter dem Titel {{Link2Forum|Topic=47729|LinkText=...Firmware Versionsprüfung}} die erforderlichen Definitionen für ein [[HTTPMOD]]-Device vorgestellt, das &lt;br /&gt;
* für alle HomeMatic Devices der aktuellen FHEM-Umgebung&lt;br /&gt;
* die derzeit benutzte Firmware Version mit&lt;br /&gt;
* einem evtl. auf der eQ-3 Seite verfügbaren Update vergleicht und&lt;br /&gt;
* alle für die aktuelle Installation relevanten Updates in einer Übersicht (siehe Screenshot) darstellt und&lt;br /&gt;
* einmal täglich (alle 86400 Sekunden) automatisch ausgeführt wird; dieses Intervall sollte nicht verkürzt, sondern eher verlängert werden. Im Bedarfsfall kann durch anklicken von &#039;&#039;&#039;&#039;&#039;reread&#039;&#039;&#039;&#039;&#039; eine sofortige Aktualisierung ausgelöst werden.&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
{{Randnotiz|RNTyp=y|RNText=Sollte eine alte (vor dem 15.3.2016) Version dieser Definitionen bereits in Benutzung sein (zu erkennen am Vorhandensein von &#039;&#039;&amp;lt;nowiki&amp;gt;reading0[2|3|4|5]*&amp;lt;/nowiki&amp;gt;&#039;&#039;-Attributen), dann wird empfohlen, das Device mit &amp;lt;code&amp;gt;delete eq3&amp;lt;/code&amp;gt; zunächst komplett zu löschen und anschließend neu anzulegen.}}&lt;br /&gt;
Die unten aufgeführten erforderlichen Anweisungen zur Erstellung dieser Übersicht sind&lt;br /&gt;
* im wesentlichen über das Webinterface eingebbar (können aber auch &amp;quot;en bloc&amp;quot; in die fhem.cfg eingetragen werden - auch wenn das eigentlich nicht empfohlen ist)&lt;br /&gt;
* der umfangreiche Perl-Code für das Attribut &#039;&#039;userReadings&#039;&#039; ist dargestellt für die Eingabe über das [[FHEMWEB|Webinterface]]&lt;br /&gt;
* für das Attribut &#039;&#039;stateFormat&#039;&#039; ist die mehrzeilige Eingabe (zumindest derzeit, März 2016) nicht unterstützt, daher wurde der Code in eine Subroutine ausgelagert&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;{{Randnotiz|RNTyp=r|RNText=&#039;&#039;&#039;Wichtige Änderungen:&#039;&#039;&#039;&lt;br /&gt;
22.05.2016 - &#039;&#039;reading01Regex&#039;&#039; und &#039;&#039;reading01Format&#039;&#039; angepasst (eQ-3)&lt;br /&gt;
&lt;br /&gt;
02.09.2019 {{Link2Forum|Topic=78501|LinkText=...Firmware check funktioniert nicht}}&lt;br /&gt;
}}&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Definitionen in FHEM ===&lt;br /&gt;
Durch seine Historie zeigt dieser Artikel fast schon unfreiwillig die Vielfalt der Lösungswege in FHEM.&lt;br /&gt;
Die Beschreibung ist Modular:&lt;br /&gt;
* Basis&lt;br /&gt;
* schnell fertig mit attrTemplate&lt;br /&gt;
* Attribute mit der Raw Definition anlegen&lt;br /&gt;
* Weitere Attribute mit Perl Code in der 99_myUtils oder direkt in der DEF&lt;br /&gt;
Zunächst einfach nur eine Zeile für die grundlegende Definition.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
define eq3 HTTPMOD https://www.eq-3.de/ajax/downloads/downloads_eq3.php 604800&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Definitionen der Attribute mit attrTemplate ===&lt;br /&gt;
Ab September 2019 geht es ganz einfach weiter mit attrTemplate. &lt;br /&gt;
[[Datei:SetAttrTemplateEq3.png|tumb|400px|left|Menüauswahl set Befehl]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Hinter dem set Button findet man das Auswahlmenü mit attrTemplate an prominenter erster Stelle. &lt;br /&gt;
* In der weiteren Klappliste weit nach unten gehen, dort findet man &#039;&#039;CUL_HM_firmware_update_downloader&#039;&#039;. &lt;br /&gt;
* Dieses Template auswählen, set drücken, etwas warten und fertig. Das Device wird selbständig gefüllt.&lt;br /&gt;
* Das Device wird dem Raum CUL_HM zugewiesen&lt;br /&gt;
&lt;br /&gt;
Man kann den set Befehl auch in der Kommandozeile oder gemeinsam mit der obigen Definition in der Raw Definition importieren.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
set eq3 attrTemplate homematic_fw_check_v2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Vorteil:&#039;&#039;&#039; Sollten sich in Zukunft Änderungen am Device ergeben (weil z.B. eq3 ihre Seite ändert) kann diese Änderung über update verteilt werden. Ein erneute Zuweisung bringt dann ein aktuelles Device. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Damit ist die Definition fertig!&#039;&#039;&#039; Alle weiteren Schritte hier stehen nur zur vollständigen Dokumentation.&lt;br /&gt;
&lt;br /&gt;
=== Basis Definitionen manuell ===&lt;br /&gt;
Die folgende Attribute Basis Definition ist einfach über die Raw Def einzufügen.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
attr eq3 userattr enableControlSet event-on-change-reading event-on-update-reading reading01AutoNumLen reading01Format reading01Name reading01RegOpt reading01RegOpt:s,i,g reading01Regex readingMaxAge readingMaxAgeReplacementMode readingMaxAgeReplacementMode:text,expression,delete readingMaxAgeReplacementMode:text,reading,internal,expression,delete requestData.* showError showMatched stateFormat userReadings webCmd&lt;br /&gt;
attr eq3 alignTime 00:45&lt;br /&gt;
attr eq3 enableControlSet 1&lt;br /&gt;
attr eq3 event-on-change-reading .*&lt;br /&gt;
attr eq3 event-on-update-reading LAST_ERROR,MATCHED_READINGS&lt;br /&gt;
attr eq3 reading01AutoNumLen 2&lt;br /&gt;
attr eq3 reading01Format https://www.eq-3.de%s&lt;br /&gt;
attr eq3 reading01Name fw_link&lt;br /&gt;
attr eq3 reading01RegOpt gi&lt;br /&gt;
attr eq3 reading01Regex &amp;lt;a.href=&amp;quot;(\/downloads\/software\/firmware\/hm[^&amp;quot;]+)&lt;br /&gt;
attr eq3 readingMaxAge 10&lt;br /&gt;
attr eq3 readingMaxAgeReplacementMode delete&lt;br /&gt;
attr eq3 requestData.* suchbegriff=&amp;amp;quelle=29&amp;amp;suchkategorie=3&amp;amp;themenbereich=1&lt;br /&gt;
attr eq3 room eq3&lt;br /&gt;
attr eq3 showError 1&lt;br /&gt;
attr eq3 showMatched 1&lt;br /&gt;
attr eq3 webCmd reread&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Es werden noch zwei Attribute benötigt, es gibt dabei die Varianten den Code direkt im Attribute einzugeben oder beide Attribute über eine Sub in die 99_myUtils.pm auszulagern. Wählt man die Variante mit der 99_myUtils muss man zuerst beide Subs dort einfügen und kann anschließend einfach diese beiden Zeil noch über die Raw Def einfügen&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
attr eq3 stateFormat {eq3StateFormat($name)}&lt;br /&gt;
attr eq3 userReadings newFwForDevices:MATCHED_READINGS:.* {eq3Attr}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Definition/Code für 99_myUtils.pm ===&lt;br /&gt;
Da der Code für &#039;&#039;userReadings&#039;&#039; und &#039;&#039;stateFormat&#039;&#039; recht umfangreich ist, ist es besser beides in (Sub-)Routinen in die [[99_myUtils anlegen|99_myUtils]] auszulagern:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub eq3Attr{&lt;br /&gt;
#####################&lt;br /&gt;
# hier den Code für UserReadings einfügen&lt;br /&gt;
#####################&lt;br /&gt;
}&lt;br /&gt;
sub eq3StateFormat($) {&lt;br /&gt;
    my $name = shift @_;&lt;br /&gt;
##################### &lt;br /&gt;
#  hier den Code für eq3StateFormat($name) einfügen&lt;br /&gt;
#####################&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Definition/Code für Attribut userReadings ===&lt;br /&gt;
Die Definition für das Attribut &#039;&#039;userReadings&#039;&#039; :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
attr eq3 userReadings newFwForDevices:MATCHED_READINGS:.* {\&lt;br /&gt;
#  hier den Perl Code UserReadings einfügen\&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Perlcode UserReadings&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
	my $ret = &amp;quot;&amp;quot;;&lt;br /&gt;
	my @data;&lt;br /&gt;
	my @eq3FwList = map{@data = ReadingsVal(&amp;quot;eq3&amp;quot;,&amp;quot;fw_link-&amp;quot;.$_,&amp;quot;?&amp;quot;) =~ m/Firmware\/(.*?)_update_V([\d_]+)_(\d\d)(\d\d)(\d\d)/i; &lt;br /&gt;
			$data[0] =~ s/_/-/g;&lt;br /&gt;
			sprintf(&amp;quot;%s:%s:%s.%s.%s:%s&amp;quot;,$data[0],$data[1],$data[4],$data[3],&amp;quot;20&amp;quot;.$data[2],$_);&lt;br /&gt;
			} ReadingsVal(&amp;quot;eq3&amp;quot;,&amp;quot;MATCHED_READINGS&amp;quot;,&amp;quot;?&amp;quot;) =~ m/fw_link-(\d\d)/g;&lt;br /&gt;
&lt;br /&gt;
	foreach my $dev (devspec2array(&amp;quot;TYPE=CUL_HM:FILTER=DEF=......:FILTER=subType!=(virtual|)&amp;quot;)) {&lt;br /&gt;
		my $md = AttrVal($dev,&amp;quot;model&amp;quot;,&amp;quot;?&amp;quot;);&lt;br /&gt;
		my $v = AttrVal($dev,&amp;quot;firmware&amp;quot;,&amp;quot;0.0&amp;quot;);&lt;br /&gt;
		my ($h,$l) = split(&#039;\.&#039;,$v);&lt;br /&gt;
		foreach my $newFw (grep m/^${md}:/i,@eq3FwList) {&lt;br /&gt;
		  my ($nh,$nl,$no,$date,$idx) = $newFw =~ m/^[^:]+:(\d+)_(\d+)_?(\d*):([^:]+):(\d\d)$/;&lt;br /&gt;
		  if(($nh &amp;gt; $h) || (($nh == $h) &amp;amp;&amp;amp; ($nl &amp;gt; $l))) {&lt;br /&gt;
			$ret .= &amp;quot;,&amp;quot; if($ret ne &amp;quot;&amp;quot;);&lt;br /&gt;
			$ret .= $dev.&amp;quot; (&amp;quot;.$md.&amp;quot; | fw_&amp;quot;.$v.&amp;quot; =&amp;gt; fw&amp;quot;.$idx.&amp;quot;_&amp;quot;.$nh.&amp;quot;.&amp;quot;.$nl.($no?sprintf(&amp;quot;.%d&amp;quot;,$no):&amp;quot;&amp;quot;).&amp;quot; | &amp;quot;.$date.&amp;quot;)&amp;quot;;&lt;br /&gt;
		  }&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return ($ret eq &amp;quot;&amp;quot;)?&amp;quot;no fw-updates needed!&amp;quot;:$ret;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Definition/Code für Attribut stateFormat ===&lt;br /&gt;
Die Definition für das Attribut &#039;&#039;stateFormat&#039;&#039; :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
attr eq3 stateFormat {\&lt;br /&gt;
# hier den Code für eq3StateFormat($name) einfügen\&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Perlcode eq3StateFormat($name)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
	my $ret =&amp;quot;&amp;quot;; 	&lt;br /&gt;
	my $lastCheck = ReadingsTimestamp($name,&amp;quot;MATCHED_READINGS&amp;quot;,&amp;quot;???&amp;quot;); 	&lt;br /&gt;
	$ret .= &#039;&amp;lt;div style=&amp;quot;text-align:left&amp;quot;&amp;gt;&#039;; 	&lt;br /&gt;
	$ret .= &#039;last &amp;lt;a title=&amp;quot;eq3-downloads&amp;quot; href=&amp;quot;http://www.eq-3.de/service/downloads.html&amp;quot;&amp;gt;homematic&amp;lt;/a&amp;gt;-fw-check =&amp;gt; &#039;.$lastCheck; 	&lt;br /&gt;
	$ret .= &#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#039;; 	&lt;br /&gt;
	$ret .= &#039;&amp;lt;pre&amp;gt;&#039;; 	&lt;br /&gt;
	$ret .= &amp;quot;| device                  | model                   | cur_fw | new_fw | release    |&amp;lt;br&amp;gt;&amp;quot;; 	&lt;br /&gt;
	$ret .= &amp;quot;------------------------------------------------------------------------------------&amp;lt;br&amp;gt;&amp;quot;; 	&lt;br /&gt;
	my $check = ReadingsVal($name,&amp;quot;newFwForDevices&amp;quot;,&amp;quot;error =&amp;gt; no or wrong data from eq3-server!&amp;quot;); 	&lt;br /&gt;
	if($check eq &amp;quot;no fw-updates needed!&amp;quot;) {&lt;br /&gt;
		$ret .= &#039;| &#039;;&lt;br /&gt;
		$ret .= &#039;&amp;lt;b style=&amp;quot;color:green&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
		$ret .= sprintf(&amp;quot;%-80s&amp;quot;,$check);&lt;br /&gt;
		$ret .= &#039;&amp;lt;/b&amp;gt;&#039;;&lt;br /&gt;
		$ret .= &#039; |&#039;;&lt;br /&gt;
	} elsif($check eq &amp;quot;error =&amp;gt; no or wrong data from eq3-server!&amp;quot;) {&lt;br /&gt;
		$ret .= &#039;| &#039;;&lt;br /&gt;
		$ret .= &#039;&amp;lt;b style=&amp;quot;color:red&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
		$ret .= sprintf(&amp;quot;%-80s&amp;quot;,$check);&lt;br /&gt;
		$ret .= &#039;&amp;lt;/b&amp;gt;&#039;;&lt;br /&gt;
		$ret .= &#039; |&#039;;&lt;br /&gt;
	} else { 		&lt;br /&gt;
		my @devices = split(&#039;,&#039;,$check); 		&lt;br /&gt;
		foreach my $devStr (@devices) { 			&lt;br /&gt;
			my ($dev,$md,$ofw,$idx,$nfw,$date) = $devStr =~ m/^([^\s]+)\s\(([^\s]+)\s\|\sfw_(\d+\.\d+)\s=&amp;gt;\sfw(\d\d)_([\d\.]+)\s\|\s([^\)]+)\)$/; 			&lt;br /&gt;
			my $link = ReadingsVal($name,&amp;quot;fw_link-&amp;quot;.$idx,&amp;quot;???&amp;quot;); 			&lt;br /&gt;
			$ret .= &#039;| &#039;; 			&lt;br /&gt;
			$ret .= &#039;&amp;lt;a href=&amp;quot;/fhem?detail=&#039;.$dev.&#039;&amp;quot;&amp;gt;&#039;;  			&lt;br /&gt;
			$ret .= sprintf(&amp;quot;%-23s&amp;quot;,$dev); 			&lt;br /&gt;
			$ret .= &#039;&amp;lt;/a&amp;gt;&#039;;  			&lt;br /&gt;
			$ret .= &amp;quot; | &amp;quot;;  			&lt;br /&gt;
			$ret .= &#039;&amp;lt;b&#039;.(($md eq &amp;quot;?&amp;quot;)?&#039; title=&amp;quot;missing attribute model =&amp;gt; set device in teach mode to receive missing data&amp;quot; style=&amp;quot;color:yellow&amp;quot;&#039;:&#039; style=&amp;quot;color:lightgray&amp;quot;&#039;).&#039;&amp;gt;&#039;;  			&lt;br /&gt;
			$ret .= sprintf(&amp;quot;%-23s&amp;quot;,$md); 			&lt;br /&gt;
			$ret .= &#039;&amp;lt;/b&amp;gt;&#039;;  			&lt;br /&gt;
			$ret .= &amp;quot; | &amp;quot;;  			&lt;br /&gt;
			$ret .= &#039;&amp;lt;b&#039;.(($ofw eq &amp;quot;0.0&amp;quot;)?&#039; title=&amp;quot;missing attribute firmware =&amp;gt; set device in teach mode to receive missing data&amp;quot; style=&amp;quot;color:yellow&amp;quot;&#039;:&#039; style=&amp;quot;color:lightgray&amp;quot;&#039;).&#039;&amp;gt;&#039;;  			&lt;br /&gt;
			$ret .= sprintf(&amp;quot;%6s&amp;quot;,$ofw); 			&lt;br /&gt;
			$ret .= &#039;&amp;lt;/b&amp;gt;&#039;;  			&lt;br /&gt;
			$ret .= &amp;quot; | &amp;quot;;  			&lt;br /&gt;
			$ret .= &#039;&amp;lt;a title=&amp;quot;eq3-firmware.tgz&amp;quot; href=&amp;quot;&#039;.$link.&#039;&amp;quot;&amp;gt;&#039;;  			&lt;br /&gt;
			$ret .= &#039;&amp;lt;b style=&amp;quot;color:red&amp;quot;&amp;gt;&#039;;  			&lt;br /&gt;
			$ret .= sprintf(&amp;quot;%6s&amp;quot;,$nfw); 			&lt;br /&gt;
			$ret .= &#039;&amp;lt;/b&amp;gt;&#039;;  			&lt;br /&gt;
			$ret .= &#039;&amp;lt;/a&amp;gt;&#039;;  			&lt;br /&gt;
			$ret .= &amp;quot; | &amp;quot;;  			&lt;br /&gt;
			$ret .= sprintf(&amp;quot;%-10s&amp;quot;,$date); 			&lt;br /&gt;
			$ret .= &amp;quot; |&amp;lt;br&amp;gt;&amp;quot;;  		&lt;br /&gt;
		} 	&lt;br /&gt;
	} 	&lt;br /&gt;
	$ret .= &#039;&amp;lt;/pre&amp;gt;&#039;; 	&lt;br /&gt;
	$ret .= &#039;&amp;lt;/div&amp;gt;&#039;; 	&lt;br /&gt;
	return $ret; &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sondersituationen ===&lt;br /&gt;
[[Datei:HM-FWUpdate-eQ3-check.png|mini|455px|right|Fehlerbedingung: Attribut &#039;&#039;firmware&#039;&#039; nicht gesetzt]]&lt;br /&gt;
Das Tool überprüft gleichzeitig auch bestimmte Rahmenbedingungen, so z.B., ob bei allen HomeMatic Devices die Attribute &#039;&#039;model&#039;&#039; und &#039;&#039;firmware&#039;&#039; gesetzt sind. Sollte das nicht der Fall sein, wird das Device in der Liste &lt;br /&gt;
* mit einem gelben &amp;quot;old_fw&amp;quot; Wert von 0.0 geführt; befindet sich der Mauszeiger über dem &amp;quot;0.0&amp;quot;, wird der Hinweistext &#039;&#039;missing attribute firmware =&amp;gt; set device in teach mode to receive missing data&#039;&#039; angezeigt (siehe Beispiel im Screenshot)&lt;br /&gt;
* mit einem gelben {{Taste|?}} in der Spalte &amp;quot;model&amp;quot; angezeigt; befindet sich der Mauszeiger über dem &amp;quot;?&amp;quot;, wird der Hinweistext &#039;&#039;missing attribute model =&amp;gt; set device in teach mode to receive missing data&#039;&#039; angezeigt&lt;br /&gt;
In diesem Fall sollte bei dem betreffenden Gerät versucht werden, mit &#039;&#039;getConfig&#039;&#039; die Daten zu aktualisieren bzw. vervollständigen.&lt;br /&gt;
&lt;br /&gt;
Darüber hinaus ist zu beachten, dass die Firmware-Version in den HomeMatic Geräten zwei&amp;quot;teilig&amp;quot; (Version.Release) abgelegt ist, die Firmware Update-Dateien jedoch drei&amp;quot;teilige&amp;quot; Versionskennungen (Version_Release_???) haben. Für den Vergleich, ob neue Firmware verfügbar ist, kann natürlich nur die zweiteilige Kennung verwendet werden, eine Änderung im dritten Teil der Versionskennung kann daher nicht automatisch erkannt werden.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [https://www.eq-3.de/service/downloads.html Firmware Download] Seite von eq-3&lt;br /&gt;
* Forenthread zur {{Link2Forum|Topic=47729|LinkText=&amp;quot;Firmware Versionsprüfung&amp;quot;}}&lt;br /&gt;
* [http://git.zerfleddert.de/hmcfgusb/ Firmware Update Tool] von mgernoth&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components|1toolsAndWork]]&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Suelle</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Qnap_NAS_Ruhemodus/herunterfahren&amp;diff=27398</id>
		<title>Qnap NAS Ruhemodus/herunterfahren</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Qnap_NAS_Ruhemodus/herunterfahren&amp;diff=27398"/>
		<updated>2018-07-10T19:07:55Z</updated>

		<summary type="html">&lt;p&gt;Suelle: falsche Schreibweise des Scripts am Ende des Eintrags korrigiert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mit dieser Anleitung ist es möglich sein NAS über FHEM in den Ruhemodus zu versetzen. Dies ist ggf. sinnvoll, wenn man es nur bei Anwesenheit nutzt. Der Stromverbrauch lässt sich dadurch deutlich senken. Per WoL kann es bei Bedarf wieder gestartet werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Dieser Artikel basiert auf einem [https://forum.fhem.de/index.php/topic,27539.msg204384.html Beitrag im Forum] und lässt sich sicherlich auch für andere NAS nutzen/anpassen.&lt;br /&gt;
&lt;br /&gt;
== Idee ==&lt;br /&gt;
Das NAS kann nur über die Oberfläche oder eine Terminalsession auf dem NAS selbst in den Ruhemodus versetzt werden. Mittels einer SSH Verbindung vom FHEM Host zum NAS ist dies möglich. Da man das Administrationskennwort des NAS nicht im Klartext hinterlegen möchte, soll stattdessen ein SSH Key verwendet werden.&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen ==&lt;br /&gt;
Das Kennwort des root Users auf dem FHEM Host muss bekannt sein.&lt;br /&gt;
&lt;br /&gt;
Der User FHEM muss sich anmelden dürfen. Hierfür muss ggf. die Datei &amp;lt;code&amp;gt;/etc/passwd&amp;lt;/code&amp;gt; angepasst werden:&lt;br /&gt;
 sudo nano /etc/passwd&lt;br /&gt;
Dort muss der Eintrag &amp;lt;code&amp;gt;fhem:x:999:20::/opt/fhem:/bin/false&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;fhem:x:999:20::/opt/fhem:/bin/bash&amp;lt;/code&amp;gt; geändert werden.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Wichtig&#039;&#039;&#039;: Dies sollte nach der vollständigen Einrichtung wieder rückgängig gemacht werden!&lt;br /&gt;
&lt;br /&gt;
== SSH Key für User FHEM anlegen ==&lt;br /&gt;
Hierfür sind die Schritte unter [https://www.debian-administration.org/article/530/SSH_with_authentication_key_instead_of_password SSH with authentication key instead of password] zu befolgen und an die eigenen Gegebenheiten anzupassen.&amp;lt;br&amp;gt;&lt;br /&gt;
Auf dem FHEM Host muss der Public Key erstellt werde (Generate the authentication key). Hierfür muss der FHEM User genutzt werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
su - root&lt;br /&gt;
su - fhem&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Nun folgen die Schritte aus der oben referenzierten Anleitung:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
ssh-keygen&lt;br /&gt;
enter&lt;br /&gt;
enter&lt;br /&gt;
enter&lt;br /&gt;
ssh-copy-id -i /opt/fhem/ssh-keygen.pub admin@&amp;lt;IP eures Qnaps&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend muss der Public Key auf dem NAS abgelegt werden. (Install the public key on the servers).&lt;br /&gt;
&lt;br /&gt;
== Script in FHEM anlegen ==&lt;br /&gt;
Anlage der Datei über Terminal (putty o.ä.). Der erste Befehl erzeugt eine leere Datei, die anschließend dem User fhem zugeordnet wird und zum Schluss ausführbar gemacht wird.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sudo touch /opt/fhem/FHEM/shutdownNAS.sh &amp;amp;&amp;amp; sudo chown -R fhem /opt/fhem/ &amp;amp;&amp;amp; sudo chmod +x /opt/fhem/FHEM/shutdownNAS.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Nun muss der Code des Scripts eingefügt werden. Dies kann entweder über die FHEM Oberfläche (Edit files) oder das Terminal erfolgen. Für letzteres lautet der Befehl:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /opt/fhem/FHEM/shutdownNAS.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Folgender Code muss eingefügt werden (die IP Adresse des eigenen NAS ist anzupassen):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# shutdownNAS.sh&lt;br /&gt;
&lt;br /&gt;
DATE=$(date +%Y.%m.%d)&lt;br /&gt;
TIME=$(date +%T)&lt;br /&gt;
echo $DATE $TIME &amp;quot;3: NAS in den Ruhemodus versetzen&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ssh admin@192.168.xxx.xxx &amp;quot;echo mem &amp;gt; /sys/power/state&amp;quot;&lt;br /&gt;
exit 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Script ausführen ==&lt;br /&gt;
Es gilt zu beachten, dass FHEM als return eines solchen Scripts immer -1 ausgibt.&amp;lt;br&amp;gt;&lt;br /&gt;
Ebenso sollte bedacht werden, dass das Script nicht vollständig durchlaufen werden kann, da die Verbindung zum NAS verloren geht. Deshalb erfolgt der Aufruf des Scripts am Ende mit &amp;amp;.&amp;lt;br&amp;gt;&lt;br /&gt;
Das Script kann über die FHEM Oberfläche&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;{system(&#039;/opt/fhem/FHEM/shutdownNAS.sh&amp;amp;&#039;)}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
oder in einer 99_myUtils.pm&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;system(&#039;/opt/fhem/FHEM/shutdownNAS.sh&amp;amp;&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [https://forum.fhem.de/index.php/topic,27539.msg204384.html Beitrag im Forum]&lt;br /&gt;
* [https://www.debian-administration.org/article/530/SSH_with_authentication_key_instead_of_password SSH with authentication key instead of password]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Suelle</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Qnap_NAS_Ruhemodus/herunterfahren&amp;diff=19577</id>
		<title>Qnap NAS Ruhemodus/herunterfahren</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Qnap_NAS_Ruhemodus/herunterfahren&amp;diff=19577"/>
		<updated>2017-02-08T19:38:18Z</updated>

		<summary type="html">&lt;p&gt;Suelle: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mit dieser Anleitung ist es möglich sein NAS über FHEM in den Ruhemodus zu versetzen. Dies ist ggf. sinnvoll, wenn man es nur bei Anwesenheit nutzt. Der Stromverbrauch lässt sich dadurch deutlich senken. Per WoL kann es bei Bedarf wieder gestartet werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Dieser Artikel basiert auf einem [https://forum.fhem.de/index.php/topic,27539.msg204384.html Beitrag im Forum] und lässt sich sicherlich auch für andere NAS nutzen/anpassen.&lt;br /&gt;
&lt;br /&gt;
== Idee ==&lt;br /&gt;
Das NAS kann nur über die Oberfläche oder eine Terminalsession auf dem NAS selbst in den Ruhemodus versetzt werden. Mittels einer SSH Verbindung vom FHEM Host zum NAS ist dies möglich. Da man das Administrationskennwort des NAS nicht im Klartext hinterlegen möchte, soll stattdessen ein SSH Key verwendet werden.&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen ==&lt;br /&gt;
Das Kennwort des root Users auf dem FHEM Host muss bekannt sein.&lt;br /&gt;
&lt;br /&gt;
Der User FHEM muss sich anmelden dürfen. Hierfür muss ggf. die Datei &amp;lt;code&amp;gt;/etc/passwd&amp;lt;/code&amp;gt; angepasst werden:&lt;br /&gt;
 sudo nano /etc/passwd&lt;br /&gt;
Dort muss der Eintrag &amp;lt;code&amp;gt;fhem:x:999:20::/opt/fhem:/bin/false&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;fhem:x:999:20::/opt/fhem:/bin/bash&amp;lt;/code&amp;gt; geändert werden.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Wichtig&#039;&#039;&#039;: Dies sollte nach der vollständigen Einrichtung wieder rückgängig gemacht werden!&lt;br /&gt;
&lt;br /&gt;
== SSH Key für User FHEM anlegen ==&lt;br /&gt;
Hierfür sind die Schritte unter [https://www.debian-administration.org/article/530/SSH_with_authentication_key_instead_of_password SSH with authentication key instead of password] zu befolgen und an die eigenen Gegebenheiten anzupassen.&amp;lt;br&amp;gt;&lt;br /&gt;
Auf dem FHEM Host muss der Public Key erstellt werde (Generate the authentication key). Hierfür muss der FHEM User genutzt werden:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
su - root&lt;br /&gt;
su - fhem&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Nun folgen die Schritte aus der oben referenzierten Anleitung:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
ssh-keygen&lt;br /&gt;
enter&lt;br /&gt;
enter&lt;br /&gt;
enter&lt;br /&gt;
ssh-copy-id -i /opt/fhem/ssh-keygen.pub admin@&amp;lt;IP eures Qnaps&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend muss der Public Key auf dem NAS abgelegt werden. (Install the public key on the servers).&lt;br /&gt;
&lt;br /&gt;
== Script in FHEM anlegen ==&lt;br /&gt;
Anlage der Datei über Terminal (putty o.ä.). Der erste Befehl erzeugt eine leere Datei, die anschließend dem User fhem zugeordnet wird und zum Schluss ausführbar gemacht wird.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sudo touch /opt/fhem/FHEM/shutdownNAS.sh &amp;amp;&amp;amp; sudo chown -R fhem /opt/fhem/ &amp;amp;&amp;amp; sudo chmod +x /opt/fhem/FHEM/shutdownNAS.sh&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Nun muss der Code des Scripts eingefügt werden. Dies kann entweder über die FHEM Oberfläche (Edit files) oder das Terminal erfolgen. Für letzteres lautet der Befehl:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /opt/fhem/FHEM/shutdownNAS.sh&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Folgender Code muss eingefügt werden (die IP Adresse des eigenen NAS ist anzupassen):&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# SH_shutdownNAS.sh&lt;br /&gt;
&lt;br /&gt;
DATE=$(date +%Y.%m.%d)&lt;br /&gt;
TIME=$(date +%T)&lt;br /&gt;
echo $DATE $TIME &amp;quot;3: NAS in den Ruhemodus versetzen&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ssh admin@192.168.xxx.xxx &amp;quot;echo mem &amp;gt; /sys/power/state&amp;quot;&lt;br /&gt;
exit 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Script ausführen ==&lt;br /&gt;
Es gilt zu beachten, dass FHEM als return eines solchen Scripts immer -1 ausgibt.&amp;lt;br&amp;gt;&lt;br /&gt;
Ebenso sollte bedacht werden, dass das Script nicht vollständig durchlaufen werden kann, da die Verbindung zum NAS verloren geht. Deshalb erfolgt der Aufruf des Scripts am Ende mit &amp;amp;.&amp;lt;br&amp;gt;&lt;br /&gt;
Das Script kann über die FHEM Oberfläche&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;{system(&#039;/opt/fhem/FHEM/SH_shutdownNAS.sh&amp;amp;&#039;)}&amp;lt;/source&amp;gt;&lt;br /&gt;
oder in einer 99_myUtils.pm&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;system(&#039;/opt/fhem/FHEM/SH_shutdownNAS.sh&amp;amp;&#039;);&amp;lt;/source&amp;gt;&lt;br /&gt;
ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [https://forum.fhem.de/index.php/topic,27539.msg204384.html Beitrag im Forum]&lt;br /&gt;
* [https://www.debian-administration.org/article/530/SSH_with_authentication_key_instead_of_password SSH with authentication key instead of password]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Suelle</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Departure&amp;diff=17465</id>
		<title>Departure</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Departure&amp;diff=17465"/>
		<updated>2016-11-25T20:23:29Z</updated>

		<summary type="html">&lt;p&gt;Suelle: kleine Korrekturen; Links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Departure ist ein Modul zur Anzeige der Abfahrtszeiten von Bahn, Bus, Zug und Fähre des öffentlichen Personennahverkehrs (ÖPNV).&lt;br /&gt;
Diese Seite basiert auf dem Beitrag im Forum https://forum.fhem.de/index.php?topic=48255.0 (von sbierman). Mittlerweile gibt es hierzu ein noch inoffizielles Modul https://forum.fhem.de/index.php?topic=60046.0 (von uniqueck).&lt;br /&gt;
Zusätzlich gibt es ein Widget für die FHEM Tablet UI (FTUI) https://forum.fhem.de/index.php?topic=48255.0 (von setstate).&lt;br /&gt;
Diese Seite sollte angepasst/überarbeitet werden, wenn das Modul 98_departure offiziell eingecheckt ist.&lt;br /&gt;
&lt;br /&gt;
== Vorbereitung ==&lt;br /&gt;
Um die Abfahrtzeiten zu ermitteln wird der REST-Wrapper von sbiermann genutzt, der auf dem Dienst für die Android App &amp;quot;Öffi&amp;quot; basiert.&lt;br /&gt;
Für die Spätere Abfrage wird der Provider und die ID der Haltestelle benötigt. Beides kann wie folgt ermittelt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1. Ermitteln welche Provider gibt es und welcher ist für mich zuständig.&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;http://transportrest-sbiermann.rhcloud.com/provider&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieses liefert als Antwort im JSON Format:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[{&amp;quot;name&amp;quot;:&amp;quot;Sncb&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;SncbProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Vbn&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;VbnProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Wien&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;WienProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Linz&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;LinzProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Vrr&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;VrrProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Oebb&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;OebbProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Gvh&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;GvhProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Ns&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;NsProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Vao&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;VaoProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Tfi&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;TfiProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Vgn&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;VgnProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Mvg&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;MvgProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Pl&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;PlProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Vgs&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;VgsProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Nasa&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;NasaProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Vbb&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;VbbProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Ivb&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;IvbProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Nvv&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;NvvProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Mvv&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;MvvProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Vagfr&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;VagfrProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Vvv&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;VvvProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Sf&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;SfProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Vms&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;VmsProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Sbb&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;SbbProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Bsvag&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;BsvagProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Jet&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;JetProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Septa&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;SeptaProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Bvb&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;BvbProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Mersey&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;MerseyProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Vvs&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;VvsProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Nvbw&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;NvbwProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Se&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;SeProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Svv&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;SvvProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Bahn&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;BahnProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Vrs&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;VrsProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Stockholm&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;StockholmProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Vmv&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;VmvProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Stv&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;StvProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Sydney&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;SydneyProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Paris&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;ParisProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Dsb&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;DsbProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Rt&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;RtProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Dub&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;DubProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Bvg&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;BvgProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Paca&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;PacaProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Vor&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;VorProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;FrenchSouthWest&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;FrenchSouthWestProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Avv&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;AvvProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Zvv&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;ZvvProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Nri&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;NriProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Invg&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;InvgProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Eireann&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;EireannProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Vbl&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;VblProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Vvo&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;VvoProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Sh&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;ShProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Kvv&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;KvvProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Bayern&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;BayernProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Atc&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;AtcProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Lu&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;LuProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Italy&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;ItalyProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Vvm&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;VvmProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Met&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;MetProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Ding&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;DingProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Tlem&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;TlemProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Vvt&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;VvtProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Vrn&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;VrnProvider&amp;quot;}]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Das was bei Name steht wird verwendet, der Wert aClass ist intern und braucht hier nicht weiter verwendet werden. Im Beispiel haben die Verkehrsbetriebe Stuttgart (VVS) den Namen &amp;quot;Vvs&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2. Ermitteln der StationId für die Haltestelle deren Abfahrtszeiten ich gerne haben möchte. In diesem Beispiel die Haltstelle &amp;quot;SSB-Zentrum&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://transportrest-sbiermann.rhcloud.com/station/suggest?q=SSB-Zentrum&amp;amp;provider=Vvs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dieses liefert als Antwort im JSON Format:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[{&amp;quot;type&amp;quot;:&amp;quot;STATION&amp;quot;,&amp;quot;id&amp;quot;:&amp;quot;5000350&amp;quot;,&amp;quot;lat&amp;quot;:48726856,&amp;quot;lon&amp;quot;:9129721,&amp;quot;place&amp;quot;:&amp;quot;Stuttgart&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;SSB-Zentrum&amp;quot;,&amp;quot;products&amp;quot;:null,&amp;quot;lonAsDouble&amp;quot;:9.129721,&amp;quot;latAsDouble&amp;quot;:48.726856,&amp;quot;identified&amp;quot;:true},{&amp;quot;type&amp;quot;:&amp;quot;STATION&amp;quot;,&amp;quot;id&amp;quot;:&amp;quot;5002601&amp;quot;,&amp;quot;lat&amp;quot;:48722757,&amp;quot;lon&amp;quot;:9129058,&amp;quot;place&amp;quot;:&amp;quot;Stuttgart&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Industriestraße (SSB-Zentrum)&amp;quot;,&amp;quot;products&amp;quot;:null,&amp;quot;lonAsDouble&amp;quot;:9.129058,&amp;quot;latAsDouble&amp;quot;:48.722757,&amp;quot;identified&amp;quot;:true}]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wie man sehen kann gibt es mehrere Treffer für SSB-Zentrum. Es wird aber nur der Typ &amp;quot;STATION&amp;quot; benötigt und somit lautet die StationId &amp;quot;5000350&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3. Abfrage der Departure Zeiten für die Haltestelle &amp;quot;SSB-Zentrum&amp;quot;. Diese liefert die Daten im passenden Format für das zugehörige departure Widget für FTUI&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://transportrest-sbiermann.rhcloud.com/departureFHEM?from=6930306&amp;amp;provider=Vvs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
dieses liefert als Antwort im passenden Format:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[[&amp;quot;U8&amp;quot;,&amp;quot;Vaihingen&amp;quot;,&amp;quot;3&amp;quot;],[&amp;quot;U12&amp;quot;,&amp;quot;Dürrlewang&amp;quot;,&amp;quot;6&amp;quot;],[&amp;quot;U8&amp;quot;,&amp;quot;Ostfildern&amp;quot;,&amp;quot;5&amp;quot;],[&amp;quot;U3&amp;quot;,&amp;quot;Vaihingen&amp;quot;,&amp;quot;6&amp;quot;],[&amp;quot;U12&amp;quot;,&amp;quot;Hallschlag&amp;quot;,&amp;quot;7&amp;quot;],[&amp;quot;U3&amp;quot;,&amp;quot;Plieningen&amp;quot;,&amp;quot;9&amp;quot;],[&amp;quot;U8&amp;quot;,&amp;quot;Vaihingen&amp;quot;,&amp;quot;12&amp;quot;],[&amp;quot;U12&amp;quot;,&amp;quot;Dürrlewang&amp;quot;,&amp;quot;17&amp;quot;],[&amp;quot;U8&amp;quot;,&amp;quot;Waldau&amp;quot;,&amp;quot;15&amp;quot;],[&amp;quot;U3&amp;quot;,&amp;quot;Vaihingen&amp;quot;,&amp;quot;16&amp;quot;]]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Die Zeiten sind immer inklusive Verspätung angegeben, sofern der Provider diese Daten mit sendet.&lt;br /&gt;
&lt;br /&gt;
== Einbindung in FHEM ==&lt;br /&gt;
Wie in der Einleitung erwähnt gibt es aktuell zwei Wege, die Abfahrtszeiten einzubinden: über HTTPMOD oder über das noch inofizielle Modul 98_departure&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define myDeparture HTTPMOD none 0&lt;br /&gt;
attr myDeparture get01Name SSB-Zentrum&lt;br /&gt;
attr myDeparture get01URL http://transportrest-sbiermann.rhcloud.com/departureFHEM?from=6930306&amp;amp;provider=Vvs&lt;br /&gt;
attr myDeparture get01Regex (\[\[.*\]\]).*&lt;br /&gt;
attr VAG timeout 30&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Es können mehrere Haltestellen in einem Device hinterlegt werden, hierzu einfach die drei Attribute get01Name, get01URL und get01Regex duplizieren und durchnummerieren. Dabei müssen natürlich Name und URL angepasst werden.&lt;br /&gt;
Bei dieser Konfiguration erfolgt die Aktualisierung über das FTUI Widget!&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [https://forum.fhem.de/index.php/topic,48255.0.html Forum: Neues FTUI Widget - Departure]&lt;br /&gt;
* [https://forum.fhem.de/index.php?topic=60046.0 Forum: Modul 98_Departure: Bereitstellung von Abfahrtszeiten an einem Bahnhof]&lt;br /&gt;
* [http://www.fhemwiki.de/wiki/FHEM_Tablet_UI#departure Wiki: FHEM Tablet UI - Departure]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
[[Kategorie:Code Snippets]]&lt;br /&gt;
[[Kategorie:Modul (Inoffiziell)]]&lt;/div&gt;</summary>
		<author><name>Suelle</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=FHEM_Tablet_UI&amp;diff=17464</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=17464"/>
		<updated>2016-11-25T20:10:04Z</updated>

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

		<summary type="html">&lt;p&gt;Suelle: Initiale Anlage&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Departure ist ein Modul zur Anzeige der Abfahrtszeiten von Bahn, Bus, Zug und Fähre öffentlichen Personennahverkehrs (ÖPNV).&lt;br /&gt;
Diese Seite basiert auf dem Beitrag im Forum https://forum.fhem.de/index.php?topic=48255.0 (von sbierman). Mittlerweile gibt es hierzu ein noch inoffizielles Modul https://forum.fhem.de/index.php?topic=60046.0 (von uniqueck).&lt;br /&gt;
Zusätzlich gibt es ein Widget für die FHEM Tablet UI (FTUI) https://forum.fhem.de/index.php?topic=48255.0 (von setstate).&lt;br /&gt;
Diese Seite sollte angepasst/überarbeitet werden, wenn das Modul 98_departure offiziell eingecheckt ist.&lt;br /&gt;
&lt;br /&gt;
== Vorbereitung ==&lt;br /&gt;
Um die Abfahrtzeiten zu ermitteln wird der REST-Wrapper von sbiermann genutzt, der auf dem Dienst für die Android App &amp;quot;Öffi&amp;quot; basiert.&lt;br /&gt;
Für die Spätere Abfrage wird der Provider und die ID der Haltestelle benötigt. Beides kann wie folgt ermittelt werden.&lt;br /&gt;
&lt;br /&gt;
1. Ermitteln welche Provider gibt es und welcher ist für mich zuständig.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;http://transportrest-sbiermann.rhcloud.com/provider&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieses liefert als Antwort im JSON Format:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
[{&amp;quot;name&amp;quot;:&amp;quot;Sncb&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;SncbProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Vbn&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;VbnProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Wien&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;WienProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Linz&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;LinzProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Vrr&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;VrrProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Oebb&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;OebbProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Gvh&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;GvhProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Ns&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;NsProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Vao&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;VaoProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Tfi&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;TfiProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Vgn&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;VgnProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Mvg&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;MvgProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Pl&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;PlProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Vgs&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;VgsProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Nasa&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;NasaProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Vbb&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;VbbProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Ivb&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;IvbProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Nvv&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;NvvProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Mvv&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;MvvProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Vagfr&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;VagfrProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Vvv&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;VvvProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Sf&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;SfProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Vms&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;VmsProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Sbb&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;SbbProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Bsvag&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;BsvagProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Jet&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;JetProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Septa&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;SeptaProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Bvb&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;BvbProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Mersey&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;MerseyProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Vvs&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;VvsProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Nvbw&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;NvbwProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Se&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;SeProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Svv&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;SvvProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Bahn&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;BahnProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Vrs&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;VrsProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Stockholm&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;StockholmProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Vmv&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;VmvProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Stv&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;StvProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Sydney&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;SydneyProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Paris&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;ParisProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Dsb&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;DsbProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Rt&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;RtProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Dub&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;DubProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Bvg&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;BvgProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Paca&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;PacaProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Vor&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;VorProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;FrenchSouthWest&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;FrenchSouthWestProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Avv&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;AvvProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Zvv&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;ZvvProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Nri&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;NriProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Invg&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;InvgProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Eireann&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;EireannProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Vbl&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;VblProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Vvo&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;VvoProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Sh&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;ShProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Kvv&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;KvvProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Bayern&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;BayernProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Atc&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;AtcProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Lu&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;LuProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Italy&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;ItalyProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Vvm&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;VvmProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Met&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;MetProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Ding&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;DingProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Tlem&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;TlemProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Vvt&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;VvtProvider&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;Vrn&amp;quot;,&amp;quot;aClass&amp;quot;:&amp;quot;VrnProvider&amp;quot;}]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Das was bei Name steht wird verwendet, der Wert aClass ist intern und braucht hier nicht weiter verwendet werden. Im Beispiel haben die Verkehrsbetriebe Stuttgart (VVS) den Namen &amp;quot;Vvs&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
2. Ermitteln der StationId für die Haltestelle deren Abfahrtszeiten ich gerne haben möchte. In diesem Beispiel die Haltstelle &amp;quot;SSB-Zentrum&amp;quot;.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
http://transportrest-sbiermann.rhcloud.com/station/suggest?q=SSB-Zentrum&amp;amp;provider=Vvs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Dieses liefert als Antwort im JSON Format:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
[{&amp;quot;type&amp;quot;:&amp;quot;STATION&amp;quot;,&amp;quot;id&amp;quot;:&amp;quot;5000350&amp;quot;,&amp;quot;lat&amp;quot;:48726856,&amp;quot;lon&amp;quot;:9129721,&amp;quot;place&amp;quot;:&amp;quot;Stuttgart&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;SSB-Zentrum&amp;quot;,&amp;quot;products&amp;quot;:null,&amp;quot;lonAsDouble&amp;quot;:9.129721,&amp;quot;latAsDouble&amp;quot;:48.726856,&amp;quot;identified&amp;quot;:true},{&amp;quot;type&amp;quot;:&amp;quot;STATION&amp;quot;,&amp;quot;id&amp;quot;:&amp;quot;5002601&amp;quot;,&amp;quot;lat&amp;quot;:48722757,&amp;quot;lon&amp;quot;:9129058,&amp;quot;place&amp;quot;:&amp;quot;Stuttgart&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Industriestraße (SSB-Zentrum)&amp;quot;,&amp;quot;products&amp;quot;:null,&amp;quot;lonAsDouble&amp;quot;:9.129058,&amp;quot;latAsDouble&amp;quot;:48.722757,&amp;quot;identified&amp;quot;:true}]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Wie man sehen kann gibt es mehrere Treffer für Maria-Hilf-Kirche. Es wird aber nur der Typ &amp;quot;STATION&amp;quot; benötigt und somit lautet die StationId &amp;quot;5000350&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
3. Abfrage der Departure Zeiten für die Haltestelle &amp;quot;SSB-Zentrum&amp;quot;. Diese liefert die Daten im passenden Format für das zugehörige departure Widget für FTUI&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
http://transportrest-sbiermann.rhcloud.com/departureFHEM?from=6930306&amp;amp;provider=Vvs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
dieses liefert als Antwort im passenden Format:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
[[&amp;quot;U8&amp;quot;,&amp;quot;Vaihingen&amp;quot;,&amp;quot;3&amp;quot;],[&amp;quot;U12&amp;quot;,&amp;quot;Dürrlewang&amp;quot;,&amp;quot;6&amp;quot;],[&amp;quot;U8&amp;quot;,&amp;quot;Ostfildern&amp;quot;,&amp;quot;5&amp;quot;],[&amp;quot;U3&amp;quot;,&amp;quot;Vaihingen&amp;quot;,&amp;quot;6&amp;quot;],[&amp;quot;U12&amp;quot;,&amp;quot;Hallschlag&amp;quot;,&amp;quot;7&amp;quot;],[&amp;quot;U3&amp;quot;,&amp;quot;Plieningen&amp;quot;,&amp;quot;9&amp;quot;],[&amp;quot;U8&amp;quot;,&amp;quot;Vaihingen&amp;quot;,&amp;quot;12&amp;quot;],[&amp;quot;U12&amp;quot;,&amp;quot;Dürrlewang&amp;quot;,&amp;quot;17&amp;quot;],[&amp;quot;U8&amp;quot;,&amp;quot;Waldau&amp;quot;,&amp;quot;15&amp;quot;],[&amp;quot;U3&amp;quot;,&amp;quot;Vaihingen&amp;quot;,&amp;quot;16&amp;quot;]]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Die Zeiten sind immer inklusive Verspätung angegeben, sofern der Provider diese Daten mit sendet.&lt;br /&gt;
&lt;br /&gt;
== Einbindung in FHEM ==&lt;br /&gt;
Wie in der Einleitung erwähnt gibt es aktuell zwei Wege, die Abfahrtszeiten einzubinden: über HTTPMOD oder über das noch inofizielle Modul 98_departure&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define myDeparture HTTPMOD none 0&lt;br /&gt;
attr myDeparture get01Name SSB-Zentrum&lt;br /&gt;
attr myDeparture get01URL http://transportrest-sbiermann.rhcloud.com/departureFHEM?from=6930306&amp;amp;provider=Vvs&lt;br /&gt;
attr myDeparture get01Regex (\[\[.*\]\]).*&lt;br /&gt;
attr VAG timeout 30&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Es können mehrere Haltestellen in einem Device hinterlegt werden, hierzu einfach die drei Attribute get01Name, get01URL und get01Regex duplizieren und durchnummerieren. Dabei müssen natürlich Name und URL angepasst werden.&lt;br /&gt;
Bei dieser Konfiguration erfolgt die Aktualisierung über das FTUI Widget!&lt;/div&gt;</summary>
		<author><name>Suelle</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Qnap_NAS_Ruhemodus/herunterfahren&amp;diff=17010</id>
		<title>Qnap NAS Ruhemodus/herunterfahren</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Qnap_NAS_Ruhemodus/herunterfahren&amp;diff=17010"/>
		<updated>2016-11-05T13:45:22Z</updated>

		<summary type="html">&lt;p&gt;Suelle: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mit dieser Anleitung ist es möglich sein NAS über FHEM in den Ruhemodus zu versetzen. Dies ist ggf. sinnvoll, wenn man es nur bei Anwesenheit nutzt. Der Stromverbrauch lässt sich dadurch deutlich senken. Per WoL kann es bei Bedarf wieder gestartet werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Dieser Artikel basiert auf einem [https://forum.fhem.de/index.php/topic,27539.msg204384.html Beitrag im Forum] und lässt sich sicherlich auch für andere NAS nutzen/anpassen.&lt;br /&gt;
&lt;br /&gt;
== Idee ==&lt;br /&gt;
Das NAS kann nur über die Oberfläche oder eine Terminalsession auf dem NAS selbst in den Ruhemodus versetzt werden. Mittels einer SSH Verbindung vom FHEM Host zum NAS ist dies möglich. Da man das Administrationskennwort des NAS nicht im Klartext hinterlegen möchte, soll stattdessen ein SSH Key verwendet werden.&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen ==&lt;br /&gt;
Das Kennwort des root Users auf dem FHEM Host muss bekannt sein.&lt;br /&gt;
&lt;br /&gt;
Der User FHEM muss sich anmelden dürfen. Hierfür muss ggf. die Datei [[/etc/passwd]] angepasst werden:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;sudo nano /etc/passwd&amp;lt;/source&amp;gt;&lt;br /&gt;
Dort muss der Eintrag [[fhem:x:999:20::/opt/fhem:/bin/false]] in [[fhem:x:999:20::/opt/fhem:/bin/bash]] geändert werden.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Wichtig]]: Dies sollte nach der vollständigen Einrichtung wieder rückgängig gemacht werden!&lt;br /&gt;
&lt;br /&gt;
== SSH Key für User FHEM anlegen ==&lt;br /&gt;
Hierfür sind die Schritte unter [https://www.debian-administration.org/article/530/SSH_with_authentication_key_instead_of_password SSH with authentication key instead of password] zu befolgen und an die eigenen Gegebenheiten anzupassen.&amp;lt;br&amp;gt;&lt;br /&gt;
Auf dem FHEM Host muss der Public Key erstellt werde (Generate the authentication key). Hierfür muss der FHEM User genutzt werden:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
su - root&lt;br /&gt;
su - fhem&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend muss der Public Key auf dem NAS abgelegt werden. (Install the public key on the servers).&lt;br /&gt;
&lt;br /&gt;
== Script in FHEM anlegen ==&lt;br /&gt;
Anlage der Datei über Terminal (putty o.ä.). Der erste Befehl erzeugt eine leere Datei, die anschließend dem User fhem zugeordnet wird und zum Schluss ausführbar gemacht wird.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sudo touch /opt/fhem/FHEM/shutdownNAS.sh &amp;amp;&amp;amp; sudo chown -R fhem /opt/fhem/ &amp;amp;&amp;amp; sudo chmod +x /opt/fhem/FHEM/shutdownNAS.sh&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Nun muss der Code des Scripts eingefügt werden. Dies kann entweder über die FHEM Oberfläche (Edit files) oder das Terminal erfolgen. Für letzteres lautet der Befehl:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /opt/fhem/FHEM/shutdownNAS.sh&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Folgender Code muss eingefügt werden (die IP Adresse des eigenen NAS ist anzupassen):&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# SH_shutdownNAS.sh&lt;br /&gt;
&lt;br /&gt;
DATE=$(date +%Y.%m.%d)&lt;br /&gt;
TIME=$(date +%T)&lt;br /&gt;
echo $DATE $TIME &amp;quot;3: NAS in den Ruhemodus versetzen&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ssh admin@192.168.xxx.xxx &amp;quot;echo mem &amp;gt; /sys/power/state&amp;quot;&lt;br /&gt;
exit 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Script ausführen ==&lt;br /&gt;
Es gilt zu beachten, dass FHEM als return eines solchen Scripts immer -1 ausgibt.&amp;lt;br&amp;gt;&lt;br /&gt;
Ebenso sollte bedacht werden, dass das Script nicht vollständig durchlaufen werden kann, da die Verbindung zum NAS verloren geht. Deshalb erfolgt der Aufruf des Scripts am Ende mit &amp;amp;.&amp;lt;br&amp;gt;&lt;br /&gt;
Das Script kann über die FHEM Oberfläche&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;{system(&#039;/opt/fhem/FHEM/SH_shutdownNAS.sh&amp;amp;&#039;)}&amp;lt;/source&amp;gt;&lt;br /&gt;
oder in einer 99_myUtils.pm&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;system(&#039;/opt/fhem/FHEM/SH_shutdownNAS.sh&amp;amp;&#039;);&amp;lt;/source&amp;gt;&lt;br /&gt;
ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [https://forum.fhem.de/index.php/topic,27539.msg204384.html Beitrag im Forum]&lt;br /&gt;
* [https://www.debian-administration.org/article/530/SSH_with_authentication_key_instead_of_password SSH with authentication key instead of password]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Suelle</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Qnap_NAS_Ruhemodus/herunterfahren&amp;diff=17002</id>
		<title>Qnap NAS Ruhemodus/herunterfahren</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Qnap_NAS_Ruhemodus/herunterfahren&amp;diff=17002"/>
		<updated>2016-11-05T12:06:17Z</updated>

		<summary type="html">&lt;p&gt;Suelle: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mit dieser Anleitung ist es möglich sein NAS über FHEM in den Ruhemodus zu versetzen. Dies ist ggf. sinnvoll, wenn man es nur bei Anwesenheit nutzt. Der Stromverbrauch lässt sich dadurch deutlich senken. Per WoL kann es bei Bedarf wieder gestartet werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Dieser Artikel basiert auf einem [https://forum.fhem.de/index.php/topic,27539.msg204384.html Beitrag im Forum] und lässt sich sicherlich auch für andere NAS nutzen/anpassen.&lt;br /&gt;
&lt;br /&gt;
== Idee ==&lt;br /&gt;
Das NAS kann nur über die Oberfläche oder eine Terminalsession auf dem NAS selbst in den Ruhemodus versetzt werden. Mittels einer SSH Verbindung vom FHEM Host zum NAS ist dies möglich. Da man das Administrationskennwort des NAS nicht im Klartext hinterlegen möchte, soll stattdessen ein SSH Key verwendet werden.&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen ==&lt;br /&gt;
Das Kennwort des root Users auf dem FHEM Host muss bekannt sein.&lt;br /&gt;
&lt;br /&gt;
Der User FHEM muss sich anmelden dürfen. Hierfür muss ggf. die Datei [[/etc/passwd]] angepasst werden:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;sudo nano /etc/passwd&amp;lt;/source&amp;gt;&lt;br /&gt;
Dort muss der Eintrag [[fhem:x:999:20::/opt/fhem:/bin/false]] in [[fhem:x:999:20::/opt/fhem:/bin/bash]] geändert werden.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Wichtig]]: Dies sollte nach der vollständigen Einrichtung wieder rückgängig gemacht werden!&lt;br /&gt;
&lt;br /&gt;
Auf dem FHEM Host muss ggf. ssh installiert werden:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;sudo apt-get install sshpass&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SSH Key für User FHEM anlegen ==&lt;br /&gt;
Hierfür sind die Schritte unter [https://www.debian-administration.org/article/530/SSH_with_authentication_key_instead_of_password SSH with authentication key instead of password] zu befolgen und an die eigenen Gegebenheiten anzupassen.&amp;lt;br&amp;gt;&lt;br /&gt;
Auf dem FHEM Host muss der Public Key erstellt werde (Generate the authentication key). Hierfür muss der FHEM User genutzt werden:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
su - root&lt;br /&gt;
su - fhem&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend muss der Public Key auf dem NAS abgelegt werden. (Install the public key on the servers).&lt;br /&gt;
&lt;br /&gt;
== Script in FHEM anlegen ==&lt;br /&gt;
Anlage der Datei über Terminal (putty o.ä.). Der erste Befehl erzeugt eine leere Datei, die anschließend dem User fhem zugeordnet wird und zum Schluss ausführbar gemacht wird.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sudo touch /opt/fhem/FHEM/shutdownNAS.sh &amp;amp;&amp;amp; sudo chown -R fhem /opt/fhem/ &amp;amp;&amp;amp; sudo chmod +x /opt/fhem/FHEM/shutdownNAS.sh&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Nun muss der Code des Scripts eingefügt werden. Dies kann entweder über die FHEM Oberfläche (Edit files) oder das Terminal erfolgen. Für letzteres lautet der Befehl:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /opt/fhem/FHEM/shutdownNAS.sh&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Folgender Code muss eingefügt werden (die IP Adresse des eigenen NAS ist anzupassen):&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# SH_shutdownNAS.sh&lt;br /&gt;
&lt;br /&gt;
DATE=$(date +%Y.%m.%d)&lt;br /&gt;
TIME=$(date +%T)&lt;br /&gt;
echo $DATE $TIME &amp;quot;3: NAS in den Ruhemodus versetzen&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ssh admin@192.168.xxx.xxx &amp;quot;echo mem &amp;gt; /sys/power/state&amp;quot;&lt;br /&gt;
exit 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Script ausführen ==&lt;br /&gt;
Es gilt zu beachten, dass FHEM als return eines solchen Scripts immer -1 ausgibt.&amp;lt;br&amp;gt;&lt;br /&gt;
Ebenso sollte bedacht werden, dass das Script nicht vollständig durchlaufen werden kann, da die Verbindung zum NAS verloren geht. Deshalb erfolgt der Aufruf des Scripts am Ende mit &amp;amp;.&amp;lt;br&amp;gt;&lt;br /&gt;
Das Script kann über die FHEM Oberfläche&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;{system(&#039;/opt/fhem/FHEM/SH_shutdownNAS.sh&amp;amp;&#039;)}&amp;lt;/source&amp;gt;&lt;br /&gt;
oder in einer 99_myUtils.pm&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;system(&#039;/opt/fhem/FHEM/SH_shutdownNAS.sh&amp;amp;&#039;);&amp;lt;/source&amp;gt;&lt;br /&gt;
ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [https://forum.fhem.de/index.php/topic,27539.msg204384.html Beitrag im Forum]&lt;br /&gt;
* [https://www.debian-administration.org/article/530/SSH_with_authentication_key_instead_of_password SSH with authentication key instead of password]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Suelle</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Qnap_NAS_Ruhemodus/herunterfahren&amp;diff=17000</id>
		<title>Qnap NAS Ruhemodus/herunterfahren</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Qnap_NAS_Ruhemodus/herunterfahren&amp;diff=17000"/>
		<updated>2016-11-05T12:04:47Z</updated>

		<summary type="html">&lt;p&gt;Suelle: Initiale Anlage&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mit dieser Anleitung ist es möglich sein NAS über FHEM in den Ruhemodus zu versetzen. Dies ist ggf. sinnvoll, wenn man es nur bei Anwesenheit nutzt. Der Stromverbrauch lässt sich dadurch deutlich senken. Per WoL kann es bei Bedarf wieder gestartet werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Dieser Artikel basiert auf einem [https://forum.fhem.de/index.php/topic,27539.msg204384.html Beitrag im Forum] und lässt sich sicherlich auch für andere NAS nutzen/anpassen.&lt;br /&gt;
&lt;br /&gt;
== Idee ==&lt;br /&gt;
Das NAS kann nur über die Oberfläche oder eine Terminalsession auf dem NAS selbst in den Ruhemodus versetzt werden. Mittels einer SSH Verbindung vom FHEM Host zum NAS ist dies möglich. Da man das Administrationskennwort des NAS nicht im Klartext hinterlegen möchte, soll stattdessen ein SSH Key verwendet werden.&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen ==&lt;br /&gt;
Das Kennwort des root Users auf dem FHEM Host muss bekannt sein.&lt;br /&gt;
&lt;br /&gt;
Der User FHEM muss sich anmelden dürfen. Hierfür muss ggf. die Datei [[/etc/passwd]] angepasst werden:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;sudo nano /etc/passwd&amp;lt;/source&amp;gt;&lt;br /&gt;
Dort muss der Eintrag [[fhem:x:999:20::/opt/fhem:/bin/false]] in [[fhem:x:999:20::/opt/fhem:/bin/bash]] geändert werden.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Wichtig]]: Dies sollte nach der vollständigen Einrichtung wieder rückgängig gemacht werden!&lt;br /&gt;
&lt;br /&gt;
Auf dem FHEM Host muss ggf. ssh installiert werden:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;sudo apt-get install sshpass&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SSH Key für User FHEM anlegen ==&lt;br /&gt;
Hierfür sind die Schritte unter [https://www.debian-administration.org/article/530/SSH_with_authentication_key_instead_of_password SSH with authentication key instead of password] zu befolgen und an die eigenen Gegebenheiten anzupassen.&amp;lt;br&amp;gt;&lt;br /&gt;
Auf dem FHEM Host muss der Public Key erstellt werde (Generate the authentication key). Hierfür muss der FHEM User genutzt werden:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
su - root&lt;br /&gt;
su - fhem&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend muss der Public Key auf dem NAS abgelegt werden. (Install the public key on the servers).&lt;br /&gt;
&lt;br /&gt;
== Script in FHEM anlegen ==&lt;br /&gt;
Anlage der Datei über Terminal (putty o.ä.). Der erste Befehl erzeugt eine leere Datei, die anschließend dem User fhem zugeordnet wird und zum Schluss ausführbar gemacht wird.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sudo touch /opt/fhem/FHEM/shutdownNAS.sh &amp;amp;&amp;amp; sudo chown -R fhem /opt/fhem/ &amp;amp;&amp;amp; sudo chmod +x /opt/fhem/FHEM/shutdownNAS.sh&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Nun muss der Code des Scripts eingefügt werden. Dies kann entweder über die FHEM Oberfläche (Edit files) oder das Terminal erfolgen. Für letzteres lautet der Befehl:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /opt/fhem/FHEM/shutdownNAS.sh&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Folgender Code muss eingefügt werden (die IP Adresse des eigenen NAS ist anzupassen):&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# SH_shutdownNAS.sh&lt;br /&gt;
&lt;br /&gt;
DATE=$(date +%Y.%m.%d)&lt;br /&gt;
TIME=$(date +%T)&lt;br /&gt;
echo $DATE $TIME &amp;quot;3: NAS in den Ruhemodus versetzen&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ssh admin@192.168.xxx.xxx &amp;quot;echo mem &amp;gt; /sys/power/state&amp;quot;&lt;br /&gt;
exit 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Script ausführen ==&lt;br /&gt;
Es gilt zu beachten, dass FHEM als return eines solchen Scripts immer -1 ausgibt.&amp;lt;br&amp;gt;&lt;br /&gt;
Ebenso sollte bedacht werden, dass das Script nicht vollständig durchlaufen werden kann, da die Verbindung zum NAS verloren geht. Deshalb erfolgt der Aufruf des Scripts am Ende mit &amp;amp;.&amp;lt;br&amp;gt;&lt;br /&gt;
Das Script kann über die FHEM Oberfläche&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;{system(&#039;/opt/fhem/FHEM/SH_shutdownNAS.sh&amp;amp;&#039;)}&amp;lt;/source&amp;gt;&lt;br /&gt;
oder in einer 99_myUtils.pm&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;system(&#039;/opt/fhem/FHEM/SH_shutdownNAS.sh&amp;amp;&#039;);&amp;lt;/source&amp;gt;&lt;br /&gt;
ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [https://forum.fhem.de/index.php/topic,27539.msg204384.html Beitrag im Forum]&lt;br /&gt;
* [https://www.debian-administration.org/article/530/SSH_with_authentication_key_instead_of_password SSH with authentication key instead of password]&lt;/div&gt;</summary>
		<author><name>Suelle</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Qnap_NAS_Ruhemodus/herunterfahren&amp;diff=16998</id>
		<title>Qnap NAS Ruhemodus/herunterfahren</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Qnap_NAS_Ruhemodus/herunterfahren&amp;diff=16998"/>
		<updated>2016-11-05T11:47:03Z</updated>

		<summary type="html">&lt;p&gt;Suelle: Die Seite wurde neu angelegt: „Mit dieser Anleitung ist es möglich sein NAS über FHEM in den Ruhemodus zu versetzen. Dies ist ggf. sinnvoll, wenn man es nur bei Anwesenheit nutzt. Der Stro…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mit dieser Anleitung ist es möglich sein NAS über FHEM in den Ruhemodus zu versetzen. Dies ist ggf. sinnvoll, wenn man es nur bei Anwesenheit nutzt. Der Stromverbrauch lässt sich dadruch deutlich senken. Per WoL kann es bei Bedarf wieder gestartet werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Dieser Artikel basiert auf einem [https://forum.fhem.de/index.php/topic,27539.msg204384.html Beitrag im Forum] und lässt sich sicherlich auch für andere NAS nutzen/anpassen.&lt;br /&gt;
&lt;br /&gt;
== Idee ==&lt;br /&gt;
Das NAS kann nur über die Oberfläche oder eine Terminalsession auf dem NAS selbst in den Ruhemodus versetzt werden. Mittels einer SSH Verbindung vom FHEM Host zum NAS ist dies möglich. Da man das Administrationskennwort des NAS nicht im klartext hinterlegen möchte, soll stattdessen ein SSH Key verwendet werden.&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen ==&lt;br /&gt;
Der User FHEM muss sich anmelden dürfen. Hierfür muss ggf. die Datei /etc/passwd angepasst werden:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;sudo nano /etc/passwd&amp;lt;/source&amp;gt;&lt;br /&gt;
Dort muss der Eintrag [fhem:x:999:20::/opt/fhem:/bin/false] in [fhem:x:999:20::/opt/fhem:/bin/bash] geändert werden.&amp;lt;br&amp;gt;&lt;br /&gt;
WICHTIG: Dies sollte nach der vollständigen Einrichtung wieder rückgängig gemacht werden!&lt;br /&gt;
&lt;br /&gt;
Auf dem FHEM Host muss ggf. ssh installiert werden:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;sudo apt-get install sshpass&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SSH Key für User FHEM anlegen ==&lt;br /&gt;
Hierfür sind die Schritte unter &lt;br /&gt;
&lt;br /&gt;
su - root&lt;br /&gt;
su - fhem&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Script in FHEM anlegen ==&lt;br /&gt;
Anlage der Datei über Terminal (putty o.ä.). Der erste Befehl erzeugt eine leere Datei, die anschließend dem User fhem zugeordnet wird und zum Schluss ausführbar gemacht wird.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sudo touch /opt/fhem/FHEM/shutdownNAS.sh &amp;amp;&amp;amp; sudo chown -R fhem /opt/fhem/ &amp;amp;&amp;amp; sudo chmod +x /opt/fhem/FHEM/shutdownNAS.sh&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Nun muss der Code des Scripts eingefügt werden. Dies kann entweder über die FHEM Oberfläche (Edit files) oder das Terminal erfolgen. Für letzteres lautet der Befehl:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /opt/fhem/FHEM/shutdownNAS.sh&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Folgender Code muss eingefügt werden (die IP Adresse des eigenen NAS ist anzupassen):&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# SH_shutdownNAS.sh&lt;br /&gt;
&lt;br /&gt;
DATE=$(date +%Y.%m.%d)&lt;br /&gt;
TIME=$(date +%T)&lt;br /&gt;
echo $DATE $TIME &amp;quot;3: NAS in den Ruhemodus versetzen&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ssh admin@192.168.xxx.xxx &amp;quot;echo mem &amp;gt; /sys/power/state&amp;quot;&lt;br /&gt;
exit 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Script ausführen ==&lt;br /&gt;
Es gilt zu beachten, dass FHEM als return eines solchen Scripts immer -1 ausgibt.&amp;lt;br&amp;gt;&lt;br /&gt;
Ebenso sollte bedacht werden, dass das Script nicht vollständig durchlaufen werden kann, da die Verbindung zum NAS verloren geht. Deshalb erfolgt der Aufruf des Scripts am Ende mit &amp;amp;.&amp;lt;br&amp;gt;&lt;br /&gt;
Das Script kann über die FHEM Oberfläche&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;{system(&#039;/opt/fhem/FHEM/SH_shutdownNAS.sh&amp;amp;&#039;)}&amp;lt;/source&amp;gt;&lt;br /&gt;
oder in einer 99_myUtils.pm&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;system(&#039;/opt/fhem/FHEM/SH_shutdownNAS.sh&amp;amp;&#039;);&amp;lt;/source&amp;gt;&lt;br /&gt;
ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [https://forum.fhem.de/index.php/topic,27539.msg204384.html Beitrag im Forum]&lt;br /&gt;
* [https://www.debian-administration.org/article/530/SSH_with_authentication_key_instead_of_password SSH with authentication key instead of password]&lt;/div&gt;</summary>
		<author><name>Suelle</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Spritpreismonitor&amp;diff=16985</id>
		<title>Spritpreismonitor</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Spritpreismonitor&amp;diff=16985"/>
		<updated>2016-11-04T08:08:31Z</updated>

		<summary type="html">&lt;p&gt;Suelle: &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;
&lt;br /&gt;
[[Kategorie:Code Snippets]]&lt;br /&gt;
[[Kategorie:Examples]]&lt;/div&gt;</summary>
		<author><name>Suelle</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=E-Mail_senden&amp;diff=5151</id>
		<title>E-Mail senden</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=E-Mail_senden&amp;diff=5151"/>
		<updated>2014-02-28T18:30:42Z</updated>

		<summary type="html">&lt;p&gt;Suelle: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Um aus FHEM heraus &#039;&#039;&#039;E-Mail senden&#039;&#039;&#039; zu können, sind abhängig von der verwendeten Platform unterschiedliche Vorgehensweisen erforderlich.&lt;br /&gt;
&lt;br /&gt;
== Linux ==&lt;br /&gt;
=== FritzBox 7170 (non-chroot) oder &amp;quot;reine&amp;quot; Linuxe ===&lt;br /&gt;
Datei 99_email.pm im Modul-Verzeichnis mit folgender Funktion anlegen (oder in bestehende 99_irgendwas.pm kopieren):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sub fb_mail {&lt;br /&gt;
 my $rcpt = $_[0];&lt;br /&gt;
 my $subject = $_[1];&lt;br /&gt;
 my $text = $_[2];&lt;br /&gt;
 system(&amp;amp;quot;/bin/echo \&amp;amp;quot;$text\&amp;amp;quot; | /usr/bin/mail send -i - -s \&amp;amp;quot;$subject\&amp;amp;quot; -t \&amp;amp;quot;$rcpt\&amp;amp;quot;&amp;amp;quot;);&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Aufruf dann mittels &lt;br /&gt;
:&amp;lt;code&amp;gt;{ fb_mail(&#039;empfaenger@@mail.de&#039;,&#039;Subject&#039;,&#039;text 123&#039;) }&amp;lt;/code&amp;gt;&lt;br /&gt;
Darauf achten, dass der fhem-User Mails senden darf (in richtige Gruppe eintragen. Ggf. vorher einmal su fhem und probieren).&lt;br /&gt;
&lt;br /&gt;
=== Fritz!Box 7390 ===&lt;br /&gt;
Auf der [[AVM Fritz!Box|FritzBox 7390]] ist diese Funktion seit 10/2012 Bestandteil der Fhem Standardauslieferung. Sie ist untergebracht in FritzBoxUtils.pm und heisst dort FB_mail($$$) (Groß-Kleinschreibung beachten).&lt;br /&gt;
&lt;br /&gt;
Da der Dateiname von FritzBoxUtils.pm nicht mit 99_ beginnt, wird diese Programmdatei nicht automatisch beim Start von Fhem geladen. Fhem muss zum Laden dieser Programmdatei aufgefordert werden. Dazu (z.&amp;amp;nbsp;B. in 99_myUtils.pm) die Zeile &#039;&#039;use FritzBoxUtils;&#039;&#039; einfügen.&lt;br /&gt;
&lt;br /&gt;
Mit dem Install von AVM.de wird fhem in einer chroot-Umgebung ausgeführt, die den Zugriff auf die Mailfunktion der Fritzbox nicht zulässt. Daher muss Fhem in der [http://fhem.de/fhem.html#Download Version von fhem.de] installiert sein. Sollte Ihre Fritzbox bisher mit dem install von AVM laufen, kann (nach einem backup!) das image von fhem.de einfach drüberinstalliert werden. Es sollten dabei alle Einstellungen erhalten bleiben.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sub fb_mail {&lt;br /&gt;
 my $rcpt = $_[0];&lt;br /&gt;
 my $subject = $_[1];&lt;br /&gt;
 my $text = $_[2];&lt;br /&gt;
 system(&amp;amp;quot;/bin/echo \&amp;amp;quot;$text\&amp;amp;quot; &amp;amp;gt; /var/tmp/fhem_nachricht.txt&amp;amp;quot;);&lt;br /&gt;
 system(&amp;amp;quot;/sbin/mailer send -i &#039;/var/tmp/fhem_nachricht.txt&#039; -s \&amp;amp;quot;$subject\&amp;amp;quot; -t \&amp;amp;quot;$rcpt\&amp;amp;quot;&amp;amp;quot;);&lt;br /&gt;
 system(&amp;amp;quot;rm /var/tmp/fhem_nachricht.txt&amp;amp;quot;);&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aufruf dann mittels &lt;br /&gt;
:&amp;lt;code&amp;gt;{ fb_mail(&#039;empfaenger@mail.de&#039;,&#039;Subject&#039;,&#039;text 123&#039;) }&amp;lt;/code&amp;gt;&lt;br /&gt;
bzw. &lt;br /&gt;
:&amp;lt;code&amp;gt;{ FB_mail(&#039;empfaenger@mail.de&#039;,&#039;Subject&#039;,&#039;text 123&#039;) }&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Wenn der Aufruf der Mailfunktion aus einem notify oder at erfolgt, muss das @@ in der Adresse des Mailempfängers verdoppelt werden, da ein einfaches @ sonst durch den Namen des getriggerten Devices  ersetzt würde. Bei Verwendung in der fhem-Kommandozeile oder einem eigenen *Utils.pm ist diese Doppelung nicht erforderlich. Bitte bei den ersten Mails ins Log schauen, ob die Mailadresse wie gewünscht verwendet wird.&lt;br /&gt;
&lt;br /&gt;
Dem Mailer können noch weitere Parameter hinzugefügt werden. Mehr dazu siehe: [http://www.wehavemorefun.de/fritzbox/Mailer Mailer]&lt;br /&gt;
&lt;br /&gt;
=== OpenWRT  ===&lt;br /&gt;
Die Anleitung wurde mit einer frühen Beta von Barrier Breaker (r391xx) mit einem TP_Lind WDR 4900 getestet. Da &amp;quot;sendEmail&amp;quot; nicht als Package vorliegt wird in dieser Anleitung &amp;quot;ssmtp&amp;quot; verwendet.&lt;br /&gt;
Die Installation erfolgt mittels:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
opkg update&lt;br /&gt;
opkg install ssmtp_2.64-4_mpc85xx.ipk  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hierbei werden die Packete libopenssl und zlib mit installiert. Damit ssmtp funktioniert müssen die Dateien /etc/ssmtp/ssmtp.conf und /etc/ssmtp/revaliases angepasst werden.&lt;br /&gt;
&lt;br /&gt;
/etc/ssmtp/ssmtp.conf &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;root=arnold@gmx.net&lt;br /&gt;
mailhub=mail.gmx.net:465&lt;br /&gt;
rewriteDomain=gmx.net&lt;br /&gt;
hostname=gmx.net&lt;br /&gt;
FromLineOverride=YES&lt;br /&gt;
UseTLS=YES&lt;br /&gt;
#UseSTARTTLS=YES&lt;br /&gt;
AuthUser=arnold@gmx.net&lt;br /&gt;
AuthPass=Passwort_von_arnold@gmx.net&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/etc/ssmtp/revaliases&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
root:arnold@gmx.net:mail.gmx.net:465&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In der [[99_myUtils_anlegen|99_myUtils]] folgende Unterroutine einfügen (von der RPi-Anleitung übernommen):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sub &lt;br /&gt;
OpenWRTMail &lt;br /&gt;
{ &lt;br /&gt;
 my $rcpt = shift;&lt;br /&gt;
 my $subject = shift; &lt;br /&gt;
 my $text = shift; &lt;br /&gt;
 my $ret = &amp;quot;&amp;quot;;&lt;br /&gt;
 my $sender = &amp;quot;dockstar\@heye-tammo.de&amp;quot;; &lt;br /&gt;
 Log 1, &amp;quot;sendEmail RCP: $rcpt, Subject: $subject, Text: $text&amp;quot;;&lt;br /&gt;
 $ret .= qx(echo -e &#039;to:$rcpt\n from:$sender\nsubject:$subject\n$text\n&#039; | ssmtp $rcpt);&lt;br /&gt;
 $ret =~ s,[\r\n]*,,g;    # remove CR from return-string &lt;br /&gt;
 Log 1, &amp;quot;sendEmail returned: $ret&amp;quot;; &lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ab hier den entsprechenden Abschnitt unter &amp;quot;Raspberry Pi&amp;quot; lesen.&lt;br /&gt;
&lt;br /&gt;
=== Synology DiskStation ===&lt;br /&gt;
Beim DSM 3.2 gab es keinen &amp;lt;code&amp;gt;sendmail&amp;lt;/code&amp;gt;-Befehl, sondern nur eine Funktion für den Versand der System-Benachrichtigungen. Interessanterweise funktionierte aber der &amp;lt;code&amp;gt;php-mail&amp;lt;/code&amp;gt;-Befehl, so dass man mittels folgendem Modul Mails frei versenden kann:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sub sendmail($$$) {&lt;br /&gt;
 my($empf, $subj, $nachricht) = @_;&lt;br /&gt;
 system(&amp;amp;quot;php -r &#039;mail(\&amp;amp;quot;$empf\&amp;amp;quot;,\&amp;amp;quot;$subj\&amp;amp;quot;,\&amp;amp;quot;$nachricht\&amp;amp;quot;);&#039;&amp;amp;quot;);&lt;br /&gt;
 undef;&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Raspberry Pi ===&lt;br /&gt;
In der weezy-Version, wie sie von busware zur Verfügung gestellt wird, muss auf einem [[Raspberry Pi]] noch sendEmail nachinstalliert werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get install sendEmail&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in der [[99_myUtils_anlegen|99_myUtils]] folgende Unterroutine einfügen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;######## DebianMail  Mail auf dem RPi versenden ############ &lt;br /&gt;
sub &lt;br /&gt;
DebianMail &lt;br /&gt;
{ &lt;br /&gt;
 my $rcpt = shift;&lt;br /&gt;
 my $subject = shift; &lt;br /&gt;
 my $text = shift; &lt;br /&gt;
 my $ret = &amp;amp;quot;&amp;amp;quot;;&lt;br /&gt;
 my $sender = &amp;amp;quot;absender\@account.de&amp;amp;quot;; &lt;br /&gt;
 my $konto = &amp;amp;quot;kontoname\@account.de&amp;amp;quot;;&lt;br /&gt;
 my $passwrd = &amp;amp;quot;passwrd&amp;amp;quot;;&lt;br /&gt;
 my $provider = &amp;amp;quot;smtp.provider.de&amp;amp;quot;;&lt;br /&gt;
 Log 1, &amp;amp;quot;sendEmail RCP: $rcpt&amp;amp;quot;;&lt;br /&gt;
 Log 1, &amp;amp;quot;sendEmail Subject: $subject&amp;amp;quot;;&lt;br /&gt;
 Log 1, &amp;amp;quot;sendEmail Text: $text&amp;amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
 $ret .= qx(sendEmail -f &#039;$sender&#039; -t &#039;$rcpt&#039; -u &#039;$subject&#039; -m &#039;$text&#039; -s &#039;$provider&#039; -xu &#039;$konto&#039; -xp &#039;$passwrd&#039; -o tls=no);&lt;br /&gt;
 $ret =~ s,[\r\n]*,,g;    # remove CR from return-string &lt;br /&gt;
 Log 1, &amp;amp;quot;sendEmail returned: $ret&amp;amp;quot;; &lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um die TLS Verschlüsselung (ehem. SSL) zu nutzen, muss in der 4. letzten Zeile tls=auto verwendet werden. Sollte anschließend keine Mail verschickt werden, siehe Probleme.&lt;br /&gt;
&lt;br /&gt;
Beim Aufruf der Funktion gibt es zwei unterschiedliche Verhaltensweisen zu beachten. Wird DebianMail durch ein Fhem-Ereignis als Makro mit &amp;quot;Transferzeichen&amp;quot;, wie @ oder&amp;amp;#160;% aufgerufen, so sind diese innerhalb des Aufrufs von DebianMail zu maskieren.&lt;br /&gt;
&lt;br /&gt;
Siehe auch commandref:&lt;br /&gt;
* The character @ will be replaced with the device name. To use @ in the text itself, use the double mode (@@).&lt;br /&gt;
* The macro&amp;amp;#160;%&amp;amp;lt;parameter&amp;amp;gt; will expand to the current value of the named parameter. This can be either a parameter from the device definition or a parameter from the set or get command.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Sonstiges notify Fenster:Window:.*,.*Low.Batt*. {\&lt;br /&gt;
 DebianMail(&#039;email@@email.domain&#039;,&#039;Subject&#039;,&#039;Text&#039;);;\&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in allen anderen Fällen muss die Maskierung entfallen:&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Sonstiges at *01:00:00 {\&lt;br /&gt;
 DebianMail(&#039;email@email.domain&#039;,&#039;Subject&#039;,&#039;Text&#039;);;\&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== BeagleBoard-xM ===&lt;br /&gt;
Auf einem [[:Kategorie:BeagleBoard-xM|BeagleBoard-xM]] mit einem [http://en.opensuse.org/HCL:BeagleBoard-xM OpenSUSE 12.2] kann man ebenfalls das Perl-Programm &#039;&#039;sendEmail&#039;&#039; wie beim RPi nutzen. Dies gibt es aber nicht in den Repositories von openSUSE, sondern man muss sich &#039;&#039;sendEmail&#039;&#039; als Source herunterladen. Das geht am einfachsten per &#039;&#039;wget&#039;&#039;, welches man ebenfalls erst installieren muss (aber aus einem Repository).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;$ zypper in wget&lt;br /&gt;
$ cd /opt&lt;br /&gt;
$ wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz&lt;br /&gt;
$ tar xvfz sendEmail-v1.56.tar.gz&lt;br /&gt;
$ cd sendEmail-v1.56&lt;br /&gt;
$ cp sendMail /usr/local/bin&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Dann geht man weiter vor wie unter RPi beschrieben (anlegen der SUB-Routine in 99_myUtils usw.).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Die Version 1.56 von &#039;&#039;sendEmail&#039;&#039; ist Stand Januar 2013 die aktuelle. Da diese Programmversion von 2009 stammt, ist mit neuen Versionen selten zu rechnen. Vielleicht schauen Sie trotzdem vorher auf der [http://caspian.dotconf.net/menu/Software/SendEmail/ Homepage von sendEmail] nach.&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
# Kopiere die Datei sendEmail.exe* in Dein FHEM Verzeichnis (hier c:\fhem-5.0\); Quelle: [http://caspian.dotconf.net/menu/Software/SendEmail/ http://caspian.dotconf.net/menu/Software/SendEmail/]&lt;br /&gt;
# Erstelle im FHEM Verzeichnis die Datei wmail.bat mit folgendem Inhalt (eine Zeile): &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;sendEmail -f absender@domain.de -u &amp;quot;%1&amp;quot; -m &amp;quot; &amp;quot; -s SMTP-SERVERAdresse -xu SMTP_USERNAME -xp SMTP_PASSWORT -t empfänger@domain.de -o message-header=&amp;quot;X-Message-Flag: FHEM&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Beispiel fhem.cfg&lt;br /&gt;
## Mail wenn sich der Status von Heizung.* oder Hzg.* ändert &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;define Mail_Heizung notify Heizung.*|Hzg.* { system(&amp;quot;wmail @:%&amp;quot;)}&amp;lt;/code&amp;gt;&lt;br /&gt;
## Mail bei Signal Aussentemperatur (für dieses Beispiel wird [http://fhem.de/commandref.html#getstate http://fhem.de/commandref.html#getstate getstate] benötigt) &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;define Mail_Aussentemperatur notify Aussentemperatur {\&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;my ($val);;\&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;$val = fhem &amp;quot;getstate @&amp;quot;;;\&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;system(&amp;quot;wmail \&amp;quot;@: $val\&amp;quot;&amp;quot;);;\&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Probleme ==&lt;br /&gt;
=== sendEmail ===&lt;br /&gt;
Falls man keine E-Mails verschicken kann, kann man in einem ersten Test prüfen, ob sendEmail als solches funktioniert und die Konfiguration (Benutzer, Passwort, Server-Name usw.) des Mail-Kontos, über das die Mails abgesetzt werden sollen, richtig ist.&lt;br /&gt;
&lt;br /&gt;
Hierzu setzt man in der FHEM-Befehlszeile die folgende Anweisung ab:&lt;br /&gt;
:&amp;lt;code&amp;gt;{ SUB-Routinen-Name(&#039;EMailAdresse@Mail.Domain&#039;,&#039;Test&#039;,&#039;Test-Text&#039;);; }&amp;lt;/code&amp;gt;&lt;br /&gt;
und ersetzt &#039;&#039;SUB-Routinen-Name&#039;&#039; durch den Namen der in 99_myUtils erzeugten Prozedur. Statt &#039;&#039;EMailAdresse@Mail.Domain&#039;&#039; trägt man noch eine gültige E-Mail-Adresse ein und bestätigt den Befehl dann mittels &amp;amp;lt;Enter&amp;amp;gt; (nicht &amp;quot;save&amp;quot;). Empfangen Sie nicht kurzfristig eine entsprechende E-Mail, ist sehr wahrscheinlich an den Zugangsdaten etwas verkehrt. &lt;br /&gt;
&lt;br /&gt;
Vor dem testen der Routine oben kann sendEmail auch über die Konsole (z.&amp;amp;nbsp;B. via Putty) getestet werden:&lt;br /&gt;
:&amp;lt;code&amp;gt;sendEmail -f &#039;fhemsystem@meinedomain.tld&#039; -t &#039;ich@meinedomain.tld&#039; -u &#039;subject&#039; -m &#039;body&#039; -s &#039;meinmailserver.meinedomain.de&#039; -xu &#039;fhemmailer&#039; -xp &#039;geheimespassword&#039; -o tls=no&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keine Mail mit TLS Verschlüsselung ===&lt;br /&gt;
Den Test über die Konsole durchführen. Erhält man folgende Fehlermeldung:&lt;br /&gt;
&#039;&#039;invalid SSL_version specified at /usr/share/perl5/IO/Socket/SSL.pm line 332&#039;&#039;&lt;br /&gt;
muss auf dem Raspberry folgende Datei angepasst werden: &#039;&#039;/usr/share/perl5/IO/Socket/SSL.pm&#039;&#039;.&lt;br /&gt;
In Zeile 1490 muss das $ am Ende entfernt werden: m{^(!?)(?:(SSL(?:v2|v3|v23|v2/3))|(TLSv1[12]?))$}i&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Email laut Log gesendet aber nicht angekommen? ==&lt;br /&gt;
Dann bitte in der Fritzbox Oberfläche überpüfen, ob unter &amp;quot;System&amp;quot; -&amp;gt; &amp;quot;Push Service&amp;quot; selbiger eingerichtet und aktiviert wurde. &lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
[[Kategorie:FritzBox]]&lt;br /&gt;
[[Kategorie:BeagleBoard-xM]]&lt;br /&gt;
[[Kategorie:Raspberry Pi]]&lt;/div&gt;</summary>
		<author><name>Suelle</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-LC-Dim1L-Pl-2_Funk-Zwischenstecker-Dimmaktor_1fach_Phasenanschnitt&amp;diff=4069</id>
		<title>HM-LC-Dim1L-Pl-2 Funk-Zwischenstecker-Dimmaktor 1fach Phasenanschnitt</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-LC-Dim1L-Pl-2_Funk-Zwischenstecker-Dimmaktor_1fach_Phasenanschnitt&amp;diff=4069"/>
		<updated>2013-12-28T14:16:02Z</updated>

		<summary type="html">&lt;p&gt;Suelle: /* FHEM Config-Auszug */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;HomeMatic HM-LC-Dim1L-Pl-2 Funk-Zwischenstecker-Dimmaktor 1fach Phasenanschnitt&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
HomeMatic Funk-Zwischenstecker-Dimmaktor 1fach, Phasenanschnitt&lt;br /&gt;
&lt;br /&gt;
= Features =&lt;br /&gt;
&lt;br /&gt;
Dimmen eines angeschlossenen Verbrauchers mittels CUL/CUN/HMLAN Konfigurator.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Technische Daten:&#039;&#039;&#039;&lt;br /&gt;
* Anschlussleistung: 25 - 250 VA&lt;br /&gt;
* Standby Verbrauch: 0,5W&lt;br /&gt;
* Schutzart: IP20&lt;br /&gt;
* Farbe: Reinweiß mit silberner Blende&lt;br /&gt;
* Maße(HxBxT): 125x63x40mm&lt;br /&gt;
&lt;br /&gt;
= Hinweise zum Betrieb mit FHEM =&lt;br /&gt;
&lt;br /&gt;
Das Pairing sollte wie in [[HomeMatic Devices pairen]] beschrieben durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
== FHEM Config-Auszug ==&lt;br /&gt;
&lt;br /&gt;
Ein exemplarischer Auszug aus der fhem.cfg:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define &amp;lt;name&amp;gt; CUL_HM 208xxx&lt;br /&gt;
attr &amp;lt;name&amp;gt; .devInfo 010100&lt;br /&gt;
attr &amp;lt;name&amp;gt; .stc 20&lt;br /&gt;
attr &amp;lt;name&amp;gt; autoReadReg 4_reqStatus&lt;br /&gt;
attr &amp;lt;name&amp;gt; expert 2_full&lt;br /&gt;
attr &amp;lt;name&amp;gt; firmware 2.3&lt;br /&gt;
attr &amp;lt;name&amp;gt; model HM-LC-Dim1L-Pl-2&lt;br /&gt;
attr &amp;lt;name&amp;gt; peerIDs 00000000,00005301,00005302,&lt;br /&gt;
attr &amp;lt;name&amp;gt; serialNr KEQ020xxxx&lt;br /&gt;
attr &amp;lt;name&amp;gt; subType dimmer&lt;br /&gt;
attr &amp;lt;name&amp;gt; webCmd on:off:pct&lt;br /&gt;
define FileLog_&amp;lt;name&amp;gt; FileLog ./log/&amp;lt;name&amp;gt;-%Y.log &amp;lt;name&amp;gt;&lt;br /&gt;
attr FileLog_&amp;lt;name&amp;gt; logtype text&lt;br /&gt;
attr FileLog_&amp;lt;name&amp;gt; room CUL_HM&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mögliche Dimmoperationen == &lt;br /&gt;
&lt;br /&gt;
Der Dimmaktor versteht folgende Aktionen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set &amp;lt;name&amp;gt; on                          		# schaltet den Aktor ein&lt;br /&gt;
set &amp;lt;name&amp;gt; off                         		# schaltet den Aktor aus&lt;br /&gt;
set &amp;lt;name&amp;gt; toggle                      		# schaltet den Aktor um&lt;br /&gt;
set &amp;lt;name&amp;gt; on-for-timer &amp;lt;sec&amp;gt;          		# schaltet den Aktor für &amp;lt;sec&amp;gt; ein&lt;br /&gt;
set &amp;lt;name&amp;gt; on-till &amp;lt;time&amp;gt;    			# schaltet den Aktor bis &amp;lt;time&amp;gt; ein (hh:mm:ss)&lt;br /&gt;
set &amp;lt;name&amp;gt; &amp;lt;value&amp;gt; [&amp;lt;on-time&amp;gt;] [&amp;lt;ramp-time&amp;gt;]	# schaltet den Aktor auf &amp;lt;value&amp;gt; Prozent, &amp;lt;on-time&amp;gt; und &amp;lt;ramp-time&amp;gt; sind optional&lt;br /&gt;
&lt;br /&gt;
# Beispiele&lt;br /&gt;
set &amp;lt;name&amp;gt; 50 0 60 	# der Aktor dimmt in 60 Sekunden auf 50%&lt;br /&gt;
set &amp;lt;name&amp;gt; 75 300 180 	# der Aktor dimmt in 180 Sekunden auf 75% und bleibt 5 Minuten an&lt;br /&gt;
set &amp;lt;name&amp;gt; 0 0 600	# der Aktor dimmt in 10 Minuten herunter (muss vorer eine Wert &amp;gt;0 haben) bis er aus ist&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Log-Auszug ==&lt;br /&gt;
In FHEM ist nach dem Schalten des HM-LC-Dim1L-Pl-2 folgendes Log zu sehen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2013-12-28_14:35:29 &amp;lt;name&amp;gt; set_on&lt;br /&gt;
2013-12-28_14:35:29 &amp;lt;name&amp;gt; level: 100 %&lt;br /&gt;
2013-12-28_14:35:29 &amp;lt;name&amp;gt; pct: 100&lt;br /&gt;
2013-12-28_14:35:29 &amp;lt;name&amp;gt; deviceMsg: on (to HMLAN)&lt;br /&gt;
2013-12-28_14:35:29 &amp;lt;name&amp;gt; on&lt;br /&gt;
2013-12-28_14:35:29 &amp;lt;name&amp;gt; timedOn: off&lt;br /&gt;
2013-12-28_14:35:29 &amp;lt;name&amp;gt; dim: stop:on&lt;br /&gt;
2013-12-28_14:35:29 &amp;lt;name&amp;gt; overload: off&lt;br /&gt;
2013-12-28_14:35:29 &amp;lt;name&amp;gt; overheat: off&lt;br /&gt;
2013-12-28_14:35:29 &amp;lt;name&amp;gt; reduced: off&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Probleme ==&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
Anleitung:  [http://www.elv-downloads.de/Assets/Produkte/7/767/76797/Downloads/76797_HM-LC-Sw1-Pl-2_UM_GE_eQ-3_120723_um.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;br /&gt;
[[Kategorie:Dimmer]]&lt;/div&gt;</summary>
		<author><name>Suelle</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-LC-Dim1L-Pl-2_Funk-Zwischenstecker-Dimmaktor_1fach_Phasenanschnitt&amp;diff=4068</id>
		<title>HM-LC-Dim1L-Pl-2 Funk-Zwischenstecker-Dimmaktor 1fach Phasenanschnitt</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-LC-Dim1L-Pl-2_Funk-Zwischenstecker-Dimmaktor_1fach_Phasenanschnitt&amp;diff=4068"/>
		<updated>2013-12-28T14:14:22Z</updated>

		<summary type="html">&lt;p&gt;Suelle: /* Log-Auszug */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;HomeMatic HM-LC-Dim1L-Pl-2 Funk-Zwischenstecker-Dimmaktor 1fach Phasenanschnitt&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
HomeMatic Funk-Zwischenstecker-Dimmaktor 1fach, Phasenanschnitt&lt;br /&gt;
&lt;br /&gt;
= Features =&lt;br /&gt;
&lt;br /&gt;
Dimmen eines angeschlossenen Verbrauchers mittels CUL/CUN/HMLAN Konfigurator.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Technische Daten:&#039;&#039;&#039;&lt;br /&gt;
* Anschlussleistung: 25 - 250 VA&lt;br /&gt;
* Standby Verbrauch: 0,5W&lt;br /&gt;
* Schutzart: IP20&lt;br /&gt;
* Farbe: Reinweiß mit silberner Blende&lt;br /&gt;
* Maße(HxBxT): 125x63x40mm&lt;br /&gt;
&lt;br /&gt;
= Hinweise zum Betrieb mit FHEM =&lt;br /&gt;
&lt;br /&gt;
Das Pairing sollte wie in [[HomeMatic Devices pairen]] beschrieben durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
== FHEM Config-Auszug ==&lt;br /&gt;
&lt;br /&gt;
Ein exemplarischer Auszug aus der fhem.cfg:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt; bitte ergänzen &amp;gt;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mögliche Dimmoperationen == &lt;br /&gt;
&lt;br /&gt;
Der Dimmaktor versteht folgende Aktionen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set &amp;lt;name&amp;gt; on                          		# schaltet den Aktor ein&lt;br /&gt;
set &amp;lt;name&amp;gt; off                         		# schaltet den Aktor aus&lt;br /&gt;
set &amp;lt;name&amp;gt; toggle                      		# schaltet den Aktor um&lt;br /&gt;
set &amp;lt;name&amp;gt; on-for-timer &amp;lt;sec&amp;gt;          		# schaltet den Aktor für &amp;lt;sec&amp;gt; ein&lt;br /&gt;
set &amp;lt;name&amp;gt; on-till &amp;lt;time&amp;gt;    			# schaltet den Aktor bis &amp;lt;time&amp;gt; ein (hh:mm:ss)&lt;br /&gt;
set &amp;lt;name&amp;gt; &amp;lt;value&amp;gt; [&amp;lt;on-time&amp;gt;] [&amp;lt;ramp-time&amp;gt;]	# schaltet den Aktor auf &amp;lt;value&amp;gt; Prozent, &amp;lt;on-time&amp;gt; und &amp;lt;ramp-time&amp;gt; sind optional&lt;br /&gt;
&lt;br /&gt;
# Beispiele&lt;br /&gt;
set &amp;lt;name&amp;gt; 50 0 60 	# der Aktor dimmt in 60 Sekunden auf 50%&lt;br /&gt;
set &amp;lt;name&amp;gt; 75 300 180 	# der Aktor dimmt in 180 Sekunden auf 75% und bleibt 5 Minuten an&lt;br /&gt;
set &amp;lt;name&amp;gt; 0 0 600	# der Aktor dimmt in 10 Minuten herunter (muss vorer eine Wert &amp;gt;0 haben) bis er aus ist&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Log-Auszug ==&lt;br /&gt;
In FHEM ist nach dem Schalten des HM-LC-Dim1L-Pl-2 folgendes Log zu sehen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2013-12-28_14:35:29 &amp;lt;name&amp;gt; set_on&lt;br /&gt;
2013-12-28_14:35:29 &amp;lt;name&amp;gt; level: 100 %&lt;br /&gt;
2013-12-28_14:35:29 &amp;lt;name&amp;gt; pct: 100&lt;br /&gt;
2013-12-28_14:35:29 &amp;lt;name&amp;gt; deviceMsg: on (to HMLAN)&lt;br /&gt;
2013-12-28_14:35:29 &amp;lt;name&amp;gt; on&lt;br /&gt;
2013-12-28_14:35:29 &amp;lt;name&amp;gt; timedOn: off&lt;br /&gt;
2013-12-28_14:35:29 &amp;lt;name&amp;gt; dim: stop:on&lt;br /&gt;
2013-12-28_14:35:29 &amp;lt;name&amp;gt; overload: off&lt;br /&gt;
2013-12-28_14:35:29 &amp;lt;name&amp;gt; overheat: off&lt;br /&gt;
2013-12-28_14:35:29 &amp;lt;name&amp;gt; reduced: off&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Probleme ==&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
Anleitung:  [http://www.elv-downloads.de/Assets/Produkte/7/767/76797/Downloads/76797_HM-LC-Sw1-Pl-2_UM_GE_eQ-3_120723_um.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;br /&gt;
[[Kategorie:Dimmer]]&lt;/div&gt;</summary>
		<author><name>Suelle</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-LC-Dim1L-Pl-2_Funk-Zwischenstecker-Dimmaktor_1fach_Phasenanschnitt&amp;diff=4067</id>
		<title>HM-LC-Dim1L-Pl-2 Funk-Zwischenstecker-Dimmaktor 1fach Phasenanschnitt</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-LC-Dim1L-Pl-2_Funk-Zwischenstecker-Dimmaktor_1fach_Phasenanschnitt&amp;diff=4067"/>
		<updated>2013-12-28T14:12:00Z</updated>

		<summary type="html">&lt;p&gt;Suelle: /* Mögliche Dimmoperationen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;HomeMatic HM-LC-Dim1L-Pl-2 Funk-Zwischenstecker-Dimmaktor 1fach Phasenanschnitt&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
HomeMatic Funk-Zwischenstecker-Dimmaktor 1fach, Phasenanschnitt&lt;br /&gt;
&lt;br /&gt;
= Features =&lt;br /&gt;
&lt;br /&gt;
Dimmen eines angeschlossenen Verbrauchers mittels CUL/CUN/HMLAN Konfigurator.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Technische Daten:&#039;&#039;&#039;&lt;br /&gt;
* Anschlussleistung: 25 - 250 VA&lt;br /&gt;
* Standby Verbrauch: 0,5W&lt;br /&gt;
* Schutzart: IP20&lt;br /&gt;
* Farbe: Reinweiß mit silberner Blende&lt;br /&gt;
* Maße(HxBxT): 125x63x40mm&lt;br /&gt;
&lt;br /&gt;
= Hinweise zum Betrieb mit FHEM =&lt;br /&gt;
&lt;br /&gt;
Das Pairing sollte wie in [[HomeMatic Devices pairen]] beschrieben durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
== FHEM Config-Auszug ==&lt;br /&gt;
&lt;br /&gt;
Ein exemplarischer Auszug aus der fhem.cfg:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt; bitte ergänzen &amp;gt;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mögliche Dimmoperationen == &lt;br /&gt;
&lt;br /&gt;
Der Dimmaktor versteht folgende Aktionen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set &amp;lt;name&amp;gt; on                          		# schaltet den Aktor ein&lt;br /&gt;
set &amp;lt;name&amp;gt; off                         		# schaltet den Aktor aus&lt;br /&gt;
set &amp;lt;name&amp;gt; toggle                      		# schaltet den Aktor um&lt;br /&gt;
set &amp;lt;name&amp;gt; on-for-timer &amp;lt;sec&amp;gt;          		# schaltet den Aktor für &amp;lt;sec&amp;gt; ein&lt;br /&gt;
set &amp;lt;name&amp;gt; on-till &amp;lt;time&amp;gt;    			# schaltet den Aktor bis &amp;lt;time&amp;gt; ein (hh:mm:ss)&lt;br /&gt;
set &amp;lt;name&amp;gt; &amp;lt;value&amp;gt; [&amp;lt;on-time&amp;gt;] [&amp;lt;ramp-time&amp;gt;]	# schaltet den Aktor auf &amp;lt;value&amp;gt; Prozent, &amp;lt;on-time&amp;gt; und &amp;lt;ramp-time&amp;gt; sind optional&lt;br /&gt;
&lt;br /&gt;
# Beispiele&lt;br /&gt;
set &amp;lt;name&amp;gt; 50 0 60 	# der Aktor dimmt in 60 Sekunden auf 50%&lt;br /&gt;
set &amp;lt;name&amp;gt; 75 300 180 	# der Aktor dimmt in 180 Sekunden auf 75% und bleibt 5 Minuten an&lt;br /&gt;
set &amp;lt;name&amp;gt; 0 0 600	# der Aktor dimmt in 10 Minuten herunter (muss vorer eine Wert &amp;gt;0 haben) bis er aus ist&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Log-Auszug ==&lt;br /&gt;
In FHEM ist nach dem Schalten des HM-LC-Dim1L-Pl-2 folgendes Log zu sehen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt; bitte ergänzen &amp;gt;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Probleme ==&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
Anleitung:  [http://www.elv-downloads.de/Assets/Produkte/7/767/76797/Downloads/76797_HM-LC-Sw1-Pl-2_UM_GE_eQ-3_120723_um.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;br /&gt;
[[Kategorie:Dimmer]]&lt;/div&gt;</summary>
		<author><name>Suelle</name></author>
	</entry>
</feed>