<?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=Svenson08</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=Svenson08"/>
	<link rel="alternate" type="text/html" href="http://wiki.fhem.de/wiki/Spezial:Beitr%C3%A4ge/Svenson08"/>
	<updated>2026-05-02T22:09:22Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Knxd&amp;diff=21454</id>
		<title>Knxd</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Knxd&amp;diff=21454"/>
		<updated>2017-05-07T15:13:21Z</updated>

		<summary type="html">&lt;p&gt;Svenson08: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= knxd mit einem IP Gateway einrichten =&lt;br /&gt;
Damit FHEM auf den KNX Bus zugreifen kann, benötigt man ein passendes Interface&lt;br /&gt;
&lt;br /&gt;
Es gibt:&lt;br /&gt;
&lt;br /&gt;
* RS232&lt;br /&gt;
* USB&lt;br /&gt;
* IP&lt;br /&gt;
&lt;br /&gt;
Ich beschreibe die Einrichtung von knxd mit einem IP Gateway auf einen Raspberry Pi2 mit Wheezy oder Jessie.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. als erstes müssen folgende Pakete installiert werden (Referenz Debian Jessie):&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;sudo apt-get update&lt;br /&gt;
sudo apt-get install debhelper cdbs automake libtool libusb-1.0-0-dev git-core build-essential libsystemd-daemon-dev dh-systemd libev-dev&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.1 als erstes müssen folgende Pakete installiert werden (Referenz Debian Stretch):&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;sudo apt-get update&lt;br /&gt;
sudo apt-get install debhelper cdbs automake libtool libusb-1.0-0-dev git-core build-essential libsystemd-dev dh-systemd libev-dev cmake&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Bei Debian Jessie-Lite fehlt noch mehr)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. knxd herunterladen und installieren&#039;&#039;&#039;&lt;br /&gt;
Achtung: Wenn Abhängigkeiten fehlen, dann installiere diese nach. Nicht einfach mittels &amp;quot;-d&amp;quot; diese übergehen!&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git clone https://github.com/knxd/knxd.git&lt;br /&gt;
cd knxd&lt;br /&gt;
git checkout stable&lt;br /&gt;
dpkg-buildpackage -b -uc&lt;br /&gt;
cd ..&lt;br /&gt;
sudo dpkg -i knxd_*.deb knxd-tools_*.deb&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Konfiguration ==&lt;br /&gt;
&#039;&#039;&#039;1. Ohne systemd&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
es muss als nächstes die Konfigurationsdatei editiert werden.&lt;br /&gt;
&lt;br /&gt;
das geht mit:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/default/knxd &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
dann folgende Einträge anpassen:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
DAEMON_ARGS=&amp;quot;-u /tmp/eib -u /var/run/knx -i -b ipt:192.168.188.XX&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
und&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
START_KNXD=YES&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2. Mit systemd z. B. für Debian Jessie&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Konfigurationsdatei bei Jessie hat sich wegen der Nutzung von systemd geändert:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/knxd.conf &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
dann folgende Einträge anpassen:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
KNXD_OPTS=&amp;quot;-u /tmp/eib -u /var/run/knx -b ipt:192.168.188.XX&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
und&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
START_KNXD=YES&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
== knxd Status überprüfen ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/etc/init.d/knxd status&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
&#039;&#039;&#039;Wie wird eibd vorher deinstalliert?&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo rm -r /usr/local/bin/{eibd,knxtool,group*} /usr/local/lib/lib{eib,pthsem}*.so* /usr/local/include/pth*&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;folgender Fehler: dpkg-buildpackage: Fehler: Fehler-Exitstatus von debian/rules build war 2&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install git-core build-essential&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fehler: dpkg-buildpackage: error: fakeroot not found, either install the fakeroot &amp;lt;....&amp;gt; &#039;&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install fakeroot dpkg-dev&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
[[Benutzer:Marthinx]]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/knxd/knxd Github knxd]&lt;br /&gt;
&lt;br /&gt;
[https://knx-user-forum.de/forum/projektforen/knxd/1049547-grundlagen-zum-knxd-mit-installationsanleitung-vor-dem-schreiben-lesen Forums-Thread zu knxd. Sehr informativ.]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Examples]]&lt;br /&gt;
[[Kategorie:EIB/KNX]]&lt;/div&gt;</summary>
		<author><name>Svenson08</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Homebridge_User_Configs&amp;diff=19794</id>
		<title>Homebridge User Configs</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Homebridge_User_Configs&amp;diff=19794"/>
		<updated>2017-02-12T18:37:44Z</updated>

		<summary type="html">&lt;p&gt;Svenson08: /* Homematic HM-CC-RT-DN Funk-Heizkörperthermostat */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dieser Eintrag dient zur Sammlung funktionsfähiger Homebridge Configs.&lt;br /&gt;
&lt;br /&gt;
Bitte immer die FHEM Version und Homebridge Version angegeben.&lt;br /&gt;
&lt;br /&gt;
Sehr gute Hinweise gibt es hier: http://www.meintechblog.de/2015/10/mit-siri-und-fhem-das-gesamte-smart-home-per-stimme-steuern/&lt;br /&gt;
== Feuchtesensor ==&lt;br /&gt;
Zum Einstieg etwas leicht nachvollziehbares. &lt;br /&gt;
&lt;br /&gt;
Feuchtesensoren haben in der Regel ein &amp;quot;humidity&amp;quot; Reading, im Falle des Opus XT300 Bodenfeuchtesensors auch Temperatur und Batterie Level. Homekit unterstützt einen &amp;quot;HumiditySensor&amp;quot; Service. Dieser ist in homebridge-fhem nicht standardmäßig vorhanden (kann also nicht aus dem dropdown ausgewählt werden, sondern muss über das Befehlsfeld zugewiesen werden):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;attr meinSensor genericDeviceType HumiditySensor&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im nächsten Schritt werden die Readings gemappt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;attr meinSensor homebridgeMapping clear CurrentRelativeHumidity=humidity StatusLowBattery=battery,values=ok:BATTERY_LEVEL_NORMAL;;/^.*/:BATTERY_LEVEL_LOW CurrentTemperature=temperature&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;clear&amp;lt;/code&amp;gt;löscht default mappings - das wird in der Regel nicht notwendig sein, schadet aber nicht&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;CurrentRelativeHumidity&amp;lt;/code&amp;gt; ist die relevante Homekit Characteristic - wird mit dem entsprechenden Reading des Sensors gemappt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;StatusLowBattery&amp;lt;/code&amp;gt; erwartet entweder BATTERY_LEVEL_NORMAL oder _LOW. Mein Sensor liefert ok zurück, wenn alles gut ist, also wird &amp;quot;ok&amp;quot; auf _NORMAL gemappt, alles andere auf _LOW. &lt;br /&gt;
&lt;br /&gt;
Der Opus XT300 Bodenfeuchtesensors liefert auch noch die Temperatur - der HumiditySensor Service sieht das eigentlich nicht vor, daher wird die Temperatur auch nicht in der Apple &amp;quot;Home&amp;quot; App angezeigt. Bei Eve wird die Temperatur hingegen berücksichtigt.&lt;br /&gt;
&lt;br /&gt;
== EnOcean STM 250 Tür-/Fensterkontakt ==&lt;br /&gt;
Der STM 250 liefert als Status in FHEM &amp;lt;code&amp;gt;open&amp;lt;/code&amp;gt;, wenn das Fenster offen und damit der Kontakt &amp;quot;offen&amp;quot; ist. Analog liefert er &amp;lt;code&amp;gt;closed&amp;lt;/code&amp;gt; wenn das Fenster geschlossen und damit auch der Kontakt geschlossen ist. Diese Statusangaben sind sehr intuitiv zu verstehen und zu interpretieren. &lt;br /&gt;
&lt;br /&gt;
Die characteristic &amp;lt;code&amp;gt;ContactSensorState&amp;lt;/code&amp;gt; von HomeKit liefert entweder den Wert &amp;lt;code&amp;gt;CONTACT_DETECTED=0&amp;lt;/code&amp;gt; oder &amp;lt;code&amp;gt;CONTACT_NOT_DETECTED=1&amp;lt;/code&amp;gt; zurück. Wobei &amp;lt;code&amp;gt;CONTACT_DETECTED&amp;lt;/code&amp;gt; bedeutet, dass der Kontakt geschlossen ist. Je nach Darstellung in der HomeKit-fähigen App muss dieses Verhalten bei der Interpretation berücksichtigt werden. Die App Eve von Elgato zum Beispiel liefert für Kontaktsensoren &amp;quot;JA&amp;quot; oder &amp;quot;NEIN&amp;quot; mit der Bedeutung &amp;lt;code&amp;gt;CONTACT_DETECTED=0=JA&amp;lt;/code&amp;gt; bzw. &amp;lt;code&amp;gt;CONTACT_NOT_DETECTED=1=NEIN&amp;lt;/code&amp;gt; zurück.&lt;br /&gt;
&lt;br /&gt;
Noch ein wichtiger Punkt: Um einen Sensorkontakt sinnvoll einzurichten sollte als zusätzlicher Wert für das Attribut &amp;lt;code&amp;gt;genericdeviceType&amp;lt;/code&amp;gt; der Wert &amp;lt;code&amp;gt;ContactSensor&amp;lt;/code&amp;gt; hinzugefügt werden. Wie das geht ist im Eintrag [[Homebridge_einrichten#FHEM_konfigurieren | Homebridge einrichten]] ausführlicher beschrieben.&lt;br /&gt;
&lt;br /&gt;
Folgende Attribute dann hinzufügen:&lt;br /&gt;
 attr STM250 genericDeviceType ContactSensor&lt;br /&gt;
 attr STM250 homebridgeMapping ContactSensorState=state,values=closed:CONTACT_DETECTED;open:CONTACT_NOT_DETECTED&lt;br /&gt;
&lt;br /&gt;
Getestet mit&lt;br /&gt;
 FHEM 5.7 Rev. 9893&lt;br /&gt;
 Homebridge 0.2.16&lt;br /&gt;
 homebridge-fhem Vorschauversion aus [http://forum.fhem.de/index.php/topic,48558.msg402024.html#msg402024 homebridge/homekit]&lt;br /&gt;
&lt;br /&gt;
== Modul RESIDENTS für Anwesenheitserkennung und Steuerung der Anwesenheit benutzen ==&lt;br /&gt;
[[Datei:Homebridge_bewohner_zu_szene.jpeg|mini|Schaltzustand eines Bewohners zu einer Szene hinzufügen]]&lt;br /&gt;
Aus den einzelnen Komponenten des Moduls RESIDENTS, homebridge sowie der characteristic &amp;lt;code&amp;gt;On&amp;lt;/code&amp;gt; und der Szenensteuerung lässt sich eine gleichzeitige Steuerung der Anwesenheit und Anwesenheitserkennung basteln.&lt;br /&gt;
&lt;br /&gt;
Dazu müssen folgende Schritte unternommen werden:&lt;br /&gt;
* einem Bewohner aus dem Modul ROOMMATE die Steuerung über homebridgeMapping hinzufügen&lt;br /&gt;
* Szene für &amp;quot;Ich bin zu Hause&amp;quot; und &amp;quot;Ich gehe jetzt&amp;quot; in einer HomeKit-fähigen App wie z.B. Eve einrichten&lt;br /&gt;
&lt;br /&gt;
Man kann einen beliebigen Bewohner aus dem Modul ROOMMATE nehmen und ihn über die characteristic &amp;lt;code&amp;gt;On&amp;lt;/code&amp;gt; in Form eines Schalters sozusagen schaltbar machen. Nur wird das Ein- und Ausschalten des Bewohners über HomeKit in FHEM auf den Status home bzw. absent gemappt. Seit dem 06.02.2016 werden RESIDENTS automatisch als Occupancy Sensor für HomeKit annonciert. Nun noch die Attribute des ROOMMATE wie folgt setzen:&lt;br /&gt;
 attr &amp;lt;ROOMMATE&amp;gt; genericDeviceType switch&lt;br /&gt;
 attr &amp;lt;ROOMMATE&amp;gt; homebridgeMapping On=state,valueOn=/home|awoken|asleep|gotosleep/,valueOff=/gone|absent/,cmdOn=home,cmdOff=absent&lt;br /&gt;
&lt;br /&gt;
Natürlich muss der Bewohner noch dem Filter von homebridge hinzugefügt und homebridge neu gestartet werden.&lt;br /&gt;
&lt;br /&gt;
Anschließend geht es in der HomeKit-fähigen App Deiner Wahl weiter. In Eve von Elgato ist von vornherein zum Beispiel vorgesehen, dass man zwei Szenen &amp;quot;Ich bin zuhause&amp;quot; und &amp;quot;Ich verlasse das Haus&amp;quot; hat. Zu diesen Szenen wird eine Aktion hinzugefügt indem der Bewohner, den das ROOMMATE-Modul meldet zur Szene hinzugefügt wird und beim Nachhausekommen &amp;quot;eingeschaltet&amp;quot; wird. Genauso wird mit der Szene &amp;quot;Ich verlasse das Haus&amp;quot; verfahren: Bewohner zur Szene hinzufügen und den Schaltvorgang auf &amp;quot;ausschalten&amp;quot; setzen.&lt;br /&gt;
&lt;br /&gt;
Mit den Sprachbefehlen &amp;quot;Ich bin zuhause&amp;quot; oder &amp;quot;Ich verlasse das Haus&amp;quot; wird die entsprechende Szene eingeschaltet, homebridge schaltet über das &amp;lt;code&amp;gt;homebridgeMapping&amp;lt;/code&amp;gt; Attribut dann den Bewohner auf &amp;quot;home&amp;quot; oder &amp;quot;absent&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Getestet mit&lt;br /&gt;
 FHEM 5.7 Rev. 9893&lt;br /&gt;
 Homebridge 0.2.16&lt;br /&gt;
 homebridge-fhem Vorschauversion aus [http://forum.fhem.de/index.php/topic,48558.msg402024.html#msg402024 homebridge/homekit]&lt;br /&gt;
&lt;br /&gt;
== ZWave Türschloss Vision ZM1701 einbinden ==&lt;br /&gt;
Das ZWave Türschloss ZM1701 von der Firma Vision sendet seinen aktuellen Schließstatus in ein einzelnes Reading wie &amp;quot;lock&amp;quot;, sondern schickt eine ganze Reihe von Informationen über den Zustand in das Reading &amp;lt;code&amp;gt;doorLockOperation&amp;lt;/code&amp;gt;. Das Schließen und Öffnen der Türschlosses wird auch nicht mit einem Setzen des &amp;lt;code&amp;gt;state&amp;lt;/code&amp;gt; erreicht, sondern mit dem Setzen von &amp;lt;code&amp;gt;doorLockOperation&amp;lt;/code&amp;gt;. Das macht das Einbinden in homebridge nicht trivial, funktioniert aber über folgendes Homebridge-Mapping:&lt;br /&gt;
 attr &amp;lt;ZM1701&amp;gt; genericDeviceType lock&lt;br /&gt;
 attr &amp;lt;ZM1701&amp;gt; homebridgeMapping LockCurrentState=doorLockOperation,values=/\ssecured/:SECURED;/unsecured/:UNSECURED LockTargetState=doorLockOperation,values=/\ssecured/:SECURED;/unsecured/:UNSECURED,cmds=SECURED:doorLockOperation+close;UNSECURED:doorLockOperation+open&lt;br /&gt;
&lt;br /&gt;
Kurz zur Erklärung: Um ein Schloss über HomeKit steuern zu können braucht es zwei characteristics. LockCurrentState zeigt an, ob das Schloss geöffnet oder geschlossen ist. Und mit LockTargetState wird das Schloss geöffnet oder geschlossen. Damit der aktuelle Status des Schlosses ausgelesen werden kann, muss aus dem FHEM-Reading &amp;lt;code&amp;gt;doorLockOperation&amp;lt;/code&amp;gt; die Zeichenfolge &amp;lt;code&amp;gt; secured&amp;lt;/code&amp;gt; oder &amp;lt;code&amp;gt;unsecured&amp;lt;/code&amp;gt; extrahiert werden, daher die beiden regulären Ausdrücke &amp;lt;code&amp;gt;/\ssecured/&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;/unsecured/&amp;lt;/code&amp;gt;. In der characteristic &amp;lt;code&amp;gt;LockTargetState&amp;lt;/code&amp;gt; muss sowohl der aktuelle Status des Schlosses als auch das Kommando angegeben werden, schließlich möchte man ein geschlossenes Schloss nicht nochmal schließen. Daher wird erst aus dem Reading &amp;lt;code&amp;gt;doorLockOperation&amp;lt;/code&amp;gt; der aktuelle Status des Schlosses ausgelesen und die damit korrespondierenden Befehle über &amp;lt;code&amp;gt;cmds=SECURED:doorLockOperation+close;UNSECURED:doorLockOperation+open&amp;lt;/code&amp;gt; generiert.&lt;br /&gt;
&lt;br /&gt;
Wer es in FHEM über ein webCmd einfacher zu bedienen haben möchte, fügt bitte noch die dafür notwendigen Attribute und die leicht geänderten homebridgeMappings wie folgt ein:&lt;br /&gt;
 attr &amp;lt;ZM1701&amp;gt; genericDeviceType lock&lt;br /&gt;
 attr &amp;lt;ZM1701&amp;gt; homebridgeMapping LockCurrentState=doorLockOperation,values=/\ssecured/:SECURED;/unsecured/:UNSECURED LockTargetState=doorLockOperation,values=/\ssecured/:SECURED;/unsecured/:UNSECURED,cmds=SECURED:close;UNSECURED:open&lt;br /&gt;
 attr &amp;lt;ZM1701&amp;gt; /doorLockOperation open:open/doorLockOperation close:close&lt;br /&gt;
 attr &amp;lt;ZM1701&amp;gt; webCmd open:close&lt;br /&gt;
&lt;br /&gt;
Getestet mit&lt;br /&gt;
 FHEM 5.7 Rev. 12191&lt;br /&gt;
 homebridge 0.4.6&lt;br /&gt;
 homebridge-fhem 0.2.48&lt;br /&gt;
&lt;br /&gt;
== Roomba über THINKINGCLEANER Modul ==&lt;br /&gt;
 attr &amp;lt;THINKINGCLEANER&amp;gt; genericDeviceType switch&lt;br /&gt;
 attr &amp;lt;THINKINGCLEANER&amp;gt; homebridgeMapping clear On=state,valueOn=/^(on|dock)/,cmdOn=on,cmdOff=off,nocache=1 ChargingState=deviceStatus,values=/(_recon|_full|_trickle)$/:CHARGING;/^.*/:NOT_CHARGING&lt;br /&gt;
 attr &amp;lt;THINKINGCLEANER&amp;gt; siriName Robby&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Getestet mit&lt;br /&gt;
 FHEM 5.7 Rev. 12680&lt;br /&gt;
 homebridge 0.4.11&lt;br /&gt;
 homebridge-fhem 0.2.66&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Homematic HM-CC-RT-DN Funk-Heizkörperthermostat ==&lt;br /&gt;
[[Datei:HM-CC-RT-DN-Eve.PNG|mini|Darstellung des HM-CC-RT-DN in der iOS App Eve]]&lt;br /&gt;
 attr &amp;lt;HMCCRTDN_Channel2_Clima&amp;gt; homebridgeMapping TargetTemperature=desired-temp::desired-temp,minValue=5,maxValue=35,minStep=0.5,nocache=1&lt;br /&gt;
                      CurrentTemperature=BU_Heizung_01_Clima:measured-temp,nocache=1&lt;br /&gt;
                      StatusLowBattery=BU_Heizung_01:battery,values=ok:BATTERY_LEVEL_NORMAL;;/^.*/:BATTERY_LEVEL_LOW&lt;br /&gt;
                      TargetHeatingCoolingState=heatingState,values=OFF:0;;HEAT:1;;COOL:2;;AUTO:3,cmds=OFF:controlManu+off;;HEAT:controlMode+boost;;AUTO:controlMode+auto;;COOL:controlManu+17.0&lt;br /&gt;
                      CurrentHeatingCoolingState=heatingState,values=OFF:0;;HEAT:1;;COOL:2;;AUTO:0,valud=OFF&lt;br /&gt;
 attr &amp;lt;HMCCRTDN_Channel2_Clima&amp;gt; siriName Robby&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
[[Kategorie:Code Snippets]]&lt;/div&gt;</summary>
		<author><name>Svenson08</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Homebridge_User_Configs&amp;diff=19793</id>
		<title>Homebridge User Configs</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Homebridge_User_Configs&amp;diff=19793"/>
		<updated>2017-02-12T18:37:19Z</updated>

		<summary type="html">&lt;p&gt;Svenson08: /* Homematic HM-CC-RT-DN Funk-Heizkörperthermostat */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dieser Eintrag dient zur Sammlung funktionsfähiger Homebridge Configs.&lt;br /&gt;
&lt;br /&gt;
Bitte immer die FHEM Version und Homebridge Version angegeben.&lt;br /&gt;
&lt;br /&gt;
Sehr gute Hinweise gibt es hier: http://www.meintechblog.de/2015/10/mit-siri-und-fhem-das-gesamte-smart-home-per-stimme-steuern/&lt;br /&gt;
== Feuchtesensor ==&lt;br /&gt;
Zum Einstieg etwas leicht nachvollziehbares. &lt;br /&gt;
&lt;br /&gt;
Feuchtesensoren haben in der Regel ein &amp;quot;humidity&amp;quot; Reading, im Falle des Opus XT300 Bodenfeuchtesensors auch Temperatur und Batterie Level. Homekit unterstützt einen &amp;quot;HumiditySensor&amp;quot; Service. Dieser ist in homebridge-fhem nicht standardmäßig vorhanden (kann also nicht aus dem dropdown ausgewählt werden, sondern muss über das Befehlsfeld zugewiesen werden):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;attr meinSensor genericDeviceType HumiditySensor&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im nächsten Schritt werden die Readings gemappt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;attr meinSensor homebridgeMapping clear CurrentRelativeHumidity=humidity StatusLowBattery=battery,values=ok:BATTERY_LEVEL_NORMAL;;/^.*/:BATTERY_LEVEL_LOW CurrentTemperature=temperature&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;clear&amp;lt;/code&amp;gt;löscht default mappings - das wird in der Regel nicht notwendig sein, schadet aber nicht&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;CurrentRelativeHumidity&amp;lt;/code&amp;gt; ist die relevante Homekit Characteristic - wird mit dem entsprechenden Reading des Sensors gemappt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;StatusLowBattery&amp;lt;/code&amp;gt; erwartet entweder BATTERY_LEVEL_NORMAL oder _LOW. Mein Sensor liefert ok zurück, wenn alles gut ist, also wird &amp;quot;ok&amp;quot; auf _NORMAL gemappt, alles andere auf _LOW. &lt;br /&gt;
&lt;br /&gt;
Der Opus XT300 Bodenfeuchtesensors liefert auch noch die Temperatur - der HumiditySensor Service sieht das eigentlich nicht vor, daher wird die Temperatur auch nicht in der Apple &amp;quot;Home&amp;quot; App angezeigt. Bei Eve wird die Temperatur hingegen berücksichtigt.&lt;br /&gt;
&lt;br /&gt;
== EnOcean STM 250 Tür-/Fensterkontakt ==&lt;br /&gt;
Der STM 250 liefert als Status in FHEM &amp;lt;code&amp;gt;open&amp;lt;/code&amp;gt;, wenn das Fenster offen und damit der Kontakt &amp;quot;offen&amp;quot; ist. Analog liefert er &amp;lt;code&amp;gt;closed&amp;lt;/code&amp;gt; wenn das Fenster geschlossen und damit auch der Kontakt geschlossen ist. Diese Statusangaben sind sehr intuitiv zu verstehen und zu interpretieren. &lt;br /&gt;
&lt;br /&gt;
Die characteristic &amp;lt;code&amp;gt;ContactSensorState&amp;lt;/code&amp;gt; von HomeKit liefert entweder den Wert &amp;lt;code&amp;gt;CONTACT_DETECTED=0&amp;lt;/code&amp;gt; oder &amp;lt;code&amp;gt;CONTACT_NOT_DETECTED=1&amp;lt;/code&amp;gt; zurück. Wobei &amp;lt;code&amp;gt;CONTACT_DETECTED&amp;lt;/code&amp;gt; bedeutet, dass der Kontakt geschlossen ist. Je nach Darstellung in der HomeKit-fähigen App muss dieses Verhalten bei der Interpretation berücksichtigt werden. Die App Eve von Elgato zum Beispiel liefert für Kontaktsensoren &amp;quot;JA&amp;quot; oder &amp;quot;NEIN&amp;quot; mit der Bedeutung &amp;lt;code&amp;gt;CONTACT_DETECTED=0=JA&amp;lt;/code&amp;gt; bzw. &amp;lt;code&amp;gt;CONTACT_NOT_DETECTED=1=NEIN&amp;lt;/code&amp;gt; zurück.&lt;br /&gt;
&lt;br /&gt;
Noch ein wichtiger Punkt: Um einen Sensorkontakt sinnvoll einzurichten sollte als zusätzlicher Wert für das Attribut &amp;lt;code&amp;gt;genericdeviceType&amp;lt;/code&amp;gt; der Wert &amp;lt;code&amp;gt;ContactSensor&amp;lt;/code&amp;gt; hinzugefügt werden. Wie das geht ist im Eintrag [[Homebridge_einrichten#FHEM_konfigurieren | Homebridge einrichten]] ausführlicher beschrieben.&lt;br /&gt;
&lt;br /&gt;
Folgende Attribute dann hinzufügen:&lt;br /&gt;
 attr STM250 genericDeviceType ContactSensor&lt;br /&gt;
 attr STM250 homebridgeMapping ContactSensorState=state,values=closed:CONTACT_DETECTED;open:CONTACT_NOT_DETECTED&lt;br /&gt;
&lt;br /&gt;
Getestet mit&lt;br /&gt;
 FHEM 5.7 Rev. 9893&lt;br /&gt;
 Homebridge 0.2.16&lt;br /&gt;
 homebridge-fhem Vorschauversion aus [http://forum.fhem.de/index.php/topic,48558.msg402024.html#msg402024 homebridge/homekit]&lt;br /&gt;
&lt;br /&gt;
== Modul RESIDENTS für Anwesenheitserkennung und Steuerung der Anwesenheit benutzen ==&lt;br /&gt;
[[Datei:Homebridge_bewohner_zu_szene.jpeg|mini|Schaltzustand eines Bewohners zu einer Szene hinzufügen]]&lt;br /&gt;
Aus den einzelnen Komponenten des Moduls RESIDENTS, homebridge sowie der characteristic &amp;lt;code&amp;gt;On&amp;lt;/code&amp;gt; und der Szenensteuerung lässt sich eine gleichzeitige Steuerung der Anwesenheit und Anwesenheitserkennung basteln.&lt;br /&gt;
&lt;br /&gt;
Dazu müssen folgende Schritte unternommen werden:&lt;br /&gt;
* einem Bewohner aus dem Modul ROOMMATE die Steuerung über homebridgeMapping hinzufügen&lt;br /&gt;
* Szene für &amp;quot;Ich bin zu Hause&amp;quot; und &amp;quot;Ich gehe jetzt&amp;quot; in einer HomeKit-fähigen App wie z.B. Eve einrichten&lt;br /&gt;
&lt;br /&gt;
Man kann einen beliebigen Bewohner aus dem Modul ROOMMATE nehmen und ihn über die characteristic &amp;lt;code&amp;gt;On&amp;lt;/code&amp;gt; in Form eines Schalters sozusagen schaltbar machen. Nur wird das Ein- und Ausschalten des Bewohners über HomeKit in FHEM auf den Status home bzw. absent gemappt. Seit dem 06.02.2016 werden RESIDENTS automatisch als Occupancy Sensor für HomeKit annonciert. Nun noch die Attribute des ROOMMATE wie folgt setzen:&lt;br /&gt;
 attr &amp;lt;ROOMMATE&amp;gt; genericDeviceType switch&lt;br /&gt;
 attr &amp;lt;ROOMMATE&amp;gt; homebridgeMapping On=state,valueOn=/home|awoken|asleep|gotosleep/,valueOff=/gone|absent/,cmdOn=home,cmdOff=absent&lt;br /&gt;
&lt;br /&gt;
Natürlich muss der Bewohner noch dem Filter von homebridge hinzugefügt und homebridge neu gestartet werden.&lt;br /&gt;
&lt;br /&gt;
Anschließend geht es in der HomeKit-fähigen App Deiner Wahl weiter. In Eve von Elgato ist von vornherein zum Beispiel vorgesehen, dass man zwei Szenen &amp;quot;Ich bin zuhause&amp;quot; und &amp;quot;Ich verlasse das Haus&amp;quot; hat. Zu diesen Szenen wird eine Aktion hinzugefügt indem der Bewohner, den das ROOMMATE-Modul meldet zur Szene hinzugefügt wird und beim Nachhausekommen &amp;quot;eingeschaltet&amp;quot; wird. Genauso wird mit der Szene &amp;quot;Ich verlasse das Haus&amp;quot; verfahren: Bewohner zur Szene hinzufügen und den Schaltvorgang auf &amp;quot;ausschalten&amp;quot; setzen.&lt;br /&gt;
&lt;br /&gt;
Mit den Sprachbefehlen &amp;quot;Ich bin zuhause&amp;quot; oder &amp;quot;Ich verlasse das Haus&amp;quot; wird die entsprechende Szene eingeschaltet, homebridge schaltet über das &amp;lt;code&amp;gt;homebridgeMapping&amp;lt;/code&amp;gt; Attribut dann den Bewohner auf &amp;quot;home&amp;quot; oder &amp;quot;absent&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Getestet mit&lt;br /&gt;
 FHEM 5.7 Rev. 9893&lt;br /&gt;
 Homebridge 0.2.16&lt;br /&gt;
 homebridge-fhem Vorschauversion aus [http://forum.fhem.de/index.php/topic,48558.msg402024.html#msg402024 homebridge/homekit]&lt;br /&gt;
&lt;br /&gt;
== ZWave Türschloss Vision ZM1701 einbinden ==&lt;br /&gt;
Das ZWave Türschloss ZM1701 von der Firma Vision sendet seinen aktuellen Schließstatus in ein einzelnes Reading wie &amp;quot;lock&amp;quot;, sondern schickt eine ganze Reihe von Informationen über den Zustand in das Reading &amp;lt;code&amp;gt;doorLockOperation&amp;lt;/code&amp;gt;. Das Schließen und Öffnen der Türschlosses wird auch nicht mit einem Setzen des &amp;lt;code&amp;gt;state&amp;lt;/code&amp;gt; erreicht, sondern mit dem Setzen von &amp;lt;code&amp;gt;doorLockOperation&amp;lt;/code&amp;gt;. Das macht das Einbinden in homebridge nicht trivial, funktioniert aber über folgendes Homebridge-Mapping:&lt;br /&gt;
 attr &amp;lt;ZM1701&amp;gt; genericDeviceType lock&lt;br /&gt;
 attr &amp;lt;ZM1701&amp;gt; homebridgeMapping LockCurrentState=doorLockOperation,values=/\ssecured/:SECURED;/unsecured/:UNSECURED LockTargetState=doorLockOperation,values=/\ssecured/:SECURED;/unsecured/:UNSECURED,cmds=SECURED:doorLockOperation+close;UNSECURED:doorLockOperation+open&lt;br /&gt;
&lt;br /&gt;
Kurz zur Erklärung: Um ein Schloss über HomeKit steuern zu können braucht es zwei characteristics. LockCurrentState zeigt an, ob das Schloss geöffnet oder geschlossen ist. Und mit LockTargetState wird das Schloss geöffnet oder geschlossen. Damit der aktuelle Status des Schlosses ausgelesen werden kann, muss aus dem FHEM-Reading &amp;lt;code&amp;gt;doorLockOperation&amp;lt;/code&amp;gt; die Zeichenfolge &amp;lt;code&amp;gt; secured&amp;lt;/code&amp;gt; oder &amp;lt;code&amp;gt;unsecured&amp;lt;/code&amp;gt; extrahiert werden, daher die beiden regulären Ausdrücke &amp;lt;code&amp;gt;/\ssecured/&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;/unsecured/&amp;lt;/code&amp;gt;. In der characteristic &amp;lt;code&amp;gt;LockTargetState&amp;lt;/code&amp;gt; muss sowohl der aktuelle Status des Schlosses als auch das Kommando angegeben werden, schließlich möchte man ein geschlossenes Schloss nicht nochmal schließen. Daher wird erst aus dem Reading &amp;lt;code&amp;gt;doorLockOperation&amp;lt;/code&amp;gt; der aktuelle Status des Schlosses ausgelesen und die damit korrespondierenden Befehle über &amp;lt;code&amp;gt;cmds=SECURED:doorLockOperation+close;UNSECURED:doorLockOperation+open&amp;lt;/code&amp;gt; generiert.&lt;br /&gt;
&lt;br /&gt;
Wer es in FHEM über ein webCmd einfacher zu bedienen haben möchte, fügt bitte noch die dafür notwendigen Attribute und die leicht geänderten homebridgeMappings wie folgt ein:&lt;br /&gt;
 attr &amp;lt;ZM1701&amp;gt; genericDeviceType lock&lt;br /&gt;
 attr &amp;lt;ZM1701&amp;gt; homebridgeMapping LockCurrentState=doorLockOperation,values=/\ssecured/:SECURED;/unsecured/:UNSECURED LockTargetState=doorLockOperation,values=/\ssecured/:SECURED;/unsecured/:UNSECURED,cmds=SECURED:close;UNSECURED:open&lt;br /&gt;
 attr &amp;lt;ZM1701&amp;gt; /doorLockOperation open:open/doorLockOperation close:close&lt;br /&gt;
 attr &amp;lt;ZM1701&amp;gt; webCmd open:close&lt;br /&gt;
&lt;br /&gt;
Getestet mit&lt;br /&gt;
 FHEM 5.7 Rev. 12191&lt;br /&gt;
 homebridge 0.4.6&lt;br /&gt;
 homebridge-fhem 0.2.48&lt;br /&gt;
&lt;br /&gt;
== Roomba über THINKINGCLEANER Modul ==&lt;br /&gt;
 attr &amp;lt;THINKINGCLEANER&amp;gt; genericDeviceType switch&lt;br /&gt;
 attr &amp;lt;THINKINGCLEANER&amp;gt; homebridgeMapping clear On=state,valueOn=/^(on|dock)/,cmdOn=on,cmdOff=off,nocache=1 ChargingState=deviceStatus,values=/(_recon|_full|_trickle)$/:CHARGING;/^.*/:NOT_CHARGING&lt;br /&gt;
 attr &amp;lt;THINKINGCLEANER&amp;gt; siriName Robby&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Getestet mit&lt;br /&gt;
 FHEM 5.7 Rev. 12680&lt;br /&gt;
 homebridge 0.4.11&lt;br /&gt;
 homebridge-fhem 0.2.66&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Homematic HM-CC-RT-DN Funk-Heizkörperthermostat ==&lt;br /&gt;
[[Datei:HM-CC-RT-DN-Eve.PNG|mini|Schaltzustand eines Bewohners zu einer Szene hinzufügen]]&lt;br /&gt;
 attr &amp;lt;HMCCRTDN_Channel2_Clima&amp;gt; homebridgeMapping TargetTemperature=desired-temp::desired-temp,minValue=5,maxValue=35,minStep=0.5,nocache=1&lt;br /&gt;
                      CurrentTemperature=BU_Heizung_01_Clima:measured-temp,nocache=1&lt;br /&gt;
                      StatusLowBattery=BU_Heizung_01:battery,values=ok:BATTERY_LEVEL_NORMAL;;/^.*/:BATTERY_LEVEL_LOW&lt;br /&gt;
                      TargetHeatingCoolingState=heatingState,values=OFF:0;;HEAT:1;;COOL:2;;AUTO:3,cmds=OFF:controlManu+off;;HEAT:controlMode+boost;;AUTO:controlMode+auto;;COOL:controlManu+17.0&lt;br /&gt;
                      CurrentHeatingCoolingState=heatingState,values=OFF:0;;HEAT:1;;COOL:2;;AUTO:0,valud=OFF&lt;br /&gt;
 attr &amp;lt;HMCCRTDN_Channel2_Clima&amp;gt; siriName Robby&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
[[Kategorie:Code Snippets]]&lt;/div&gt;</summary>
		<author><name>Svenson08</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:HM-CC-RT-DN-Eve.PNG&amp;diff=19792</id>
		<title>Datei:HM-CC-RT-DN-Eve.PNG</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:HM-CC-RT-DN-Eve.PNG&amp;diff=19792"/>
		<updated>2017-02-12T18:35:35Z</updated>

		<summary type="html">&lt;p&gt;Svenson08: Darstellung des HM-CC-RT-DN in der iOS App Eve&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Darstellung des HM-CC-RT-DN in der iOS App Eve&lt;/div&gt;</summary>
		<author><name>Svenson08</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Homebridge_User_Configs&amp;diff=19791</id>
		<title>Homebridge User Configs</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Homebridge_User_Configs&amp;diff=19791"/>
		<updated>2017-02-12T18:31:21Z</updated>

		<summary type="html">&lt;p&gt;Svenson08: /* Homematic HM-CC-RT-DN Funk-Heizkörperthermostat */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dieser Eintrag dient zur Sammlung funktionsfähiger Homebridge Configs.&lt;br /&gt;
&lt;br /&gt;
Bitte immer die FHEM Version und Homebridge Version angegeben.&lt;br /&gt;
&lt;br /&gt;
Sehr gute Hinweise gibt es hier: http://www.meintechblog.de/2015/10/mit-siri-und-fhem-das-gesamte-smart-home-per-stimme-steuern/&lt;br /&gt;
== Feuchtesensor ==&lt;br /&gt;
Zum Einstieg etwas leicht nachvollziehbares. &lt;br /&gt;
&lt;br /&gt;
Feuchtesensoren haben in der Regel ein &amp;quot;humidity&amp;quot; Reading, im Falle des Opus XT300 Bodenfeuchtesensors auch Temperatur und Batterie Level. Homekit unterstützt einen &amp;quot;HumiditySensor&amp;quot; Service. Dieser ist in homebridge-fhem nicht standardmäßig vorhanden (kann also nicht aus dem dropdown ausgewählt werden, sondern muss über das Befehlsfeld zugewiesen werden):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;attr meinSensor genericDeviceType HumiditySensor&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im nächsten Schritt werden die Readings gemappt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;attr meinSensor homebridgeMapping clear CurrentRelativeHumidity=humidity StatusLowBattery=battery,values=ok:BATTERY_LEVEL_NORMAL;;/^.*/:BATTERY_LEVEL_LOW CurrentTemperature=temperature&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;clear&amp;lt;/code&amp;gt;löscht default mappings - das wird in der Regel nicht notwendig sein, schadet aber nicht&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;CurrentRelativeHumidity&amp;lt;/code&amp;gt; ist die relevante Homekit Characteristic - wird mit dem entsprechenden Reading des Sensors gemappt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;StatusLowBattery&amp;lt;/code&amp;gt; erwartet entweder BATTERY_LEVEL_NORMAL oder _LOW. Mein Sensor liefert ok zurück, wenn alles gut ist, also wird &amp;quot;ok&amp;quot; auf _NORMAL gemappt, alles andere auf _LOW. &lt;br /&gt;
&lt;br /&gt;
Der Opus XT300 Bodenfeuchtesensors liefert auch noch die Temperatur - der HumiditySensor Service sieht das eigentlich nicht vor, daher wird die Temperatur auch nicht in der Apple &amp;quot;Home&amp;quot; App angezeigt. Bei Eve wird die Temperatur hingegen berücksichtigt.&lt;br /&gt;
&lt;br /&gt;
== EnOcean STM 250 Tür-/Fensterkontakt ==&lt;br /&gt;
Der STM 250 liefert als Status in FHEM &amp;lt;code&amp;gt;open&amp;lt;/code&amp;gt;, wenn das Fenster offen und damit der Kontakt &amp;quot;offen&amp;quot; ist. Analog liefert er &amp;lt;code&amp;gt;closed&amp;lt;/code&amp;gt; wenn das Fenster geschlossen und damit auch der Kontakt geschlossen ist. Diese Statusangaben sind sehr intuitiv zu verstehen und zu interpretieren. &lt;br /&gt;
&lt;br /&gt;
Die characteristic &amp;lt;code&amp;gt;ContactSensorState&amp;lt;/code&amp;gt; von HomeKit liefert entweder den Wert &amp;lt;code&amp;gt;CONTACT_DETECTED=0&amp;lt;/code&amp;gt; oder &amp;lt;code&amp;gt;CONTACT_NOT_DETECTED=1&amp;lt;/code&amp;gt; zurück. Wobei &amp;lt;code&amp;gt;CONTACT_DETECTED&amp;lt;/code&amp;gt; bedeutet, dass der Kontakt geschlossen ist. Je nach Darstellung in der HomeKit-fähigen App muss dieses Verhalten bei der Interpretation berücksichtigt werden. Die App Eve von Elgato zum Beispiel liefert für Kontaktsensoren &amp;quot;JA&amp;quot; oder &amp;quot;NEIN&amp;quot; mit der Bedeutung &amp;lt;code&amp;gt;CONTACT_DETECTED=0=JA&amp;lt;/code&amp;gt; bzw. &amp;lt;code&amp;gt;CONTACT_NOT_DETECTED=1=NEIN&amp;lt;/code&amp;gt; zurück.&lt;br /&gt;
&lt;br /&gt;
Noch ein wichtiger Punkt: Um einen Sensorkontakt sinnvoll einzurichten sollte als zusätzlicher Wert für das Attribut &amp;lt;code&amp;gt;genericdeviceType&amp;lt;/code&amp;gt; der Wert &amp;lt;code&amp;gt;ContactSensor&amp;lt;/code&amp;gt; hinzugefügt werden. Wie das geht ist im Eintrag [[Homebridge_einrichten#FHEM_konfigurieren | Homebridge einrichten]] ausführlicher beschrieben.&lt;br /&gt;
&lt;br /&gt;
Folgende Attribute dann hinzufügen:&lt;br /&gt;
 attr STM250 genericDeviceType ContactSensor&lt;br /&gt;
 attr STM250 homebridgeMapping ContactSensorState=state,values=closed:CONTACT_DETECTED;open:CONTACT_NOT_DETECTED&lt;br /&gt;
&lt;br /&gt;
Getestet mit&lt;br /&gt;
 FHEM 5.7 Rev. 9893&lt;br /&gt;
 Homebridge 0.2.16&lt;br /&gt;
 homebridge-fhem Vorschauversion aus [http://forum.fhem.de/index.php/topic,48558.msg402024.html#msg402024 homebridge/homekit]&lt;br /&gt;
&lt;br /&gt;
== Modul RESIDENTS für Anwesenheitserkennung und Steuerung der Anwesenheit benutzen ==&lt;br /&gt;
[[Datei:Homebridge_bewohner_zu_szene.jpeg|mini|Schaltzustand eines Bewohners zu einer Szene hinzufügen]]&lt;br /&gt;
Aus den einzelnen Komponenten des Moduls RESIDENTS, homebridge sowie der characteristic &amp;lt;code&amp;gt;On&amp;lt;/code&amp;gt; und der Szenensteuerung lässt sich eine gleichzeitige Steuerung der Anwesenheit und Anwesenheitserkennung basteln.&lt;br /&gt;
&lt;br /&gt;
Dazu müssen folgende Schritte unternommen werden:&lt;br /&gt;
* einem Bewohner aus dem Modul ROOMMATE die Steuerung über homebridgeMapping hinzufügen&lt;br /&gt;
* Szene für &amp;quot;Ich bin zu Hause&amp;quot; und &amp;quot;Ich gehe jetzt&amp;quot; in einer HomeKit-fähigen App wie z.B. Eve einrichten&lt;br /&gt;
&lt;br /&gt;
Man kann einen beliebigen Bewohner aus dem Modul ROOMMATE nehmen und ihn über die characteristic &amp;lt;code&amp;gt;On&amp;lt;/code&amp;gt; in Form eines Schalters sozusagen schaltbar machen. Nur wird das Ein- und Ausschalten des Bewohners über HomeKit in FHEM auf den Status home bzw. absent gemappt. Seit dem 06.02.2016 werden RESIDENTS automatisch als Occupancy Sensor für HomeKit annonciert. Nun noch die Attribute des ROOMMATE wie folgt setzen:&lt;br /&gt;
 attr &amp;lt;ROOMMATE&amp;gt; genericDeviceType switch&lt;br /&gt;
 attr &amp;lt;ROOMMATE&amp;gt; homebridgeMapping On=state,valueOn=/home|awoken|asleep|gotosleep/,valueOff=/gone|absent/,cmdOn=home,cmdOff=absent&lt;br /&gt;
&lt;br /&gt;
Natürlich muss der Bewohner noch dem Filter von homebridge hinzugefügt und homebridge neu gestartet werden.&lt;br /&gt;
&lt;br /&gt;
Anschließend geht es in der HomeKit-fähigen App Deiner Wahl weiter. In Eve von Elgato ist von vornherein zum Beispiel vorgesehen, dass man zwei Szenen &amp;quot;Ich bin zuhause&amp;quot; und &amp;quot;Ich verlasse das Haus&amp;quot; hat. Zu diesen Szenen wird eine Aktion hinzugefügt indem der Bewohner, den das ROOMMATE-Modul meldet zur Szene hinzugefügt wird und beim Nachhausekommen &amp;quot;eingeschaltet&amp;quot; wird. Genauso wird mit der Szene &amp;quot;Ich verlasse das Haus&amp;quot; verfahren: Bewohner zur Szene hinzufügen und den Schaltvorgang auf &amp;quot;ausschalten&amp;quot; setzen.&lt;br /&gt;
&lt;br /&gt;
Mit den Sprachbefehlen &amp;quot;Ich bin zuhause&amp;quot; oder &amp;quot;Ich verlasse das Haus&amp;quot; wird die entsprechende Szene eingeschaltet, homebridge schaltet über das &amp;lt;code&amp;gt;homebridgeMapping&amp;lt;/code&amp;gt; Attribut dann den Bewohner auf &amp;quot;home&amp;quot; oder &amp;quot;absent&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Getestet mit&lt;br /&gt;
 FHEM 5.7 Rev. 9893&lt;br /&gt;
 Homebridge 0.2.16&lt;br /&gt;
 homebridge-fhem Vorschauversion aus [http://forum.fhem.de/index.php/topic,48558.msg402024.html#msg402024 homebridge/homekit]&lt;br /&gt;
&lt;br /&gt;
== ZWave Türschloss Vision ZM1701 einbinden ==&lt;br /&gt;
Das ZWave Türschloss ZM1701 von der Firma Vision sendet seinen aktuellen Schließstatus in ein einzelnes Reading wie &amp;quot;lock&amp;quot;, sondern schickt eine ganze Reihe von Informationen über den Zustand in das Reading &amp;lt;code&amp;gt;doorLockOperation&amp;lt;/code&amp;gt;. Das Schließen und Öffnen der Türschlosses wird auch nicht mit einem Setzen des &amp;lt;code&amp;gt;state&amp;lt;/code&amp;gt; erreicht, sondern mit dem Setzen von &amp;lt;code&amp;gt;doorLockOperation&amp;lt;/code&amp;gt;. Das macht das Einbinden in homebridge nicht trivial, funktioniert aber über folgendes Homebridge-Mapping:&lt;br /&gt;
 attr &amp;lt;ZM1701&amp;gt; genericDeviceType lock&lt;br /&gt;
 attr &amp;lt;ZM1701&amp;gt; homebridgeMapping LockCurrentState=doorLockOperation,values=/\ssecured/:SECURED;/unsecured/:UNSECURED LockTargetState=doorLockOperation,values=/\ssecured/:SECURED;/unsecured/:UNSECURED,cmds=SECURED:doorLockOperation+close;UNSECURED:doorLockOperation+open&lt;br /&gt;
&lt;br /&gt;
Kurz zur Erklärung: Um ein Schloss über HomeKit steuern zu können braucht es zwei characteristics. LockCurrentState zeigt an, ob das Schloss geöffnet oder geschlossen ist. Und mit LockTargetState wird das Schloss geöffnet oder geschlossen. Damit der aktuelle Status des Schlosses ausgelesen werden kann, muss aus dem FHEM-Reading &amp;lt;code&amp;gt;doorLockOperation&amp;lt;/code&amp;gt; die Zeichenfolge &amp;lt;code&amp;gt; secured&amp;lt;/code&amp;gt; oder &amp;lt;code&amp;gt;unsecured&amp;lt;/code&amp;gt; extrahiert werden, daher die beiden regulären Ausdrücke &amp;lt;code&amp;gt;/\ssecured/&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;/unsecured/&amp;lt;/code&amp;gt;. In der characteristic &amp;lt;code&amp;gt;LockTargetState&amp;lt;/code&amp;gt; muss sowohl der aktuelle Status des Schlosses als auch das Kommando angegeben werden, schließlich möchte man ein geschlossenes Schloss nicht nochmal schließen. Daher wird erst aus dem Reading &amp;lt;code&amp;gt;doorLockOperation&amp;lt;/code&amp;gt; der aktuelle Status des Schlosses ausgelesen und die damit korrespondierenden Befehle über &amp;lt;code&amp;gt;cmds=SECURED:doorLockOperation+close;UNSECURED:doorLockOperation+open&amp;lt;/code&amp;gt; generiert.&lt;br /&gt;
&lt;br /&gt;
Wer es in FHEM über ein webCmd einfacher zu bedienen haben möchte, fügt bitte noch die dafür notwendigen Attribute und die leicht geänderten homebridgeMappings wie folgt ein:&lt;br /&gt;
 attr &amp;lt;ZM1701&amp;gt; genericDeviceType lock&lt;br /&gt;
 attr &amp;lt;ZM1701&amp;gt; homebridgeMapping LockCurrentState=doorLockOperation,values=/\ssecured/:SECURED;/unsecured/:UNSECURED LockTargetState=doorLockOperation,values=/\ssecured/:SECURED;/unsecured/:UNSECURED,cmds=SECURED:close;UNSECURED:open&lt;br /&gt;
 attr &amp;lt;ZM1701&amp;gt; /doorLockOperation open:open/doorLockOperation close:close&lt;br /&gt;
 attr &amp;lt;ZM1701&amp;gt; webCmd open:close&lt;br /&gt;
&lt;br /&gt;
Getestet mit&lt;br /&gt;
 FHEM 5.7 Rev. 12191&lt;br /&gt;
 homebridge 0.4.6&lt;br /&gt;
 homebridge-fhem 0.2.48&lt;br /&gt;
&lt;br /&gt;
== Roomba über THINKINGCLEANER Modul ==&lt;br /&gt;
 attr &amp;lt;THINKINGCLEANER&amp;gt; genericDeviceType switch&lt;br /&gt;
 attr &amp;lt;THINKINGCLEANER&amp;gt; homebridgeMapping clear On=state,valueOn=/^(on|dock)/,cmdOn=on,cmdOff=off,nocache=1 ChargingState=deviceStatus,values=/(_recon|_full|_trickle)$/:CHARGING;/^.*/:NOT_CHARGING&lt;br /&gt;
 attr &amp;lt;THINKINGCLEANER&amp;gt; siriName Robby&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Getestet mit&lt;br /&gt;
 FHEM 5.7 Rev. 12680&lt;br /&gt;
 homebridge 0.4.11&lt;br /&gt;
 homebridge-fhem 0.2.66&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Homematic HM-CC-RT-DN Funk-Heizkörperthermostat ==&lt;br /&gt;
 attr &amp;lt;HMCCRTDN_Channel2_Clima&amp;gt; homebridgeMapping TargetTemperature=desired-temp::desired-temp,minValue=5,maxValue=35,minStep=0.5,nocache=1&lt;br /&gt;
                      CurrentTemperature=BU_Heizung_01_Clima:measured-temp,nocache=1&lt;br /&gt;
                      StatusLowBattery=BU_Heizung_01:battery,values=ok:BATTERY_LEVEL_NORMAL;;/^.*/:BATTERY_LEVEL_LOW&lt;br /&gt;
                      TargetHeatingCoolingState=heatingState,values=OFF:0;;HEAT:1;;COOL:2;;AUTO:3,cmds=OFF:controlManu+off;;HEAT:controlMode+boost;;AUTO:controlMode+auto;;COOL:controlManu+17.0&lt;br /&gt;
                      CurrentHeatingCoolingState=heatingState,values=OFF:0;;HEAT:1;;COOL:2;;AUTO:0,valud=OFF&lt;br /&gt;
 attr &amp;lt;HMCCRTDN_Channel2_Clima&amp;gt; siriName Robby&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
[[Kategorie:Code Snippets]]&lt;/div&gt;</summary>
		<author><name>Svenson08</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Homebridge_User_Configs&amp;diff=19790</id>
		<title>Homebridge User Configs</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Homebridge_User_Configs&amp;diff=19790"/>
		<updated>2017-02-12T18:30:47Z</updated>

		<summary type="html">&lt;p&gt;Svenson08: /* Homematic HM-CC-RT-DN Funk-Heizkörperthermostat */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dieser Eintrag dient zur Sammlung funktionsfähiger Homebridge Configs.&lt;br /&gt;
&lt;br /&gt;
Bitte immer die FHEM Version und Homebridge Version angegeben.&lt;br /&gt;
&lt;br /&gt;
Sehr gute Hinweise gibt es hier: http://www.meintechblog.de/2015/10/mit-siri-und-fhem-das-gesamte-smart-home-per-stimme-steuern/&lt;br /&gt;
== Feuchtesensor ==&lt;br /&gt;
Zum Einstieg etwas leicht nachvollziehbares. &lt;br /&gt;
&lt;br /&gt;
Feuchtesensoren haben in der Regel ein &amp;quot;humidity&amp;quot; Reading, im Falle des Opus XT300 Bodenfeuchtesensors auch Temperatur und Batterie Level. Homekit unterstützt einen &amp;quot;HumiditySensor&amp;quot; Service. Dieser ist in homebridge-fhem nicht standardmäßig vorhanden (kann also nicht aus dem dropdown ausgewählt werden, sondern muss über das Befehlsfeld zugewiesen werden):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;attr meinSensor genericDeviceType HumiditySensor&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im nächsten Schritt werden die Readings gemappt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;attr meinSensor homebridgeMapping clear CurrentRelativeHumidity=humidity StatusLowBattery=battery,values=ok:BATTERY_LEVEL_NORMAL;;/^.*/:BATTERY_LEVEL_LOW CurrentTemperature=temperature&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;clear&amp;lt;/code&amp;gt;löscht default mappings - das wird in der Regel nicht notwendig sein, schadet aber nicht&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;CurrentRelativeHumidity&amp;lt;/code&amp;gt; ist die relevante Homekit Characteristic - wird mit dem entsprechenden Reading des Sensors gemappt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;StatusLowBattery&amp;lt;/code&amp;gt; erwartet entweder BATTERY_LEVEL_NORMAL oder _LOW. Mein Sensor liefert ok zurück, wenn alles gut ist, also wird &amp;quot;ok&amp;quot; auf _NORMAL gemappt, alles andere auf _LOW. &lt;br /&gt;
&lt;br /&gt;
Der Opus XT300 Bodenfeuchtesensors liefert auch noch die Temperatur - der HumiditySensor Service sieht das eigentlich nicht vor, daher wird die Temperatur auch nicht in der Apple &amp;quot;Home&amp;quot; App angezeigt. Bei Eve wird die Temperatur hingegen berücksichtigt.&lt;br /&gt;
&lt;br /&gt;
== EnOcean STM 250 Tür-/Fensterkontakt ==&lt;br /&gt;
Der STM 250 liefert als Status in FHEM &amp;lt;code&amp;gt;open&amp;lt;/code&amp;gt;, wenn das Fenster offen und damit der Kontakt &amp;quot;offen&amp;quot; ist. Analog liefert er &amp;lt;code&amp;gt;closed&amp;lt;/code&amp;gt; wenn das Fenster geschlossen und damit auch der Kontakt geschlossen ist. Diese Statusangaben sind sehr intuitiv zu verstehen und zu interpretieren. &lt;br /&gt;
&lt;br /&gt;
Die characteristic &amp;lt;code&amp;gt;ContactSensorState&amp;lt;/code&amp;gt; von HomeKit liefert entweder den Wert &amp;lt;code&amp;gt;CONTACT_DETECTED=0&amp;lt;/code&amp;gt; oder &amp;lt;code&amp;gt;CONTACT_NOT_DETECTED=1&amp;lt;/code&amp;gt; zurück. Wobei &amp;lt;code&amp;gt;CONTACT_DETECTED&amp;lt;/code&amp;gt; bedeutet, dass der Kontakt geschlossen ist. Je nach Darstellung in der HomeKit-fähigen App muss dieses Verhalten bei der Interpretation berücksichtigt werden. Die App Eve von Elgato zum Beispiel liefert für Kontaktsensoren &amp;quot;JA&amp;quot; oder &amp;quot;NEIN&amp;quot; mit der Bedeutung &amp;lt;code&amp;gt;CONTACT_DETECTED=0=JA&amp;lt;/code&amp;gt; bzw. &amp;lt;code&amp;gt;CONTACT_NOT_DETECTED=1=NEIN&amp;lt;/code&amp;gt; zurück.&lt;br /&gt;
&lt;br /&gt;
Noch ein wichtiger Punkt: Um einen Sensorkontakt sinnvoll einzurichten sollte als zusätzlicher Wert für das Attribut &amp;lt;code&amp;gt;genericdeviceType&amp;lt;/code&amp;gt; der Wert &amp;lt;code&amp;gt;ContactSensor&amp;lt;/code&amp;gt; hinzugefügt werden. Wie das geht ist im Eintrag [[Homebridge_einrichten#FHEM_konfigurieren | Homebridge einrichten]] ausführlicher beschrieben.&lt;br /&gt;
&lt;br /&gt;
Folgende Attribute dann hinzufügen:&lt;br /&gt;
 attr STM250 genericDeviceType ContactSensor&lt;br /&gt;
 attr STM250 homebridgeMapping ContactSensorState=state,values=closed:CONTACT_DETECTED;open:CONTACT_NOT_DETECTED&lt;br /&gt;
&lt;br /&gt;
Getestet mit&lt;br /&gt;
 FHEM 5.7 Rev. 9893&lt;br /&gt;
 Homebridge 0.2.16&lt;br /&gt;
 homebridge-fhem Vorschauversion aus [http://forum.fhem.de/index.php/topic,48558.msg402024.html#msg402024 homebridge/homekit]&lt;br /&gt;
&lt;br /&gt;
== Modul RESIDENTS für Anwesenheitserkennung und Steuerung der Anwesenheit benutzen ==&lt;br /&gt;
[[Datei:Homebridge_bewohner_zu_szene.jpeg|mini|Schaltzustand eines Bewohners zu einer Szene hinzufügen]]&lt;br /&gt;
Aus den einzelnen Komponenten des Moduls RESIDENTS, homebridge sowie der characteristic &amp;lt;code&amp;gt;On&amp;lt;/code&amp;gt; und der Szenensteuerung lässt sich eine gleichzeitige Steuerung der Anwesenheit und Anwesenheitserkennung basteln.&lt;br /&gt;
&lt;br /&gt;
Dazu müssen folgende Schritte unternommen werden:&lt;br /&gt;
* einem Bewohner aus dem Modul ROOMMATE die Steuerung über homebridgeMapping hinzufügen&lt;br /&gt;
* Szene für &amp;quot;Ich bin zu Hause&amp;quot; und &amp;quot;Ich gehe jetzt&amp;quot; in einer HomeKit-fähigen App wie z.B. Eve einrichten&lt;br /&gt;
&lt;br /&gt;
Man kann einen beliebigen Bewohner aus dem Modul ROOMMATE nehmen und ihn über die characteristic &amp;lt;code&amp;gt;On&amp;lt;/code&amp;gt; in Form eines Schalters sozusagen schaltbar machen. Nur wird das Ein- und Ausschalten des Bewohners über HomeKit in FHEM auf den Status home bzw. absent gemappt. Seit dem 06.02.2016 werden RESIDENTS automatisch als Occupancy Sensor für HomeKit annonciert. Nun noch die Attribute des ROOMMATE wie folgt setzen:&lt;br /&gt;
 attr &amp;lt;ROOMMATE&amp;gt; genericDeviceType switch&lt;br /&gt;
 attr &amp;lt;ROOMMATE&amp;gt; homebridgeMapping On=state,valueOn=/home|awoken|asleep|gotosleep/,valueOff=/gone|absent/,cmdOn=home,cmdOff=absent&lt;br /&gt;
&lt;br /&gt;
Natürlich muss der Bewohner noch dem Filter von homebridge hinzugefügt und homebridge neu gestartet werden.&lt;br /&gt;
&lt;br /&gt;
Anschließend geht es in der HomeKit-fähigen App Deiner Wahl weiter. In Eve von Elgato ist von vornherein zum Beispiel vorgesehen, dass man zwei Szenen &amp;quot;Ich bin zuhause&amp;quot; und &amp;quot;Ich verlasse das Haus&amp;quot; hat. Zu diesen Szenen wird eine Aktion hinzugefügt indem der Bewohner, den das ROOMMATE-Modul meldet zur Szene hinzugefügt wird und beim Nachhausekommen &amp;quot;eingeschaltet&amp;quot; wird. Genauso wird mit der Szene &amp;quot;Ich verlasse das Haus&amp;quot; verfahren: Bewohner zur Szene hinzufügen und den Schaltvorgang auf &amp;quot;ausschalten&amp;quot; setzen.&lt;br /&gt;
&lt;br /&gt;
Mit den Sprachbefehlen &amp;quot;Ich bin zuhause&amp;quot; oder &amp;quot;Ich verlasse das Haus&amp;quot; wird die entsprechende Szene eingeschaltet, homebridge schaltet über das &amp;lt;code&amp;gt;homebridgeMapping&amp;lt;/code&amp;gt; Attribut dann den Bewohner auf &amp;quot;home&amp;quot; oder &amp;quot;absent&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Getestet mit&lt;br /&gt;
 FHEM 5.7 Rev. 9893&lt;br /&gt;
 Homebridge 0.2.16&lt;br /&gt;
 homebridge-fhem Vorschauversion aus [http://forum.fhem.de/index.php/topic,48558.msg402024.html#msg402024 homebridge/homekit]&lt;br /&gt;
&lt;br /&gt;
== ZWave Türschloss Vision ZM1701 einbinden ==&lt;br /&gt;
Das ZWave Türschloss ZM1701 von der Firma Vision sendet seinen aktuellen Schließstatus in ein einzelnes Reading wie &amp;quot;lock&amp;quot;, sondern schickt eine ganze Reihe von Informationen über den Zustand in das Reading &amp;lt;code&amp;gt;doorLockOperation&amp;lt;/code&amp;gt;. Das Schließen und Öffnen der Türschlosses wird auch nicht mit einem Setzen des &amp;lt;code&amp;gt;state&amp;lt;/code&amp;gt; erreicht, sondern mit dem Setzen von &amp;lt;code&amp;gt;doorLockOperation&amp;lt;/code&amp;gt;. Das macht das Einbinden in homebridge nicht trivial, funktioniert aber über folgendes Homebridge-Mapping:&lt;br /&gt;
 attr &amp;lt;ZM1701&amp;gt; genericDeviceType lock&lt;br /&gt;
 attr &amp;lt;ZM1701&amp;gt; homebridgeMapping LockCurrentState=doorLockOperation,values=/\ssecured/:SECURED;/unsecured/:UNSECURED LockTargetState=doorLockOperation,values=/\ssecured/:SECURED;/unsecured/:UNSECURED,cmds=SECURED:doorLockOperation+close;UNSECURED:doorLockOperation+open&lt;br /&gt;
&lt;br /&gt;
Kurz zur Erklärung: Um ein Schloss über HomeKit steuern zu können braucht es zwei characteristics. LockCurrentState zeigt an, ob das Schloss geöffnet oder geschlossen ist. Und mit LockTargetState wird das Schloss geöffnet oder geschlossen. Damit der aktuelle Status des Schlosses ausgelesen werden kann, muss aus dem FHEM-Reading &amp;lt;code&amp;gt;doorLockOperation&amp;lt;/code&amp;gt; die Zeichenfolge &amp;lt;code&amp;gt; secured&amp;lt;/code&amp;gt; oder &amp;lt;code&amp;gt;unsecured&amp;lt;/code&amp;gt; extrahiert werden, daher die beiden regulären Ausdrücke &amp;lt;code&amp;gt;/\ssecured/&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;/unsecured/&amp;lt;/code&amp;gt;. In der characteristic &amp;lt;code&amp;gt;LockTargetState&amp;lt;/code&amp;gt; muss sowohl der aktuelle Status des Schlosses als auch das Kommando angegeben werden, schließlich möchte man ein geschlossenes Schloss nicht nochmal schließen. Daher wird erst aus dem Reading &amp;lt;code&amp;gt;doorLockOperation&amp;lt;/code&amp;gt; der aktuelle Status des Schlosses ausgelesen und die damit korrespondierenden Befehle über &amp;lt;code&amp;gt;cmds=SECURED:doorLockOperation+close;UNSECURED:doorLockOperation+open&amp;lt;/code&amp;gt; generiert.&lt;br /&gt;
&lt;br /&gt;
Wer es in FHEM über ein webCmd einfacher zu bedienen haben möchte, fügt bitte noch die dafür notwendigen Attribute und die leicht geänderten homebridgeMappings wie folgt ein:&lt;br /&gt;
 attr &amp;lt;ZM1701&amp;gt; genericDeviceType lock&lt;br /&gt;
 attr &amp;lt;ZM1701&amp;gt; homebridgeMapping LockCurrentState=doorLockOperation,values=/\ssecured/:SECURED;/unsecured/:UNSECURED LockTargetState=doorLockOperation,values=/\ssecured/:SECURED;/unsecured/:UNSECURED,cmds=SECURED:close;UNSECURED:open&lt;br /&gt;
 attr &amp;lt;ZM1701&amp;gt; /doorLockOperation open:open/doorLockOperation close:close&lt;br /&gt;
 attr &amp;lt;ZM1701&amp;gt; webCmd open:close&lt;br /&gt;
&lt;br /&gt;
Getestet mit&lt;br /&gt;
 FHEM 5.7 Rev. 12191&lt;br /&gt;
 homebridge 0.4.6&lt;br /&gt;
 homebridge-fhem 0.2.48&lt;br /&gt;
&lt;br /&gt;
== Roomba über THINKINGCLEANER Modul ==&lt;br /&gt;
 attr &amp;lt;THINKINGCLEANER&amp;gt; genericDeviceType switch&lt;br /&gt;
 attr &amp;lt;THINKINGCLEANER&amp;gt; homebridgeMapping clear On=state,valueOn=/^(on|dock)/,cmdOn=on,cmdOff=off,nocache=1 ChargingState=deviceStatus,values=/(_recon|_full|_trickle)$/:CHARGING;/^.*/:NOT_CHARGING&lt;br /&gt;
 attr &amp;lt;THINKINGCLEANER&amp;gt; siriName Robby&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Getestet mit&lt;br /&gt;
 FHEM 5.7 Rev. 12680&lt;br /&gt;
 homebridge 0.4.11&lt;br /&gt;
 homebridge-fhem 0.2.66&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Homematic HM-CC-RT-DN Funk-Heizkörperthermostat ==&lt;br /&gt;
 attr &amp;lt;HMCCRTDN_Channel2_Clima&amp;gt; homebridgeMapping TargetTemperature=desired-temp::desired-temp,minValue=5,maxValue=35,minStep=0.5,nocache=1&lt;br /&gt;
                                                  CurrentTemperature=BU_Heizung_01_Clima:measured-temp,nocache=1&lt;br /&gt;
                                                  StatusLowBattery=BU_Heizung_01:battery,values=ok:BATTERY_LEVEL_NORMAL;;/^.*/:BATTERY_LEVEL_LOW&lt;br /&gt;
                                                  TargetHeatingCoolingState=heatingState,values=OFF:0;;HEAT:1;;COOL:2;;AUTO:3,cmds=OFF:controlManu+off;;HEAT:controlMode+boost;;AUTO:controlMode+auto;;COOL:controlManu+17.0&lt;br /&gt;
                                                  CurrentHeatingCoolingState=heatingState,values=OFF:0;;HEAT:1;;COOL:2;;AUTO:0,valud=OFF&lt;br /&gt;
 attr &amp;lt;HMCCRTDN_Channel2_Clima&amp;gt; siriName Robby&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
[[Kategorie:Code Snippets]]&lt;/div&gt;</summary>
		<author><name>Svenson08</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Homebridge_User_Configs&amp;diff=19789</id>
		<title>Homebridge User Configs</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Homebridge_User_Configs&amp;diff=19789"/>
		<updated>2017-02-12T18:30:22Z</updated>

		<summary type="html">&lt;p&gt;Svenson08: /* Homematic HM-CC-RT-DN Funk-Heizkörperthermostat */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dieser Eintrag dient zur Sammlung funktionsfähiger Homebridge Configs.&lt;br /&gt;
&lt;br /&gt;
Bitte immer die FHEM Version und Homebridge Version angegeben.&lt;br /&gt;
&lt;br /&gt;
Sehr gute Hinweise gibt es hier: http://www.meintechblog.de/2015/10/mit-siri-und-fhem-das-gesamte-smart-home-per-stimme-steuern/&lt;br /&gt;
== Feuchtesensor ==&lt;br /&gt;
Zum Einstieg etwas leicht nachvollziehbares. &lt;br /&gt;
&lt;br /&gt;
Feuchtesensoren haben in der Regel ein &amp;quot;humidity&amp;quot; Reading, im Falle des Opus XT300 Bodenfeuchtesensors auch Temperatur und Batterie Level. Homekit unterstützt einen &amp;quot;HumiditySensor&amp;quot; Service. Dieser ist in homebridge-fhem nicht standardmäßig vorhanden (kann also nicht aus dem dropdown ausgewählt werden, sondern muss über das Befehlsfeld zugewiesen werden):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;attr meinSensor genericDeviceType HumiditySensor&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im nächsten Schritt werden die Readings gemappt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;attr meinSensor homebridgeMapping clear CurrentRelativeHumidity=humidity StatusLowBattery=battery,values=ok:BATTERY_LEVEL_NORMAL;;/^.*/:BATTERY_LEVEL_LOW CurrentTemperature=temperature&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;clear&amp;lt;/code&amp;gt;löscht default mappings - das wird in der Regel nicht notwendig sein, schadet aber nicht&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;CurrentRelativeHumidity&amp;lt;/code&amp;gt; ist die relevante Homekit Characteristic - wird mit dem entsprechenden Reading des Sensors gemappt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;StatusLowBattery&amp;lt;/code&amp;gt; erwartet entweder BATTERY_LEVEL_NORMAL oder _LOW. Mein Sensor liefert ok zurück, wenn alles gut ist, also wird &amp;quot;ok&amp;quot; auf _NORMAL gemappt, alles andere auf _LOW. &lt;br /&gt;
&lt;br /&gt;
Der Opus XT300 Bodenfeuchtesensors liefert auch noch die Temperatur - der HumiditySensor Service sieht das eigentlich nicht vor, daher wird die Temperatur auch nicht in der Apple &amp;quot;Home&amp;quot; App angezeigt. Bei Eve wird die Temperatur hingegen berücksichtigt.&lt;br /&gt;
&lt;br /&gt;
== EnOcean STM 250 Tür-/Fensterkontakt ==&lt;br /&gt;
Der STM 250 liefert als Status in FHEM &amp;lt;code&amp;gt;open&amp;lt;/code&amp;gt;, wenn das Fenster offen und damit der Kontakt &amp;quot;offen&amp;quot; ist. Analog liefert er &amp;lt;code&amp;gt;closed&amp;lt;/code&amp;gt; wenn das Fenster geschlossen und damit auch der Kontakt geschlossen ist. Diese Statusangaben sind sehr intuitiv zu verstehen und zu interpretieren. &lt;br /&gt;
&lt;br /&gt;
Die characteristic &amp;lt;code&amp;gt;ContactSensorState&amp;lt;/code&amp;gt; von HomeKit liefert entweder den Wert &amp;lt;code&amp;gt;CONTACT_DETECTED=0&amp;lt;/code&amp;gt; oder &amp;lt;code&amp;gt;CONTACT_NOT_DETECTED=1&amp;lt;/code&amp;gt; zurück. Wobei &amp;lt;code&amp;gt;CONTACT_DETECTED&amp;lt;/code&amp;gt; bedeutet, dass der Kontakt geschlossen ist. Je nach Darstellung in der HomeKit-fähigen App muss dieses Verhalten bei der Interpretation berücksichtigt werden. Die App Eve von Elgato zum Beispiel liefert für Kontaktsensoren &amp;quot;JA&amp;quot; oder &amp;quot;NEIN&amp;quot; mit der Bedeutung &amp;lt;code&amp;gt;CONTACT_DETECTED=0=JA&amp;lt;/code&amp;gt; bzw. &amp;lt;code&amp;gt;CONTACT_NOT_DETECTED=1=NEIN&amp;lt;/code&amp;gt; zurück.&lt;br /&gt;
&lt;br /&gt;
Noch ein wichtiger Punkt: Um einen Sensorkontakt sinnvoll einzurichten sollte als zusätzlicher Wert für das Attribut &amp;lt;code&amp;gt;genericdeviceType&amp;lt;/code&amp;gt; der Wert &amp;lt;code&amp;gt;ContactSensor&amp;lt;/code&amp;gt; hinzugefügt werden. Wie das geht ist im Eintrag [[Homebridge_einrichten#FHEM_konfigurieren | Homebridge einrichten]] ausführlicher beschrieben.&lt;br /&gt;
&lt;br /&gt;
Folgende Attribute dann hinzufügen:&lt;br /&gt;
 attr STM250 genericDeviceType ContactSensor&lt;br /&gt;
 attr STM250 homebridgeMapping ContactSensorState=state,values=closed:CONTACT_DETECTED;open:CONTACT_NOT_DETECTED&lt;br /&gt;
&lt;br /&gt;
Getestet mit&lt;br /&gt;
 FHEM 5.7 Rev. 9893&lt;br /&gt;
 Homebridge 0.2.16&lt;br /&gt;
 homebridge-fhem Vorschauversion aus [http://forum.fhem.de/index.php/topic,48558.msg402024.html#msg402024 homebridge/homekit]&lt;br /&gt;
&lt;br /&gt;
== Modul RESIDENTS für Anwesenheitserkennung und Steuerung der Anwesenheit benutzen ==&lt;br /&gt;
[[Datei:Homebridge_bewohner_zu_szene.jpeg|mini|Schaltzustand eines Bewohners zu einer Szene hinzufügen]]&lt;br /&gt;
Aus den einzelnen Komponenten des Moduls RESIDENTS, homebridge sowie der characteristic &amp;lt;code&amp;gt;On&amp;lt;/code&amp;gt; und der Szenensteuerung lässt sich eine gleichzeitige Steuerung der Anwesenheit und Anwesenheitserkennung basteln.&lt;br /&gt;
&lt;br /&gt;
Dazu müssen folgende Schritte unternommen werden:&lt;br /&gt;
* einem Bewohner aus dem Modul ROOMMATE die Steuerung über homebridgeMapping hinzufügen&lt;br /&gt;
* Szene für &amp;quot;Ich bin zu Hause&amp;quot; und &amp;quot;Ich gehe jetzt&amp;quot; in einer HomeKit-fähigen App wie z.B. Eve einrichten&lt;br /&gt;
&lt;br /&gt;
Man kann einen beliebigen Bewohner aus dem Modul ROOMMATE nehmen und ihn über die characteristic &amp;lt;code&amp;gt;On&amp;lt;/code&amp;gt; in Form eines Schalters sozusagen schaltbar machen. Nur wird das Ein- und Ausschalten des Bewohners über HomeKit in FHEM auf den Status home bzw. absent gemappt. Seit dem 06.02.2016 werden RESIDENTS automatisch als Occupancy Sensor für HomeKit annonciert. Nun noch die Attribute des ROOMMATE wie folgt setzen:&lt;br /&gt;
 attr &amp;lt;ROOMMATE&amp;gt; genericDeviceType switch&lt;br /&gt;
 attr &amp;lt;ROOMMATE&amp;gt; homebridgeMapping On=state,valueOn=/home|awoken|asleep|gotosleep/,valueOff=/gone|absent/,cmdOn=home,cmdOff=absent&lt;br /&gt;
&lt;br /&gt;
Natürlich muss der Bewohner noch dem Filter von homebridge hinzugefügt und homebridge neu gestartet werden.&lt;br /&gt;
&lt;br /&gt;
Anschließend geht es in der HomeKit-fähigen App Deiner Wahl weiter. In Eve von Elgato ist von vornherein zum Beispiel vorgesehen, dass man zwei Szenen &amp;quot;Ich bin zuhause&amp;quot; und &amp;quot;Ich verlasse das Haus&amp;quot; hat. Zu diesen Szenen wird eine Aktion hinzugefügt indem der Bewohner, den das ROOMMATE-Modul meldet zur Szene hinzugefügt wird und beim Nachhausekommen &amp;quot;eingeschaltet&amp;quot; wird. Genauso wird mit der Szene &amp;quot;Ich verlasse das Haus&amp;quot; verfahren: Bewohner zur Szene hinzufügen und den Schaltvorgang auf &amp;quot;ausschalten&amp;quot; setzen.&lt;br /&gt;
&lt;br /&gt;
Mit den Sprachbefehlen &amp;quot;Ich bin zuhause&amp;quot; oder &amp;quot;Ich verlasse das Haus&amp;quot; wird die entsprechende Szene eingeschaltet, homebridge schaltet über das &amp;lt;code&amp;gt;homebridgeMapping&amp;lt;/code&amp;gt; Attribut dann den Bewohner auf &amp;quot;home&amp;quot; oder &amp;quot;absent&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Getestet mit&lt;br /&gt;
 FHEM 5.7 Rev. 9893&lt;br /&gt;
 Homebridge 0.2.16&lt;br /&gt;
 homebridge-fhem Vorschauversion aus [http://forum.fhem.de/index.php/topic,48558.msg402024.html#msg402024 homebridge/homekit]&lt;br /&gt;
&lt;br /&gt;
== ZWave Türschloss Vision ZM1701 einbinden ==&lt;br /&gt;
Das ZWave Türschloss ZM1701 von der Firma Vision sendet seinen aktuellen Schließstatus in ein einzelnes Reading wie &amp;quot;lock&amp;quot;, sondern schickt eine ganze Reihe von Informationen über den Zustand in das Reading &amp;lt;code&amp;gt;doorLockOperation&amp;lt;/code&amp;gt;. Das Schließen und Öffnen der Türschlosses wird auch nicht mit einem Setzen des &amp;lt;code&amp;gt;state&amp;lt;/code&amp;gt; erreicht, sondern mit dem Setzen von &amp;lt;code&amp;gt;doorLockOperation&amp;lt;/code&amp;gt;. Das macht das Einbinden in homebridge nicht trivial, funktioniert aber über folgendes Homebridge-Mapping:&lt;br /&gt;
 attr &amp;lt;ZM1701&amp;gt; genericDeviceType lock&lt;br /&gt;
 attr &amp;lt;ZM1701&amp;gt; homebridgeMapping LockCurrentState=doorLockOperation,values=/\ssecured/:SECURED;/unsecured/:UNSECURED LockTargetState=doorLockOperation,values=/\ssecured/:SECURED;/unsecured/:UNSECURED,cmds=SECURED:doorLockOperation+close;UNSECURED:doorLockOperation+open&lt;br /&gt;
&lt;br /&gt;
Kurz zur Erklärung: Um ein Schloss über HomeKit steuern zu können braucht es zwei characteristics. LockCurrentState zeigt an, ob das Schloss geöffnet oder geschlossen ist. Und mit LockTargetState wird das Schloss geöffnet oder geschlossen. Damit der aktuelle Status des Schlosses ausgelesen werden kann, muss aus dem FHEM-Reading &amp;lt;code&amp;gt;doorLockOperation&amp;lt;/code&amp;gt; die Zeichenfolge &amp;lt;code&amp;gt; secured&amp;lt;/code&amp;gt; oder &amp;lt;code&amp;gt;unsecured&amp;lt;/code&amp;gt; extrahiert werden, daher die beiden regulären Ausdrücke &amp;lt;code&amp;gt;/\ssecured/&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;/unsecured/&amp;lt;/code&amp;gt;. In der characteristic &amp;lt;code&amp;gt;LockTargetState&amp;lt;/code&amp;gt; muss sowohl der aktuelle Status des Schlosses als auch das Kommando angegeben werden, schließlich möchte man ein geschlossenes Schloss nicht nochmal schließen. Daher wird erst aus dem Reading &amp;lt;code&amp;gt;doorLockOperation&amp;lt;/code&amp;gt; der aktuelle Status des Schlosses ausgelesen und die damit korrespondierenden Befehle über &amp;lt;code&amp;gt;cmds=SECURED:doorLockOperation+close;UNSECURED:doorLockOperation+open&amp;lt;/code&amp;gt; generiert.&lt;br /&gt;
&lt;br /&gt;
Wer es in FHEM über ein webCmd einfacher zu bedienen haben möchte, fügt bitte noch die dafür notwendigen Attribute und die leicht geänderten homebridgeMappings wie folgt ein:&lt;br /&gt;
 attr &amp;lt;ZM1701&amp;gt; genericDeviceType lock&lt;br /&gt;
 attr &amp;lt;ZM1701&amp;gt; homebridgeMapping LockCurrentState=doorLockOperation,values=/\ssecured/:SECURED;/unsecured/:UNSECURED LockTargetState=doorLockOperation,values=/\ssecured/:SECURED;/unsecured/:UNSECURED,cmds=SECURED:close;UNSECURED:open&lt;br /&gt;
 attr &amp;lt;ZM1701&amp;gt; /doorLockOperation open:open/doorLockOperation close:close&lt;br /&gt;
 attr &amp;lt;ZM1701&amp;gt; webCmd open:close&lt;br /&gt;
&lt;br /&gt;
Getestet mit&lt;br /&gt;
 FHEM 5.7 Rev. 12191&lt;br /&gt;
 homebridge 0.4.6&lt;br /&gt;
 homebridge-fhem 0.2.48&lt;br /&gt;
&lt;br /&gt;
== Roomba über THINKINGCLEANER Modul ==&lt;br /&gt;
 attr &amp;lt;THINKINGCLEANER&amp;gt; genericDeviceType switch&lt;br /&gt;
 attr &amp;lt;THINKINGCLEANER&amp;gt; homebridgeMapping clear On=state,valueOn=/^(on|dock)/,cmdOn=on,cmdOff=off,nocache=1 ChargingState=deviceStatus,values=/(_recon|_full|_trickle)$/:CHARGING;/^.*/:NOT_CHARGING&lt;br /&gt;
 attr &amp;lt;THINKINGCLEANER&amp;gt; siriName Robby&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Getestet mit&lt;br /&gt;
 FHEM 5.7 Rev. 12680&lt;br /&gt;
 homebridge 0.4.11&lt;br /&gt;
 homebridge-fhem 0.2.66&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Homematic HM-CC-RT-DN Funk-Heizkörperthermostat ==&lt;br /&gt;
 attr &amp;lt;HMCCRTDN_Channel2_Clima&amp;gt; homebridgeMapping TargetTemperature=desired-temp::desired-temp,minValue=5,maxValue=35,minStep=0.5,nocache=1&lt;br /&gt;
                                          CurrentTemperature=BU_Heizung_01_Clima:measured-temp,nocache=1&lt;br /&gt;
                                          StatusLowBattery=BU_Heizung_01:battery,values=ok:BATTERY_LEVEL_NORMAL;;/^.*/:BATTERY_LEVEL_LOW&lt;br /&gt;
                                          TargetHeatingCoolingState=heatingState,values=OFF:0;;HEAT:1;;COOL:2;;AUTO:3,cmds=OFF:controlManu+off;;HEAT:controlMode+boost;;AUTO:controlMode+auto;;COOL:controlManu+17.0&lt;br /&gt;
                                          CurrentHeatingCoolingState=heatingState,values=OFF:0;;HEAT:1;;COOL:2;;AUTO:0,valud=OFF&lt;br /&gt;
 attr &amp;lt;HMCCRTDN_Channel2_Clima&amp;gt; siriName Robby&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
[[Kategorie:Code Snippets]]&lt;/div&gt;</summary>
		<author><name>Svenson08</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19608</id>
		<title>Homebridge Start und Status in FHEM</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19608"/>
		<updated>2017-02-09T05:34:27Z</updated>

		<summary type="html">&lt;p&gt;Svenson08: /* Vorwort */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Um nicht bei jeder Änderung, welche die Homebridge betrifft, diese über die Console manuell neustarten zu müssen zeigt diese Lösung wie dies bequem aus FHEMWEB erfolgen kann. In den nachfolgenden Abschnitten sind die einzelnen Schritte dazu erläutert.&lt;br /&gt;
&lt;br /&gt;
== Vorwort ==&lt;br /&gt;
Die im weitern genutzten Bezeichnungen von Dummys, Scriptdateinamen o.ä. können geändert werden. Die Änderungen müssen jedoch auch an allen entsprechenden Stellen vorgenommen werden.&lt;br /&gt;
Genannte IP Adressen, Benutzernamen und Passwörter sind auf die eigenen Gegebenheiten anzupassen. Die Berechtigungen des Benutzers müssen zur Ausführung der Scripte geprüft und ggf. angepasst werden. Entprechende Linux Kentnisse sollten vorhanden sein. Dieser Artikel berücksichtigt das FHEM und Homebridge nicht zwingend auf dem selben System laufen. Die hier gezeigte Lösung kann für beide Varianten genutzt werden, FHEM und Homebridge auf dem gleichen System oder auf getrennten Systemen.&lt;br /&gt;
&lt;br /&gt;
== Umsetzung ==&lt;br /&gt;
&lt;br /&gt;
=== Status- und Kontroll-Dummy ===&lt;br /&gt;
[[Datei:HomebridgeDummy.PNG|mini|550px|Status- bzw. Kontroll-Dummy]]&lt;br /&gt;
&lt;br /&gt;
Es wird ein Dummy benötigt, welcher den Status des Homebridge-Dienstes anzeigt und über den dieser Dienst gesteuert werden kann. Das nötige Script um die Homebridge als Dienst zu starten wird weiter unten in diesem Artikel erstellt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
define SYS_Homebridge dummy&lt;br /&gt;
attr SYS_Homebridge devStateIcon .*on:general_an .*off:general_aus .*:audio_rec&lt;br /&gt;
attr SYS_Homebridge eventMap status:status start:start stop:stop restart:restart&lt;br /&gt;
attr SYS_Homebridge icon it_router&lt;br /&gt;
attr SYS_Homebridge room System&lt;br /&gt;
attr SYS_Homebridge userReadings OnStateChange:(start|stop|restart|status) {  system (&amp;quot;sudo service homebridge &amp;quot;.ReadingsVal($NAME,&amp;quot;state&amp;quot;,&amp;quot;restart&amp;quot;).&amp;quot; &amp;amp;&amp;quot; );;  }&lt;br /&gt;
attr SYS_Homebridge webCmd status:start:stop:restart&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Dummy wird durch setzen von &amp;quot;start&amp;quot;, &amp;quot;stop&amp;quot;, &amp;quot;restart&amp;quot; oder &amp;quot;status&amp;quot; jeweils das userReading ausführen und somit letztendlich den homebridge Dienst steuert.&lt;br /&gt;
&lt;br /&gt;
=== Start Script anlegen ===&lt;br /&gt;
Nun ist das Startscript für die Homebridge anzulegen. Mittels dem folgenden Befehl wird (wenn noch nicht vorhanden) das homebridge Script angelegt und im Editor geöffnet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Wenn die Homebridge nicht auf dem selben System läuft wie FHEM muss dieser Schritt auf dem Homebridge System ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Das nun folgende Script kann in die homebridge Datei, die im Nano Editor geöffnet, ist rein kopiert werden. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039;: die Variabeln &#039;&#039;homeBridgeUser&#039;&#039;, &#039;&#039;fhemHost&#039;&#039; und &#039;&#039;fhemHostTelnetPort&#039;&#039; sind ggf. auf die eigenen Gegebenheiten anzupassen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
### BEGIN INIT INFO&lt;br /&gt;
# Provides: homebridge&lt;br /&gt;
# Required-Start: $network $remote_fs $syslog&lt;br /&gt;
# Required-Stop: $remote_fs $syslog&lt;br /&gt;
# Default-Start: 2 3 4 5&lt;br /&gt;
# Default-Stop: 0 1 6&lt;br /&gt;
# Short-Description: Start daemon at boot time for homebridge&lt;br /&gt;
# Description: Enable service provided by daemon.&lt;br /&gt;
### END INIT INFO&lt;br /&gt;
export PATH=$PATH:/usr/local/bin&lt;br /&gt;
export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules&lt;br /&gt;
&lt;br /&gt;
PID=`pidof homebridge`&lt;br /&gt;
homeBridgeUser=&amp;quot;fhem&amp;quot;&lt;br /&gt;
fhemHost=127.0.0.1          #FHEM Server (Masterinstanz)&lt;br /&gt;
fhemHostTelnetPort=7072     #TelnetPort der FHEM Instanz&lt;br /&gt;
fhemDefine=&amp;quot;SYS_Homebridge&amp;quot;&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
start)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is already running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is already running&amp;quot;			&lt;br /&gt;
else&lt;br /&gt;
        su - $homeBridgeUser -c &amp;quot;homebridge &amp;gt; /dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&amp;quot;&lt;br /&gt;
        echo &amp;quot;Homebridge starting&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge starting&amp;quot;	&lt;br /&gt;
	perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine on&amp;quot;&lt;br /&gt;
        sleep 2&lt;br /&gt;
	$0 status&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
stop)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is not running&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        kill $PID&lt;br /&gt;
        echo &amp;quot;Homebridge stopping&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge stopping&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine off&amp;quot;&lt;br /&gt;
        sleep 2&lt;br /&gt;
	$0 status		&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
restart)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        $0 start&lt;br /&gt;
else&lt;br /&gt;
        $0 stop&lt;br /&gt;
        $0 start&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
status)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is running PID $PID&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge running as PID $PID&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is not running&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
*)&lt;br /&gt;
echo &amp;quot;Usage: $0 {start|stop|status|restart}&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
;;&lt;br /&gt;
esac&lt;br /&gt;
exit 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Script setzt in dem bereits angelegten Dummy ein Reading &#039;&#039;info&#039;&#039; in dem der Ausführungsstatus des Scripts wieder gegeben wird. Das Reading &#039;&#039;state&#039;&#039; wir auf on oder off gesetzt. &#039;&#039;On&#039;&#039; bedeutet das Homebridge gestartet ist, &#039;&#039;off&#039;&#039; das die Homebridge nicht ausgeführt wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Damit die Homebridge auch mit Start des Systems gestartet wird sind die folgenden zwei Schritte notwendig&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo chmod 755 /etc/init.d/homebridge&lt;br /&gt;
sudo update-rc.d homebridge defaults&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum testen kann der Dienst nun mit dem Befehl&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo service homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
bzw.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo /etc/init.d/homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gestartet werden. In dem angelegten Dummy werden zwei Readings erzeugt mit den entsprechenden Rückmeldungen aus dem Script. Die Readings werden erst angezeigt wenn die bereits geöffnete Detailseite des Dummys neu geladen wird.&lt;br /&gt;
&lt;br /&gt;
=== Testlauf / Fertig ===&lt;br /&gt;
Nun können die einzelnen Aktionen über den Dummy ausführt werden. Dabei wird jeweils der eingerichtete Dienst angesteuert und eine (mit kurzer Verzögerung) Rückmeldung gegeben.&lt;br /&gt;
&lt;br /&gt;
== Sonstiges ==&lt;br /&gt;
&lt;br /&gt;
=== FHEM Benutzer Zugriff auf Script gewähren ===&lt;br /&gt;
&lt;br /&gt;
Damit aus FHEM das Script ausgeführt werden kann benötigt dieser Benutzer entsprechende Berechtigungen. Dazu ist in der sudoers ein Eintrag zu ergänzen.&lt;br /&gt;
Dazu wird die sudoers Datei im Nano Editor geöffnet&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/sudoers&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dort sollte im Abschnitt &#039;&#039;# User privilege specification&#039;&#039; die folgende Zeile ergänzt werden &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung!&#039;&#039;&#039; Sollte FHEM nicht unter dem Benuter &#039;&#039;fhem&#039;&#039; laufen ist dies an den entsprechenden Stellen anzupassen. &lt;br /&gt;
&lt;br /&gt;
Beispielinhalt der sudoers:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# This file MUST be edited with the &#039;visudo&#039; command as root.&lt;br /&gt;
#&lt;br /&gt;
# Please consider adding local content in /etc/sudoers.d/ instead of&lt;br /&gt;
# directly modifying this file.&lt;br /&gt;
#&lt;br /&gt;
# See the man page for details on how to write a sudoers file.&lt;br /&gt;
#&lt;br /&gt;
Defaults	env_reset&lt;br /&gt;
Defaults	mail_badpass&lt;br /&gt;
Defaults	secure_path=&amp;quot;/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Host alias specification&lt;br /&gt;
&lt;br /&gt;
# User alias specification&lt;br /&gt;
&lt;br /&gt;
# Cmnd alias specification&lt;br /&gt;
&lt;br /&gt;
# User privilege specification&lt;br /&gt;
root	ALL=(ALL:ALL) ALL&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/opt/fhem/FHEM/backup.sh, /etc/init.d/homebridge&lt;br /&gt;
&lt;br /&gt;
# Members of the admin group may gain root privileges&lt;br /&gt;
%admin  ALL = (ALL) NOPASSWD: ALL&lt;br /&gt;
&lt;br /&gt;
# Allow members of group sudo to execute any command&lt;br /&gt;
%sudo	ALL=(ALL:ALL) ALL&lt;br /&gt;
&lt;br /&gt;
# See sudoers(5) for more information on &amp;quot;#include&amp;quot; directives:&lt;br /&gt;
&lt;br /&gt;
#includedir /etc/sudoers.d&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
&lt;br /&gt;
=== Anpassung wenn FHEM und Homebridge auf getrennten Systemen laufen ===&lt;br /&gt;
Unter dem Kapitel [[Umsetzung]] wurde bereits alles vorbereitet um mit wenigen Änderungen eine Homebridge zu starten die nicht auf dem selben System läuft wie FHEM. Es sind nur 2 Änderungen notwendig.&lt;br /&gt;
Die erste Änderung betrifft den eingerichteten Dummy. Hier ist das vorhandenen &#039;&#039;userReadings&#039;&#039; wie folgt abzuändern&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
attr SYS_Homebridge userReadings OnStateChange:(start|stop|restart|status) { system (&amp;quot;sudo /opt/fhem/FHEM/homebridgeserviceremote.sh &amp;quot;.ReadingsVal($NAME,&amp;quot;state&amp;quot;,&amp;quot;restart&amp;quot;).&amp;quot; &amp;amp;&amp;quot; );; } &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dadurch wird, durch die Aktionen des Dummys, ein weiteres Script angesprochen.&lt;br /&gt;
&lt;br /&gt;
Nun wird dieses Script mit hilfe des Nano Editor angelegt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /opt/fhem/FHEM/homebridgeserviceremote.sh&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und mit dem folgenden Inhalt befüllt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039;: die Variabeln &#039;&#039;remoteUser&#039;&#039;, &#039;&#039;remotePasswort&#039;&#039; und &#039;&#039;remoteHost&#039;&#039; sind ggf. auf die eigenen Gegebenheiten der entfernt laufenden Homebridge anzupassen. Der hier genannte Benutzer muss natürlich berechtigt sein die Homebridge starten zu können. Es sollte auch nicht der root User verwendet werden, sondern ein eigens dafür angelegter und in den Berechtigungen eingeschränkter Benutzer verwendet werden.&lt;br /&gt;
Wer zur Fehleranalyse etwas mehr sehen möchte ändert den Wert von &#039;&#039;debug&#039;&#039; auf 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
debug=0&lt;br /&gt;
remoteUser=&amp;quot;root&amp;quot;&lt;br /&gt;
remotePasswort=&amp;quot;root&amp;quot;&lt;br /&gt;
remoteHost=&amp;quot;192.168.1.111&amp;quot;&lt;br /&gt;
remoteService=&amp;quot;homebridge&amp;quot;&lt;br /&gt;
fhemHostTelnetPort=7072           #TelnetPort der FHEM Instanz&lt;br /&gt;
&lt;br /&gt;
# Vorraussetzungen prüfen&lt;br /&gt;
if [ $(dpkg-query -W -f=&#039;${Status}&#039; sshpass 2&amp;gt;/dev/null | grep -c &amp;quot;ok installed&amp;quot;) -eq 0 ];&lt;br /&gt;
then&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;sshpass wird benötigt. Installation beginnt&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] sshpass wird benötigt. Installation beginnt\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
	apt-get install sshpass&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;sshpass wurde installiert&amp;quot;;&lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] sshpass wurde installiert\&amp;quot;}&amp;quot;;		&lt;br /&gt;
	fi&lt;br /&gt;
fi&lt;br /&gt;
###################################&lt;br /&gt;
&lt;br /&gt;
# Befehl ausführen&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
start)&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführen von &#039;sudo service $remoteService start&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführen von &#039;sudo service $remoteService start&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
	sshpass -p &amp;quot;$remotePasswort&amp;quot; ssh -o StrictHostKeyChecking=no $remoteUser@$remoteHost &amp;quot;sudo service $remoteService start&amp;quot;&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführung beendet&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführung beendet\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
;;&lt;br /&gt;
stop)&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführen von &#039;sudo service $remoteService stop&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführen von &#039;sudo service $remoteService stop&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
	sshpass -p &amp;quot;$remotePasswort&amp;quot; ssh -o StrictHostKeyChecking=no $remoteUser@$remoteHost &amp;quot;sudo service $remoteService stop&amp;quot;&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführung beendet&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführung beendet\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
;;&lt;br /&gt;
restart)&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführen von &#039;sudo service $remoteService restart&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführen von &#039;sudo service $remoteService restart&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
	sshpass -p &amp;quot;$remotePasswort&amp;quot; ssh -o StrictHostKeyChecking=no $remoteUser@$remoteHost &amp;quot;sudo service $remoteService restart&amp;quot;&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführung beendet&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführung beendet\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
&lt;br /&gt;
;;&lt;br /&gt;
status)&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführen von &#039;sudo service $remoteService status&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;&amp;quot;;&lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführen von &#039;sudo service $remoteService status&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;\&amp;quot;}&amp;quot;;		&lt;br /&gt;
	fi&lt;br /&gt;
	sshpass -p &amp;quot;$remotePasswort&amp;quot; ssh -o StrictHostKeyChecking=no $remoteUser@$remoteHost &amp;quot;sudo service $remoteService status&amp;quot;&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführung beendet&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführung beendet\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
;;&lt;br /&gt;
*)&lt;br /&gt;
echo &amp;quot;Usage: $0 {start|stop|status|restart}&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
;;&lt;br /&gt;
esac&lt;br /&gt;
exit 0&lt;br /&gt;
###################################&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Script macht nicht sehr viel. Es verbindet sich über ssh mit dem entfernten System und startet (stopt, etc.) den Homebridge Dienst. Hinweis: es wird sshpass benötigt, welches das Script bei bedarf versucht zu installieren.&lt;br /&gt;
&lt;br /&gt;
== Dankeschön ==&lt;br /&gt;
Ein Dankeschön geht an die Entwicklergemeinde rund um Homebridge und dem FHEM Plugin für die Homebridge.&lt;br /&gt;
&lt;br /&gt;
Ein besonderes Dankeschön an &#039;&#039;No Legend&#039;&#039; der die zugrunde liegende Idee und Lösung in diesem Artikel beschrieben hat.&lt;/div&gt;</summary>
		<author><name>Svenson08</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19607</id>
		<title>Homebridge Start und Status in FHEM</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19607"/>
		<updated>2017-02-09T05:25:45Z</updated>

		<summary type="html">&lt;p&gt;Svenson08: /* Anpassung wenn FHEM und Homebridge auf getrennten Systemen laufen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Um nicht bei jeder Änderung, welche die Homebridge betrifft, diese über die Console manuell neustarten zu müssen zeigt diese Lösung wie dies bequem aus FHEMWEB erfolgen kann. In den nachfolgenden Abschnitten sind die einzelnen Schritte dazu erläutert.&lt;br /&gt;
&lt;br /&gt;
== Vorwort ==&lt;br /&gt;
Die im weitern genutzten Bezeichnungen von Dummys, Scriptdateinamen o.ä. können geändert werden. Die Änderungen müssen jedoch auch an allen entsprechenden Stellen vorgenommen werden.&lt;br /&gt;
Genannte IP Adressen, Benutzernamen und Passwörter sind auf die eigenen Gegebenheiten anzupassen. Die Berechtigungen des Benutzers müssen zur Ausführung der Scripte geprüft und ggf. angepasst werden. Entprechende Linux Kentnisse sollten vorhanden sein. In Teilen berücksichtigt dieser Artikel das FHEM und Homebridge nicht zwingend auf dem selben System laufen. Die hier gezeigte Lösung kann für beide Varianten genutzt werden, FHEM und Homebridge auf dem gleichen System oder auf getrennten Systemen.&lt;br /&gt;
&lt;br /&gt;
== Umsetzung ==&lt;br /&gt;
&lt;br /&gt;
=== Status- und Kontroll-Dummy ===&lt;br /&gt;
[[Datei:HomebridgeDummy.PNG|mini|550px|Status- bzw. Kontroll-Dummy]]&lt;br /&gt;
&lt;br /&gt;
Es wird ein Dummy benötigt, welcher den Status des Homebridge-Dienstes anzeigt und über den dieser Dienst gesteuert werden kann. Das nötige Script um die Homebridge als Dienst zu starten wird weiter unten in diesem Artikel erstellt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
define SYS_Homebridge dummy&lt;br /&gt;
attr SYS_Homebridge devStateIcon .*on:general_an .*off:general_aus .*:audio_rec&lt;br /&gt;
attr SYS_Homebridge eventMap status:status start:start stop:stop restart:restart&lt;br /&gt;
attr SYS_Homebridge icon it_router&lt;br /&gt;
attr SYS_Homebridge room System&lt;br /&gt;
attr SYS_Homebridge userReadings OnStateChange:(start|stop|restart|status) {  system (&amp;quot;sudo service homebridge &amp;quot;.ReadingsVal($NAME,&amp;quot;state&amp;quot;,&amp;quot;restart&amp;quot;).&amp;quot; &amp;amp;&amp;quot; );;  }&lt;br /&gt;
attr SYS_Homebridge webCmd status:start:stop:restart&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Dummy wird durch setzen von &amp;quot;start&amp;quot;, &amp;quot;stop&amp;quot;, &amp;quot;restart&amp;quot; oder &amp;quot;status&amp;quot; jeweils das userReading ausführen und somit letztendlich den homebridge Dienst steuert.&lt;br /&gt;
&lt;br /&gt;
=== Start Script anlegen ===&lt;br /&gt;
Nun ist das Startscript für die Homebridge anzulegen. Mittels dem folgenden Befehl wird (wenn noch nicht vorhanden) das homebridge Script angelegt und im Editor geöffnet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Wenn die Homebridge nicht auf dem selben System läuft wie FHEM muss dieser Schritt auf dem Homebridge System ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Das nun folgende Script kann in die homebridge Datei, die im Nano Editor geöffnet, ist rein kopiert werden. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039;: die Variabeln &#039;&#039;homeBridgeUser&#039;&#039;, &#039;&#039;fhemHost&#039;&#039; und &#039;&#039;fhemHostTelnetPort&#039;&#039; sind ggf. auf die eigenen Gegebenheiten anzupassen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
### BEGIN INIT INFO&lt;br /&gt;
# Provides: homebridge&lt;br /&gt;
# Required-Start: $network $remote_fs $syslog&lt;br /&gt;
# Required-Stop: $remote_fs $syslog&lt;br /&gt;
# Default-Start: 2 3 4 5&lt;br /&gt;
# Default-Stop: 0 1 6&lt;br /&gt;
# Short-Description: Start daemon at boot time for homebridge&lt;br /&gt;
# Description: Enable service provided by daemon.&lt;br /&gt;
### END INIT INFO&lt;br /&gt;
export PATH=$PATH:/usr/local/bin&lt;br /&gt;
export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules&lt;br /&gt;
&lt;br /&gt;
PID=`pidof homebridge`&lt;br /&gt;
homeBridgeUser=&amp;quot;fhem&amp;quot;&lt;br /&gt;
fhemHost=127.0.0.1          #FHEM Server (Masterinstanz)&lt;br /&gt;
fhemHostTelnetPort=7072     #TelnetPort der FHEM Instanz&lt;br /&gt;
fhemDefine=&amp;quot;SYS_Homebridge&amp;quot;&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
start)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is already running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is already running&amp;quot;			&lt;br /&gt;
else&lt;br /&gt;
        su - $homeBridgeUser -c &amp;quot;homebridge &amp;gt; /dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&amp;quot;&lt;br /&gt;
        echo &amp;quot;Homebridge starting&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge starting&amp;quot;	&lt;br /&gt;
	perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine on&amp;quot;&lt;br /&gt;
        sleep 2&lt;br /&gt;
	$0 status&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
stop)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is not running&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        kill $PID&lt;br /&gt;
        echo &amp;quot;Homebridge stopping&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge stopping&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine off&amp;quot;&lt;br /&gt;
        sleep 2&lt;br /&gt;
	$0 status		&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
restart)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        $0 start&lt;br /&gt;
else&lt;br /&gt;
        $0 stop&lt;br /&gt;
        $0 start&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
status)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is running PID $PID&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge running as PID $PID&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is not running&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
*)&lt;br /&gt;
echo &amp;quot;Usage: $0 {start|stop|status|restart}&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
;;&lt;br /&gt;
esac&lt;br /&gt;
exit 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Script setzt in dem bereits angelegten Dummy ein Reading &#039;&#039;info&#039;&#039; in dem der Ausführungsstatus des Scripts wieder gegeben wird. Das Reading &#039;&#039;state&#039;&#039; wir auf on oder off gesetzt. &#039;&#039;On&#039;&#039; bedeutet das Homebridge gestartet ist, &#039;&#039;off&#039;&#039; das die Homebridge nicht ausgeführt wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Damit die Homebridge auch mit Start des Systems gestartet wird sind die folgenden zwei Schritte notwendig&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo chmod 755 /etc/init.d/homebridge&lt;br /&gt;
sudo update-rc.d homebridge defaults&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum testen kann der Dienst nun mit dem Befehl&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo service homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
bzw.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo /etc/init.d/homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gestartet werden. In dem angelegten Dummy werden zwei Readings erzeugt mit den entsprechenden Rückmeldungen aus dem Script. Die Readings werden erst angezeigt wenn die bereits geöffnete Detailseite des Dummys neu geladen wird.&lt;br /&gt;
&lt;br /&gt;
=== Testlauf / Fertig ===&lt;br /&gt;
Nun können die einzelnen Aktionen über den Dummy ausführt werden. Dabei wird jeweils der eingerichtete Dienst angesteuert und eine (mit kurzer Verzögerung) Rückmeldung gegeben.&lt;br /&gt;
&lt;br /&gt;
== Sonstiges ==&lt;br /&gt;
&lt;br /&gt;
=== FHEM Benutzer Zugriff auf Script gewähren ===&lt;br /&gt;
&lt;br /&gt;
Damit aus FHEM das Script ausgeführt werden kann benötigt dieser Benutzer entsprechende Berechtigungen. Dazu ist in der sudoers ein Eintrag zu ergänzen.&lt;br /&gt;
Dazu wird die sudoers Datei im Nano Editor geöffnet&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/sudoers&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dort sollte im Abschnitt &#039;&#039;# User privilege specification&#039;&#039; die folgende Zeile ergänzt werden &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung!&#039;&#039;&#039; Sollte FHEM nicht unter dem Benuter &#039;&#039;fhem&#039;&#039; laufen ist dies an den entsprechenden Stellen anzupassen. &lt;br /&gt;
&lt;br /&gt;
Beispielinhalt der sudoers:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# This file MUST be edited with the &#039;visudo&#039; command as root.&lt;br /&gt;
#&lt;br /&gt;
# Please consider adding local content in /etc/sudoers.d/ instead of&lt;br /&gt;
# directly modifying this file.&lt;br /&gt;
#&lt;br /&gt;
# See the man page for details on how to write a sudoers file.&lt;br /&gt;
#&lt;br /&gt;
Defaults	env_reset&lt;br /&gt;
Defaults	mail_badpass&lt;br /&gt;
Defaults	secure_path=&amp;quot;/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Host alias specification&lt;br /&gt;
&lt;br /&gt;
# User alias specification&lt;br /&gt;
&lt;br /&gt;
# Cmnd alias specification&lt;br /&gt;
&lt;br /&gt;
# User privilege specification&lt;br /&gt;
root	ALL=(ALL:ALL) ALL&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/opt/fhem/FHEM/backup.sh, /etc/init.d/homebridge&lt;br /&gt;
&lt;br /&gt;
# Members of the admin group may gain root privileges&lt;br /&gt;
%admin  ALL = (ALL) NOPASSWD: ALL&lt;br /&gt;
&lt;br /&gt;
# Allow members of group sudo to execute any command&lt;br /&gt;
%sudo	ALL=(ALL:ALL) ALL&lt;br /&gt;
&lt;br /&gt;
# See sudoers(5) for more information on &amp;quot;#include&amp;quot; directives:&lt;br /&gt;
&lt;br /&gt;
#includedir /etc/sudoers.d&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
&lt;br /&gt;
=== Anpassung wenn FHEM und Homebridge auf getrennten Systemen laufen ===&lt;br /&gt;
Unter dem Kapitel [[Umsetzung]] wurde bereits alles vorbereitet um mit wenigen Änderungen eine Homebridge zu starten die nicht auf dem selben System läuft wie FHEM. Es sind nur 2 Änderungen notwendig.&lt;br /&gt;
Die erste Änderung betrifft den eingerichteten Dummy. Hier ist das vorhandenen &#039;&#039;userReadings&#039;&#039; wie folgt abzuändern&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
attr SYS_Homebridge userReadings OnStateChange:(start|stop|restart|status) { system (&amp;quot;sudo /opt/fhem/FHEM/homebridgeserviceremote.sh &amp;quot;.ReadingsVal($NAME,&amp;quot;state&amp;quot;,&amp;quot;restart&amp;quot;).&amp;quot; &amp;amp;&amp;quot; );; } &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dadurch wird, durch die Aktionen des Dummys, ein weiteres Script angesprochen.&lt;br /&gt;
&lt;br /&gt;
Nun wird dieses Script mit hilfe des Nano Editor angelegt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /opt/fhem/FHEM/homebridgeserviceremote.sh&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und mit dem folgenden Inhalt befüllt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039;: die Variabeln &#039;&#039;remoteUser&#039;&#039;, &#039;&#039;remotePasswort&#039;&#039; und &#039;&#039;remoteHost&#039;&#039; sind ggf. auf die eigenen Gegebenheiten der entfernt laufenden Homebridge anzupassen. Der hier genannte Benutzer muss natürlich berechtigt sein die Homebridge starten zu können. Es sollte auch nicht der root User verwendet werden, sondern ein eigens dafür angelegter und in den Berechtigungen eingeschränkter Benutzer verwendet werden.&lt;br /&gt;
Wer zur Fehleranalyse etwas mehr sehen möchte ändert den Wert von &#039;&#039;debug&#039;&#039; auf 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
debug=0&lt;br /&gt;
remoteUser=&amp;quot;root&amp;quot;&lt;br /&gt;
remotePasswort=&amp;quot;root&amp;quot;&lt;br /&gt;
remoteHost=&amp;quot;192.168.1.111&amp;quot;&lt;br /&gt;
remoteService=&amp;quot;homebridge&amp;quot;&lt;br /&gt;
fhemHostTelnetPort=7072           #TelnetPort der FHEM Instanz&lt;br /&gt;
&lt;br /&gt;
# Vorraussetzungen prüfen&lt;br /&gt;
if [ $(dpkg-query -W -f=&#039;${Status}&#039; sshpass 2&amp;gt;/dev/null | grep -c &amp;quot;ok installed&amp;quot;) -eq 0 ];&lt;br /&gt;
then&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;sshpass wird benötigt. Installation beginnt&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] sshpass wird benötigt. Installation beginnt\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
	apt-get install sshpass&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;sshpass wurde installiert&amp;quot;;&lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] sshpass wurde installiert\&amp;quot;}&amp;quot;;		&lt;br /&gt;
	fi&lt;br /&gt;
fi&lt;br /&gt;
###################################&lt;br /&gt;
&lt;br /&gt;
# Befehl ausführen&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
start)&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführen von &#039;sudo service $remoteService start&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführen von &#039;sudo service $remoteService start&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
	sshpass -p &amp;quot;$remotePasswort&amp;quot; ssh -o StrictHostKeyChecking=no $remoteUser@$remoteHost &amp;quot;sudo service $remoteService start&amp;quot;&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführung beendet&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführung beendet\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
;;&lt;br /&gt;
stop)&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführen von &#039;sudo service $remoteService stop&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführen von &#039;sudo service $remoteService stop&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
	sshpass -p &amp;quot;$remotePasswort&amp;quot; ssh -o StrictHostKeyChecking=no $remoteUser@$remoteHost &amp;quot;sudo service $remoteService stop&amp;quot;&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführung beendet&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführung beendet\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
;;&lt;br /&gt;
restart)&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführen von &#039;sudo service $remoteService restart&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführen von &#039;sudo service $remoteService restart&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
	sshpass -p &amp;quot;$remotePasswort&amp;quot; ssh -o StrictHostKeyChecking=no $remoteUser@$remoteHost &amp;quot;sudo service $remoteService restart&amp;quot;&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführung beendet&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführung beendet\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
&lt;br /&gt;
;;&lt;br /&gt;
status)&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführen von &#039;sudo service $remoteService status&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;&amp;quot;;&lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführen von &#039;sudo service $remoteService status&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;\&amp;quot;}&amp;quot;;		&lt;br /&gt;
	fi&lt;br /&gt;
	sshpass -p &amp;quot;$remotePasswort&amp;quot; ssh -o StrictHostKeyChecking=no $remoteUser@$remoteHost &amp;quot;sudo service $remoteService status&amp;quot;&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführung beendet&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführung beendet\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
;;&lt;br /&gt;
*)&lt;br /&gt;
echo &amp;quot;Usage: $0 {start|stop|status|restart}&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
;;&lt;br /&gt;
esac&lt;br /&gt;
exit 0&lt;br /&gt;
###################################&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Script macht nicht sehr viel. Es verbindet sich über ssh mit dem entfernten System und startet (stopt, etc.) den Homebridge Dienst. Hinweis: es wird sshpass benötigt, welches das Script bei bedarf versucht zu installieren.&lt;br /&gt;
&lt;br /&gt;
== Dankeschön ==&lt;br /&gt;
Ein Dankeschön geht an die Entwicklergemeinde rund um Homebridge und dem FHEM Plugin für die Homebridge.&lt;br /&gt;
&lt;br /&gt;
Ein besonderes Dankeschön an &#039;&#039;No Legend&#039;&#039; der die zugrunde liegende Idee und Lösung in diesem Artikel beschrieben hat.&lt;/div&gt;</summary>
		<author><name>Svenson08</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19606</id>
		<title>Homebridge Start und Status in FHEM</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19606"/>
		<updated>2017-02-09T05:24:13Z</updated>

		<summary type="html">&lt;p&gt;Svenson08: /* Anpassung wenn FHEM und Homebridge auf getrennten Systemen laufen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Um nicht bei jeder Änderung, welche die Homebridge betrifft, diese über die Console manuell neustarten zu müssen zeigt diese Lösung wie dies bequem aus FHEMWEB erfolgen kann. In den nachfolgenden Abschnitten sind die einzelnen Schritte dazu erläutert.&lt;br /&gt;
&lt;br /&gt;
== Vorwort ==&lt;br /&gt;
Die im weitern genutzten Bezeichnungen von Dummys, Scriptdateinamen o.ä. können geändert werden. Die Änderungen müssen jedoch auch an allen entsprechenden Stellen vorgenommen werden.&lt;br /&gt;
Genannte IP Adressen, Benutzernamen und Passwörter sind auf die eigenen Gegebenheiten anzupassen. Die Berechtigungen des Benutzers müssen zur Ausführung der Scripte geprüft und ggf. angepasst werden. Entprechende Linux Kentnisse sollten vorhanden sein. In Teilen berücksichtigt dieser Artikel das FHEM und Homebridge nicht zwingend auf dem selben System laufen. Die hier gezeigte Lösung kann für beide Varianten genutzt werden, FHEM und Homebridge auf dem gleichen System oder auf getrennten Systemen.&lt;br /&gt;
&lt;br /&gt;
== Umsetzung ==&lt;br /&gt;
&lt;br /&gt;
=== Status- und Kontroll-Dummy ===&lt;br /&gt;
[[Datei:HomebridgeDummy.PNG|mini|550px|Status- bzw. Kontroll-Dummy]]&lt;br /&gt;
&lt;br /&gt;
Es wird ein Dummy benötigt, welcher den Status des Homebridge-Dienstes anzeigt und über den dieser Dienst gesteuert werden kann. Das nötige Script um die Homebridge als Dienst zu starten wird weiter unten in diesem Artikel erstellt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
define SYS_Homebridge dummy&lt;br /&gt;
attr SYS_Homebridge devStateIcon .*on:general_an .*off:general_aus .*:audio_rec&lt;br /&gt;
attr SYS_Homebridge eventMap status:status start:start stop:stop restart:restart&lt;br /&gt;
attr SYS_Homebridge icon it_router&lt;br /&gt;
attr SYS_Homebridge room System&lt;br /&gt;
attr SYS_Homebridge userReadings OnStateChange:(start|stop|restart|status) {  system (&amp;quot;sudo service homebridge &amp;quot;.ReadingsVal($NAME,&amp;quot;state&amp;quot;,&amp;quot;restart&amp;quot;).&amp;quot; &amp;amp;&amp;quot; );;  }&lt;br /&gt;
attr SYS_Homebridge webCmd status:start:stop:restart&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Dummy wird durch setzen von &amp;quot;start&amp;quot;, &amp;quot;stop&amp;quot;, &amp;quot;restart&amp;quot; oder &amp;quot;status&amp;quot; jeweils das userReading ausführen und somit letztendlich den homebridge Dienst steuert.&lt;br /&gt;
&lt;br /&gt;
=== Start Script anlegen ===&lt;br /&gt;
Nun ist das Startscript für die Homebridge anzulegen. Mittels dem folgenden Befehl wird (wenn noch nicht vorhanden) das homebridge Script angelegt und im Editor geöffnet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Wenn die Homebridge nicht auf dem selben System läuft wie FHEM muss dieser Schritt auf dem Homebridge System ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Das nun folgende Script kann in die homebridge Datei, die im Nano Editor geöffnet, ist rein kopiert werden. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039;: die Variabeln &#039;&#039;homeBridgeUser&#039;&#039;, &#039;&#039;fhemHost&#039;&#039; und &#039;&#039;fhemHostTelnetPort&#039;&#039; sind ggf. auf die eigenen Gegebenheiten anzupassen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
### BEGIN INIT INFO&lt;br /&gt;
# Provides: homebridge&lt;br /&gt;
# Required-Start: $network $remote_fs $syslog&lt;br /&gt;
# Required-Stop: $remote_fs $syslog&lt;br /&gt;
# Default-Start: 2 3 4 5&lt;br /&gt;
# Default-Stop: 0 1 6&lt;br /&gt;
# Short-Description: Start daemon at boot time for homebridge&lt;br /&gt;
# Description: Enable service provided by daemon.&lt;br /&gt;
### END INIT INFO&lt;br /&gt;
export PATH=$PATH:/usr/local/bin&lt;br /&gt;
export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules&lt;br /&gt;
&lt;br /&gt;
PID=`pidof homebridge`&lt;br /&gt;
homeBridgeUser=&amp;quot;fhem&amp;quot;&lt;br /&gt;
fhemHost=127.0.0.1          #FHEM Server (Masterinstanz)&lt;br /&gt;
fhemHostTelnetPort=7072     #TelnetPort der FHEM Instanz&lt;br /&gt;
fhemDefine=&amp;quot;SYS_Homebridge&amp;quot;&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
start)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is already running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is already running&amp;quot;			&lt;br /&gt;
else&lt;br /&gt;
        su - $homeBridgeUser -c &amp;quot;homebridge &amp;gt; /dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&amp;quot;&lt;br /&gt;
        echo &amp;quot;Homebridge starting&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge starting&amp;quot;	&lt;br /&gt;
	perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine on&amp;quot;&lt;br /&gt;
        sleep 2&lt;br /&gt;
	$0 status&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
stop)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is not running&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        kill $PID&lt;br /&gt;
        echo &amp;quot;Homebridge stopping&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge stopping&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine off&amp;quot;&lt;br /&gt;
        sleep 2&lt;br /&gt;
	$0 status		&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
restart)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        $0 start&lt;br /&gt;
else&lt;br /&gt;
        $0 stop&lt;br /&gt;
        $0 start&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
status)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is running PID $PID&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge running as PID $PID&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is not running&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
*)&lt;br /&gt;
echo &amp;quot;Usage: $0 {start|stop|status|restart}&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
;;&lt;br /&gt;
esac&lt;br /&gt;
exit 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Script setzt in dem bereits angelegten Dummy ein Reading &#039;&#039;info&#039;&#039; in dem der Ausführungsstatus des Scripts wieder gegeben wird. Das Reading &#039;&#039;state&#039;&#039; wir auf on oder off gesetzt. &#039;&#039;On&#039;&#039; bedeutet das Homebridge gestartet ist, &#039;&#039;off&#039;&#039; das die Homebridge nicht ausgeführt wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Damit die Homebridge auch mit Start des Systems gestartet wird sind die folgenden zwei Schritte notwendig&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo chmod 755 /etc/init.d/homebridge&lt;br /&gt;
sudo update-rc.d homebridge defaults&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum testen kann der Dienst nun mit dem Befehl&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo service homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
bzw.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo /etc/init.d/homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gestartet werden. In dem angelegten Dummy werden zwei Readings erzeugt mit den entsprechenden Rückmeldungen aus dem Script. Die Readings werden erst angezeigt wenn die bereits geöffnete Detailseite des Dummys neu geladen wird.&lt;br /&gt;
&lt;br /&gt;
=== Testlauf / Fertig ===&lt;br /&gt;
Nun können die einzelnen Aktionen über den Dummy ausführt werden. Dabei wird jeweils der eingerichtete Dienst angesteuert und eine (mit kurzer Verzögerung) Rückmeldung gegeben.&lt;br /&gt;
&lt;br /&gt;
== Sonstiges ==&lt;br /&gt;
&lt;br /&gt;
=== FHEM Benutzer Zugriff auf Script gewähren ===&lt;br /&gt;
&lt;br /&gt;
Damit aus FHEM das Script ausgeführt werden kann benötigt dieser Benutzer entsprechende Berechtigungen. Dazu ist in der sudoers ein Eintrag zu ergänzen.&lt;br /&gt;
Dazu wird die sudoers Datei im Nano Editor geöffnet&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/sudoers&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dort sollte im Abschnitt &#039;&#039;# User privilege specification&#039;&#039; die folgende Zeile ergänzt werden &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung!&#039;&#039;&#039; Sollte FHEM nicht unter dem Benuter &#039;&#039;fhem&#039;&#039; laufen ist dies an den entsprechenden Stellen anzupassen. &lt;br /&gt;
&lt;br /&gt;
Beispielinhalt der sudoers:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# This file MUST be edited with the &#039;visudo&#039; command as root.&lt;br /&gt;
#&lt;br /&gt;
# Please consider adding local content in /etc/sudoers.d/ instead of&lt;br /&gt;
# directly modifying this file.&lt;br /&gt;
#&lt;br /&gt;
# See the man page for details on how to write a sudoers file.&lt;br /&gt;
#&lt;br /&gt;
Defaults	env_reset&lt;br /&gt;
Defaults	mail_badpass&lt;br /&gt;
Defaults	secure_path=&amp;quot;/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Host alias specification&lt;br /&gt;
&lt;br /&gt;
# User alias specification&lt;br /&gt;
&lt;br /&gt;
# Cmnd alias specification&lt;br /&gt;
&lt;br /&gt;
# User privilege specification&lt;br /&gt;
root	ALL=(ALL:ALL) ALL&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/opt/fhem/FHEM/backup.sh, /etc/init.d/homebridge&lt;br /&gt;
&lt;br /&gt;
# Members of the admin group may gain root privileges&lt;br /&gt;
%admin  ALL = (ALL) NOPASSWD: ALL&lt;br /&gt;
&lt;br /&gt;
# Allow members of group sudo to execute any command&lt;br /&gt;
%sudo	ALL=(ALL:ALL) ALL&lt;br /&gt;
&lt;br /&gt;
# See sudoers(5) for more information on &amp;quot;#include&amp;quot; directives:&lt;br /&gt;
&lt;br /&gt;
#includedir /etc/sudoers.d&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
&lt;br /&gt;
=== Anpassung wenn FHEM und Homebridge auf getrennten Systemen laufen ===&lt;br /&gt;
Unter dem Kapitel [[Umsetzung]] wurde bereits alles vorbereitet um mit wenigen Änderungen eine Homebridge zu starten die nicht auf dem selben System läuft wie FHEM. Es nur 2 Änderungen notwendig.&lt;br /&gt;
Die erste Änderung betrifft den eingerichteten Dummy. Hier ist das vorhandenen &#039;&#039;userReadings&#039;&#039; wie folgt abzuändern&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
attr SYS_Homebridge userReadings OnStateChange:(start|stop|restart|status) { system (&amp;quot;sudo /opt/fhem/FHEM/homebridgeserviceremote.sh &amp;quot;.ReadingsVal($NAME,&amp;quot;state&amp;quot;,&amp;quot;restart&amp;quot;).&amp;quot; &amp;amp;&amp;quot; );; } &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dadurch wird, durch die Aktionen des Dummys, ein weiteres Script angesprochen.&lt;br /&gt;
&lt;br /&gt;
Nun wird dieses Script mit hilfe des Nano Editor angelegt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /opt/fhem/FHEM/homebridgeserviceremote.sh&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und mit dem folgenden Inhalt befüllt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039;: die Variabeln &#039;&#039;remoteUser&#039;&#039;, &#039;&#039;remotePasswort&#039;&#039; und &#039;&#039;remoteHost&#039;&#039; sind ggf. auf die eigenen Gegebenheiten der entfernt laufenden Homebridge anzupassen. Der hier genannte Benutzer muss natürlich berechtigt sein die Homebridge starten zu können. Es sollte auch nicht der root User verwendet werden, sondern ein eigens dafür angelegter und in den Berechtigungen eingeschränkter Benutzer verwendet werden.&lt;br /&gt;
Wer zur Fehleranalyse etwas mehr sehen möchte ändert den Wert von &#039;&#039;debug&#039;&#039; auf 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
debug=0&lt;br /&gt;
remoteUser=&amp;quot;root&amp;quot;&lt;br /&gt;
remotePasswort=&amp;quot;root&amp;quot;&lt;br /&gt;
remoteHost=&amp;quot;192.168.1.111&amp;quot;&lt;br /&gt;
remoteService=&amp;quot;homebridge&amp;quot;&lt;br /&gt;
fhemHostTelnetPort=7072           #TelnetPort der FHEM Instanz&lt;br /&gt;
&lt;br /&gt;
# Vorraussetzungen prüfen&lt;br /&gt;
if [ $(dpkg-query -W -f=&#039;${Status}&#039; sshpass 2&amp;gt;/dev/null | grep -c &amp;quot;ok installed&amp;quot;) -eq 0 ];&lt;br /&gt;
then&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;sshpass wird benötigt. Installation beginnt&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] sshpass wird benötigt. Installation beginnt\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
	apt-get install sshpass&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;sshpass wurde installiert&amp;quot;;&lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] sshpass wurde installiert\&amp;quot;}&amp;quot;;		&lt;br /&gt;
	fi&lt;br /&gt;
fi&lt;br /&gt;
###################################&lt;br /&gt;
&lt;br /&gt;
# Befehl ausführen&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
start)&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführen von &#039;sudo service $remoteService start&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführen von &#039;sudo service $remoteService start&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
	sshpass -p &amp;quot;$remotePasswort&amp;quot; ssh -o StrictHostKeyChecking=no $remoteUser@$remoteHost &amp;quot;sudo service $remoteService start&amp;quot;&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführung beendet&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführung beendet\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
;;&lt;br /&gt;
stop)&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführen von &#039;sudo service $remoteService stop&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführen von &#039;sudo service $remoteService stop&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
	sshpass -p &amp;quot;$remotePasswort&amp;quot; ssh -o StrictHostKeyChecking=no $remoteUser@$remoteHost &amp;quot;sudo service $remoteService stop&amp;quot;&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführung beendet&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführung beendet\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
;;&lt;br /&gt;
restart)&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführen von &#039;sudo service $remoteService restart&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführen von &#039;sudo service $remoteService restart&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
	sshpass -p &amp;quot;$remotePasswort&amp;quot; ssh -o StrictHostKeyChecking=no $remoteUser@$remoteHost &amp;quot;sudo service $remoteService restart&amp;quot;&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführung beendet&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführung beendet\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
&lt;br /&gt;
;;&lt;br /&gt;
status)&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführen von &#039;sudo service $remoteService status&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;&amp;quot;;&lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführen von &#039;sudo service $remoteService status&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;\&amp;quot;}&amp;quot;;		&lt;br /&gt;
	fi&lt;br /&gt;
	sshpass -p &amp;quot;$remotePasswort&amp;quot; ssh -o StrictHostKeyChecking=no $remoteUser@$remoteHost &amp;quot;sudo service $remoteService status&amp;quot;&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführung beendet&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführung beendet\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
;;&lt;br /&gt;
*)&lt;br /&gt;
echo &amp;quot;Usage: $0 {start|stop|status|restart}&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
;;&lt;br /&gt;
esac&lt;br /&gt;
exit 0&lt;br /&gt;
###################################&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Script macht nicht sehr viel. Es verbindet sich über ssh mit dem entfernten System und startet (stopt, etc.) den Homebridge Dienst. Hinweis: es wird sshpass benötigt, welches das Script bei bedarf versucht zu installieren.&lt;br /&gt;
&lt;br /&gt;
== Dankeschön ==&lt;br /&gt;
Ein Dankeschön geht an die Entwicklergemeinde rund um Homebridge und dem FHEM Plugin für die Homebridge.&lt;br /&gt;
&lt;br /&gt;
Ein besonderes Dankeschön an &#039;&#039;No Legend&#039;&#039; der die zugrunde liegende Idee und Lösung in diesem Artikel beschrieben hat.&lt;/div&gt;</summary>
		<author><name>Svenson08</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19605</id>
		<title>Homebridge Start und Status in FHEM</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19605"/>
		<updated>2017-02-09T05:23:28Z</updated>

		<summary type="html">&lt;p&gt;Svenson08: /* FHEM Benutzer Zugriff auf Script gewähren */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Um nicht bei jeder Änderung, welche die Homebridge betrifft, diese über die Console manuell neustarten zu müssen zeigt diese Lösung wie dies bequem aus FHEMWEB erfolgen kann. In den nachfolgenden Abschnitten sind die einzelnen Schritte dazu erläutert.&lt;br /&gt;
&lt;br /&gt;
== Vorwort ==&lt;br /&gt;
Die im weitern genutzten Bezeichnungen von Dummys, Scriptdateinamen o.ä. können geändert werden. Die Änderungen müssen jedoch auch an allen entsprechenden Stellen vorgenommen werden.&lt;br /&gt;
Genannte IP Adressen, Benutzernamen und Passwörter sind auf die eigenen Gegebenheiten anzupassen. Die Berechtigungen des Benutzers müssen zur Ausführung der Scripte geprüft und ggf. angepasst werden. Entprechende Linux Kentnisse sollten vorhanden sein. In Teilen berücksichtigt dieser Artikel das FHEM und Homebridge nicht zwingend auf dem selben System laufen. Die hier gezeigte Lösung kann für beide Varianten genutzt werden, FHEM und Homebridge auf dem gleichen System oder auf getrennten Systemen.&lt;br /&gt;
&lt;br /&gt;
== Umsetzung ==&lt;br /&gt;
&lt;br /&gt;
=== Status- und Kontroll-Dummy ===&lt;br /&gt;
[[Datei:HomebridgeDummy.PNG|mini|550px|Status- bzw. Kontroll-Dummy]]&lt;br /&gt;
&lt;br /&gt;
Es wird ein Dummy benötigt, welcher den Status des Homebridge-Dienstes anzeigt und über den dieser Dienst gesteuert werden kann. Das nötige Script um die Homebridge als Dienst zu starten wird weiter unten in diesem Artikel erstellt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
define SYS_Homebridge dummy&lt;br /&gt;
attr SYS_Homebridge devStateIcon .*on:general_an .*off:general_aus .*:audio_rec&lt;br /&gt;
attr SYS_Homebridge eventMap status:status start:start stop:stop restart:restart&lt;br /&gt;
attr SYS_Homebridge icon it_router&lt;br /&gt;
attr SYS_Homebridge room System&lt;br /&gt;
attr SYS_Homebridge userReadings OnStateChange:(start|stop|restart|status) {  system (&amp;quot;sudo service homebridge &amp;quot;.ReadingsVal($NAME,&amp;quot;state&amp;quot;,&amp;quot;restart&amp;quot;).&amp;quot; &amp;amp;&amp;quot; );;  }&lt;br /&gt;
attr SYS_Homebridge webCmd status:start:stop:restart&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Dummy wird durch setzen von &amp;quot;start&amp;quot;, &amp;quot;stop&amp;quot;, &amp;quot;restart&amp;quot; oder &amp;quot;status&amp;quot; jeweils das userReading ausführen und somit letztendlich den homebridge Dienst steuert.&lt;br /&gt;
&lt;br /&gt;
=== Start Script anlegen ===&lt;br /&gt;
Nun ist das Startscript für die Homebridge anzulegen. Mittels dem folgenden Befehl wird (wenn noch nicht vorhanden) das homebridge Script angelegt und im Editor geöffnet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Wenn die Homebridge nicht auf dem selben System läuft wie FHEM muss dieser Schritt auf dem Homebridge System ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Das nun folgende Script kann in die homebridge Datei, die im Nano Editor geöffnet, ist rein kopiert werden. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039;: die Variabeln &#039;&#039;homeBridgeUser&#039;&#039;, &#039;&#039;fhemHost&#039;&#039; und &#039;&#039;fhemHostTelnetPort&#039;&#039; sind ggf. auf die eigenen Gegebenheiten anzupassen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
### BEGIN INIT INFO&lt;br /&gt;
# Provides: homebridge&lt;br /&gt;
# Required-Start: $network $remote_fs $syslog&lt;br /&gt;
# Required-Stop: $remote_fs $syslog&lt;br /&gt;
# Default-Start: 2 3 4 5&lt;br /&gt;
# Default-Stop: 0 1 6&lt;br /&gt;
# Short-Description: Start daemon at boot time for homebridge&lt;br /&gt;
# Description: Enable service provided by daemon.&lt;br /&gt;
### END INIT INFO&lt;br /&gt;
export PATH=$PATH:/usr/local/bin&lt;br /&gt;
export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules&lt;br /&gt;
&lt;br /&gt;
PID=`pidof homebridge`&lt;br /&gt;
homeBridgeUser=&amp;quot;fhem&amp;quot;&lt;br /&gt;
fhemHost=127.0.0.1          #FHEM Server (Masterinstanz)&lt;br /&gt;
fhemHostTelnetPort=7072     #TelnetPort der FHEM Instanz&lt;br /&gt;
fhemDefine=&amp;quot;SYS_Homebridge&amp;quot;&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
start)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is already running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is already running&amp;quot;			&lt;br /&gt;
else&lt;br /&gt;
        su - $homeBridgeUser -c &amp;quot;homebridge &amp;gt; /dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&amp;quot;&lt;br /&gt;
        echo &amp;quot;Homebridge starting&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge starting&amp;quot;	&lt;br /&gt;
	perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine on&amp;quot;&lt;br /&gt;
        sleep 2&lt;br /&gt;
	$0 status&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
stop)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is not running&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        kill $PID&lt;br /&gt;
        echo &amp;quot;Homebridge stopping&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge stopping&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine off&amp;quot;&lt;br /&gt;
        sleep 2&lt;br /&gt;
	$0 status		&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
restart)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        $0 start&lt;br /&gt;
else&lt;br /&gt;
        $0 stop&lt;br /&gt;
        $0 start&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
status)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is running PID $PID&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge running as PID $PID&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is not running&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
*)&lt;br /&gt;
echo &amp;quot;Usage: $0 {start|stop|status|restart}&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
;;&lt;br /&gt;
esac&lt;br /&gt;
exit 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Script setzt in dem bereits angelegten Dummy ein Reading &#039;&#039;info&#039;&#039; in dem der Ausführungsstatus des Scripts wieder gegeben wird. Das Reading &#039;&#039;state&#039;&#039; wir auf on oder off gesetzt. &#039;&#039;On&#039;&#039; bedeutet das Homebridge gestartet ist, &#039;&#039;off&#039;&#039; das die Homebridge nicht ausgeführt wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Damit die Homebridge auch mit Start des Systems gestartet wird sind die folgenden zwei Schritte notwendig&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo chmod 755 /etc/init.d/homebridge&lt;br /&gt;
sudo update-rc.d homebridge defaults&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum testen kann der Dienst nun mit dem Befehl&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo service homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
bzw.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo /etc/init.d/homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gestartet werden. In dem angelegten Dummy werden zwei Readings erzeugt mit den entsprechenden Rückmeldungen aus dem Script. Die Readings werden erst angezeigt wenn die bereits geöffnete Detailseite des Dummys neu geladen wird.&lt;br /&gt;
&lt;br /&gt;
=== Testlauf / Fertig ===&lt;br /&gt;
Nun können die einzelnen Aktionen über den Dummy ausführt werden. Dabei wird jeweils der eingerichtete Dienst angesteuert und eine (mit kurzer Verzögerung) Rückmeldung gegeben.&lt;br /&gt;
&lt;br /&gt;
== Sonstiges ==&lt;br /&gt;
&lt;br /&gt;
=== FHEM Benutzer Zugriff auf Script gewähren ===&lt;br /&gt;
&lt;br /&gt;
Damit aus FHEM das Script ausgeführt werden kann benötigt dieser Benutzer entsprechende Berechtigungen. Dazu ist in der sudoers ein Eintrag zu ergänzen.&lt;br /&gt;
Dazu wird die sudoers Datei im Nano Editor geöffnet&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/sudoers&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dort sollte im Abschnitt &#039;&#039;# User privilege specification&#039;&#039; die folgende Zeile ergänzt werden &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung!&#039;&#039;&#039; Sollte FHEM nicht unter dem Benuter &#039;&#039;fhem&#039;&#039; laufen ist dies an den entsprechenden Stellen anzupassen. &lt;br /&gt;
&lt;br /&gt;
Beispielinhalt der sudoers:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# This file MUST be edited with the &#039;visudo&#039; command as root.&lt;br /&gt;
#&lt;br /&gt;
# Please consider adding local content in /etc/sudoers.d/ instead of&lt;br /&gt;
# directly modifying this file.&lt;br /&gt;
#&lt;br /&gt;
# See the man page for details on how to write a sudoers file.&lt;br /&gt;
#&lt;br /&gt;
Defaults	env_reset&lt;br /&gt;
Defaults	mail_badpass&lt;br /&gt;
Defaults	secure_path=&amp;quot;/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Host alias specification&lt;br /&gt;
&lt;br /&gt;
# User alias specification&lt;br /&gt;
&lt;br /&gt;
# Cmnd alias specification&lt;br /&gt;
&lt;br /&gt;
# User privilege specification&lt;br /&gt;
root	ALL=(ALL:ALL) ALL&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/opt/fhem/FHEM/backup.sh, /etc/init.d/homebridge&lt;br /&gt;
&lt;br /&gt;
# Members of the admin group may gain root privileges&lt;br /&gt;
%admin  ALL = (ALL) NOPASSWD: ALL&lt;br /&gt;
&lt;br /&gt;
# Allow members of group sudo to execute any command&lt;br /&gt;
%sudo	ALL=(ALL:ALL) ALL&lt;br /&gt;
&lt;br /&gt;
# See sudoers(5) for more information on &amp;quot;#include&amp;quot; directives:&lt;br /&gt;
&lt;br /&gt;
#includedir /etc/sudoers.d&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
&lt;br /&gt;
=== Anpassung wenn FHEM und Homebridge auf getrennten Systemen laufen ===&lt;br /&gt;
Unter dem Kapitel [[Umsetzung]] wurde bereits alle vorbereitet um mit wenigen Änderungen eine Homebridge zu starten die nicht auf dem selben System läuft wie FHEM. Es nur 2 Änderungen notwendig.&lt;br /&gt;
Die erste Änderung betrifft den eingerichteten Dummy. Hier ist das vorhandenen &#039;&#039;userReadings&#039;&#039; wie folgt abzuändern&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
attr SYS_Homebridge userReadings OnStateChange:(start|stop|restart|status) { system (&amp;quot;sudo /opt/fhem/FHEM/homebridgeserviceremote.sh &amp;quot;.ReadingsVal($NAME,&amp;quot;state&amp;quot;,&amp;quot;restart&amp;quot;).&amp;quot; &amp;amp;&amp;quot; );; } &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dadurch wird, durch die Aktionen des Dummys, ein weiteres Script angesprochen.&lt;br /&gt;
&lt;br /&gt;
Nun wird dieses Script mit hilfe des Nano Editor angelegt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /opt/fhem/FHEM/homebridgeserviceremote.sh&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und mit dem folgenden Inhalt befüllt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039;: die Variabeln &#039;&#039;remoteUser&#039;&#039;, &#039;&#039;remotePasswort&#039;&#039; und &#039;&#039;remoteHost&#039;&#039; sind ggf. auf die eigenen Gegebenheiten der entfernt laufenden Homebridge anzupassen. Der hier genannte Benutzer muss natürlich berechtigt sein die Homebridge starten zu können. Es sollte auch nicht der root User verwendet werden, sondern ein eigens dafür angelegter und in den Berechtigungen eingeschränkter Benutzer verwendet werden.&lt;br /&gt;
Wer zur Fehleranalyse etwas mehr sehen möchte ändert den Wert von &#039;&#039;debug&#039;&#039; auf 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
debug=0&lt;br /&gt;
remoteUser=&amp;quot;root&amp;quot;&lt;br /&gt;
remotePasswort=&amp;quot;root&amp;quot;&lt;br /&gt;
remoteHost=&amp;quot;192.168.1.111&amp;quot;&lt;br /&gt;
remoteService=&amp;quot;homebridge&amp;quot;&lt;br /&gt;
fhemHostTelnetPort=7072           #TelnetPort der FHEM Instanz&lt;br /&gt;
&lt;br /&gt;
# Vorraussetzungen prüfen&lt;br /&gt;
if [ $(dpkg-query -W -f=&#039;${Status}&#039; sshpass 2&amp;gt;/dev/null | grep -c &amp;quot;ok installed&amp;quot;) -eq 0 ];&lt;br /&gt;
then&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;sshpass wird benötigt. Installation beginnt&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] sshpass wird benötigt. Installation beginnt\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
	apt-get install sshpass&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;sshpass wurde installiert&amp;quot;;&lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] sshpass wurde installiert\&amp;quot;}&amp;quot;;		&lt;br /&gt;
	fi&lt;br /&gt;
fi&lt;br /&gt;
###################################&lt;br /&gt;
&lt;br /&gt;
# Befehl ausführen&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
start)&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführen von &#039;sudo service $remoteService start&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführen von &#039;sudo service $remoteService start&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
	sshpass -p &amp;quot;$remotePasswort&amp;quot; ssh -o StrictHostKeyChecking=no $remoteUser@$remoteHost &amp;quot;sudo service $remoteService start&amp;quot;&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführung beendet&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführung beendet\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
;;&lt;br /&gt;
stop)&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführen von &#039;sudo service $remoteService stop&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführen von &#039;sudo service $remoteService stop&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
	sshpass -p &amp;quot;$remotePasswort&amp;quot; ssh -o StrictHostKeyChecking=no $remoteUser@$remoteHost &amp;quot;sudo service $remoteService stop&amp;quot;&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführung beendet&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführung beendet\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
;;&lt;br /&gt;
restart)&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführen von &#039;sudo service $remoteService restart&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführen von &#039;sudo service $remoteService restart&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
	sshpass -p &amp;quot;$remotePasswort&amp;quot; ssh -o StrictHostKeyChecking=no $remoteUser@$remoteHost &amp;quot;sudo service $remoteService restart&amp;quot;&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführung beendet&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführung beendet\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
&lt;br /&gt;
;;&lt;br /&gt;
status)&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführen von &#039;sudo service $remoteService status&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;&amp;quot;;&lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführen von &#039;sudo service $remoteService status&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;\&amp;quot;}&amp;quot;;		&lt;br /&gt;
	fi&lt;br /&gt;
	sshpass -p &amp;quot;$remotePasswort&amp;quot; ssh -o StrictHostKeyChecking=no $remoteUser@$remoteHost &amp;quot;sudo service $remoteService status&amp;quot;&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführung beendet&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführung beendet\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
;;&lt;br /&gt;
*)&lt;br /&gt;
echo &amp;quot;Usage: $0 {start|stop|status|restart}&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
;;&lt;br /&gt;
esac&lt;br /&gt;
exit 0&lt;br /&gt;
###################################&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Script macht nicht sehr viel. Es verbindet sich über ssh mit dem entfernten System und startet (stopt, etc.) den Homebridge Dienst. Hinweis: es wird sshpass benötigt, welches das Script bei bedarf versucht zu installieren.&lt;br /&gt;
&lt;br /&gt;
== Dankeschön ==&lt;br /&gt;
Ein Dankeschön geht an die Entwicklergemeinde rund um Homebridge und dem FHEM Plugin für die Homebridge.&lt;br /&gt;
&lt;br /&gt;
Ein besonderes Dankeschön an &#039;&#039;No Legend&#039;&#039; der die zugrunde liegende Idee und Lösung in diesem Artikel beschrieben hat.&lt;/div&gt;</summary>
		<author><name>Svenson08</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19604</id>
		<title>Homebridge Start und Status in FHEM</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19604"/>
		<updated>2017-02-09T05:21:35Z</updated>

		<summary type="html">&lt;p&gt;Svenson08: /* Start Script anlegen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Um nicht bei jeder Änderung, welche die Homebridge betrifft, diese über die Console manuell neustarten zu müssen zeigt diese Lösung wie dies bequem aus FHEMWEB erfolgen kann. In den nachfolgenden Abschnitten sind die einzelnen Schritte dazu erläutert.&lt;br /&gt;
&lt;br /&gt;
== Vorwort ==&lt;br /&gt;
Die im weitern genutzten Bezeichnungen von Dummys, Scriptdateinamen o.ä. können geändert werden. Die Änderungen müssen jedoch auch an allen entsprechenden Stellen vorgenommen werden.&lt;br /&gt;
Genannte IP Adressen, Benutzernamen und Passwörter sind auf die eigenen Gegebenheiten anzupassen. Die Berechtigungen des Benutzers müssen zur Ausführung der Scripte geprüft und ggf. angepasst werden. Entprechende Linux Kentnisse sollten vorhanden sein. In Teilen berücksichtigt dieser Artikel das FHEM und Homebridge nicht zwingend auf dem selben System laufen. Die hier gezeigte Lösung kann für beide Varianten genutzt werden, FHEM und Homebridge auf dem gleichen System oder auf getrennten Systemen.&lt;br /&gt;
&lt;br /&gt;
== Umsetzung ==&lt;br /&gt;
&lt;br /&gt;
=== Status- und Kontroll-Dummy ===&lt;br /&gt;
[[Datei:HomebridgeDummy.PNG|mini|550px|Status- bzw. Kontroll-Dummy]]&lt;br /&gt;
&lt;br /&gt;
Es wird ein Dummy benötigt, welcher den Status des Homebridge-Dienstes anzeigt und über den dieser Dienst gesteuert werden kann. Das nötige Script um die Homebridge als Dienst zu starten wird weiter unten in diesem Artikel erstellt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
define SYS_Homebridge dummy&lt;br /&gt;
attr SYS_Homebridge devStateIcon .*on:general_an .*off:general_aus .*:audio_rec&lt;br /&gt;
attr SYS_Homebridge eventMap status:status start:start stop:stop restart:restart&lt;br /&gt;
attr SYS_Homebridge icon it_router&lt;br /&gt;
attr SYS_Homebridge room System&lt;br /&gt;
attr SYS_Homebridge userReadings OnStateChange:(start|stop|restart|status) {  system (&amp;quot;sudo service homebridge &amp;quot;.ReadingsVal($NAME,&amp;quot;state&amp;quot;,&amp;quot;restart&amp;quot;).&amp;quot; &amp;amp;&amp;quot; );;  }&lt;br /&gt;
attr SYS_Homebridge webCmd status:start:stop:restart&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Dummy wird durch setzen von &amp;quot;start&amp;quot;, &amp;quot;stop&amp;quot;, &amp;quot;restart&amp;quot; oder &amp;quot;status&amp;quot; jeweils das userReading ausführen und somit letztendlich den homebridge Dienst steuert.&lt;br /&gt;
&lt;br /&gt;
=== Start Script anlegen ===&lt;br /&gt;
Nun ist das Startscript für die Homebridge anzulegen. Mittels dem folgenden Befehl wird (wenn noch nicht vorhanden) das homebridge Script angelegt und im Editor geöffnet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Wenn die Homebridge nicht auf dem selben System läuft wie FHEM muss dieser Schritt auf dem Homebridge System ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Das nun folgende Script kann in die homebridge Datei, die im Nano Editor geöffnet, ist rein kopiert werden. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039;: die Variabeln &#039;&#039;homeBridgeUser&#039;&#039;, &#039;&#039;fhemHost&#039;&#039; und &#039;&#039;fhemHostTelnetPort&#039;&#039; sind ggf. auf die eigenen Gegebenheiten anzupassen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
### BEGIN INIT INFO&lt;br /&gt;
# Provides: homebridge&lt;br /&gt;
# Required-Start: $network $remote_fs $syslog&lt;br /&gt;
# Required-Stop: $remote_fs $syslog&lt;br /&gt;
# Default-Start: 2 3 4 5&lt;br /&gt;
# Default-Stop: 0 1 6&lt;br /&gt;
# Short-Description: Start daemon at boot time for homebridge&lt;br /&gt;
# Description: Enable service provided by daemon.&lt;br /&gt;
### END INIT INFO&lt;br /&gt;
export PATH=$PATH:/usr/local/bin&lt;br /&gt;
export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules&lt;br /&gt;
&lt;br /&gt;
PID=`pidof homebridge`&lt;br /&gt;
homeBridgeUser=&amp;quot;fhem&amp;quot;&lt;br /&gt;
fhemHost=127.0.0.1          #FHEM Server (Masterinstanz)&lt;br /&gt;
fhemHostTelnetPort=7072     #TelnetPort der FHEM Instanz&lt;br /&gt;
fhemDefine=&amp;quot;SYS_Homebridge&amp;quot;&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
start)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is already running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is already running&amp;quot;			&lt;br /&gt;
else&lt;br /&gt;
        su - $homeBridgeUser -c &amp;quot;homebridge &amp;gt; /dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&amp;quot;&lt;br /&gt;
        echo &amp;quot;Homebridge starting&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge starting&amp;quot;	&lt;br /&gt;
	perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine on&amp;quot;&lt;br /&gt;
        sleep 2&lt;br /&gt;
	$0 status&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
stop)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is not running&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        kill $PID&lt;br /&gt;
        echo &amp;quot;Homebridge stopping&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge stopping&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine off&amp;quot;&lt;br /&gt;
        sleep 2&lt;br /&gt;
	$0 status		&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
restart)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        $0 start&lt;br /&gt;
else&lt;br /&gt;
        $0 stop&lt;br /&gt;
        $0 start&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
status)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is running PID $PID&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge running as PID $PID&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is not running&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
*)&lt;br /&gt;
echo &amp;quot;Usage: $0 {start|stop|status|restart}&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
;;&lt;br /&gt;
esac&lt;br /&gt;
exit 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Script setzt in dem bereits angelegten Dummy ein Reading &#039;&#039;info&#039;&#039; in dem der Ausführungsstatus des Scripts wieder gegeben wird. Das Reading &#039;&#039;state&#039;&#039; wir auf on oder off gesetzt. &#039;&#039;On&#039;&#039; bedeutet das Homebridge gestartet ist, &#039;&#039;off&#039;&#039; das die Homebridge nicht ausgeführt wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Damit die Homebridge auch mit Start des Systems gestartet wird sind die folgenden zwei Schritte notwendig&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo chmod 755 /etc/init.d/homebridge&lt;br /&gt;
sudo update-rc.d homebridge defaults&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum testen kann der Dienst nun mit dem Befehl&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo service homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
bzw.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo /etc/init.d/homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gestartet werden. In dem angelegten Dummy werden zwei Readings erzeugt mit den entsprechenden Rückmeldungen aus dem Script. Die Readings werden erst angezeigt wenn die bereits geöffnete Detailseite des Dummys neu geladen wird.&lt;br /&gt;
&lt;br /&gt;
=== Testlauf / Fertig ===&lt;br /&gt;
Nun können die einzelnen Aktionen über den Dummy ausführt werden. Dabei wird jeweils der eingerichtete Dienst angesteuert und eine (mit kurzer Verzögerung) Rückmeldung gegeben.&lt;br /&gt;
&lt;br /&gt;
== Sonstiges ==&lt;br /&gt;
&lt;br /&gt;
=== FHEM Benutzer Zugriff auf Script gewähren ===&lt;br /&gt;
&lt;br /&gt;
Damit aus FHEM das Script ausgeführt werden kann benötigt dieser Benutzer entsprechende Berechtigungen. Dazu ist in der sudoers ein Eintrag zu ergänzen.&lt;br /&gt;
Dazu wird die sudoers Datei im Nano Editor geöffnet&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/sudoers&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dort sollte im Abschnitt &#039;&#039;# User privilege specification&#039;&#039; die folgende Zeile ergänzt werden &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung!&#039;&#039;&#039; Sollte FHEM nicht unter dem Benuter &#039;&#039;fhem&#039;&#039; laufen ist die an den entsprechenden Stellen anzupassen. &lt;br /&gt;
&lt;br /&gt;
Beispielinhalt der sudoers:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# This file MUST be edited with the &#039;visudo&#039; command as root.&lt;br /&gt;
#&lt;br /&gt;
# Please consider adding local content in /etc/sudoers.d/ instead of&lt;br /&gt;
# directly modifying this file.&lt;br /&gt;
#&lt;br /&gt;
# See the man page for details on how to write a sudoers file.&lt;br /&gt;
#&lt;br /&gt;
Defaults	env_reset&lt;br /&gt;
Defaults	mail_badpass&lt;br /&gt;
Defaults	secure_path=&amp;quot;/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Host alias specification&lt;br /&gt;
&lt;br /&gt;
# User alias specification&lt;br /&gt;
&lt;br /&gt;
# Cmnd alias specification&lt;br /&gt;
&lt;br /&gt;
# User privilege specification&lt;br /&gt;
root	ALL=(ALL:ALL) ALL&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/opt/fhem/FHEM/backup.sh, /etc/init.d/homebridge&lt;br /&gt;
&lt;br /&gt;
# Members of the admin group may gain root privileges&lt;br /&gt;
%admin  ALL = (ALL) NOPASSWD: ALL&lt;br /&gt;
&lt;br /&gt;
# Allow members of group sudo to execute any command&lt;br /&gt;
%sudo	ALL=(ALL:ALL) ALL&lt;br /&gt;
&lt;br /&gt;
# See sudoers(5) for more information on &amp;quot;#include&amp;quot; directives:&lt;br /&gt;
&lt;br /&gt;
#includedir /etc/sudoers.d&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
&lt;br /&gt;
=== Anpassung wenn FHEM und Homebridge auf getrennten Systemen laufen ===&lt;br /&gt;
Unter dem Kapitel [[Umsetzung]] wurde bereits alle vorbereitet um mit wenigen Änderungen eine Homebridge zu starten die nicht auf dem selben System läuft wie FHEM. Es nur 2 Änderungen notwendig.&lt;br /&gt;
Die erste Änderung betrifft den eingerichteten Dummy. Hier ist das vorhandenen &#039;&#039;userReadings&#039;&#039; wie folgt abzuändern&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
attr SYS_Homebridge userReadings OnStateChange:(start|stop|restart|status) { system (&amp;quot;sudo /opt/fhem/FHEM/homebridgeserviceremote.sh &amp;quot;.ReadingsVal($NAME,&amp;quot;state&amp;quot;,&amp;quot;restart&amp;quot;).&amp;quot; &amp;amp;&amp;quot; );; } &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dadurch wird, durch die Aktionen des Dummys, ein weiteres Script angesprochen.&lt;br /&gt;
&lt;br /&gt;
Nun wird dieses Script mit hilfe des Nano Editor angelegt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /opt/fhem/FHEM/homebridgeserviceremote.sh&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und mit dem folgenden Inhalt befüllt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039;: die Variabeln &#039;&#039;remoteUser&#039;&#039;, &#039;&#039;remotePasswort&#039;&#039; und &#039;&#039;remoteHost&#039;&#039; sind ggf. auf die eigenen Gegebenheiten der entfernt laufenden Homebridge anzupassen. Der hier genannte Benutzer muss natürlich berechtigt sein die Homebridge starten zu können. Es sollte auch nicht der root User verwendet werden, sondern ein eigens dafür angelegter und in den Berechtigungen eingeschränkter Benutzer verwendet werden.&lt;br /&gt;
Wer zur Fehleranalyse etwas mehr sehen möchte ändert den Wert von &#039;&#039;debug&#039;&#039; auf 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
debug=0&lt;br /&gt;
remoteUser=&amp;quot;root&amp;quot;&lt;br /&gt;
remotePasswort=&amp;quot;root&amp;quot;&lt;br /&gt;
remoteHost=&amp;quot;192.168.1.111&amp;quot;&lt;br /&gt;
remoteService=&amp;quot;homebridge&amp;quot;&lt;br /&gt;
fhemHostTelnetPort=7072           #TelnetPort der FHEM Instanz&lt;br /&gt;
&lt;br /&gt;
# Vorraussetzungen prüfen&lt;br /&gt;
if [ $(dpkg-query -W -f=&#039;${Status}&#039; sshpass 2&amp;gt;/dev/null | grep -c &amp;quot;ok installed&amp;quot;) -eq 0 ];&lt;br /&gt;
then&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;sshpass wird benötigt. Installation beginnt&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] sshpass wird benötigt. Installation beginnt\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
	apt-get install sshpass&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;sshpass wurde installiert&amp;quot;;&lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] sshpass wurde installiert\&amp;quot;}&amp;quot;;		&lt;br /&gt;
	fi&lt;br /&gt;
fi&lt;br /&gt;
###################################&lt;br /&gt;
&lt;br /&gt;
# Befehl ausführen&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
start)&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführen von &#039;sudo service $remoteService start&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführen von &#039;sudo service $remoteService start&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
	sshpass -p &amp;quot;$remotePasswort&amp;quot; ssh -o StrictHostKeyChecking=no $remoteUser@$remoteHost &amp;quot;sudo service $remoteService start&amp;quot;&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführung beendet&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführung beendet\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
;;&lt;br /&gt;
stop)&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführen von &#039;sudo service $remoteService stop&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführen von &#039;sudo service $remoteService stop&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
	sshpass -p &amp;quot;$remotePasswort&amp;quot; ssh -o StrictHostKeyChecking=no $remoteUser@$remoteHost &amp;quot;sudo service $remoteService stop&amp;quot;&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführung beendet&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführung beendet\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
;;&lt;br /&gt;
restart)&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführen von &#039;sudo service $remoteService restart&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführen von &#039;sudo service $remoteService restart&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
	sshpass -p &amp;quot;$remotePasswort&amp;quot; ssh -o StrictHostKeyChecking=no $remoteUser@$remoteHost &amp;quot;sudo service $remoteService restart&amp;quot;&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführung beendet&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführung beendet\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
&lt;br /&gt;
;;&lt;br /&gt;
status)&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführen von &#039;sudo service $remoteService status&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;&amp;quot;;&lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführen von &#039;sudo service $remoteService status&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;\&amp;quot;}&amp;quot;;		&lt;br /&gt;
	fi&lt;br /&gt;
	sshpass -p &amp;quot;$remotePasswort&amp;quot; ssh -o StrictHostKeyChecking=no $remoteUser@$remoteHost &amp;quot;sudo service $remoteService status&amp;quot;&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführung beendet&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführung beendet\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
;;&lt;br /&gt;
*)&lt;br /&gt;
echo &amp;quot;Usage: $0 {start|stop|status|restart}&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
;;&lt;br /&gt;
esac&lt;br /&gt;
exit 0&lt;br /&gt;
###################################&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Script macht nicht sehr viel. Es verbindet sich über ssh mit dem entfernten System und startet (stopt, etc.) den Homebridge Dienst. Hinweis: es wird sshpass benötigt, welches das Script bei bedarf versucht zu installieren.&lt;br /&gt;
&lt;br /&gt;
== Dankeschön ==&lt;br /&gt;
Ein Dankeschön geht an die Entwicklergemeinde rund um Homebridge und dem FHEM Plugin für die Homebridge.&lt;br /&gt;
&lt;br /&gt;
Ein besonderes Dankeschön an &#039;&#039;No Legend&#039;&#039; der die zugrunde liegende Idee und Lösung in diesem Artikel beschrieben hat.&lt;/div&gt;</summary>
		<author><name>Svenson08</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Diskussion:Homebridge_Start_und_Status_in_FHEM&amp;diff=19603</id>
		<title>Diskussion:Homebridge Start und Status in FHEM</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Diskussion:Homebridge_Start_und_Status_in_FHEM&amp;diff=19603"/>
		<updated>2017-02-09T05:20:38Z</updated>

		<summary type="html">&lt;p&gt;Svenson08: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;09.02.2017&lt;br /&gt;
&lt;br /&gt;
Artikel Überarbeitet, im Rahmen meiner Umsetzung die ich mit dem Artikel vorgenommen hatte.&lt;br /&gt;
&lt;br /&gt;
Inhaltlich habe ich den Artikel textuell hoffentlich lesbarer und verständlicher gestaltet.&lt;br /&gt;
&lt;br /&gt;
Alle Schritte sind getestet und funktionieren (hoffentlich) bei Nachahmern genauso.&lt;br /&gt;
&lt;br /&gt;
Erweitert wurde der Artikel um die Betrachtung das FHEM und Homebridge nicht auf dem selben Server laufen muss.&lt;/div&gt;</summary>
		<author><name>Svenson08</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19602</id>
		<title>Homebridge Start und Status in FHEM</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19602"/>
		<updated>2017-02-09T05:16:57Z</updated>

		<summary type="html">&lt;p&gt;Svenson08: /* Dankeschön */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Um nicht bei jeder Änderung, welche die Homebridge betrifft, diese über die Console manuell neustarten zu müssen zeigt diese Lösung wie dies bequem aus FHEMWEB erfolgen kann. In den nachfolgenden Abschnitten sind die einzelnen Schritte dazu erläutert.&lt;br /&gt;
&lt;br /&gt;
== Vorwort ==&lt;br /&gt;
Die im weitern genutzten Bezeichnungen von Dummys, Scriptdateinamen o.ä. können geändert werden. Die Änderungen müssen jedoch auch an allen entsprechenden Stellen vorgenommen werden.&lt;br /&gt;
Genannte IP Adressen, Benutzernamen und Passwörter sind auf die eigenen Gegebenheiten anzupassen. Die Berechtigungen des Benutzers müssen zur Ausführung der Scripte geprüft und ggf. angepasst werden. Entprechende Linux Kentnisse sollten vorhanden sein. In Teilen berücksichtigt dieser Artikel das FHEM und Homebridge nicht zwingend auf dem selben System laufen. Die hier gezeigte Lösung kann für beide Varianten genutzt werden, FHEM und Homebridge auf dem gleichen System oder auf getrennten Systemen.&lt;br /&gt;
&lt;br /&gt;
== Umsetzung ==&lt;br /&gt;
&lt;br /&gt;
=== Status- und Kontroll-Dummy ===&lt;br /&gt;
[[Datei:HomebridgeDummy.PNG|mini|550px|Status- bzw. Kontroll-Dummy]]&lt;br /&gt;
&lt;br /&gt;
Es wird ein Dummy benötigt, welcher den Status des Homebridge-Dienstes anzeigt und über den dieser Dienst gesteuert werden kann. Das nötige Script um die Homebridge als Dienst zu starten wird weiter unten in diesem Artikel erstellt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
define SYS_Homebridge dummy&lt;br /&gt;
attr SYS_Homebridge devStateIcon .*on:general_an .*off:general_aus .*:audio_rec&lt;br /&gt;
attr SYS_Homebridge eventMap status:status start:start stop:stop restart:restart&lt;br /&gt;
attr SYS_Homebridge icon it_router&lt;br /&gt;
attr SYS_Homebridge room System&lt;br /&gt;
attr SYS_Homebridge userReadings OnStateChange:(start|stop|restart|status) {  system (&amp;quot;sudo service homebridge &amp;quot;.ReadingsVal($NAME,&amp;quot;state&amp;quot;,&amp;quot;restart&amp;quot;).&amp;quot; &amp;amp;&amp;quot; );;  }&lt;br /&gt;
attr SYS_Homebridge webCmd status:start:stop:restart&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Dummy wird durch setzen von &amp;quot;start&amp;quot;, &amp;quot;stop&amp;quot;, &amp;quot;restart&amp;quot; oder &amp;quot;status&amp;quot; jeweils das userReading ausführen und somit letztendlich den homebridge Dienst steuert.&lt;br /&gt;
&lt;br /&gt;
=== Start Script anlegen ===&lt;br /&gt;
Nun ist das Startscript für die Homebridge anzulegen. Mittels dem folgenden Befehl wird (wenn noch nicht vorhanden) das homebridge Script angelegt und im Editor geöffnet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Wenn die Homebridge nicht auf dem selben System läuft wie FHEM muss dieser Schritt auf dem Homebridge System ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Das nun folgende Script kann in die homebridge Datei die im Nano Editor geöffnet ist rein kopiert werden. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039;: die Variabeln &#039;&#039;homeBridgeUser&#039;&#039;, &#039;&#039;fhemHost&#039;&#039; und &#039;&#039;fhemHostTelnetPort&#039;&#039; sind ggf. auf die eigenen Gegebenheiten anzupassen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
### BEGIN INIT INFO&lt;br /&gt;
# Provides: homebridge&lt;br /&gt;
# Required-Start: $network $remote_fs $syslog&lt;br /&gt;
# Required-Stop: $remote_fs $syslog&lt;br /&gt;
# Default-Start: 2 3 4 5&lt;br /&gt;
# Default-Stop: 0 1 6&lt;br /&gt;
# Short-Description: Start daemon at boot time for homebridge&lt;br /&gt;
# Description: Enable service provided by daemon.&lt;br /&gt;
### END INIT INFO&lt;br /&gt;
export PATH=$PATH:/usr/local/bin&lt;br /&gt;
export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules&lt;br /&gt;
&lt;br /&gt;
PID=`pidof homebridge`&lt;br /&gt;
homeBridgeUser=&amp;quot;fhem&amp;quot;&lt;br /&gt;
fhemHost=127.0.0.1          #FHEM Server (Masterinstanz)&lt;br /&gt;
fhemHostTelnetPort=7072     #TelnetPort der FHEM Instanz&lt;br /&gt;
fhemDefine=&amp;quot;SYS_Homebridge&amp;quot;&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
start)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is already running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is already running&amp;quot;			&lt;br /&gt;
else&lt;br /&gt;
        su - $homeBridgeUser -c &amp;quot;homebridge &amp;gt; /dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&amp;quot;&lt;br /&gt;
        echo &amp;quot;Homebridge starting&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge starting&amp;quot;	&lt;br /&gt;
	perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine on&amp;quot;&lt;br /&gt;
        sleep 2&lt;br /&gt;
	$0 status&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
stop)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is not running&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        kill $PID&lt;br /&gt;
        echo &amp;quot;Homebridge stopping&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge stopping&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine off&amp;quot;&lt;br /&gt;
        sleep 2&lt;br /&gt;
	$0 status		&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
restart)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        $0 start&lt;br /&gt;
else&lt;br /&gt;
        $0 stop&lt;br /&gt;
        $0 start&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
status)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is running PID $PID&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge running as PID $PID&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is not running&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
*)&lt;br /&gt;
echo &amp;quot;Usage: $0 {start|stop|status|restart}&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
;;&lt;br /&gt;
esac&lt;br /&gt;
exit 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Script setzt in dem bereits angelegten Dummy ein Reading &#039;&#039;info&#039;&#039; in dem der Ausführungsstatus des Scripts wieder gegeben wird. Das Reading &#039;&#039;state&#039;&#039; wir auf on oder off gesetzt. &#039;&#039;On&#039;&#039; bedeutet das Homebridge gestartet ist, &#039;&#039;off&#039;&#039; das die Homebridge nicht ausgeführt wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Damit die Homebridge auch mit Start des Systems gestartet wird sind die folgenden zwei Schritte notwendig&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo chmod 755 /etc/init.d/homebridge&lt;br /&gt;
sudo update-rc.d homebridge defaults&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum testen kann der Dienst nun mit dem Befehl&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo service homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
bzw.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo /etc/init.d/homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gestartet werden. In dem angelegten Dummy werden zwei Readings erzeugt mit den entsprechenden Rückmeldungen aus dem Script. Die Readings werden erst angezeigt wenn die bereits geöffnete Detailseite des Dummys neu geladen wird.&lt;br /&gt;
&lt;br /&gt;
=== Testlauf / Fertig ===&lt;br /&gt;
Nun können die einzelnen Aktionen über den Dummy ausführt werden. Dabei wird jeweils der eingerichtete Dienst angesteuert und eine (mit kurzer Verzögerung) Rückmeldung gegeben.&lt;br /&gt;
&lt;br /&gt;
== Sonstiges ==&lt;br /&gt;
&lt;br /&gt;
=== FHEM Benutzer Zugriff auf Script gewähren ===&lt;br /&gt;
&lt;br /&gt;
Damit aus FHEM das Script ausgeführt werden kann benötigt dieser Benutzer entsprechende Berechtigungen. Dazu ist in der sudoers ein Eintrag zu ergänzen.&lt;br /&gt;
Dazu wird die sudoers Datei im Nano Editor geöffnet&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/sudoers&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dort sollte im Abschnitt &#039;&#039;# User privilege specification&#039;&#039; die folgende Zeile ergänzt werden &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung!&#039;&#039;&#039; Sollte FHEM nicht unter dem Benuter &#039;&#039;fhem&#039;&#039; laufen ist die an den entsprechenden Stellen anzupassen. &lt;br /&gt;
&lt;br /&gt;
Beispielinhalt der sudoers:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# This file MUST be edited with the &#039;visudo&#039; command as root.&lt;br /&gt;
#&lt;br /&gt;
# Please consider adding local content in /etc/sudoers.d/ instead of&lt;br /&gt;
# directly modifying this file.&lt;br /&gt;
#&lt;br /&gt;
# See the man page for details on how to write a sudoers file.&lt;br /&gt;
#&lt;br /&gt;
Defaults	env_reset&lt;br /&gt;
Defaults	mail_badpass&lt;br /&gt;
Defaults	secure_path=&amp;quot;/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Host alias specification&lt;br /&gt;
&lt;br /&gt;
# User alias specification&lt;br /&gt;
&lt;br /&gt;
# Cmnd alias specification&lt;br /&gt;
&lt;br /&gt;
# User privilege specification&lt;br /&gt;
root	ALL=(ALL:ALL) ALL&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/opt/fhem/FHEM/backup.sh, /etc/init.d/homebridge&lt;br /&gt;
&lt;br /&gt;
# Members of the admin group may gain root privileges&lt;br /&gt;
%admin  ALL = (ALL) NOPASSWD: ALL&lt;br /&gt;
&lt;br /&gt;
# Allow members of group sudo to execute any command&lt;br /&gt;
%sudo	ALL=(ALL:ALL) ALL&lt;br /&gt;
&lt;br /&gt;
# See sudoers(5) for more information on &amp;quot;#include&amp;quot; directives:&lt;br /&gt;
&lt;br /&gt;
#includedir /etc/sudoers.d&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
&lt;br /&gt;
=== Anpassung wenn FHEM und Homebridge auf getrennten Systemen laufen ===&lt;br /&gt;
Unter dem Kapitel [[Umsetzung]] wurde bereits alle vorbereitet um mit wenigen Änderungen eine Homebridge zu starten die nicht auf dem selben System läuft wie FHEM. Es nur 2 Änderungen notwendig.&lt;br /&gt;
Die erste Änderung betrifft den eingerichteten Dummy. Hier ist das vorhandenen &#039;&#039;userReadings&#039;&#039; wie folgt abzuändern&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
attr SYS_Homebridge userReadings OnStateChange:(start|stop|restart|status) { system (&amp;quot;sudo /opt/fhem/FHEM/homebridgeserviceremote.sh &amp;quot;.ReadingsVal($NAME,&amp;quot;state&amp;quot;,&amp;quot;restart&amp;quot;).&amp;quot; &amp;amp;&amp;quot; );; } &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dadurch wird, durch die Aktionen des Dummys, ein weiteres Script angesprochen.&lt;br /&gt;
&lt;br /&gt;
Nun wird dieses Script mit hilfe des Nano Editor angelegt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /opt/fhem/FHEM/homebridgeserviceremote.sh&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und mit dem folgenden Inhalt befüllt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039;: die Variabeln &#039;&#039;remoteUser&#039;&#039;, &#039;&#039;remotePasswort&#039;&#039; und &#039;&#039;remoteHost&#039;&#039; sind ggf. auf die eigenen Gegebenheiten der entfernt laufenden Homebridge anzupassen. Der hier genannte Benutzer muss natürlich berechtigt sein die Homebridge starten zu können. Es sollte auch nicht der root User verwendet werden, sondern ein eigens dafür angelegter und in den Berechtigungen eingeschränkter Benutzer verwendet werden.&lt;br /&gt;
Wer zur Fehleranalyse etwas mehr sehen möchte ändert den Wert von &#039;&#039;debug&#039;&#039; auf 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
debug=0&lt;br /&gt;
remoteUser=&amp;quot;root&amp;quot;&lt;br /&gt;
remotePasswort=&amp;quot;root&amp;quot;&lt;br /&gt;
remoteHost=&amp;quot;192.168.1.111&amp;quot;&lt;br /&gt;
remoteService=&amp;quot;homebridge&amp;quot;&lt;br /&gt;
fhemHostTelnetPort=7072           #TelnetPort der FHEM Instanz&lt;br /&gt;
&lt;br /&gt;
# Vorraussetzungen prüfen&lt;br /&gt;
if [ $(dpkg-query -W -f=&#039;${Status}&#039; sshpass 2&amp;gt;/dev/null | grep -c &amp;quot;ok installed&amp;quot;) -eq 0 ];&lt;br /&gt;
then&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;sshpass wird benötigt. Installation beginnt&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] sshpass wird benötigt. Installation beginnt\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
	apt-get install sshpass&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;sshpass wurde installiert&amp;quot;;&lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] sshpass wurde installiert\&amp;quot;}&amp;quot;;		&lt;br /&gt;
	fi&lt;br /&gt;
fi&lt;br /&gt;
###################################&lt;br /&gt;
&lt;br /&gt;
# Befehl ausführen&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
start)&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführen von &#039;sudo service $remoteService start&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführen von &#039;sudo service $remoteService start&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
	sshpass -p &amp;quot;$remotePasswort&amp;quot; ssh -o StrictHostKeyChecking=no $remoteUser@$remoteHost &amp;quot;sudo service $remoteService start&amp;quot;&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführung beendet&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführung beendet\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
;;&lt;br /&gt;
stop)&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführen von &#039;sudo service $remoteService stop&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführen von &#039;sudo service $remoteService stop&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
	sshpass -p &amp;quot;$remotePasswort&amp;quot; ssh -o StrictHostKeyChecking=no $remoteUser@$remoteHost &amp;quot;sudo service $remoteService stop&amp;quot;&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführung beendet&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführung beendet\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
;;&lt;br /&gt;
restart)&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführen von &#039;sudo service $remoteService restart&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführen von &#039;sudo service $remoteService restart&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
	sshpass -p &amp;quot;$remotePasswort&amp;quot; ssh -o StrictHostKeyChecking=no $remoteUser@$remoteHost &amp;quot;sudo service $remoteService restart&amp;quot;&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführung beendet&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführung beendet\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
&lt;br /&gt;
;;&lt;br /&gt;
status)&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführen von &#039;sudo service $remoteService status&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;&amp;quot;;&lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführen von &#039;sudo service $remoteService status&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;\&amp;quot;}&amp;quot;;		&lt;br /&gt;
	fi&lt;br /&gt;
	sshpass -p &amp;quot;$remotePasswort&amp;quot; ssh -o StrictHostKeyChecking=no $remoteUser@$remoteHost &amp;quot;sudo service $remoteService status&amp;quot;&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführung beendet&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführung beendet\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
;;&lt;br /&gt;
*)&lt;br /&gt;
echo &amp;quot;Usage: $0 {start|stop|status|restart}&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
;;&lt;br /&gt;
esac&lt;br /&gt;
exit 0&lt;br /&gt;
###################################&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Script macht nicht sehr viel. Es verbindet sich über ssh mit dem entfernten System und startet (stopt, etc.) den Homebridge Dienst. Hinweis: es wird sshpass benötigt, welches das Script bei bedarf versucht zu installieren.&lt;br /&gt;
&lt;br /&gt;
== Dankeschön ==&lt;br /&gt;
Ein Dankeschön geht an die Entwicklergemeinde rund um Homebridge und dem FHEM Plugin für die Homebridge.&lt;br /&gt;
&lt;br /&gt;
Ein besonderes Dankeschön an &#039;&#039;No Legend&#039;&#039; der die zugrunde liegende Idee und Lösung in diesem Artikel beschrieben hat.&lt;/div&gt;</summary>
		<author><name>Svenson08</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19601</id>
		<title>Homebridge Start und Status in FHEM</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19601"/>
		<updated>2017-02-09T05:13:22Z</updated>

		<summary type="html">&lt;p&gt;Svenson08: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Um nicht bei jeder Änderung, welche die Homebridge betrifft, diese über die Console manuell neustarten zu müssen zeigt diese Lösung wie dies bequem aus FHEMWEB erfolgen kann. In den nachfolgenden Abschnitten sind die einzelnen Schritte dazu erläutert.&lt;br /&gt;
&lt;br /&gt;
== Vorwort ==&lt;br /&gt;
Die im weitern genutzten Bezeichnungen von Dummys, Scriptdateinamen o.ä. können geändert werden. Die Änderungen müssen jedoch auch an allen entsprechenden Stellen vorgenommen werden.&lt;br /&gt;
Genannte IP Adressen, Benutzernamen und Passwörter sind auf die eigenen Gegebenheiten anzupassen. Die Berechtigungen des Benutzers müssen zur Ausführung der Scripte geprüft und ggf. angepasst werden. Entprechende Linux Kentnisse sollten vorhanden sein. In Teilen berücksichtigt dieser Artikel das FHEM und Homebridge nicht zwingend auf dem selben System laufen. Die hier gezeigte Lösung kann für beide Varianten genutzt werden, FHEM und Homebridge auf dem gleichen System oder auf getrennten Systemen.&lt;br /&gt;
&lt;br /&gt;
== Umsetzung ==&lt;br /&gt;
&lt;br /&gt;
=== Status- und Kontroll-Dummy ===&lt;br /&gt;
[[Datei:HomebridgeDummy.PNG|mini|550px|Status- bzw. Kontroll-Dummy]]&lt;br /&gt;
&lt;br /&gt;
Es wird ein Dummy benötigt, welcher den Status des Homebridge-Dienstes anzeigt und über den dieser Dienst gesteuert werden kann. Das nötige Script um die Homebridge als Dienst zu starten wird weiter unten in diesem Artikel erstellt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
define SYS_Homebridge dummy&lt;br /&gt;
attr SYS_Homebridge devStateIcon .*on:general_an .*off:general_aus .*:audio_rec&lt;br /&gt;
attr SYS_Homebridge eventMap status:status start:start stop:stop restart:restart&lt;br /&gt;
attr SYS_Homebridge icon it_router&lt;br /&gt;
attr SYS_Homebridge room System&lt;br /&gt;
attr SYS_Homebridge userReadings OnStateChange:(start|stop|restart|status) {  system (&amp;quot;sudo service homebridge &amp;quot;.ReadingsVal($NAME,&amp;quot;state&amp;quot;,&amp;quot;restart&amp;quot;).&amp;quot; &amp;amp;&amp;quot; );;  }&lt;br /&gt;
attr SYS_Homebridge webCmd status:start:stop:restart&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Dummy wird durch setzen von &amp;quot;start&amp;quot;, &amp;quot;stop&amp;quot;, &amp;quot;restart&amp;quot; oder &amp;quot;status&amp;quot; jeweils das userReading ausführen und somit letztendlich den homebridge Dienst steuert.&lt;br /&gt;
&lt;br /&gt;
=== Start Script anlegen ===&lt;br /&gt;
Nun ist das Startscript für die Homebridge anzulegen. Mittels dem folgenden Befehl wird (wenn noch nicht vorhanden) das homebridge Script angelegt und im Editor geöffnet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Wenn die Homebridge nicht auf dem selben System läuft wie FHEM muss dieser Schritt auf dem Homebridge System ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Das nun folgende Script kann in die homebridge Datei die im Nano Editor geöffnet ist rein kopiert werden. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039;: die Variabeln &#039;&#039;homeBridgeUser&#039;&#039;, &#039;&#039;fhemHost&#039;&#039; und &#039;&#039;fhemHostTelnetPort&#039;&#039; sind ggf. auf die eigenen Gegebenheiten anzupassen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
### BEGIN INIT INFO&lt;br /&gt;
# Provides: homebridge&lt;br /&gt;
# Required-Start: $network $remote_fs $syslog&lt;br /&gt;
# Required-Stop: $remote_fs $syslog&lt;br /&gt;
# Default-Start: 2 3 4 5&lt;br /&gt;
# Default-Stop: 0 1 6&lt;br /&gt;
# Short-Description: Start daemon at boot time for homebridge&lt;br /&gt;
# Description: Enable service provided by daemon.&lt;br /&gt;
### END INIT INFO&lt;br /&gt;
export PATH=$PATH:/usr/local/bin&lt;br /&gt;
export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules&lt;br /&gt;
&lt;br /&gt;
PID=`pidof homebridge`&lt;br /&gt;
homeBridgeUser=&amp;quot;fhem&amp;quot;&lt;br /&gt;
fhemHost=127.0.0.1          #FHEM Server (Masterinstanz)&lt;br /&gt;
fhemHostTelnetPort=7072     #TelnetPort der FHEM Instanz&lt;br /&gt;
fhemDefine=&amp;quot;SYS_Homebridge&amp;quot;&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
start)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is already running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is already running&amp;quot;			&lt;br /&gt;
else&lt;br /&gt;
        su - $homeBridgeUser -c &amp;quot;homebridge &amp;gt; /dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&amp;quot;&lt;br /&gt;
        echo &amp;quot;Homebridge starting&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge starting&amp;quot;	&lt;br /&gt;
	perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine on&amp;quot;&lt;br /&gt;
        sleep 2&lt;br /&gt;
	$0 status&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
stop)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is not running&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        kill $PID&lt;br /&gt;
        echo &amp;quot;Homebridge stopping&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge stopping&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine off&amp;quot;&lt;br /&gt;
        sleep 2&lt;br /&gt;
	$0 status		&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
restart)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        $0 start&lt;br /&gt;
else&lt;br /&gt;
        $0 stop&lt;br /&gt;
        $0 start&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
status)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is running PID $PID&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge running as PID $PID&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is not running&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
*)&lt;br /&gt;
echo &amp;quot;Usage: $0 {start|stop|status|restart}&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
;;&lt;br /&gt;
esac&lt;br /&gt;
exit 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Script setzt in dem bereits angelegten Dummy ein Reading &#039;&#039;info&#039;&#039; in dem der Ausführungsstatus des Scripts wieder gegeben wird. Das Reading &#039;&#039;state&#039;&#039; wir auf on oder off gesetzt. &#039;&#039;On&#039;&#039; bedeutet das Homebridge gestartet ist, &#039;&#039;off&#039;&#039; das die Homebridge nicht ausgeführt wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Damit die Homebridge auch mit Start des Systems gestartet wird sind die folgenden zwei Schritte notwendig&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo chmod 755 /etc/init.d/homebridge&lt;br /&gt;
sudo update-rc.d homebridge defaults&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum testen kann der Dienst nun mit dem Befehl&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo service homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
bzw.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo /etc/init.d/homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gestartet werden. In dem angelegten Dummy werden zwei Readings erzeugt mit den entsprechenden Rückmeldungen aus dem Script. Die Readings werden erst angezeigt wenn die bereits geöffnete Detailseite des Dummys neu geladen wird.&lt;br /&gt;
&lt;br /&gt;
=== Testlauf / Fertig ===&lt;br /&gt;
Nun können die einzelnen Aktionen über den Dummy ausführt werden. Dabei wird jeweils der eingerichtete Dienst angesteuert und eine (mit kurzer Verzögerung) Rückmeldung gegeben.&lt;br /&gt;
&lt;br /&gt;
== Sonstiges ==&lt;br /&gt;
&lt;br /&gt;
=== FHEM Benutzer Zugriff auf Script gewähren ===&lt;br /&gt;
&lt;br /&gt;
Damit aus FHEM das Script ausgeführt werden kann benötigt dieser Benutzer entsprechende Berechtigungen. Dazu ist in der sudoers ein Eintrag zu ergänzen.&lt;br /&gt;
Dazu wird die sudoers Datei im Nano Editor geöffnet&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/sudoers&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dort sollte im Abschnitt &#039;&#039;# User privilege specification&#039;&#039; die folgende Zeile ergänzt werden &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung!&#039;&#039;&#039; Sollte FHEM nicht unter dem Benuter &#039;&#039;fhem&#039;&#039; laufen ist die an den entsprechenden Stellen anzupassen. &lt;br /&gt;
&lt;br /&gt;
Beispielinhalt der sudoers:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# This file MUST be edited with the &#039;visudo&#039; command as root.&lt;br /&gt;
#&lt;br /&gt;
# Please consider adding local content in /etc/sudoers.d/ instead of&lt;br /&gt;
# directly modifying this file.&lt;br /&gt;
#&lt;br /&gt;
# See the man page for details on how to write a sudoers file.&lt;br /&gt;
#&lt;br /&gt;
Defaults	env_reset&lt;br /&gt;
Defaults	mail_badpass&lt;br /&gt;
Defaults	secure_path=&amp;quot;/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Host alias specification&lt;br /&gt;
&lt;br /&gt;
# User alias specification&lt;br /&gt;
&lt;br /&gt;
# Cmnd alias specification&lt;br /&gt;
&lt;br /&gt;
# User privilege specification&lt;br /&gt;
root	ALL=(ALL:ALL) ALL&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/opt/fhem/FHEM/backup.sh, /etc/init.d/homebridge&lt;br /&gt;
&lt;br /&gt;
# Members of the admin group may gain root privileges&lt;br /&gt;
%admin  ALL = (ALL) NOPASSWD: ALL&lt;br /&gt;
&lt;br /&gt;
# Allow members of group sudo to execute any command&lt;br /&gt;
%sudo	ALL=(ALL:ALL) ALL&lt;br /&gt;
&lt;br /&gt;
# See sudoers(5) for more information on &amp;quot;#include&amp;quot; directives:&lt;br /&gt;
&lt;br /&gt;
#includedir /etc/sudoers.d&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
&lt;br /&gt;
=== Anpassung wenn FHEM und Homebridge auf getrennten Systemen laufen ===&lt;br /&gt;
Unter dem Kapitel [[Umsetzung]] wurde bereits alle vorbereitet um mit wenigen Änderungen eine Homebridge zu starten die nicht auf dem selben System läuft wie FHEM. Es nur 2 Änderungen notwendig.&lt;br /&gt;
Die erste Änderung betrifft den eingerichteten Dummy. Hier ist das vorhandenen &#039;&#039;userReadings&#039;&#039; wie folgt abzuändern&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
attr SYS_Homebridge userReadings OnStateChange:(start|stop|restart|status) { system (&amp;quot;sudo /opt/fhem/FHEM/homebridgeserviceremote.sh &amp;quot;.ReadingsVal($NAME,&amp;quot;state&amp;quot;,&amp;quot;restart&amp;quot;).&amp;quot; &amp;amp;&amp;quot; );; } &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dadurch wird, durch die Aktionen des Dummys, ein weiteres Script angesprochen.&lt;br /&gt;
&lt;br /&gt;
Nun wird dieses Script mit hilfe des Nano Editor angelegt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /opt/fhem/FHEM/homebridgeserviceremote.sh&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und mit dem folgenden Inhalt befüllt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039;: die Variabeln &#039;&#039;remoteUser&#039;&#039;, &#039;&#039;remotePasswort&#039;&#039; und &#039;&#039;remoteHost&#039;&#039; sind ggf. auf die eigenen Gegebenheiten der entfernt laufenden Homebridge anzupassen. Der hier genannte Benutzer muss natürlich berechtigt sein die Homebridge starten zu können. Es sollte auch nicht der root User verwendet werden, sondern ein eigens dafür angelegter und in den Berechtigungen eingeschränkter Benutzer verwendet werden.&lt;br /&gt;
Wer zur Fehleranalyse etwas mehr sehen möchte ändert den Wert von &#039;&#039;debug&#039;&#039; auf 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
debug=0&lt;br /&gt;
remoteUser=&amp;quot;root&amp;quot;&lt;br /&gt;
remotePasswort=&amp;quot;root&amp;quot;&lt;br /&gt;
remoteHost=&amp;quot;192.168.1.111&amp;quot;&lt;br /&gt;
remoteService=&amp;quot;homebridge&amp;quot;&lt;br /&gt;
fhemHostTelnetPort=7072           #TelnetPort der FHEM Instanz&lt;br /&gt;
&lt;br /&gt;
# Vorraussetzungen prüfen&lt;br /&gt;
if [ $(dpkg-query -W -f=&#039;${Status}&#039; sshpass 2&amp;gt;/dev/null | grep -c &amp;quot;ok installed&amp;quot;) -eq 0 ];&lt;br /&gt;
then&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;sshpass wird benötigt. Installation beginnt&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] sshpass wird benötigt. Installation beginnt\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
	apt-get install sshpass&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;sshpass wurde installiert&amp;quot;;&lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] sshpass wurde installiert\&amp;quot;}&amp;quot;;		&lt;br /&gt;
	fi&lt;br /&gt;
fi&lt;br /&gt;
###################################&lt;br /&gt;
&lt;br /&gt;
# Befehl ausführen&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
start)&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführen von &#039;sudo service $remoteService start&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführen von &#039;sudo service $remoteService start&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
	sshpass -p &amp;quot;$remotePasswort&amp;quot; ssh -o StrictHostKeyChecking=no $remoteUser@$remoteHost &amp;quot;sudo service $remoteService start&amp;quot;&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführung beendet&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführung beendet\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
;;&lt;br /&gt;
stop)&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführen von &#039;sudo service $remoteService stop&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführen von &#039;sudo service $remoteService stop&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
	sshpass -p &amp;quot;$remotePasswort&amp;quot; ssh -o StrictHostKeyChecking=no $remoteUser@$remoteHost &amp;quot;sudo service $remoteService stop&amp;quot;&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführung beendet&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführung beendet\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
;;&lt;br /&gt;
restart)&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführen von &#039;sudo service $remoteService restart&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführen von &#039;sudo service $remoteService restart&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
	sshpass -p &amp;quot;$remotePasswort&amp;quot; ssh -o StrictHostKeyChecking=no $remoteUser@$remoteHost &amp;quot;sudo service $remoteService restart&amp;quot;&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführung beendet&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführung beendet\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
&lt;br /&gt;
;;&lt;br /&gt;
status)&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführen von &#039;sudo service $remoteService status&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;&amp;quot;;&lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführen von &#039;sudo service $remoteService status&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;\&amp;quot;}&amp;quot;;		&lt;br /&gt;
	fi&lt;br /&gt;
	sshpass -p &amp;quot;$remotePasswort&amp;quot; ssh -o StrictHostKeyChecking=no $remoteUser@$remoteHost &amp;quot;sudo service $remoteService status&amp;quot;&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführung beendet&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführung beendet\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
;;&lt;br /&gt;
*)&lt;br /&gt;
echo &amp;quot;Usage: $0 {start|stop|status|restart}&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
;;&lt;br /&gt;
esac&lt;br /&gt;
exit 0&lt;br /&gt;
###################################&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Script macht nicht sehr viel. Es verbindet sich über ssh mit dem entfernten System und startet (stopt, etc.) den Homebridge Dienst. Hinweis: es wird sshpass benötigt, welches das Script bei bedarf versucht zu installieren.&lt;br /&gt;
&lt;br /&gt;
== Dankeschön ==&lt;/div&gt;</summary>
		<author><name>Svenson08</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19600</id>
		<title>Homebridge Start und Status in FHEM</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19600"/>
		<updated>2017-02-09T05:13:11Z</updated>

		<summary type="html">&lt;p&gt;Svenson08: /* Start Script anlegen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Artikel befindet sich noch im Aufbau.&lt;br /&gt;
Der Code ist noch nicht 100% getestet, es muss also noch mit Fehler gerechnet werden.&lt;br /&gt;
&lt;br /&gt;
Um nicht bei jeder Änderung, welche die Homebridge betrifft, diese über die Console manuell neustarten zu müssen zeigt diese Lösung wie dies bequem aus FHEMWEB erfolgen kann. In den nachfolgenden Abschnitten sind die einzelnen Schritte dazu erläutert.&lt;br /&gt;
&lt;br /&gt;
== Vorwort ==&lt;br /&gt;
Die im weitern genutzten Bezeichnungen von Dummys, Scriptdateinamen o.ä. können geändert werden. Die Änderungen müssen jedoch auch an allen entsprechenden Stellen vorgenommen werden.&lt;br /&gt;
Genannte IP Adressen, Benutzernamen und Passwörter sind auf die eigenen Gegebenheiten anzupassen. Die Berechtigungen des Benutzers müssen zur Ausführung der Scripte geprüft und ggf. angepasst werden. Entprechende Linux Kentnisse sollten vorhanden sein. In Teilen berücksichtigt dieser Artikel das FHEM und Homebridge nicht zwingend auf dem selben System laufen. Die hier gezeigte Lösung kann für beide Varianten genutzt werden, FHEM und Homebridge auf dem gleichen System oder auf getrennten Systemen.&lt;br /&gt;
&lt;br /&gt;
== Umsetzung ==&lt;br /&gt;
&lt;br /&gt;
=== Status- und Kontroll-Dummy ===&lt;br /&gt;
[[Datei:HomebridgeDummy.PNG|mini|550px|Status- bzw. Kontroll-Dummy]]&lt;br /&gt;
&lt;br /&gt;
Es wird ein Dummy benötigt, welcher den Status des Homebridge-Dienstes anzeigt und über den dieser Dienst gesteuert werden kann. Das nötige Script um die Homebridge als Dienst zu starten wird weiter unten in diesem Artikel erstellt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
define SYS_Homebridge dummy&lt;br /&gt;
attr SYS_Homebridge devStateIcon .*on:general_an .*off:general_aus .*:audio_rec&lt;br /&gt;
attr SYS_Homebridge eventMap status:status start:start stop:stop restart:restart&lt;br /&gt;
attr SYS_Homebridge icon it_router&lt;br /&gt;
attr SYS_Homebridge room System&lt;br /&gt;
attr SYS_Homebridge userReadings OnStateChange:(start|stop|restart|status) {  system (&amp;quot;sudo service homebridge &amp;quot;.ReadingsVal($NAME,&amp;quot;state&amp;quot;,&amp;quot;restart&amp;quot;).&amp;quot; &amp;amp;&amp;quot; );;  }&lt;br /&gt;
attr SYS_Homebridge webCmd status:start:stop:restart&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Dummy wird durch setzen von &amp;quot;start&amp;quot;, &amp;quot;stop&amp;quot;, &amp;quot;restart&amp;quot; oder &amp;quot;status&amp;quot; jeweils das userReading ausführen und somit letztendlich den homebridge Dienst steuert.&lt;br /&gt;
&lt;br /&gt;
=== Start Script anlegen ===&lt;br /&gt;
Nun ist das Startscript für die Homebridge anzulegen. Mittels dem folgenden Befehl wird (wenn noch nicht vorhanden) das homebridge Script angelegt und im Editor geöffnet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Wenn die Homebridge nicht auf dem selben System läuft wie FHEM muss dieser Schritt auf dem Homebridge System ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Das nun folgende Script kann in die homebridge Datei die im Nano Editor geöffnet ist rein kopiert werden. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039;: die Variabeln &#039;&#039;homeBridgeUser&#039;&#039;, &#039;&#039;fhemHost&#039;&#039; und &#039;&#039;fhemHostTelnetPort&#039;&#039; sind ggf. auf die eigenen Gegebenheiten anzupassen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
### BEGIN INIT INFO&lt;br /&gt;
# Provides: homebridge&lt;br /&gt;
# Required-Start: $network $remote_fs $syslog&lt;br /&gt;
# Required-Stop: $remote_fs $syslog&lt;br /&gt;
# Default-Start: 2 3 4 5&lt;br /&gt;
# Default-Stop: 0 1 6&lt;br /&gt;
# Short-Description: Start daemon at boot time for homebridge&lt;br /&gt;
# Description: Enable service provided by daemon.&lt;br /&gt;
### END INIT INFO&lt;br /&gt;
export PATH=$PATH:/usr/local/bin&lt;br /&gt;
export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules&lt;br /&gt;
&lt;br /&gt;
PID=`pidof homebridge`&lt;br /&gt;
homeBridgeUser=&amp;quot;fhem&amp;quot;&lt;br /&gt;
fhemHost=127.0.0.1          #FHEM Server (Masterinstanz)&lt;br /&gt;
fhemHostTelnetPort=7072     #TelnetPort der FHEM Instanz&lt;br /&gt;
fhemDefine=&amp;quot;SYS_Homebridge&amp;quot;&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
start)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is already running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is already running&amp;quot;			&lt;br /&gt;
else&lt;br /&gt;
        su - $homeBridgeUser -c &amp;quot;homebridge &amp;gt; /dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&amp;quot;&lt;br /&gt;
        echo &amp;quot;Homebridge starting&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge starting&amp;quot;	&lt;br /&gt;
	perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine on&amp;quot;&lt;br /&gt;
        sleep 2&lt;br /&gt;
	$0 status&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
stop)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is not running&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        kill $PID&lt;br /&gt;
        echo &amp;quot;Homebridge stopping&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge stopping&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine off&amp;quot;&lt;br /&gt;
        sleep 2&lt;br /&gt;
	$0 status		&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
restart)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        $0 start&lt;br /&gt;
else&lt;br /&gt;
        $0 stop&lt;br /&gt;
        $0 start&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
status)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is running PID $PID&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge running as PID $PID&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is not running&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
*)&lt;br /&gt;
echo &amp;quot;Usage: $0 {start|stop|status|restart}&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
;;&lt;br /&gt;
esac&lt;br /&gt;
exit 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Script setzt in dem bereits angelegten Dummy ein Reading &#039;&#039;info&#039;&#039; in dem der Ausführungsstatus des Scripts wieder gegeben wird. Das Reading &#039;&#039;state&#039;&#039; wir auf on oder off gesetzt. &#039;&#039;On&#039;&#039; bedeutet das Homebridge gestartet ist, &#039;&#039;off&#039;&#039; das die Homebridge nicht ausgeführt wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Damit die Homebridge auch mit Start des Systems gestartet wird sind die folgenden zwei Schritte notwendig&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo chmod 755 /etc/init.d/homebridge&lt;br /&gt;
sudo update-rc.d homebridge defaults&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum testen kann der Dienst nun mit dem Befehl&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo service homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
bzw.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo /etc/init.d/homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gestartet werden. In dem angelegten Dummy werden zwei Readings erzeugt mit den entsprechenden Rückmeldungen aus dem Script. Die Readings werden erst angezeigt wenn die bereits geöffnete Detailseite des Dummys neu geladen wird.&lt;br /&gt;
&lt;br /&gt;
=== Testlauf / Fertig ===&lt;br /&gt;
Nun können die einzelnen Aktionen über den Dummy ausführt werden. Dabei wird jeweils der eingerichtete Dienst angesteuert und eine (mit kurzer Verzögerung) Rückmeldung gegeben.&lt;br /&gt;
&lt;br /&gt;
== Sonstiges ==&lt;br /&gt;
&lt;br /&gt;
=== FHEM Benutzer Zugriff auf Script gewähren ===&lt;br /&gt;
&lt;br /&gt;
Damit aus FHEM das Script ausgeführt werden kann benötigt dieser Benutzer entsprechende Berechtigungen. Dazu ist in der sudoers ein Eintrag zu ergänzen.&lt;br /&gt;
Dazu wird die sudoers Datei im Nano Editor geöffnet&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/sudoers&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dort sollte im Abschnitt &#039;&#039;# User privilege specification&#039;&#039; die folgende Zeile ergänzt werden &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung!&#039;&#039;&#039; Sollte FHEM nicht unter dem Benuter &#039;&#039;fhem&#039;&#039; laufen ist die an den entsprechenden Stellen anzupassen. &lt;br /&gt;
&lt;br /&gt;
Beispielinhalt der sudoers:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# This file MUST be edited with the &#039;visudo&#039; command as root.&lt;br /&gt;
#&lt;br /&gt;
# Please consider adding local content in /etc/sudoers.d/ instead of&lt;br /&gt;
# directly modifying this file.&lt;br /&gt;
#&lt;br /&gt;
# See the man page for details on how to write a sudoers file.&lt;br /&gt;
#&lt;br /&gt;
Defaults	env_reset&lt;br /&gt;
Defaults	mail_badpass&lt;br /&gt;
Defaults	secure_path=&amp;quot;/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Host alias specification&lt;br /&gt;
&lt;br /&gt;
# User alias specification&lt;br /&gt;
&lt;br /&gt;
# Cmnd alias specification&lt;br /&gt;
&lt;br /&gt;
# User privilege specification&lt;br /&gt;
root	ALL=(ALL:ALL) ALL&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/opt/fhem/FHEM/backup.sh, /etc/init.d/homebridge&lt;br /&gt;
&lt;br /&gt;
# Members of the admin group may gain root privileges&lt;br /&gt;
%admin  ALL = (ALL) NOPASSWD: ALL&lt;br /&gt;
&lt;br /&gt;
# Allow members of group sudo to execute any command&lt;br /&gt;
%sudo	ALL=(ALL:ALL) ALL&lt;br /&gt;
&lt;br /&gt;
# See sudoers(5) for more information on &amp;quot;#include&amp;quot; directives:&lt;br /&gt;
&lt;br /&gt;
#includedir /etc/sudoers.d&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
&lt;br /&gt;
=== Anpassung wenn FHEM und Homebridge auf getrennten Systemen laufen ===&lt;br /&gt;
Unter dem Kapitel [[Umsetzung]] wurde bereits alle vorbereitet um mit wenigen Änderungen eine Homebridge zu starten die nicht auf dem selben System läuft wie FHEM. Es nur 2 Änderungen notwendig.&lt;br /&gt;
Die erste Änderung betrifft den eingerichteten Dummy. Hier ist das vorhandenen &#039;&#039;userReadings&#039;&#039; wie folgt abzuändern&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
attr SYS_Homebridge userReadings OnStateChange:(start|stop|restart|status) { system (&amp;quot;sudo /opt/fhem/FHEM/homebridgeserviceremote.sh &amp;quot;.ReadingsVal($NAME,&amp;quot;state&amp;quot;,&amp;quot;restart&amp;quot;).&amp;quot; &amp;amp;&amp;quot; );; } &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dadurch wird, durch die Aktionen des Dummys, ein weiteres Script angesprochen.&lt;br /&gt;
&lt;br /&gt;
Nun wird dieses Script mit hilfe des Nano Editor angelegt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /opt/fhem/FHEM/homebridgeserviceremote.sh&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und mit dem folgenden Inhalt befüllt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039;: die Variabeln &#039;&#039;remoteUser&#039;&#039;, &#039;&#039;remotePasswort&#039;&#039; und &#039;&#039;remoteHost&#039;&#039; sind ggf. auf die eigenen Gegebenheiten der entfernt laufenden Homebridge anzupassen. Der hier genannte Benutzer muss natürlich berechtigt sein die Homebridge starten zu können. Es sollte auch nicht der root User verwendet werden, sondern ein eigens dafür angelegter und in den Berechtigungen eingeschränkter Benutzer verwendet werden.&lt;br /&gt;
Wer zur Fehleranalyse etwas mehr sehen möchte ändert den Wert von &#039;&#039;debug&#039;&#039; auf 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
debug=0&lt;br /&gt;
remoteUser=&amp;quot;root&amp;quot;&lt;br /&gt;
remotePasswort=&amp;quot;root&amp;quot;&lt;br /&gt;
remoteHost=&amp;quot;192.168.1.111&amp;quot;&lt;br /&gt;
remoteService=&amp;quot;homebridge&amp;quot;&lt;br /&gt;
fhemHostTelnetPort=7072           #TelnetPort der FHEM Instanz&lt;br /&gt;
&lt;br /&gt;
# Vorraussetzungen prüfen&lt;br /&gt;
if [ $(dpkg-query -W -f=&#039;${Status}&#039; sshpass 2&amp;gt;/dev/null | grep -c &amp;quot;ok installed&amp;quot;) -eq 0 ];&lt;br /&gt;
then&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;sshpass wird benötigt. Installation beginnt&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] sshpass wird benötigt. Installation beginnt\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
	apt-get install sshpass&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;sshpass wurde installiert&amp;quot;;&lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] sshpass wurde installiert\&amp;quot;}&amp;quot;;		&lt;br /&gt;
	fi&lt;br /&gt;
fi&lt;br /&gt;
###################################&lt;br /&gt;
&lt;br /&gt;
# Befehl ausführen&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
start)&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführen von &#039;sudo service $remoteService start&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführen von &#039;sudo service $remoteService start&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
	sshpass -p &amp;quot;$remotePasswort&amp;quot; ssh -o StrictHostKeyChecking=no $remoteUser@$remoteHost &amp;quot;sudo service $remoteService start&amp;quot;&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführung beendet&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführung beendet\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
;;&lt;br /&gt;
stop)&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführen von &#039;sudo service $remoteService stop&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführen von &#039;sudo service $remoteService stop&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
	sshpass -p &amp;quot;$remotePasswort&amp;quot; ssh -o StrictHostKeyChecking=no $remoteUser@$remoteHost &amp;quot;sudo service $remoteService stop&amp;quot;&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführung beendet&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführung beendet\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
;;&lt;br /&gt;
restart)&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführen von &#039;sudo service $remoteService restart&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführen von &#039;sudo service $remoteService restart&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
	sshpass -p &amp;quot;$remotePasswort&amp;quot; ssh -o StrictHostKeyChecking=no $remoteUser@$remoteHost &amp;quot;sudo service $remoteService restart&amp;quot;&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführung beendet&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführung beendet\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
&lt;br /&gt;
;;&lt;br /&gt;
status)&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführen von &#039;sudo service $remoteService status&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;&amp;quot;;&lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführen von &#039;sudo service $remoteService status&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;\&amp;quot;}&amp;quot;;		&lt;br /&gt;
	fi&lt;br /&gt;
	sshpass -p &amp;quot;$remotePasswort&amp;quot; ssh -o StrictHostKeyChecking=no $remoteUser@$remoteHost &amp;quot;sudo service $remoteService status&amp;quot;&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführung beendet&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführung beendet\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
;;&lt;br /&gt;
*)&lt;br /&gt;
echo &amp;quot;Usage: $0 {start|stop|status|restart}&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
;;&lt;br /&gt;
esac&lt;br /&gt;
exit 0&lt;br /&gt;
###################################&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Script macht nicht sehr viel. Es verbindet sich über ssh mit dem entfernten System und startet (stopt, etc.) den Homebridge Dienst. Hinweis: es wird sshpass benötigt, welches das Script bei bedarf versucht zu installieren.&lt;br /&gt;
&lt;br /&gt;
== Dankeschön ==&lt;/div&gt;</summary>
		<author><name>Svenson08</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19599</id>
		<title>Homebridge Start und Status in FHEM</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19599"/>
		<updated>2017-02-09T05:12:51Z</updated>

		<summary type="html">&lt;p&gt;Svenson08: /* Anpassung wenn FHEM und Homebridge auf getrennten Systemen laufen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Artikel befindet sich noch im Aufbau.&lt;br /&gt;
Der Code ist noch nicht 100% getestet, es muss also noch mit Fehler gerechnet werden.&lt;br /&gt;
&lt;br /&gt;
Um nicht bei jeder Änderung, welche die Homebridge betrifft, diese über die Console manuell neustarten zu müssen zeigt diese Lösung wie dies bequem aus FHEMWEB erfolgen kann. In den nachfolgenden Abschnitten sind die einzelnen Schritte dazu erläutert.&lt;br /&gt;
&lt;br /&gt;
== Vorwort ==&lt;br /&gt;
Die im weitern genutzten Bezeichnungen von Dummys, Scriptdateinamen o.ä. können geändert werden. Die Änderungen müssen jedoch auch an allen entsprechenden Stellen vorgenommen werden.&lt;br /&gt;
Genannte IP Adressen, Benutzernamen und Passwörter sind auf die eigenen Gegebenheiten anzupassen. Die Berechtigungen des Benutzers müssen zur Ausführung der Scripte geprüft und ggf. angepasst werden. Entprechende Linux Kentnisse sollten vorhanden sein. In Teilen berücksichtigt dieser Artikel das FHEM und Homebridge nicht zwingend auf dem selben System laufen. Die hier gezeigte Lösung kann für beide Varianten genutzt werden, FHEM und Homebridge auf dem gleichen System oder auf getrennten Systemen.&lt;br /&gt;
&lt;br /&gt;
== Umsetzung ==&lt;br /&gt;
&lt;br /&gt;
=== Status- und Kontroll-Dummy ===&lt;br /&gt;
[[Datei:HomebridgeDummy.PNG|mini|550px|Status- bzw. Kontroll-Dummy]]&lt;br /&gt;
&lt;br /&gt;
Es wird ein Dummy benötigt, welcher den Status des Homebridge-Dienstes anzeigt und über den dieser Dienst gesteuert werden kann. Das nötige Script um die Homebridge als Dienst zu starten wird weiter unten in diesem Artikel erstellt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
define SYS_Homebridge dummy&lt;br /&gt;
attr SYS_Homebridge devStateIcon .*on:general_an .*off:general_aus .*:audio_rec&lt;br /&gt;
attr SYS_Homebridge eventMap status:status start:start stop:stop restart:restart&lt;br /&gt;
attr SYS_Homebridge icon it_router&lt;br /&gt;
attr SYS_Homebridge room System&lt;br /&gt;
attr SYS_Homebridge userReadings OnStateChange:(start|stop|restart|status) {  system (&amp;quot;sudo service homebridge &amp;quot;.ReadingsVal($NAME,&amp;quot;state&amp;quot;,&amp;quot;restart&amp;quot;).&amp;quot; &amp;amp;&amp;quot; );;  }&lt;br /&gt;
attr SYS_Homebridge webCmd status:start:stop:restart&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Dummy wird durch setzen von &amp;quot;start&amp;quot;, &amp;quot;stop&amp;quot;, &amp;quot;restart&amp;quot; oder &amp;quot;status&amp;quot; jeweils das userReading ausführen und somit letztendlich den homebridge Dienst steuert.&lt;br /&gt;
&lt;br /&gt;
=== Start Script anlegen ===&lt;br /&gt;
Nun ist das Startscript für die Homebridge anzulegen. Mittels dem folgenden Befehl wird (wenn noch nicht vorhanden) das homebridge Script angelegt und im Editor geöffnet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Wenn die Homebridge nicht auf dem selben System läuft wie FHEM muss dieser Schritt auf dem Homebridge System ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Das nun folgende Script kann in die homebridge Datei die im Nano Editor geöffnet ist rein kopiert werden. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039;: die Variabeln &#039;&#039;homeBridgeUser&#039;&#039;, &#039;&#039;fhemHost&#039;&#039; und &#039;&#039;fhemHostTelnetPort&#039;&#039; sind ggf. auf die eigenen Gegebenheiten anzupassen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
### BEGIN INIT INFO&lt;br /&gt;
# Provides: homebridge&lt;br /&gt;
# Required-Start: $network $remote_fs $syslog&lt;br /&gt;
# Required-Stop: $remote_fs $syslog&lt;br /&gt;
# Default-Start: 2 3 4 5&lt;br /&gt;
# Default-Stop: 0 1 6&lt;br /&gt;
# Short-Description: Start daemon at boot time for homebridge&lt;br /&gt;
# Description: Enable service provided by daemon.&lt;br /&gt;
### END INIT INFO&lt;br /&gt;
export PATH=$PATH:/usr/local/bin&lt;br /&gt;
export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules&lt;br /&gt;
&lt;br /&gt;
PID=`pidof homebridge`&lt;br /&gt;
homeBridgeUser=&amp;quot;fhem&amp;quot;&lt;br /&gt;
fhemHost=127.0.0.1          #FHEM Server (Masterinstanz)&lt;br /&gt;
fhemHostTelnetPort=7072     #TelnetPort der FHEM Instanz&lt;br /&gt;
fhemDefine=&amp;quot;SYS_Homebridge&amp;quot;&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
start)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is already running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is already running&amp;quot;			&lt;br /&gt;
else&lt;br /&gt;
        su - $homeBridgeUser -c &amp;quot;homebridge &amp;gt; /dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&amp;quot;&lt;br /&gt;
        echo &amp;quot;Homebridge starting&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge starting&amp;quot;	&lt;br /&gt;
	perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine on&amp;quot;&lt;br /&gt;
        sleep 2&lt;br /&gt;
	$0 status&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
stop)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is not running&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        kill $PID&lt;br /&gt;
        echo &amp;quot;Homebridge stopping&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge stopping&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine off&amp;quot;&lt;br /&gt;
        sleep 2&lt;br /&gt;
	$0 status		&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
restart)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        $0 start&lt;br /&gt;
else&lt;br /&gt;
        $0 stop&lt;br /&gt;
        $0 start&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
status)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is running PID $PID&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge running as PID $PID&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is not running&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
*)&lt;br /&gt;
echo &amp;quot;Usage: $0 {start|stop|status|restart}&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
;;&lt;br /&gt;
esac&lt;br /&gt;
exit 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Script setzt in dem bereits angelegten Dummy ein Reading &#039;&#039;info&#039;&#039; in dem der Ausführungsstatus des Scripts wieder gegeben wird. Das Reading &#039;&#039;state&#039;&#039; wir auf on oder off gesetzt. &#039;&#039;On&#039;&#039; bedeutet das Homebridge gestartet ist, &#039;&#039;off&#039;&#039; das die Homebridge nicht ausgeführt wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Das Tutorial wird aktuell angepasst (08.02.2017) - weiter geht es ab dieser Stelle in den nächsten Tagen....&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Damit die Homebridge auch mit Start des Systems gestartet wird sind die folgenden zwei Schritte notwendig&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo chmod 755 /etc/init.d/homebridge&lt;br /&gt;
sudo update-rc.d homebridge defaults&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum testen kann der Dienst nun mit dem Befehl&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo service homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
bzw.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo /etc/init.d/homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gestartet werden. In dem angelegten Dummy werden zwei Readings erzeugt mit den entsprechenden Rückmeldungen aus dem Script. Die Readings werden erst angezeigt wenn die bereits geöffnete Detailseite des Dummys neu geladen wird.&lt;br /&gt;
&lt;br /&gt;
=== Testlauf / Fertig ===&lt;br /&gt;
Nun können die einzelnen Aktionen über den Dummy ausführt werden. Dabei wird jeweils der eingerichtete Dienst angesteuert und eine (mit kurzer Verzögerung) Rückmeldung gegeben.&lt;br /&gt;
&lt;br /&gt;
== Sonstiges ==&lt;br /&gt;
&lt;br /&gt;
=== FHEM Benutzer Zugriff auf Script gewähren ===&lt;br /&gt;
&lt;br /&gt;
Damit aus FHEM das Script ausgeführt werden kann benötigt dieser Benutzer entsprechende Berechtigungen. Dazu ist in der sudoers ein Eintrag zu ergänzen.&lt;br /&gt;
Dazu wird die sudoers Datei im Nano Editor geöffnet&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/sudoers&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dort sollte im Abschnitt &#039;&#039;# User privilege specification&#039;&#039; die folgende Zeile ergänzt werden &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung!&#039;&#039;&#039; Sollte FHEM nicht unter dem Benuter &#039;&#039;fhem&#039;&#039; laufen ist die an den entsprechenden Stellen anzupassen. &lt;br /&gt;
&lt;br /&gt;
Beispielinhalt der sudoers:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# This file MUST be edited with the &#039;visudo&#039; command as root.&lt;br /&gt;
#&lt;br /&gt;
# Please consider adding local content in /etc/sudoers.d/ instead of&lt;br /&gt;
# directly modifying this file.&lt;br /&gt;
#&lt;br /&gt;
# See the man page for details on how to write a sudoers file.&lt;br /&gt;
#&lt;br /&gt;
Defaults	env_reset&lt;br /&gt;
Defaults	mail_badpass&lt;br /&gt;
Defaults	secure_path=&amp;quot;/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Host alias specification&lt;br /&gt;
&lt;br /&gt;
# User alias specification&lt;br /&gt;
&lt;br /&gt;
# Cmnd alias specification&lt;br /&gt;
&lt;br /&gt;
# User privilege specification&lt;br /&gt;
root	ALL=(ALL:ALL) ALL&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/opt/fhem/FHEM/backup.sh, /etc/init.d/homebridge&lt;br /&gt;
&lt;br /&gt;
# Members of the admin group may gain root privileges&lt;br /&gt;
%admin  ALL = (ALL) NOPASSWD: ALL&lt;br /&gt;
&lt;br /&gt;
# Allow members of group sudo to execute any command&lt;br /&gt;
%sudo	ALL=(ALL:ALL) ALL&lt;br /&gt;
&lt;br /&gt;
# See sudoers(5) for more information on &amp;quot;#include&amp;quot; directives:&lt;br /&gt;
&lt;br /&gt;
#includedir /etc/sudoers.d&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
&lt;br /&gt;
=== Anpassung wenn FHEM und Homebridge auf getrennten Systemen laufen ===&lt;br /&gt;
Unter dem Kapitel [[Umsetzung]] wurde bereits alle vorbereitet um mit wenigen Änderungen eine Homebridge zu starten die nicht auf dem selben System läuft wie FHEM. Es nur 2 Änderungen notwendig.&lt;br /&gt;
Die erste Änderung betrifft den eingerichteten Dummy. Hier ist das vorhandenen &#039;&#039;userReadings&#039;&#039; wie folgt abzuändern&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
attr SYS_Homebridge userReadings OnStateChange:(start|stop|restart|status) { system (&amp;quot;sudo /opt/fhem/FHEM/homebridgeserviceremote.sh &amp;quot;.ReadingsVal($NAME,&amp;quot;state&amp;quot;,&amp;quot;restart&amp;quot;).&amp;quot; &amp;amp;&amp;quot; );; } &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dadurch wird, durch die Aktionen des Dummys, ein weiteres Script angesprochen.&lt;br /&gt;
&lt;br /&gt;
Nun wird dieses Script mit hilfe des Nano Editor angelegt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /opt/fhem/FHEM/homebridgeserviceremote.sh&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und mit dem folgenden Inhalt befüllt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039;: die Variabeln &#039;&#039;remoteUser&#039;&#039;, &#039;&#039;remotePasswort&#039;&#039; und &#039;&#039;remoteHost&#039;&#039; sind ggf. auf die eigenen Gegebenheiten der entfernt laufenden Homebridge anzupassen. Der hier genannte Benutzer muss natürlich berechtigt sein die Homebridge starten zu können. Es sollte auch nicht der root User verwendet werden, sondern ein eigens dafür angelegter und in den Berechtigungen eingeschränkter Benutzer verwendet werden.&lt;br /&gt;
Wer zur Fehleranalyse etwas mehr sehen möchte ändert den Wert von &#039;&#039;debug&#039;&#039; auf 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
debug=0&lt;br /&gt;
remoteUser=&amp;quot;root&amp;quot;&lt;br /&gt;
remotePasswort=&amp;quot;root&amp;quot;&lt;br /&gt;
remoteHost=&amp;quot;192.168.1.111&amp;quot;&lt;br /&gt;
remoteService=&amp;quot;homebridge&amp;quot;&lt;br /&gt;
fhemHostTelnetPort=7072           #TelnetPort der FHEM Instanz&lt;br /&gt;
&lt;br /&gt;
# Vorraussetzungen prüfen&lt;br /&gt;
if [ $(dpkg-query -W -f=&#039;${Status}&#039; sshpass 2&amp;gt;/dev/null | grep -c &amp;quot;ok installed&amp;quot;) -eq 0 ];&lt;br /&gt;
then&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;sshpass wird benötigt. Installation beginnt&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] sshpass wird benötigt. Installation beginnt\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
	apt-get install sshpass&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;sshpass wurde installiert&amp;quot;;&lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] sshpass wurde installiert\&amp;quot;}&amp;quot;;		&lt;br /&gt;
	fi&lt;br /&gt;
fi&lt;br /&gt;
###################################&lt;br /&gt;
&lt;br /&gt;
# Befehl ausführen&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
start)&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführen von &#039;sudo service $remoteService start&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführen von &#039;sudo service $remoteService start&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
	sshpass -p &amp;quot;$remotePasswort&amp;quot; ssh -o StrictHostKeyChecking=no $remoteUser@$remoteHost &amp;quot;sudo service $remoteService start&amp;quot;&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführung beendet&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführung beendet\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
;;&lt;br /&gt;
stop)&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführen von &#039;sudo service $remoteService stop&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführen von &#039;sudo service $remoteService stop&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
	sshpass -p &amp;quot;$remotePasswort&amp;quot; ssh -o StrictHostKeyChecking=no $remoteUser@$remoteHost &amp;quot;sudo service $remoteService stop&amp;quot;&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführung beendet&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführung beendet\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
;;&lt;br /&gt;
restart)&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführen von &#039;sudo service $remoteService restart&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführen von &#039;sudo service $remoteService restart&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
	sshpass -p &amp;quot;$remotePasswort&amp;quot; ssh -o StrictHostKeyChecking=no $remoteUser@$remoteHost &amp;quot;sudo service $remoteService restart&amp;quot;&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführung beendet&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführung beendet\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
&lt;br /&gt;
;;&lt;br /&gt;
status)&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführen von &#039;sudo service $remoteService status&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;&amp;quot;;&lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführen von &#039;sudo service $remoteService status&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;\&amp;quot;}&amp;quot;;		&lt;br /&gt;
	fi&lt;br /&gt;
	sshpass -p &amp;quot;$remotePasswort&amp;quot; ssh -o StrictHostKeyChecking=no $remoteUser@$remoteHost &amp;quot;sudo service $remoteService status&amp;quot;&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführung beendet&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführung beendet\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
;;&lt;br /&gt;
*)&lt;br /&gt;
echo &amp;quot;Usage: $0 {start|stop|status|restart}&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
;;&lt;br /&gt;
esac&lt;br /&gt;
exit 0&lt;br /&gt;
###################################&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Script macht nicht sehr viel. Es verbindet sich über ssh mit dem entfernten System und startet (stopt, etc.) den Homebridge Dienst. Hinweis: es wird sshpass benötigt, welches das Script bei bedarf versucht zu installieren.&lt;br /&gt;
&lt;br /&gt;
== Dankeschön ==&lt;/div&gt;</summary>
		<author><name>Svenson08</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19598</id>
		<title>Homebridge Start und Status in FHEM</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19598"/>
		<updated>2017-02-09T05:09:49Z</updated>

		<summary type="html">&lt;p&gt;Svenson08: /* Anpassung wenn FHEM und Homebridge auf getrennten Systemen laufen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Artikel befindet sich noch im Aufbau.&lt;br /&gt;
Der Code ist noch nicht 100% getestet, es muss also noch mit Fehler gerechnet werden.&lt;br /&gt;
&lt;br /&gt;
Um nicht bei jeder Änderung, welche die Homebridge betrifft, diese über die Console manuell neustarten zu müssen zeigt diese Lösung wie dies bequem aus FHEMWEB erfolgen kann. In den nachfolgenden Abschnitten sind die einzelnen Schritte dazu erläutert.&lt;br /&gt;
&lt;br /&gt;
== Vorwort ==&lt;br /&gt;
Die im weitern genutzten Bezeichnungen von Dummys, Scriptdateinamen o.ä. können geändert werden. Die Änderungen müssen jedoch auch an allen entsprechenden Stellen vorgenommen werden.&lt;br /&gt;
Genannte IP Adressen, Benutzernamen und Passwörter sind auf die eigenen Gegebenheiten anzupassen. Die Berechtigungen des Benutzers müssen zur Ausführung der Scripte geprüft und ggf. angepasst werden. Entprechende Linux Kentnisse sollten vorhanden sein. In Teilen berücksichtigt dieser Artikel das FHEM und Homebridge nicht zwingend auf dem selben System laufen. Die hier gezeigte Lösung kann für beide Varianten genutzt werden, FHEM und Homebridge auf dem gleichen System oder auf getrennten Systemen.&lt;br /&gt;
&lt;br /&gt;
== Umsetzung ==&lt;br /&gt;
&lt;br /&gt;
=== Status- und Kontroll-Dummy ===&lt;br /&gt;
[[Datei:HomebridgeDummy.PNG|mini|550px|Status- bzw. Kontroll-Dummy]]&lt;br /&gt;
&lt;br /&gt;
Es wird ein Dummy benötigt, welcher den Status des Homebridge-Dienstes anzeigt und über den dieser Dienst gesteuert werden kann. Das nötige Script um die Homebridge als Dienst zu starten wird weiter unten in diesem Artikel erstellt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
define SYS_Homebridge dummy&lt;br /&gt;
attr SYS_Homebridge devStateIcon .*on:general_an .*off:general_aus .*:audio_rec&lt;br /&gt;
attr SYS_Homebridge eventMap status:status start:start stop:stop restart:restart&lt;br /&gt;
attr SYS_Homebridge icon it_router&lt;br /&gt;
attr SYS_Homebridge room System&lt;br /&gt;
attr SYS_Homebridge userReadings OnStateChange:(start|stop|restart|status) {  system (&amp;quot;sudo service homebridge &amp;quot;.ReadingsVal($NAME,&amp;quot;state&amp;quot;,&amp;quot;restart&amp;quot;).&amp;quot; &amp;amp;&amp;quot; );;  }&lt;br /&gt;
attr SYS_Homebridge webCmd status:start:stop:restart&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Dummy wird durch setzen von &amp;quot;start&amp;quot;, &amp;quot;stop&amp;quot;, &amp;quot;restart&amp;quot; oder &amp;quot;status&amp;quot; jeweils das userReading ausführen und somit letztendlich den homebridge Dienst steuert.&lt;br /&gt;
&lt;br /&gt;
=== Start Script anlegen ===&lt;br /&gt;
Nun ist das Startscript für die Homebridge anzulegen. Mittels dem folgenden Befehl wird (wenn noch nicht vorhanden) das homebridge Script angelegt und im Editor geöffnet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Wenn die Homebridge nicht auf dem selben System läuft wie FHEM muss dieser Schritt auf dem Homebridge System ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Das nun folgende Script kann in die homebridge Datei die im Nano Editor geöffnet ist rein kopiert werden. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039;: die Variabeln &#039;&#039;homeBridgeUser&#039;&#039;, &#039;&#039;fhemHost&#039;&#039; und &#039;&#039;fhemHostTelnetPort&#039;&#039; sind ggf. auf die eigenen Gegebenheiten anzupassen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
### BEGIN INIT INFO&lt;br /&gt;
# Provides: homebridge&lt;br /&gt;
# Required-Start: $network $remote_fs $syslog&lt;br /&gt;
# Required-Stop: $remote_fs $syslog&lt;br /&gt;
# Default-Start: 2 3 4 5&lt;br /&gt;
# Default-Stop: 0 1 6&lt;br /&gt;
# Short-Description: Start daemon at boot time for homebridge&lt;br /&gt;
# Description: Enable service provided by daemon.&lt;br /&gt;
### END INIT INFO&lt;br /&gt;
export PATH=$PATH:/usr/local/bin&lt;br /&gt;
export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules&lt;br /&gt;
&lt;br /&gt;
PID=`pidof homebridge`&lt;br /&gt;
homeBridgeUser=&amp;quot;fhem&amp;quot;&lt;br /&gt;
fhemHost=127.0.0.1          #FHEM Server (Masterinstanz)&lt;br /&gt;
fhemHostTelnetPort=7072     #TelnetPort der FHEM Instanz&lt;br /&gt;
fhemDefine=&amp;quot;SYS_Homebridge&amp;quot;&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
start)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is already running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is already running&amp;quot;			&lt;br /&gt;
else&lt;br /&gt;
        su - $homeBridgeUser -c &amp;quot;homebridge &amp;gt; /dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&amp;quot;&lt;br /&gt;
        echo &amp;quot;Homebridge starting&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge starting&amp;quot;	&lt;br /&gt;
	perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine on&amp;quot;&lt;br /&gt;
        sleep 2&lt;br /&gt;
	$0 status&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
stop)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is not running&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        kill $PID&lt;br /&gt;
        echo &amp;quot;Homebridge stopping&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge stopping&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine off&amp;quot;&lt;br /&gt;
        sleep 2&lt;br /&gt;
	$0 status		&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
restart)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        $0 start&lt;br /&gt;
else&lt;br /&gt;
        $0 stop&lt;br /&gt;
        $0 start&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
status)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is running PID $PID&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge running as PID $PID&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is not running&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
*)&lt;br /&gt;
echo &amp;quot;Usage: $0 {start|stop|status|restart}&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
;;&lt;br /&gt;
esac&lt;br /&gt;
exit 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Script setzt in dem bereits angelegten Dummy ein Reading &#039;&#039;info&#039;&#039; in dem der Ausführungsstatus des Scripts wieder gegeben wird. Das Reading &#039;&#039;state&#039;&#039; wir auf on oder off gesetzt. &#039;&#039;On&#039;&#039; bedeutet das Homebridge gestartet ist, &#039;&#039;off&#039;&#039; das die Homebridge nicht ausgeführt wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Das Tutorial wird aktuell angepasst (08.02.2017) - weiter geht es ab dieser Stelle in den nächsten Tagen....&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Damit die Homebridge auch mit Start des Systems gestartet wird sind die folgenden zwei Schritte notwendig&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo chmod 755 /etc/init.d/homebridge&lt;br /&gt;
sudo update-rc.d homebridge defaults&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum testen kann der Dienst nun mit dem Befehl&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo service homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
bzw.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo /etc/init.d/homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gestartet werden. In dem angelegten Dummy werden zwei Readings erzeugt mit den entsprechenden Rückmeldungen aus dem Script. Die Readings werden erst angezeigt wenn die bereits geöffnete Detailseite des Dummys neu geladen wird.&lt;br /&gt;
&lt;br /&gt;
=== Testlauf / Fertig ===&lt;br /&gt;
Nun können die einzelnen Aktionen über den Dummy ausführt werden. Dabei wird jeweils der eingerichtete Dienst angesteuert und eine (mit kurzer Verzögerung) Rückmeldung gegeben.&lt;br /&gt;
&lt;br /&gt;
== Sonstiges ==&lt;br /&gt;
&lt;br /&gt;
=== FHEM Benutzer Zugriff auf Script gewähren ===&lt;br /&gt;
&lt;br /&gt;
Damit aus FHEM das Script ausgeführt werden kann benötigt dieser Benutzer entsprechende Berechtigungen. Dazu ist in der sudoers ein Eintrag zu ergänzen.&lt;br /&gt;
Dazu wird die sudoers Datei im Nano Editor geöffnet&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/sudoers&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dort sollte im Abschnitt &#039;&#039;# User privilege specification&#039;&#039; die folgende Zeile ergänzt werden &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung!&#039;&#039;&#039; Sollte FHEM nicht unter dem Benuter &#039;&#039;fhem&#039;&#039; laufen ist die an den entsprechenden Stellen anzupassen. &lt;br /&gt;
&lt;br /&gt;
Beispielinhalt der sudoers:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# This file MUST be edited with the &#039;visudo&#039; command as root.&lt;br /&gt;
#&lt;br /&gt;
# Please consider adding local content in /etc/sudoers.d/ instead of&lt;br /&gt;
# directly modifying this file.&lt;br /&gt;
#&lt;br /&gt;
# See the man page for details on how to write a sudoers file.&lt;br /&gt;
#&lt;br /&gt;
Defaults	env_reset&lt;br /&gt;
Defaults	mail_badpass&lt;br /&gt;
Defaults	secure_path=&amp;quot;/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Host alias specification&lt;br /&gt;
&lt;br /&gt;
# User alias specification&lt;br /&gt;
&lt;br /&gt;
# Cmnd alias specification&lt;br /&gt;
&lt;br /&gt;
# User privilege specification&lt;br /&gt;
root	ALL=(ALL:ALL) ALL&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/opt/fhem/FHEM/backup.sh, /etc/init.d/homebridge&lt;br /&gt;
&lt;br /&gt;
# Members of the admin group may gain root privileges&lt;br /&gt;
%admin  ALL = (ALL) NOPASSWD: ALL&lt;br /&gt;
&lt;br /&gt;
# Allow members of group sudo to execute any command&lt;br /&gt;
%sudo	ALL=(ALL:ALL) ALL&lt;br /&gt;
&lt;br /&gt;
# See sudoers(5) for more information on &amp;quot;#include&amp;quot; directives:&lt;br /&gt;
&lt;br /&gt;
#includedir /etc/sudoers.d&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
&lt;br /&gt;
=== Anpassung wenn FHEM und Homebridge auf getrennten Systemen laufen ===&lt;br /&gt;
Unter dem Kapitel [[Umsetzung]] wurde bereits alle vorbereitet um mit wenigen Änderungen eine Homebridge zu starten die nicht auf dem selben System läuft wie FHEM. Es nur 2 Änderungen notwendig.&lt;br /&gt;
Die erste Änderung betrifft den eingerichteten Dummy. Hier ist das vorhandenen &#039;&#039;userReadings&#039;&#039; wie folgt abzuändern&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
attr SYS_Homebridge userReadings OnStateChange:(start|stop|restart|status) { system (&amp;quot;sudo /opt/fhem/FHEM/homebridgeserviceremote.sh &amp;quot;.ReadingsVal($NAME,&amp;quot;state&amp;quot;,&amp;quot;restart&amp;quot;).&amp;quot; &amp;amp;&amp;quot; );; } &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dadurch wird, durch die Aktionen des Dummys, ein weiteres Script angesprochen.&lt;br /&gt;
&lt;br /&gt;
Nun wird dieses Script mit hilfe des Nano Editor angelegt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /opt/fhem/FHEM/homebridgeserviceremote.sh&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und mit dem folgenden Inhalt befüllt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039;: die Variabeln &#039;&#039;remoteUser&#039;&#039;, &#039;&#039;remotePasswort&#039;&#039; und &#039;&#039;remoteHost&#039;&#039; sind ggf. auf die eigenen Gegebenheiten der entfernt laufenden Homebridge anzupassen. Der hier genannte Benutzer muss natürlich berechtigt sein die Homebridge starten zu können. Wer zur Fehleranalyse etwas mehr sehen möchte ändert den Wert von &#039;&#039;debug&#039;&#039; auf 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
debug=0&lt;br /&gt;
remoteUser=&amp;quot;root&amp;quot;&lt;br /&gt;
remotePasswort=&amp;quot;root&amp;quot;&lt;br /&gt;
remoteHost=&amp;quot;192.168.1.111&amp;quot;&lt;br /&gt;
remoteService=&amp;quot;homebridge&amp;quot;&lt;br /&gt;
fhemHostTelnetPort=7072           #TelnetPort der FHEM Instanz&lt;br /&gt;
&lt;br /&gt;
# Vorraussetzungen prüfen&lt;br /&gt;
if [ $(dpkg-query -W -f=&#039;${Status}&#039; sshpass 2&amp;gt;/dev/null | grep -c &amp;quot;ok installed&amp;quot;) -eq 0 ];&lt;br /&gt;
then&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;sshpass wird benötigt. Installation beginnt&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] sshpass wird benötigt. Installation beginnt\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
	apt-get install sshpass&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;sshpass wurde installiert&amp;quot;;&lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] sshpass wurde installiert\&amp;quot;}&amp;quot;;		&lt;br /&gt;
	fi&lt;br /&gt;
fi&lt;br /&gt;
###################################&lt;br /&gt;
&lt;br /&gt;
# Befehl ausführen&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
start)&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführen von &#039;sudo service $remoteService start&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführen von &#039;sudo service $remoteService start&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
	sshpass -p &amp;quot;$remotePasswort&amp;quot; ssh -o StrictHostKeyChecking=no $remoteUser@$remoteHost &amp;quot;sudo service $remoteService start&amp;quot;&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführung beendet&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführung beendet\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
;;&lt;br /&gt;
stop)&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführen von &#039;sudo service $remoteService stop&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführen von &#039;sudo service $remoteService stop&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
	sshpass -p &amp;quot;$remotePasswort&amp;quot; ssh -o StrictHostKeyChecking=no $remoteUser@$remoteHost &amp;quot;sudo service $remoteService stop&amp;quot;&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführung beendet&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführung beendet\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
;;&lt;br /&gt;
restart)&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführen von &#039;sudo service $remoteService restart&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführen von &#039;sudo service $remoteService restart&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
	sshpass -p &amp;quot;$remotePasswort&amp;quot; ssh -o StrictHostKeyChecking=no $remoteUser@$remoteHost &amp;quot;sudo service $remoteService restart&amp;quot;&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführung beendet&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführung beendet\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
&lt;br /&gt;
;;&lt;br /&gt;
status)&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführen von &#039;sudo service $remoteService status&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;&amp;quot;;&lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführen von &#039;sudo service $remoteService status&#039; auf &#039;$remoteHost&#039; als &#039;$remoteUser&#039;\&amp;quot;}&amp;quot;;		&lt;br /&gt;
	fi&lt;br /&gt;
	sshpass -p &amp;quot;$remotePasswort&amp;quot; ssh -o StrictHostKeyChecking=no $remoteUser@$remoteHost &amp;quot;sudo service $remoteService status&amp;quot;&lt;br /&gt;
	if [ &amp;quot;$debug&amp;quot; = &amp;quot;1&amp;quot; ]; then &lt;br /&gt;
		echo &amp;quot;Ausführung beendet&amp;quot;; &lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHostTelnetPort &amp;quot;{Log 1, \&amp;quot;[homebridgeserviceremote.sh] Ausführung beendet\&amp;quot;}&amp;quot;;&lt;br /&gt;
	fi&lt;br /&gt;
;;&lt;br /&gt;
*)&lt;br /&gt;
echo &amp;quot;Usage: $0 {start|stop|status|restart}&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
;;&lt;br /&gt;
esac&lt;br /&gt;
exit 0&lt;br /&gt;
###################################&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Dankeschön ==&lt;/div&gt;</summary>
		<author><name>Svenson08</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19597</id>
		<title>Homebridge Start und Status in FHEM</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19597"/>
		<updated>2017-02-09T04:59:12Z</updated>

		<summary type="html">&lt;p&gt;Svenson08: /* FHEM Benutzer Zugriff auf Script gewähren */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Artikel befindet sich noch im Aufbau.&lt;br /&gt;
Der Code ist noch nicht 100% getestet, es muss also noch mit Fehler gerechnet werden.&lt;br /&gt;
&lt;br /&gt;
Um nicht bei jeder Änderung, welche die Homebridge betrifft, diese über die Console manuell neustarten zu müssen zeigt diese Lösung wie dies bequem aus FHEMWEB erfolgen kann. In den nachfolgenden Abschnitten sind die einzelnen Schritte dazu erläutert.&lt;br /&gt;
&lt;br /&gt;
== Vorwort ==&lt;br /&gt;
Die im weitern genutzten Bezeichnungen von Dummys, Scriptdateinamen o.ä. können geändert werden. Die Änderungen müssen jedoch auch an allen entsprechenden Stellen vorgenommen werden.&lt;br /&gt;
Genannte IP Adressen, Benutzernamen und Passwörter sind auf die eigenen Gegebenheiten anzupassen. Die Berechtigungen des Benutzers müssen zur Ausführung der Scripte geprüft und ggf. angepasst werden. Entprechende Linux Kentnisse sollten vorhanden sein. In Teilen berücksichtigt dieser Artikel das FHEM und Homebridge nicht zwingend auf dem selben System laufen. Die hier gezeigte Lösung kann für beide Varianten genutzt werden, FHEM und Homebridge auf dem gleichen System oder auf getrennten Systemen.&lt;br /&gt;
&lt;br /&gt;
== Umsetzung ==&lt;br /&gt;
&lt;br /&gt;
=== Status- und Kontroll-Dummy ===&lt;br /&gt;
[[Datei:HomebridgeDummy.PNG|mini|550px|Status- bzw. Kontroll-Dummy]]&lt;br /&gt;
&lt;br /&gt;
Es wird ein Dummy benötigt, welcher den Status des Homebridge-Dienstes anzeigt und über den dieser Dienst gesteuert werden kann. Das nötige Script um die Homebridge als Dienst zu starten wird weiter unten in diesem Artikel erstellt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
define SYS_Homebridge dummy&lt;br /&gt;
attr SYS_Homebridge devStateIcon .*on:general_an .*off:general_aus .*:audio_rec&lt;br /&gt;
attr SYS_Homebridge eventMap status:status start:start stop:stop restart:restart&lt;br /&gt;
attr SYS_Homebridge icon it_router&lt;br /&gt;
attr SYS_Homebridge room System&lt;br /&gt;
attr SYS_Homebridge userReadings OnStateChange:(start|stop|restart|status) {  system (&amp;quot;sudo service homebridge &amp;quot;.ReadingsVal($NAME,&amp;quot;state&amp;quot;,&amp;quot;restart&amp;quot;).&amp;quot; &amp;amp;&amp;quot; );;  }&lt;br /&gt;
attr SYS_Homebridge webCmd status:start:stop:restart&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Dummy wird durch setzen von &amp;quot;start&amp;quot;, &amp;quot;stop&amp;quot;, &amp;quot;restart&amp;quot; oder &amp;quot;status&amp;quot; jeweils das userReading ausführen und somit letztendlich den homebridge Dienst steuert.&lt;br /&gt;
&lt;br /&gt;
=== Start Script anlegen ===&lt;br /&gt;
Nun ist das Startscript für die Homebridge anzulegen. Mittels dem folgenden Befehl wird (wenn noch nicht vorhanden) das homebridge Script angelegt und im Editor geöffnet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Wenn die Homebridge nicht auf dem selben System läuft wie FHEM muss dieser Schritt auf dem Homebridge System ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Das nun folgende Script kann in die homebridge Datei die im Nano Editor geöffnet ist rein kopiert werden. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039;: die Variabeln &#039;&#039;homeBridgeUser&#039;&#039;, &#039;&#039;fhemHost&#039;&#039; und &#039;&#039;fhemHostTelnetPort&#039;&#039; sind ggf. auf die eigenen Gegebenheiten anzupassen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
### BEGIN INIT INFO&lt;br /&gt;
# Provides: homebridge&lt;br /&gt;
# Required-Start: $network $remote_fs $syslog&lt;br /&gt;
# Required-Stop: $remote_fs $syslog&lt;br /&gt;
# Default-Start: 2 3 4 5&lt;br /&gt;
# Default-Stop: 0 1 6&lt;br /&gt;
# Short-Description: Start daemon at boot time for homebridge&lt;br /&gt;
# Description: Enable service provided by daemon.&lt;br /&gt;
### END INIT INFO&lt;br /&gt;
export PATH=$PATH:/usr/local/bin&lt;br /&gt;
export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules&lt;br /&gt;
&lt;br /&gt;
PID=`pidof homebridge`&lt;br /&gt;
homeBridgeUser=&amp;quot;fhem&amp;quot;&lt;br /&gt;
fhemHost=127.0.0.1          #FHEM Server (Masterinstanz)&lt;br /&gt;
fhemHostTelnetPort=7072     #TelnetPort der FHEM Instanz&lt;br /&gt;
fhemDefine=&amp;quot;SYS_Homebridge&amp;quot;&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
start)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is already running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is already running&amp;quot;			&lt;br /&gt;
else&lt;br /&gt;
        su - $homeBridgeUser -c &amp;quot;homebridge &amp;gt; /dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&amp;quot;&lt;br /&gt;
        echo &amp;quot;Homebridge starting&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge starting&amp;quot;	&lt;br /&gt;
	perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine on&amp;quot;&lt;br /&gt;
        sleep 2&lt;br /&gt;
	$0 status&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
stop)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is not running&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        kill $PID&lt;br /&gt;
        echo &amp;quot;Homebridge stopping&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge stopping&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine off&amp;quot;&lt;br /&gt;
        sleep 2&lt;br /&gt;
	$0 status		&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
restart)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        $0 start&lt;br /&gt;
else&lt;br /&gt;
        $0 stop&lt;br /&gt;
        $0 start&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
status)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is running PID $PID&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge running as PID $PID&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is not running&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
*)&lt;br /&gt;
echo &amp;quot;Usage: $0 {start|stop|status|restart}&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
;;&lt;br /&gt;
esac&lt;br /&gt;
exit 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Script setzt in dem bereits angelegten Dummy ein Reading &#039;&#039;info&#039;&#039; in dem der Ausführungsstatus des Scripts wieder gegeben wird. Das Reading &#039;&#039;state&#039;&#039; wir auf on oder off gesetzt. &#039;&#039;On&#039;&#039; bedeutet das Homebridge gestartet ist, &#039;&#039;off&#039;&#039; das die Homebridge nicht ausgeführt wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Das Tutorial wird aktuell angepasst (08.02.2017) - weiter geht es ab dieser Stelle in den nächsten Tagen....&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Damit die Homebridge auch mit Start des Systems gestartet wird sind die folgenden zwei Schritte notwendig&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo chmod 755 /etc/init.d/homebridge&lt;br /&gt;
sudo update-rc.d homebridge defaults&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum testen kann der Dienst nun mit dem Befehl&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo service homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
bzw.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo /etc/init.d/homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gestartet werden. In dem angelegten Dummy werden zwei Readings erzeugt mit den entsprechenden Rückmeldungen aus dem Script. Die Readings werden erst angezeigt wenn die bereits geöffnete Detailseite des Dummys neu geladen wird.&lt;br /&gt;
&lt;br /&gt;
=== Testlauf / Fertig ===&lt;br /&gt;
Nun können die einzelnen Aktionen über den Dummy ausführt werden. Dabei wird jeweils der eingerichtete Dienst angesteuert und eine (mit kurzer Verzögerung) Rückmeldung gegeben.&lt;br /&gt;
&lt;br /&gt;
== Sonstiges ==&lt;br /&gt;
&lt;br /&gt;
=== FHEM Benutzer Zugriff auf Script gewähren ===&lt;br /&gt;
&lt;br /&gt;
Damit aus FHEM das Script ausgeführt werden kann benötigt dieser Benutzer entsprechende Berechtigungen. Dazu ist in der sudoers ein Eintrag zu ergänzen.&lt;br /&gt;
Dazu wird die sudoers Datei im Nano Editor geöffnet&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/sudoers&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dort sollte im Abschnitt &#039;&#039;# User privilege specification&#039;&#039; die folgende Zeile ergänzt werden &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung!&#039;&#039;&#039; Sollte FHEM nicht unter dem Benuter &#039;&#039;fhem&#039;&#039; laufen ist die an den entsprechenden Stellen anzupassen. &lt;br /&gt;
&lt;br /&gt;
Beispielinhalt der sudoers:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# This file MUST be edited with the &#039;visudo&#039; command as root.&lt;br /&gt;
#&lt;br /&gt;
# Please consider adding local content in /etc/sudoers.d/ instead of&lt;br /&gt;
# directly modifying this file.&lt;br /&gt;
#&lt;br /&gt;
# See the man page for details on how to write a sudoers file.&lt;br /&gt;
#&lt;br /&gt;
Defaults	env_reset&lt;br /&gt;
Defaults	mail_badpass&lt;br /&gt;
Defaults	secure_path=&amp;quot;/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Host alias specification&lt;br /&gt;
&lt;br /&gt;
# User alias specification&lt;br /&gt;
&lt;br /&gt;
# Cmnd alias specification&lt;br /&gt;
&lt;br /&gt;
# User privilege specification&lt;br /&gt;
root	ALL=(ALL:ALL) ALL&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/opt/fhem/FHEM/backup.sh, /etc/init.d/homebridge&lt;br /&gt;
&lt;br /&gt;
# Members of the admin group may gain root privileges&lt;br /&gt;
%admin  ALL = (ALL) NOPASSWD: ALL&lt;br /&gt;
&lt;br /&gt;
# Allow members of group sudo to execute any command&lt;br /&gt;
%sudo	ALL=(ALL:ALL) ALL&lt;br /&gt;
&lt;br /&gt;
# See sudoers(5) for more information on &amp;quot;#include&amp;quot; directives:&lt;br /&gt;
&lt;br /&gt;
#includedir /etc/sudoers.d&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
&lt;br /&gt;
=== Anpassung wenn FHEM und Homebridge auf getrennten Systemen laufen ===&lt;/div&gt;</summary>
		<author><name>Svenson08</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19596</id>
		<title>Homebridge Start und Status in FHEM</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19596"/>
		<updated>2017-02-09T04:58:01Z</updated>

		<summary type="html">&lt;p&gt;Svenson08: /* Homebridge FHEM Zugriff auf Script gewähren */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Artikel befindet sich noch im Aufbau.&lt;br /&gt;
Der Code ist noch nicht 100% getestet, es muss also noch mit Fehler gerechnet werden.&lt;br /&gt;
&lt;br /&gt;
Um nicht bei jeder Änderung, welche die Homebridge betrifft, diese über die Console manuell neustarten zu müssen zeigt diese Lösung wie dies bequem aus FHEMWEB erfolgen kann. In den nachfolgenden Abschnitten sind die einzelnen Schritte dazu erläutert.&lt;br /&gt;
&lt;br /&gt;
== Vorwort ==&lt;br /&gt;
Die im weitern genutzten Bezeichnungen von Dummys, Scriptdateinamen o.ä. können geändert werden. Die Änderungen müssen jedoch auch an allen entsprechenden Stellen vorgenommen werden.&lt;br /&gt;
Genannte IP Adressen, Benutzernamen und Passwörter sind auf die eigenen Gegebenheiten anzupassen. Die Berechtigungen des Benutzers müssen zur Ausführung der Scripte geprüft und ggf. angepasst werden. Entprechende Linux Kentnisse sollten vorhanden sein. In Teilen berücksichtigt dieser Artikel das FHEM und Homebridge nicht zwingend auf dem selben System laufen. Die hier gezeigte Lösung kann für beide Varianten genutzt werden, FHEM und Homebridge auf dem gleichen System oder auf getrennten Systemen.&lt;br /&gt;
&lt;br /&gt;
== Umsetzung ==&lt;br /&gt;
&lt;br /&gt;
=== Status- und Kontroll-Dummy ===&lt;br /&gt;
[[Datei:HomebridgeDummy.PNG|mini|550px|Status- bzw. Kontroll-Dummy]]&lt;br /&gt;
&lt;br /&gt;
Es wird ein Dummy benötigt, welcher den Status des Homebridge-Dienstes anzeigt und über den dieser Dienst gesteuert werden kann. Das nötige Script um die Homebridge als Dienst zu starten wird weiter unten in diesem Artikel erstellt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
define SYS_Homebridge dummy&lt;br /&gt;
attr SYS_Homebridge devStateIcon .*on:general_an .*off:general_aus .*:audio_rec&lt;br /&gt;
attr SYS_Homebridge eventMap status:status start:start stop:stop restart:restart&lt;br /&gt;
attr SYS_Homebridge icon it_router&lt;br /&gt;
attr SYS_Homebridge room System&lt;br /&gt;
attr SYS_Homebridge userReadings OnStateChange:(start|stop|restart|status) {  system (&amp;quot;sudo service homebridge &amp;quot;.ReadingsVal($NAME,&amp;quot;state&amp;quot;,&amp;quot;restart&amp;quot;).&amp;quot; &amp;amp;&amp;quot; );;  }&lt;br /&gt;
attr SYS_Homebridge webCmd status:start:stop:restart&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Dummy wird durch setzen von &amp;quot;start&amp;quot;, &amp;quot;stop&amp;quot;, &amp;quot;restart&amp;quot; oder &amp;quot;status&amp;quot; jeweils das userReading ausführen und somit letztendlich den homebridge Dienst steuert.&lt;br /&gt;
&lt;br /&gt;
=== Start Script anlegen ===&lt;br /&gt;
Nun ist das Startscript für die Homebridge anzulegen. Mittels dem folgenden Befehl wird (wenn noch nicht vorhanden) das homebridge Script angelegt und im Editor geöffnet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Wenn die Homebridge nicht auf dem selben System läuft wie FHEM muss dieser Schritt auf dem Homebridge System ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Das nun folgende Script kann in die homebridge Datei die im Nano Editor geöffnet ist rein kopiert werden. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039;: die Variabeln &#039;&#039;homeBridgeUser&#039;&#039;, &#039;&#039;fhemHost&#039;&#039; und &#039;&#039;fhemHostTelnetPort&#039;&#039; sind ggf. auf die eigenen Gegebenheiten anzupassen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
### BEGIN INIT INFO&lt;br /&gt;
# Provides: homebridge&lt;br /&gt;
# Required-Start: $network $remote_fs $syslog&lt;br /&gt;
# Required-Stop: $remote_fs $syslog&lt;br /&gt;
# Default-Start: 2 3 4 5&lt;br /&gt;
# Default-Stop: 0 1 6&lt;br /&gt;
# Short-Description: Start daemon at boot time for homebridge&lt;br /&gt;
# Description: Enable service provided by daemon.&lt;br /&gt;
### END INIT INFO&lt;br /&gt;
export PATH=$PATH:/usr/local/bin&lt;br /&gt;
export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules&lt;br /&gt;
&lt;br /&gt;
PID=`pidof homebridge`&lt;br /&gt;
homeBridgeUser=&amp;quot;fhem&amp;quot;&lt;br /&gt;
fhemHost=127.0.0.1          #FHEM Server (Masterinstanz)&lt;br /&gt;
fhemHostTelnetPort=7072     #TelnetPort der FHEM Instanz&lt;br /&gt;
fhemDefine=&amp;quot;SYS_Homebridge&amp;quot;&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
start)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is already running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is already running&amp;quot;			&lt;br /&gt;
else&lt;br /&gt;
        su - $homeBridgeUser -c &amp;quot;homebridge &amp;gt; /dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&amp;quot;&lt;br /&gt;
        echo &amp;quot;Homebridge starting&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge starting&amp;quot;	&lt;br /&gt;
	perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine on&amp;quot;&lt;br /&gt;
        sleep 2&lt;br /&gt;
	$0 status&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
stop)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is not running&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        kill $PID&lt;br /&gt;
        echo &amp;quot;Homebridge stopping&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge stopping&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine off&amp;quot;&lt;br /&gt;
        sleep 2&lt;br /&gt;
	$0 status		&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
restart)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        $0 start&lt;br /&gt;
else&lt;br /&gt;
        $0 stop&lt;br /&gt;
        $0 start&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
status)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is running PID $PID&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge running as PID $PID&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is not running&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
*)&lt;br /&gt;
echo &amp;quot;Usage: $0 {start|stop|status|restart}&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
;;&lt;br /&gt;
esac&lt;br /&gt;
exit 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Script setzt in dem bereits angelegten Dummy ein Reading &#039;&#039;info&#039;&#039; in dem der Ausführungsstatus des Scripts wieder gegeben wird. Das Reading &#039;&#039;state&#039;&#039; wir auf on oder off gesetzt. &#039;&#039;On&#039;&#039; bedeutet das Homebridge gestartet ist, &#039;&#039;off&#039;&#039; das die Homebridge nicht ausgeführt wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Das Tutorial wird aktuell angepasst (08.02.2017) - weiter geht es ab dieser Stelle in den nächsten Tagen....&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Damit die Homebridge auch mit Start des Systems gestartet wird sind die folgenden zwei Schritte notwendig&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo chmod 755 /etc/init.d/homebridge&lt;br /&gt;
sudo update-rc.d homebridge defaults&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum testen kann der Dienst nun mit dem Befehl&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo service homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
bzw.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo /etc/init.d/homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gestartet werden. In dem angelegten Dummy werden zwei Readings erzeugt mit den entsprechenden Rückmeldungen aus dem Script. Die Readings werden erst angezeigt wenn die bereits geöffnete Detailseite des Dummys neu geladen wird.&lt;br /&gt;
&lt;br /&gt;
=== Testlauf / Fertig ===&lt;br /&gt;
Nun können die einzelnen Aktionen über den Dummy ausführt werden. Dabei wird jeweils der eingerichtete Dienst angesteuert und eine (mit kurzer Verzögerung) Rückmeldung gegeben.&lt;br /&gt;
&lt;br /&gt;
== Sonstiges ==&lt;br /&gt;
&lt;br /&gt;
=== FHEM Benutzer Zugriff auf Script gewähren ===&lt;br /&gt;
&lt;br /&gt;
Damit aus FHEM das Script ausgeführt werden kann benötigt dieser Benutzer entsprechende Berechtigungen. Dazu ist in der sudoers ein Eintrag zu ergänzen.&lt;br /&gt;
Dazu wird die sudoers Datei im Nano Editor geöffnet&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/sudoers&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dort sollte im Abschnitt &#039;&#039;# User privilege specification&#039;&#039; die folgende Zeile ergänzt werden &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung!&#039;&#039;&#039; Sollte FHEM nicht unter dem Benuter &#039;&#039;fhem&#039;&#039; laufen ist die an den entsprechenden Stellen anzupassen. &lt;br /&gt;
&lt;br /&gt;
Beispielinhalt der sudoers:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# This file MUST be edited with the &#039;visudo&#039; command as root.&lt;br /&gt;
#&lt;br /&gt;
# Please consider adding local content in /etc/sudoers.d/ instead of&lt;br /&gt;
# directly modifying this file.&lt;br /&gt;
#&lt;br /&gt;
# See the man page for details on how to write a sudoers file.&lt;br /&gt;
#&lt;br /&gt;
Defaults	env_reset&lt;br /&gt;
Defaults	mail_badpass&lt;br /&gt;
Defaults	secure_path=&amp;quot;/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Host alias specification&lt;br /&gt;
&lt;br /&gt;
# User alias specification&lt;br /&gt;
&lt;br /&gt;
# Cmnd alias specification&lt;br /&gt;
&lt;br /&gt;
# User privilege specification&lt;br /&gt;
root	ALL=(ALL:ALL) ALL&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/opt/fhem/FHEM/backup.sh, /etc/init.d/homebridge&lt;br /&gt;
&lt;br /&gt;
# Members of the admin group may gain root privileges&lt;br /&gt;
%admin  ALL = (ALL) NOPASSWD: ALL&lt;br /&gt;
&lt;br /&gt;
# Allow members of group sudo to execute any command&lt;br /&gt;
%sudo	ALL=(ALL:ALL) ALL&lt;br /&gt;
&lt;br /&gt;
# See sudoers(5) for more information on &amp;quot;#include&amp;quot; directives:&lt;br /&gt;
&lt;br /&gt;
#includedir /etc/sudoers.d&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Svenson08</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19595</id>
		<title>Homebridge Start und Status in FHEM</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19595"/>
		<updated>2017-02-09T04:52:59Z</updated>

		<summary type="html">&lt;p&gt;Svenson08: /* Homebridge Start per FHEM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Artikel befindet sich noch im Aufbau.&lt;br /&gt;
Der Code ist noch nicht 100% getestet, es muss also noch mit Fehler gerechnet werden.&lt;br /&gt;
&lt;br /&gt;
Um nicht bei jeder Änderung, welche die Homebridge betrifft, diese über die Console manuell neustarten zu müssen zeigt diese Lösung wie dies bequem aus FHEMWEB erfolgen kann. In den nachfolgenden Abschnitten sind die einzelnen Schritte dazu erläutert.&lt;br /&gt;
&lt;br /&gt;
== Vorwort ==&lt;br /&gt;
Die im weitern genutzten Bezeichnungen von Dummys, Scriptdateinamen o.ä. können geändert werden. Die Änderungen müssen jedoch auch an allen entsprechenden Stellen vorgenommen werden.&lt;br /&gt;
Genannte IP Adressen, Benutzernamen und Passwörter sind auf die eigenen Gegebenheiten anzupassen. Die Berechtigungen des Benutzers müssen zur Ausführung der Scripte geprüft und ggf. angepasst werden. Entprechende Linux Kentnisse sollten vorhanden sein. In Teilen berücksichtigt dieser Artikel das FHEM und Homebridge nicht zwingend auf dem selben System laufen. Die hier gezeigte Lösung kann für beide Varianten genutzt werden, FHEM und Homebridge auf dem gleichen System oder auf getrennten Systemen.&lt;br /&gt;
&lt;br /&gt;
== Umsetzung ==&lt;br /&gt;
&lt;br /&gt;
=== Status- und Kontroll-Dummy ===&lt;br /&gt;
[[Datei:HomebridgeDummy.PNG|mini|550px|Status- bzw. Kontroll-Dummy]]&lt;br /&gt;
&lt;br /&gt;
Es wird ein Dummy benötigt, welcher den Status des Homebridge-Dienstes anzeigt und über den dieser Dienst gesteuert werden kann. Das nötige Script um die Homebridge als Dienst zu starten wird weiter unten in diesem Artikel erstellt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
define SYS_Homebridge dummy&lt;br /&gt;
attr SYS_Homebridge devStateIcon .*on:general_an .*off:general_aus .*:audio_rec&lt;br /&gt;
attr SYS_Homebridge eventMap status:status start:start stop:stop restart:restart&lt;br /&gt;
attr SYS_Homebridge icon it_router&lt;br /&gt;
attr SYS_Homebridge room System&lt;br /&gt;
attr SYS_Homebridge userReadings OnStateChange:(start|stop|restart|status) {  system (&amp;quot;sudo service homebridge &amp;quot;.ReadingsVal($NAME,&amp;quot;state&amp;quot;,&amp;quot;restart&amp;quot;).&amp;quot; &amp;amp;&amp;quot; );;  }&lt;br /&gt;
attr SYS_Homebridge webCmd status:start:stop:restart&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Dummy wird durch setzen von &amp;quot;start&amp;quot;, &amp;quot;stop&amp;quot;, &amp;quot;restart&amp;quot; oder &amp;quot;status&amp;quot; jeweils das userReading ausführen und somit letztendlich den homebridge Dienst steuert.&lt;br /&gt;
&lt;br /&gt;
=== Start Script anlegen ===&lt;br /&gt;
Nun ist das Startscript für die Homebridge anzulegen. Mittels dem folgenden Befehl wird (wenn noch nicht vorhanden) das homebridge Script angelegt und im Editor geöffnet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Wenn die Homebridge nicht auf dem selben System läuft wie FHEM muss dieser Schritt auf dem Homebridge System ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Das nun folgende Script kann in die homebridge Datei die im Nano Editor geöffnet ist rein kopiert werden. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039;: die Variabeln &#039;&#039;homeBridgeUser&#039;&#039;, &#039;&#039;fhemHost&#039;&#039; und &#039;&#039;fhemHostTelnetPort&#039;&#039; sind ggf. auf die eigenen Gegebenheiten anzupassen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
### BEGIN INIT INFO&lt;br /&gt;
# Provides: homebridge&lt;br /&gt;
# Required-Start: $network $remote_fs $syslog&lt;br /&gt;
# Required-Stop: $remote_fs $syslog&lt;br /&gt;
# Default-Start: 2 3 4 5&lt;br /&gt;
# Default-Stop: 0 1 6&lt;br /&gt;
# Short-Description: Start daemon at boot time for homebridge&lt;br /&gt;
# Description: Enable service provided by daemon.&lt;br /&gt;
### END INIT INFO&lt;br /&gt;
export PATH=$PATH:/usr/local/bin&lt;br /&gt;
export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules&lt;br /&gt;
&lt;br /&gt;
PID=`pidof homebridge`&lt;br /&gt;
homeBridgeUser=&amp;quot;fhem&amp;quot;&lt;br /&gt;
fhemHost=127.0.0.1          #FHEM Server (Masterinstanz)&lt;br /&gt;
fhemHostTelnetPort=7072     #TelnetPort der FHEM Instanz&lt;br /&gt;
fhemDefine=&amp;quot;SYS_Homebridge&amp;quot;&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
start)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is already running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is already running&amp;quot;			&lt;br /&gt;
else&lt;br /&gt;
        su - $homeBridgeUser -c &amp;quot;homebridge &amp;gt; /dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&amp;quot;&lt;br /&gt;
        echo &amp;quot;Homebridge starting&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge starting&amp;quot;	&lt;br /&gt;
	perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine on&amp;quot;&lt;br /&gt;
        sleep 2&lt;br /&gt;
	$0 status&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
stop)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is not running&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        kill $PID&lt;br /&gt;
        echo &amp;quot;Homebridge stopping&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge stopping&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine off&amp;quot;&lt;br /&gt;
        sleep 2&lt;br /&gt;
	$0 status		&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
restart)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        $0 start&lt;br /&gt;
else&lt;br /&gt;
        $0 stop&lt;br /&gt;
        $0 start&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
status)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is running PID $PID&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge running as PID $PID&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is not running&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
*)&lt;br /&gt;
echo &amp;quot;Usage: $0 {start|stop|status|restart}&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
;;&lt;br /&gt;
esac&lt;br /&gt;
exit 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Script setzt in dem bereits angelegten Dummy ein Reading &#039;&#039;info&#039;&#039; in dem der Ausführungsstatus des Scripts wieder gegeben wird. Das Reading &#039;&#039;state&#039;&#039; wir auf on oder off gesetzt. &#039;&#039;On&#039;&#039; bedeutet das Homebridge gestartet ist, &#039;&#039;off&#039;&#039; das die Homebridge nicht ausgeführt wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Das Tutorial wird aktuell angepasst (08.02.2017) - weiter geht es ab dieser Stelle in den nächsten Tagen....&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Damit die Homebridge auch mit Start des Systems gestartet wird sind die folgenden zwei Schritte notwendig&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo chmod 755 /etc/init.d/homebridge&lt;br /&gt;
sudo update-rc.d homebridge defaults&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum testen kann der Dienst nun mit dem Befehl&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo service homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
bzw.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo /etc/init.d/homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gestartet werden. In dem angelegten Dummy werden zwei Readings erzeugt mit den entsprechenden Rückmeldungen aus dem Script. Die Readings werden erst angezeigt wenn die bereits geöffnete Detailseite des Dummys neu geladen wird.&lt;br /&gt;
&lt;br /&gt;
=== Testlauf / Fertig ===&lt;br /&gt;
Nun können die einzelnen Aktionen über den Dummy ausführt werden. Dabei wird jeweils der eingerichtete Dienst angesteuert und eine (mit kurzer Verzögerung) Rückmeldung gegeben.&lt;br /&gt;
&lt;br /&gt;
== Sonstiges ==&lt;br /&gt;
&lt;br /&gt;
== Homebridge FHEM Zugriff auf Script gewähren==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/sudoers&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Beispiel Zeile&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel Datei:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# This file MUST be edited with the &#039;visudo&#039; command as root.&lt;br /&gt;
#&lt;br /&gt;
# Please consider adding local content in /etc/sudoers.d/ instead of&lt;br /&gt;
# directly modifying this file.&lt;br /&gt;
#&lt;br /&gt;
# See the man page for details on how to write a sudoers file.&lt;br /&gt;
#&lt;br /&gt;
Defaults	env_reset&lt;br /&gt;
Defaults	mail_badpass&lt;br /&gt;
Defaults	secure_path=&amp;quot;/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Host alias specification&lt;br /&gt;
&lt;br /&gt;
# User alias specification&lt;br /&gt;
&lt;br /&gt;
# Cmnd alias specification&lt;br /&gt;
&lt;br /&gt;
# User privilege specification&lt;br /&gt;
root	ALL=(ALL:ALL) ALL&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/opt/fhem/FHEM/backup.sh, /etc/init.d/homebridge&lt;br /&gt;
&lt;br /&gt;
# Members of the admin group may gain root privileges&lt;br /&gt;
%admin  ALL = (ALL) NOPASSWD: ALL&lt;br /&gt;
&lt;br /&gt;
# Allow members of group sudo to execute any command&lt;br /&gt;
%sudo	ALL=(ALL:ALL) ALL&lt;br /&gt;
&lt;br /&gt;
# See sudoers(5) for more information on &amp;quot;#include&amp;quot; directives:&lt;br /&gt;
&lt;br /&gt;
#includedir /etc/sudoers.d&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Svenson08</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19594</id>
		<title>Homebridge Start und Status in FHEM</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19594"/>
		<updated>2017-02-09T04:52:07Z</updated>

		<summary type="html">&lt;p&gt;Svenson08: /* Status- und Kontroll-Dummy */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Artikel befindet sich noch im Aufbau.&lt;br /&gt;
Der Code ist noch nicht 100% getestet, es muss also noch mit Fehler gerechnet werden.&lt;br /&gt;
&lt;br /&gt;
Um nicht bei jeder Änderung, welche die Homebridge betrifft, diese über die Console manuell neustarten zu müssen zeigt diese Lösung wie dies bequem aus FHEMWEB erfolgen kann. In den nachfolgenden Abschnitten sind die einzelnen Schritte dazu erläutert.&lt;br /&gt;
&lt;br /&gt;
== Vorwort ==&lt;br /&gt;
Die im weitern genutzten Bezeichnungen von Dummys, Scriptdateinamen o.ä. können geändert werden. Die Änderungen müssen jedoch auch an allen entsprechenden Stellen vorgenommen werden.&lt;br /&gt;
Genannte IP Adressen, Benutzernamen und Passwörter sind auf die eigenen Gegebenheiten anzupassen. Die Berechtigungen des Benutzers müssen zur Ausführung der Scripte geprüft und ggf. angepasst werden. Entprechende Linux Kentnisse sollten vorhanden sein. In Teilen berücksichtigt dieser Artikel das FHEM und Homebridge nicht zwingend auf dem selben System laufen. Die hier gezeigte Lösung kann für beide Varianten genutzt werden, FHEM und Homebridge auf dem gleichen System oder auf getrennten Systemen.&lt;br /&gt;
&lt;br /&gt;
== Umsetzung ==&lt;br /&gt;
&lt;br /&gt;
=== Status- und Kontroll-Dummy ===&lt;br /&gt;
[[Datei:HomebridgeDummy.PNG|mini|550px|Status- bzw. Kontroll-Dummy]]&lt;br /&gt;
&lt;br /&gt;
Es wird ein Dummy benötigt, welcher den Status des Homebridge-Dienstes anzeigt und über den dieser Dienst gesteuert werden kann. Das nötige Script um die Homebridge als Dienst zu starten wird weiter unten in diesem Artikel erstellt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
define SYS_Homebridge dummy&lt;br /&gt;
attr SYS_Homebridge devStateIcon .*on:general_an .*off:general_aus .*:audio_rec&lt;br /&gt;
attr SYS_Homebridge eventMap status:status start:start stop:stop restart:restart&lt;br /&gt;
attr SYS_Homebridge icon it_router&lt;br /&gt;
attr SYS_Homebridge room System&lt;br /&gt;
attr SYS_Homebridge userReadings OnStateChange:(start|stop|restart|status) {  system (&amp;quot;sudo service homebridge &amp;quot;.ReadingsVal($NAME,&amp;quot;state&amp;quot;,&amp;quot;restart&amp;quot;).&amp;quot; &amp;amp;&amp;quot; );;  }&lt;br /&gt;
attr SYS_Homebridge webCmd status:start:stop:restart&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Dummy wird durch setzen von &amp;quot;start&amp;quot;, &amp;quot;stop&amp;quot;, &amp;quot;restart&amp;quot; oder &amp;quot;status&amp;quot; jeweils das userReading ausführen und somit letztendlich den homebridge Dienst steuert.&lt;br /&gt;
&lt;br /&gt;
=== Start Script anlegen ===&lt;br /&gt;
Nun ist das Startscript für die Homebridge anzulegen. Mittels dem folgenden Befehl wird (wenn noch nicht vorhanden) das homebridge Script angelegt und im Editor geöffnet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Wenn die Homebridge nicht auf dem selben System läuft wie FHEM muss dieser Schritt auf dem Homebridge System ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Das nun folgende Script kann in die homebridge Datei die im Nano Editor geöffnet ist rein kopiert werden. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039;: die Variabeln &#039;&#039;homeBridgeUser&#039;&#039;, &#039;&#039;fhemHost&#039;&#039; und &#039;&#039;fhemHostTelnetPort&#039;&#039; sind ggf. auf die eigenen Gegebenheiten anzupassen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
### BEGIN INIT INFO&lt;br /&gt;
# Provides: homebridge&lt;br /&gt;
# Required-Start: $network $remote_fs $syslog&lt;br /&gt;
# Required-Stop: $remote_fs $syslog&lt;br /&gt;
# Default-Start: 2 3 4 5&lt;br /&gt;
# Default-Stop: 0 1 6&lt;br /&gt;
# Short-Description: Start daemon at boot time for homebridge&lt;br /&gt;
# Description: Enable service provided by daemon.&lt;br /&gt;
### END INIT INFO&lt;br /&gt;
export PATH=$PATH:/usr/local/bin&lt;br /&gt;
export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules&lt;br /&gt;
&lt;br /&gt;
PID=`pidof homebridge`&lt;br /&gt;
homeBridgeUser=&amp;quot;fhem&amp;quot;&lt;br /&gt;
fhemHost=127.0.0.1          #FHEM Server (Masterinstanz)&lt;br /&gt;
fhemHostTelnetPort=7072     #TelnetPort der FHEM Instanz&lt;br /&gt;
fhemDefine=&amp;quot;SYS_Homebridge&amp;quot;&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
start)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is already running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is already running&amp;quot;			&lt;br /&gt;
else&lt;br /&gt;
        su - $homeBridgeUser -c &amp;quot;homebridge &amp;gt; /dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&amp;quot;&lt;br /&gt;
        echo &amp;quot;Homebridge starting&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge starting&amp;quot;	&lt;br /&gt;
	perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine on&amp;quot;&lt;br /&gt;
        sleep 2&lt;br /&gt;
	$0 status&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
stop)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is not running&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        kill $PID&lt;br /&gt;
        echo &amp;quot;Homebridge stopping&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge stopping&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine off&amp;quot;&lt;br /&gt;
        sleep 2&lt;br /&gt;
	$0 status		&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
restart)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        $0 start&lt;br /&gt;
else&lt;br /&gt;
        $0 stop&lt;br /&gt;
        $0 start&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
status)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is running PID $PID&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge running as PID $PID&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is not running&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
*)&lt;br /&gt;
echo &amp;quot;Usage: $0 {start|stop|status|restart}&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
;;&lt;br /&gt;
esac&lt;br /&gt;
exit 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Script setzt in dem bereits angelegten Dummy ein Reading &#039;&#039;info&#039;&#039; in dem der Ausführungsstatus des Scripts wieder gegeben wird. Das Reading &#039;&#039;state&#039;&#039; wir auf on oder off gesetzt. &#039;&#039;On&#039;&#039; bedeutet das Homebridge gestartet ist, &#039;&#039;off&#039;&#039; das die Homebridge nicht ausgeführt wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Das Tutorial wird aktuell angepasst (08.02.2017) - weiter geht es ab dieser Stelle in den nächsten Tagen....&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Damit die Homebridge auch mit Start des Systems gestartet wird sind die folgenden zwei Schritte notwendig&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo chmod 755 /etc/init.d/homebridge&lt;br /&gt;
sudo update-rc.d homebridge defaults&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum testen kann der Dienst nun mit dem Befehl&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo service homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
bzw.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo /etc/init.d/homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gestartet werden. In dem angelegten Dummy werden zwei Readings erzeugt mit den entsprechenden Rückmeldungen aus dem Script. Die Readings werden erst angezeigt wenn die bereits geöffnete Detailseite des Dummys neu geladen wird.&lt;br /&gt;
&lt;br /&gt;
=== Testlauf / Fertig ===&lt;br /&gt;
Nun können die einzelnen Aktionen über den Dummy ausführt werden. Dabei wird jeweils der eingerichtete Dienst angesteuert und eine (mit kurzer Verzögerung) Rückmeldung gegeben.&lt;br /&gt;
&lt;br /&gt;
== Homebridge Start per FHEM==&lt;br /&gt;
&lt;br /&gt;
== Homebridge FHEM Zugriff auf Script gewähren==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/sudoers&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Beispiel Zeile&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel Datei:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# This file MUST be edited with the &#039;visudo&#039; command as root.&lt;br /&gt;
#&lt;br /&gt;
# Please consider adding local content in /etc/sudoers.d/ instead of&lt;br /&gt;
# directly modifying this file.&lt;br /&gt;
#&lt;br /&gt;
# See the man page for details on how to write a sudoers file.&lt;br /&gt;
#&lt;br /&gt;
Defaults	env_reset&lt;br /&gt;
Defaults	mail_badpass&lt;br /&gt;
Defaults	secure_path=&amp;quot;/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Host alias specification&lt;br /&gt;
&lt;br /&gt;
# User alias specification&lt;br /&gt;
&lt;br /&gt;
# Cmnd alias specification&lt;br /&gt;
&lt;br /&gt;
# User privilege specification&lt;br /&gt;
root	ALL=(ALL:ALL) ALL&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/opt/fhem/FHEM/backup.sh, /etc/init.d/homebridge&lt;br /&gt;
&lt;br /&gt;
# Members of the admin group may gain root privileges&lt;br /&gt;
%admin  ALL = (ALL) NOPASSWD: ALL&lt;br /&gt;
&lt;br /&gt;
# Allow members of group sudo to execute any command&lt;br /&gt;
%sudo	ALL=(ALL:ALL) ALL&lt;br /&gt;
&lt;br /&gt;
# See sudoers(5) for more information on &amp;quot;#include&amp;quot; directives:&lt;br /&gt;
&lt;br /&gt;
#includedir /etc/sudoers.d&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Svenson08</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:HomebridgeDummy.PNG&amp;diff=19593</id>
		<title>Datei:HomebridgeDummy.PNG</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:HomebridgeDummy.PNG&amp;diff=19593"/>
		<updated>2017-02-09T04:49:58Z</updated>

		<summary type="html">&lt;p&gt;Svenson08: Darstellung des Homebridge Dummys in FHEMWeb bei Verwendung des Darkstyles&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Darstellung des Homebridge Dummys in FHEMWeb bei Verwendung des Darkstyles&lt;/div&gt;</summary>
		<author><name>Svenson08</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19592</id>
		<title>Homebridge Start und Status in FHEM</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19592"/>
		<updated>2017-02-09T04:48:41Z</updated>

		<summary type="html">&lt;p&gt;Svenson08: /* Testlauf */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Artikel befindet sich noch im Aufbau.&lt;br /&gt;
Der Code ist noch nicht 100% getestet, es muss also noch mit Fehler gerechnet werden.&lt;br /&gt;
&lt;br /&gt;
Um nicht bei jeder Änderung, welche die Homebridge betrifft, diese über die Console manuell neustarten zu müssen zeigt diese Lösung wie dies bequem aus FHEMWEB erfolgen kann. In den nachfolgenden Abschnitten sind die einzelnen Schritte dazu erläutert.&lt;br /&gt;
&lt;br /&gt;
== Vorwort ==&lt;br /&gt;
Die im weitern genutzten Bezeichnungen von Dummys, Scriptdateinamen o.ä. können geändert werden. Die Änderungen müssen jedoch auch an allen entsprechenden Stellen vorgenommen werden.&lt;br /&gt;
Genannte IP Adressen, Benutzernamen und Passwörter sind auf die eigenen Gegebenheiten anzupassen. Die Berechtigungen des Benutzers müssen zur Ausführung der Scripte geprüft und ggf. angepasst werden. Entprechende Linux Kentnisse sollten vorhanden sein. In Teilen berücksichtigt dieser Artikel das FHEM und Homebridge nicht zwingend auf dem selben System laufen. Die hier gezeigte Lösung kann für beide Varianten genutzt werden, FHEM und Homebridge auf dem gleichen System oder auf getrennten Systemen.&lt;br /&gt;
&lt;br /&gt;
== Umsetzung ==&lt;br /&gt;
&lt;br /&gt;
=== Status- und Kontroll-Dummy ===&lt;br /&gt;
&lt;br /&gt;
Es wird ein Dummy benötigt, welcher den Status des Homebridge-Dienstes anzeigt und über den dieser Dienst gesteuert werden kann. Das nötige Script um die Homebridge als Dienst zu starten wird weiter unten in diesem Artikel erstellt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
define SYS_Homebridge dummy&lt;br /&gt;
attr SYS_Homebridge devStateIcon .*on:general_an .*off:general_aus .*:audio_rec&lt;br /&gt;
attr SYS_Homebridge eventMap status:status start:start stop:stop restart:restart&lt;br /&gt;
attr SYS_Homebridge icon it_router&lt;br /&gt;
attr SYS_Homebridge room System&lt;br /&gt;
attr SYS_Homebridge userReadings OnStateChange:(start|stop|restart|status) {  system (&amp;quot;sudo service homebridge &amp;quot;.ReadingsVal($NAME,&amp;quot;state&amp;quot;,&amp;quot;restart&amp;quot;).&amp;quot; &amp;amp;&amp;quot; );;  }&lt;br /&gt;
attr SYS_Homebridge webCmd status:start:stop:restart&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Dummy wird durch setzen von &amp;quot;start&amp;quot;, &amp;quot;stop&amp;quot;, &amp;quot;restart&amp;quot; oder &amp;quot;status&amp;quot; jeweils das userReading ausführen und somit letztendlich den homebridge Dienst steuert.&lt;br /&gt;
&lt;br /&gt;
=== Start Script anlegen ===&lt;br /&gt;
Nun ist das Startscript für die Homebridge anzulegen. Mittels dem folgenden Befehl wird (wenn noch nicht vorhanden) das homebridge Script angelegt und im Editor geöffnet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Wenn die Homebridge nicht auf dem selben System läuft wie FHEM muss dieser Schritt auf dem Homebridge System ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Das nun folgende Script kann in die homebridge Datei die im Nano Editor geöffnet ist rein kopiert werden. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039;: die Variabeln &#039;&#039;homeBridgeUser&#039;&#039;, &#039;&#039;fhemHost&#039;&#039; und &#039;&#039;fhemHostTelnetPort&#039;&#039; sind ggf. auf die eigenen Gegebenheiten anzupassen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
### BEGIN INIT INFO&lt;br /&gt;
# Provides: homebridge&lt;br /&gt;
# Required-Start: $network $remote_fs $syslog&lt;br /&gt;
# Required-Stop: $remote_fs $syslog&lt;br /&gt;
# Default-Start: 2 3 4 5&lt;br /&gt;
# Default-Stop: 0 1 6&lt;br /&gt;
# Short-Description: Start daemon at boot time for homebridge&lt;br /&gt;
# Description: Enable service provided by daemon.&lt;br /&gt;
### END INIT INFO&lt;br /&gt;
export PATH=$PATH:/usr/local/bin&lt;br /&gt;
export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules&lt;br /&gt;
&lt;br /&gt;
PID=`pidof homebridge`&lt;br /&gt;
homeBridgeUser=&amp;quot;fhem&amp;quot;&lt;br /&gt;
fhemHost=127.0.0.1          #FHEM Server (Masterinstanz)&lt;br /&gt;
fhemHostTelnetPort=7072     #TelnetPort der FHEM Instanz&lt;br /&gt;
fhemDefine=&amp;quot;SYS_Homebridge&amp;quot;&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
start)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is already running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is already running&amp;quot;			&lt;br /&gt;
else&lt;br /&gt;
        su - $homeBridgeUser -c &amp;quot;homebridge &amp;gt; /dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&amp;quot;&lt;br /&gt;
        echo &amp;quot;Homebridge starting&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge starting&amp;quot;	&lt;br /&gt;
	perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine on&amp;quot;&lt;br /&gt;
        sleep 2&lt;br /&gt;
	$0 status&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
stop)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is not running&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        kill $PID&lt;br /&gt;
        echo &amp;quot;Homebridge stopping&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge stopping&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine off&amp;quot;&lt;br /&gt;
        sleep 2&lt;br /&gt;
	$0 status		&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
restart)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        $0 start&lt;br /&gt;
else&lt;br /&gt;
        $0 stop&lt;br /&gt;
        $0 start&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
status)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is running PID $PID&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge running as PID $PID&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is not running&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
*)&lt;br /&gt;
echo &amp;quot;Usage: $0 {start|stop|status|restart}&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
;;&lt;br /&gt;
esac&lt;br /&gt;
exit 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Script setzt in dem bereits angelegten Dummy ein Reading &#039;&#039;info&#039;&#039; in dem der Ausführungsstatus des Scripts wieder gegeben wird. Das Reading &#039;&#039;state&#039;&#039; wir auf on oder off gesetzt. &#039;&#039;On&#039;&#039; bedeutet das Homebridge gestartet ist, &#039;&#039;off&#039;&#039; das die Homebridge nicht ausgeführt wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Das Tutorial wird aktuell angepasst (08.02.2017) - weiter geht es ab dieser Stelle in den nächsten Tagen....&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Damit die Homebridge auch mit Start des Systems gestartet wird sind die folgenden zwei Schritte notwendig&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo chmod 755 /etc/init.d/homebridge&lt;br /&gt;
sudo update-rc.d homebridge defaults&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum testen kann der Dienst nun mit dem Befehl&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo service homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
bzw.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo /etc/init.d/homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gestartet werden. In dem angelegten Dummy werden zwei Readings erzeugt mit den entsprechenden Rückmeldungen aus dem Script. Die Readings werden erst angezeigt wenn die bereits geöffnete Detailseite des Dummys neu geladen wird.&lt;br /&gt;
&lt;br /&gt;
=== Testlauf / Fertig ===&lt;br /&gt;
Nun können die einzelnen Aktionen über den Dummy ausführt werden. Dabei wird jeweils der eingerichtete Dienst angesteuert und eine (mit kurzer Verzögerung) Rückmeldung gegeben.&lt;br /&gt;
&lt;br /&gt;
== Homebridge Start per FHEM==&lt;br /&gt;
&lt;br /&gt;
== Homebridge FHEM Zugriff auf Script gewähren==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/sudoers&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Beispiel Zeile&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel Datei:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# This file MUST be edited with the &#039;visudo&#039; command as root.&lt;br /&gt;
#&lt;br /&gt;
# Please consider adding local content in /etc/sudoers.d/ instead of&lt;br /&gt;
# directly modifying this file.&lt;br /&gt;
#&lt;br /&gt;
# See the man page for details on how to write a sudoers file.&lt;br /&gt;
#&lt;br /&gt;
Defaults	env_reset&lt;br /&gt;
Defaults	mail_badpass&lt;br /&gt;
Defaults	secure_path=&amp;quot;/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Host alias specification&lt;br /&gt;
&lt;br /&gt;
# User alias specification&lt;br /&gt;
&lt;br /&gt;
# Cmnd alias specification&lt;br /&gt;
&lt;br /&gt;
# User privilege specification&lt;br /&gt;
root	ALL=(ALL:ALL) ALL&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/opt/fhem/FHEM/backup.sh, /etc/init.d/homebridge&lt;br /&gt;
&lt;br /&gt;
# Members of the admin group may gain root privileges&lt;br /&gt;
%admin  ALL = (ALL) NOPASSWD: ALL&lt;br /&gt;
&lt;br /&gt;
# Allow members of group sudo to execute any command&lt;br /&gt;
%sudo	ALL=(ALL:ALL) ALL&lt;br /&gt;
&lt;br /&gt;
# See sudoers(5) for more information on &amp;quot;#include&amp;quot; directives:&lt;br /&gt;
&lt;br /&gt;
#includedir /etc/sudoers.d&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Svenson08</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19591</id>
		<title>Homebridge Start und Status in FHEM</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19591"/>
		<updated>2017-02-09T04:45:24Z</updated>

		<summary type="html">&lt;p&gt;Svenson08: /* Start Script anlegen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Artikel befindet sich noch im Aufbau.&lt;br /&gt;
Der Code ist noch nicht 100% getestet, es muss also noch mit Fehler gerechnet werden.&lt;br /&gt;
&lt;br /&gt;
Um nicht bei jeder Änderung, welche die Homebridge betrifft, diese über die Console manuell neustarten zu müssen zeigt diese Lösung wie dies bequem aus FHEMWEB erfolgen kann. In den nachfolgenden Abschnitten sind die einzelnen Schritte dazu erläutert.&lt;br /&gt;
&lt;br /&gt;
== Vorwort ==&lt;br /&gt;
Die im weitern genutzten Bezeichnungen von Dummys, Scriptdateinamen o.ä. können geändert werden. Die Änderungen müssen jedoch auch an allen entsprechenden Stellen vorgenommen werden.&lt;br /&gt;
Genannte IP Adressen, Benutzernamen und Passwörter sind auf die eigenen Gegebenheiten anzupassen. Die Berechtigungen des Benutzers müssen zur Ausführung der Scripte geprüft und ggf. angepasst werden. Entprechende Linux Kentnisse sollten vorhanden sein. In Teilen berücksichtigt dieser Artikel das FHEM und Homebridge nicht zwingend auf dem selben System laufen. Die hier gezeigte Lösung kann für beide Varianten genutzt werden, FHEM und Homebridge auf dem gleichen System oder auf getrennten Systemen.&lt;br /&gt;
&lt;br /&gt;
== Umsetzung ==&lt;br /&gt;
&lt;br /&gt;
=== Status- und Kontroll-Dummy ===&lt;br /&gt;
&lt;br /&gt;
Es wird ein Dummy benötigt, welcher den Status des Homebridge-Dienstes anzeigt und über den dieser Dienst gesteuert werden kann. Das nötige Script um die Homebridge als Dienst zu starten wird weiter unten in diesem Artikel erstellt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
define SYS_Homebridge dummy&lt;br /&gt;
attr SYS_Homebridge devStateIcon .*on:general_an .*off:general_aus .*:audio_rec&lt;br /&gt;
attr SYS_Homebridge eventMap status:status start:start stop:stop restart:restart&lt;br /&gt;
attr SYS_Homebridge icon it_router&lt;br /&gt;
attr SYS_Homebridge room System&lt;br /&gt;
attr SYS_Homebridge userReadings OnStateChange:(start|stop|restart|status) {  system (&amp;quot;sudo service homebridge &amp;quot;.ReadingsVal($NAME,&amp;quot;state&amp;quot;,&amp;quot;restart&amp;quot;).&amp;quot; &amp;amp;&amp;quot; );;  }&lt;br /&gt;
attr SYS_Homebridge webCmd status:start:stop:restart&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Dummy wird durch setzen von &amp;quot;start&amp;quot;, &amp;quot;stop&amp;quot;, &amp;quot;restart&amp;quot; oder &amp;quot;status&amp;quot; jeweils das userReading ausführen und somit letztendlich den homebridge Dienst steuert.&lt;br /&gt;
&lt;br /&gt;
=== Start Script anlegen ===&lt;br /&gt;
Nun ist das Startscript für die Homebridge anzulegen. Mittels dem folgenden Befehl wird (wenn noch nicht vorhanden) das homebridge Script angelegt und im Editor geöffnet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Wenn die Homebridge nicht auf dem selben System läuft wie FHEM muss dieser Schritt auf dem Homebridge System ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Das nun folgende Script kann in die homebridge Datei die im Nano Editor geöffnet ist rein kopiert werden. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039;: die Variabeln &#039;&#039;homeBridgeUser&#039;&#039;, &#039;&#039;fhemHost&#039;&#039; und &#039;&#039;fhemHostTelnetPort&#039;&#039; sind ggf. auf die eigenen Gegebenheiten anzupassen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
### BEGIN INIT INFO&lt;br /&gt;
# Provides: homebridge&lt;br /&gt;
# Required-Start: $network $remote_fs $syslog&lt;br /&gt;
# Required-Stop: $remote_fs $syslog&lt;br /&gt;
# Default-Start: 2 3 4 5&lt;br /&gt;
# Default-Stop: 0 1 6&lt;br /&gt;
# Short-Description: Start daemon at boot time for homebridge&lt;br /&gt;
# Description: Enable service provided by daemon.&lt;br /&gt;
### END INIT INFO&lt;br /&gt;
export PATH=$PATH:/usr/local/bin&lt;br /&gt;
export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules&lt;br /&gt;
&lt;br /&gt;
PID=`pidof homebridge`&lt;br /&gt;
homeBridgeUser=&amp;quot;fhem&amp;quot;&lt;br /&gt;
fhemHost=127.0.0.1          #FHEM Server (Masterinstanz)&lt;br /&gt;
fhemHostTelnetPort=7072     #TelnetPort der FHEM Instanz&lt;br /&gt;
fhemDefine=&amp;quot;SYS_Homebridge&amp;quot;&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
start)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is already running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is already running&amp;quot;			&lt;br /&gt;
else&lt;br /&gt;
        su - $homeBridgeUser -c &amp;quot;homebridge &amp;gt; /dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&amp;quot;&lt;br /&gt;
        echo &amp;quot;Homebridge starting&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge starting&amp;quot;	&lt;br /&gt;
	perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine on&amp;quot;&lt;br /&gt;
        sleep 2&lt;br /&gt;
	$0 status&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
stop)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is not running&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        kill $PID&lt;br /&gt;
        echo &amp;quot;Homebridge stopping&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge stopping&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine off&amp;quot;&lt;br /&gt;
        sleep 2&lt;br /&gt;
	$0 status		&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
restart)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        $0 start&lt;br /&gt;
else&lt;br /&gt;
        $0 stop&lt;br /&gt;
        $0 start&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
status)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is running PID $PID&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge running as PID $PID&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is not running&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
*)&lt;br /&gt;
echo &amp;quot;Usage: $0 {start|stop|status|restart}&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
;;&lt;br /&gt;
esac&lt;br /&gt;
exit 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Script setzt in dem bereits angelegten Dummy ein Reading &#039;&#039;info&#039;&#039; in dem der Ausführungsstatus des Scripts wieder gegeben wird. Das Reading &#039;&#039;state&#039;&#039; wir auf on oder off gesetzt. &#039;&#039;On&#039;&#039; bedeutet das Homebridge gestartet ist, &#039;&#039;off&#039;&#039; das die Homebridge nicht ausgeführt wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Das Tutorial wird aktuell angepasst (08.02.2017) - weiter geht es ab dieser Stelle in den nächsten Tagen....&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Damit die Homebridge auch mit Start des Systems gestartet wird sind die folgenden zwei Schritte notwendig&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo chmod 755 /etc/init.d/homebridge&lt;br /&gt;
sudo update-rc.d homebridge defaults&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum testen kann der Dienst nun mit dem Befehl&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo service homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
bzw.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo /etc/init.d/homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gestartet werden. In dem angelegten Dummy werden zwei Readings erzeugt mit den entsprechenden Rückmeldungen aus dem Script. Die Readings werden erst angezeigt wenn die bereits geöffnete Detailseite des Dummys neu geladen wird.&lt;br /&gt;
&lt;br /&gt;
=== Testlauf ===&lt;br /&gt;
&lt;br /&gt;
== Homebridge Start per FHEM==&lt;br /&gt;
&lt;br /&gt;
== Homebridge FHEM Zugriff auf Script gewähren==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/sudoers&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Beispiel Zeile&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel Datei:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# This file MUST be edited with the &#039;visudo&#039; command as root.&lt;br /&gt;
#&lt;br /&gt;
# Please consider adding local content in /etc/sudoers.d/ instead of&lt;br /&gt;
# directly modifying this file.&lt;br /&gt;
#&lt;br /&gt;
# See the man page for details on how to write a sudoers file.&lt;br /&gt;
#&lt;br /&gt;
Defaults	env_reset&lt;br /&gt;
Defaults	mail_badpass&lt;br /&gt;
Defaults	secure_path=&amp;quot;/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Host alias specification&lt;br /&gt;
&lt;br /&gt;
# User alias specification&lt;br /&gt;
&lt;br /&gt;
# Cmnd alias specification&lt;br /&gt;
&lt;br /&gt;
# User privilege specification&lt;br /&gt;
root	ALL=(ALL:ALL) ALL&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/opt/fhem/FHEM/backup.sh, /etc/init.d/homebridge&lt;br /&gt;
&lt;br /&gt;
# Members of the admin group may gain root privileges&lt;br /&gt;
%admin  ALL = (ALL) NOPASSWD: ALL&lt;br /&gt;
&lt;br /&gt;
# Allow members of group sudo to execute any command&lt;br /&gt;
%sudo	ALL=(ALL:ALL) ALL&lt;br /&gt;
&lt;br /&gt;
# See sudoers(5) for more information on &amp;quot;#include&amp;quot; directives:&lt;br /&gt;
&lt;br /&gt;
#includedir /etc/sudoers.d&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Svenson08</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19590</id>
		<title>Homebridge Start und Status in FHEM</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19590"/>
		<updated>2017-02-09T04:44:54Z</updated>

		<summary type="html">&lt;p&gt;Svenson08: /* Homebridge Start DOIF einrichten */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Artikel befindet sich noch im Aufbau.&lt;br /&gt;
Der Code ist noch nicht 100% getestet, es muss also noch mit Fehler gerechnet werden.&lt;br /&gt;
&lt;br /&gt;
Um nicht bei jeder Änderung, welche die Homebridge betrifft, diese über die Console manuell neustarten zu müssen zeigt diese Lösung wie dies bequem aus FHEMWEB erfolgen kann. In den nachfolgenden Abschnitten sind die einzelnen Schritte dazu erläutert.&lt;br /&gt;
&lt;br /&gt;
== Vorwort ==&lt;br /&gt;
Die im weitern genutzten Bezeichnungen von Dummys, Scriptdateinamen o.ä. können geändert werden. Die Änderungen müssen jedoch auch an allen entsprechenden Stellen vorgenommen werden.&lt;br /&gt;
Genannte IP Adressen, Benutzernamen und Passwörter sind auf die eigenen Gegebenheiten anzupassen. Die Berechtigungen des Benutzers müssen zur Ausführung der Scripte geprüft und ggf. angepasst werden. Entprechende Linux Kentnisse sollten vorhanden sein. In Teilen berücksichtigt dieser Artikel das FHEM und Homebridge nicht zwingend auf dem selben System laufen. Die hier gezeigte Lösung kann für beide Varianten genutzt werden, FHEM und Homebridge auf dem gleichen System oder auf getrennten Systemen.&lt;br /&gt;
&lt;br /&gt;
== Umsetzung ==&lt;br /&gt;
&lt;br /&gt;
=== Status- und Kontroll-Dummy ===&lt;br /&gt;
&lt;br /&gt;
Es wird ein Dummy benötigt, welcher den Status des Homebridge-Dienstes anzeigt und über den dieser Dienst gesteuert werden kann. Das nötige Script um die Homebridge als Dienst zu starten wird weiter unten in diesem Artikel erstellt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
define SYS_Homebridge dummy&lt;br /&gt;
attr SYS_Homebridge devStateIcon .*on:general_an .*off:general_aus .*:audio_rec&lt;br /&gt;
attr SYS_Homebridge eventMap status:status start:start stop:stop restart:restart&lt;br /&gt;
attr SYS_Homebridge icon it_router&lt;br /&gt;
attr SYS_Homebridge room System&lt;br /&gt;
attr SYS_Homebridge userReadings OnStateChange:(start|stop|restart|status) {  system (&amp;quot;sudo service homebridge &amp;quot;.ReadingsVal($NAME,&amp;quot;state&amp;quot;,&amp;quot;restart&amp;quot;).&amp;quot; &amp;amp;&amp;quot; );;  }&lt;br /&gt;
attr SYS_Homebridge webCmd status:start:stop:restart&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Dummy wird durch setzen von &amp;quot;start&amp;quot;, &amp;quot;stop&amp;quot;, &amp;quot;restart&amp;quot; oder &amp;quot;status&amp;quot; jeweils das userReading ausführen und somit letztendlich den homebridge Dienst steuert.&lt;br /&gt;
&lt;br /&gt;
=== Start Script anlegen ===&lt;br /&gt;
Nun ist das Startscript für die Homebridge anzulegen. Mittels dem folgenden Befehl wird (wenn noch nicht vorhanden) das homebridge Script angelegt und im Editor geöffnet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Wenn die Homebridge nicht auf dem selben System läuft wie FHEM muss dieser Schritt auf dem Homebridge System ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Das nun folgende Script kann in die homebridge Datei die im Nano Editor geöffnet ist rein kopiert werden. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039;: die Variabeln &#039;&#039;homeBridgeUser&#039;&#039;, &#039;&#039;fhemHost&#039;&#039; und &#039;&#039;fhemHostTelnetPort&#039;&#039; sind ggf. auf die eigenen Gegebenheiten anzupassen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
### BEGIN INIT INFO&lt;br /&gt;
# Provides: homebridge&lt;br /&gt;
# Required-Start: $network $remote_fs $syslog&lt;br /&gt;
# Required-Stop: $remote_fs $syslog&lt;br /&gt;
# Default-Start: 2 3 4 5&lt;br /&gt;
# Default-Stop: 0 1 6&lt;br /&gt;
# Short-Description: Start daemon at boot time for homebridge&lt;br /&gt;
# Description: Enable service provided by daemon.&lt;br /&gt;
### END INIT INFO&lt;br /&gt;
export PATH=$PATH:/usr/local/bin&lt;br /&gt;
export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules&lt;br /&gt;
&lt;br /&gt;
PID=`pidof homebridge`&lt;br /&gt;
homeBridgeUser=&amp;quot;fhem&amp;quot;&lt;br /&gt;
fhemHost=127.0.0.1          #FHEM Server (Masterinstanz)&lt;br /&gt;
fhemHostTelnetPort=7072     #TelnetPort der FHEM Instanz&lt;br /&gt;
fhemDefine=&amp;quot;SYS_Homebridge&amp;quot;&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
start)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is already running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is already running&amp;quot;			&lt;br /&gt;
else&lt;br /&gt;
        su - $homeBridgeUser -c &amp;quot;homebridge &amp;gt; /dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&amp;quot;&lt;br /&gt;
        echo &amp;quot;Homebridge starting&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge starting&amp;quot;	&lt;br /&gt;
	perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine on&amp;quot;&lt;br /&gt;
        sleep 2&lt;br /&gt;
	$0 status&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
stop)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is not running&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        kill $PID&lt;br /&gt;
        echo &amp;quot;Homebridge stopping&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge stopping&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine off&amp;quot;&lt;br /&gt;
        sleep 2&lt;br /&gt;
	$0 status		&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
restart)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        $0 start&lt;br /&gt;
else&lt;br /&gt;
        $0 stop&lt;br /&gt;
        $0 start&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
status)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is running PID $PID&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge running as PID $PID&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is not running&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
*)&lt;br /&gt;
echo &amp;quot;Usage: $0 {start|stop|status|restart}&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
;;&lt;br /&gt;
esac&lt;br /&gt;
exit 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Script setzt in dem bereits angelegten Dummy ein Reading &#039;&#039;info&#039;&#039; in dem der Ausführungsstatus des Scripts wieder gegeben wird. Das Reading &#039;&#039;state&#039;&#039; wir auf on oder off gesetzt. &#039;&#039;On&#039;&#039; bedeutet das Homebridge gestartet ist, &#039;&#039;off&#039;&#039; das die Homebridge nicht ausgeführt wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Das Tutorial wird aktuell angepasst (08.02.2017) - weiter geht es ab dieser Stelle in den nächsten Tagen....&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Damit die Homebridge auch mit Start des Systems gestartet wird sind die folgenden zwei Schritte notwendig&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo chmod 755 /etc/init.d/homebridge&lt;br /&gt;
sudo update-rc.d homebridge defaults&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum testen kann der Dienst nun mit dem Befehl&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo service homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
bzw.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo /etc/init.d/homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gestartet werden. In dem angelegten Dummy werden zwei Readings erzeugt mit den entsprechenden Rückmeldungen aus dem Script. Die Readings werden erst angezeigt wenn die bereits geöffnete Detailseite des Dummys neu geladen wird.&lt;br /&gt;
&lt;br /&gt;
== Homebridge Start per FHEM==&lt;br /&gt;
&lt;br /&gt;
== Homebridge FHEM Zugriff auf Script gewähren==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/sudoers&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Beispiel Zeile&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel Datei:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# This file MUST be edited with the &#039;visudo&#039; command as root.&lt;br /&gt;
#&lt;br /&gt;
# Please consider adding local content in /etc/sudoers.d/ instead of&lt;br /&gt;
# directly modifying this file.&lt;br /&gt;
#&lt;br /&gt;
# See the man page for details on how to write a sudoers file.&lt;br /&gt;
#&lt;br /&gt;
Defaults	env_reset&lt;br /&gt;
Defaults	mail_badpass&lt;br /&gt;
Defaults	secure_path=&amp;quot;/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Host alias specification&lt;br /&gt;
&lt;br /&gt;
# User alias specification&lt;br /&gt;
&lt;br /&gt;
# Cmnd alias specification&lt;br /&gt;
&lt;br /&gt;
# User privilege specification&lt;br /&gt;
root	ALL=(ALL:ALL) ALL&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/opt/fhem/FHEM/backup.sh, /etc/init.d/homebridge&lt;br /&gt;
&lt;br /&gt;
# Members of the admin group may gain root privileges&lt;br /&gt;
%admin  ALL = (ALL) NOPASSWD: ALL&lt;br /&gt;
&lt;br /&gt;
# Allow members of group sudo to execute any command&lt;br /&gt;
%sudo	ALL=(ALL:ALL) ALL&lt;br /&gt;
&lt;br /&gt;
# See sudoers(5) for more information on &amp;quot;#include&amp;quot; directives:&lt;br /&gt;
&lt;br /&gt;
#includedir /etc/sudoers.d&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Svenson08</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19589</id>
		<title>Homebridge Start und Status in FHEM</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19589"/>
		<updated>2017-02-09T04:44:36Z</updated>

		<summary type="html">&lt;p&gt;Svenson08: /* Homebridge Start Dummy einrichten */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Artikel befindet sich noch im Aufbau.&lt;br /&gt;
Der Code ist noch nicht 100% getestet, es muss also noch mit Fehler gerechnet werden.&lt;br /&gt;
&lt;br /&gt;
Um nicht bei jeder Änderung, welche die Homebridge betrifft, diese über die Console manuell neustarten zu müssen zeigt diese Lösung wie dies bequem aus FHEMWEB erfolgen kann. In den nachfolgenden Abschnitten sind die einzelnen Schritte dazu erläutert.&lt;br /&gt;
&lt;br /&gt;
== Vorwort ==&lt;br /&gt;
Die im weitern genutzten Bezeichnungen von Dummys, Scriptdateinamen o.ä. können geändert werden. Die Änderungen müssen jedoch auch an allen entsprechenden Stellen vorgenommen werden.&lt;br /&gt;
Genannte IP Adressen, Benutzernamen und Passwörter sind auf die eigenen Gegebenheiten anzupassen. Die Berechtigungen des Benutzers müssen zur Ausführung der Scripte geprüft und ggf. angepasst werden. Entprechende Linux Kentnisse sollten vorhanden sein. In Teilen berücksichtigt dieser Artikel das FHEM und Homebridge nicht zwingend auf dem selben System laufen. Die hier gezeigte Lösung kann für beide Varianten genutzt werden, FHEM und Homebridge auf dem gleichen System oder auf getrennten Systemen.&lt;br /&gt;
&lt;br /&gt;
== Umsetzung ==&lt;br /&gt;
&lt;br /&gt;
=== Status- und Kontroll-Dummy ===&lt;br /&gt;
&lt;br /&gt;
Es wird ein Dummy benötigt, welcher den Status des Homebridge-Dienstes anzeigt und über den dieser Dienst gesteuert werden kann. Das nötige Script um die Homebridge als Dienst zu starten wird weiter unten in diesem Artikel erstellt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
define SYS_Homebridge dummy&lt;br /&gt;
attr SYS_Homebridge devStateIcon .*on:general_an .*off:general_aus .*:audio_rec&lt;br /&gt;
attr SYS_Homebridge eventMap status:status start:start stop:stop restart:restart&lt;br /&gt;
attr SYS_Homebridge icon it_router&lt;br /&gt;
attr SYS_Homebridge room System&lt;br /&gt;
attr SYS_Homebridge userReadings OnStateChange:(start|stop|restart|status) {  system (&amp;quot;sudo service homebridge &amp;quot;.ReadingsVal($NAME,&amp;quot;state&amp;quot;,&amp;quot;restart&amp;quot;).&amp;quot; &amp;amp;&amp;quot; );;  }&lt;br /&gt;
attr SYS_Homebridge webCmd status:start:stop:restart&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Dummy wird durch setzen von &amp;quot;start&amp;quot;, &amp;quot;stop&amp;quot;, &amp;quot;restart&amp;quot; oder &amp;quot;status&amp;quot; jeweils das userReading ausführen und somit letztendlich den homebridge Dienst steuert.&lt;br /&gt;
&lt;br /&gt;
=== Start Script anlegen ===&lt;br /&gt;
Nun ist das Startscript für die Homebridge anzulegen. Mittels dem folgenden Befehl wird (wenn noch nicht vorhanden) das homebridge Script angelegt und im Editor geöffnet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Wenn die Homebridge nicht auf dem selben System läuft wie FHEM muss dieser Schritt auf dem Homebridge System ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Das nun folgende Script kann in die homebridge Datei die im Nano Editor geöffnet ist rein kopiert werden. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039;: die Variabeln &#039;&#039;homeBridgeUser&#039;&#039;, &#039;&#039;fhemHost&#039;&#039; und &#039;&#039;fhemHostTelnetPort&#039;&#039; sind ggf. auf die eigenen Gegebenheiten anzupassen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
### BEGIN INIT INFO&lt;br /&gt;
# Provides: homebridge&lt;br /&gt;
# Required-Start: $network $remote_fs $syslog&lt;br /&gt;
# Required-Stop: $remote_fs $syslog&lt;br /&gt;
# Default-Start: 2 3 4 5&lt;br /&gt;
# Default-Stop: 0 1 6&lt;br /&gt;
# Short-Description: Start daemon at boot time for homebridge&lt;br /&gt;
# Description: Enable service provided by daemon.&lt;br /&gt;
### END INIT INFO&lt;br /&gt;
export PATH=$PATH:/usr/local/bin&lt;br /&gt;
export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules&lt;br /&gt;
&lt;br /&gt;
PID=`pidof homebridge`&lt;br /&gt;
homeBridgeUser=&amp;quot;fhem&amp;quot;&lt;br /&gt;
fhemHost=127.0.0.1          #FHEM Server (Masterinstanz)&lt;br /&gt;
fhemHostTelnetPort=7072     #TelnetPort der FHEM Instanz&lt;br /&gt;
fhemDefine=&amp;quot;SYS_Homebridge&amp;quot;&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
start)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is already running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is already running&amp;quot;			&lt;br /&gt;
else&lt;br /&gt;
        su - $homeBridgeUser -c &amp;quot;homebridge &amp;gt; /dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&amp;quot;&lt;br /&gt;
        echo &amp;quot;Homebridge starting&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge starting&amp;quot;	&lt;br /&gt;
	perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine on&amp;quot;&lt;br /&gt;
        sleep 2&lt;br /&gt;
	$0 status&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
stop)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is not running&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        kill $PID&lt;br /&gt;
        echo &amp;quot;Homebridge stopping&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge stopping&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine off&amp;quot;&lt;br /&gt;
        sleep 2&lt;br /&gt;
	$0 status		&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
restart)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        $0 start&lt;br /&gt;
else&lt;br /&gt;
        $0 stop&lt;br /&gt;
        $0 start&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
status)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is running PID $PID&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge running as PID $PID&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is not running&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
*)&lt;br /&gt;
echo &amp;quot;Usage: $0 {start|stop|status|restart}&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
;;&lt;br /&gt;
esac&lt;br /&gt;
exit 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Script setzt in dem bereits angelegten Dummy ein Reading &#039;&#039;info&#039;&#039; in dem der Ausführungsstatus des Scripts wieder gegeben wird. Das Reading &#039;&#039;state&#039;&#039; wir auf on oder off gesetzt. &#039;&#039;On&#039;&#039; bedeutet das Homebridge gestartet ist, &#039;&#039;off&#039;&#039; das die Homebridge nicht ausgeführt wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Das Tutorial wird aktuell angepasst (08.02.2017) - weiter geht es ab dieser Stelle in den nächsten Tagen....&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Damit die Homebridge auch mit Start des Systems gestartet wird sind die folgenden zwei Schritte notwendig&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo chmod 755 /etc/init.d/homebridge&lt;br /&gt;
sudo update-rc.d homebridge defaults&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum testen kann der Dienst nun mit dem Befehl&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo service homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
bzw.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo /etc/init.d/homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gestartet werden. In dem angelegten Dummy werden zwei Readings erzeugt mit den entsprechenden Rückmeldungen aus dem Script. Die Readings werden erst angezeigt wenn die bereits geöffnete Detailseite des Dummys neu geladen wird.&lt;br /&gt;
&lt;br /&gt;
== Homebridge Start per FHEM==&lt;br /&gt;
&lt;br /&gt;
== Homebridge Start DOIF einrichten==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
define FHEM.Homebridge.DOIF DOIF ([FHEM.Homebridge] eq &amp;quot;start&amp;quot;) (set FHEM.Homebridge on, {system (&amp;quot;sudo /etc/init.d/homebridge start&amp;quot;)})\&lt;br /&gt;
DOELSEIF ([FHEM.Homebridge] eq &amp;quot;stop&amp;quot;) (set FHEM.Homebridge on, {system (&amp;quot;sudo /etc/init.d/homebridge stop&amp;quot;)})\&lt;br /&gt;
DOELSEIF ([FHEM.Homebridge] eq &amp;quot;restart&amp;quot;) (set FHEM.Homebridge on, {system (&amp;quot;sudo /etc/init.d/homebridge restart&amp;quot;)})\&lt;br /&gt;
DOELSEIF ([FHEM.Homebridge] eq &amp;quot;status&amp;quot;) (set FHEM.Homebridge on, {system (&amp;quot;sudo /etc/init.d/homebridge status&amp;quot;)})&lt;br /&gt;
attr FHEM.Homebridge.DOIF room 9.03_Tech&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Homebridge FHEM Zugriff auf Script gewähren==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/sudoers&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Beispiel Zeile&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel Datei:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# This file MUST be edited with the &#039;visudo&#039; command as root.&lt;br /&gt;
#&lt;br /&gt;
# Please consider adding local content in /etc/sudoers.d/ instead of&lt;br /&gt;
# directly modifying this file.&lt;br /&gt;
#&lt;br /&gt;
# See the man page for details on how to write a sudoers file.&lt;br /&gt;
#&lt;br /&gt;
Defaults	env_reset&lt;br /&gt;
Defaults	mail_badpass&lt;br /&gt;
Defaults	secure_path=&amp;quot;/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Host alias specification&lt;br /&gt;
&lt;br /&gt;
# User alias specification&lt;br /&gt;
&lt;br /&gt;
# Cmnd alias specification&lt;br /&gt;
&lt;br /&gt;
# User privilege specification&lt;br /&gt;
root	ALL=(ALL:ALL) ALL&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/opt/fhem/FHEM/backup.sh, /etc/init.d/homebridge&lt;br /&gt;
&lt;br /&gt;
# Members of the admin group may gain root privileges&lt;br /&gt;
%admin  ALL = (ALL) NOPASSWD: ALL&lt;br /&gt;
&lt;br /&gt;
# Allow members of group sudo to execute any command&lt;br /&gt;
%sudo	ALL=(ALL:ALL) ALL&lt;br /&gt;
&lt;br /&gt;
# See sudoers(5) for more information on &amp;quot;#include&amp;quot; directives:&lt;br /&gt;
&lt;br /&gt;
#includedir /etc/sudoers.d&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Svenson08</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19588</id>
		<title>Homebridge Start und Status in FHEM</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19588"/>
		<updated>2017-02-09T04:44:12Z</updated>

		<summary type="html">&lt;p&gt;Svenson08: /* Homebridge Start per Konsole */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Artikel befindet sich noch im Aufbau.&lt;br /&gt;
Der Code ist noch nicht 100% getestet, es muss also noch mit Fehler gerechnet werden.&lt;br /&gt;
&lt;br /&gt;
Um nicht bei jeder Änderung, welche die Homebridge betrifft, diese über die Console manuell neustarten zu müssen zeigt diese Lösung wie dies bequem aus FHEMWEB erfolgen kann. In den nachfolgenden Abschnitten sind die einzelnen Schritte dazu erläutert.&lt;br /&gt;
&lt;br /&gt;
== Vorwort ==&lt;br /&gt;
Die im weitern genutzten Bezeichnungen von Dummys, Scriptdateinamen o.ä. können geändert werden. Die Änderungen müssen jedoch auch an allen entsprechenden Stellen vorgenommen werden.&lt;br /&gt;
Genannte IP Adressen, Benutzernamen und Passwörter sind auf die eigenen Gegebenheiten anzupassen. Die Berechtigungen des Benutzers müssen zur Ausführung der Scripte geprüft und ggf. angepasst werden. Entprechende Linux Kentnisse sollten vorhanden sein. In Teilen berücksichtigt dieser Artikel das FHEM und Homebridge nicht zwingend auf dem selben System laufen. Die hier gezeigte Lösung kann für beide Varianten genutzt werden, FHEM und Homebridge auf dem gleichen System oder auf getrennten Systemen.&lt;br /&gt;
&lt;br /&gt;
== Umsetzung ==&lt;br /&gt;
&lt;br /&gt;
=== Status- und Kontroll-Dummy ===&lt;br /&gt;
&lt;br /&gt;
Es wird ein Dummy benötigt, welcher den Status des Homebridge-Dienstes anzeigt und über den dieser Dienst gesteuert werden kann. Das nötige Script um die Homebridge als Dienst zu starten wird weiter unten in diesem Artikel erstellt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
define SYS_Homebridge dummy&lt;br /&gt;
attr SYS_Homebridge devStateIcon .*on:general_an .*off:general_aus .*:audio_rec&lt;br /&gt;
attr SYS_Homebridge eventMap status:status start:start stop:stop restart:restart&lt;br /&gt;
attr SYS_Homebridge icon it_router&lt;br /&gt;
attr SYS_Homebridge room System&lt;br /&gt;
attr SYS_Homebridge userReadings OnStateChange:(start|stop|restart|status) {  system (&amp;quot;sudo service homebridge &amp;quot;.ReadingsVal($NAME,&amp;quot;state&amp;quot;,&amp;quot;restart&amp;quot;).&amp;quot; &amp;amp;&amp;quot; );;  }&lt;br /&gt;
attr SYS_Homebridge webCmd status:start:stop:restart&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Dummy wird durch setzen von &amp;quot;start&amp;quot;, &amp;quot;stop&amp;quot;, &amp;quot;restart&amp;quot; oder &amp;quot;status&amp;quot; jeweils das userReading ausführen und somit letztendlich den homebridge Dienst steuert.&lt;br /&gt;
&lt;br /&gt;
=== Start Script anlegen ===&lt;br /&gt;
Nun ist das Startscript für die Homebridge anzulegen. Mittels dem folgenden Befehl wird (wenn noch nicht vorhanden) das homebridge Script angelegt und im Editor geöffnet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Wenn die Homebridge nicht auf dem selben System läuft wie FHEM muss dieser Schritt auf dem Homebridge System ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Das nun folgende Script kann in die homebridge Datei die im Nano Editor geöffnet ist rein kopiert werden. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039;: die Variabeln &#039;&#039;homeBridgeUser&#039;&#039;, &#039;&#039;fhemHost&#039;&#039; und &#039;&#039;fhemHostTelnetPort&#039;&#039; sind ggf. auf die eigenen Gegebenheiten anzupassen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
### BEGIN INIT INFO&lt;br /&gt;
# Provides: homebridge&lt;br /&gt;
# Required-Start: $network $remote_fs $syslog&lt;br /&gt;
# Required-Stop: $remote_fs $syslog&lt;br /&gt;
# Default-Start: 2 3 4 5&lt;br /&gt;
# Default-Stop: 0 1 6&lt;br /&gt;
# Short-Description: Start daemon at boot time for homebridge&lt;br /&gt;
# Description: Enable service provided by daemon.&lt;br /&gt;
### END INIT INFO&lt;br /&gt;
export PATH=$PATH:/usr/local/bin&lt;br /&gt;
export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules&lt;br /&gt;
&lt;br /&gt;
PID=`pidof homebridge`&lt;br /&gt;
homeBridgeUser=&amp;quot;fhem&amp;quot;&lt;br /&gt;
fhemHost=127.0.0.1          #FHEM Server (Masterinstanz)&lt;br /&gt;
fhemHostTelnetPort=7072     #TelnetPort der FHEM Instanz&lt;br /&gt;
fhemDefine=&amp;quot;SYS_Homebridge&amp;quot;&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
start)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is already running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is already running&amp;quot;			&lt;br /&gt;
else&lt;br /&gt;
        su - $homeBridgeUser -c &amp;quot;homebridge &amp;gt; /dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&amp;quot;&lt;br /&gt;
        echo &amp;quot;Homebridge starting&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge starting&amp;quot;	&lt;br /&gt;
	perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine on&amp;quot;&lt;br /&gt;
        sleep 2&lt;br /&gt;
	$0 status&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
stop)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is not running&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        kill $PID&lt;br /&gt;
        echo &amp;quot;Homebridge stopping&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge stopping&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine off&amp;quot;&lt;br /&gt;
        sleep 2&lt;br /&gt;
	$0 status		&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
restart)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        $0 start&lt;br /&gt;
else&lt;br /&gt;
        $0 stop&lt;br /&gt;
        $0 start&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
status)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is running PID $PID&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge running as PID $PID&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is not running&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
*)&lt;br /&gt;
echo &amp;quot;Usage: $0 {start|stop|status|restart}&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
;;&lt;br /&gt;
esac&lt;br /&gt;
exit 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Script setzt in dem bereits angelegten Dummy ein Reading &#039;&#039;info&#039;&#039; in dem der Ausführungsstatus des Scripts wieder gegeben wird. Das Reading &#039;&#039;state&#039;&#039; wir auf on oder off gesetzt. &#039;&#039;On&#039;&#039; bedeutet das Homebridge gestartet ist, &#039;&#039;off&#039;&#039; das die Homebridge nicht ausgeführt wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Das Tutorial wird aktuell angepasst (08.02.2017) - weiter geht es ab dieser Stelle in den nächsten Tagen....&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Damit die Homebridge auch mit Start des Systems gestartet wird sind die folgenden zwei Schritte notwendig&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo chmod 755 /etc/init.d/homebridge&lt;br /&gt;
sudo update-rc.d homebridge defaults&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum testen kann der Dienst nun mit dem Befehl&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo service homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
bzw.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo /etc/init.d/homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gestartet werden. In dem angelegten Dummy werden zwei Readings erzeugt mit den entsprechenden Rückmeldungen aus dem Script. Die Readings werden erst angezeigt wenn die bereits geöffnete Detailseite des Dummys neu geladen wird.&lt;br /&gt;
&lt;br /&gt;
== Homebridge Start per FHEM==&lt;br /&gt;
&lt;br /&gt;
== Homebridge Start Dummy einrichten==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
define FHEM.Homebridge dummy&lt;br /&gt;
attr FHEM.Homebridge event-on-change-reading state&lt;br /&gt;
attr FHEM.Homebridge room 9.03_Tech&lt;br /&gt;
attr FHEM.Homebridge webCmd status:start:stop:restart&lt;br /&gt;
attr FHEM.Homebridge devStateIcon .*on:general_an .*off:general_aus .*:audio_rec&lt;br /&gt;
attr FHEM.Homebridge eventMap status:status start:start stop:stop restart:restart&lt;br /&gt;
attr FHEM.Homebridge icon it_router&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Homebridge Start DOIF einrichten==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
define FHEM.Homebridge.DOIF DOIF ([FHEM.Homebridge] eq &amp;quot;start&amp;quot;) (set FHEM.Homebridge on, {system (&amp;quot;sudo /etc/init.d/homebridge start&amp;quot;)})\&lt;br /&gt;
DOELSEIF ([FHEM.Homebridge] eq &amp;quot;stop&amp;quot;) (set FHEM.Homebridge on, {system (&amp;quot;sudo /etc/init.d/homebridge stop&amp;quot;)})\&lt;br /&gt;
DOELSEIF ([FHEM.Homebridge] eq &amp;quot;restart&amp;quot;) (set FHEM.Homebridge on, {system (&amp;quot;sudo /etc/init.d/homebridge restart&amp;quot;)})\&lt;br /&gt;
DOELSEIF ([FHEM.Homebridge] eq &amp;quot;status&amp;quot;) (set FHEM.Homebridge on, {system (&amp;quot;sudo /etc/init.d/homebridge status&amp;quot;)})&lt;br /&gt;
attr FHEM.Homebridge.DOIF room 9.03_Tech&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Homebridge FHEM Zugriff auf Script gewähren==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/sudoers&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Beispiel Zeile&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel Datei:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# This file MUST be edited with the &#039;visudo&#039; command as root.&lt;br /&gt;
#&lt;br /&gt;
# Please consider adding local content in /etc/sudoers.d/ instead of&lt;br /&gt;
# directly modifying this file.&lt;br /&gt;
#&lt;br /&gt;
# See the man page for details on how to write a sudoers file.&lt;br /&gt;
#&lt;br /&gt;
Defaults	env_reset&lt;br /&gt;
Defaults	mail_badpass&lt;br /&gt;
Defaults	secure_path=&amp;quot;/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Host alias specification&lt;br /&gt;
&lt;br /&gt;
# User alias specification&lt;br /&gt;
&lt;br /&gt;
# Cmnd alias specification&lt;br /&gt;
&lt;br /&gt;
# User privilege specification&lt;br /&gt;
root	ALL=(ALL:ALL) ALL&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/opt/fhem/FHEM/backup.sh, /etc/init.d/homebridge&lt;br /&gt;
&lt;br /&gt;
# Members of the admin group may gain root privileges&lt;br /&gt;
%admin  ALL = (ALL) NOPASSWD: ALL&lt;br /&gt;
&lt;br /&gt;
# Allow members of group sudo to execute any command&lt;br /&gt;
%sudo	ALL=(ALL:ALL) ALL&lt;br /&gt;
&lt;br /&gt;
# See sudoers(5) for more information on &amp;quot;#include&amp;quot; directives:&lt;br /&gt;
&lt;br /&gt;
#includedir /etc/sudoers.d&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Svenson08</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19587</id>
		<title>Homebridge Start und Status in FHEM</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19587"/>
		<updated>2017-02-09T04:40:59Z</updated>

		<summary type="html">&lt;p&gt;Svenson08: /* Start Script Autostart einrichten */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Artikel befindet sich noch im Aufbau.&lt;br /&gt;
Der Code ist noch nicht 100% getestet, es muss also noch mit Fehler gerechnet werden.&lt;br /&gt;
&lt;br /&gt;
Um nicht bei jeder Änderung, welche die Homebridge betrifft, diese über die Console manuell neustarten zu müssen zeigt diese Lösung wie dies bequem aus FHEMWEB erfolgen kann. In den nachfolgenden Abschnitten sind die einzelnen Schritte dazu erläutert.&lt;br /&gt;
&lt;br /&gt;
== Vorwort ==&lt;br /&gt;
Die im weitern genutzten Bezeichnungen von Dummys, Scriptdateinamen o.ä. können geändert werden. Die Änderungen müssen jedoch auch an allen entsprechenden Stellen vorgenommen werden.&lt;br /&gt;
Genannte IP Adressen, Benutzernamen und Passwörter sind auf die eigenen Gegebenheiten anzupassen. Die Berechtigungen des Benutzers müssen zur Ausführung der Scripte geprüft und ggf. angepasst werden. Entprechende Linux Kentnisse sollten vorhanden sein. In Teilen berücksichtigt dieser Artikel das FHEM und Homebridge nicht zwingend auf dem selben System laufen. Die hier gezeigte Lösung kann für beide Varianten genutzt werden, FHEM und Homebridge auf dem gleichen System oder auf getrennten Systemen.&lt;br /&gt;
&lt;br /&gt;
== Umsetzung ==&lt;br /&gt;
&lt;br /&gt;
=== Status- und Kontroll-Dummy ===&lt;br /&gt;
&lt;br /&gt;
Es wird ein Dummy benötigt, welcher den Status des Homebridge-Dienstes anzeigt und über den dieser Dienst gesteuert werden kann. Das nötige Script um die Homebridge als Dienst zu starten wird weiter unten in diesem Artikel erstellt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
define SYS_Homebridge dummy&lt;br /&gt;
attr SYS_Homebridge devStateIcon .*on:general_an .*off:general_aus .*:audio_rec&lt;br /&gt;
attr SYS_Homebridge eventMap status:status start:start stop:stop restart:restart&lt;br /&gt;
attr SYS_Homebridge icon it_router&lt;br /&gt;
attr SYS_Homebridge room System&lt;br /&gt;
attr SYS_Homebridge userReadings OnStateChange:(start|stop|restart|status) {  system (&amp;quot;sudo service homebridge &amp;quot;.ReadingsVal($NAME,&amp;quot;state&amp;quot;,&amp;quot;restart&amp;quot;).&amp;quot; &amp;amp;&amp;quot; );;  }&lt;br /&gt;
attr SYS_Homebridge webCmd status:start:stop:restart&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Dummy wird durch setzen von &amp;quot;start&amp;quot;, &amp;quot;stop&amp;quot;, &amp;quot;restart&amp;quot; oder &amp;quot;status&amp;quot; jeweils das userReading ausführen und somit letztendlich den homebridge Dienst steuert.&lt;br /&gt;
&lt;br /&gt;
=== Start Script anlegen ===&lt;br /&gt;
Nun ist das Startscript für die Homebridge anzulegen. Mittels dem folgenden Befehl wird (wenn noch nicht vorhanden) das homebridge Script angelegt und im Editor geöffnet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Wenn die Homebridge nicht auf dem selben System läuft wie FHEM muss dieser Schritt auf dem Homebridge System ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Das nun folgende Script kann in die homebridge Datei die im Nano Editor geöffnet ist rein kopiert werden. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039;: die Variabeln &#039;&#039;homeBridgeUser&#039;&#039;, &#039;&#039;fhemHost&#039;&#039; und &#039;&#039;fhemHostTelnetPort&#039;&#039; sind ggf. auf die eigenen Gegebenheiten anzupassen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
### BEGIN INIT INFO&lt;br /&gt;
# Provides: homebridge&lt;br /&gt;
# Required-Start: $network $remote_fs $syslog&lt;br /&gt;
# Required-Stop: $remote_fs $syslog&lt;br /&gt;
# Default-Start: 2 3 4 5&lt;br /&gt;
# Default-Stop: 0 1 6&lt;br /&gt;
# Short-Description: Start daemon at boot time for homebridge&lt;br /&gt;
# Description: Enable service provided by daemon.&lt;br /&gt;
### END INIT INFO&lt;br /&gt;
export PATH=$PATH:/usr/local/bin&lt;br /&gt;
export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules&lt;br /&gt;
&lt;br /&gt;
PID=`pidof homebridge`&lt;br /&gt;
homeBridgeUser=&amp;quot;fhem&amp;quot;&lt;br /&gt;
fhemHost=127.0.0.1          #FHEM Server (Masterinstanz)&lt;br /&gt;
fhemHostTelnetPort=7072     #TelnetPort der FHEM Instanz&lt;br /&gt;
fhemDefine=&amp;quot;SYS_Homebridge&amp;quot;&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
start)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is already running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is already running&amp;quot;			&lt;br /&gt;
else&lt;br /&gt;
        su - $homeBridgeUser -c &amp;quot;homebridge &amp;gt; /dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&amp;quot;&lt;br /&gt;
        echo &amp;quot;Homebridge starting&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge starting&amp;quot;	&lt;br /&gt;
	perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine on&amp;quot;&lt;br /&gt;
        sleep 2&lt;br /&gt;
	$0 status&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
stop)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is not running&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        kill $PID&lt;br /&gt;
        echo &amp;quot;Homebridge stopping&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge stopping&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine off&amp;quot;&lt;br /&gt;
        sleep 2&lt;br /&gt;
	$0 status		&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
restart)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        $0 start&lt;br /&gt;
else&lt;br /&gt;
        $0 stop&lt;br /&gt;
        $0 start&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
status)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is running PID $PID&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge running as PID $PID&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is not running&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
*)&lt;br /&gt;
echo &amp;quot;Usage: $0 {start|stop|status|restart}&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
;;&lt;br /&gt;
esac&lt;br /&gt;
exit 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Script setzt in dem bereits angelegten Dummy ein Reading &#039;&#039;info&#039;&#039; in dem der Ausführungsstatus des Scripts wieder gegeben wird. Das Reading &#039;&#039;state&#039;&#039; wir auf on oder off gesetzt. &#039;&#039;On&#039;&#039; bedeutet das Homebridge gestartet ist, &#039;&#039;off&#039;&#039; das die Homebridge nicht ausgeführt wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Das Tutorial wird aktuell angepasst (08.02.2017) - weiter geht es ab dieser Stelle in den nächsten Tagen....&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Damit die Homebridge auch mit Start des Systems gestartet wird sind die folgenden zwei Schritte notwendig&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo chmod 755 /etc/init.d/homebridge&lt;br /&gt;
sudo update-rc.d homebridge defaults&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Homebridge Start per Konsole==&lt;br /&gt;
Nun kann man mit&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo service homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
bzw.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo /etc/init.d/homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
den Dienst starten.&lt;br /&gt;
Da in dem Script versucht wird, den Status für den Dummy &amp;quot;FHEM.Homebridge&amp;quot; zu setzen, gibt&#039;s erstmal eine Fehlermeldung - also am Besten gleich den Dummy anlegen, wie im nächsten Abschnitt beschrieben.&lt;br /&gt;
&lt;br /&gt;
== Homebridge Start per FHEM==&lt;br /&gt;
&lt;br /&gt;
== Homebridge Start Dummy einrichten==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
define FHEM.Homebridge dummy&lt;br /&gt;
attr FHEM.Homebridge event-on-change-reading state&lt;br /&gt;
attr FHEM.Homebridge room 9.03_Tech&lt;br /&gt;
attr FHEM.Homebridge webCmd status:start:stop:restart&lt;br /&gt;
attr FHEM.Homebridge devStateIcon .*on:general_an .*off:general_aus .*:audio_rec&lt;br /&gt;
attr FHEM.Homebridge eventMap status:status start:start stop:stop restart:restart&lt;br /&gt;
attr FHEM.Homebridge icon it_router&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Homebridge Start DOIF einrichten==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
define FHEM.Homebridge.DOIF DOIF ([FHEM.Homebridge] eq &amp;quot;start&amp;quot;) (set FHEM.Homebridge on, {system (&amp;quot;sudo /etc/init.d/homebridge start&amp;quot;)})\&lt;br /&gt;
DOELSEIF ([FHEM.Homebridge] eq &amp;quot;stop&amp;quot;) (set FHEM.Homebridge on, {system (&amp;quot;sudo /etc/init.d/homebridge stop&amp;quot;)})\&lt;br /&gt;
DOELSEIF ([FHEM.Homebridge] eq &amp;quot;restart&amp;quot;) (set FHEM.Homebridge on, {system (&amp;quot;sudo /etc/init.d/homebridge restart&amp;quot;)})\&lt;br /&gt;
DOELSEIF ([FHEM.Homebridge] eq &amp;quot;status&amp;quot;) (set FHEM.Homebridge on, {system (&amp;quot;sudo /etc/init.d/homebridge status&amp;quot;)})&lt;br /&gt;
attr FHEM.Homebridge.DOIF room 9.03_Tech&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Homebridge FHEM Zugriff auf Script gewähren==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/sudoers&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Beispiel Zeile&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel Datei:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# This file MUST be edited with the &#039;visudo&#039; command as root.&lt;br /&gt;
#&lt;br /&gt;
# Please consider adding local content in /etc/sudoers.d/ instead of&lt;br /&gt;
# directly modifying this file.&lt;br /&gt;
#&lt;br /&gt;
# See the man page for details on how to write a sudoers file.&lt;br /&gt;
#&lt;br /&gt;
Defaults	env_reset&lt;br /&gt;
Defaults	mail_badpass&lt;br /&gt;
Defaults	secure_path=&amp;quot;/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Host alias specification&lt;br /&gt;
&lt;br /&gt;
# User alias specification&lt;br /&gt;
&lt;br /&gt;
# Cmnd alias specification&lt;br /&gt;
&lt;br /&gt;
# User privilege specification&lt;br /&gt;
root	ALL=(ALL:ALL) ALL&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/opt/fhem/FHEM/backup.sh, /etc/init.d/homebridge&lt;br /&gt;
&lt;br /&gt;
# Members of the admin group may gain root privileges&lt;br /&gt;
%admin  ALL = (ALL) NOPASSWD: ALL&lt;br /&gt;
&lt;br /&gt;
# Allow members of group sudo to execute any command&lt;br /&gt;
%sudo	ALL=(ALL:ALL) ALL&lt;br /&gt;
&lt;br /&gt;
# See sudoers(5) for more information on &amp;quot;#include&amp;quot; directives:&lt;br /&gt;
&lt;br /&gt;
#includedir /etc/sudoers.d&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Svenson08</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19586</id>
		<title>Homebridge Start und Status in FHEM</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19586"/>
		<updated>2017-02-09T04:39:48Z</updated>

		<summary type="html">&lt;p&gt;Svenson08: /* Start Script anlegen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Artikel befindet sich noch im Aufbau.&lt;br /&gt;
Der Code ist noch nicht 100% getestet, es muss also noch mit Fehler gerechnet werden.&lt;br /&gt;
&lt;br /&gt;
Um nicht bei jeder Änderung, welche die Homebridge betrifft, diese über die Console manuell neustarten zu müssen zeigt diese Lösung wie dies bequem aus FHEMWEB erfolgen kann. In den nachfolgenden Abschnitten sind die einzelnen Schritte dazu erläutert.&lt;br /&gt;
&lt;br /&gt;
== Vorwort ==&lt;br /&gt;
Die im weitern genutzten Bezeichnungen von Dummys, Scriptdateinamen o.ä. können geändert werden. Die Änderungen müssen jedoch auch an allen entsprechenden Stellen vorgenommen werden.&lt;br /&gt;
Genannte IP Adressen, Benutzernamen und Passwörter sind auf die eigenen Gegebenheiten anzupassen. Die Berechtigungen des Benutzers müssen zur Ausführung der Scripte geprüft und ggf. angepasst werden. Entprechende Linux Kentnisse sollten vorhanden sein. In Teilen berücksichtigt dieser Artikel das FHEM und Homebridge nicht zwingend auf dem selben System laufen. Die hier gezeigte Lösung kann für beide Varianten genutzt werden, FHEM und Homebridge auf dem gleichen System oder auf getrennten Systemen.&lt;br /&gt;
&lt;br /&gt;
== Umsetzung ==&lt;br /&gt;
&lt;br /&gt;
=== Status- und Kontroll-Dummy ===&lt;br /&gt;
&lt;br /&gt;
Es wird ein Dummy benötigt, welcher den Status des Homebridge-Dienstes anzeigt und über den dieser Dienst gesteuert werden kann. Das nötige Script um die Homebridge als Dienst zu starten wird weiter unten in diesem Artikel erstellt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
define SYS_Homebridge dummy&lt;br /&gt;
attr SYS_Homebridge devStateIcon .*on:general_an .*off:general_aus .*:audio_rec&lt;br /&gt;
attr SYS_Homebridge eventMap status:status start:start stop:stop restart:restart&lt;br /&gt;
attr SYS_Homebridge icon it_router&lt;br /&gt;
attr SYS_Homebridge room System&lt;br /&gt;
attr SYS_Homebridge userReadings OnStateChange:(start|stop|restart|status) {  system (&amp;quot;sudo service homebridge &amp;quot;.ReadingsVal($NAME,&amp;quot;state&amp;quot;,&amp;quot;restart&amp;quot;).&amp;quot; &amp;amp;&amp;quot; );;  }&lt;br /&gt;
attr SYS_Homebridge webCmd status:start:stop:restart&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Dummy wird durch setzen von &amp;quot;start&amp;quot;, &amp;quot;stop&amp;quot;, &amp;quot;restart&amp;quot; oder &amp;quot;status&amp;quot; jeweils das userReading ausführen und somit letztendlich den homebridge Dienst steuert.&lt;br /&gt;
&lt;br /&gt;
=== Start Script anlegen ===&lt;br /&gt;
Nun ist das Startscript für die Homebridge anzulegen. Mittels dem folgenden Befehl wird (wenn noch nicht vorhanden) das homebridge Script angelegt und im Editor geöffnet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Wenn die Homebridge nicht auf dem selben System läuft wie FHEM muss dieser Schritt auf dem Homebridge System ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Das nun folgende Script kann in die homebridge Datei die im Nano Editor geöffnet ist rein kopiert werden. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039;: die Variabeln &#039;&#039;homeBridgeUser&#039;&#039;, &#039;&#039;fhemHost&#039;&#039; und &#039;&#039;fhemHostTelnetPort&#039;&#039; sind ggf. auf die eigenen Gegebenheiten anzupassen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
### BEGIN INIT INFO&lt;br /&gt;
# Provides: homebridge&lt;br /&gt;
# Required-Start: $network $remote_fs $syslog&lt;br /&gt;
# Required-Stop: $remote_fs $syslog&lt;br /&gt;
# Default-Start: 2 3 4 5&lt;br /&gt;
# Default-Stop: 0 1 6&lt;br /&gt;
# Short-Description: Start daemon at boot time for homebridge&lt;br /&gt;
# Description: Enable service provided by daemon.&lt;br /&gt;
### END INIT INFO&lt;br /&gt;
export PATH=$PATH:/usr/local/bin&lt;br /&gt;
export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules&lt;br /&gt;
&lt;br /&gt;
PID=`pidof homebridge`&lt;br /&gt;
homeBridgeUser=&amp;quot;fhem&amp;quot;&lt;br /&gt;
fhemHost=127.0.0.1          #FHEM Server (Masterinstanz)&lt;br /&gt;
fhemHostTelnetPort=7072     #TelnetPort der FHEM Instanz&lt;br /&gt;
fhemDefine=&amp;quot;SYS_Homebridge&amp;quot;&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
start)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is already running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is already running&amp;quot;			&lt;br /&gt;
else&lt;br /&gt;
        su - $homeBridgeUser -c &amp;quot;homebridge &amp;gt; /dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&amp;quot;&lt;br /&gt;
        echo &amp;quot;Homebridge starting&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge starting&amp;quot;	&lt;br /&gt;
	perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine on&amp;quot;&lt;br /&gt;
        sleep 2&lt;br /&gt;
	$0 status&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
stop)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is not running&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        kill $PID&lt;br /&gt;
        echo &amp;quot;Homebridge stopping&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge stopping&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine off&amp;quot;&lt;br /&gt;
        sleep 2&lt;br /&gt;
	$0 status		&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
restart)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        $0 start&lt;br /&gt;
else&lt;br /&gt;
        $0 stop&lt;br /&gt;
        $0 start&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
status)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is running PID $PID&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge running as PID $PID&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is not running&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
*)&lt;br /&gt;
echo &amp;quot;Usage: $0 {start|stop|status|restart}&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
;;&lt;br /&gt;
esac&lt;br /&gt;
exit 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Script setzt in dem bereits angelegten Dummy ein Reading &#039;&#039;info&#039;&#039; in dem der Ausführungsstatus des Scripts wieder gegeben wird. Das Reading &#039;&#039;state&#039;&#039; wir auf on oder off gesetzt. &#039;&#039;On&#039;&#039; bedeutet das Homebridge gestartet ist, &#039;&#039;off&#039;&#039; das die Homebridge nicht ausgeführt wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Das Tutorial wird aktuell angepasst (08.02.2017) - weiter geht es ab dieser Stelle in den nächsten Tagen....&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Start Script Autostart einrichten==&lt;br /&gt;
Autostart aktivieren:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo chmod 755 /etc/init.d/homebridge&lt;br /&gt;
&lt;br /&gt;
sudo update-rc.d homebridge defaults&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Homebridge Start per Konsole==&lt;br /&gt;
Nun kann man mit&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo service homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
bzw.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo /etc/init.d/homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
den Dienst starten.&lt;br /&gt;
Da in dem Script versucht wird, den Status für den Dummy &amp;quot;FHEM.Homebridge&amp;quot; zu setzen, gibt&#039;s erstmal eine Fehlermeldung - also am Besten gleich den Dummy anlegen, wie im nächsten Abschnitt beschrieben.&lt;br /&gt;
&lt;br /&gt;
== Homebridge Start per FHEM==&lt;br /&gt;
&lt;br /&gt;
== Homebridge Start Dummy einrichten==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
define FHEM.Homebridge dummy&lt;br /&gt;
attr FHEM.Homebridge event-on-change-reading state&lt;br /&gt;
attr FHEM.Homebridge room 9.03_Tech&lt;br /&gt;
attr FHEM.Homebridge webCmd status:start:stop:restart&lt;br /&gt;
attr FHEM.Homebridge devStateIcon .*on:general_an .*off:general_aus .*:audio_rec&lt;br /&gt;
attr FHEM.Homebridge eventMap status:status start:start stop:stop restart:restart&lt;br /&gt;
attr FHEM.Homebridge icon it_router&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Homebridge Start DOIF einrichten==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
define FHEM.Homebridge.DOIF DOIF ([FHEM.Homebridge] eq &amp;quot;start&amp;quot;) (set FHEM.Homebridge on, {system (&amp;quot;sudo /etc/init.d/homebridge start&amp;quot;)})\&lt;br /&gt;
DOELSEIF ([FHEM.Homebridge] eq &amp;quot;stop&amp;quot;) (set FHEM.Homebridge on, {system (&amp;quot;sudo /etc/init.d/homebridge stop&amp;quot;)})\&lt;br /&gt;
DOELSEIF ([FHEM.Homebridge] eq &amp;quot;restart&amp;quot;) (set FHEM.Homebridge on, {system (&amp;quot;sudo /etc/init.d/homebridge restart&amp;quot;)})\&lt;br /&gt;
DOELSEIF ([FHEM.Homebridge] eq &amp;quot;status&amp;quot;) (set FHEM.Homebridge on, {system (&amp;quot;sudo /etc/init.d/homebridge status&amp;quot;)})&lt;br /&gt;
attr FHEM.Homebridge.DOIF room 9.03_Tech&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Homebridge FHEM Zugriff auf Script gewähren==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/sudoers&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Beispiel Zeile&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel Datei:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# This file MUST be edited with the &#039;visudo&#039; command as root.&lt;br /&gt;
#&lt;br /&gt;
# Please consider adding local content in /etc/sudoers.d/ instead of&lt;br /&gt;
# directly modifying this file.&lt;br /&gt;
#&lt;br /&gt;
# See the man page for details on how to write a sudoers file.&lt;br /&gt;
#&lt;br /&gt;
Defaults	env_reset&lt;br /&gt;
Defaults	mail_badpass&lt;br /&gt;
Defaults	secure_path=&amp;quot;/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Host alias specification&lt;br /&gt;
&lt;br /&gt;
# User alias specification&lt;br /&gt;
&lt;br /&gt;
# Cmnd alias specification&lt;br /&gt;
&lt;br /&gt;
# User privilege specification&lt;br /&gt;
root	ALL=(ALL:ALL) ALL&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/opt/fhem/FHEM/backup.sh, /etc/init.d/homebridge&lt;br /&gt;
&lt;br /&gt;
# Members of the admin group may gain root privileges&lt;br /&gt;
%admin  ALL = (ALL) NOPASSWD: ALL&lt;br /&gt;
&lt;br /&gt;
# Allow members of group sudo to execute any command&lt;br /&gt;
%sudo	ALL=(ALL:ALL) ALL&lt;br /&gt;
&lt;br /&gt;
# See sudoers(5) for more information on &amp;quot;#include&amp;quot; directives:&lt;br /&gt;
&lt;br /&gt;
#includedir /etc/sudoers.d&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Svenson08</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19575</id>
		<title>Homebridge Start und Status in FHEM</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19575"/>
		<updated>2017-02-08T19:13:37Z</updated>

		<summary type="html">&lt;p&gt;Svenson08: /* Start Script anlegen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Artikel befindet sich noch im Aufbau.&lt;br /&gt;
Der Code ist noch nicht 100% getestet, es muss also noch mit Fehler gerechnet werden.&lt;br /&gt;
&lt;br /&gt;
Um nicht bei jeder Änderung, welche die Homebridge betrifft, diese über die Console manuell neustarten zu müssen zeigt diese Lösung wie dies bequem aus FHEMWEB erfolgen kann. In den nachfolgenden Abschnitten sind die einzelnen Schritte dazu erläutert.&lt;br /&gt;
&lt;br /&gt;
== Vorwort ==&lt;br /&gt;
Die im weitern genutzten Bezeichnungen von Dummys, Scriptdateinamen o.ä. können geändert werden. Die Änderungen müssen jedoch auch an allen entsprechenden Stellen vorgenommen werden.&lt;br /&gt;
Genannte IP Adressen, Benutzernamen und Passwörter sind auf die eigenen Gegebenheiten anzupassen. Die Berechtigungen des Benutzers müssen zur Ausführung der Scripte geprüft und ggf. angepasst werden. Entprechende Linux Kentnisse sollten vorhanden sein. In Teilen berücksichtigt dieser Artikel das FHEM und Homebridge nicht zwingend auf dem selben System laufen. Die hier gezeigte Lösung kann für beide Varianten genutzt werden, FHEM und Homebridge auf dem gleichen System oder auf getrennten Systemen.&lt;br /&gt;
&lt;br /&gt;
== Umsetzung ==&lt;br /&gt;
&lt;br /&gt;
=== Status- und Kontroll-Dummy ===&lt;br /&gt;
&lt;br /&gt;
Es wird ein Dummy benötigt, welcher den Status des Homebridge-Dienstes anzeigt und über den dieser Dienst gesteuert werden kann. Das nötige Script um die Homebridge als Dienst zu starten wird weiter unten in diesem Artikel erstellt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
define SYS_Homebridge dummy&lt;br /&gt;
attr SYS_Homebridge devStateIcon .*on:general_an .*off:general_aus .*:audio_rec&lt;br /&gt;
attr SYS_Homebridge eventMap status:status start:start stop:stop restart:restart&lt;br /&gt;
attr SYS_Homebridge icon it_router&lt;br /&gt;
attr SYS_Homebridge room System&lt;br /&gt;
attr SYS_Homebridge userReadings OnStateChange:(start|stop|restart|status) {  system (&amp;quot;sudo service homebridge &amp;quot;.ReadingsVal($NAME,&amp;quot;state&amp;quot;,&amp;quot;restart&amp;quot;).&amp;quot; &amp;amp;&amp;quot; );;  }&lt;br /&gt;
attr SYS_Homebridge webCmd status:start:stop:restart&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Dummy wird durch setzen von &amp;quot;start&amp;quot;, &amp;quot;stop&amp;quot;, &amp;quot;restart&amp;quot; oder &amp;quot;status&amp;quot; jeweils das userReading ausführen und somit letztendlich den homebridge Dienst steuert.&lt;br /&gt;
&lt;br /&gt;
=== Start Script anlegen ===&lt;br /&gt;
Nun ist das Startscript für die Homebridge anzulegen. Mittels dem folgenden Befehl wird (wenn noch nicht vorhanden) das homebridge Script angelegt und im Editor geöffnet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Wenn die Homebridge nicht auf dem selben System läuft wie FHEM muss dieser Schritt auf dem Homebridge System ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Das nun folgende Script kann in die homebridge Datei die im Nano Editor geöffnet ist rein kopiert werden. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039;: die Variabeln &#039;&#039;homeBridgeUser&#039;&#039;, &#039;&#039;fhemHost&#039;&#039; und &#039;&#039;fhemHostTelnetPort&#039;&#039; sind ggf. auf die eigenen Gegebenheiten anzupassen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
### BEGIN INIT INFO&lt;br /&gt;
# Provides: homebridge&lt;br /&gt;
# Required-Start: $network $remote_fs $syslog&lt;br /&gt;
# Required-Stop: $remote_fs $syslog&lt;br /&gt;
# Default-Start: 2 3 4 5&lt;br /&gt;
# Default-Stop: 0 1 6&lt;br /&gt;
# Short-Description: Start daemon at boot time for homebridge&lt;br /&gt;
# Description: Enable service provided by daemon.&lt;br /&gt;
### END INIT INFO&lt;br /&gt;
export PATH=$PATH:/usr/local/bin&lt;br /&gt;
export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules&lt;br /&gt;
&lt;br /&gt;
PID=`pidof homebridge`&lt;br /&gt;
homeBridgeUser=&amp;quot;fhem&amp;quot;&lt;br /&gt;
fhemHost=127.0.0.1          #FHEM Server (Masterinstanz)&lt;br /&gt;
fhemHostTelnetPort=7072     #TelnetPort der FHEM Instanz&lt;br /&gt;
fhemDefine=&amp;quot;SYS_Homebridge&amp;quot;&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
start)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is already running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is already running&amp;quot;			&lt;br /&gt;
 #       perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine on&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        su - $homeBridgeUser -c &amp;quot;homebridge &amp;gt; /dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&amp;quot;&lt;br /&gt;
        echo &amp;quot;Homebridge starting&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge starting&amp;quot;	&lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine on&amp;quot;&lt;br /&gt;
        sleep 2&lt;br /&gt;
	$0 status&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
stop)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is not running&amp;quot;&lt;br /&gt;
        #perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine off&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        kill $PID&lt;br /&gt;
        echo &amp;quot;Homebridge stopping&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge stopping&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine off&amp;quot;&lt;br /&gt;
        sleep 2&lt;br /&gt;
	$0 status		&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
restart)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        $0 start&lt;br /&gt;
else&lt;br /&gt;
        $0 stop&lt;br /&gt;
        $0 start&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
status)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is running PID $PID&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge running as PID $PID&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is not running&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
*)&lt;br /&gt;
echo &amp;quot;Usage: $0 {start|stop|status|restart}&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
;;&lt;br /&gt;
esac&lt;br /&gt;
exit 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Script setzt in dem bereits angelegten Dummy ein Reading &#039;&#039;info&#039;&#039; in dem der Ausführungsstatus des Scripts wieder gegeben wird. Das Reading &#039;&#039;state&#039;&#039; wir auf on oder off gesetzt. &#039;&#039;On&#039;&#039; bedeutet das Homebridge gestartet ist, &#039;&#039;off&#039;&#039; das die Homebridge nicht ausgeführt wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Das Tutorial wird aktuell angepasst (08.02.2017) - weiter geht es ab dieser Stelle in den nächsten Tagen....&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Start Script Autostart einrichten==&lt;br /&gt;
Autostart aktivieren:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo chmod 755 /etc/init.d/homebridge&lt;br /&gt;
&lt;br /&gt;
sudo update-rc.d homebridge defaults&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Homebridge Start per Konsole==&lt;br /&gt;
Nun kann man mit&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo service homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
bzw.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo /etc/init.d/homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
den Dienst starten.&lt;br /&gt;
Da in dem Script versucht wird, den Status für den Dummy &amp;quot;FHEM.Homebridge&amp;quot; zu setzen, gibt&#039;s erstmal eine Fehlermeldung - also am Besten gleich den Dummy anlegen, wie im nächsten Abschnitt beschrieben.&lt;br /&gt;
&lt;br /&gt;
== Homebridge Start per FHEM==&lt;br /&gt;
&lt;br /&gt;
== Homebridge Start Dummy einrichten==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
define FHEM.Homebridge dummy&lt;br /&gt;
attr FHEM.Homebridge event-on-change-reading state&lt;br /&gt;
attr FHEM.Homebridge room 9.03_Tech&lt;br /&gt;
attr FHEM.Homebridge webCmd status:start:stop:restart&lt;br /&gt;
attr FHEM.Homebridge devStateIcon .*on:general_an .*off:general_aus .*:audio_rec&lt;br /&gt;
attr FHEM.Homebridge eventMap status:status start:start stop:stop restart:restart&lt;br /&gt;
attr FHEM.Homebridge icon it_router&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Homebridge Start DOIF einrichten==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
define FHEM.Homebridge.DOIF DOIF ([FHEM.Homebridge] eq &amp;quot;start&amp;quot;) (set FHEM.Homebridge on, {system (&amp;quot;sudo /etc/init.d/homebridge start&amp;quot;)})\&lt;br /&gt;
DOELSEIF ([FHEM.Homebridge] eq &amp;quot;stop&amp;quot;) (set FHEM.Homebridge on, {system (&amp;quot;sudo /etc/init.d/homebridge stop&amp;quot;)})\&lt;br /&gt;
DOELSEIF ([FHEM.Homebridge] eq &amp;quot;restart&amp;quot;) (set FHEM.Homebridge on, {system (&amp;quot;sudo /etc/init.d/homebridge restart&amp;quot;)})\&lt;br /&gt;
DOELSEIF ([FHEM.Homebridge] eq &amp;quot;status&amp;quot;) (set FHEM.Homebridge on, {system (&amp;quot;sudo /etc/init.d/homebridge status&amp;quot;)})&lt;br /&gt;
attr FHEM.Homebridge.DOIF room 9.03_Tech&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Homebridge FHEM Zugriff auf Script gewähren==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/sudoers&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Beispiel Zeile&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel Datei:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# This file MUST be edited with the &#039;visudo&#039; command as root.&lt;br /&gt;
#&lt;br /&gt;
# Please consider adding local content in /etc/sudoers.d/ instead of&lt;br /&gt;
# directly modifying this file.&lt;br /&gt;
#&lt;br /&gt;
# See the man page for details on how to write a sudoers file.&lt;br /&gt;
#&lt;br /&gt;
Defaults	env_reset&lt;br /&gt;
Defaults	mail_badpass&lt;br /&gt;
Defaults	secure_path=&amp;quot;/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Host alias specification&lt;br /&gt;
&lt;br /&gt;
# User alias specification&lt;br /&gt;
&lt;br /&gt;
# Cmnd alias specification&lt;br /&gt;
&lt;br /&gt;
# User privilege specification&lt;br /&gt;
root	ALL=(ALL:ALL) ALL&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/opt/fhem/FHEM/backup.sh, /etc/init.d/homebridge&lt;br /&gt;
&lt;br /&gt;
# Members of the admin group may gain root privileges&lt;br /&gt;
%admin  ALL = (ALL) NOPASSWD: ALL&lt;br /&gt;
&lt;br /&gt;
# Allow members of group sudo to execute any command&lt;br /&gt;
%sudo	ALL=(ALL:ALL) ALL&lt;br /&gt;
&lt;br /&gt;
# See sudoers(5) for more information on &amp;quot;#include&amp;quot; directives:&lt;br /&gt;
&lt;br /&gt;
#includedir /etc/sudoers.d&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Svenson08</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19574</id>
		<title>Homebridge Start und Status in FHEM</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19574"/>
		<updated>2017-02-08T19:13:21Z</updated>

		<summary type="html">&lt;p&gt;Svenson08: /* Start Script anlegen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Artikel befindet sich noch im Aufbau.&lt;br /&gt;
Der Code ist noch nicht 100% getestet, es muss also noch mit Fehler gerechnet werden.&lt;br /&gt;
&lt;br /&gt;
Um nicht bei jeder Änderung, welche die Homebridge betrifft, diese über die Console manuell neustarten zu müssen zeigt diese Lösung wie dies bequem aus FHEMWEB erfolgen kann. In den nachfolgenden Abschnitten sind die einzelnen Schritte dazu erläutert.&lt;br /&gt;
&lt;br /&gt;
== Vorwort ==&lt;br /&gt;
Die im weitern genutzten Bezeichnungen von Dummys, Scriptdateinamen o.ä. können geändert werden. Die Änderungen müssen jedoch auch an allen entsprechenden Stellen vorgenommen werden.&lt;br /&gt;
Genannte IP Adressen, Benutzernamen und Passwörter sind auf die eigenen Gegebenheiten anzupassen. Die Berechtigungen des Benutzers müssen zur Ausführung der Scripte geprüft und ggf. angepasst werden. Entprechende Linux Kentnisse sollten vorhanden sein. In Teilen berücksichtigt dieser Artikel das FHEM und Homebridge nicht zwingend auf dem selben System laufen. Die hier gezeigte Lösung kann für beide Varianten genutzt werden, FHEM und Homebridge auf dem gleichen System oder auf getrennten Systemen.&lt;br /&gt;
&lt;br /&gt;
== Umsetzung ==&lt;br /&gt;
&lt;br /&gt;
=== Status- und Kontroll-Dummy ===&lt;br /&gt;
&lt;br /&gt;
Es wird ein Dummy benötigt, welcher den Status des Homebridge-Dienstes anzeigt und über den dieser Dienst gesteuert werden kann. Das nötige Script um die Homebridge als Dienst zu starten wird weiter unten in diesem Artikel erstellt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
define SYS_Homebridge dummy&lt;br /&gt;
attr SYS_Homebridge devStateIcon .*on:general_an .*off:general_aus .*:audio_rec&lt;br /&gt;
attr SYS_Homebridge eventMap status:status start:start stop:stop restart:restart&lt;br /&gt;
attr SYS_Homebridge icon it_router&lt;br /&gt;
attr SYS_Homebridge room System&lt;br /&gt;
attr SYS_Homebridge userReadings OnStateChange:(start|stop|restart|status) {  system (&amp;quot;sudo service homebridge &amp;quot;.ReadingsVal($NAME,&amp;quot;state&amp;quot;,&amp;quot;restart&amp;quot;).&amp;quot; &amp;amp;&amp;quot; );;  }&lt;br /&gt;
attr SYS_Homebridge webCmd status:start:stop:restart&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Dummy wird durch setzen von &amp;quot;start&amp;quot;, &amp;quot;stop&amp;quot;, &amp;quot;restart&amp;quot; oder &amp;quot;status&amp;quot; jeweils das userReading ausführen und somit letztendlich den homebridge Dienst steuert.&lt;br /&gt;
&lt;br /&gt;
=== Start Script anlegen ===&lt;br /&gt;
Nun ist das Startscript für die Homebridge anzulegen. Mittels dem folgenden Befehl wird (wenn noch nicht vorhanden) das homebridge Script angelegt und im Editor geöffnet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Wenn die Homebridge nicht auf dem selben System läuft wie FHEM muss dieser Schritt auf dem Homebridge System ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Das nun folgende Script kann in die homebridge Datei die im Nano Editor geöffnet ist rein kopiert werden. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039;: die Variabeln &#039;&#039;homeBridgeUser&#039;&#039;, &#039;&#039;fhemHost&#039;&#039; und &#039;&#039;fhemHostTelnetPort&#039;&#039; sind ggf. auf die eigenen Gegebenheiten anzupassen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
### BEGIN INIT INFO&lt;br /&gt;
# Provides: homebridge&lt;br /&gt;
# Required-Start: $network $remote_fs $syslog&lt;br /&gt;
# Required-Stop: $remote_fs $syslog&lt;br /&gt;
# Default-Start: 2 3 4 5&lt;br /&gt;
# Default-Stop: 0 1 6&lt;br /&gt;
# Short-Description: Start daemon at boot time for homebridge&lt;br /&gt;
# Description: Enable service provided by daemon.&lt;br /&gt;
### END INIT INFO&lt;br /&gt;
export PATH=$PATH:/usr/local/bin&lt;br /&gt;
export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules&lt;br /&gt;
&lt;br /&gt;
PID=`pidof homebridge`&lt;br /&gt;
homeBridgeUser=&amp;quot;fhem&amp;quot;&lt;br /&gt;
fhemHost=127.0.0.1          #FHEM Server (Masterinstanz)&lt;br /&gt;
fhemHostTelnetPort=7072     #TelnetPort der FHEM Instanz&lt;br /&gt;
fhemDefine=&amp;quot;SYS_Homebridge&amp;quot;&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
start)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is already running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is already running&amp;quot;			&lt;br /&gt;
 #       perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine on&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        su - $homeBridgeUser -c &amp;quot;homebridge &amp;gt; /dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&amp;quot;&lt;br /&gt;
        echo &amp;quot;Homebridge starting&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge starting&amp;quot;	&lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine on&amp;quot;&lt;br /&gt;
        sleep 2&lt;br /&gt;
	$0 status&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
stop)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is not running&amp;quot;&lt;br /&gt;
        #perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine off&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        kill $PID&lt;br /&gt;
        echo &amp;quot;Homebridge stopping&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge stopping&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine off&amp;quot;&lt;br /&gt;
        sleep 2&lt;br /&gt;
	$0 status		&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
restart)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        $0 start&lt;br /&gt;
else&lt;br /&gt;
        $0 stop&lt;br /&gt;
        $0 start&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
status)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is running PID $PID&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge running as PID $PID&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is not running&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
*)&lt;br /&gt;
echo &amp;quot;Usage: $0 {start|stop|status|restart}&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
;;&lt;br /&gt;
esac&lt;br /&gt;
exit 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Script setzt in dem bereits angelegten Dummy ein Reading &#039;&#039;info&#039;&#039; in dem der Ausführungsstatus des Scripts wieder gegeben wird. Das Reading &#039;&#039;state&#039;&#039; wir auf on oder off gesetzt. &#039;&#039;On&#039;&#039; bedeutet das Homebridge gestartet ist, &#039;&#039;off&#039;&#039; das die Homebridge nicht ausgeführt wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Das Tutorial wird aktuell angepasst (08.02.2017) - weiter geht es in den nächsten Tagen....&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Start Script Autostart einrichten==&lt;br /&gt;
Autostart aktivieren:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo chmod 755 /etc/init.d/homebridge&lt;br /&gt;
&lt;br /&gt;
sudo update-rc.d homebridge defaults&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Homebridge Start per Konsole==&lt;br /&gt;
Nun kann man mit&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo service homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
bzw.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo /etc/init.d/homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
den Dienst starten.&lt;br /&gt;
Da in dem Script versucht wird, den Status für den Dummy &amp;quot;FHEM.Homebridge&amp;quot; zu setzen, gibt&#039;s erstmal eine Fehlermeldung - also am Besten gleich den Dummy anlegen, wie im nächsten Abschnitt beschrieben.&lt;br /&gt;
&lt;br /&gt;
== Homebridge Start per FHEM==&lt;br /&gt;
&lt;br /&gt;
== Homebridge Start Dummy einrichten==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
define FHEM.Homebridge dummy&lt;br /&gt;
attr FHEM.Homebridge event-on-change-reading state&lt;br /&gt;
attr FHEM.Homebridge room 9.03_Tech&lt;br /&gt;
attr FHEM.Homebridge webCmd status:start:stop:restart&lt;br /&gt;
attr FHEM.Homebridge devStateIcon .*on:general_an .*off:general_aus .*:audio_rec&lt;br /&gt;
attr FHEM.Homebridge eventMap status:status start:start stop:stop restart:restart&lt;br /&gt;
attr FHEM.Homebridge icon it_router&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Homebridge Start DOIF einrichten==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
define FHEM.Homebridge.DOIF DOIF ([FHEM.Homebridge] eq &amp;quot;start&amp;quot;) (set FHEM.Homebridge on, {system (&amp;quot;sudo /etc/init.d/homebridge start&amp;quot;)})\&lt;br /&gt;
DOELSEIF ([FHEM.Homebridge] eq &amp;quot;stop&amp;quot;) (set FHEM.Homebridge on, {system (&amp;quot;sudo /etc/init.d/homebridge stop&amp;quot;)})\&lt;br /&gt;
DOELSEIF ([FHEM.Homebridge] eq &amp;quot;restart&amp;quot;) (set FHEM.Homebridge on, {system (&amp;quot;sudo /etc/init.d/homebridge restart&amp;quot;)})\&lt;br /&gt;
DOELSEIF ([FHEM.Homebridge] eq &amp;quot;status&amp;quot;) (set FHEM.Homebridge on, {system (&amp;quot;sudo /etc/init.d/homebridge status&amp;quot;)})&lt;br /&gt;
attr FHEM.Homebridge.DOIF room 9.03_Tech&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Homebridge FHEM Zugriff auf Script gewähren==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/sudoers&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Beispiel Zeile&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel Datei:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# This file MUST be edited with the &#039;visudo&#039; command as root.&lt;br /&gt;
#&lt;br /&gt;
# Please consider adding local content in /etc/sudoers.d/ instead of&lt;br /&gt;
# directly modifying this file.&lt;br /&gt;
#&lt;br /&gt;
# See the man page for details on how to write a sudoers file.&lt;br /&gt;
#&lt;br /&gt;
Defaults	env_reset&lt;br /&gt;
Defaults	mail_badpass&lt;br /&gt;
Defaults	secure_path=&amp;quot;/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Host alias specification&lt;br /&gt;
&lt;br /&gt;
# User alias specification&lt;br /&gt;
&lt;br /&gt;
# Cmnd alias specification&lt;br /&gt;
&lt;br /&gt;
# User privilege specification&lt;br /&gt;
root	ALL=(ALL:ALL) ALL&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/opt/fhem/FHEM/backup.sh, /etc/init.d/homebridge&lt;br /&gt;
&lt;br /&gt;
# Members of the admin group may gain root privileges&lt;br /&gt;
%admin  ALL = (ALL) NOPASSWD: ALL&lt;br /&gt;
&lt;br /&gt;
# Allow members of group sudo to execute any command&lt;br /&gt;
%sudo	ALL=(ALL:ALL) ALL&lt;br /&gt;
&lt;br /&gt;
# See sudoers(5) for more information on &amp;quot;#include&amp;quot; directives:&lt;br /&gt;
&lt;br /&gt;
#includedir /etc/sudoers.d&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Svenson08</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19573</id>
		<title>Homebridge Start und Status in FHEM</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19573"/>
		<updated>2017-02-08T19:12:36Z</updated>

		<summary type="html">&lt;p&gt;Svenson08: /* Vorwort */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Artikel befindet sich noch im Aufbau.&lt;br /&gt;
Der Code ist noch nicht 100% getestet, es muss also noch mit Fehler gerechnet werden.&lt;br /&gt;
&lt;br /&gt;
Um nicht bei jeder Änderung, welche die Homebridge betrifft, diese über die Console manuell neustarten zu müssen zeigt diese Lösung wie dies bequem aus FHEMWEB erfolgen kann. In den nachfolgenden Abschnitten sind die einzelnen Schritte dazu erläutert.&lt;br /&gt;
&lt;br /&gt;
== Vorwort ==&lt;br /&gt;
Die im weitern genutzten Bezeichnungen von Dummys, Scriptdateinamen o.ä. können geändert werden. Die Änderungen müssen jedoch auch an allen entsprechenden Stellen vorgenommen werden.&lt;br /&gt;
Genannte IP Adressen, Benutzernamen und Passwörter sind auf die eigenen Gegebenheiten anzupassen. Die Berechtigungen des Benutzers müssen zur Ausführung der Scripte geprüft und ggf. angepasst werden. Entprechende Linux Kentnisse sollten vorhanden sein. In Teilen berücksichtigt dieser Artikel das FHEM und Homebridge nicht zwingend auf dem selben System laufen. Die hier gezeigte Lösung kann für beide Varianten genutzt werden, FHEM und Homebridge auf dem gleichen System oder auf getrennten Systemen.&lt;br /&gt;
&lt;br /&gt;
== Umsetzung ==&lt;br /&gt;
&lt;br /&gt;
=== Status- und Kontroll-Dummy ===&lt;br /&gt;
&lt;br /&gt;
Es wird ein Dummy benötigt, welcher den Status des Homebridge-Dienstes anzeigt und über den dieser Dienst gesteuert werden kann. Das nötige Script um die Homebridge als Dienst zu starten wird weiter unten in diesem Artikel erstellt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
define SYS_Homebridge dummy&lt;br /&gt;
attr SYS_Homebridge devStateIcon .*on:general_an .*off:general_aus .*:audio_rec&lt;br /&gt;
attr SYS_Homebridge eventMap status:status start:start stop:stop restart:restart&lt;br /&gt;
attr SYS_Homebridge icon it_router&lt;br /&gt;
attr SYS_Homebridge room System&lt;br /&gt;
attr SYS_Homebridge userReadings OnStateChange:(start|stop|restart|status) {  system (&amp;quot;sudo service homebridge &amp;quot;.ReadingsVal($NAME,&amp;quot;state&amp;quot;,&amp;quot;restart&amp;quot;).&amp;quot; &amp;amp;&amp;quot; );;  }&lt;br /&gt;
attr SYS_Homebridge webCmd status:start:stop:restart&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Dummy wird durch setzen von &amp;quot;start&amp;quot;, &amp;quot;stop&amp;quot;, &amp;quot;restart&amp;quot; oder &amp;quot;status&amp;quot; jeweils das userReading ausführen und somit letztendlich den homebridge Dienst steuert.&lt;br /&gt;
&lt;br /&gt;
=== Start Script anlegen ===&lt;br /&gt;
Nun ist das Startscript für die Homebridge anzulegen. Mittels dem folgenden Befehl wird (wenn noch nicht vorhanden) das homebridge Script angelegt und im Editor geöffnet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Wenn die Homebridge nicht auf dem selben System läuft wie FHEM muss dieser Schritt auf dem Homebridge System ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Das nun folgende Script kann in die homebridge Datei die im Nano Editor geöffnet ist rein kopiert werden. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039;: die Variabeln &#039;&#039;homeBridgeUser&#039;&#039;, &#039;&#039;fhemHost&#039;&#039; und &#039;&#039;fhemHostTelnetPort&#039;&#039; sind ggf. auf die eigenen Gegebenheiten anzupassen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
### BEGIN INIT INFO&lt;br /&gt;
# Provides: homebridge&lt;br /&gt;
# Required-Start: $network $remote_fs $syslog&lt;br /&gt;
# Required-Stop: $remote_fs $syslog&lt;br /&gt;
# Default-Start: 2 3 4 5&lt;br /&gt;
# Default-Stop: 0 1 6&lt;br /&gt;
# Short-Description: Start daemon at boot time for homebridge&lt;br /&gt;
# Description: Enable service provided by daemon.&lt;br /&gt;
### END INIT INFO&lt;br /&gt;
export PATH=$PATH:/usr/local/bin&lt;br /&gt;
export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules&lt;br /&gt;
&lt;br /&gt;
PID=`pidof homebridge`&lt;br /&gt;
homeBridgeUser=&amp;quot;fhem&amp;quot;&lt;br /&gt;
fhemHost=127.0.0.1          #FHEM Server (Masterinstanz)&lt;br /&gt;
fhemHostTelnetPort=7072     #TelnetPort der FHEM Instanz&lt;br /&gt;
fhemDefine=&amp;quot;SYS_Homebridge&amp;quot;&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
start)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is already running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is already running&amp;quot;			&lt;br /&gt;
 #       perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine on&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        su - $homeBridgeUser -c &amp;quot;homebridge &amp;gt; /dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&amp;quot;&lt;br /&gt;
        echo &amp;quot;Homebridge starting&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge starting&amp;quot;	&lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine on&amp;quot;&lt;br /&gt;
        sleep 2&lt;br /&gt;
	$0 status&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
stop)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is not running&amp;quot;&lt;br /&gt;
        #perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine off&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        kill $PID&lt;br /&gt;
        echo &amp;quot;Homebridge stopping&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge stopping&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine off&amp;quot;&lt;br /&gt;
        sleep 2&lt;br /&gt;
	$0 status		&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
restart)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        $0 start&lt;br /&gt;
else&lt;br /&gt;
        $0 stop&lt;br /&gt;
        $0 start&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
status)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is running PID $PID&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge running as PID $PID&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is not running&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
*)&lt;br /&gt;
echo &amp;quot;Usage: $0 {start|stop|status|restart}&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
;;&lt;br /&gt;
esac&lt;br /&gt;
exit 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Script setzt in dem bereits angelegten Dummy ein Reading &#039;&#039;info&#039;&#039; in dem der Ausführungsstatus des Scripts wieder gegeben wird. Das Reading &#039;&#039;state&#039;&#039; wir auf on oder off gesetzt. &#039;&#039;On&#039;&#039; bedeutet das Homebridge gestartet ist, &#039;&#039;off&#039;&#039; das die Homebridge nicht ausgeführt wird.&lt;br /&gt;
&lt;br /&gt;
== Start Script Autostart einrichten==&lt;br /&gt;
Autostart aktivieren:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo chmod 755 /etc/init.d/homebridge&lt;br /&gt;
&lt;br /&gt;
sudo update-rc.d homebridge defaults&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Homebridge Start per Konsole==&lt;br /&gt;
Nun kann man mit&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo service homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
bzw.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo /etc/init.d/homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
den Dienst starten.&lt;br /&gt;
Da in dem Script versucht wird, den Status für den Dummy &amp;quot;FHEM.Homebridge&amp;quot; zu setzen, gibt&#039;s erstmal eine Fehlermeldung - also am Besten gleich den Dummy anlegen, wie im nächsten Abschnitt beschrieben.&lt;br /&gt;
&lt;br /&gt;
== Homebridge Start per FHEM==&lt;br /&gt;
&lt;br /&gt;
== Homebridge Start Dummy einrichten==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
define FHEM.Homebridge dummy&lt;br /&gt;
attr FHEM.Homebridge event-on-change-reading state&lt;br /&gt;
attr FHEM.Homebridge room 9.03_Tech&lt;br /&gt;
attr FHEM.Homebridge webCmd status:start:stop:restart&lt;br /&gt;
attr FHEM.Homebridge devStateIcon .*on:general_an .*off:general_aus .*:audio_rec&lt;br /&gt;
attr FHEM.Homebridge eventMap status:status start:start stop:stop restart:restart&lt;br /&gt;
attr FHEM.Homebridge icon it_router&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Homebridge Start DOIF einrichten==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
define FHEM.Homebridge.DOIF DOIF ([FHEM.Homebridge] eq &amp;quot;start&amp;quot;) (set FHEM.Homebridge on, {system (&amp;quot;sudo /etc/init.d/homebridge start&amp;quot;)})\&lt;br /&gt;
DOELSEIF ([FHEM.Homebridge] eq &amp;quot;stop&amp;quot;) (set FHEM.Homebridge on, {system (&amp;quot;sudo /etc/init.d/homebridge stop&amp;quot;)})\&lt;br /&gt;
DOELSEIF ([FHEM.Homebridge] eq &amp;quot;restart&amp;quot;) (set FHEM.Homebridge on, {system (&amp;quot;sudo /etc/init.d/homebridge restart&amp;quot;)})\&lt;br /&gt;
DOELSEIF ([FHEM.Homebridge] eq &amp;quot;status&amp;quot;) (set FHEM.Homebridge on, {system (&amp;quot;sudo /etc/init.d/homebridge status&amp;quot;)})&lt;br /&gt;
attr FHEM.Homebridge.DOIF room 9.03_Tech&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Homebridge FHEM Zugriff auf Script gewähren==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/sudoers&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Beispiel Zeile&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel Datei:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# This file MUST be edited with the &#039;visudo&#039; command as root.&lt;br /&gt;
#&lt;br /&gt;
# Please consider adding local content in /etc/sudoers.d/ instead of&lt;br /&gt;
# directly modifying this file.&lt;br /&gt;
#&lt;br /&gt;
# See the man page for details on how to write a sudoers file.&lt;br /&gt;
#&lt;br /&gt;
Defaults	env_reset&lt;br /&gt;
Defaults	mail_badpass&lt;br /&gt;
Defaults	secure_path=&amp;quot;/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Host alias specification&lt;br /&gt;
&lt;br /&gt;
# User alias specification&lt;br /&gt;
&lt;br /&gt;
# Cmnd alias specification&lt;br /&gt;
&lt;br /&gt;
# User privilege specification&lt;br /&gt;
root	ALL=(ALL:ALL) ALL&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/opt/fhem/FHEM/backup.sh, /etc/init.d/homebridge&lt;br /&gt;
&lt;br /&gt;
# Members of the admin group may gain root privileges&lt;br /&gt;
%admin  ALL = (ALL) NOPASSWD: ALL&lt;br /&gt;
&lt;br /&gt;
# Allow members of group sudo to execute any command&lt;br /&gt;
%sudo	ALL=(ALL:ALL) ALL&lt;br /&gt;
&lt;br /&gt;
# See sudoers(5) for more information on &amp;quot;#include&amp;quot; directives:&lt;br /&gt;
&lt;br /&gt;
#includedir /etc/sudoers.d&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Svenson08</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19572</id>
		<title>Homebridge Start und Status in FHEM</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19572"/>
		<updated>2017-02-08T19:11:19Z</updated>

		<summary type="html">&lt;p&gt;Svenson08: /* Start Script befüllen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Artikel befindet sich noch im Aufbau.&lt;br /&gt;
Der Code ist noch nicht 100% getestet, es muss also noch mit Fehler gerechnet werden.&lt;br /&gt;
&lt;br /&gt;
Um nicht bei jeder Änderung, welche die Homebridge betrifft, diese über die Console manuell neustarten zu müssen zeigt diese Lösung wie dies bequem aus FHEMWEB erfolgen kann. In den nachfolgenden Abschnitten sind die einzelnen Schritte dazu erläutert.&lt;br /&gt;
&lt;br /&gt;
== Vorwort ==&lt;br /&gt;
Die im weitern genutzten Bezeichnungen von Dummys, Scriptdateinamen o.ä. können geändert werden. Die Änderungen müssen jedoch auch an allen entsprechenden Stellen vorgenommen werden.&lt;br /&gt;
Genannte IP Adressen, Benutzernamen und Passwörter sind auf die eigenen Gegebenheiten anzupassen. Die Berechtigungen des Benutzers müssen zur Ausführung der Scripte geprüft und ggf. angepasst werden. Entprechende Linux Kentnisse sollten vorhanden sein.&lt;br /&gt;
&lt;br /&gt;
== Umsetzung ==&lt;br /&gt;
&lt;br /&gt;
=== Status- und Kontroll-Dummy ===&lt;br /&gt;
&lt;br /&gt;
Es wird ein Dummy benötigt, welcher den Status des Homebridge-Dienstes anzeigt und über den dieser Dienst gesteuert werden kann. Das nötige Script um die Homebridge als Dienst zu starten wird weiter unten in diesem Artikel erstellt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
define SYS_Homebridge dummy&lt;br /&gt;
attr SYS_Homebridge devStateIcon .*on:general_an .*off:general_aus .*:audio_rec&lt;br /&gt;
attr SYS_Homebridge eventMap status:status start:start stop:stop restart:restart&lt;br /&gt;
attr SYS_Homebridge icon it_router&lt;br /&gt;
attr SYS_Homebridge room System&lt;br /&gt;
attr SYS_Homebridge userReadings OnStateChange:(start|stop|restart|status) {  system (&amp;quot;sudo service homebridge &amp;quot;.ReadingsVal($NAME,&amp;quot;state&amp;quot;,&amp;quot;restart&amp;quot;).&amp;quot; &amp;amp;&amp;quot; );;  }&lt;br /&gt;
attr SYS_Homebridge webCmd status:start:stop:restart&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Dummy wird durch setzen von &amp;quot;start&amp;quot;, &amp;quot;stop&amp;quot;, &amp;quot;restart&amp;quot; oder &amp;quot;status&amp;quot; jeweils das userReading ausführen und somit letztendlich den homebridge Dienst steuert.&lt;br /&gt;
&lt;br /&gt;
=== Start Script anlegen ===&lt;br /&gt;
Nun ist das Startscript für die Homebridge anzulegen. Mittels dem folgenden Befehl wird (wenn noch nicht vorhanden) das homebridge Script angelegt und im Editor geöffnet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Wenn die Homebridge nicht auf dem selben System läuft wie FHEM muss dieser Schritt auf dem Homebridge System ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Das nun folgende Script kann in die homebridge Datei die im Nano Editor geöffnet ist rein kopiert werden. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039;: die Variabeln &#039;&#039;homeBridgeUser&#039;&#039;, &#039;&#039;fhemHost&#039;&#039; und &#039;&#039;fhemHostTelnetPort&#039;&#039; sind ggf. auf die eigenen Gegebenheiten anzupassen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
### BEGIN INIT INFO&lt;br /&gt;
# Provides: homebridge&lt;br /&gt;
# Required-Start: $network $remote_fs $syslog&lt;br /&gt;
# Required-Stop: $remote_fs $syslog&lt;br /&gt;
# Default-Start: 2 3 4 5&lt;br /&gt;
# Default-Stop: 0 1 6&lt;br /&gt;
# Short-Description: Start daemon at boot time for homebridge&lt;br /&gt;
# Description: Enable service provided by daemon.&lt;br /&gt;
### END INIT INFO&lt;br /&gt;
export PATH=$PATH:/usr/local/bin&lt;br /&gt;
export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules&lt;br /&gt;
&lt;br /&gt;
PID=`pidof homebridge`&lt;br /&gt;
homeBridgeUser=&amp;quot;fhem&amp;quot;&lt;br /&gt;
fhemHost=127.0.0.1          #FHEM Server (Masterinstanz)&lt;br /&gt;
fhemHostTelnetPort=7072     #TelnetPort der FHEM Instanz&lt;br /&gt;
fhemDefine=&amp;quot;SYS_Homebridge&amp;quot;&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
start)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is already running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is already running&amp;quot;			&lt;br /&gt;
 #       perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine on&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        su - $homeBridgeUser -c &amp;quot;homebridge &amp;gt; /dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&amp;quot;&lt;br /&gt;
        echo &amp;quot;Homebridge starting&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge starting&amp;quot;	&lt;br /&gt;
		perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine on&amp;quot;&lt;br /&gt;
        sleep 2&lt;br /&gt;
	$0 status&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
stop)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is not running&amp;quot;&lt;br /&gt;
        #perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine off&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        kill $PID&lt;br /&gt;
        echo &amp;quot;Homebridge stopping&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge stopping&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine off&amp;quot;&lt;br /&gt;
        sleep 2&lt;br /&gt;
	$0 status		&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
restart)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        $0 start&lt;br /&gt;
else&lt;br /&gt;
        $0 stop&lt;br /&gt;
        $0 start&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
status)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is running PID $PID&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge running as PID $PID&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is not running&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
*)&lt;br /&gt;
echo &amp;quot;Usage: $0 {start|stop|status|restart}&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
;;&lt;br /&gt;
esac&lt;br /&gt;
exit 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Script setzt in dem bereits angelegten Dummy ein Reading &#039;&#039;info&#039;&#039; in dem der Ausführungsstatus des Scripts wieder gegeben wird. Das Reading &#039;&#039;state&#039;&#039; wir auf on oder off gesetzt. &#039;&#039;On&#039;&#039; bedeutet das Homebridge gestartet ist, &#039;&#039;off&#039;&#039; das die Homebridge nicht ausgeführt wird.&lt;br /&gt;
&lt;br /&gt;
== Start Script Autostart einrichten==&lt;br /&gt;
Autostart aktivieren:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo chmod 755 /etc/init.d/homebridge&lt;br /&gt;
&lt;br /&gt;
sudo update-rc.d homebridge defaults&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Homebridge Start per Konsole==&lt;br /&gt;
Nun kann man mit&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo service homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
bzw.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo /etc/init.d/homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
den Dienst starten.&lt;br /&gt;
Da in dem Script versucht wird, den Status für den Dummy &amp;quot;FHEM.Homebridge&amp;quot; zu setzen, gibt&#039;s erstmal eine Fehlermeldung - also am Besten gleich den Dummy anlegen, wie im nächsten Abschnitt beschrieben.&lt;br /&gt;
&lt;br /&gt;
== Homebridge Start per FHEM==&lt;br /&gt;
&lt;br /&gt;
== Homebridge Start Dummy einrichten==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
define FHEM.Homebridge dummy&lt;br /&gt;
attr FHEM.Homebridge event-on-change-reading state&lt;br /&gt;
attr FHEM.Homebridge room 9.03_Tech&lt;br /&gt;
attr FHEM.Homebridge webCmd status:start:stop:restart&lt;br /&gt;
attr FHEM.Homebridge devStateIcon .*on:general_an .*off:general_aus .*:audio_rec&lt;br /&gt;
attr FHEM.Homebridge eventMap status:status start:start stop:stop restart:restart&lt;br /&gt;
attr FHEM.Homebridge icon it_router&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Homebridge Start DOIF einrichten==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
define FHEM.Homebridge.DOIF DOIF ([FHEM.Homebridge] eq &amp;quot;start&amp;quot;) (set FHEM.Homebridge on, {system (&amp;quot;sudo /etc/init.d/homebridge start&amp;quot;)})\&lt;br /&gt;
DOELSEIF ([FHEM.Homebridge] eq &amp;quot;stop&amp;quot;) (set FHEM.Homebridge on, {system (&amp;quot;sudo /etc/init.d/homebridge stop&amp;quot;)})\&lt;br /&gt;
DOELSEIF ([FHEM.Homebridge] eq &amp;quot;restart&amp;quot;) (set FHEM.Homebridge on, {system (&amp;quot;sudo /etc/init.d/homebridge restart&amp;quot;)})\&lt;br /&gt;
DOELSEIF ([FHEM.Homebridge] eq &amp;quot;status&amp;quot;) (set FHEM.Homebridge on, {system (&amp;quot;sudo /etc/init.d/homebridge status&amp;quot;)})&lt;br /&gt;
attr FHEM.Homebridge.DOIF room 9.03_Tech&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Homebridge FHEM Zugriff auf Script gewähren==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/sudoers&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Beispiel Zeile&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel Datei:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# This file MUST be edited with the &#039;visudo&#039; command as root.&lt;br /&gt;
#&lt;br /&gt;
# Please consider adding local content in /etc/sudoers.d/ instead of&lt;br /&gt;
# directly modifying this file.&lt;br /&gt;
#&lt;br /&gt;
# See the man page for details on how to write a sudoers file.&lt;br /&gt;
#&lt;br /&gt;
Defaults	env_reset&lt;br /&gt;
Defaults	mail_badpass&lt;br /&gt;
Defaults	secure_path=&amp;quot;/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Host alias specification&lt;br /&gt;
&lt;br /&gt;
# User alias specification&lt;br /&gt;
&lt;br /&gt;
# Cmnd alias specification&lt;br /&gt;
&lt;br /&gt;
# User privilege specification&lt;br /&gt;
root	ALL=(ALL:ALL) ALL&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/opt/fhem/FHEM/backup.sh, /etc/init.d/homebridge&lt;br /&gt;
&lt;br /&gt;
# Members of the admin group may gain root privileges&lt;br /&gt;
%admin  ALL = (ALL) NOPASSWD: ALL&lt;br /&gt;
&lt;br /&gt;
# Allow members of group sudo to execute any command&lt;br /&gt;
%sudo	ALL=(ALL:ALL) ALL&lt;br /&gt;
&lt;br /&gt;
# See sudoers(5) for more information on &amp;quot;#include&amp;quot; directives:&lt;br /&gt;
&lt;br /&gt;
#includedir /etc/sudoers.d&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Svenson08</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19571</id>
		<title>Homebridge Start und Status in FHEM</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19571"/>
		<updated>2017-02-08T19:05:38Z</updated>

		<summary type="html">&lt;p&gt;Svenson08: /* Start Script anlegen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Artikel befindet sich noch im Aufbau.&lt;br /&gt;
Der Code ist noch nicht 100% getestet, es muss also noch mit Fehler gerechnet werden.&lt;br /&gt;
&lt;br /&gt;
Um nicht bei jeder Änderung, welche die Homebridge betrifft, diese über die Console manuell neustarten zu müssen zeigt diese Lösung wie dies bequem aus FHEMWEB erfolgen kann. In den nachfolgenden Abschnitten sind die einzelnen Schritte dazu erläutert.&lt;br /&gt;
&lt;br /&gt;
== Vorwort ==&lt;br /&gt;
Die im weitern genutzten Bezeichnungen von Dummys, Scriptdateinamen o.ä. können geändert werden. Die Änderungen müssen jedoch auch an allen entsprechenden Stellen vorgenommen werden.&lt;br /&gt;
Genannte IP Adressen, Benutzernamen und Passwörter sind auf die eigenen Gegebenheiten anzupassen. Die Berechtigungen des Benutzers müssen zur Ausführung der Scripte geprüft und ggf. angepasst werden. Entprechende Linux Kentnisse sollten vorhanden sein.&lt;br /&gt;
&lt;br /&gt;
== Umsetzung ==&lt;br /&gt;
&lt;br /&gt;
=== Status- und Kontroll-Dummy ===&lt;br /&gt;
&lt;br /&gt;
Es wird ein Dummy benötigt, welcher den Status des Homebridge-Dienstes anzeigt und über den dieser Dienst gesteuert werden kann. Das nötige Script um die Homebridge als Dienst zu starten wird weiter unten in diesem Artikel erstellt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
define SYS_Homebridge dummy&lt;br /&gt;
attr SYS_Homebridge devStateIcon .*on:general_an .*off:general_aus .*:audio_rec&lt;br /&gt;
attr SYS_Homebridge eventMap status:status start:start stop:stop restart:restart&lt;br /&gt;
attr SYS_Homebridge icon it_router&lt;br /&gt;
attr SYS_Homebridge room System&lt;br /&gt;
attr SYS_Homebridge userReadings OnStateChange:(start|stop|restart|status) {  system (&amp;quot;sudo service homebridge &amp;quot;.ReadingsVal($NAME,&amp;quot;state&amp;quot;,&amp;quot;restart&amp;quot;).&amp;quot; &amp;amp;&amp;quot; );;  }&lt;br /&gt;
attr SYS_Homebridge webCmd status:start:stop:restart&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Dummy wird durch setzen von &amp;quot;start&amp;quot;, &amp;quot;stop&amp;quot;, &amp;quot;restart&amp;quot; oder &amp;quot;status&amp;quot; jeweils das userReading ausführen und somit letztendlich den homebridge Dienst steuert.&lt;br /&gt;
&lt;br /&gt;
=== Start Script anlegen ===&lt;br /&gt;
Nun ist das Startscript für die Homebridge anzulegen. Mittels dem folgenden Befehl wird (wenn noch nicht vorhanden) das homebridge Script angelegt und im Editor geöffnet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Wenn die Homebridge nicht auf dem selben System läuft wie FHEM muss dieser Schritt auf dem Homebridge System ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
== Start Script befüllen ==&lt;br /&gt;
Achtung: Damit das Script auch seine Arbeit richtig erledigen kann, muss zwingend der User unter dem Homebridge arbeiten soll eingetragen werden.&lt;br /&gt;
Diese Stelle ist durch &amp;quot;User hier&amp;quot; gekennzeichnet. Die Anführungszeichen werden an der Stelle nicht benötigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
### BEGIN INIT INFO&lt;br /&gt;
# Provides: homebridge&lt;br /&gt;
# Required-Start: $network $remote_fs $syslog&lt;br /&gt;
# Required-Stop: $remote_fs $syslog&lt;br /&gt;
# Default-Start: 2 3 4 5&lt;br /&gt;
# Default-Stop: 0 1 6&lt;br /&gt;
# Short-Description: Start daemon at boot time for homebridge&lt;br /&gt;
# Description: Enable service provided by daemon.&lt;br /&gt;
### END INIT INFO&lt;br /&gt;
export PATH=$PATH:/usr/local/bin&lt;br /&gt;
export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules&lt;br /&gt;
PID=`pidof homebridge`&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
start)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is already running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;setreading FHEM.Homebridge.Status info Homebridge is already running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;set FHEM.Homebridge.Status on&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;set FHEM.Homebridge off&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        su - &amp;quot;User hier&amp;quot; -c &amp;quot;homebridge &amp;gt; /dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&amp;quot;&lt;br /&gt;
        echo &amp;quot;Homebridge starting&amp;quot;&lt;br /&gt;
        sleep 2&lt;br /&gt;
	$0 status&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
stop)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;setreading FHEM.Homebridge.Status info Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;set FHEM.Homebridge.Status off&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;set FHEM.Homebridge off&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        kill $PID&lt;br /&gt;
        echo &amp;quot;Homebridge closed&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;setreading FHEM.Homebridge.Status info Homebridge closed&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;set FHEM.Homebridge.Status off&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;set FHEM.Homebridge off&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
restart)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        $0 start&lt;br /&gt;
else&lt;br /&gt;
        $0 stop&lt;br /&gt;
        $0 start&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
status)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is running PID $PID&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;setreading FHEM.Homebridge.Status info Homebridge running as PID $PID&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;set FHEM.Homebridge.Status on&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;set FHEM.Homebridge off&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;setreading FHEM.Homebridge.Status info Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;set FHEM.Homebridge.Status off&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;set FHEM.Homebridge off&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
*)&lt;br /&gt;
echo &amp;quot;Usage: $0 {start|stop|status|restart}&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
;;&lt;br /&gt;
esac&lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Start Script Autostart einrichten==&lt;br /&gt;
Autostart aktivieren:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo chmod 755 /etc/init.d/homebridge&lt;br /&gt;
&lt;br /&gt;
sudo update-rc.d homebridge defaults&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Homebridge Start per Konsole==&lt;br /&gt;
Nun kann man mit&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo service homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
bzw.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo /etc/init.d/homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
den Dienst starten.&lt;br /&gt;
Da in dem Script versucht wird, den Status für den Dummy &amp;quot;FHEM.Homebridge&amp;quot; zu setzen, gibt&#039;s erstmal eine Fehlermeldung - also am Besten gleich den Dummy anlegen, wie im nächsten Abschnitt beschrieben.&lt;br /&gt;
&lt;br /&gt;
== Homebridge Start per FHEM==&lt;br /&gt;
&lt;br /&gt;
== Homebridge Start Dummy einrichten==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
define FHEM.Homebridge dummy&lt;br /&gt;
attr FHEM.Homebridge event-on-change-reading state&lt;br /&gt;
attr FHEM.Homebridge room 9.03_Tech&lt;br /&gt;
attr FHEM.Homebridge webCmd status:start:stop:restart&lt;br /&gt;
attr FHEM.Homebridge devStateIcon .*on:general_an .*off:general_aus .*:audio_rec&lt;br /&gt;
attr FHEM.Homebridge eventMap status:status start:start stop:stop restart:restart&lt;br /&gt;
attr FHEM.Homebridge icon it_router&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Homebridge Start DOIF einrichten==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
define FHEM.Homebridge.DOIF DOIF ([FHEM.Homebridge] eq &amp;quot;start&amp;quot;) (set FHEM.Homebridge on, {system (&amp;quot;sudo /etc/init.d/homebridge start&amp;quot;)})\&lt;br /&gt;
DOELSEIF ([FHEM.Homebridge] eq &amp;quot;stop&amp;quot;) (set FHEM.Homebridge on, {system (&amp;quot;sudo /etc/init.d/homebridge stop&amp;quot;)})\&lt;br /&gt;
DOELSEIF ([FHEM.Homebridge] eq &amp;quot;restart&amp;quot;) (set FHEM.Homebridge on, {system (&amp;quot;sudo /etc/init.d/homebridge restart&amp;quot;)})\&lt;br /&gt;
DOELSEIF ([FHEM.Homebridge] eq &amp;quot;status&amp;quot;) (set FHEM.Homebridge on, {system (&amp;quot;sudo /etc/init.d/homebridge status&amp;quot;)})&lt;br /&gt;
attr FHEM.Homebridge.DOIF room 9.03_Tech&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Homebridge FHEM Zugriff auf Script gewähren==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/sudoers&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Beispiel Zeile&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel Datei:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# This file MUST be edited with the &#039;visudo&#039; command as root.&lt;br /&gt;
#&lt;br /&gt;
# Please consider adding local content in /etc/sudoers.d/ instead of&lt;br /&gt;
# directly modifying this file.&lt;br /&gt;
#&lt;br /&gt;
# See the man page for details on how to write a sudoers file.&lt;br /&gt;
#&lt;br /&gt;
Defaults	env_reset&lt;br /&gt;
Defaults	mail_badpass&lt;br /&gt;
Defaults	secure_path=&amp;quot;/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Host alias specification&lt;br /&gt;
&lt;br /&gt;
# User alias specification&lt;br /&gt;
&lt;br /&gt;
# Cmnd alias specification&lt;br /&gt;
&lt;br /&gt;
# User privilege specification&lt;br /&gt;
root	ALL=(ALL:ALL) ALL&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/opt/fhem/FHEM/backup.sh, /etc/init.d/homebridge&lt;br /&gt;
&lt;br /&gt;
# Members of the admin group may gain root privileges&lt;br /&gt;
%admin  ALL = (ALL) NOPASSWD: ALL&lt;br /&gt;
&lt;br /&gt;
# Allow members of group sudo to execute any command&lt;br /&gt;
%sudo	ALL=(ALL:ALL) ALL&lt;br /&gt;
&lt;br /&gt;
# See sudoers(5) for more information on &amp;quot;#include&amp;quot; directives:&lt;br /&gt;
&lt;br /&gt;
#includedir /etc/sudoers.d&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Svenson08</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19570</id>
		<title>Homebridge Start und Status in FHEM</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19570"/>
		<updated>2017-02-08T19:02:52Z</updated>

		<summary type="html">&lt;p&gt;Svenson08: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Artikel befindet sich noch im Aufbau.&lt;br /&gt;
Der Code ist noch nicht 100% getestet, es muss also noch mit Fehler gerechnet werden.&lt;br /&gt;
&lt;br /&gt;
Um nicht bei jeder Änderung, welche die Homebridge betrifft, diese über die Console manuell neustarten zu müssen zeigt diese Lösung wie dies bequem aus FHEMWEB erfolgen kann. In den nachfolgenden Abschnitten sind die einzelnen Schritte dazu erläutert.&lt;br /&gt;
&lt;br /&gt;
== Vorwort ==&lt;br /&gt;
Die im weitern genutzten Bezeichnungen von Dummys, Scriptdateinamen o.ä. können geändert werden. Die Änderungen müssen jedoch auch an allen entsprechenden Stellen vorgenommen werden.&lt;br /&gt;
Genannte IP Adressen, Benutzernamen und Passwörter sind auf die eigenen Gegebenheiten anzupassen. Die Berechtigungen des Benutzers müssen zur Ausführung der Scripte geprüft und ggf. angepasst werden. Entprechende Linux Kentnisse sollten vorhanden sein.&lt;br /&gt;
&lt;br /&gt;
== Umsetzung ==&lt;br /&gt;
&lt;br /&gt;
=== Status- und Kontroll-Dummy ===&lt;br /&gt;
&lt;br /&gt;
Es wird ein Dummy benötigt, welcher den Status des Homebridge-Dienstes anzeigt und über den dieser Dienst gesteuert werden kann. Das nötige Script um die Homebridge als Dienst zu starten wird weiter unten in diesem Artikel erstellt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
define SYS_Homebridge dummy&lt;br /&gt;
attr SYS_Homebridge devStateIcon .*on:general_an .*off:general_aus .*:audio_rec&lt;br /&gt;
attr SYS_Homebridge eventMap status:status start:start stop:stop restart:restart&lt;br /&gt;
attr SYS_Homebridge icon it_router&lt;br /&gt;
attr SYS_Homebridge room System&lt;br /&gt;
attr SYS_Homebridge userReadings OnStateChange:(start|stop|restart|status) {  system (&amp;quot;sudo service homebridge &amp;quot;.ReadingsVal($NAME,&amp;quot;state&amp;quot;,&amp;quot;restart&amp;quot;).&amp;quot; &amp;amp;&amp;quot; );;  }&lt;br /&gt;
attr SYS_Homebridge webCmd status:start:stop:restart&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Dummy wird durch setzen von &amp;quot;start&amp;quot;, &amp;quot;stop&amp;quot;, &amp;quot;restart&amp;quot; oder &amp;quot;status&amp;quot; jeweils das userReading ausführen und somit letztendlich den homebridge Dienst steuert.&lt;br /&gt;
&lt;br /&gt;
== Start Script anlegen ==&lt;br /&gt;
2. Script im Verzeichnis /etc/init.d/ erstellen&lt;br /&gt;
&lt;br /&gt;
Wenn die Datei noch nicht angelegt ist auf der Console mit folgenden Befehl erstellen.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Start Script befüllen ==&lt;br /&gt;
Achtung: Damit das Script auch seine Arbeit richtig erledigen kann, muss zwingend der User unter dem Homebridge arbeiten soll eingetragen werden.&lt;br /&gt;
Diese Stelle ist durch &amp;quot;User hier&amp;quot; gekennzeichnet. Die Anführungszeichen werden an der Stelle nicht benötigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
### BEGIN INIT INFO&lt;br /&gt;
# Provides: homebridge&lt;br /&gt;
# Required-Start: $network $remote_fs $syslog&lt;br /&gt;
# Required-Stop: $remote_fs $syslog&lt;br /&gt;
# Default-Start: 2 3 4 5&lt;br /&gt;
# Default-Stop: 0 1 6&lt;br /&gt;
# Short-Description: Start daemon at boot time for homebridge&lt;br /&gt;
# Description: Enable service provided by daemon.&lt;br /&gt;
### END INIT INFO&lt;br /&gt;
export PATH=$PATH:/usr/local/bin&lt;br /&gt;
export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules&lt;br /&gt;
PID=`pidof homebridge`&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
start)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is already running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;setreading FHEM.Homebridge.Status info Homebridge is already running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;set FHEM.Homebridge.Status on&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;set FHEM.Homebridge off&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        su - &amp;quot;User hier&amp;quot; -c &amp;quot;homebridge &amp;gt; /dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&amp;quot;&lt;br /&gt;
        echo &amp;quot;Homebridge starting&amp;quot;&lt;br /&gt;
        sleep 2&lt;br /&gt;
	$0 status&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
stop)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;setreading FHEM.Homebridge.Status info Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;set FHEM.Homebridge.Status off&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;set FHEM.Homebridge off&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        kill $PID&lt;br /&gt;
        echo &amp;quot;Homebridge closed&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;setreading FHEM.Homebridge.Status info Homebridge closed&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;set FHEM.Homebridge.Status off&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;set FHEM.Homebridge off&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
restart)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        $0 start&lt;br /&gt;
else&lt;br /&gt;
        $0 stop&lt;br /&gt;
        $0 start&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
status)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is running PID $PID&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;setreading FHEM.Homebridge.Status info Homebridge running as PID $PID&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;set FHEM.Homebridge.Status on&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;set FHEM.Homebridge off&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;setreading FHEM.Homebridge.Status info Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;set FHEM.Homebridge.Status off&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;set FHEM.Homebridge off&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
*)&lt;br /&gt;
echo &amp;quot;Usage: $0 {start|stop|status|restart}&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
;;&lt;br /&gt;
esac&lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Start Script Autostart einrichten==&lt;br /&gt;
Autostart aktivieren:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo chmod 755 /etc/init.d/homebridge&lt;br /&gt;
&lt;br /&gt;
sudo update-rc.d homebridge defaults&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Homebridge Start per Konsole==&lt;br /&gt;
Nun kann man mit&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo service homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
bzw.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo /etc/init.d/homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
den Dienst starten.&lt;br /&gt;
Da in dem Script versucht wird, den Status für den Dummy &amp;quot;FHEM.Homebridge&amp;quot; zu setzen, gibt&#039;s erstmal eine Fehlermeldung - also am Besten gleich den Dummy anlegen, wie im nächsten Abschnitt beschrieben.&lt;br /&gt;
&lt;br /&gt;
== Homebridge Start per FHEM==&lt;br /&gt;
&lt;br /&gt;
== Homebridge Start Dummy einrichten==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
define FHEM.Homebridge dummy&lt;br /&gt;
attr FHEM.Homebridge event-on-change-reading state&lt;br /&gt;
attr FHEM.Homebridge room 9.03_Tech&lt;br /&gt;
attr FHEM.Homebridge webCmd status:start:stop:restart&lt;br /&gt;
attr FHEM.Homebridge devStateIcon .*on:general_an .*off:general_aus .*:audio_rec&lt;br /&gt;
attr FHEM.Homebridge eventMap status:status start:start stop:stop restart:restart&lt;br /&gt;
attr FHEM.Homebridge icon it_router&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Homebridge Start DOIF einrichten==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
define FHEM.Homebridge.DOIF DOIF ([FHEM.Homebridge] eq &amp;quot;start&amp;quot;) (set FHEM.Homebridge on, {system (&amp;quot;sudo /etc/init.d/homebridge start&amp;quot;)})\&lt;br /&gt;
DOELSEIF ([FHEM.Homebridge] eq &amp;quot;stop&amp;quot;) (set FHEM.Homebridge on, {system (&amp;quot;sudo /etc/init.d/homebridge stop&amp;quot;)})\&lt;br /&gt;
DOELSEIF ([FHEM.Homebridge] eq &amp;quot;restart&amp;quot;) (set FHEM.Homebridge on, {system (&amp;quot;sudo /etc/init.d/homebridge restart&amp;quot;)})\&lt;br /&gt;
DOELSEIF ([FHEM.Homebridge] eq &amp;quot;status&amp;quot;) (set FHEM.Homebridge on, {system (&amp;quot;sudo /etc/init.d/homebridge status&amp;quot;)})&lt;br /&gt;
attr FHEM.Homebridge.DOIF room 9.03_Tech&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Homebridge FHEM Zugriff auf Script gewähren==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/sudoers&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Beispiel Zeile&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel Datei:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# This file MUST be edited with the &#039;visudo&#039; command as root.&lt;br /&gt;
#&lt;br /&gt;
# Please consider adding local content in /etc/sudoers.d/ instead of&lt;br /&gt;
# directly modifying this file.&lt;br /&gt;
#&lt;br /&gt;
# See the man page for details on how to write a sudoers file.&lt;br /&gt;
#&lt;br /&gt;
Defaults	env_reset&lt;br /&gt;
Defaults	mail_badpass&lt;br /&gt;
Defaults	secure_path=&amp;quot;/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Host alias specification&lt;br /&gt;
&lt;br /&gt;
# User alias specification&lt;br /&gt;
&lt;br /&gt;
# Cmnd alias specification&lt;br /&gt;
&lt;br /&gt;
# User privilege specification&lt;br /&gt;
root	ALL=(ALL:ALL) ALL&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/opt/fhem/FHEM/backup.sh, /etc/init.d/homebridge&lt;br /&gt;
&lt;br /&gt;
# Members of the admin group may gain root privileges&lt;br /&gt;
%admin  ALL = (ALL) NOPASSWD: ALL&lt;br /&gt;
&lt;br /&gt;
# Allow members of group sudo to execute any command&lt;br /&gt;
%sudo	ALL=(ALL:ALL) ALL&lt;br /&gt;
&lt;br /&gt;
# See sudoers(5) for more information on &amp;quot;#include&amp;quot; directives:&lt;br /&gt;
&lt;br /&gt;
#includedir /etc/sudoers.d&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Svenson08</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19516</id>
		<title>Homebridge Start und Status in FHEM</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19516"/>
		<updated>2017-02-07T18:23:40Z</updated>

		<summary type="html">&lt;p&gt;Svenson08: Textuelle Änderungen für bessere Verständlichkeit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Artikel befindet sich noch im Aufbau.&lt;br /&gt;
Der Code ist noch nicht 100% getestet, es muss also noch mit Fehler gerechnet werden.&lt;br /&gt;
&lt;br /&gt;
Um nicht bei jeder Änderung, welche die Homebridge betrifft, über die Console den Dienst manuell neustarten zu müssen kann dies bequem aus FHEMWEB erfolgen. In den nachfolgenden Abschnitten sind die einzelnen Schritte dazu erläutert.&lt;br /&gt;
Über die hier gezeigte Lösung ist es ist leider noch nicht möglich zu erkennen ob die Homebridge läuft, oder ob ein Problem aufgetreten ist. Es ist daher keine Abbildung des aktuellen Homebridge Status, sondern lediglich die Möglicheit die Homebride aus FHEM heraus zu starten, stopen oder neuzustarten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Status Dummy anlegen ==&lt;br /&gt;
Es wird ein Dummy benötigt, welcher den Status des Homebridge Status durch den Dienst gesetzt bekommt. Das dafür nötige Script wird weiter unten in diesem Artikel erstellt.&lt;br /&gt;
Der Name des Dummys kann natürlich beliebig geändert werden, nur muss diese Änderung auch an entsprechenden Stellen wie z.B. dem Start Skript geändert werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
define FHEM.Homebridge.Status dummy&lt;br /&gt;
attr FHEM.Homebridge.Status room 9.03_Tech&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Start Script anlegen ==&lt;br /&gt;
2. Script im Verzeichnis /etc/init.d/ erstellen&lt;br /&gt;
&lt;br /&gt;
Wenn die Datei noch nicht angelegt ist auf der Console mit folgenden Befehl erstellen.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Start Script befüllen ==&lt;br /&gt;
Achtung: Damit das Script auch seine Arbeit richtig erledigen kann, muss zwingend der User unter dem Homebridge arbeiten soll eingetragen werden.&lt;br /&gt;
Diese Stelle ist durch &amp;quot;User hier&amp;quot; gekennzeichnet. Die Anführungszeichen werden an der Stelle nicht benötigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
### BEGIN INIT INFO&lt;br /&gt;
# Provides: homebridge&lt;br /&gt;
# Required-Start: $network $remote_fs $syslog&lt;br /&gt;
# Required-Stop: $remote_fs $syslog&lt;br /&gt;
# Default-Start: 2 3 4 5&lt;br /&gt;
# Default-Stop: 0 1 6&lt;br /&gt;
# Short-Description: Start daemon at boot time for homebridge&lt;br /&gt;
# Description: Enable service provided by daemon.&lt;br /&gt;
### END INIT INFO&lt;br /&gt;
export PATH=$PATH:/usr/local/bin&lt;br /&gt;
export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules&lt;br /&gt;
PID=`pidof homebridge`&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
start)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is already running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;setreading FHEM.Homebridge.Status info Homebridge is already running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;set FHEM.Homebridge.Status on&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;set FHEM.Homebridge off&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        su - &amp;quot;User hier&amp;quot; -c &amp;quot;homebridge &amp;gt; /dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&amp;quot;&lt;br /&gt;
        echo &amp;quot;Homebridge starting&amp;quot;&lt;br /&gt;
        sleep 2&lt;br /&gt;
	$0 status&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
stop)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;setreading FHEM.Homebridge.Status info Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;set FHEM.Homebridge.Status off&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;set FHEM.Homebridge off&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        kill $PID&lt;br /&gt;
        echo &amp;quot;Homebridge closed&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;setreading FHEM.Homebridge.Status info Homebridge closed&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;set FHEM.Homebridge.Status off&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;set FHEM.Homebridge off&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
restart)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        $0 start&lt;br /&gt;
else&lt;br /&gt;
        $0 stop&lt;br /&gt;
        $0 start&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
status)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is running PID $PID&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;setreading FHEM.Homebridge.Status info Homebridge running as PID $PID&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;set FHEM.Homebridge.Status on&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;set FHEM.Homebridge off&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;setreading FHEM.Homebridge.Status info Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;set FHEM.Homebridge.Status off&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;set FHEM.Homebridge off&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
*)&lt;br /&gt;
echo &amp;quot;Usage: $0 {start|stop|status|restart}&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
;;&lt;br /&gt;
esac&lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Start Script Autostart einrichten==&lt;br /&gt;
Autostart aktivieren:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo chmod 755 /etc/init.d/homebridge&lt;br /&gt;
&lt;br /&gt;
sudo update-rc.d homebridge defaults&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Homebridge Start per Konsole==&lt;br /&gt;
Nun kann man mit&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo service homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
bzw.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo /etc/init.d/homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
den Dienst starten.&lt;br /&gt;
Da in dem Script versucht wird, den Status für den Dummy &amp;quot;FHEM.Homebridge&amp;quot; zu setzen, gibt&#039;s erstmal eine Fehlermeldung - also am Besten gleich den Dummy anlegen, wie im nächsten Abschnitt beschrieben.&lt;br /&gt;
&lt;br /&gt;
== Homebridge Start per FHEM==&lt;br /&gt;
&lt;br /&gt;
== Homebridge Start Dummy einrichten==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
define FHEM.Homebridge dummy&lt;br /&gt;
attr FHEM.Homebridge event-on-change-reading state&lt;br /&gt;
attr FHEM.Homebridge room 9.03_Tech&lt;br /&gt;
attr FHEM.Homebridge webCmd status:start:stop:restart&lt;br /&gt;
attr FHEM.Homebridge devStateIcon .*on:general_an .*off:general_aus .*:audio_rec&lt;br /&gt;
attr FHEM.Homebridge eventMap status:status start:start stop:stop restart:restart&lt;br /&gt;
attr FHEM.Homebridge icon it_router&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Homebridge Start DOIF einrichten==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
define FHEM.Homebridge.DOIF DOIF ([FHEM.Homebridge] eq &amp;quot;start&amp;quot;) (set FHEM.Homebridge on, {system (&amp;quot;sudo /etc/init.d/homebridge start&amp;quot;)})\&lt;br /&gt;
DOELSEIF ([FHEM.Homebridge] eq &amp;quot;stop&amp;quot;) (set FHEM.Homebridge on, {system (&amp;quot;sudo /etc/init.d/homebridge stop&amp;quot;)})\&lt;br /&gt;
DOELSEIF ([FHEM.Homebridge] eq &amp;quot;restart&amp;quot;) (set FHEM.Homebridge on, {system (&amp;quot;sudo /etc/init.d/homebridge restart&amp;quot;)})\&lt;br /&gt;
DOELSEIF ([FHEM.Homebridge] eq &amp;quot;status&amp;quot;) (set FHEM.Homebridge on, {system (&amp;quot;sudo /etc/init.d/homebridge status&amp;quot;)})&lt;br /&gt;
attr FHEM.Homebridge.DOIF room 9.03_Tech&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Homebridge FHEM Zugriff auf Script gewähren==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/sudoers&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Beispiel Zeile&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel Datei:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# This file MUST be edited with the &#039;visudo&#039; command as root.&lt;br /&gt;
#&lt;br /&gt;
# Please consider adding local content in /etc/sudoers.d/ instead of&lt;br /&gt;
# directly modifying this file.&lt;br /&gt;
#&lt;br /&gt;
# See the man page for details on how to write a sudoers file.&lt;br /&gt;
#&lt;br /&gt;
Defaults	env_reset&lt;br /&gt;
Defaults	mail_badpass&lt;br /&gt;
Defaults	secure_path=&amp;quot;/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Host alias specification&lt;br /&gt;
&lt;br /&gt;
# User alias specification&lt;br /&gt;
&lt;br /&gt;
# Cmnd alias specification&lt;br /&gt;
&lt;br /&gt;
# User privilege specification&lt;br /&gt;
root	ALL=(ALL:ALL) ALL&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/opt/fhem/FHEM/backup.sh, /etc/init.d/homebridge&lt;br /&gt;
&lt;br /&gt;
# Members of the admin group may gain root privileges&lt;br /&gt;
%admin  ALL = (ALL) NOPASSWD: ALL&lt;br /&gt;
&lt;br /&gt;
# Allow members of group sudo to execute any command&lt;br /&gt;
%sudo	ALL=(ALL:ALL) ALL&lt;br /&gt;
&lt;br /&gt;
# See sudoers(5) for more information on &amp;quot;#include&amp;quot; directives:&lt;br /&gt;
&lt;br /&gt;
#includedir /etc/sudoers.d&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Svenson08</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19512</id>
		<title>Homebridge Start und Status in FHEM</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19512"/>
		<updated>2017-02-07T17:35:07Z</updated>

		<summary type="html">&lt;p&gt;Svenson08: /* Homebridge Start Dummy einrichten */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Artikel befindet sich noch im Aufbau.&lt;br /&gt;
Der Code ist noch nicht 100% getestet, es muss also noch mit Fehler gerechnet werden.&lt;br /&gt;
&lt;br /&gt;
Achtung: Die Code Zeilen sind direkt der FHEM Config Datei entnommen.&lt;br /&gt;
&lt;br /&gt;
Ich war es leid bei jeder Änderung die Homebridge betrifft immer wieder auf die Console zu müssen um den Dienst neu zustarten.&lt;br /&gt;
Hier aus ist dann das folgenden entstanden.&lt;br /&gt;
Was noch nicht geht ist die Erkennung wenn Homebridge abgeschmiert ist.&lt;br /&gt;
Dies wird nach möglichleit zu einem späterem Zeitpunkt umgesetzt.&lt;br /&gt;
&lt;br /&gt;
Grundlage ist das Script von meintechblog.de für das Auto Backup sowie das Startscript im Artikel Homebridge einrichten&lt;br /&gt;
&lt;br /&gt;
== Status Dummy anlegen ==&lt;br /&gt;
1. Anlegen einen Dummies um den Status in FHEM zu sehen:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
define FHEM.Homebridge.Status dummy&lt;br /&gt;
attr FHEM.Homebridge.Status room 9.03_Tech&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Start Script anlegen ==&lt;br /&gt;
2. Script im Verzeichnis /etc/init.d/ erstellen&lt;br /&gt;
&lt;br /&gt;
Wenn die Datei noch nicht angelegt ist auf der Console mit folgenden Befehl erstellen.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Start Script befüllen ==&lt;br /&gt;
Achtung: Damit das Script auch seine Arbeit richtig erledigen kann, muss zwingend der User unter dem Homebridge arbeiten soll eingetragen werden.&lt;br /&gt;
Diese Stelle ist durch &amp;quot;User hier&amp;quot; gekennzeichnet. Die Anführungszeichen werden an der Stelle nicht benötigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
### BEGIN INIT INFO&lt;br /&gt;
# Provides: homebridge&lt;br /&gt;
# Required-Start: $network $remote_fs $syslog&lt;br /&gt;
# Required-Stop: $remote_fs $syslog&lt;br /&gt;
# Default-Start: 2 3 4 5&lt;br /&gt;
# Default-Stop: 0 1 6&lt;br /&gt;
# Short-Description: Start daemon at boot time for homebridge&lt;br /&gt;
# Description: Enable service provided by daemon.&lt;br /&gt;
### END INIT INFO&lt;br /&gt;
export PATH=$PATH:/usr/local/bin&lt;br /&gt;
export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules&lt;br /&gt;
PID=`pidof homebridge`&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
start)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is already running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;setreading FHEM.Homebridge.Status info Homebridge is already running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;set FHEM.Homebridge.Status on&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;set FHEM.Homebridge off&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        su - &amp;quot;User hier&amp;quot; -c &amp;quot;homebridge &amp;gt; /dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&amp;quot;&lt;br /&gt;
        echo &amp;quot;Homebridge starting&amp;quot;&lt;br /&gt;
        sleep 2&lt;br /&gt;
	$0 status&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
stop)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;setreading FHEM.Homebridge.Status info Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;set FHEM.Homebridge.Status off&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;set FHEM.Homebridge off&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        kill $PID&lt;br /&gt;
        echo &amp;quot;Homebridge closed&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;setreading FHEM.Homebridge.Status info Homebridge closed&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;set FHEM.Homebridge.Status off&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;set FHEM.Homebridge off&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
restart)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        $0 start&lt;br /&gt;
else&lt;br /&gt;
        $0 stop&lt;br /&gt;
        $0 start&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
status)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is running PID $PID&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;setreading FHEM.Homebridge.Status info Homebridge running as PID $PID&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;set FHEM.Homebridge.Status on&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;set FHEM.Homebridge off&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;setreading FHEM.Homebridge.Status info Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;set FHEM.Homebridge.Status off&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;set FHEM.Homebridge off&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
*)&lt;br /&gt;
echo &amp;quot;Usage: $0 {start|stop|status|restart}&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
;;&lt;br /&gt;
esac&lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Start Script Autostart einrichten==&lt;br /&gt;
Autostart aktivieren:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo chmod 755 /etc/init.d/homebridge&lt;br /&gt;
&lt;br /&gt;
sudo update-rc.d homebridge defaults&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Homebridge Start per Konsole==&lt;br /&gt;
Nun kann man mit&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo service homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
bzw.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo /etc/init.d/homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
den Dienst starten.&lt;br /&gt;
Da in dem Script versucht wird, den Status für den Dummy &amp;quot;FHEM.Homebridge&amp;quot; zu setzen, gibt&#039;s erstmal eine Fehlermeldung - also am Besten gleich den Dummy anlegen, wie im nächsten Abschnitt beschrieben.&lt;br /&gt;
&lt;br /&gt;
== Homebridge Start per FHEM==&lt;br /&gt;
&lt;br /&gt;
== Homebridge Start Dummy einrichten==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
define FHEM.Homebridge dummy&lt;br /&gt;
attr FHEM.Homebridge event-on-change-reading state&lt;br /&gt;
attr FHEM.Homebridge room 9.03_Tech&lt;br /&gt;
attr FHEM.Homebridge webCmd status:start:stop:restart&lt;br /&gt;
attr FHEM.Homebridge devStateIcon .*on:general_an .*off:general_aus .*:audio_rec&lt;br /&gt;
attr FHEM.Homebridge eventMap status:status start:start stop:stop restart:restart&lt;br /&gt;
attr FHEM.Homebridge icon it_router&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Homebridge Start DOIF einrichten==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
define FHEM.Homebridge.DOIF DOIF ([FHEM.Homebridge] eq &amp;quot;start&amp;quot;) (set FHEM.Homebridge on, {system (&amp;quot;sudo /etc/init.d/homebridge start&amp;quot;)})\&lt;br /&gt;
DOELSEIF ([FHEM.Homebridge] eq &amp;quot;stop&amp;quot;) (set FHEM.Homebridge on, {system (&amp;quot;sudo /etc/init.d/homebridge stop&amp;quot;)})\&lt;br /&gt;
DOELSEIF ([FHEM.Homebridge] eq &amp;quot;restart&amp;quot;) (set FHEM.Homebridge on, {system (&amp;quot;sudo /etc/init.d/homebridge restart&amp;quot;)})\&lt;br /&gt;
DOELSEIF ([FHEM.Homebridge] eq &amp;quot;status&amp;quot;) (set FHEM.Homebridge on, {system (&amp;quot;sudo /etc/init.d/homebridge status&amp;quot;)})&lt;br /&gt;
attr FHEM.Homebridge.DOIF room 9.03_Tech&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Homebridge FHEM Zugriff auf Script gewähren==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/sudoers&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Beispiel Zeile&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel Datei:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# This file MUST be edited with the &#039;visudo&#039; command as root.&lt;br /&gt;
#&lt;br /&gt;
# Please consider adding local content in /etc/sudoers.d/ instead of&lt;br /&gt;
# directly modifying this file.&lt;br /&gt;
#&lt;br /&gt;
# See the man page for details on how to write a sudoers file.&lt;br /&gt;
#&lt;br /&gt;
Defaults	env_reset&lt;br /&gt;
Defaults	mail_badpass&lt;br /&gt;
Defaults	secure_path=&amp;quot;/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Host alias specification&lt;br /&gt;
&lt;br /&gt;
# User alias specification&lt;br /&gt;
&lt;br /&gt;
# Cmnd alias specification&lt;br /&gt;
&lt;br /&gt;
# User privilege specification&lt;br /&gt;
root	ALL=(ALL:ALL) ALL&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/opt/fhem/FHEM/backup.sh, /etc/init.d/homebridge&lt;br /&gt;
&lt;br /&gt;
# Members of the admin group may gain root privileges&lt;br /&gt;
%admin  ALL = (ALL) NOPASSWD: ALL&lt;br /&gt;
&lt;br /&gt;
# Allow members of group sudo to execute any command&lt;br /&gt;
%sudo	ALL=(ALL:ALL) ALL&lt;br /&gt;
&lt;br /&gt;
# See sudoers(5) for more information on &amp;quot;#include&amp;quot; directives:&lt;br /&gt;
&lt;br /&gt;
#includedir /etc/sudoers.d&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Svenson08</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19511</id>
		<title>Homebridge Start und Status in FHEM</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Homebridge_Start_und_Status_in_FHEM&amp;diff=19511"/>
		<updated>2017-02-07T17:34:54Z</updated>

		<summary type="html">&lt;p&gt;Svenson08: Homebridge Start Dummy - Feintuning in der Darstellung unter FHEMWeb - Erleichtert es etwas für Anfänger&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Artikel befindet sich noch im Aufbau.&lt;br /&gt;
Der Code ist noch nicht 100% getestet, es muss also noch mit Fehler gerechnet werden.&lt;br /&gt;
&lt;br /&gt;
Achtung: Die Code Zeilen sind direkt der FHEM Config Datei entnommen.&lt;br /&gt;
&lt;br /&gt;
Ich war es leid bei jeder Änderung die Homebridge betrifft immer wieder auf die Console zu müssen um den Dienst neu zustarten.&lt;br /&gt;
Hier aus ist dann das folgenden entstanden.&lt;br /&gt;
Was noch nicht geht ist die Erkennung wenn Homebridge abgeschmiert ist.&lt;br /&gt;
Dies wird nach möglichleit zu einem späterem Zeitpunkt umgesetzt.&lt;br /&gt;
&lt;br /&gt;
Grundlage ist das Script von meintechblog.de für das Auto Backup sowie das Startscript im Artikel Homebridge einrichten&lt;br /&gt;
&lt;br /&gt;
== Status Dummy anlegen ==&lt;br /&gt;
1. Anlegen einen Dummies um den Status in FHEM zu sehen:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
define FHEM.Homebridge.Status dummy&lt;br /&gt;
attr FHEM.Homebridge.Status room 9.03_Tech&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Start Script anlegen ==&lt;br /&gt;
2. Script im Verzeichnis /etc/init.d/ erstellen&lt;br /&gt;
&lt;br /&gt;
Wenn die Datei noch nicht angelegt ist auf der Console mit folgenden Befehl erstellen.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Start Script befüllen ==&lt;br /&gt;
Achtung: Damit das Script auch seine Arbeit richtig erledigen kann, muss zwingend der User unter dem Homebridge arbeiten soll eingetragen werden.&lt;br /&gt;
Diese Stelle ist durch &amp;quot;User hier&amp;quot; gekennzeichnet. Die Anführungszeichen werden an der Stelle nicht benötigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
### BEGIN INIT INFO&lt;br /&gt;
# Provides: homebridge&lt;br /&gt;
# Required-Start: $network $remote_fs $syslog&lt;br /&gt;
# Required-Stop: $remote_fs $syslog&lt;br /&gt;
# Default-Start: 2 3 4 5&lt;br /&gt;
# Default-Stop: 0 1 6&lt;br /&gt;
# Short-Description: Start daemon at boot time for homebridge&lt;br /&gt;
# Description: Enable service provided by daemon.&lt;br /&gt;
### END INIT INFO&lt;br /&gt;
export PATH=$PATH:/usr/local/bin&lt;br /&gt;
export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules&lt;br /&gt;
PID=`pidof homebridge`&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
start)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is already running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;setreading FHEM.Homebridge.Status info Homebridge is already running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;set FHEM.Homebridge.Status on&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;set FHEM.Homebridge off&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        su - &amp;quot;User hier&amp;quot; -c &amp;quot;homebridge &amp;gt; /dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&amp;quot;&lt;br /&gt;
        echo &amp;quot;Homebridge starting&amp;quot;&lt;br /&gt;
        sleep 2&lt;br /&gt;
	$0 status&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
stop)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;setreading FHEM.Homebridge.Status info Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;set FHEM.Homebridge.Status off&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;set FHEM.Homebridge off&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        kill $PID&lt;br /&gt;
        echo &amp;quot;Homebridge closed&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;setreading FHEM.Homebridge.Status info Homebridge closed&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;set FHEM.Homebridge.Status off&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;set FHEM.Homebridge off&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
restart)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        $0 start&lt;br /&gt;
else&lt;br /&gt;
        $0 stop&lt;br /&gt;
        $0 start&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
status)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is running PID $PID&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;setreading FHEM.Homebridge.Status info Homebridge running as PID $PID&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;set FHEM.Homebridge.Status on&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;set FHEM.Homebridge off&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;setreading FHEM.Homebridge.Status info Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;set FHEM.Homebridge.Status off&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl 7072 &amp;quot;set FHEM.Homebridge off&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
*)&lt;br /&gt;
echo &amp;quot;Usage: $0 {start|stop|status|restart}&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
;;&lt;br /&gt;
esac&lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Start Script Autostart einrichten==&lt;br /&gt;
Autostart aktivieren:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo chmod 755 /etc/init.d/homebridge&lt;br /&gt;
&lt;br /&gt;
sudo update-rc.d homebridge defaults&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Homebridge Start per Konsole==&lt;br /&gt;
Nun kann man mit&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo service homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
bzw.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo /etc/init.d/homebridge start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
den Dienst starten.&lt;br /&gt;
Da in dem Script versucht wird, den Status für den Dummy &amp;quot;FHEM.Homebridge&amp;quot; zu setzen, gibt&#039;s erstmal eine Fehlermeldung - also am Besten gleich den Dummy anlegen, wie im nächsten Abschnitt beschrieben.&lt;br /&gt;
&lt;br /&gt;
== Homebridge Start per FHEM==&lt;br /&gt;
&lt;br /&gt;
== Homebridge Start Dummy einrichten==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
define FHEM.Homebridge dummy&lt;br /&gt;
attr FHEM.Homebridge event-on-change-reading state&lt;br /&gt;
attr FHEM.Homebridge room 9.03_Tech&lt;br /&gt;
attr FHEM.Homebridge webCmd status:start:stop:restart&lt;br /&gt;
attr FHEM.Homebridge devStateIcon .*on:general_an .*off:general_aus .*:audio_rec&lt;br /&gt;
attr FHEM.Homebridge eventMap status:status start:start stop:stop restart:restart&lt;br /&gt;
attr FHEM.Homebridge iconit_router&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Homebridge Start DOIF einrichten==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
define FHEM.Homebridge.DOIF DOIF ([FHEM.Homebridge] eq &amp;quot;start&amp;quot;) (set FHEM.Homebridge on, {system (&amp;quot;sudo /etc/init.d/homebridge start&amp;quot;)})\&lt;br /&gt;
DOELSEIF ([FHEM.Homebridge] eq &amp;quot;stop&amp;quot;) (set FHEM.Homebridge on, {system (&amp;quot;sudo /etc/init.d/homebridge stop&amp;quot;)})\&lt;br /&gt;
DOELSEIF ([FHEM.Homebridge] eq &amp;quot;restart&amp;quot;) (set FHEM.Homebridge on, {system (&amp;quot;sudo /etc/init.d/homebridge restart&amp;quot;)})\&lt;br /&gt;
DOELSEIF ([FHEM.Homebridge] eq &amp;quot;status&amp;quot;) (set FHEM.Homebridge on, {system (&amp;quot;sudo /etc/init.d/homebridge status&amp;quot;)})&lt;br /&gt;
attr FHEM.Homebridge.DOIF room 9.03_Tech&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Homebridge FHEM Zugriff auf Script gewähren==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/sudoers&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Beispiel Zeile&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/etc/init.d/homebridge&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel Datei:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# This file MUST be edited with the &#039;visudo&#039; command as root.&lt;br /&gt;
#&lt;br /&gt;
# Please consider adding local content in /etc/sudoers.d/ instead of&lt;br /&gt;
# directly modifying this file.&lt;br /&gt;
#&lt;br /&gt;
# See the man page for details on how to write a sudoers file.&lt;br /&gt;
#&lt;br /&gt;
Defaults	env_reset&lt;br /&gt;
Defaults	mail_badpass&lt;br /&gt;
Defaults	secure_path=&amp;quot;/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Host alias specification&lt;br /&gt;
&lt;br /&gt;
# User alias specification&lt;br /&gt;
&lt;br /&gt;
# Cmnd alias specification&lt;br /&gt;
&lt;br /&gt;
# User privilege specification&lt;br /&gt;
root	ALL=(ALL:ALL) ALL&lt;br /&gt;
fhem ALL=(ALL) NOPASSWD:/opt/fhem/FHEM/backup.sh, /etc/init.d/homebridge&lt;br /&gt;
&lt;br /&gt;
# Members of the admin group may gain root privileges&lt;br /&gt;
%admin  ALL = (ALL) NOPASSWD: ALL&lt;br /&gt;
&lt;br /&gt;
# Allow members of group sudo to execute any command&lt;br /&gt;
%sudo	ALL=(ALL:ALL) ALL&lt;br /&gt;
&lt;br /&gt;
# See sudoers(5) for more information on &amp;quot;#include&amp;quot; directives:&lt;br /&gt;
&lt;br /&gt;
#includedir /etc/sudoers.d&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Svenson08</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Diskussion:Homebridge_Start_und_Status_in_FHEM&amp;diff=19489</id>
		<title>Diskussion:Homebridge Start und Status in FHEM</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Diskussion:Homebridge_Start_und_Status_in_FHEM&amp;diff=19489"/>
		<updated>2017-02-07T05:15:06Z</updated>

		<summary type="html">&lt;p&gt;Svenson08: Die Seite wurde neu angelegt: „Ich hätte ein angepasstes Startscript. Dabei lässt sich dieses durch die Parameter im oberen Abschnitt für Anfänger ggf. besser auf die eigenen Bedürfniss…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ich hätte ein angepasstes Startscript. Dabei lässt sich dieses durch die Parameter im oberen Abschnitt für Anfänger ggf. besser auf die eigenen Bedürfnisse anpassen. &lt;br /&gt;
Falls die Homebridge nicht auf dem selben System wie FHEM läuft, funktioniert die Rückmeldung des Status an FHEM auch in diesem Szenario.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Leider gibts im Kommentar keine Syntax-Formatierung, daher wird das hier so zerstückelt angezeigt&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
### BEGIN INIT INFO&lt;br /&gt;
# Provides: homebridge&lt;br /&gt;
# Required-Start: $network $remote_fs $syslog&lt;br /&gt;
# Required-Stop: $remote_fs $syslog&lt;br /&gt;
# Default-Start: 2 3 4 5&lt;br /&gt;
# Default-Stop: 0 1 6&lt;br /&gt;
# Short-Description: Start daemon at boot time for homebridge&lt;br /&gt;
# Description: Enable service provided by daemon.&lt;br /&gt;
### END INIT INFO&lt;br /&gt;
export PATH=$PATH:/usr/local/bin&lt;br /&gt;
export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules&lt;br /&gt;
&lt;br /&gt;
PID=`pidof homebridge`&lt;br /&gt;
homeBridgeUser=&amp;quot;User hier&amp;quot;&lt;br /&gt;
fhemHost=127.0.0.1       #FHEM Server (Masterinstanz)&lt;br /&gt;
fhemHostTelnetPort=7072           #TelnetPort der FHEM Instanz&lt;br /&gt;
fhemDefine=&amp;quot;FHEM.Homebridge.Status&amp;quot;&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
start)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is already running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is already running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine on&amp;quot;&lt;br /&gt;
&lt;br /&gt;
else&lt;br /&gt;
        su - $homeBridgeUser -c &amp;quot;homebridge &amp;gt; /dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&amp;quot;&lt;br /&gt;
        echo &amp;quot;Homebridge starting&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge starting&amp;quot;		&lt;br /&gt;
        sleep 2&lt;br /&gt;
	$0 status&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
stop)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine off&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        kill $PID&lt;br /&gt;
        echo &amp;quot;Homebridge closed&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge closed&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine off&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
restart)&lt;br /&gt;
if ! ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        $0 start&lt;br /&gt;
else&lt;br /&gt;
        $0 stop&lt;br /&gt;
        $0 start&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
status)&lt;br /&gt;
if ps -p $PID &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
        echo &amp;quot;Homebridge is running PID $PID&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge running as PID $PID&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine on&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        echo &amp;quot;Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;setreading $fhemDefine info Homebridge is not running&amp;quot;&lt;br /&gt;
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort &amp;quot;set $fhemDefine off&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
;;&lt;br /&gt;
*)&lt;br /&gt;
echo &amp;quot;Usage: $0 {start|stop|status|restart}&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
;;&lt;br /&gt;
esac&lt;br /&gt;
exit 0&lt;/div&gt;</summary>
		<author><name>Svenson08</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=MYSENSORS&amp;diff=15267</id>
		<title>MYSENSORS</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=MYSENSORS&amp;diff=15267"/>
		<updated>2016-05-01T17:34:37Z</updated>

		<summary type="html">&lt;p&gt;Svenson08: Im Define fehlte der Modulname&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=Stellt als Gateway die Verbindung zu einem MySensors Netzwerk her&lt;br /&gt;
|ModType=d&lt;br /&gt;
|ModForumArea=Sonstige Systeme&lt;br /&gt;
|ModTechName=00_MYSENSORS.pm&lt;br /&gt;
|ModOwner=ntruchsess ({{Link2FU|677|Forum}}/[[Benutzer Diskussion:Ntruchsess|Wiki]]) }}&lt;br /&gt;
Das Modul [[MYSENSORS]] fungiert als [[Interface|Verbindung]] zwischen Fhem und einem [[MySensors]] Netzwerk und repräsentiert ein  &#039;&#039;&#039;&#039;&#039;MySensors Gateway&#039;&#039;&#039;&#039;&#039;. Die durch das Modul [[MYSENSORS_DEVICE]] repräsentierten &#039;&#039;&#039;&#039;&#039;MySensors Sensor Nodes&#039;&#039;&#039;&#039;&#039; bzw. &#039;&#039;&#039;&#039;&#039;MySensors Sensoren&#039;&#039;&#039;&#039;&#039; werden im Folgenden der Einfachheit halber kurz als &#039;&#039;Node&#039;&#039; bezeichnet.&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen ==&lt;br /&gt;
An das Fhem-System muss ein &lt;br /&gt;
* [http://www.mysensors.org/build/serial_gateway serielles] oder ein&lt;br /&gt;
* [http://www.mysensors.org/build/ethernet_gateway Ethernet] oder ein&lt;br /&gt;
* [http://www.mysensors.org/build/esp8266_gateway WiFi]&lt;br /&gt;
Gateway angeschlossen sein.&lt;br /&gt;
&lt;br /&gt;
== Anwendung ==&lt;br /&gt;
In den folgenden Beispielen wird mit &#039;&#039;meinMSG&#039;&#039; das definierte &#039;&#039;&#039;M&#039;&#039;&#039;y&#039;&#039;&#039;S&#039;&#039;&#039;ensors&#039;&#039;&#039;G&#039;&#039;&#039;ateway bezeichnet.&lt;br /&gt;
&lt;br /&gt;
=== Define ===&lt;br /&gt;
Das MySensors Gateway wird angelegt mit&lt;br /&gt;
:&amp;lt;code&amp;gt;define &#039;&#039;&#039;meinMSG&#039;&#039;&#039; MYSENSORS /dev/ttyUSB1@115200&amp;lt;/code&amp;gt;&lt;br /&gt;
für ein serielles Gateway bzw.&lt;br /&gt;
:&amp;lt;code&amp;gt;define &#039;&#039;&#039;meinMSG&#039;&#039;&#039; MYSENSORS ip:port&amp;lt;/code&amp;gt;&lt;br /&gt;
für ein Ethernet Gateway.&lt;br /&gt;
&lt;br /&gt;
=== Attribute ===&lt;br /&gt;
Durch Setzen des Attributs&lt;br /&gt;
:&amp;lt;code&amp;gt;attr &#039;&#039;&#039;meinMSG&#039;&#039;&#039; autocreate&amp;lt;/code&amp;gt;&lt;br /&gt;
werden neue &#039;&#039;Nodes&#039;&#039; bei Eintreffen einer neuen &#039;&#039;presentation-message&#039;&#039; automatisch angelegt.&lt;br /&gt;
&lt;br /&gt;
== Anwendungsbeispiele ==&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://www.mysensors.org MySensors.org]&lt;br /&gt;
* Forenthema, aus dem die {{Link2Forum|Topic=26807|LinkText=Integration von MySensors in FHEM}} entstanden ist&lt;br /&gt;
* {{Link2Forum|Topic=28198|LinkText=Ankündigung}} der MySensors Module&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:IP Components]]&lt;br /&gt;
[[Kategorie:Other Components]]&lt;/div&gt;</summary>
		<author><name>Svenson08</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Event-on-change-reading&amp;diff=14917</id>
		<title>Event-on-change-reading</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Event-on-change-reading&amp;diff=14917"/>
		<updated>2016-04-01T05:48:16Z</updated>

		<summary type="html">&lt;p&gt;Svenson08: /* Syntax */ Angabe des optionalen Threshold fehlte&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SEITENTITEL:event-on-change-reading}}  &amp;lt;!-- da richtige Schreibweise kleinen Anfangsbuchstaben hat --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Infobox Attribut sinnvoll? --&amp;gt;&lt;br /&gt;
{{Baustelle}}&lt;br /&gt;
Mit dem Attribut [[event-on-change-reading]] kann für Readings eines Gerätes festgelegt werden, dass nur bei einer Wertänderung ein Event (und damit in der Regel auch ein Log-Eintrag) erzeugt werden soll. Damit stellt das Attribut eine Möglichkeit zur Verfügung, die Menge von Log-Einträgen zu reduzieren.&lt;br /&gt;
&lt;br /&gt;
Wird &#039;&#039;event-on-change-reading&#039;&#039; für ein einzelnes Reading gesetzt, werden zunächst alle übrigen Readings nicht mehr protokolliert, erzeugen also keine Events mehr.&lt;br /&gt;
&lt;br /&gt;
== Syntax ==&lt;br /&gt;
Das &#039;&#039;event-on-change-reading&#039;&#039; Attribut wird in der folgenden Weise spezifiziert:&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;attr &amp;lt;device&amp;gt; event-on-change-reading reading1[:threshold][,reading2[:threshold]...n]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Die zu berücksichtigenden Readings sind als durch Komma getrennte Werte anzugeben, können aber auch über reguläre Ausdrücke zusammengefasst werden.&lt;br /&gt;
&lt;br /&gt;
== Wechselwirkungen == &lt;br /&gt;
Dieses Attribut steht in Wechselwirkung mit den Attributen [[event-on-update-reading]] und [[event-min-interval]], bitte also unbedingt auch deren Beschreibung berücksichtigen!&lt;br /&gt;
&lt;br /&gt;
Sind bei einem Device weder &#039;&#039;event-on-change-reading&#039;&#039; noch &#039;&#039;event-on-update-reading&#039;&#039; spezifiziert, werden für alle Readings sowohl bei Änderung als auch bei der Aktualisierung (mit dem gleichen Wert) Events erzeugt. Sobald jedoch eines der beiden Attribute gesetzt ist, müssen alle Readings, die protokolliert werden sollen bei (mindestens) einem der Attribute berücksichtigt sein.&lt;br /&gt;
&lt;br /&gt;
Ist für ein Reading sowohl &#039;&#039;event-on-change-reading&#039;&#039; als auch &#039;&#039;event-on-update-reading&#039;&#039; spezifiziert, wird bei jeder Aktualisierung des Readings ein Event erzeugt, das &#039;&#039;event-on-change&#039;&#039; wird für dieses Reading also außer Kraft gesetzt bzw. &amp;quot;überstimmt&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Eine Zusammenfassung aus {{Link2Forum|Topic=26694|Message=196955|LinkText=diesem Forenbeitrag}}:&lt;br /&gt;
;Update + Min-Interval &lt;br /&gt;
:ein Event wird erzeugt, wenn der selbe Wert, der bereits im Reading steht, nochmal reingeschrieben wird &#039;&#039;&#039;und&#039;&#039;&#039; mindestens &#039;&#039;min-interval&#039;&#039; Sekunden seit dem letzten Event vergangen sind&lt;br /&gt;
;Change&lt;br /&gt;
:ein Event wird erzeugt, wenn der neue Wert wirklich abweichend vom alten Wert ist &#039;&#039;&#039;oder&#039;&#039;&#039; mindestens &#039;&#039;min-interval&#039;&#039; Sekunden seit dem letzten Event vergangen sind.&lt;br /&gt;
&lt;br /&gt;
In der Regel ist es sinnvoll, &#039;&#039;event-on-change-reading&#039;&#039; mit &#039;&#039;min-interval&#039;&#039; zu kombinieren, &#039;&#039;min-interval&#039;&#039; deshalb, damit von Zeit zu Zeit Einträge in das Logfile geschrieben werden (findet FHEM zu wenige Ereignisse pro betrachteter Zeitspanne, bleibt das Diagramm leer oder wird nur teilweise gezeichnet (Plotabriss)).&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
Um alle Readings eines Gerätes nur bei Änderungen zu protokollieren, sollte das Attribut folgendermaßen gesetzt werden:&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;attr &amp;lt;device&amp;gt; event-on-change-reading .*&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
*[[event-on-update-reading]]&lt;br /&gt;
*[[event-min-interval]]&lt;br /&gt;
*[[event-aggregator]]&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* Benutzungstipps (&#039;&#039;Best Practice&#039;&#039;) für das Attribut in {{Link2Forum|Topic=36522|LinkText=diesem Forenthread}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Attribut (allgemeingültig)]]&lt;/div&gt;</summary>
		<author><name>Svenson08</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=FHEM_Tablet_UI&amp;diff=14709</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=14709"/>
		<updated>2016-03-16T18:46:09Z</updated>

		<summary type="html">&lt;p&gt;Svenson08: /* Widgets LABEL */&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:&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;))&lt;br /&gt;
|&#039;lines&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-uaxis&lt;br /&gt;
|name of the axis to be used (&#039;primary&#039; or &#039;secondary&#039;) or or array of axis&#039; to be used if more than one graph shall be displayed. The &#039;primary&#039; axis is labelled on the left side, the &#039;secondary&#039; axis is labelled on the right side&lt;br /&gt;
|&#039;primary&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-legend&lt;br /&gt;
|caption of the graph (used in the legend and at the cursor) or an array of legend texts if more than one graph shall be displayed.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-minvalue&lt;br /&gt;
|min Y value to Show or an array of values for dynamic minY for primary axis. A value of &#039;auto&#039; means that the value is calculated from the data displayed dynamically&lt;br /&gt;
|10&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-minvalue_sec&lt;br /&gt;
|min Y value to Show or an array of values for dynamic minY for secondary axis. A value of &#039;auto&#039; means that the value is calculated from the data displayed dynamically&lt;br /&gt;
|&#039;auto&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-maxvalue&lt;br /&gt;
|max Y value to Show or an array of values for dynamic maxY for primary axis. A value of &#039;auto&#039; means that the value is calculated from the data displayed dynamically&lt;br /&gt;
|30&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-maxvalue_sec&lt;br /&gt;
|max Y value to Show or an array of values for dynamic maxY for secondary axis. A value of &#039;auto&#039; means that the value is calculated from the data displayed dynamically&lt;br /&gt;
|&#039;auto&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-yticks&lt;br /&gt;
|value distance between Y tick lines (related to primary axis). A value of &#039;auto&#039; means that the value is calculated from the data displayed dynamically.&lt;br /&gt;
|&#039;auto&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-xticks&lt;br /&gt;
|time range between each X tick lines (in minutes). A value of &#039;auto&#039; means that the value is calculated from the data displayed dynamically&lt;br /&gt;
|&#039;auto&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-daysago_start&lt;br /&gt;
|number of days back from now for the start of the plot (0 means the plot starts from today 0:00). Additionally the x-axis start value can be set here unsing standard data formats like (&#039;2013-10-23&#039;), the time portion of the string is only used when &amp;lt;code&amp;gt;data-nofulldays&amp;lt;/code&amp;gt; is &#039;true&#039;.&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-daysago_end&lt;br /&gt;
|number of days back from now for the end of the plot (-1 means the plot ends today 24:00). Additionally the x-axis end value can be set here unsing standard data formats like (&#039;2013-10-23&#039;), the time portion of the string is only used when &amp;lt;code&amp;gt;data-nofulldays&amp;lt;/code&amp;gt; is &#039;true&#039;.&lt;br /&gt;
|-1&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-nofulldays&lt;br /&gt;
|switch to activate/deactivate rounding of the xaxis start and end values to full days (&#039;true&#039; or &#039;false&#039;)&lt;br /&gt;
|&#039;false&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-ytext&lt;br /&gt;
|text to be shown besides the primary y axis.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-ytext_sec&lt;br /&gt;
|text to be shown besides the secondary y axis.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-yunit&lt;br /&gt;
|unit of the value to show beside of each Y ticks for primary y axis.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-crosshair&lt;br /&gt;
|switch to activate/deactivate the crosshair cursor (&#039;true&#039; or &#039;false&#039;)&lt;br /&gt;
|&#039;false&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-cursorgroup&lt;br /&gt;
|number to define coupling of the crosshair cursor. The cursors of all charts having the same number are coupled and move together.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-scrollgroup&lt;br /&gt;
|number to define coupling of the scrolling (shift and zoom). All charts having the same number are scrolled (shifted and zoomed) together.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-showlegend&lt;br /&gt;
|switch to activate/deactivate the initial display of the legend window (&#039;true&#039; or &#039;false&#039;)&lt;br /&gt;
|&#039;false&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-yunit_sec&lt;br /&gt;
|unit of the value to show beside of each Y ticks for secondary y axis.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-width&lt;br /&gt;
|fixed size for width (in&amp;amp;nbsp;% or px)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-height&lt;br /&gt;
|fixed size for height (in&amp;amp;nbsp;% or px)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |class&lt;br /&gt;
|fullsize, noticks, nobuttons&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;data-logfile&amp;lt;/code&amp;gt; can be omitted in this case the default value &amp;quot;-&amp;quot; will be used. This means that the current logfile is going to be used.&lt;br /&gt;
&lt;br /&gt;
There are several buttons that control the dynamic behaviour of the chart. The &amp;lt;-, -&amp;gt;, + and - buttons shift and zoom the displayed data. The &amp;quot;legend&amp;quot; and &amp;quot;cursor&amp;quot; buttons are switching on and off the display of the legend window and the crosshair cursor respectively.&lt;br /&gt;
&lt;br /&gt;
When the legend window is displayed, a click on the legend text shows/hides the respective graph. The legend window can be dragged to other positions on desktop browsers (currently not yet working for iOS and Android).&lt;br /&gt;
&lt;br /&gt;
The crosshair cursor currently only works dynamically on desktop browsers. On iOS and Android you have to tap on the screen to set the cursor to a new position.&lt;br /&gt;
&lt;br /&gt;
There is a number of css styles that control the visible appearance of the chart. The following classes are supported:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!CSS class name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
!.chart-background&lt;br /&gt;
|Color etc. for the chart background&lt;br /&gt;
|-&lt;br /&gt;
!.text.axes&lt;br /&gt;
|Font and color for the chart axes&lt;br /&gt;
|-&lt;br /&gt;
!.buttons&lt;br /&gt;
|Size and color for the buttons (shift etc.)&lt;br /&gt;
|-&lt;br /&gt;
!.gridlines&lt;br /&gt;
|Size and color for gridlines generally&lt;br /&gt;
|-&lt;br /&gt;
!.xaxis&lt;br /&gt;
|Font, size and color for xaxis&lt;br /&gt;
|-&lt;br /&gt;
!.yaxis&lt;br /&gt;
|Font, size and color for yaxis&lt;br /&gt;
|-&lt;br /&gt;
!.xticks&lt;br /&gt;
|Font, size and color for xticks&lt;br /&gt;
|-&lt;br /&gt;
!.yticks&lt;br /&gt;
|Font, size and color for yticks&lt;br /&gt;
|-&lt;br /&gt;
!.crosshair&lt;br /&gt;
|Font, size and color (foreground/background) for the crosshair cursor&lt;br /&gt;
|-&lt;br /&gt;
!.caption&lt;br /&gt;
|Font, size and color for text buttons for legend and cursor switching&lt;br /&gt;
|-&lt;br /&gt;
!.legend&lt;br /&gt;
|Font, size and background color for legend window&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[#Beispiel_chart|Link zu einem Beispiel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;circlemenu&amp;quot;&amp;gt;&#039;&#039;&#039;CIRCLEMENU&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!HTML Attribut&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Default Wert&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-item-diameter&lt;br /&gt;
|diameter of the circle&lt;br /&gt;
|52&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-circle-radius&lt;br /&gt;
|radius of each item, in pixel&lt;br /&gt;
|70&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-direction&lt;br /&gt;
|position of the items in relation to the center&lt;br /&gt;
|&#039;full&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-close-after&lt;br /&gt;
|closing time of the circle-menu&lt;br /&gt;
|(item-count + 1s) or a minimum of 4s&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |class&lt;br /&gt;
|keepopen&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Optionen für data-direction: top | right | bottom | left | top-right | top-left | bottom-right | bottom-left | top-half | right-half | bottom-half | left-half | full | vertical | horizontal&lt;br /&gt;
&lt;br /&gt;
[[#Beispiel_circlemenu|Link zu einem Beispiel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;dimmer&amp;quot;&amp;gt;&#039;&#039;&#039;DIMMER&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!HTML Attribut&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Default Wert&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get&lt;br /&gt;
|name of the reading to get from Fhem&lt;br /&gt;
|&#039;STATE&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get-on&lt;br /&gt;
|value for ON status to get&lt;br /&gt;
|&#039;on&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get-off&lt;br /&gt;
|value for OFF status to get&lt;br /&gt;
|&#039;off&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-set&lt;br /&gt;
|(&amp;lt;command&amp;gt; &amp;lt;device&amp;gt; &amp;lt;reading&amp;gt; &amp;lt;value&amp;gt;) &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-set-on&lt;br /&gt;
|value for ON status to set&lt;br /&gt;
|value of data-get-on&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-set-off&lt;br /&gt;
|value for OFF status to set&lt;br /&gt;
|value of data-get-off&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-cmd&lt;br /&gt;
|name of the command (&amp;lt;command&amp;gt; &amp;lt;device&amp;gt; &amp;lt;value&amp;gt;) (e.g. setstate, set, setreading, trigger)&lt;br /&gt;
|&#039;set&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-dim&lt;br /&gt;
|name of the reading responsible for dim (&amp;lt;command&amp;gt; &amp;lt;device&amp;gt; &amp;lt;reading&amp;gt; &amp;lt;value&amp;gt;) &lt;br /&gt;
|value of data-get-on&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-icon&lt;br /&gt;
|name of the font-awesome icon&lt;br /&gt;
|fa-lightbulb-o&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[#Beispiel_dimmer|Link zu einem Beispiel]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;homestatus&amp;quot;&amp;gt;&#039;&#039;&#039;HOMESTATUS&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!HTML Attribut&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Default Wert&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get&lt;br /&gt;
|name of the reading to get from Fhem&lt;br /&gt;
|&#039;STATE&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-set&lt;br /&gt;
|command to send to Fhem (&amp;lt;code&amp;gt;set &amp;lt;device&amp;gt; &amp;lt;command&amp;gt; &amp;lt;value&amp;gt;&amp;lt;/code&amp;gt;)&lt;br /&gt;
|&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-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-state&lt;br /&gt;
|Array mit Status Angaben &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-set-state&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-backgroundicons&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_dimmer&amp;quot;&amp;gt;&#039;&#039;&#039;Dimmer&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dimmer Widget Beispiel für Philips Hue&lt;br /&gt;
&lt;br /&gt;
Minimalvariante&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
&amp;lt;div data-type=&amp;quot;dimmer&amp;quot; data-device=&amp;quot;HUEDevice1&amp;quot;&lt;br /&gt;
        data-get-on=&amp;quot;!off&amp;quot; data-get-off=&amp;quot;off&amp;quot;&lt;br /&gt;
        data-set=&amp;quot;pct&amp;quot;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit Anzeige der Dimstufe&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;dimmer&amp;quot; data-device=&amp;quot;HUEDevice1&amp;quot;&lt;br /&gt;
       data-get=&amp;quot;onoff&amp;quot;&lt;br /&gt;
       data-get-on=&amp;quot;1&amp;quot; data-get-off=&amp;quot;0&amp;quot;&lt;br /&gt;
       data-set=&amp;quot;&amp;quot;&lt;br /&gt;
       data-set-on=&amp;quot;on&amp;quot; data-set-off=&amp;quot;off&amp;quot;&lt;br /&gt;
       data-dim=&amp;quot;pct&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dimmer Widget für MilightDevice&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;dimmer&amp;quot;&lt;br /&gt;
  data-device=&amp;quot;SonstWas&amp;quot;&lt;br /&gt;
  data-get=&amp;quot;brightness&amp;quot;&lt;br /&gt;
  data-get-off=&amp;quot;0&amp;quot;&lt;br /&gt;
  data-get-on=&amp;quot;[1-9][0-9]*&amp;quot;&lt;br /&gt;
  data-set-on=&amp;quot;on&amp;quot;&lt;br /&gt;
  data-set-off=&amp;quot;off&amp;quot;&lt;br /&gt;
  data-dim=&amp;quot;dim&amp;quot;&lt;br /&gt;
  data-min=&amp;quot;0&amp;quot;&lt;br /&gt;
  data-max=&amp;quot;100&amp;quot;&lt;br /&gt;
&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_homestatus&amp;quot;&amp;gt;&#039;&#039;&#039;Homestatus&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel rechts im Bild:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;homestatus&amp;quot; data-device=&#039;dummy1&#039;&lt;br /&gt;
       data-get-on=&#039;[&amp;quot;1&amp;quot;,&amp;quot;2&amp;quot;,&amp;quot;3&amp;quot;,&amp;quot;4&amp;quot;]&#039;&lt;br /&gt;
       data-alias=&#039;[&amp;quot;Home&amp;quot;,&amp;quot;Night&amp;quot;,&amp;quot;Away&amp;quot;,&amp;quot;Holiday&amp;quot;]&#039;&lt;br /&gt;
       data-icons=&#039;[&amp;quot;fa-home&amp;quot;,&amp;quot;fa-bed&amp;quot;,&amp;quot;fa-car&amp;quot;,&amp;quot;fa-suitcase&amp;quot;]&#039;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel links im Bild:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;homestatus&amp;quot; data-device=&#039;dummy1&#039;&lt;br /&gt;
        data-get-on=&#039;[&amp;quot;home&amp;quot;,&amp;quot;asleep&amp;quot;,&amp;quot;absent&amp;quot;,&amp;quot;gone&amp;quot;,&amp;quot;gotosleep&amp;quot;]&#039;&lt;br /&gt;
        data-alias=&#039;[&amp;quot;Home&amp;quot;,&amp;quot;Night&amp;quot;,&amp;quot;Away&amp;quot;,&amp;quot;Holiday&amp;quot;,&amp;quot;Retire&amp;quot;]&#039;&lt;br /&gt;
        data-icons=&#039;[&amp;quot;fa-fire&amp;quot;,&amp;quot;fa-film&amp;quot;,&amp;quot;fa-plus&amp;quot;,&amp;quot;fa-car&amp;quot;,&amp;quot;fa-tint&amp;quot;]&#039;&lt;br /&gt;
        data-version=&#039;residents&#039;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:homestatus_tabletUI.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_image&amp;quot;&amp;gt;&#039;&#039;&#039;Image&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Erzeugt ein Widget mit einem Bild aus dem www, das alle 5 Sekunden aktualisiert wird (hier eine Wetterkarte vom DWD).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;image&amp;quot;&lt;br /&gt;
     data-size=&amp;quot;80%&amp;quot;&lt;br /&gt;
     data-url=&amp;quot;http://www.dwd.de/wundk/wetter/de/Deutschland.jpg&amp;quot;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:image_tabletUI.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example for how to add an image to the dashboard which its URL is delivered by a Fhem module like PROPLANTA:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;image&amp;quot; data-device=&amp;quot;Wetter1&amp;quot; &lt;br /&gt;
     data-get=&amp;quot;fc0_weatherDayIcon&amp;quot; &lt;br /&gt;
     data-size=&amp;quot;40px&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_label&amp;quot;&amp;gt;&#039;&#039;&#039;Label&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for HM-WDS40-TH-I Funk-Temperatur-/Feuchtesensor innen&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
STATE   T: 20.0 H: 61&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;THSensorWZ&amp;quot; &lt;br /&gt;
     data-part=&amp;quot;2&amp;quot; data-unit=&amp;quot;%B0C%0A&amp;quot; class=&amp;quot;cell big&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Temperatur&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;THSensorWZ&amp;quot; data-part=&amp;quot;4&amp;quot; &lt;br /&gt;
     data-unit=&amp;quot;%&amp;quot; class=&amp;quot;cell big&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Luftfeuchte&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
But the same result can reached by getting single readings:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
humidity    58&lt;br /&gt;
temperature 20.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;THSensorWZ&amp;quot; &lt;br /&gt;
     data-get=&amp;quot;temperature&amp;quot; data-unit=&amp;quot;%B0C%0A&amp;quot; class=&amp;quot;cell big&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Temperatur&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;THSensorWZ&amp;quot; &lt;br /&gt;
     data-get=&amp;quot;humidity&amp;quot; data-unit=&amp;quot;%&amp;quot; class=&amp;quot;cell big&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Luftfeuchte&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for how to influence the color of the label according to value limits&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; &lt;br /&gt;
     data-device=&amp;quot;OutTemp&amp;quot; &lt;br /&gt;
     data-limits=&#039;[-73,10,23]&#039; &lt;br /&gt;
     data-colors=&#039;[&amp;quot;#6699FF&amp;quot;,&amp;quot;#AA6900&amp;quot;,&amp;quot;#FF0000&amp;quot;]&#039; &lt;br /&gt;
     data-unit=&amp;quot;%B0C%0A&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell big&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for how to create a widget for shutter via push: show state and set up/down&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;switch&amp;quot; &lt;br /&gt;
     data-device=&amp;quot;wzRollo&amp;quot; &lt;br /&gt;
     data-get-on=&amp;quot;up&amp;quot; &lt;br /&gt;
     data-get-off=&amp;quot;down&amp;quot; &lt;br /&gt;
     data-icon=&amp;quot;fa-bars&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell&amp;quot;&amp;gt;Rollo&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for how to create a label for a time value in short format with usage of RegEx.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; &lt;br /&gt;
     data-device=&amp;quot;dummy1&amp;quot; &lt;br /&gt;
     data-part=&amp;quot;(\d\d\.\d\d\.).*&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for how to show two labels in one line.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;div type=&amp;quot;label&amp;quot; device=&amp;quot;OnSunrise&amp;quot; class=&amp;quot;inline&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;bis&lt;br /&gt;
   &amp;lt;div type=&amp;quot;label&amp;quot; device=&amp;quot;OnSunset&amp;quot; class=&amp;quot;inline&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel für die Anzeige des UV-Indexes und der Abhängigkeit der anzuzeigenden Farbe.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;wider cell bigger&amp;quot; data-device=&amp;quot;ProVorhersage&amp;quot;&lt;br /&gt;
        data-get=&amp;quot;fc0_uv&amp;quot;&lt;br /&gt;
        data-limits=&amp;quot;[-2, 2, 5, 7, 10]&amp;quot; &lt;br /&gt;
	data-colors=&#039;[&amp;quot;#66FF33&amp;quot;,&amp;quot;#FFFF00&amp;quot;,&amp;quot;#FF6600&amp;quot;,&amp;quot;#FF0000&amp;quot;,&amp;quot;#993399&amp;quot;]&#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
   &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot; data-device=&amp;quot;ProVorhersage&amp;quot; data-get=&amp;quot;fc0_date&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
   &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;wider cell bigger&amp;quot; data-device=&amp;quot;ProVorhersage&amp;quot;&lt;br /&gt;
        data-get=&amp;quot;fc1_uv&amp;quot;&lt;br /&gt;
	data-limits=&amp;quot;[-2, 2, 5, 7, 10]&amp;quot;&lt;br /&gt;
	data-colors=&#039;[&amp;quot;#66FF33&amp;quot;,&amp;quot;#FFFF00&amp;quot;,&amp;quot;#FF6600&amp;quot;,&amp;quot;#FF0000&amp;quot;,&amp;quot;#993399&amp;quot;]&#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
   &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot; data-device=&amp;quot;ProVorhersage&amp;quot; data-get=&amp;quot;fc1_date&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:label_tabletUI.jpg]]&lt;br /&gt;
&lt;br /&gt;
Beispiel für die Anzeige des Labels als Icon.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;AvReceiver&amp;quot; data-get=&amp;quot;input&amp;quot; class=&amp;quot;icon round bg-red cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;AvReceiver&amp;quot; data-get=&amp;quot;input&amp;quot; class=&amp;quot;icon square bg-blue cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;AvReceiver&amp;quot; data-get=&amp;quot;input&amp;quot; class=&amp;quot;icon squareborder cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;PowerAV_Sw&amp;quot; data-colors=&#039;[&amp;quot;red&amp;quot;,&amp;quot;green&amp;quot;]&#039; data-limits=&#039;[&amp;quot;off&amp;quot;,&amp;quot;on&amp;quot;]&#039; class=&amp;quot;icon round bg-limit cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Label_tabletUI_icon.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_pagetab&amp;quot;&amp;gt;&#039;&#039;&#039;Pagetab&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for a tab menu to switch smoothly between multiple pages. Multiple pagetabs in a template file: menu.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;header&amp;gt;MENU&amp;lt;/header&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;pagetab&amp;quot; data-url=&amp;quot;index.html&amp;quot;  data-icon=&amp;quot;fa-home&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;pagetab&amp;quot; data-url=&amp;quot;index_2.html&amp;quot; data-icon=&amp;quot;fa-sliders&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;pagetab&amp;quot; data-url=&amp;quot;index_3.html&amp;quot; data-icon=&amp;quot;fa-music&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;pagetab&amp;quot; data-url=&amp;quot;index_4.html&amp;quot; data-icon=&amp;quot;fa-hotel&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;pagetab&amp;quot; data-url=&amp;quot;index_5.html&amp;quot; data-icon=&amp;quot;fa-music&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;pagetab&amp;quot; data-url=&amp;quot;index_6.html&amp;quot; data-icon=&amp;quot;fa-database&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;pagetab&amp;quot; data-url=&amp;quot;index_7.html&amp;quot; data-icon=&amp;quot;fa-fax&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_playstream&amp;quot;&amp;gt;&#039;&#039;&#039;Playstream&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Erzeugt einen Knopf zum direkten Abspielen eines Webradio-Streams.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
     &amp;lt;div data-type=&amp;quot;playstream&amp;quot; data-url=&amp;quot;http://radioeins.de/stream&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
     &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;darker&amp;quot;&amp;gt;Radio eins&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_push&amp;quot;&amp;gt;&#039;&#039;&#039;Push&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for how to create a push button widget to trigger all devices on:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;push&amp;quot; &lt;br /&gt;
     data-device=&amp;quot;LightAll&amp;quot; &lt;br /&gt;
     data-cmd=&amp;quot;trigger&amp;quot; &lt;br /&gt;
     data-set=&amp;quot;on&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Beispiel für zwei horizontale Buttons:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;doublebox-h&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;push&amp;quot; data-device=&amp;quot;Rollo&amp;quot; &lt;br /&gt;
             data-icon=&amp;quot;fa-angle-up&amp;quot; data-background-icon=&amp;quot;fa-square-o&amp;quot; &lt;br /&gt;
             data-set=&amp;quot;up&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;push&amp;quot; data-device=&amp;quot;Rollo&amp;quot; &lt;br /&gt;
             data-icon=&amp;quot;fa-angle-down&amp;quot; data-background-icon=&amp;quot;fa-square-o&amp;quot; &lt;br /&gt;
             data-set=&amp;quot;down&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:push1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Beispiel für zwei quadratische vertikale Buttons:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;doublebox-v&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;push&amp;quot; data-device=&amp;quot;Rollo&amp;quot; &lt;br /&gt;
             data-icon=&amp;quot;fa-chevron-up&amp;quot; data-background-icon=&amp;quot;fa-square-o&amp;quot; &lt;br /&gt;
             data-set=&amp;quot;up&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;push&amp;quot; data-device=&amp;quot;Rollo&amp;quot; &lt;br /&gt;
            data-icon=&amp;quot;fa-chevron-down&amp;quot; data-background-icon=&amp;quot;fa-square-o&amp;quot; &lt;br /&gt;
            data-set=&amp;quot;down&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:push2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_rotor&amp;quot;&amp;gt;&#039;&#039;&#039;Rotor&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for a rotor widget, which switches between to days of weather forecast&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;rotor&amp;quot; class=&amp;quot;fade&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;darker&amp;quot;&amp;gt;Heute&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;weather&amp;quot; data-device=&amp;quot;AgroWeather&amp;quot; data-get=&amp;quot;fc0_weatherDay&amp;quot; class=&amp;quot;big&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;AgroWeather&amp;quot; data-get=&amp;quot;fc0_weatherDay&amp;quot; class=&amp;quot;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;AgroWeather&amp;quot; data-get=&amp;quot;fc0_tempMax&amp;quot; data-unit=&amp;quot;%B0C%0A&amp;quot; class=&amp;quot;large&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;darker&amp;quot;&amp;gt;Morgen&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;weather&amp;quot; data-device=&amp;quot;AgroWeather&amp;quot; data-get=&amp;quot;fc1_weatherDay&amp;quot; class=&amp;quot;big&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;AgroWeather&amp;quot; data-get=&amp;quot;fc1_weatherDay&amp;quot; class=&amp;quot;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;AgroWeather&amp;quot; data-get=&amp;quot;fc1_tempMax&amp;quot; data-unit=&amp;quot;%B0C%0A&amp;quot; class=&amp;quot;large&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_select&amp;quot;&amp;gt;&#039;&#039;&#039;Select&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Erzeugt zwei Comboboxen zur Auswahl des Eingang eines 2-Zonen-AV-Receivers. Die Liste für Zone2 ist fest, die Liste für Zone1 wird von Fhem übergeben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cell wider&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;inline wider&amp;quot;&amp;gt;Zone2&amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;div data-type=&amp;quot;select&amp;quot; data-device=&amp;quot;AvReceiverZ2&amp;quot; data-items=&#039;[&amp;quot;Airplay&amp;quot;,&amp;quot;Webradio&amp;quot;,&amp;quot;BD/DVD&amp;quot;,&amp;quot;PHONO&amp;quot;]&#039; data-get=&amp;quot;input&amp;quot; data-set=&amp;quot;input&amp;quot; class=&amp;quot;cell w2x&amp;quot; &amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;inline&amp;quot;&amp;gt;Zone1&amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;div data-type=&amp;quot;select&amp;quot; data-device=&amp;quot;AvReceiver&amp;quot; data-list=&amp;quot;inputs&amp;quot; data-get=&amp;quot;input&amp;quot; data-set=&amp;quot;input&amp;quot; class=&amp;quot;cell w2x&amp;quot; &amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:select_tabeltUI.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_slider&amp;quot;&amp;gt;&#039;&#039;&#039;Slider&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Slider mit einstellbaren Werten von 10 bis 90:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;slider&amp;quot; &lt;br /&gt;
     data-device=&#039;Dummy1&#039; &lt;br /&gt;
     data-min=&amp;quot;10&amp;quot; &lt;br /&gt;
     data-max=&amp;quot;90&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Light1&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:slider_tabletUI.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Horizontal angeordneter Slider:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;slider&amp;quot;&lt;br /&gt;
     data-device=&#039;Dummy1&#039; &lt;br /&gt;
     data-min=&amp;quot;0&amp;quot; &lt;br /&gt;
     data-max=&amp;quot;100&amp;quot; &lt;br /&gt;
     class=&amp;quot;horizontal&amp;quot; &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:slider_tabletUI2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_switch&amp;quot;&amp;gt;&#039;&#039;&#039;Switch&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Schalter. Usage of RegEx pattern for state request:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;switch&amp;quot; class=&amp;quot;cell&amp;quot; &lt;br /&gt;
            data-device=&amp;quot;MILIGHT_Zone1_Wohnzimmer&amp;quot; &lt;br /&gt;
            data-get-on=&amp;quot;on.*&amp;quot;&lt;br /&gt;
            data-get-off=&amp;quot;off&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:switch.png]]&lt;br /&gt;
&lt;br /&gt;
Beispiel für eine Gruppe von Schaltern, um zwischen vier verschiedenen Werten eines device umzuschalten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cell left&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;div data-type=&amp;quot;switch&amp;quot; data-device=&amp;quot;dummy1&amp;quot; &lt;br /&gt;
      data-get-off=&amp;quot;((?!Wert1).)*&amp;quot; &lt;br /&gt;
      data-get-on=&amp;quot;Wert1&amp;quot; class=&amp;quot;cell&amp;quot; &amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Wert1&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;div data-type=&amp;quot;switch&amp;quot; data-device=&amp;quot;dummy1&amp;quot; &lt;br /&gt;
      data-get-off=&amp;quot;((?!Wert2).)*&amp;quot; &lt;br /&gt;
      data-get-on=&amp;quot;Wert2&amp;quot; class=&amp;quot;cell&amp;quot; &amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Wert2&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;div data-type=&amp;quot;switch&amp;quot; data-device=&amp;quot;dummy1&amp;quot; &lt;br /&gt;
      data-get-off=&amp;quot;((?!Wert3).)*&amp;quot; &lt;br /&gt;
      data-get-on=&amp;quot;Wert3&amp;quot; class=&amp;quot;cell&amp;quot; &amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Wert3&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;div data-type=&amp;quot;switch&amp;quot; data-device=&amp;quot;dummy1&amp;quot; &lt;br /&gt;
      data-get-off=&amp;quot;((?!Wert4).)*&amp;quot; &lt;br /&gt;
      data-get-on=&amp;quot;Wert4&amp;quot; class=&amp;quot;cell&amp;quot; &amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Wert4&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:switch4.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_symbol&amp;quot;&amp;gt;&#039;&#039;&#039;Symbol&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for a tristate icon&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;symbol&amp;quot; data-device=&amp;quot;dummy1&amp;quot; &lt;br /&gt;
     data-get-on=&#039;[&amp;quot;wert1&amp;quot;,&amp;quot;wert2&amp;quot;,&amp;quot;wert3&amp;quot;]&#039; &lt;br /&gt;
     data-icons=&#039;[&amp;quot;fa-arrow-up&amp;quot;,&amp;quot;fa-user&amp;quot;,&amp;quot;fa-arrow-down&amp;quot;]&#039; &lt;br /&gt;
     data-on-colors=&#039;[&amp;quot;SeaGreen&amp;quot;,&amp;quot;SlateBlue&amp;quot;,&amp;quot;IndianRed&amp;quot;]&#039; &lt;br /&gt;
     class=&amp;quot;cell big&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example for a tristate icon with blink and spin animation&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;symbol&amp;quot; data-device=&amp;quot;dummy1&amp;quot; &lt;br /&gt;
     data-icons=&#039;[&amp;quot;fa-exclamation-triangle fa-blink&amp;quot;,&amp;quot;fa-exclamation-circle&amp;quot;,&amp;quot;fa-cog fa-spin&amp;quot;]&#039; &lt;br /&gt;
     data-on-colors=&#039;[&amp;quot;Crimson&amp;quot;,&amp;quot;GoldenRod&amp;quot;,&amp;quot;SeaGreen&amp;quot;]&#039; &lt;br /&gt;
     data-get-on=&#039;[&amp;quot;Wert1&amp;quot;,&amp;quot;Wert2&amp;quot;,&amp;quot;Wert3&amp;quot;]&#039; &amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example for a battery level control with RegEx&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;symbol&amp;quot; data-device=&amp;quot;BadHeizung&amp;quot; data-get=&amp;quot;batteryLevel&amp;quot;&lt;br /&gt;
     data-icons=&#039;[&amp;quot;oa-measure_battery_100&amp;quot;,&amp;quot;oa-measure_battery_75&amp;quot;,&amp;quot;oa-measure_battery_50&amp;quot;,&amp;quot;oa-measure_battery_25&amp;quot;,&amp;quot;oa-measure_battery_0&amp;quot;]&#039;&lt;br /&gt;
     data-get-on=&#039;[&amp;quot;3\\.[0-9]&amp;quot;,&amp;quot;2\\.[789]&amp;quot;,&amp;quot;2\\.[456]&amp;quot;,&amp;quot;2\\.[123]&amp;quot;,&amp;quot;((2\\.0)|([01]\\.[0-9]))&amp;quot;]&#039;&lt;br /&gt;
     data-on-colors=&#039;[&amp;quot;#505050&amp;quot;,&amp;quot;#505050&amp;quot;,&amp;quot;#505050&amp;quot;,&amp;quot;#ad3333&amp;quot;,&amp;quot;#ad3333&amp;quot;]&#039;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example for a battery level control with greater-equal compare and 90° rotated symbols&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;symbol&amp;quot; data-device=&amp;quot;BadHeizung&amp;quot; data-get=&amp;quot;batteryLevel&amp;quot;&lt;br /&gt;
    data-icons=&#039;[&amp;quot;oa-measure_battery_0 fa-rotate-90&amp;quot;,&amp;quot;oa-measure_battery_25 fa-rotate-90&amp;quot;,&amp;quot;oa-measure_battery_50 fa-rotate-90&amp;quot;,&amp;quot;oa-measure_battery_75 fa-rotate-90&amp;quot;,&amp;quot;oa-measure_battery_0 fa-rotate-90&amp;quot;]&#039;&lt;br /&gt;
    data-get-on=&#039;[&amp;quot;0&amp;quot;,&amp;quot;2&amp;quot;,&amp;quot;2.4&amp;quot;,&amp;quot;2.7&amp;quot;,&amp;quot;3.0&amp;quot;]&#039;&lt;br /&gt;
    data-on-colors=&#039;[&amp;quot;#ad3333&amp;quot;,&amp;quot;#ad3333&amp;quot;,&amp;quot;#505050&amp;quot;,&amp;quot;#505050&amp;quot;,&amp;quot;#505050&amp;quot;]&#039;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_thermostat&amp;quot;&amp;gt;&#039;&#039;&#039;Thermostat&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure as data-device=&#039;...&#039; that item which delivers temp and desired-temp as reading.&lt;br /&gt;
&lt;br /&gt;
Default parameters are:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
data-get=&amp;quot;desired-temp&amp;quot; data-temp=&amp;quot;measured-temp&amp;quot; data-set=&amp;quot;desired-temp&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Therefor for HomaMatic HM-CC-RT-DN this is sufficient.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;thermostat&amp;quot; data-device=&#039;KH_Clima&#039; class=&amp;quot;cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The long format looks like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;thermostat&amp;quot; &lt;br /&gt;
     data-device=&amp;quot;KH_Clima&amp;quot; &lt;br /&gt;
     data-get=&amp;quot;desired-temp&amp;quot; &lt;br /&gt;
     data-temp=&amp;quot;measured-temp&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example for MAX!:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;thermostat&amp;quot; data-device=&amp;quot;HZ_Tuer&amp;quot; &lt;br /&gt;
    data-valve=&amp;quot;valveposition&amp;quot; &lt;br /&gt;
    data-get=&amp;quot;desiredTemperature&amp;quot; &lt;br /&gt;
    data-temp=&amp;quot;temperature&amp;quot; &lt;br /&gt;
    data-set=&amp;quot;desiredTemperature&amp;quot; &lt;br /&gt;
    class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The wigets will show the valve value only in case of a valid data-valve attribute. The default for data-valve ist null. That means, a empty data-valve attribute hides the valve label for the widget.&lt;br /&gt;
&lt;br /&gt;
[[Datei:thermostat.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_weather&amp;quot;&amp;gt;&#039;&#039;&#039;Weather&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Widget fügt ein dem Wetter entsprechendes Bild ein. Die Daten können durch Fhem-Module wie [[PROPLANTA]], [[OPENWEATHER]] und [[Weather]] bereitgestellt werden. &lt;br /&gt;
Add &#039;big&#039; or &#039;bigger&#039; to CSS class to get a bigger weather icon.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;weather&amp;quot; &lt;br /&gt;
     data-device=&amp;quot;Weather&amp;quot; &lt;br /&gt;
     data-get=&amp;quot;fc0_weatherDay&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell big&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:weather.png]]&lt;br /&gt;
&lt;br /&gt;
== Icon-Konfiguration ==&lt;br /&gt;
&lt;br /&gt;
* Eingebaute Icons: Diese haben das ftui-Präfix. Zurzeit sind folgende verfügbar: ftui-window, ftui-door&lt;br /&gt;
&lt;br /&gt;
* Mehr als 500 Icons von &amp;quot;http://fortawesome.github.io/Font-Awesome/icons&amp;quot; verfügbar. Einfach den Icon-Namen angeben (Präfix &amp;quot;fa-&amp;quot; nicht vergessen, Z.B. &amp;lt;code&amp;gt;data-icon=&amp;quot;fa-volume-up&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Es stehen auch Openautomation Font-Files zur Verfügung. Wer sie nutzen möchte, muss folgende Stylesheets in die index.html hinzufügen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;/fhem/tablet/lib/openautomation.css&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;/fhem/tablet/lib/fhemSVG.css&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese font icons haben das Präfix &#039;fs-&#039; bzw. &#039;oa-&#039;.&lt;br /&gt;
&lt;br /&gt;
Beispiel bei einem Schalter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;div data-type=&amp;quot;switch&amp;quot; data-device=&#039;dummy1&#039; data-icon=&amp;quot;oa-secur_locked&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Und so als großes Symbol:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;symbol&amp;quot; data-device=&#039;dummy1&#039;&lt;br /&gt;
        data-icon=&amp;quot;oa-status_frost&amp;quot;&lt;br /&gt;
        data-on-color=&amp;quot;#bb3232&amp;quot;&lt;br /&gt;
        data-get-on=&amp;quot;on&amp;quot;&lt;br /&gt;
        data-get-off=&amp;quot;!on&amp;quot;&lt;br /&gt;
        class=&amp;quot;bigger&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Icons kann man auch etwas dicker darstellen mit den Zusatz bold: &amp;lt;code&amp;gt;data-icon=&amp;quot;oa-secur_locked bold&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Namen der verfügbaren Icons findet man auch in den CSS Files (openautomation.css / fhemSVG.css)&lt;br /&gt;
&lt;br /&gt;
== Spezial ==&lt;br /&gt;
Folgender Befehl setzt einen direkten Befehl an Fhem ab (&amp;lt;code&amp;gt;set dummy1 off&amp;lt;/code&amp;gt;):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
     &amp;lt;div onclick=&amp;quot;setFhemStatus(&#039;set dummy1 off&#039;)&amp;quot;&amp;gt;All off!&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
Häufig gestellte Fragen zum FHEM Tablet UI sind in der [[FHEM_Tablet_UI/FAQ|FHEM Tablet UI FAQ]] zusammengestellt.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://forum.fhem.de/index.php/topic,34233.0.html Forums-Beitrag]&lt;br /&gt;
* [https://github.com/knowthelist/fhem-tablet-ui Projekt auf Github]&lt;br /&gt;
* [http://forum.fhem.de/index.php/topic,37378.0.html User-Demos]&lt;br /&gt;
* [https://github.com/ovibox/fhem-ftui-user-demos Download der User-Demo-Dateien]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:FHEM Frontends]]&lt;/div&gt;</summary>
		<author><name>Svenson08</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=FHEM_Tablet_UI&amp;diff=14708</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=14708"/>
		<updated>2016-03-16T18:46:01Z</updated>

		<summary type="html">&lt;p&gt;Svenson08: /* Widgets LEVEL */&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:&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;))&lt;br /&gt;
|&#039;lines&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-uaxis&lt;br /&gt;
|name of the axis to be used (&#039;primary&#039; or &#039;secondary&#039;) or or array of axis&#039; to be used if more than one graph shall be displayed. The &#039;primary&#039; axis is labelled on the left side, the &#039;secondary&#039; axis is labelled on the right side&lt;br /&gt;
|&#039;primary&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-legend&lt;br /&gt;
|caption of the graph (used in the legend and at the cursor) or an array of legend texts if more than one graph shall be displayed.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-minvalue&lt;br /&gt;
|min Y value to Show or an array of values for dynamic minY for primary axis. A value of &#039;auto&#039; means that the value is calculated from the data displayed dynamically&lt;br /&gt;
|10&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-minvalue_sec&lt;br /&gt;
|min Y value to Show or an array of values for dynamic minY for secondary axis. A value of &#039;auto&#039; means that the value is calculated from the data displayed dynamically&lt;br /&gt;
|&#039;auto&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-maxvalue&lt;br /&gt;
|max Y value to Show or an array of values for dynamic maxY for primary axis. A value of &#039;auto&#039; means that the value is calculated from the data displayed dynamically&lt;br /&gt;
|30&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-maxvalue_sec&lt;br /&gt;
|max Y value to Show or an array of values for dynamic maxY for secondary axis. A value of &#039;auto&#039; means that the value is calculated from the data displayed dynamically&lt;br /&gt;
|&#039;auto&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-yticks&lt;br /&gt;
|value distance between Y tick lines (related to primary axis). A value of &#039;auto&#039; means that the value is calculated from the data displayed dynamically.&lt;br /&gt;
|&#039;auto&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-xticks&lt;br /&gt;
|time range between each X tick lines (in minutes). A value of &#039;auto&#039; means that the value is calculated from the data displayed dynamically&lt;br /&gt;
|&#039;auto&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-daysago_start&lt;br /&gt;
|number of days back from now for the start of the plot (0 means the plot starts from today 0:00). Additionally the x-axis start value can be set here unsing standard data formats like (&#039;2013-10-23&#039;), the time portion of the string is only used when &amp;lt;code&amp;gt;data-nofulldays&amp;lt;/code&amp;gt; is &#039;true&#039;.&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-daysago_end&lt;br /&gt;
|number of days back from now for the end of the plot (-1 means the plot ends today 24:00). Additionally the x-axis end value can be set here unsing standard data formats like (&#039;2013-10-23&#039;), the time portion of the string is only used when &amp;lt;code&amp;gt;data-nofulldays&amp;lt;/code&amp;gt; is &#039;true&#039;.&lt;br /&gt;
|-1&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-nofulldays&lt;br /&gt;
|switch to activate/deactivate rounding of the xaxis start and end values to full days (&#039;true&#039; or &#039;false&#039;)&lt;br /&gt;
|&#039;false&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-ytext&lt;br /&gt;
|text to be shown besides the primary y axis.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-ytext_sec&lt;br /&gt;
|text to be shown besides the secondary y axis.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-yunit&lt;br /&gt;
|unit of the value to show beside of each Y ticks for primary y axis.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-crosshair&lt;br /&gt;
|switch to activate/deactivate the crosshair cursor (&#039;true&#039; or &#039;false&#039;)&lt;br /&gt;
|&#039;false&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-cursorgroup&lt;br /&gt;
|number to define coupling of the crosshair cursor. The cursors of all charts having the same number are coupled and move together.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-scrollgroup&lt;br /&gt;
|number to define coupling of the scrolling (shift and zoom). All charts having the same number are scrolled (shifted and zoomed) together.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-showlegend&lt;br /&gt;
|switch to activate/deactivate the initial display of the legend window (&#039;true&#039; or &#039;false&#039;)&lt;br /&gt;
|&#039;false&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-yunit_sec&lt;br /&gt;
|unit of the value to show beside of each Y ticks for secondary y axis.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-width&lt;br /&gt;
|fixed size for width (in&amp;amp;nbsp;% or px)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-height&lt;br /&gt;
|fixed size for height (in&amp;amp;nbsp;% or px)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |class&lt;br /&gt;
|fullsize, noticks, nobuttons&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;data-logfile&amp;lt;/code&amp;gt; can be omitted in this case the default value &amp;quot;-&amp;quot; will be used. This means that the current logfile is going to be used.&lt;br /&gt;
&lt;br /&gt;
There are several buttons that control the dynamic behaviour of the chart. The &amp;lt;-, -&amp;gt;, + and - buttons shift and zoom the displayed data. The &amp;quot;legend&amp;quot; and &amp;quot;cursor&amp;quot; buttons are switching on and off the display of the legend window and the crosshair cursor respectively.&lt;br /&gt;
&lt;br /&gt;
When the legend window is displayed, a click on the legend text shows/hides the respective graph. The legend window can be dragged to other positions on desktop browsers (currently not yet working for iOS and Android).&lt;br /&gt;
&lt;br /&gt;
The crosshair cursor currently only works dynamically on desktop browsers. On iOS and Android you have to tap on the screen to set the cursor to a new position.&lt;br /&gt;
&lt;br /&gt;
There is a number of css styles that control the visible appearance of the chart. The following classes are supported:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!CSS class name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
!.chart-background&lt;br /&gt;
|Color etc. for the chart background&lt;br /&gt;
|-&lt;br /&gt;
!.text.axes&lt;br /&gt;
|Font and color for the chart axes&lt;br /&gt;
|-&lt;br /&gt;
!.buttons&lt;br /&gt;
|Size and color for the buttons (shift etc.)&lt;br /&gt;
|-&lt;br /&gt;
!.gridlines&lt;br /&gt;
|Size and color for gridlines generally&lt;br /&gt;
|-&lt;br /&gt;
!.xaxis&lt;br /&gt;
|Font, size and color for xaxis&lt;br /&gt;
|-&lt;br /&gt;
!.yaxis&lt;br /&gt;
|Font, size and color for yaxis&lt;br /&gt;
|-&lt;br /&gt;
!.xticks&lt;br /&gt;
|Font, size and color for xticks&lt;br /&gt;
|-&lt;br /&gt;
!.yticks&lt;br /&gt;
|Font, size and color for yticks&lt;br /&gt;
|-&lt;br /&gt;
!.crosshair&lt;br /&gt;
|Font, size and color (foreground/background) for the crosshair cursor&lt;br /&gt;
|-&lt;br /&gt;
!.caption&lt;br /&gt;
|Font, size and color for text buttons for legend and cursor switching&lt;br /&gt;
|-&lt;br /&gt;
!.legend&lt;br /&gt;
|Font, size and background color for legend window&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[#Beispiel_chart|Link zu einem Beispiel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;circlemenu&amp;quot;&amp;gt;&#039;&#039;&#039;CIRCLEMENU&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!HTML Attribut&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Default Wert&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-item-diameter&lt;br /&gt;
|diameter of the circle&lt;br /&gt;
|52&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-circle-radius&lt;br /&gt;
|radius of each item, in pixel&lt;br /&gt;
|70&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-direction&lt;br /&gt;
|position of the items in relation to the center&lt;br /&gt;
|&#039;full&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-close-after&lt;br /&gt;
|closing time of the circle-menu&lt;br /&gt;
|(item-count + 1s) or a minimum of 4s&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |class&lt;br /&gt;
|keepopen&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Optionen für data-direction: top | right | bottom | left | top-right | top-left | bottom-right | bottom-left | top-half | right-half | bottom-half | left-half | full | vertical | horizontal&lt;br /&gt;
&lt;br /&gt;
[[#Beispiel_circlemenu|Link zu einem Beispiel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;dimmer&amp;quot;&amp;gt;&#039;&#039;&#039;DIMMER&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!HTML Attribut&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Default Wert&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get&lt;br /&gt;
|name of the reading to get from Fhem&lt;br /&gt;
|&#039;STATE&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get-on&lt;br /&gt;
|value for ON status to get&lt;br /&gt;
|&#039;on&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get-off&lt;br /&gt;
|value for OFF status to get&lt;br /&gt;
|&#039;off&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-set&lt;br /&gt;
|(&amp;lt;command&amp;gt; &amp;lt;device&amp;gt; &amp;lt;reading&amp;gt; &amp;lt;value&amp;gt;) &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-set-on&lt;br /&gt;
|value for ON status to set&lt;br /&gt;
|value of data-get-on&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-set-off&lt;br /&gt;
|value for OFF status to set&lt;br /&gt;
|value of data-get-off&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-cmd&lt;br /&gt;
|name of the command (&amp;lt;command&amp;gt; &amp;lt;device&amp;gt; &amp;lt;value&amp;gt;) (e.g. setstate, set, setreading, trigger)&lt;br /&gt;
|&#039;set&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-dim&lt;br /&gt;
|name of the reading responsible for dim (&amp;lt;command&amp;gt; &amp;lt;device&amp;gt; &amp;lt;reading&amp;gt; &amp;lt;value&amp;gt;) &lt;br /&gt;
|value of data-get-on&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-icon&lt;br /&gt;
|name of the font-awesome icon&lt;br /&gt;
|fa-lightbulb-o&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[#Beispiel_dimmer|Link zu einem Beispiel]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;homestatus&amp;quot;&amp;gt;&#039;&#039;&#039;HOMESTATUS&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!HTML Attribut&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Default Wert&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get&lt;br /&gt;
|name of the reading to get from Fhem&lt;br /&gt;
|&#039;STATE&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-set&lt;br /&gt;
|command to send to Fhem (&amp;lt;code&amp;gt;set &amp;lt;device&amp;gt; &amp;lt;command&amp;gt; &amp;lt;value&amp;gt;&amp;lt;/code&amp;gt;)&lt;br /&gt;
|&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-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;
=== Widgets 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-state&lt;br /&gt;
|Array mit Status Angaben &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-set-state&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-backgroundicons&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_dimmer&amp;quot;&amp;gt;&#039;&#039;&#039;Dimmer&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dimmer Widget Beispiel für Philips Hue&lt;br /&gt;
&lt;br /&gt;
Minimalvariante&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
&amp;lt;div data-type=&amp;quot;dimmer&amp;quot; data-device=&amp;quot;HUEDevice1&amp;quot;&lt;br /&gt;
        data-get-on=&amp;quot;!off&amp;quot; data-get-off=&amp;quot;off&amp;quot;&lt;br /&gt;
        data-set=&amp;quot;pct&amp;quot;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit Anzeige der Dimstufe&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;dimmer&amp;quot; data-device=&amp;quot;HUEDevice1&amp;quot;&lt;br /&gt;
       data-get=&amp;quot;onoff&amp;quot;&lt;br /&gt;
       data-get-on=&amp;quot;1&amp;quot; data-get-off=&amp;quot;0&amp;quot;&lt;br /&gt;
       data-set=&amp;quot;&amp;quot;&lt;br /&gt;
       data-set-on=&amp;quot;on&amp;quot; data-set-off=&amp;quot;off&amp;quot;&lt;br /&gt;
       data-dim=&amp;quot;pct&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dimmer Widget für MilightDevice&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;dimmer&amp;quot;&lt;br /&gt;
  data-device=&amp;quot;SonstWas&amp;quot;&lt;br /&gt;
  data-get=&amp;quot;brightness&amp;quot;&lt;br /&gt;
  data-get-off=&amp;quot;0&amp;quot;&lt;br /&gt;
  data-get-on=&amp;quot;[1-9][0-9]*&amp;quot;&lt;br /&gt;
  data-set-on=&amp;quot;on&amp;quot;&lt;br /&gt;
  data-set-off=&amp;quot;off&amp;quot;&lt;br /&gt;
  data-dim=&amp;quot;dim&amp;quot;&lt;br /&gt;
  data-min=&amp;quot;0&amp;quot;&lt;br /&gt;
  data-max=&amp;quot;100&amp;quot;&lt;br /&gt;
&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_homestatus&amp;quot;&amp;gt;&#039;&#039;&#039;Homestatus&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel rechts im Bild:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;homestatus&amp;quot; data-device=&#039;dummy1&#039;&lt;br /&gt;
       data-get-on=&#039;[&amp;quot;1&amp;quot;,&amp;quot;2&amp;quot;,&amp;quot;3&amp;quot;,&amp;quot;4&amp;quot;]&#039;&lt;br /&gt;
       data-alias=&#039;[&amp;quot;Home&amp;quot;,&amp;quot;Night&amp;quot;,&amp;quot;Away&amp;quot;,&amp;quot;Holiday&amp;quot;]&#039;&lt;br /&gt;
       data-icons=&#039;[&amp;quot;fa-home&amp;quot;,&amp;quot;fa-bed&amp;quot;,&amp;quot;fa-car&amp;quot;,&amp;quot;fa-suitcase&amp;quot;]&#039;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel links im Bild:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;homestatus&amp;quot; data-device=&#039;dummy1&#039;&lt;br /&gt;
        data-get-on=&#039;[&amp;quot;home&amp;quot;,&amp;quot;asleep&amp;quot;,&amp;quot;absent&amp;quot;,&amp;quot;gone&amp;quot;,&amp;quot;gotosleep&amp;quot;]&#039;&lt;br /&gt;
        data-alias=&#039;[&amp;quot;Home&amp;quot;,&amp;quot;Night&amp;quot;,&amp;quot;Away&amp;quot;,&amp;quot;Holiday&amp;quot;,&amp;quot;Retire&amp;quot;]&#039;&lt;br /&gt;
        data-icons=&#039;[&amp;quot;fa-fire&amp;quot;,&amp;quot;fa-film&amp;quot;,&amp;quot;fa-plus&amp;quot;,&amp;quot;fa-car&amp;quot;,&amp;quot;fa-tint&amp;quot;]&#039;&lt;br /&gt;
        data-version=&#039;residents&#039;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:homestatus_tabletUI.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_image&amp;quot;&amp;gt;&#039;&#039;&#039;Image&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Erzeugt ein Widget mit einem Bild aus dem www, das alle 5 Sekunden aktualisiert wird (hier eine Wetterkarte vom DWD).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;image&amp;quot;&lt;br /&gt;
     data-size=&amp;quot;80%&amp;quot;&lt;br /&gt;
     data-url=&amp;quot;http://www.dwd.de/wundk/wetter/de/Deutschland.jpg&amp;quot;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:image_tabletUI.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example for how to add an image to the dashboard which its URL is delivered by a Fhem module like PROPLANTA:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;image&amp;quot; data-device=&amp;quot;Wetter1&amp;quot; &lt;br /&gt;
     data-get=&amp;quot;fc0_weatherDayIcon&amp;quot; &lt;br /&gt;
     data-size=&amp;quot;40px&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_label&amp;quot;&amp;gt;&#039;&#039;&#039;Label&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for HM-WDS40-TH-I Funk-Temperatur-/Feuchtesensor innen&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
STATE   T: 20.0 H: 61&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;THSensorWZ&amp;quot; &lt;br /&gt;
     data-part=&amp;quot;2&amp;quot; data-unit=&amp;quot;%B0C%0A&amp;quot; class=&amp;quot;cell big&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Temperatur&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;THSensorWZ&amp;quot; data-part=&amp;quot;4&amp;quot; &lt;br /&gt;
     data-unit=&amp;quot;%&amp;quot; class=&amp;quot;cell big&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Luftfeuchte&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
But the same result can reached by getting single readings:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
humidity    58&lt;br /&gt;
temperature 20.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;THSensorWZ&amp;quot; &lt;br /&gt;
     data-get=&amp;quot;temperature&amp;quot; data-unit=&amp;quot;%B0C%0A&amp;quot; class=&amp;quot;cell big&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Temperatur&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;THSensorWZ&amp;quot; &lt;br /&gt;
     data-get=&amp;quot;humidity&amp;quot; data-unit=&amp;quot;%&amp;quot; class=&amp;quot;cell big&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Luftfeuchte&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for how to influence the color of the label according to value limits&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; &lt;br /&gt;
     data-device=&amp;quot;OutTemp&amp;quot; &lt;br /&gt;
     data-limits=&#039;[-73,10,23]&#039; &lt;br /&gt;
     data-colors=&#039;[&amp;quot;#6699FF&amp;quot;,&amp;quot;#AA6900&amp;quot;,&amp;quot;#FF0000&amp;quot;]&#039; &lt;br /&gt;
     data-unit=&amp;quot;%B0C%0A&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell big&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for how to create a widget for shutter via push: show state and set up/down&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;switch&amp;quot; &lt;br /&gt;
     data-device=&amp;quot;wzRollo&amp;quot; &lt;br /&gt;
     data-get-on=&amp;quot;up&amp;quot; &lt;br /&gt;
     data-get-off=&amp;quot;down&amp;quot; &lt;br /&gt;
     data-icon=&amp;quot;fa-bars&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell&amp;quot;&amp;gt;Rollo&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for how to create a label for a time value in short format with usage of RegEx.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; &lt;br /&gt;
     data-device=&amp;quot;dummy1&amp;quot; &lt;br /&gt;
     data-part=&amp;quot;(\d\d\.\d\d\.).*&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for how to show two labels in one line.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;div type=&amp;quot;label&amp;quot; device=&amp;quot;OnSunrise&amp;quot; class=&amp;quot;inline&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;bis&lt;br /&gt;
   &amp;lt;div type=&amp;quot;label&amp;quot; device=&amp;quot;OnSunset&amp;quot; class=&amp;quot;inline&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel für die Anzeige des UV-Indexes und der Abhängigkeit der anzuzeigenden Farbe.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;wider cell bigger&amp;quot; data-device=&amp;quot;ProVorhersage&amp;quot;&lt;br /&gt;
        data-get=&amp;quot;fc0_uv&amp;quot;&lt;br /&gt;
        data-limits=&amp;quot;[-2, 2, 5, 7, 10]&amp;quot; &lt;br /&gt;
	data-colors=&#039;[&amp;quot;#66FF33&amp;quot;,&amp;quot;#FFFF00&amp;quot;,&amp;quot;#FF6600&amp;quot;,&amp;quot;#FF0000&amp;quot;,&amp;quot;#993399&amp;quot;]&#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
   &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot; data-device=&amp;quot;ProVorhersage&amp;quot; data-get=&amp;quot;fc0_date&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
   &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;wider cell bigger&amp;quot; data-device=&amp;quot;ProVorhersage&amp;quot;&lt;br /&gt;
        data-get=&amp;quot;fc1_uv&amp;quot;&lt;br /&gt;
	data-limits=&amp;quot;[-2, 2, 5, 7, 10]&amp;quot;&lt;br /&gt;
	data-colors=&#039;[&amp;quot;#66FF33&amp;quot;,&amp;quot;#FFFF00&amp;quot;,&amp;quot;#FF6600&amp;quot;,&amp;quot;#FF0000&amp;quot;,&amp;quot;#993399&amp;quot;]&#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
   &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot; data-device=&amp;quot;ProVorhersage&amp;quot; data-get=&amp;quot;fc1_date&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:label_tabletUI.jpg]]&lt;br /&gt;
&lt;br /&gt;
Beispiel für die Anzeige des Labels als Icon.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;AvReceiver&amp;quot; data-get=&amp;quot;input&amp;quot; class=&amp;quot;icon round bg-red cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;AvReceiver&amp;quot; data-get=&amp;quot;input&amp;quot; class=&amp;quot;icon square bg-blue cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;AvReceiver&amp;quot; data-get=&amp;quot;input&amp;quot; class=&amp;quot;icon squareborder cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;PowerAV_Sw&amp;quot; data-colors=&#039;[&amp;quot;red&amp;quot;,&amp;quot;green&amp;quot;]&#039; data-limits=&#039;[&amp;quot;off&amp;quot;,&amp;quot;on&amp;quot;]&#039; class=&amp;quot;icon round bg-limit cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Label_tabletUI_icon.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_pagetab&amp;quot;&amp;gt;&#039;&#039;&#039;Pagetab&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for a tab menu to switch smoothly between multiple pages. Multiple pagetabs in a template file: menu.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;header&amp;gt;MENU&amp;lt;/header&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;pagetab&amp;quot; data-url=&amp;quot;index.html&amp;quot;  data-icon=&amp;quot;fa-home&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;pagetab&amp;quot; data-url=&amp;quot;index_2.html&amp;quot; data-icon=&amp;quot;fa-sliders&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;pagetab&amp;quot; data-url=&amp;quot;index_3.html&amp;quot; data-icon=&amp;quot;fa-music&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;pagetab&amp;quot; data-url=&amp;quot;index_4.html&amp;quot; data-icon=&amp;quot;fa-hotel&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;pagetab&amp;quot; data-url=&amp;quot;index_5.html&amp;quot; data-icon=&amp;quot;fa-music&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;pagetab&amp;quot; data-url=&amp;quot;index_6.html&amp;quot; data-icon=&amp;quot;fa-database&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;pagetab&amp;quot; data-url=&amp;quot;index_7.html&amp;quot; data-icon=&amp;quot;fa-fax&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_playstream&amp;quot;&amp;gt;&#039;&#039;&#039;Playstream&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Erzeugt einen Knopf zum direkten Abspielen eines Webradio-Streams.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
     &amp;lt;div data-type=&amp;quot;playstream&amp;quot; data-url=&amp;quot;http://radioeins.de/stream&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
     &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;darker&amp;quot;&amp;gt;Radio eins&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_push&amp;quot;&amp;gt;&#039;&#039;&#039;Push&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for how to create a push button widget to trigger all devices on:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;push&amp;quot; &lt;br /&gt;
     data-device=&amp;quot;LightAll&amp;quot; &lt;br /&gt;
     data-cmd=&amp;quot;trigger&amp;quot; &lt;br /&gt;
     data-set=&amp;quot;on&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Beispiel für zwei horizontale Buttons:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;doublebox-h&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;push&amp;quot; data-device=&amp;quot;Rollo&amp;quot; &lt;br /&gt;
             data-icon=&amp;quot;fa-angle-up&amp;quot; data-background-icon=&amp;quot;fa-square-o&amp;quot; &lt;br /&gt;
             data-set=&amp;quot;up&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;push&amp;quot; data-device=&amp;quot;Rollo&amp;quot; &lt;br /&gt;
             data-icon=&amp;quot;fa-angle-down&amp;quot; data-background-icon=&amp;quot;fa-square-o&amp;quot; &lt;br /&gt;
             data-set=&amp;quot;down&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:push1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Beispiel für zwei quadratische vertikale Buttons:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;doublebox-v&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;push&amp;quot; data-device=&amp;quot;Rollo&amp;quot; &lt;br /&gt;
             data-icon=&amp;quot;fa-chevron-up&amp;quot; data-background-icon=&amp;quot;fa-square-o&amp;quot; &lt;br /&gt;
             data-set=&amp;quot;up&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;push&amp;quot; data-device=&amp;quot;Rollo&amp;quot; &lt;br /&gt;
            data-icon=&amp;quot;fa-chevron-down&amp;quot; data-background-icon=&amp;quot;fa-square-o&amp;quot; &lt;br /&gt;
            data-set=&amp;quot;down&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:push2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_rotor&amp;quot;&amp;gt;&#039;&#039;&#039;Rotor&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for a rotor widget, which switches between to days of weather forecast&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;rotor&amp;quot; class=&amp;quot;fade&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;darker&amp;quot;&amp;gt;Heute&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;weather&amp;quot; data-device=&amp;quot;AgroWeather&amp;quot; data-get=&amp;quot;fc0_weatherDay&amp;quot; class=&amp;quot;big&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;AgroWeather&amp;quot; data-get=&amp;quot;fc0_weatherDay&amp;quot; class=&amp;quot;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;AgroWeather&amp;quot; data-get=&amp;quot;fc0_tempMax&amp;quot; data-unit=&amp;quot;%B0C%0A&amp;quot; class=&amp;quot;large&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;darker&amp;quot;&amp;gt;Morgen&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;weather&amp;quot; data-device=&amp;quot;AgroWeather&amp;quot; data-get=&amp;quot;fc1_weatherDay&amp;quot; class=&amp;quot;big&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;AgroWeather&amp;quot; data-get=&amp;quot;fc1_weatherDay&amp;quot; class=&amp;quot;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;AgroWeather&amp;quot; data-get=&amp;quot;fc1_tempMax&amp;quot; data-unit=&amp;quot;%B0C%0A&amp;quot; class=&amp;quot;large&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_select&amp;quot;&amp;gt;&#039;&#039;&#039;Select&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Erzeugt zwei Comboboxen zur Auswahl des Eingang eines 2-Zonen-AV-Receivers. Die Liste für Zone2 ist fest, die Liste für Zone1 wird von Fhem übergeben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cell wider&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;inline wider&amp;quot;&amp;gt;Zone2&amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;div data-type=&amp;quot;select&amp;quot; data-device=&amp;quot;AvReceiverZ2&amp;quot; data-items=&#039;[&amp;quot;Airplay&amp;quot;,&amp;quot;Webradio&amp;quot;,&amp;quot;BD/DVD&amp;quot;,&amp;quot;PHONO&amp;quot;]&#039; data-get=&amp;quot;input&amp;quot; data-set=&amp;quot;input&amp;quot; class=&amp;quot;cell w2x&amp;quot; &amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;inline&amp;quot;&amp;gt;Zone1&amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;div data-type=&amp;quot;select&amp;quot; data-device=&amp;quot;AvReceiver&amp;quot; data-list=&amp;quot;inputs&amp;quot; data-get=&amp;quot;input&amp;quot; data-set=&amp;quot;input&amp;quot; class=&amp;quot;cell w2x&amp;quot; &amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:select_tabeltUI.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_slider&amp;quot;&amp;gt;&#039;&#039;&#039;Slider&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Slider mit einstellbaren Werten von 10 bis 90:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;slider&amp;quot; &lt;br /&gt;
     data-device=&#039;Dummy1&#039; &lt;br /&gt;
     data-min=&amp;quot;10&amp;quot; &lt;br /&gt;
     data-max=&amp;quot;90&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Light1&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:slider_tabletUI.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Horizontal angeordneter Slider:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;slider&amp;quot;&lt;br /&gt;
     data-device=&#039;Dummy1&#039; &lt;br /&gt;
     data-min=&amp;quot;0&amp;quot; &lt;br /&gt;
     data-max=&amp;quot;100&amp;quot; &lt;br /&gt;
     class=&amp;quot;horizontal&amp;quot; &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:slider_tabletUI2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_switch&amp;quot;&amp;gt;&#039;&#039;&#039;Switch&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Schalter. Usage of RegEx pattern for state request:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;switch&amp;quot; class=&amp;quot;cell&amp;quot; &lt;br /&gt;
            data-device=&amp;quot;MILIGHT_Zone1_Wohnzimmer&amp;quot; &lt;br /&gt;
            data-get-on=&amp;quot;on.*&amp;quot;&lt;br /&gt;
            data-get-off=&amp;quot;off&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:switch.png]]&lt;br /&gt;
&lt;br /&gt;
Beispiel für eine Gruppe von Schaltern, um zwischen vier verschiedenen Werten eines device umzuschalten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cell left&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;div data-type=&amp;quot;switch&amp;quot; data-device=&amp;quot;dummy1&amp;quot; &lt;br /&gt;
      data-get-off=&amp;quot;((?!Wert1).)*&amp;quot; &lt;br /&gt;
      data-get-on=&amp;quot;Wert1&amp;quot; class=&amp;quot;cell&amp;quot; &amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Wert1&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;div data-type=&amp;quot;switch&amp;quot; data-device=&amp;quot;dummy1&amp;quot; &lt;br /&gt;
      data-get-off=&amp;quot;((?!Wert2).)*&amp;quot; &lt;br /&gt;
      data-get-on=&amp;quot;Wert2&amp;quot; class=&amp;quot;cell&amp;quot; &amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Wert2&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;div data-type=&amp;quot;switch&amp;quot; data-device=&amp;quot;dummy1&amp;quot; &lt;br /&gt;
      data-get-off=&amp;quot;((?!Wert3).)*&amp;quot; &lt;br /&gt;
      data-get-on=&amp;quot;Wert3&amp;quot; class=&amp;quot;cell&amp;quot; &amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Wert3&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;div data-type=&amp;quot;switch&amp;quot; data-device=&amp;quot;dummy1&amp;quot; &lt;br /&gt;
      data-get-off=&amp;quot;((?!Wert4).)*&amp;quot; &lt;br /&gt;
      data-get-on=&amp;quot;Wert4&amp;quot; class=&amp;quot;cell&amp;quot; &amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Wert4&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:switch4.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_symbol&amp;quot;&amp;gt;&#039;&#039;&#039;Symbol&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for a tristate icon&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;symbol&amp;quot; data-device=&amp;quot;dummy1&amp;quot; &lt;br /&gt;
     data-get-on=&#039;[&amp;quot;wert1&amp;quot;,&amp;quot;wert2&amp;quot;,&amp;quot;wert3&amp;quot;]&#039; &lt;br /&gt;
     data-icons=&#039;[&amp;quot;fa-arrow-up&amp;quot;,&amp;quot;fa-user&amp;quot;,&amp;quot;fa-arrow-down&amp;quot;]&#039; &lt;br /&gt;
     data-on-colors=&#039;[&amp;quot;SeaGreen&amp;quot;,&amp;quot;SlateBlue&amp;quot;,&amp;quot;IndianRed&amp;quot;]&#039; &lt;br /&gt;
     class=&amp;quot;cell big&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example for a tristate icon with blink and spin animation&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;symbol&amp;quot; data-device=&amp;quot;dummy1&amp;quot; &lt;br /&gt;
     data-icons=&#039;[&amp;quot;fa-exclamation-triangle fa-blink&amp;quot;,&amp;quot;fa-exclamation-circle&amp;quot;,&amp;quot;fa-cog fa-spin&amp;quot;]&#039; &lt;br /&gt;
     data-on-colors=&#039;[&amp;quot;Crimson&amp;quot;,&amp;quot;GoldenRod&amp;quot;,&amp;quot;SeaGreen&amp;quot;]&#039; &lt;br /&gt;
     data-get-on=&#039;[&amp;quot;Wert1&amp;quot;,&amp;quot;Wert2&amp;quot;,&amp;quot;Wert3&amp;quot;]&#039; &amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example for a battery level control with RegEx&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;symbol&amp;quot; data-device=&amp;quot;BadHeizung&amp;quot; data-get=&amp;quot;batteryLevel&amp;quot;&lt;br /&gt;
     data-icons=&#039;[&amp;quot;oa-measure_battery_100&amp;quot;,&amp;quot;oa-measure_battery_75&amp;quot;,&amp;quot;oa-measure_battery_50&amp;quot;,&amp;quot;oa-measure_battery_25&amp;quot;,&amp;quot;oa-measure_battery_0&amp;quot;]&#039;&lt;br /&gt;
     data-get-on=&#039;[&amp;quot;3\\.[0-9]&amp;quot;,&amp;quot;2\\.[789]&amp;quot;,&amp;quot;2\\.[456]&amp;quot;,&amp;quot;2\\.[123]&amp;quot;,&amp;quot;((2\\.0)|([01]\\.[0-9]))&amp;quot;]&#039;&lt;br /&gt;
     data-on-colors=&#039;[&amp;quot;#505050&amp;quot;,&amp;quot;#505050&amp;quot;,&amp;quot;#505050&amp;quot;,&amp;quot;#ad3333&amp;quot;,&amp;quot;#ad3333&amp;quot;]&#039;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example for a battery level control with greater-equal compare and 90° rotated symbols&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;symbol&amp;quot; data-device=&amp;quot;BadHeizung&amp;quot; data-get=&amp;quot;batteryLevel&amp;quot;&lt;br /&gt;
    data-icons=&#039;[&amp;quot;oa-measure_battery_0 fa-rotate-90&amp;quot;,&amp;quot;oa-measure_battery_25 fa-rotate-90&amp;quot;,&amp;quot;oa-measure_battery_50 fa-rotate-90&amp;quot;,&amp;quot;oa-measure_battery_75 fa-rotate-90&amp;quot;,&amp;quot;oa-measure_battery_0 fa-rotate-90&amp;quot;]&#039;&lt;br /&gt;
    data-get-on=&#039;[&amp;quot;0&amp;quot;,&amp;quot;2&amp;quot;,&amp;quot;2.4&amp;quot;,&amp;quot;2.7&amp;quot;,&amp;quot;3.0&amp;quot;]&#039;&lt;br /&gt;
    data-on-colors=&#039;[&amp;quot;#ad3333&amp;quot;,&amp;quot;#ad3333&amp;quot;,&amp;quot;#505050&amp;quot;,&amp;quot;#505050&amp;quot;,&amp;quot;#505050&amp;quot;]&#039;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_thermostat&amp;quot;&amp;gt;&#039;&#039;&#039;Thermostat&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure as data-device=&#039;...&#039; that item which delivers temp and desired-temp as reading.&lt;br /&gt;
&lt;br /&gt;
Default parameters are:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
data-get=&amp;quot;desired-temp&amp;quot; data-temp=&amp;quot;measured-temp&amp;quot; data-set=&amp;quot;desired-temp&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Therefor for HomaMatic HM-CC-RT-DN this is sufficient.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;thermostat&amp;quot; data-device=&#039;KH_Clima&#039; class=&amp;quot;cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The long format looks like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;thermostat&amp;quot; &lt;br /&gt;
     data-device=&amp;quot;KH_Clima&amp;quot; &lt;br /&gt;
     data-get=&amp;quot;desired-temp&amp;quot; &lt;br /&gt;
     data-temp=&amp;quot;measured-temp&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example for MAX!:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;thermostat&amp;quot; data-device=&amp;quot;HZ_Tuer&amp;quot; &lt;br /&gt;
    data-valve=&amp;quot;valveposition&amp;quot; &lt;br /&gt;
    data-get=&amp;quot;desiredTemperature&amp;quot; &lt;br /&gt;
    data-temp=&amp;quot;temperature&amp;quot; &lt;br /&gt;
    data-set=&amp;quot;desiredTemperature&amp;quot; &lt;br /&gt;
    class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The wigets will show the valve value only in case of a valid data-valve attribute. The default for data-valve ist null. That means, a empty data-valve attribute hides the valve label for the widget.&lt;br /&gt;
&lt;br /&gt;
[[Datei:thermostat.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_weather&amp;quot;&amp;gt;&#039;&#039;&#039;Weather&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Widget fügt ein dem Wetter entsprechendes Bild ein. Die Daten können durch Fhem-Module wie [[PROPLANTA]], [[OPENWEATHER]] und [[Weather]] bereitgestellt werden. &lt;br /&gt;
Add &#039;big&#039; or &#039;bigger&#039; to CSS class to get a bigger weather icon.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;weather&amp;quot; &lt;br /&gt;
     data-device=&amp;quot;Weather&amp;quot; &lt;br /&gt;
     data-get=&amp;quot;fc0_weatherDay&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell big&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:weather.png]]&lt;br /&gt;
&lt;br /&gt;
== Icon-Konfiguration ==&lt;br /&gt;
&lt;br /&gt;
* Eingebaute Icons: Diese haben das ftui-Präfix. Zurzeit sind folgende verfügbar: ftui-window, ftui-door&lt;br /&gt;
&lt;br /&gt;
* Mehr als 500 Icons von &amp;quot;http://fortawesome.github.io/Font-Awesome/icons&amp;quot; verfügbar. Einfach den Icon-Namen angeben (Präfix &amp;quot;fa-&amp;quot; nicht vergessen, Z.B. &amp;lt;code&amp;gt;data-icon=&amp;quot;fa-volume-up&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Es stehen auch Openautomation Font-Files zur Verfügung. Wer sie nutzen möchte, muss folgende Stylesheets in die index.html hinzufügen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;/fhem/tablet/lib/openautomation.css&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;/fhem/tablet/lib/fhemSVG.css&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese font icons haben das Präfix &#039;fs-&#039; bzw. &#039;oa-&#039;.&lt;br /&gt;
&lt;br /&gt;
Beispiel bei einem Schalter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;div data-type=&amp;quot;switch&amp;quot; data-device=&#039;dummy1&#039; data-icon=&amp;quot;oa-secur_locked&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Und so als großes Symbol:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;symbol&amp;quot; data-device=&#039;dummy1&#039;&lt;br /&gt;
        data-icon=&amp;quot;oa-status_frost&amp;quot;&lt;br /&gt;
        data-on-color=&amp;quot;#bb3232&amp;quot;&lt;br /&gt;
        data-get-on=&amp;quot;on&amp;quot;&lt;br /&gt;
        data-get-off=&amp;quot;!on&amp;quot;&lt;br /&gt;
        class=&amp;quot;bigger&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Icons kann man auch etwas dicker darstellen mit den Zusatz bold: &amp;lt;code&amp;gt;data-icon=&amp;quot;oa-secur_locked bold&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Namen der verfügbaren Icons findet man auch in den CSS Files (openautomation.css / fhemSVG.css)&lt;br /&gt;
&lt;br /&gt;
== Spezial ==&lt;br /&gt;
Folgender Befehl setzt einen direkten Befehl an Fhem ab (&amp;lt;code&amp;gt;set dummy1 off&amp;lt;/code&amp;gt;):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
     &amp;lt;div onclick=&amp;quot;setFhemStatus(&#039;set dummy1 off&#039;)&amp;quot;&amp;gt;All off!&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
Häufig gestellte Fragen zum FHEM Tablet UI sind in der [[FHEM_Tablet_UI/FAQ|FHEM Tablet UI FAQ]] zusammengestellt.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://forum.fhem.de/index.php/topic,34233.0.html Forums-Beitrag]&lt;br /&gt;
* [https://github.com/knowthelist/fhem-tablet-ui Projekt auf Github]&lt;br /&gt;
* [http://forum.fhem.de/index.php/topic,37378.0.html User-Demos]&lt;br /&gt;
* [https://github.com/ovibox/fhem-ftui-user-demos Download der User-Demo-Dateien]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:FHEM Frontends]]&lt;/div&gt;</summary>
		<author><name>Svenson08</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=FHEM_Tablet_UI&amp;diff=14707</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=14707"/>
		<updated>2016-03-16T18:45:45Z</updated>

		<summary type="html">&lt;p&gt;Svenson08: /* Widgets THERMOSTAT */&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:&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;))&lt;br /&gt;
|&#039;lines&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-uaxis&lt;br /&gt;
|name of the axis to be used (&#039;primary&#039; or &#039;secondary&#039;) or or array of axis&#039; to be used if more than one graph shall be displayed. The &#039;primary&#039; axis is labelled on the left side, the &#039;secondary&#039; axis is labelled on the right side&lt;br /&gt;
|&#039;primary&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-legend&lt;br /&gt;
|caption of the graph (used in the legend and at the cursor) or an array of legend texts if more than one graph shall be displayed.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-minvalue&lt;br /&gt;
|min Y value to Show or an array of values for dynamic minY for primary axis. A value of &#039;auto&#039; means that the value is calculated from the data displayed dynamically&lt;br /&gt;
|10&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-minvalue_sec&lt;br /&gt;
|min Y value to Show or an array of values for dynamic minY for secondary axis. A value of &#039;auto&#039; means that the value is calculated from the data displayed dynamically&lt;br /&gt;
|&#039;auto&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-maxvalue&lt;br /&gt;
|max Y value to Show or an array of values for dynamic maxY for primary axis. A value of &#039;auto&#039; means that the value is calculated from the data displayed dynamically&lt;br /&gt;
|30&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-maxvalue_sec&lt;br /&gt;
|max Y value to Show or an array of values for dynamic maxY for secondary axis. A value of &#039;auto&#039; means that the value is calculated from the data displayed dynamically&lt;br /&gt;
|&#039;auto&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-yticks&lt;br /&gt;
|value distance between Y tick lines (related to primary axis). A value of &#039;auto&#039; means that the value is calculated from the data displayed dynamically.&lt;br /&gt;
|&#039;auto&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-xticks&lt;br /&gt;
|time range between each X tick lines (in minutes). A value of &#039;auto&#039; means that the value is calculated from the data displayed dynamically&lt;br /&gt;
|&#039;auto&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-daysago_start&lt;br /&gt;
|number of days back from now for the start of the plot (0 means the plot starts from today 0:00). Additionally the x-axis start value can be set here unsing standard data formats like (&#039;2013-10-23&#039;), the time portion of the string is only used when &amp;lt;code&amp;gt;data-nofulldays&amp;lt;/code&amp;gt; is &#039;true&#039;.&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-daysago_end&lt;br /&gt;
|number of days back from now for the end of the plot (-1 means the plot ends today 24:00). Additionally the x-axis end value can be set here unsing standard data formats like (&#039;2013-10-23&#039;), the time portion of the string is only used when &amp;lt;code&amp;gt;data-nofulldays&amp;lt;/code&amp;gt; is &#039;true&#039;.&lt;br /&gt;
|-1&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-nofulldays&lt;br /&gt;
|switch to activate/deactivate rounding of the xaxis start and end values to full days (&#039;true&#039; or &#039;false&#039;)&lt;br /&gt;
|&#039;false&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-ytext&lt;br /&gt;
|text to be shown besides the primary y axis.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-ytext_sec&lt;br /&gt;
|text to be shown besides the secondary y axis.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-yunit&lt;br /&gt;
|unit of the value to show beside of each Y ticks for primary y axis.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-crosshair&lt;br /&gt;
|switch to activate/deactivate the crosshair cursor (&#039;true&#039; or &#039;false&#039;)&lt;br /&gt;
|&#039;false&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-cursorgroup&lt;br /&gt;
|number to define coupling of the crosshair cursor. The cursors of all charts having the same number are coupled and move together.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-scrollgroup&lt;br /&gt;
|number to define coupling of the scrolling (shift and zoom). All charts having the same number are scrolled (shifted and zoomed) together.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-showlegend&lt;br /&gt;
|switch to activate/deactivate the initial display of the legend window (&#039;true&#039; or &#039;false&#039;)&lt;br /&gt;
|&#039;false&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-yunit_sec&lt;br /&gt;
|unit of the value to show beside of each Y ticks for secondary y axis.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-width&lt;br /&gt;
|fixed size for width (in&amp;amp;nbsp;% or px)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-height&lt;br /&gt;
|fixed size for height (in&amp;amp;nbsp;% or px)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |class&lt;br /&gt;
|fullsize, noticks, nobuttons&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;data-logfile&amp;lt;/code&amp;gt; can be omitted in this case the default value &amp;quot;-&amp;quot; will be used. This means that the current logfile is going to be used.&lt;br /&gt;
&lt;br /&gt;
There are several buttons that control the dynamic behaviour of the chart. The &amp;lt;-, -&amp;gt;, + and - buttons shift and zoom the displayed data. The &amp;quot;legend&amp;quot; and &amp;quot;cursor&amp;quot; buttons are switching on and off the display of the legend window and the crosshair cursor respectively.&lt;br /&gt;
&lt;br /&gt;
When the legend window is displayed, a click on the legend text shows/hides the respective graph. The legend window can be dragged to other positions on desktop browsers (currently not yet working for iOS and Android).&lt;br /&gt;
&lt;br /&gt;
The crosshair cursor currently only works dynamically on desktop browsers. On iOS and Android you have to tap on the screen to set the cursor to a new position.&lt;br /&gt;
&lt;br /&gt;
There is a number of css styles that control the visible appearance of the chart. The following classes are supported:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!CSS class name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
!.chart-background&lt;br /&gt;
|Color etc. for the chart background&lt;br /&gt;
|-&lt;br /&gt;
!.text.axes&lt;br /&gt;
|Font and color for the chart axes&lt;br /&gt;
|-&lt;br /&gt;
!.buttons&lt;br /&gt;
|Size and color for the buttons (shift etc.)&lt;br /&gt;
|-&lt;br /&gt;
!.gridlines&lt;br /&gt;
|Size and color for gridlines generally&lt;br /&gt;
|-&lt;br /&gt;
!.xaxis&lt;br /&gt;
|Font, size and color for xaxis&lt;br /&gt;
|-&lt;br /&gt;
!.yaxis&lt;br /&gt;
|Font, size and color for yaxis&lt;br /&gt;
|-&lt;br /&gt;
!.xticks&lt;br /&gt;
|Font, size and color for xticks&lt;br /&gt;
|-&lt;br /&gt;
!.yticks&lt;br /&gt;
|Font, size and color for yticks&lt;br /&gt;
|-&lt;br /&gt;
!.crosshair&lt;br /&gt;
|Font, size and color (foreground/background) for the crosshair cursor&lt;br /&gt;
|-&lt;br /&gt;
!.caption&lt;br /&gt;
|Font, size and color for text buttons for legend and cursor switching&lt;br /&gt;
|-&lt;br /&gt;
!.legend&lt;br /&gt;
|Font, size and background color for legend window&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[#Beispiel_chart|Link zu einem Beispiel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;circlemenu&amp;quot;&amp;gt;&#039;&#039;&#039;CIRCLEMENU&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!HTML Attribut&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Default Wert&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-item-diameter&lt;br /&gt;
|diameter of the circle&lt;br /&gt;
|52&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-circle-radius&lt;br /&gt;
|radius of each item, in pixel&lt;br /&gt;
|70&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-direction&lt;br /&gt;
|position of the items in relation to the center&lt;br /&gt;
|&#039;full&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-close-after&lt;br /&gt;
|closing time of the circle-menu&lt;br /&gt;
|(item-count + 1s) or a minimum of 4s&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |class&lt;br /&gt;
|keepopen&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Optionen für data-direction: top | right | bottom | left | top-right | top-left | bottom-right | bottom-left | top-half | right-half | bottom-half | left-half | full | vertical | horizontal&lt;br /&gt;
&lt;br /&gt;
[[#Beispiel_circlemenu|Link zu einem Beispiel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;dimmer&amp;quot;&amp;gt;&#039;&#039;&#039;DIMMER&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!HTML Attribut&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Default Wert&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get&lt;br /&gt;
|name of the reading to get from Fhem&lt;br /&gt;
|&#039;STATE&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get-on&lt;br /&gt;
|value for ON status to get&lt;br /&gt;
|&#039;on&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get-off&lt;br /&gt;
|value for OFF status to get&lt;br /&gt;
|&#039;off&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-set&lt;br /&gt;
|(&amp;lt;command&amp;gt; &amp;lt;device&amp;gt; &amp;lt;reading&amp;gt; &amp;lt;value&amp;gt;) &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-set-on&lt;br /&gt;
|value for ON status to set&lt;br /&gt;
|value of data-get-on&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-set-off&lt;br /&gt;
|value for OFF status to set&lt;br /&gt;
|value of data-get-off&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-cmd&lt;br /&gt;
|name of the command (&amp;lt;command&amp;gt; &amp;lt;device&amp;gt; &amp;lt;value&amp;gt;) (e.g. setstate, set, setreading, trigger)&lt;br /&gt;
|&#039;set&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-dim&lt;br /&gt;
|name of the reading responsible for dim (&amp;lt;command&amp;gt; &amp;lt;device&amp;gt; &amp;lt;reading&amp;gt; &amp;lt;value&amp;gt;) &lt;br /&gt;
|value of data-get-on&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-icon&lt;br /&gt;
|name of the font-awesome icon&lt;br /&gt;
|fa-lightbulb-o&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[#Beispiel_dimmer|Link zu einem Beispiel]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;homestatus&amp;quot;&amp;gt;&#039;&#039;&#039;HOMESTATUS&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!HTML Attribut&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Default Wert&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get&lt;br /&gt;
|name of the reading to get from Fhem&lt;br /&gt;
|&#039;STATE&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-set&lt;br /&gt;
|command to send to Fhem (&amp;lt;code&amp;gt;set &amp;lt;device&amp;gt; &amp;lt;command&amp;gt; &amp;lt;value&amp;gt;&amp;lt;/code&amp;gt;)&lt;br /&gt;
|&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-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;
=== Widgets 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;
=== Widgets 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-state&lt;br /&gt;
|Array mit Status Angaben &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-set-state&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-backgroundicons&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_dimmer&amp;quot;&amp;gt;&#039;&#039;&#039;Dimmer&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dimmer Widget Beispiel für Philips Hue&lt;br /&gt;
&lt;br /&gt;
Minimalvariante&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
&amp;lt;div data-type=&amp;quot;dimmer&amp;quot; data-device=&amp;quot;HUEDevice1&amp;quot;&lt;br /&gt;
        data-get-on=&amp;quot;!off&amp;quot; data-get-off=&amp;quot;off&amp;quot;&lt;br /&gt;
        data-set=&amp;quot;pct&amp;quot;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit Anzeige der Dimstufe&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;dimmer&amp;quot; data-device=&amp;quot;HUEDevice1&amp;quot;&lt;br /&gt;
       data-get=&amp;quot;onoff&amp;quot;&lt;br /&gt;
       data-get-on=&amp;quot;1&amp;quot; data-get-off=&amp;quot;0&amp;quot;&lt;br /&gt;
       data-set=&amp;quot;&amp;quot;&lt;br /&gt;
       data-set-on=&amp;quot;on&amp;quot; data-set-off=&amp;quot;off&amp;quot;&lt;br /&gt;
       data-dim=&amp;quot;pct&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dimmer Widget für MilightDevice&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;dimmer&amp;quot;&lt;br /&gt;
  data-device=&amp;quot;SonstWas&amp;quot;&lt;br /&gt;
  data-get=&amp;quot;brightness&amp;quot;&lt;br /&gt;
  data-get-off=&amp;quot;0&amp;quot;&lt;br /&gt;
  data-get-on=&amp;quot;[1-9][0-9]*&amp;quot;&lt;br /&gt;
  data-set-on=&amp;quot;on&amp;quot;&lt;br /&gt;
  data-set-off=&amp;quot;off&amp;quot;&lt;br /&gt;
  data-dim=&amp;quot;dim&amp;quot;&lt;br /&gt;
  data-min=&amp;quot;0&amp;quot;&lt;br /&gt;
  data-max=&amp;quot;100&amp;quot;&lt;br /&gt;
&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_homestatus&amp;quot;&amp;gt;&#039;&#039;&#039;Homestatus&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel rechts im Bild:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;homestatus&amp;quot; data-device=&#039;dummy1&#039;&lt;br /&gt;
       data-get-on=&#039;[&amp;quot;1&amp;quot;,&amp;quot;2&amp;quot;,&amp;quot;3&amp;quot;,&amp;quot;4&amp;quot;]&#039;&lt;br /&gt;
       data-alias=&#039;[&amp;quot;Home&amp;quot;,&amp;quot;Night&amp;quot;,&amp;quot;Away&amp;quot;,&amp;quot;Holiday&amp;quot;]&#039;&lt;br /&gt;
       data-icons=&#039;[&amp;quot;fa-home&amp;quot;,&amp;quot;fa-bed&amp;quot;,&amp;quot;fa-car&amp;quot;,&amp;quot;fa-suitcase&amp;quot;]&#039;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel links im Bild:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;homestatus&amp;quot; data-device=&#039;dummy1&#039;&lt;br /&gt;
        data-get-on=&#039;[&amp;quot;home&amp;quot;,&amp;quot;asleep&amp;quot;,&amp;quot;absent&amp;quot;,&amp;quot;gone&amp;quot;,&amp;quot;gotosleep&amp;quot;]&#039;&lt;br /&gt;
        data-alias=&#039;[&amp;quot;Home&amp;quot;,&amp;quot;Night&amp;quot;,&amp;quot;Away&amp;quot;,&amp;quot;Holiday&amp;quot;,&amp;quot;Retire&amp;quot;]&#039;&lt;br /&gt;
        data-icons=&#039;[&amp;quot;fa-fire&amp;quot;,&amp;quot;fa-film&amp;quot;,&amp;quot;fa-plus&amp;quot;,&amp;quot;fa-car&amp;quot;,&amp;quot;fa-tint&amp;quot;]&#039;&lt;br /&gt;
        data-version=&#039;residents&#039;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:homestatus_tabletUI.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_image&amp;quot;&amp;gt;&#039;&#039;&#039;Image&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Erzeugt ein Widget mit einem Bild aus dem www, das alle 5 Sekunden aktualisiert wird (hier eine Wetterkarte vom DWD).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;image&amp;quot;&lt;br /&gt;
     data-size=&amp;quot;80%&amp;quot;&lt;br /&gt;
     data-url=&amp;quot;http://www.dwd.de/wundk/wetter/de/Deutschland.jpg&amp;quot;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:image_tabletUI.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example for how to add an image to the dashboard which its URL is delivered by a Fhem module like PROPLANTA:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;image&amp;quot; data-device=&amp;quot;Wetter1&amp;quot; &lt;br /&gt;
     data-get=&amp;quot;fc0_weatherDayIcon&amp;quot; &lt;br /&gt;
     data-size=&amp;quot;40px&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_label&amp;quot;&amp;gt;&#039;&#039;&#039;Label&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for HM-WDS40-TH-I Funk-Temperatur-/Feuchtesensor innen&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
STATE   T: 20.0 H: 61&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;THSensorWZ&amp;quot; &lt;br /&gt;
     data-part=&amp;quot;2&amp;quot; data-unit=&amp;quot;%B0C%0A&amp;quot; class=&amp;quot;cell big&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Temperatur&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;THSensorWZ&amp;quot; data-part=&amp;quot;4&amp;quot; &lt;br /&gt;
     data-unit=&amp;quot;%&amp;quot; class=&amp;quot;cell big&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Luftfeuchte&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
But the same result can reached by getting single readings:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
humidity    58&lt;br /&gt;
temperature 20.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;THSensorWZ&amp;quot; &lt;br /&gt;
     data-get=&amp;quot;temperature&amp;quot; data-unit=&amp;quot;%B0C%0A&amp;quot; class=&amp;quot;cell big&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Temperatur&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;THSensorWZ&amp;quot; &lt;br /&gt;
     data-get=&amp;quot;humidity&amp;quot; data-unit=&amp;quot;%&amp;quot; class=&amp;quot;cell big&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Luftfeuchte&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for how to influence the color of the label according to value limits&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; &lt;br /&gt;
     data-device=&amp;quot;OutTemp&amp;quot; &lt;br /&gt;
     data-limits=&#039;[-73,10,23]&#039; &lt;br /&gt;
     data-colors=&#039;[&amp;quot;#6699FF&amp;quot;,&amp;quot;#AA6900&amp;quot;,&amp;quot;#FF0000&amp;quot;]&#039; &lt;br /&gt;
     data-unit=&amp;quot;%B0C%0A&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell big&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for how to create a widget for shutter via push: show state and set up/down&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;switch&amp;quot; &lt;br /&gt;
     data-device=&amp;quot;wzRollo&amp;quot; &lt;br /&gt;
     data-get-on=&amp;quot;up&amp;quot; &lt;br /&gt;
     data-get-off=&amp;quot;down&amp;quot; &lt;br /&gt;
     data-icon=&amp;quot;fa-bars&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell&amp;quot;&amp;gt;Rollo&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for how to create a label for a time value in short format with usage of RegEx.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; &lt;br /&gt;
     data-device=&amp;quot;dummy1&amp;quot; &lt;br /&gt;
     data-part=&amp;quot;(\d\d\.\d\d\.).*&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for how to show two labels in one line.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;div type=&amp;quot;label&amp;quot; device=&amp;quot;OnSunrise&amp;quot; class=&amp;quot;inline&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;bis&lt;br /&gt;
   &amp;lt;div type=&amp;quot;label&amp;quot; device=&amp;quot;OnSunset&amp;quot; class=&amp;quot;inline&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel für die Anzeige des UV-Indexes und der Abhängigkeit der anzuzeigenden Farbe.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;wider cell bigger&amp;quot; data-device=&amp;quot;ProVorhersage&amp;quot;&lt;br /&gt;
        data-get=&amp;quot;fc0_uv&amp;quot;&lt;br /&gt;
        data-limits=&amp;quot;[-2, 2, 5, 7, 10]&amp;quot; &lt;br /&gt;
	data-colors=&#039;[&amp;quot;#66FF33&amp;quot;,&amp;quot;#FFFF00&amp;quot;,&amp;quot;#FF6600&amp;quot;,&amp;quot;#FF0000&amp;quot;,&amp;quot;#993399&amp;quot;]&#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
   &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot; data-device=&amp;quot;ProVorhersage&amp;quot; data-get=&amp;quot;fc0_date&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
   &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;wider cell bigger&amp;quot; data-device=&amp;quot;ProVorhersage&amp;quot;&lt;br /&gt;
        data-get=&amp;quot;fc1_uv&amp;quot;&lt;br /&gt;
	data-limits=&amp;quot;[-2, 2, 5, 7, 10]&amp;quot;&lt;br /&gt;
	data-colors=&#039;[&amp;quot;#66FF33&amp;quot;,&amp;quot;#FFFF00&amp;quot;,&amp;quot;#FF6600&amp;quot;,&amp;quot;#FF0000&amp;quot;,&amp;quot;#993399&amp;quot;]&#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
   &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot; data-device=&amp;quot;ProVorhersage&amp;quot; data-get=&amp;quot;fc1_date&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:label_tabletUI.jpg]]&lt;br /&gt;
&lt;br /&gt;
Beispiel für die Anzeige des Labels als Icon.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;AvReceiver&amp;quot; data-get=&amp;quot;input&amp;quot; class=&amp;quot;icon round bg-red cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;AvReceiver&amp;quot; data-get=&amp;quot;input&amp;quot; class=&amp;quot;icon square bg-blue cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;AvReceiver&amp;quot; data-get=&amp;quot;input&amp;quot; class=&amp;quot;icon squareborder cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;PowerAV_Sw&amp;quot; data-colors=&#039;[&amp;quot;red&amp;quot;,&amp;quot;green&amp;quot;]&#039; data-limits=&#039;[&amp;quot;off&amp;quot;,&amp;quot;on&amp;quot;]&#039; class=&amp;quot;icon round bg-limit cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Label_tabletUI_icon.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_pagetab&amp;quot;&amp;gt;&#039;&#039;&#039;Pagetab&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for a tab menu to switch smoothly between multiple pages. Multiple pagetabs in a template file: menu.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;header&amp;gt;MENU&amp;lt;/header&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;pagetab&amp;quot; data-url=&amp;quot;index.html&amp;quot;  data-icon=&amp;quot;fa-home&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;pagetab&amp;quot; data-url=&amp;quot;index_2.html&amp;quot; data-icon=&amp;quot;fa-sliders&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;pagetab&amp;quot; data-url=&amp;quot;index_3.html&amp;quot; data-icon=&amp;quot;fa-music&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;pagetab&amp;quot; data-url=&amp;quot;index_4.html&amp;quot; data-icon=&amp;quot;fa-hotel&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;pagetab&amp;quot; data-url=&amp;quot;index_5.html&amp;quot; data-icon=&amp;quot;fa-music&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;pagetab&amp;quot; data-url=&amp;quot;index_6.html&amp;quot; data-icon=&amp;quot;fa-database&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;pagetab&amp;quot; data-url=&amp;quot;index_7.html&amp;quot; data-icon=&amp;quot;fa-fax&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_playstream&amp;quot;&amp;gt;&#039;&#039;&#039;Playstream&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Erzeugt einen Knopf zum direkten Abspielen eines Webradio-Streams.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
     &amp;lt;div data-type=&amp;quot;playstream&amp;quot; data-url=&amp;quot;http://radioeins.de/stream&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
     &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;darker&amp;quot;&amp;gt;Radio eins&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_push&amp;quot;&amp;gt;&#039;&#039;&#039;Push&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for how to create a push button widget to trigger all devices on:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;push&amp;quot; &lt;br /&gt;
     data-device=&amp;quot;LightAll&amp;quot; &lt;br /&gt;
     data-cmd=&amp;quot;trigger&amp;quot; &lt;br /&gt;
     data-set=&amp;quot;on&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Beispiel für zwei horizontale Buttons:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;doublebox-h&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;push&amp;quot; data-device=&amp;quot;Rollo&amp;quot; &lt;br /&gt;
             data-icon=&amp;quot;fa-angle-up&amp;quot; data-background-icon=&amp;quot;fa-square-o&amp;quot; &lt;br /&gt;
             data-set=&amp;quot;up&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;push&amp;quot; data-device=&amp;quot;Rollo&amp;quot; &lt;br /&gt;
             data-icon=&amp;quot;fa-angle-down&amp;quot; data-background-icon=&amp;quot;fa-square-o&amp;quot; &lt;br /&gt;
             data-set=&amp;quot;down&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:push1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Beispiel für zwei quadratische vertikale Buttons:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;doublebox-v&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;push&amp;quot; data-device=&amp;quot;Rollo&amp;quot; &lt;br /&gt;
             data-icon=&amp;quot;fa-chevron-up&amp;quot; data-background-icon=&amp;quot;fa-square-o&amp;quot; &lt;br /&gt;
             data-set=&amp;quot;up&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;push&amp;quot; data-device=&amp;quot;Rollo&amp;quot; &lt;br /&gt;
            data-icon=&amp;quot;fa-chevron-down&amp;quot; data-background-icon=&amp;quot;fa-square-o&amp;quot; &lt;br /&gt;
            data-set=&amp;quot;down&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:push2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_rotor&amp;quot;&amp;gt;&#039;&#039;&#039;Rotor&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for a rotor widget, which switches between to days of weather forecast&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;rotor&amp;quot; class=&amp;quot;fade&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;darker&amp;quot;&amp;gt;Heute&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;weather&amp;quot; data-device=&amp;quot;AgroWeather&amp;quot; data-get=&amp;quot;fc0_weatherDay&amp;quot; class=&amp;quot;big&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;AgroWeather&amp;quot; data-get=&amp;quot;fc0_weatherDay&amp;quot; class=&amp;quot;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;AgroWeather&amp;quot; data-get=&amp;quot;fc0_tempMax&amp;quot; data-unit=&amp;quot;%B0C%0A&amp;quot; class=&amp;quot;large&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;darker&amp;quot;&amp;gt;Morgen&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;weather&amp;quot; data-device=&amp;quot;AgroWeather&amp;quot; data-get=&amp;quot;fc1_weatherDay&amp;quot; class=&amp;quot;big&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;AgroWeather&amp;quot; data-get=&amp;quot;fc1_weatherDay&amp;quot; class=&amp;quot;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;AgroWeather&amp;quot; data-get=&amp;quot;fc1_tempMax&amp;quot; data-unit=&amp;quot;%B0C%0A&amp;quot; class=&amp;quot;large&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_select&amp;quot;&amp;gt;&#039;&#039;&#039;Select&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Erzeugt zwei Comboboxen zur Auswahl des Eingang eines 2-Zonen-AV-Receivers. Die Liste für Zone2 ist fest, die Liste für Zone1 wird von Fhem übergeben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cell wider&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;inline wider&amp;quot;&amp;gt;Zone2&amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;div data-type=&amp;quot;select&amp;quot; data-device=&amp;quot;AvReceiverZ2&amp;quot; data-items=&#039;[&amp;quot;Airplay&amp;quot;,&amp;quot;Webradio&amp;quot;,&amp;quot;BD/DVD&amp;quot;,&amp;quot;PHONO&amp;quot;]&#039; data-get=&amp;quot;input&amp;quot; data-set=&amp;quot;input&amp;quot; class=&amp;quot;cell w2x&amp;quot; &amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;inline&amp;quot;&amp;gt;Zone1&amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;div data-type=&amp;quot;select&amp;quot; data-device=&amp;quot;AvReceiver&amp;quot; data-list=&amp;quot;inputs&amp;quot; data-get=&amp;quot;input&amp;quot; data-set=&amp;quot;input&amp;quot; class=&amp;quot;cell w2x&amp;quot; &amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:select_tabeltUI.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_slider&amp;quot;&amp;gt;&#039;&#039;&#039;Slider&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Slider mit einstellbaren Werten von 10 bis 90:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;slider&amp;quot; &lt;br /&gt;
     data-device=&#039;Dummy1&#039; &lt;br /&gt;
     data-min=&amp;quot;10&amp;quot; &lt;br /&gt;
     data-max=&amp;quot;90&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Light1&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:slider_tabletUI.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Horizontal angeordneter Slider:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;slider&amp;quot;&lt;br /&gt;
     data-device=&#039;Dummy1&#039; &lt;br /&gt;
     data-min=&amp;quot;0&amp;quot; &lt;br /&gt;
     data-max=&amp;quot;100&amp;quot; &lt;br /&gt;
     class=&amp;quot;horizontal&amp;quot; &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:slider_tabletUI2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_switch&amp;quot;&amp;gt;&#039;&#039;&#039;Switch&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Schalter. Usage of RegEx pattern for state request:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;switch&amp;quot; class=&amp;quot;cell&amp;quot; &lt;br /&gt;
            data-device=&amp;quot;MILIGHT_Zone1_Wohnzimmer&amp;quot; &lt;br /&gt;
            data-get-on=&amp;quot;on.*&amp;quot;&lt;br /&gt;
            data-get-off=&amp;quot;off&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:switch.png]]&lt;br /&gt;
&lt;br /&gt;
Beispiel für eine Gruppe von Schaltern, um zwischen vier verschiedenen Werten eines device umzuschalten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cell left&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;div data-type=&amp;quot;switch&amp;quot; data-device=&amp;quot;dummy1&amp;quot; &lt;br /&gt;
      data-get-off=&amp;quot;((?!Wert1).)*&amp;quot; &lt;br /&gt;
      data-get-on=&amp;quot;Wert1&amp;quot; class=&amp;quot;cell&amp;quot; &amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Wert1&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;div data-type=&amp;quot;switch&amp;quot; data-device=&amp;quot;dummy1&amp;quot; &lt;br /&gt;
      data-get-off=&amp;quot;((?!Wert2).)*&amp;quot; &lt;br /&gt;
      data-get-on=&amp;quot;Wert2&amp;quot; class=&amp;quot;cell&amp;quot; &amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Wert2&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;div data-type=&amp;quot;switch&amp;quot; data-device=&amp;quot;dummy1&amp;quot; &lt;br /&gt;
      data-get-off=&amp;quot;((?!Wert3).)*&amp;quot; &lt;br /&gt;
      data-get-on=&amp;quot;Wert3&amp;quot; class=&amp;quot;cell&amp;quot; &amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Wert3&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;div data-type=&amp;quot;switch&amp;quot; data-device=&amp;quot;dummy1&amp;quot; &lt;br /&gt;
      data-get-off=&amp;quot;((?!Wert4).)*&amp;quot; &lt;br /&gt;
      data-get-on=&amp;quot;Wert4&amp;quot; class=&amp;quot;cell&amp;quot; &amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Wert4&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:switch4.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_symbol&amp;quot;&amp;gt;&#039;&#039;&#039;Symbol&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for a tristate icon&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;symbol&amp;quot; data-device=&amp;quot;dummy1&amp;quot; &lt;br /&gt;
     data-get-on=&#039;[&amp;quot;wert1&amp;quot;,&amp;quot;wert2&amp;quot;,&amp;quot;wert3&amp;quot;]&#039; &lt;br /&gt;
     data-icons=&#039;[&amp;quot;fa-arrow-up&amp;quot;,&amp;quot;fa-user&amp;quot;,&amp;quot;fa-arrow-down&amp;quot;]&#039; &lt;br /&gt;
     data-on-colors=&#039;[&amp;quot;SeaGreen&amp;quot;,&amp;quot;SlateBlue&amp;quot;,&amp;quot;IndianRed&amp;quot;]&#039; &lt;br /&gt;
     class=&amp;quot;cell big&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example for a tristate icon with blink and spin animation&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;symbol&amp;quot; data-device=&amp;quot;dummy1&amp;quot; &lt;br /&gt;
     data-icons=&#039;[&amp;quot;fa-exclamation-triangle fa-blink&amp;quot;,&amp;quot;fa-exclamation-circle&amp;quot;,&amp;quot;fa-cog fa-spin&amp;quot;]&#039; &lt;br /&gt;
     data-on-colors=&#039;[&amp;quot;Crimson&amp;quot;,&amp;quot;GoldenRod&amp;quot;,&amp;quot;SeaGreen&amp;quot;]&#039; &lt;br /&gt;
     data-get-on=&#039;[&amp;quot;Wert1&amp;quot;,&amp;quot;Wert2&amp;quot;,&amp;quot;Wert3&amp;quot;]&#039; &amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example for a battery level control with RegEx&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;symbol&amp;quot; data-device=&amp;quot;BadHeizung&amp;quot; data-get=&amp;quot;batteryLevel&amp;quot;&lt;br /&gt;
     data-icons=&#039;[&amp;quot;oa-measure_battery_100&amp;quot;,&amp;quot;oa-measure_battery_75&amp;quot;,&amp;quot;oa-measure_battery_50&amp;quot;,&amp;quot;oa-measure_battery_25&amp;quot;,&amp;quot;oa-measure_battery_0&amp;quot;]&#039;&lt;br /&gt;
     data-get-on=&#039;[&amp;quot;3\\.[0-9]&amp;quot;,&amp;quot;2\\.[789]&amp;quot;,&amp;quot;2\\.[456]&amp;quot;,&amp;quot;2\\.[123]&amp;quot;,&amp;quot;((2\\.0)|([01]\\.[0-9]))&amp;quot;]&#039;&lt;br /&gt;
     data-on-colors=&#039;[&amp;quot;#505050&amp;quot;,&amp;quot;#505050&amp;quot;,&amp;quot;#505050&amp;quot;,&amp;quot;#ad3333&amp;quot;,&amp;quot;#ad3333&amp;quot;]&#039;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example for a battery level control with greater-equal compare and 90° rotated symbols&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;symbol&amp;quot; data-device=&amp;quot;BadHeizung&amp;quot; data-get=&amp;quot;batteryLevel&amp;quot;&lt;br /&gt;
    data-icons=&#039;[&amp;quot;oa-measure_battery_0 fa-rotate-90&amp;quot;,&amp;quot;oa-measure_battery_25 fa-rotate-90&amp;quot;,&amp;quot;oa-measure_battery_50 fa-rotate-90&amp;quot;,&amp;quot;oa-measure_battery_75 fa-rotate-90&amp;quot;,&amp;quot;oa-measure_battery_0 fa-rotate-90&amp;quot;]&#039;&lt;br /&gt;
    data-get-on=&#039;[&amp;quot;0&amp;quot;,&amp;quot;2&amp;quot;,&amp;quot;2.4&amp;quot;,&amp;quot;2.7&amp;quot;,&amp;quot;3.0&amp;quot;]&#039;&lt;br /&gt;
    data-on-colors=&#039;[&amp;quot;#ad3333&amp;quot;,&amp;quot;#ad3333&amp;quot;,&amp;quot;#505050&amp;quot;,&amp;quot;#505050&amp;quot;,&amp;quot;#505050&amp;quot;]&#039;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_thermostat&amp;quot;&amp;gt;&#039;&#039;&#039;Thermostat&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure as data-device=&#039;...&#039; that item which delivers temp and desired-temp as reading.&lt;br /&gt;
&lt;br /&gt;
Default parameters are:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
data-get=&amp;quot;desired-temp&amp;quot; data-temp=&amp;quot;measured-temp&amp;quot; data-set=&amp;quot;desired-temp&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Therefor for HomaMatic HM-CC-RT-DN this is sufficient.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;thermostat&amp;quot; data-device=&#039;KH_Clima&#039; class=&amp;quot;cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The long format looks like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;thermostat&amp;quot; &lt;br /&gt;
     data-device=&amp;quot;KH_Clima&amp;quot; &lt;br /&gt;
     data-get=&amp;quot;desired-temp&amp;quot; &lt;br /&gt;
     data-temp=&amp;quot;measured-temp&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example for MAX!:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;thermostat&amp;quot; data-device=&amp;quot;HZ_Tuer&amp;quot; &lt;br /&gt;
    data-valve=&amp;quot;valveposition&amp;quot; &lt;br /&gt;
    data-get=&amp;quot;desiredTemperature&amp;quot; &lt;br /&gt;
    data-temp=&amp;quot;temperature&amp;quot; &lt;br /&gt;
    data-set=&amp;quot;desiredTemperature&amp;quot; &lt;br /&gt;
    class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The wigets will show the valve value only in case of a valid data-valve attribute. The default for data-valve ist null. That means, a empty data-valve attribute hides the valve label for the widget.&lt;br /&gt;
&lt;br /&gt;
[[Datei:thermostat.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_weather&amp;quot;&amp;gt;&#039;&#039;&#039;Weather&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Widget fügt ein dem Wetter entsprechendes Bild ein. Die Daten können durch Fhem-Module wie [[PROPLANTA]], [[OPENWEATHER]] und [[Weather]] bereitgestellt werden. &lt;br /&gt;
Add &#039;big&#039; or &#039;bigger&#039; to CSS class to get a bigger weather icon.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;weather&amp;quot; &lt;br /&gt;
     data-device=&amp;quot;Weather&amp;quot; &lt;br /&gt;
     data-get=&amp;quot;fc0_weatherDay&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell big&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:weather.png]]&lt;br /&gt;
&lt;br /&gt;
== Icon-Konfiguration ==&lt;br /&gt;
&lt;br /&gt;
* Eingebaute Icons: Diese haben das ftui-Präfix. Zurzeit sind folgende verfügbar: ftui-window, ftui-door&lt;br /&gt;
&lt;br /&gt;
* Mehr als 500 Icons von &amp;quot;http://fortawesome.github.io/Font-Awesome/icons&amp;quot; verfügbar. Einfach den Icon-Namen angeben (Präfix &amp;quot;fa-&amp;quot; nicht vergessen, Z.B. &amp;lt;code&amp;gt;data-icon=&amp;quot;fa-volume-up&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Es stehen auch Openautomation Font-Files zur Verfügung. Wer sie nutzen möchte, muss folgende Stylesheets in die index.html hinzufügen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;/fhem/tablet/lib/openautomation.css&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;/fhem/tablet/lib/fhemSVG.css&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese font icons haben das Präfix &#039;fs-&#039; bzw. &#039;oa-&#039;.&lt;br /&gt;
&lt;br /&gt;
Beispiel bei einem Schalter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;div data-type=&amp;quot;switch&amp;quot; data-device=&#039;dummy1&#039; data-icon=&amp;quot;oa-secur_locked&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Und so als großes Symbol:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;symbol&amp;quot; data-device=&#039;dummy1&#039;&lt;br /&gt;
        data-icon=&amp;quot;oa-status_frost&amp;quot;&lt;br /&gt;
        data-on-color=&amp;quot;#bb3232&amp;quot;&lt;br /&gt;
        data-get-on=&amp;quot;on&amp;quot;&lt;br /&gt;
        data-get-off=&amp;quot;!on&amp;quot;&lt;br /&gt;
        class=&amp;quot;bigger&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Icons kann man auch etwas dicker darstellen mit den Zusatz bold: &amp;lt;code&amp;gt;data-icon=&amp;quot;oa-secur_locked bold&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Namen der verfügbaren Icons findet man auch in den CSS Files (openautomation.css / fhemSVG.css)&lt;br /&gt;
&lt;br /&gt;
== Spezial ==&lt;br /&gt;
Folgender Befehl setzt einen direkten Befehl an Fhem ab (&amp;lt;code&amp;gt;set dummy1 off&amp;lt;/code&amp;gt;):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
     &amp;lt;div onclick=&amp;quot;setFhemStatus(&#039;set dummy1 off&#039;)&amp;quot;&amp;gt;All off!&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
Häufig gestellte Fragen zum FHEM Tablet UI sind in der [[FHEM_Tablet_UI/FAQ|FHEM Tablet UI FAQ]] zusammengestellt.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://forum.fhem.de/index.php/topic,34233.0.html Forums-Beitrag]&lt;br /&gt;
* [https://github.com/knowthelist/fhem-tablet-ui Projekt auf Github]&lt;br /&gt;
* [http://forum.fhem.de/index.php/topic,37378.0.html User-Demos]&lt;br /&gt;
* [https://github.com/ovibox/fhem-ftui-user-demos Download der User-Demo-Dateien]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:FHEM Frontends]]&lt;/div&gt;</summary>
		<author><name>Svenson08</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=FHEM_Tablet_UI&amp;diff=14706</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=14706"/>
		<updated>2016-03-16T18:45:26Z</updated>

		<summary type="html">&lt;p&gt;Svenson08: /* Widgets SYMBOL */&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:&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;))&lt;br /&gt;
|&#039;lines&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-uaxis&lt;br /&gt;
|name of the axis to be used (&#039;primary&#039; or &#039;secondary&#039;) or or array of axis&#039; to be used if more than one graph shall be displayed. The &#039;primary&#039; axis is labelled on the left side, the &#039;secondary&#039; axis is labelled on the right side&lt;br /&gt;
|&#039;primary&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-legend&lt;br /&gt;
|caption of the graph (used in the legend and at the cursor) or an array of legend texts if more than one graph shall be displayed.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-minvalue&lt;br /&gt;
|min Y value to Show or an array of values for dynamic minY for primary axis. A value of &#039;auto&#039; means that the value is calculated from the data displayed dynamically&lt;br /&gt;
|10&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-minvalue_sec&lt;br /&gt;
|min Y value to Show or an array of values for dynamic minY for secondary axis. A value of &#039;auto&#039; means that the value is calculated from the data displayed dynamically&lt;br /&gt;
|&#039;auto&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-maxvalue&lt;br /&gt;
|max Y value to Show or an array of values for dynamic maxY for primary axis. A value of &#039;auto&#039; means that the value is calculated from the data displayed dynamically&lt;br /&gt;
|30&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-maxvalue_sec&lt;br /&gt;
|max Y value to Show or an array of values for dynamic maxY for secondary axis. A value of &#039;auto&#039; means that the value is calculated from the data displayed dynamically&lt;br /&gt;
|&#039;auto&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-yticks&lt;br /&gt;
|value distance between Y tick lines (related to primary axis). A value of &#039;auto&#039; means that the value is calculated from the data displayed dynamically.&lt;br /&gt;
|&#039;auto&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-xticks&lt;br /&gt;
|time range between each X tick lines (in minutes). A value of &#039;auto&#039; means that the value is calculated from the data displayed dynamically&lt;br /&gt;
|&#039;auto&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-daysago_start&lt;br /&gt;
|number of days back from now for the start of the plot (0 means the plot starts from today 0:00). Additionally the x-axis start value can be set here unsing standard data formats like (&#039;2013-10-23&#039;), the time portion of the string is only used when &amp;lt;code&amp;gt;data-nofulldays&amp;lt;/code&amp;gt; is &#039;true&#039;.&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-daysago_end&lt;br /&gt;
|number of days back from now for the end of the plot (-1 means the plot ends today 24:00). Additionally the x-axis end value can be set here unsing standard data formats like (&#039;2013-10-23&#039;), the time portion of the string is only used when &amp;lt;code&amp;gt;data-nofulldays&amp;lt;/code&amp;gt; is &#039;true&#039;.&lt;br /&gt;
|-1&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-nofulldays&lt;br /&gt;
|switch to activate/deactivate rounding of the xaxis start and end values to full days (&#039;true&#039; or &#039;false&#039;)&lt;br /&gt;
|&#039;false&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-ytext&lt;br /&gt;
|text to be shown besides the primary y axis.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-ytext_sec&lt;br /&gt;
|text to be shown besides the secondary y axis.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-yunit&lt;br /&gt;
|unit of the value to show beside of each Y ticks for primary y axis.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-crosshair&lt;br /&gt;
|switch to activate/deactivate the crosshair cursor (&#039;true&#039; or &#039;false&#039;)&lt;br /&gt;
|&#039;false&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-cursorgroup&lt;br /&gt;
|number to define coupling of the crosshair cursor. The cursors of all charts having the same number are coupled and move together.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-scrollgroup&lt;br /&gt;
|number to define coupling of the scrolling (shift and zoom). All charts having the same number are scrolled (shifted and zoomed) together.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-showlegend&lt;br /&gt;
|switch to activate/deactivate the initial display of the legend window (&#039;true&#039; or &#039;false&#039;)&lt;br /&gt;
|&#039;false&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-yunit_sec&lt;br /&gt;
|unit of the value to show beside of each Y ticks for secondary y axis.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-width&lt;br /&gt;
|fixed size for width (in&amp;amp;nbsp;% or px)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-height&lt;br /&gt;
|fixed size for height (in&amp;amp;nbsp;% or px)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |class&lt;br /&gt;
|fullsize, noticks, nobuttons&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;data-logfile&amp;lt;/code&amp;gt; can be omitted in this case the default value &amp;quot;-&amp;quot; will be used. This means that the current logfile is going to be used.&lt;br /&gt;
&lt;br /&gt;
There are several buttons that control the dynamic behaviour of the chart. The &amp;lt;-, -&amp;gt;, + and - buttons shift and zoom the displayed data. The &amp;quot;legend&amp;quot; and &amp;quot;cursor&amp;quot; buttons are switching on and off the display of the legend window and the crosshair cursor respectively.&lt;br /&gt;
&lt;br /&gt;
When the legend window is displayed, a click on the legend text shows/hides the respective graph. The legend window can be dragged to other positions on desktop browsers (currently not yet working for iOS and Android).&lt;br /&gt;
&lt;br /&gt;
The crosshair cursor currently only works dynamically on desktop browsers. On iOS and Android you have to tap on the screen to set the cursor to a new position.&lt;br /&gt;
&lt;br /&gt;
There is a number of css styles that control the visible appearance of the chart. The following classes are supported:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!CSS class name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
!.chart-background&lt;br /&gt;
|Color etc. for the chart background&lt;br /&gt;
|-&lt;br /&gt;
!.text.axes&lt;br /&gt;
|Font and color for the chart axes&lt;br /&gt;
|-&lt;br /&gt;
!.buttons&lt;br /&gt;
|Size and color for the buttons (shift etc.)&lt;br /&gt;
|-&lt;br /&gt;
!.gridlines&lt;br /&gt;
|Size and color for gridlines generally&lt;br /&gt;
|-&lt;br /&gt;
!.xaxis&lt;br /&gt;
|Font, size and color for xaxis&lt;br /&gt;
|-&lt;br /&gt;
!.yaxis&lt;br /&gt;
|Font, size and color for yaxis&lt;br /&gt;
|-&lt;br /&gt;
!.xticks&lt;br /&gt;
|Font, size and color for xticks&lt;br /&gt;
|-&lt;br /&gt;
!.yticks&lt;br /&gt;
|Font, size and color for yticks&lt;br /&gt;
|-&lt;br /&gt;
!.crosshair&lt;br /&gt;
|Font, size and color (foreground/background) for the crosshair cursor&lt;br /&gt;
|-&lt;br /&gt;
!.caption&lt;br /&gt;
|Font, size and color for text buttons for legend and cursor switching&lt;br /&gt;
|-&lt;br /&gt;
!.legend&lt;br /&gt;
|Font, size and background color for legend window&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[#Beispiel_chart|Link zu einem Beispiel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;circlemenu&amp;quot;&amp;gt;&#039;&#039;&#039;CIRCLEMENU&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!HTML Attribut&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Default Wert&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-item-diameter&lt;br /&gt;
|diameter of the circle&lt;br /&gt;
|52&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-circle-radius&lt;br /&gt;
|radius of each item, in pixel&lt;br /&gt;
|70&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-direction&lt;br /&gt;
|position of the items in relation to the center&lt;br /&gt;
|&#039;full&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-close-after&lt;br /&gt;
|closing time of the circle-menu&lt;br /&gt;
|(item-count + 1s) or a minimum of 4s&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |class&lt;br /&gt;
|keepopen&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Optionen für data-direction: top | right | bottom | left | top-right | top-left | bottom-right | bottom-left | top-half | right-half | bottom-half | left-half | full | vertical | horizontal&lt;br /&gt;
&lt;br /&gt;
[[#Beispiel_circlemenu|Link zu einem Beispiel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;dimmer&amp;quot;&amp;gt;&#039;&#039;&#039;DIMMER&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!HTML Attribut&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Default Wert&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get&lt;br /&gt;
|name of the reading to get from Fhem&lt;br /&gt;
|&#039;STATE&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get-on&lt;br /&gt;
|value for ON status to get&lt;br /&gt;
|&#039;on&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get-off&lt;br /&gt;
|value for OFF status to get&lt;br /&gt;
|&#039;off&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-set&lt;br /&gt;
|(&amp;lt;command&amp;gt; &amp;lt;device&amp;gt; &amp;lt;reading&amp;gt; &amp;lt;value&amp;gt;) &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-set-on&lt;br /&gt;
|value for ON status to set&lt;br /&gt;
|value of data-get-on&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-set-off&lt;br /&gt;
|value for OFF status to set&lt;br /&gt;
|value of data-get-off&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-cmd&lt;br /&gt;
|name of the command (&amp;lt;command&amp;gt; &amp;lt;device&amp;gt; &amp;lt;value&amp;gt;) (e.g. setstate, set, setreading, trigger)&lt;br /&gt;
|&#039;set&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-dim&lt;br /&gt;
|name of the reading responsible for dim (&amp;lt;command&amp;gt; &amp;lt;device&amp;gt; &amp;lt;reading&amp;gt; &amp;lt;value&amp;gt;) &lt;br /&gt;
|value of data-get-on&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-icon&lt;br /&gt;
|name of the font-awesome icon&lt;br /&gt;
|fa-lightbulb-o&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[#Beispiel_dimmer|Link zu einem Beispiel]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;homestatus&amp;quot;&amp;gt;&#039;&#039;&#039;HOMESTATUS&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!HTML Attribut&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Default Wert&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get&lt;br /&gt;
|name of the reading to get from Fhem&lt;br /&gt;
|&#039;STATE&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-set&lt;br /&gt;
|command to send to Fhem (&amp;lt;code&amp;gt;set &amp;lt;device&amp;gt; &amp;lt;command&amp;gt; &amp;lt;value&amp;gt;&amp;lt;/code&amp;gt;)&lt;br /&gt;
|&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-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;
=== Widgets 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;
=== Widgets 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-state&lt;br /&gt;
|Array mit Status Angaben &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-set-state&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-backgroundicons&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;
=== Widgets 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_dimmer&amp;quot;&amp;gt;&#039;&#039;&#039;Dimmer&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dimmer Widget Beispiel für Philips Hue&lt;br /&gt;
&lt;br /&gt;
Minimalvariante&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
&amp;lt;div data-type=&amp;quot;dimmer&amp;quot; data-device=&amp;quot;HUEDevice1&amp;quot;&lt;br /&gt;
        data-get-on=&amp;quot;!off&amp;quot; data-get-off=&amp;quot;off&amp;quot;&lt;br /&gt;
        data-set=&amp;quot;pct&amp;quot;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit Anzeige der Dimstufe&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;dimmer&amp;quot; data-device=&amp;quot;HUEDevice1&amp;quot;&lt;br /&gt;
       data-get=&amp;quot;onoff&amp;quot;&lt;br /&gt;
       data-get-on=&amp;quot;1&amp;quot; data-get-off=&amp;quot;0&amp;quot;&lt;br /&gt;
       data-set=&amp;quot;&amp;quot;&lt;br /&gt;
       data-set-on=&amp;quot;on&amp;quot; data-set-off=&amp;quot;off&amp;quot;&lt;br /&gt;
       data-dim=&amp;quot;pct&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dimmer Widget für MilightDevice&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;dimmer&amp;quot;&lt;br /&gt;
  data-device=&amp;quot;SonstWas&amp;quot;&lt;br /&gt;
  data-get=&amp;quot;brightness&amp;quot;&lt;br /&gt;
  data-get-off=&amp;quot;0&amp;quot;&lt;br /&gt;
  data-get-on=&amp;quot;[1-9][0-9]*&amp;quot;&lt;br /&gt;
  data-set-on=&amp;quot;on&amp;quot;&lt;br /&gt;
  data-set-off=&amp;quot;off&amp;quot;&lt;br /&gt;
  data-dim=&amp;quot;dim&amp;quot;&lt;br /&gt;
  data-min=&amp;quot;0&amp;quot;&lt;br /&gt;
  data-max=&amp;quot;100&amp;quot;&lt;br /&gt;
&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_homestatus&amp;quot;&amp;gt;&#039;&#039;&#039;Homestatus&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel rechts im Bild:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;homestatus&amp;quot; data-device=&#039;dummy1&#039;&lt;br /&gt;
       data-get-on=&#039;[&amp;quot;1&amp;quot;,&amp;quot;2&amp;quot;,&amp;quot;3&amp;quot;,&amp;quot;4&amp;quot;]&#039;&lt;br /&gt;
       data-alias=&#039;[&amp;quot;Home&amp;quot;,&amp;quot;Night&amp;quot;,&amp;quot;Away&amp;quot;,&amp;quot;Holiday&amp;quot;]&#039;&lt;br /&gt;
       data-icons=&#039;[&amp;quot;fa-home&amp;quot;,&amp;quot;fa-bed&amp;quot;,&amp;quot;fa-car&amp;quot;,&amp;quot;fa-suitcase&amp;quot;]&#039;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel links im Bild:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;homestatus&amp;quot; data-device=&#039;dummy1&#039;&lt;br /&gt;
        data-get-on=&#039;[&amp;quot;home&amp;quot;,&amp;quot;asleep&amp;quot;,&amp;quot;absent&amp;quot;,&amp;quot;gone&amp;quot;,&amp;quot;gotosleep&amp;quot;]&#039;&lt;br /&gt;
        data-alias=&#039;[&amp;quot;Home&amp;quot;,&amp;quot;Night&amp;quot;,&amp;quot;Away&amp;quot;,&amp;quot;Holiday&amp;quot;,&amp;quot;Retire&amp;quot;]&#039;&lt;br /&gt;
        data-icons=&#039;[&amp;quot;fa-fire&amp;quot;,&amp;quot;fa-film&amp;quot;,&amp;quot;fa-plus&amp;quot;,&amp;quot;fa-car&amp;quot;,&amp;quot;fa-tint&amp;quot;]&#039;&lt;br /&gt;
        data-version=&#039;residents&#039;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:homestatus_tabletUI.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_image&amp;quot;&amp;gt;&#039;&#039;&#039;Image&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Erzeugt ein Widget mit einem Bild aus dem www, das alle 5 Sekunden aktualisiert wird (hier eine Wetterkarte vom DWD).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;image&amp;quot;&lt;br /&gt;
     data-size=&amp;quot;80%&amp;quot;&lt;br /&gt;
     data-url=&amp;quot;http://www.dwd.de/wundk/wetter/de/Deutschland.jpg&amp;quot;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:image_tabletUI.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example for how to add an image to the dashboard which its URL is delivered by a Fhem module like PROPLANTA:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;image&amp;quot; data-device=&amp;quot;Wetter1&amp;quot; &lt;br /&gt;
     data-get=&amp;quot;fc0_weatherDayIcon&amp;quot; &lt;br /&gt;
     data-size=&amp;quot;40px&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_label&amp;quot;&amp;gt;&#039;&#039;&#039;Label&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for HM-WDS40-TH-I Funk-Temperatur-/Feuchtesensor innen&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
STATE   T: 20.0 H: 61&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;THSensorWZ&amp;quot; &lt;br /&gt;
     data-part=&amp;quot;2&amp;quot; data-unit=&amp;quot;%B0C%0A&amp;quot; class=&amp;quot;cell big&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Temperatur&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;THSensorWZ&amp;quot; data-part=&amp;quot;4&amp;quot; &lt;br /&gt;
     data-unit=&amp;quot;%&amp;quot; class=&amp;quot;cell big&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Luftfeuchte&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
But the same result can reached by getting single readings:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
humidity    58&lt;br /&gt;
temperature 20.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;THSensorWZ&amp;quot; &lt;br /&gt;
     data-get=&amp;quot;temperature&amp;quot; data-unit=&amp;quot;%B0C%0A&amp;quot; class=&amp;quot;cell big&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Temperatur&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;THSensorWZ&amp;quot; &lt;br /&gt;
     data-get=&amp;quot;humidity&amp;quot; data-unit=&amp;quot;%&amp;quot; class=&amp;quot;cell big&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Luftfeuchte&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for how to influence the color of the label according to value limits&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; &lt;br /&gt;
     data-device=&amp;quot;OutTemp&amp;quot; &lt;br /&gt;
     data-limits=&#039;[-73,10,23]&#039; &lt;br /&gt;
     data-colors=&#039;[&amp;quot;#6699FF&amp;quot;,&amp;quot;#AA6900&amp;quot;,&amp;quot;#FF0000&amp;quot;]&#039; &lt;br /&gt;
     data-unit=&amp;quot;%B0C%0A&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell big&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for how to create a widget for shutter via push: show state and set up/down&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;switch&amp;quot; &lt;br /&gt;
     data-device=&amp;quot;wzRollo&amp;quot; &lt;br /&gt;
     data-get-on=&amp;quot;up&amp;quot; &lt;br /&gt;
     data-get-off=&amp;quot;down&amp;quot; &lt;br /&gt;
     data-icon=&amp;quot;fa-bars&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell&amp;quot;&amp;gt;Rollo&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for how to create a label for a time value in short format with usage of RegEx.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; &lt;br /&gt;
     data-device=&amp;quot;dummy1&amp;quot; &lt;br /&gt;
     data-part=&amp;quot;(\d\d\.\d\d\.).*&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for how to show two labels in one line.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;div type=&amp;quot;label&amp;quot; device=&amp;quot;OnSunrise&amp;quot; class=&amp;quot;inline&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;bis&lt;br /&gt;
   &amp;lt;div type=&amp;quot;label&amp;quot; device=&amp;quot;OnSunset&amp;quot; class=&amp;quot;inline&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel für die Anzeige des UV-Indexes und der Abhängigkeit der anzuzeigenden Farbe.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;wider cell bigger&amp;quot; data-device=&amp;quot;ProVorhersage&amp;quot;&lt;br /&gt;
        data-get=&amp;quot;fc0_uv&amp;quot;&lt;br /&gt;
        data-limits=&amp;quot;[-2, 2, 5, 7, 10]&amp;quot; &lt;br /&gt;
	data-colors=&#039;[&amp;quot;#66FF33&amp;quot;,&amp;quot;#FFFF00&amp;quot;,&amp;quot;#FF6600&amp;quot;,&amp;quot;#FF0000&amp;quot;,&amp;quot;#993399&amp;quot;]&#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
   &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot; data-device=&amp;quot;ProVorhersage&amp;quot; data-get=&amp;quot;fc0_date&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
   &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;wider cell bigger&amp;quot; data-device=&amp;quot;ProVorhersage&amp;quot;&lt;br /&gt;
        data-get=&amp;quot;fc1_uv&amp;quot;&lt;br /&gt;
	data-limits=&amp;quot;[-2, 2, 5, 7, 10]&amp;quot;&lt;br /&gt;
	data-colors=&#039;[&amp;quot;#66FF33&amp;quot;,&amp;quot;#FFFF00&amp;quot;,&amp;quot;#FF6600&amp;quot;,&amp;quot;#FF0000&amp;quot;,&amp;quot;#993399&amp;quot;]&#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
   &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot; data-device=&amp;quot;ProVorhersage&amp;quot; data-get=&amp;quot;fc1_date&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:label_tabletUI.jpg]]&lt;br /&gt;
&lt;br /&gt;
Beispiel für die Anzeige des Labels als Icon.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;AvReceiver&amp;quot; data-get=&amp;quot;input&amp;quot; class=&amp;quot;icon round bg-red cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;AvReceiver&amp;quot; data-get=&amp;quot;input&amp;quot; class=&amp;quot;icon square bg-blue cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;AvReceiver&amp;quot; data-get=&amp;quot;input&amp;quot; class=&amp;quot;icon squareborder cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;PowerAV_Sw&amp;quot; data-colors=&#039;[&amp;quot;red&amp;quot;,&amp;quot;green&amp;quot;]&#039; data-limits=&#039;[&amp;quot;off&amp;quot;,&amp;quot;on&amp;quot;]&#039; class=&amp;quot;icon round bg-limit cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Label_tabletUI_icon.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_pagetab&amp;quot;&amp;gt;&#039;&#039;&#039;Pagetab&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for a tab menu to switch smoothly between multiple pages. Multiple pagetabs in a template file: menu.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;header&amp;gt;MENU&amp;lt;/header&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;pagetab&amp;quot; data-url=&amp;quot;index.html&amp;quot;  data-icon=&amp;quot;fa-home&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;pagetab&amp;quot; data-url=&amp;quot;index_2.html&amp;quot; data-icon=&amp;quot;fa-sliders&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;pagetab&amp;quot; data-url=&amp;quot;index_3.html&amp;quot; data-icon=&amp;quot;fa-music&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;pagetab&amp;quot; data-url=&amp;quot;index_4.html&amp;quot; data-icon=&amp;quot;fa-hotel&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;pagetab&amp;quot; data-url=&amp;quot;index_5.html&amp;quot; data-icon=&amp;quot;fa-music&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;pagetab&amp;quot; data-url=&amp;quot;index_6.html&amp;quot; data-icon=&amp;quot;fa-database&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;pagetab&amp;quot; data-url=&amp;quot;index_7.html&amp;quot; data-icon=&amp;quot;fa-fax&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_playstream&amp;quot;&amp;gt;&#039;&#039;&#039;Playstream&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Erzeugt einen Knopf zum direkten Abspielen eines Webradio-Streams.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
     &amp;lt;div data-type=&amp;quot;playstream&amp;quot; data-url=&amp;quot;http://radioeins.de/stream&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
     &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;darker&amp;quot;&amp;gt;Radio eins&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_push&amp;quot;&amp;gt;&#039;&#039;&#039;Push&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for how to create a push button widget to trigger all devices on:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;push&amp;quot; &lt;br /&gt;
     data-device=&amp;quot;LightAll&amp;quot; &lt;br /&gt;
     data-cmd=&amp;quot;trigger&amp;quot; &lt;br /&gt;
     data-set=&amp;quot;on&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Beispiel für zwei horizontale Buttons:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;doublebox-h&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;push&amp;quot; data-device=&amp;quot;Rollo&amp;quot; &lt;br /&gt;
             data-icon=&amp;quot;fa-angle-up&amp;quot; data-background-icon=&amp;quot;fa-square-o&amp;quot; &lt;br /&gt;
             data-set=&amp;quot;up&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;push&amp;quot; data-device=&amp;quot;Rollo&amp;quot; &lt;br /&gt;
             data-icon=&amp;quot;fa-angle-down&amp;quot; data-background-icon=&amp;quot;fa-square-o&amp;quot; &lt;br /&gt;
             data-set=&amp;quot;down&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:push1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Beispiel für zwei quadratische vertikale Buttons:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;doublebox-v&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;push&amp;quot; data-device=&amp;quot;Rollo&amp;quot; &lt;br /&gt;
             data-icon=&amp;quot;fa-chevron-up&amp;quot; data-background-icon=&amp;quot;fa-square-o&amp;quot; &lt;br /&gt;
             data-set=&amp;quot;up&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;push&amp;quot; data-device=&amp;quot;Rollo&amp;quot; &lt;br /&gt;
            data-icon=&amp;quot;fa-chevron-down&amp;quot; data-background-icon=&amp;quot;fa-square-o&amp;quot; &lt;br /&gt;
            data-set=&amp;quot;down&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:push2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_rotor&amp;quot;&amp;gt;&#039;&#039;&#039;Rotor&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for a rotor widget, which switches between to days of weather forecast&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;rotor&amp;quot; class=&amp;quot;fade&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;darker&amp;quot;&amp;gt;Heute&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;weather&amp;quot; data-device=&amp;quot;AgroWeather&amp;quot; data-get=&amp;quot;fc0_weatherDay&amp;quot; class=&amp;quot;big&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;AgroWeather&amp;quot; data-get=&amp;quot;fc0_weatherDay&amp;quot; class=&amp;quot;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;AgroWeather&amp;quot; data-get=&amp;quot;fc0_tempMax&amp;quot; data-unit=&amp;quot;%B0C%0A&amp;quot; class=&amp;quot;large&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;darker&amp;quot;&amp;gt;Morgen&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;weather&amp;quot; data-device=&amp;quot;AgroWeather&amp;quot; data-get=&amp;quot;fc1_weatherDay&amp;quot; class=&amp;quot;big&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;AgroWeather&amp;quot; data-get=&amp;quot;fc1_weatherDay&amp;quot; class=&amp;quot;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;AgroWeather&amp;quot; data-get=&amp;quot;fc1_tempMax&amp;quot; data-unit=&amp;quot;%B0C%0A&amp;quot; class=&amp;quot;large&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_select&amp;quot;&amp;gt;&#039;&#039;&#039;Select&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Erzeugt zwei Comboboxen zur Auswahl des Eingang eines 2-Zonen-AV-Receivers. Die Liste für Zone2 ist fest, die Liste für Zone1 wird von Fhem übergeben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cell wider&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;inline wider&amp;quot;&amp;gt;Zone2&amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;div data-type=&amp;quot;select&amp;quot; data-device=&amp;quot;AvReceiverZ2&amp;quot; data-items=&#039;[&amp;quot;Airplay&amp;quot;,&amp;quot;Webradio&amp;quot;,&amp;quot;BD/DVD&amp;quot;,&amp;quot;PHONO&amp;quot;]&#039; data-get=&amp;quot;input&amp;quot; data-set=&amp;quot;input&amp;quot; class=&amp;quot;cell w2x&amp;quot; &amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;inline&amp;quot;&amp;gt;Zone1&amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;div data-type=&amp;quot;select&amp;quot; data-device=&amp;quot;AvReceiver&amp;quot; data-list=&amp;quot;inputs&amp;quot; data-get=&amp;quot;input&amp;quot; data-set=&amp;quot;input&amp;quot; class=&amp;quot;cell w2x&amp;quot; &amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:select_tabeltUI.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_slider&amp;quot;&amp;gt;&#039;&#039;&#039;Slider&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Slider mit einstellbaren Werten von 10 bis 90:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;slider&amp;quot; &lt;br /&gt;
     data-device=&#039;Dummy1&#039; &lt;br /&gt;
     data-min=&amp;quot;10&amp;quot; &lt;br /&gt;
     data-max=&amp;quot;90&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Light1&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:slider_tabletUI.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Horizontal angeordneter Slider:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;slider&amp;quot;&lt;br /&gt;
     data-device=&#039;Dummy1&#039; &lt;br /&gt;
     data-min=&amp;quot;0&amp;quot; &lt;br /&gt;
     data-max=&amp;quot;100&amp;quot; &lt;br /&gt;
     class=&amp;quot;horizontal&amp;quot; &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:slider_tabletUI2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_switch&amp;quot;&amp;gt;&#039;&#039;&#039;Switch&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Schalter. Usage of RegEx pattern for state request:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;switch&amp;quot; class=&amp;quot;cell&amp;quot; &lt;br /&gt;
            data-device=&amp;quot;MILIGHT_Zone1_Wohnzimmer&amp;quot; &lt;br /&gt;
            data-get-on=&amp;quot;on.*&amp;quot;&lt;br /&gt;
            data-get-off=&amp;quot;off&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:switch.png]]&lt;br /&gt;
&lt;br /&gt;
Beispiel für eine Gruppe von Schaltern, um zwischen vier verschiedenen Werten eines device umzuschalten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cell left&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;div data-type=&amp;quot;switch&amp;quot; data-device=&amp;quot;dummy1&amp;quot; &lt;br /&gt;
      data-get-off=&amp;quot;((?!Wert1).)*&amp;quot; &lt;br /&gt;
      data-get-on=&amp;quot;Wert1&amp;quot; class=&amp;quot;cell&amp;quot; &amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Wert1&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;div data-type=&amp;quot;switch&amp;quot; data-device=&amp;quot;dummy1&amp;quot; &lt;br /&gt;
      data-get-off=&amp;quot;((?!Wert2).)*&amp;quot; &lt;br /&gt;
      data-get-on=&amp;quot;Wert2&amp;quot; class=&amp;quot;cell&amp;quot; &amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Wert2&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;div data-type=&amp;quot;switch&amp;quot; data-device=&amp;quot;dummy1&amp;quot; &lt;br /&gt;
      data-get-off=&amp;quot;((?!Wert3).)*&amp;quot; &lt;br /&gt;
      data-get-on=&amp;quot;Wert3&amp;quot; class=&amp;quot;cell&amp;quot; &amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Wert3&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;div data-type=&amp;quot;switch&amp;quot; data-device=&amp;quot;dummy1&amp;quot; &lt;br /&gt;
      data-get-off=&amp;quot;((?!Wert4).)*&amp;quot; &lt;br /&gt;
      data-get-on=&amp;quot;Wert4&amp;quot; class=&amp;quot;cell&amp;quot; &amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Wert4&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:switch4.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_symbol&amp;quot;&amp;gt;&#039;&#039;&#039;Symbol&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for a tristate icon&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;symbol&amp;quot; data-device=&amp;quot;dummy1&amp;quot; &lt;br /&gt;
     data-get-on=&#039;[&amp;quot;wert1&amp;quot;,&amp;quot;wert2&amp;quot;,&amp;quot;wert3&amp;quot;]&#039; &lt;br /&gt;
     data-icons=&#039;[&amp;quot;fa-arrow-up&amp;quot;,&amp;quot;fa-user&amp;quot;,&amp;quot;fa-arrow-down&amp;quot;]&#039; &lt;br /&gt;
     data-on-colors=&#039;[&amp;quot;SeaGreen&amp;quot;,&amp;quot;SlateBlue&amp;quot;,&amp;quot;IndianRed&amp;quot;]&#039; &lt;br /&gt;
     class=&amp;quot;cell big&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example for a tristate icon with blink and spin animation&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;symbol&amp;quot; data-device=&amp;quot;dummy1&amp;quot; &lt;br /&gt;
     data-icons=&#039;[&amp;quot;fa-exclamation-triangle fa-blink&amp;quot;,&amp;quot;fa-exclamation-circle&amp;quot;,&amp;quot;fa-cog fa-spin&amp;quot;]&#039; &lt;br /&gt;
     data-on-colors=&#039;[&amp;quot;Crimson&amp;quot;,&amp;quot;GoldenRod&amp;quot;,&amp;quot;SeaGreen&amp;quot;]&#039; &lt;br /&gt;
     data-get-on=&#039;[&amp;quot;Wert1&amp;quot;,&amp;quot;Wert2&amp;quot;,&amp;quot;Wert3&amp;quot;]&#039; &amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example for a battery level control with RegEx&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;symbol&amp;quot; data-device=&amp;quot;BadHeizung&amp;quot; data-get=&amp;quot;batteryLevel&amp;quot;&lt;br /&gt;
     data-icons=&#039;[&amp;quot;oa-measure_battery_100&amp;quot;,&amp;quot;oa-measure_battery_75&amp;quot;,&amp;quot;oa-measure_battery_50&amp;quot;,&amp;quot;oa-measure_battery_25&amp;quot;,&amp;quot;oa-measure_battery_0&amp;quot;]&#039;&lt;br /&gt;
     data-get-on=&#039;[&amp;quot;3\\.[0-9]&amp;quot;,&amp;quot;2\\.[789]&amp;quot;,&amp;quot;2\\.[456]&amp;quot;,&amp;quot;2\\.[123]&amp;quot;,&amp;quot;((2\\.0)|([01]\\.[0-9]))&amp;quot;]&#039;&lt;br /&gt;
     data-on-colors=&#039;[&amp;quot;#505050&amp;quot;,&amp;quot;#505050&amp;quot;,&amp;quot;#505050&amp;quot;,&amp;quot;#ad3333&amp;quot;,&amp;quot;#ad3333&amp;quot;]&#039;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example for a battery level control with greater-equal compare and 90° rotated symbols&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;symbol&amp;quot; data-device=&amp;quot;BadHeizung&amp;quot; data-get=&amp;quot;batteryLevel&amp;quot;&lt;br /&gt;
    data-icons=&#039;[&amp;quot;oa-measure_battery_0 fa-rotate-90&amp;quot;,&amp;quot;oa-measure_battery_25 fa-rotate-90&amp;quot;,&amp;quot;oa-measure_battery_50 fa-rotate-90&amp;quot;,&amp;quot;oa-measure_battery_75 fa-rotate-90&amp;quot;,&amp;quot;oa-measure_battery_0 fa-rotate-90&amp;quot;]&#039;&lt;br /&gt;
    data-get-on=&#039;[&amp;quot;0&amp;quot;,&amp;quot;2&amp;quot;,&amp;quot;2.4&amp;quot;,&amp;quot;2.7&amp;quot;,&amp;quot;3.0&amp;quot;]&#039;&lt;br /&gt;
    data-on-colors=&#039;[&amp;quot;#ad3333&amp;quot;,&amp;quot;#ad3333&amp;quot;,&amp;quot;#505050&amp;quot;,&amp;quot;#505050&amp;quot;,&amp;quot;#505050&amp;quot;]&#039;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_thermostat&amp;quot;&amp;gt;&#039;&#039;&#039;Thermostat&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure as data-device=&#039;...&#039; that item which delivers temp and desired-temp as reading.&lt;br /&gt;
&lt;br /&gt;
Default parameters are:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
data-get=&amp;quot;desired-temp&amp;quot; data-temp=&amp;quot;measured-temp&amp;quot; data-set=&amp;quot;desired-temp&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Therefor for HomaMatic HM-CC-RT-DN this is sufficient.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;thermostat&amp;quot; data-device=&#039;KH_Clima&#039; class=&amp;quot;cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The long format looks like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;thermostat&amp;quot; &lt;br /&gt;
     data-device=&amp;quot;KH_Clima&amp;quot; &lt;br /&gt;
     data-get=&amp;quot;desired-temp&amp;quot; &lt;br /&gt;
     data-temp=&amp;quot;measured-temp&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example for MAX!:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;thermostat&amp;quot; data-device=&amp;quot;HZ_Tuer&amp;quot; &lt;br /&gt;
    data-valve=&amp;quot;valveposition&amp;quot; &lt;br /&gt;
    data-get=&amp;quot;desiredTemperature&amp;quot; &lt;br /&gt;
    data-temp=&amp;quot;temperature&amp;quot; &lt;br /&gt;
    data-set=&amp;quot;desiredTemperature&amp;quot; &lt;br /&gt;
    class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The wigets will show the valve value only in case of a valid data-valve attribute. The default for data-valve ist null. That means, a empty data-valve attribute hides the valve label for the widget.&lt;br /&gt;
&lt;br /&gt;
[[Datei:thermostat.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_weather&amp;quot;&amp;gt;&#039;&#039;&#039;Weather&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Widget fügt ein dem Wetter entsprechendes Bild ein. Die Daten können durch Fhem-Module wie [[PROPLANTA]], [[OPENWEATHER]] und [[Weather]] bereitgestellt werden. &lt;br /&gt;
Add &#039;big&#039; or &#039;bigger&#039; to CSS class to get a bigger weather icon.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;weather&amp;quot; &lt;br /&gt;
     data-device=&amp;quot;Weather&amp;quot; &lt;br /&gt;
     data-get=&amp;quot;fc0_weatherDay&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell big&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:weather.png]]&lt;br /&gt;
&lt;br /&gt;
== Icon-Konfiguration ==&lt;br /&gt;
&lt;br /&gt;
* Eingebaute Icons: Diese haben das ftui-Präfix. Zurzeit sind folgende verfügbar: ftui-window, ftui-door&lt;br /&gt;
&lt;br /&gt;
* Mehr als 500 Icons von &amp;quot;http://fortawesome.github.io/Font-Awesome/icons&amp;quot; verfügbar. Einfach den Icon-Namen angeben (Präfix &amp;quot;fa-&amp;quot; nicht vergessen, Z.B. &amp;lt;code&amp;gt;data-icon=&amp;quot;fa-volume-up&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Es stehen auch Openautomation Font-Files zur Verfügung. Wer sie nutzen möchte, muss folgende Stylesheets in die index.html hinzufügen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;/fhem/tablet/lib/openautomation.css&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;/fhem/tablet/lib/fhemSVG.css&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese font icons haben das Präfix &#039;fs-&#039; bzw. &#039;oa-&#039;.&lt;br /&gt;
&lt;br /&gt;
Beispiel bei einem Schalter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;div data-type=&amp;quot;switch&amp;quot; data-device=&#039;dummy1&#039; data-icon=&amp;quot;oa-secur_locked&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Und so als großes Symbol:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;symbol&amp;quot; data-device=&#039;dummy1&#039;&lt;br /&gt;
        data-icon=&amp;quot;oa-status_frost&amp;quot;&lt;br /&gt;
        data-on-color=&amp;quot;#bb3232&amp;quot;&lt;br /&gt;
        data-get-on=&amp;quot;on&amp;quot;&lt;br /&gt;
        data-get-off=&amp;quot;!on&amp;quot;&lt;br /&gt;
        class=&amp;quot;bigger&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Icons kann man auch etwas dicker darstellen mit den Zusatz bold: &amp;lt;code&amp;gt;data-icon=&amp;quot;oa-secur_locked bold&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Namen der verfügbaren Icons findet man auch in den CSS Files (openautomation.css / fhemSVG.css)&lt;br /&gt;
&lt;br /&gt;
== Spezial ==&lt;br /&gt;
Folgender Befehl setzt einen direkten Befehl an Fhem ab (&amp;lt;code&amp;gt;set dummy1 off&amp;lt;/code&amp;gt;):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
     &amp;lt;div onclick=&amp;quot;setFhemStatus(&#039;set dummy1 off&#039;)&amp;quot;&amp;gt;All off!&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
Häufig gestellte Fragen zum FHEM Tablet UI sind in der [[FHEM_Tablet_UI/FAQ|FHEM Tablet UI FAQ]] zusammengestellt.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://forum.fhem.de/index.php/topic,34233.0.html Forums-Beitrag]&lt;br /&gt;
* [https://github.com/knowthelist/fhem-tablet-ui Projekt auf Github]&lt;br /&gt;
* [http://forum.fhem.de/index.php/topic,37378.0.html User-Demos]&lt;br /&gt;
* [https://github.com/ovibox/fhem-ftui-user-demos Download der User-Demo-Dateien]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:FHEM Frontends]]&lt;/div&gt;</summary>
		<author><name>Svenson08</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=FHEM_Tablet_UI&amp;diff=14705</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=14705"/>
		<updated>2016-03-16T18:44:15Z</updated>

		<summary type="html">&lt;p&gt;Svenson08: /* Widgets SYMBOL */&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:&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;))&lt;br /&gt;
|&#039;lines&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-uaxis&lt;br /&gt;
|name of the axis to be used (&#039;primary&#039; or &#039;secondary&#039;) or or array of axis&#039; to be used if more than one graph shall be displayed. The &#039;primary&#039; axis is labelled on the left side, the &#039;secondary&#039; axis is labelled on the right side&lt;br /&gt;
|&#039;primary&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-legend&lt;br /&gt;
|caption of the graph (used in the legend and at the cursor) or an array of legend texts if more than one graph shall be displayed.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-minvalue&lt;br /&gt;
|min Y value to Show or an array of values for dynamic minY for primary axis. A value of &#039;auto&#039; means that the value is calculated from the data displayed dynamically&lt;br /&gt;
|10&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-minvalue_sec&lt;br /&gt;
|min Y value to Show or an array of values for dynamic minY for secondary axis. A value of &#039;auto&#039; means that the value is calculated from the data displayed dynamically&lt;br /&gt;
|&#039;auto&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-maxvalue&lt;br /&gt;
|max Y value to Show or an array of values for dynamic maxY for primary axis. A value of &#039;auto&#039; means that the value is calculated from the data displayed dynamically&lt;br /&gt;
|30&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-maxvalue_sec&lt;br /&gt;
|max Y value to Show or an array of values for dynamic maxY for secondary axis. A value of &#039;auto&#039; means that the value is calculated from the data displayed dynamically&lt;br /&gt;
|&#039;auto&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-yticks&lt;br /&gt;
|value distance between Y tick lines (related to primary axis). A value of &#039;auto&#039; means that the value is calculated from the data displayed dynamically.&lt;br /&gt;
|&#039;auto&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-xticks&lt;br /&gt;
|time range between each X tick lines (in minutes). A value of &#039;auto&#039; means that the value is calculated from the data displayed dynamically&lt;br /&gt;
|&#039;auto&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-daysago_start&lt;br /&gt;
|number of days back from now for the start of the plot (0 means the plot starts from today 0:00). Additionally the x-axis start value can be set here unsing standard data formats like (&#039;2013-10-23&#039;), the time portion of the string is only used when &amp;lt;code&amp;gt;data-nofulldays&amp;lt;/code&amp;gt; is &#039;true&#039;.&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-daysago_end&lt;br /&gt;
|number of days back from now for the end of the plot (-1 means the plot ends today 24:00). Additionally the x-axis end value can be set here unsing standard data formats like (&#039;2013-10-23&#039;), the time portion of the string is only used when &amp;lt;code&amp;gt;data-nofulldays&amp;lt;/code&amp;gt; is &#039;true&#039;.&lt;br /&gt;
|-1&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-nofulldays&lt;br /&gt;
|switch to activate/deactivate rounding of the xaxis start and end values to full days (&#039;true&#039; or &#039;false&#039;)&lt;br /&gt;
|&#039;false&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-ytext&lt;br /&gt;
|text to be shown besides the primary y axis.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-ytext_sec&lt;br /&gt;
|text to be shown besides the secondary y axis.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-yunit&lt;br /&gt;
|unit of the value to show beside of each Y ticks for primary y axis.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-crosshair&lt;br /&gt;
|switch to activate/deactivate the crosshair cursor (&#039;true&#039; or &#039;false&#039;)&lt;br /&gt;
|&#039;false&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-cursorgroup&lt;br /&gt;
|number to define coupling of the crosshair cursor. The cursors of all charts having the same number are coupled and move together.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-scrollgroup&lt;br /&gt;
|number to define coupling of the scrolling (shift and zoom). All charts having the same number are scrolled (shifted and zoomed) together.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-showlegend&lt;br /&gt;
|switch to activate/deactivate the initial display of the legend window (&#039;true&#039; or &#039;false&#039;)&lt;br /&gt;
|&#039;false&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-yunit_sec&lt;br /&gt;
|unit of the value to show beside of each Y ticks for secondary y axis.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-width&lt;br /&gt;
|fixed size for width (in&amp;amp;nbsp;% or px)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-height&lt;br /&gt;
|fixed size for height (in&amp;amp;nbsp;% or px)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |class&lt;br /&gt;
|fullsize, noticks, nobuttons&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;data-logfile&amp;lt;/code&amp;gt; can be omitted in this case the default value &amp;quot;-&amp;quot; will be used. This means that the current logfile is going to be used.&lt;br /&gt;
&lt;br /&gt;
There are several buttons that control the dynamic behaviour of the chart. The &amp;lt;-, -&amp;gt;, + and - buttons shift and zoom the displayed data. The &amp;quot;legend&amp;quot; and &amp;quot;cursor&amp;quot; buttons are switching on and off the display of the legend window and the crosshair cursor respectively.&lt;br /&gt;
&lt;br /&gt;
When the legend window is displayed, a click on the legend text shows/hides the respective graph. The legend window can be dragged to other positions on desktop browsers (currently not yet working for iOS and Android).&lt;br /&gt;
&lt;br /&gt;
The crosshair cursor currently only works dynamically on desktop browsers. On iOS and Android you have to tap on the screen to set the cursor to a new position.&lt;br /&gt;
&lt;br /&gt;
There is a number of css styles that control the visible appearance of the chart. The following classes are supported:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!CSS class name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
!.chart-background&lt;br /&gt;
|Color etc. for the chart background&lt;br /&gt;
|-&lt;br /&gt;
!.text.axes&lt;br /&gt;
|Font and color for the chart axes&lt;br /&gt;
|-&lt;br /&gt;
!.buttons&lt;br /&gt;
|Size and color for the buttons (shift etc.)&lt;br /&gt;
|-&lt;br /&gt;
!.gridlines&lt;br /&gt;
|Size and color for gridlines generally&lt;br /&gt;
|-&lt;br /&gt;
!.xaxis&lt;br /&gt;
|Font, size and color for xaxis&lt;br /&gt;
|-&lt;br /&gt;
!.yaxis&lt;br /&gt;
|Font, size and color for yaxis&lt;br /&gt;
|-&lt;br /&gt;
!.xticks&lt;br /&gt;
|Font, size and color for xticks&lt;br /&gt;
|-&lt;br /&gt;
!.yticks&lt;br /&gt;
|Font, size and color for yticks&lt;br /&gt;
|-&lt;br /&gt;
!.crosshair&lt;br /&gt;
|Font, size and color (foreground/background) for the crosshair cursor&lt;br /&gt;
|-&lt;br /&gt;
!.caption&lt;br /&gt;
|Font, size and color for text buttons for legend and cursor switching&lt;br /&gt;
|-&lt;br /&gt;
!.legend&lt;br /&gt;
|Font, size and background color for legend window&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[#Beispiel_chart|Link zu einem Beispiel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;circlemenu&amp;quot;&amp;gt;&#039;&#039;&#039;CIRCLEMENU&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!HTML Attribut&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Default Wert&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-item-diameter&lt;br /&gt;
|diameter of the circle&lt;br /&gt;
|52&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-circle-radius&lt;br /&gt;
|radius of each item, in pixel&lt;br /&gt;
|70&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-direction&lt;br /&gt;
|position of the items in relation to the center&lt;br /&gt;
|&#039;full&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-close-after&lt;br /&gt;
|closing time of the circle-menu&lt;br /&gt;
|(item-count + 1s) or a minimum of 4s&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |class&lt;br /&gt;
|keepopen&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Optionen für data-direction: top | right | bottom | left | top-right | top-left | bottom-right | bottom-left | top-half | right-half | bottom-half | left-half | full | vertical | horizontal&lt;br /&gt;
&lt;br /&gt;
[[#Beispiel_circlemenu|Link zu einem Beispiel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;dimmer&amp;quot;&amp;gt;&#039;&#039;&#039;DIMMER&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!HTML Attribut&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Default Wert&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get&lt;br /&gt;
|name of the reading to get from Fhem&lt;br /&gt;
|&#039;STATE&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get-on&lt;br /&gt;
|value for ON status to get&lt;br /&gt;
|&#039;on&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get-off&lt;br /&gt;
|value for OFF status to get&lt;br /&gt;
|&#039;off&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-set&lt;br /&gt;
|(&amp;lt;command&amp;gt; &amp;lt;device&amp;gt; &amp;lt;reading&amp;gt; &amp;lt;value&amp;gt;) &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-set-on&lt;br /&gt;
|value for ON status to set&lt;br /&gt;
|value of data-get-on&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-set-off&lt;br /&gt;
|value for OFF status to set&lt;br /&gt;
|value of data-get-off&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-cmd&lt;br /&gt;
|name of the command (&amp;lt;command&amp;gt; &amp;lt;device&amp;gt; &amp;lt;value&amp;gt;) (e.g. setstate, set, setreading, trigger)&lt;br /&gt;
|&#039;set&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-dim&lt;br /&gt;
|name of the reading responsible for dim (&amp;lt;command&amp;gt; &amp;lt;device&amp;gt; &amp;lt;reading&amp;gt; &amp;lt;value&amp;gt;) &lt;br /&gt;
|value of data-get-on&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-icon&lt;br /&gt;
|name of the font-awesome icon&lt;br /&gt;
|fa-lightbulb-o&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[#Beispiel_dimmer|Link zu einem Beispiel]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;homestatus&amp;quot;&amp;gt;&#039;&#039;&#039;HOMESTATUS&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!HTML Attribut&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Default Wert&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get&lt;br /&gt;
|name of the reading to get from Fhem&lt;br /&gt;
|&#039;STATE&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-set&lt;br /&gt;
|command to send to Fhem (&amp;lt;code&amp;gt;set &amp;lt;device&amp;gt; &amp;lt;command&amp;gt; &amp;lt;value&amp;gt;&amp;lt;/code&amp;gt;)&lt;br /&gt;
|&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-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;
=== Widgets 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;
=== Widgets 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-state&lt;br /&gt;
|Array mit Status Angaben &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-set-state&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-backgroundicons&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;
=== Widgets 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;
=== Widgets 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_dimmer&amp;quot;&amp;gt;&#039;&#039;&#039;Dimmer&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dimmer Widget Beispiel für Philips Hue&lt;br /&gt;
&lt;br /&gt;
Minimalvariante&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
&amp;lt;div data-type=&amp;quot;dimmer&amp;quot; data-device=&amp;quot;HUEDevice1&amp;quot;&lt;br /&gt;
        data-get-on=&amp;quot;!off&amp;quot; data-get-off=&amp;quot;off&amp;quot;&lt;br /&gt;
        data-set=&amp;quot;pct&amp;quot;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit Anzeige der Dimstufe&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;dimmer&amp;quot; data-device=&amp;quot;HUEDevice1&amp;quot;&lt;br /&gt;
       data-get=&amp;quot;onoff&amp;quot;&lt;br /&gt;
       data-get-on=&amp;quot;1&amp;quot; data-get-off=&amp;quot;0&amp;quot;&lt;br /&gt;
       data-set=&amp;quot;&amp;quot;&lt;br /&gt;
       data-set-on=&amp;quot;on&amp;quot; data-set-off=&amp;quot;off&amp;quot;&lt;br /&gt;
       data-dim=&amp;quot;pct&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dimmer Widget für MilightDevice&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;dimmer&amp;quot;&lt;br /&gt;
  data-device=&amp;quot;SonstWas&amp;quot;&lt;br /&gt;
  data-get=&amp;quot;brightness&amp;quot;&lt;br /&gt;
  data-get-off=&amp;quot;0&amp;quot;&lt;br /&gt;
  data-get-on=&amp;quot;[1-9][0-9]*&amp;quot;&lt;br /&gt;
  data-set-on=&amp;quot;on&amp;quot;&lt;br /&gt;
  data-set-off=&amp;quot;off&amp;quot;&lt;br /&gt;
  data-dim=&amp;quot;dim&amp;quot;&lt;br /&gt;
  data-min=&amp;quot;0&amp;quot;&lt;br /&gt;
  data-max=&amp;quot;100&amp;quot;&lt;br /&gt;
&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_homestatus&amp;quot;&amp;gt;&#039;&#039;&#039;Homestatus&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel rechts im Bild:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;homestatus&amp;quot; data-device=&#039;dummy1&#039;&lt;br /&gt;
       data-get-on=&#039;[&amp;quot;1&amp;quot;,&amp;quot;2&amp;quot;,&amp;quot;3&amp;quot;,&amp;quot;4&amp;quot;]&#039;&lt;br /&gt;
       data-alias=&#039;[&amp;quot;Home&amp;quot;,&amp;quot;Night&amp;quot;,&amp;quot;Away&amp;quot;,&amp;quot;Holiday&amp;quot;]&#039;&lt;br /&gt;
       data-icons=&#039;[&amp;quot;fa-home&amp;quot;,&amp;quot;fa-bed&amp;quot;,&amp;quot;fa-car&amp;quot;,&amp;quot;fa-suitcase&amp;quot;]&#039;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel links im Bild:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;homestatus&amp;quot; data-device=&#039;dummy1&#039;&lt;br /&gt;
        data-get-on=&#039;[&amp;quot;home&amp;quot;,&amp;quot;asleep&amp;quot;,&amp;quot;absent&amp;quot;,&amp;quot;gone&amp;quot;,&amp;quot;gotosleep&amp;quot;]&#039;&lt;br /&gt;
        data-alias=&#039;[&amp;quot;Home&amp;quot;,&amp;quot;Night&amp;quot;,&amp;quot;Away&amp;quot;,&amp;quot;Holiday&amp;quot;,&amp;quot;Retire&amp;quot;]&#039;&lt;br /&gt;
        data-icons=&#039;[&amp;quot;fa-fire&amp;quot;,&amp;quot;fa-film&amp;quot;,&amp;quot;fa-plus&amp;quot;,&amp;quot;fa-car&amp;quot;,&amp;quot;fa-tint&amp;quot;]&#039;&lt;br /&gt;
        data-version=&#039;residents&#039;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:homestatus_tabletUI.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_image&amp;quot;&amp;gt;&#039;&#039;&#039;Image&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Erzeugt ein Widget mit einem Bild aus dem www, das alle 5 Sekunden aktualisiert wird (hier eine Wetterkarte vom DWD).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;image&amp;quot;&lt;br /&gt;
     data-size=&amp;quot;80%&amp;quot;&lt;br /&gt;
     data-url=&amp;quot;http://www.dwd.de/wundk/wetter/de/Deutschland.jpg&amp;quot;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:image_tabletUI.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example for how to add an image to the dashboard which its URL is delivered by a Fhem module like PROPLANTA:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;image&amp;quot; data-device=&amp;quot;Wetter1&amp;quot; &lt;br /&gt;
     data-get=&amp;quot;fc0_weatherDayIcon&amp;quot; &lt;br /&gt;
     data-size=&amp;quot;40px&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_label&amp;quot;&amp;gt;&#039;&#039;&#039;Label&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for HM-WDS40-TH-I Funk-Temperatur-/Feuchtesensor innen&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
STATE   T: 20.0 H: 61&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;THSensorWZ&amp;quot; &lt;br /&gt;
     data-part=&amp;quot;2&amp;quot; data-unit=&amp;quot;%B0C%0A&amp;quot; class=&amp;quot;cell big&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Temperatur&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;THSensorWZ&amp;quot; data-part=&amp;quot;4&amp;quot; &lt;br /&gt;
     data-unit=&amp;quot;%&amp;quot; class=&amp;quot;cell big&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Luftfeuchte&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
But the same result can reached by getting single readings:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
humidity    58&lt;br /&gt;
temperature 20.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;THSensorWZ&amp;quot; &lt;br /&gt;
     data-get=&amp;quot;temperature&amp;quot; data-unit=&amp;quot;%B0C%0A&amp;quot; class=&amp;quot;cell big&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Temperatur&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;THSensorWZ&amp;quot; &lt;br /&gt;
     data-get=&amp;quot;humidity&amp;quot; data-unit=&amp;quot;%&amp;quot; class=&amp;quot;cell big&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Luftfeuchte&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for how to influence the color of the label according to value limits&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; &lt;br /&gt;
     data-device=&amp;quot;OutTemp&amp;quot; &lt;br /&gt;
     data-limits=&#039;[-73,10,23]&#039; &lt;br /&gt;
     data-colors=&#039;[&amp;quot;#6699FF&amp;quot;,&amp;quot;#AA6900&amp;quot;,&amp;quot;#FF0000&amp;quot;]&#039; &lt;br /&gt;
     data-unit=&amp;quot;%B0C%0A&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell big&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for how to create a widget for shutter via push: show state and set up/down&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;switch&amp;quot; &lt;br /&gt;
     data-device=&amp;quot;wzRollo&amp;quot; &lt;br /&gt;
     data-get-on=&amp;quot;up&amp;quot; &lt;br /&gt;
     data-get-off=&amp;quot;down&amp;quot; &lt;br /&gt;
     data-icon=&amp;quot;fa-bars&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell&amp;quot;&amp;gt;Rollo&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for how to create a label for a time value in short format with usage of RegEx.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; &lt;br /&gt;
     data-device=&amp;quot;dummy1&amp;quot; &lt;br /&gt;
     data-part=&amp;quot;(\d\d\.\d\d\.).*&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for how to show two labels in one line.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;div type=&amp;quot;label&amp;quot; device=&amp;quot;OnSunrise&amp;quot; class=&amp;quot;inline&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;bis&lt;br /&gt;
   &amp;lt;div type=&amp;quot;label&amp;quot; device=&amp;quot;OnSunset&amp;quot; class=&amp;quot;inline&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel für die Anzeige des UV-Indexes und der Abhängigkeit der anzuzeigenden Farbe.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;wider cell bigger&amp;quot; data-device=&amp;quot;ProVorhersage&amp;quot;&lt;br /&gt;
        data-get=&amp;quot;fc0_uv&amp;quot;&lt;br /&gt;
        data-limits=&amp;quot;[-2, 2, 5, 7, 10]&amp;quot; &lt;br /&gt;
	data-colors=&#039;[&amp;quot;#66FF33&amp;quot;,&amp;quot;#FFFF00&amp;quot;,&amp;quot;#FF6600&amp;quot;,&amp;quot;#FF0000&amp;quot;,&amp;quot;#993399&amp;quot;]&#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
   &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot; data-device=&amp;quot;ProVorhersage&amp;quot; data-get=&amp;quot;fc0_date&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
   &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;wider cell bigger&amp;quot; data-device=&amp;quot;ProVorhersage&amp;quot;&lt;br /&gt;
        data-get=&amp;quot;fc1_uv&amp;quot;&lt;br /&gt;
	data-limits=&amp;quot;[-2, 2, 5, 7, 10]&amp;quot;&lt;br /&gt;
	data-colors=&#039;[&amp;quot;#66FF33&amp;quot;,&amp;quot;#FFFF00&amp;quot;,&amp;quot;#FF6600&amp;quot;,&amp;quot;#FF0000&amp;quot;,&amp;quot;#993399&amp;quot;]&#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
   &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot; data-device=&amp;quot;ProVorhersage&amp;quot; data-get=&amp;quot;fc1_date&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:label_tabletUI.jpg]]&lt;br /&gt;
&lt;br /&gt;
Beispiel für die Anzeige des Labels als Icon.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;AvReceiver&amp;quot; data-get=&amp;quot;input&amp;quot; class=&amp;quot;icon round bg-red cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;AvReceiver&amp;quot; data-get=&amp;quot;input&amp;quot; class=&amp;quot;icon square bg-blue cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;AvReceiver&amp;quot; data-get=&amp;quot;input&amp;quot; class=&amp;quot;icon squareborder cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;PowerAV_Sw&amp;quot; data-colors=&#039;[&amp;quot;red&amp;quot;,&amp;quot;green&amp;quot;]&#039; data-limits=&#039;[&amp;quot;off&amp;quot;,&amp;quot;on&amp;quot;]&#039; class=&amp;quot;icon round bg-limit cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Label_tabletUI_icon.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_pagetab&amp;quot;&amp;gt;&#039;&#039;&#039;Pagetab&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for a tab menu to switch smoothly between multiple pages. Multiple pagetabs in a template file: menu.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;header&amp;gt;MENU&amp;lt;/header&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;pagetab&amp;quot; data-url=&amp;quot;index.html&amp;quot;  data-icon=&amp;quot;fa-home&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;pagetab&amp;quot; data-url=&amp;quot;index_2.html&amp;quot; data-icon=&amp;quot;fa-sliders&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;pagetab&amp;quot; data-url=&amp;quot;index_3.html&amp;quot; data-icon=&amp;quot;fa-music&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;pagetab&amp;quot; data-url=&amp;quot;index_4.html&amp;quot; data-icon=&amp;quot;fa-hotel&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;pagetab&amp;quot; data-url=&amp;quot;index_5.html&amp;quot; data-icon=&amp;quot;fa-music&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;pagetab&amp;quot; data-url=&amp;quot;index_6.html&amp;quot; data-icon=&amp;quot;fa-database&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;pagetab&amp;quot; data-url=&amp;quot;index_7.html&amp;quot; data-icon=&amp;quot;fa-fax&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_playstream&amp;quot;&amp;gt;&#039;&#039;&#039;Playstream&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Erzeugt einen Knopf zum direkten Abspielen eines Webradio-Streams.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
     &amp;lt;div data-type=&amp;quot;playstream&amp;quot; data-url=&amp;quot;http://radioeins.de/stream&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
     &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;darker&amp;quot;&amp;gt;Radio eins&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_push&amp;quot;&amp;gt;&#039;&#039;&#039;Push&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for how to create a push button widget to trigger all devices on:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;push&amp;quot; &lt;br /&gt;
     data-device=&amp;quot;LightAll&amp;quot; &lt;br /&gt;
     data-cmd=&amp;quot;trigger&amp;quot; &lt;br /&gt;
     data-set=&amp;quot;on&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Beispiel für zwei horizontale Buttons:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;doublebox-h&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;push&amp;quot; data-device=&amp;quot;Rollo&amp;quot; &lt;br /&gt;
             data-icon=&amp;quot;fa-angle-up&amp;quot; data-background-icon=&amp;quot;fa-square-o&amp;quot; &lt;br /&gt;
             data-set=&amp;quot;up&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;push&amp;quot; data-device=&amp;quot;Rollo&amp;quot; &lt;br /&gt;
             data-icon=&amp;quot;fa-angle-down&amp;quot; data-background-icon=&amp;quot;fa-square-o&amp;quot; &lt;br /&gt;
             data-set=&amp;quot;down&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:push1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Beispiel für zwei quadratische vertikale Buttons:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;doublebox-v&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;push&amp;quot; data-device=&amp;quot;Rollo&amp;quot; &lt;br /&gt;
             data-icon=&amp;quot;fa-chevron-up&amp;quot; data-background-icon=&amp;quot;fa-square-o&amp;quot; &lt;br /&gt;
             data-set=&amp;quot;up&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;push&amp;quot; data-device=&amp;quot;Rollo&amp;quot; &lt;br /&gt;
            data-icon=&amp;quot;fa-chevron-down&amp;quot; data-background-icon=&amp;quot;fa-square-o&amp;quot; &lt;br /&gt;
            data-set=&amp;quot;down&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:push2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_rotor&amp;quot;&amp;gt;&#039;&#039;&#039;Rotor&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for a rotor widget, which switches between to days of weather forecast&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;rotor&amp;quot; class=&amp;quot;fade&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;darker&amp;quot;&amp;gt;Heute&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;weather&amp;quot; data-device=&amp;quot;AgroWeather&amp;quot; data-get=&amp;quot;fc0_weatherDay&amp;quot; class=&amp;quot;big&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;AgroWeather&amp;quot; data-get=&amp;quot;fc0_weatherDay&amp;quot; class=&amp;quot;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;AgroWeather&amp;quot; data-get=&amp;quot;fc0_tempMax&amp;quot; data-unit=&amp;quot;%B0C%0A&amp;quot; class=&amp;quot;large&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;darker&amp;quot;&amp;gt;Morgen&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;weather&amp;quot; data-device=&amp;quot;AgroWeather&amp;quot; data-get=&amp;quot;fc1_weatherDay&amp;quot; class=&amp;quot;big&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;AgroWeather&amp;quot; data-get=&amp;quot;fc1_weatherDay&amp;quot; class=&amp;quot;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;AgroWeather&amp;quot; data-get=&amp;quot;fc1_tempMax&amp;quot; data-unit=&amp;quot;%B0C%0A&amp;quot; class=&amp;quot;large&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_select&amp;quot;&amp;gt;&#039;&#039;&#039;Select&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Erzeugt zwei Comboboxen zur Auswahl des Eingang eines 2-Zonen-AV-Receivers. Die Liste für Zone2 ist fest, die Liste für Zone1 wird von Fhem übergeben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cell wider&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;inline wider&amp;quot;&amp;gt;Zone2&amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;div data-type=&amp;quot;select&amp;quot; data-device=&amp;quot;AvReceiverZ2&amp;quot; data-items=&#039;[&amp;quot;Airplay&amp;quot;,&amp;quot;Webradio&amp;quot;,&amp;quot;BD/DVD&amp;quot;,&amp;quot;PHONO&amp;quot;]&#039; data-get=&amp;quot;input&amp;quot; data-set=&amp;quot;input&amp;quot; class=&amp;quot;cell w2x&amp;quot; &amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;inline&amp;quot;&amp;gt;Zone1&amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;div data-type=&amp;quot;select&amp;quot; data-device=&amp;quot;AvReceiver&amp;quot; data-list=&amp;quot;inputs&amp;quot; data-get=&amp;quot;input&amp;quot; data-set=&amp;quot;input&amp;quot; class=&amp;quot;cell w2x&amp;quot; &amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:select_tabeltUI.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_slider&amp;quot;&amp;gt;&#039;&#039;&#039;Slider&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Slider mit einstellbaren Werten von 10 bis 90:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;slider&amp;quot; &lt;br /&gt;
     data-device=&#039;Dummy1&#039; &lt;br /&gt;
     data-min=&amp;quot;10&amp;quot; &lt;br /&gt;
     data-max=&amp;quot;90&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Light1&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:slider_tabletUI.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Horizontal angeordneter Slider:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;slider&amp;quot;&lt;br /&gt;
     data-device=&#039;Dummy1&#039; &lt;br /&gt;
     data-min=&amp;quot;0&amp;quot; &lt;br /&gt;
     data-max=&amp;quot;100&amp;quot; &lt;br /&gt;
     class=&amp;quot;horizontal&amp;quot; &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:slider_tabletUI2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_switch&amp;quot;&amp;gt;&#039;&#039;&#039;Switch&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Schalter. Usage of RegEx pattern for state request:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;switch&amp;quot; class=&amp;quot;cell&amp;quot; &lt;br /&gt;
            data-device=&amp;quot;MILIGHT_Zone1_Wohnzimmer&amp;quot; &lt;br /&gt;
            data-get-on=&amp;quot;on.*&amp;quot;&lt;br /&gt;
            data-get-off=&amp;quot;off&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:switch.png]]&lt;br /&gt;
&lt;br /&gt;
Beispiel für eine Gruppe von Schaltern, um zwischen vier verschiedenen Werten eines device umzuschalten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cell left&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;div data-type=&amp;quot;switch&amp;quot; data-device=&amp;quot;dummy1&amp;quot; &lt;br /&gt;
      data-get-off=&amp;quot;((?!Wert1).)*&amp;quot; &lt;br /&gt;
      data-get-on=&amp;quot;Wert1&amp;quot; class=&amp;quot;cell&amp;quot; &amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Wert1&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;div data-type=&amp;quot;switch&amp;quot; data-device=&amp;quot;dummy1&amp;quot; &lt;br /&gt;
      data-get-off=&amp;quot;((?!Wert2).)*&amp;quot; &lt;br /&gt;
      data-get-on=&amp;quot;Wert2&amp;quot; class=&amp;quot;cell&amp;quot; &amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Wert2&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;div data-type=&amp;quot;switch&amp;quot; data-device=&amp;quot;dummy1&amp;quot; &lt;br /&gt;
      data-get-off=&amp;quot;((?!Wert3).)*&amp;quot; &lt;br /&gt;
      data-get-on=&amp;quot;Wert3&amp;quot; class=&amp;quot;cell&amp;quot; &amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Wert3&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;div data-type=&amp;quot;switch&amp;quot; data-device=&amp;quot;dummy1&amp;quot; &lt;br /&gt;
      data-get-off=&amp;quot;((?!Wert4).)*&amp;quot; &lt;br /&gt;
      data-get-on=&amp;quot;Wert4&amp;quot; class=&amp;quot;cell&amp;quot; &amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Wert4&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:switch4.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_symbol&amp;quot;&amp;gt;&#039;&#039;&#039;Symbol&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for a tristate icon&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;symbol&amp;quot; data-device=&amp;quot;dummy1&amp;quot; &lt;br /&gt;
     data-get-on=&#039;[&amp;quot;wert1&amp;quot;,&amp;quot;wert2&amp;quot;,&amp;quot;wert3&amp;quot;]&#039; &lt;br /&gt;
     data-icons=&#039;[&amp;quot;fa-arrow-up&amp;quot;,&amp;quot;fa-user&amp;quot;,&amp;quot;fa-arrow-down&amp;quot;]&#039; &lt;br /&gt;
     data-on-colors=&#039;[&amp;quot;SeaGreen&amp;quot;,&amp;quot;SlateBlue&amp;quot;,&amp;quot;IndianRed&amp;quot;]&#039; &lt;br /&gt;
     class=&amp;quot;cell big&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example for a tristate icon with blink and spin animation&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;symbol&amp;quot; data-device=&amp;quot;dummy1&amp;quot; &lt;br /&gt;
     data-icons=&#039;[&amp;quot;fa-exclamation-triangle fa-blink&amp;quot;,&amp;quot;fa-exclamation-circle&amp;quot;,&amp;quot;fa-cog fa-spin&amp;quot;]&#039; &lt;br /&gt;
     data-on-colors=&#039;[&amp;quot;Crimson&amp;quot;,&amp;quot;GoldenRod&amp;quot;,&amp;quot;SeaGreen&amp;quot;]&#039; &lt;br /&gt;
     data-get-on=&#039;[&amp;quot;Wert1&amp;quot;,&amp;quot;Wert2&amp;quot;,&amp;quot;Wert3&amp;quot;]&#039; &amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example for a battery level control with RegEx&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;symbol&amp;quot; data-device=&amp;quot;BadHeizung&amp;quot; data-get=&amp;quot;batteryLevel&amp;quot;&lt;br /&gt;
     data-icons=&#039;[&amp;quot;oa-measure_battery_100&amp;quot;,&amp;quot;oa-measure_battery_75&amp;quot;,&amp;quot;oa-measure_battery_50&amp;quot;,&amp;quot;oa-measure_battery_25&amp;quot;,&amp;quot;oa-measure_battery_0&amp;quot;]&#039;&lt;br /&gt;
     data-get-on=&#039;[&amp;quot;3\\.[0-9]&amp;quot;,&amp;quot;2\\.[789]&amp;quot;,&amp;quot;2\\.[456]&amp;quot;,&amp;quot;2\\.[123]&amp;quot;,&amp;quot;((2\\.0)|([01]\\.[0-9]))&amp;quot;]&#039;&lt;br /&gt;
     data-on-colors=&#039;[&amp;quot;#505050&amp;quot;,&amp;quot;#505050&amp;quot;,&amp;quot;#505050&amp;quot;,&amp;quot;#ad3333&amp;quot;,&amp;quot;#ad3333&amp;quot;]&#039;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example for a battery level control with greater-equal compare and 90° rotated symbols&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;symbol&amp;quot; data-device=&amp;quot;BadHeizung&amp;quot; data-get=&amp;quot;batteryLevel&amp;quot;&lt;br /&gt;
    data-icons=&#039;[&amp;quot;oa-measure_battery_0 fa-rotate-90&amp;quot;,&amp;quot;oa-measure_battery_25 fa-rotate-90&amp;quot;,&amp;quot;oa-measure_battery_50 fa-rotate-90&amp;quot;,&amp;quot;oa-measure_battery_75 fa-rotate-90&amp;quot;,&amp;quot;oa-measure_battery_0 fa-rotate-90&amp;quot;]&#039;&lt;br /&gt;
    data-get-on=&#039;[&amp;quot;0&amp;quot;,&amp;quot;2&amp;quot;,&amp;quot;2.4&amp;quot;,&amp;quot;2.7&amp;quot;,&amp;quot;3.0&amp;quot;]&#039;&lt;br /&gt;
    data-on-colors=&#039;[&amp;quot;#ad3333&amp;quot;,&amp;quot;#ad3333&amp;quot;,&amp;quot;#505050&amp;quot;,&amp;quot;#505050&amp;quot;,&amp;quot;#505050&amp;quot;]&#039;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_thermostat&amp;quot;&amp;gt;&#039;&#039;&#039;Thermostat&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure as data-device=&#039;...&#039; that item which delivers temp and desired-temp as reading.&lt;br /&gt;
&lt;br /&gt;
Default parameters are:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
data-get=&amp;quot;desired-temp&amp;quot; data-temp=&amp;quot;measured-temp&amp;quot; data-set=&amp;quot;desired-temp&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Therefor for HomaMatic HM-CC-RT-DN this is sufficient.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;thermostat&amp;quot; data-device=&#039;KH_Clima&#039; class=&amp;quot;cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The long format looks like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;thermostat&amp;quot; &lt;br /&gt;
     data-device=&amp;quot;KH_Clima&amp;quot; &lt;br /&gt;
     data-get=&amp;quot;desired-temp&amp;quot; &lt;br /&gt;
     data-temp=&amp;quot;measured-temp&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example for MAX!:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;thermostat&amp;quot; data-device=&amp;quot;HZ_Tuer&amp;quot; &lt;br /&gt;
    data-valve=&amp;quot;valveposition&amp;quot; &lt;br /&gt;
    data-get=&amp;quot;desiredTemperature&amp;quot; &lt;br /&gt;
    data-temp=&amp;quot;temperature&amp;quot; &lt;br /&gt;
    data-set=&amp;quot;desiredTemperature&amp;quot; &lt;br /&gt;
    class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The wigets will show the valve value only in case of a valid data-valve attribute. The default for data-valve ist null. That means, a empty data-valve attribute hides the valve label for the widget.&lt;br /&gt;
&lt;br /&gt;
[[Datei:thermostat.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_weather&amp;quot;&amp;gt;&#039;&#039;&#039;Weather&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Widget fügt ein dem Wetter entsprechendes Bild ein. Die Daten können durch Fhem-Module wie [[PROPLANTA]], [[OPENWEATHER]] und [[Weather]] bereitgestellt werden. &lt;br /&gt;
Add &#039;big&#039; or &#039;bigger&#039; to CSS class to get a bigger weather icon.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;weather&amp;quot; &lt;br /&gt;
     data-device=&amp;quot;Weather&amp;quot; &lt;br /&gt;
     data-get=&amp;quot;fc0_weatherDay&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell big&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:weather.png]]&lt;br /&gt;
&lt;br /&gt;
== Icon-Konfiguration ==&lt;br /&gt;
&lt;br /&gt;
* Eingebaute Icons: Diese haben das ftui-Präfix. Zurzeit sind folgende verfügbar: ftui-window, ftui-door&lt;br /&gt;
&lt;br /&gt;
* Mehr als 500 Icons von &amp;quot;http://fortawesome.github.io/Font-Awesome/icons&amp;quot; verfügbar. Einfach den Icon-Namen angeben (Präfix &amp;quot;fa-&amp;quot; nicht vergessen, Z.B. &amp;lt;code&amp;gt;data-icon=&amp;quot;fa-volume-up&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Es stehen auch Openautomation Font-Files zur Verfügung. Wer sie nutzen möchte, muss folgende Stylesheets in die index.html hinzufügen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;/fhem/tablet/lib/openautomation.css&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;/fhem/tablet/lib/fhemSVG.css&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese font icons haben das Präfix &#039;fs-&#039; bzw. &#039;oa-&#039;.&lt;br /&gt;
&lt;br /&gt;
Beispiel bei einem Schalter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;div data-type=&amp;quot;switch&amp;quot; data-device=&#039;dummy1&#039; data-icon=&amp;quot;oa-secur_locked&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Und so als großes Symbol:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;symbol&amp;quot; data-device=&#039;dummy1&#039;&lt;br /&gt;
        data-icon=&amp;quot;oa-status_frost&amp;quot;&lt;br /&gt;
        data-on-color=&amp;quot;#bb3232&amp;quot;&lt;br /&gt;
        data-get-on=&amp;quot;on&amp;quot;&lt;br /&gt;
        data-get-off=&amp;quot;!on&amp;quot;&lt;br /&gt;
        class=&amp;quot;bigger&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Icons kann man auch etwas dicker darstellen mit den Zusatz bold: &amp;lt;code&amp;gt;data-icon=&amp;quot;oa-secur_locked bold&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Namen der verfügbaren Icons findet man auch in den CSS Files (openautomation.css / fhemSVG.css)&lt;br /&gt;
&lt;br /&gt;
== Spezial ==&lt;br /&gt;
Folgender Befehl setzt einen direkten Befehl an Fhem ab (&amp;lt;code&amp;gt;set dummy1 off&amp;lt;/code&amp;gt;):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
     &amp;lt;div onclick=&amp;quot;setFhemStatus(&#039;set dummy1 off&#039;)&amp;quot;&amp;gt;All off!&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
Häufig gestellte Fragen zum FHEM Tablet UI sind in der [[FHEM_Tablet_UI/FAQ|FHEM Tablet UI FAQ]] zusammengestellt.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://forum.fhem.de/index.php/topic,34233.0.html Forums-Beitrag]&lt;br /&gt;
* [https://github.com/knowthelist/fhem-tablet-ui Projekt auf Github]&lt;br /&gt;
* [http://forum.fhem.de/index.php/topic,37378.0.html User-Demos]&lt;br /&gt;
* [https://github.com/ovibox/fhem-ftui-user-demos Download der User-Demo-Dateien]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:FHEM Frontends]]&lt;/div&gt;</summary>
		<author><name>Svenson08</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Diskussion:FHEM_Tablet_UI&amp;diff=14566</id>
		<title>Diskussion:FHEM Tablet UI</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Diskussion:FHEM_Tablet_UI&amp;diff=14566"/>
		<updated>2016-03-08T11:25:45Z</updated>

		<summary type="html">&lt;p&gt;Svenson08: /* Widgets */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sollte man nicht die Widgets alphabetisch sortieren ? &lt;br /&gt;
&lt;br /&gt;
Ich kann das gerne machen... bzw. mache das, wenn ich keinen Widerspruch höre  --[[Benutzer:Nobby1805|Nobby1805]] ([[Benutzer Diskussion:Nobby1805|Diskussion]]) 13:05, 6. Mai 2015 (CEST)&lt;br /&gt;
&lt;br /&gt;
Ich habe die Reihenfolge von github übernommen. Aber klar, eine alphabetische Sortierung ist durchaus sinnvoll. Dann aber auch die Beispiele entsprechend sortieren.&lt;br /&gt;
&lt;br /&gt;
:Ich setz mich mal dran .. oder willst du noch aktuell noch etwas ändern ?--[[Benutzer:Nobby1805|Nobby1805]] ([[Benutzer Diskussion:Nobby1805|Diskussion]]) 16:48, 7. Mai 2015 (CEST)&lt;br /&gt;
&lt;br /&gt;
== Sprung von der Widget-Auflistung zu den Beschreibungen ==&lt;br /&gt;
&lt;br /&gt;
... habe ich testweise mal für CIRCLEMENU gemacht ... werde ich in den nächsten Tagen für alle nachzioehgen ... und von dort dann sinnvollerweise auch zu den Beispielen ?! --[[Benutzer:Nobby1805|Nobby1805]] ([[Benutzer Diskussion:Nobby1805|Diskussion]]) 11:54, 14. Mai 2015 (CEST)&lt;br /&gt;
&lt;br /&gt;
== Update Link falsch? ==&lt;br /&gt;
&lt;br /&gt;
Müsste der Update Link zum hinzfügen nicht wie folgt heißen: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;update add https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ich bekomme mit dem aktuell hinterlegten Link nämlich einen Fehler&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:Amenophis86|Amenophis86]] ([[Benutzer Diskussion:Amenophis86|Diskussion]]) 14:35, 16. Feb. 2016 (CET)&lt;br /&gt;
&amp;lt;HR&amp;gt;&lt;br /&gt;
: Hallo!&lt;br /&gt;
: Ja, Link auf Wiki-Seite war falsch; controlfile-Angabe fehlt dort.&lt;br /&gt;
: Ist korrigiert.&lt;br /&gt;
: Danke, --[[Benutzer:Krikan|Christian]] ([[Benutzer Diskussion:Krikan|Diskussion]]) 14:52, 16. Feb. 2016 (CET)&lt;br /&gt;
&lt;br /&gt;
== Deutsch / Englisch ==&lt;br /&gt;
Sollten die Texte nicht eingedeutscht werden? Inhalt ist mal deutsch mal englisch --[[Benutzer:Svenson08|Svenson08]] ([[Benutzer Diskussion:Svenson08|Diskussion]]) 06:37, 2. Mär. 2016 (CET)&lt;br /&gt;
&lt;br /&gt;
Ist richtig, hat nur noch keiner gemacht. Kommt daher, dass setstate es auf seiner github Seite in Englisch hat und von dort das Meiste kopiert wurde. --[[Benutzer:Amenophis86|Amenophis86]] ([[Benutzer Diskussion:Amenophis86|Diskussion]]) 00:57, 5. Mär. 2016 (CET)&lt;br /&gt;
&lt;br /&gt;
== Widgets ==&lt;br /&gt;
zur besseren Lesbarkeit wäre es besser je Widget ein eigenen &amp;quot;Kapitel&amp;quot;/Überschrift in der Seite anzulegen. Es macht auch wenig Sinn die Beispiele eines Widgets am Ende der Seite einzuhängen. Verständlicher ist es Wenn die Beispiele bei dessen Erläuterung aufgeführt sind. Beispiele ohne Bilder machen wenig Sinn wenn ich ein UI erklären will. --[[Benutzer:Svenson08|Svenson08]] ([[Benutzer Diskussion:Svenson08|Diskussion]]) 19:39, 7. Mär. 2016 (CET)&lt;br /&gt;
:Da stimme ich nicht zu ... die jetzige Version mit den zusätzliche &amp;quot;Überschriften&#039; bei Label und Level ist m.E. unübersichtlicher ... aus der alphabetischen Übersicht kommt ja immer durch die Links schnell zu den Beschreibungen  und ebenfalls durch die Links zu den Beispielen ... wenn ich zu einem Widget die Argumente nachschlagen will würden m.E. die immer wieder dazwischen liegenden Beispiele eher stören --[[Benutzer:Nobby1805|Nobby1805]] ([[Benutzer Diskussion:Nobby1805|Diskussion]]) 23:33, 7. Mär. 2016 (CET)&lt;br /&gt;
Da diese Überschriften keine Kapitel sind ist diese Bearbeitung, Ergänzung mühselig. Das sollten zumindest Kapitel sein um das besser zu bearbeiten und in der Seiten Übersicht sind diese dann ebenfalls mit einem Blick zu sehen und man direkt von dort zum Beispiel springen. Ist eine kleinere Änderung. --[[Benutzer:Svenson08|Svenson08]] ([[Benutzer Diskussion:Svenson08|Diskussion]]) 04:54, 8. Mär. 2016 (CET)&lt;br /&gt;
Längere Artikel ohne Kapitel sind nur schwer zu Pflege, das dadurch ein index gebildet wird, besser ein Inhaltsverzeichnis halte ich sehr wohl als übersichtlicher, aber das sieht jeder anders. Aber bearbeite mal eine bestimmte stelle wenn du mehrere tausend Zeilen bis zur gesuchten Zeile scrollen musst. Diese Übersichtlichkeit ist ein Grund warum es die Funktion in jeder wiki Engine gibt.--[[Benutzer:Svenson08|Svenson08]] ([[Benutzer Diskussion:Svenson08|Diskussion]]) 04:58, 8. Mär. 2016 (CET)&lt;br /&gt;
:Ein seitlanges Inhaltsverzeichnis finde ich allerdings nicht so prickelnd ;) Ansonsten hast du ja nicht unrecht, ich habe schon mehrfach kleinere Änderungen an den Widgetbeschreibungen durchgeführt, das wäre einfacher wenn die Abschnitte kleiner wären. --[[Benutzer:Nobby1805|Nobby1805]] ([[Benutzer Diskussion:Nobby1805|Diskussion]]) 09:42, 8. Mär. 2016 (CET)&lt;br /&gt;
: :-) Toll, ich hab mal recht .... Spaß bei seite. Ich hab auch schon überlegt ob man den einzelnen Widgets nicht einzelne Artikel spendiert. Gibts hier im Wiki auch schon bei ähnlich ausführlicheren Dokus. Auch wenn mal (viel) mehr Beispiele zu einem Widget erfasst werden wäre das vielleicht nicht verkehrt. Hab aber keine Endgültige Meinung dazu.--[[Benutzer:Svenson08|Svenson08]] ([[Benutzer Diskussion:Svenson08|Diskussion]]) 12:25, 8. Mär. 2016 (CET)&lt;br /&gt;
&lt;br /&gt;
== Betriff Abschnitt Vorraussetungen ==&lt;br /&gt;
Vorausgesetzt ist noch ein definierte FHEMWEB Instance, ohne das würden die Fhem Befehle nicht gesendet werden, longpoll, etc. Zwar ist das Default jeder installation, aber man sollte darauf Hinweisen. --[[Benutzer:Svenson08|Svenson08]] ([[Benutzer Diskussion:Svenson08|Diskussion]]) 05:54, 8. Mär. 2016 (CET)&lt;/div&gt;</summary>
		<author><name>Svenson08</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Diskussion:FHEM_Tablet_UI&amp;diff=14564</id>
		<title>Diskussion:FHEM Tablet UI</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Diskussion:FHEM_Tablet_UI&amp;diff=14564"/>
		<updated>2016-03-08T04:54:44Z</updated>

		<summary type="html">&lt;p&gt;Svenson08: /* Widgets */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sollte man nicht die Widgets alphabetisch sortieren ? &lt;br /&gt;
&lt;br /&gt;
Ich kann das gerne machen... bzw. mache das, wenn ich keinen Widerspruch höre  --[[Benutzer:Nobby1805|Nobby1805]] ([[Benutzer Diskussion:Nobby1805|Diskussion]]) 13:05, 6. Mai 2015 (CEST)&lt;br /&gt;
&lt;br /&gt;
Ich habe die Reihenfolge von github übernommen. Aber klar, eine alphabetische Sortierung ist durchaus sinnvoll. Dann aber auch die Beispiele entsprechend sortieren.&lt;br /&gt;
&lt;br /&gt;
:Ich setz mich mal dran .. oder willst du noch aktuell noch etwas ändern ?--[[Benutzer:Nobby1805|Nobby1805]] ([[Benutzer Diskussion:Nobby1805|Diskussion]]) 16:48, 7. Mai 2015 (CEST)&lt;br /&gt;
&lt;br /&gt;
== Sprung von der Widget-Auflistung zu den Beschreibungen ==&lt;br /&gt;
&lt;br /&gt;
... habe ich testweise mal für CIRCLEMENU gemacht ... werde ich in den nächsten Tagen für alle nachzioehgen ... und von dort dann sinnvollerweise auch zu den Beispielen ?! --[[Benutzer:Nobby1805|Nobby1805]] ([[Benutzer Diskussion:Nobby1805|Diskussion]]) 11:54, 14. Mai 2015 (CEST)&lt;br /&gt;
&lt;br /&gt;
== Update Link falsch? ==&lt;br /&gt;
&lt;br /&gt;
Müsste der Update Link zum hinzfügen nicht wie folgt heißen: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;update add https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ich bekomme mit dem aktuell hinterlegten Link nämlich einen Fehler&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:Amenophis86|Amenophis86]] ([[Benutzer Diskussion:Amenophis86|Diskussion]]) 14:35, 16. Feb. 2016 (CET)&lt;br /&gt;
&amp;lt;HR&amp;gt;&lt;br /&gt;
: Hallo!&lt;br /&gt;
: Ja, Link auf Wiki-Seite war falsch; controlfile-Angabe fehlt dort.&lt;br /&gt;
: Ist korrigiert.&lt;br /&gt;
: Danke, --[[Benutzer:Krikan|Christian]] ([[Benutzer Diskussion:Krikan|Diskussion]]) 14:52, 16. Feb. 2016 (CET)&lt;br /&gt;
&lt;br /&gt;
== Deutsch / Englisch ==&lt;br /&gt;
Sollten die Texte nicht eingedeutscht werden? Inhalt ist mal deutsch mal englisch --[[Benutzer:Svenson08|Svenson08]] ([[Benutzer Diskussion:Svenson08|Diskussion]]) 06:37, 2. Mär. 2016 (CET)&lt;br /&gt;
&lt;br /&gt;
Ist richtig, hat nur noch keiner gemacht. Kommt daher, dass setstate es auf seiner github Seite in Englisch hat und von dort das Meiste kopiert wurde. --[[Benutzer:Amenophis86|Amenophis86]] ([[Benutzer Diskussion:Amenophis86|Diskussion]]) 00:57, 5. Mär. 2016 (CET)&lt;br /&gt;
&lt;br /&gt;
== Widgets ==&lt;br /&gt;
zur besseren Lesbarkeit wäre es besser je Widget ein eigenen &amp;quot;Kapitel&amp;quot;/Überschrift in der Seite anzulegen. Es macht auch wenig Sinn die Beispiele eines Widgets am Ende der Seite einzuhängen. Verständlicher ist es Wenn die Beispiele bei dessen Erläuterung aufgeführt sind. Beispiele ohne Bilder machen wenig Sinn wenn ich ein UI erklären will. --[[Benutzer:Svenson08|Svenson08]] ([[Benutzer Diskussion:Svenson08|Diskussion]]) 19:39, 7. Mär. 2016 (CET)&lt;br /&gt;
:Da stimme ich nicht zu ... die jetzige Version mit den zusätzliche &amp;quot;Überschriften&#039; bei Label und Level ist m.E. unübersichtlicher ... aus der alphabetischen Übersicht kommt ja immer durch die Links schnell zu den Beschreibungen  und ebenfalls durch die Links zu den Beispielen ... wenn ich zu einem Widget die Argumente nachschlagen will würden m.E. die immer wieder dazwischen liegenden Beispiele eher stören --[[Benutzer:Nobby1805|Nobby1805]] ([[Benutzer Diskussion:Nobby1805|Diskussion]]) 23:33, 7. Mär. 2016 (CET)&lt;br /&gt;
Da diese Überschriften keine Kapitel sind ist diese Bearbeitung, Ergänzung mühselig. Das sollten zumindest Kapitel sein um das besser zu bearbeiten und in der Seiten Übersicht sind diese dann ebenfalls mit einem Blick zu sehen und man direkt von dort zum Beispiel springen. Ist eine kleinere Änderung. --[[Benutzer:Svenson08|Svenson08]] ([[Benutzer Diskussion:Svenson08|Diskussion]]) 04:54, 8. Mär. 2016 (CET)&lt;br /&gt;
Längere Artikel ohne Kapitel sind nur schwer zu Pflege, das dadurch ein index gebildet wird, besser ein Inhaltsverzeichnis halte ich sehr wohl als übersichtlicher, aber das sieht jeder anders. Aber bearbeite mal eine bestimmte stelle wenn du mehrere tausend Zeilen bis zur gesuchten Zeile scrollen musst. Diese Übersichtlichkeit ist ein Grund warum es die Funktion in jeder wiki Engine gibt.--[[Benutzer:Svenson08|Svenson08]] ([[Benutzer Diskussion:Svenson08|Diskussion]]) 04:58, 8. Mär. 2016 (CET)&lt;br /&gt;
&lt;br /&gt;
== Betriff Abschnitt Vorraussetungen ==&lt;br /&gt;
Vorausgesetzt ist noch ein definierte FHEMWEB Instance, ohne das würden die Fhem Befehle nicht gesendet werden, longpoll, etc. Zwar ist das Default jeder installation, aber man sollte darauf Hinweisen. --[[Benutzer:Svenson08|Svenson08]] ([[Benutzer Diskussion:Svenson08|Diskussion]]) 05:54, 8. Mär. 2016 (CET)&lt;/div&gt;</summary>
		<author><name>Svenson08</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=FHEM_Tablet_UI&amp;diff=14563</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=14563"/>
		<updated>2016-03-08T04:51:02Z</updated>

		<summary type="html">&lt;p&gt;Svenson08: Etwas umformuliert. Hinweis auf alternative WebServer eingefügt. Letzteres will ich noch ausführlicher in einem extra Abschnitt beschreiben&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:&lt;br /&gt;
* [[#dimmer|dimmer]]: toogle button with a setter for on value&lt;br /&gt;
* eventmonitor:&lt;br /&gt;
* highchart:&lt;br /&gt;
* [[#homestatus|homestatus]]: selector for 4 states (1=home, 2=night, 3=away, 4=holiday)&lt;br /&gt;
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/iframe iframe]]: Widget zum Einbinden externer Inhalte in einem Iframe. &lt;br /&gt;
* [[#image|image]]: insert an image, the URL is given by a reading&lt;br /&gt;
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/itunes_artwork itunes_artwork]: itunes_artwork durchsucht die iTunes-Datenbank anhand eines Arrays von beliebigen Suchworten nach einem Cover-Artwork und zeigt dieses an. &lt;br /&gt;
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/javascript javascript]: Ermöglicht die Ausführung beliebigen Javascript-Codes aus einem Reading.&lt;br /&gt;
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/joinedlabel joinedlabel]: verbindet mehrere Readings zu einem Feld&lt;br /&gt;
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/klimatrend klimatrend]: wandelt Daten aus dem statistics-Modul in einen Pfeil um, der den aktuellen Trend anzeigt. &lt;br /&gt;
* [https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/kodinowplaying kodinowplaying]: zeigt Informationen zu grade in KODI gespielten Medien in Form eines Labels an.&lt;br /&gt;
* [[#label|label]]: 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;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;chart&amp;quot;&amp;gt;&#039;&#039;&#039;CHART&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!HTML Attribut&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Default Wert&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-logdevice&lt;br /&gt;
|name of the logdevice (e.g. FileLog_WohnzimmerHeizung) or array of names if more than one graph shall be displayed&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-logfile&lt;br /&gt;
|name of the logfile (e.g. WohnzimmerHeizung-2015.log) or or array of names if more than one graph shall be displayed&lt;br /&gt;
|&#039;-&#039; or omitting this data means current logfile&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-columnspec&lt;br /&gt;
|definition for how to find the values (e.g. &amp;quot;4:meas.*:1:int&amp;quot;) or or array of columnspecs if more than one graph shall be displayed&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-style&lt;br /&gt;
|name of the graph style to be used (e.g. &#039;SVGplot l0&#039; or &#039;ftui l0dash&#039;) or or array of styles if more than one graph shall be displayed using different stlyes. The standard fhem plot styles can be used furthermore there are some more predefined styles existing (details see css file). Own styles can be specified e.g. in the fhem-table-ui-user.css file.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-ptype&lt;br /&gt;
|name of the plot type (e.g. &#039;lines&#039; or &#039;fa-cog&#039;) or or array of plottypes if more than one graph shall be displayed. All fhem plot styles are supported. Additionally it is possible to specify symbols (currently supported are font awesome (&#039;fa-...&#039;), open automation (&#039;oa-...&#039;) and fhem symbols (&#039;fs-...&#039;))&lt;br /&gt;
|&#039;lines&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-uaxis&lt;br /&gt;
|name of the axis to be used (&#039;primary&#039; or &#039;secondary&#039;) or or array of axis&#039; to be used if more than one graph shall be displayed. The &#039;primary&#039; axis is labelled on the left side, the &#039;secondary&#039; axis is labelled on the right side&lt;br /&gt;
|&#039;primary&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-legend&lt;br /&gt;
|caption of the graph (used in the legend and at the cursor) or an array of legend texts if more than one graph shall be displayed.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-minvalue&lt;br /&gt;
|min Y value to Show or an array of values for dynamic minY for primary axis. A value of &#039;auto&#039; means that the value is calculated from the data displayed dynamically&lt;br /&gt;
|10&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-minvalue_sec&lt;br /&gt;
|min Y value to Show or an array of values for dynamic minY for secondary axis. A value of &#039;auto&#039; means that the value is calculated from the data displayed dynamically&lt;br /&gt;
|&#039;auto&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-maxvalue&lt;br /&gt;
|max Y value to Show or an array of values for dynamic maxY for primary axis. A value of &#039;auto&#039; means that the value is calculated from the data displayed dynamically&lt;br /&gt;
|30&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-maxvalue_sec&lt;br /&gt;
|max Y value to Show or an array of values for dynamic maxY for secondary axis. A value of &#039;auto&#039; means that the value is calculated from the data displayed dynamically&lt;br /&gt;
|&#039;auto&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-yticks&lt;br /&gt;
|value distance between Y tick lines (related to primary axis). A value of &#039;auto&#039; means that the value is calculated from the data displayed dynamically.&lt;br /&gt;
|&#039;auto&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-xticks&lt;br /&gt;
|time range between each X tick lines (in minutes). A value of &#039;auto&#039; means that the value is calculated from the data displayed dynamically&lt;br /&gt;
|&#039;auto&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-daysago_start&lt;br /&gt;
|number of days back from now for the start of the plot (0 means the plot starts from today 0:00). Additionally the x-axis start value can be set here unsing standard data formats like (&#039;2013-10-23&#039;), the time portion of the string is only used when &amp;lt;code&amp;gt;data-nofulldays&amp;lt;/code&amp;gt; is &#039;true&#039;.&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-daysago_end&lt;br /&gt;
|number of days back from now for the end of the plot (-1 means the plot ends today 24:00). Additionally the x-axis end value can be set here unsing standard data formats like (&#039;2013-10-23&#039;), the time portion of the string is only used when &amp;lt;code&amp;gt;data-nofulldays&amp;lt;/code&amp;gt; is &#039;true&#039;.&lt;br /&gt;
|-1&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-nofulldays&lt;br /&gt;
|switch to activate/deactivate rounding of the xaxis start and end values to full days (&#039;true&#039; or &#039;false&#039;)&lt;br /&gt;
|&#039;false&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-ytext&lt;br /&gt;
|text to be shown besides the primary y axis.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-ytext_sec&lt;br /&gt;
|text to be shown besides the secondary y axis.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-yunit&lt;br /&gt;
|unit of the value to show beside of each Y ticks for primary y axis.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-crosshair&lt;br /&gt;
|switch to activate/deactivate the crosshair cursor (&#039;true&#039; or &#039;false&#039;)&lt;br /&gt;
|&#039;false&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-cursorgroup&lt;br /&gt;
|number to define coupling of the crosshair cursor. The cursors of all charts having the same number are coupled and move together.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-scrollgroup&lt;br /&gt;
|number to define coupling of the scrolling (shift and zoom). All charts having the same number are scrolled (shifted and zoomed) together.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-showlegend&lt;br /&gt;
|switch to activate/deactivate the initial display of the legend window (&#039;true&#039; or &#039;false&#039;)&lt;br /&gt;
|&#039;false&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-yunit_sec&lt;br /&gt;
|unit of the value to show beside of each Y ticks for secondary y axis.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-width&lt;br /&gt;
|fixed size for width (in&amp;amp;nbsp;% or px)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-height&lt;br /&gt;
|fixed size for height (in&amp;amp;nbsp;% or px)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |class&lt;br /&gt;
|fullsize, noticks, nobuttons&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;data-logfile&amp;lt;/code&amp;gt; can be omitted in this case the default value &amp;quot;-&amp;quot; will be used. This means that the current logfile is going to be used.&lt;br /&gt;
&lt;br /&gt;
There are several buttons that control the dynamic behaviour of the chart. The &amp;lt;-, -&amp;gt;, + and - buttons shift and zoom the displayed data. The &amp;quot;legend&amp;quot; and &amp;quot;cursor&amp;quot; buttons are switching on and off the display of the legend window and the crosshair cursor respectively.&lt;br /&gt;
&lt;br /&gt;
When the legend window is displayed, a click on the legend text shows/hides the respective graph. The legend window can be dragged to other positions on desktop browsers (currently not yet working for iOS and Android).&lt;br /&gt;
&lt;br /&gt;
The crosshair cursor currently only works dynamically on desktop browsers. On iOS and Android you have to tap on the screen to set the cursor to a new position.&lt;br /&gt;
&lt;br /&gt;
There is a number of css styles that control the visible appearance of the chart. The following classes are supported:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!CSS class name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
!.chart-background&lt;br /&gt;
|Color etc. for the chart background&lt;br /&gt;
|-&lt;br /&gt;
!.text.axes&lt;br /&gt;
|Font and color for the chart axes&lt;br /&gt;
|-&lt;br /&gt;
!.buttons&lt;br /&gt;
|Size and color for the buttons (shift etc.)&lt;br /&gt;
|-&lt;br /&gt;
!.gridlines&lt;br /&gt;
|Size and color for gridlines generally&lt;br /&gt;
|-&lt;br /&gt;
!.xaxis&lt;br /&gt;
|Font, size and color for xaxis&lt;br /&gt;
|-&lt;br /&gt;
!.yaxis&lt;br /&gt;
|Font, size and color for yaxis&lt;br /&gt;
|-&lt;br /&gt;
!.xticks&lt;br /&gt;
|Font, size and color for xticks&lt;br /&gt;
|-&lt;br /&gt;
!.yticks&lt;br /&gt;
|Font, size and color for yticks&lt;br /&gt;
|-&lt;br /&gt;
!.crosshair&lt;br /&gt;
|Font, size and color (foreground/background) for the crosshair cursor&lt;br /&gt;
|-&lt;br /&gt;
!.caption&lt;br /&gt;
|Font, size and color for text buttons for legend and cursor switching&lt;br /&gt;
|-&lt;br /&gt;
!.legend&lt;br /&gt;
|Font, size and background color for legend window&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[#Beispiel_chart|Link zu einem Beispiel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;circlemenu&amp;quot;&amp;gt;&#039;&#039;&#039;CIRCLEMENU&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!HTML Attribut&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Default Wert&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-item-diameter&lt;br /&gt;
|diameter of the circle&lt;br /&gt;
|52&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-circle-radius&lt;br /&gt;
|radius of each item, in pixel&lt;br /&gt;
|70&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-direction&lt;br /&gt;
|position of the items in relation to the center&lt;br /&gt;
|&#039;full&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-close-after&lt;br /&gt;
|closing time of the circle-menu&lt;br /&gt;
|(item-count + 1s) or a minimum of 4s&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |class&lt;br /&gt;
|keepopen&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Optionen für data-direction: top | right | bottom | left | top-right | top-left | bottom-right | bottom-left | top-half | right-half | bottom-half | left-half | full | vertical | horizontal&lt;br /&gt;
&lt;br /&gt;
[[#Beispiel_circlemenu|Link zu einem Beispiel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;dimmer&amp;quot;&amp;gt;&#039;&#039;&#039;DIMMER&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!HTML Attribut&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Default Wert&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get&lt;br /&gt;
|name of the reading to get from Fhem&lt;br /&gt;
|&#039;STATE&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get-on&lt;br /&gt;
|value for ON status to get&lt;br /&gt;
|&#039;on&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get-off&lt;br /&gt;
|value for OFF status to get&lt;br /&gt;
|&#039;off&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-set&lt;br /&gt;
|(&amp;lt;command&amp;gt; &amp;lt;device&amp;gt; &amp;lt;reading&amp;gt; &amp;lt;value&amp;gt;) &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-set-on&lt;br /&gt;
|value for ON status to set&lt;br /&gt;
|value of data-get-on&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-set-off&lt;br /&gt;
|value for OFF status to set&lt;br /&gt;
|value of data-get-off&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-cmd&lt;br /&gt;
|name of the command (&amp;lt;command&amp;gt; &amp;lt;device&amp;gt; &amp;lt;value&amp;gt;) (e.g. setstate, set, setreading, trigger)&lt;br /&gt;
|&#039;set&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-dim&lt;br /&gt;
|name of the reading responsible for dim (&amp;lt;command&amp;gt; &amp;lt;device&amp;gt; &amp;lt;reading&amp;gt; &amp;lt;value&amp;gt;) &lt;br /&gt;
|value of data-get-on&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-icon&lt;br /&gt;
|name of the font-awesome icon&lt;br /&gt;
|fa-lightbulb-o&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[#Beispiel_dimmer|Link zu einem Beispiel]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;homestatus&amp;quot;&amp;gt;&#039;&#039;&#039;HOMESTATUS&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!HTML Attribut&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Default Wert&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get&lt;br /&gt;
|name of the reading to get from Fhem&lt;br /&gt;
|&#039;STATE&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-set&lt;br /&gt;
|command to send to Fhem (&amp;lt;code&amp;gt;set &amp;lt;device&amp;gt; &amp;lt;command&amp;gt; &amp;lt;value&amp;gt;&amp;lt;/code&amp;gt;)&lt;br /&gt;
|&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-alias&lt;br /&gt;
|array of fix names to show only in the UI as an alias to the real states&lt;br /&gt;
|&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-icons&lt;br /&gt;
|array of icons related to the data-get-on array&lt;br /&gt;
|&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-version&lt;br /&gt;
|name of the status model e.g. &#039;residents&#039;,&#039;roommate&#039;,&#039;guest&#039; &lt;br /&gt;
|(default NULL)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The default version has 4 states: &#039;1&#039;,&#039;2&#039;,&#039;3&#039;,&#039;4&#039; The default aliases are &#039;Home&#039;,&#039;Night&#039;,&#039;Away&#039;,&#039;Holiday&#039;; data-version=&#039;residents&#039; or &#039;roommate&#039; or &#039;guest&#039; has 5 states (&#039;home&#039;,&#039;asleep&#039;,&#039;absent&#039;,&#039;gone&#039;,&#039;gotosleep&#039;) They have these aliases &#039;Home&#039;,&#039;Night&#039;,&#039;Away&#039;,&#039;Holiday&#039;,&#039;Retire&#039;&lt;br /&gt;
&lt;br /&gt;
[[#Beispiel_homestatus|Link zu einem Beispiel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;image&amp;quot;&amp;gt;&#039;&#039;&#039;IMAGE&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!HTML Attribut&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Default Wert&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get&lt;br /&gt;
|name of the reading to get an URL from Fhem&lt;br /&gt;
|&#039;STATE&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-size&lt;br /&gt;
|width of the image in px or %, the height scales proportionally&lt;br /&gt;
|50%&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-url&lt;br /&gt;
|URL of the image to show (use data-url or data-device + data-get, not both)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-refresh&lt;br /&gt;
|Interval in seconds for image refresh for usage together with data-url&lt;br /&gt;
|900&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[#Beispiel_image|Link zu einem Beispiel]]&lt;br /&gt;
&lt;br /&gt;
=== Widgets 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 !!Beschreibung !!Default Wert&lt;br /&gt;
|-&lt;br /&gt;
|data-get           ||Name des Readings in FHEM || &lt;br /&gt;
|-&lt;br /&gt;
|data-fix           ||keeping a specified number of decimals. ||&#039;-1&#039; -&amp;gt; non-numeric &lt;br /&gt;
|-&lt;br /&gt;
|data-part          ||split position of the space separated value to show or an RegEx || &lt;br /&gt;
|-&lt;br /&gt;
|data-colors        ||a array of color values to affect the colour of the label according to the limit value || &lt;br /&gt;
|-&lt;br /&gt;
|data-limits-get    ||name of the DEVICE:Reading to colorize the label  ||data-device:data-get &lt;br /&gt;
|-&lt;br /&gt;
|data-limits        ||an array of numeric values to affect the colour of the Label || &lt;br /&gt;
|-&lt;br /&gt;
|data-limits-part   ||part number of the space separated value to show or a RegEx ||&#039;-1&#039; -&amp;gt; all &lt;br /&gt;
|-&lt;br /&gt;
|data-unit          ||add a unit after a numeric value. use encoded strings e.g. &amp;quot;%B0C%0A&amp;quot; || &lt;br /&gt;
|-&lt;br /&gt;
|data-substitution  ||regex-substitution to apply on the value. Standard regex notation (s/regex/subst/modifier) is expected || &lt;br /&gt;
|-&lt;br /&gt;
|class              ||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;
Mit der Class &#039;fixedlabel&#039; kann man Label einbauen, die einen festen Text (direkt im HTML) haben, aber trotzdem die Farbe per Reading Value beeinflusst werden könnte.&amp;lt;br&amp;gt;&lt;br /&gt;
Mit der Class &#039;icon&#039; kann man Label einbauen, die wie Icons aussehen. Als Hintergrund gibt es &#039;icon round&#039; (rund), &#039;icon square&#039; (Rechteck mit abgerundeten Ecken) und &#039;icon squareborder&#039; (Rechteck mit abgerundeten Ecken und einem zusätzlichen Rand).&amp;lt;br&amp;gt;&lt;br /&gt;
Mit der Class &#039;bg-limit&#039; wird der Hintergrund des Icon auf grün oder rot gesetzt, passend zum on/off Status des data-limits.&lt;br /&gt;
&lt;br /&gt;
[[#Beispiel_label|Link zu einem Beispiel]]&lt;br /&gt;
&lt;br /&gt;
=== Widgets 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-colors&lt;br /&gt;
|a array of color values to affect the colour of the label according to the limit value&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-limits&lt;br /&gt;
|a array of numeric or RegEx values to affect the colour of the label&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |class&lt;br /&gt;
|mini, horizontal&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[#Beispiel_level|Link zu einem Beispiel]] (fehlt noch)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;pagetab&amp;quot;&amp;gt;&#039;&#039;&#039;PAGETAB&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!HTML Attribut&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Default Wert&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-url&lt;br /&gt;
|URL of the new page to show&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-icon&lt;br /&gt;
|name of the font-awesome icon&lt;br /&gt;
|&#039;fa-power-off&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-background-icon&lt;br /&gt;
|name of the font-awesome icon for background &lt;br /&gt;
|&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-on-background-color&lt;br /&gt;
|color of ON state&lt;br /&gt;
|&#039;#aa6900&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-off-background-color&lt;br /&gt;
|color of OFF state&lt;br /&gt;
|&#039;#505050&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-on-color&lt;br /&gt;
|color of ON state&lt;br /&gt;
|&#039;#aa6900&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-off-color&lt;br /&gt;
|color of Off state&lt;br /&gt;
|&#039;#505050&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get-on&lt;br /&gt;
|array of status to assign a special icon-list from data-icons&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-icons&lt;br /&gt;
|array of icons related to the a data-get-on array&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |class&lt;br /&gt;
|warn, activate (as additionals for data-icons)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[#Beispiel_pagetab|Link zu einem Beispiel]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;playstream&amp;quot;&amp;gt;&#039;&#039;&#039;PLAYSTREAM&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!HTML Attribut&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Default Wert&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-url&lt;br /&gt;
|URL des Radio-Streams&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get&lt;br /&gt;
|name of the reading to get the control state from FHEM&lt;br /&gt;
|&#039;STATE&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get-on&lt;br /&gt;
|value for PLAY status to get. &lt;br /&gt;
|&#039;on&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get-off&lt;br /&gt;
|value for STOP status to get. &lt;br /&gt;
|&#039;off&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-volume&lt;br /&gt;
|name of the reading to get the volume value (0-100) &lt;br /&gt;
|volume&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[#Beispiel_playstream|Link zu einem Beispiel]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;popup&amp;quot;&amp;gt;&#039;&#039;&#039;POPUP&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!HTML Attribut&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Default Wert&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get&lt;br /&gt;
|name of the reading where to get the alert value from&lt;br /&gt;
|&#039;STATE&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get-on&lt;br /&gt;
|value which trigger to open the dialog&lt;br /&gt;
|&#039;on&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-off&lt;br /&gt;
|value which trigger to close the dialog &lt;br /&gt;
|&#039;off&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-width&lt;br /&gt;
|fixe size for width (in % or px)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-height&lt;br /&gt;
|fixe size for height (in % or px)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[#Beispiel_popup|Link zu einem Beispiel]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;progress&amp;quot;&amp;gt;&#039;&#039;&#039;PROGRESS&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!HTML Attribut&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Default Wert&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get&lt;br /&gt;
|name of the reading to get from Fhem&lt;br /&gt;
|&#039;STATE&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-max&lt;br /&gt;
|maximal value to set or name of the reading which helds the max value&lt;br /&gt;
|100&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |class&lt;br /&gt;
|novalue, percent&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[#Beispiel_progress|Link zu einem Beispiel]] (fehlt noch)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;push&amp;quot;&amp;gt;&#039;&#039;&#039;PUSH&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!HTML Attribut&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Default-Wert&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-set&lt;br /&gt;
| name of the reading to set on FHEM (&amp;lt;command&amp;gt; &amp;lt;device&amp;gt; &amp;lt;reading&amp;gt; &amp;lt;value&amp;gt;) &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-set-on&lt;br /&gt;
|value to send when the the button get pressed oder ein Array zwischen dessen Werten umgeschaltet werden kann&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-icon&lt;br /&gt;
|name of the font-awesome icon&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-background-icon&lt;br /&gt;
|name of the font-awesome icon for background &lt;br /&gt;
|&#039;fa-circle&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-cmd&lt;br /&gt;
|name of the command (&amp;lt;command&amp;gt; &amp;lt;device&amp;gt; &amp;lt;value&amp;gt;) (e.g. setstate, set, setreading, trigger)&lt;br /&gt;
|&#039;set&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-doubleclick&lt;br /&gt;
|timeout to wait for a second click or touch. &#039;0&#039; disables the doubleclick feature. &lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-countdown&lt;br /&gt;
|secondes for the countdown progress control &lt;br /&gt;
|autodetect from &#039;on-for-timer&#039; command&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-background-icon&lt;br /&gt;
|name of the font-awesome icon for background &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-off-background-color&lt;br /&gt;
|fix color attribute for OFF state or DEVICE:READING for dynamic setting &lt;br /&gt;
|#505050&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-off-color&lt;br /&gt;
|fix color attribute for Off state or DEVICE:READING for dynamic setting&lt;br /&gt;
|#505050&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[#Beispiel_push|Link zu einem Beispiel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;rotor&amp;quot;&amp;gt;&#039;&#039;&#039;ROTOR&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!HTML Attribut&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Default Wert&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; | data-delay&lt;br /&gt;
|time in millisecondes to wait until next list item get shown&lt;br /&gt;
|3500&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |class&lt;br /&gt;
|fade, rotate&lt;br /&gt;
|&#039;&#039; &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
Ohne Angabe von class erfolgt keine Animation.&lt;br /&gt;
&lt;br /&gt;
[[#Beispiel_rotor|Link zu einem Beispiel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;select&amp;quot;&amp;gt;&#039;&#039;&#039;SELECT&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!HTML Attribut&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Default Wert&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get&lt;br /&gt;
|name of the reading that get the selected item of the list&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-set&lt;br /&gt;
|name of the reading to set on Fhem (&amp;lt;command&amp;gt; &amp;lt;device&amp;gt; &amp;lt;reading&amp;gt; &amp;lt;value&amp;gt;)&lt;br /&gt;
|&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-list&lt;br /&gt;
|name of the reading to get a :-separated list from Fhem&lt;br /&gt;
|&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-items&lt;br /&gt;
|an array of fix items to show in the selection box (alternative if data-list is empty)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-alias&lt;br /&gt;
|an array of fix names to show only in the selection box as an alias to the real items&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-cmd&lt;br /&gt;
|name of the command to send to Fhem (&amp;lt;command&amp;gt; &amp;lt;device&amp;gt; &amp;lt;reading&amp;gt; &amp;lt;value&amp;gt;) (e.g. setstate, set, setreading, trigger)&lt;br /&gt;
|&#039;set&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-quote&lt;br /&gt;
|characters to enclose the send value&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |class&lt;br /&gt;
|wider, w1x, w2x, w3x, large, big&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
[[#Beispiel_select|Link zu einem Beispiel]]&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;div id=&amp;quot;simplechart&amp;quot;&amp;gt;&#039;&#039;&#039;SIMPLECHART&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!HTML Attribut&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Default Wert&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-logdevice&lt;br /&gt;
|name of the logdevice (e.g. FileLog_WohnzimmerHeizung)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-logfile&lt;br /&gt;
|name of the logfile (e.g. WohnzimmerHeizung-2015.log)&lt;br /&gt;
|&#039;-&#039; means current logfile&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-columnspec&lt;br /&gt;
|definition for how to find the values (e.g. &amp;quot;4:meas.*:1:int&amp;quot;)&lt;br /&gt;
|&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-minvalue&lt;br /&gt;
|min Y value to Show or an array of values for dynamic minY &lt;br /&gt;
|10&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-maxvalue&lt;br /&gt;
|max Y value to Show or an array of values for dynamic maxY &lt;br /&gt;
|30&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-yticks&lt;br /&gt;
|value distance between Y tick lines&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-xticks&lt;br /&gt;
|time range between each X tick line (in Minuten)&lt;br /&gt;
|360 minutes&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-daysago&lt;br /&gt;
|number of days back from now &lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-caption&lt;br /&gt;
|name of the chart to show as text &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-yunit&lt;br /&gt;
|unit of the value to show beside of each Y ticks&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-width&lt;br /&gt;
|fixe size for width (in % or px)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-height&lt;br /&gt;
|fixe size for height (in % or px)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |class&lt;br /&gt;
|fullsize, noticks&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
[[#Beispiel_simplechart|Link zu einem Beispiel]] (fehlt noch)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;data-logfile&amp;lt;/code&amp;gt; kann man auch weglassen, dann greift der Defaultwert &amp;quot;-&amp;quot;. Damit wird das neuste Logfile gelesen.&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;div id=&amp;quot;slider&amp;quot;&amp;gt;&#039;&#039;&#039;SLIDER&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!HTML Attribut&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Default Wert&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get&lt;br /&gt;
|name of the reading to get from Fhem&lt;br /&gt;
|&#039;STATE&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-set&lt;br /&gt;
|command to send to Fhem (&amp;lt;code&amp;gt;set &amp;lt;device&amp;gt; &amp;lt;command&amp;gt; &amp;lt;value&amp;gt;&amp;lt;/code&amp;gt;)&lt;br /&gt;
|&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-cmd&lt;br /&gt;
|name of the command (&amp;lt;command&amp;gt; &amp;lt;device&amp;gt; &amp;lt;value&amp;gt;) (e.g. setstate, set, setreading, trigger)&lt;br /&gt;
|&#039;set&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-min&lt;br /&gt;
|minimal value to set&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-max&lt;br /&gt;
|maximal value to set&lt;br /&gt;
|100&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-on&lt;br /&gt;
|value where the slider moves to max&lt;br /&gt;
|&#039;on&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-off&lt;br /&gt;
|value where the slider moves to min&lt;br /&gt;
|&#039;off&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-value&lt;br /&gt;
|wenn true wird beim sliden der Wert angezeigt&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-width&lt;br /&gt;
|width for horizontal sliders&lt;br /&gt;
|&#039;120px&#039;, for mini &#039;60px&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-height&lt;br /&gt;
|height for vertical sliders &lt;br /&gt;
|&#039;120px&#039;, for mini &#039;60px&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |class&lt;br /&gt;
|Aussehen/Ausrichtung&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Für class steht mini, horizontal und negated (0 liegt oben) zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
[[#Beispiel_slider|Link zu einem Beispiel]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;switch&amp;quot;&amp;gt;&#039;&#039;&#039;SWITCH&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!HTML-Attribut&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Default-Wert&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get&lt;br /&gt;
|Name des Reading, was gelesen werden soll&lt;br /&gt;
|&#039;STATE&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get-on&lt;br /&gt;
|Wert, bei dem zum Status ON geschaltet werden soll. &lt;br /&gt;
|&#039;on&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get-off&lt;br /&gt;
|Wert, bei dem zum Status OFF geschaltet werden soll. &lt;br /&gt;
|&#039;off&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-set-on&lt;br /&gt;
|Wert, der zu Fhem gesendet werden soll, wenn das Widget auf ON geschaltet wurde  &lt;br /&gt;
|Wert von data-get-on&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-set-off&lt;br /&gt;
|Wert, der zu Fhem gesendet werden soll, wenn das Widget auf OFF geschaltet wurde &lt;br /&gt;
|Wert von data-get-off&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-cmd&lt;br /&gt;
|Kommando Name (&amp;lt;command&amp;gt; &amp;lt;device&amp;gt; &amp;lt;value&amp;gt;) &amp;lt;br /&amp;gt;(z.B setstate, set, setreading, trigger) &lt;br /&gt;
|&#039;set&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-icon&lt;br /&gt;
|Name des Font-Awesome Icon. &lt;br /&gt;
|&#039;fa-lightbulb-o&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-background-icon&lt;br /&gt;
|Name des Font-Awesome Hintergrund Icon. &lt;br /&gt;
|&#039;fa-circle&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-on-color&lt;br /&gt;
|Widget Farbe beim Status ON &lt;br /&gt;
|&#039;#aa6900&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-off-color&lt;br /&gt;
|Widget Farbe beim Status OFF &lt;br /&gt;
|&#039;#505050&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;data-get-on&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;data-get-off&amp;lt;/code&amp;gt; accept also RegEx values. e.g. data-get-on=&amp;quot;[0-9]{1,3}|on&amp;quot; means set switch on if STATE is a numeric value or &#039;on&#039;. data-get-off=&amp;quot;!on&amp;quot; means accept all but the data-get-on value (negation)&lt;br /&gt;
&lt;br /&gt;
[[#Beispiel_switch|Link zu einem Beispiel]]&lt;br /&gt;
&lt;br /&gt;
=== Widgets 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;
!align=&amp;quot;right&amp;quot; |data-get-on&lt;br /&gt;
|value for ON status to get. &lt;br /&gt;
|&#039;open&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get-off&lt;br /&gt;
|value for OFF status to get. &lt;br /&gt;
|&#039;closed&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-icon&lt;br /&gt;
|Name des font-awesome-Symbols  &lt;br /&gt;
|&#039;ftui-window&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-background-icon&lt;br /&gt;
|Hintergrundsymbol&lt;br /&gt;
|&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-on-background-color&lt;br /&gt;
|Farbe für ON-Zustand.&lt;br /&gt;
|&#039;#aa6900&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-off-background-color&lt;br /&gt;
|Farbe für OFF-Zustand.&lt;br /&gt;
|&#039;#505050&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-on-color&lt;br /&gt;
|Farbe für ON-Zustand.&lt;br /&gt;
|&#039;#aa6900&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-off-color&lt;br /&gt;
|Farbe für OFF-Zustand.&lt;br /&gt;
|&#039;#505050&#039;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
multi state notation&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!HTML Attribut&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Default Wert&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get&lt;br /&gt;
|Name des Reading, was gelesen werden soll&lt;br /&gt;
|&#039;STATE&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-states&lt;br /&gt;
|array of states. &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-icons&lt;br /&gt;
|Array mit Icons zu data-states Array&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-background-icons&lt;br /&gt;
|Array mit Icons zu data-states Array&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-colors&lt;br /&gt;
|array of colors related to the data-states array&lt;br /&gt;
|&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-background-colors&lt;br /&gt;
|array of background-colors related to the data-states array&lt;br /&gt;
|&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
data-get-on,data-get-off and data-states accept also RegEx values. The value for one icon can also contain an additional animatation CSS name, e.g. &amp;quot;fa-exclamation-triangle fa-blink&amp;quot; for a blinking Symbol&lt;br /&gt;
&lt;br /&gt;
[[#Beispiel_symbol|Link zu einem Beispiel]]&lt;br /&gt;
&lt;br /&gt;
=== Widgets 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; |class&lt;br /&gt;
|small, hue-tick, hue-front, hue-back, dim-tick ,dim-front, dim-back&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[#Beispiel_volume|Link zu einem Beispiel]] (fehlt noch)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;weather&amp;quot;&amp;gt;&#039;&#039;&#039;WEATHER&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!HTML Attribut&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Default Wert&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-get&lt;br /&gt;
|name of the reading to get the weather literal from Fhem&lt;br /&gt;
|&#039;STATE&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-imageset&lt;br /&gt;
|collection of images to display current weather situation. Possible values: &#039;meteocons&#039;, &#039;kleinklima&#039;&lt;br /&gt;
|&#039;meteocons&#039;&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;right&amp;quot; |data-image-path&lt;br /&gt;
|path to the images of the selected imageset&lt;br /&gt;
|/images/weather/&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[#Beispiel_weather|Link zu einem Beispiel]]&lt;br /&gt;
&lt;br /&gt;
== Widgets -- Beispiele ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_chart&amp;quot;&amp;gt;&#039;&#039;&#039;Chart&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Display a chart with similar capabilities as the FHEM plots&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div    data-type=&amp;quot;chart&amp;quot;&lt;br /&gt;
	data-logdevice=&#039;[&amp;quot;Log.Garden&amp;quot;,&amp;quot;Log.Garden&amp;quot;,&amp;quot;Log.Garden&amp;quot;,&amp;quot;Log.Predicted&amp;quot;]&#039;&lt;br /&gt;
	data-columnspec=&#039;[&amp;quot;4:Garden.T:15:&amp;quot;,&amp;quot;10:Garden.T:0:delta-h&amp;quot;,&amp;quot;10:Garden.T:0:delta-d&amp;quot;,&amp;quot;4:predicted.*:15:&amp;quot;]&#039;&lt;br /&gt;
	data-style=&#039;[&amp;quot;ftui l0fill&amp;quot;,&amp;quot;ftui l1fill&amp;quot;,&amp;quot;ftui l2&amp;quot;,&amp;quot;ftui l3dot&amp;quot;]&#039;&lt;br /&gt;
	data-ptype=&#039;[&amp;quot;lines&amp;quot;,&amp;quot;histeps&amp;quot;,&amp;quot;histeps&amp;quot;,&amp;quot;cubic&amp;quot;]&#039;&lt;br /&gt;
	data-uaxis=&#039;[&amp;quot;primary&amp;quot;,&amp;quot;secondary&amp;quot;,&amp;quot;secondary&amp;quot;,&amp;quot;primary&amp;quot;]&#039;&lt;br /&gt;
	data-legend=&#039;[&amp;quot;Temperature&amp;quot;,&amp;quot;Rain/hour&amp;quot;,&amp;quot;Rain/day&amp;quot;,&amp;quot;Predicted Temp.&amp;quot;]&#039;&lt;br /&gt;
	data-yunit=&amp;quot;°C&amp;quot;&lt;br /&gt;
	data-ytext=&amp;quot;Temperature&amp;quot;&lt;br /&gt;
	data-minvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
	data-maxvalue=&amp;quot;auto&amp;quot;&lt;br /&gt;
	data-yunit_sec=&amp;quot;mm&amp;quot;&lt;br /&gt;
	data-ytext_sec=&amp;quot;Rain (mm)&amp;quot;&lt;br /&gt;
	data-height=&amp;quot;250&amp;quot;&lt;br /&gt;
	data-yticks=&amp;quot;auto&amp;quot;&lt;br /&gt;
	data-minvalue_sec=&amp;quot;auto&amp;quot;&lt;br /&gt;
	data-maxvalue_sec=&amp;quot;auto&amp;quot;&lt;br /&gt;
	data-nofulldays=&amp;quot;true&amp;quot;&lt;br /&gt;
	data-daysago_start=&amp;quot;2013-08-13T00:00:00&amp;quot;&lt;br /&gt;
	data-daysago_end=&amp;quot;2013-08-14T00:00:00&amp;quot;&lt;br /&gt;
	data-cursorgroup=&amp;quot;1&amp;quot;&lt;br /&gt;
	data-scrollgroup=&amp;quot;1&amp;quot;&lt;br /&gt;
	data-xticks=&amp;quot;auto&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:chart_tabletUI.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_circlemenu&amp;quot;&amp;gt;&#039;&#039;&#039;Circlemenu&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cover a lot of other button behind one single button&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;circlemenu&amp;quot; class=&amp;quot;cell circlemenu&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ul class=&amp;quot;menu&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;div data-type=&amp;quot;push&amp;quot; data-icon=&amp;quot;fa-wrench&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;div data-type=&amp;quot;push&amp;quot; data-device=&amp;quot;AvReceiver&amp;quot; &lt;br /&gt;
               data-set=&amp;quot;remoteControl subwoofer-temporary-level -6&amp;quot; &lt;br /&gt;
               data-icon=&amp;quot;&amp;quot;&amp;gt;-6&amp;lt;/div&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;div data-type=&amp;quot;push&amp;quot; data-device=&amp;quot;AvReceiver&amp;quot; &lt;br /&gt;
               data-set=&amp;quot;remoteControl subwoofer-temporary-level -2&amp;quot; &lt;br /&gt;
               data-icon=&amp;quot;&amp;quot;&amp;gt;-2&amp;lt;/div&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;div data-type=&amp;quot;push&amp;quot; data-device=&amp;quot;AvReceiver&amp;quot; &lt;br /&gt;
               data-set=&amp;quot;remoteControl subwoofer-temporary-level 0&amp;quot; &lt;br /&gt;
               data-icon=&amp;quot;&amp;quot;&amp;gt;0&amp;lt;/div&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;div data-type=&amp;quot;push&amp;quot; data-device=&amp;quot;AvReceiver&amp;quot; &lt;br /&gt;
               data-set=&amp;quot;remoteControl subwoofer-temporary-level +3&amp;quot; &lt;br /&gt;
               data-icon=&amp;quot;&amp;quot;&amp;gt;2&amp;lt;/div&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;div data-type=&amp;quot;push&amp;quot; data-device=&amp;quot;AvReceiver&amp;quot; &lt;br /&gt;
               data-set=&amp;quot;remoteControl subwoofer-temporary-level +9&amp;quot; &lt;br /&gt;
               data-icon=&amp;quot;&amp;quot;&amp;gt;9&amp;lt;/div&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;div data-type=&amp;quot;push&amp;quot; data-device=&amp;quot;AvReceiver&amp;quot; &lt;br /&gt;
               data-set=&amp;quot;remoteControl subwoofer-temporary-level +C&amp;quot; &lt;br /&gt;
               data-icon=&amp;quot;&amp;quot;&amp;gt;12&amp;lt;/div&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Woofer&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:circlemenu_tabletUI.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_dimmer&amp;quot;&amp;gt;&#039;&#039;&#039;Dimmer&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dimmer Widget Beispiel für Philips Hue&lt;br /&gt;
&lt;br /&gt;
Minimalvariante&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
&amp;lt;div data-type=&amp;quot;dimmer&amp;quot; data-device=&amp;quot;HUEDevice1&amp;quot;&lt;br /&gt;
        data-get-on=&amp;quot;!off&amp;quot; data-get-off=&amp;quot;off&amp;quot;&lt;br /&gt;
        data-set=&amp;quot;pct&amp;quot;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit Anzeige der Dimstufe&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;dimmer&amp;quot; data-device=&amp;quot;HUEDevice1&amp;quot;&lt;br /&gt;
       data-get=&amp;quot;onoff&amp;quot;&lt;br /&gt;
       data-get-on=&amp;quot;1&amp;quot; data-get-off=&amp;quot;0&amp;quot;&lt;br /&gt;
       data-set=&amp;quot;&amp;quot;&lt;br /&gt;
       data-set-on=&amp;quot;on&amp;quot; data-set-off=&amp;quot;off&amp;quot;&lt;br /&gt;
       data-dim=&amp;quot;pct&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dimmer Widget für MilightDevice&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;dimmer&amp;quot;&lt;br /&gt;
  data-device=&amp;quot;SonstWas&amp;quot;&lt;br /&gt;
  data-get=&amp;quot;brightness&amp;quot;&lt;br /&gt;
  data-get-off=&amp;quot;0&amp;quot;&lt;br /&gt;
  data-get-on=&amp;quot;[1-9][0-9]*&amp;quot;&lt;br /&gt;
  data-set-on=&amp;quot;on&amp;quot;&lt;br /&gt;
  data-set-off=&amp;quot;off&amp;quot;&lt;br /&gt;
  data-dim=&amp;quot;dim&amp;quot;&lt;br /&gt;
  data-min=&amp;quot;0&amp;quot;&lt;br /&gt;
  data-max=&amp;quot;100&amp;quot;&lt;br /&gt;
&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_homestatus&amp;quot;&amp;gt;&#039;&#039;&#039;Homestatus&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel rechts im Bild:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;homestatus&amp;quot; data-device=&#039;dummy1&#039;&lt;br /&gt;
       data-get-on=&#039;[&amp;quot;1&amp;quot;,&amp;quot;2&amp;quot;,&amp;quot;3&amp;quot;,&amp;quot;4&amp;quot;]&#039;&lt;br /&gt;
       data-alias=&#039;[&amp;quot;Home&amp;quot;,&amp;quot;Night&amp;quot;,&amp;quot;Away&amp;quot;,&amp;quot;Holiday&amp;quot;]&#039;&lt;br /&gt;
       data-icons=&#039;[&amp;quot;fa-home&amp;quot;,&amp;quot;fa-bed&amp;quot;,&amp;quot;fa-car&amp;quot;,&amp;quot;fa-suitcase&amp;quot;]&#039;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel links im Bild:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;homestatus&amp;quot; data-device=&#039;dummy1&#039;&lt;br /&gt;
        data-get-on=&#039;[&amp;quot;home&amp;quot;,&amp;quot;asleep&amp;quot;,&amp;quot;absent&amp;quot;,&amp;quot;gone&amp;quot;,&amp;quot;gotosleep&amp;quot;]&#039;&lt;br /&gt;
        data-alias=&#039;[&amp;quot;Home&amp;quot;,&amp;quot;Night&amp;quot;,&amp;quot;Away&amp;quot;,&amp;quot;Holiday&amp;quot;,&amp;quot;Retire&amp;quot;]&#039;&lt;br /&gt;
        data-icons=&#039;[&amp;quot;fa-fire&amp;quot;,&amp;quot;fa-film&amp;quot;,&amp;quot;fa-plus&amp;quot;,&amp;quot;fa-car&amp;quot;,&amp;quot;fa-tint&amp;quot;]&#039;&lt;br /&gt;
        data-version=&#039;residents&#039;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:homestatus_tabletUI.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_image&amp;quot;&amp;gt;&#039;&#039;&#039;Image&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Erzeugt ein Widget mit einem Bild aus dem www, das alle 5 Sekunden aktualisiert wird (hier eine Wetterkarte vom DWD).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;image&amp;quot;&lt;br /&gt;
     data-size=&amp;quot;80%&amp;quot;&lt;br /&gt;
     data-url=&amp;quot;http://www.dwd.de/wundk/wetter/de/Deutschland.jpg&amp;quot;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:image_tabletUI.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example for how to add an image to the dashboard which its URL is delivered by a Fhem module like PROPLANTA:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;image&amp;quot; data-device=&amp;quot;Wetter1&amp;quot; &lt;br /&gt;
     data-get=&amp;quot;fc0_weatherDayIcon&amp;quot; &lt;br /&gt;
     data-size=&amp;quot;40px&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_label&amp;quot;&amp;gt;&#039;&#039;&#039;Label&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for HM-WDS40-TH-I Funk-Temperatur-/Feuchtesensor innen&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
STATE   T: 20.0 H: 61&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;THSensorWZ&amp;quot; &lt;br /&gt;
     data-part=&amp;quot;2&amp;quot; data-unit=&amp;quot;%B0C%0A&amp;quot; class=&amp;quot;cell big&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Temperatur&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;THSensorWZ&amp;quot; data-part=&amp;quot;4&amp;quot; &lt;br /&gt;
     data-unit=&amp;quot;%&amp;quot; class=&amp;quot;cell big&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Luftfeuchte&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
But the same result can reached by getting single readings:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
humidity    58&lt;br /&gt;
temperature 20.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;THSensorWZ&amp;quot; &lt;br /&gt;
     data-get=&amp;quot;temperature&amp;quot; data-unit=&amp;quot;%B0C%0A&amp;quot; class=&amp;quot;cell big&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Temperatur&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;THSensorWZ&amp;quot; &lt;br /&gt;
     data-get=&amp;quot;humidity&amp;quot; data-unit=&amp;quot;%&amp;quot; class=&amp;quot;cell big&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Luftfeuchte&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for how to influence the color of the label according to value limits&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; &lt;br /&gt;
     data-device=&amp;quot;OutTemp&amp;quot; &lt;br /&gt;
     data-limits=&#039;[-73,10,23]&#039; &lt;br /&gt;
     data-colors=&#039;[&amp;quot;#6699FF&amp;quot;,&amp;quot;#AA6900&amp;quot;,&amp;quot;#FF0000&amp;quot;]&#039; &lt;br /&gt;
     data-unit=&amp;quot;%B0C%0A&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell big&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for how to create a widget for shutter via push: show state and set up/down&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;switch&amp;quot; &lt;br /&gt;
     data-device=&amp;quot;wzRollo&amp;quot; &lt;br /&gt;
     data-get-on=&amp;quot;up&amp;quot; &lt;br /&gt;
     data-get-off=&amp;quot;down&amp;quot; &lt;br /&gt;
     data-icon=&amp;quot;fa-bars&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell&amp;quot;&amp;gt;Rollo&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for how to create a label for a time value in short format with usage of RegEx.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; &lt;br /&gt;
     data-device=&amp;quot;dummy1&amp;quot; &lt;br /&gt;
     data-part=&amp;quot;(\d\d\.\d\d\.).*&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for how to show two labels in one line.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;div type=&amp;quot;label&amp;quot; device=&amp;quot;OnSunrise&amp;quot; class=&amp;quot;inline&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;bis&lt;br /&gt;
   &amp;lt;div type=&amp;quot;label&amp;quot; device=&amp;quot;OnSunset&amp;quot; class=&amp;quot;inline&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel für die Anzeige des UV-Indexes und der Abhängigkeit der anzuzeigenden Farbe.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;wider cell bigger&amp;quot; data-device=&amp;quot;ProVorhersage&amp;quot;&lt;br /&gt;
        data-get=&amp;quot;fc0_uv&amp;quot;&lt;br /&gt;
        data-limits=&amp;quot;[-2, 2, 5, 7, 10]&amp;quot; &lt;br /&gt;
	data-colors=&#039;[&amp;quot;#66FF33&amp;quot;,&amp;quot;#FFFF00&amp;quot;,&amp;quot;#FF6600&amp;quot;,&amp;quot;#FF0000&amp;quot;,&amp;quot;#993399&amp;quot;]&#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
   &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot; data-device=&amp;quot;ProVorhersage&amp;quot; data-get=&amp;quot;fc0_date&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
   &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;wider cell bigger&amp;quot; data-device=&amp;quot;ProVorhersage&amp;quot;&lt;br /&gt;
        data-get=&amp;quot;fc1_uv&amp;quot;&lt;br /&gt;
	data-limits=&amp;quot;[-2, 2, 5, 7, 10]&amp;quot;&lt;br /&gt;
	data-colors=&#039;[&amp;quot;#66FF33&amp;quot;,&amp;quot;#FFFF00&amp;quot;,&amp;quot;#FF6600&amp;quot;,&amp;quot;#FF0000&amp;quot;,&amp;quot;#993399&amp;quot;]&#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
   &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot; data-device=&amp;quot;ProVorhersage&amp;quot; data-get=&amp;quot;fc1_date&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:label_tabletUI.jpg]]&lt;br /&gt;
&lt;br /&gt;
Beispiel für die Anzeige des Labels als Icon.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;AvReceiver&amp;quot; data-get=&amp;quot;input&amp;quot; class=&amp;quot;icon round bg-red cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;AvReceiver&amp;quot; data-get=&amp;quot;input&amp;quot; class=&amp;quot;icon square bg-blue cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;AvReceiver&amp;quot; data-get=&amp;quot;input&amp;quot; class=&amp;quot;icon squareborder cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;PowerAV_Sw&amp;quot; data-colors=&#039;[&amp;quot;red&amp;quot;,&amp;quot;green&amp;quot;]&#039; data-limits=&#039;[&amp;quot;off&amp;quot;,&amp;quot;on&amp;quot;]&#039; class=&amp;quot;icon round bg-limit cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Label_tabletUI_icon.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_pagetab&amp;quot;&amp;gt;&#039;&#039;&#039;Pagetab&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for a tab menu to switch smoothly between multiple pages. Multiple pagetabs in a template file: menu.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;header&amp;gt;MENU&amp;lt;/header&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;pagetab&amp;quot; data-url=&amp;quot;index.html&amp;quot;  data-icon=&amp;quot;fa-home&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;pagetab&amp;quot; data-url=&amp;quot;index_2.html&amp;quot; data-icon=&amp;quot;fa-sliders&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;pagetab&amp;quot; data-url=&amp;quot;index_3.html&amp;quot; data-icon=&amp;quot;fa-music&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;pagetab&amp;quot; data-url=&amp;quot;index_4.html&amp;quot; data-icon=&amp;quot;fa-hotel&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;pagetab&amp;quot; data-url=&amp;quot;index_5.html&amp;quot; data-icon=&amp;quot;fa-music&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;pagetab&amp;quot; data-url=&amp;quot;index_6.html&amp;quot; data-icon=&amp;quot;fa-database&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;pagetab&amp;quot; data-url=&amp;quot;index_7.html&amp;quot; data-icon=&amp;quot;fa-fax&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_playstream&amp;quot;&amp;gt;&#039;&#039;&#039;Playstream&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Erzeugt einen Knopf zum direkten Abspielen eines Webradio-Streams.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
     &amp;lt;div data-type=&amp;quot;playstream&amp;quot; data-url=&amp;quot;http://radioeins.de/stream&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
     &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;darker&amp;quot;&amp;gt;Radio eins&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_push&amp;quot;&amp;gt;&#039;&#039;&#039;Push&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for how to create a push button widget to trigger all devices on:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;push&amp;quot; &lt;br /&gt;
     data-device=&amp;quot;LightAll&amp;quot; &lt;br /&gt;
     data-cmd=&amp;quot;trigger&amp;quot; &lt;br /&gt;
     data-set=&amp;quot;on&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Beispiel für zwei horizontale Buttons:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;doublebox-h&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;push&amp;quot; data-device=&amp;quot;Rollo&amp;quot; &lt;br /&gt;
             data-icon=&amp;quot;fa-angle-up&amp;quot; data-background-icon=&amp;quot;fa-square-o&amp;quot; &lt;br /&gt;
             data-set=&amp;quot;up&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;push&amp;quot; data-device=&amp;quot;Rollo&amp;quot; &lt;br /&gt;
             data-icon=&amp;quot;fa-angle-down&amp;quot; data-background-icon=&amp;quot;fa-square-o&amp;quot; &lt;br /&gt;
             data-set=&amp;quot;down&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:push1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Beispiel für zwei quadratische vertikale Buttons:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;doublebox-v&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;push&amp;quot; data-device=&amp;quot;Rollo&amp;quot; &lt;br /&gt;
             data-icon=&amp;quot;fa-chevron-up&amp;quot; data-background-icon=&amp;quot;fa-square-o&amp;quot; &lt;br /&gt;
             data-set=&amp;quot;up&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div data-type=&amp;quot;push&amp;quot; data-device=&amp;quot;Rollo&amp;quot; &lt;br /&gt;
            data-icon=&amp;quot;fa-chevron-down&amp;quot; data-background-icon=&amp;quot;fa-square-o&amp;quot; &lt;br /&gt;
            data-set=&amp;quot;down&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:push2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_rotor&amp;quot;&amp;gt;&#039;&#039;&#039;Rotor&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for a rotor widget, which switches between to days of weather forecast&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;rotor&amp;quot; class=&amp;quot;fade&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;darker&amp;quot;&amp;gt;Heute&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;weather&amp;quot; data-device=&amp;quot;AgroWeather&amp;quot; data-get=&amp;quot;fc0_weatherDay&amp;quot; class=&amp;quot;big&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;AgroWeather&amp;quot; data-get=&amp;quot;fc0_weatherDay&amp;quot; class=&amp;quot;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;AgroWeather&amp;quot; data-get=&amp;quot;fc0_tempMax&amp;quot; data-unit=&amp;quot;%B0C%0A&amp;quot; class=&amp;quot;large&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;darker&amp;quot;&amp;gt;Morgen&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;weather&amp;quot; data-device=&amp;quot;AgroWeather&amp;quot; data-get=&amp;quot;fc1_weatherDay&amp;quot; class=&amp;quot;big&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;AgroWeather&amp;quot; data-get=&amp;quot;fc1_weatherDay&amp;quot; class=&amp;quot;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div data-type=&amp;quot;label&amp;quot; data-device=&amp;quot;AgroWeather&amp;quot; data-get=&amp;quot;fc1_tempMax&amp;quot; data-unit=&amp;quot;%B0C%0A&amp;quot; class=&amp;quot;large&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_select&amp;quot;&amp;gt;&#039;&#039;&#039;Select&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Erzeugt zwei Comboboxen zur Auswahl des Eingang eines 2-Zonen-AV-Receivers. Die Liste für Zone2 ist fest, die Liste für Zone1 wird von Fhem übergeben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cell wider&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;inline wider&amp;quot;&amp;gt;Zone2&amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;div data-type=&amp;quot;select&amp;quot; data-device=&amp;quot;AvReceiverZ2&amp;quot; data-items=&#039;[&amp;quot;Airplay&amp;quot;,&amp;quot;Webradio&amp;quot;,&amp;quot;BD/DVD&amp;quot;,&amp;quot;PHONO&amp;quot;]&#039; data-get=&amp;quot;input&amp;quot; data-set=&amp;quot;input&amp;quot; class=&amp;quot;cell w2x&amp;quot; &amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;inline&amp;quot;&amp;gt;Zone1&amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;div data-type=&amp;quot;select&amp;quot; data-device=&amp;quot;AvReceiver&amp;quot; data-list=&amp;quot;inputs&amp;quot; data-get=&amp;quot;input&amp;quot; data-set=&amp;quot;input&amp;quot; class=&amp;quot;cell w2x&amp;quot; &amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:select_tabeltUI.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_slider&amp;quot;&amp;gt;&#039;&#039;&#039;Slider&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Slider mit einstellbaren Werten von 10 bis 90:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;slider&amp;quot; &lt;br /&gt;
     data-device=&#039;Dummy1&#039; &lt;br /&gt;
     data-min=&amp;quot;10&amp;quot; &lt;br /&gt;
     data-max=&amp;quot;90&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Light1&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:slider_tabletUI.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Horizontal angeordneter Slider:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;slider&amp;quot;&lt;br /&gt;
     data-device=&#039;Dummy1&#039; &lt;br /&gt;
     data-min=&amp;quot;0&amp;quot; &lt;br /&gt;
     data-max=&amp;quot;100&amp;quot; &lt;br /&gt;
     class=&amp;quot;horizontal&amp;quot; &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:slider_tabletUI2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_switch&amp;quot;&amp;gt;&#039;&#039;&#039;Switch&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Schalter. Usage of RegEx pattern for state request:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;switch&amp;quot; class=&amp;quot;cell&amp;quot; &lt;br /&gt;
            data-device=&amp;quot;MILIGHT_Zone1_Wohnzimmer&amp;quot; &lt;br /&gt;
            data-get-on=&amp;quot;on.*&amp;quot;&lt;br /&gt;
            data-get-off=&amp;quot;off&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:switch.png]]&lt;br /&gt;
&lt;br /&gt;
Beispiel für eine Gruppe von Schaltern, um zwischen vier verschiedenen Werten eines device umzuschalten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cell left&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;div data-type=&amp;quot;switch&amp;quot; data-device=&amp;quot;dummy1&amp;quot; &lt;br /&gt;
      data-get-off=&amp;quot;((?!Wert1).)*&amp;quot; &lt;br /&gt;
      data-get-on=&amp;quot;Wert1&amp;quot; class=&amp;quot;cell&amp;quot; &amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Wert1&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;div data-type=&amp;quot;switch&amp;quot; data-device=&amp;quot;dummy1&amp;quot; &lt;br /&gt;
      data-get-off=&amp;quot;((?!Wert2).)*&amp;quot; &lt;br /&gt;
      data-get-on=&amp;quot;Wert2&amp;quot; class=&amp;quot;cell&amp;quot; &amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Wert2&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;div data-type=&amp;quot;switch&amp;quot; data-device=&amp;quot;dummy1&amp;quot; &lt;br /&gt;
      data-get-off=&amp;quot;((?!Wert3).)*&amp;quot; &lt;br /&gt;
      data-get-on=&amp;quot;Wert3&amp;quot; class=&amp;quot;cell&amp;quot; &amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Wert3&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;div data-type=&amp;quot;switch&amp;quot; data-device=&amp;quot;dummy1&amp;quot; &lt;br /&gt;
      data-get-off=&amp;quot;((?!Wert4).)*&amp;quot; &lt;br /&gt;
      data-get-on=&amp;quot;Wert4&amp;quot; class=&amp;quot;cell&amp;quot; &amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;div data-type=&amp;quot;label&amp;quot; class=&amp;quot;cell&amp;quot;&amp;gt;Wert4&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:switch4.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_symbol&amp;quot;&amp;gt;&#039;&#039;&#039;Symbol&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for a tristate icon&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;symbol&amp;quot; data-device=&amp;quot;dummy1&amp;quot; &lt;br /&gt;
     data-get-on=&#039;[&amp;quot;wert1&amp;quot;,&amp;quot;wert2&amp;quot;,&amp;quot;wert3&amp;quot;]&#039; &lt;br /&gt;
     data-icons=&#039;[&amp;quot;fa-arrow-up&amp;quot;,&amp;quot;fa-user&amp;quot;,&amp;quot;fa-arrow-down&amp;quot;]&#039; &lt;br /&gt;
     data-on-colors=&#039;[&amp;quot;SeaGreen&amp;quot;,&amp;quot;SlateBlue&amp;quot;,&amp;quot;IndianRed&amp;quot;]&#039; &lt;br /&gt;
     class=&amp;quot;cell big&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example for a tristate icon with blink and spin animation&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;symbol&amp;quot; data-device=&amp;quot;dummy1&amp;quot; &lt;br /&gt;
     data-icons=&#039;[&amp;quot;fa-exclamation-triangle fa-blink&amp;quot;,&amp;quot;fa-exclamation-circle&amp;quot;,&amp;quot;fa-cog fa-spin&amp;quot;]&#039; &lt;br /&gt;
     data-on-colors=&#039;[&amp;quot;Crimson&amp;quot;,&amp;quot;GoldenRod&amp;quot;,&amp;quot;SeaGreen&amp;quot;]&#039; &lt;br /&gt;
     data-get-on=&#039;[&amp;quot;Wert1&amp;quot;,&amp;quot;Wert2&amp;quot;,&amp;quot;Wert3&amp;quot;]&#039; &amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example for a battery level control with RegEx&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;symbol&amp;quot; data-device=&amp;quot;BadHeizung&amp;quot; data-get=&amp;quot;batteryLevel&amp;quot;&lt;br /&gt;
     data-icons=&#039;[&amp;quot;oa-measure_battery_100&amp;quot;,&amp;quot;oa-measure_battery_75&amp;quot;,&amp;quot;oa-measure_battery_50&amp;quot;,&amp;quot;oa-measure_battery_25&amp;quot;,&amp;quot;oa-measure_battery_0&amp;quot;]&#039;&lt;br /&gt;
     data-get-on=&#039;[&amp;quot;3\\.[0-9]&amp;quot;,&amp;quot;2\\.[789]&amp;quot;,&amp;quot;2\\.[456]&amp;quot;,&amp;quot;2\\.[123]&amp;quot;,&amp;quot;((2\\.0)|([01]\\.[0-9]))&amp;quot;]&#039;&lt;br /&gt;
     data-on-colors=&#039;[&amp;quot;#505050&amp;quot;,&amp;quot;#505050&amp;quot;,&amp;quot;#505050&amp;quot;,&amp;quot;#ad3333&amp;quot;,&amp;quot;#ad3333&amp;quot;]&#039;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example for a battery level control with greater-equal compare and 90° rotated symbols&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;symbol&amp;quot; data-device=&amp;quot;BadHeizung&amp;quot; data-get=&amp;quot;batteryLevel&amp;quot;&lt;br /&gt;
    data-icons=&#039;[&amp;quot;oa-measure_battery_0 fa-rotate-90&amp;quot;,&amp;quot;oa-measure_battery_25 fa-rotate-90&amp;quot;,&amp;quot;oa-measure_battery_50 fa-rotate-90&amp;quot;,&amp;quot;oa-measure_battery_75 fa-rotate-90&amp;quot;,&amp;quot;oa-measure_battery_0 fa-rotate-90&amp;quot;]&#039;&lt;br /&gt;
    data-get-on=&#039;[&amp;quot;0&amp;quot;,&amp;quot;2&amp;quot;,&amp;quot;2.4&amp;quot;,&amp;quot;2.7&amp;quot;,&amp;quot;3.0&amp;quot;]&#039;&lt;br /&gt;
    data-on-colors=&#039;[&amp;quot;#ad3333&amp;quot;,&amp;quot;#ad3333&amp;quot;,&amp;quot;#505050&amp;quot;,&amp;quot;#505050&amp;quot;,&amp;quot;#505050&amp;quot;]&#039;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_thermostat&amp;quot;&amp;gt;&#039;&#039;&#039;Thermostat&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure as data-device=&#039;...&#039; that item which delivers temp and desired-temp as reading.&lt;br /&gt;
&lt;br /&gt;
Default parameters are:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
data-get=&amp;quot;desired-temp&amp;quot; data-temp=&amp;quot;measured-temp&amp;quot; data-set=&amp;quot;desired-temp&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Therefor for HomaMatic HM-CC-RT-DN this is sufficient.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;thermostat&amp;quot; data-device=&#039;KH_Clima&#039; class=&amp;quot;cell&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The long format looks like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;thermostat&amp;quot; &lt;br /&gt;
     data-device=&amp;quot;KH_Clima&amp;quot; &lt;br /&gt;
     data-get=&amp;quot;desired-temp&amp;quot; &lt;br /&gt;
     data-temp=&amp;quot;measured-temp&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example for MAX!:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;thermostat&amp;quot; data-device=&amp;quot;HZ_Tuer&amp;quot; &lt;br /&gt;
    data-valve=&amp;quot;valveposition&amp;quot; &lt;br /&gt;
    data-get=&amp;quot;desiredTemperature&amp;quot; &lt;br /&gt;
    data-temp=&amp;quot;temperature&amp;quot; &lt;br /&gt;
    data-set=&amp;quot;desiredTemperature&amp;quot; &lt;br /&gt;
    class=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The wigets will show the valve value only in case of a valid data-valve attribute. The default for data-valve ist null. That means, a empty data-valve attribute hides the valve label for the widget.&lt;br /&gt;
&lt;br /&gt;
[[Datei:thermostat.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Beispiel_weather&amp;quot;&amp;gt;&#039;&#039;&#039;Weather&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Widget fügt ein dem Wetter entsprechendes Bild ein. Die Daten können durch Fhem-Module wie [[PROPLANTA]], [[OPENWEATHER]] und [[Weather]] bereitgestellt werden. &lt;br /&gt;
Add &#039;big&#039; or &#039;bigger&#039; to CSS class to get a bigger weather icon.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;weather&amp;quot; &lt;br /&gt;
     data-device=&amp;quot;Weather&amp;quot; &lt;br /&gt;
     data-get=&amp;quot;fc0_weatherDay&amp;quot; &lt;br /&gt;
     class=&amp;quot;cell big&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:weather.png]]&lt;br /&gt;
&lt;br /&gt;
== Icon-Konfiguration ==&lt;br /&gt;
&lt;br /&gt;
* Eingebaute Icons: Diese haben das ftui-Präfix. Zurzeit sind folgende verfügbar: ftui-window, ftui-door&lt;br /&gt;
&lt;br /&gt;
* Mehr als 500 Icons von &amp;quot;http://fortawesome.github.io/Font-Awesome/icons&amp;quot; verfügbar. Einfach den Icon-Namen angeben (Präfix &amp;quot;fa-&amp;quot; nicht vergessen, Z.B. &amp;lt;code&amp;gt;data-icon=&amp;quot;fa-volume-up&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Es stehen auch Openautomation Font-Files zur Verfügung. Wer sie nutzen möchte, muss folgende Stylesheets in die index.html hinzufügen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;/fhem/tablet/lib/openautomation.css&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;/fhem/tablet/lib/fhemSVG.css&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese font icons haben das Präfix &#039;fs-&#039; bzw. &#039;oa-&#039;.&lt;br /&gt;
&lt;br /&gt;
Beispiel bei einem Schalter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;div data-type=&amp;quot;switch&amp;quot; data-device=&#039;dummy1&#039; data-icon=&amp;quot;oa-secur_locked&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Und so als großes Symbol:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div data-type=&amp;quot;symbol&amp;quot; data-device=&#039;dummy1&#039;&lt;br /&gt;
        data-icon=&amp;quot;oa-status_frost&amp;quot;&lt;br /&gt;
        data-on-color=&amp;quot;#bb3232&amp;quot;&lt;br /&gt;
        data-get-on=&amp;quot;on&amp;quot;&lt;br /&gt;
        data-get-off=&amp;quot;!on&amp;quot;&lt;br /&gt;
        class=&amp;quot;bigger&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Icons kann man auch etwas dicker darstellen mit den Zusatz bold: &amp;lt;code&amp;gt;data-icon=&amp;quot;oa-secur_locked bold&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Namen der verfügbaren Icons findet man auch in den CSS Files (openautomation.css / fhemSVG.css)&lt;br /&gt;
&lt;br /&gt;
== Spezial ==&lt;br /&gt;
Folgender Befehl setzt einen direkten Befehl an Fhem ab (&amp;lt;code&amp;gt;set dummy1 off&amp;lt;/code&amp;gt;):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
     &amp;lt;div onclick=&amp;quot;setFhemStatus(&#039;set dummy1 off&#039;)&amp;quot;&amp;gt;All off!&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
Häufig gestellte Fragen zum FHEM Tablet UI sind in der [[FHEM_Tablet_UI/FAQ|FHEM Tablet UI FAQ]] zusammengestellt.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://forum.fhem.de/index.php/topic,34233.0.html Forums-Beitrag]&lt;br /&gt;
* [https://github.com/knowthelist/fhem-tablet-ui Projekt auf Github]&lt;br /&gt;
* [http://forum.fhem.de/index.php/topic,37378.0.html User-Demos]&lt;br /&gt;
* [https://github.com/ovibox/fhem-ftui-user-demos Download der User-Demo-Dateien]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:FHEM Frontends]]&lt;/div&gt;</summary>
		<author><name>Svenson08</name></author>
	</entry>
</feed>