<?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=Reinhart</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=Reinhart"/>
	<link rel="alternate" type="text/html" href="http://wiki.fhem.de/wiki/Spezial:Beitr%C3%A4ge/Reinhart"/>
	<updated>2026-04-10T21:06:09Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=EBUS&amp;diff=33189</id>
		<title>EBUS</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=EBUS&amp;diff=33189"/>
		<updated>2020-05-04T15:25:15Z</updated>

		<summary type="html">&lt;p&gt;Reinhart: Hinweis und Link für die neuen Adapter.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Randnotiz|RNTyp=r|RNText=Die Verwendung des EBUS zur &#039;&#039;Ansteuerung&#039;&#039; eines Heizungssystems kann dieses bei unsachgemäßer Anwendung beschädigen. Für unmittelbare oder mittelbare Folgen, die sich aus dem Nachbau des Interfaces oder der Verwendung der hier zur Verfügung gestellten Information ergeben, übernimmt der Autor keine Haftung.}}ACHTUNG:&lt;br /&gt;
&lt;br /&gt;
Dieses Wiki beschreibt die alten Adapter 1.x, welche technisch gesehen andere Anforderungen und Konfigurationen voraussetzen. Bei den neuen Adaptern ab Version 2.x bitte dieses [https://ebus.github.io/adapter/ Wiki für Informationen] nutzen. Die Beispieldateien sollten aber auch alle für die neuen Adapter gelten.&lt;br /&gt;
&lt;br /&gt;
Dieser Artikel beschreibt die Ankopplung von Heizungssysteme mit eBus-Interface an FHEM.&lt;br /&gt;
&lt;br /&gt;
Der eBus ist eine bei vielen Heizungssystemen vorhandene serielle Schnittstelle mit zwei Leitungen. Verwendet werden dabei 2400 Baud als Geschwindigkeit und die beiden Signalpegel&lt;br /&gt;
*logisch 1: 15–24 V&lt;br /&gt;
*logisch 0: 9–12 V&lt;br /&gt;
&lt;br /&gt;
[[Datei:EBUS-Adapter-aufgebaut.png|thumb|left|alt=eBus Platine]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fertig aufgebaute eBus Platine, bereit für den Einsatz mit eBusd!&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Interface=&lt;br /&gt;
==Schaltung==&lt;br /&gt;
[[Datei:EBUS_Interface_Schaltung.png|thumb|left|alt=eBus-USB Interface]]&lt;br /&gt;
Eine direkte Ankopplung des eBus an FHEM via Pegelwandlung und serielle Schnittstelle ist nicht empfehlenswert, stattdessen wurde der Weg beschritten, einen separaten Raspberry Pi (Modell B) an den eBus zu koppeln und darauf die Software &#039;&#039;eBusd&#039;&#039; laufen zu lassen. Diese wird dann in einer beliebigen FHEM-Instanz als ECMD-Device definiert und somit per Telnet abgefragt.&lt;br /&gt;
&lt;br /&gt;
Hierbei wird ein kommerziell für ca. 6,00 € erhältliches USB-Modul mit ein paar Zusatzbauteilen im Wert von ca. 5,00 € versehen. Das Interface hat die folgenden Eigenschaften:&lt;br /&gt;
*Verpolungssicherer eBus-Anschluss&lt;br /&gt;
*Galvanische Trennung zwischen eBus und USB &lt;br /&gt;
Die Bauteile sind unkritisch und können durch äquivalente Teile ersetzt werden. Allerdings sollte bei der Zenerdiode auf eine Belastbarkeit mit 1,3 W geachtet werden, und beim USB-Modul darauf, dass dieses einen FTDI-Chip enthält.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Der Autor übernimmt keine Haftung für die Anwendung dieser Schaltung. Zur Vermeidung von Schäden durch unsachgemäße Bedienung des Heizungssystems wird ausdrücklich empfohlen, nur die lesende Hälfte des Interfaces nachzubauen und sich auf ein passives Lauschen auf dem EBUS zu beschränken. Dazu einfach den Zweig mit Darlington-Transistor aus der Schaltung nicht einbauen.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Schaltung des eBus von Prof. Dr. Peter A. Henning ist eine bewährte Schaltung die von zahlreichen Anwendern bereits nachgebaut wurde. &lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Eigenbau (Lochrasterplatine)==&lt;br /&gt;
[[Datei:EBUS_Adapter_Lochrasterplatine.png|thumb|left|alt=Platine]]&lt;br /&gt;
&lt;br /&gt;
Hier ein Beispiel eines Aufbaues auf einer Lochrasterplatine.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Platine==&lt;br /&gt;
Auf Basis der oben genannten Schaltung, wurde im {{Link2Forum|Topic=46098|LinkText=FHEM Forum}} ein Platinenlayout erstellt und produziert. Die dazu benötigten Gerberfiles können {{Link2Forum|Topic=45127|Message=370647|LinkText=hier}} heruntergeladen werden. Der Autor des Layouts hat dies mit der Freeware Version von EAGLE erstellt, d.h. die Files können bei allen Platinenherstellern eingereicht werden (keine Lizenz eines bestimmten Herstellers notwendig).&lt;br /&gt;
[[Datei:EBUS_Adapter_Platine.png|thumb|left|alt=Platine]]&lt;br /&gt;
Diese Beschreibung sollte hauptsächlich für Personen dienen, bei denen es nicht das tägliche Brot ist elektronische Schaltungen in Betrieb zu nehmen. Ich setze hier voraus, dass der Umgang mit einem Lötkolben klar ist. Wer noch nie gelötet hat, sollte besser einen Bekannten ersuchen der das schon gemacht hat.&lt;br /&gt;
Nachfolgend wird beschrieben, wie eine Platine mit den Bauteilen bestückt wird.&lt;br /&gt;
Am einfachsten ist es einen fertigen Adapter zu kaufen.&lt;br /&gt;
Siehe dazu auch den {{Link2Forum|Topic=46098|LinkText=Link aus dem Forum}}:&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Platine bestücken===&lt;br /&gt;
[[Datei:EBUS_Adapter_Bestueckung.png|thumb|left|alt=Platine bestücken]]&lt;br /&gt;
Bei der Bestückung sollte darauf geachtet werden mit den niedrigsten Bauteilen zuerst zu beginnen, sonst fallen sie beim verlöten ständig heraus. Wer die Farbcodes der Widerstände nicht auswendig kennt sollte diese vorher mit einem Meßgerät (Ohmmeter) messen. Nach den Dioden und Widerständen können die IC Sockel eingelötet werden, hier sollte lediglich auf die Einkerbung laut Bestückungsaufdruck geachtet werden. Zum Schluß noch die restlichen Bauteile. Nach einer genauen Sichtkontrolle (verbogene Beinchen des IC, Kurzschlüsse beim Löten, richtige Polung) können noch die ICS eingesetzt werden. Diese können auf einer flachen Unterlage etwas vorgebogen werden, damit sie leichter in den Sockel passen.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Achtung&#039;&#039;&#039;: der IC 4011 ist ein Cmos Schaltkreis und ist empfindlich gegen statische Aufladungen, daher die Beinchen nicht mit dem Finger berühren, bzw. ein Antistatikband am Arm verwenden.&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Bestückung der Widerstände bei Platine V1.6&lt;br /&gt;
 R1 = 3k3&lt;br /&gt;
 R2 = 1k0&lt;br /&gt;
 R3 = 20k Poti&lt;br /&gt;
 R4 = 10k (auf der Platine nicht beschriftet, links neben R2)&lt;br /&gt;
 R5 = 470&lt;br /&gt;
 R6 = 22k&lt;br /&gt;
 R7 = 100k (auf der Platine nicht beschriftet, links unten liegt quer)&lt;br /&gt;
&lt;br /&gt;
[https://secure.reichelt.de/index.html?&amp;amp;ACTION=20&amp;amp;AWKID=1170007&amp;amp;PROVID=2084 Warenkorb der benötigten Bauteile von Reichelt]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Platine Messpunkte===&lt;br /&gt;
Der Schaltplan mit den Messpunkten wurde entfernt, da er etwas missverständlich formuliert war und bei einigen Anwendern Verwirrung auslöste.&lt;br /&gt;
&lt;br /&gt;
===Poti abgleichen===&lt;br /&gt;
Zur ersten Justierung des Potis, wird der eBusd Dienst genutzt. Das Vorgehen sieht wie folgt aus:&lt;br /&gt;
&lt;br /&gt;
1) &#039;&#039;&#039;eBus Dienst stoppen&#039;&#039;&#039; - Das kann mit der folgenden Kommandozeile bewerkstelligt werden:&lt;br /&gt;
 service ebusd stop&lt;br /&gt;
2) &#039;&#039;&#039;eBus Dienst&#039;&#039;&#039;, jedoch mit minimalen Parametern und ohne eBusd Konfigurationsdateien (CSV-Files), mit der folgenden Kommandozeile erneut starten:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; &amp;lt;DEVICE&amp;gt; Muss zuvor durch den entsprechenden USB-Port (siehe [[#USB Device und Port unter Linux ermitteln|USB Device und Port unter Linux ermitteln]]) z.B. /dev/ttyUSB0 ersetzt werden.&#039;&#039;&lt;br /&gt;
 ebusd -f -c /tmp --logareas bus --loglevel info -d &amp;lt;DEVICE&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3) Der eBusd Dienst läuft nun im &#039;&#039;&#039;Vordergrund&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
4) &#039;&#039;&#039;Einem zweiten Terminal öffnen&#039;&#039;&#039; und den folgenden Befehl ausführen:&lt;br /&gt;
 ebusctl raw&lt;br /&gt;
&lt;br /&gt;
Mit dem Befehl erhält man im Terminalfenster die empfangenen Bytes als Hex, die wie folgt aussehen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
2015-12-24 12:07:16.955 [bus notice] &amp;lt;aa&lt;br /&gt;
2015-12-24 12:07:17.001 [bus notice] &amp;lt;aa&lt;br /&gt;
2015-12-24 12:07:17.047 [bus notice] &amp;lt;aa&lt;br /&gt;
2015-12-24 12:07:17.093 [bus notice] &amp;lt;aa&lt;br /&gt;
2015-12-24 12:07:17.097 [bus notice] &amp;lt;10&lt;br /&gt;
2015-12-24 12:07:17.102 [bus notice] &amp;lt;50&lt;br /&gt;
2015-12-24 12:07:17.107 [bus notice] &amp;lt;b5&lt;br /&gt;
2015-12-24 12:07:17.111 [bus notice] &amp;lt;04&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Wenn gerade kein Gerät den Bus nutzt, dann sollten ca. 20 Zeilen pro Sekunde ausgegeben werden und zwar mit &amp;quot;&amp;lt;aa&amp;quot; (im Beispiel die oberen 4 Zeilen).&lt;br /&gt;
&lt;br /&gt;
Sobald ein Gerät den eBus nutzt, tauchen neben &amp;quot;&amp;lt;aa&amp;quot; auch andere HEX Werte auf (im Beispiel die unteren 4 Zeilen). Diese Werte können ignoriert werden.&lt;br /&gt;
&lt;br /&gt;
Wichtig bei der Poti Einstellung ist, dass vor allem die regulären &amp;quot;aa&amp;quot;s zu sehen sind. Tauchen die &amp;quot;aa&amp;quot;s auf, dann kann davon ausgegangen werden, dass der Poti korrekt eigestellt ist. Ist dies der Fall, dann kann der eBusd Dienst regulär gestartet werden.&lt;br /&gt;
Dabei muss der im Vordergrund laufende eBusd Prozess (siehe Punkt 2) mit der Tastenkombination STRG+C abgebrochen und der folgende Befehl in der Kommandozeile ausgeführt werden:&lt;br /&gt;
 service ebusd start&lt;br /&gt;
Anschließend erscheint eine Meldung, die einen erfolgreichen Start des Dienstes signalisiert.&lt;br /&gt;
 [ ok ] Starting ebusd: ebusd.&lt;br /&gt;
&lt;br /&gt;
===Bekannte Fehler=== &lt;br /&gt;
Das Logfile ist zur Inbetriebnahme unerlässlich und kann (z.B. mit [[#PSPad|PSPad]]) ausgelesen werden. &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
2015-12-22 16:27:34.195 [bus notice] signal acquired&lt;br /&gt;
2015-12-22 16:28:12.029 [bus error] signal lost&lt;br /&gt;
2015-12-22 16:28:12.339 [bus notice] signal acquired&lt;br /&gt;
2015-12-22 16:28:14.006 [bus error] signal lost&lt;br /&gt;
2015-12-22 16:28:16.372 [bus notice] signal acquired&lt;br /&gt;
2015-12-22 16:28:18.023 [bus error] signal lost&lt;br /&gt;
2015-12-22 16:28:18.729 [bus notice] signal acquired&lt;br /&gt;
2015-12-22 16:28:20.458 [update notice] update myCustom Status01: 43.0;41.0;8.000;41.0;38.0;ok&lt;br /&gt;
2015-12-22 16:28:26.460 [update notice] update bc Mode QQ=10: standby&lt;br /&gt;
2015-12-22 16:28:30.436 [update notice] update myCustom Status01: 41.0;40.0;8.000;41.0;38.0;ok&lt;br /&gt;
2015-12-22 16:28:32.458 [update notice] update broadcast vdatetime QQ=10: 16:24:52;22.12.2015&lt;br /&gt;
2015-12-22 16:28:32.696 [update notice] update myCustom2 Pumpenstatus: ok&lt;br /&gt;
2015-12-22 16:28:36.452 [update notice] update bc Mode QQ=10: standby&lt;br /&gt;
2015-12-22 16:28:40.478 [update notice] update myCustom Status01: 40.0;39.0;7.750;41.0;38.0;ok&lt;br /&gt;
2015-12-22 16:28:42.482 [update notice] update myCustom1 Status11: nosignal;41;5;18;-;-;-;-;8.000&lt;br /&gt;
2015-12-22 16:28:42.753 [update notice] update myCustom Status02: auto;60;70.0;70;54.0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier ein typisches Log wenn das Poti noch nicht oder &#039;&#039;&#039;falsch kalibriert&#039;&#039;&#039; wurde.&lt;br /&gt;
Ab dem Eintrag 16:28:20.458 war dann die richtige Stellung gefunden. Das Poti soll daher zunächst ganz nach links (Transistor der Platine ist dann rechts unten) gedreht werden und dann vorsichtig auf etwa 2:00 Uhr. Bei knapp 2:00 Uhr ist bei der Testplatine dann die ideale Stellung. Der Stellbereich ist sehr klein (etwa 1-2 mm), daher einen Schraubendreher verwenden der sehr exakt passt und gleichzeitig mit dem Laptop abfragen starten. Zur Kontrolle dann das Log (var/log/ebusd.log) abfragen. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
2015-11-29 06:26:55.271 [update notice] update myCustom1 Status11: nosignal;40;0;15;-;-;-;-;-0.188&lt;br /&gt;
2015-11-29 06:26:55.541 [update notice] update myCustom Status02: auto;60;70.0;70;54.0&lt;br /&gt;
2015-11-29 06:26:59.293 [update notice] update bc Mode QQ=10: standby&lt;br /&gt;
2015-11-29 06:27:03.323 [update notice] update myCustom Status01: 53.0;45.0;-0.438;47.0;46.0;error&lt;br /&gt;
2015-11-29 06:27:05.268 [update notice] update broadcast outsidetemp QQ=10: -3.188&lt;br /&gt;
2015-11-29 06:27:09.344 [update notice] update bc Mode QQ=10: standby&lt;br /&gt;
2015-11-29 06:27:11.934 [bus error] send to 08: ERR: read timeout, retry&lt;br /&gt;
2015-11-29 06:27:11.981 [bus error] send to 08: ERR: read timeout, retry&lt;br /&gt;
2015-11-29 06:27:12.025 [bus error] send to 08: ERR: read timeout, retry&lt;br /&gt;
2015-11-29 06:27:12.069 [bus error] send to 08: ERR: read timeout&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In diesem Fall liegt ein Fehler bei jedem Sendeversuch vor. Ein &amp;quot;bus error&amp;quot; mit timeout sollte nicht (zu oft) zu finden sein. Gut zu sehen sind schon die Broadcast Meldungen, die selbständig über den Bus laufen und vom Konverter schon richtig interpretiert werden. Sollten wie in diesem Fall, die Meldungen nicht mit Texten zu lesen sein fehlen noch die Konfigurationfiles (csv) im Verzeichnis /etc/ebusd. Welche Files hier verwendet werden sollen ist natürlich von der Therme und dem Zubehör abhängig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Achtung&#039;&#039;&#039;: Der Autor übernimmt keine Haftung für die Anwendung dieser Schaltung. Zur Vermeidung von Schäden durch unsachgemäße Bedienung des Heizungssystems wird ausdrücklich empfohlen, nur lesend auf die Schnittstelle zugreifen.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Kommerzielles Interface==&lt;br /&gt;
Ein kommerzielles Interface für die Umsetzung eBus-&amp;gt;USB ist hier erhältlich:&lt;br /&gt;
[https://www.eservice-online.de/produkte/ebus/ eBus Koppler USB]&lt;br /&gt;
&lt;br /&gt;
=Software=&lt;br /&gt;
Als Software kommt auf dem Raspberry Pi der [https://github.com/john30/ebusd ebusd] = eBus-Dämon zum Einsatz (aktuell im Januar 2016 die Version 2.0). &lt;br /&gt;
&lt;br /&gt;
Der ebusd wird auf dem System (z.B Raspberry Pi) nach der beiliegenden Anleitung übersetzt und installiert.&lt;br /&gt;
&lt;br /&gt;
Wichtigsten Bestandteile (Komponenten) der Installation sind:&lt;br /&gt;
*&#039;&#039;ebusd&#039;&#039; - das eigentliche Programm zur Kommunikation mit dem EBUS&lt;br /&gt;
*&#039;&#039;ebusd-configuration - Dateien im CSV(Comma Separated Value)-Format, die beim Start des eBusd eingelesen und als Kommandos (Befehle) für das Heizungsystem verwendet werden.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Nachfolgend wird die Installation der zwei Komponenten beschrieben.&lt;br /&gt;
&lt;br /&gt;
==eBusd Installation per Debian Package==&lt;br /&gt;
&lt;br /&gt;
===Voraussetzungen===&lt;br /&gt;
wget (ist in der Regel auf vielen Distributionen bereits installiert). Die Installation kann mit der folgenden Kommandozeile nachträglich durchgeführt werden: &lt;br /&gt;
 sudo apt-get install wget&lt;br /&gt;
&lt;br /&gt;
===eBusd installieren===&lt;br /&gt;
Das entsprechende eBusd Debian Package kann [https://github.com/john30/ebusd/releases vom GitHub ebusd] bezogen werden.&lt;br /&gt;
&lt;br /&gt;
Die Installation (&#039;&#039;Stand Januar 2016 - Version 2.0&#039;&#039;) wird wie folgt durchgeführt:&lt;br /&gt;
&lt;br /&gt;
 EBUSDPACKAGE=ebusd-2.0_armhf.deb # &amp;lt;--- Version kann bei Bedarf hier angepasst werden.&lt;br /&gt;
 wget https://github.com/john30/ebusd/releases/download/v2.0/$EBUSDPACKAGE&lt;br /&gt;
 sudo dpkg -i --force-overwrite $EBUSDPACKAGE&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Die eBusd wird dauernd aktualisiert. Aus diesem Grund sollte vor der Installation geprüft werden (siehe den o.g. Link), ob bereits eine neuere Version zur Verfügung steht. Der Name des Debian Packages muss, vor der Ausführung der o.g. Kommandozeilen, an der entsprechenden Stelle angepasst werden.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===eBusd Konfigurationsdateien (CSV-Files)===&lt;br /&gt;
Das entsprechende eBusd Konfigurations Debian Package kann [https://github.com/john30/ebusd-configuration/releases vom GitHub ebusd-configuration] bezogen werden.&lt;br /&gt;
&lt;br /&gt;
Die Installation (&#039;&#039;Stand Januar 2016 - Version 2.0.5aa482c&#039;&#039;) wird wie folgt durchgeführt:&lt;br /&gt;
&lt;br /&gt;
 EBUSDCFGPACKAGE=ebusd-configuration-2.0.5aa482c-de_all.deb # &amp;lt;--- Version kann bei Bedarf hier angepasst werden.&lt;br /&gt;
 wget https://github.com/john30/ebusd-configuration/releases/download/v2.0.1/$EBUSDCFGPACKAGE&lt;br /&gt;
 sudo dpkg -i --force-overwrite $EBUSDCFGPACKAGE&lt;br /&gt;
&lt;br /&gt;
===eBusd starten===&lt;br /&gt;
Nach der erfolgreichen Installation des eBusd und der eBusd Konfigurationsdateien kann nun der Dienst gestartet werden.&lt;br /&gt;
Zuvor muss jedoch der USB-Port des eBus Adapters überprüft werden (siehe auch [[#USB Device und Port unter Linux ermitteln|USB Device und Port unter Linux ermitteln]]). Sollte der USB-Port von dem Standardwert &amp;quot;/dev/ttyUSB0&amp;quot; abweichen, dann muss die Konfiguration &amp;quot;/etc/default/ebusd&amp;quot; angepasst werden.&lt;br /&gt;
Andernfalls kann nun der Dienst mit der folgenden Kommandozeile gestartet werden:&lt;br /&gt;
&lt;br /&gt;
 service ebusd start&lt;br /&gt;
Anschließend erscheint eine Meldung:&lt;br /&gt;
 [ ok ] Starting ebusd: ebusd.&lt;br /&gt;
die einen erfolgreichen Start des Dienstes signalisiert.&lt;br /&gt;
&lt;br /&gt;
===eBusd und Konfigurationsdateien deinstallieren===&lt;br /&gt;
Nachfolgend wird die Deinstallation des eBusd und der eBusd Konfigurationsdateien beschrieben.&lt;br /&gt;
&lt;br /&gt;
Zunächst muss der eBusd Dienst beendet werden, dies erfolgt mit der folgenden Kommandozeile:&lt;br /&gt;
 service ebusd stop&lt;br /&gt;
Anschließend erscheint eine Meldung:&lt;br /&gt;
 [ ok ] Stopping ebusd: ebusd.&lt;br /&gt;
die einen erfolgreichen Stop des Dienstes signalisiert.&lt;br /&gt;
&lt;br /&gt;
Anschließend wird zunächst das Debian Konfigurations Package deinstalliert. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Bei der Deinstallation werden alle Konfigurationsdateien (CSV-Files) unwiderruflich gelöscht!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Deinstallation erfolgt mit der folgenden Kommandozeile:&lt;br /&gt;
 sudo dpkg -r --force-overwrite ebusd-configuration&lt;br /&gt;
&lt;br /&gt;
Das eBusd Debian Package wird mit der folgenden Kommandozeile deinstalliert:&lt;br /&gt;
 sudo dpkg -r --force-overwrite ebusd&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tipp:&#039;&#039;&#039; Mit der folgenden Kommandozeile: &lt;br /&gt;
 dpkg -l | grep &#039;ebusd&#039; &lt;br /&gt;
können die installierten eBusd Debian Packages überprüft werden. &lt;br /&gt;
&lt;br /&gt;
Liefert der Befehl kein Ergebnis, dann kann davon ausgegangen werden, dass kein eBusd Debian Package mehr installiert ist.&lt;br /&gt;
&lt;br /&gt;
==eBusd Installation Build Prozess==&lt;br /&gt;
Möchte man eine aktuelle Entwicklungsversion von eBusd nutzen, weil ein Fehler behoben wurde und für diese Version noch kein Debian Package vorhanden ist, dann kann der eBusd manuell kompiliert werden. Nachfolgend werden die dafür notwendigen Schritte beschrieben.&lt;br /&gt;
&lt;br /&gt;
===Voraussetzungen===&lt;br /&gt;
Zunächst müssen die notwendigen Werkzeuge auf dem System installiert werden. Dies erfolgt mit der nachfolgenden Kommandozeile:&lt;br /&gt;
 apt-get -y install git &amp;amp;&amp;amp; apt-get -y install autoconf &amp;amp;&amp;amp; apt-get -y install automake &amp;amp;&amp;amp; apt-get -y install g++ &amp;amp;&amp;amp; apt-get -y install make&lt;br /&gt;
&lt;br /&gt;
Weiterführende Informationen findet man auch direkt im eBusd [https://github.com/john30/ebusd/wiki/1.-Build-and-install Wiki]!&lt;br /&gt;
&lt;br /&gt;
===eBusd kompilieren ===&lt;br /&gt;
&lt;br /&gt;
Nachdem alle Voraussetzungen erfüllt sind, kann der eBusd auf dem lokalen System kompiliert und installiert werden.&lt;br /&gt;
Dafür sind folgende Schritte notwendig:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;eBusd auschecken&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/john30/ebusd.git &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Den Kompilierungsvorgang starten&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 cd ebusd&lt;br /&gt;
 sudo ./autogen.sh --prefix=/usr&lt;br /&gt;
 sudo make&lt;br /&gt;
 sudo make install&lt;br /&gt;
 sudo cp contrib/debian/default/ebusd /etc/default/ebusd # Konfigurationsdatei für eBusd Startoptionen.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Vorgang kann je nach Geschwindigkeit des Systems ca. 20 Minuten dauern. &lt;br /&gt;
&lt;br /&gt;
Wurde der Vorgang erfolgreich durchgeführt, dann kann mit der folgenden Kommandozeile die Version abgefragt werden:&lt;br /&gt;
&lt;br /&gt;
 ebusd -V&lt;br /&gt;
&lt;br /&gt;
===Autostart von eBusd konfigurieren===&lt;br /&gt;
&lt;br /&gt;
Damit die Austostartroutine auch nach einem Neustart des Systems funktioniert, muss das Dämonstartfile in das entsprechende Verzeichnis kopiert werden.&lt;br /&gt;
Die Konfiguration wird mit der folgenden Kommandozeile durchgeführt:  &lt;br /&gt;
&lt;br /&gt;
 sudo cp contrib/debian/init.d/ebusd /etc/init.d/ebusd   # (Dämonstartfile kopieren)&lt;br /&gt;
&lt;br /&gt;
Der eBusd Dienst kann, wie [[#eBusd starten|hier]] beschrieben, gestartet werden.&lt;br /&gt;
&lt;br /&gt;
===eBusd Logrotate===&lt;br /&gt;
Logrotate ist ein logischer Ablauf was mit dem Logfile geschehen soll. Man kann damit das File täglich komprimieren und das 7 Tage lang, dann erst wieder beginnen es zu überschreiben. Dies ist besonders wichtig, denn sonst würde irgendwann das Logilfe bis zu einer extremen Größe anwachsen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/var/log/ebusd.log {&lt;br /&gt;
     rotate 7&lt;br /&gt;
     copytruncate&lt;br /&gt;
     compress&lt;br /&gt;
     missingok&lt;br /&gt;
     notifempty&lt;br /&gt;
     daily&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Logfile kann in &#039;&#039;&#039;/etc/logrotate.d/ebusd&#039;&#039;&#039; konfiguriert werden.&lt;br /&gt;
In diesem Beispiel wird alle 7 Tage rotiert und die Datei komprimiert, das aktuelle Tagesfile ist unkomprimiert und mit einem Editor lesbar.&lt;br /&gt;
Das Ergebnis aus der oben dargestellten Definition sieht wie folgt aus:&lt;br /&gt;
[[Datei:EBUS_Logfile_logrotate.png|thumb|left|alt=Logfile Ansicht]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Systemüberwachung=&lt;br /&gt;
&lt;br /&gt;
Aufgrund unterschiedlicher Ursachen kann es vorkommen, dass der eBus Dämon seinen Dienst einstellt. Die hätte zufolge, dass der Lese- und Schreibzugriff nicht mehr möglich wäre. Nachfolgend werden zwei Möglichkeiten beschreiben wie eine Überwachung des Systems realisiert und im Störungsfall die Funktionalität wiederhergestellt, werden kann.&lt;br /&gt;
&lt;br /&gt;
==Mithilfe von FHEM==&lt;br /&gt;
&lt;br /&gt;
In FHEM kann man ein Notify einrichten, um bei einem Verbindungsabbruch mehrere Versuche zum Reconnect durchzuführen&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
# fhem.cfg&lt;br /&gt;
define EBUS.N notify (EBUS.*DISCONNECTED.*)|(HK.Hz:A.Temp.*err) { EBUSrecover(&amp;quot;notify EBUS.N&amp;quot;,0)}&lt;br /&gt;
attr EBUS.N group deviceDetector&lt;br /&gt;
attr EBUS.N room Alarm&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das dabei aufgerufene Perl-Programm besteht nur aus wenigen Zeilen und muss in die [[99 myUtils anlegen|99_myUtils.pm]] kopiert/erweitert werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# 99_myUtils.pm&lt;br /&gt;
sub EBUSrecover($$)&lt;br /&gt;
{   &lt;br /&gt;
  my ($evt,$num) = @_;&lt;br /&gt;
  Log 1,&amp;quot;[EBUS] Recover triggered from $evt, attempt No. $num&amp;quot;;&lt;br /&gt;
  if(Value(&amp;quot;EBUS&amp;quot;) ne &amp;quot;opened&amp;quot;){&lt;br /&gt;
    if( $num &amp;lt; 7){&lt;br /&gt;
      $num++;&lt;br /&gt;
      fhem(&amp;quot;set EBUS reopen&amp;quot;);&lt;br /&gt;
      fhem(&amp;quot;delete EBUSrecoverdly&amp;quot;) if($defs{&amp;quot;EBUSrecoverdly&amp;quot;});&lt;br /&gt;
      fhem(&amp;quot;define EBUSrecoverdly at +00:00:05 {EBUSrecover(&#039;EBUSrecover&#039;,$num)}&amp;quot;);&lt;br /&gt;
    }else{&lt;br /&gt;
      fhem(&amp;quot;set Device.warn EBUS&amp;quot;) &lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mithilfe von Watchdog==&lt;br /&gt;
&lt;br /&gt;
Es empfiehlt sich auch, den ebusd kontinuierlich zu überwachen und ggf. neu zu starten. Mit der nachfolgenden Beschreibung wird alle 5 Sekunden die Existenz des Programms abgefragt und dieses bei einem versagenden Test neu gestartet.&lt;br /&gt;
&lt;br /&gt;
Dazu wird auf dem System nach überall erhältlichen Anleitungen der Watchdog Timer installiert und die Datei /etc/watchdog.conf mit den beiden Parametern&lt;br /&gt;
 test-timeout = 10&lt;br /&gt;
 interval     = 5&lt;br /&gt;
besetzt. Ferner wird die Datei /etc/watchdog.d/ebusd angelegt mit dem Inhalt&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
# description: watchdog helper file for ebusd  &lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
&#039;test&#039;)&lt;br /&gt;
       #--- Test for ebusd&lt;br /&gt;
       if [ -s /var/run/ebusd.pid ] ; then&lt;br /&gt;
           RUN=`ps -ef | grep ebusd.*USB0 | grep -v grep`&lt;br /&gt;
           if [ &amp;quot;$RUN&amp;quot; != &amp;quot;&amp;quot; ] ; then            &lt;br /&gt;
              #echo &amp;quot;ebusd is already running&amp;quot;&lt;br /&gt;
              exit 0&lt;br /&gt;
           else&lt;br /&gt;
              echo &amp;quot;ebusd defunct at &amp;quot;`date`&lt;br /&gt;
              exit 1    &lt;br /&gt;
           fi&lt;br /&gt;
       else&lt;br /&gt;
           echo &amp;quot;ebusd not running, return 1 at &amp;quot;`date`&lt;br /&gt;
           exit 1    &lt;br /&gt;
       fi&lt;br /&gt;
       ;;&lt;br /&gt;
&#039;repair&#039;)&lt;br /&gt;
       #-- Restarting ebusd&lt;br /&gt;
       echo &amp;quot;ebusd restarting at &amp;quot;`date`&lt;br /&gt;
       /etc/init.d/ebusd start&lt;br /&gt;
       RETVAL=$?&lt;br /&gt;
       exit 0&lt;br /&gt;
       ;;&lt;br /&gt;
*)&lt;br /&gt;
       exit 0&lt;br /&gt;
       ;;&lt;br /&gt;
esac&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Visualisierung und Steuerung=&lt;br /&gt;
&lt;br /&gt;
==Mit MQTT2 in FHEM==&lt;br /&gt;
Das MQTT Protokoll wurde komplett in Fhem mit den Modulen [https://forum.fhem.de/index.php/topic,91394.0.html MQTT2_SERVER] , MQTT2_Client und  [https://forum.fhem.de/index.php/topic,91394.0.html MQTT2 DEVICE] integriert.&lt;br /&gt;
&lt;br /&gt;
Eine detailierte Anleitung mit einigen Praxisbeispielen zur Konfiguration in Fhem findet man [[EBUS-MQTT2|hier in eBus MQTT2]].&lt;br /&gt;
&lt;br /&gt;
==Mit ECMD in FHEM==&lt;br /&gt;
Eine einfache aber sichere Anbindung des eBusd an FHEM kann mit [[ECMD]] durchgeführt werden. Es ist egal ob eBusd auf dem selben Raspberry wie FHEM läuft oder ein eigener Raspberry dafür verwendet wird. Die gezeigten Beispiele sind nur eine der Möglichkeiten die zum Ziel führen, sollen aber sicher und schnell zu den ersten Erfolgen führen.&lt;br /&gt;
&lt;br /&gt;
Eine detailierte Anleitung zur Konfiguration findet man [[EBUS-ECMD|hier in eBus ECMD]].&lt;br /&gt;
&lt;br /&gt;
==GAEBUS==&lt;br /&gt;
&lt;br /&gt;
GAEBUS ist ein Perl Modul welches es in FHEM ermöglicht sämtliche Daten des eBus bequem zu konfigurieren.&lt;br /&gt;
Das Protokoll ist ebenso wie bei ECMD Telnet, aber die Einrichtung unterscheidet sich sehr stark und wird von den meisten Anwendern einfacher empfunden. Allerdings ist im derzeitigen Entwicklungsstand der GAEBUS noch nicht so flexibel wie ECMD. Das betrifft vor allem die Datenfilterung und Datenformatierung.&lt;br /&gt;
&lt;br /&gt;
Eine genaue Installations- und Einrichtungsanleitung kann aus diesem {{Link2Forum|Topic=46098|Message=381580|LinkText=Forums-Thread}} entnommen werden.&lt;br /&gt;
&lt;br /&gt;
Den Diskussionsthread des Autors findet man {{Link2Forum|Topic=41064|Message=332654|LinkText=hier}}.&lt;br /&gt;
&lt;br /&gt;
==FHEM Tablet UI (FTUI)==&lt;br /&gt;
&lt;br /&gt;
Die [http://forum.fhem.de/index.php/board,71.0.html Tablet-UI] ist ein ansprechendes HTML Frontend welches durch intensive Betreuung des Autors sehr gepflegt wird. Mit sogenannten Widgets kann hier auch für ungeübte schnell ein optisch ansprechendes Ergebnis erzielt werden. Die Tablet-UI stellt mit ihren Widgets direkt die Verbindung zu den Readings in FHEM her. Alle Messwerte die hier dargestellt werden sollen, müssen daher vorher in FHEM bereits definiert werden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:EBUSD_FTUI.png|thumb|left|alt=eBus Platine]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der komplette Demo-Code der abgebildeten Seite kann hier downgeloadet werden: {{Link2Forum|Topic=46098|Message=383071|LinkText=Tablet-UI}}&lt;br /&gt;
&lt;br /&gt;
=Tipps &amp;amp; Tricks=&lt;br /&gt;
&lt;br /&gt;
==eBusd Bedeutung der Telegramme==&lt;br /&gt;
&lt;br /&gt;
Der ebusd wird entweder über &#039;&#039;ebusctl&#039;&#039; oder über &#039;&#039;telnet&#039;&#039; durch Klartextkommandos abgefragt, die lauten z.B. &#039;&#039;read -c broadcast outsidetemp&#039;&#039;.&lt;br /&gt;
*In CSV-Dateien in /etc/ebusd wird festgelegt, in welche bzw. aus welcher binären Folge ein Kommando übersetzt wird. Konkret handelt es sich z.B. bei &#039;&#039;read -c broadcast outsidetemp&#039;&#039; um die Außentemperatur, die im Heizungssystem zyklisch als Broadcast gesendet wird und vom ebusd einfach mitgelesen wird.&lt;br /&gt;
*Für unterschiedliche Heizungssysteme werden unterschiedliche CSV-Dateien benötigt. &lt;br /&gt;
Für die Übersetzung der binären Daten in den Klartext ist es notwendig die entsprechenden Konfigurationsdateien(CSV-Files) zu installieren.&lt;br /&gt;
Den aktuellen Stand dieser Dateien findet ihr im [https://github.com/john30/ebusd-configuration/releases GIT von John].&lt;br /&gt;
&lt;br /&gt;
Desweiteren kann der eBusd gestartet werden, und zwar mit den Optionen -f (läuft im Vordergrund) und --loglevel debug (alles wird geloggt). Diese Optionen produzieren Unmengen an Daten und damit werden auch alle empfangenen Telegramme protokolliert, z.B.  &lt;br /&gt;
 10feb5160301f00d44&lt;br /&gt;
Hierin bedeutet&lt;br /&gt;
{|&lt;br /&gt;
|Byte&lt;br /&gt;
|Bedeutung&lt;br /&gt;
|hier&lt;br /&gt;
|-&lt;br /&gt;
|0x10&lt;br /&gt;
|Adresse des Senders&lt;br /&gt;
|Zentrale&lt;br /&gt;
|-&lt;br /&gt;
|0xfe&lt;br /&gt;
|Adresse des Empfängers&lt;br /&gt;
|Alle Geräte&lt;br /&gt;
|-&lt;br /&gt;
|0xb5&lt;br /&gt;
|Herstellercode&lt;br /&gt;
|Vaillant&lt;br /&gt;
|-&lt;br /&gt;
|0x16&lt;br /&gt;
|Klasse des Kommandos&lt;br /&gt;
|Broadcast&lt;br /&gt;
|-&lt;br /&gt;
|0x03&lt;br /&gt;
|Anzahl Datenbytes&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|0x01&lt;br /&gt;
|Bedeutung des Wertes&lt;br /&gt;
|outsidetemp = Außentemperatur&lt;br /&gt;
|-&lt;br /&gt;
|0xf0&lt;br /&gt;
|LSB des Wertes&lt;br /&gt;
|240&lt;br /&gt;
|-&lt;br /&gt;
|0x0d&lt;br /&gt;
|MSB des Wertes&lt;br /&gt;
|12&lt;br /&gt;
|-&lt;br /&gt;
|0x44&lt;br /&gt;
|CRC&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
Damit ergibt sich in diesem Falle eine Außentemperatur von (12*256 + 240)/256 = 12,9375 Grad Celsius. In der zugehörigen CSV-Datei wird dem ebusd diese Übersetzung mitgeteilt durch eine Zeile der Form&lt;br /&gt;
 u,broadcast,outsidetemp,Außentemperatur,,FE,B516,01,temp2,m,D2B,,°C,Temperatur&lt;br /&gt;
Diese CSV-Dateien können z.B. mit OpenOffice aus einem Spreadsheet generiert werden, indem dieses als CSV-Datei mit Separator &amp;quot;,&amp;quot; gespeichert wird. &lt;br /&gt;
*Bei einem vollkommen unbekannten Heizungssystem sollte man den Hersteller fragen, welche Codes er verwendet&lt;br /&gt;
*Für Vaillant- und Wolf- Heizungssysteme liegen in dem oben genannten Verzeichnis ein paar Beispiele vor, die man als Ausgangspunkt nehmen kann.&lt;br /&gt;
&lt;br /&gt;
==Serieller Konverter==&lt;br /&gt;
&lt;br /&gt;
[[Datei:EBUS_RS232_Konverter.png|thumb|left|alt=eBus Platine]]&lt;br /&gt;
Es hat sich als nicht praktikabel erwiesen, den eBus mit einem Pegelwandler direkt an den seriellen GPIO-Port des Raspberry Pi anzuschließen. Die ständig einlaufenden Synchronisationssignale auf dem eBus, sowie die interne Verarbeitung der GPIO-Signale im Raspberry führen zu einer intolerablen Latenz, d.h., die eBus-Signale kommen verspätet bei der Software eBusd an (bis zu 90 Minuten wurden beobachtet). Stattdessen sollte grundsätzlich ein Seriell-USB-Konverter verwendet werden und der Raspberry Pi über einen USB-Port mit dem eBus verbunden werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==USB Device und Port unter Linux ermitteln==&lt;br /&gt;
&lt;br /&gt;
Die einfachste Art den USB Device zu ermitteln erfolgt direkt am Raspberry Pi mit dem Befehl &amp;quot;lsusb&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 pi@raspberry2 ~ $ lsusb&lt;br /&gt;
 Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.&lt;br /&gt;
 Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub&lt;br /&gt;
 Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.&lt;br /&gt;
 Bus 001 Device 004: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC&lt;br /&gt;
&lt;br /&gt;
in diesem Beispiel ist das der Device 004, dieser FT232 lauscht am eBus und ist mit dem eBus-Konverter verbunden.&lt;br /&gt;
&lt;br /&gt;
Der USB Port kann mit der folgenden Kommandozeile ermittelt werden:&lt;br /&gt;
 sudo dmesg | grep -i tty&lt;br /&gt;
Die Ausgabe sieht wie folgt aus:&lt;br /&gt;
 [553999.530995] usb 1-1.3: FTDI USB Serial Device converter now attached to &#039;&#039;&#039;ttyUSB0&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==eBusd==&lt;br /&gt;
===Prüfen der eBusd Konfigurationsdateien===&lt;br /&gt;
Mit dem Parameter &amp;quot;&#039;&#039;&#039;--checkconfig --scanconfig&#039;&#039;&#039;&amp;quot; kann die Installation der benutzten CSV Dateien am Raspberyy Pi überprüft werden. Vor allem wird hier angezeigt wieviele Messages übersetzt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
pi@raspberry2 ~ $ ebusd --checkconfig --scanconfig&lt;br /&gt;
2016-01-22 17:14:12.619 [main notice] Performing configuration check...&lt;br /&gt;
2016-01-22 17:14:19.336 [main notice] found messages: 4440 (416 conditional on 89 conditions, 2 poll, 64 update)&lt;br /&gt;
&lt;br /&gt;
pi@raspberry2 ~ $ ebusctl info&lt;br /&gt;
version: ebusd 2.0.0ea7efc&lt;br /&gt;
signal: acquired&lt;br /&gt;
symbol rate: 24&lt;br /&gt;
masters: 3&lt;br /&gt;
messages: 426&lt;br /&gt;
address 03: master #3&lt;br /&gt;
address 08: slave #3, scanned &amp;quot;MF=Vaillant;ID=BAI00;SW=0518;HW=7401&amp;quot;, loaded  &amp;quot;vaillant/08.bai.HW7401.csv&amp;quot;&lt;br /&gt;
address 10: master #6&lt;br /&gt;
address 15: slave #6, scanned &amp;quot;MF=Vaillant;ID=43000;SW=0215;HW=2002&amp;quot;, loaded &amp;quot;vaillant/15.430.csv&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Info hingegen zeigt genau welche CSV Dateien geladen worden sind und ihre Soft- und Hardewareversion.&lt;br /&gt;
&lt;br /&gt;
===Bedeutung von &amp;quot;unknown MS&amp;quot; in der eBusd Logdatei===&lt;br /&gt;
Der Autor des eBus Dämons ist ständig bemüht die Geräte der unterschiedlichen Hersteller alle zu erfassen und so die Konfigurationsdateien zu ergänzen. Je nach Hard- und Softwarekonfiguration können  Broadcast Meldungen vom eBus kommen die in der _broadcast.csv noch nicht übersetzt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
2015-12-30 21:48:57.662 [update notice] unknown MS cmd: 1008b5110101 / 09404210004a620000ff&lt;br /&gt;
2015-12-30 21:48:59.670 [update notice] unknown BC cmd: 10feb516080001492130120315&lt;br /&gt;
2015-12-30 21:48:59.923 [update notice] unknown MS cmd: 1008b512020064 / 00&lt;br /&gt;
2015-12-30 21:49:01.711 [update notice] unknown MS cmd: 1008b5100900003c7affff00ff00 / 0101&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Meldungen haben in der Regel für den weiteren Verlauf der Kommunikation über den eBus keinen Einfluß und ist keine Fehlfunktion der Schaltung oder Platine!&lt;br /&gt;
&lt;br /&gt;
===Bedeutung von &amp;quot;signal lost&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
pi@raspberrypi /etc/init.d $ sudo ebusd -f -c /tmp --logareas bus --loglevel info -d /dev/ttyUSB0&lt;br /&gt;
2016-01-18 22:38:56.348 [bus notice] signal acquired&lt;br /&gt;
2016-01-18 22:38:56.477 [bus notice] new master 10, master count 2&lt;br /&gt;
2016-01-18 22:38:56.481 [bus notice] new master 3f, master count 3&lt;br /&gt;
2016-01-18 22:39:02.051 [bus error] signal lost&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei dieser Meldung verliert der USB Konverter nach 20-Sekunden die Verbindung zum Raspberry Pi und produziert dann den Logeintrag.&lt;br /&gt;
{{Link2Forum|Topic=46098|Message=394313|LinkText=Lösungvorschlag}}&lt;br /&gt;
&lt;br /&gt;
===ERR: unable to load===&lt;br /&gt;
&lt;br /&gt;
 2016-01-17 19:04:03.961 [main error] unable to load scan config 08: no file from /etc/ebusd/vaillant with prefix 08. matches ID &amp;quot;bai00&amp;quot;, SW0604, HW5502&lt;br /&gt;
&lt;br /&gt;
Ebusd wird gestartet, findet aber ein Konfigurations File (CSV) nicht.&lt;br /&gt;
&lt;br /&gt;
Die eBusd Konfigurationsdateien könne nach [[#eBusd Konfigurationsdateien (CSV-Files)|diesem]] Vorgehen installiert werden.&lt;br /&gt;
Die Konfigurationsdateien aus dem Git neu laden und installieren.&lt;br /&gt;
{{Link2Forum|Topic=46098|Message=394270|LinkText=Lösungvorschlag}}&lt;br /&gt;
&lt;br /&gt;
===ERR: duplicate Entry===&lt;br /&gt;
&lt;br /&gt;
===ERR: End of input reached===&lt;br /&gt;
&lt;br /&gt;
Die CSV Dateien wurden [http://forum.fhem.de/index.php/topic,46098.msg383450/topicseen.html#msg383450 fehlerhaft installiert] oder sind defekt!&lt;br /&gt;
Eine Neuinstallation dieser Dateien ist erforderlich!&lt;br /&gt;
&lt;br /&gt;
 Error reading &amp;quot;/etc/ebusd/vaillant/05.vd3.csv&amp;quot; line 1 field 1 value &amp;quot;05.vd4.csv&amp;quot;: ERR: end of input reached&lt;br /&gt;
 Erroneous item is here:&lt;br /&gt;
 05.vd4.csv&lt;br /&gt;
  ^&lt;br /&gt;
 Error reading &amp;quot;/etc/ebusd/vaillant/15.hep.csv&amp;quot; line 1 field 1 value &amp;quot;15.sdr_p.csv&amp;quot;: ERR: end of input reached&lt;br /&gt;
 Erroneous item is here:&lt;br /&gt;
 15.sdr_p.csv&lt;br /&gt;
  ^&lt;br /&gt;
&lt;br /&gt;
===BUS ERR send to 15===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
2016-01-16 19:20:28.575 [bus notice] new master 03, master count 4&lt;br /&gt;
2016-01-16 19:20:28.575 [update notice] unknown MS cmd: 1008b513020508 / 00&lt;br /&gt;
2016-01-16 19:20:29.413 [update notice] unknown MS cmd: 100ab504010d / 054201008037&lt;br /&gt;
2016-01-16 19:20:32.398 [bus error] send to 08: ERR: read timeout, retry&lt;br /&gt;
2016-01-16 19:20:33.005 [bus error] send to 08: ERR: read timeout, retry&lt;br /&gt;
2016-01-16 19:20:33.613 [bus error] send to 08: ERR: read timeout, retry&lt;br /&gt;
2016-01-16 19:20:34.859 [bus error] send to 08: ERR: read timeout&lt;br /&gt;
2016-01-16 19:20:34.859 [main error] scan config 08 message: ERR: read timeout&lt;br /&gt;
2016-01-16 19:20:37.017 [main notice] read common config file /etc/ebusd/vaillant/scan.csv&lt;br /&gt;
2016-01-16 19:20:37.019 [main notice] read common config file /etc/ebusd/vaillant/broadcast.csv&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Fehlermeldung (read timeout) kann verschiedene Ursachen haben, meist liegt der Fehler in einer fehlerhaften Verkabelung.&lt;br /&gt;
{{Link2Forum|Topic=46098|Message=393547|LinkText=Lösungsvorschlag}}&lt;br /&gt;
&lt;br /&gt;
=Systemarchitektur / Systemdesign=&lt;br /&gt;
Es muss sich jeder vorher überlegen, ob man für den eBus einen eigenen Rechner Raspberry Pi nimmt, oder auf der bestehenden FHEM Installation laufen lassen will. Eine Trennung bietet mehrere Vorteile die dann speziell im Testbetrieb den normalen Smart-Home Betrieb nicht beinflussen.&lt;br /&gt;
[[Datei:EBUS_Konfiguration.png|thumb|left|alt=eBus Konfiguration]]&lt;br /&gt;
Hier eine Konfiguration von FHEM und das Zusammenspiel mit eBusd via ECMD. Das soll aber jeder so handhaben wie es am Besten in das eigene Konzept passt.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Werkzeuge / Tools=&lt;br /&gt;
&lt;br /&gt;
==PSPad==&lt;br /&gt;
[http://www.pspad.com/de/ Pspad] ist ein besonders auf Programmierer zugeschnittener unicode-fähiger Editor für Microsoft Windows, welcher in der Lage ist auch per FTP die Dateien direkt zu editieren und zu schreiben ohne den Umweg sie vorher kopieren zu müssen! Besonders wichtig ist neben einem Syntaxhighlighter das er Linuxkonform ist und die Steuerzeichen am Zeilenende richtig interpretiert.&lt;br /&gt;
&lt;br /&gt;
Hier zwei wichtige Infos zur Einrichtung des PSPad.&lt;br /&gt;
&lt;br /&gt;
[[Datei:EBUS_PSPad_FTP.png|thumb|left|alt=eBus Platine]]&lt;br /&gt;
&lt;br /&gt;
Im Tab &amp;quot;&#039;&#039;&#039;FTP&#039;&#039;&#039;&amp;quot; unten mit der rechten Maustaste auf die weiße Fläche klicken und in dem neu geöffneten Fenster &amp;quot;FTP verbinden&amp;quot; wählen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:EBUS_PSPad_FTP2.png|thumb|left|alt=eBus Platine]]&lt;br /&gt;
Es öffnet sich ein Fenster mit den Verbindungsdaten des FTP Servers. Nicht vergessen, das unten markierte Häckchen &amp;quot;&#039;&#039;&#039;Verbindung halten&#039;&#039;&#039; ...&amp;quot; zu markieren. Es wird dann alle 60 Sekunden ein NOOP Signal gesendet und die Verbindung wird nach einem Timeout nicht jedes Mal beendet.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Filezilla==&lt;br /&gt;
Ebenso wie PSPad wird es für viele Arbeiten am Raspberry und eBusd eine Erleichterung sein manche Dateien direkt zu kopieren oder am PC zu sichern.&lt;br /&gt;
[https://filezilla-project.org/ Filezilla] beherrscht ebenfalls das &#039;&#039;&#039;FTP Protokoll&#039;&#039;&#039; und speichert die Verbindungsdaten in einem Profil.&lt;br /&gt;
&lt;br /&gt;
[[Datei:EBUS_Filezilla_FTP.png|thumb|left|alt=eBus Platine]]&lt;br /&gt;
Links oben öffnet man den Servermanager und wählt (links unten) &amp;quot;neuer Server&amp;quot;. Man gibt die Verbindungsdaten des Raspberry ein und drückt &amp;quot;speichern&amp;quot;. Das Verbindungs Profil steht nun im Servermanager als &amp;quot;Raspberry&amp;quot; zur Verfügung und die Verbindung kann nun mit einem Doppelklick geöffnet werden. Dateien können nun durch einfaches Drag &amp;amp; Drop zwischen linken (lokales Laufwerk am PC) und rechten Dateifenster (in diesem Fall Raspberry) bequem kopiert werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Putty==&lt;br /&gt;
[http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html PuTTY] ist ein SSH Client welcher neben Secure Shell auch Telnet, Remote login und eine serielle Schnittstelle enthält. Als Tipp sei hier erwähnt, dass hier einige sehr nützliche Features zur Verfügung stehen:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;rechte Maustaste&#039;&#039;&#039; = Zwischenablage wird ins Terminalfenster kopiert &lt;br /&gt;
* &#039;&#039;&#039;Text mit Maus markieren&#039;&#039;&#039; = in Zwischenablage kopieren&lt;br /&gt;
* &#039;&#039;&#039;Pfeiltasten Auf/Ab&#039;&#039;&#039; = die letzten Befehle wiederholen, durch die Liste steppen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:EBUS_Putty.png|thumb|left|alt=eBus Platine]]&lt;br /&gt;
Ebenso können mit Putty mehrere Terminalfenster parallel geöffnet werden. Diese Methode ist bei der Kalibrierung des Potis im Raw-Modus sehr von Vorteil.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Weiterführende Links=&lt;br /&gt;
Diskussionsthread aus dem Forum:&lt;br /&gt;
*{{Link2Forum|Topic=46098|LinkText=eBus Schaltung in Betrieb nehmen!}}&lt;br /&gt;
*{{Link2Forum|Topic=29737|LinkText=Läuft: Heizung mit eBus-Schnittstelle}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:Heizungssteuerung]]&lt;br /&gt;
[[Kategorie:Interfaces]]&lt;/div&gt;</summary>
		<author><name>Reinhart</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=EBUS-MQTT2&amp;diff=30148</id>
		<title>EBUS-MQTT2</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=EBUS-MQTT2&amp;diff=30148"/>
		<updated>2019-04-13T08:47:00Z</updated>

		<summary type="html">&lt;p&gt;Reinhart: eBus devStateIcon + Templates selber modifizieren erweitert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== eBus - MQTT2 ==&lt;br /&gt;
Vorausgesetzt wird hier ein laufender eBus-Dämon. Dessen Einrichtung wird im Artikel [[EBUS#Software|EBUS]] beschrieben.&lt;br /&gt;
=== eBus mit MQTT2 auswerten ===&lt;br /&gt;
https://forum.fhem.de/index.php/topic,91394.0.html&lt;br /&gt;
&lt;br /&gt;
Für die MQTT Kommunikation des eBus wird für die eigentlichen Geräte [https://forum.fhem.de/index.php/topic,91394.0.html MQTT2 DEVICE ] verwendet, damit wird als IO-Device entweder [https://forum.fhem.de/index.php/topic,91394.0.html MQTT2_SERVER ]  oder MQTT2_CLIENT verwendet, NICHT beides gleichzeitig!&lt;br /&gt;
Bitte auch zu beachten, die alten Module MQTT funktionieren nicht nach der Beschreibung in diesem Artikel. Es geht hier um die komplett überarbeitete Version mit dem Namen MQTT2!&lt;br /&gt;
&lt;br /&gt;
Bei der hier beschriebenen Konfiguration der angelegten Devices muss unbedingt die Reihenfolge eingehalten werden.&lt;br /&gt;
&lt;br /&gt;
=== Anwendung: ===&lt;br /&gt;
Wer eBus komfortabel in FHEM einbinden will, kann dies nun erstmals mit wenigen Mausklicks realisieren. Erstmalig kommt diese neue Technik der von rudolfkönig implementierten Templates zur Anwendung. Templates sind im Prinzip vorgefertigte Schablonen die durch Anklicken dann selbständig den Device mit den darin enthaltenen Vorgaben konfigurieren. Beta-User hat diese Technik dann soweit für den eBus angepasst ( unter anderem die Filter erstellt ) , das sie allen eBus Anwendern zur Verfügung steht. Es kann nun jeder selbst Templates erstellen oder einfach die von mir erstellten vorhandenen Beispiele benutzen. In wenigen Minuten sollte die komplette FHEM Konfiguration dann abgeschlossen sein.&lt;br /&gt;
&lt;br /&gt;
Wer bereits einen Mosquitto Broker installiert hat, kann diesen weiter verwenden, ist aber für die Komunikation mit dem eBus Dämon nicht mehr notwendig!&lt;br /&gt;
&lt;br /&gt;
[[Bild:MQTT2_MQTT2.jpg|600px|thumb|left|Uebersicht eBus MQTT]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Welches FHEM Modul benötigt man ===&lt;br /&gt;
{{Randnotiz|RNTyp=r|RNText=Nicht MQTT2_SERVER und Mosquitto gleichzeitig laufen lassen, es kann zu verschiedenen Problemen kommen wie gegenseitiges Löschen von Einträgen in FHEM.}}&lt;br /&gt;
Beispiel: Mosquitto Broker ist vorhanden&lt;br /&gt;
dann benötigt man MQTT2_DEVICE und MQTT2_CLIENT&lt;br /&gt;
&lt;br /&gt;
Beispiel: Mosquitto Broker ist NICHT vorhanden&lt;br /&gt;
dann benötigt man MQTT2_DEVICE und MQTT2_SERVER&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitung und Definition am eBus ===&lt;br /&gt;
In der Konfiguration des Dämons ( /etc/default/ebusd ) sollten diese Parameter hinzugefügt werden. Die Topic „ebusd/%circuit/%name“ bitte nicht abändern, da verschiedene Filter auf diesen Ausdruck eingestellt sind.&lt;br /&gt;
 --accesslevel=* --mqttport=1883 --mqttjson --mqtthost=IpAdresseMQTTSERVER --mqtttopic=ebusd/%circuit/%name&lt;br /&gt;
Der MQTTSERVER kann wahlweise der Mosquitto Broker sein, oder der MQTT2_SERVER. Beides wird vermutlich am Raspberry der FHEM Hauptinstanz sein, also die IP-Adresse des Raspberry einsetzen.&lt;br /&gt;
&lt;br /&gt;
{{Hinweis|Nachfolgend wird davon ausgegangen, dass als Vorgabe für mqtttopic &#039;&#039;ebusd&#039;&#039; verwendet wurde. Dies kann geändert werden, es wird aber dringend empfohlen, das mqtttopic in jedem Fall mit &#039;&#039;ebus...&#039;&#039; zu beginnen!}}&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitung und Definition  in FHEM ===&lt;br /&gt;
&lt;br /&gt;
Unabhängig von dem konkret genutzten IO-Modul (MQTT2_SERVER oder MQTT2_CLIENT) sollte an diesem &#039;&#039;&#039;&#039;&#039;vor&#039;&#039;&#039;&#039;&#039; den nachfolgenden Schritten zunächst das autocreate ausgeschaltet werden. Weiter sollte geprüft werden, ob es bereits MQTT2_DEVICE-Geräte gibt, die Einträge in der readingList enthalten, die vom ebus stammen. Da wir die readingList anschließend mit erweiterten JSON-Optionen erstellen wollen, müssen entweder diese Geräte nach dem Deaktivieren des autocreate am IO gelöscht, oder zumindest die readingList entsprechend bereinigt oder gelöscht werden.&lt;br /&gt;
&lt;br /&gt;
==== Externer Broker ====&lt;br /&gt;
Wer bereits den Mosquitto installiert hat und diesen weiter verwenden möchte, dann diese Konfiguration wählen.&lt;br /&gt;
 ### 1a. Broker in FHEM anlegen ###&lt;br /&gt;
 define MQTT_via_mosquitto MQTT2_CLIENT 127.0.0.1:1883&lt;br /&gt;
 attr MQTT_via_mosquitto room MQTT2_DEVICE,System&lt;br /&gt;
==== FHEM-Interner Server ====&lt;br /&gt;
Wer keinen Mosquitto installiert hat kann diese Konfiguration wählen. Dazu wird einfach der MQTT2-SERVER definiert.&lt;br /&gt;
&lt;br /&gt;
 ### 1b. oder MQTT Server  anlegen ###&lt;br /&gt;
 define ebusMQTT MQTT2_SERVER 1883 global&lt;br /&gt;
 attr ebusMQTT room MQTT2_SERVER&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;ebus-Bridge&amp;quot; ====&lt;br /&gt;
Nun wird noch ein Device benötigt, welcher mit einem der oben genannten Module kommuniziert und das Filter (bridgeRegexp) für den eBus beinhaltet. Auf Basis dieses Device werden später alle ankommenden JSON Telegramme vom eBus Dämon automatisch als Reading angelegt.&lt;br /&gt;
&lt;br /&gt;
 ### 2. MQTT_Device definieren&lt;br /&gt;
 define MQTT2_ebusd MQTT2_DEVICE ebusd&lt;br /&gt;
 attr MQTT2_ebusd IODev ebusMQTT&lt;br /&gt;
 attr MQTT2_ebusd room MQTT2_DEVICE&lt;br /&gt;
&lt;br /&gt;
Es kann auch ein ggf. vom MQTT2_SERVER bereits automatisch angelegtes Device genutzt werden, bei Verwendung von MQTT2_CLIENT sollte das Device wie oben dargestellt manuell erstellt werden; es ist dabei darauf zu achten, dass die CID dem Basispfad des Topic-trees entspricht, der bei der Konfiguration des ebus-Dämons verwendet wurde. &lt;br /&gt;
&lt;br /&gt;
Auf das Device MQTT2_ebusd wird nun folgendes Template angwendet:&lt;br /&gt;
&lt;br /&gt;
[[Bild:MQTT2_1template E_00 installieren.png|400px|thumb|left|Template E_00_eBus_daemon_splitter]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Bild:MQTT2_2splitter.png|400px|thumb|left|Eingabe im Splitter aendern]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Gibt es noch keine readingList mit ebus-spezifischen Einträgen, erscheint ein Fenster. In diesem kann der Name ausgewählt werden, gebt hier anstatt DEV_ID „ebus“ ein und drückt „ok“&lt;br /&gt;
&lt;br /&gt;
Zur Kontrolle bitte prüfen ob hier auch die „bridgeRegexp“ vom Template richtig gesetzt wurde.&lt;br /&gt;
&lt;br /&gt;
[[Bild:MQTT2_3Attribute_ebusd.png|400px|thumb|left|bridgeRegexp prüfen]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 (ebus..*?)/(bai|\d+|cc|e7f|ehp|f\d\d|hc|he.|hmu|hwc|mc|mc.\d|omu|omu.\d|pms|rcc|rcc.\d|sc|sdr_p|ui|uih|v\d\d|v81.\d|vd\d|vl\d|vr_\d\d|zeo)/.*:.* &amp;quot;$1_$2&amp;quot;&lt;br /&gt;
 (ebus..*?)/(global|broadcast|general|scan([^/]*))/.*:.* &amp;quot;$1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Nach der Konfiguration des bridge-Devices muß autocreate am IO-Device wieder aktiviert werden. Da hierbei die vom ebus-Dämon gesendeten JSON-Informationen in vielen Installationen nur sinnvoll genutzt werden können, wenn die Statusmeldungen jeweils getrennt dargestellt werden, setzen wir auf dem MQTT2_SERVER oder dem MQTT2_CLIENT ( je nachdem welcher verwendet wurde) das Attribut „autocreate“ auf „complex“.&lt;br /&gt;
&lt;br /&gt;
[[Bild:MQTT2_4autocreate-complex.png|400px|thumb|left|autocreate auf complex setzen]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Complex hat den Sinn, das JSONMAP mit dem Namen des Readings automatisch gesetzt wird.&lt;br /&gt;
Statt dem Reading 0_value wird daraus dann ein Stautus01_0_value. Dies ist gerade bei den Statusmeldungen wichtig, da sie sich sonst mit gleichem Readingnamen gegenseitig überschreiben.&lt;br /&gt;
&lt;br /&gt;
Nun heißt es etwas zurück lehnen und warten bis die MQTT Telegramme vom eBus eingetroffen sind, das kann einige Minuten dauern. Dabei wird in der Regel sowohl die readingList am Device &#039;&#039;MQTT2_ebusd&#039;&#039; erweitert, wie auch ein oder mehrere neue MQTT2_DEVICE-Geräte angelegt.&lt;br /&gt;
&lt;br /&gt;
==== myUtils-Code ====&lt;br /&gt;
Nun benötigen wir noch etwas Code für die Balkendarstellung in FHEM. Dieser Code wird in die 99_myUtils.pm kopiert.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
 sub Balkenanzeige($) &lt;br /&gt;
 {&lt;br /&gt;
    # Zuweisung der übergebenen Variablen&lt;br /&gt;
    my ($val) = @_;&lt;br /&gt;
    # Konfiguration des maximal übergebenen Werts (hier wäre der höchste zu erwartende Wert = 3)&lt;br /&gt;
    my $maxValue = 70;&lt;br /&gt;
    # Normalisierung auf 100%-Wert&lt;br /&gt;
    my $percent = $val / $maxValue * 100;&lt;br /&gt;
    # Definition des valueStyles&lt;br /&gt;
    my $stylestring = &#039;style=&amp;quot;&#039;.&lt;br /&gt;
        &#039;width: 200px; &#039;.&lt;br /&gt;
	&#039;text-align:center; &#039;.&lt;br /&gt;
	&#039;border: 1px solid #ccc ;&#039;. &lt;br /&gt;
	&#039;background-image: -webkit-linear-gradient(left,red &#039;.$percent.&#039;%, rgba(0,0,0,0) &#039;.$percent.&#039;%); &#039;.&lt;br /&gt;
	&#039;background-image:    -moz-linear-gradient(left,blue &#039;.$percent.&#039;%, rgba(0,0,0,0) &#039;.$percent.&#039;%); &#039;. &lt;br /&gt;
	&#039;background-image:     -ms-linear-gradient(left,red &#039;.$percent.&#039;%, rgba(0,0,0,0) &#039;.$percent.&#039;%); &#039;. &lt;br /&gt;
	&#039;background-image:      -o-linear-gradient(left,red &#039;.$percent.&#039;%, rgba(0,0,0,0) &#039;.$percent.&#039;%); &#039;. &lt;br /&gt;
	&#039;background-image:         linear-gradient(left,red &#039;.$percent.&#039;%, rgba(0,0,0,0) &#039;.$percent.&#039;%);&amp;quot;&#039;;&lt;br /&gt;
    # Rückgabe des definierten Strings&lt;br /&gt;
    return $stylestring;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ebenfalls muss noch das Modul Color.pm ordnungsgemäß eingebunden werden. Dieses Modul wird zur farbigen Darstellung wie es in den Templates verwendet wird benötigt.&lt;br /&gt;
 define colorInit notify global:INITIALIZED {use Color}&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
==== Regelmäßige Werteabfrage ====&lt;br /&gt;
&lt;br /&gt;
Es kann aber in der Zwischenzeit noch die Timer gesteuerte Abfrage definiert werden.&lt;br /&gt;
&lt;br /&gt;
 +*00:15:00 set ebusMQTT publish ebusd/430/Hc1HeatCurve/get;&lt;br /&gt;
 set ebusMQTT publish ebusd/430/HwcTempDesired/get;&lt;br /&gt;
 set ebusMQTT publish ebusd/bai/WaterPressure/get;&lt;br /&gt;
 set ebusMQTT publish ebusd/bai/FlowTemp/get;&lt;br /&gt;
 set ebusMQTT publish ebusd/bai/ReturnTemp/get;&lt;br /&gt;
 set ebusMQTT publish ebusd/bai/FanSpeed/get;&lt;br /&gt;
 set ebusMQTT publish ebusd/bai/WPPWMPower/get;&lt;br /&gt;
 set ebusMQTT publish ebusd/bai/OutdoorstempSensor/get;&lt;br /&gt;
 set ebusMQTT publish ebusd/bai/Status02/get&lt;br /&gt;
 set ebusMQTT publish ebusd/bai/FanHours/get&lt;br /&gt;
 set ebusMQTT publish ebusd/bai/HcHours/get&lt;br /&gt;
 set ebusMQTT publish ebusd/bai/HwcHours/get&lt;br /&gt;
 set ebusMQTT publish ebusd/bai/HwcStarts/get&lt;br /&gt;
&lt;br /&gt;
Diese „get“ sind nur Beispiele, wer weitere Readings abfragen möchte einfach die Liste in der FHEM Eingabe erweitern. Ebenfalls kann der Timer auf persönliche Bedürfnisse angepasst werden.&lt;br /&gt;
&lt;br /&gt;
=== ebus-Spezifische weitere Templates ===&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&lt;br /&gt;
Um die eBus Templates benutzen zu können, müssen sie erst im Verzeichnis „/opt/fhem/FHEM/lib/AttrTemplate“ installiert werden. Hier kann das Mustertemplate „{{Link2Forum|Topic=79600|LinkText=mqtt2.ebus.template}}“ herunter geladen werden. Dieses Template dann in das Verzeichnis kopieren. &lt;br /&gt;
Vor der erstmaligen Benutzung muss dieses template noch Initialisiert werden, sonst wird es in der Templateliste nicht angezeigt.&lt;br /&gt;
&lt;br /&gt;
{{Randnotiz|RNTyp=r|RNText=Bitte das Template immer aus dem richtigen Device (zB: MQTT2_ebusd_430 für die Heizkurve) installieren, ansonsten wird das Reading des Device nicht gefunden bzw. falsch zugeordnet.}}&lt;br /&gt;
&lt;br /&gt;
[[Bild:MQTT2_7templateinitialize.png|400px|thumb|left|vor der ersten Benutzung in der Eingabezeile eingeben]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Dazu in der FHEM Eingabezeile eingeben:&lt;br /&gt;
 { AttrTemplate_Initialize() }&lt;br /&gt;
&lt;br /&gt;
==== Anwendung der Templates ====&lt;br /&gt;
&lt;br /&gt;
Wenn bereits die ersten Messwerte eingetroffen sind und die Devices mit den Readings angelegt wurden, können die Templates angelegt werden. D.h. in der Templateliste das gewünschte auswählen (hier MQTT2_ebusd_bai). Die eBus Templates beginnen alle mit E….&lt;br /&gt;
&lt;br /&gt;
[[Bild:MQTT2_8templateselect.png|400px|thumb|left|Das gewünschte Template auswählen, die Readings müssen allerdings in diesem Device enthalten sein]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Hier wird E_07_eBus_bai_Status01+Status02_HWC gewählt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Bild:MQTT2_5statustemplate.png|400px|thumb|left|Das Template hat die gewünschte Konfiguration in FHEM durchgeführt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Bild:MQTT2_6status1template.png|400px|thumb|left|Ergebnis des Template, Heizkurve und Warmwassertemperatur]]&lt;br /&gt;
Hier das Ergebnis von HC1HeatCurve+HWCTempDesired&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Muster Templates ====&lt;br /&gt;
&lt;br /&gt;
Es sind auch noch einige Mustertemplates vorhanden die auf Basis von readingsGroup erstellt wurden und ein farbiges Design besitzen. Diese Templates werden nicht im Device, sondern im Room „eBus“ angelegt.&lt;br /&gt;
Der Kreativität der Anwender sind hier fast keine Grenzen gesetzt, die Werkzeuge sind vorhanden.&lt;br /&gt;
&lt;br /&gt;
Achtung: die hier gewählte Nummerierung kann sich im Laufe der Zeit ändern, da die Templates öfters erweitert/geändert werden.&lt;br /&gt;
&lt;br /&gt;
Template: E_05_eBus_bai_readingsgroup_Set_Hcurve_Hotwater&lt;br /&gt;
[[Bild:MQTT2_ebusset.png|250px|thumb|left|Set hcurve und HWCtemdesired]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Template: E_01_eBus_bai_readingsgroup_Status01&lt;br /&gt;
[[Bild:MQTT2_ebustemp.png|250px|thumb|left|Statusmeldung als Readingsgroup]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Template: E_02_eBus_bai_readingsgroup_Status01_Balken&lt;br /&gt;
[[Bild:MQTT2_ebustempbalken.png|400px|thumb|left|EStatusmeldung als Readingsgroup mit Balkenanzeige]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Template: E_03_eBus_bai_readingsgroup_Status02&lt;br /&gt;
[[Bild:MQTT2_ebuswarmwasser.png|250px|thumb|left|Statusmeldung als Readingsgroup]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Template: E_04_eBus_bai_readingsgroup_Status02_Balken&lt;br /&gt;
[[Bild:MQTT2_ebuswarmwasserbalken.png|400px|thumb|left|Statusmeldung als Readingsgroup mit Balkenanzeige]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Template: hier noch einige Beispiel Templates die mit devStateIcon erzeugt wurden.&lt;br /&gt;
[[Bild:MQTT2_devStateIcon.png|400px|thumb|left|Templates auf Basis devStateIcon]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Templates erweitern ====&lt;br /&gt;
&lt;br /&gt;
Die Templates können vom User selbst leicht erweitert werden. Dies kann entweder im fertigen &amp;quot;define/defmod&amp;quot; oder aber auch im Template vorgenommen werden.&lt;br /&gt;
&lt;br /&gt;
Als Beispiel erweitern wir hier die readingsgroup &amp;quot;eBusset&amp;quot; um die Temperatur zur Nachtabsenkung.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;&amp;gt;,&amp;lt;Name&amp;gt;,&amp;lt;&amp;amp;nbsp;Ist&amp;gt;,&amp;lt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Soll&amp;gt;&lt;br /&gt;
 MQTT2_ebusd_430:&amp;lt;%message_tendency_steady&amp;gt;,&amp;lt;Heizkurve&amp;gt;,Hc1HeatCurve_curve_value,&amp;lt;sollcurve&amp;gt;&lt;br /&gt;
 MQTT2_ebusd_430:&amp;lt;%sani_water_hot&amp;gt;,&amp;lt;Warmwasser&amp;gt;,HwcTempDesired_temp1_value,&amp;lt;sollwater&amp;gt;&lt;br /&gt;
 MQTT2_ebusd_430:&amp;lt;%temp_temperature_min&amp;gt;,&amp;lt;Nachtabsenkung&amp;gt;,Hc1NightTemp_temp1_value,&amp;lt;sollnight&amp;gt;&lt;br /&gt;
Dazu erweitern wir als erstes hier die letzte Zeile der Definition&lt;br /&gt;
&lt;br /&gt;
 {&#039;eBusSet.sollcurve&#039;=&amp;gt;&#039;Hc1HeatCurve_curve_value:uzsuDropDown,0.20,0.70,0.90,1.00,1.10,1.20,1.30,1.40,1.50,1.60,1.70&#039;,&lt;br /&gt;
 &#039;eBusSet.sollwater&#039;=&amp;gt;&#039;HwcTempDesired_temp1_value:uzsuDropDown,50.0,51.0,52.0,53.0,54.0,55.0,56.0,57.0,58.0,59.0,60.0&#039;,&lt;br /&gt;
 &#039;eBusSet.sollnight&#039;=&amp;gt;&#039;Hc1NightTemp_temp1_value:uzsuDropDown,10.0,11.0,12.0,13.0,14.0,15.0,15.5,16.0,16.5,17.0,17.5,18.0,18.5,19.0,19.5,20.0,20.5,21.0,21.5,22.0&#039;}&lt;br /&gt;
dann die Sollwertvorgabe um die Hc1NightTemp_temp1_value mit den Vorgaben&lt;br /&gt;
&lt;br /&gt;
 {&#039;Hc1HeatCurve_curve_value&#039; =&amp;gt; &#039;{&amp;quot;style=\&amp;quot;color:\x23&amp;quot;.substr(Color::pahColor(5,10,15,$VALUE*10,0),0,6).&amp;quot;\&amp;quot;&amp;quot;}&#039;, &lt;br /&gt;
 &#039;HwcTempDesired_temp1_value&#039; =&amp;gt; &#039;{&amp;quot;style=\&amp;quot;color:\x23&amp;quot;.substr(Color::pahColor(20,40,60,$VALUE,0),0,6).&amp;quot;\&amp;quot;&amp;quot;}&#039;,&lt;br /&gt;
 &#039;Hc1NightTemp_temp1_value&#039; =&amp;gt; &#039;{&amp;quot;style=\&amp;quot;color:\x23&amp;quot;.substr(Color::pahColor(10,15,20,$VALUE,0),0,6).&amp;quot;\&amp;quot;&amp;quot;}&#039;}&lt;br /&gt;
und schließlich wird noch die dynamische Farbgebung des Sollwertes angepasst.&lt;br /&gt;
&lt;br /&gt;
 set ebusMQTT publish ebusd/430/Hc1NightTemp/get;&lt;br /&gt;
damit auch der Messwert abgefragt wird, muss noch ein Eintrag im EBUS.TIMER dazu gehängt werden.&lt;br /&gt;
[[Bild:MQTT2_Nighttemp.png|400px|thumb|left|Nachtabsenkung Sollwert über readingsgroup]]&lt;br /&gt;
Nach Erweiterung der 3 Zeilen sieht das dann so aus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Weiterführende Links=&lt;br /&gt;
Diskussionsthread aus dem Forum:&lt;br /&gt;
*{{Link2Forum|Topic=97989|LinkText=ebusd.mqtt2.template: Fragen, Anregungen}}&lt;br /&gt;
*{{Link2Forum|Topic=79600|LinkText=Läuft: MQTT2 Teil3 Realisierung mit MQTT2_Client mit oder ohne Mosquitto}}&lt;br /&gt;
*{{Link2Forum|Topic=91394|LinkText=zigbee2mqtt mit MQTT2_SERVER und MQTT2_DEVICE}}&lt;br /&gt;
*{{Link2Forum|Topic=97989|LinkText=ebusd.mqtt2.template: Fragen, Anregungen}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:Heizungssteuerung]]&lt;br /&gt;
[[Kategorie:Interfaces]]&lt;/div&gt;</summary>
		<author><name>Reinhart</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:MQTT2_Nighttemp.png&amp;diff=30147</id>
		<title>Datei:MQTT2 Nighttemp.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:MQTT2_Nighttemp.png&amp;diff=30147"/>
		<updated>2019-04-13T08:11:50Z</updated>

		<summary type="html">&lt;p&gt;Reinhart: MQTT2&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Beschreibung ==&lt;br /&gt;
MQTT2&lt;/div&gt;</summary>
		<author><name>Reinhart</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:MQTT2_devStateIcon.png&amp;diff=30146</id>
		<title>Datei:MQTT2 devStateIcon.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:MQTT2_devStateIcon.png&amp;diff=30146"/>
		<updated>2019-04-13T08:11:17Z</updated>

		<summary type="html">&lt;p&gt;Reinhart: MQTT2&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Beschreibung ==&lt;br /&gt;
MQTT2&lt;/div&gt;</summary>
		<author><name>Reinhart</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=EBUS&amp;diff=29859</id>
		<title>EBUS</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=EBUS&amp;diff=29859"/>
		<updated>2019-03-12T11:05:22Z</updated>

		<summary type="html">&lt;p&gt;Reinhart: /* Visualisierung und Steuerung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Randnotiz|RNTyp=r|RNText=Die Verwendung des EBUS zur &#039;&#039;Ansteuerung&#039;&#039; eines Heizungssystems kann dieses bei unsachgemäßer Anwendung beschädigen. Für unmittelbare oder mittelbare Folgen, die sich aus dem Nachbau des Interfaces oder der Verwendung der hier zur Verfügung gestellten Information ergeben, übernimmt der Autor keine Haftung.}}Dieser Artikel beschreibt die Ankopplung von Heizungssysteme mit eBus-Interface an FHEM.&lt;br /&gt;
&lt;br /&gt;
Der eBus ist eine bei vielen Heizungssystemen vorhandene serielle Schnittstelle mit zwei Leitungen. Verwendet werden dabei 2400 Baud als Geschwindigkeit und die beiden Signalpegel&lt;br /&gt;
*logisch 1: 15–24 V&lt;br /&gt;
*logisch 0: 9–12 V&lt;br /&gt;
&lt;br /&gt;
[[Datei:EBUS-Adapter-aufgebaut.png|thumb|left|alt=eBus Platine]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fertig aufgebaute eBus Platine, bereit für den Einsatz mit eBusd!&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Interface=&lt;br /&gt;
==Schaltung==&lt;br /&gt;
[[Datei:EBUS_Interface_Schaltung.png|thumb|left|alt=eBus-USB Interface]]&lt;br /&gt;
Eine direkte Ankopplung des eBus an FHEM via Pegelwandlung und serielle Schnittstelle ist nicht empfehlenswert, stattdessen wurde der Weg beschritten, einen separaten Raspberry Pi (Modell B) an den eBus zu koppeln und darauf die Software &#039;&#039;eBusd&#039;&#039; laufen zu lassen. Diese wird dann in einer beliebigen FHEM-Instanz als ECMD-Device definiert und somit per Telnet abgefragt.&lt;br /&gt;
&lt;br /&gt;
Hierbei wird ein kommerziell für ca. 6,00 € erhältliches USB-Modul mit ein paar Zusatzbauteilen im Wert von ca. 5,00 € versehen. Das Interface hat die folgenden Eigenschaften:&lt;br /&gt;
*Verpolungssicherer eBus-Anschluss&lt;br /&gt;
*Galvanische Trennung zwischen eBus und USB &lt;br /&gt;
Die Bauteile sind unkritisch und können durch äquivalente Teile ersetzt werden. Allerdings sollte bei der Zenerdiode auf eine Belastbarkeit mit 1,3 W geachtet werden, und beim USB-Modul darauf, dass dieses einen FTDI-Chip enthält.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Der Autor übernimmt keine Haftung für die Anwendung dieser Schaltung. Zur Vermeidung von Schäden durch unsachgemäße Bedienung des Heizungssystems wird ausdrücklich empfohlen, nur die lesende Hälfte des Interfaces nachzubauen und sich auf ein passives Lauschen auf dem EBUS zu beschränken. Dazu einfach den Zweig mit Darlington-Transistor aus der Schaltung nicht einbauen.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Schaltung des eBus von Prof. Dr. Peter A. Henning ist eine bewährte Schaltung die von zahlreichen Anwendern bereits nachgebaut wurde. &lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Eigenbau (Lochrasterplatine)==&lt;br /&gt;
[[Datei:EBUS_Adapter_Lochrasterplatine.png|thumb|left|alt=Platine]]&lt;br /&gt;
&lt;br /&gt;
Hier ein Beispiel eines Aufbaues auf einer Lochrasterplatine.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Platine==&lt;br /&gt;
Auf Basis der oben genannten Schaltung, wurde im {{Link2Forum|Topic=46098|LinkText=FHEM Forum}} ein Platinenlayout erstellt und produziert. Die dazu benötigten Gerberfiles können {{Link2Forum|Topic=45127|Message=370647|LinkText=hier}} heruntergeladen werden. Der Autor des Layouts hat dies mit der Freeware Version von EAGLE erstellt, d.h. die Files können bei allen Platinenherstellern eingereicht werden (keine Lizenz eines bestimmten Herstellers notwendig).&lt;br /&gt;
[[Datei:EBUS_Adapter_Platine.png|thumb|left|alt=Platine]]&lt;br /&gt;
Diese Beschreibung sollte hauptsächlich für Personen dienen, bei denen es nicht das tägliche Brot ist elektronische Schaltungen in Betrieb zu nehmen. Ich setze hier voraus, dass der Umgang mit einem Lötkolben klar ist. Wer noch nie gelötet hat, sollte besser einen Bekannten ersuchen der das schon gemacht hat.&lt;br /&gt;
Nachfolgend wird beschrieben, wie eine Platine mit den Bauteilen bestückt wird.&lt;br /&gt;
Am einfachsten ist es einen fertigen Adapter zu kaufen.&lt;br /&gt;
Siehe dazu auch den {{Link2Forum|Topic=46098|LinkText=Link aus dem Forum}}:&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Platine bestücken===&lt;br /&gt;
[[Datei:EBUS_Adapter_Bestueckung.png|thumb|left|alt=Platine bestücken]]&lt;br /&gt;
Bei der Bestückung sollte darauf geachtet werden mit den niedrigsten Bauteilen zuerst zu beginnen, sonst fallen sie beim verlöten ständig heraus. Wer die Farbcodes der Widerstände nicht auswendig kennt sollte diese vorher mit einem Meßgerät (Ohmmeter) messen. Nach den Dioden und Widerständen können die IC Sockel eingelötet werden, hier sollte lediglich auf die Einkerbung laut Bestückungsaufdruck geachtet werden. Zum Schluß noch die restlichen Bauteile. Nach einer genauen Sichtkontrolle (verbogene Beinchen des IC, Kurzschlüsse beim Löten, richtige Polung) können noch die ICS eingesetzt werden. Diese können auf einer flachen Unterlage etwas vorgebogen werden, damit sie leichter in den Sockel passen.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Achtung&#039;&#039;&#039;: der IC 4011 ist ein Cmos Schaltkreis und ist empfindlich gegen statische Aufladungen, daher die Beinchen nicht mit dem Finger berühren, bzw. ein Antistatikband am Arm verwenden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 Bestückung der Widerstände bei Platine V1.6&lt;br /&gt;
 R1 = 3k3&lt;br /&gt;
 R2 = 1k0&lt;br /&gt;
 R3 = 20k Poti&lt;br /&gt;
 R4 = 10k (auf der Platine nicht beschriftet, links neben R2)&lt;br /&gt;
 R5 = 470&lt;br /&gt;
 R6 = 22k&lt;br /&gt;
 R7 = 100k (auf der Platine nicht beschriftet, links unten liegt quer)&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
[https://secure.reichelt.de/index.html?&amp;amp;ACTION=20&amp;amp;AWKID=1170007&amp;amp;PROVID=2084 Warenkorb der benötigten Bauteile von Reichelt]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Platine Messpunkte===&lt;br /&gt;
Der Schaltplan mit den Messpunkten wurde entfernt, da er etwas missverständlich formuliert war und bei einigen Anwendern Verwirrung auslöste.&lt;br /&gt;
&lt;br /&gt;
===Poti abgleichen===&lt;br /&gt;
Zur ersten Justierung des Potis, wird der eBusd Dienst genutzt. Das Vorgehen sieht wie folgt aus:&lt;br /&gt;
&lt;br /&gt;
1) &#039;&#039;&#039;eBus Dienst stoppen&#039;&#039;&#039; - Das kann mit der folgenden Kommandozeile bewerkstelligt werden:&lt;br /&gt;
 service ebusd stop&lt;br /&gt;
2) &#039;&#039;&#039;eBus Dienst&#039;&#039;&#039;, jedoch mit minimalen Parametern und ohne eBusd Konfigurationsdateien (CSV-Files), mit der folgenden Kommandozeile erneut starten:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; &amp;lt;DEVICE&amp;gt; Muss zuvor durch den entsprechenden USB-Port (siehe [[#USB Device und Port unter Linux ermitteln|USB Device und Port unter Linux ermitteln]]) z.B. /dev/ttyUSB0 ersetzt werden.&#039;&#039;&lt;br /&gt;
 ebusd -f -c /tmp --logareas bus --loglevel info -d &amp;lt;DEVICE&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3) Der eBusd Dienst läuft nun im &#039;&#039;&#039;Vordergrund&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
4) &#039;&#039;&#039;Einem zweiten Terminal öffnen&#039;&#039;&#039; und den folgenden Befehl ausführen:&lt;br /&gt;
 ebusctl raw&lt;br /&gt;
&lt;br /&gt;
Mit dem Befehl erhält man im Terminalfenster die empfangenen Bytes als Hex, die wie folgt aussehen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
2015-12-24 12:07:16.955 [bus notice] &amp;lt;aa&lt;br /&gt;
2015-12-24 12:07:17.001 [bus notice] &amp;lt;aa&lt;br /&gt;
2015-12-24 12:07:17.047 [bus notice] &amp;lt;aa&lt;br /&gt;
2015-12-24 12:07:17.093 [bus notice] &amp;lt;aa&lt;br /&gt;
2015-12-24 12:07:17.097 [bus notice] &amp;lt;10&lt;br /&gt;
2015-12-24 12:07:17.102 [bus notice] &amp;lt;50&lt;br /&gt;
2015-12-24 12:07:17.107 [bus notice] &amp;lt;b5&lt;br /&gt;
2015-12-24 12:07:17.111 [bus notice] &amp;lt;04&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Wenn gerade kein Gerät den Bus nutzt, dann sollten ca. 20 Zeilen pro Sekunde ausgegeben werden und zwar mit &amp;quot;&amp;lt;aa&amp;quot; (im Beispiel die oberen 4 Zeilen).&lt;br /&gt;
&lt;br /&gt;
Sobald ein Gerät den eBus nutzt, tauchen neben &amp;quot;&amp;lt;aa&amp;quot; auch andere HEX Werte auf (im Beispiel die unteren 4 Zeilen). Diese Werte können ignoriert werden.&lt;br /&gt;
&lt;br /&gt;
Wichtig bei der Poti Einstellung ist, dass vor allem die regulären &amp;quot;aa&amp;quot;s zu sehen sind. Tauchen die &amp;quot;aa&amp;quot;s auf, dann kann davon ausgegangen werden, dass der Poti korrekt eigestellt ist. Ist dies der Fall, dann kann der eBusd Dienst regulär gestartet werden.&lt;br /&gt;
Dabei muss der im Vordergrund laufende eBusd Prozess (siehe Punkt 2) mit der Tastenkombination STRG+C abgebrochen und der folgende Befehl in der Kommandozeile ausgeführt werden:&lt;br /&gt;
 service ebusd start&lt;br /&gt;
Anschließend erscheint eine Meldung, die einen erfolgreichen Start des Dienstes signalisiert.&lt;br /&gt;
 [ ok ] Starting ebusd: ebusd.&lt;br /&gt;
&lt;br /&gt;
===Bekannte Fehler=== &lt;br /&gt;
Das Logfile ist zur Inbetriebnahme unerlässlich und kann (z.B. mit [[#PSPad|PSPad]]) ausgelesen werden. &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
2015-12-22 16:27:34.195 [bus notice] signal acquired&lt;br /&gt;
2015-12-22 16:28:12.029 [bus error] signal lost&lt;br /&gt;
2015-12-22 16:28:12.339 [bus notice] signal acquired&lt;br /&gt;
2015-12-22 16:28:14.006 [bus error] signal lost&lt;br /&gt;
2015-12-22 16:28:16.372 [bus notice] signal acquired&lt;br /&gt;
2015-12-22 16:28:18.023 [bus error] signal lost&lt;br /&gt;
2015-12-22 16:28:18.729 [bus notice] signal acquired&lt;br /&gt;
2015-12-22 16:28:20.458 [update notice] update myCustom Status01: 43.0;41.0;8.000;41.0;38.0;ok&lt;br /&gt;
2015-12-22 16:28:26.460 [update notice] update bc Mode QQ=10: standby&lt;br /&gt;
2015-12-22 16:28:30.436 [update notice] update myCustom Status01: 41.0;40.0;8.000;41.0;38.0;ok&lt;br /&gt;
2015-12-22 16:28:32.458 [update notice] update broadcast vdatetime QQ=10: 16:24:52;22.12.2015&lt;br /&gt;
2015-12-22 16:28:32.696 [update notice] update myCustom2 Pumpenstatus: ok&lt;br /&gt;
2015-12-22 16:28:36.452 [update notice] update bc Mode QQ=10: standby&lt;br /&gt;
2015-12-22 16:28:40.478 [update notice] update myCustom Status01: 40.0;39.0;7.750;41.0;38.0;ok&lt;br /&gt;
2015-12-22 16:28:42.482 [update notice] update myCustom1 Status11: nosignal;41;5;18;-;-;-;-;8.000&lt;br /&gt;
2015-12-22 16:28:42.753 [update notice] update myCustom Status02: auto;60;70.0;70;54.0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier ein typisches Log wenn das Poti noch nicht oder &#039;&#039;&#039;falsch kalibriert&#039;&#039;&#039; wurde.&lt;br /&gt;
Ab dem Eintrag 16:28:20.458 war dann die richtige Stellung gefunden. Das Poti soll daher zunächst ganz nach links (Transistor der Platine ist dann rechts unten) gedreht werden und dann vorsichtig auf etwa 2:00 Uhr. Bei knapp 2:00 Uhr ist bei der Testplatine dann die ideale Stellung. Der Stellbereich ist sehr klein (etwa 1-2 mm), daher einen Schraubendreher verwenden der sehr exakt passt und gleichzeitig mit dem Laptop abfragen starten. Zur Kontrolle dann das Log (var/log/ebusd.log) abfragen. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
2015-11-29 06:26:55.271 [update notice] update myCustom1 Status11: nosignal;40;0;15;-;-;-;-;-0.188&lt;br /&gt;
2015-11-29 06:26:55.541 [update notice] update myCustom Status02: auto;60;70.0;70;54.0&lt;br /&gt;
2015-11-29 06:26:59.293 [update notice] update bc Mode QQ=10: standby&lt;br /&gt;
2015-11-29 06:27:03.323 [update notice] update myCustom Status01: 53.0;45.0;-0.438;47.0;46.0;error&lt;br /&gt;
2015-11-29 06:27:05.268 [update notice] update broadcast outsidetemp QQ=10: -3.188&lt;br /&gt;
2015-11-29 06:27:09.344 [update notice] update bc Mode QQ=10: standby&lt;br /&gt;
2015-11-29 06:27:11.934 [bus error] send to 08: ERR: read timeout, retry&lt;br /&gt;
2015-11-29 06:27:11.981 [bus error] send to 08: ERR: read timeout, retry&lt;br /&gt;
2015-11-29 06:27:12.025 [bus error] send to 08: ERR: read timeout, retry&lt;br /&gt;
2015-11-29 06:27:12.069 [bus error] send to 08: ERR: read timeout&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In diesem Fall liegt ein Fehler bei jedem Sendeversuch vor. Ein &amp;quot;bus error&amp;quot; mit timeout sollte nicht (zu oft) zu finden sein. Gut zu sehen sind schon die Broadcast Meldungen, die selbständig über den Bus laufen und vom Konverter schon richtig interpretiert werden. Sollten wie in diesem Fall, die Meldungen nicht mit Texten zu lesen sein fehlen noch die Konfigurationfiles (csv) im Verzeichnis /etc/ebusd. Welche Files hier verwendet werden sollen ist natürlich von der Therme und dem Zubehör abhängig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Achtung&#039;&#039;&#039;: Der Autor übernimmt keine Haftung für die Anwendung dieser Schaltung. Zur Vermeidung von Schäden durch unsachgemäße Bedienung des Heizungssystems wird ausdrücklich empfohlen, nur lesend auf die Schnittstelle zugreifen.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Kommerzielles Interface==&lt;br /&gt;
Ein kommerzielles Interface für die Umsetzung eBus-&amp;gt;USB ist hier erhältlich:&lt;br /&gt;
[https://www.eservice-online.de/produkte/ebus/ eBus Koppler USB]&lt;br /&gt;
&lt;br /&gt;
=Software=&lt;br /&gt;
Als Software kommt auf dem Raspberry Pi der [https://github.com/john30/ebusd ebusd] = eBus-Dämon zum Einsatz (aktuell im Januar 2016 die Version 2.0). &lt;br /&gt;
&lt;br /&gt;
Der ebusd wird auf dem System (z.B Raspberry Pi) nach der beiliegenden Anleitung übersetzt und installiert.&lt;br /&gt;
&lt;br /&gt;
Wichtigsten Bestandteile (Komponenten) der Installation sind:&lt;br /&gt;
*&#039;&#039;ebusd&#039;&#039; - das eigentliche Programm zur Kommunikation mit dem EBUS&lt;br /&gt;
*&#039;&#039;ebusd-configuration - Dateien im CSV(Comma Separated Value)-Format, die beim Start des eBusd eingelesen und als Kommandos (Befehle) für das Heizungsystem verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Nachfolgend wird die Installation der zwei Komponenten beschrieben.&lt;br /&gt;
&lt;br /&gt;
==eBusd Installation per Debian Package==&lt;br /&gt;
&lt;br /&gt;
===Voraussetzungen===&lt;br /&gt;
wget (ist in der Regel auf vielen Distributionen bereits installiert). Die Installation kann mit der folgenden Kommandozeile nachträglich durchgeführt werden: &lt;br /&gt;
 sudo apt-get install wget&lt;br /&gt;
&lt;br /&gt;
===eBusd installieren===&lt;br /&gt;
Das entsprechende eBusd Debian Package kann [https://github.com/john30/ebusd/releases vom GitHub ebusd] bezogen werden.&lt;br /&gt;
&lt;br /&gt;
Die Installation (&#039;&#039;Stand Januar 2016 - Version 2.0&#039;&#039;) wird wie folgt durchgeführt:&lt;br /&gt;
&lt;br /&gt;
 EBUSDPACKAGE=ebusd-2.0_armhf.deb # &amp;lt;--- Version kann bei Bedarf hier angepasst werden.&lt;br /&gt;
 wget https://github.com/john30/ebusd/releases/download/v2.0/$EBUSDPACKAGE&lt;br /&gt;
 sudo dpkg -i --force-overwrite $EBUSDPACKAGE&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Die eBusd wird dauernd aktualisiert. Aus diesem Grund sollte vor der Installation geprüft werden (siehe den o.g. Link), ob bereits eine neuere Version zur Verfügung steht. Der Name des Debian Packages muss, vor der Ausführung der o.g. Kommandozeilen, an der entsprechenden Stelle angepasst werden.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===eBusd Konfigurationsdateien (CSV-Files)===&lt;br /&gt;
Das entsprechende eBusd Konfigurations Debian Package kann [https://github.com/john30/ebusd-configuration/releases vom GitHub ebusd-configuration] bezogen werden.&lt;br /&gt;
&lt;br /&gt;
Die Installation (&#039;&#039;Stand Januar 2016 - Version 2.0.5aa482c&#039;&#039;) wird wie folgt durchgeführt:&lt;br /&gt;
&lt;br /&gt;
 EBUSDCFGPACKAGE=ebusd-configuration-2.0.5aa482c-de_all.deb # &amp;lt;--- Version kann bei Bedarf hier angepasst werden.&lt;br /&gt;
 wget https://github.com/john30/ebusd-configuration/releases/download/v2.0.1/$EBUSDCFGPACKAGE&lt;br /&gt;
 sudo dpkg -i --force-overwrite $EBUSDCFGPACKAGE&lt;br /&gt;
&lt;br /&gt;
===eBusd starten===&lt;br /&gt;
Nach der erfolgreichen Installation des eBusd und der eBusd Konfigurationsdateien kann nun der Dienst gestartet werden.&lt;br /&gt;
Zuvor muss jedoch der USB-Port des eBus Adapters überprüft werden (siehe auch [[#USB Device und Port unter Linux ermitteln|USB Device und Port unter Linux ermitteln]]). Sollte der USB-Port von dem Standardwert &amp;quot;/dev/ttyUSB0&amp;quot; abweichen, dann muss die Konfiguration &amp;quot;/etc/default/ebusd&amp;quot; angepasst werden.&lt;br /&gt;
Andernfalls kann nun der Dienst mit der folgenden Kommandozeile gestartet werden:&lt;br /&gt;
&lt;br /&gt;
 service ebusd start&lt;br /&gt;
Anschließend erscheint eine Meldung:&lt;br /&gt;
 [ ok ] Starting ebusd: ebusd.&lt;br /&gt;
die einen erfolgreichen Start des Dienstes signalisiert.&lt;br /&gt;
&lt;br /&gt;
===eBusd und Konfigurationsdateien deinstallieren===&lt;br /&gt;
Nachfolgend wird die Deinstallation des eBusd und der eBusd Konfigurationsdateien beschrieben.&lt;br /&gt;
&lt;br /&gt;
Zunächst muss der eBusd Dienst beendet werden, dies erfolgt mit der folgenden Kommandozeile:&lt;br /&gt;
 service ebusd stop&lt;br /&gt;
Anschließend erscheint eine Meldung:&lt;br /&gt;
 [ ok ] Stopping ebusd: ebusd.&lt;br /&gt;
die einen erfolgreichen Stop des Dienstes signalisiert.&lt;br /&gt;
&lt;br /&gt;
Anschließend wird zunächst das Debian Konfigurations Package deinstalliert. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Bei der Deinstallation werden alle Konfigurationsdateien (CSV-Files) unwiderruflich gelöscht!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Deinstallation erfolgt mit der folgenden Kommandozeile:&lt;br /&gt;
 sudo dpkg -r --force-overwrite ebusd-configuration&lt;br /&gt;
&lt;br /&gt;
Das eBusd Debian Package wird mit der folgenden Kommandozeile deinstalliert:&lt;br /&gt;
 sudo dpkg -r --force-overwrite ebusd&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tipp:&#039;&#039;&#039; Mit der folgenden Kommandozeile: &lt;br /&gt;
 dpkg -l | grep &#039;ebusd&#039; &lt;br /&gt;
können die installierten eBusd Debian Packages überprüft werden. &lt;br /&gt;
&lt;br /&gt;
Liefert der Befehl kein Ergebnis, dann kann davon ausgegangen werden, dass kein eBusd Debian Package mehr installiert ist.&lt;br /&gt;
&lt;br /&gt;
==eBusd Installation Build Prozess==&lt;br /&gt;
Möchte man eine aktuelle Entwicklungsversion von eBusd nutzen, weil ein Fehler behoben wurde und für diese Version noch kein Debian Package vorhanden ist, dann kann der eBusd manuell kompiliert werden. Nachfolgend werden die dafür notwendigen Schritte beschrieben.&lt;br /&gt;
&lt;br /&gt;
===Voraussetzungen===&lt;br /&gt;
Zunächst müssen die notwendigen Werkzeuge auf dem System installiert werden. Dies erfolgt mit der nachfolgenden Kommandozeile:&lt;br /&gt;
 apt-get -y install git &amp;amp;&amp;amp; apt-get -y install autoconf &amp;amp;&amp;amp; apt-get -y install automake &amp;amp;&amp;amp; apt-get -y install g++ &amp;amp;&amp;amp; apt-get -y install make&lt;br /&gt;
&lt;br /&gt;
Weiterführende Informationen findet man auch direkt im eBusd [https://github.com/john30/ebusd/wiki/1.-Build-and-install Wiki]!&lt;br /&gt;
&lt;br /&gt;
===eBusd kompilieren ===&lt;br /&gt;
&lt;br /&gt;
Nachdem alle Voraussetzungen erfüllt sind, kann der eBusd auf dem lokalen System kompiliert und installiert werden.&lt;br /&gt;
Dafür sind folgende Schritte notwendig:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;eBusd auschecken&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/john30/ebusd.git &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Den Kompilierungsvorgang starten&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 cd ebusd&lt;br /&gt;
 sudo ./autogen.sh --prefix=/usr&lt;br /&gt;
 sudo make&lt;br /&gt;
 sudo make install&lt;br /&gt;
 sudo cp contrib/debian/default/ebusd /etc/default/ebusd # Konfigurationsdatei für eBusd Startoptionen.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Vorgang kann je nach Geschwindigkeit des Systems ca. 20 Minuten dauern. &lt;br /&gt;
&lt;br /&gt;
Wurde der Vorgang erfolgreich durchgeführt, dann kann mit der folgenden Kommandozeile die Version abgefragt werden:&lt;br /&gt;
&lt;br /&gt;
 ebusd -V&lt;br /&gt;
&lt;br /&gt;
===Autostart von eBusd konfigurieren===&lt;br /&gt;
&lt;br /&gt;
Damit die Austostartroutine auch nach einem Neustart des Systems funktioniert, muss das Dämonstartfile in das entsprechende Verzeichnis kopiert werden.&lt;br /&gt;
Die Konfiguration wird mit der folgenden Kommandozeile durchgeführt:  &lt;br /&gt;
&lt;br /&gt;
 sudo cp contrib/debian/init.d/ebusd /etc/init.d/ebusd   # (Dämonstartfile kopieren)&lt;br /&gt;
&lt;br /&gt;
Der eBusd Dienst kann, wie [[#eBusd starten|hier]] beschrieben, gestartet werden.&lt;br /&gt;
&lt;br /&gt;
===eBusd Logrotate===&lt;br /&gt;
Logrotate ist ein logischer Ablauf was mit dem Logfile geschehen soll. Man kann damit das File täglich komprimieren und das 7 Tage lang, dann erst wieder beginnen es zu überschreiben. Dies ist besonders wichtig, denn sonst würde irgendwann das Logilfe bis zu einer extremen Größe anwachsen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/var/log/ebusd.log {&lt;br /&gt;
     rotate 7&lt;br /&gt;
     copytruncate&lt;br /&gt;
     compress&lt;br /&gt;
     missingok&lt;br /&gt;
     notifempty&lt;br /&gt;
     daily&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Logfile kann in &#039;&#039;&#039;/etc/logrotate.d/ebusd&#039;&#039;&#039; konfiguriert werden.&lt;br /&gt;
In diesem Beispiel wird alle 7 Tage rotiert und die Datei komprimiert, das aktuelle Tagesfile ist unkomprimiert und mit einem Editor lesbar.&lt;br /&gt;
Das Ergebnis aus der oben dargestellten Definition sieht wie folgt aus:&lt;br /&gt;
[[Datei:EBUS_Logfile_logrotate.png|thumb|left|alt=Logfile Ansicht]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Systemüberwachung=&lt;br /&gt;
&lt;br /&gt;
Aufgrund unterschiedlicher Ursachen kann es vorkommen, dass der eBus Dämon seinen Dienst einstellt. Die hätte zufolge, dass der Lese- und Schreibzugriff nicht mehr möglich wäre. Nachfolgend werden zwei Möglichkeiten beschreiben wie eine Überwachung des Systems realisiert und im Störungsfall die Funktionalität wiederhergestellt, werden kann.&lt;br /&gt;
&lt;br /&gt;
==Mithilfe von FHEM==&lt;br /&gt;
&lt;br /&gt;
In FHEM kann man ein Notify einrichten, um bei einem Verbindungsabbruch mehrere Versuche zum Reconnect durchzuführen&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
# fhem.cfg&lt;br /&gt;
define EBUS.N notify (EBUS.*DISCONNECTED.*)|(HK.Hz:A.Temp.*err) { EBUSrecover(&amp;quot;notify EBUS.N&amp;quot;,0)}&lt;br /&gt;
attr EBUS.N group deviceDetector&lt;br /&gt;
attr EBUS.N room Alarm&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das dabei aufgerufene Perl-Programm besteht nur aus wenigen Zeilen und muss in die 99_myUtils.pm kopiert/erweitert werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# 99_myUtils.pm&lt;br /&gt;
sub EBUSrecover($$)&lt;br /&gt;
{   &lt;br /&gt;
  my ($evt,$num) = @_;&lt;br /&gt;
  Log 1,&amp;quot;[EBUS] Recover triggered from $evt, attempt No. $num&amp;quot;;&lt;br /&gt;
  if(Value(&amp;quot;EBUS&amp;quot;) ne &amp;quot;opened&amp;quot;){&lt;br /&gt;
    if( $num &amp;lt; 7){&lt;br /&gt;
      $num++;&lt;br /&gt;
      fhem(&amp;quot;set EBUS reopen&amp;quot;);&lt;br /&gt;
      fhem(&amp;quot;delete EBUSrecoverdly&amp;quot;) if($defs{&amp;quot;EBUSrecoverdly&amp;quot;});&lt;br /&gt;
      fhem(&amp;quot;define EBUSrecoverdly at +00:00:05 {EBUSrecover(&#039;EBUSrecover&#039;,$num)}&amp;quot;);&lt;br /&gt;
    }else{&lt;br /&gt;
      fhem(&amp;quot;set Device.warn EBUS&amp;quot;) &lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mithilfe von Watchdog==&lt;br /&gt;
&lt;br /&gt;
Es empfiehlt sich auch, den ebusd kontinuierlich zu überwachen und ggf. neu zu starten. Mit der nachfolgenden Beschreibung wird alle 5 Sekunden die Existenz des Programms abgefragt und dieses bei einem versagenden Test neu gestartet.&lt;br /&gt;
&lt;br /&gt;
Dazu wird auf dem System nach überall erhältlichen Anleitungen der Watchdog Timer installiert und die Datei /etc/watchdog.conf mit den beiden Parametern&lt;br /&gt;
 test-timeout = 10&lt;br /&gt;
 interval     = 5&lt;br /&gt;
besetzt. Ferner wird die Datei /etc/watchdog.d/ebusd angelegt mit dem Inhalt&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
# description: watchdog helper file for ebusd  &lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
&#039;test&#039;)&lt;br /&gt;
       #--- Test for ebusd&lt;br /&gt;
       if [ -s /var/run/ebusd.pid ] ; then&lt;br /&gt;
           RUN=`ps -ef | grep ebusd.*USB0 | grep -v grep`&lt;br /&gt;
           if [ &amp;quot;$RUN&amp;quot; != &amp;quot;&amp;quot; ] ; then            &lt;br /&gt;
              #echo &amp;quot;ebusd is already running&amp;quot;&lt;br /&gt;
              exit 0&lt;br /&gt;
           else&lt;br /&gt;
              echo &amp;quot;ebusd defunct at &amp;quot;`date`&lt;br /&gt;
              exit 1    &lt;br /&gt;
           fi&lt;br /&gt;
       else&lt;br /&gt;
           echo &amp;quot;ebusd not running, return 1 at &amp;quot;`date`&lt;br /&gt;
           exit 1    &lt;br /&gt;
       fi&lt;br /&gt;
       ;;&lt;br /&gt;
&#039;repair&#039;)&lt;br /&gt;
       #-- Restarting ebusd&lt;br /&gt;
       echo &amp;quot;ebusd restarting at &amp;quot;`date`&lt;br /&gt;
       /etc/init.d/ebusd start&lt;br /&gt;
       RETVAL=$?&lt;br /&gt;
       exit 0&lt;br /&gt;
       ;;&lt;br /&gt;
*)&lt;br /&gt;
       exit 0&lt;br /&gt;
       ;;&lt;br /&gt;
esac&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Visualisierung und Steuerung=&lt;br /&gt;
&lt;br /&gt;
==Mit MQTT2 in FHEM==&lt;br /&gt;
Das MQTT Protokoll wurde komplett in Fhem mit den Modulen [https://forum.fhem.de/index.php/topic,91394.0.html MQTT2_SERVER ] , MQTT2_Client und  [https://forum.fhem.de/index.php/topic,91394.0.html MQTT2 DEVICE ] integriert.&lt;br /&gt;
&lt;br /&gt;
Eine detailierte Anleitung mit einigen Praxisbeispielen zur Konfiguration in Fhem findet man [[EBUS-MQTT2|hier in eBus MQTT2]].&lt;br /&gt;
&lt;br /&gt;
==Mit ECMD in FHEM==&lt;br /&gt;
Eine einfache aber sichere Anbindung des eBusd an FHEM kann mit [[ECMD]] durchgeführt werden. Es ist egal ob eBusd auf dem selben Raspberry wie FHEM läuft oder ein eigener Raspberry dafür verwendet wird. Die gezeigten Beispiele sind nur eine der Möglichkeiten die zum Ziel führen, sollen aber sicher und schnell zu den ersten Erfolgen führen.&lt;br /&gt;
&lt;br /&gt;
Eine detailierte Anleitung zur Konfiguration findet man [[EBUS-ECMD|hier in eBus ECMD]].&lt;br /&gt;
&lt;br /&gt;
==GAEBUS==&lt;br /&gt;
&lt;br /&gt;
GAEBUS ist ein Perl Modul welches es in FHEM ermöglicht sämtliche Daten des eBus bequem zu konfigurieren.&lt;br /&gt;
Das Protokoll ist ebenso wie bei ECMD Telnet, aber die Einrichtung unterscheidet sich sehr stark und wird von den meisten Anwendern einfacher empfunden. Allerdings ist im derzeitigen Entwicklungsstand der GAEBUS noch nicht so flexibel wie ECMD. Das betrifft vor allem die Datenfilterung und Datenformatierung.&lt;br /&gt;
&lt;br /&gt;
Eine genaue Installations- und Einrichtungsanleitung kann aus diesem {{Link2Forum|Topic=46098|Message=381580|LinkText=Forums-Thread}} entnommen werden.&lt;br /&gt;
&lt;br /&gt;
Den Diskussionsthread des Autors findet man {{Link2Forum|Topic=41064|Message=332654|LinkText=hier}}.&lt;br /&gt;
&lt;br /&gt;
==FHEM Tablet UI (FTUI)==&lt;br /&gt;
&lt;br /&gt;
Die [http://forum.fhem.de/index.php/board,71.0.html Tablet-UI] ist ein ansprechendes HTML Frontend welches durch intensive Betreuung des Autors sehr gepflegt wird. Mit sogenannten Widgets kann hier auch für ungeübte schnell ein optisch ansprechendes Ergebnis erzielt werden. Die Tablet-UI stellt mit ihren Widgets direkt die Verbindung zu den Readings in FHEM her. Alle Messwerte die hier dargestellt werden sollen, müssen daher vorher in FHEM bereits definiert werden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:EBUSD_FTUI.png|thumb|left|alt=eBus Platine]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der komplette Demo-Code der abgebildeten Seite kann hier downgeloadet werden: {{Link2Forum|Topic=46098|Message=383071|LinkText=Tablet-UI}}&lt;br /&gt;
&lt;br /&gt;
=Tipps &amp;amp; Tricks=&lt;br /&gt;
&lt;br /&gt;
==eBusd Bedeutung der Telegramme==&lt;br /&gt;
&lt;br /&gt;
Der ebusd wird entweder über &#039;&#039;ebusctl&#039;&#039; oder über &#039;&#039;telnet&#039;&#039; durch Klartextkommandos abgefragt, die lauten z.B. &#039;&#039;read -c broadcast outsidetemp&#039;&#039;.&lt;br /&gt;
*In CSV-Dateien in /etc/ebusd wird festgelegt, in welche bzw. aus welcher binären Folge ein Kommando übersetzt wird. Konkret handelt es sich z.B. bei &#039;&#039;read -c broadcast outsidetemp&#039;&#039; um die Außentemperatur, die im Heizungssystem zyklisch als Broadcast gesendet wird und vom ebusd einfach mitgelesen wird.&lt;br /&gt;
*Für unterschiedliche Heizungssysteme werden unterschiedliche CSV-Dateien benötigt. &lt;br /&gt;
Für die Übersetzung der binären Daten in den Klartext ist es notwendig die entsprechenden Konfigurationsdateien(CSV-Files) zu installieren.&lt;br /&gt;
Den aktuellen Stand dieser Dateien findet ihr im [https://github.com/john30/ebusd-configuration/releases GIT von John].&lt;br /&gt;
&lt;br /&gt;
Desweiteren kann der eBusd gestartet werden, und zwar mit den Optionen -f (läuft im Vordergrund) und --loglevel debug (alles wird geloggt). Diese Optionen produzieren Unmengen an Daten und damit werden auch alle empfangenen Telegramme protokolliert, z.B.  &lt;br /&gt;
 10feb5160301f00d44&lt;br /&gt;
Hierin bedeutet&lt;br /&gt;
{|&lt;br /&gt;
|Byte&lt;br /&gt;
|Bedeutung&lt;br /&gt;
|hier&lt;br /&gt;
|-&lt;br /&gt;
|0x10&lt;br /&gt;
|Adresse des Senders&lt;br /&gt;
|Zentrale&lt;br /&gt;
|-&lt;br /&gt;
|0xfe&lt;br /&gt;
|Adresse des Empfängers&lt;br /&gt;
|Alle Geräte&lt;br /&gt;
|-&lt;br /&gt;
|0xb5&lt;br /&gt;
|Herstellercode&lt;br /&gt;
|Vaillant&lt;br /&gt;
|-&lt;br /&gt;
|0x16&lt;br /&gt;
|Klasse des Kommandos&lt;br /&gt;
|Broadcast&lt;br /&gt;
|-&lt;br /&gt;
|0x03&lt;br /&gt;
|Anzahl Datenbytes&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|0x01&lt;br /&gt;
|Bedeutung des Wertes&lt;br /&gt;
|outsidetemp = Außentemperatur&lt;br /&gt;
|-&lt;br /&gt;
|0xf0&lt;br /&gt;
|LSB des Wertes&lt;br /&gt;
|240&lt;br /&gt;
|-&lt;br /&gt;
|0x0d&lt;br /&gt;
|MSB des Wertes&lt;br /&gt;
|12&lt;br /&gt;
|-&lt;br /&gt;
|0x44&lt;br /&gt;
|CRC&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
Damit ergibt sich in diesem Falle eine Außentemperatur von (12*256 + 240)/256 = 12,9375 Grad Celsius. In der zugehörigen CSV-Datei wird dem ebusd diese Übersetzung mitgeteilt durch eine Zeile der Form&lt;br /&gt;
 u,broadcast,outsidetemp,Außentemperatur,,FE,B516,01,temp2,m,D2B,,°C,Temperatur&lt;br /&gt;
Diese CSV-Dateien können z.B. mit OpenOffice aus einem Spreadsheet generiert werden, indem dieses als CSV-Datei mit Separator &amp;quot;,&amp;quot; gespeichert wird. &lt;br /&gt;
*Bei einem vollkommen unbekannten Heizungssystem sollte man den Hersteller fragen, welche Codes er verwendet&lt;br /&gt;
*Für Vaillant- und Wolf- Heizungssysteme liegen in dem oben genannten Verzeichnis ein paar Beispiele vor, die man als Ausgangspunkt nehmen kann.&lt;br /&gt;
&lt;br /&gt;
==Serieller Konverter==&lt;br /&gt;
&lt;br /&gt;
[[Datei:EBUS_RS232_Konverter.png|thumb|left|alt=eBus Platine]]&lt;br /&gt;
Es hat sich als nicht praktikabel erwiesen, den eBus mit einem Pegelwandler direkt an den seriellen GPIO-Port des Raspberry Pi anzuschließen. Die ständig einlaufenden Synchronisationssignale auf dem eBus, sowie die interne Verarbeitung der GPIO-Signale im Raspberry führen zu einer intolerablen Latenz, d.h., die eBus-Signale kommen verspätet bei der Software eBusd an (bis zu 90 Minuten wurden beobachtet). Stattdessen sollte grundsätzlich ein Seriell-USB-Konverter verwendet werden und der Raspberry Pi über einen USB-Port mit dem eBus verbunden werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==USB Device und Port unter Linux ermitteln==&lt;br /&gt;
&lt;br /&gt;
Die einfachste Art den USB Device zu ermitteln erfolgt direkt am Raspberry Pi mit dem Befehl &amp;quot;lsusb&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 pi@raspberry2 ~ $ lsusb&lt;br /&gt;
 Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.&lt;br /&gt;
 Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub&lt;br /&gt;
 Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.&lt;br /&gt;
 Bus 001 Device 004: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC&lt;br /&gt;
&lt;br /&gt;
in diesem Beispiel ist das der Device 004, dieser FT232 lauscht am eBus und ist mit dem eBus-Konverter verbunden.&lt;br /&gt;
&lt;br /&gt;
Der USB Port kann mit der folgenden Kommandozeile ermittelt werden:&lt;br /&gt;
 sudo dmesg | grep -i tty&lt;br /&gt;
Die Ausgabe sieht wie folgt aus:&lt;br /&gt;
 [553999.530995] usb 1-1.3: FTDI USB Serial Device converter now attached to &#039;&#039;&#039;ttyUSB0&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==eBusd==&lt;br /&gt;
===Prüfen der eBusd Konfigurationsdateien===&lt;br /&gt;
Mit dem Parameter &amp;quot;&#039;&#039;&#039;--checkconfig --scanconfig&#039;&#039;&#039;&amp;quot; kann die Installation der benutzten CSV Dateien am Raspberyy Pi überprüft werden. Vor allem wird hier angezeigt wieviele Messages übersetzt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
pi@raspberry2 ~ $ ebusd --checkconfig --scanconfig&lt;br /&gt;
2016-01-22 17:14:12.619 [main notice] Performing configuration check...&lt;br /&gt;
2016-01-22 17:14:19.336 [main notice] found messages: 4440 (416 conditional on 89 conditions, 2 poll, 64 update)&lt;br /&gt;
&lt;br /&gt;
pi@raspberry2 ~ $ ebusctl info&lt;br /&gt;
version: ebusd 2.0.0ea7efc&lt;br /&gt;
signal: acquired&lt;br /&gt;
symbol rate: 24&lt;br /&gt;
masters: 3&lt;br /&gt;
messages: 426&lt;br /&gt;
address 03: master #3&lt;br /&gt;
address 08: slave #3, scanned &amp;quot;MF=Vaillant;ID=BAI00;SW=0518;HW=7401&amp;quot;, loaded  &amp;quot;vaillant/08.bai.HW7401.csv&amp;quot;&lt;br /&gt;
address 10: master #6&lt;br /&gt;
address 15: slave #6, scanned &amp;quot;MF=Vaillant;ID=43000;SW=0215;HW=2002&amp;quot;, loaded &amp;quot;vaillant/15.430.csv&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Info hingegen zeigt genau welche CSV Dateien geladen worden sind und ihre Soft- und Hardewareversion.&lt;br /&gt;
&lt;br /&gt;
===Bedeutung von &amp;quot;unknown MS&amp;quot; in der eBusd Logdatei===&lt;br /&gt;
Der Autor des eBus Dämons ist ständig bemüht die Geräte der unterschiedlichen Hersteller alle zu erfassen und so die Konfigurationsdateien zu ergänzen. Je nach Hard- und Softwarekonfiguration können  Broadcast Meldungen vom eBus kommen die in der _broadcast.csv noch nicht übersetzt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
2015-12-30 21:48:57.662 [update notice] unknown MS cmd: 1008b5110101 / 09404210004a620000ff&lt;br /&gt;
2015-12-30 21:48:59.670 [update notice] unknown BC cmd: 10feb516080001492130120315&lt;br /&gt;
2015-12-30 21:48:59.923 [update notice] unknown MS cmd: 1008b512020064 / 00&lt;br /&gt;
2015-12-30 21:49:01.711 [update notice] unknown MS cmd: 1008b5100900003c7affff00ff00 / 0101&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Meldungen haben in der Regel für den weiteren Verlauf der Kommunikation über den eBus keinen Einfluß und ist keine Fehlfunktion der Schaltung oder Platine!&lt;br /&gt;
&lt;br /&gt;
===Bedeutung von &amp;quot;signal lost&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
pi@raspberrypi /etc/init.d $ sudo ebusd -f -c /tmp --logareas bus --loglevel info -d /dev/ttyUSB0&lt;br /&gt;
2016-01-18 22:38:56.348 [bus notice] signal acquired&lt;br /&gt;
2016-01-18 22:38:56.477 [bus notice] new master 10, master count 2&lt;br /&gt;
2016-01-18 22:38:56.481 [bus notice] new master 3f, master count 3&lt;br /&gt;
2016-01-18 22:39:02.051 [bus error] signal lost&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei dieser Meldung verliert der USB Konverter nach 20-Sekunden die Verbindung zum Raspberry Pi und produziert dann den Logeintrag.&lt;br /&gt;
{{Link2Forum|Topic=46098|Message=394313|LinkText=Lösungvorschlag}}&lt;br /&gt;
&lt;br /&gt;
===ERR: unable to load===&lt;br /&gt;
&lt;br /&gt;
 2016-01-17 19:04:03.961 [main error] unable to load scan config 08: no file from /etc/ebusd/vaillant with prefix 08. matches ID &amp;quot;bai00&amp;quot;, SW0604, HW5502&lt;br /&gt;
&lt;br /&gt;
Ebusd wird gestartet, findet aber ein Konfigurations File (CSV) nicht.&lt;br /&gt;
&lt;br /&gt;
Die eBusd Konfigurationsdateien könne nach [[#eBusd Konfigurationsdateien (CSV-Files)|diesem]] Vorgehen installiert werden.&lt;br /&gt;
Die Konfigurationsdateien aus dem Git neu laden und installieren.&lt;br /&gt;
{{Link2Forum|Topic=46098|Message=394270|LinkText=Lösungvorschlag}}&lt;br /&gt;
&lt;br /&gt;
===ERR: duplicate Entry===&lt;br /&gt;
&lt;br /&gt;
===ERR: End of input reached===&lt;br /&gt;
&lt;br /&gt;
Die CSV Dateien wurden [http://forum.fhem.de/index.php/topic,46098.msg383450/topicseen.html#msg383450 fehlerhaft installiert] oder sind defekt!&lt;br /&gt;
Eine Neuinstallation dieser Dateien ist erforderlich!&lt;br /&gt;
&lt;br /&gt;
 Error reading &amp;quot;/etc/ebusd/vaillant/05.vd3.csv&amp;quot; line 1 field 1 value &amp;quot;05.vd4.csv&amp;quot;: ERR: end of input reached&lt;br /&gt;
 Erroneous item is here:&lt;br /&gt;
 05.vd4.csv&lt;br /&gt;
  ^&lt;br /&gt;
 Error reading &amp;quot;/etc/ebusd/vaillant/15.hep.csv&amp;quot; line 1 field 1 value &amp;quot;15.sdr_p.csv&amp;quot;: ERR: end of input reached&lt;br /&gt;
 Erroneous item is here:&lt;br /&gt;
 15.sdr_p.csv&lt;br /&gt;
  ^&lt;br /&gt;
&lt;br /&gt;
===BUS ERR send to 15===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
2016-01-16 19:20:28.575 [bus notice] new master 03, master count 4&lt;br /&gt;
2016-01-16 19:20:28.575 [update notice] unknown MS cmd: 1008b513020508 / 00&lt;br /&gt;
2016-01-16 19:20:29.413 [update notice] unknown MS cmd: 100ab504010d / 054201008037&lt;br /&gt;
2016-01-16 19:20:32.398 [bus error] send to 08: ERR: read timeout, retry&lt;br /&gt;
2016-01-16 19:20:33.005 [bus error] send to 08: ERR: read timeout, retry&lt;br /&gt;
2016-01-16 19:20:33.613 [bus error] send to 08: ERR: read timeout, retry&lt;br /&gt;
2016-01-16 19:20:34.859 [bus error] send to 08: ERR: read timeout&lt;br /&gt;
2016-01-16 19:20:34.859 [main error] scan config 08 message: ERR: read timeout&lt;br /&gt;
2016-01-16 19:20:37.017 [main notice] read common config file /etc/ebusd/vaillant/scan.csv&lt;br /&gt;
2016-01-16 19:20:37.019 [main notice] read common config file /etc/ebusd/vaillant/broadcast.csv&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Fehlermeldung (read timeout) kann verschiedene Ursachen haben, meist liegt der Fehler in einer fehlerhaften Verkabelung.&lt;br /&gt;
{{Link2Forum|Topic=46098|Message=393547|LinkText=Lösungsvorschlag}}&lt;br /&gt;
&lt;br /&gt;
=Systemarchitektur / Systemdesign=&lt;br /&gt;
Es muss sich jeder vorher überlegen, ob man für den eBus einen eigenen Rechner Raspberry Pi nimmt, oder auf der bestehenden FHEM Installation laufen lassen will. Eine Trennung bietet mehrere Vorteile die dann speziell im Testbetrieb den normalen Smart-Home Betrieb nicht beinflussen.&lt;br /&gt;
[[Datei:EBUS_Konfiguration.png|thumb|left|alt=eBus Konfiguration]]&lt;br /&gt;
Hier eine Konfiguration von FHEM und das Zusammenspiel mit eBusd via ECMD. Das soll aber jeder so handhaben wie es am Besten in das eigene Konzept passt.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Werkzeuge / Tools=&lt;br /&gt;
&lt;br /&gt;
==PSPad==&lt;br /&gt;
[http://www.pspad.com/de/ Pspad] ist ein besonders auf Programmierer zugeschnittener unicode-fähiger Editor für Microsoft Windows, welcher in der Lage ist auch per FTP die Dateien direkt zu editieren und zu schreiben ohne den Umweg sie vorher kopieren zu müssen! Besonders wichtig ist neben einem Syntaxhighlighter das er Linuxkonform ist und die Steuerzeichen am Zeilenende richtig interpretiert.&lt;br /&gt;
&lt;br /&gt;
Hier zwei wichtige Infos zur Einrichtung des PSPad.&lt;br /&gt;
&lt;br /&gt;
[[Datei:EBUS_PSPad_FTP.png|thumb|left|alt=eBus Platine]]&lt;br /&gt;
&lt;br /&gt;
Im Tab &amp;quot;&#039;&#039;&#039;FTP&#039;&#039;&#039;&amp;quot; unten mit der rechten Maustaste auf die weiße Fläche klicken und in dem neu geöffneten Fenster &amp;quot;FTP verbinden&amp;quot; wählen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:EBUS_PSPad_FTP2.png|thumb|left|alt=eBus Platine]]&lt;br /&gt;
Es öffnet sich ein Fenster mit den Verbindungsdaten des FTP Servers. Nicht vergessen, das unten markierte Häckchen &amp;quot;&#039;&#039;&#039;Verbindung halten&#039;&#039;&#039; ...&amp;quot; zu markieren. Es wird dann alle 60 Sekunden ein NOOP Signal gesendet und die Verbindung wird nach einem Timeout nicht jedes Mal beendet.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Filezilla==&lt;br /&gt;
Ebenso wie PSPad wird es für viele Arbeiten am Raspberry und eBusd eine Erleichterung sein manche Dateien direkt zu kopieren oder am PC zu sichern.&lt;br /&gt;
[https://filezilla-project.org/ Filezilla] beherrscht ebenfalls das &#039;&#039;&#039;FTP Protokoll&#039;&#039;&#039; und speichert die Verbindungsdaten in einem Profil.&lt;br /&gt;
&lt;br /&gt;
[[Datei:EBUS_Filezilla_FTP.png|thumb|left|alt=eBus Platine]]&lt;br /&gt;
Links oben öffnet man den Servermanager und wählt (links unten) &amp;quot;neuer Server&amp;quot;. Man gibt die Verbindungsdaten des Raspberry ein und drückt &amp;quot;speichern&amp;quot;. Das Verbindungs Profil steht nun im Servermanager als &amp;quot;Raspberry&amp;quot; zur Verfügung und die Verbindung kann nun mit einem Doppelklick geöffnet werden. Dateien können nun durch einfaches Drag &amp;amp; Drop zwischen linken (lokales Laufwerk am PC) und rechten Dateifenster (in diesem Fall Raspberry) bequem kopiert werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Putty==&lt;br /&gt;
[http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html PuTTY] ist ein SSH Client welcher neben Secure Shell auch Telnet, Remote login und eine serielle Schnittstelle enthält. Als Tipp sei hier erwähnt, dass hier einige sehr nützliche Features zur Verfügung stehen:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;rechte Maustaste&#039;&#039;&#039; = Zwischenablage wird ins Terminalfenster kopiert &lt;br /&gt;
* &#039;&#039;&#039;Text mit Maus markieren&#039;&#039;&#039; = in Zwischenablage kopieren&lt;br /&gt;
* &#039;&#039;&#039;Pfeiltasten Auf/Ab&#039;&#039;&#039; = die letzten Befehle wiederholen, durch die Liste steppen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:EBUS_Putty.png|thumb|left|alt=eBus Platine]]&lt;br /&gt;
Ebenso können mit Putty mehrere Terminalfenster parallel geöffnet werden. Diese Methode ist bei der Kalibrierung des Potis im Raw-Modus sehr von Vorteil.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Weiterführende Links=&lt;br /&gt;
Diskussionsthread aus dem Forum:&lt;br /&gt;
*{{Link2Forum|Topic=46098|LinkText=eBus Schaltung in Betrieb nehmen!}}&lt;br /&gt;
*{{Link2Forum|Topic=29737|LinkText=Läuft: Heizung mit eBus-Schnittstelle}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:Heizungssteuerung]]&lt;br /&gt;
[[Kategorie:Interfaces]]&lt;/div&gt;</summary>
		<author><name>Reinhart</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=EBUS&amp;diff=29858</id>
		<title>EBUS</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=EBUS&amp;diff=29858"/>
		<updated>2019-03-12T10:59:10Z</updated>

		<summary type="html">&lt;p&gt;Reinhart: ECMD ausgegliedert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Randnotiz|RNTyp=r|RNText=Die Verwendung des EBUS zur &#039;&#039;Ansteuerung&#039;&#039; eines Heizungssystems kann dieses bei unsachgemäßer Anwendung beschädigen. Für unmittelbare oder mittelbare Folgen, die sich aus dem Nachbau des Interfaces oder der Verwendung der hier zur Verfügung gestellten Information ergeben, übernimmt der Autor keine Haftung.}}Dieser Artikel beschreibt die Ankopplung von Heizungssysteme mit eBus-Interface an FHEM.&lt;br /&gt;
&lt;br /&gt;
Der eBus ist eine bei vielen Heizungssystemen vorhandene serielle Schnittstelle mit zwei Leitungen. Verwendet werden dabei 2400 Baud als Geschwindigkeit und die beiden Signalpegel&lt;br /&gt;
*logisch 1: 15–24 V&lt;br /&gt;
*logisch 0: 9–12 V&lt;br /&gt;
&lt;br /&gt;
[[Datei:EBUS-Adapter-aufgebaut.png|thumb|left|alt=eBus Platine]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fertig aufgebaute eBus Platine, bereit für den Einsatz mit eBusd!&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Interface=&lt;br /&gt;
==Schaltung==&lt;br /&gt;
[[Datei:EBUS_Interface_Schaltung.png|thumb|left|alt=eBus-USB Interface]]&lt;br /&gt;
Eine direkte Ankopplung des eBus an FHEM via Pegelwandlung und serielle Schnittstelle ist nicht empfehlenswert, stattdessen wurde der Weg beschritten, einen separaten Raspberry Pi (Modell B) an den eBus zu koppeln und darauf die Software &#039;&#039;eBusd&#039;&#039; laufen zu lassen. Diese wird dann in einer beliebigen FHEM-Instanz als ECMD-Device definiert und somit per Telnet abgefragt.&lt;br /&gt;
&lt;br /&gt;
Hierbei wird ein kommerziell für ca. 6,00 € erhältliches USB-Modul mit ein paar Zusatzbauteilen im Wert von ca. 5,00 € versehen. Das Interface hat die folgenden Eigenschaften:&lt;br /&gt;
*Verpolungssicherer eBus-Anschluss&lt;br /&gt;
*Galvanische Trennung zwischen eBus und USB &lt;br /&gt;
Die Bauteile sind unkritisch und können durch äquivalente Teile ersetzt werden. Allerdings sollte bei der Zenerdiode auf eine Belastbarkeit mit 1,3 W geachtet werden, und beim USB-Modul darauf, dass dieses einen FTDI-Chip enthält.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Der Autor übernimmt keine Haftung für die Anwendung dieser Schaltung. Zur Vermeidung von Schäden durch unsachgemäße Bedienung des Heizungssystems wird ausdrücklich empfohlen, nur die lesende Hälfte des Interfaces nachzubauen und sich auf ein passives Lauschen auf dem EBUS zu beschränken. Dazu einfach den Zweig mit Darlington-Transistor aus der Schaltung nicht einbauen.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Schaltung des eBus von Prof. Dr. Peter A. Henning ist eine bewährte Schaltung die von zahlreichen Anwendern bereits nachgebaut wurde. &lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Eigenbau (Lochrasterplatine)==&lt;br /&gt;
[[Datei:EBUS_Adapter_Lochrasterplatine.png|thumb|left|alt=Platine]]&lt;br /&gt;
&lt;br /&gt;
Hier ein Beispiel eines Aufbaues auf einer Lochrasterplatine.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Platine==&lt;br /&gt;
Auf Basis der oben genannten Schaltung, wurde im {{Link2Forum|Topic=46098|LinkText=FHEM Forum}} ein Platinenlayout erstellt und produziert. Die dazu benötigten Gerberfiles können {{Link2Forum|Topic=45127|Message=370647|LinkText=hier}} heruntergeladen werden. Der Autor des Layouts hat dies mit der Freeware Version von EAGLE erstellt, d.h. die Files können bei allen Platinenherstellern eingereicht werden (keine Lizenz eines bestimmten Herstellers notwendig).&lt;br /&gt;
[[Datei:EBUS_Adapter_Platine.png|thumb|left|alt=Platine]]&lt;br /&gt;
Diese Beschreibung sollte hauptsächlich für Personen dienen, bei denen es nicht das tägliche Brot ist elektronische Schaltungen in Betrieb zu nehmen. Ich setze hier voraus, dass der Umgang mit einem Lötkolben klar ist. Wer noch nie gelötet hat, sollte besser einen Bekannten ersuchen der das schon gemacht hat.&lt;br /&gt;
Nachfolgend wird beschrieben, wie eine Platine mit den Bauteilen bestückt wird.&lt;br /&gt;
Am einfachsten ist es einen fertigen Adapter zu kaufen.&lt;br /&gt;
Siehe dazu auch den {{Link2Forum|Topic=46098|LinkText=Link aus dem Forum}}:&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Platine bestücken===&lt;br /&gt;
[[Datei:EBUS_Adapter_Bestueckung.png|thumb|left|alt=Platine bestücken]]&lt;br /&gt;
Bei der Bestückung sollte darauf geachtet werden mit den niedrigsten Bauteilen zuerst zu beginnen, sonst fallen sie beim verlöten ständig heraus. Wer die Farbcodes der Widerstände nicht auswendig kennt sollte diese vorher mit einem Meßgerät (Ohmmeter) messen. Nach den Dioden und Widerständen können die IC Sockel eingelötet werden, hier sollte lediglich auf die Einkerbung laut Bestückungsaufdruck geachtet werden. Zum Schluß noch die restlichen Bauteile. Nach einer genauen Sichtkontrolle (verbogene Beinchen des IC, Kurzschlüsse beim Löten, richtige Polung) können noch die ICS eingesetzt werden. Diese können auf einer flachen Unterlage etwas vorgebogen werden, damit sie leichter in den Sockel passen.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Achtung&#039;&#039;&#039;: der IC 4011 ist ein Cmos Schaltkreis und ist empfindlich gegen statische Aufladungen, daher die Beinchen nicht mit dem Finger berühren, bzw. ein Antistatikband am Arm verwenden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 Bestückung der Widerstände bei Platine V1.6&lt;br /&gt;
 R1 = 3k3&lt;br /&gt;
 R2 = 1k0&lt;br /&gt;
 R3 = 20k Poti&lt;br /&gt;
 R4 = 10k (auf der Platine nicht beschriftet, links neben R2)&lt;br /&gt;
 R5 = 470&lt;br /&gt;
 R6 = 22k&lt;br /&gt;
 R7 = 100k (auf der Platine nicht beschriftet, links unten liegt quer)&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
[https://secure.reichelt.de/index.html?&amp;amp;ACTION=20&amp;amp;AWKID=1170007&amp;amp;PROVID=2084 Warenkorb der benötigten Bauteile von Reichelt]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Platine Messpunkte===&lt;br /&gt;
Der Schaltplan mit den Messpunkten wurde entfernt, da er etwas missverständlich formuliert war und bei einigen Anwendern Verwirrung auslöste.&lt;br /&gt;
&lt;br /&gt;
===Poti abgleichen===&lt;br /&gt;
Zur ersten Justierung des Potis, wird der eBusd Dienst genutzt. Das Vorgehen sieht wie folgt aus:&lt;br /&gt;
&lt;br /&gt;
1) &#039;&#039;&#039;eBus Dienst stoppen&#039;&#039;&#039; - Das kann mit der folgenden Kommandozeile bewerkstelligt werden:&lt;br /&gt;
 service ebusd stop&lt;br /&gt;
2) &#039;&#039;&#039;eBus Dienst&#039;&#039;&#039;, jedoch mit minimalen Parametern und ohne eBusd Konfigurationsdateien (CSV-Files), mit der folgenden Kommandozeile erneut starten:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; &amp;lt;DEVICE&amp;gt; Muss zuvor durch den entsprechenden USB-Port (siehe [[#USB Device und Port unter Linux ermitteln|USB Device und Port unter Linux ermitteln]]) z.B. /dev/ttyUSB0 ersetzt werden.&#039;&#039;&lt;br /&gt;
 ebusd -f -c /tmp --logareas bus --loglevel info -d &amp;lt;DEVICE&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3) Der eBusd Dienst läuft nun im &#039;&#039;&#039;Vordergrund&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
4) &#039;&#039;&#039;Einem zweiten Terminal öffnen&#039;&#039;&#039; und den folgenden Befehl ausführen:&lt;br /&gt;
 ebusctl raw&lt;br /&gt;
&lt;br /&gt;
Mit dem Befehl erhält man im Terminalfenster die empfangenen Bytes als Hex, die wie folgt aussehen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
2015-12-24 12:07:16.955 [bus notice] &amp;lt;aa&lt;br /&gt;
2015-12-24 12:07:17.001 [bus notice] &amp;lt;aa&lt;br /&gt;
2015-12-24 12:07:17.047 [bus notice] &amp;lt;aa&lt;br /&gt;
2015-12-24 12:07:17.093 [bus notice] &amp;lt;aa&lt;br /&gt;
2015-12-24 12:07:17.097 [bus notice] &amp;lt;10&lt;br /&gt;
2015-12-24 12:07:17.102 [bus notice] &amp;lt;50&lt;br /&gt;
2015-12-24 12:07:17.107 [bus notice] &amp;lt;b5&lt;br /&gt;
2015-12-24 12:07:17.111 [bus notice] &amp;lt;04&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Wenn gerade kein Gerät den Bus nutzt, dann sollten ca. 20 Zeilen pro Sekunde ausgegeben werden und zwar mit &amp;quot;&amp;lt;aa&amp;quot; (im Beispiel die oberen 4 Zeilen).&lt;br /&gt;
&lt;br /&gt;
Sobald ein Gerät den eBus nutzt, tauchen neben &amp;quot;&amp;lt;aa&amp;quot; auch andere HEX Werte auf (im Beispiel die unteren 4 Zeilen). Diese Werte können ignoriert werden.&lt;br /&gt;
&lt;br /&gt;
Wichtig bei der Poti Einstellung ist, dass vor allem die regulären &amp;quot;aa&amp;quot;s zu sehen sind. Tauchen die &amp;quot;aa&amp;quot;s auf, dann kann davon ausgegangen werden, dass der Poti korrekt eigestellt ist. Ist dies der Fall, dann kann der eBusd Dienst regulär gestartet werden.&lt;br /&gt;
Dabei muss der im Vordergrund laufende eBusd Prozess (siehe Punkt 2) mit der Tastenkombination STRG+C abgebrochen und der folgende Befehl in der Kommandozeile ausgeführt werden:&lt;br /&gt;
 service ebusd start&lt;br /&gt;
Anschließend erscheint eine Meldung, die einen erfolgreichen Start des Dienstes signalisiert.&lt;br /&gt;
 [ ok ] Starting ebusd: ebusd.&lt;br /&gt;
&lt;br /&gt;
===Bekannte Fehler=== &lt;br /&gt;
Das Logfile ist zur Inbetriebnahme unerlässlich und kann (z.B. mit [[#PSPad|PSPad]]) ausgelesen werden. &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
2015-12-22 16:27:34.195 [bus notice] signal acquired&lt;br /&gt;
2015-12-22 16:28:12.029 [bus error] signal lost&lt;br /&gt;
2015-12-22 16:28:12.339 [bus notice] signal acquired&lt;br /&gt;
2015-12-22 16:28:14.006 [bus error] signal lost&lt;br /&gt;
2015-12-22 16:28:16.372 [bus notice] signal acquired&lt;br /&gt;
2015-12-22 16:28:18.023 [bus error] signal lost&lt;br /&gt;
2015-12-22 16:28:18.729 [bus notice] signal acquired&lt;br /&gt;
2015-12-22 16:28:20.458 [update notice] update myCustom Status01: 43.0;41.0;8.000;41.0;38.0;ok&lt;br /&gt;
2015-12-22 16:28:26.460 [update notice] update bc Mode QQ=10: standby&lt;br /&gt;
2015-12-22 16:28:30.436 [update notice] update myCustom Status01: 41.0;40.0;8.000;41.0;38.0;ok&lt;br /&gt;
2015-12-22 16:28:32.458 [update notice] update broadcast vdatetime QQ=10: 16:24:52;22.12.2015&lt;br /&gt;
2015-12-22 16:28:32.696 [update notice] update myCustom2 Pumpenstatus: ok&lt;br /&gt;
2015-12-22 16:28:36.452 [update notice] update bc Mode QQ=10: standby&lt;br /&gt;
2015-12-22 16:28:40.478 [update notice] update myCustom Status01: 40.0;39.0;7.750;41.0;38.0;ok&lt;br /&gt;
2015-12-22 16:28:42.482 [update notice] update myCustom1 Status11: nosignal;41;5;18;-;-;-;-;8.000&lt;br /&gt;
2015-12-22 16:28:42.753 [update notice] update myCustom Status02: auto;60;70.0;70;54.0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier ein typisches Log wenn das Poti noch nicht oder &#039;&#039;&#039;falsch kalibriert&#039;&#039;&#039; wurde.&lt;br /&gt;
Ab dem Eintrag 16:28:20.458 war dann die richtige Stellung gefunden. Das Poti soll daher zunächst ganz nach links (Transistor der Platine ist dann rechts unten) gedreht werden und dann vorsichtig auf etwa 2:00 Uhr. Bei knapp 2:00 Uhr ist bei der Testplatine dann die ideale Stellung. Der Stellbereich ist sehr klein (etwa 1-2 mm), daher einen Schraubendreher verwenden der sehr exakt passt und gleichzeitig mit dem Laptop abfragen starten. Zur Kontrolle dann das Log (var/log/ebusd.log) abfragen. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
2015-11-29 06:26:55.271 [update notice] update myCustom1 Status11: nosignal;40;0;15;-;-;-;-;-0.188&lt;br /&gt;
2015-11-29 06:26:55.541 [update notice] update myCustom Status02: auto;60;70.0;70;54.0&lt;br /&gt;
2015-11-29 06:26:59.293 [update notice] update bc Mode QQ=10: standby&lt;br /&gt;
2015-11-29 06:27:03.323 [update notice] update myCustom Status01: 53.0;45.0;-0.438;47.0;46.0;error&lt;br /&gt;
2015-11-29 06:27:05.268 [update notice] update broadcast outsidetemp QQ=10: -3.188&lt;br /&gt;
2015-11-29 06:27:09.344 [update notice] update bc Mode QQ=10: standby&lt;br /&gt;
2015-11-29 06:27:11.934 [bus error] send to 08: ERR: read timeout, retry&lt;br /&gt;
2015-11-29 06:27:11.981 [bus error] send to 08: ERR: read timeout, retry&lt;br /&gt;
2015-11-29 06:27:12.025 [bus error] send to 08: ERR: read timeout, retry&lt;br /&gt;
2015-11-29 06:27:12.069 [bus error] send to 08: ERR: read timeout&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In diesem Fall liegt ein Fehler bei jedem Sendeversuch vor. Ein &amp;quot;bus error&amp;quot; mit timeout sollte nicht (zu oft) zu finden sein. Gut zu sehen sind schon die Broadcast Meldungen, die selbständig über den Bus laufen und vom Konverter schon richtig interpretiert werden. Sollten wie in diesem Fall, die Meldungen nicht mit Texten zu lesen sein fehlen noch die Konfigurationfiles (csv) im Verzeichnis /etc/ebusd. Welche Files hier verwendet werden sollen ist natürlich von der Therme und dem Zubehör abhängig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Achtung&#039;&#039;&#039;: Der Autor übernimmt keine Haftung für die Anwendung dieser Schaltung. Zur Vermeidung von Schäden durch unsachgemäße Bedienung des Heizungssystems wird ausdrücklich empfohlen, nur lesend auf die Schnittstelle zugreifen.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Kommerzielles Interface==&lt;br /&gt;
Ein kommerzielles Interface für die Umsetzung eBus-&amp;gt;USB ist hier erhältlich:&lt;br /&gt;
[https://www.eservice-online.de/produkte/ebus/ eBus Koppler USB]&lt;br /&gt;
&lt;br /&gt;
=Software=&lt;br /&gt;
Als Software kommt auf dem Raspberry Pi der [https://github.com/john30/ebusd ebusd] = eBus-Dämon zum Einsatz (aktuell im Januar 2016 die Version 2.0). &lt;br /&gt;
&lt;br /&gt;
Der ebusd wird auf dem System (z.B Raspberry Pi) nach der beiliegenden Anleitung übersetzt und installiert.&lt;br /&gt;
&lt;br /&gt;
Wichtigsten Bestandteile (Komponenten) der Installation sind:&lt;br /&gt;
*&#039;&#039;ebusd&#039;&#039; - das eigentliche Programm zur Kommunikation mit dem EBUS&lt;br /&gt;
*&#039;&#039;ebusd-configuration - Dateien im CSV(Comma Separated Value)-Format, die beim Start des eBusd eingelesen und als Kommandos (Befehle) für das Heizungsystem verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Nachfolgend wird die Installation der zwei Komponenten beschrieben.&lt;br /&gt;
&lt;br /&gt;
==eBusd Installation per Debian Package==&lt;br /&gt;
&lt;br /&gt;
===Voraussetzungen===&lt;br /&gt;
wget (ist in der Regel auf vielen Distributionen bereits installiert). Die Installation kann mit der folgenden Kommandozeile nachträglich durchgeführt werden: &lt;br /&gt;
 sudo apt-get install wget&lt;br /&gt;
&lt;br /&gt;
===eBusd installieren===&lt;br /&gt;
Das entsprechende eBusd Debian Package kann [https://github.com/john30/ebusd/releases vom GitHub ebusd] bezogen werden.&lt;br /&gt;
&lt;br /&gt;
Die Installation (&#039;&#039;Stand Januar 2016 - Version 2.0&#039;&#039;) wird wie folgt durchgeführt:&lt;br /&gt;
&lt;br /&gt;
 EBUSDPACKAGE=ebusd-2.0_armhf.deb # &amp;lt;--- Version kann bei Bedarf hier angepasst werden.&lt;br /&gt;
 wget https://github.com/john30/ebusd/releases/download/v2.0/$EBUSDPACKAGE&lt;br /&gt;
 sudo dpkg -i --force-overwrite $EBUSDPACKAGE&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Die eBusd wird dauernd aktualisiert. Aus diesem Grund sollte vor der Installation geprüft werden (siehe den o.g. Link), ob bereits eine neuere Version zur Verfügung steht. Der Name des Debian Packages muss, vor der Ausführung der o.g. Kommandozeilen, an der entsprechenden Stelle angepasst werden.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===eBusd Konfigurationsdateien (CSV-Files)===&lt;br /&gt;
Das entsprechende eBusd Konfigurations Debian Package kann [https://github.com/john30/ebusd-configuration/releases vom GitHub ebusd-configuration] bezogen werden.&lt;br /&gt;
&lt;br /&gt;
Die Installation (&#039;&#039;Stand Januar 2016 - Version 2.0.5aa482c&#039;&#039;) wird wie folgt durchgeführt:&lt;br /&gt;
&lt;br /&gt;
 EBUSDCFGPACKAGE=ebusd-configuration-2.0.5aa482c-de_all.deb # &amp;lt;--- Version kann bei Bedarf hier angepasst werden.&lt;br /&gt;
 wget https://github.com/john30/ebusd-configuration/releases/download/v2.0.1/$EBUSDCFGPACKAGE&lt;br /&gt;
 sudo dpkg -i --force-overwrite $EBUSDCFGPACKAGE&lt;br /&gt;
&lt;br /&gt;
===eBusd starten===&lt;br /&gt;
Nach der erfolgreichen Installation des eBusd und der eBusd Konfigurationsdateien kann nun der Dienst gestartet werden.&lt;br /&gt;
Zuvor muss jedoch der USB-Port des eBus Adapters überprüft werden (siehe auch [[#USB Device und Port unter Linux ermitteln|USB Device und Port unter Linux ermitteln]]). Sollte der USB-Port von dem Standardwert &amp;quot;/dev/ttyUSB0&amp;quot; abweichen, dann muss die Konfiguration &amp;quot;/etc/default/ebusd&amp;quot; angepasst werden.&lt;br /&gt;
Andernfalls kann nun der Dienst mit der folgenden Kommandozeile gestartet werden:&lt;br /&gt;
&lt;br /&gt;
 service ebusd start&lt;br /&gt;
Anschließend erscheint eine Meldung:&lt;br /&gt;
 [ ok ] Starting ebusd: ebusd.&lt;br /&gt;
die einen erfolgreichen Start des Dienstes signalisiert.&lt;br /&gt;
&lt;br /&gt;
===eBusd und Konfigurationsdateien deinstallieren===&lt;br /&gt;
Nachfolgend wird die Deinstallation des eBusd und der eBusd Konfigurationsdateien beschrieben.&lt;br /&gt;
&lt;br /&gt;
Zunächst muss der eBusd Dienst beendet werden, dies erfolgt mit der folgenden Kommandozeile:&lt;br /&gt;
 service ebusd stop&lt;br /&gt;
Anschließend erscheint eine Meldung:&lt;br /&gt;
 [ ok ] Stopping ebusd: ebusd.&lt;br /&gt;
die einen erfolgreichen Stop des Dienstes signalisiert.&lt;br /&gt;
&lt;br /&gt;
Anschließend wird zunächst das Debian Konfigurations Package deinstalliert. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Bei der Deinstallation werden alle Konfigurationsdateien (CSV-Files) unwiderruflich gelöscht!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Deinstallation erfolgt mit der folgenden Kommandozeile:&lt;br /&gt;
 sudo dpkg -r --force-overwrite ebusd-configuration&lt;br /&gt;
&lt;br /&gt;
Das eBusd Debian Package wird mit der folgenden Kommandozeile deinstalliert:&lt;br /&gt;
 sudo dpkg -r --force-overwrite ebusd&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tipp:&#039;&#039;&#039; Mit der folgenden Kommandozeile: &lt;br /&gt;
 dpkg -l | grep &#039;ebusd&#039; &lt;br /&gt;
können die installierten eBusd Debian Packages überprüft werden. &lt;br /&gt;
&lt;br /&gt;
Liefert der Befehl kein Ergebnis, dann kann davon ausgegangen werden, dass kein eBusd Debian Package mehr installiert ist.&lt;br /&gt;
&lt;br /&gt;
==eBusd Installation Build Prozess==&lt;br /&gt;
Möchte man eine aktuelle Entwicklungsversion von eBusd nutzen, weil ein Fehler behoben wurde und für diese Version noch kein Debian Package vorhanden ist, dann kann der eBusd manuell kompiliert werden. Nachfolgend werden die dafür notwendigen Schritte beschrieben.&lt;br /&gt;
&lt;br /&gt;
===Voraussetzungen===&lt;br /&gt;
Zunächst müssen die notwendigen Werkzeuge auf dem System installiert werden. Dies erfolgt mit der nachfolgenden Kommandozeile:&lt;br /&gt;
 apt-get -y install git &amp;amp;&amp;amp; apt-get -y install autoconf &amp;amp;&amp;amp; apt-get -y install automake &amp;amp;&amp;amp; apt-get -y install g++ &amp;amp;&amp;amp; apt-get -y install make&lt;br /&gt;
&lt;br /&gt;
Weiterführende Informationen findet man auch direkt im eBusd [https://github.com/john30/ebusd/wiki/1.-Build-and-install Wiki]!&lt;br /&gt;
&lt;br /&gt;
===eBusd kompilieren ===&lt;br /&gt;
&lt;br /&gt;
Nachdem alle Voraussetzungen erfüllt sind, kann der eBusd auf dem lokalen System kompiliert und installiert werden.&lt;br /&gt;
Dafür sind folgende Schritte notwendig:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;eBusd auschecken&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/john30/ebusd.git &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Den Kompilierungsvorgang starten&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 cd ebusd&lt;br /&gt;
 sudo ./autogen.sh --prefix=/usr&lt;br /&gt;
 sudo make&lt;br /&gt;
 sudo make install&lt;br /&gt;
 sudo cp contrib/debian/default/ebusd /etc/default/ebusd # Konfigurationsdatei für eBusd Startoptionen.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Vorgang kann je nach Geschwindigkeit des Systems ca. 20 Minuten dauern. &lt;br /&gt;
&lt;br /&gt;
Wurde der Vorgang erfolgreich durchgeführt, dann kann mit der folgenden Kommandozeile die Version abgefragt werden:&lt;br /&gt;
&lt;br /&gt;
 ebusd -V&lt;br /&gt;
&lt;br /&gt;
===Autostart von eBusd konfigurieren===&lt;br /&gt;
&lt;br /&gt;
Damit die Austostartroutine auch nach einem Neustart des Systems funktioniert, muss das Dämonstartfile in das entsprechende Verzeichnis kopiert werden.&lt;br /&gt;
Die Konfiguration wird mit der folgenden Kommandozeile durchgeführt:  &lt;br /&gt;
&lt;br /&gt;
 sudo cp contrib/debian/init.d/ebusd /etc/init.d/ebusd   # (Dämonstartfile kopieren)&lt;br /&gt;
&lt;br /&gt;
Der eBusd Dienst kann, wie [[#eBusd starten|hier]] beschrieben, gestartet werden.&lt;br /&gt;
&lt;br /&gt;
===eBusd Logrotate===&lt;br /&gt;
Logrotate ist ein logischer Ablauf was mit dem Logfile geschehen soll. Man kann damit das File täglich komprimieren und das 7 Tage lang, dann erst wieder beginnen es zu überschreiben. Dies ist besonders wichtig, denn sonst würde irgendwann das Logilfe bis zu einer extremen Größe anwachsen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/var/log/ebusd.log {&lt;br /&gt;
     rotate 7&lt;br /&gt;
     copytruncate&lt;br /&gt;
     compress&lt;br /&gt;
     missingok&lt;br /&gt;
     notifempty&lt;br /&gt;
     daily&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Logfile kann in &#039;&#039;&#039;/etc/logrotate.d/ebusd&#039;&#039;&#039; konfiguriert werden.&lt;br /&gt;
In diesem Beispiel wird alle 7 Tage rotiert und die Datei komprimiert, das aktuelle Tagesfile ist unkomprimiert und mit einem Editor lesbar.&lt;br /&gt;
Das Ergebnis aus der oben dargestellten Definition sieht wie folgt aus:&lt;br /&gt;
[[Datei:EBUS_Logfile_logrotate.png|thumb|left|alt=Logfile Ansicht]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Systemüberwachung=&lt;br /&gt;
&lt;br /&gt;
Aufgrund unterschiedlicher Ursachen kann es vorkommen, dass der eBus Dämon seinen Dienst einstellt. Die hätte zufolge, dass der Lese- und Schreibzugriff nicht mehr möglich wäre. Nachfolgend werden zwei Möglichkeiten beschreiben wie eine Überwachung des Systems realisiert und im Störungsfall die Funktionalität wiederhergestellt, werden kann.&lt;br /&gt;
&lt;br /&gt;
==Mithilfe von FHEM==&lt;br /&gt;
&lt;br /&gt;
In FHEM kann man ein Notify einrichten, um bei einem Verbindungsabbruch mehrere Versuche zum Reconnect durchzuführen&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
# fhem.cfg&lt;br /&gt;
define EBUS.N notify (EBUS.*DISCONNECTED.*)|(HK.Hz:A.Temp.*err) { EBUSrecover(&amp;quot;notify EBUS.N&amp;quot;,0)}&lt;br /&gt;
attr EBUS.N group deviceDetector&lt;br /&gt;
attr EBUS.N room Alarm&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das dabei aufgerufene Perl-Programm besteht nur aus wenigen Zeilen und muss in die 99_myUtils.pm kopiert/erweitert werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# 99_myUtils.pm&lt;br /&gt;
sub EBUSrecover($$)&lt;br /&gt;
{   &lt;br /&gt;
  my ($evt,$num) = @_;&lt;br /&gt;
  Log 1,&amp;quot;[EBUS] Recover triggered from $evt, attempt No. $num&amp;quot;;&lt;br /&gt;
  if(Value(&amp;quot;EBUS&amp;quot;) ne &amp;quot;opened&amp;quot;){&lt;br /&gt;
    if( $num &amp;lt; 7){&lt;br /&gt;
      $num++;&lt;br /&gt;
      fhem(&amp;quot;set EBUS reopen&amp;quot;);&lt;br /&gt;
      fhem(&amp;quot;delete EBUSrecoverdly&amp;quot;) if($defs{&amp;quot;EBUSrecoverdly&amp;quot;});&lt;br /&gt;
      fhem(&amp;quot;define EBUSrecoverdly at +00:00:05 {EBUSrecover(&#039;EBUSrecover&#039;,$num)}&amp;quot;);&lt;br /&gt;
    }else{&lt;br /&gt;
      fhem(&amp;quot;set Device.warn EBUS&amp;quot;) &lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mithilfe von Watchdog==&lt;br /&gt;
&lt;br /&gt;
Es empfiehlt sich auch, den ebusd kontinuierlich zu überwachen und ggf. neu zu starten. Mit der nachfolgenden Beschreibung wird alle 5 Sekunden die Existenz des Programms abgefragt und dieses bei einem versagenden Test neu gestartet.&lt;br /&gt;
&lt;br /&gt;
Dazu wird auf dem System nach überall erhältlichen Anleitungen der Watchdog Timer installiert und die Datei /etc/watchdog.conf mit den beiden Parametern&lt;br /&gt;
 test-timeout = 10&lt;br /&gt;
 interval     = 5&lt;br /&gt;
besetzt. Ferner wird die Datei /etc/watchdog.d/ebusd angelegt mit dem Inhalt&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
# description: watchdog helper file for ebusd  &lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
&#039;test&#039;)&lt;br /&gt;
       #--- Test for ebusd&lt;br /&gt;
       if [ -s /var/run/ebusd.pid ] ; then&lt;br /&gt;
           RUN=`ps -ef | grep ebusd.*USB0 | grep -v grep`&lt;br /&gt;
           if [ &amp;quot;$RUN&amp;quot; != &amp;quot;&amp;quot; ] ; then            &lt;br /&gt;
              #echo &amp;quot;ebusd is already running&amp;quot;&lt;br /&gt;
              exit 0&lt;br /&gt;
           else&lt;br /&gt;
              echo &amp;quot;ebusd defunct at &amp;quot;`date`&lt;br /&gt;
              exit 1    &lt;br /&gt;
           fi&lt;br /&gt;
       else&lt;br /&gt;
           echo &amp;quot;ebusd not running, return 1 at &amp;quot;`date`&lt;br /&gt;
           exit 1    &lt;br /&gt;
       fi&lt;br /&gt;
       ;;&lt;br /&gt;
&#039;repair&#039;)&lt;br /&gt;
       #-- Restarting ebusd&lt;br /&gt;
       echo &amp;quot;ebusd restarting at &amp;quot;`date`&lt;br /&gt;
       /etc/init.d/ebusd start&lt;br /&gt;
       RETVAL=$?&lt;br /&gt;
       exit 0&lt;br /&gt;
       ;;&lt;br /&gt;
*)&lt;br /&gt;
       exit 0&lt;br /&gt;
       ;;&lt;br /&gt;
esac&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Visualisierung und Steuerung=&lt;br /&gt;
&lt;br /&gt;
==Mit ECMD in FHEM==&lt;br /&gt;
Eine einfache aber sichere Anbindung des eBusd an FHEM kann mit [[ECMD]] durchgeführt werden. Es ist egal ob eBusd auf dem selben Raspberry wie FHEM läuft oder ein eigener Raspberry dafür verwendet wird. Die gezeigten Beispiele sind nur eine der Möglichkeiten die zum Ziel führen, sollen aber sicher und schnell zu den ersten Erfolgen führen.&lt;br /&gt;
&lt;br /&gt;
Eine detailierte Anleitung zur Konfiguration findet man [[EBUS-ECMD|hier in eBus ECMD]].&lt;br /&gt;
&lt;br /&gt;
==GAEBUS==&lt;br /&gt;
&lt;br /&gt;
GAEBUS ist ein Perl Modul welches es in FHEM ermöglicht sämtliche Daten des eBus bequem zu konfigurieren.&lt;br /&gt;
Das Protokoll ist ebenso wie bei ECMD Telnet, aber die Einrichtung unterscheidet sich sehr stark und wird von den meisten Anwendern einfacher empfunden. Allerdings ist im derzeitigen Entwicklungsstand der GAEBUS noch nicht so flexibel wie ECMD. Das betrifft vor allem die Datenfilterung und Datenformatierung.&lt;br /&gt;
&lt;br /&gt;
Eine genaue Installations- und Einrichtungsanleitung kann aus diesem {{Link2Forum|Topic=46098|Message=381580|LinkText=Forums-Thread}} entnommen werden.&lt;br /&gt;
&lt;br /&gt;
Den Diskussionsthread des Autors findet man {{Link2Forum|Topic=41064|Message=332654|LinkText=hier}}.&lt;br /&gt;
&lt;br /&gt;
==FHEM Tablet UI (FTUI)==&lt;br /&gt;
&lt;br /&gt;
Die [http://forum.fhem.de/index.php/board,71.0.html Tablet-UI] ist ein ansprechendes HTML Frontend welches durch intensive Betreuung des Autors sehr gepflegt wird. Mit sogenannten Widgets kann hier auch für ungeübte schnell ein optisch ansprechendes Ergebnis erzielt werden. Die Tablet-UI stellt mit ihren Widgets direkt die Verbindung zu den Readings in FHEM her. Alle Messwerte die hier dargestellt werden sollen, müssen daher vorher in FHEM bereits definiert werden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:EBUSD_FTUI.png|thumb|left|alt=eBus Platine]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der komplette Demo-Code der abgebildeten Seite kann hier downgeloadet werden: {{Link2Forum|Topic=46098|Message=383071|LinkText=Tablet-UI}}&lt;br /&gt;
&lt;br /&gt;
=Tipps &amp;amp; Tricks=&lt;br /&gt;
&lt;br /&gt;
==eBusd Bedeutung der Telegramme==&lt;br /&gt;
&lt;br /&gt;
Der ebusd wird entweder über &#039;&#039;ebusctl&#039;&#039; oder über &#039;&#039;telnet&#039;&#039; durch Klartextkommandos abgefragt, die lauten z.B. &#039;&#039;read -c broadcast outsidetemp&#039;&#039;.&lt;br /&gt;
*In CSV-Dateien in /etc/ebusd wird festgelegt, in welche bzw. aus welcher binären Folge ein Kommando übersetzt wird. Konkret handelt es sich z.B. bei &#039;&#039;read -c broadcast outsidetemp&#039;&#039; um die Außentemperatur, die im Heizungssystem zyklisch als Broadcast gesendet wird und vom ebusd einfach mitgelesen wird.&lt;br /&gt;
*Für unterschiedliche Heizungssysteme werden unterschiedliche CSV-Dateien benötigt. &lt;br /&gt;
Für die Übersetzung der binären Daten in den Klartext ist es notwendig die entsprechenden Konfigurationsdateien(CSV-Files) zu installieren.&lt;br /&gt;
Den aktuellen Stand dieser Dateien findet ihr im [https://github.com/john30/ebusd-configuration/releases GIT von John].&lt;br /&gt;
&lt;br /&gt;
Desweiteren kann der eBusd gestartet werden, und zwar mit den Optionen -f (läuft im Vordergrund) und --loglevel debug (alles wird geloggt). Diese Optionen produzieren Unmengen an Daten und damit werden auch alle empfangenen Telegramme protokolliert, z.B.  &lt;br /&gt;
 10feb5160301f00d44&lt;br /&gt;
Hierin bedeutet&lt;br /&gt;
{|&lt;br /&gt;
|Byte&lt;br /&gt;
|Bedeutung&lt;br /&gt;
|hier&lt;br /&gt;
|-&lt;br /&gt;
|0x10&lt;br /&gt;
|Adresse des Senders&lt;br /&gt;
|Zentrale&lt;br /&gt;
|-&lt;br /&gt;
|0xfe&lt;br /&gt;
|Adresse des Empfängers&lt;br /&gt;
|Alle Geräte&lt;br /&gt;
|-&lt;br /&gt;
|0xb5&lt;br /&gt;
|Herstellercode&lt;br /&gt;
|Vaillant&lt;br /&gt;
|-&lt;br /&gt;
|0x16&lt;br /&gt;
|Klasse des Kommandos&lt;br /&gt;
|Broadcast&lt;br /&gt;
|-&lt;br /&gt;
|0x03&lt;br /&gt;
|Anzahl Datenbytes&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|0x01&lt;br /&gt;
|Bedeutung des Wertes&lt;br /&gt;
|outsidetemp = Außentemperatur&lt;br /&gt;
|-&lt;br /&gt;
|0xf0&lt;br /&gt;
|LSB des Wertes&lt;br /&gt;
|240&lt;br /&gt;
|-&lt;br /&gt;
|0x0d&lt;br /&gt;
|MSB des Wertes&lt;br /&gt;
|12&lt;br /&gt;
|-&lt;br /&gt;
|0x44&lt;br /&gt;
|CRC&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
Damit ergibt sich in diesem Falle eine Außentemperatur von (12*256 + 240)/256 = 12,9375 Grad Celsius. In der zugehörigen CSV-Datei wird dem ebusd diese Übersetzung mitgeteilt durch eine Zeile der Form&lt;br /&gt;
 u,broadcast,outsidetemp,Außentemperatur,,FE,B516,01,temp2,m,D2B,,°C,Temperatur&lt;br /&gt;
Diese CSV-Dateien können z.B. mit OpenOffice aus einem Spreadsheet generiert werden, indem dieses als CSV-Datei mit Separator &amp;quot;,&amp;quot; gespeichert wird. &lt;br /&gt;
*Bei einem vollkommen unbekannten Heizungssystem sollte man den Hersteller fragen, welche Codes er verwendet&lt;br /&gt;
*Für Vaillant- und Wolf- Heizungssysteme liegen in dem oben genannten Verzeichnis ein paar Beispiele vor, die man als Ausgangspunkt nehmen kann.&lt;br /&gt;
&lt;br /&gt;
==Serieller Konverter==&lt;br /&gt;
&lt;br /&gt;
[[Datei:EBUS_RS232_Konverter.png|thumb|left|alt=eBus Platine]]&lt;br /&gt;
Es hat sich als nicht praktikabel erwiesen, den eBus mit einem Pegelwandler direkt an den seriellen GPIO-Port des Raspberry Pi anzuschließen. Die ständig einlaufenden Synchronisationssignale auf dem eBus, sowie die interne Verarbeitung der GPIO-Signale im Raspberry führen zu einer intolerablen Latenz, d.h., die eBus-Signale kommen verspätet bei der Software eBusd an (bis zu 90 Minuten wurden beobachtet). Stattdessen sollte grundsätzlich ein Seriell-USB-Konverter verwendet werden und der Raspberry Pi über einen USB-Port mit dem eBus verbunden werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==USB Device und Port unter Linux ermitteln==&lt;br /&gt;
&lt;br /&gt;
Die einfachste Art den USB Device zu ermitteln erfolgt direkt am Raspberry Pi mit dem Befehl &amp;quot;lsusb&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 pi@raspberry2 ~ $ lsusb&lt;br /&gt;
 Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.&lt;br /&gt;
 Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub&lt;br /&gt;
 Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.&lt;br /&gt;
 Bus 001 Device 004: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC&lt;br /&gt;
&lt;br /&gt;
in diesem Beispiel ist das der Device 004, dieser FT232 lauscht am eBus und ist mit dem eBus-Konverter verbunden.&lt;br /&gt;
&lt;br /&gt;
Der USB Port kann mit der folgenden Kommandozeile ermittelt werden:&lt;br /&gt;
 sudo dmesg | grep -i tty&lt;br /&gt;
Die Ausgabe sieht wie folgt aus:&lt;br /&gt;
 [553999.530995] usb 1-1.3: FTDI USB Serial Device converter now attached to &#039;&#039;&#039;ttyUSB0&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==eBusd==&lt;br /&gt;
===Prüfen der eBusd Konfigurationsdateien===&lt;br /&gt;
Mit dem Parameter &amp;quot;&#039;&#039;&#039;--checkconfig --scanconfig&#039;&#039;&#039;&amp;quot; kann die Installation der benutzten CSV Dateien am Raspberyy Pi überprüft werden. Vor allem wird hier angezeigt wieviele Messages übersetzt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
pi@raspberry2 ~ $ ebusd --checkconfig --scanconfig&lt;br /&gt;
2016-01-22 17:14:12.619 [main notice] Performing configuration check...&lt;br /&gt;
2016-01-22 17:14:19.336 [main notice] found messages: 4440 (416 conditional on 89 conditions, 2 poll, 64 update)&lt;br /&gt;
&lt;br /&gt;
pi@raspberry2 ~ $ ebusctl info&lt;br /&gt;
version: ebusd 2.0.0ea7efc&lt;br /&gt;
signal: acquired&lt;br /&gt;
symbol rate: 24&lt;br /&gt;
masters: 3&lt;br /&gt;
messages: 426&lt;br /&gt;
address 03: master #3&lt;br /&gt;
address 08: slave #3, scanned &amp;quot;MF=Vaillant;ID=BAI00;SW=0518;HW=7401&amp;quot;, loaded  &amp;quot;vaillant/08.bai.HW7401.csv&amp;quot;&lt;br /&gt;
address 10: master #6&lt;br /&gt;
address 15: slave #6, scanned &amp;quot;MF=Vaillant;ID=43000;SW=0215;HW=2002&amp;quot;, loaded &amp;quot;vaillant/15.430.csv&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Info hingegen zeigt genau welche CSV Dateien geladen worden sind und ihre Soft- und Hardewareversion.&lt;br /&gt;
&lt;br /&gt;
===Bedeutung von &amp;quot;unknown MS&amp;quot; in der eBusd Logdatei===&lt;br /&gt;
Der Autor des eBus Dämons ist ständig bemüht die Geräte der unterschiedlichen Hersteller alle zu erfassen und so die Konfigurationsdateien zu ergänzen. Je nach Hard- und Softwarekonfiguration können  Broadcast Meldungen vom eBus kommen die in der _broadcast.csv noch nicht übersetzt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
2015-12-30 21:48:57.662 [update notice] unknown MS cmd: 1008b5110101 / 09404210004a620000ff&lt;br /&gt;
2015-12-30 21:48:59.670 [update notice] unknown BC cmd: 10feb516080001492130120315&lt;br /&gt;
2015-12-30 21:48:59.923 [update notice] unknown MS cmd: 1008b512020064 / 00&lt;br /&gt;
2015-12-30 21:49:01.711 [update notice] unknown MS cmd: 1008b5100900003c7affff00ff00 / 0101&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Meldungen haben in der Regel für den weiteren Verlauf der Kommunikation über den eBus keinen Einfluß und ist keine Fehlfunktion der Schaltung oder Platine!&lt;br /&gt;
&lt;br /&gt;
===Bedeutung von &amp;quot;signal lost&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
pi@raspberrypi /etc/init.d $ sudo ebusd -f -c /tmp --logareas bus --loglevel info -d /dev/ttyUSB0&lt;br /&gt;
2016-01-18 22:38:56.348 [bus notice] signal acquired&lt;br /&gt;
2016-01-18 22:38:56.477 [bus notice] new master 10, master count 2&lt;br /&gt;
2016-01-18 22:38:56.481 [bus notice] new master 3f, master count 3&lt;br /&gt;
2016-01-18 22:39:02.051 [bus error] signal lost&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei dieser Meldung verliert der USB Konverter nach 20-Sekunden die Verbindung zum Raspberry Pi und produziert dann den Logeintrag.&lt;br /&gt;
{{Link2Forum|Topic=46098|Message=394313|LinkText=Lösungvorschlag}}&lt;br /&gt;
&lt;br /&gt;
===ERR: unable to load===&lt;br /&gt;
&lt;br /&gt;
 2016-01-17 19:04:03.961 [main error] unable to load scan config 08: no file from /etc/ebusd/vaillant with prefix 08. matches ID &amp;quot;bai00&amp;quot;, SW0604, HW5502&lt;br /&gt;
&lt;br /&gt;
Ebusd wird gestartet, findet aber ein Konfigurations File (CSV) nicht.&lt;br /&gt;
&lt;br /&gt;
Die eBusd Konfigurationsdateien könne nach [[#eBusd Konfigurationsdateien (CSV-Files)|diesem]] Vorgehen installiert werden.&lt;br /&gt;
Die Konfigurationsdateien aus dem Git neu laden und installieren.&lt;br /&gt;
{{Link2Forum|Topic=46098|Message=394270|LinkText=Lösungvorschlag}}&lt;br /&gt;
&lt;br /&gt;
===ERR: duplicate Entry===&lt;br /&gt;
&lt;br /&gt;
===ERR: End of input reached===&lt;br /&gt;
&lt;br /&gt;
Die CSV Dateien wurden [http://forum.fhem.de/index.php/topic,46098.msg383450/topicseen.html#msg383450 fehlerhaft installiert] oder sind defekt!&lt;br /&gt;
Eine Neuinstallation dieser Dateien ist erforderlich!&lt;br /&gt;
&lt;br /&gt;
 Error reading &amp;quot;/etc/ebusd/vaillant/05.vd3.csv&amp;quot; line 1 field 1 value &amp;quot;05.vd4.csv&amp;quot;: ERR: end of input reached&lt;br /&gt;
 Erroneous item is here:&lt;br /&gt;
 05.vd4.csv&lt;br /&gt;
  ^&lt;br /&gt;
 Error reading &amp;quot;/etc/ebusd/vaillant/15.hep.csv&amp;quot; line 1 field 1 value &amp;quot;15.sdr_p.csv&amp;quot;: ERR: end of input reached&lt;br /&gt;
 Erroneous item is here:&lt;br /&gt;
 15.sdr_p.csv&lt;br /&gt;
  ^&lt;br /&gt;
&lt;br /&gt;
===BUS ERR send to 15===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
2016-01-16 19:20:28.575 [bus notice] new master 03, master count 4&lt;br /&gt;
2016-01-16 19:20:28.575 [update notice] unknown MS cmd: 1008b513020508 / 00&lt;br /&gt;
2016-01-16 19:20:29.413 [update notice] unknown MS cmd: 100ab504010d / 054201008037&lt;br /&gt;
2016-01-16 19:20:32.398 [bus error] send to 08: ERR: read timeout, retry&lt;br /&gt;
2016-01-16 19:20:33.005 [bus error] send to 08: ERR: read timeout, retry&lt;br /&gt;
2016-01-16 19:20:33.613 [bus error] send to 08: ERR: read timeout, retry&lt;br /&gt;
2016-01-16 19:20:34.859 [bus error] send to 08: ERR: read timeout&lt;br /&gt;
2016-01-16 19:20:34.859 [main error] scan config 08 message: ERR: read timeout&lt;br /&gt;
2016-01-16 19:20:37.017 [main notice] read common config file /etc/ebusd/vaillant/scan.csv&lt;br /&gt;
2016-01-16 19:20:37.019 [main notice] read common config file /etc/ebusd/vaillant/broadcast.csv&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Fehlermeldung (read timeout) kann verschiedene Ursachen haben, meist liegt der Fehler in einer fehlerhaften Verkabelung.&lt;br /&gt;
{{Link2Forum|Topic=46098|Message=393547|LinkText=Lösungsvorschlag}}&lt;br /&gt;
&lt;br /&gt;
=Systemarchitektur / Systemdesign=&lt;br /&gt;
Es muss sich jeder vorher überlegen, ob man für den eBus einen eigenen Rechner Raspberry Pi nimmt, oder auf der bestehenden FHEM Installation laufen lassen will. Eine Trennung bietet mehrere Vorteile die dann speziell im Testbetrieb den normalen Smart-Home Betrieb nicht beinflussen.&lt;br /&gt;
[[Datei:EBUS_Konfiguration.png|thumb|left|alt=eBus Konfiguration]]&lt;br /&gt;
Hier eine Konfiguration von FHEM und das Zusammenspiel mit eBusd via ECMD. Das soll aber jeder so handhaben wie es am Besten in das eigene Konzept passt.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Werkzeuge / Tools=&lt;br /&gt;
&lt;br /&gt;
==PSPad==&lt;br /&gt;
[http://www.pspad.com/de/ Pspad] ist ein besonders auf Programmierer zugeschnittener unicode-fähiger Editor für Microsoft Windows, welcher in der Lage ist auch per FTP die Dateien direkt zu editieren und zu schreiben ohne den Umweg sie vorher kopieren zu müssen! Besonders wichtig ist neben einem Syntaxhighlighter das er Linuxkonform ist und die Steuerzeichen am Zeilenende richtig interpretiert.&lt;br /&gt;
&lt;br /&gt;
Hier zwei wichtige Infos zur Einrichtung des PSPad.&lt;br /&gt;
&lt;br /&gt;
[[Datei:EBUS_PSPad_FTP.png|thumb|left|alt=eBus Platine]]&lt;br /&gt;
&lt;br /&gt;
Im Tab &amp;quot;&#039;&#039;&#039;FTP&#039;&#039;&#039;&amp;quot; unten mit der rechten Maustaste auf die weiße Fläche klicken und in dem neu geöffneten Fenster &amp;quot;FTP verbinden&amp;quot; wählen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:EBUS_PSPad_FTP2.png|thumb|left|alt=eBus Platine]]&lt;br /&gt;
Es öffnet sich ein Fenster mit den Verbindungsdaten des FTP Servers. Nicht vergessen, das unten markierte Häckchen &amp;quot;&#039;&#039;&#039;Verbindung halten&#039;&#039;&#039; ...&amp;quot; zu markieren. Es wird dann alle 60 Sekunden ein NOOP Signal gesendet und die Verbindung wird nach einem Timeout nicht jedes Mal beendet.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Filezilla==&lt;br /&gt;
Ebenso wie PSPad wird es für viele Arbeiten am Raspberry und eBusd eine Erleichterung sein manche Dateien direkt zu kopieren oder am PC zu sichern.&lt;br /&gt;
[https://filezilla-project.org/ Filezilla] beherrscht ebenfalls das &#039;&#039;&#039;FTP Protokoll&#039;&#039;&#039; und speichert die Verbindungsdaten in einem Profil.&lt;br /&gt;
&lt;br /&gt;
[[Datei:EBUS_Filezilla_FTP.png|thumb|left|alt=eBus Platine]]&lt;br /&gt;
Links oben öffnet man den Servermanager und wählt (links unten) &amp;quot;neuer Server&amp;quot;. Man gibt die Verbindungsdaten des Raspberry ein und drückt &amp;quot;speichern&amp;quot;. Das Verbindungs Profil steht nun im Servermanager als &amp;quot;Raspberry&amp;quot; zur Verfügung und die Verbindung kann nun mit einem Doppelklick geöffnet werden. Dateien können nun durch einfaches Drag &amp;amp; Drop zwischen linken (lokales Laufwerk am PC) und rechten Dateifenster (in diesem Fall Raspberry) bequem kopiert werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Putty==&lt;br /&gt;
[http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html PuTTY] ist ein SSH Client welcher neben Secure Shell auch Telnet, Remote login und eine serielle Schnittstelle enthält. Als Tipp sei hier erwähnt, dass hier einige sehr nützliche Features zur Verfügung stehen:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;rechte Maustaste&#039;&#039;&#039; = Zwischenablage wird ins Terminalfenster kopiert &lt;br /&gt;
* &#039;&#039;&#039;Text mit Maus markieren&#039;&#039;&#039; = in Zwischenablage kopieren&lt;br /&gt;
* &#039;&#039;&#039;Pfeiltasten Auf/Ab&#039;&#039;&#039; = die letzten Befehle wiederholen, durch die Liste steppen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:EBUS_Putty.png|thumb|left|alt=eBus Platine]]&lt;br /&gt;
Ebenso können mit Putty mehrere Terminalfenster parallel geöffnet werden. Diese Methode ist bei der Kalibrierung des Potis im Raw-Modus sehr von Vorteil.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Weiterführende Links=&lt;br /&gt;
Diskussionsthread aus dem Forum:&lt;br /&gt;
*{{Link2Forum|Topic=46098|LinkText=eBus Schaltung in Betrieb nehmen!}}&lt;br /&gt;
*{{Link2Forum|Topic=29737|LinkText=Läuft: Heizung mit eBus-Schnittstelle}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:Heizungssteuerung]]&lt;br /&gt;
[[Kategorie:Interfaces]]&lt;/div&gt;</summary>
		<author><name>Reinhart</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=EBUS-ECMD&amp;diff=29857</id>
		<title>EBUS-ECMD</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=EBUS-ECMD&amp;diff=29857"/>
		<updated>2019-03-12T10:51:45Z</updated>

		<summary type="html">&lt;p&gt;Reinhart: ebus Konfiguration von ECMD zur besseren Übersicht ausgegliedert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Ebus ECMD ==&lt;br /&gt;
Eine einfache aber sichere Anbindung des eBusd an FHEM kann mit [[ECMD]] durchgeführt werden. Es ist egal ob eBusd auf dem selben Raspberry wie FHEM läuft oder ein eigener Raspberry dafür verwendet wird. Die gezeigten Beispiele sind nur eine der Möglichkeiten die zum Ziel führen, sollen aber sicher und schnell zu den ersten Erfolgen führen.&lt;br /&gt;
&lt;br /&gt;
===ECMD in FHEM aktivieren===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
# fhem.cfg&lt;br /&gt;
define EBUS ECMD telnet &#039;&#039;&#039;ip-raspi-ebusd&#039;&#039;&#039;:8888   # IP Adresse ebusd einsetzen!!!&lt;br /&gt;
attr EBUS classdefs bai00.class=/opt/fhem/FHEM/bai00.cfg&lt;br /&gt;
attr EBUS icon usb&lt;br /&gt;
attr EBUS requestSeparator 000&lt;br /&gt;
attr EBUS room Vaillant&lt;br /&gt;
&lt;br /&gt;
# Die Definition von ECMD, &amp;quot;ip-raspi-ebusd&amp;quot; muss durch die IP-Adresse ersetzt werden. Beispiel:&lt;br /&gt;
define EBUS ECMD telnet 192.168.0.10:8888&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Die Kommunikation erfolgt über Telnet und  8888 ist das Port über welches kommuniziert werden soll.&lt;br /&gt;
&lt;br /&gt;
===ECMD Devices definieren===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
# fhem.cfg&lt;br /&gt;
define Vorlauf ECMDDevice bai00.class&lt;br /&gt;
attr Vorlauf IODev EBUS&lt;br /&gt;
attr Vorlauf group Vaillant&lt;br /&gt;
attr Vorlauf icon sani_supply_temp&lt;br /&gt;
attr Vorlauf room Vaillant&lt;br /&gt;
&lt;br /&gt;
define Ruecklauf ECMDDevice bai00.class&lt;br /&gt;
attr Ruecklauf IODev EBUS&lt;br /&gt;
attr Ruecklauf group Vaillant&lt;br /&gt;
attr Ruecklauf icon sani_return_temp&lt;br /&gt;
attr Ruecklauf room Vaillant&lt;br /&gt;
&lt;br /&gt;
define PumpeWatt ECMDDevice bai00.class&lt;br /&gt;
attr PumpeWatt IODev EBUS&lt;br /&gt;
attr PumpeWatt group Vaillant&lt;br /&gt;
attr PumpeWatt icon measure_power&lt;br /&gt;
attr PumpeWatt room Vaillant&lt;br /&gt;
&lt;br /&gt;
define Fanspeed ECMDDevice bai00.class&lt;br /&gt;
attr Fanspeed IODev EBUS&lt;br /&gt;
attr Fanspeed group Vaillant&lt;br /&gt;
attr Fanspeed icon vent_ventilation_level_automatic&lt;br /&gt;
attr Fanspeed room Vaillant&lt;br /&gt;
&lt;br /&gt;
define HKurve ECMDDevice bai00.class&lt;br /&gt;
attr HKurve IODev EBUS&lt;br /&gt;
attr HKurve group Vaillant&lt;br /&gt;
attr HKurve icon temp_control&lt;br /&gt;
attr HKurve room Vaillant&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Jeder Messwert der von eBusd abgefragt werden soll, muss dazu ein ECMDDevice erstellt werden. Hier ein paar Beispiele mit Vorlauf, Rücklauf, Leistung der Pumpe, Ventilatorgeschwindigkeit und der Heizkurve.&lt;br /&gt;
&lt;br /&gt;
[[Datei:EBUS_Daten_Heizung.png|thumb|left|alt=EBUS-USB Interface]]&lt;br /&gt;
Zu jedem ECMDDevice muss es eine Classdefinition in der bai00.cfg geben. Der Name &amp;quot;bai00.cfg&amp;quot; ist frei gewählt und wird in diesen Beispielen verwendet.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ECMD Classdefinition===&lt;br /&gt;
&lt;br /&gt;
Um eine Klasse zu definieren muss der dazu benötigte Code in eine eigene Datei (hier bai00.cfg) geschrieben werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
################## bai00.cfg ###############&lt;br /&gt;
# &lt;br /&gt;
#!/usr/bin/perl&lt;br /&gt;
# Aussentemperatur&lt;br /&gt;
get Aussentemp cmd {&amp;quot;r -f outsidetemp temp\n&amp;quot;}&lt;br /&gt;
get Aussentemp expect &amp;quot;.*\n*&amp;quot;&lt;br /&gt;
get Aussentemp postproc { $_ }&lt;br /&gt;
#&lt;br /&gt;
# vorlauftemperatur&lt;br /&gt;
get Vorlauf cmd {&amp;quot;r -m 10 status01 temp1.0\n&amp;quot;}&lt;br /&gt;
get Vorlauf expect &amp;quot;\d+\.\d+\n\n&amp;quot;&lt;br /&gt;
get Vorlauf postproc { sprintf(&amp;quot;%5.1f&amp;quot;,$_) }&lt;br /&gt;
#&lt;br /&gt;
# Ruecklauftemperatur&lt;br /&gt;
get Ruecklauf cmd {&amp;quot;r -m 10 status01 temp1.1\n&amp;quot;}&lt;br /&gt;
get Ruecklauf expect &amp;quot;\d+\.\d+\n\n&amp;quot;&lt;br /&gt;
get Ruecklauf postproc { sprintf(&amp;quot;%5.1f&amp;quot;,$_) }&lt;br /&gt;
#&lt;br /&gt;
# Pumpenleistung&lt;br /&gt;
get PumpeWatt cmd {&amp;quot;r -f PumpPower\n&amp;quot;}&lt;br /&gt;
get PumpeWatt expect &amp;quot;\d+\n\n&amp;quot;&lt;br /&gt;
get PumpeWatt postproc { sprintf(&amp;quot;%5.0f&amp;quot;,$_) }&lt;br /&gt;
#&lt;br /&gt;
# Fanspeed&lt;br /&gt;
get Fanspeed cmd {&amp;quot;r -f SDFanSpeed\n&amp;quot;}&lt;br /&gt;
get Fanspeed expect &amp;quot;\d+\n\n&amp;quot;&lt;br /&gt;
get Fanspeed postproc { sprintf(&amp;quot;%5.0f&amp;quot;,$_) }  &lt;br /&gt;
#&lt;br /&gt;
# Heizkurve lesen&lt;br /&gt;
get HKurve cmd {&amp;quot;r -f Hc1HeatCurve\n&amp;quot;}&lt;br /&gt;
get HKurve expect &amp;quot;\d+\.\d+\n&amp;quot;&lt;br /&gt;
get HKurve postproc { sprintf(&amp;quot;%3.1f&amp;quot;,$_) }&lt;br /&gt;
#&lt;br /&gt;
# HeizkurveSchreiben&lt;br /&gt;
get HeizkurveSchreiben cmd {&amp;quot;write 430 Hc1HeatCurve &amp;quot;.Value(&amp;quot;HeizkurveEinstellen&amp;quot;).&amp;quot;\n&amp;quot;}&lt;br /&gt;
get HeizkurveSchreiben expect &amp;quot;.*\n\n&amp;quot;&lt;br /&gt;
get HeizkurveSchreiben postproc  { $_ } &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für jeden Device wird hier festgelegt wie die Befehls Syntax der Abfrage auszusehen hat (cmd) und wie die Ergebnisse zu filtern sind (expect), wie soll das Ausgabeformat sein (postproc). Diese Definitionen bitte in einer neuen Datei &amp;quot;bai00.cfg&amp;quot; speichern.&lt;br /&gt;
&lt;br /&gt;
===ECMD Zyklische Abfrage===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
# Abfrage Timersteuerung, fhem.cfg&lt;br /&gt;
define EBUS.Timer at +*00:15:00 get Aussentemp Aussentemp;;get Vorlauf Vorlauf;;get Ruecklauf Ruecklauf;;get PumpeWatt PumpeWatt;get Fanspeed Fanspeed;;get PumpeWatt PumpeWatt;;get HKurve HKurve&lt;br /&gt;
attr EBUS.Timer group VaillantControl&lt;br /&gt;
attr EBUS.Timer icon time_timer&lt;br /&gt;
attr EBUS.Timer room Vaillant&lt;br /&gt;
attr EBUS.Timer verbose 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um die Daten auch zyklisch vom eBus abholen zu können, wird ein Timer gesetzt. Hier wird alle 15 Minuten abgefragt.&lt;br /&gt;
Tipp: unwichtige Daten wie Druck oder irgendwelche Zähler definiert man in einem zweiten Timer, welcher dann zB. auf 1 Stunde getriggert wird. So wird die Häufigkeit des Zugriffs auf den eBus entlastet.&lt;br /&gt;
&lt;br /&gt;
===ECMD Solar, Warmwasser und Heizkreis===&lt;br /&gt;
&lt;br /&gt;
====ECMD Beispiel Solar====&lt;br /&gt;
Im nachfolgenden Beispiel wird der EBUS über das Modul ECMD angebunden und mit drei Klassen von Kommandos versehen. IP Adresse ist jene des Device wo der eBusd läuft. &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
define EBUS ECMD telnet 192.168.0.192:8888&lt;br /&gt;
attr EBUS classdefs HK.SOL.class=/opt/fhem/FHEM/ebus_solar.cfg:HK.WW.class=/opt/fhem/FHEM/ebus_ww.cfg:HK.Hz.class=/opt/fhem/FHEM/ebus_hz.cfg&lt;br /&gt;
attr EBUS room System&lt;br /&gt;
#--&lt;br /&gt;
define HK.Hz ECMDDevice HK.Hz.class&lt;br /&gt;
attr HK.Hz IODev EBUS&lt;br /&gt;
attr HK.Hz group heating&lt;br /&gt;
attr HK.Hz room Verbrauch&lt;br /&gt;
#--&lt;br /&gt;
define HK.WW ECMDDevice HK.WW.class&lt;br /&gt;
attr HK.WW IODev EBUS&lt;br /&gt;
attr HK.WW group heating&lt;br /&gt;
attr HK.WW room Verbrauch&lt;br /&gt;
#--&lt;br /&gt;
define HK.SOL ECMDDevice HK.SOL.class&lt;br /&gt;
attr HK.SOL IODev EBUS&lt;br /&gt;
attr HK.SOL group solarGenerator&lt;br /&gt;
attr HK.SOL room Solaranlage&lt;br /&gt;
#--&lt;br /&gt;
# Diese drei Klassen werden als separate Files mit den in der EBUS-Definition stehenden Dateinamen &#039;&#039;ebus_hz.cfg&#039;&#039;, &#039;&#039;ebus_ww.cfg&#039;&#039; sowie &#039;&#039;ebus_solar.cfg&#039;&#039; angelegt. Alle drei ECMD-Devices werden nun zyklisch (z.B. jede Minute) abgefragt mit&lt;br /&gt;
define EBUS.Timer at +*00:01:00 get HK.Hz A.Temp;;get HK.Hz state;;get HK.WW state;;get HK.SOL state&lt;br /&gt;
attr EBUS.Timer group heatingControl&lt;br /&gt;
attr EBUS.Timer room Verbrauch&lt;br /&gt;
attr EBUS.Timer verbose 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====ECMD Classdefinition Heizkreis====&lt;br /&gt;
Die erste Datei definiert die FHEM-Readings für die Abfrage von Außentemperatur und Heizkreis:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# Außentemperatur&lt;br /&gt;
get A.Temp cmd {&amp;quot;cyc broad temp\n&amp;quot;}&lt;br /&gt;
get A.Temp expect &amp;quot;.*&amp;quot;&lt;br /&gt;
get A.Temp postproc { my $rval;\&lt;br /&gt;
 if(($_ eq &amp;quot;&amp;quot;)||($_ eq &amp;quot;no data stored&amp;quot;) ){\&lt;br /&gt;
   $rval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
 }else{\&lt;br /&gt;
   $rval=sprintf(&amp;quot;%5.2f °C&amp;quot;,$_);\&lt;br /&gt;
 }\&lt;br /&gt;
$rval; }&lt;br /&gt;
# Heizkeis HK1&lt;br /&gt;
get state cmd {&amp;quot;cyc mv HK1_temp\n&amp;quot;}&lt;br /&gt;
get state expect &amp;quot;.*&amp;quot;&lt;br /&gt;
get state postproc { my ($bval,$rval,$tval,$pval,$qval,$sval,$xval,$zval);\&lt;br /&gt;
my $hash  = $defs{&amp;quot;%NAME&amp;quot;};\&lt;br /&gt;
 if( ($_ eq &amp;quot;&amp;quot;)||($_ eq &amp;quot;no data stored&amp;quot;) ){\&lt;br /&gt;
    $bval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    $rval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    $tval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    $pval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    $qval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    $sval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    $xval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    $zval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
 }else{\&lt;br /&gt;
    my @values=split(&#039; &#039;,$_);\&lt;br /&gt;
    if( $values[0] &amp;lt; 15 ){\&lt;br /&gt;
       $bval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
       $rval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
       $tval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
       $pval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
       $qval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
       $sval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
       $xval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
       $zval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    } else { \&lt;br /&gt;
       $bval = HzBedarf();\&lt;br /&gt;
       $rval = sprintf(&amp;quot;%5.2f °C&amp;quot;,$values[0]);\&lt;br /&gt;
       $tval = sprintf(&amp;quot;%5.2f °C&amp;quot;,$values[1]);\&lt;br /&gt;
       if( $values[2] == 0 ){\&lt;br /&gt;
          $pval = &amp;quot;OFF&amp;quot;;\&lt;br /&gt;
          $qval = &amp;quot;0 0&amp;quot;;\&lt;br /&gt;
       }elsif( $values[2] == 1 ){\&lt;br /&gt;
          $pval = &amp;quot;ON (HK)&amp;quot;;\&lt;br /&gt;
          $qval = &amp;quot;80 0&amp;quot;;\&lt;br /&gt;
       }elsif( $values[2] == 2 ){\&lt;br /&gt;
          $pval = &amp;quot;ON (WW)&amp;quot;;\&lt;br /&gt;
          $qval = &amp;quot;0 80&amp;quot;;\&lt;br /&gt;
       }else{\&lt;br /&gt;
          $pval = &amp;quot;unknown&amp;quot;;\&lt;br /&gt;
          $qval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
       }\&lt;br /&gt;
       $sval = sprintf(&amp;quot;%d&amp;quot;,$values[2]);\&lt;br /&gt;
       $xval = sprintf(&amp;quot;%5.2f %5.2f %s %5.2f&amp;quot;,\&lt;br /&gt;
         $values[0],$values[1],$qval,$bval);\&lt;br /&gt;
       $zval = sprintf(&amp;quot;VL.T %5.2f °C, RL.T %5.2f °C, %s&amp;quot;,\&lt;br /&gt;
         $values[0],$values[1],$pval);\&lt;br /&gt;
    }\&lt;br /&gt;
  }\&lt;br /&gt;
readingsSingleUpdate($hash, &amp;quot;VL.T&amp;quot;, $rval, 1);\&lt;br /&gt;
readingsSingleUpdate($hash, &amp;quot;RL.T&amp;quot;, $tval, 1);\&lt;br /&gt;
readingsSingleUpdate($hash, &amp;quot;Pumpe&amp;quot;, $pval, 1); \&lt;br /&gt;
readingsSingleUpdate($hash, &amp;quot;Pumpe.P&amp;quot;, $qval, 1); \&lt;br /&gt;
readingsSingleUpdate($hash, &amp;quot;Bedarf&amp;quot;, $bval, 1); \&lt;br /&gt;
readingsSingleUpdate($hash, &amp;quot;Status&amp;quot;, $sval, 1);\&lt;br /&gt;
readingsSingleUpdate($hash, &amp;quot;reading&amp;quot;, $xval, 1);\&lt;br /&gt;
$zval; }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====ECMD Classdefinition Warmwasserkreis====&lt;br /&gt;
Die zweite Datei definiert die FHEM-Readings für den Warmwasserkreis:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# Warmwasserkreis&lt;br /&gt;
get state cmd {&amp;quot;cyc broad getstatus_WW\n&amp;quot;}&lt;br /&gt;
get state expect &amp;quot;.*&amp;quot;&lt;br /&gt;
get state postproc { my ($rval,$tval,$bval,$pval,$xval,$zval);\&lt;br /&gt;
my $hash  = $defs{&amp;quot;%NAME&amp;quot;};\&lt;br /&gt;
 if( ($_ eq &amp;quot;&amp;quot;)||($_ eq &amp;quot;no data stored&amp;quot;) ){\&lt;br /&gt;
    $rval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    $tval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    $bval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    $pval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    $xval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    $zval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
 }else{\&lt;br /&gt;
    my @values=split(&#039; &#039;,$_);\&lt;br /&gt;
    if( $values[1] &amp;lt; 15 ){\&lt;br /&gt;
       $rval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
       $tval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
       $bval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
       $pval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
       $xval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
       $zval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    }else {\&lt;br /&gt;
       $rval = sprintf(&amp;quot;%5.2f °C&amp;quot;,$values[0]);\&lt;br /&gt;
       $tval = sprintf(&amp;quot;%5.2f °C&amp;quot;,$values[1]);\&lt;br /&gt;
       $bval = ($values[2] == 80) ? &amp;quot;ON (WW)&amp;quot; : &amp;quot;OFF&amp;quot;;\&lt;br /&gt;
       $pval = ($values[3] == 1) ? &amp;quot;ON&amp;quot; : &amp;quot;OFF&amp;quot;;\&lt;br /&gt;
       $xval = sprintf(&amp;quot;%5.2f %5.2f %5.2f %d %d&amp;quot;,\&lt;br /&gt;
        $values[0],0.0,$values[1],$values[2],$values[3]);\&lt;br /&gt;
       $zval = sprintf(&amp;quot;SF1.T %5.2f °C, %s&amp;quot;,\&lt;br /&gt;
        $values[0],$pval);\&lt;br /&gt;
    }\&lt;br /&gt;
  }\&lt;br /&gt;
$zval; }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====ECMD Classdefinition Solarkreis====&lt;br /&gt;
Die dritte Datei definiert die FHEM-Readings für den Solarkreis:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# Solarkreis&lt;br /&gt;
get state cmd {&amp;quot;cyc broad getstatus_SOL\n&amp;quot;}&lt;br /&gt;
get state expect &amp;quot;.*&amp;quot;&lt;br /&gt;
get state postproc { my ($rval,$pval,$qval,$lval,$yval,$xval,$zval);\&lt;br /&gt;
my $hash  = $defs{&amp;quot;%NAME&amp;quot;};\&lt;br /&gt;
 if( ($_ eq &amp;quot;&amp;quot;)||($_ eq &amp;quot;no data stored&amp;quot;) ){\&lt;br /&gt;
    $rval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    $pval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    $qval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    $lval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    $yval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    $xval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    $zval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
 }else{\&lt;br /&gt;
    my @values=split(&#039; &#039;,$_);\&lt;br /&gt;
    $rval = sprintf(&amp;quot;%5.2f °C&amp;quot;,$values[0]);\&lt;br /&gt;
    $pval = ($values[1] == 1)?&amp;quot;ON&amp;quot;:&amp;quot;OFF&amp;quot;;\&lt;br /&gt;
    $qval = ($values[1] == 1)?65:0;\&lt;br /&gt;
    $lval = sprintf(&amp;quot;%5.2f %%&amp;quot;,$values[2]);\&lt;br /&gt;
    $yval = sprintf(&amp;quot;%d&amp;quot;,$values[3]);\&lt;br /&gt;
    $xval = sprintf(&amp;quot;%5.2f %d %5.2f %d&amp;quot;,\&lt;br /&gt;
      $values[0],$qval,$values[2],$values[3]);\&lt;br /&gt;
    $zval = sprintf(&amp;quot;Coll.T %5.2f °C, %s&amp;quot;,\&lt;br /&gt;
      $values[0],$pval);\&lt;br /&gt;
 }\&lt;br /&gt;
readingsSingleUpdate($hash, &amp;quot;Coll.T&amp;quot;, $rval, 1);\&lt;br /&gt;
readingsSingleUpdate($hash, &amp;quot;Pumpe&amp;quot;, $pval, 1);\&lt;br /&gt;
readingsSingleUpdate($hash, &amp;quot;Pumpe.P&amp;quot;, $qval.&amp;quot; W&amp;quot;, 1);\&lt;br /&gt;
readingsSingleUpdate($hash, &amp;quot;Load&amp;quot;,  $lval, 1);\&lt;br /&gt;
readingsSingleUpdate($hash, &amp;quot;Yield&amp;quot;, $yval, 1);\&lt;br /&gt;
readingsSingleUpdate($hash, &amp;quot;reading&amp;quot;, $xval, 1);\&lt;br /&gt;
$zval; }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ECMD Classdefinition Heizkurve===&lt;br /&gt;
&lt;br /&gt;
Diese Klassendefinition muss in der bai00.cfg gespeichert (angehängt) werden.&lt;br /&gt;
in diesem Beispiel wurde sie für die Vaillant Calormatic 430 definiert, bei einer Calormatic 470 muss der Text entsprechend geändert werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
# HeizkurveSchreiben Calormatic 430, bai00.cfg&lt;br /&gt;
get HeizkurveSchreiben cmd {&amp;quot;write -c 430 Hc1HeatCurve &amp;quot;.Value(&amp;quot;HeizkurveEinstellen&amp;quot;).&amp;quot;\n&amp;quot;}&lt;br /&gt;
get HeizkurveSchreiben expect &amp;quot;.*\n\n&amp;quot;&lt;br /&gt;
get HeizkurveSchreiben postproc  { $_ }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Heizkurve schreiben===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
#fhem.cfg&lt;br /&gt;
define HeizkurveEinstellen dummy&lt;br /&gt;
attr HeizkurveEinstellen group Heizkurve_Einstellen&lt;br /&gt;
attr HeizkurveEinstellen icon temp_control&lt;br /&gt;
attr HeizkurveEinstellen room Vaillant,Heizung&lt;br /&gt;
attr HeizkurveEinstellen setList state:0.20,0.40,0.50,0.60,0.70,0.80,0.90,1.00,1.10,1.20,1.30,1.40,1.50,1.60,1.70&lt;br /&gt;
attr HeizkurveEinstellen webCmd state&lt;br /&gt;
&lt;br /&gt;
define HeizkurveSchreiben_Click notify HeizkurveEinstellen {\&lt;br /&gt;
 fhem(&amp;quot;get HeizkurveSchreiben HeizkurveSchreiben&amp;quot;);;\&lt;br /&gt;
}&lt;br /&gt;
attr HeizkurveSchreiben_Click group heatingControl&lt;br /&gt;
attr HeizkurveSchreiben_Click room Vaillant&lt;br /&gt;
&lt;br /&gt;
define HeizkurveSchreiben ECMDDevice bai00.class&lt;br /&gt;
attr HeizkurveSchreiben IODev EBUS&lt;br /&gt;
attr HeizkurveSchreiben group Heizkurve_Einstellen&lt;br /&gt;
attr HeizkurveSchreiben room Vaillant&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein kleines Demo wie man via ECMD und eBus die Daten zurück in die Register der Therme (Calormatic) schreiben kann. Hier wird die Heizkurve verstellt.&lt;br /&gt;
Ein Dummy wird definiert und über eine setList werden die verschiedenen Kurven vorgegeben. Dank setList kann es zu keinen unerlaubten Eingaben kommen. Über den notify wird die Heizkurve dann schließlich gesetzt.&lt;br /&gt;
&lt;br /&gt;
[[Datei:EBUS_Heizkurve_Einstellen.png|thumb|left|alt=EBUS-USB Interface]]&lt;br /&gt;
Vorsicht: überlegt euch bitte gut was ihr zurück schreiben wollt, es kann unter Umständen gefährlich für eure Hardware oder Gesundheit werden (zB: Warmwasser auf über 60 Grad). Alles was hier durchgeführt wird, führt ihr auf eigene Verantwortung durch.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Wochenprogramme===&lt;br /&gt;
Ein gerne benutztes Feature ist die Änderung der Zeitprogramme des Heizgerätes in FHEM. Die Visualisierung  ist etwas komplexer weil alles x 7 ist und hier Steuerzeichen beim Zusammensetzen des Sendestrings vorkommen die nicht direkt übergeben werden können. Einzelne Timer können damit nicht geschrieben werden, daher wird bei jeder Timereingabe der komplette String geschrieben. Der Einfachheit halber und wegen der Übersicht sind nur 2 Tagesprogramme (Timer) im Beispielcode vorgesehen (die Calormatic kann 3).&lt;br /&gt;
[[Datei:EBUS_Timerprogramme.png|thumb|left|alt=Wochentimer]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
#####################&lt;br /&gt;
#  Timer-Programme  #&lt;br /&gt;
#####################&lt;br /&gt;
get Mo cmd {&amp;quot;r -f hc1Timer.Monday\n&amp;quot;}&lt;br /&gt;
get Mo expect &amp;quot;.*\n\n&amp;quot;&lt;br /&gt;
get Mo postproc { Vaillant_Timer($_); }&lt;br /&gt;
get Di cmd {&amp;quot;r -f hc1Timer.Tuesday\n&amp;quot;}&lt;br /&gt;
get Di expect &amp;quot;.*\n\n&amp;quot;&lt;br /&gt;
get Di postproc { Vaillant_Timer($_); }&lt;br /&gt;
get Mi cmd {&amp;quot;r -f hc1Timer.Wednesday\n&amp;quot;}&lt;br /&gt;
get Mi expect &amp;quot;.*\n\n&amp;quot;&lt;br /&gt;
get Mi postproc { Vaillant_Timer($_); }&lt;br /&gt;
get Do cmd {&amp;quot;r -f hc1Timer.Thursday\n&amp;quot;}&lt;br /&gt;
get Do expect &amp;quot;.*\n\n&amp;quot;&lt;br /&gt;
get Do postproc { Vaillant_Timer($_); }&lt;br /&gt;
get Fr cmd {&amp;quot;r -f hc1Timer.Friday\n&amp;quot;}&lt;br /&gt;
get Fr expect &amp;quot;.*\n\n&amp;quot;&lt;br /&gt;
get Fr postproc { Vaillant_Timer($_); }&lt;br /&gt;
get Sa cmd {&amp;quot;r -f hc1Timer.Saturday\n&amp;quot;}&lt;br /&gt;
get Sa expect &amp;quot;.*\n\n&amp;quot;&lt;br /&gt;
get Sa postproc { Vaillant_Timer($_); }&lt;br /&gt;
get So cmd {&amp;quot;r -f hc1Timer.Sunday\n&amp;quot;}&lt;br /&gt;
get So expect &amp;quot;.*\n\n&amp;quot;&lt;br /&gt;
get So postproc { Vaillant_Timer($_); }&lt;br /&gt;
get ZeitfensterSchreibenMo cmd {&amp;quot;write -c 430 hc1Timer.Monday &amp;quot;.ReadingsVal(&amp;quot;TimeMo&amp;quot;,&amp;quot;HHMM1&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeMo&amp;quot;,&amp;quot;HHMM2&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeMo&amp;quot;,&amp;quot;HHMM3&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeMo&amp;quot;,&amp;quot;HHMM4&amp;quot;,0) . chr(59) . &amp;quot;24:00&amp;quot; . chr(59) . &amp;quot;24:00&amp;quot; . chr(59) . &amp;quot;selected\n&amp;quot;}&lt;br /&gt;
get ZeitfensterSchreibenMo expect &amp;quot;.*\n\n&amp;quot;&lt;br /&gt;
get ZeitfensterSchreibenMo postproc  { $_ }&lt;br /&gt;
get ZeitfensterSchreibenDi cmd {&amp;quot;write -c 430 hc1Timer.Tuesday &amp;quot;.ReadingsVal(&amp;quot;TimeDi&amp;quot;,&amp;quot;HHMM1&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeDi&amp;quot;,&amp;quot;HHMM2&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeDi&amp;quot;,&amp;quot;HHMM3&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeDi&amp;quot;,&amp;quot;HHMM4&amp;quot;,0) . chr(59) . &amp;quot;24:00&amp;quot; . chr(59) . &amp;quot;24:00&amp;quot; . chr(59) . &amp;quot;selected\n&amp;quot;}&lt;br /&gt;
get ZeitfensterSchreibenDi expect &amp;quot;.*\n\n&amp;quot;&lt;br /&gt;
get ZeitfensterSchreibenDi postproc  { $_ }&lt;br /&gt;
get ZeitfensterSchreibenMi cmd {&amp;quot;write -c 430 hc1Timer.Wednesday &amp;quot;.ReadingsVal(&amp;quot;TimeMi&amp;quot;,&amp;quot;HHMM1&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeMi&amp;quot;,&amp;quot;HHMM2&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeMi&amp;quot;,&amp;quot;HHMM3&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeMi&amp;quot;,&amp;quot;HHMM4&amp;quot;,0) . chr(59) . &amp;quot;24:00&amp;quot; . chr(59) . &amp;quot;24:00&amp;quot; . chr(59) . &amp;quot;selected\n&amp;quot;}&lt;br /&gt;
get ZeitfensterSchreibenMi expect &amp;quot;.*\n\n&amp;quot;&lt;br /&gt;
get ZeitfensterSchreibenMi postproc  { $_ }&lt;br /&gt;
get ZeitfensterSchreibenDo cmd {&amp;quot;write -c 430 hc1Timer.Thursday &amp;quot;.ReadingsVal(&amp;quot;TimeDo&amp;quot;,&amp;quot;HHMM1&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeDo&amp;quot;,&amp;quot;HHMM2&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeDo&amp;quot;,&amp;quot;HHMM3&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeDo&amp;quot;,&amp;quot;HHMM4&amp;quot;,0) . chr(59) . &amp;quot;24:00&amp;quot; . chr(59) . &amp;quot;24:00&amp;quot; . chr(59) . &amp;quot;selected\n&amp;quot;}&lt;br /&gt;
get ZeitfensterSchreibenDo expect &amp;quot;.*\n\n&amp;quot;&lt;br /&gt;
get ZeitfensterSchreibenDo postproc  { $_ }&lt;br /&gt;
get ZeitfensterSchreibenFr cmd {&amp;quot;write -c 430 hc1Timer.Friday &amp;quot;.ReadingsVal(&amp;quot;TimeFr&amp;quot;,&amp;quot;HHMM1&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeFr&amp;quot;,&amp;quot;HHMM2&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeFr&amp;quot;,&amp;quot;HHMM3&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeFr&amp;quot;,&amp;quot;HHMM4&amp;quot;,0) . chr(59) . &amp;quot;24:00&amp;quot; . chr(59) . &amp;quot;24:00&amp;quot; . chr(59) . &amp;quot;selected\n&amp;quot;}&lt;br /&gt;
get ZeitfensterSchreibenFr expect &amp;quot;.*\n\n&amp;quot;&lt;br /&gt;
get ZeitfensterSchreibenFr postproc  { $_ }&lt;br /&gt;
get ZeitfensterSchreibenSa cmd {&amp;quot;write -c 430 hc1Timer.Saturday &amp;quot;.ReadingsVal(&amp;quot;TimeSa&amp;quot;,&amp;quot;HHMM1&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeSa&amp;quot;,&amp;quot;HHMM2&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeSa&amp;quot;,&amp;quot;HHMM3&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeSa&amp;quot;,&amp;quot;HHMM4&amp;quot;,0) . chr(59) . &amp;quot;24:00&amp;quot; . chr(59) . &amp;quot;24:00&amp;quot; . chr(59) . &amp;quot;selected\n&amp;quot;}&lt;br /&gt;
get ZeitfensterSchreibenSa expect &amp;quot;.*\n\n&amp;quot;&lt;br /&gt;
get ZeitfensterSchreibenSa postproc  { $_ }&lt;br /&gt;
get ZeitfensterSchreibenSo cmd {&amp;quot;write -c 430 hc1Timer.Sunday &amp;quot;.ReadingsVal(&amp;quot;TimeSo&amp;quot;,&amp;quot;HHMM1&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeSo&amp;quot;,&amp;quot;HHMM2&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeSo&amp;quot;,&amp;quot;HHMM3&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeSo&amp;quot;,&amp;quot;HHMM4&amp;quot;,0) . chr(59) . &amp;quot;24:00&amp;quot; . chr(59) . &amp;quot;24:00&amp;quot; . chr(59) . &amp;quot;selected\n&amp;quot;}&lt;br /&gt;
get ZeitfensterSchreibenSo expect &amp;quot;.*\n\n&amp;quot;&lt;br /&gt;
get ZeitfensterSchreibenSo postproc  { $_ }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieses Beispiel ist für eine Vaillant Calormatic 430, bei einer Calormatic 470 müssen die entsprechenden Zeilen angepasst werden (write -c 430....) .&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
#########################################################&lt;br /&gt;
#&lt;br /&gt;
#                      Vaillant_Timer&lt;br /&gt;
# Datenstring = 03:30;19:30;20:00;20:00;20:00;20:00;Mo-Fr&lt;br /&gt;
#########################################################&lt;br /&gt;
# 99_myUtils.pm&lt;br /&gt;
sub Vaillant_Timer($)&lt;br /&gt;
{&lt;br /&gt;
 my @values=split(/[; ]/,$_);&lt;br /&gt;
 #-- suppress leading zero ?&lt;br /&gt;
 for(my $i=0;$i&amp;lt;7;$i++){ &lt;br /&gt;
   $values[$i]=~s/^0//;&lt;br /&gt;
 }&lt;br /&gt;
 my $sval=sprintf(&amp;quot;%s-%s&amp;quot;,$values[0],$values[1]);&lt;br /&gt;
 $sval  .=sprintf(&amp;quot;, %s-%s&amp;quot;,$values[2],$values[3])&lt;br /&gt;
   if($values[2] ne $values[3]);&lt;br /&gt;
 $sval  .=sprintf(&amp;quot;, %s-%s&amp;quot;,$values[4],$values[5])&lt;br /&gt;
   if($values[4] ne $values[5]);&lt;br /&gt;
 return $sval;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Oben gezeigtes Beispiel benötigt den Vaillant_Timer (von Prof. Peter Henning). Dieser Code muss in die 99_myUtils.pm gespeichert werden. Unter diesem {{Link2Forum|Topic=41064|Message=336911|LinkText=Link}} gibt es weiterreichende Informationen zu diesem Thema.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:Heizungssteuerung]]&lt;br /&gt;
[[Kategorie:Interfaces]]&lt;/div&gt;</summary>
		<author><name>Reinhart</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=MQTT2-Module_-_Praxisbeispiele&amp;diff=29856</id>
		<title>MQTT2-Module - Praxisbeispiele</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=MQTT2-Module_-_Praxisbeispiele&amp;diff=29856"/>
		<updated>2019-03-12T10:32:32Z</updated>

		<summary type="html">&lt;p&gt;Reinhart: Anleitung eBus gekürzt, Kurzfassung ertstellt.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einführung: MQTT bzw. MQTT2 in FHEM ==&lt;br /&gt;
Zur Einbindung von Geräten, welche mit einem MQTT-Server (früher: Broker) kommunizieren können, stehen unter FHEM verschiedene Optionen zur Verfügung, wobei nicht alle Module beliebig miteinander verwendet werden können. Details hierzu sind dieser [[MQTT|Übersicht]] zu entnehmen. &lt;br /&gt;
&lt;br /&gt;
Im Rahmen dieses Artikels wird für die eigentlichen Geräte [[MQTT2 DEVICE]] verwendet, damit wird als IO-Device entweder {{Link2CmdRef|Anker=MQTT2_SERVER|Lang=en|Label=MQTT2_SERVER}} oder [[MQTT2 CLIENT|MQTT2_CLIENT]] oder benötigt, mit einem IO-Device des Typs [[MQTT (Modul)|MQTT]] funktioniert die nachfolgende Darstellung dagegen nicht&amp;lt;ref&amp;gt;Allerdings können die Konfigurationen in der Regel recht einfach auf die bisherige MQTT-Implementierung übertragen werden&amp;lt;/ref&amp;gt;. MQTT2_DEVICE unterstützt u.a. auch die &#039;&#039;setExtensions&#039;&#039; direkt, also z.B. &#039;&#039;on-for-timer&#039;&#039; sowie &#039;&#039;[[MQTT2-Module - Praxisbeispiele#attrTemplate_2|attrTemplate]]&#039;&#039;&amp;lt;ref&amp;gt;Auch MQTT_DEVICE unterstützt setExtensions, allerdings muß dies dort per Attribut eingeschaltet werden&amp;lt;/ref&amp;gt;.&lt;br /&gt;
{{Hinweis|Die nachfolgenden Beispiele gelingen am einfachsten mit MQTT2_SERVER als Server, für diesen sollte dabei &#039;&#039;autocreate&#039;&#039; aktiviert werden, damit die erforderlichen MQTT2_DEVICES soweit möglich automatisiert erstellt werden&amp;lt;ref&amp;gt;Dabei wird vorausgesetzt, dass ein allgemeines  autocreate-Device (TYPE=autocreate) ebenfalls aktiv ist&amp;lt;/ref&amp;gt;.}}{{Hinweis|Die Code-Darstellung in diesem Beitrag entspricht jeweils dem RAW-Format zum [[Import von Code Snippets]]. Wer die Attribute direkt und einzeln bearbeitet, muß ggf. die &amp;quot;\&amp;quot; entfernen!}}&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
 define MQTT2_FHEM_Server MQTT2_SERVER 1883 global&lt;br /&gt;
 attr MQTT2_FHEM_Server autocreate 1&lt;br /&gt;
&lt;br /&gt;
== zigbee2mqtt ==&lt;br /&gt;
[[Bild:MQTT2_zigbee2mqtt_Bulbs.png|400px|thumb|Darstellung in FHEMWEB]]&lt;br /&gt;
[https://github.com/Koenkk/zigbee2mqtt zigbee2mqtt] ist ein open-source Projekt, mit dem zigbee-Geräte über MQTT direkt angesprochen werden können, ohne dass hierfür eine Bridge eines Herstellers benötigt wird.&lt;br /&gt;
=== Installation von zigbee2mqtt ===&lt;br /&gt;
Die Installation des zigbee2mqtt-Diensts ist auf der Homepage des Projekts beschrieben. Ergänzend muß in der configuration.yaml eine &#039;&#039;client_id&#039;&#039; unter &#039;&#039;mqtt&#039;&#039; (z.B. zigbee_pi) vergeben werden&amp;lt;ref&amp;gt;Die Anführungszeichen sowie genau zwei Leerzeichen sind hier erforderlich!&amp;lt;/ref&amp;gt;.&lt;br /&gt;
 mqtt:&lt;br /&gt;
   client_id: &#039;zigbee_pi&#039;&lt;br /&gt;
Da der Dienst auch später in den Anlernmodus versetzt werden kann, kann man auch gleich &amp;lt;code&amp;gt;permit_join: false&amp;lt;/code&amp;gt; setzen, um das versehentliche Einbinden neuer oder fremder Geräte zu unterbinden.&lt;br /&gt;
&lt;br /&gt;
=== Define eines MQTT2-Devices als &amp;quot;Bridge&amp;quot; === &lt;br /&gt;
Dann kann eine Art &amp;quot;Grund-Device&amp;quot; angelegt werden, das für die Ansteuerung des eigentlichen Server-Dienstes genutzt wird, der bereits unmittelbar nach der erfolgreichen Konfiguration von zigbee2mqtt zur Verfügung steht. In der Regel sollte dieses automatisch erstellt werden, wenn der zigbee2mqtt-Dienst (oder der betreffende Rechner) neu gestartet wird (oder FHEM oder dort ein Sensor einen Messwert sendet). Beispiel&amp;lt;ref&amp;gt;Hier waren bereits zwei Zigbee-Geräte angelernt&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 defmod MQTT2_zigbee_pi MQTT2_DEVICE zigbee_pi&lt;br /&gt;
 attr MQTT2_zigbee_pi IODev MQTT2_FHEM_Server&lt;br /&gt;
 attr MQTT2_zigbee_pi IODev MQTT2_FHEM_Server&lt;br /&gt;
 attr MQTT2_zigbee_pi readingList zigbee_pi:zigbee2mqtt/bridge/state:.* state\&lt;br /&gt;
   zigbee_pi:zigbee2mqtt/0x90fd9ffffe65db16:.* { json2nameValue($EVENT, &#039;&#039;) }\&lt;br /&gt;
   zigbee_pi:zigbee2mqtt/0x90fd9ffffe0bcd51:.* { json2nameValue($EVENT, &#039;&#039;) }\&lt;br /&gt;
   zigbee_pi:zigbee2mqtt/bridge/log:.* { json2nameValue($EVENT, &#039;log_&#039;) }&lt;br /&gt;
 attr MQTT2_zigbee_pi room MQTT2_DEVICE&lt;br /&gt;
&lt;br /&gt;
Für die Funktion einer zigbee2mqtt-Bridge steht ein {{Link2CmdRef|Anker=set|Lang=en|Label=template}} bereit, das direkt die passenden Attribute vergibt, um dem zigbee2mqtt-Dienst passende Anweisungen geben zu können und weitere Geräte für die eigentlichen Aktoren und Sensoren anzulegen:&lt;br /&gt;
&lt;br /&gt;
 set MQTT2_zigbee_pi attrTemplate L_01_zigbee2mqtt_bridge&lt;br /&gt;
&lt;br /&gt;
Ist dieses angelegt, kann zigbee2mqtt mit &amp;lt;code&amp;gt;set MQTT2_zigbee_pi permit_join true&amp;lt;/code&amp;gt; in den Anlernmodus versetzt werden, anzulernende Geräte müssen anschließend jeweils nach Bedienungsanleitung in den Anlernmodus gebracht werden.&lt;br /&gt;
&lt;br /&gt;
=== Vereinzeln der eigentlichen Geräte ===&lt;br /&gt;
&lt;br /&gt;
Über das mit dem template vergebene bridgeRegexp-Attribut  &lt;br /&gt;
 attr MQTT2_zigbee_pi bridgeRegexp zigbee2mqtt/([A-Za-z0-9]*)[/]?.*:.* &amp;quot;zigbee_$1&amp;quot; &lt;br /&gt;
werden anschließend neue MQTT2_DEVICE-Geräte automatisch angelegt, sobald ein bisher unbekanntes Zigbee-Gerät einen neuen Status (z.B. einen Meßwert) meldet. Um zu erfragen, welche Geräte dem zigbee-Deinst bekannt sind, kann via &amp;lt;code&amp;gt;get MQTT2_zigbee_pi devicelist true&amp;lt;/code&amp;gt; eine Liste abgefragt werden, die weitere Informationen zu den bereits angelernten Geräten enthält.&lt;br /&gt;
Geräte, die nicht automatisch etwas senden, kann man mit Hilfe des MQTT2_SERVER-Geräts einmalig schalten, damit diese ihren Status bzw. das erfolgreiche Schalten zurückmelden, Beispiel&amp;lt;ref&amp;gt;Die mit 0x... beginnende Angabe entspricht dabei dem &#039;&#039;friendly_name&#039;&#039;.&amp;lt;/ref&amp;gt;:&lt;br /&gt;
 set MQTT2_FHEM_Server publish zigbee2mqtt/0x90fd9ffffe0bcd51/set {&amp;quot;state&amp;quot;:&amp;quot;ON&amp;quot;,&amp;quot;brightness&amp;quot;:60}&lt;br /&gt;
&lt;br /&gt;
Für Gerätetypen, für die bereits templates vorhanden sind, ist es am einfachsten, diese einmalig auf die Geräte anzuwenden. Das Vorgehen entspricht dabei dem oben für die Bridge beschriebenen. Dafür wird immer vorausgesetzt, dass ein neues Device mit autocreate (ggf. über die bridgeRegexp) angelegt wurde&amp;lt;ref&amp;gt;Dieses befindet sich dann im Raum MQTT2_DEVICE. Um diesen sichtbar zu machen, muß ggf. die Browser-Seite neu geladen werden.&amp;lt;/ref&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
==== IKEA-Tradfri-Birne ====&lt;br /&gt;
{{Randnotiz|RNTyp=g|RNText=Wie wähle ich nun das richtige Template für mein Leuchtmittel aus?&lt;br /&gt;
-&amp;gt; Es wird nicht zwischen einer Birne/Bulb/Lampe und einem LED-Controller unterschieden sondern anhand der möglichen Lichtdarstellung des Gerätes:&lt;br /&gt;
&lt;br /&gt;
light_dimmer:&lt;br /&gt;
Das anzusteuernde Geräte besitzt ausschließlich eine feste Lichtfarbe welche gedimmt werden kann.&lt;br /&gt;
&lt;br /&gt;
light_cct:&lt;br /&gt;
Das anzusteuernde Gerät besitzt eine warmweiße sowie kaltweiße Lichtfarbe welche verändert sowie gedimmt werden kann.&lt;br /&gt;
&lt;br /&gt;
light_rgb_xxx:&lt;br /&gt;
Das anzusteuernde Gerät besitzt die Möglichlichkeit einer farbigen Lichtdarstellung (Rot, Grün, Blau) und kann gedimmt werden.&lt;br /&gt;
&lt;br /&gt;
light_rgbw_xxx:&lt;br /&gt;
Das anzusteuernde Gerät besitzt die Möglichlichkeit einer farbigen Lichtdarstellung (Rot, Grün, Blau) und besitzt eine warmweiße ODER kaltweiße Lichtfarbe welche eingestellt sowie gedimmt werden kann.&lt;br /&gt;
&lt;br /&gt;
light_rgbcct_xxx:&lt;br /&gt;
Das anzusteuernde Gerät besitzt die Möglichlichkeit einer farbigen Lichtdarstellung (Rot, Grün, Blau) und besitzt eine warmweiße UND kaltweiße Lichtfarbe welche verändert sowie gedimmt werden kann.&lt;br /&gt;
   &lt;br /&gt;
   xxx:&lt;br /&gt;
      hex:   Farbänderung mit hex&lt;br /&gt;
      rgb:   Farbänderung mit r g b&lt;br /&gt;
      xy:   Farbänderung mit x sowie y&lt;br /&gt;
      hue:   Farbänderung mit hue und saturation&lt;br /&gt;
&lt;br /&gt;
Warum diese Einteilung in &amp;quot;hex&amp;quot;, &amp;quot;rgb&amp;quot;, &amp;quot;xy&amp;quot; sowie &amp;quot;hue&amp;quot;?&lt;br /&gt;
-&amp;gt; Zigbee2MQTT unterstützt das Übermitteln aller dieser Werte, allerdings unterscheiden sich hier die Geräte. Manche &amp;quot;verstehen&amp;quot; nur z.B. Hex-Farbänderungen, andere halt nur eine Farbänderung mit rgb-Werten.&lt;br /&gt;
-&amp;gt; Aus diesem Grund muss an dieser Stelle probiert werden mit welchem der 4 Templates sich die Farbveränderung des Gerätes steuern lässt!&lt;br /&gt;
&lt;br /&gt;
HINWEIS: Templates für Farbänderungen mithilfe von XY- sowie HUE-Werten wurden bis heute nicht angelegt!&lt;br /&gt;
}}&lt;br /&gt;
Beispiel eines dimmbaren Tradfri-Leuchtmittels&lt;br /&gt;
 defmod IKEA_Bulb2 MQTT2_DEVICE&lt;br /&gt;
 attr IKEA_Bulb2 IODev MQTT2_FHEM_Server&lt;br /&gt;
 attr IKEA_Bulb2 icon light_control&lt;br /&gt;
 attr IKEA_Bulb2 devStateIcon {zigbee2mqtt_devStateIcon255($name)}&lt;br /&gt;
 attr IKEA_Bulb2 readingList zigbee_pi:zigbee2mqtt/0x90fd9ffffe0bcd51:.* { json2nameValue($EVENT) }&lt;br /&gt;
 attr IKEA_Bulb2 setList on:noArg zigbee2mqtt/0x90fd9ffffe0bcd51/set {&amp;quot;state&amp;quot;:&amp;quot;ON&amp;quot;}\&lt;br /&gt;
     off:noArg zigbee2mqtt/0x90fd9ffffe0bcd51/set {&amp;quot;state&amp;quot;:&amp;quot;OFF&amp;quot;}\&lt;br /&gt;
     brightness:colorpicker,BRI,0,15,255 zigbee2mqtt/0x90fd9ffffe0bcd51/set {&amp;quot;state&amp;quot;:&amp;quot;on&amp;quot;,&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}&lt;br /&gt;
 attr IKEA_Bulb2 webCmd toggle:on:off:brightness&lt;br /&gt;
 attr IKEA_Bulb2 model L_02a_zigbee2mqtt_bulb&lt;br /&gt;
&lt;br /&gt;
Kann man auch die Farbtemperatur einstellen, wird die setList wie folgt erweitert oder das entsprechende template&amp;lt;ref&amp;gt;Durch die &#039;&#039;model&#039;&#039;-Angabe kann nachvollzogen werden, welches template angewendet wurde.&amp;lt;/ref&amp;gt; anwendet:&lt;br /&gt;
 ...&lt;br /&gt;
 color_temp:colorpicker,CT,250,1,454 zigbee2mqtt/0x90fd9ffffe0bcd51/set {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
Die templates sind dabei in der Regel so gestaltet, dass eventuell mehr Optionen in FHEMWEB erscheinen, als tatsächlich vorhanden oder erwünscht sind. &lt;br /&gt;
Da sich obige einfarbige dimmbare Lampe durch Klicken auf das devStateIcon schalten läßt, ist für die vollständige Ansteuerung bereits dieses webCmd hinreichend:&lt;br /&gt;
 attr IKEA_Bulb2 webCmd brightness&lt;br /&gt;
&lt;br /&gt;
==== Temp/Hum. Sensor ====&lt;br /&gt;
tbd&lt;br /&gt;
&lt;br /&gt;
==== Motion Sensor ====&lt;br /&gt;
Als MQTT-Server wird hier &#039;&#039;mosquitto&#039;&#039; verwendet, als IO-Device wird daher ein {{Link2CmdRef|Anker=MQTT2_CLIENT|Lang=en|Label=MQTT2_CLIENT}}-Gerät definiert: &lt;br /&gt;
&lt;br /&gt;
 defmod mqtt2_client MQTT2_CLIENT 192.168.2.4:1883&lt;br /&gt;
 attr mqtt2_client autocreate 1&lt;br /&gt;
 attr mqtt2_client rawEvents zigbee2mqtt/GB_Bewegungsmelder:.*&lt;br /&gt;
 attr mqtt2_client room test&lt;br /&gt;
 attr mqtt2_client subscriptions #&lt;br /&gt;
&lt;br /&gt;
Das eigentliche Device sieht dann so aus:&lt;br /&gt;
 defmod GB_Bewegungsmelder_MQTT2 MQTT2_DEVICE zigbee_158d0001f9d030&lt;br /&gt;
 attr GB_Bewegungsmelder_MQTT2 IODev mqtt2_client&lt;br /&gt;
 attr GB_Bewegungsmelder_MQTT2 devStateIcon motion:motion_detector@red off:motion_detector@green no_motion:motion_detector@green&lt;br /&gt;
 attr GB_Bewegungsmelder_MQTT2 icon motion_detector@blue&lt;br /&gt;
 attr GB_Bewegungsmelder_MQTT2 readingList mqtt2client:zigbee2mqtt/GB_Bewegungsmelder:.* { json2nameValue($EVENT) }&lt;br /&gt;
 attr GB_Bewegungsmelder_MQTT2 room MQTT2_DEVICE&lt;br /&gt;
 attr GB_Bewegungsmelder_MQTT2 stateFormat {\&lt;br /&gt;
 if(ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;occupancy&amp;quot;,0) eq &amp;quot;true&amp;quot;) {\&lt;br /&gt;
 	sprintf(&amp;quot;motion&amp;quot;);;\&lt;br /&gt;
 	} else {\&lt;br /&gt;
 	sprintf(&amp;quot;no_motion&amp;quot;);;	\&lt;br /&gt;
 	}\&lt;br /&gt;
 }&lt;br /&gt;
==== Anlegen von Zigbee2MQTT-Gruppen in FHEM ====&lt;br /&gt;
{{Hinweis|Die nachfolgende Darstellung ist vorläufig!}}&lt;br /&gt;
{{Hinweis|Bevor man eine Gruppe mithilfe von Zigbee2MQTT anlegen kann, sollte man sicherstellen, dass man über die aktuelleste Version von Zigbee2MQTT verfügt (min. vom 15. Februar 2019). Außerdem sollte auch der Koordinator (zumeist CC2531) die aktuellste Firmware besitzen (min. vom 15. Februar 2019). Falls ein flashen des Koordinators mit der neusten Firmware erfolgen soll, ist darauf zu achten, dass nach einem flashen alle Geräte neu angelernt werden müssen! (Hinweise zum flashen ohne erneutem anlernen sind hier zu finden: https://www.zigbee2mqtt.io/information/flashing_without_re-pairing.html)}}&lt;br /&gt;
&lt;br /&gt;
=====Erstellen einer Zigbee2MQTT-Gruppe=====&lt;br /&gt;
Bevor das Ganze in FHEM funktioniert, muss eine Gruppe in der &amp;quot;configuration.yaml&amp;quot; angelegt werden, dieser Vorgang ist auf folgender Seite beschrieben: https://www.zigbee2mqtt.io/information/groups.html&lt;br /&gt;
Wenn die Geräte anschließend über den FHEM MQTT2-Server der Gruppe hinzugefügen werden sollen, kann dies mit folgendem Befehl erfolgen:&lt;br /&gt;
 set &amp;lt;MQTT2-Server&amp;gt; publish zigbee2mqtt/bridge/group/&amp;lt;Zigbee2MQTT Friendly-Gruppenname&amp;gt;/add &amp;lt;Zigbee2MQTT Friendly-Gerätename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
 set MQTT2_FHEM_Server publish zigbee2mqtt/bridge/group/Wohnzimmer/add Stehlampe&lt;br /&gt;
&lt;br /&gt;
Dieser Befehl kann so oft verwendet werden, wie man Geräte zu einer Gruppe hinzufügen möchte.&lt;br /&gt;
&lt;br /&gt;
Zum Entfernen eines Gerätes aus einer Gruppe kann folgender Befehl verwendet werden:&lt;br /&gt;
 set &amp;lt;MQTT2-Server&amp;gt; publish zigbee2mqtt/bridge/group/&amp;lt;Zigbee2MQTT Friendly-Gruppenname&amp;gt;/remove &amp;lt;Zigbee2MQTT Friendly-Gerätename&amp;gt;&lt;br /&gt;
Beispiel:&lt;br /&gt;
 set MQTT2_FHEM_Server publish zigbee2mqtt/bridge/group/Wohnzimmer/remove Kuechenlampe&lt;br /&gt;
&lt;br /&gt;
=====Anlegen der Gruppe in FHEM=====&lt;br /&gt;
Da Gruppen in Zigbee2MQTT aktuell keine Rückmeldung über ihren Status geben, wird auch beim einmaligen Schalten kein Gerät automatisch in FHEM angelegt. Aus diesem Grund muss dies mit folgendem Befehl noch manuell erfolgen:&lt;br /&gt;
 defmod &amp;lt;FHEM NAME&amp;gt; MQTT2_DEVICE&lt;br /&gt;
Beispiel&lt;br /&gt;
 defmod lichtWohnzimmer MQTT2_DEVICE&lt;br /&gt;
Anschließend wird auch für dieses Gerät wieder ein passendes template ausgewählt, wie als wäre es ein normales Zigbee2MQTT-Gerät.&lt;br /&gt;
Im anschließenden Dialog-Fenster welches sich nach dem Setzen des templates öffnet, müssen die folgenden Werte durch passendes ersetzt werden:&lt;br /&gt;
 BASE_TOPIC -&amp;gt; zigbee2mqtt&lt;br /&gt;
 DEV_ID -&amp;gt; &amp;lt;Zigbee2MQTT Friendly-Gruppenname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach sollte sich die Gruppe wie ein normales Zigbee2MQTT Gerät steuern lassen.&lt;br /&gt;
&lt;br /&gt;
== Tasmota ==&lt;br /&gt;
[https://github.com/arendst/Sonoff-Tasmota Tasmota] (&#039;&#039;&#039;T&#039;&#039;&#039;heo &#039;&#039;&#039;A&#039;&#039;&#039;rends &#039;&#039;&#039;S&#039;&#039;&#039;onoff &#039;&#039;&#039;M&#039;&#039;&#039;QTT &#039;&#039;&#039;O&#039;&#039;&#039;ver &#039;&#039;&#039;T&#039;&#039;&#039;he &#039;&#039;&#039;A&#039;&#039;&#039;ir - einer offenen Firmware von [https://github.com/arendst arendst]) ist eine open-source Software für ESP8266-Geräte, die z.B. statt der originalen Firmware für Sonoff-Geräte und andere ESP8266-basierte WLAN-Steckdosen usw. verwendet werden kann. {{Randnotiz|RNTyp=r|RNText=Bitte beachten Sie, dass versicherungsrechtliche Probleme entstehen können, wenn die herstellereigene Firmware ersetzt wird!}}&lt;br /&gt;
&lt;br /&gt;
=== MQTT2_DEVICE ===&lt;br /&gt;
Dieses sollte bei aktiviertem &#039;&#039;autocreate&#039;&#039; am MQTT2_SERVER-Device automatisch angelegt werden, sobald das betreffende Gerät eingesteckt oder neu gestartet oder an einem evtl. vorhandenen Taster geschalten wird. Hier wurden Tasmota version(en) 6.1.1 und 6.2.1 getestet, Hardware war Sonoff Touch und S20.&lt;br /&gt;
&lt;br /&gt;
=== Manuelle Anpassungen ===&lt;br /&gt;
Die RAW-Definition kann dann beispielsweise wie folgt ergänzt werden:  &lt;br /&gt;
 defmod MQTT2_DVES_9B01BD MQTT2_DEVICE DVES_9B01BD&lt;br /&gt;
 attr MQTT2_DVES_9B01BD IODev m2server&lt;br /&gt;
 attr MQTT2_DVES_9B01BD readingList DVES_9B01BD:tele/sonoffkitchen/STATE:.* { json2nameValue($EVENT) }\&lt;br /&gt;
    DVES_9B01BD:tele/sonoffkitchen/LWT:.* LWT\&lt;br /&gt;
    DVES_9B01BD:cmnd/sonoffkitchen/POWER:.* POWER\&lt;br /&gt;
    DVES_9B01BD:tele/sonoffkitchen/UPTIME:.* { json2nameValue($EVENT) }\&lt;br /&gt;
    DVES_9B01BD:tele/sonoffkitchen/SENSOR:.* { json2nameValue($EVENT) }\&lt;br /&gt;
    DVES_9B01BD:tele/sonoffkitchen/INFO1:.* { json2nameValue($EVENT) }\&lt;br /&gt;
    DVES_9B01BD:tele/sonoffkitchen/INFO2:.* { json2nameValue($EVENT) }\&lt;br /&gt;
    DVES_9B01BD:tele/sonoffkitchen/INFO3:.* { json2nameValue($EVENT) }\&lt;br /&gt;
    DVES_9B01BD:stat/sonoffkitchen/RESULT:.* { json2nameValue($EVENT) }\&lt;br /&gt;
    DVES_9B01BD:stat/sonoffkitchen/STATE:.* { json2nameValue($EVENT) }&lt;br /&gt;
 attr MQTT2_DVES_9B01BD room MQTT2_DEVICE&lt;br /&gt;
 attr MQTT2_DVES_9B01BD setList on cmnd/sonoff/POWER on\&lt;br /&gt;
    off cmnd/sonoff/POWER off\&lt;br /&gt;
    reboot cmnd/sonoff/Restart 1&lt;br /&gt;
 attr MQTT2_DVES_9B01BD webCmd on:off:reboot&lt;br /&gt;
&lt;br /&gt;
=== attrTemplate ===&lt;br /&gt;
Für gängige Tasmota-Geräte stehen &#039;&#039;templates&#039;&#039; bereit, mit denen sich diese schnell konfigurieren lassen. &lt;br /&gt;
Beachten Sie dazu den Abschnitt &#039;&#039;attrTemplate&#039;&#039; in [[MQTT2 DEVICE#attrTemplate|MQTT2_DEVICE]]. Bei Anwendung eines template mit &amp;quot;split&amp;quot; im Namen werden dabei weitere Geräte angelegt und konfiguriert.&lt;br /&gt;
&lt;br /&gt;
== Shelly ==&lt;br /&gt;
=== Vorbemerkung ===&lt;br /&gt;
Auch für Shelly-Geräte steht eine Auswahl an [[MQTT2-Module - Praxisbeispiele#attrTemplate_2|templates]] bereit.&lt;br /&gt;
Beachten Sie auch hier, dass uU. bei Anwendung eines template mit &amp;quot;split&amp;quot; im Namen weitere Geräte angelegt und konfiguriert werden.&lt;br /&gt;
&lt;br /&gt;
=== Shelly1 ===&lt;br /&gt;
&lt;br /&gt;
=== Shellybulb ===&lt;br /&gt;
Zunächst muss man einen Statusupdate des Shellybulb erzwingen (Aus- und Einschalten, physikalisch oder per Web-UI), damit das Gerät bei eingeschaltetem autocreate  angelegt wird. Dies sieht zunächst so aus:&lt;br /&gt;
 Internals:&lt;br /&gt;
   CFGFN     &lt;br /&gt;
   CID        shellybulb_3CC533&lt;br /&gt;
   DEF        shellybulb_3CC533&lt;br /&gt;
   DEVICETOPIC MQTT2_shellybulb_3CC533&lt;br /&gt;
   IODev      MQTT2_FHEM_Server&lt;br /&gt;
   NAME       MQTT2_shellybulb_3CC533&lt;br /&gt;
   NR         246&lt;br /&gt;
   STATE      ???&lt;br /&gt;
   TYPE       MQTT2_DEVICE&lt;br /&gt;
   READINGS:&lt;br /&gt;
     2018-12-12 19:28:08   status_blue     0&lt;br /&gt;
     2018-12-12 19:28:08   status_brightness 61&lt;br /&gt;
     2018-12-12 19:28:08   status_effect   0&lt;br /&gt;
     2018-12-12 19:28:08   status_gain     26&lt;br /&gt;
     2018-12-12 19:28:08   status_green    0&lt;br /&gt;
     2018-12-12 19:28:08   status_ison     true&lt;br /&gt;
     2018-12-12 19:28:08   status_mode     color&lt;br /&gt;
     2018-12-12 19:28:08   status_red      255&lt;br /&gt;
     2018-12-12 19:28:08   status_temp     3250&lt;br /&gt;
     2018-12-12 19:28:08   status_white    0&lt;br /&gt;
 Attributes:&lt;br /&gt;
   IODev      MQTT2_FHEM_Server&lt;br /&gt;
   readingList shellybulb_3CC533:shellies/shellybulb-3CC533/color/0/status:.* { json2nameValue($EVENT, &#039;status_&#039;) }&lt;br /&gt;
   room       MQTT2_DEVICE&lt;br /&gt;
[[Bild:MQTT2 Shellybulb.png|400px|thumb|Darstellung in FHEMWEB nach Anwendung des template]]Dann bei den set-Anweisungen das attrTemplate &amp;quot;shellybulb&amp;quot; auswählen und setzen. Es erscheint eine Abfrage, ob die vorhandenen Readings gelöscht werden sollen. Diese bitte bestätigen und die Seite neu laden. Danach einmal An- und Ausschalten, damit die Readings auch durch einen neuen Status initialisiert werden und die Seite im Browser neu laden.&lt;br /&gt;
&lt;br /&gt;
== Milight-Bridge ==&lt;br /&gt;
=== Vorbemerkung ===&lt;br /&gt;
Der [https://github.com/sidoh/esp8266_milight_hub esp8266_milight_hub] ist ein open source- Projekt, mit dem auf Basis von &#039;&#039;openmili&#039;&#039; eine Vielzahl von MiLight-Geräten gesteuert werden können. Der MiLight-Hub erstetzt dabei eine beliebige Zahl von Milight-Bridges und ist auch zu verschiedenen Versionen des MiLight-Protokols kompatibel.&lt;br /&gt;
Neben MQTT kann dieser auch mit HTTPMOD oder Wifilight (bzw. den MiLight-Modulen) gesteuert werden. Die Hardware entspricht dabei im Wesentlichen einem MySensors-Wifi-Gateway&amp;lt;ref&amp;gt;Es wird lediglich ein anderer CS-PIN genutzt. Dies kann einfach in der Web-Oberfläche der Firmware umgestellt werden.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
Hier wird vorausgesetzt, dass eine funktionierende Bridge vorhanden ist.&lt;br /&gt;
Der Vorteil der MQTT-Lösung liegt darin, dass man bei kompatiblen Fernbedienungen auch direkt Informationen über Schaltvorgänge erhält, die mit der Fernbedienung ausgelöst werden.&lt;br /&gt;
&lt;br /&gt;
=== Einstellungen am MiLight-Hub ===&lt;br /&gt;
Die zum FHEM-Server bzw. dem MQTT2_SERVER passenden Vorgaben sind im Web-Interface des Hub einzustellen. Gegebenenfalls passen Sie die vom Hub zurückzugebenden Elemente im Web-Interface des Hub an.&lt;br /&gt;
&lt;br /&gt;
=== FHEM-Devices ===&lt;br /&gt;
[[Bild:MQTT2 MiLight.png|400px|thumb|Milight: Darstellung in FHEMWEB]]&lt;br /&gt;
==== Bridge ====&lt;br /&gt;
Wird nun über den Hub oder eine von diesem erkannte Fernbedienung ein vorhandenes Leuchtmittel geschaltet, wird bei eingeschaltetem autocreate ein erstes Device erstellt, die zunächst erstellte Definition sieht typischerweise etwa so aus:&lt;br /&gt;
 defmod MQTT2_milight_hub_1370325 MQTT2_DEVICE milight_hub_1370325&lt;br /&gt;
 attr MQTT2_milight_hub_1370325 IODev MQTT2_FHEM_Server&lt;br /&gt;
 attr MQTT2_milight_hub_1370325 readingList milight_hub_1370325:milight/updates/0xBE59/rgbw/1:.* { json2nameValue($EVENT, &#039;1_&#039;, $JSONMAP) }&lt;br /&gt;
 attr MQTT2_milight_hub_1370325 room MQTT2_DEVICE&lt;br /&gt;
&lt;br /&gt;
Auf dieses Device wird nun das &#039;&#039;template&#039;&#039; X_01_esp_milight_hub_bridge angewandt.&lt;br /&gt;
&lt;br /&gt;
==== Einzelne Leuchtmittel ====&lt;br /&gt;
&lt;br /&gt;
Wird nun nochmals das oben verwendete Leuchtmittel geschaltet, erstellt autocreate ein weiteres Device:&lt;br /&gt;
 defmod MQTT2_milight_0xBE59_1 MQTT2_DEVICE milight_0xBE59_1&lt;br /&gt;
 attr MQTT2_milight_0xBE59_1 IODev MQTT2_FHEM_Server&lt;br /&gt;
 attr MQTT2_milight_0xBE59_1 readingList milight/states/0xBE59/rgbw/1:.* { json2nameValue($EVENT, &#039;1_&#039;, $JSONMAP) }&lt;br /&gt;
 attr MQTT2_milight_0xBE59_1 room MQTT2_DEVICE&lt;br /&gt;
&lt;br /&gt;
Auf dieses wird nun eines der Bulb-templates angewendet. Wählt man das template X_01_esp_milight_hub_rgbw_bulb, wird eine einfache Variante erstellt, die neben einem toggelnden Icon nur Regler für Helligkeit, die Farbe und zwei Schaltflächen für den Weiß- und Nachtmodus enthält. Wer mehr oder andere Steuerelemente erhalten möchte, verwendet ein anderes template. Nicht benötigte Elemente kann man dabei einfach aus der Definition löschen.&lt;br /&gt;
&lt;br /&gt;
Alle weiteren Devices werden genauso erstellt. &lt;br /&gt;
&lt;br /&gt;
Um ein Device zu erhalten, mit dem sich alle Kanäle gleichzeitig steuern lassen, kann das template &#039;&#039;X_01a_esp_milight_hub_make_rgbw_group&#039;&#039; verwendet werden. Dieses verändert nicht das aktuelle Device, sondern erstellt &#039;&#039;&#039;eine Kopie&#039;&#039;&#039;, die dann modifiziert wird. Diese Kopie ist unter dem Namen &#039;&#039;milight_&amp;lt;RemoteID&amp;gt;_0&#039;&#039; im selben Raum zu finden wie das Ausgangsgerät und kann ebenfalls an die eigenen Wünsche angepaßt werden. &lt;br /&gt;
&lt;br /&gt;
Weitere Beispiele:&lt;br /&gt;
Beispiel für ein RGB-CCT-Device:&lt;br /&gt;
 defmod Licht_Wz_all MQTT2_DEVICE&lt;br /&gt;
 attr Licht_Wz_all IODev MQTT2_Broker&lt;br /&gt;
 attr Licht_Wz_all eventMap /set_white:Weiss/night_mode:Nacht/white_mode:white/on:on/off:off/ON:on/OFF:off/next_mode:Mode/mode_speed_up:Up/mode_speed_down:Down/&lt;br /&gt;
 attr Licht_Wz_all group Licht&lt;br /&gt;
 attr Licht_Wz_all icon light_control&lt;br /&gt;
 attr Licht_Wz_all readingList milight_hub_10693013:milight/0x5D02/rgb_cct/0:.* { json2nameValue($EVENT) }\&lt;br /&gt;
 milight_hub_10693013:milight/updates/0x5D02/rgb_cct/0:.* { json2nameValue($EVENT) }\&lt;br /&gt;
 milight_hub_10693013:milight/states/0x5D02/rgb_cct/0:.* { json2nameValue($EVENT) }\&lt;br /&gt;
 &lt;br /&gt;
 attr Licht_Wz_all room Wohnzimmer&lt;br /&gt;
 attr Licht_Wz_all setList on milight/0x5D02/rgb_cct/0 {&amp;quot;status&amp;quot;:&amp;quot;ON&amp;quot;}\&lt;br /&gt;
 off milight/0x5D02/rgb_cct/0 {&amp;quot;status&amp;quot;:&amp;quot;OFF&amp;quot;}\&lt;br /&gt;
 level milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 hue:colorpicker,HUE,0,1,359 milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 command:uzsuSelectRadio,Weiss,Nacht,Mode,Up,Down milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 brightness:colorpicker,BRI,0,1,255 milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 next_mode milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 mode_speed_up milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 mode_speed_down milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 saturation:colorpicker,BRI,0,1,100 milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 color_temp:colorpicker,CT,153,1,370 milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 device_id milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 effect milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 mode milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 commands milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}&lt;br /&gt;
 attr Licht_Wz_all sortby 1&lt;br /&gt;
 attr Licht_Wz_all webCmd command:brightness:saturation:color_temp:hue&lt;br /&gt;
 attr Licht_Wz_all webCmdLabel command\ &lt;br /&gt;
 :brightness:saturation\&lt;br /&gt;
 :color_temp:hue&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== eBus ==&lt;br /&gt;
=== eBus mit MQTT2 auswerten ===&lt;br /&gt;
&lt;br /&gt;
Für die MQTT Kommunikation des eBus wird für die eigentlichen Geräte MQTT2 DEVICE verwendet, damit wird als IO-Device entweder MQTT2_SERVER oder MQTT2_CLIENT verwendet, NICHT beides gleichzeitig!&lt;br /&gt;
Bitte auch zu beachten, die alten Module MQTT funktionieren nicht nach der Beschreibung in diesem Artikel. Es geht hier um die komplett überarbeitete Version mit dem Namen MQTT2!&lt;br /&gt;
Eine ausführliche Anleitung über die Konfiguration des [[EBUS-MQTT2|eBus MQTT2 gibt es hier]]&lt;br /&gt;
&lt;br /&gt;
Bei der hier beschriebenen Konfiguration der angelegten Devices muss unbedingt die Reihenfolge eingehalten werden.&lt;br /&gt;
&lt;br /&gt;
=== Anwendung: ===&lt;br /&gt;
Wer eBus komfortabel in FHEM einbinden will, kann dies nun erstmals mit wenigen Mausklicks mithilfe der Templates realisieren. &lt;br /&gt;
&lt;br /&gt;
Wer bereits einen Mosquitto Broker installiert hat, kann diesen weiter verwenden, ist aber für die Kommunikation mit dem eBus Dämon nicht mehr notwendig!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Welches FHEM Modul benötigt man ===&lt;br /&gt;
{{Randnotiz|RNTyp=r|RNText=Nicht MQTT2_SERVER und Mosquitto gleichzeitig laufen lassen, es kann zu verschiedenen Problemen kommen wie gegenseitiges Löschen von Einträgen in FHEM.}}&lt;br /&gt;
Beispiel: Mosquitto Broker ist vorhanden&lt;br /&gt;
dann benötigt man MQTT2_DEVICE und MQTT2_CLIENT&lt;br /&gt;
&lt;br /&gt;
Beispiel: Mosquitto Broker ist NICHT vorhanden&lt;br /&gt;
dann benötigt man MQTT2_DEVICE und MQTT2_SERVER&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitung und Definition am eBus ===&lt;br /&gt;
In der Konfiguration des Dämons ( /etc/default/ebusd ) sollte MQTT und die Topic definiert werden „ebusd/%circuit/%name“.&lt;br /&gt;
 --accesslevel=* --mqttport=1883 --mqttjson --mqtthost=IpAdresseMQTTSERVER --mqtttopic=ebusd/%circuit/%name&lt;br /&gt;
Der MQTTSERVER kann wahlweise der Mosquitto Broker sein, oder der MQTT2_SERVER. &lt;br /&gt;
&lt;br /&gt;
{{Hinweis|Nachfolgend wird davon ausgegangen, dass als Vorgabe für mqtttopic &#039;&#039;ebusd&#039;&#039; verwendet wurde. Dies kann geändert werden, es wird aber dringend empfohlen, das mqtttopic in jedem Fall mit &#039;&#039;ebus...&#039;&#039; zu beginnen!}}&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitung und Definition  in FHEM ===&lt;br /&gt;
&lt;br /&gt;
Unabhängig von dem konkret genutzten IO-Modul (MQTT2_SERVER oder MQTT2_CLIENT) sollte an diesem &#039;&#039;&#039;&#039;&#039;vor&#039;&#039;&#039;&#039;&#039; den nachfolgenden Schritten zunächst das autocreate ausgeschaltet werden. Weiter sollte geprüft werden, ob es bereits MQTT2_DEVICE-Geräte gibt, die Einträge in der readingList enthalten, die vom ebus stammen. Da wir die readingList anschließend mit erweiterten JSON-Optionen erstellen wollen, müssen entweder diese Geräte nach dem Deaktivieren des autocreate am IO gelöscht, oder zumindest die readingList entsprechend bereinigt oder gelöscht werden.&lt;br /&gt;
&lt;br /&gt;
==== Externer Broker ====&lt;br /&gt;
Wer bereits den Mosquitto installiert hat und diesen weiter verwenden möchte, dann diese Konfiguration wählen.&lt;br /&gt;
 ### 1a. Broker in FHEM anlegen ###&lt;br /&gt;
 define MQTT_via_mosquitto MQTT2_CLIENT 127.0.0.1:1883&lt;br /&gt;
 attr MQTT_via_mosquitto room MQTT2_DEVICE,System&lt;br /&gt;
==== FHEM-Interner Server ====&lt;br /&gt;
Wer keinen Mosquitto installiert hat kann diese Konfiguration wählen. Dazu wird einfach der MQTT2-SERVER definiert.&lt;br /&gt;
&lt;br /&gt;
 ### 1b. oder MQTT Server  anlegen ###&lt;br /&gt;
 define ebusMQTT MQTT2_SERVER 1883 global&lt;br /&gt;
 attr ebusMQTT room MQTT2_SERVER&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;ebus-Bridge&amp;quot; ====&lt;br /&gt;
Nun wird noch ein Device benötigt, welcher mit einem der oben genannten Module kommuniziert und das Filter (bridgeRegexp) für den eBus beinhaltet. Auf Basis dieses Device werden später alle ankommenden JSON Telegramme vom eBus Dämon automatisch als Reading angelegt.&lt;br /&gt;
&lt;br /&gt;
 ### 2. MQTT_Device definieren&lt;br /&gt;
 define MQTT2_ebusd MQTT2_DEVICE ebusd&lt;br /&gt;
 attr MQTT2_ebusd IODev ebusMQTT&lt;br /&gt;
 attr MQTT2_ebusd room MQTT2_DEVICE&lt;br /&gt;
&lt;br /&gt;
Es kann auch ein ggf. vom MQTT2_SERVER bereits automatisch angelegtes Device genutzt werden, bei Verwendung von MQTT2_CLIENT sollte das Device wie oben dargestellt manuell erstellt werden; es ist dabei darauf zu achten, dass die CID dem Basispfad des Topic-trees entspricht, der bei der Konfiguration des ebus-Dämons verwendet wurde. &lt;br /&gt;
&lt;br /&gt;
Nach der Konfiguration des bridge-Devices muß autocreate am IO-Device wieder aktiviert werden. Da hierbei die vom ebus-Dämon gesendeten JSON-Informationen in vielen Installationen nur sinnvoll genutzt werden können, wenn die Statusmeldungen jeweils getrennt dargestellt werden, setzen wir auf dem MQTT2_SERVER oder dem MQTT2_CLIENT ( je nachdem welcher verwendet wurde) das Attribut „autocreate“ auf „complex“.&lt;br /&gt;
&lt;br /&gt;
Es werden dann nach einiger Zeit sowohl die readingList am Device &#039;&#039;MQTT2_ebusd&#039;&#039; erweitert, wie auch ein oder mehrere neue MQTT2_DEVICE-Geräte angelegt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Allgemeine Hinweise ==&lt;br /&gt;
=== MQTT2_SERVER und MQTT2_CLIENT für Debugging nutzen ===&lt;br /&gt;
Nutzt man das rawEvents-Attribut am MQTT2-IO&amp;lt;ref&amp;gt;z.B. &amp;lt;code&amp;gt;attr MQTT2_FHEM_Server rawEvents .*&amp;lt;/code&amp;gt;, der regex-Filter kann wie üblich angepaßt werden&amp;lt;/ref&amp;gt;, kann man den Datenverkehr des Servers am Event-Monitor mitschneiden. Dies ist insbesondere für unbekannte Geräte nützlich, deren Topic- und Payload-Struktur noch nicht bekannt ist.&lt;br /&gt;
Um den kompletten MQTT Datenaustausch mitzuschneiden, kann man mit &amp;lt;code&amp;gt;attr mqtt2_server verbose 5&amp;lt;/code&amp;gt; auch alles ins FHEM-Log schreiben lassen.&lt;br /&gt;
&lt;br /&gt;
=== attrTemplate ===&lt;br /&gt;
Zur Konfiguration von MQTT2_DEVICE-Geräten kann die Funktion &#039;&#039;attrTemplate&#039;&#039; genutzt werden. &lt;br /&gt;
Die Anwendung ist [[MQTT2 DEVICE#attrTemplate|hier]] beschrieben.&lt;br /&gt;
== Links ==&lt;br /&gt;
* {{Link2Forum|Topic=91394|LinkText=Thread, aus dem diese Anleitung ursprünglich entstanden ist}}&lt;br /&gt;
* {{Link2Forum|Topic=91807|LinkText=Thread zum Tasmota-Device}}&lt;br /&gt;
* {{Link2Forum|Topic=97989|LinkText=Thread, aus dem diese Anleitung für den eBus ursprünglich entstanden ist}}&lt;br /&gt;
* {{Link2Forum|Topic=94495|LinkText=Neue templates einreichen}}&lt;br /&gt;
* {{Link2Forum|Topic=94494|LinkText=Fragen, Wünsche und Kritik zu mqtt2.template}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Hinweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
[[Kategorie:MQTT]]&lt;br /&gt;
[[Kategorie:ZigBee]]&lt;br /&gt;
[[Kategorie:IP Components|IP Komponenten]]&lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:Interfaces]]&lt;/div&gt;</summary>
		<author><name>Reinhart</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=EBUS-MQTT2&amp;diff=29855</id>
		<title>EBUS-MQTT2</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=EBUS-MQTT2&amp;diff=29855"/>
		<updated>2019-03-12T10:10:39Z</updated>

		<summary type="html">&lt;p&gt;Reinhart: Verlinkungen hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== eBus - MQTT2 ==&lt;br /&gt;
=== eBus mit MQTT2 auswerten ===&lt;br /&gt;
https://forum.fhem.de/index.php/topic,91394.0.html&lt;br /&gt;
&lt;br /&gt;
Für die MQTT Kommunikation des eBus wird für die eigentlichen Geräte [https://forum.fhem.de/index.php/topic,91394.0.html MQTT2 DEVICE ] verwendet, damit wird als IO-Device entweder [https://forum.fhem.de/index.php/topic,91394.0.html MQTT2_SERVER ]  oder MQTT2_CLIENT verwendet, NICHT beides gleichzeitig!&lt;br /&gt;
Bitte auch zu beachten, die alten Module MQTT funktionieren nicht nach der Beschreibung in diesem Artikel. Es geht hier um die komplett überarbeitete Version mit dem Namen MQTT2!&lt;br /&gt;
&lt;br /&gt;
Bei der hier beschriebenen Konfiguration der angelegten Devices muss unbedingt die Reihenfolge eingehalten werden.&lt;br /&gt;
&lt;br /&gt;
=== Anwendung: ===&lt;br /&gt;
Wer eBus komfortabel in FHEM einbinden will, kann dies nun erstmals mit wenigen Mausklicks realisieren. Erstmalig kommt diese neue Technik der von rudolfkönig implementierten Templates zur Anwendung. Templates sind im Prinzip vorgefertigte Schablonen die durch Anklicken dann selbständig den Device mit den darin enthaltenen Vorgaben konfigurieren. Beta-User hat diese Technik dann soweit für den eBus angepasst ( unter anderem die Filter erstellt ) , das sie allen eBus Anwendern zur Verfügung steht. Es kann nun jeder selbst Templates erstellen oder einfach die von mir erstellten vorhandenen Beispiele benutzen. In wenigen Minuten sollte die komplette FHEM Konfiguration dann abgeschlossen sein.&lt;br /&gt;
&lt;br /&gt;
Wer bereits einen Mosquitto Broker installiert hat, kann diesen weiter verwenden, ist aber für die Komunikation mit dem eBus Dämon nicht mehr notwendig!&lt;br /&gt;
&lt;br /&gt;
[[Bild:MQTT2_MQTT2.jpg|600px|thumb|left|Uebersicht eBus MQTT]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Welches FHEM Modul benötigt man ===&lt;br /&gt;
{{Randnotiz|RNTyp=r|RNText=Nicht MQTT2_SERVER und Mosquitto gleichzeitig laufen lassen, es kann zu verschiedenen Problemen kommen wie gegenseitiges Löschen von Einträgen in FHEM.}}&lt;br /&gt;
Beispiel: Mosquitto Broker ist vorhanden&lt;br /&gt;
dann benötigt man MQTT2_DEVICE und MQTT2_CLIENT&lt;br /&gt;
&lt;br /&gt;
Beispiel: Mosquitto Broker ist NICHT vorhanden&lt;br /&gt;
dann benötigt man MQTT2_DEVICE und MQTT2_SERVER&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitung und Definition am eBus ===&lt;br /&gt;
In der Konfiguration des Dämons ( /etc/default/ebusd ) sollten diese Parameter hinzugefügt werden. Die Topic „ebusd/%circuit/%name“ bitte nicht abändern, da verschiedene Filter auf diesen Ausdruck eingestellt sind.&lt;br /&gt;
 --accesslevel=* --mqttport=1883 --mqttjson --mqtthost=IpAdresseMQTTSERVER --mqtttopic=ebusd/%circuit/%name&lt;br /&gt;
Der MQTTSERVER kann wahlweise der Mosquitto Broker sein, oder der MQTT2_SERVER. Beides wird vermutlich am Raspberry der FHEM Hauptinstanz sein, also die IP-Adresse des Raspberry einsetzen.&lt;br /&gt;
&lt;br /&gt;
{{Hinweis|Nachfolgend wird davon ausgegangen, dass als Vorgabe für mqtttopic &#039;&#039;ebusd&#039;&#039; verwendet wurde. Dies kann geändert werden, es wird aber dringend empfohlen, das mqtttopic in jedem Fall mit &#039;&#039;ebus...&#039;&#039; zu beginnen!}}&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitung und Definition  in FHEM ===&lt;br /&gt;
&lt;br /&gt;
Unabhängig von dem konkret genutzten IO-Modul (MQTT2_SERVER oder MQTT2_CLIENT) sollte an diesem &#039;&#039;&#039;&#039;&#039;vor&#039;&#039;&#039;&#039;&#039; den nachfolgenden Schritten zunächst das autocreate ausgeschaltet werden. Weiter sollte geprüft werden, ob es bereits MQTT2_DEVICE-Geräte gibt, die Einträge in der readingList enthalten, die vom ebus stammen. Da wir die readingList anschließend mit erweiterten JSON-Optionen erstellen wollen, müssen entweder diese Geräte nach dem Deaktivieren des autocreate am IO gelöscht, oder zumindest die readingList entsprechend bereinigt oder gelöscht werden.&lt;br /&gt;
&lt;br /&gt;
==== Externer Broker ====&lt;br /&gt;
Wer bereits den Mosquitto installiert hat und diesen weiter verwenden möchte, dann diese Konfiguration wählen.&lt;br /&gt;
 ### 1a. Broker in FHEM anlegen ###&lt;br /&gt;
 define MQTT_via_mosquitto MQTT2_CLIENT 127.0.0.1:1883&lt;br /&gt;
 attr MQTT_via_mosquitto room MQTT2_DEVICE,System&lt;br /&gt;
==== FHEM-Interner Server ====&lt;br /&gt;
Wer keinen Mosquitto installiert hat kann diese Konfiguration wählen. Dazu wird einfach der MQTT2-SERVER definiert.&lt;br /&gt;
&lt;br /&gt;
 ### 1b. oder MQTT Server  anlegen ###&lt;br /&gt;
 define ebusMQTT MQTT2_SERVER 1883 global&lt;br /&gt;
 attr ebusMQTT room MQTT2_SERVER&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;ebus-Bridge&amp;quot; ====&lt;br /&gt;
Nun wird noch ein Device benötigt, welcher mit einem der oben genannten Module kommuniziert und das Filter (bridgeRegexp) für den eBus beinhaltet. Auf Basis dieses Device werden später alle ankommenden JSON Telegramme vom eBus Dämon automatisch als Reading angelegt.&lt;br /&gt;
&lt;br /&gt;
 ### 2. MQTT_Device definieren&lt;br /&gt;
 define MQTT2_ebusd MQTT2_DEVICE ebusd&lt;br /&gt;
 attr MQTT2_ebusd IODev ebusMQTT&lt;br /&gt;
 attr MQTT2_ebusd room MQTT2_DEVICE&lt;br /&gt;
&lt;br /&gt;
Es kann auch ein ggf. vom MQTT2_SERVER bereits automatisch angelegtes Device genutzt werden, bei Verwendung von MQTT2_CLIENT sollte das Device wie oben dargestellt manuell erstellt werden; es ist dabei darauf zu achten, dass die CID dem Basispfad des Topic-trees entspricht, der bei der Konfiguration des ebus-Dämons verwendet wurde. &lt;br /&gt;
&lt;br /&gt;
Auf das Device MQTT2_ebusd wird nun folgendes Template angwendet:&lt;br /&gt;
&lt;br /&gt;
[[Bild:MQTT2_1template E_00 installieren.png|400px|thumb|left|Template E_00_eBus_daemon_splitter]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Bild:MQTT2_2splitter.png|400px|thumb|left|Eingabe im Splitter aendern]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Gibt es noch keine readingList mit ebus-spezifischen Einträgen, erscheint ein Fenster. In diesem kann der Name ausgewählt werden, gebt hier anstatt DEV_ID „ebus“ ein und drückt „ok“&lt;br /&gt;
&lt;br /&gt;
Zur Kontrolle bitte prüfen ob hier auch die „bridgeRegexp“ vom Template richtig gesetzt wurde.&lt;br /&gt;
&lt;br /&gt;
[[Bild:MQTT2_3Attribute_ebusd.png|400px|thumb|left|bridgeRegexp prüfen]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 (ebus.)[^/]*/(bai|broadcast)/.*:.* &amp;quot;$1_bai&amp;quot;&lt;br /&gt;
 (ebus.)[^/]*/([\d]+)/.*:.* &amp;quot;$1_$2&amp;quot;&lt;br /&gt;
 (ebus.)[^/]*[/][^b][a-zA-Z]+[/].*:.* &amp;quot;$1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Nach der Konfiguration des bridge-Devices muß autocreate am IO-Device wieder aktiviert werden. Da hierbei die vom ebus-Dämon gesendeten JSON-Informationen in vielen Installationen nur sinnvoll genutzt werden können, wenn die Statusmeldungen jeweils getrennt dargestellt werden, setzen wir auf dem MQTT2_SERVER oder dem MQTT2_CLIENT ( je nachdem welcher verwendet wurde) das Attribut „autocreate“ auf „complex“.&lt;br /&gt;
&lt;br /&gt;
[[Bild:MQTT2_4autocreate-complex.png|400px|thumb|left|autocreate auf complex setzen]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Complex hat den Sinn, das JSONMAP mit dem Namen des Readings automatisch gesetzt wird.&lt;br /&gt;
Statt dem Reading 0_value wird daraus dann ein Stautus01_0_value. Dies ist gerade bei den Statusmeldungen wichtig, da sie sich sonst mit gleichem Readingnamen gegenseitig überschreiben.&lt;br /&gt;
&lt;br /&gt;
Nun heißt es etwas zurück lehnen und warten bis die MQTT Telegramme vom eBus eingetroffen sind, das kann einige Minuten dauern. Dabei wird in der Regel sowohl die readingList am Device &#039;&#039;MQTT2_ebusd&#039;&#039; erweitert, wie auch ein oder mehrere neue MQTT2_DEVICE-Geräte angelegt.&lt;br /&gt;
&lt;br /&gt;
==== myUtils-Code ====&lt;br /&gt;
Nun benötigen wir noch etwas Code für die Balkendarstellung in FHEM. Dieser Code wird in die 99_myUtils.pm kopiert.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
 sub Balkenanzeige($) &lt;br /&gt;
 {&lt;br /&gt;
    # Zuweisung der übergebenen Variablen&lt;br /&gt;
    my ($val) = @_;&lt;br /&gt;
    # Konfiguration des maximal übergebenen Werts (hier wäre der höchste zu erwartende Wert = 3)&lt;br /&gt;
    my $maxValue = 70;&lt;br /&gt;
    # Normalisierung auf 100%-Wert&lt;br /&gt;
    my $percent = $val / $maxValue * 100;&lt;br /&gt;
    # Definition des valueStyles&lt;br /&gt;
    my $stylestring = &#039;style=&amp;quot;&#039;.&lt;br /&gt;
        &#039;width: 200px; &#039;.&lt;br /&gt;
	&#039;text-align:center; &#039;.&lt;br /&gt;
	&#039;border: 1px solid #ccc ;&#039;. &lt;br /&gt;
	&#039;background-image: -webkit-linear-gradient(left,red &#039;.$percent.&#039;%, rgba(0,0,0,0) &#039;.$percent.&#039;%); &#039;.&lt;br /&gt;
	&#039;background-image:    -moz-linear-gradient(left,blue &#039;.$percent.&#039;%, rgba(0,0,0,0) &#039;.$percent.&#039;%); &#039;. &lt;br /&gt;
	&#039;background-image:     -ms-linear-gradient(left,red &#039;.$percent.&#039;%, rgba(0,0,0,0) &#039;.$percent.&#039;%); &#039;. &lt;br /&gt;
	&#039;background-image:      -o-linear-gradient(left,red &#039;.$percent.&#039;%, rgba(0,0,0,0) &#039;.$percent.&#039;%); &#039;. &lt;br /&gt;
	&#039;background-image:         linear-gradient(left,red &#039;.$percent.&#039;%, rgba(0,0,0,0) &#039;.$percent.&#039;%);&amp;quot;&#039;;&lt;br /&gt;
    # Rückgabe des definierten Strings&lt;br /&gt;
    return $stylestring;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ebenfalls muss noch das Modul Color.pm ordnungsgemäß eingebunden werden. Dieses Modul wird zur farbigen Darstellung wie es in den Templates verwendet wird benötigt.&lt;br /&gt;
 define colorInit notify global:INITIALIZED {use Color}&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
==== Regelmäßige Werteabfrage ====&lt;br /&gt;
&lt;br /&gt;
Es kann aber in der Zwischenzeit noch die Timer gesteuerte Abfrage definiert werden.&lt;br /&gt;
&lt;br /&gt;
 define EBUS.TIMER at +*00:15:00 set ebusMQTT publish ebusd/430/Hc1HeatCurve/get;&lt;br /&gt;
 set ebusMQTT publish ebusd/430/HwcTempDesired/get;&lt;br /&gt;
 set ebusMQTT publish ebusd/bai/WaterPressure/get;&lt;br /&gt;
 set ebusMQTT publish ebusd/bai/FlowTemp/get;&lt;br /&gt;
 set ebusMQTT publish ebusd/bai/ReturnTemp/get;&lt;br /&gt;
 set ebusMQTT publish ebusd/bai/OutdoorstempSensor/get;&lt;br /&gt;
 set ebusMQTT publish ebusd/bai/Status02/get&lt;br /&gt;
&lt;br /&gt;
Diese „get“ sind nur Beispiele, wer weitere Readings abfragen möchte einfach die Liste in der FHEM Eingabe erweitern. Ebenfalls kann der Timer auf persönliche Bedürfnisse angepasst werden.&lt;br /&gt;
&lt;br /&gt;
=== ebus-Spezifische weitere Templates ===&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&lt;br /&gt;
Um die eBus Templates benutzen zu können, müssen sie erst im Verzeichnis „/opt/fhem/FHEM/lib/AttrTemplate“ installiert werden. Hier kann das Mustertemplate „{{Link2Forum|Topic=79600|LinkText=mqtt2.ebus.template}}“ herunter geladen werden. Dieses Template dann in das Verzeichnis kopieren. &lt;br /&gt;
Vor der erstmaligen Benutzung muss dieses template noch Initialisiert werden, sonst wird es in der Templateliste nicht angezeigt.&lt;br /&gt;
&lt;br /&gt;
[[Bild:MQTT2_7templateinitialize.png|400px|thumb|left|vor der ersten Benutzung in der Eingabezeile eingeben]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Dazu in der FHEM Eingabezeile eingeben:&lt;br /&gt;
 { AttrTemplate_Initialize() }&lt;br /&gt;
&lt;br /&gt;
==== Anwendung der Templates ====&lt;br /&gt;
&lt;br /&gt;
Wenn bereits die ersten Messwerte eingetroffen sind und die Devices mit den Readings angelegt wurden, können die Templates angelegt werden. D.h. in der Templateliste das gewünschte auswählen (hier MQTT2_ebusd_bai). Die eBus Templates beginnen alle mit E….&lt;br /&gt;
&lt;br /&gt;
[[Bild:MQTT2_8templateselect.png|400px|thumb|left|Das gewünschte Template auswählen, die Readings müssen allerdings in diesem Device enthalten sein]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Hier wird E_07_eBus_bai_Status01+Status02_HWC gewählt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Bild:MQTT2_5statustemplate.png|400px|thumb|left|Das Template hat die gewünschte Konfiguration in FHEM durchgeführt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Bild:MQTT2_6status1template.png|400px|thumb|left|Ergebnis des Template, Heizkurve und Warmwassertemperatur]]&lt;br /&gt;
Hier das Ergebnis von HC1HeatCurve+HWCTempDesired&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Muster Templates ====&lt;br /&gt;
&lt;br /&gt;
Es sind auch noch einige Mustertemplates vorhanden die auf Basis von readingsGroup erstellt wurden und ein farbiges Design besitzen. Diese Templates werden nicht im Device, sondern im Room „eBus“ angelegt.&lt;br /&gt;
Der Kreativität der Anwender sind hier fast keine Grenzen gesetzt, die Werkzeuge sind vorhanden.&lt;br /&gt;
&lt;br /&gt;
Template: E_05_eBus_bai_readingsgroup_Set_Hcurve_Hotwater&lt;br /&gt;
[[Bild:MQTT2_ebusset.png|250px|thumb|left|Set hcurve und HWCtemdesired]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Template: E_01_eBus_bai_readingsgroup_Status01&lt;br /&gt;
[[Bild:MQTT2_ebustemp.png|250px|thumb|left|Statusmeldung als Readingsgroup]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Template: E_02_eBus_bai_readingsgroup_Status01_Balken&lt;br /&gt;
[[Bild:MQTT2_ebustempbalken.png|400px|thumb|left|EStatusmeldung als Readingsgroup mit Balkenanzeige]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Template: E_03_eBus_bai_readingsgroup_Status02&lt;br /&gt;
[[Bild:MQTT2_ebuswarmwasser.png|250px|thumb|left|Statusmeldung als Readingsgroup]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Template: E_04_eBus_bai_readingsgroup_Status02_Balken&lt;br /&gt;
[[Bild:MQTT2_ebuswarmwasserbalken.png|400px|thumb|left|Statusmeldung als Readingsgroup mit Balkenanzeige]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Weiterführende Links=&lt;br /&gt;
Diskussionsthread aus dem Forum:&lt;br /&gt;
*{{Link2Forum|Topic=97989|LinkText=ebusd.mqtt2.template: Fragen, Anregungen}}&lt;br /&gt;
*{{Link2Forum|Topic=79600|LinkText=Läuft: MQTT2 Teil3 Realisierung mit MQTT2_Client mit oder ohne Mosquitto}}&lt;br /&gt;
*{{Link2Forum|Topic=91394|LinkText=zigbee2mqtt mit MQTT2_SERVER und MQTT2_DEVICE}}&lt;br /&gt;
*{{Link2Forum|Topic=97989|LinkText=ebusd.mqtt2.template: Fragen, Anregungen}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:Heizungssteuerung]]&lt;br /&gt;
[[Kategorie:Interfaces]]&lt;/div&gt;</summary>
		<author><name>Reinhart</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=EBUS-MQTT2&amp;diff=29854</id>
		<title>EBUS-MQTT2</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=EBUS-MQTT2&amp;diff=29854"/>
		<updated>2019-03-12T08:10:12Z</updated>

		<summary type="html">&lt;p&gt;Reinhart: eBUS MQTT2 Installation und Konfiguration&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== eBus - MQTT2 ==&lt;br /&gt;
=== eBus mit MQTT2 auswerten ===&lt;br /&gt;
&lt;br /&gt;
Für die MQTT Kommunikation des eBus wird für die eigentlichen Geräte MQTT2 DEVICE verwendet, damit wird als IO-Device entweder MQTT2_SERVER oder MQTT2_CLIENT verwendet, NICHT beides gleichzeitig!&lt;br /&gt;
Bitte auch zu beachten, die alten Module MQTT funktionieren nicht nach der Beschreibung in diesem Artikel. Es geht hier um die komplett überarbeitete Version mit dem Namen MQTT2!&lt;br /&gt;
&lt;br /&gt;
Bei der hier beschriebenen Konfiguration der angelegten Devices muss unbedingt die Reihenfolge eingehalten werden.&lt;br /&gt;
&lt;br /&gt;
=== Anwendung: ===&lt;br /&gt;
Wer eBus komfortabel in FHEM einbinden will, kann dies nun erstmals mit wenigen Mausklicks realisieren. Erstmalig kommt diese neue Technik der von rudolfkönig implementierten Templates zur Anwendung. Templates sind im Prinzip vorgefertigte Schablonen die durch Anklicken dann selbständig den Device mit den darin enthaltenen Vorgaben konfigurieren. Beta-User hat diese Technik dann soweit für den eBus angepasst ( unter anderem die Filter erstellt ) , das sie allen eBus Anwendern zur Verfügung steht. Es kann nun jeder selbst Templates erstellen oder einfach die von mir erstellten vorhandenen Beispiele benutzen. In wenigen Minuten sollte die komplette FHEM Konfiguration dann abgeschlossen sein.&lt;br /&gt;
&lt;br /&gt;
Wer bereits einen Mosquitto Broker installiert hat, kann diesen weiter verwenden, ist aber für die Komunikation mit dem eBus Dämon nicht mehr notwendig!&lt;br /&gt;
&lt;br /&gt;
[[Bild:MQTT2_MQTT2.jpg|600px|thumb|left|Uebersicht eBus MQTT]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Welches FHEM Modul benötigt man ===&lt;br /&gt;
{{Randnotiz|RNTyp=r|RNText=Nicht MQTT2_SERVER und Mosquitto gleichzeitig laufen lassen, es kann zu verschiedenen Problemen kommen wie gegenseitiges Löschen von Einträgen in FHEM.}}&lt;br /&gt;
Beispiel: Mosquitto Broker ist vorhanden&lt;br /&gt;
dann benötigt man MQTT2_DEVICE und MQTT2_CLIENT&lt;br /&gt;
&lt;br /&gt;
Beispiel: Mosquitto Broker ist NICHT vorhanden&lt;br /&gt;
dann benötigt man MQTT2_DEVICE und MQTT2_SERVER&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitung und Definition am eBus ===&lt;br /&gt;
In der Konfiguration des Dämons ( /etc/default/ebusd ) sollten diese Parameter hinzugefügt werden. Die Topic „ebusd/%circuit/%name“ bitte nicht abändern, da verschiedene Filter auf diesen Ausdruck eingestellt sind.&lt;br /&gt;
 --accesslevel=* --mqttport=1883 --mqttjson --mqtthost=IpAdresseMQTTSERVER --mqtttopic=ebusd/%circuit/%name&lt;br /&gt;
Der MQTTSERVER kann wahlweise der Mosquitto Broker sein, oder der MQTT2_SERVER. Beides wird vermutlich am Raspberry der FHEM Hauptinstanz sein, also die IP-Adresse des Raspberry einsetzen.&lt;br /&gt;
&lt;br /&gt;
{{Hinweis|Nachfolgend wird davon ausgegangen, dass als Vorgabe für mqtttopic &#039;&#039;ebusd&#039;&#039; verwendet wurde. Dies kann geändert werden, es wird aber dringend empfohlen, das mqtttopic in jedem Fall mit &#039;&#039;ebus...&#039;&#039; zu beginnen!}}&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitung und Definition  in FHEM ===&lt;br /&gt;
&lt;br /&gt;
Unabhängig von dem konkret genutzten IO-Modul (MQTT2_SERVER oder MQTT2_CLIENT) sollte an diesem &#039;&#039;&#039;&#039;&#039;vor&#039;&#039;&#039;&#039;&#039; den nachfolgenden Schritten zunächst das autocreate ausgeschaltet werden. Weiter sollte geprüft werden, ob es bereits MQTT2_DEVICE-Geräte gibt, die Einträge in der readingList enthalten, die vom ebus stammen. Da wir die readingList anschließend mit erweiterten JSON-Optionen erstellen wollen, müssen entweder diese Geräte nach dem Deaktivieren des autocreate am IO gelöscht, oder zumindest die readingList entsprechend bereinigt oder gelöscht werden.&lt;br /&gt;
&lt;br /&gt;
==== Externer Broker ====&lt;br /&gt;
Wer bereits den Mosquitto installiert hat und diesen weiter verwenden möchte, dann diese Konfiguration wählen.&lt;br /&gt;
 ### 1a. Broker in FHEM anlegen ###&lt;br /&gt;
 define MQTT_via_mosquitto MQTT2_CLIENT 127.0.0.1:1883&lt;br /&gt;
 attr MQTT_via_mosquitto room MQTT2_DEVICE,System&lt;br /&gt;
==== FHEM-Interner Server ====&lt;br /&gt;
Wer keinen Mosquitto installiert hat kann diese Konfiguration wählen. Dazu wird einfach der MQTT2-SERVER definiert.&lt;br /&gt;
&lt;br /&gt;
 ### 1b. oder MQTT Server  anlegen ###&lt;br /&gt;
 define ebusMQTT MQTT2_SERVER 1883 global&lt;br /&gt;
 attr ebusMQTT room MQTT2_SERVER&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;ebus-Bridge&amp;quot; ====&lt;br /&gt;
Nun wird noch ein Device benötigt, welcher mit einem der oben genannten Module kommuniziert und das Filter (bridgeRegexp) für den eBus beinhaltet. Auf Basis dieses Device werden später alle ankommenden JSON Telegramme vom eBus Dämon automatisch als Reading angelegt.&lt;br /&gt;
&lt;br /&gt;
 ### 2. MQTT_Device definieren&lt;br /&gt;
 define MQTT2_ebusd MQTT2_DEVICE ebusd&lt;br /&gt;
 attr MQTT2_ebusd IODev ebusMQTT&lt;br /&gt;
 attr MQTT2_ebusd room MQTT2_DEVICE&lt;br /&gt;
&lt;br /&gt;
Es kann auch ein ggf. vom MQTT2_SERVER bereits automatisch angelegtes Device genutzt werden, bei Verwendung von MQTT2_CLIENT sollte das Device wie oben dargestellt manuell erstellt werden; es ist dabei darauf zu achten, dass die CID dem Basispfad des Topic-trees entspricht, der bei der Konfiguration des ebus-Dämons verwendet wurde. &lt;br /&gt;
&lt;br /&gt;
Auf das Device MQTT2_ebusd wird nun folgendes Template angwendet:&lt;br /&gt;
&lt;br /&gt;
[[Bild:MQTT2_1template E_00 installieren.png|400px|thumb|left|Template E_00_eBus_daemon_splitter]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Bild:MQTT2_2splitter.png|400px|thumb|left|Eingabe im Splitter aendern]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Gibt es noch keine readingList mit ebus-spezifischen Einträgen, erscheint ein Fenster. In diesem kann der Name ausgewählt werden, gebt hier anstatt DEV_ID „ebus“ ein und drückt „ok“&lt;br /&gt;
&lt;br /&gt;
Zur Kontrolle bitte prüfen ob hier auch die „bridgeRegexp“ vom Template richtig gesetzt wurde.&lt;br /&gt;
&lt;br /&gt;
[[Bild:MQTT2_3Attribute_ebusd.png|400px|thumb|left|bridgeRegexp prüfen]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 (ebus.)[^/]*/(bai|broadcast)/.*:.* &amp;quot;$1_bai&amp;quot;&lt;br /&gt;
 (ebus.)[^/]*/([\d]+)/.*:.* &amp;quot;$1_$2&amp;quot;&lt;br /&gt;
 (ebus.)[^/]*[/][^b][a-zA-Z]+[/].*:.* &amp;quot;$1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Nach der Konfiguration des bridge-Devices muß autocreate am IO-Device wieder aktiviert werden. Da hierbei die vom ebus-Dämon gesendeten JSON-Informationen in vielen Installationen nur sinnvoll genutzt werden können, wenn die Statusmeldungen jeweils getrennt dargestellt werden, setzen wir auf dem MQTT2_SERVER oder dem MQTT2_CLIENT ( je nachdem welcher verwendet wurde) das Attribut „autocreate“ auf „complex“.&lt;br /&gt;
&lt;br /&gt;
[[Bild:MQTT2_4autocreate-complex.png|400px|thumb|left|autocreate auf complex setzen]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Complex hat den Sinn, das JSONMAP mit dem Namen des Readings automatisch gesetzt wird.&lt;br /&gt;
Statt dem Reading 0_value wird daraus dann ein Stautus01_0_value. Dies ist gerade bei den Statusmeldungen wichtig, da sie sich sonst mit gleichem Readingnamen gegenseitig überschreiben.&lt;br /&gt;
&lt;br /&gt;
Nun heißt es etwas zurück lehnen und warten bis die MQTT Telegramme vom eBus eingetroffen sind, das kann einige Minuten dauern. Dabei wird in der Regel sowohl die readingList am Device &#039;&#039;MQTT2_ebusd&#039;&#039; erweitert, wie auch ein oder mehrere neue MQTT2_DEVICE-Geräte angelegt.&lt;br /&gt;
&lt;br /&gt;
==== myUtils-Code ====&lt;br /&gt;
Nun benötigen wir noch etwas Code für die Balkendarstellung in FHEM. Dieser Code wird in die 99_myUtils.pm kopiert.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
 sub Balkenanzeige($) &lt;br /&gt;
 {&lt;br /&gt;
    # Zuweisung der übergebenen Variablen&lt;br /&gt;
    my ($val) = @_;&lt;br /&gt;
    # Konfiguration des maximal übergebenen Werts (hier wäre der höchste zu erwartende Wert = 3)&lt;br /&gt;
    my $maxValue = 70;&lt;br /&gt;
    # Normalisierung auf 100%-Wert&lt;br /&gt;
    my $percent = $val / $maxValue * 100;&lt;br /&gt;
    # Definition des valueStyles&lt;br /&gt;
    my $stylestring = &#039;style=&amp;quot;&#039;.&lt;br /&gt;
        &#039;width: 200px; &#039;.&lt;br /&gt;
	&#039;text-align:center; &#039;.&lt;br /&gt;
	&#039;border: 1px solid #ccc ;&#039;. &lt;br /&gt;
	&#039;background-image: -webkit-linear-gradient(left,red &#039;.$percent.&#039;%, rgba(0,0,0,0) &#039;.$percent.&#039;%); &#039;.&lt;br /&gt;
	&#039;background-image:    -moz-linear-gradient(left,blue &#039;.$percent.&#039;%, rgba(0,0,0,0) &#039;.$percent.&#039;%); &#039;. &lt;br /&gt;
	&#039;background-image:     -ms-linear-gradient(left,red &#039;.$percent.&#039;%, rgba(0,0,0,0) &#039;.$percent.&#039;%); &#039;. &lt;br /&gt;
	&#039;background-image:      -o-linear-gradient(left,red &#039;.$percent.&#039;%, rgba(0,0,0,0) &#039;.$percent.&#039;%); &#039;. &lt;br /&gt;
	&#039;background-image:         linear-gradient(left,red &#039;.$percent.&#039;%, rgba(0,0,0,0) &#039;.$percent.&#039;%);&amp;quot;&#039;;&lt;br /&gt;
    # Rückgabe des definierten Strings&lt;br /&gt;
    return $stylestring;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ebenfalls muss noch das Modul Color.pm ordnungsgemäß eingebunden werden. Dieses Modul wird zur farbigen Darstellung wie es in den Templates verwendet wird benötigt.&lt;br /&gt;
 define colorInit notify global:INITIALIZED {use Color}&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
==== Regelmäßige Werteabfrage ====&lt;br /&gt;
&lt;br /&gt;
Es kann aber in der Zwischenzeit noch die Timer gesteuerte Abfrage definiert werden.&lt;br /&gt;
&lt;br /&gt;
 define EBUS.TIMER at +*00:15:00 set ebusMQTT publish ebusd/430/Hc1HeatCurve/get;&lt;br /&gt;
 set ebusMQTT publish ebusd/430/HwcTempDesired/get;&lt;br /&gt;
 set ebusMQTT publish ebusd/bai/WaterPressure/get;&lt;br /&gt;
 set ebusMQTT publish ebusd/bai/FlowTemp/get;&lt;br /&gt;
 set ebusMQTT publish ebusd/bai/ReturnTemp/get;&lt;br /&gt;
 set ebusMQTT publish ebusd/bai/OutdoorstempSensor/get;&lt;br /&gt;
 set ebusMQTT publish ebusd/bai/Status02/get&lt;br /&gt;
&lt;br /&gt;
Diese „get“ sind nur Beispiele, wer weitere Readings abfragen möchte einfach die Liste in der FHEM Eingabe erweitern. Ebenfalls kann der Timer auf persönliche Bedürfnisse angepasst werden.&lt;br /&gt;
&lt;br /&gt;
=== ebus-Spezifische weitere Templates ===&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&lt;br /&gt;
Um die eBus Templates benutzen zu können, müssen sie erst im Verzeichnis „/opt/fhem/FHEM/lib/AttrTemplate“ installiert werden. Hier kann das Mustertemplate „{{Link2Forum|Topic=79600|LinkText=mqtt2.ebus.template}}“ herunter geladen werden. Dieses Template dann in das Verzeichnis kopieren. &lt;br /&gt;
Vor der erstmaligen Benutzung muss dieses template noch Initialisiert werden, sonst wird es in der Templateliste nicht angezeigt.&lt;br /&gt;
&lt;br /&gt;
[[Bild:MQTT2_7templateinitialize.png|400px|thumb|left|vor der ersten Benutzung in der Eingabezeile eingeben]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Dazu in der FHEM Eingabezeile eingeben:&lt;br /&gt;
 { AttrTemplate_Initialize() }&lt;br /&gt;
&lt;br /&gt;
==== Anwendung der Templates ====&lt;br /&gt;
&lt;br /&gt;
Wenn bereits die ersten Messwerte eingetroffen sind und die Devices mit den Readings angelegt wurden, können die Templates angelegt werden. D.h. in der Templateliste das gewünschte auswählen (hier MQTT2_ebusd_bai). Die eBus Templates beginnen alle mit E….&lt;br /&gt;
&lt;br /&gt;
[[Bild:MQTT2_8templateselect.png|400px|thumb|left|Das gewünschte Template auswählen, die Readings müssen allerdings in diesem Device enthalten sein]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Hier wird E_07_eBus_bai_Status01+Status02_HWC gewählt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Bild:MQTT2_5statustemplate.png|400px|thumb|left|Das Template hat die gewünschte Konfiguration in FHEM durchgeführt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Bild:MQTT2_6status1template.png|400px|thumb|left|Ergebnis des Template, Heizkurve und Warmwassertemperatur]]&lt;br /&gt;
Hier das Ergebnis von HC1HeatCurve+HWCTempDesired&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Muster Templates ====&lt;br /&gt;
&lt;br /&gt;
Es sind auch noch einige Mustertemplates vorhanden die auf Basis von readingsGroup erstellt wurden und ein farbiges Design besitzen. Diese Templates werden nicht im Device, sondern im Room „eBus“ angelegt.&lt;br /&gt;
Der Kreativität der Anwender sind hier fast keine Grenzen gesetzt, die Werkzeuge sind vorhanden.&lt;br /&gt;
&lt;br /&gt;
Template: E_05_eBus_bai_readingsgroup_Set_Hcurve_Hotwater&lt;br /&gt;
[[Bild:MQTT2_ebusset.png|250px|thumb|left|Set hcurve und HWCtemdesired]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Template: E_01_eBus_bai_readingsgroup_Status01&lt;br /&gt;
[[Bild:MQTT2_ebustemp.png|250px|thumb|left|Statusmeldung als Readingsgroup]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Template: E_02_eBus_bai_readingsgroup_Status01_Balken&lt;br /&gt;
[[Bild:MQTT2_ebustempbalken.png|400px|thumb|left|EStatusmeldung als Readingsgroup mit Balkenanzeige]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Template: E_03_eBus_bai_readingsgroup_Status02&lt;br /&gt;
[[Bild:MQTT2_ebuswarmwasser.png|250px|thumb|left|Statusmeldung als Readingsgroup]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Template: E_04_eBus_bai_readingsgroup_Status02_Balken&lt;br /&gt;
[[Bild:MQTT2_ebuswarmwasserbalken.png|400px|thumb|left|Statusmeldung als Readingsgroup mit Balkenanzeige]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Reinhart</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=MQTT2-Module_-_Praxisbeispiele&amp;diff=29852</id>
		<title>MQTT2-Module - Praxisbeispiele</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=MQTT2-Module_-_Praxisbeispiele&amp;diff=29852"/>
		<updated>2019-03-11T18:25:10Z</updated>

		<summary type="html">&lt;p&gt;Reinhart: /* Anwendung der Templates */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einführung: MQTT bzw. MQTT2 in FHEM ==&lt;br /&gt;
Zur Einbindung von Geräten, welche mit einem MQTT-Server (früher: Broker) kommunizieren können, stehen unter FHEM verschiedene Optionen zur Verfügung, wobei nicht alle Module beliebig miteinander verwendet werden können. Details hierzu sind dieser [[MQTT|Übersicht]] zu entnehmen. &lt;br /&gt;
&lt;br /&gt;
Im Rahmen dieses Artikels wird für die eigentlichen Geräte [[MQTT2 DEVICE]] verwendet, damit wird als IO-Device entweder {{Link2CmdRef|Anker=MQTT2_SERVER|Lang=en|Label=MQTT2_SERVER}} oder [[MQTT2 CLIENT|MQTT2_CLIENT]] oder benötigt, mit einem IO-Device des Typs [[MQTT (Modul)|MQTT]] funktioniert die nachfolgende Darstellung dagegen nicht&amp;lt;ref&amp;gt;Allerdings können die Konfigurationen in der Regel recht einfach auf die bisherige MQTT-Implementierung übertragen werden&amp;lt;/ref&amp;gt;. MQTT2_DEVICE unterstützt u.a. auch die &#039;&#039;setExtensions&#039;&#039; direkt, also z.B. &#039;&#039;on-for-timer&#039;&#039; sowie &#039;&#039;[[MQTT2-Module - Praxisbeispiele#attrTemplate_2|attrTemplate]]&#039;&#039;&amp;lt;ref&amp;gt;Auch MQTT_DEVICE unterstützt setExtensions, allerdings muß dies dort per Attribut eingeschaltet werden&amp;lt;/ref&amp;gt;.&lt;br /&gt;
{{Hinweis|Die nachfolgenden Beispiele gelingen am einfachsten mit MQTT2_SERVER als Server, für diesen sollte dabei &#039;&#039;autocreate&#039;&#039; aktiviert werden, damit die erforderlichen MQTT2_DEVICES soweit möglich automatisiert erstellt werden&amp;lt;ref&amp;gt;Dabei wird vorausgesetzt, dass ein allgemeines  autocreate-Device (TYPE=autocreate) ebenfalls aktiv ist&amp;lt;/ref&amp;gt;.}}{{Hinweis|Die Code-Darstellung in diesem Beitrag entspricht jeweils dem RAW-Format zum [[Import von Code Snippets]]. Wer die Attribute direkt und einzeln bearbeitet, muß ggf. die &amp;quot;\&amp;quot; entfernen!}}&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
 define MQTT2_FHEM_Server MQTT2_SERVER 1883 global&lt;br /&gt;
 attr MQTT2_FHEM_Server autocreate 1&lt;br /&gt;
&lt;br /&gt;
== zigbee2mqtt ==&lt;br /&gt;
[[Bild:MQTT2_zigbee2mqtt_Bulbs.png|400px|thumb|Darstellung in FHEMWEB]]&lt;br /&gt;
[https://github.com/Koenkk/zigbee2mqtt zigbee2mqtt] ist ein open-source Projekt, mit dem zigbee-Geräte über MQTT direkt angesprochen werden können, ohne dass hierfür eine Bridge eines Herstellers benötigt wird.&lt;br /&gt;
=== Installation von zigbee2mqtt ===&lt;br /&gt;
Die Installation des zigbee2mqtt-Diensts ist auf der Homepage des Projekts beschrieben. Ergänzend muß in der configuration.yaml eine &#039;&#039;client_id&#039;&#039; unter &#039;&#039;mqtt&#039;&#039; (z.B. zigbee_pi) vergeben werden&amp;lt;ref&amp;gt;Die Anführungszeichen sowie genau zwei Leerzeichen sind hier erforderlich!&amp;lt;/ref&amp;gt;.&lt;br /&gt;
 mqtt:&lt;br /&gt;
   client_id: &#039;zigbee_pi&#039;&lt;br /&gt;
Da der Dienst auch später in den Anlernmodus versetzt werden kann, kann man auch gleich &amp;lt;code&amp;gt;permit_join: false&amp;lt;/code&amp;gt; setzen, um das versehentliche Einbinden neuer oder fremder Geräte zu unterbinden.&lt;br /&gt;
&lt;br /&gt;
=== Define eines MQTT2-Devices als &amp;quot;Bridge&amp;quot; === &lt;br /&gt;
Dann kann eine Art &amp;quot;Grund-Device&amp;quot; angelegt werden, das für die Ansteuerung des eigentlichen Server-Dienstes genutzt wird, der bereits unmittelbar nach der erfolgreichen Konfiguration von zigbee2mqtt zur Verfügung steht. In der Regel sollte dieses automatisch erstellt werden, wenn der zigbee2mqtt-Dienst (oder der betreffende Rechner) neu gestartet wird (oder FHEM oder dort ein Sensor einen Messwert sendet). Beispiel&amp;lt;ref&amp;gt;Hier waren bereits zwei Zigbee-Geräte angelernt&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 defmod MQTT2_zigbee_pi MQTT2_DEVICE zigbee_pi&lt;br /&gt;
 attr MQTT2_zigbee_pi IODev MQTT2_FHEM_Server&lt;br /&gt;
 attr MQTT2_zigbee_pi IODev MQTT2_FHEM_Server&lt;br /&gt;
 attr MQTT2_zigbee_pi readingList zigbee_pi:zigbee2mqtt/bridge/state:.* state\&lt;br /&gt;
   zigbee_pi:zigbee2mqtt/0x90fd9ffffe65db16:.* { json2nameValue($EVENT, &#039;&#039;) }\&lt;br /&gt;
   zigbee_pi:zigbee2mqtt/0x90fd9ffffe0bcd51:.* { json2nameValue($EVENT, &#039;&#039;) }\&lt;br /&gt;
   zigbee_pi:zigbee2mqtt/bridge/log:.* { json2nameValue($EVENT, &#039;log_&#039;) }&lt;br /&gt;
 attr MQTT2_zigbee_pi room MQTT2_DEVICE&lt;br /&gt;
&lt;br /&gt;
Für die Funktion einer zigbee2mqtt-Bridge steht ein {{Link2CmdRef|Anker=set|Lang=en|Label=template}} bereit, das direkt die passenden Attribute vergibt, um dem zigbee2mqtt-Dienst passende Anweisungen geben zu können und weitere Geräte für die eigentlichen Aktoren und Sensoren anzulegen:&lt;br /&gt;
&lt;br /&gt;
 set MQTT2_zigbee_pi attrTemplate L_01_zigbee2mqtt_bridge&lt;br /&gt;
&lt;br /&gt;
Ist dieses angelegt, kann zigbee2mqtt mit &amp;lt;code&amp;gt;set MQTT2_zigbee_pi permit_join true&amp;lt;/code&amp;gt; in den Anlernmodus versetzt werden, anzulernende Geräte müssen anschließend jeweils nach Bedienungsanleitung in den Anlernmodus gebracht werden.&lt;br /&gt;
&lt;br /&gt;
=== Vereinzeln der eigentlichen Geräte ===&lt;br /&gt;
&lt;br /&gt;
Über das mit dem template vergebene bridgeRegexp-Attribut  &lt;br /&gt;
 attr MQTT2_zigbee_pi bridgeRegexp zigbee2mqtt/([A-Za-z0-9]*)[/]?.*:.* &amp;quot;zigbee_$1&amp;quot; &lt;br /&gt;
werden anschließend neue MQTT2_DEVICE-Geräte automatisch angelegt, sobald ein bisher unbekanntes Zigbee-Gerät einen neuen Status (z.B. einen Meßwert) meldet. Um zu erfragen, welche Geräte dem zigbee-Deinst bekannt sind, kann via &amp;lt;code&amp;gt;get MQTT2_zigbee_pi devicelist true&amp;lt;/code&amp;gt; eine Liste abgefragt werden, die weitere Informationen zu den bereits angelernten Geräten enthält.&lt;br /&gt;
Geräte, die nicht automatisch etwas senden, kann man mit Hilfe des MQTT2_SERVER-Geräts einmalig schalten, damit diese ihren Status bzw. das erfolgreiche Schalten zurückmelden, Beispiel&amp;lt;ref&amp;gt;Die mit 0x... beginnende Angabe entspricht dabei dem &#039;&#039;friendly_name&#039;&#039;.&amp;lt;/ref&amp;gt;:&lt;br /&gt;
 set MQTT2_FHEM_Server publish zigbee2mqtt/0x90fd9ffffe0bcd51/set {&amp;quot;state&amp;quot;:&amp;quot;ON&amp;quot;,&amp;quot;brightness&amp;quot;:60}&lt;br /&gt;
&lt;br /&gt;
Für Gerätetypen, für die bereits templates vorhanden sind, ist es am einfachsten, diese einmalig auf die Geräte anzuwenden. Das Vorgehen entspricht dabei dem oben für die Bridge beschriebenen. Dafür wird immer vorausgesetzt, dass ein neues Device mit autocreate (ggf. über die bridgeRegexp) angelegt wurde&amp;lt;ref&amp;gt;Dieses befindet sich dann im Raum MQTT2_DEVICE. Um diesen sichtbar zu machen, muß ggf. die Browser-Seite neu geladen werden.&amp;lt;/ref&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
==== IKEA-Tradfri-Birne ====&lt;br /&gt;
{{Randnotiz|RNTyp=g|RNText=Wie wähle ich nun das richtige Template für mein Leuchtmittel aus?&lt;br /&gt;
-&amp;gt; Es wird nicht zwischen einer Birne/Bulb/Lampe und einem LED-Controller unterschieden sondern anhand der möglichen Lichtdarstellung des Gerätes:&lt;br /&gt;
&lt;br /&gt;
light_dimmer:&lt;br /&gt;
Das anzusteuernde Geräte besitzt ausschließlich eine feste Lichtfarbe welche gedimmt werden kann.&lt;br /&gt;
&lt;br /&gt;
light_cct:&lt;br /&gt;
Das anzusteuernde Gerät besitzt eine warmweiße sowie kaltweiße Lichtfarbe welche verändert sowie gedimmt werden kann.&lt;br /&gt;
&lt;br /&gt;
light_rgb_xxx:&lt;br /&gt;
Das anzusteuernde Gerät besitzt die Möglichlichkeit einer farbigen Lichtdarstellung (Rot, Grün, Blau) und kann gedimmt werden.&lt;br /&gt;
&lt;br /&gt;
light_rgbw_xxx:&lt;br /&gt;
Das anzusteuernde Gerät besitzt die Möglichlichkeit einer farbigen Lichtdarstellung (Rot, Grün, Blau) und besitzt eine warmweiße ODER kaltweiße Lichtfarbe welche eingestellt sowie gedimmt werden kann.&lt;br /&gt;
&lt;br /&gt;
light_rgbcct_xxx:&lt;br /&gt;
Das anzusteuernde Gerät besitzt die Möglichlichkeit einer farbigen Lichtdarstellung (Rot, Grün, Blau) und besitzt eine warmweiße UND kaltweiße Lichtfarbe welche verändert sowie gedimmt werden kann.&lt;br /&gt;
   &lt;br /&gt;
   xxx:&lt;br /&gt;
      hex:   Farbänderung mit hex&lt;br /&gt;
      rgb:   Farbänderung mit r g b&lt;br /&gt;
      xy:   Farbänderung mit x sowie y&lt;br /&gt;
      hue:   Farbänderung mit hue und saturation&lt;br /&gt;
&lt;br /&gt;
Warum diese Einteilung in &amp;quot;hex&amp;quot;, &amp;quot;rgb&amp;quot;, &amp;quot;xy&amp;quot; sowie &amp;quot;hue&amp;quot;?&lt;br /&gt;
-&amp;gt; Zigbee2MQTT unterstützt das Übermitteln aller dieser Werte, allerdings unterscheiden sich hier die Geräte. Manche &amp;quot;verstehen&amp;quot; nur z.B. Hex-Farbänderungen, andere halt nur eine Farbänderung mit rgb-Werten.&lt;br /&gt;
-&amp;gt; Aus diesem Grund muss an dieser Stelle probiert werden mit welchem der 4 Templates sich die Farbveränderung des Gerätes steuern lässt!&lt;br /&gt;
&lt;br /&gt;
HINWEIS: Templates für Farbänderungen mithilfe von XY- sowie HUE-Werten wurden bis heute nicht angelegt!&lt;br /&gt;
}}&lt;br /&gt;
Beispiel eines dimmbaren Tradfri-Leuchtmittels&lt;br /&gt;
 defmod IKEA_Bulb2 MQTT2_DEVICE&lt;br /&gt;
 attr IKEA_Bulb2 IODev MQTT2_FHEM_Server&lt;br /&gt;
 attr IKEA_Bulb2 icon light_control&lt;br /&gt;
 attr IKEA_Bulb2 devStateIcon {zigbee2mqtt_devStateIcon255($name)}&lt;br /&gt;
 attr IKEA_Bulb2 readingList zigbee_pi:zigbee2mqtt/0x90fd9ffffe0bcd51:.* { json2nameValue($EVENT) }&lt;br /&gt;
 attr IKEA_Bulb2 setList on:noArg zigbee2mqtt/0x90fd9ffffe0bcd51/set {&amp;quot;state&amp;quot;:&amp;quot;ON&amp;quot;}\&lt;br /&gt;
     off:noArg zigbee2mqtt/0x90fd9ffffe0bcd51/set {&amp;quot;state&amp;quot;:&amp;quot;OFF&amp;quot;}\&lt;br /&gt;
     brightness:colorpicker,BRI,0,15,255 zigbee2mqtt/0x90fd9ffffe0bcd51/set {&amp;quot;state&amp;quot;:&amp;quot;on&amp;quot;,&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}&lt;br /&gt;
 attr IKEA_Bulb2 webCmd toggle:on:off:brightness&lt;br /&gt;
 attr IKEA_Bulb2 model L_02a_zigbee2mqtt_bulb&lt;br /&gt;
&lt;br /&gt;
Kann man auch die Farbtemperatur einstellen, wird die setList wie folgt erweitert oder das entsprechende template&amp;lt;ref&amp;gt;Durch die &#039;&#039;model&#039;&#039;-Angabe kann nachvollzogen werden, welches template angewendet wurde.&amp;lt;/ref&amp;gt; anwendet:&lt;br /&gt;
 ...&lt;br /&gt;
 color_temp:colorpicker,CT,250,1,454 zigbee2mqtt/0x90fd9ffffe0bcd51/set {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
Die templates sind dabei in der Regel so gestaltet, dass eventuell mehr Optionen in FHEMWEB erscheinen, als tatsächlich vorhanden oder erwünscht sind. &lt;br /&gt;
Da sich obige einfarbige dimmbare Lampe durch Klicken auf das devStateIcon schalten läßt, ist für die vollständige Ansteuerung bereits dieses webCmd hinreichend:&lt;br /&gt;
 attr IKEA_Bulb2 webCmd brightness&lt;br /&gt;
&lt;br /&gt;
==== Temp/Hum. Sensor ====&lt;br /&gt;
tbd&lt;br /&gt;
&lt;br /&gt;
==== Motion Sensor ====&lt;br /&gt;
Als MQTT-Server wird hier &#039;&#039;mosquitto&#039;&#039; verwendet, als IO-Device wird daher ein {{Link2CmdRef|Anker=MQTT2_CLIENT|Lang=en|Label=MQTT2_CLIENT}}-Gerät definiert: &lt;br /&gt;
&lt;br /&gt;
 defmod mqtt2_client MQTT2_CLIENT 192.168.2.4:1883&lt;br /&gt;
 attr mqtt2_client autocreate 1&lt;br /&gt;
 attr mqtt2_client rawEvents zigbee2mqtt/GB_Bewegungsmelder:.*&lt;br /&gt;
 attr mqtt2_client room test&lt;br /&gt;
 attr mqtt2_client subscriptions #&lt;br /&gt;
&lt;br /&gt;
Das eigentliche Device sieht dann so aus:&lt;br /&gt;
 defmod GB_Bewegungsmelder_MQTT2 MQTT2_DEVICE zigbee_158d0001f9d030&lt;br /&gt;
 attr GB_Bewegungsmelder_MQTT2 IODev mqtt2_client&lt;br /&gt;
 attr GB_Bewegungsmelder_MQTT2 devStateIcon motion:motion_detector@red off:motion_detector@green no_motion:motion_detector@green&lt;br /&gt;
 attr GB_Bewegungsmelder_MQTT2 icon motion_detector@blue&lt;br /&gt;
 attr GB_Bewegungsmelder_MQTT2 readingList mqtt2client:zigbee2mqtt/GB_Bewegungsmelder:.* { json2nameValue($EVENT) }&lt;br /&gt;
 attr GB_Bewegungsmelder_MQTT2 room MQTT2_DEVICE&lt;br /&gt;
 attr GB_Bewegungsmelder_MQTT2 stateFormat {\&lt;br /&gt;
 if(ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;occupancy&amp;quot;,0) eq &amp;quot;true&amp;quot;) {\&lt;br /&gt;
 	sprintf(&amp;quot;motion&amp;quot;);;\&lt;br /&gt;
 	} else {\&lt;br /&gt;
 	sprintf(&amp;quot;no_motion&amp;quot;);;	\&lt;br /&gt;
 	}\&lt;br /&gt;
 }&lt;br /&gt;
==== Anlegen von Zigbee2MQTT-Gruppen in FHEM ====&lt;br /&gt;
{{Hinweis|Die nachfolgende Darstellung ist vorläufig!}}&lt;br /&gt;
{{Hinweis|Bevor man eine Gruppe mithilfe von Zigbee2MQTT anlegen kann, sollte man sicherstellen, dass man über die aktuelleste Version von Zigbee2MQTT verfügt (min. vom 15. Februar 2019). Außerdem sollte auch der Koordinator (zumeist CC2531) die aktuellste Firmware besitzen (min. vom 15. Februar 2019). Falls ein flashen des Koordinators mit der neusten Firmware erfolgen soll, ist darauf zu achten, dass nach einem flashen alle Geräte neu angelernt werden müssen! (Hinweise zum flashen ohne erneutem anlernen sind hier zu finden: https://www.zigbee2mqtt.io/information/flashing_without_re-pairing.html)}}&lt;br /&gt;
&lt;br /&gt;
=====Erstellen einer Zigbee2MQTT-Gruppe=====&lt;br /&gt;
Bevor das Ganze in FHEM funktioniert, muss eine Gruppe in der &amp;quot;configuration.yaml&amp;quot; angelegt werden, dieser Vorgang ist auf folgender Seite beschrieben: https://www.zigbee2mqtt.io/information/groups.html&lt;br /&gt;
Wenn die Geräte anschließend über den FHEM MQTT2-Server der Gruppe hinzugefügen werden sollen, kann dies mit folgendem Befehl erfolgen:&lt;br /&gt;
 set &amp;lt;MQTT2-Server&amp;gt; publish zigbee2mqtt/bridge/group/&amp;lt;Zigbee2MQTT Friendly-Gruppenname&amp;gt;/add &amp;lt;Zigbee2MQTT Friendly-Gerätename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
 set MQTT2_FHEM_Server publish zigbee2mqtt/bridge/group/Wohnzimmer/add Stehlampe&lt;br /&gt;
&lt;br /&gt;
Dieser Befehl kann so oft verwendet werden, wie man Geräte zu einer Gruppe hinzufügen möchte.&lt;br /&gt;
&lt;br /&gt;
Zum Entfernen eines Gerätes aus einer Gruppe kann folgender Befehl verwendet werden:&lt;br /&gt;
 set &amp;lt;MQTT2-Server&amp;gt; publish zigbee2mqtt/bridge/group/&amp;lt;Zigbee2MQTT Friendly-Gruppenname&amp;gt;/remove &amp;lt;Zigbee2MQTT Friendly-Gerätename&amp;gt;&lt;br /&gt;
Beispiel:&lt;br /&gt;
 set MQTT2_FHEM_Server publish zigbee2mqtt/bridge/group/Wohnzimmer/remove Kuechenlampe&lt;br /&gt;
&lt;br /&gt;
=====Anlegen der Gruppe in FHEM=====&lt;br /&gt;
Da Gruppen in Zigbee2MQTT aktuell keine Rückmeldung über ihren Status geben, wird auch beim einmaligen Schalten kein Gerät automatisch in FHEM angelegt. Aus diesem Grund muss dies mit folgendem Befehl noch manuell erfolgen:&lt;br /&gt;
 defmod &amp;lt;FHEM NAME&amp;gt; MQTT2_DEVICE&lt;br /&gt;
Beispiel&lt;br /&gt;
 defmod lichtWohnzimmer MQTT2_DEVICE&lt;br /&gt;
Anschließend wird auch für dieses Gerät wieder ein passendes template ausgewählt, wie als wäre es ein normales Zigbee2MQTT-Gerät.&lt;br /&gt;
Im anschließenden Dialog-Fenster welches sich nach dem Setzen des templates öffnet, müssen die folgenden Werte durch passendes ersetzt werden:&lt;br /&gt;
 BASE_TOPIC -&amp;gt; zigbee2mqtt&lt;br /&gt;
 DEV_ID -&amp;gt; &amp;lt;Zigbee2MQTT Friendly-Gruppenname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach sollte sich die Gruppe wie ein normales Zigbee2MQTT Gerät steuern lassen.&lt;br /&gt;
&lt;br /&gt;
== Tasmota ==&lt;br /&gt;
[https://github.com/arendst/Sonoff-Tasmota Tasmota] (&#039;&#039;&#039;T&#039;&#039;&#039;heo &#039;&#039;&#039;A&#039;&#039;&#039;rends &#039;&#039;&#039;S&#039;&#039;&#039;onoff &#039;&#039;&#039;M&#039;&#039;&#039;QTT &#039;&#039;&#039;O&#039;&#039;&#039;ver &#039;&#039;&#039;T&#039;&#039;&#039;he &#039;&#039;&#039;A&#039;&#039;&#039;ir - einer offenen Firmware von [https://github.com/arendst arendst]) ist eine open-source Software für ESP8266-Geräte, die z.B. statt der originalen Firmware für Sonoff-Geräte und andere ESP8266-basierte WLAN-Steckdosen usw. verwendet werden kann. {{Randnotiz|RNTyp=r|RNText=Bitte beachten Sie, dass versicherungsrechtliche Probleme entstehen können, wenn die herstellereigene Firmware ersetzt wird!}}&lt;br /&gt;
&lt;br /&gt;
=== MQTT2_DEVICE ===&lt;br /&gt;
Dieses sollte bei aktiviertem &#039;&#039;autocreate&#039;&#039; am MQTT2_SERVER-Device automatisch angelegt werden, sobald das betreffende Gerät eingesteckt oder neu gestartet oder an einem evtl. vorhandenen Taster geschalten wird. Hier wurden Tasmota version(en) 6.1.1 und 6.2.1 getestet, Hardware war Sonoff Touch und S20.&lt;br /&gt;
&lt;br /&gt;
=== Manuelle Anpassungen ===&lt;br /&gt;
Die RAW-Definition kann dann beispielsweise wie folgt ergänzt werden:  &lt;br /&gt;
 defmod MQTT2_DVES_9B01BD MQTT2_DEVICE DVES_9B01BD&lt;br /&gt;
 attr MQTT2_DVES_9B01BD IODev m2server&lt;br /&gt;
 attr MQTT2_DVES_9B01BD readingList DVES_9B01BD:tele/sonoffkitchen/STATE:.* { json2nameValue($EVENT) }\&lt;br /&gt;
    DVES_9B01BD:tele/sonoffkitchen/LWT:.* LWT\&lt;br /&gt;
    DVES_9B01BD:cmnd/sonoffkitchen/POWER:.* POWER\&lt;br /&gt;
    DVES_9B01BD:tele/sonoffkitchen/UPTIME:.* { json2nameValue($EVENT) }\&lt;br /&gt;
    DVES_9B01BD:tele/sonoffkitchen/SENSOR:.* { json2nameValue($EVENT) }\&lt;br /&gt;
    DVES_9B01BD:tele/sonoffkitchen/INFO1:.* { json2nameValue($EVENT) }\&lt;br /&gt;
    DVES_9B01BD:tele/sonoffkitchen/INFO2:.* { json2nameValue($EVENT) }\&lt;br /&gt;
    DVES_9B01BD:tele/sonoffkitchen/INFO3:.* { json2nameValue($EVENT) }\&lt;br /&gt;
    DVES_9B01BD:stat/sonoffkitchen/RESULT:.* { json2nameValue($EVENT) }\&lt;br /&gt;
    DVES_9B01BD:stat/sonoffkitchen/STATE:.* { json2nameValue($EVENT) }&lt;br /&gt;
 attr MQTT2_DVES_9B01BD room MQTT2_DEVICE&lt;br /&gt;
 attr MQTT2_DVES_9B01BD setList on cmnd/sonoff/POWER on\&lt;br /&gt;
    off cmnd/sonoff/POWER off\&lt;br /&gt;
    reboot cmnd/sonoff/Restart 1&lt;br /&gt;
 attr MQTT2_DVES_9B01BD webCmd on:off:reboot&lt;br /&gt;
&lt;br /&gt;
=== attrTemplate ===&lt;br /&gt;
Für gängige Tasmota-Geräte stehen &#039;&#039;templates&#039;&#039; bereit, mit denen sich diese schnell konfigurieren lassen. &lt;br /&gt;
Beachten Sie dazu den Abschnitt &#039;&#039;attrTemplate&#039;&#039; in [[MQTT2 DEVICE#attrTemplate|MQTT2_DEVICE]]. Bei Anwendung eines template mit &amp;quot;split&amp;quot; im Namen werden dabei weitere Geräte angelegt und konfiguriert.&lt;br /&gt;
&lt;br /&gt;
== Shelly ==&lt;br /&gt;
=== Vorbemerkung ===&lt;br /&gt;
Auch für Shelly-Geräte steht eine Auswahl an [[MQTT2-Module - Praxisbeispiele#attrTemplate_2|templates]] bereit.&lt;br /&gt;
Beachten Sie auch hier, dass uU. bei Anwendung eines template mit &amp;quot;split&amp;quot; im Namen weitere Geräte angelegt und konfiguriert werden.&lt;br /&gt;
&lt;br /&gt;
=== Shelly1 ===&lt;br /&gt;
&lt;br /&gt;
=== Shellybulb ===&lt;br /&gt;
Zunächst muss man einen Statusupdate des Shellybulb erzwingen (Aus- und Einschalten, physikalisch oder per Web-UI), damit das Gerät bei eingeschaltetem autocreate  angelegt wird. Dies sieht zunächst so aus:&lt;br /&gt;
 Internals:&lt;br /&gt;
   CFGFN     &lt;br /&gt;
   CID        shellybulb_3CC533&lt;br /&gt;
   DEF        shellybulb_3CC533&lt;br /&gt;
   DEVICETOPIC MQTT2_shellybulb_3CC533&lt;br /&gt;
   IODev      MQTT2_FHEM_Server&lt;br /&gt;
   NAME       MQTT2_shellybulb_3CC533&lt;br /&gt;
   NR         246&lt;br /&gt;
   STATE      ???&lt;br /&gt;
   TYPE       MQTT2_DEVICE&lt;br /&gt;
   READINGS:&lt;br /&gt;
     2018-12-12 19:28:08   status_blue     0&lt;br /&gt;
     2018-12-12 19:28:08   status_brightness 61&lt;br /&gt;
     2018-12-12 19:28:08   status_effect   0&lt;br /&gt;
     2018-12-12 19:28:08   status_gain     26&lt;br /&gt;
     2018-12-12 19:28:08   status_green    0&lt;br /&gt;
     2018-12-12 19:28:08   status_ison     true&lt;br /&gt;
     2018-12-12 19:28:08   status_mode     color&lt;br /&gt;
     2018-12-12 19:28:08   status_red      255&lt;br /&gt;
     2018-12-12 19:28:08   status_temp     3250&lt;br /&gt;
     2018-12-12 19:28:08   status_white    0&lt;br /&gt;
 Attributes:&lt;br /&gt;
   IODev      MQTT2_FHEM_Server&lt;br /&gt;
   readingList shellybulb_3CC533:shellies/shellybulb-3CC533/color/0/status:.* { json2nameValue($EVENT, &#039;status_&#039;) }&lt;br /&gt;
   room       MQTT2_DEVICE&lt;br /&gt;
[[Bild:MQTT2 Shellybulb.png|400px|thumb|Darstellung in FHEMWEB nach Anwendung des template]]Dann bei den set-Anweisungen das attrTemplate &amp;quot;shellybulb&amp;quot; auswählen und setzen. Es erscheint eine Abfrage, ob die vorhandenen Readings gelöscht werden sollen. Diese bitte bestätigen und die Seite neu laden. Danach einmal An- und Ausschalten, damit die Readings auch durch einen neuen Status initialisiert werden und die Seite im Browser neu laden.&lt;br /&gt;
&lt;br /&gt;
== Milight-Bridge ==&lt;br /&gt;
=== Vorbemerkung ===&lt;br /&gt;
Der [https://github.com/sidoh/esp8266_milight_hub esp8266_milight_hub] ist ein open source- Projekt, mit dem auf Basis von &#039;&#039;openmili&#039;&#039; eine Vielzahl von MiLight-Geräten gesteuert werden können. Der MiLight-Hub erstetzt dabei eine beliebige Zahl von Milight-Bridges und ist auch zu verschiedenen Versionen des MiLight-Protokols kompatibel.&lt;br /&gt;
Neben MQTT kann dieser auch mit HTTPMOD oder Wifilight (bzw. den MiLight-Modulen) gesteuert werden. Die Hardware entspricht dabei im Wesentlichen einem MySensors-Wifi-Gateway&amp;lt;ref&amp;gt;Es wird lediglich ein anderer CS-PIN genutzt. Dies kann einfach in der Web-Oberfläche der Firmware umgestellt werden.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
Hier wird vorausgesetzt, dass eine funktionierende Bridge vorhanden ist.&lt;br /&gt;
Der Vorteil der MQTT-Lösung liegt darin, dass man bei kompatiblen Fernbedienungen auch direkt Informationen über Schaltvorgänge erhält, die mit der Fernbedienung ausgelöst werden.&lt;br /&gt;
&lt;br /&gt;
=== Einstellungen am MiLight-Hub ===&lt;br /&gt;
Die zum FHEM-Server bzw. dem MQTT2_SERVER passenden Vorgaben sind im Web-Interface des Hub einzustellen. Gegebenenfalls passen Sie die vom Hub zurückzugebenden Elemente im Web-Interface des Hub an.&lt;br /&gt;
&lt;br /&gt;
=== FHEM-Devices ===&lt;br /&gt;
[[Bild:MQTT2 MiLight.png|400px|thumb|Milight: Darstellung in FHEMWEB]]&lt;br /&gt;
==== Bridge ====&lt;br /&gt;
Wird nun über den Hub oder eine von diesem erkannte Fernbedienung ein vorhandenes Leuchtmittel geschaltet, wird bei eingeschaltetem autocreate ein erstes Device erstellt, die zunächst erstellte Definition sieht typischerweise etwa so aus:&lt;br /&gt;
 defmod MQTT2_milight_hub_1370325 MQTT2_DEVICE milight_hub_1370325&lt;br /&gt;
 attr MQTT2_milight_hub_1370325 IODev MQTT2_FHEM_Server&lt;br /&gt;
 attr MQTT2_milight_hub_1370325 readingList milight_hub_1370325:milight/updates/0xBE59/rgbw/1:.* { json2nameValue($EVENT, &#039;1_&#039;, $JSONMAP) }&lt;br /&gt;
 attr MQTT2_milight_hub_1370325 room MQTT2_DEVICE&lt;br /&gt;
&lt;br /&gt;
Auf dieses Device wird nun das &#039;&#039;template&#039;&#039; X_01_esp_milight_hub_bridge angewandt.&lt;br /&gt;
&lt;br /&gt;
==== Einzelne Leuchtmittel ====&lt;br /&gt;
&lt;br /&gt;
Wird nun nochmals das oben verwendete Leuchtmittel geschaltet, erstellt autocreate ein weiteres Device:&lt;br /&gt;
 defmod MQTT2_milight_0xBE59_1 MQTT2_DEVICE milight_0xBE59_1&lt;br /&gt;
 attr MQTT2_milight_0xBE59_1 IODev MQTT2_FHEM_Server&lt;br /&gt;
 attr MQTT2_milight_0xBE59_1 readingList milight/states/0xBE59/rgbw/1:.* { json2nameValue($EVENT, &#039;1_&#039;, $JSONMAP) }&lt;br /&gt;
 attr MQTT2_milight_0xBE59_1 room MQTT2_DEVICE&lt;br /&gt;
&lt;br /&gt;
Auf dieses wird nun eines der Bulb-templates angewendet. Wählt man das template X_01_esp_milight_hub_rgbw_bulb, wird eine einfache Variante erstellt, die neben einem toggelnden Icon nur Regler für Helligkeit, die Farbe und zwei Schaltflächen für den Weiß- und Nachtmodus enthält. Wer mehr oder andere Steuerelemente erhalten möchte, verwendet ein anderes template. Nicht benötigte Elemente kann man dabei einfach aus der Definition löschen.&lt;br /&gt;
&lt;br /&gt;
Alle weiteren Devices werden genauso erstellt. &lt;br /&gt;
&lt;br /&gt;
Um ein Device zu erhalten, mit dem sich alle Kanäle gleichzeitig steuern lassen, kann das template &#039;&#039;X_01a_esp_milight_hub_make_rgbw_group&#039;&#039; verwendet werden. Dieses verändert nicht das aktuelle Device, sondern erstellt &#039;&#039;&#039;eine Kopie&#039;&#039;&#039;, die dann modifiziert wird. Diese Kopie ist unter dem Namen &#039;&#039;milight_&amp;lt;RemoteID&amp;gt;_0&#039;&#039; im selben Raum zu finden wie das Ausgangsgerät und kann ebenfalls an die eigenen Wünsche angepaßt werden. &lt;br /&gt;
&lt;br /&gt;
Weitere Beispiele:&lt;br /&gt;
Beispiel für ein RGB-CCT-Device:&lt;br /&gt;
 defmod Licht_Wz_all MQTT2_DEVICE&lt;br /&gt;
 attr Licht_Wz_all IODev MQTT2_Broker&lt;br /&gt;
 attr Licht_Wz_all eventMap /set_white:Weiss/night_mode:Nacht/white_mode:white/on:on/off:off/ON:on/OFF:off/next_mode:Mode/mode_speed_up:Up/mode_speed_down:Down/&lt;br /&gt;
 attr Licht_Wz_all group Licht&lt;br /&gt;
 attr Licht_Wz_all icon light_control&lt;br /&gt;
 attr Licht_Wz_all readingList milight_hub_10693013:milight/0x5D02/rgb_cct/0:.* { json2nameValue($EVENT) }\&lt;br /&gt;
 milight_hub_10693013:milight/updates/0x5D02/rgb_cct/0:.* { json2nameValue($EVENT) }\&lt;br /&gt;
 milight_hub_10693013:milight/states/0x5D02/rgb_cct/0:.* { json2nameValue($EVENT) }\&lt;br /&gt;
 &lt;br /&gt;
 attr Licht_Wz_all room Wohnzimmer&lt;br /&gt;
 attr Licht_Wz_all setList on milight/0x5D02/rgb_cct/0 {&amp;quot;status&amp;quot;:&amp;quot;ON&amp;quot;}\&lt;br /&gt;
 off milight/0x5D02/rgb_cct/0 {&amp;quot;status&amp;quot;:&amp;quot;OFF&amp;quot;}\&lt;br /&gt;
 level milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 hue:colorpicker,HUE,0,1,359 milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 command:uzsuSelectRadio,Weiss,Nacht,Mode,Up,Down milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 brightness:colorpicker,BRI,0,1,255 milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 next_mode milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 mode_speed_up milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 mode_speed_down milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 saturation:colorpicker,BRI,0,1,100 milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 color_temp:colorpicker,CT,153,1,370 milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 device_id milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 effect milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 mode milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 commands milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}&lt;br /&gt;
 attr Licht_Wz_all sortby 1&lt;br /&gt;
 attr Licht_Wz_all webCmd command:brightness:saturation:color_temp:hue&lt;br /&gt;
 attr Licht_Wz_all webCmdLabel command\ &lt;br /&gt;
 :brightness:saturation\&lt;br /&gt;
 :color_temp:hue&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== eBus ==&lt;br /&gt;
=== eBus mit MQTT2 auswerten ===&lt;br /&gt;
&lt;br /&gt;
Für die MQTT Kommunikation des eBus wird für die eigentlichen Geräte MQTT2 DEVICE verwendet, damit wird als IO-Device entweder MQTT2_SERVER oder MQTT2_CLIENT verwendet, NICHT beides gleichzeitig!&lt;br /&gt;
Bitte auch zu beachten, die alten Module MQTT funktionieren nicht nach der Beschreibung in diesem Artikel. Es geht hier um die komplett überarbeitete Version mit dem Namen MQTT2!&lt;br /&gt;
&lt;br /&gt;
Bei der hier beschriebenen Konfiguration der angelegten Devices muss unbedingt die Reihenfolge eingehalten werden.&lt;br /&gt;
&lt;br /&gt;
=== Anwendung: ===&lt;br /&gt;
Wer eBus komfortabel in FHEM einbinden will, kann dies nun erstmals mit wenigen Mausklicks realisieren. Erstmalig kommt diese neue Technik der von rudolfkönig implementierten Templates zur Anwendung. Templates sind im Prinzip vorgefertigte Schablonen die durch Anklicken dann selbständig den Device mit den darin enthaltenen Vorgaben konfigurieren. Beta-User hat diese Technik dann soweit für den eBus angepasst ( unter anderem die Filter erstellt ) , das sie allen eBus Anwendern zur Verfügung steht. Es kann nun jeder selbst Templates erstellen oder einfach die von mir erstellten vorhandenen Beispiele benutzen. In wenigen Minuten sollte die komplette FHEM Konfiguration dann abgeschlossen sein.&lt;br /&gt;
&lt;br /&gt;
Wer bereits einen Mosquitto Broker installiert hat, kann diesen weiter verwenden, ist aber für die Komunikation mit dem eBus Dämon nicht mehr notwendig!&lt;br /&gt;
&lt;br /&gt;
[[Bild:MQTT2_MQTT2.jpg|600px|thumb|left|Uebersicht eBus MQTT]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Welches FHEM Modul benötigt man ===&lt;br /&gt;
{{Randnotiz|RNTyp=r|RNText=Nicht MQTT2_SERVER und Mosquitto gleichzeitig laufen lassen, es kann zu verschiedenen Problemen kommen wie gegenseitiges Löschen von Einträgen in FHEM.}}&lt;br /&gt;
Beispiel: Mosquitto Broker ist vorhanden&lt;br /&gt;
dann benötigt man MQTT2_DEVICE und MQTT2_CLIENT&lt;br /&gt;
&lt;br /&gt;
Beispiel: Mosquitto Broker ist NICHT vorhanden&lt;br /&gt;
dann benötigt man MQTT2_DEVICE und MQTT2_SERVER&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitung und Definition am eBus ===&lt;br /&gt;
In der Konfiguration des Dämons ( /etc/default/ebusd ) sollten diese Parameter hinzugefügt werden. Die Topic „ebusd/%circuit/%name“ bitte nicht abändern, da verschiedene Filter auf diesen Ausdruck eingestellt sind.&lt;br /&gt;
 --accesslevel=* --mqttport=1883 --mqttjson --mqtthost=IpAdresseMQTTSERVER --mqtttopic=ebusd/%circuit/%name&lt;br /&gt;
Der MQTTSERVER kann wahlweise der Mosquitto Broker sein, oder der MQTT2_SERVER. Beides wird vermutlich am Raspberry der FHEM Hauptinstanz sein, also die IP-Adresse des Raspberry einsetzen.&lt;br /&gt;
&lt;br /&gt;
{{Hinweis|Nachfolgend wird davon ausgegangen, dass als Vorgabe für mqtttopic &#039;&#039;ebusd&#039;&#039; verwendet wurde. Dies kann geändert werden, es wird aber dringend empfohlen, das mqtttopic in jedem Fall mit &#039;&#039;ebus...&#039;&#039; zu beginnen!}}&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitung und Definition  in FHEM ===&lt;br /&gt;
&lt;br /&gt;
Unabhängig von dem konkret genutzten IO-Modul (MQTT2_SERVER oder MQTT2_CLIENT) sollte an diesem &#039;&#039;&#039;&#039;&#039;vor&#039;&#039;&#039;&#039;&#039; den nachfolgenden Schritten zunächst das autocreate ausgeschaltet werden. Weiter sollte geprüft werden, ob es bereits MQTT2_DEVICE-Geräte gibt, die Einträge in der readingList enthalten, die vom ebus stammen. Da wir die readingList anschließend mit erweiterten JSON-Optionen erstellen wollen, müssen entweder diese Geräte nach dem Deaktivieren des autocreate am IO gelöscht, oder zumindest die readingList entsprechend bereinigt oder gelöscht werden.&lt;br /&gt;
&lt;br /&gt;
==== Externer Broker ====&lt;br /&gt;
Wer bereits den Mosquitto installiert hat und diesen weiter verwenden möchte, dann diese Konfiguration wählen.&lt;br /&gt;
 ### 1a. Broker in FHEM anlegen ###&lt;br /&gt;
 define MQTT_via_mosquitto MQTT2_CLIENT 127.0.0.1:1883&lt;br /&gt;
 attr MQTT_via_mosquitto room MQTT2_DEVICE,System&lt;br /&gt;
==== FHEM-Interner Server ====&lt;br /&gt;
Wer keinen Mosquitto installiert hat kann diese Konfiguration wählen. Dazu wird einfach der MQTT2-SERVER definiert.&lt;br /&gt;
&lt;br /&gt;
 ### 1b. oder MQTT Server  anlegen ###&lt;br /&gt;
 define ebusMQTT MQTT2_SERVER 1883 global&lt;br /&gt;
 attr ebusMQTT room MQTT2_SERVER&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;ebus-Bridge&amp;quot; ====&lt;br /&gt;
Nun wird noch ein Device benötigt, welcher mit einem der oben genannten Module kommuniziert und das Filter (bridgeRegexp) für den eBus beinhaltet. Auf Basis dieses Device werden später alle ankommenden JSON Telegramme vom eBus Dämon automatisch als Reading angelegt.&lt;br /&gt;
&lt;br /&gt;
 ### 2. MQTT_Device definieren&lt;br /&gt;
 define MQTT2_ebusd MQTT2_DEVICE ebusd&lt;br /&gt;
 attr MQTT2_ebusd IODev ebusMQTT&lt;br /&gt;
 attr MQTT2_ebusd room MQTT2_DEVICE&lt;br /&gt;
&lt;br /&gt;
Es kann auch ein ggf. vom MQTT2_SERVER bereits automatisch angelegtes Device genutzt werden, bei Verwendung von MQTT2_CLIENT sollte das Device wie oben dargestellt manuell erstellt werden; es ist dabei darauf zu achten, dass die CID dem Basispfad des Topic-trees entspricht, der bei der Konfiguration des ebus-Dämons verwendet wurde. &lt;br /&gt;
&lt;br /&gt;
Auf das Device MQTT2_ebusd wird nun folgendes Template angwendet:&lt;br /&gt;
&lt;br /&gt;
[[Bild:MQTT2_1template E_00 installieren.png|400px|thumb|left|Template E_00_eBus_daemon_splitter]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Bild:MQTT2_2splitter.png|400px|thumb|left|Eingabe im Splitter aendern]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Gibt es noch keine readingList mit ebus-spezifischen Einträgen, erscheint ein Fenster. In diesem kann der Name ausgewählt werden, gebt hier anstatt DEV_ID „ebus“ ein und drückt „ok“&lt;br /&gt;
&lt;br /&gt;
Zur Kontrolle bitte prüfen ob hier auch die „bridgeRegexp“ vom Template richtig gesetzt wurde.&lt;br /&gt;
&lt;br /&gt;
[[Bild:MQTT2_3Attribute_ebusd.png|400px|thumb|left|bridgeRegexp prüfen]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 (ebus.)[^/]*/(bai|broadcast)/.*:.* &amp;quot;$1_bai&amp;quot;&lt;br /&gt;
 (ebus.)[^/]*/([\d]+)/.*:.* &amp;quot;$1_$2&amp;quot;&lt;br /&gt;
 (ebus.)[^/]*[/][^b][a-zA-Z]+[/].*:.* &amp;quot;$1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Nach der Konfiguration des bridge-Devices muß autocreate am IO-Device wieder aktiviert werden. Da hierbei die vom ebus-Dämon gesendeten JSON-Informationen in vielen Installationen nur sinnvoll genutzt werden können, wenn die Statusmeldungen jeweils getrennt dargestellt werden, setzen wir auf dem MQTT2_SERVER oder dem MQTT2_CLIENT ( je nachdem welcher verwendet wurde) das Attribut „autocreate“ auf „complex“.&lt;br /&gt;
&lt;br /&gt;
[[Bild:MQTT2_4autocreate-complex.png|400px|thumb|left|autocreate auf complex setzen]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Complex hat den Sinn, das JSONMAP mit dem Namen des Readings automatisch gesetzt wird.&lt;br /&gt;
Statt dem Reading 0_value wird daraus dann ein Stautus01_0_value. Dies ist gerade bei den Statusmeldungen wichtig, da sie sich sonst mit gleichem Readingnamen gegenseitig überschreiben.&lt;br /&gt;
&lt;br /&gt;
Nun heißt es etwas zurück lehnen und warten bis die MQTT Telegramme vom eBus eingetroffen sind, das kann einige Minuten dauern. Dabei wird in der Regel sowohl die readingList am Device &#039;&#039;MQTT2_ebusd&#039;&#039; erweitert, wie auch ein oder mehrere neue MQTT2_DEVICE-Geräte angelegt.&lt;br /&gt;
&lt;br /&gt;
==== myUtils-Code ====&lt;br /&gt;
Nun benötigen wir noch etwas Code für die Balkendarstellung in FHEM. Dieser Code wird in die 99_myUtils.pm kopiert.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
 sub Balkenanzeige($) &lt;br /&gt;
 {&lt;br /&gt;
    # Zuweisung der übergebenen Variablen&lt;br /&gt;
    my ($val) = @_;&lt;br /&gt;
    # Konfiguration des maximal übergebenen Werts (hier wäre der höchste zu erwartende Wert = 3)&lt;br /&gt;
    my $maxValue = 70;&lt;br /&gt;
    # Normalisierung auf 100%-Wert&lt;br /&gt;
    my $percent = $val / $maxValue * 100;&lt;br /&gt;
    # Definition des valueStyles&lt;br /&gt;
    my $stylestring = &#039;style=&amp;quot;&#039;.&lt;br /&gt;
        &#039;width: 200px; &#039;.&lt;br /&gt;
	&#039;text-align:center; &#039;.&lt;br /&gt;
	&#039;border: 1px solid #ccc ;&#039;. &lt;br /&gt;
	&#039;background-image: -webkit-linear-gradient(left,red &#039;.$percent.&#039;%, rgba(0,0,0,0) &#039;.$percent.&#039;%); &#039;.&lt;br /&gt;
	&#039;background-image:    -moz-linear-gradient(left,blue &#039;.$percent.&#039;%, rgba(0,0,0,0) &#039;.$percent.&#039;%); &#039;. &lt;br /&gt;
	&#039;background-image:     -ms-linear-gradient(left,red &#039;.$percent.&#039;%, rgba(0,0,0,0) &#039;.$percent.&#039;%); &#039;. &lt;br /&gt;
	&#039;background-image:      -o-linear-gradient(left,red &#039;.$percent.&#039;%, rgba(0,0,0,0) &#039;.$percent.&#039;%); &#039;. &lt;br /&gt;
	&#039;background-image:         linear-gradient(left,red &#039;.$percent.&#039;%, rgba(0,0,0,0) &#039;.$percent.&#039;%);&amp;quot;&#039;;&lt;br /&gt;
    # Rückgabe des definierten Strings&lt;br /&gt;
    return $stylestring;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ebenfalls muss noch das Modul Color.pm ordnungsgemäß eingebunden werden. Dieses Modul wird zur farbigen Darstellung wie es in den Templates verwendet wird benötigt.&lt;br /&gt;
 define colorInit notify global:INITIALIZED {use Color}&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
==== Regelmäßige Werteabfrage ====&lt;br /&gt;
&lt;br /&gt;
Es kann aber in der Zwischenzeit noch die Timer gesteuerte Abfrage definiert werden.&lt;br /&gt;
&lt;br /&gt;
 define EBUS.TIMER at +*00:15:00 set ebusMQTT publish ebusd/430/Hc1HeatCurve/get;&lt;br /&gt;
 set ebusMQTT publish ebusd/430/HwcTempDesired/get;&lt;br /&gt;
 set ebusMQTT publish ebusd/bai/WaterPressure/get;&lt;br /&gt;
 set ebusMQTT publish ebusd/bai/FlowTemp/get;&lt;br /&gt;
 set ebusMQTT publish ebusd/bai/ReturnTemp/get;&lt;br /&gt;
 set ebusMQTT publish ebusd/bai/OutdoorstempSensor/get;&lt;br /&gt;
 set ebusMQTT publish ebusd/bai/Status02/get&lt;br /&gt;
&lt;br /&gt;
Diese „get“ sind nur Beispiele, wer weitere Readings abfragen möchte einfach die Liste in der FHEM Eingabe erweitern. Ebenfalls kann der Timer auf persönliche Bedürfnisse angepasst werden.&lt;br /&gt;
&lt;br /&gt;
=== ebus-Spezifische weitere Templates ===&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&lt;br /&gt;
Um die eBus Templates benutzen zu können, müssen sie erst im Verzeichnis „/opt/fhem/FHEM/lib/AttrTemplate“ installiert werden. Hier kann das Mustertemplate „{{Link2Forum|Topic=79600|LinkText=mqtt2.ebus.template}}“ herunter geladen werden. Dieses Template dann in das Verzeichnis kopieren. &lt;br /&gt;
Vor der erstmaligen Benutzung muss dieses template noch Initialisiert werden, sonst wird es in der Templateliste nicht angezeigt.&lt;br /&gt;
&lt;br /&gt;
[[Bild:MQTT2_7templateinitialize.png|400px|thumb|left|vor der ersten Benutzung in der Eingabezeile eingeben]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Dazu in der FHEM Eingabezeile eingeben:&lt;br /&gt;
 { AttrTemplate_Initialize() }&lt;br /&gt;
&lt;br /&gt;
==== Anwendung der Templates ====&lt;br /&gt;
&lt;br /&gt;
Wenn bereits die ersten Messwerte eingetroffen sind und die Devices mit den Readings angelegt wurden, können die Templates angelegt werden. D.h. in der Templateliste das gewünschte auswählen (hier MQTT2_ebusd_bai). Die eBus Templates beginnen alle mit E….&lt;br /&gt;
&lt;br /&gt;
[[Bild:MQTT2_8templateselect.png|400px|thumb|left|Das gewünschte Template auswählen, die Readings müssen allerdings in diesem Device enthalten sein]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Hier wird E_07_eBus_bai_Status01+Status02_HWC gewählt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Bild:MQTT2_5statustemplate.png|400px|thumb|left|Das Template hat die gewünschte Konfiguration in FHEM durchgeführt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Bild:MQTT2_6status1template.png|400px|thumb|left|Ergebnis des Template, Heizkurve und Warmwassertemperatur]]&lt;br /&gt;
Hier das Ergebnis von HC1HeatCurve+HWCTempDesired&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Muster Templates ====&lt;br /&gt;
&lt;br /&gt;
Es sind auch noch einige Mustertemplates vorhanden die auf Basis von readingsGroup erstellt wurden und ein farbiges Design besitzen. Diese Templates werden nicht im Device, sondern im Room „eBus“ angelegt.&lt;br /&gt;
Der Kreativität der Anwender sind hier fast keine Grenzen gesetzt, die Werkzeuge sind vorhanden.&lt;br /&gt;
&lt;br /&gt;
Template: E_05_eBus_bai_readingsgroup_Set_Hcurve_Hotwater&lt;br /&gt;
[[Bild:MQTT2_ebusset.png|250px|thumb|left|Set hcurve und HWCtemdesired]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Template: E_01_eBus_bai_readingsgroup_Status01&lt;br /&gt;
[[Bild:MQTT2_ebustemp.png|250px|thumb|left|Statusmeldung als Readingsgroup]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Template: E_02_eBus_bai_readingsgroup_Status01_Balken&lt;br /&gt;
[[Bild:MQTT2_ebustempbalken.png|400px|thumb|left|EStatusmeldung als Readingsgroup mit Balkenanzeige]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Template: E_03_eBus_bai_readingsgroup_Status02&lt;br /&gt;
[[Bild:MQTT2_ebuswarmwasser.png|250px|thumb|left|Statusmeldung als Readingsgroup]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Template: E_04_eBus_bai_readingsgroup_Status02_Balken&lt;br /&gt;
[[Bild:MQTT2_ebuswarmwasserbalken.png|400px|thumb|left|Statusmeldung als Readingsgroup mit Balkenanzeige]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Allgemeine Hinweise ==&lt;br /&gt;
=== MQTT2_SERVER und MQTT2_CLIENT für Debugging nutzen ===&lt;br /&gt;
Nutzt man das rawEvents-Attribut am MQTT2-IO&amp;lt;ref&amp;gt;z.B. &amp;lt;code&amp;gt;attr MQTT2_FHEM_Server rawEvents .*&amp;lt;/code&amp;gt;, der regex-Filter kann wie üblich angepaßt werden&amp;lt;/ref&amp;gt;, kann man den Datenverkehr des Servers am Event-Monitor mitschneiden. Dies ist insbesondere für unbekannte Geräte nützlich, deren Topic- und Payload-Struktur noch nicht bekannt ist.&lt;br /&gt;
Um den kompletten MQTT Datenaustausch mitzuschneiden, kann man mit &amp;lt;code&amp;gt;attr mqtt2_server verbose 5&amp;lt;/code&amp;gt; auch alles ins FHEM-Log schreiben lassen.&lt;br /&gt;
&lt;br /&gt;
=== attrTemplate ===&lt;br /&gt;
Zur Konfiguration von MQTT2_DEVICE-Geräten kann die Funktion &#039;&#039;attrTemplate&#039;&#039; genutzt werden. &lt;br /&gt;
Die Anwendung ist [[MQTT2 DEVICE#attrTemplate|hier]] beschrieben.&lt;br /&gt;
== Links ==&lt;br /&gt;
* {{Link2Forum|Topic=91394|LinkText=Thread, aus dem diese Anleitung ursprünglich entstanden ist}}&lt;br /&gt;
* {{Link2Forum|Topic=91807|LinkText=Thread zum Tasmota-Device}}&lt;br /&gt;
* {{Link2Forum|Topic=97989|LinkText=Thread, aus dem diese Anleitung für den eBus ursprünglich entstanden ist}}&lt;br /&gt;
* {{Link2Forum|Topic=94495|LinkText=Neue templates einreichen}}&lt;br /&gt;
* {{Link2Forum|Topic=94494|LinkText=Fragen, Wünsche und Kritik zu mqtt2.template}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Hinweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
[[Kategorie:MQTT]]&lt;br /&gt;
[[Kategorie:ZigBee]]&lt;br /&gt;
[[Kategorie:IP Components|IP Komponenten]]&lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:Interfaces]]&lt;/div&gt;</summary>
		<author><name>Reinhart</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=MQTT2-Module_-_Praxisbeispiele&amp;diff=29851</id>
		<title>MQTT2-Module - Praxisbeispiele</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=MQTT2-Module_-_Praxisbeispiele&amp;diff=29851"/>
		<updated>2019-03-11T18:22:47Z</updated>

		<summary type="html">&lt;p&gt;Reinhart: /* Regelmäßige Werteabfrage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einführung: MQTT bzw. MQTT2 in FHEM ==&lt;br /&gt;
Zur Einbindung von Geräten, welche mit einem MQTT-Server (früher: Broker) kommunizieren können, stehen unter FHEM verschiedene Optionen zur Verfügung, wobei nicht alle Module beliebig miteinander verwendet werden können. Details hierzu sind dieser [[MQTT|Übersicht]] zu entnehmen. &lt;br /&gt;
&lt;br /&gt;
Im Rahmen dieses Artikels wird für die eigentlichen Geräte [[MQTT2 DEVICE]] verwendet, damit wird als IO-Device entweder {{Link2CmdRef|Anker=MQTT2_SERVER|Lang=en|Label=MQTT2_SERVER}} oder [[MQTT2 CLIENT|MQTT2_CLIENT]] oder benötigt, mit einem IO-Device des Typs [[MQTT (Modul)|MQTT]] funktioniert die nachfolgende Darstellung dagegen nicht&amp;lt;ref&amp;gt;Allerdings können die Konfigurationen in der Regel recht einfach auf die bisherige MQTT-Implementierung übertragen werden&amp;lt;/ref&amp;gt;. MQTT2_DEVICE unterstützt u.a. auch die &#039;&#039;setExtensions&#039;&#039; direkt, also z.B. &#039;&#039;on-for-timer&#039;&#039; sowie &#039;&#039;[[MQTT2-Module - Praxisbeispiele#attrTemplate_2|attrTemplate]]&#039;&#039;&amp;lt;ref&amp;gt;Auch MQTT_DEVICE unterstützt setExtensions, allerdings muß dies dort per Attribut eingeschaltet werden&amp;lt;/ref&amp;gt;.&lt;br /&gt;
{{Hinweis|Die nachfolgenden Beispiele gelingen am einfachsten mit MQTT2_SERVER als Server, für diesen sollte dabei &#039;&#039;autocreate&#039;&#039; aktiviert werden, damit die erforderlichen MQTT2_DEVICES soweit möglich automatisiert erstellt werden&amp;lt;ref&amp;gt;Dabei wird vorausgesetzt, dass ein allgemeines  autocreate-Device (TYPE=autocreate) ebenfalls aktiv ist&amp;lt;/ref&amp;gt;.}}{{Hinweis|Die Code-Darstellung in diesem Beitrag entspricht jeweils dem RAW-Format zum [[Import von Code Snippets]]. Wer die Attribute direkt und einzeln bearbeitet, muß ggf. die &amp;quot;\&amp;quot; entfernen!}}&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
 define MQTT2_FHEM_Server MQTT2_SERVER 1883 global&lt;br /&gt;
 attr MQTT2_FHEM_Server autocreate 1&lt;br /&gt;
&lt;br /&gt;
== zigbee2mqtt ==&lt;br /&gt;
[[Bild:MQTT2_zigbee2mqtt_Bulbs.png|400px|thumb|Darstellung in FHEMWEB]]&lt;br /&gt;
[https://github.com/Koenkk/zigbee2mqtt zigbee2mqtt] ist ein open-source Projekt, mit dem zigbee-Geräte über MQTT direkt angesprochen werden können, ohne dass hierfür eine Bridge eines Herstellers benötigt wird.&lt;br /&gt;
=== Installation von zigbee2mqtt ===&lt;br /&gt;
Die Installation des zigbee2mqtt-Diensts ist auf der Homepage des Projekts beschrieben. Ergänzend muß in der configuration.yaml eine &#039;&#039;client_id&#039;&#039; unter &#039;&#039;mqtt&#039;&#039; (z.B. zigbee_pi) vergeben werden&amp;lt;ref&amp;gt;Die Anführungszeichen sowie genau zwei Leerzeichen sind hier erforderlich!&amp;lt;/ref&amp;gt;.&lt;br /&gt;
 mqtt:&lt;br /&gt;
   client_id: &#039;zigbee_pi&#039;&lt;br /&gt;
Da der Dienst auch später in den Anlernmodus versetzt werden kann, kann man auch gleich &amp;lt;code&amp;gt;permit_join: false&amp;lt;/code&amp;gt; setzen, um das versehentliche Einbinden neuer oder fremder Geräte zu unterbinden.&lt;br /&gt;
&lt;br /&gt;
=== Define eines MQTT2-Devices als &amp;quot;Bridge&amp;quot; === &lt;br /&gt;
Dann kann eine Art &amp;quot;Grund-Device&amp;quot; angelegt werden, das für die Ansteuerung des eigentlichen Server-Dienstes genutzt wird, der bereits unmittelbar nach der erfolgreichen Konfiguration von zigbee2mqtt zur Verfügung steht. In der Regel sollte dieses automatisch erstellt werden, wenn der zigbee2mqtt-Dienst (oder der betreffende Rechner) neu gestartet wird (oder FHEM oder dort ein Sensor einen Messwert sendet). Beispiel&amp;lt;ref&amp;gt;Hier waren bereits zwei Zigbee-Geräte angelernt&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 defmod MQTT2_zigbee_pi MQTT2_DEVICE zigbee_pi&lt;br /&gt;
 attr MQTT2_zigbee_pi IODev MQTT2_FHEM_Server&lt;br /&gt;
 attr MQTT2_zigbee_pi IODev MQTT2_FHEM_Server&lt;br /&gt;
 attr MQTT2_zigbee_pi readingList zigbee_pi:zigbee2mqtt/bridge/state:.* state\&lt;br /&gt;
   zigbee_pi:zigbee2mqtt/0x90fd9ffffe65db16:.* { json2nameValue($EVENT, &#039;&#039;) }\&lt;br /&gt;
   zigbee_pi:zigbee2mqtt/0x90fd9ffffe0bcd51:.* { json2nameValue($EVENT, &#039;&#039;) }\&lt;br /&gt;
   zigbee_pi:zigbee2mqtt/bridge/log:.* { json2nameValue($EVENT, &#039;log_&#039;) }&lt;br /&gt;
 attr MQTT2_zigbee_pi room MQTT2_DEVICE&lt;br /&gt;
&lt;br /&gt;
Für die Funktion einer zigbee2mqtt-Bridge steht ein {{Link2CmdRef|Anker=set|Lang=en|Label=template}} bereit, das direkt die passenden Attribute vergibt, um dem zigbee2mqtt-Dienst passende Anweisungen geben zu können und weitere Geräte für die eigentlichen Aktoren und Sensoren anzulegen:&lt;br /&gt;
&lt;br /&gt;
 set MQTT2_zigbee_pi attrTemplate L_01_zigbee2mqtt_bridge&lt;br /&gt;
&lt;br /&gt;
Ist dieses angelegt, kann zigbee2mqtt mit &amp;lt;code&amp;gt;set MQTT2_zigbee_pi permit_join true&amp;lt;/code&amp;gt; in den Anlernmodus versetzt werden, anzulernende Geräte müssen anschließend jeweils nach Bedienungsanleitung in den Anlernmodus gebracht werden.&lt;br /&gt;
&lt;br /&gt;
=== Vereinzeln der eigentlichen Geräte ===&lt;br /&gt;
&lt;br /&gt;
Über das mit dem template vergebene bridgeRegexp-Attribut  &lt;br /&gt;
 attr MQTT2_zigbee_pi bridgeRegexp zigbee2mqtt/([A-Za-z0-9]*)[/]?.*:.* &amp;quot;zigbee_$1&amp;quot; &lt;br /&gt;
werden anschließend neue MQTT2_DEVICE-Geräte automatisch angelegt, sobald ein bisher unbekanntes Zigbee-Gerät einen neuen Status (z.B. einen Meßwert) meldet. Um zu erfragen, welche Geräte dem zigbee-Deinst bekannt sind, kann via &amp;lt;code&amp;gt;get MQTT2_zigbee_pi devicelist true&amp;lt;/code&amp;gt; eine Liste abgefragt werden, die weitere Informationen zu den bereits angelernten Geräten enthält.&lt;br /&gt;
Geräte, die nicht automatisch etwas senden, kann man mit Hilfe des MQTT2_SERVER-Geräts einmalig schalten, damit diese ihren Status bzw. das erfolgreiche Schalten zurückmelden, Beispiel&amp;lt;ref&amp;gt;Die mit 0x... beginnende Angabe entspricht dabei dem &#039;&#039;friendly_name&#039;&#039;.&amp;lt;/ref&amp;gt;:&lt;br /&gt;
 set MQTT2_FHEM_Server publish zigbee2mqtt/0x90fd9ffffe0bcd51/set {&amp;quot;state&amp;quot;:&amp;quot;ON&amp;quot;,&amp;quot;brightness&amp;quot;:60}&lt;br /&gt;
&lt;br /&gt;
Für Gerätetypen, für die bereits templates vorhanden sind, ist es am einfachsten, diese einmalig auf die Geräte anzuwenden. Das Vorgehen entspricht dabei dem oben für die Bridge beschriebenen. Dafür wird immer vorausgesetzt, dass ein neues Device mit autocreate (ggf. über die bridgeRegexp) angelegt wurde&amp;lt;ref&amp;gt;Dieses befindet sich dann im Raum MQTT2_DEVICE. Um diesen sichtbar zu machen, muß ggf. die Browser-Seite neu geladen werden.&amp;lt;/ref&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
==== IKEA-Tradfri-Birne ====&lt;br /&gt;
{{Randnotiz|RNTyp=g|RNText=Wie wähle ich nun das richtige Template für mein Leuchtmittel aus?&lt;br /&gt;
-&amp;gt; Es wird nicht zwischen einer Birne/Bulb/Lampe und einem LED-Controller unterschieden sondern anhand der möglichen Lichtdarstellung des Gerätes:&lt;br /&gt;
&lt;br /&gt;
light_dimmer:&lt;br /&gt;
Das anzusteuernde Geräte besitzt ausschließlich eine feste Lichtfarbe welche gedimmt werden kann.&lt;br /&gt;
&lt;br /&gt;
light_cct:&lt;br /&gt;
Das anzusteuernde Gerät besitzt eine warmweiße sowie kaltweiße Lichtfarbe welche verändert sowie gedimmt werden kann.&lt;br /&gt;
&lt;br /&gt;
light_rgb_xxx:&lt;br /&gt;
Das anzusteuernde Gerät besitzt die Möglichlichkeit einer farbigen Lichtdarstellung (Rot, Grün, Blau) und kann gedimmt werden.&lt;br /&gt;
&lt;br /&gt;
light_rgbw_xxx:&lt;br /&gt;
Das anzusteuernde Gerät besitzt die Möglichlichkeit einer farbigen Lichtdarstellung (Rot, Grün, Blau) und besitzt eine warmweiße ODER kaltweiße Lichtfarbe welche eingestellt sowie gedimmt werden kann.&lt;br /&gt;
&lt;br /&gt;
light_rgbcct_xxx:&lt;br /&gt;
Das anzusteuernde Gerät besitzt die Möglichlichkeit einer farbigen Lichtdarstellung (Rot, Grün, Blau) und besitzt eine warmweiße UND kaltweiße Lichtfarbe welche verändert sowie gedimmt werden kann.&lt;br /&gt;
   &lt;br /&gt;
   xxx:&lt;br /&gt;
      hex:   Farbänderung mit hex&lt;br /&gt;
      rgb:   Farbänderung mit r g b&lt;br /&gt;
      xy:   Farbänderung mit x sowie y&lt;br /&gt;
      hue:   Farbänderung mit hue und saturation&lt;br /&gt;
&lt;br /&gt;
Warum diese Einteilung in &amp;quot;hex&amp;quot;, &amp;quot;rgb&amp;quot;, &amp;quot;xy&amp;quot; sowie &amp;quot;hue&amp;quot;?&lt;br /&gt;
-&amp;gt; Zigbee2MQTT unterstützt das Übermitteln aller dieser Werte, allerdings unterscheiden sich hier die Geräte. Manche &amp;quot;verstehen&amp;quot; nur z.B. Hex-Farbänderungen, andere halt nur eine Farbänderung mit rgb-Werten.&lt;br /&gt;
-&amp;gt; Aus diesem Grund muss an dieser Stelle probiert werden mit welchem der 4 Templates sich die Farbveränderung des Gerätes steuern lässt!&lt;br /&gt;
&lt;br /&gt;
HINWEIS: Templates für Farbänderungen mithilfe von XY- sowie HUE-Werten wurden bis heute nicht angelegt!&lt;br /&gt;
}}&lt;br /&gt;
Beispiel eines dimmbaren Tradfri-Leuchtmittels&lt;br /&gt;
 defmod IKEA_Bulb2 MQTT2_DEVICE&lt;br /&gt;
 attr IKEA_Bulb2 IODev MQTT2_FHEM_Server&lt;br /&gt;
 attr IKEA_Bulb2 icon light_control&lt;br /&gt;
 attr IKEA_Bulb2 devStateIcon {zigbee2mqtt_devStateIcon255($name)}&lt;br /&gt;
 attr IKEA_Bulb2 readingList zigbee_pi:zigbee2mqtt/0x90fd9ffffe0bcd51:.* { json2nameValue($EVENT) }&lt;br /&gt;
 attr IKEA_Bulb2 setList on:noArg zigbee2mqtt/0x90fd9ffffe0bcd51/set {&amp;quot;state&amp;quot;:&amp;quot;ON&amp;quot;}\&lt;br /&gt;
     off:noArg zigbee2mqtt/0x90fd9ffffe0bcd51/set {&amp;quot;state&amp;quot;:&amp;quot;OFF&amp;quot;}\&lt;br /&gt;
     brightness:colorpicker,BRI,0,15,255 zigbee2mqtt/0x90fd9ffffe0bcd51/set {&amp;quot;state&amp;quot;:&amp;quot;on&amp;quot;,&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}&lt;br /&gt;
 attr IKEA_Bulb2 webCmd toggle:on:off:brightness&lt;br /&gt;
 attr IKEA_Bulb2 model L_02a_zigbee2mqtt_bulb&lt;br /&gt;
&lt;br /&gt;
Kann man auch die Farbtemperatur einstellen, wird die setList wie folgt erweitert oder das entsprechende template&amp;lt;ref&amp;gt;Durch die &#039;&#039;model&#039;&#039;-Angabe kann nachvollzogen werden, welches template angewendet wurde.&amp;lt;/ref&amp;gt; anwendet:&lt;br /&gt;
 ...&lt;br /&gt;
 color_temp:colorpicker,CT,250,1,454 zigbee2mqtt/0x90fd9ffffe0bcd51/set {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
Die templates sind dabei in der Regel so gestaltet, dass eventuell mehr Optionen in FHEMWEB erscheinen, als tatsächlich vorhanden oder erwünscht sind. &lt;br /&gt;
Da sich obige einfarbige dimmbare Lampe durch Klicken auf das devStateIcon schalten läßt, ist für die vollständige Ansteuerung bereits dieses webCmd hinreichend:&lt;br /&gt;
 attr IKEA_Bulb2 webCmd brightness&lt;br /&gt;
&lt;br /&gt;
==== Temp/Hum. Sensor ====&lt;br /&gt;
tbd&lt;br /&gt;
&lt;br /&gt;
==== Motion Sensor ====&lt;br /&gt;
Als MQTT-Server wird hier &#039;&#039;mosquitto&#039;&#039; verwendet, als IO-Device wird daher ein {{Link2CmdRef|Anker=MQTT2_CLIENT|Lang=en|Label=MQTT2_CLIENT}}-Gerät definiert: &lt;br /&gt;
&lt;br /&gt;
 defmod mqtt2_client MQTT2_CLIENT 192.168.2.4:1883&lt;br /&gt;
 attr mqtt2_client autocreate 1&lt;br /&gt;
 attr mqtt2_client rawEvents zigbee2mqtt/GB_Bewegungsmelder:.*&lt;br /&gt;
 attr mqtt2_client room test&lt;br /&gt;
 attr mqtt2_client subscriptions #&lt;br /&gt;
&lt;br /&gt;
Das eigentliche Device sieht dann so aus:&lt;br /&gt;
 defmod GB_Bewegungsmelder_MQTT2 MQTT2_DEVICE zigbee_158d0001f9d030&lt;br /&gt;
 attr GB_Bewegungsmelder_MQTT2 IODev mqtt2_client&lt;br /&gt;
 attr GB_Bewegungsmelder_MQTT2 devStateIcon motion:motion_detector@red off:motion_detector@green no_motion:motion_detector@green&lt;br /&gt;
 attr GB_Bewegungsmelder_MQTT2 icon motion_detector@blue&lt;br /&gt;
 attr GB_Bewegungsmelder_MQTT2 readingList mqtt2client:zigbee2mqtt/GB_Bewegungsmelder:.* { json2nameValue($EVENT) }&lt;br /&gt;
 attr GB_Bewegungsmelder_MQTT2 room MQTT2_DEVICE&lt;br /&gt;
 attr GB_Bewegungsmelder_MQTT2 stateFormat {\&lt;br /&gt;
 if(ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;occupancy&amp;quot;,0) eq &amp;quot;true&amp;quot;) {\&lt;br /&gt;
 	sprintf(&amp;quot;motion&amp;quot;);;\&lt;br /&gt;
 	} else {\&lt;br /&gt;
 	sprintf(&amp;quot;no_motion&amp;quot;);;	\&lt;br /&gt;
 	}\&lt;br /&gt;
 }&lt;br /&gt;
==== Anlegen von Zigbee2MQTT-Gruppen in FHEM ====&lt;br /&gt;
{{Hinweis|Die nachfolgende Darstellung ist vorläufig!}}&lt;br /&gt;
{{Hinweis|Bevor man eine Gruppe mithilfe von Zigbee2MQTT anlegen kann, sollte man sicherstellen, dass man über die aktuelleste Version von Zigbee2MQTT verfügt (min. vom 15. Februar 2019). Außerdem sollte auch der Koordinator (zumeist CC2531) die aktuellste Firmware besitzen (min. vom 15. Februar 2019). Falls ein flashen des Koordinators mit der neusten Firmware erfolgen soll, ist darauf zu achten, dass nach einem flashen alle Geräte neu angelernt werden müssen! (Hinweise zum flashen ohne erneutem anlernen sind hier zu finden: https://www.zigbee2mqtt.io/information/flashing_without_re-pairing.html)}}&lt;br /&gt;
&lt;br /&gt;
=====Erstellen einer Zigbee2MQTT-Gruppe=====&lt;br /&gt;
Bevor das Ganze in FHEM funktioniert, muss eine Gruppe in der &amp;quot;configuration.yaml&amp;quot; angelegt werden, dieser Vorgang ist auf folgender Seite beschrieben: https://www.zigbee2mqtt.io/information/groups.html&lt;br /&gt;
Wenn die Geräte anschließend über den FHEM MQTT2-Server der Gruppe hinzugefügen werden sollen, kann dies mit folgendem Befehl erfolgen:&lt;br /&gt;
 set &amp;lt;MQTT2-Server&amp;gt; publish zigbee2mqtt/bridge/group/&amp;lt;Zigbee2MQTT Friendly-Gruppenname&amp;gt;/add &amp;lt;Zigbee2MQTT Friendly-Gerätename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
 set MQTT2_FHEM_Server publish zigbee2mqtt/bridge/group/Wohnzimmer/add Stehlampe&lt;br /&gt;
&lt;br /&gt;
Dieser Befehl kann so oft verwendet werden, wie man Geräte zu einer Gruppe hinzufügen möchte.&lt;br /&gt;
&lt;br /&gt;
Zum Entfernen eines Gerätes aus einer Gruppe kann folgender Befehl verwendet werden:&lt;br /&gt;
 set &amp;lt;MQTT2-Server&amp;gt; publish zigbee2mqtt/bridge/group/&amp;lt;Zigbee2MQTT Friendly-Gruppenname&amp;gt;/remove &amp;lt;Zigbee2MQTT Friendly-Gerätename&amp;gt;&lt;br /&gt;
Beispiel:&lt;br /&gt;
 set MQTT2_FHEM_Server publish zigbee2mqtt/bridge/group/Wohnzimmer/remove Kuechenlampe&lt;br /&gt;
&lt;br /&gt;
=====Anlegen der Gruppe in FHEM=====&lt;br /&gt;
Da Gruppen in Zigbee2MQTT aktuell keine Rückmeldung über ihren Status geben, wird auch beim einmaligen Schalten kein Gerät automatisch in FHEM angelegt. Aus diesem Grund muss dies mit folgendem Befehl noch manuell erfolgen:&lt;br /&gt;
 defmod &amp;lt;FHEM NAME&amp;gt; MQTT2_DEVICE&lt;br /&gt;
Beispiel&lt;br /&gt;
 defmod lichtWohnzimmer MQTT2_DEVICE&lt;br /&gt;
Anschließend wird auch für dieses Gerät wieder ein passendes template ausgewählt, wie als wäre es ein normales Zigbee2MQTT-Gerät.&lt;br /&gt;
Im anschließenden Dialog-Fenster welches sich nach dem Setzen des templates öffnet, müssen die folgenden Werte durch passendes ersetzt werden:&lt;br /&gt;
 BASE_TOPIC -&amp;gt; zigbee2mqtt&lt;br /&gt;
 DEV_ID -&amp;gt; &amp;lt;Zigbee2MQTT Friendly-Gruppenname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach sollte sich die Gruppe wie ein normales Zigbee2MQTT Gerät steuern lassen.&lt;br /&gt;
&lt;br /&gt;
== Tasmota ==&lt;br /&gt;
[https://github.com/arendst/Sonoff-Tasmota Tasmota] (&#039;&#039;&#039;T&#039;&#039;&#039;heo &#039;&#039;&#039;A&#039;&#039;&#039;rends &#039;&#039;&#039;S&#039;&#039;&#039;onoff &#039;&#039;&#039;M&#039;&#039;&#039;QTT &#039;&#039;&#039;O&#039;&#039;&#039;ver &#039;&#039;&#039;T&#039;&#039;&#039;he &#039;&#039;&#039;A&#039;&#039;&#039;ir - einer offenen Firmware von [https://github.com/arendst arendst]) ist eine open-source Software für ESP8266-Geräte, die z.B. statt der originalen Firmware für Sonoff-Geräte und andere ESP8266-basierte WLAN-Steckdosen usw. verwendet werden kann. {{Randnotiz|RNTyp=r|RNText=Bitte beachten Sie, dass versicherungsrechtliche Probleme entstehen können, wenn die herstellereigene Firmware ersetzt wird!}}&lt;br /&gt;
&lt;br /&gt;
=== MQTT2_DEVICE ===&lt;br /&gt;
Dieses sollte bei aktiviertem &#039;&#039;autocreate&#039;&#039; am MQTT2_SERVER-Device automatisch angelegt werden, sobald das betreffende Gerät eingesteckt oder neu gestartet oder an einem evtl. vorhandenen Taster geschalten wird. Hier wurden Tasmota version(en) 6.1.1 und 6.2.1 getestet, Hardware war Sonoff Touch und S20.&lt;br /&gt;
&lt;br /&gt;
=== Manuelle Anpassungen ===&lt;br /&gt;
Die RAW-Definition kann dann beispielsweise wie folgt ergänzt werden:  &lt;br /&gt;
 defmod MQTT2_DVES_9B01BD MQTT2_DEVICE DVES_9B01BD&lt;br /&gt;
 attr MQTT2_DVES_9B01BD IODev m2server&lt;br /&gt;
 attr MQTT2_DVES_9B01BD readingList DVES_9B01BD:tele/sonoffkitchen/STATE:.* { json2nameValue($EVENT) }\&lt;br /&gt;
    DVES_9B01BD:tele/sonoffkitchen/LWT:.* LWT\&lt;br /&gt;
    DVES_9B01BD:cmnd/sonoffkitchen/POWER:.* POWER\&lt;br /&gt;
    DVES_9B01BD:tele/sonoffkitchen/UPTIME:.* { json2nameValue($EVENT) }\&lt;br /&gt;
    DVES_9B01BD:tele/sonoffkitchen/SENSOR:.* { json2nameValue($EVENT) }\&lt;br /&gt;
    DVES_9B01BD:tele/sonoffkitchen/INFO1:.* { json2nameValue($EVENT) }\&lt;br /&gt;
    DVES_9B01BD:tele/sonoffkitchen/INFO2:.* { json2nameValue($EVENT) }\&lt;br /&gt;
    DVES_9B01BD:tele/sonoffkitchen/INFO3:.* { json2nameValue($EVENT) }\&lt;br /&gt;
    DVES_9B01BD:stat/sonoffkitchen/RESULT:.* { json2nameValue($EVENT) }\&lt;br /&gt;
    DVES_9B01BD:stat/sonoffkitchen/STATE:.* { json2nameValue($EVENT) }&lt;br /&gt;
 attr MQTT2_DVES_9B01BD room MQTT2_DEVICE&lt;br /&gt;
 attr MQTT2_DVES_9B01BD setList on cmnd/sonoff/POWER on\&lt;br /&gt;
    off cmnd/sonoff/POWER off\&lt;br /&gt;
    reboot cmnd/sonoff/Restart 1&lt;br /&gt;
 attr MQTT2_DVES_9B01BD webCmd on:off:reboot&lt;br /&gt;
&lt;br /&gt;
=== attrTemplate ===&lt;br /&gt;
Für gängige Tasmota-Geräte stehen &#039;&#039;templates&#039;&#039; bereit, mit denen sich diese schnell konfigurieren lassen. &lt;br /&gt;
Beachten Sie dazu den Abschnitt &#039;&#039;attrTemplate&#039;&#039; in [[MQTT2 DEVICE#attrTemplate|MQTT2_DEVICE]]. Bei Anwendung eines template mit &amp;quot;split&amp;quot; im Namen werden dabei weitere Geräte angelegt und konfiguriert.&lt;br /&gt;
&lt;br /&gt;
== Shelly ==&lt;br /&gt;
=== Vorbemerkung ===&lt;br /&gt;
Auch für Shelly-Geräte steht eine Auswahl an [[MQTT2-Module - Praxisbeispiele#attrTemplate_2|templates]] bereit.&lt;br /&gt;
Beachten Sie auch hier, dass uU. bei Anwendung eines template mit &amp;quot;split&amp;quot; im Namen weitere Geräte angelegt und konfiguriert werden.&lt;br /&gt;
&lt;br /&gt;
=== Shelly1 ===&lt;br /&gt;
&lt;br /&gt;
=== Shellybulb ===&lt;br /&gt;
Zunächst muss man einen Statusupdate des Shellybulb erzwingen (Aus- und Einschalten, physikalisch oder per Web-UI), damit das Gerät bei eingeschaltetem autocreate  angelegt wird. Dies sieht zunächst so aus:&lt;br /&gt;
 Internals:&lt;br /&gt;
   CFGFN     &lt;br /&gt;
   CID        shellybulb_3CC533&lt;br /&gt;
   DEF        shellybulb_3CC533&lt;br /&gt;
   DEVICETOPIC MQTT2_shellybulb_3CC533&lt;br /&gt;
   IODev      MQTT2_FHEM_Server&lt;br /&gt;
   NAME       MQTT2_shellybulb_3CC533&lt;br /&gt;
   NR         246&lt;br /&gt;
   STATE      ???&lt;br /&gt;
   TYPE       MQTT2_DEVICE&lt;br /&gt;
   READINGS:&lt;br /&gt;
     2018-12-12 19:28:08   status_blue     0&lt;br /&gt;
     2018-12-12 19:28:08   status_brightness 61&lt;br /&gt;
     2018-12-12 19:28:08   status_effect   0&lt;br /&gt;
     2018-12-12 19:28:08   status_gain     26&lt;br /&gt;
     2018-12-12 19:28:08   status_green    0&lt;br /&gt;
     2018-12-12 19:28:08   status_ison     true&lt;br /&gt;
     2018-12-12 19:28:08   status_mode     color&lt;br /&gt;
     2018-12-12 19:28:08   status_red      255&lt;br /&gt;
     2018-12-12 19:28:08   status_temp     3250&lt;br /&gt;
     2018-12-12 19:28:08   status_white    0&lt;br /&gt;
 Attributes:&lt;br /&gt;
   IODev      MQTT2_FHEM_Server&lt;br /&gt;
   readingList shellybulb_3CC533:shellies/shellybulb-3CC533/color/0/status:.* { json2nameValue($EVENT, &#039;status_&#039;) }&lt;br /&gt;
   room       MQTT2_DEVICE&lt;br /&gt;
[[Bild:MQTT2 Shellybulb.png|400px|thumb|Darstellung in FHEMWEB nach Anwendung des template]]Dann bei den set-Anweisungen das attrTemplate &amp;quot;shellybulb&amp;quot; auswählen und setzen. Es erscheint eine Abfrage, ob die vorhandenen Readings gelöscht werden sollen. Diese bitte bestätigen und die Seite neu laden. Danach einmal An- und Ausschalten, damit die Readings auch durch einen neuen Status initialisiert werden und die Seite im Browser neu laden.&lt;br /&gt;
&lt;br /&gt;
== Milight-Bridge ==&lt;br /&gt;
=== Vorbemerkung ===&lt;br /&gt;
Der [https://github.com/sidoh/esp8266_milight_hub esp8266_milight_hub] ist ein open source- Projekt, mit dem auf Basis von &#039;&#039;openmili&#039;&#039; eine Vielzahl von MiLight-Geräten gesteuert werden können. Der MiLight-Hub erstetzt dabei eine beliebige Zahl von Milight-Bridges und ist auch zu verschiedenen Versionen des MiLight-Protokols kompatibel.&lt;br /&gt;
Neben MQTT kann dieser auch mit HTTPMOD oder Wifilight (bzw. den MiLight-Modulen) gesteuert werden. Die Hardware entspricht dabei im Wesentlichen einem MySensors-Wifi-Gateway&amp;lt;ref&amp;gt;Es wird lediglich ein anderer CS-PIN genutzt. Dies kann einfach in der Web-Oberfläche der Firmware umgestellt werden.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
Hier wird vorausgesetzt, dass eine funktionierende Bridge vorhanden ist.&lt;br /&gt;
Der Vorteil der MQTT-Lösung liegt darin, dass man bei kompatiblen Fernbedienungen auch direkt Informationen über Schaltvorgänge erhält, die mit der Fernbedienung ausgelöst werden.&lt;br /&gt;
&lt;br /&gt;
=== Einstellungen am MiLight-Hub ===&lt;br /&gt;
Die zum FHEM-Server bzw. dem MQTT2_SERVER passenden Vorgaben sind im Web-Interface des Hub einzustellen. Gegebenenfalls passen Sie die vom Hub zurückzugebenden Elemente im Web-Interface des Hub an.&lt;br /&gt;
&lt;br /&gt;
=== FHEM-Devices ===&lt;br /&gt;
[[Bild:MQTT2 MiLight.png|400px|thumb|Milight: Darstellung in FHEMWEB]]&lt;br /&gt;
==== Bridge ====&lt;br /&gt;
Wird nun über den Hub oder eine von diesem erkannte Fernbedienung ein vorhandenes Leuchtmittel geschaltet, wird bei eingeschaltetem autocreate ein erstes Device erstellt, die zunächst erstellte Definition sieht typischerweise etwa so aus:&lt;br /&gt;
 defmod MQTT2_milight_hub_1370325 MQTT2_DEVICE milight_hub_1370325&lt;br /&gt;
 attr MQTT2_milight_hub_1370325 IODev MQTT2_FHEM_Server&lt;br /&gt;
 attr MQTT2_milight_hub_1370325 readingList milight_hub_1370325:milight/updates/0xBE59/rgbw/1:.* { json2nameValue($EVENT, &#039;1_&#039;, $JSONMAP) }&lt;br /&gt;
 attr MQTT2_milight_hub_1370325 room MQTT2_DEVICE&lt;br /&gt;
&lt;br /&gt;
Auf dieses Device wird nun das &#039;&#039;template&#039;&#039; X_01_esp_milight_hub_bridge angewandt.&lt;br /&gt;
&lt;br /&gt;
==== Einzelne Leuchtmittel ====&lt;br /&gt;
&lt;br /&gt;
Wird nun nochmals das oben verwendete Leuchtmittel geschaltet, erstellt autocreate ein weiteres Device:&lt;br /&gt;
 defmod MQTT2_milight_0xBE59_1 MQTT2_DEVICE milight_0xBE59_1&lt;br /&gt;
 attr MQTT2_milight_0xBE59_1 IODev MQTT2_FHEM_Server&lt;br /&gt;
 attr MQTT2_milight_0xBE59_1 readingList milight/states/0xBE59/rgbw/1:.* { json2nameValue($EVENT, &#039;1_&#039;, $JSONMAP) }&lt;br /&gt;
 attr MQTT2_milight_0xBE59_1 room MQTT2_DEVICE&lt;br /&gt;
&lt;br /&gt;
Auf dieses wird nun eines der Bulb-templates angewendet. Wählt man das template X_01_esp_milight_hub_rgbw_bulb, wird eine einfache Variante erstellt, die neben einem toggelnden Icon nur Regler für Helligkeit, die Farbe und zwei Schaltflächen für den Weiß- und Nachtmodus enthält. Wer mehr oder andere Steuerelemente erhalten möchte, verwendet ein anderes template. Nicht benötigte Elemente kann man dabei einfach aus der Definition löschen.&lt;br /&gt;
&lt;br /&gt;
Alle weiteren Devices werden genauso erstellt. &lt;br /&gt;
&lt;br /&gt;
Um ein Device zu erhalten, mit dem sich alle Kanäle gleichzeitig steuern lassen, kann das template &#039;&#039;X_01a_esp_milight_hub_make_rgbw_group&#039;&#039; verwendet werden. Dieses verändert nicht das aktuelle Device, sondern erstellt &#039;&#039;&#039;eine Kopie&#039;&#039;&#039;, die dann modifiziert wird. Diese Kopie ist unter dem Namen &#039;&#039;milight_&amp;lt;RemoteID&amp;gt;_0&#039;&#039; im selben Raum zu finden wie das Ausgangsgerät und kann ebenfalls an die eigenen Wünsche angepaßt werden. &lt;br /&gt;
&lt;br /&gt;
Weitere Beispiele:&lt;br /&gt;
Beispiel für ein RGB-CCT-Device:&lt;br /&gt;
 defmod Licht_Wz_all MQTT2_DEVICE&lt;br /&gt;
 attr Licht_Wz_all IODev MQTT2_Broker&lt;br /&gt;
 attr Licht_Wz_all eventMap /set_white:Weiss/night_mode:Nacht/white_mode:white/on:on/off:off/ON:on/OFF:off/next_mode:Mode/mode_speed_up:Up/mode_speed_down:Down/&lt;br /&gt;
 attr Licht_Wz_all group Licht&lt;br /&gt;
 attr Licht_Wz_all icon light_control&lt;br /&gt;
 attr Licht_Wz_all readingList milight_hub_10693013:milight/0x5D02/rgb_cct/0:.* { json2nameValue($EVENT) }\&lt;br /&gt;
 milight_hub_10693013:milight/updates/0x5D02/rgb_cct/0:.* { json2nameValue($EVENT) }\&lt;br /&gt;
 milight_hub_10693013:milight/states/0x5D02/rgb_cct/0:.* { json2nameValue($EVENT) }\&lt;br /&gt;
 &lt;br /&gt;
 attr Licht_Wz_all room Wohnzimmer&lt;br /&gt;
 attr Licht_Wz_all setList on milight/0x5D02/rgb_cct/0 {&amp;quot;status&amp;quot;:&amp;quot;ON&amp;quot;}\&lt;br /&gt;
 off milight/0x5D02/rgb_cct/0 {&amp;quot;status&amp;quot;:&amp;quot;OFF&amp;quot;}\&lt;br /&gt;
 level milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 hue:colorpicker,HUE,0,1,359 milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 command:uzsuSelectRadio,Weiss,Nacht,Mode,Up,Down milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 brightness:colorpicker,BRI,0,1,255 milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 next_mode milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 mode_speed_up milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 mode_speed_down milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 saturation:colorpicker,BRI,0,1,100 milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 color_temp:colorpicker,CT,153,1,370 milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 device_id milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 effect milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 mode milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 commands milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}&lt;br /&gt;
 attr Licht_Wz_all sortby 1&lt;br /&gt;
 attr Licht_Wz_all webCmd command:brightness:saturation:color_temp:hue&lt;br /&gt;
 attr Licht_Wz_all webCmdLabel command\ &lt;br /&gt;
 :brightness:saturation\&lt;br /&gt;
 :color_temp:hue&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== eBus ==&lt;br /&gt;
=== eBus mit MQTT2 auswerten ===&lt;br /&gt;
&lt;br /&gt;
Für die MQTT Kommunikation des eBus wird für die eigentlichen Geräte MQTT2 DEVICE verwendet, damit wird als IO-Device entweder MQTT2_SERVER oder MQTT2_CLIENT verwendet, NICHT beides gleichzeitig!&lt;br /&gt;
Bitte auch zu beachten, die alten Module MQTT funktionieren nicht nach der Beschreibung in diesem Artikel. Es geht hier um die komplett überarbeitete Version mit dem Namen MQTT2!&lt;br /&gt;
&lt;br /&gt;
Bei der hier beschriebenen Konfiguration der angelegten Devices muss unbedingt die Reihenfolge eingehalten werden.&lt;br /&gt;
&lt;br /&gt;
=== Anwendung: ===&lt;br /&gt;
Wer eBus komfortabel in FHEM einbinden will, kann dies nun erstmals mit wenigen Mausklicks realisieren. Erstmalig kommt diese neue Technik der von rudolfkönig implementierten Templates zur Anwendung. Templates sind im Prinzip vorgefertigte Schablonen die durch Anklicken dann selbständig den Device mit den darin enthaltenen Vorgaben konfigurieren. Beta-User hat diese Technik dann soweit für den eBus angepasst ( unter anderem die Filter erstellt ) , das sie allen eBus Anwendern zur Verfügung steht. Es kann nun jeder selbst Templates erstellen oder einfach die von mir erstellten vorhandenen Beispiele benutzen. In wenigen Minuten sollte die komplette FHEM Konfiguration dann abgeschlossen sein.&lt;br /&gt;
&lt;br /&gt;
Wer bereits einen Mosquitto Broker installiert hat, kann diesen weiter verwenden, ist aber für die Komunikation mit dem eBus Dämon nicht mehr notwendig!&lt;br /&gt;
&lt;br /&gt;
[[Bild:MQTT2_MQTT2.jpg|600px|thumb|left|Uebersicht eBus MQTT]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Welches FHEM Modul benötigt man ===&lt;br /&gt;
{{Randnotiz|RNTyp=r|RNText=Nicht MQTT2_SERVER und Mosquitto gleichzeitig laufen lassen, es kann zu verschiedenen Problemen kommen wie gegenseitiges Löschen von Einträgen in FHEM.}}&lt;br /&gt;
Beispiel: Mosquitto Broker ist vorhanden&lt;br /&gt;
dann benötigt man MQTT2_DEVICE und MQTT2_CLIENT&lt;br /&gt;
&lt;br /&gt;
Beispiel: Mosquitto Broker ist NICHT vorhanden&lt;br /&gt;
dann benötigt man MQTT2_DEVICE und MQTT2_SERVER&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitung und Definition am eBus ===&lt;br /&gt;
In der Konfiguration des Dämons ( /etc/default/ebusd ) sollten diese Parameter hinzugefügt werden. Die Topic „ebusd/%circuit/%name“ bitte nicht abändern, da verschiedene Filter auf diesen Ausdruck eingestellt sind.&lt;br /&gt;
 --accesslevel=* --mqttport=1883 --mqttjson --mqtthost=IpAdresseMQTTSERVER --mqtttopic=ebusd/%circuit/%name&lt;br /&gt;
Der MQTTSERVER kann wahlweise der Mosquitto Broker sein, oder der MQTT2_SERVER. Beides wird vermutlich am Raspberry der FHEM Hauptinstanz sein, also die IP-Adresse des Raspberry einsetzen.&lt;br /&gt;
&lt;br /&gt;
{{Hinweis|Nachfolgend wird davon ausgegangen, dass als Vorgabe für mqtttopic &#039;&#039;ebusd&#039;&#039; verwendet wurde. Dies kann geändert werden, es wird aber dringend empfohlen, das mqtttopic in jedem Fall mit &#039;&#039;ebus...&#039;&#039; zu beginnen!}}&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitung und Definition  in FHEM ===&lt;br /&gt;
&lt;br /&gt;
Unabhängig von dem konkret genutzten IO-Modul (MQTT2_SERVER oder MQTT2_CLIENT) sollte an diesem &#039;&#039;&#039;&#039;&#039;vor&#039;&#039;&#039;&#039;&#039; den nachfolgenden Schritten zunächst das autocreate ausgeschaltet werden. Weiter sollte geprüft werden, ob es bereits MQTT2_DEVICE-Geräte gibt, die Einträge in der readingList enthalten, die vom ebus stammen. Da wir die readingList anschließend mit erweiterten JSON-Optionen erstellen wollen, müssen entweder diese Geräte nach dem Deaktivieren des autocreate am IO gelöscht, oder zumindest die readingList entsprechend bereinigt oder gelöscht werden.&lt;br /&gt;
&lt;br /&gt;
==== Externer Broker ====&lt;br /&gt;
Wer bereits den Mosquitto installiert hat und diesen weiter verwenden möchte, dann diese Konfiguration wählen.&lt;br /&gt;
 ### 1a. Broker in FHEM anlegen ###&lt;br /&gt;
 define MQTT_via_mosquitto MQTT2_CLIENT 127.0.0.1:1883&lt;br /&gt;
 attr MQTT_via_mosquitto room MQTT2_DEVICE,System&lt;br /&gt;
==== FHEM-Interner Server ====&lt;br /&gt;
Wer keinen Mosquitto installiert hat kann diese Konfiguration wählen. Dazu wird einfach der MQTT2-SERVER definiert.&lt;br /&gt;
&lt;br /&gt;
 ### 1b. oder MQTT Server  anlegen ###&lt;br /&gt;
 define ebusMQTT MQTT2_SERVER 1883 global&lt;br /&gt;
 attr ebusMQTT room MQTT2_SERVER&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;ebus-Bridge&amp;quot; ====&lt;br /&gt;
Nun wird noch ein Device benötigt, welcher mit einem der oben genannten Module kommuniziert und das Filter (bridgeRegexp) für den eBus beinhaltet. Auf Basis dieses Device werden später alle ankommenden JSON Telegramme vom eBus Dämon automatisch als Reading angelegt.&lt;br /&gt;
&lt;br /&gt;
 ### 2. MQTT_Device definieren&lt;br /&gt;
 define MQTT2_ebusd MQTT2_DEVICE ebusd&lt;br /&gt;
 attr MQTT2_ebusd IODev ebusMQTT&lt;br /&gt;
 attr MQTT2_ebusd room MQTT2_DEVICE&lt;br /&gt;
&lt;br /&gt;
Es kann auch ein ggf. vom MQTT2_SERVER bereits automatisch angelegtes Device genutzt werden, bei Verwendung von MQTT2_CLIENT sollte das Device wie oben dargestellt manuell erstellt werden; es ist dabei darauf zu achten, dass die CID dem Basispfad des Topic-trees entspricht, der bei der Konfiguration des ebus-Dämons verwendet wurde. &lt;br /&gt;
&lt;br /&gt;
Auf das Device MQTT2_ebusd wird nun folgendes Template angwendet:&lt;br /&gt;
&lt;br /&gt;
[[Bild:MQTT2_1template E_00 installieren.png|400px|thumb|left|Template E_00_eBus_daemon_splitter]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Bild:MQTT2_2splitter.png|400px|thumb|left|Eingabe im Splitter aendern]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Gibt es noch keine readingList mit ebus-spezifischen Einträgen, erscheint ein Fenster. In diesem kann der Name ausgewählt werden, gebt hier anstatt DEV_ID „ebus“ ein und drückt „ok“&lt;br /&gt;
&lt;br /&gt;
Zur Kontrolle bitte prüfen ob hier auch die „bridgeRegexp“ vom Template richtig gesetzt wurde.&lt;br /&gt;
&lt;br /&gt;
[[Bild:MQTT2_3Attribute_ebusd.png|400px|thumb|left|bridgeRegexp prüfen]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 (ebus.)[^/]*/(bai|broadcast)/.*:.* &amp;quot;$1_bai&amp;quot;&lt;br /&gt;
 (ebus.)[^/]*/([\d]+)/.*:.* &amp;quot;$1_$2&amp;quot;&lt;br /&gt;
 (ebus.)[^/]*[/][^b][a-zA-Z]+[/].*:.* &amp;quot;$1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Nach der Konfiguration des bridge-Devices muß autocreate am IO-Device wieder aktiviert werden. Da hierbei die vom ebus-Dämon gesendeten JSON-Informationen in vielen Installationen nur sinnvoll genutzt werden können, wenn die Statusmeldungen jeweils getrennt dargestellt werden, setzen wir auf dem MQTT2_SERVER oder dem MQTT2_CLIENT ( je nachdem welcher verwendet wurde) das Attribut „autocreate“ auf „complex“.&lt;br /&gt;
&lt;br /&gt;
[[Bild:MQTT2_4autocreate-complex.png|400px|thumb|left|autocreate auf complex setzen]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Complex hat den Sinn, das JSONMAP mit dem Namen des Readings automatisch gesetzt wird.&lt;br /&gt;
Statt dem Reading 0_value wird daraus dann ein Stautus01_0_value. Dies ist gerade bei den Statusmeldungen wichtig, da sie sich sonst mit gleichem Readingnamen gegenseitig überschreiben.&lt;br /&gt;
&lt;br /&gt;
Nun heißt es etwas zurück lehnen und warten bis die MQTT Telegramme vom eBus eingetroffen sind, das kann einige Minuten dauern. Dabei wird in der Regel sowohl die readingList am Device &#039;&#039;MQTT2_ebusd&#039;&#039; erweitert, wie auch ein oder mehrere neue MQTT2_DEVICE-Geräte angelegt.&lt;br /&gt;
&lt;br /&gt;
==== myUtils-Code ====&lt;br /&gt;
Nun benötigen wir noch etwas Code für die Balkendarstellung in FHEM. Dieser Code wird in die 99_myUtils.pm kopiert.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
 sub Balkenanzeige($) &lt;br /&gt;
 {&lt;br /&gt;
    # Zuweisung der übergebenen Variablen&lt;br /&gt;
    my ($val) = @_;&lt;br /&gt;
    # Konfiguration des maximal übergebenen Werts (hier wäre der höchste zu erwartende Wert = 3)&lt;br /&gt;
    my $maxValue = 70;&lt;br /&gt;
    # Normalisierung auf 100%-Wert&lt;br /&gt;
    my $percent = $val / $maxValue * 100;&lt;br /&gt;
    # Definition des valueStyles&lt;br /&gt;
    my $stylestring = &#039;style=&amp;quot;&#039;.&lt;br /&gt;
        &#039;width: 200px; &#039;.&lt;br /&gt;
	&#039;text-align:center; &#039;.&lt;br /&gt;
	&#039;border: 1px solid #ccc ;&#039;. &lt;br /&gt;
	&#039;background-image: -webkit-linear-gradient(left,red &#039;.$percent.&#039;%, rgba(0,0,0,0) &#039;.$percent.&#039;%); &#039;.&lt;br /&gt;
	&#039;background-image:    -moz-linear-gradient(left,blue &#039;.$percent.&#039;%, rgba(0,0,0,0) &#039;.$percent.&#039;%); &#039;. &lt;br /&gt;
	&#039;background-image:     -ms-linear-gradient(left,red &#039;.$percent.&#039;%, rgba(0,0,0,0) &#039;.$percent.&#039;%); &#039;. &lt;br /&gt;
	&#039;background-image:      -o-linear-gradient(left,red &#039;.$percent.&#039;%, rgba(0,0,0,0) &#039;.$percent.&#039;%); &#039;. &lt;br /&gt;
	&#039;background-image:         linear-gradient(left,red &#039;.$percent.&#039;%, rgba(0,0,0,0) &#039;.$percent.&#039;%);&amp;quot;&#039;;&lt;br /&gt;
    # Rückgabe des definierten Strings&lt;br /&gt;
    return $stylestring;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ebenfalls muss noch das Modul Color.pm ordnungsgemäß eingebunden werden. Dieses Modul wird zur farbigen Darstellung wie es in den Templates verwendet wird benötigt.&lt;br /&gt;
 define colorInit notify global:INITIALIZED {use Color}&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
==== Regelmäßige Werteabfrage ====&lt;br /&gt;
&lt;br /&gt;
Es kann aber in der Zwischenzeit noch die Timer gesteuerte Abfrage definiert werden.&lt;br /&gt;
&lt;br /&gt;
 define EBUS.TIMER at +*00:15:00 set ebusMQTT publish ebusd/430/Hc1HeatCurve/get;&lt;br /&gt;
 set ebusMQTT publish ebusd/430/HwcTempDesired/get;&lt;br /&gt;
 set ebusMQTT publish ebusd/bai/WaterPressure/get;&lt;br /&gt;
 set ebusMQTT publish ebusd/bai/FlowTemp/get;&lt;br /&gt;
 set ebusMQTT publish ebusd/bai/ReturnTemp/get;&lt;br /&gt;
 set ebusMQTT publish ebusd/bai/OutdoorstempSensor/get;&lt;br /&gt;
 set ebusMQTT publish ebusd/bai/Status02/get&lt;br /&gt;
&lt;br /&gt;
Diese „get“ sind nur Beispiele, wer weitere Readings abfragen möchte einfach die Liste in der FHEM Eingabe erweitern. Ebenfalls kann der Timer auf persönliche Bedürfnisse angepasst werden.&lt;br /&gt;
&lt;br /&gt;
=== ebus-Spezifische weitere Templates ===&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&lt;br /&gt;
Um die eBus Templates benutzen zu können, müssen sie erst im Verzeichnis „/opt/fhem/FHEM/lib/AttrTemplate“ installiert werden. Hier kann das Mustertemplate „{{Link2Forum|Topic=79600|LinkText=mqtt2.ebus.template}}“ herunter geladen werden. Dieses Template dann in das Verzeichnis kopieren. &lt;br /&gt;
Vor der erstmaligen Benutzung muss dieses template noch Initialisiert werden, sonst wird es in der Templateliste nicht angezeigt.&lt;br /&gt;
&lt;br /&gt;
[[Bild:MQTT2_7templateinitialize.png|400px|thumb|left|vor der ersten Benutzung in der Eingabezeile eingeben]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Dazu in der FHEM Eingabezeile eingeben:&lt;br /&gt;
 { AttrTemplate_Initialize() }&lt;br /&gt;
&lt;br /&gt;
==== Anwendung der Templates ====&lt;br /&gt;
&lt;br /&gt;
Wenn bereits die ersten Messwerte eingetroffen sind und die Devices mit den Readings angelegt wurden, können die Templates angelegt werden. D&lt;br /&gt;
In den gewünschten Stelle stellen (hier MQTT2_ebusd_bai) und ein Template wählen. Die eBus Templates beginnen alle mit E….&lt;br /&gt;
&lt;br /&gt;
[[Bild:MQTT2_8templateselect.png|400px|thumb|left|Das gewünschte Template auswählen, die Readings müssen allerdings in diesem Device enthalten sein]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Hier wird E_07_eBus_bai_Status01+Status02_HWC gewählt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Bild:MQTT2_5statustemplate.png|400px|thumb|left|Das Template hat die gewünschte Konfiguration in FHEM durchgeführt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Bild:MQTT2_6status1template.png|400px|thumb|left|Ergebnis des Template, Heizkurve und Warmwassertemperatur]]&lt;br /&gt;
Hier das Ergebnis von HC1HeatCurve+HWCTempDesired&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Muster Templates ====&lt;br /&gt;
&lt;br /&gt;
Es sind auch noch einige Mustertemplates vorhanden die auf Basis von readingsGroup erstellt wurden und ein farbiges Design besitzen. Diese Templates werden nicht im Device, sondern im Room „eBus“ angelegt.&lt;br /&gt;
Der Kreativität der Anwender sind hier fast keine Grenzen gesetzt, die Werkzeuge sind vorhanden.&lt;br /&gt;
&lt;br /&gt;
Template: E_05_eBus_bai_readingsgroup_Set_Hcurve_Hotwater&lt;br /&gt;
[[Bild:MQTT2_ebusset.png|250px|thumb|left|Set hcurve und HWCtemdesired]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Template: E_01_eBus_bai_readingsgroup_Status01&lt;br /&gt;
[[Bild:MQTT2_ebustemp.png|250px|thumb|left|Statusmeldung als Readingsgroup]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Template: E_02_eBus_bai_readingsgroup_Status01_Balken&lt;br /&gt;
[[Bild:MQTT2_ebustempbalken.png|400px|thumb|left|EStatusmeldung als Readingsgroup mit Balkenanzeige]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Template: E_03_eBus_bai_readingsgroup_Status02&lt;br /&gt;
[[Bild:MQTT2_ebuswarmwasser.png|250px|thumb|left|Statusmeldung als Readingsgroup]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Template: E_04_eBus_bai_readingsgroup_Status02_Balken&lt;br /&gt;
[[Bild:MQTT2_ebuswarmwasserbalken.png|400px|thumb|left|Statusmeldung als Readingsgroup mit Balkenanzeige]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Allgemeine Hinweise ==&lt;br /&gt;
=== MQTT2_SERVER und MQTT2_CLIENT für Debugging nutzen ===&lt;br /&gt;
Nutzt man das rawEvents-Attribut am MQTT2-IO&amp;lt;ref&amp;gt;z.B. &amp;lt;code&amp;gt;attr MQTT2_FHEM_Server rawEvents .*&amp;lt;/code&amp;gt;, der regex-Filter kann wie üblich angepaßt werden&amp;lt;/ref&amp;gt;, kann man den Datenverkehr des Servers am Event-Monitor mitschneiden. Dies ist insbesondere für unbekannte Geräte nützlich, deren Topic- und Payload-Struktur noch nicht bekannt ist.&lt;br /&gt;
Um den kompletten MQTT Datenaustausch mitzuschneiden, kann man mit &amp;lt;code&amp;gt;attr mqtt2_server verbose 5&amp;lt;/code&amp;gt; auch alles ins FHEM-Log schreiben lassen.&lt;br /&gt;
&lt;br /&gt;
=== attrTemplate ===&lt;br /&gt;
Zur Konfiguration von MQTT2_DEVICE-Geräten kann die Funktion &#039;&#039;attrTemplate&#039;&#039; genutzt werden. &lt;br /&gt;
Die Anwendung ist [[MQTT2 DEVICE#attrTemplate|hier]] beschrieben.&lt;br /&gt;
== Links ==&lt;br /&gt;
* {{Link2Forum|Topic=91394|LinkText=Thread, aus dem diese Anleitung ursprünglich entstanden ist}}&lt;br /&gt;
* {{Link2Forum|Topic=91807|LinkText=Thread zum Tasmota-Device}}&lt;br /&gt;
* {{Link2Forum|Topic=97989|LinkText=Thread, aus dem diese Anleitung für den eBus ursprünglich entstanden ist}}&lt;br /&gt;
* {{Link2Forum|Topic=94495|LinkText=Neue templates einreichen}}&lt;br /&gt;
* {{Link2Forum|Topic=94494|LinkText=Fragen, Wünsche und Kritik zu mqtt2.template}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Hinweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
[[Kategorie:MQTT]]&lt;br /&gt;
[[Kategorie:ZigBee]]&lt;br /&gt;
[[Kategorie:IP Components|IP Komponenten]]&lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:Interfaces]]&lt;/div&gt;</summary>
		<author><name>Reinhart</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=MQTT2-Module_-_Praxisbeispiele&amp;diff=29841</id>
		<title>MQTT2-Module - Praxisbeispiele</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=MQTT2-Module_-_Praxisbeispiele&amp;diff=29841"/>
		<updated>2019-03-10T20:09:54Z</updated>

		<summary type="html">&lt;p&gt;Reinhart: Link für ebusTemplate hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einführung: MQTT bzw. MQTT2 in FHEM ==&lt;br /&gt;
Zur Einbindung von Geräten, welche mit einem MQTT-Server (früher: Broker) kommunizieren können, stehen unter FHEM verschiedene Optionen zur Verfügung, wobei nicht alle Module beliebig miteinander verwendet werden können. Details hierzu sind dieser [[MQTT|Übersicht]] zu entnehmen. &lt;br /&gt;
&lt;br /&gt;
Im Rahmen dieses Artikels wird für die eigentlichen Geräte [[MQTT2 DEVICE]] verwendet, damit wird als IO-Device entweder {{Link2CmdRef|Anker=MQTT2_SERVER|Lang=en|Label=MQTT2_SERVER}} oder [[MQTT2 CLIENT|MQTT2_CLIENT]] oder benötigt, mit einem IO-Device des Typs [[MQTT (Modul)|MQTT]] funktioniert die nachfolgende Darstellung dagegen nicht&amp;lt;ref&amp;gt;Allerdings können die Konfigurationen in der Regel recht einfach auf die bisherige MQTT-Implementierung übertragen werden&amp;lt;/ref&amp;gt;. MQTT2_DEVICE unterstützt u.a. auch die &#039;&#039;setExtensions&#039;&#039; direkt, also z.B. &#039;&#039;on-for-timer&#039;&#039; sowie &#039;&#039;[[MQTT2-Module - Praxisbeispiele#attrTemplate_2|attrTemplate]]&#039;&#039;&amp;lt;ref&amp;gt;Auch MQTT_DEVICE unterstützt setExtensions, allerdings muß dies dort per Attribut eingeschaltet werden&amp;lt;/ref&amp;gt;.&lt;br /&gt;
{{Hinweis|Die nachfolgenden Beispiele gelingen am einfachsten mit MQTT2_SERVER als Server, für diesen sollte dabei &#039;&#039;autocreate&#039;&#039; aktiviert werden, damit die erforderlichen MQTT2_DEVICES soweit möglich automatisiert erstellt werden&amp;lt;ref&amp;gt;Dabei wird vorausgesetzt, dass ein allgemeines  autocreate-Device (TYPE=autocreate) ebenfalls aktiv ist&amp;lt;/ref&amp;gt;.}}{{Hinweis|Die Code-Darstellung in diesem Beitrag entspricht jeweils dem RAW-Format zum [[Import von Code Snippets]]. Wer die Attribute direkt und einzeln bearbeitet, muß ggf. die &amp;quot;\&amp;quot; entfernen!}}&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
 define MQTT2_FHEM_Server MQTT2_SERVER 1883 global&lt;br /&gt;
 attr MQTT2_FHEM_Server autocreate 1&lt;br /&gt;
&lt;br /&gt;
== zigbee2mqtt ==&lt;br /&gt;
[[Bild:MQTT2_zigbee2mqtt_Bulbs.png|400px|thumb|Darstellung in FHEMWEB]]&lt;br /&gt;
[https://github.com/Koenkk/zigbee2mqtt zigbee2mqtt] ist ein open-source Projekt, mit dem zigbee-Geräte über MQTT direkt angesprochen werden können, ohne dass hierfür eine Bridge eines Herstellers benötigt wird.&lt;br /&gt;
=== Installation von zigbee2mqtt ===&lt;br /&gt;
Die Installation des zigbee2mqtt-Diensts ist auf der Homepage des Projekts beschrieben. Ergänzend muß in der configuration.yaml eine &#039;&#039;client_id&#039;&#039; unter &#039;&#039;mqtt&#039;&#039; (z.B. zigbee_pi) vergeben werden&amp;lt;ref&amp;gt;Die Anführungszeichen sowie genau zwei Leerzeichen sind hier erforderlich!&amp;lt;/ref&amp;gt;.&lt;br /&gt;
 mqtt:&lt;br /&gt;
   client_id: &#039;zigbee_pi&#039;&lt;br /&gt;
Da der Dienst auch später in den Anlernmodus versetzt werden kann, kann man auch gleich &amp;lt;code&amp;gt;permit_join: false&amp;lt;/code&amp;gt; setzen, um das versehentliche Einbinden neuer oder fremder Geräte zu unterbinden.&lt;br /&gt;
&lt;br /&gt;
=== Define eines MQTT2-Devices als &amp;quot;Bridge&amp;quot; === &lt;br /&gt;
Dann kann eine Art &amp;quot;Grund-Device&amp;quot; angelegt werden, das für die Ansteuerung des eigentlichen Server-Dienstes genutzt wird, der bereits unmittelbar nach der erfolgreichen Konfiguration von zigbee2mqtt zur Verfügung steht. In der Regel sollte dieses automatisch erstellt werden, wenn der zigbee2mqtt-Dienst (oder der betreffende Rechner) neu gestartet wird (oder FHEM oder dort ein Sensor einen Messwert sendet). Beispiel&amp;lt;ref&amp;gt;Hier waren bereits zwei Zigbee-Geräte angelernt&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 defmod MQTT2_zigbee_pi MQTT2_DEVICE zigbee_pi&lt;br /&gt;
 attr MQTT2_zigbee_pi IODev MQTT2_FHEM_Server&lt;br /&gt;
 attr MQTT2_zigbee_pi IODev MQTT2_FHEM_Server&lt;br /&gt;
 attr MQTT2_zigbee_pi readingList zigbee_pi:zigbee2mqtt/bridge/state:.* state\&lt;br /&gt;
   zigbee_pi:zigbee2mqtt/0x90fd9ffffe65db16:.* { json2nameValue($EVENT, &#039;&#039;) }\&lt;br /&gt;
   zigbee_pi:zigbee2mqtt/0x90fd9ffffe0bcd51:.* { json2nameValue($EVENT, &#039;&#039;) }\&lt;br /&gt;
   zigbee_pi:zigbee2mqtt/bridge/log:.* { json2nameValue($EVENT, &#039;log_&#039;) }&lt;br /&gt;
 attr MQTT2_zigbee_pi room MQTT2_DEVICE&lt;br /&gt;
&lt;br /&gt;
Für die Funktion einer zigbee2mqtt-Bridge steht ein {{Link2CmdRef|Anker=set|Lang=en|Label=template}} bereit, das direkt die passenden Attribute vergibt, um dem zigbee2mqtt-Dienst passende Anweisungen geben zu können und weitere Geräte für die eigentlichen Aktoren und Sensoren anzulegen:&lt;br /&gt;
&lt;br /&gt;
 set MQTT2_zigbee_pi attrTemplate L_01_zigbee2mqtt_bridge&lt;br /&gt;
&lt;br /&gt;
Ist dieses angelegt, kann zigbee2mqtt mit &amp;lt;code&amp;gt;set MQTT2_zigbee_pi permit_join true&amp;lt;/code&amp;gt; in den Anlernmodus versetzt werden, anzulernende Geräte müssen anschließend jeweils nach Bedienungsanleitung in den Anlernmodus gebracht werden.&lt;br /&gt;
&lt;br /&gt;
=== Vereinzeln der eigentlichen Geräte ===&lt;br /&gt;
&lt;br /&gt;
Über das mit dem template vergebene bridgeRegexp-Attribut  &lt;br /&gt;
 attr MQTT2_zigbee_pi bridgeRegexp zigbee2mqtt/([A-Za-z0-9]*)[/]?.*:.* &amp;quot;zigbee_$1&amp;quot; &lt;br /&gt;
werden anschließend neue MQTT2_DEVICE-Geräte automatisch angelegt, sobald ein bisher unbekanntes Zigbee-Gerät einen neuen Status (z.B. einen Meßwert) meldet. Um zu erfragen, welche Geräte dem zigbee-Deinst bekannt sind, kann via &amp;lt;code&amp;gt;get MQTT2_zigbee_pi devicelist true&amp;lt;/code&amp;gt; eine Liste abgefragt werden, die weitere Informationen zu den bereits angelernten Geräten enthält.&lt;br /&gt;
Geräte, die nicht automatisch etwas senden, kann man mit Hilfe des MQTT2_SERVER-Geräts einmalig schalten, damit diese ihren Status bzw. das erfolgreiche Schalten zurückmelden, Beispiel&amp;lt;ref&amp;gt;Die mit 0x... beginnende Angabe entspricht dabei dem &#039;&#039;friendly_name&#039;&#039;.&amp;lt;/ref&amp;gt;:&lt;br /&gt;
 set MQTT2_FHEM_Server publish zigbee2mqtt/0x90fd9ffffe0bcd51/set {&amp;quot;state&amp;quot;:&amp;quot;ON&amp;quot;,&amp;quot;brightness&amp;quot;:60}&lt;br /&gt;
&lt;br /&gt;
Für Gerätetypen, für die bereits templates vorhanden sind, ist es am einfachsten, diese einmalig auf die Geräte anzuwenden. Das Vorgehen entspricht dabei dem oben für die Bridge beschriebenen. Dafür wird immer vorausgesetzt, dass ein neues Device mit autocreate (ggf. über die bridgeRegexp) angelegt wurde&amp;lt;ref&amp;gt;Dieses befindet sich dann im Raum MQTT2_DEVICE. Um diesen sichtbar zu machen, muß ggf. die Browser-Seite neu geladen werden.&amp;lt;/ref&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
==== IKEA-Tradfri-Birne ====&lt;br /&gt;
{{Randnotiz|RNTyp=g|RNText=Wie wähle ich nun das richtige Template für mein Leuchtmittel aus?&lt;br /&gt;
-&amp;gt; Es wird nicht zwischen einer Birne/Bulb/Lampe und einem LED-Controller unterschieden sondern anhand der möglichen Lichtdarstellung des Gerätes:&lt;br /&gt;
&lt;br /&gt;
light_dimmer:&lt;br /&gt;
Das anzusteuernde Geräte besitzt ausschließlich eine feste Lichtfarbe welche gedimmt werden kann.&lt;br /&gt;
&lt;br /&gt;
light_cct:&lt;br /&gt;
Das anzusteuernde Gerät besitzt eine warmweiße sowie kaltweiße Lichtfarbe welche verändert sowie gedimmt werden kann.&lt;br /&gt;
&lt;br /&gt;
light_rgb_xxx:&lt;br /&gt;
Das anzusteuernde Gerät besitzt die Möglichlichkeit einer farbigen Lichtdarstellung (Rot, Grün, Blau) und kann gedimmt werden.&lt;br /&gt;
&lt;br /&gt;
light_rgbw_xxx:&lt;br /&gt;
Das anzusteuernde Gerät besitzt die Möglichlichkeit einer farbigen Lichtdarstellung (Rot, Grün, Blau) und besitzt eine warmweiße ODER kaltweiße Lichtfarbe welche eingestellt sowie gedimmt werden kann.&lt;br /&gt;
&lt;br /&gt;
light_rgbcct_xxx:&lt;br /&gt;
Das anzusteuernde Gerät besitzt die Möglichlichkeit einer farbigen Lichtdarstellung (Rot, Grün, Blau) und besitzt eine warmweiße UND kaltweiße Lichtfarbe welche verändert sowie gedimmt werden kann.&lt;br /&gt;
   &lt;br /&gt;
   xxx:&lt;br /&gt;
      hex:   Farbänderung mit hex&lt;br /&gt;
      rgb:   Farbänderung mit r g b&lt;br /&gt;
      xy:   Farbänderung mit x sowie y&lt;br /&gt;
      hue:   Farbänderung mit hue und saturation&lt;br /&gt;
&lt;br /&gt;
Warum diese Einteilung in &amp;quot;hex&amp;quot;, &amp;quot;rgb&amp;quot;, &amp;quot;xy&amp;quot; sowie &amp;quot;hue&amp;quot;?&lt;br /&gt;
-&amp;gt; Zigbee2MQTT unterstützt das Übermitteln aller dieser Werte, allerdings unterscheiden sich hier die Geräte. Manche &amp;quot;verstehen&amp;quot; nur z.B. Hex-Farbänderungen, andere halt nur eine Farbänderung mit rgb-Werten.&lt;br /&gt;
-&amp;gt; Aus diesem Grund muss an dieser Stelle probiert werden mit welchem der 4 Templates sich die Farbveränderung des Gerätes steuern lässt!&lt;br /&gt;
&lt;br /&gt;
HINWEIS: Templates für Farbänderungen mithilfe von XY- sowie HUE-Werten wurden bis heute nicht angelegt!&lt;br /&gt;
}}&lt;br /&gt;
Beispiel eines dimmbaren Tradfri-Leuchtmittels&lt;br /&gt;
 defmod IKEA_Bulb2 MQTT2_DEVICE&lt;br /&gt;
 attr IKEA_Bulb2 IODev MQTT2_FHEM_Server&lt;br /&gt;
 attr IKEA_Bulb2 icon light_control&lt;br /&gt;
 attr IKEA_Bulb2 devStateIcon {zigbee2mqtt_devStateIcon255($name)}&lt;br /&gt;
 attr IKEA_Bulb2 readingList zigbee_pi:zigbee2mqtt/0x90fd9ffffe0bcd51:.* { json2nameValue($EVENT) }&lt;br /&gt;
 attr IKEA_Bulb2 setList on:noArg zigbee2mqtt/0x90fd9ffffe0bcd51/set {&amp;quot;state&amp;quot;:&amp;quot;ON&amp;quot;}\&lt;br /&gt;
     off:noArg zigbee2mqtt/0x90fd9ffffe0bcd51/set {&amp;quot;state&amp;quot;:&amp;quot;OFF&amp;quot;}\&lt;br /&gt;
     brightness:colorpicker,BRI,0,15,255 zigbee2mqtt/0x90fd9ffffe0bcd51/set {&amp;quot;state&amp;quot;:&amp;quot;on&amp;quot;,&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}&lt;br /&gt;
 attr IKEA_Bulb2 webCmd toggle:on:off:brightness&lt;br /&gt;
 attr IKEA_Bulb2 model L_02a_zigbee2mqtt_bulb&lt;br /&gt;
&lt;br /&gt;
Kann man auch die Farbtemperatur einstellen, wird die setList wie folgt erweitert oder das entsprechende template&amp;lt;ref&amp;gt;Durch die &#039;&#039;model&#039;&#039;-Angabe kann nachvollzogen werden, welches template angewendet wurde.&amp;lt;/ref&amp;gt; anwendet:&lt;br /&gt;
 ...&lt;br /&gt;
 color_temp:colorpicker,CT,250,1,454 zigbee2mqtt/0x90fd9ffffe0bcd51/set {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
Die templates sind dabei in der Regel so gestaltet, dass eventuell mehr Optionen in FHEMWEB erscheinen, als tatsächlich vorhanden oder erwünscht sind. &lt;br /&gt;
Da sich obige einfarbige dimmbare Lampe durch Klicken auf das devStateIcon schalten läßt, ist für die vollständige Ansteuerung bereits dieses webCmd hinreichend:&lt;br /&gt;
 attr IKEA_Bulb2 webCmd brightness&lt;br /&gt;
&lt;br /&gt;
==== Temp/Hum. Sensor ====&lt;br /&gt;
tbd&lt;br /&gt;
&lt;br /&gt;
==== Motion Sensor ====&lt;br /&gt;
Als MQTT-Server wird hier &#039;&#039;mosquitto&#039;&#039; verwendet, als IO-Device wird daher ein {{Link2CmdRef|Anker=MQTT2_CLIENT|Lang=en|Label=MQTT2_CLIENT}}-Gerät definiert: &lt;br /&gt;
&lt;br /&gt;
 defmod mqtt2_client MQTT2_CLIENT 192.168.2.4:1883&lt;br /&gt;
 attr mqtt2_client autocreate 1&lt;br /&gt;
 attr mqtt2_client rawEvents zigbee2mqtt/GB_Bewegungsmelder:.*&lt;br /&gt;
 attr mqtt2_client room test&lt;br /&gt;
 attr mqtt2_client subscriptions #&lt;br /&gt;
&lt;br /&gt;
Das eigentliche Device sieht dann so aus:&lt;br /&gt;
 defmod GB_Bewegungsmelder_MQTT2 MQTT2_DEVICE zigbee_158d0001f9d030&lt;br /&gt;
 attr GB_Bewegungsmelder_MQTT2 IODev mqtt2_client&lt;br /&gt;
 attr GB_Bewegungsmelder_MQTT2 devStateIcon motion:motion_detector@red off:motion_detector@green no_motion:motion_detector@green&lt;br /&gt;
 attr GB_Bewegungsmelder_MQTT2 icon motion_detector@blue&lt;br /&gt;
 attr GB_Bewegungsmelder_MQTT2 readingList mqtt2client:zigbee2mqtt/GB_Bewegungsmelder:.* { json2nameValue($EVENT) }&lt;br /&gt;
 attr GB_Bewegungsmelder_MQTT2 room MQTT2_DEVICE&lt;br /&gt;
 attr GB_Bewegungsmelder_MQTT2 stateFormat {\&lt;br /&gt;
 if(ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;occupancy&amp;quot;,0) eq &amp;quot;true&amp;quot;) {\&lt;br /&gt;
 	sprintf(&amp;quot;motion&amp;quot;);;\&lt;br /&gt;
 	} else {\&lt;br /&gt;
 	sprintf(&amp;quot;no_motion&amp;quot;);;	\&lt;br /&gt;
 	}\&lt;br /&gt;
 }&lt;br /&gt;
==== Anlegen von Zigbee2MQTT-Gruppen in FHEM ====&lt;br /&gt;
{{Hinweis|Die nachfolgende Darstellung ist vorläufig!}}&lt;br /&gt;
{{Hinweis|Bevor man eine Gruppe mithilfe von Zigbee2MQTT anlegen kann, sollte man sicherstellen, dass man über die aktuelleste Version von Zigbee2MQTT verfügt (min. vom 15. Februar 2019). Außerdem sollte auch der Koordinator (zumeist CC2531) die aktuellste Firmware besitzen (min. vom 15. Februar 2019). Falls ein flashen des Koordinators mit der neusten Firmware erfolgen soll, ist darauf zu achten, dass nach einem flashen alle Geräte neu angelernt werden müssen! (Hinweise zum flashen ohne erneutem anlernen sind hier zu finden: https://www.zigbee2mqtt.io/information/flashing_without_re-pairing.html)}}&lt;br /&gt;
&lt;br /&gt;
=====Erstellen einer Zigbee2MQTT-Gruppe=====&lt;br /&gt;
Bevor das Ganze in FHEM funktioniert, muss eine Gruppe in der &amp;quot;configuration.yaml&amp;quot; angelegt werden, dieser Vorgang ist auf folgender Seite beschrieben: https://www.zigbee2mqtt.io/information/groups.html&lt;br /&gt;
Wenn die Geräte anschließend über den FHEM MQTT2-Server der Gruppe hinzugefügen werden sollen, kann dies mit folgendem Befehl erfolgen:&lt;br /&gt;
 set &amp;lt;MQTT2-Server&amp;gt; publish zigbee2mqtt/bridge/group/&amp;lt;Zigbee2MQTT Friendly-Gruppenname&amp;gt;/add &amp;lt;Zigbee2MQTT Friendly-Gerätename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
 set MQTT2_FHEM_Server publish zigbee2mqtt/bridge/group/Wohnzimmer/add Stehlampe&lt;br /&gt;
&lt;br /&gt;
Dieser Befehl kann so oft verwendet werden, wie man Geräte zu einer Gruppe hinzufügen möchte.&lt;br /&gt;
&lt;br /&gt;
Zum Entfernen eines Gerätes aus einer Gruppe kann folgender Befehl verwendet werden:&lt;br /&gt;
 set &amp;lt;MQTT2-Server&amp;gt; publish zigbee2mqtt/bridge/group/&amp;lt;Zigbee2MQTT Friendly-Gruppenname&amp;gt;/remove &amp;lt;Zigbee2MQTT Friendly-Gerätename&amp;gt;&lt;br /&gt;
Beispiel:&lt;br /&gt;
 set MQTT2_FHEM_Server publish zigbee2mqtt/bridge/group/Wohnzimmer/remove Kuechenlampe&lt;br /&gt;
&lt;br /&gt;
=====Anlegen der Gruppe in FHEM=====&lt;br /&gt;
Da Gruppen in Zigbee2MQTT aktuell keine Rückmeldung über ihren Status geben, wird auch beim einmaligen Schalten kein Gerät automatisch in FHEM angelegt. Aus diesem Grund muss dies mit folgendem Befehl noch manuell erfolgen:&lt;br /&gt;
 defmod &amp;lt;FHEM NAME&amp;gt; MQTT2_DEVICE&lt;br /&gt;
Beispiel&lt;br /&gt;
 defmod lichtWohnzimmer MQTT2_DEVICE&lt;br /&gt;
Anschließend wird auch für dieses Gerät wieder ein passendes template ausgewählt, wie als wäre es ein normales Zigbee2MQTT-Gerät.&lt;br /&gt;
Im anschließenden Dialog-Fenster welches sich nach dem Setzen des templates öffnet, müssen die folgenden Werte durch passendes ersetzt werden:&lt;br /&gt;
 BASE_TOPIC -&amp;gt; zigbee2mqtt&lt;br /&gt;
 DEV_ID -&amp;gt; &amp;lt;Zigbee2MQTT Friendly-Gruppenname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach sollte sich die Gruppe wie ein normales Zigbee2MQTT Gerät steuern lassen.&lt;br /&gt;
&lt;br /&gt;
== Tasmota ==&lt;br /&gt;
[https://github.com/arendst/Sonoff-Tasmota Tasmota] (&#039;&#039;&#039;T&#039;&#039;&#039;heo &#039;&#039;&#039;A&#039;&#039;&#039;rends &#039;&#039;&#039;S&#039;&#039;&#039;onoff &#039;&#039;&#039;M&#039;&#039;&#039;QTT &#039;&#039;&#039;O&#039;&#039;&#039;ver &#039;&#039;&#039;T&#039;&#039;&#039;he &#039;&#039;&#039;A&#039;&#039;&#039;ir - einer offenen Firmware von [https://github.com/arendst arendst]) ist eine open-source Software für ESP8266-Geräte, die z.B. statt der originalen Firmware für Sonoff-Geräte und andere ESP8266-basierte WLAN-Steckdosen usw. verwendet werden kann. {{Randnotiz|RNTyp=r|RNText=Bitte beachten Sie, dass versicherungsrechtliche Probleme entstehen können, wenn die herstellereigene Firmware ersetzt wird!}}&lt;br /&gt;
&lt;br /&gt;
=== MQTT2_DEVICE ===&lt;br /&gt;
Dieses sollte bei aktiviertem &#039;&#039;autocreate&#039;&#039; am MQTT2_SERVER-Device automatisch angelegt werden, sobald das betreffende Gerät eingesteckt oder neu gestartet oder an einem evtl. vorhandenen Taster geschalten wird. Hier wurden Tasmota version(en) 6.1.1 und 6.2.1 getestet, Hardware war Sonoff Touch und S20.&lt;br /&gt;
&lt;br /&gt;
=== Manuelle Anpassungen ===&lt;br /&gt;
Die RAW-Definition kann dann beispielsweise wie folgt ergänzt werden:  &lt;br /&gt;
 defmod MQTT2_DVES_9B01BD MQTT2_DEVICE DVES_9B01BD&lt;br /&gt;
 attr MQTT2_DVES_9B01BD IODev m2server&lt;br /&gt;
 attr MQTT2_DVES_9B01BD readingList DVES_9B01BD:tele/sonoffkitchen/STATE:.* { json2nameValue($EVENT) }\&lt;br /&gt;
    DVES_9B01BD:tele/sonoffkitchen/LWT:.* LWT\&lt;br /&gt;
    DVES_9B01BD:cmnd/sonoffkitchen/POWER:.* POWER\&lt;br /&gt;
    DVES_9B01BD:tele/sonoffkitchen/UPTIME:.* { json2nameValue($EVENT) }\&lt;br /&gt;
    DVES_9B01BD:tele/sonoffkitchen/SENSOR:.* { json2nameValue($EVENT) }\&lt;br /&gt;
    DVES_9B01BD:tele/sonoffkitchen/INFO1:.* { json2nameValue($EVENT) }\&lt;br /&gt;
    DVES_9B01BD:tele/sonoffkitchen/INFO2:.* { json2nameValue($EVENT) }\&lt;br /&gt;
    DVES_9B01BD:tele/sonoffkitchen/INFO3:.* { json2nameValue($EVENT) }\&lt;br /&gt;
    DVES_9B01BD:stat/sonoffkitchen/RESULT:.* { json2nameValue($EVENT) }\&lt;br /&gt;
    DVES_9B01BD:stat/sonoffkitchen/STATE:.* { json2nameValue($EVENT) }&lt;br /&gt;
 attr MQTT2_DVES_9B01BD room MQTT2_DEVICE&lt;br /&gt;
 attr MQTT2_DVES_9B01BD setList on cmnd/sonoff/POWER on\&lt;br /&gt;
    off cmnd/sonoff/POWER off\&lt;br /&gt;
    reboot cmnd/sonoff/Restart 1&lt;br /&gt;
 attr MQTT2_DVES_9B01BD webCmd on:off:reboot&lt;br /&gt;
&lt;br /&gt;
=== attrTemplate ===&lt;br /&gt;
Für gängige Tasmota-Geräte stehen &#039;&#039;templates&#039;&#039; bereit, mit denen sich diese schnell konfigurieren lassen. &lt;br /&gt;
Beachten Sie dazu den Abschnitt &#039;&#039;attrTemplate&#039;&#039; in [[MQTT2 DEVICE#attrTemplate|MQTT2_DEVICE]]. Bei Anwendung eines template mit &amp;quot;split&amp;quot; im Namen werden dabei weitere Geräte angelegt und konfiguriert.&lt;br /&gt;
&lt;br /&gt;
== Shelly ==&lt;br /&gt;
=== Vorbemerkung ===&lt;br /&gt;
Auch für Shelly-Geräte steht eine Auswahl an [[MQTT2-Module - Praxisbeispiele#attrTemplate_2|templates]] bereit.&lt;br /&gt;
Beachten Sie auch hier, dass uU. bei Anwendung eines template mit &amp;quot;split&amp;quot; im Namen weitere Geräte angelegt und konfiguriert werden.&lt;br /&gt;
&lt;br /&gt;
=== Shelly1 ===&lt;br /&gt;
&lt;br /&gt;
=== Shellybulb ===&lt;br /&gt;
Zunächst muss man einen Statusupdate des Shellybulb erzwingen (Aus- und Einschalten, physikalisch oder per Web-UI), damit das Gerät bei eingeschaltetem autocreate  angelegt wird. Dies sieht zunächst so aus:&lt;br /&gt;
 Internals:&lt;br /&gt;
   CFGFN     &lt;br /&gt;
   CID        shellybulb_3CC533&lt;br /&gt;
   DEF        shellybulb_3CC533&lt;br /&gt;
   DEVICETOPIC MQTT2_shellybulb_3CC533&lt;br /&gt;
   IODev      MQTT2_FHEM_Server&lt;br /&gt;
   NAME       MQTT2_shellybulb_3CC533&lt;br /&gt;
   NR         246&lt;br /&gt;
   STATE      ???&lt;br /&gt;
   TYPE       MQTT2_DEVICE&lt;br /&gt;
   READINGS:&lt;br /&gt;
     2018-12-12 19:28:08   status_blue     0&lt;br /&gt;
     2018-12-12 19:28:08   status_brightness 61&lt;br /&gt;
     2018-12-12 19:28:08   status_effect   0&lt;br /&gt;
     2018-12-12 19:28:08   status_gain     26&lt;br /&gt;
     2018-12-12 19:28:08   status_green    0&lt;br /&gt;
     2018-12-12 19:28:08   status_ison     true&lt;br /&gt;
     2018-12-12 19:28:08   status_mode     color&lt;br /&gt;
     2018-12-12 19:28:08   status_red      255&lt;br /&gt;
     2018-12-12 19:28:08   status_temp     3250&lt;br /&gt;
     2018-12-12 19:28:08   status_white    0&lt;br /&gt;
 Attributes:&lt;br /&gt;
   IODev      MQTT2_FHEM_Server&lt;br /&gt;
   readingList shellybulb_3CC533:shellies/shellybulb-3CC533/color/0/status:.* { json2nameValue($EVENT, &#039;status_&#039;) }&lt;br /&gt;
   room       MQTT2_DEVICE&lt;br /&gt;
[[Bild:MQTT2 Shellybulb.png|400px|thumb|Darstellung in FHEMWEB nach Anwendung des template]]Dann bei den set-Anweisungen das attrTemplate &amp;quot;shellybulb&amp;quot; auswählen und setzen. Es erscheint eine Abfrage, ob die vorhandenen Readings gelöscht werden sollen. Diese bitte bestätigen und die Seite neu laden. Danach einmal An- und Ausschalten, damit die Readings auch durch einen neuen Status initialisiert werden und die Seite im Browser neu laden.&lt;br /&gt;
&lt;br /&gt;
== Milight-Bridge ==&lt;br /&gt;
=== Vorbemerkung ===&lt;br /&gt;
Der [https://github.com/sidoh/esp8266_milight_hub esp8266_milight_hub] ist ein open source- Projekt, mit dem auf Basis von &#039;&#039;openmili&#039;&#039; eine Vielzahl von MiLight-Geräten gesteuert werden können. Der MiLight-Hub erstetzt dabei eine beliebige Zahl von Milight-Bridges und ist auch zu verschiedenen Versionen des MiLight-Protokols kompatibel.&lt;br /&gt;
Neben MQTT kann dieser auch mit HTTPMOD oder Wifilight (bzw. den MiLight-Modulen) gesteuert werden. Die Hardware entspricht dabei im Wesentlichen einem MySensors-Wifi-Gateway&amp;lt;ref&amp;gt;Es wird lediglich ein anderer CS-PIN genutzt. Dies kann einfach in der Web-Oberfläche der Firmware umgestellt werden.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
Hier wird vorausgesetzt, dass eine funktionierende Bridge vorhanden ist.&lt;br /&gt;
Der Vorteil der MQTT-Lösung liegt darin, dass man bei kompatiblen Fernbedienungen auch direkt Informationen über Schaltvorgänge erhält, die mit der Fernbedienung ausgelöst werden.&lt;br /&gt;
&lt;br /&gt;
=== Einstellungen am MiLight-Hub ===&lt;br /&gt;
Die zum FHEM-Server bzw. dem MQTT2_SERVER passenden Vorgaben sind im Web-Interface des Hub einzustellen. Gegebenenfalls passen Sie die vom Hub zurückzugebenden Elemente im Web-Interface des Hub an.&lt;br /&gt;
&lt;br /&gt;
=== FHEM-Devices ===&lt;br /&gt;
[[Bild:MQTT2 MiLight.png|400px|thumb|Milight: Darstellung in FHEMWEB]]&lt;br /&gt;
==== Bridge ====&lt;br /&gt;
Wird nun über den Hub oder eine von diesem erkannte Fernbedienung ein vorhandenes Leuchtmittel geschaltet, wird bei eingeschaltetem autocreate ein erstes Device erstellt, die zunächst erstellte Definition sieht typischerweise etwa so aus:&lt;br /&gt;
 defmod MQTT2_milight_hub_1370325 MQTT2_DEVICE milight_hub_1370325&lt;br /&gt;
 attr MQTT2_milight_hub_1370325 IODev MQTT2_FHEM_Server&lt;br /&gt;
 attr MQTT2_milight_hub_1370325 readingList milight_hub_1370325:milight/updates/0xBE59/rgbw/1:.* { json2nameValue($EVENT, &#039;1_&#039;, $JSONMAP) }&lt;br /&gt;
 attr MQTT2_milight_hub_1370325 room MQTT2_DEVICE&lt;br /&gt;
&lt;br /&gt;
Auf dieses Device wird nun das &#039;&#039;template&#039;&#039; X_01_esp_milight_hub_bridge angewandt.&lt;br /&gt;
&lt;br /&gt;
==== Einzelne Leuchtmittel ====&lt;br /&gt;
&lt;br /&gt;
Wird nun nochmals das oben verwendete Leuchtmittel geschaltet, erstellt autocreate ein weiteres Device:&lt;br /&gt;
 defmod MQTT2_milight_0xBE59_1 MQTT2_DEVICE milight_0xBE59_1&lt;br /&gt;
 attr MQTT2_milight_0xBE59_1 IODev MQTT2_FHEM_Server&lt;br /&gt;
 attr MQTT2_milight_0xBE59_1 readingList milight/states/0xBE59/rgbw/1:.* { json2nameValue($EVENT, &#039;1_&#039;, $JSONMAP) }&lt;br /&gt;
 attr MQTT2_milight_0xBE59_1 room MQTT2_DEVICE&lt;br /&gt;
&lt;br /&gt;
Auf dieses wird nun eines der Bulb-templates angewendet. Wählt man das template X_01_esp_milight_hub_rgbw_bulb, wird eine einfache Variante erstellt, die neben einem toggelnden Icon nur Regler für Helligkeit, die Farbe und zwei Schaltflächen für den Weiß- und Nachtmodus enthält. Wer mehr oder andere Steuerelemente erhalten möchte, verwendet ein anderes template. Nicht benötigte Elemente kann man dabei einfach aus der Definition löschen.&lt;br /&gt;
&lt;br /&gt;
Alle weiteren Devices werden genauso erstellt. &lt;br /&gt;
&lt;br /&gt;
Um ein Device zu erhalten, mit dem sich alle Kanäle gleichzeitig steuern lassen, kann das template &#039;&#039;X_01a_esp_milight_hub_make_rgbw_group&#039;&#039; verwendet werden. Dieses verändert nicht das aktuelle Device, sondern erstellt &#039;&#039;&#039;eine Kopie&#039;&#039;&#039;, die dann modifiziert wird. Diese Kopie ist unter dem Namen &#039;&#039;milight_&amp;lt;RemoteID&amp;gt;_0&#039;&#039; im selben Raum zu finden wie das Ausgangsgerät und kann ebenfalls an die eigenen Wünsche angepaßt werden. &lt;br /&gt;
&lt;br /&gt;
Weitere Beispiele:&lt;br /&gt;
Beispiel für ein RGB-CCT-Device:&lt;br /&gt;
 defmod Licht_Wz_all MQTT2_DEVICE&lt;br /&gt;
 attr Licht_Wz_all IODev MQTT2_Broker&lt;br /&gt;
 attr Licht_Wz_all eventMap /set_white:Weiss/night_mode:Nacht/white_mode:white/on:on/off:off/ON:on/OFF:off/next_mode:Mode/mode_speed_up:Up/mode_speed_down:Down/&lt;br /&gt;
 attr Licht_Wz_all group Licht&lt;br /&gt;
 attr Licht_Wz_all icon light_control&lt;br /&gt;
 attr Licht_Wz_all readingList milight_hub_10693013:milight/0x5D02/rgb_cct/0:.* { json2nameValue($EVENT) }\&lt;br /&gt;
 milight_hub_10693013:milight/updates/0x5D02/rgb_cct/0:.* { json2nameValue($EVENT) }\&lt;br /&gt;
 milight_hub_10693013:milight/states/0x5D02/rgb_cct/0:.* { json2nameValue($EVENT) }\&lt;br /&gt;
 &lt;br /&gt;
 attr Licht_Wz_all room Wohnzimmer&lt;br /&gt;
 attr Licht_Wz_all setList on milight/0x5D02/rgb_cct/0 {&amp;quot;status&amp;quot;:&amp;quot;ON&amp;quot;}\&lt;br /&gt;
 off milight/0x5D02/rgb_cct/0 {&amp;quot;status&amp;quot;:&amp;quot;OFF&amp;quot;}\&lt;br /&gt;
 level milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 hue:colorpicker,HUE,0,1,359 milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 command:uzsuSelectRadio,Weiss,Nacht,Mode,Up,Down milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 brightness:colorpicker,BRI,0,1,255 milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 next_mode milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 mode_speed_up milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 mode_speed_down milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 saturation:colorpicker,BRI,0,1,100 milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 color_temp:colorpicker,CT,153,1,370 milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 device_id milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 effect milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 mode milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 commands milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}&lt;br /&gt;
 attr Licht_Wz_all sortby 1&lt;br /&gt;
 attr Licht_Wz_all webCmd command:brightness:saturation:color_temp:hue&lt;br /&gt;
 attr Licht_Wz_all webCmdLabel command\ &lt;br /&gt;
 :brightness:saturation\&lt;br /&gt;
 :color_temp:hue&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== eBus ==&lt;br /&gt;
=== eBus mit MQTT2 auswerten ===&lt;br /&gt;
&lt;br /&gt;
Für die MQTT Kommunikation des eBus wird für die eigentlichen Geräte MQTT2 DEVICE verwendet, damit wird als IO-Device entweder MQTT2_SERVER oder MQTT2_CLIENT verwendet, NICHT beides gleichzeitig!&lt;br /&gt;
Bitte auch zu beachten, die alten Module MQTT funktionieren nicht nach der Beschreibung in diesem Artikel. Es geht hier um die komplett überarbeitete Version mit dem Namen MQTT2!&lt;br /&gt;
&lt;br /&gt;
=== Anwendung: ===&lt;br /&gt;
Wer eBus komfortabel in Fhem einbinden will, kann dies nun erstmals mit wenigen Mausklicks realisieren. Erstmalig kommt diese neue Technik der von rudolfkönig implementierten Templates zur Anwendung. Templates sind im Prinzip vorgefertigte Schablonen die durch Anklicken dann selbständig den Device mit den darin enthaltenen Vorgaben konfigurieren. Beta-User hat diese Technik dann soweit für den eBus angepasst ( unter anderem die Filter erstellt ) , das sie allen eBus Anwendern zur Verfügung steht. Es kann nun jeder selbst Templates erstellen oder einfach die von mir erstellten vorhandenen Beispiele benutzen. In wenigen Minuten sollte die komplette FHEM Konfiguration dann abgeschlossen sein.&lt;br /&gt;
&lt;br /&gt;
Wer bereits einen Mosquitto Broker installiert hat, kann diesen weiter verwenden, ist aber für die Komunikation mit dem eBus Dämon nicht mehr notwendig!&lt;br /&gt;
&lt;br /&gt;
[[Bild:MQTT2_MQTT2.jpg|600px|thumb|left|Uebersicht eBus MQTT]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Welches Fhem Modul benötigt man ===&lt;br /&gt;
Beispiel: Mosquitto Broker ist vorhanden&lt;br /&gt;
dann benötigt man MQTT2_DEVICE und MQTT2_CLIENT&lt;br /&gt;
&lt;br /&gt;
Beispiel: Mosquitto Broker ist NICHT vorhanden&lt;br /&gt;
dann benötigt man MQTT2_DEVICE und MQTT2_SERVER&lt;br /&gt;
&lt;br /&gt;
{{Randnotiz|RNTyp=r|RNText=Nicht MQTT2_SERVER und Mosquitto gleichzeitig laufen lassen, es kann zu verschiedenen Problemen kommen wie gegenseitiges Löschen von Einträgen in Fhem.}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitung und Definition am eBus ===&lt;br /&gt;
In der Konfiguration des Dämons ( /etc/default/ebusd ) sollten diese Parameter hinzugefügt werden. Die Topic „ebusd/%circuit/%name“ bitte nicht abändern, da verschiedene Filter auf diesen Ausdruck eingestellt sind.&lt;br /&gt;
 --accesslevel=* --mqttport=1883 --mqttjson --mqtthost=IpAdresseMQTTSERVER --mqtttopic=ebusd/%circuit/%name&lt;br /&gt;
Der MQTTSERVER kann wahlweise der Mosquitto Broker sein, oder der MQTT2_SERVER. Beides wird vermutlich am Raspberry der Fhem Hauptinstanz sein, also die IP-Adresse des Raspberry einsetzen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitung und Definition  in Fhem ===&lt;br /&gt;
Wer bereits den Mosquitto installiert hat und diesen weiter verwenden möchte, dann diese Konfiguration wählen.&lt;br /&gt;
 ### 1a. Broker in Fhem anlegen ###&lt;br /&gt;
 define ebusMQTT MQTT 127.0.0.1:1883&lt;br /&gt;
 attr ebusMQTT room MQTT2_DEVICE,System&lt;br /&gt;
&lt;br /&gt;
Wer keinen Mosquitto installiert hat kann diese Konfiguration wählen. Dazu wird einfach der MQTT2-SERVER definiert.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 ### 1b. oder MQTT Server  anlegen ###&lt;br /&gt;
 define ebusMQTT MQTT2_SERVER 1883 global&lt;br /&gt;
 attr ebusMQTT room MQTT2_SERVER&lt;br /&gt;
&lt;br /&gt;
Nun wird noch ein Device benötigt, welcher mit einem der oben genannten Module kommuniziert und das Filter (bridgeRegexp) für den eBus beinhaltet. Auf Basis dieses Device werden alle ankommenden JSON Telegramme vom eBus Dämon automatisch als Reading angelegt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 ### 2. MQTT_Device definieren&lt;br /&gt;
 define MQTT2_ebusd MQTT2_DEVICE ebusd&lt;br /&gt;
 attr MQTT2_ebusd IODev ebusMQTT&lt;br /&gt;
 attr MQTT2_ebusd room MQTT2_DEVICE&lt;br /&gt;
&lt;br /&gt;
Nun benötigen wir noch etwas Code für die Balkendarstellung in Fhem. Dieser Code wird in die 99_myUtils.pm kopiert.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
 sub Balkenanzeige($) &lt;br /&gt;
 {&lt;br /&gt;
    # Zuweisung der übergebenen Variablen&lt;br /&gt;
    my ($val) = @_;&lt;br /&gt;
    # Konfiguration des maximal übergebenen Werts (hier wäre der höchste zu erwartende Wert = 3)&lt;br /&gt;
    my $maxValue = 70;&lt;br /&gt;
    # Normalisierung auf 100%-Wert&lt;br /&gt;
    my $percent = $val / $maxValue * 100;&lt;br /&gt;
    # Definition des valueStyles&lt;br /&gt;
    my $stylestring = &#039;style=&amp;quot;&#039;.&lt;br /&gt;
        &#039;width: 200px; &#039;.&lt;br /&gt;
	&#039;text-align:center; &#039;.&lt;br /&gt;
	&#039;border: 1px solid #ccc ;&#039;. &lt;br /&gt;
	&#039;background-image: -webkit-linear-gradient(left,red &#039;.$percent.&#039;%, rgba(0,0,0,0) &#039;.$percent.&#039;%); &#039;.&lt;br /&gt;
	&#039;background-image:    -moz-linear-gradient(left,blue &#039;.$percent.&#039;%, rgba(0,0,0,0) &#039;.$percent.&#039;%); &#039;. &lt;br /&gt;
	&#039;background-image:     -ms-linear-gradient(left,red &#039;.$percent.&#039;%, rgba(0,0,0,0) &#039;.$percent.&#039;%); &#039;. &lt;br /&gt;
	&#039;background-image:      -o-linear-gradient(left,red &#039;.$percent.&#039;%, rgba(0,0,0,0) &#039;.$percent.&#039;%); &#039;. &lt;br /&gt;
	&#039;background-image:         linear-gradient(left,red &#039;.$percent.&#039;%, rgba(0,0,0,0) &#039;.$percent.&#039;%);&amp;quot;&#039;;&lt;br /&gt;
    # Rückgabe des definierten Strings&lt;br /&gt;
    return $stylestring;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ebenfalls muss noch das Modul Color.pm ordnungsgemäß eingebunden werden. Dieses Modul wird zur farbigen Darstellung wie es in den Templates verwendet wird benötigt.&lt;br /&gt;
 define colorInit notify global:INITIALIZED {use Color}&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
=== Konfiguration in Fhem ===&lt;br /&gt;
&lt;br /&gt;
Bei der hier beschriebenen Konfiguration der angelegten Devices muss unbedingt die Reihenfolge eingehalten werden.&lt;br /&gt;
Im wie oben beschriebenen angelegten Device MQTT2_ebusd wird nun folgendes Template installiert.&lt;br /&gt;
&lt;br /&gt;
[[Bild:MQTT2_1template E_00 installieren.png|400px|thumb|left|Template E_00_eBus_daemon_splitter]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Bild:MQTT2_2splitter.png|400px|thumb|left|Eingabe im Splitter aendern]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Während der Installation erscheint ein Fenster, in diesem kann der Name ausgewählt werden, gebt hier anstatt DEV_ID  „ebus“ ein und rückt „ok“&lt;br /&gt;
&lt;br /&gt;
Zur Kontrolle bitte prüfen ob hier auch die „bridgeRegexp“ vom Template richtig gesetzt wurde.&lt;br /&gt;
&lt;br /&gt;
[[Bild:MQTT2_3Attribute_ebusd.png|400px|thumb|left|bridgeRegexp prüfen]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 (ebus.)[^/]*/(bai|broadcast)/.*:.* &amp;quot;$1_bai&amp;quot;&lt;br /&gt;
 (ebus.)[^/]*/([\d]+)/.*:.* &amp;quot;$1_$2&amp;quot;&lt;br /&gt;
 (ebus.)[^/]*[/][^b][a-zA-Z]+[/].*:.* &amp;quot;$1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Nun setzen wir noch auf dem MQTT2_SERVER oder dem MQTT2_CLIENT ( je nachdem welcher verwendet wurde) das Attribut „autocreate“ auf „complex“.&lt;br /&gt;
&lt;br /&gt;
[[Bild:MQTT2_4autocreate-complex.png|400px|thumb|left|autocreate auf complex setzen]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Complex hat den Sinn, das JSONMAP mit dem Namen des Readings automatisch gesetzt wird.&lt;br /&gt;
Statt dem Reading 0_value wird daraus dann ein Stautus01_0_value. Dies ist gerade bei den Statusmeldungen wichtig, da sie sich sonst mit gleichem Readingnamen gegenseitig überschreiben.&lt;br /&gt;
&lt;br /&gt;
Nun heißt es etwas zurück lehnen und warten bis die MQTT Telegramme vom eBus eingetroffen sind, das kann einige Minuten dauern. Es kann aber in der Zwischenzeit noch die Timer gesteuerte Abfrage definiert werden.&lt;br /&gt;
&lt;br /&gt;
 define EBUS.TIMER at +*00:15:00 set ebusMQTT publish ebusd/430/Hc1HeatCurve/get;&lt;br /&gt;
 set ebusMQTT publish ebusd/430/HwcTempDesired/get;&lt;br /&gt;
 set ebusMQTT publish ebusd/bai/WaterPressure/get;&lt;br /&gt;
 set ebusMQTT publish ebusd/bai/FlowTemp/get;&lt;br /&gt;
 set ebusMQTT publish ebusd/bai/ReturnTemp/get;&lt;br /&gt;
 set ebusMQTT publish ebusd/bai/OutdoorstempSensor/get;&lt;br /&gt;
 set ebusMQTT publish ebusd/bai/Status02/get&lt;br /&gt;
&lt;br /&gt;
Diese „get“ sind nur Beispiele, wer weitere Readings abfragen möchte einfach die Liste in der Fhem Eingabe erweitern. Ebenfalls kann der Timer auf persönliche Bedürfnisse angepasst werden.&lt;br /&gt;
&lt;br /&gt;
=== Installation der Templates ===&lt;br /&gt;
&lt;br /&gt;
Um die eBus Templates benutzen zu können, müssen sie erst im Verzeichnis „/opt/fhem/FHEM/lib/AttrTemplate“ installiert werden. Hier kann das Mustertemplate „{{Link2Forum|Topic=79600|LinkText=mqtt2.ebus.template}}“ herunter geladen werden. Dieses Template dann in das Verzeichnis kopieren. &lt;br /&gt;
Vor der erstmaligen Benutzung muss dieses template noch Initialisiert werden, sonst wird es in der Templateliste nicht angezeigt.&lt;br /&gt;
&lt;br /&gt;
[[Bild:MQTT2_7templateinitialize.png|400px|thumb|left|vor der ersten Benutzung in der Eingabezeile eingeben]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Dazu in der FHEM Eingabezeile eingeben:&lt;br /&gt;
 { AttrTemplate_Initialize() }&lt;br /&gt;
&lt;br /&gt;
=== Anwendung der Templates ===&lt;br /&gt;
&lt;br /&gt;
Wenn bereits die ersten Messwerte eingetroffen sind und die Devices mit den Readings angelegt wurden, können die Templates angelegt werden. D&lt;br /&gt;
In den gewünschten Stelle stellen (hier MQTT2_ebusd_bai) und ein Template wählen. Die eBus Templates beginnen alle mit E….&lt;br /&gt;
&lt;br /&gt;
[[Bild:MQTT2_8templateselect.png|400px|thumb|left|Das gewünschte Template auswählen, die Readings müssen allerdings in diesem Device enthalten sein]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Hier wird E_07_eBus_bai_Status01+Status02_HWC gewählt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Bild:MQTT2_5statustemplate.png|400px|thumb|left|Das Template hat die gewünschte Konfiguration in Fhem durchgeführt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Bild:MQTT2_6status1template.png|400px|thumb|left|Ergebnis des Template, Heizkurve und Warmwassertemperatur]]&lt;br /&gt;
Hier das Ergebnis von HC1HeatCurve+HWCTempDesired&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Muster Templates ===&lt;br /&gt;
&lt;br /&gt;
Es sind auch noch einige Mustertemplates vorhanden die auf Basis von readingsGroup erstellt wurden und ein farbiges Design besitzen. Diese Templates werden nicht im Device, sondern im Room „eBus“ angelegt.&lt;br /&gt;
Der Kreativität der Anwender sind hier fast keine Grenzen gesetzt, die Werkzeuge sind vorhanden.&lt;br /&gt;
&lt;br /&gt;
Template: E_05_eBus_bai_readingsgroup_Set_Hcurve_Hotwater&lt;br /&gt;
[[Bild:MQTT2_ebusset.png|250px|thumb|left|Set hcurve und HWCtemdesired]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Template: E_01_eBus_bai_readingsgroup_Status01&lt;br /&gt;
[[Bild:MQTT2_ebustemp.png|250px|thumb|left|Statusmeldung als Readingsgroup]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Template: E_02_eBus_bai_readingsgroup_Status01_Balken&lt;br /&gt;
[[Bild:MQTT2_ebustempbalken.png|400px|thumb|left|EStatusmeldung als Readingsgroup mit Balkenanzeige]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Template: E_03_eBus_bai_readingsgroup_Status02&lt;br /&gt;
[[Bild:MQTT2_ebuswarmwasser.png|250px|thumb|left|Statusmeldung als Readingsgroup]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Template: E_04_eBus_bai_readingsgroup_Status02_Balken&lt;br /&gt;
[[Bild:MQTT2_ebuswarmwasserbalken.png|400px|thumb|left|Statusmeldung als Readingsgroup mit Balkenanzeige]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Allgemeine Hinweise ==&lt;br /&gt;
=== MQTT2_SERVER und MQTT2_CLIENT für Debugging nutzen ===&lt;br /&gt;
Nutzt man das rawEvents-Attribut am MQTT2-IO&amp;lt;ref&amp;gt;z.B. &amp;lt;code&amp;gt;attr MQTT2_FHEM_Server rawEvents .*&amp;lt;/code&amp;gt;, der regex-Filter kann wie üblich angepaßt werden&amp;lt;/ref&amp;gt;, kann man den Datenverkehr des Servers am Event-Monitor mitschneiden. Dies ist insbesondere für unbekannte Geräte nützlich, deren Topic- und Payload-Struktur noch nicht bekannt ist.&lt;br /&gt;
Um den kompletten MQTT Datenaustausch mitzuschneiden, kann man mit &amp;lt;code&amp;gt;attr mqtt2_server verbose 5&amp;lt;/code&amp;gt; auch alles ins FHEM-Log schreiben lassen.&lt;br /&gt;
&lt;br /&gt;
=== attrTemplate ===&lt;br /&gt;
Zur Konfiguration von MQTT2_DEVICE-Geräten kann die Funktion &#039;&#039;attrTemplate&#039;&#039; genutzt werden. &lt;br /&gt;
Die Anwendung ist [[MQTT2 DEVICE#attrTemplate|hier]] beschrieben.&lt;br /&gt;
== Links ==&lt;br /&gt;
* {{Link2Forum|Topic=91394|LinkText=Thread, aus dem diese Anleitung ursprünglich entstanden ist}}&lt;br /&gt;
* {{Link2Forum|Topic=91807|LinkText=Thread zum Tasmota-Device}}&lt;br /&gt;
* {{Link2Forum|Topic=97989|LinkText=Thread, aus dem diese Anleitung für den eBus ursprünglich entstanden ist}}&lt;br /&gt;
* {{Link2Forum|Topic=94495|LinkText=Neue templates einreichen}}&lt;br /&gt;
* {{Link2Forum|Topic=94494|LinkText=Fragen, Wünsche und Kritik zu mqtt2.template}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Hinweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
[[Kategorie:MQTT]]&lt;br /&gt;
[[Kategorie:ZigBee]]&lt;br /&gt;
[[Kategorie:IP Components|IP Komponenten]]&lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:Interfaces]]&lt;/div&gt;</summary>
		<author><name>Reinhart</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=MQTT2-Module_-_Praxisbeispiele&amp;diff=29823</id>
		<title>MQTT2-Module - Praxisbeispiele</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=MQTT2-Module_-_Praxisbeispiele&amp;diff=29823"/>
		<updated>2019-03-10T14:00:25Z</updated>

		<summary type="html">&lt;p&gt;Reinhart: eBus Installation, Konfiguration der Praxisbeispiele hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einführung: MQTT bzw. MQTT2 in FHEM ==&lt;br /&gt;
Zur Einbindung von Geräten, welche mit einem MQTT-Server (früher: Broker) kommunizieren können, stehen unter FHEM verschiedene Optionen zur Verfügung, wobei nicht alle Module beliebig miteinander verwendet werden können. Details hierzu sind dieser [[MQTT|Übersicht]] zu entnehmen. &lt;br /&gt;
&lt;br /&gt;
Im Rahmen dieses Artikels wird für die eigentlichen Geräte [[MQTT2 DEVICE]] verwendet, damit wird als IO-Device entweder {{Link2CmdRef|Anker=MQTT2_SERVER|Lang=en|Label=MQTT2_SERVER}} oder [[MQTT2 CLIENT|MQTT2_CLIENT]] oder benötigt, mit einem IO-Device des Typs [[MQTT (Modul)|MQTT]] funktioniert die nachfolgende Darstellung dagegen nicht&amp;lt;ref&amp;gt;Allerdings können die Konfigurationen in der Regel recht einfach auf die bisherige MQTT-Implementierung übertragen werden&amp;lt;/ref&amp;gt;. MQTT2_DEVICE unterstützt u.a. auch die &#039;&#039;setExtensions&#039;&#039; direkt, also z.B. &#039;&#039;on-for-timer&#039;&#039; sowie &#039;&#039;[[MQTT2-Module - Praxisbeispiele#attrTemplate_2|attrTemplate]]&#039;&#039;&amp;lt;ref&amp;gt;Auch MQTT_DEVICE unterstützt setExtensions, allerdings muß dies dort per Attribut eingeschaltet werden&amp;lt;/ref&amp;gt;.&lt;br /&gt;
{{Hinweis|Die nachfolgenden Beispiele gelingen am einfachsten mit MQTT2_SERVER als Server, für diesen sollte dabei &#039;&#039;autocreate&#039;&#039; aktiviert werden, damit die erforderlichen MQTT2_DEVICES soweit möglich automatisiert erstellt werden&amp;lt;ref&amp;gt;Dabei wird vorausgesetzt, dass ein allgemeines  autocreate-Device (TYPE=autocreate) ebenfalls aktiv ist&amp;lt;/ref&amp;gt;.}}{{Hinweis|Die Code-Darstellung in diesem Beitrag entspricht jeweils dem RAW-Format zum [[Import von Code Snippets]]. Wer die Attribute direkt und einzeln bearbeitet, muß ggf. die &amp;quot;\&amp;quot; entfernen!}}&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
 define MQTT2_FHEM_Server MQTT2_SERVER 1883 global&lt;br /&gt;
 attr MQTT2_FHEM_Server autocreate 1&lt;br /&gt;
&lt;br /&gt;
== zigbee2mqtt ==&lt;br /&gt;
[[Bild:MQTT2_zigbee2mqtt_Bulbs.png|400px|thumb|Darstellung in FHEMWEB]]&lt;br /&gt;
[https://github.com/Koenkk/zigbee2mqtt zigbee2mqtt] ist ein open-source Projekt, mit dem zigbee-Geräte über MQTT direkt angesprochen werden können, ohne dass hierfür eine Bridge eines Herstellers benötigt wird.&lt;br /&gt;
=== Installation von zigbee2mqtt ===&lt;br /&gt;
Die Installation des zigbee2mqtt-Diensts ist auf der Homepage des Projekts beschrieben. Ergänzend muß in der configuration.yaml eine &#039;&#039;client_id&#039;&#039; unter &#039;&#039;mqtt&#039;&#039; (z.B. zigbee_pi) vergeben werden&amp;lt;ref&amp;gt;Die Anführungszeichen sowie genau zwei Leerzeichen sind hier erforderlich!&amp;lt;/ref&amp;gt;.&lt;br /&gt;
 mqtt:&lt;br /&gt;
   client_id: &#039;zigbee_pi&#039;&lt;br /&gt;
Da der Dienst auch später in den Anlernmodus versetzt werden kann, kann man auch gleich &amp;lt;code&amp;gt;permit_join: false&amp;lt;/code&amp;gt; setzen, um das versehentliche Einbinden neuer oder fremder Geräte zu unterbinden.&lt;br /&gt;
&lt;br /&gt;
=== Define eines MQTT2-Devices als &amp;quot;Bridge&amp;quot; === &lt;br /&gt;
Dann kann eine Art &amp;quot;Grund-Device&amp;quot; angelegt werden, das für die Ansteuerung des eigentlichen Server-Dienstes genutzt wird, der bereits unmittelbar nach der erfolgreichen Konfiguration von zigbee2mqtt zur Verfügung steht. In der Regel sollte dieses automatisch erstellt werden, wenn der zigbee2mqtt-Dienst (oder der betreffende Rechner) neu gestartet wird (oder FHEM oder dort ein Sensor einen Messwert sendet). Beispiel&amp;lt;ref&amp;gt;Hier waren bereits zwei Zigbee-Geräte angelernt&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 defmod MQTT2_zigbee_pi MQTT2_DEVICE zigbee_pi&lt;br /&gt;
 attr MQTT2_zigbee_pi IODev MQTT2_FHEM_Server&lt;br /&gt;
 attr MQTT2_zigbee_pi IODev MQTT2_FHEM_Server&lt;br /&gt;
 attr MQTT2_zigbee_pi readingList zigbee_pi:zigbee2mqtt/bridge/state:.* state\&lt;br /&gt;
   zigbee_pi:zigbee2mqtt/0x90fd9ffffe65db16:.* { json2nameValue($EVENT, &#039;&#039;) }\&lt;br /&gt;
   zigbee_pi:zigbee2mqtt/0x90fd9ffffe0bcd51:.* { json2nameValue($EVENT, &#039;&#039;) }\&lt;br /&gt;
   zigbee_pi:zigbee2mqtt/bridge/log:.* { json2nameValue($EVENT, &#039;log_&#039;) }&lt;br /&gt;
 attr MQTT2_zigbee_pi room MQTT2_DEVICE&lt;br /&gt;
&lt;br /&gt;
Für die Funktion einer zigbee2mqtt-Bridge steht ein {{Link2CmdRef|Anker=set|Lang=en|Label=template}} bereit, das direkt die passenden Attribute vergibt, um dem zigbee2mqtt-Dienst passende Anweisungen geben zu können und weitere Geräte für die eigentlichen Aktoren und Sensoren anzulegen:&lt;br /&gt;
&lt;br /&gt;
 set MQTT2_zigbee_pi attrTemplate L_01_zigbee2mqtt_bridge&lt;br /&gt;
&lt;br /&gt;
Ist dieses angelegt, kann zigbee2mqtt mit &amp;lt;code&amp;gt;set MQTT2_zigbee_pi permit_join true&amp;lt;/code&amp;gt; in den Anlernmodus versetzt werden, anzulernende Geräte müssen anschließend jeweils nach Bedienungsanleitung in den Anlernmodus gebracht werden.&lt;br /&gt;
&lt;br /&gt;
=== Vereinzeln der eigentlichen Geräte ===&lt;br /&gt;
&lt;br /&gt;
Über das mit dem template vergebene bridgeRegexp-Attribut  &lt;br /&gt;
 attr MQTT2_zigbee_pi bridgeRegexp zigbee2mqtt/([A-Za-z0-9]*)[/]?.*:.* &amp;quot;zigbee_$1&amp;quot; &lt;br /&gt;
werden anschließend neue MQTT2_DEVICE-Geräte automatisch angelegt, sobald ein bisher unbekanntes Zigbee-Gerät einen neuen Status (z.B. einen Meßwert) meldet. Um zu erfragen, welche Geräte dem zigbee-Deinst bekannt sind, kann via &amp;lt;code&amp;gt;get MQTT2_zigbee_pi devicelist true&amp;lt;/code&amp;gt; eine Liste abgefragt werden, die weitere Informationen zu den bereits angelernten Geräten enthält.&lt;br /&gt;
Geräte, die nicht automatisch etwas senden, kann man mit Hilfe des MQTT2_SERVER-Geräts einmalig schalten, damit diese ihren Status bzw. das erfolgreiche Schalten zurückmelden, Beispiel&amp;lt;ref&amp;gt;Die mit 0x... beginnende Angabe entspricht dabei dem &#039;&#039;friendly_name&#039;&#039;.&amp;lt;/ref&amp;gt;:&lt;br /&gt;
 set MQTT2_FHEM_Server publish zigbee2mqtt/0x90fd9ffffe0bcd51/set {&amp;quot;state&amp;quot;:&amp;quot;ON&amp;quot;,&amp;quot;brightness&amp;quot;:60}&lt;br /&gt;
&lt;br /&gt;
Für Gerätetypen, für die bereits templates vorhanden sind, ist es am einfachsten, diese einmalig auf die Geräte anzuwenden. Das Vorgehen entspricht dabei dem oben für die Bridge beschriebenen. Dafür wird immer vorausgesetzt, dass ein neues Device mit autocreate (ggf. über die bridgeRegexp) angelegt wurde&amp;lt;ref&amp;gt;Dieses befindet sich dann im Raum MQTT2_DEVICE. Um diesen sichtbar zu machen, muß ggf. die Browser-Seite neu geladen werden.&amp;lt;/ref&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
==== IKEA-Tradfri-Birne ====&lt;br /&gt;
{{Randnotiz|RNTyp=g|RNText=Wie wähle ich nun das richtige Template für mein Leuchtmittel aus?&lt;br /&gt;
-&amp;gt; Es wird nicht zwischen einer Birne/Bulb/Lampe und einem LED-Controller unterschieden sondern anhand der möglichen Lichtdarstellung des Gerätes:&lt;br /&gt;
&lt;br /&gt;
light_dimmer:&lt;br /&gt;
Das anzusteuernde Geräte besitzt ausschließlich eine feste Lichtfarbe welche gedimmt werden kann.&lt;br /&gt;
&lt;br /&gt;
light_cct:&lt;br /&gt;
Das anzusteuernde Gerät besitzt eine warmweiße sowie kaltweiße Lichtfarbe welche verändert sowie gedimmt werden kann.&lt;br /&gt;
&lt;br /&gt;
light_rgb_xxx:&lt;br /&gt;
Das anzusteuernde Gerät besitzt die Möglichlichkeit einer farbigen Lichtdarstellung (Rot, Grün, Blau) und kann gedimmt werden.&lt;br /&gt;
&lt;br /&gt;
light_rgbw_xxx:&lt;br /&gt;
Das anzusteuernde Gerät besitzt die Möglichlichkeit einer farbigen Lichtdarstellung (Rot, Grün, Blau) und besitzt eine warmweiße ODER kaltweiße Lichtfarbe welche eingestellt sowie gedimmt werden kann.&lt;br /&gt;
&lt;br /&gt;
light_rgbcct_xxx:&lt;br /&gt;
Das anzusteuernde Gerät besitzt die Möglichlichkeit einer farbigen Lichtdarstellung (Rot, Grün, Blau) und besitzt eine warmweiße UND kaltweiße Lichtfarbe welche verändert sowie gedimmt werden kann.&lt;br /&gt;
   &lt;br /&gt;
   xxx:&lt;br /&gt;
      hex:   Farbänderung mit hex&lt;br /&gt;
      rgb:   Farbänderung mit r g b&lt;br /&gt;
      xy:   Farbänderung mit x sowie y&lt;br /&gt;
      hue:   Farbänderung mit hue und saturation&lt;br /&gt;
&lt;br /&gt;
Warum diese Einteilung in &amp;quot;hex&amp;quot;, &amp;quot;rgb&amp;quot;, &amp;quot;xy&amp;quot; sowie &amp;quot;hue&amp;quot;?&lt;br /&gt;
-&amp;gt; Zigbee2MQTT unterstützt das Übermitteln aller dieser Werte, allerdings unterscheiden sich hier die Geräte. Manche &amp;quot;verstehen&amp;quot; nur z.B. Hex-Farbänderungen, andere halt nur eine Farbänderung mit rgb-Werten.&lt;br /&gt;
-&amp;gt; Aus diesem Grund muss an dieser Stelle probiert werden mit welchem der 4 Templates sich die Farbveränderung des Gerätes steuern lässt!&lt;br /&gt;
&lt;br /&gt;
HINWEIS: Templates für Farbänderungen mithilfe von XY- sowie HUE-Werten wurden bis heute nicht angelegt!&lt;br /&gt;
}}&lt;br /&gt;
Beispiel eines dimmbaren Tradfri-Leuchtmittels&lt;br /&gt;
 defmod IKEA_Bulb2 MQTT2_DEVICE&lt;br /&gt;
 attr IKEA_Bulb2 IODev MQTT2_FHEM_Server&lt;br /&gt;
 attr IKEA_Bulb2 icon light_control&lt;br /&gt;
 attr IKEA_Bulb2 devStateIcon {zigbee2mqtt_devStateIcon255($name)}&lt;br /&gt;
 attr IKEA_Bulb2 readingList zigbee_pi:zigbee2mqtt/0x90fd9ffffe0bcd51:.* { json2nameValue($EVENT) }&lt;br /&gt;
 attr IKEA_Bulb2 setList on:noArg zigbee2mqtt/0x90fd9ffffe0bcd51/set {&amp;quot;state&amp;quot;:&amp;quot;ON&amp;quot;}\&lt;br /&gt;
     off:noArg zigbee2mqtt/0x90fd9ffffe0bcd51/set {&amp;quot;state&amp;quot;:&amp;quot;OFF&amp;quot;}\&lt;br /&gt;
     brightness:colorpicker,BRI,0,15,255 zigbee2mqtt/0x90fd9ffffe0bcd51/set {&amp;quot;state&amp;quot;:&amp;quot;on&amp;quot;,&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}&lt;br /&gt;
 attr IKEA_Bulb2 webCmd toggle:on:off:brightness&lt;br /&gt;
 attr IKEA_Bulb2 model L_02a_zigbee2mqtt_bulb&lt;br /&gt;
&lt;br /&gt;
Kann man auch die Farbtemperatur einstellen, wird die setList wie folgt erweitert oder das entsprechende template&amp;lt;ref&amp;gt;Durch die &#039;&#039;model&#039;&#039;-Angabe kann nachvollzogen werden, welches template angewendet wurde.&amp;lt;/ref&amp;gt; anwendet:&lt;br /&gt;
 ...&lt;br /&gt;
 color_temp:colorpicker,CT,250,1,454 zigbee2mqtt/0x90fd9ffffe0bcd51/set {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
Die templates sind dabei in der Regel so gestaltet, dass eventuell mehr Optionen in FHEMWEB erscheinen, als tatsächlich vorhanden oder erwünscht sind. &lt;br /&gt;
Da sich obige einfarbige dimmbare Lampe durch Klicken auf das devStateIcon schalten läßt, ist für die vollständige Ansteuerung bereits dieses webCmd hinreichend:&lt;br /&gt;
 attr IKEA_Bulb2 webCmd brightness&lt;br /&gt;
&lt;br /&gt;
==== Temp/Hum. Sensor ====&lt;br /&gt;
tbd&lt;br /&gt;
&lt;br /&gt;
==== Motion Sensor ====&lt;br /&gt;
Als MQTT-Server wird hier &#039;&#039;mosquitto&#039;&#039; verwendet, als IO-Device wird daher ein {{Link2CmdRef|Anker=MQTT2_CLIENT|Lang=en|Label=MQTT2_CLIENT}}-Gerät definiert: &lt;br /&gt;
&lt;br /&gt;
 defmod mqtt2_client MQTT2_CLIENT 192.168.2.4:1883&lt;br /&gt;
 attr mqtt2_client autocreate 1&lt;br /&gt;
 attr mqtt2_client rawEvents zigbee2mqtt/GB_Bewegungsmelder:.*&lt;br /&gt;
 attr mqtt2_client room test&lt;br /&gt;
 attr mqtt2_client subscriptions #&lt;br /&gt;
&lt;br /&gt;
Das eigentliche Device sieht dann so aus:&lt;br /&gt;
 defmod GB_Bewegungsmelder_MQTT2 MQTT2_DEVICE zigbee_158d0001f9d030&lt;br /&gt;
 attr GB_Bewegungsmelder_MQTT2 IODev mqtt2_client&lt;br /&gt;
 attr GB_Bewegungsmelder_MQTT2 devStateIcon motion:motion_detector@red off:motion_detector@green no_motion:motion_detector@green&lt;br /&gt;
 attr GB_Bewegungsmelder_MQTT2 icon motion_detector@blue&lt;br /&gt;
 attr GB_Bewegungsmelder_MQTT2 readingList mqtt2client:zigbee2mqtt/GB_Bewegungsmelder:.* { json2nameValue($EVENT) }&lt;br /&gt;
 attr GB_Bewegungsmelder_MQTT2 room MQTT2_DEVICE&lt;br /&gt;
 attr GB_Bewegungsmelder_MQTT2 stateFormat {\&lt;br /&gt;
 if(ReadingsVal(&amp;quot;$name&amp;quot;,&amp;quot;occupancy&amp;quot;,0) eq &amp;quot;true&amp;quot;) {\&lt;br /&gt;
 	sprintf(&amp;quot;motion&amp;quot;);;\&lt;br /&gt;
 	} else {\&lt;br /&gt;
 	sprintf(&amp;quot;no_motion&amp;quot;);;	\&lt;br /&gt;
 	}\&lt;br /&gt;
 }&lt;br /&gt;
==== Anlegen von Zigbee2MQTT-Gruppen in FHEM ====&lt;br /&gt;
{{Hinweis|Die nachfolgende Darstellung ist vorläufig!}}&lt;br /&gt;
{{Hinweis|Bevor man eine Gruppe mithilfe von Zigbee2MQTT anlegen kann, sollte man sicherstellen, dass man über die aktuelleste Version von Zigbee2MQTT verfügt (min. vom 15. Februar 2019). Außerdem sollte auch der Koordinator (zumeist CC2531) die aktuellste Firmware besitzen (min. vom 15. Februar 2019). Falls ein flashen des Koordinators mit der neusten Firmware erfolgen soll, ist darauf zu achten, dass nach einem flashen alle Geräte neu angelernt werden müssen! (Hinweise zum flashen ohne erneutem anlernen sind hier zu finden: https://www.zigbee2mqtt.io/information/flashing_without_re-pairing.html)}}&lt;br /&gt;
&lt;br /&gt;
=====Erstellen einer Zigbee2MQTT-Gruppe=====&lt;br /&gt;
Bevor das Ganze in FHEM funktioniert, muss eine Gruppe in der &amp;quot;configuration.yaml&amp;quot; angelegt werden, dieser Vorgang ist auf folgender Seite beschrieben: https://www.zigbee2mqtt.io/information/groups.html&lt;br /&gt;
Wenn die Geräte anschließend über den FHEM MQTT2-Server der Gruppe hinzugefügen werden sollen, kann dies mit folgendem Befehl erfolgen:&lt;br /&gt;
 set &amp;lt;MQTT2-Server&amp;gt; publish zigbee2mqtt/bridge/group/&amp;lt;Zigbee2MQTT Friendly-Gruppenname&amp;gt;/add &amp;lt;Zigbee2MQTT Friendly-Gerätename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
 set MQTT2_FHEM_Server publish zigbee2mqtt/bridge/group/Wohnzimmer/add Stehlampe&lt;br /&gt;
&lt;br /&gt;
Dieser Befehl kann so oft verwendet werden, wie man Geräte zu einer Gruppe hinzufügen möchte.&lt;br /&gt;
&lt;br /&gt;
Zum Entfernen eines Gerätes aus einer Gruppe kann folgender Befehl verwendet werden:&lt;br /&gt;
 set &amp;lt;MQTT2-Server&amp;gt; publish zigbee2mqtt/bridge/group/&amp;lt;Zigbee2MQTT Friendly-Gruppenname&amp;gt;/remove &amp;lt;Zigbee2MQTT Friendly-Gerätename&amp;gt;&lt;br /&gt;
Beispiel:&lt;br /&gt;
 set MQTT2_FHEM_Server publish zigbee2mqtt/bridge/group/Wohnzimmer/remove Kuechenlampe&lt;br /&gt;
&lt;br /&gt;
=====Anlegen der Gruppe in FHEM=====&lt;br /&gt;
Da Gruppen in Zigbee2MQTT aktuell keine Rückmeldung über ihren Status geben, wird auch beim einmaligen Schalten kein Gerät automatisch in FHEM angelegt. Aus diesem Grund muss dies mit folgendem Befehl noch manuell erfolgen:&lt;br /&gt;
 defmod &amp;lt;FHEM NAME&amp;gt; MQTT2_DEVICE&lt;br /&gt;
Beispiel&lt;br /&gt;
 defmod lichtWohnzimmer MQTT2_DEVICE&lt;br /&gt;
Anschließend wird auch für dieses Gerät wieder ein passendes template ausgewählt, wie als wäre es ein normales Zigbee2MQTT-Gerät.&lt;br /&gt;
Im anschließenden Dialog-Fenster welches sich nach dem Setzen des templates öffnet, müssen die folgenden Werte durch passendes ersetzt werden:&lt;br /&gt;
 BASE_TOPIC -&amp;gt; zigbee2mqtt&lt;br /&gt;
 DEV_ID -&amp;gt; &amp;lt;Zigbee2MQTT Friendly-Gruppenname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach sollte sich die Gruppe wie ein normales Zigbee2MQTT Gerät steuern lassen.&lt;br /&gt;
&lt;br /&gt;
== Tasmota ==&lt;br /&gt;
[https://github.com/arendst/Sonoff-Tasmota Tasmota] (&#039;&#039;&#039;T&#039;&#039;&#039;heo &#039;&#039;&#039;A&#039;&#039;&#039;rends &#039;&#039;&#039;S&#039;&#039;&#039;onoff &#039;&#039;&#039;M&#039;&#039;&#039;QTT &#039;&#039;&#039;O&#039;&#039;&#039;ver &#039;&#039;&#039;T&#039;&#039;&#039;he &#039;&#039;&#039;A&#039;&#039;&#039;ir - einer offenen Firmware von [https://github.com/arendst arendst]) ist eine open-source Software für ESP8266-Geräte, die z.B. statt der originalen Firmware für Sonoff-Geräte und andere ESP8266-basierte WLAN-Steckdosen usw. verwendet werden kann. {{Randnotiz|RNTyp=r|RNText=Bitte beachten Sie, dass versicherungsrechtliche Probleme entstehen können, wenn die herstellereigene Firmware ersetzt wird!}}&lt;br /&gt;
&lt;br /&gt;
=== MQTT2_DEVICE ===&lt;br /&gt;
Dieses sollte bei aktiviertem &#039;&#039;autocreate&#039;&#039; am MQTT2_SERVER-Device automatisch angelegt werden, sobald das betreffende Gerät eingesteckt oder neu gestartet oder an einem evtl. vorhandenen Taster geschalten wird. Hier wurden Tasmota version(en) 6.1.1 und 6.2.1 getestet, Hardware war Sonoff Touch und S20.&lt;br /&gt;
&lt;br /&gt;
=== Manuelle Anpassungen ===&lt;br /&gt;
Die RAW-Definition kann dann beispielsweise wie folgt ergänzt werden:  &lt;br /&gt;
 defmod MQTT2_DVES_9B01BD MQTT2_DEVICE DVES_9B01BD&lt;br /&gt;
 attr MQTT2_DVES_9B01BD IODev m2server&lt;br /&gt;
 attr MQTT2_DVES_9B01BD readingList DVES_9B01BD:tele/sonoffkitchen/STATE:.* { json2nameValue($EVENT) }\&lt;br /&gt;
    DVES_9B01BD:tele/sonoffkitchen/LWT:.* LWT\&lt;br /&gt;
    DVES_9B01BD:cmnd/sonoffkitchen/POWER:.* POWER\&lt;br /&gt;
    DVES_9B01BD:tele/sonoffkitchen/UPTIME:.* { json2nameValue($EVENT) }\&lt;br /&gt;
    DVES_9B01BD:tele/sonoffkitchen/SENSOR:.* { json2nameValue($EVENT) }\&lt;br /&gt;
    DVES_9B01BD:tele/sonoffkitchen/INFO1:.* { json2nameValue($EVENT) }\&lt;br /&gt;
    DVES_9B01BD:tele/sonoffkitchen/INFO2:.* { json2nameValue($EVENT) }\&lt;br /&gt;
    DVES_9B01BD:tele/sonoffkitchen/INFO3:.* { json2nameValue($EVENT) }\&lt;br /&gt;
    DVES_9B01BD:stat/sonoffkitchen/RESULT:.* { json2nameValue($EVENT) }\&lt;br /&gt;
    DVES_9B01BD:stat/sonoffkitchen/STATE:.* { json2nameValue($EVENT) }&lt;br /&gt;
 attr MQTT2_DVES_9B01BD room MQTT2_DEVICE&lt;br /&gt;
 attr MQTT2_DVES_9B01BD setList on cmnd/sonoff/POWER on\&lt;br /&gt;
    off cmnd/sonoff/POWER off\&lt;br /&gt;
    reboot cmnd/sonoff/Restart 1&lt;br /&gt;
 attr MQTT2_DVES_9B01BD webCmd on:off:reboot&lt;br /&gt;
&lt;br /&gt;
=== attrTemplate ===&lt;br /&gt;
Für gängige Tasmota-Geräte stehen &#039;&#039;templates&#039;&#039; bereit, mit denen sich diese schnell konfigurieren lassen. &lt;br /&gt;
Beachten Sie dazu den Abschnitt &#039;&#039;attrTemplate&#039;&#039; in [[MQTT2 DEVICE#attrTemplate|MQTT2_DEVICE]]. Bei Anwendung eines template mit &amp;quot;split&amp;quot; im Namen werden dabei weitere Geräte angelegt und konfiguriert.&lt;br /&gt;
&lt;br /&gt;
== Shelly ==&lt;br /&gt;
=== Vorbemerkung ===&lt;br /&gt;
Auch für Shelly-Geräte steht eine Auswahl an [[MQTT2-Module - Praxisbeispiele#attrTemplate_2|templates]] bereit.&lt;br /&gt;
Beachten Sie auch hier, dass uU. bei Anwendung eines template mit &amp;quot;split&amp;quot; im Namen weitere Geräte angelegt und konfiguriert werden.&lt;br /&gt;
&lt;br /&gt;
=== Shelly1 ===&lt;br /&gt;
&lt;br /&gt;
=== Shellybulb ===&lt;br /&gt;
Zunächst muss man einen Statusupdate des Shellybulb erzwingen (Aus- und Einschalten, physikalisch oder per Web-UI), damit das Gerät bei eingeschaltetem autocreate  angelegt wird. Dies sieht zunächst so aus:&lt;br /&gt;
 Internals:&lt;br /&gt;
   CFGFN     &lt;br /&gt;
   CID        shellybulb_3CC533&lt;br /&gt;
   DEF        shellybulb_3CC533&lt;br /&gt;
   DEVICETOPIC MQTT2_shellybulb_3CC533&lt;br /&gt;
   IODev      MQTT2_FHEM_Server&lt;br /&gt;
   NAME       MQTT2_shellybulb_3CC533&lt;br /&gt;
   NR         246&lt;br /&gt;
   STATE      ???&lt;br /&gt;
   TYPE       MQTT2_DEVICE&lt;br /&gt;
   READINGS:&lt;br /&gt;
     2018-12-12 19:28:08   status_blue     0&lt;br /&gt;
     2018-12-12 19:28:08   status_brightness 61&lt;br /&gt;
     2018-12-12 19:28:08   status_effect   0&lt;br /&gt;
     2018-12-12 19:28:08   status_gain     26&lt;br /&gt;
     2018-12-12 19:28:08   status_green    0&lt;br /&gt;
     2018-12-12 19:28:08   status_ison     true&lt;br /&gt;
     2018-12-12 19:28:08   status_mode     color&lt;br /&gt;
     2018-12-12 19:28:08   status_red      255&lt;br /&gt;
     2018-12-12 19:28:08   status_temp     3250&lt;br /&gt;
     2018-12-12 19:28:08   status_white    0&lt;br /&gt;
 Attributes:&lt;br /&gt;
   IODev      MQTT2_FHEM_Server&lt;br /&gt;
   readingList shellybulb_3CC533:shellies/shellybulb-3CC533/color/0/status:.* { json2nameValue($EVENT, &#039;status_&#039;) }&lt;br /&gt;
   room       MQTT2_DEVICE&lt;br /&gt;
[[Bild:MQTT2 Shellybulb.png|400px|thumb|Darstellung in FHEMWEB nach Anwendung des template]]Dann bei den set-Anweisungen das attrTemplate &amp;quot;shellybulb&amp;quot; auswählen und setzen. Es erscheint eine Abfrage, ob die vorhandenen Readings gelöscht werden sollen. Diese bitte bestätigen und die Seite neu laden. Danach einmal An- und Ausschalten, damit die Readings auch durch einen neuen Status initialisiert werden und die Seite im Browser neu laden.&lt;br /&gt;
&lt;br /&gt;
== Milight-Bridge ==&lt;br /&gt;
=== Vorbemerkung ===&lt;br /&gt;
Der [https://github.com/sidoh/esp8266_milight_hub esp8266_milight_hub] ist ein open source- Projekt, mit dem auf Basis von &#039;&#039;openmili&#039;&#039; eine Vielzahl von MiLight-Geräten gesteuert werden können. Der MiLight-Hub erstetzt dabei eine beliebige Zahl von Milight-Bridges und ist auch zu verschiedenen Versionen des MiLight-Protokols kompatibel.&lt;br /&gt;
Neben MQTT kann dieser auch mit HTTPMOD oder Wifilight (bzw. den MiLight-Modulen) gesteuert werden. Die Hardware entspricht dabei im Wesentlichen einem MySensors-Wifi-Gateway&amp;lt;ref&amp;gt;Es wird lediglich ein anderer CS-PIN genutzt. Dies kann einfach in der Web-Oberfläche der Firmware umgestellt werden.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
Hier wird vorausgesetzt, dass eine funktionierende Bridge vorhanden ist.&lt;br /&gt;
Der Vorteil der MQTT-Lösung liegt darin, dass man bei kompatiblen Fernbedienungen auch direkt Informationen über Schaltvorgänge erhält, die mit der Fernbedienung ausgelöst werden.&lt;br /&gt;
&lt;br /&gt;
=== Einstellungen am MiLight-Hub ===&lt;br /&gt;
Die zum FHEM-Server bzw. dem MQTT2_SERVER passenden Vorgaben sind im Web-Interface des Hub einzustellen. Gegebenenfalls passen Sie die vom Hub zurückzugebenden Elemente im Web-Interface des Hub an.&lt;br /&gt;
&lt;br /&gt;
=== FHEM-Devices ===&lt;br /&gt;
[[Bild:MQTT2 MiLight.png|400px|thumb|Milight: Darstellung in FHEMWEB]]&lt;br /&gt;
==== Bridge ====&lt;br /&gt;
Wird nun über den Hub oder eine von diesem erkannte Fernbedienung ein vorhandenes Leuchtmittel geschaltet, wird bei eingeschaltetem autocreate ein erstes Device erstellt, die zunächst erstellte Definition sieht typischerweise etwa so aus:&lt;br /&gt;
 defmod MQTT2_milight_hub_1370325 MQTT2_DEVICE milight_hub_1370325&lt;br /&gt;
 attr MQTT2_milight_hub_1370325 IODev MQTT2_FHEM_Server&lt;br /&gt;
 attr MQTT2_milight_hub_1370325 readingList milight_hub_1370325:milight/updates/0xBE59/rgbw/1:.* { json2nameValue($EVENT, &#039;1_&#039;, $JSONMAP) }&lt;br /&gt;
 attr MQTT2_milight_hub_1370325 room MQTT2_DEVICE&lt;br /&gt;
&lt;br /&gt;
Auf dieses Device wird nun das &#039;&#039;template&#039;&#039; X_01_esp_milight_hub_bridge angewandt.&lt;br /&gt;
&lt;br /&gt;
==== Einzelne Leuchtmittel ====&lt;br /&gt;
&lt;br /&gt;
Wird nun nochmals das oben verwendete Leuchtmittel geschaltet, erstellt autocreate ein weiteres Device:&lt;br /&gt;
 defmod MQTT2_milight_0xBE59_1 MQTT2_DEVICE milight_0xBE59_1&lt;br /&gt;
 attr MQTT2_milight_0xBE59_1 IODev MQTT2_FHEM_Server&lt;br /&gt;
 attr MQTT2_milight_0xBE59_1 readingList milight/states/0xBE59/rgbw/1:.* { json2nameValue($EVENT, &#039;1_&#039;, $JSONMAP) }&lt;br /&gt;
 attr MQTT2_milight_0xBE59_1 room MQTT2_DEVICE&lt;br /&gt;
&lt;br /&gt;
Auf dieses wird nun eines der Bulb-templates angewendet. Wählt man das template X_01_esp_milight_hub_rgbw_bulb, wird eine einfache Variante erstellt, die neben einem toggelnden Icon nur Regler für Helligkeit, die Farbe und zwei Schaltflächen für den Weiß- und Nachtmodus enthält. Wer mehr oder andere Steuerelemente erhalten möchte, verwendet ein anderes template. Nicht benötigte Elemente kann man dabei einfach aus der Definition löschen.&lt;br /&gt;
&lt;br /&gt;
Alle weiteren Devices werden genauso erstellt. &lt;br /&gt;
&lt;br /&gt;
Um ein Device zu erhalten, mit dem sich alle Kanäle gleichzeitig steuern lassen, kann das template &#039;&#039;X_01a_esp_milight_hub_make_rgbw_group&#039;&#039; verwendet werden. Dieses verändert nicht das aktuelle Device, sondern erstellt &#039;&#039;&#039;eine Kopie&#039;&#039;&#039;, die dann modifiziert wird. Diese Kopie ist unter dem Namen &#039;&#039;milight_&amp;lt;RemoteID&amp;gt;_0&#039;&#039; im selben Raum zu finden wie das Ausgangsgerät und kann ebenfalls an die eigenen Wünsche angepaßt werden. &lt;br /&gt;
&lt;br /&gt;
Weitere Beispiele:&lt;br /&gt;
Beispiel für ein RGB-CCT-Device:&lt;br /&gt;
 defmod Licht_Wz_all MQTT2_DEVICE&lt;br /&gt;
 attr Licht_Wz_all IODev MQTT2_Broker&lt;br /&gt;
 attr Licht_Wz_all eventMap /set_white:Weiss/night_mode:Nacht/white_mode:white/on:on/off:off/ON:on/OFF:off/next_mode:Mode/mode_speed_up:Up/mode_speed_down:Down/&lt;br /&gt;
 attr Licht_Wz_all group Licht&lt;br /&gt;
 attr Licht_Wz_all icon light_control&lt;br /&gt;
 attr Licht_Wz_all readingList milight_hub_10693013:milight/0x5D02/rgb_cct/0:.* { json2nameValue($EVENT) }\&lt;br /&gt;
 milight_hub_10693013:milight/updates/0x5D02/rgb_cct/0:.* { json2nameValue($EVENT) }\&lt;br /&gt;
 milight_hub_10693013:milight/states/0x5D02/rgb_cct/0:.* { json2nameValue($EVENT) }\&lt;br /&gt;
 &lt;br /&gt;
 attr Licht_Wz_all room Wohnzimmer&lt;br /&gt;
 attr Licht_Wz_all setList on milight/0x5D02/rgb_cct/0 {&amp;quot;status&amp;quot;:&amp;quot;ON&amp;quot;}\&lt;br /&gt;
 off milight/0x5D02/rgb_cct/0 {&amp;quot;status&amp;quot;:&amp;quot;OFF&amp;quot;}\&lt;br /&gt;
 level milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 hue:colorpicker,HUE,0,1,359 milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 command:uzsuSelectRadio,Weiss,Nacht,Mode,Up,Down milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 brightness:colorpicker,BRI,0,1,255 milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 next_mode milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 mode_speed_up milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 mode_speed_down milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 saturation:colorpicker,BRI,0,1,100 milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 color_temp:colorpicker,CT,153,1,370 milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 device_id milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 effect milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 mode milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 commands milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}&lt;br /&gt;
 attr Licht_Wz_all sortby 1&lt;br /&gt;
 attr Licht_Wz_all webCmd command:brightness:saturation:color_temp:hue&lt;br /&gt;
 attr Licht_Wz_all webCmdLabel command\ &lt;br /&gt;
 :brightness:saturation\&lt;br /&gt;
 :color_temp:hue&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== eBus ==&lt;br /&gt;
=== eBus mit MQTT2 auswerten ===&lt;br /&gt;
&lt;br /&gt;
Für die MQTT Kommunikation des eBus wird für die eigentlichen Geräte MQTT2 DEVICE verwendet, damit wird als IO-Device entweder MQTT2_SERVER oder MQTT2_CLIENT verwendet, NICHT beides gleichzeitig!&lt;br /&gt;
Bitte auch zu beachten, die alten Module MQTT funktionieren nicht nach der Beschreibung in diesem Artikel. Es geht hier um die komplett überarbeitete Version mit dem Namen MQTT2!&lt;br /&gt;
&lt;br /&gt;
=== Anwendung: ===&lt;br /&gt;
Wer eBus komfortabel in Fhem einbinden will, kann dies nun erstmals mit wenigen Mausklicks realisieren. Erstmalig kommt diese neue Technik der von rudolfkönig implementierten Templates zur Anwendung. Templates sind im Prinzip vorgefertigte Schablonen die durch Anklicken dann selbständig den Device mit den darin enthaltenen Vorgaben konfigurieren. Beta-User hat diese Technik dann soweit für den eBus angepasst ( unter anderem die Filter erstellt ) , das sie allen eBus Anwendern zur Verfügung steht. Es kann nun jeder selbst Templates erstellen oder einfach die von mir erstellten vorhandenen Beispiele benutzen. In wenigen Minuten sollte die komplette FHEM Konfiguration dann abgeschlossen sein.&lt;br /&gt;
&lt;br /&gt;
Wer bereits einen Mosquitto Broker installiert hat, kann diesen weiter verwenden, ist aber für die Komunikation mit dem eBus Dämon nicht mehr notwendig!&lt;br /&gt;
&lt;br /&gt;
[[Bild:MQTT2_MQTT2.jpg|600px|thumb|left|Uebersicht eBus MQTT]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Welches Fhem Modul benötigt man ===&lt;br /&gt;
Beispiel: Mosquitto Broker ist vorhanden&lt;br /&gt;
dann benötigt man MQTT2_DEVICE und MQTT2_CLIENT&lt;br /&gt;
&lt;br /&gt;
Beispiel: Mosquitto Broker ist NICHT vorhanden&lt;br /&gt;
dann benötigt man MQTT2_DEVICE und MQTT2_SERVER&lt;br /&gt;
&lt;br /&gt;
{{Randnotiz|RNTyp=r|RNText=Nicht MQTT2_SERVER und Mosquitto gleichzeitig laufen lassen, es kann zu verschiedenen Problemen kommen wie gegenseitiges Löschen von Einträgen in Fhem.}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitung und Definition am eBus ===&lt;br /&gt;
In der Konfiguration des Dämons ( /etc/default/ebusd ) sollten diese Parameter hinzugefügt werden. Die Topic „ebusd/%circuit/%name“ bitte nicht abändern, da verschiedene Filter auf diesen Ausdruck eingestellt sind.&lt;br /&gt;
 --accesslevel=* --mqttport=1883 --mqttjson --mqtthost=IpAdresseMQTTSERVER --mqtttopic=ebusd/%circuit/%name&lt;br /&gt;
Der MQTTSERVER kann wahlweise der Mosquitto Broker sein, oder der MQTT2_SERVER. Beides wird vermutlich am Raspberry der Fhem Hauptinstanz sein, also die IP-Adresse des Raspberry einsetzen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitung und Definition  in Fhem ===&lt;br /&gt;
Wer bereits den Mosquitto installiert hat und diesen weiter verwenden möchte, dann diese Konfiguration wählen.&lt;br /&gt;
 ### 1a. Broker in Fhem anlegen ###&lt;br /&gt;
 define ebusMQTT MQTT 127.0.0.1:1883&lt;br /&gt;
 attr ebusMQTT room MQTT2_DEVICE,System&lt;br /&gt;
&lt;br /&gt;
Wer keinen Mosquitto installiert hat kann diese Konfiguration wählen. Dazu wird einfach der MQTT2-SERVER definiert.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 ### 1b. oder MQTT Server  anlegen ###&lt;br /&gt;
 define ebusMQTT MQTT2_SERVER 1883 global&lt;br /&gt;
 attr ebusMQTT room MQTT2_SERVER&lt;br /&gt;
&lt;br /&gt;
Nun wird noch ein Device benötigt, welcher mit einem der oben genannten Module kommuniziert und das Filter (bridgeRegexp) für den eBus beinhaltet. Auf Basis dieses Device werden alle ankommenden JSON Telegramme vom eBus Dämon automatisch als Reading angelegt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 ### 2. MQTT_Device definieren&lt;br /&gt;
 define MQTT2_ebusd MQTT2_DEVICE ebusd&lt;br /&gt;
 attr MQTT2_ebusd IODev ebusMQTT&lt;br /&gt;
 attr MQTT2_ebusd room MQTT2_DEVICE&lt;br /&gt;
&lt;br /&gt;
Nun benötigen wir noch etwas Code für die Balkendarstellung in Fhem. Dieser Code wird in die 99_myUtils.pm kopiert.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
 sub Balkenanzeige($) &lt;br /&gt;
 {&lt;br /&gt;
    # Zuweisung der übergebenen Variablen&lt;br /&gt;
    my ($val) = @_;&lt;br /&gt;
    # Konfiguration des maximal übergebenen Werts (hier wäre der höchste zu erwartende Wert = 3)&lt;br /&gt;
    my $maxValue = 70;&lt;br /&gt;
    # Normalisierung auf 100%-Wert&lt;br /&gt;
    my $percent = $val / $maxValue * 100;&lt;br /&gt;
    # Definition des valueStyles&lt;br /&gt;
    my $stylestring = &#039;style=&amp;quot;&#039;.&lt;br /&gt;
        &#039;width: 200px; &#039;.&lt;br /&gt;
	&#039;text-align:center; &#039;.&lt;br /&gt;
	&#039;border: 1px solid #ccc ;&#039;. &lt;br /&gt;
	&#039;background-image: -webkit-linear-gradient(left,red &#039;.$percent.&#039;%, rgba(0,0,0,0) &#039;.$percent.&#039;%); &#039;.&lt;br /&gt;
	&#039;background-image:    -moz-linear-gradient(left,blue &#039;.$percent.&#039;%, rgba(0,0,0,0) &#039;.$percent.&#039;%); &#039;. &lt;br /&gt;
	&#039;background-image:     -ms-linear-gradient(left,red &#039;.$percent.&#039;%, rgba(0,0,0,0) &#039;.$percent.&#039;%); &#039;. &lt;br /&gt;
	&#039;background-image:      -o-linear-gradient(left,red &#039;.$percent.&#039;%, rgba(0,0,0,0) &#039;.$percent.&#039;%); &#039;. &lt;br /&gt;
	&#039;background-image:         linear-gradient(left,red &#039;.$percent.&#039;%, rgba(0,0,0,0) &#039;.$percent.&#039;%);&amp;quot;&#039;;&lt;br /&gt;
    # Rückgabe des definierten Strings&lt;br /&gt;
    return $stylestring;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ebenfalls muss noch das Modul Color.pm ordnungsgemäß eingebunden werden. Dieses Modul wird zur farbigen Darstellung wie es in den Templates verwendet wird benötigt.&lt;br /&gt;
 define colorInit notify global:INITIALIZED {use Color}&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
=== Konfiguration in Fhem ===&lt;br /&gt;
&lt;br /&gt;
Bei der hier beschriebenen Konfiguration der angelegten Devices muss unbedingt die Reihenfolge eingehalten werden.&lt;br /&gt;
Im wie oben beschriebenen angelegten Device MQTT2_ebusd wird nun folgendes Template installiert.&lt;br /&gt;
&lt;br /&gt;
[[Bild:MQTT2_1template E_00 installieren.png|400px|thumb|left|Template E_00_eBus_daemon_splitter]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Bild:MQTT2_2splitter.png|400px|thumb|left|Eingabe im Splitter aendern]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Während der Installation erscheint ein Fenster, in diesem kann der Name ausgewählt werden, gebt hier anstatt DEV_ID  „ebus“ ein und rückt „ok“&lt;br /&gt;
&lt;br /&gt;
Zur Kontrolle bitte prüfen ob hier auch die „bridgeRegexp“ vom Template richtig gesetzt wurde.&lt;br /&gt;
&lt;br /&gt;
[[Bild:MQTT2_3Attribute_ebusd.png|400px|thumb|left|bridgeRegexp prüfen]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 (ebus.)[^/]*/(bai|broadcast)/.*:.* &amp;quot;$1_bai&amp;quot;&lt;br /&gt;
 (ebus.)[^/]*/([\d]+)/.*:.* &amp;quot;$1_$2&amp;quot;&lt;br /&gt;
 (ebus.)[^/]*[/][^b][a-zA-Z]+[/].*:.* &amp;quot;$1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Nun setzen wir noch auf dem MQTT2_SERVER oder dem MQTT2_CLIENT ( je nachdem welcher verwendet wurde) das Attribut „autocreate“ auf „complex“.&lt;br /&gt;
&lt;br /&gt;
[[Bild:MQTT2_4autocreate-complex.png|400px|thumb|left|autocreate auf complex setzen]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Complex hat den Sinn, das JSONMAP mit dem Namen des Readings automatisch gesetzt wird.&lt;br /&gt;
Statt dem Reading 0_value wird daraus dann ein Stautus01_0_value. Dies ist gerade bei den Statusmeldungen wichtig, da sie sich sonst mit gleichem Readingnamen gegenseitig überschreiben.&lt;br /&gt;
&lt;br /&gt;
Nun heißt es etwas zurück lehnen und warten bis die MQTT Telegramme vom eBus eingetroffen sind, das kann einige Minuten dauern. Es kann aber in der Zwischenzeit noch die Timer gesteuerte Abfrage definiert werden.&lt;br /&gt;
&lt;br /&gt;
 define EBUS.TIMER at +*00:15:00 set ebusMQTT publish ebusd/430/Hc1HeatCurve/get;&lt;br /&gt;
 set ebusMQTT publish ebusd/430/HwcTempDesired/get;&lt;br /&gt;
 set ebusMQTT publish ebusd/bai/WaterPressure/get;&lt;br /&gt;
 set ebusMQTT publish ebusd/bai/FlowTemp/get;&lt;br /&gt;
 set ebusMQTT publish ebusd/bai/ReturnTemp/get;&lt;br /&gt;
 set ebusMQTT publish ebusd/bai/OutdoorstempSensor/get;&lt;br /&gt;
 set ebusMQTT publish ebusd/bai/Status02/get&lt;br /&gt;
&lt;br /&gt;
Diese „get“ sind nur Beispiele, wer weitere Readings abfragen möchte einfach die Liste in der Fhem Eingabe erweitern. Ebenfalls kann der Timer auf persönliche Bedürfnisse angepasst werden.&lt;br /&gt;
&lt;br /&gt;
=== Installation der Templates ===&lt;br /&gt;
&lt;br /&gt;
Um die eBus Templates benutzen zu können, müssen sie erst im Verzeichnis „/opt/fhem/FHEM/lib/AttrTemplate“ installiert werden. Hier kann das Mustertemplate „mqtt2.ebus.template“ herunter geladen werden. Dieses Template dann in das Verzeichnis kopieren.&lt;br /&gt;
Vor der erstmaligen Benutzung muss dieses template noch Initialisiert werden, sonst wird es in der Templateliste nicht angezeigt.&lt;br /&gt;
&lt;br /&gt;
[[Bild:MQTT2_7templateinitialize.png|400px|thumb|left|vor der ersten Benutzung in der Eingabezeile eingeben]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Dazu in der FHEM Eingabezeile eingeben:&lt;br /&gt;
 { AttrTemplate_Initialize() }&lt;br /&gt;
&lt;br /&gt;
=== Anwendung der Templates ===&lt;br /&gt;
&lt;br /&gt;
Wenn bereits die ersten Messwerte eingetroffen sind und die Devices mit den Readings angelegt wurden, können die Templates angelegt werden. D&lt;br /&gt;
In den gewünschten Stelle stellen (hier MQTT2_ebusd_bai) und ein Template wählen. Die eBus Templates beginnen alle mit E….&lt;br /&gt;
&lt;br /&gt;
[[Bild:MQTT2_8templateselect.png|400px|thumb|left|Das gewünschte Template auswählen, die Readings müssen allerdings in diesem Device enthalten sein]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Hier wird E_07_eBus_bai_Status01+Status02_HWC gewählt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Bild:MQTT2_5statustemplate.png|400px|thumb|left|Das Template hat die gewünschte Konfiguration in Fhem durchgeführt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Bild:MQTT2_6status1template.png|400px|thumb|left|Ergebnis des Template, Heizkurve und Warmwassertemperatur]]&lt;br /&gt;
Hier das Ergebnis von HC1HeatCurve+HWCTempDesired&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Muster Templates ===&lt;br /&gt;
&lt;br /&gt;
Es sind auch noch einige Mustertemplates vorhanden die auf Basis von readingsGroup erstellt wurden und ein farbiges Design besitzen. Diese Templates werden nicht im Device, sondern im Room „eBus“ angelegt.&lt;br /&gt;
Der Kreativität der Anwender sind hier fast keine Grenzen gesetzt, die Werkzeuge sind vorhanden.&lt;br /&gt;
&lt;br /&gt;
Template: E_05_eBus_bai_readingsgroup_Set_Hcurve_Hotwater&lt;br /&gt;
[[Bild:MQTT2_ebusset.png|250px|thumb|left|Set hcurve und HWCtemdesired]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Template: E_01_eBus_bai_readingsgroup_Status01&lt;br /&gt;
[[Bild:MQTT2_ebustemp.png|250px|thumb|left|Statusmeldung als Readingsgroup]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Template: E_02_eBus_bai_readingsgroup_Status01_Balken&lt;br /&gt;
[[Bild:MQTT2_ebustempbalken.png|400px|thumb|left|EStatusmeldung als Readingsgroup mit Balkenanzeige]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Template: E_03_eBus_bai_readingsgroup_Status02&lt;br /&gt;
[[Bild:MQTT2_ebuswarmwasser.png|250px|thumb|left|Statusmeldung als Readingsgroup]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Template: E_04_eBus_bai_readingsgroup_Status02_Balken&lt;br /&gt;
[[Bild:MQTT2_ebuswarmwasserbalken.png|400px|thumb|left|Statusmeldung als Readingsgroup mit Balkenanzeige]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Allgemeine Hinweise ==&lt;br /&gt;
=== MQTT2_SERVER und MQTT2_CLIENT für Debugging nutzen ===&lt;br /&gt;
Nutzt man das rawEvents-Attribut am MQTT2-IO&amp;lt;ref&amp;gt;z.B. &amp;lt;code&amp;gt;attr MQTT2_FHEM_Server rawEvents .*&amp;lt;/code&amp;gt;, der regex-Filter kann wie üblich angepaßt werden&amp;lt;/ref&amp;gt;, kann man den Datenverkehr des Servers am Event-Monitor mitschneiden. Dies ist insbesondere für unbekannte Geräte nützlich, deren Topic- und Payload-Struktur noch nicht bekannt ist.&lt;br /&gt;
Um den kompletten MQTT Datenaustausch mitzuschneiden, kann man mit &amp;lt;code&amp;gt;attr mqtt2_server verbose 5&amp;lt;/code&amp;gt; auch alles ins FHEM-Log schreiben lassen.&lt;br /&gt;
&lt;br /&gt;
=== attrTemplate ===&lt;br /&gt;
Zur Konfiguration von MQTT2_DEVICE-Geräten kann die Funktion &#039;&#039;attrTemplate&#039;&#039; genutzt werden. &lt;br /&gt;
Die Anwendung ist [[MQTT2 DEVICE#attrTemplate|hier]] beschrieben.&lt;br /&gt;
== Links ==&lt;br /&gt;
* {{Link2Forum|Topic=91394|LinkText=Thread, aus dem diese Anleitung ursprünglich entstanden ist}}&lt;br /&gt;
* {{Link2Forum|Topic=91807|LinkText=Thread zum Tasmota-Device}}&lt;br /&gt;
* {{Link2Forum|Topic=97989|LinkText=Thread, aus dem diese Anleitung für den eBus ursprünglich entstanden ist}}&lt;br /&gt;
* {{Link2Forum|Topic=94495|LinkText=Neue templates einreichen}}&lt;br /&gt;
* {{Link2Forum|Topic=94494|LinkText=Fragen, Wünsche und Kritik zu mqtt2.template}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Hinweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
[[Kategorie:MQTT]]&lt;br /&gt;
[[Kategorie:ZigBee]]&lt;br /&gt;
[[Kategorie:IP Components|IP Komponenten]]&lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:Interfaces]]&lt;/div&gt;</summary>
		<author><name>Reinhart</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:MQTT2_MQTT2.jpg&amp;diff=29822</id>
		<title>Datei:MQTT2 MQTT2.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:MQTT2_MQTT2.jpg&amp;diff=29822"/>
		<updated>2019-03-10T12:53:21Z</updated>

		<summary type="html">&lt;p&gt;Reinhart: MQTT2 Praxisbeispiel eBus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Beschreibung ==&lt;br /&gt;
MQTT2 Praxisbeispiel eBus&lt;/div&gt;</summary>
		<author><name>Reinhart</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:MQTT2_ebuswarmwasserbalken.png&amp;diff=29821</id>
		<title>Datei:MQTT2 ebuswarmwasserbalken.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:MQTT2_ebuswarmwasserbalken.png&amp;diff=29821"/>
		<updated>2019-03-10T12:53:07Z</updated>

		<summary type="html">&lt;p&gt;Reinhart: MQTT2 Praxisbeispiel eBus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Beschreibung ==&lt;br /&gt;
MQTT2 Praxisbeispiel eBus&lt;/div&gt;</summary>
		<author><name>Reinhart</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:MQTT2_ebuswarmwasser.png&amp;diff=29820</id>
		<title>Datei:MQTT2 ebuswarmwasser.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:MQTT2_ebuswarmwasser.png&amp;diff=29820"/>
		<updated>2019-03-10T12:52:51Z</updated>

		<summary type="html">&lt;p&gt;Reinhart: MQTT2 Praxisbeispiel eBus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Beschreibung ==&lt;br /&gt;
MQTT2 Praxisbeispiel eBus&lt;/div&gt;</summary>
		<author><name>Reinhart</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:MQTT2_ebustempbalken.png&amp;diff=29819</id>
		<title>Datei:MQTT2 ebustempbalken.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:MQTT2_ebustempbalken.png&amp;diff=29819"/>
		<updated>2019-03-10T12:52:34Z</updated>

		<summary type="html">&lt;p&gt;Reinhart: MQTT2 Praxisbeispiel eBus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Beschreibung ==&lt;br /&gt;
MQTT2 Praxisbeispiel eBus&lt;/div&gt;</summary>
		<author><name>Reinhart</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:MQTT2_ebustemp.png&amp;diff=29818</id>
		<title>Datei:MQTT2 ebustemp.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:MQTT2_ebustemp.png&amp;diff=29818"/>
		<updated>2019-03-10T12:52:12Z</updated>

		<summary type="html">&lt;p&gt;Reinhart: MQTT2 Praxisbeispiel eBus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Beschreibung ==&lt;br /&gt;
MQTT2 Praxisbeispiel eBus&lt;/div&gt;</summary>
		<author><name>Reinhart</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:MQTT2_ebusset.png&amp;diff=29817</id>
		<title>Datei:MQTT2 ebusset.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:MQTT2_ebusset.png&amp;diff=29817"/>
		<updated>2019-03-10T12:51:56Z</updated>

		<summary type="html">&lt;p&gt;Reinhart: MQTT2 Praxisbeispiel eBus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Beschreibung ==&lt;br /&gt;
MQTT2 Praxisbeispiel eBus&lt;/div&gt;</summary>
		<author><name>Reinhart</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:MQTT2_8templateselect.png&amp;diff=29816</id>
		<title>Datei:MQTT2 8templateselect.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:MQTT2_8templateselect.png&amp;diff=29816"/>
		<updated>2019-03-10T12:51:40Z</updated>

		<summary type="html">&lt;p&gt;Reinhart: MQTT2 Praxisbeispiel eBus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Beschreibung ==&lt;br /&gt;
MQTT2 Praxisbeispiel eBus&lt;/div&gt;</summary>
		<author><name>Reinhart</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:MQTT2_7templateinitialize.png&amp;diff=29815</id>
		<title>Datei:MQTT2 7templateinitialize.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:MQTT2_7templateinitialize.png&amp;diff=29815"/>
		<updated>2019-03-10T12:51:18Z</updated>

		<summary type="html">&lt;p&gt;Reinhart: MQTT2 Praxisbeispiel eBus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Beschreibung ==&lt;br /&gt;
MQTT2 Praxisbeispiel eBus&lt;/div&gt;</summary>
		<author><name>Reinhart</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:MQTT2_6status1template.png&amp;diff=29814</id>
		<title>Datei:MQTT2 6status1template.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:MQTT2_6status1template.png&amp;diff=29814"/>
		<updated>2019-03-10T12:51:02Z</updated>

		<summary type="html">&lt;p&gt;Reinhart: MQTT2 Praxisbeispiel eBus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Beschreibung ==&lt;br /&gt;
MQTT2 Praxisbeispiel eBus&lt;/div&gt;</summary>
		<author><name>Reinhart</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:MQTT2_5statustemplate.png&amp;diff=29813</id>
		<title>Datei:MQTT2 5statustemplate.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:MQTT2_5statustemplate.png&amp;diff=29813"/>
		<updated>2019-03-10T12:50:47Z</updated>

		<summary type="html">&lt;p&gt;Reinhart: MQTT2 Praxisbeispiel eBus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Beschreibung ==&lt;br /&gt;
MQTT2 Praxisbeispiel eBus&lt;/div&gt;</summary>
		<author><name>Reinhart</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:MQTT2_4autocreate-complex.png&amp;diff=29812</id>
		<title>Datei:MQTT2 4autocreate-complex.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:MQTT2_4autocreate-complex.png&amp;diff=29812"/>
		<updated>2019-03-10T12:50:29Z</updated>

		<summary type="html">&lt;p&gt;Reinhart: MQTT2 Praxisbeispiel eBus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Beschreibung ==&lt;br /&gt;
MQTT2 Praxisbeispiel eBus&lt;/div&gt;</summary>
		<author><name>Reinhart</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:MQTT2_3Attribute_ebusd.png&amp;diff=29811</id>
		<title>Datei:MQTT2 3Attribute ebusd.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:MQTT2_3Attribute_ebusd.png&amp;diff=29811"/>
		<updated>2019-03-10T12:50:10Z</updated>

		<summary type="html">&lt;p&gt;Reinhart: MQTT2 Praxisbeispiel eBus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Beschreibung ==&lt;br /&gt;
MQTT2 Praxisbeispiel eBus&lt;/div&gt;</summary>
		<author><name>Reinhart</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:MQTT2_2splitter.png&amp;diff=29810</id>
		<title>Datei:MQTT2 2splitter.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:MQTT2_2splitter.png&amp;diff=29810"/>
		<updated>2019-03-10T12:49:50Z</updated>

		<summary type="html">&lt;p&gt;Reinhart: MQTT2 Praxisbeispiel eBus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Beschreibung ==&lt;br /&gt;
MQTT2 Praxisbeispiel eBus&lt;/div&gt;</summary>
		<author><name>Reinhart</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:MQTT2_1template_E_00_installieren.png&amp;diff=29809</id>
		<title>Datei:MQTT2 1template E 00 installieren.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:MQTT2_1template_E_00_installieren.png&amp;diff=29809"/>
		<updated>2019-03-10T12:49:06Z</updated>

		<summary type="html">&lt;p&gt;Reinhart: MQTT2 Praxisbeispiel eBus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Beschreibung ==&lt;br /&gt;
MQTT2 Praxisbeispiel eBus&lt;/div&gt;</summary>
		<author><name>Reinhart</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=EBUS&amp;diff=28161</id>
		<title>EBUS</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=EBUS&amp;diff=28161"/>
		<updated>2018-10-25T17:56:45Z</updated>

		<summary type="html">&lt;p&gt;Reinhart: /* Platine Messpunkte */  Schaltplan mit Messpunkten wegen Irreführung entfernt.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Randnotiz|RNTyp=r|RNText=Die Verwendung des EBUS zur &#039;&#039;Ansteuerung&#039;&#039; eines Heizungssystems kann dieses bei unsachgemäßer Anwendung beschädigen. Für unmittelbare oder mittelbare Folgen, die sich aus dem Nachbau des Interfaces oder der Verwendung der hier zur Verfügung gestellten Information ergeben, übernimmt der Autor keine Haftung.}}Dieser Artikel beschreibt die Ankopplung von Heizungssysteme mit eBus-Interface an FHEM.&lt;br /&gt;
&lt;br /&gt;
Der eBus ist eine bei vielen Heizungssystemen vorhandene serielle Schnittstelle mit zwei Leitungen. Verwendet werden dabei 2400 Baud als Geschwindigkeit und die beiden Signalpegel&lt;br /&gt;
*logisch 1: 15–24 V&lt;br /&gt;
*logisch 0: 9–12 V&lt;br /&gt;
&lt;br /&gt;
[[Datei:EBUS-Adapter-aufgebaut.png|thumb|left|alt=eBus Platine]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fertig aufgebaute eBus Platine, bereit für den Einsatz mit eBusd!&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Interface=&lt;br /&gt;
==Schaltung==&lt;br /&gt;
[[Datei:EBUS_Interface_Schaltung.png|thumb|left|alt=eBus-USB Interface]]&lt;br /&gt;
Eine direkte Ankopplung des eBus an FHEM via Pegelwandlung und serielle Schnittstelle ist nicht empfehlenswert, stattdessen wurde der Weg beschritten, einen separaten Raspberry Pi (Modell B) an den eBus zu koppeln und darauf die Software &#039;&#039;eBusd&#039;&#039; laufen zu lassen. Diese wird dann in einer beliebigen FHEM-Instanz als ECMD-Device definiert und somit per Telnet abgefragt.&lt;br /&gt;
&lt;br /&gt;
Hierbei wird ein kommerziell für ca. 6,00 € erhältliches USB-Modul mit ein paar Zusatzbauteilen im Wert von ca. 5,00 € versehen. Das Interface hat die folgenden Eigenschaften:&lt;br /&gt;
*Verpolungssicherer eBus-Anschluss&lt;br /&gt;
*Galvanische Trennung zwischen eBus und USB &lt;br /&gt;
Die Bauteile sind unkritisch und können durch äquivalente Teile ersetzt werden. Allerdings sollte bei der Zenerdiode auf eine Belastbarkeit mit 1,3 W geachtet werden, und beim USB-Modul darauf, dass dieses einen FTDI-Chip enthält.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Der Autor übernimmt keine Haftung für die Anwendung dieser Schaltung. Zur Vermeidung von Schäden durch unsachgemäße Bedienung des Heizungssystems wird ausdrücklich empfohlen, nur die lesende Hälfte des Interfaces nachzubauen und sich auf ein passives Lauschen auf dem EBUS zu beschränken. Dazu einfach den Zweig mit Darlington-Transistor aus der Schaltung nicht einbauen.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Schaltung des eBus von Prof. Dr. Peter A. Henning ist eine bewährte Schaltung die von zahlreichen Anwendern bereits nachgebaut wurde. &lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Eigenbau (Lochrasterplatine)==&lt;br /&gt;
[[Datei:EBUS_Adapter_Lochrasterplatine.png|thumb|left|alt=Platine]]&lt;br /&gt;
&lt;br /&gt;
Hier ein Beispiel eines Aufbaues auf einer Lochrasterplatine.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Platine==&lt;br /&gt;
Auf Basis der oben genannten Schaltung, wurde im {{Link2Forum|Topic=46098|LinkText=FHEM Forum}} ein Platinenlayout erstellt und produziert. Die dazu benötigten Gerberfiles können {{Link2Forum|Topic=45127|Message=370647|LinkText=hier}} heruntergeladen werden. Der Autor des Layouts hat dies mit der Freeware Version von EAGLE erstellt, d.h. die Files können bei allen Platinenherstellern eingereicht werden (keine Lizenz eines bestimmten Herstellers notwendig).&lt;br /&gt;
[[Datei:EBUS_Adapter_Platine.png|thumb|left|alt=Platine]]&lt;br /&gt;
Diese Beschreibung sollte hauptsächlich für Personen dienen, bei denen es nicht das tägliche Brot ist elektronische Schaltungen in Betrieb zu nehmen. Ich setze hier voraus, dass der Umgang mit einem Lötkolben klar ist. Wer noch nie gelötet hat, sollte besser einen Bekannten ersuchen der das schon gemacht hat.&lt;br /&gt;
Nachfolgend wird beschrieben, wie eine Platine mit den Bauteilen bestückt wird.&lt;br /&gt;
Am einfachsten ist es einen fertigen Adapter zu kaufen.&lt;br /&gt;
Siehe dazu auch den {{Link2Forum|Topic=46098|LinkText=Link aus dem Forum}}:&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Platine bestücken===&lt;br /&gt;
[[Datei:EBUS_Adapter_Bestueckung.png|thumb|left|alt=Platine bestücken]]&lt;br /&gt;
Bei der Bestückung sollte darauf geachtet werden mit den niedrigsten Bauteilen zuerst zu beginnen, sonst fallen sie beim verlöten ständig heraus. Wer die Farbcodes der Widerstände nicht auswendig kennt sollte diese vorher mit einem Meßgerät (Ohmmeter) messen. Nach den Dioden und Widerständen können die IC Sockel eingelötet werden, hier sollte lediglich auf die Einkerbung laut Bestückungsaufdruck geachtet werden. Zum Schluß noch die restlichen Bauteile. Nach einer genauen Sichtkontrolle (verbogene Beinchen des IC, Kurzschlüsse beim Löten, richtige Polung) können noch die ICS eingesetzt werden. Diese können auf einer flachen Unterlage etwas vorgebogen werden, damit sie leichter in den Sockel passen.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Achtung&#039;&#039;&#039;: der IC 4011 ist ein Cmos Schaltkreis und ist empfindlich gegen statische Aufladungen, daher die Beinchen nicht mit dem Finger berühren, bzw. ein Antistatikband am Arm verwenden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 Bestückung der Widerstände bei Platine V1.6&lt;br /&gt;
 R1 = 3k3&lt;br /&gt;
 R2 = 1k0&lt;br /&gt;
 R3 = 20k Poti&lt;br /&gt;
 R4 = 10k (auf der Platine nicht beschriftet, links neben R2)&lt;br /&gt;
 R5 = 470&lt;br /&gt;
 R6 = 22k&lt;br /&gt;
 R7 = 100k (auf der Platine nicht beschriftet, links unten liegt quer)&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
[https://secure.reichelt.de/index.html?&amp;amp;ACTION=20&amp;amp;AWKID=1170007&amp;amp;PROVID=2084 Warenkorb der benötigten Bauteile von Reichelt]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Platine Messpunkte===&lt;br /&gt;
Der Schaltplan mit den Messpunkten wurde entfernt, da dieser leider missverstanden wurde.&lt;br /&gt;
&lt;br /&gt;
===Poti abgleichen===&lt;br /&gt;
Zur ersten Justierung des Potis, wird der eBusd Dienst genutzt. Das Vorgehen sieht wie folgt aus:&lt;br /&gt;
&lt;br /&gt;
1) &#039;&#039;&#039;eBus Dienst stoppen&#039;&#039;&#039; - Das kann mit der folgenden Kommandozeile bewerkstelligt werden:&lt;br /&gt;
 service ebusd stop&lt;br /&gt;
2) &#039;&#039;&#039;eBus Dienst&#039;&#039;&#039;, jedoch mit minimalen Parametern und ohne eBusd Konfigurationsdateien (CSV-Files), mit der folgenden Kommandozeile erneut starten:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; &amp;lt;DEVICE&amp;gt; Muss zuvor durch den entsprechenden USB-Port (siehe [[#USB Device und Port unter Linux ermitteln|USB Device und Port unter Linux ermitteln]]) z.B. /dev/ttyUSB0 ersetzt werden.&#039;&#039;&lt;br /&gt;
 ebusd -f -c /tmp --logareas bus --loglevel info -d &amp;lt;DEVICE&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3) Der eBusd Dienst läuft nun im &#039;&#039;&#039;Vordergrund&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
4) &#039;&#039;&#039;Einem zweiten Terminal öffnen&#039;&#039;&#039; und den folgenden Befehl ausführen:&lt;br /&gt;
 ebusctl raw&lt;br /&gt;
&lt;br /&gt;
Mit dem Befehl erhält man im Terminalfenster die empfangenen Bytes als Hex, die wie folgt aussehen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
2015-12-24 12:07:16.955 [bus notice] &amp;lt;aa&lt;br /&gt;
2015-12-24 12:07:17.001 [bus notice] &amp;lt;aa&lt;br /&gt;
2015-12-24 12:07:17.047 [bus notice] &amp;lt;aa&lt;br /&gt;
2015-12-24 12:07:17.093 [bus notice] &amp;lt;aa&lt;br /&gt;
2015-12-24 12:07:17.097 [bus notice] &amp;lt;10&lt;br /&gt;
2015-12-24 12:07:17.102 [bus notice] &amp;lt;50&lt;br /&gt;
2015-12-24 12:07:17.107 [bus notice] &amp;lt;b5&lt;br /&gt;
2015-12-24 12:07:17.111 [bus notice] &amp;lt;04&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Wenn gerade kein Gerät den Bus nutzt, dann sollten ca. 20 Zeilen pro Sekunde ausgegeben werden und zwar mit &amp;quot;&amp;lt;aa&amp;quot; (im Beispiel die oberen 4 Zeilen).&lt;br /&gt;
&lt;br /&gt;
Sobald ein Gerät den eBus nutzt, tauchen neben &amp;quot;&amp;lt;aa&amp;quot; auch andere HEX Werte auf (im Beispiel die unteren 4 Zeilen). Diese Werte können ignoriert werden.&lt;br /&gt;
&lt;br /&gt;
Wichtig bei der Poti Einstellung ist, dass vor allem die regulären &amp;quot;aa&amp;quot;s zu sehen sind. Tauchen die &amp;quot;aa&amp;quot;s auf, dann kann davon ausgegangen werden, dass der Poti korrekt eigestellt ist. Ist dies der Fall, dann kann der eBusd Dienst regulär gestartet werden.&lt;br /&gt;
Dabei muss der im Vordergrund laufende eBusd Prozess (siehe Punkt 2) mit der Tastenkombination STRG+C abgebrochen und der folgende Befehl in der Kommandozeile ausgeführt werden:&lt;br /&gt;
 service ebusd start&lt;br /&gt;
Anschließend erscheint eine Meldung, die einen erfolgreichen Start des Dienstes signalisiert.&lt;br /&gt;
 [ ok ] Starting ebusd: ebusd.&lt;br /&gt;
&lt;br /&gt;
===Bekannte Fehler=== &lt;br /&gt;
Das Logfile ist zur Inbetriebnahme unerlässlich und kann (z.B. mit [[#PSPad|PSPad]]) ausgelesen werden. &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
2015-12-22 16:27:34.195 [bus notice] signal acquired&lt;br /&gt;
2015-12-22 16:28:12.029 [bus error] signal lost&lt;br /&gt;
2015-12-22 16:28:12.339 [bus notice] signal acquired&lt;br /&gt;
2015-12-22 16:28:14.006 [bus error] signal lost&lt;br /&gt;
2015-12-22 16:28:16.372 [bus notice] signal acquired&lt;br /&gt;
2015-12-22 16:28:18.023 [bus error] signal lost&lt;br /&gt;
2015-12-22 16:28:18.729 [bus notice] signal acquired&lt;br /&gt;
2015-12-22 16:28:20.458 [update notice] update myCustom Status01: 43.0;41.0;8.000;41.0;38.0;ok&lt;br /&gt;
2015-12-22 16:28:26.460 [update notice] update bc Mode QQ=10: standby&lt;br /&gt;
2015-12-22 16:28:30.436 [update notice] update myCustom Status01: 41.0;40.0;8.000;41.0;38.0;ok&lt;br /&gt;
2015-12-22 16:28:32.458 [update notice] update broadcast vdatetime QQ=10: 16:24:52;22.12.2015&lt;br /&gt;
2015-12-22 16:28:32.696 [update notice] update myCustom2 Pumpenstatus: ok&lt;br /&gt;
2015-12-22 16:28:36.452 [update notice] update bc Mode QQ=10: standby&lt;br /&gt;
2015-12-22 16:28:40.478 [update notice] update myCustom Status01: 40.0;39.0;7.750;41.0;38.0;ok&lt;br /&gt;
2015-12-22 16:28:42.482 [update notice] update myCustom1 Status11: nosignal;41;5;18;-;-;-;-;8.000&lt;br /&gt;
2015-12-22 16:28:42.753 [update notice] update myCustom Status02: auto;60;70.0;70;54.0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier ein typisches Log wenn das Poti noch nicht oder &#039;&#039;&#039;falsch kalibriert&#039;&#039;&#039; wurde.&lt;br /&gt;
Ab dem Eintrag 16:28:20.458 war dann die richtige Stellung gefunden. Das Poti soll daher zunächst ganz nach links (Transistor der Platine ist dann rechts unten) gedreht werden und dann vorsichtig auf etwa 2:00 Uhr. Bei knapp 2:00 Uhr ist bei der Testplatine dann die ideale Stellung. Der Stellbereich ist sehr klein (etwa 1-2 mm), daher einen Schraubendreher verwenden der sehr exakt passt und gleichzeitig mit dem Laptop abfragen starten. Zur Kontrolle dann das Log (var/log/ebusd.log) abfragen. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
2015-11-29 06:26:55.271 [update notice] update myCustom1 Status11: nosignal;40;0;15;-;-;-;-;-0.188&lt;br /&gt;
2015-11-29 06:26:55.541 [update notice] update myCustom Status02: auto;60;70.0;70;54.0&lt;br /&gt;
2015-11-29 06:26:59.293 [update notice] update bc Mode QQ=10: standby&lt;br /&gt;
2015-11-29 06:27:03.323 [update notice] update myCustom Status01: 53.0;45.0;-0.438;47.0;46.0;error&lt;br /&gt;
2015-11-29 06:27:05.268 [update notice] update broadcast outsidetemp QQ=10: -3.188&lt;br /&gt;
2015-11-29 06:27:09.344 [update notice] update bc Mode QQ=10: standby&lt;br /&gt;
2015-11-29 06:27:11.934 [bus error] send to 08: ERR: read timeout, retry&lt;br /&gt;
2015-11-29 06:27:11.981 [bus error] send to 08: ERR: read timeout, retry&lt;br /&gt;
2015-11-29 06:27:12.025 [bus error] send to 08: ERR: read timeout, retry&lt;br /&gt;
2015-11-29 06:27:12.069 [bus error] send to 08: ERR: read timeout&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In diesem Fall liegt ein Fehler bei jedem Sendeversuch vor. Ein &amp;quot;bus error&amp;quot; mit timeout sollte nicht (zu oft) zu finden sein. Gut zu sehen sind schon die Broadcast Meldungen, die selbständig über den Bus laufen und vom Konverter schon richtig interpretiert werden. Sollten wie in diesem Fall, die Meldungen nicht mit Texten zu lesen sein fehlen noch die Konfigurationfiles (csv) im Verzeichnis /etc/ebusd. Welche Files hier verwendet werden sollen ist natürlich von der Therme und dem Zubehör abhängig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Achtung&#039;&#039;&#039;: Der Autor übernimmt keine Haftung für die Anwendung dieser Schaltung. Zur Vermeidung von Schäden durch unsachgemäße Bedienung des Heizungssystems wird ausdrücklich empfohlen, nur lesend auf die Schnittstelle zugreifen.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Kommerzielles Interface==&lt;br /&gt;
Ein kommerzielles Interface für die Umsetzung eBus-&amp;gt;USB ist hier erhältlich:&lt;br /&gt;
[https://www.eservice-online.de/produkte/ebus/ eBus Koppler USB]&lt;br /&gt;
&lt;br /&gt;
=Software=&lt;br /&gt;
Als Software kommt auf dem Raspberry Pi der [https://github.com/john30/ebusd ebusd] = eBus-Dämon zum Einsatz (aktuell im Januar 2016 die Version 2.0). &lt;br /&gt;
&lt;br /&gt;
Der ebusd wird auf dem System (z.B Raspberry Pi) nach der beiliegenden Anleitung übersetzt und installiert.&lt;br /&gt;
&lt;br /&gt;
Wichtigsten Bestandteile (Komponenten) der Installation sind:&lt;br /&gt;
*&#039;&#039;ebusd&#039;&#039; - das eigentliche Programm zur Kommunikation mit dem EBUS&lt;br /&gt;
*&#039;&#039;ebusd-configuration - Dateien im CSV(Comma Separated Value)-Format, die beim Start des eBusd eingelesen und als Kommandos (Befehle) für das Heizungsystem verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Nachfolgend wird die Installation der zwei Komponenten beschrieben.&lt;br /&gt;
&lt;br /&gt;
==eBusd Installation per Debian Package==&lt;br /&gt;
&lt;br /&gt;
===Voraussetzungen===&lt;br /&gt;
wget (ist in der Regel auf vielen Distributionen bereits installiert). Die Installation kann mit der folgenden Kommandozeile nachträglich durchgeführt werden: &lt;br /&gt;
 sudo apt-get install wget&lt;br /&gt;
&lt;br /&gt;
===eBusd installieren===&lt;br /&gt;
Das entsprechende eBusd Debian Package kann [https://github.com/john30/ebusd/releases vom GitHub ebusd] bezogen werden.&lt;br /&gt;
&lt;br /&gt;
Die Installation (&#039;&#039;Stand Januar 2016 - Version 2.0&#039;&#039;) wird wie folgt durchgeführt:&lt;br /&gt;
&lt;br /&gt;
 EBUSDPACKAGE=ebusd-2.0_armhf.deb # &amp;lt;--- Version kann bei Bedarf hier angepasst werden.&lt;br /&gt;
 wget https://github.com/john30/ebusd/releases/download/v2.0/$EBUSDPACKAGE&lt;br /&gt;
 sudo dpkg -i --force-overwrite $EBUSDPACKAGE&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Die eBusd wird dauernd aktualisiert. Aus diesem Grund sollte vor der Installation geprüft werden (siehe den o.g. Link), ob bereits eine neuere Version zur Verfügung steht. Der Name des Debian Packages muss, vor der Ausführung der o.g. Kommandozeilen, an der entsprechenden Stelle angepasst werden.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===eBusd Konfigurationsdateien (CSV-Files)===&lt;br /&gt;
Das entsprechende eBusd Konfigurations Debian Package kann [https://github.com/john30/ebusd-configuration/releases vom GitHub ebusd-configuration] bezogen werden.&lt;br /&gt;
&lt;br /&gt;
Die Installation (&#039;&#039;Stand Januar 2016 - Version 2.0.5aa482c&#039;&#039;) wird wie folgt durchgeführt:&lt;br /&gt;
&lt;br /&gt;
 EBUSDCFGPACKAGE=ebusd-configuration-2.0.5aa482c-de_all.deb # &amp;lt;--- Version kann bei Bedarf hier angepasst werden.&lt;br /&gt;
 wget https://github.com/john30/ebusd-configuration/releases/download/v2.0.1/$EBUSDCFGPACKAGE&lt;br /&gt;
 sudo dpkg -i --force-overwrite $EBUSDCFGPACKAGE&lt;br /&gt;
&lt;br /&gt;
===eBusd starten===&lt;br /&gt;
Nach der erfolgreichen Installation des eBusd und der eBusd Konfigurationsdateien kann nun der Dienst gestartet werden.&lt;br /&gt;
Zuvor muss jedoch der USB-Port des eBus Adapters überprüft werden (siehe auch [[#USB Device und Port unter Linux ermitteln|USB Device und Port unter Linux ermitteln]]). Sollte der USB-Port von dem Standardwert &amp;quot;/dev/ttyUSB0&amp;quot; abweichen, dann muss die Konfiguration &amp;quot;/etc/default/ebusd&amp;quot; angepasst werden.&lt;br /&gt;
Andernfalls kann nun der Dienst mit der folgenden Kommandozeile gestartet werden:&lt;br /&gt;
&lt;br /&gt;
 service ebusd start&lt;br /&gt;
Anschließend erscheint eine Meldung:&lt;br /&gt;
 [ ok ] Starting ebusd: ebusd.&lt;br /&gt;
die einen erfolgreichen Start des Dienstes signalisiert.&lt;br /&gt;
&lt;br /&gt;
===eBusd und Konfigurationsdateien deinstallieren===&lt;br /&gt;
Nachfolgend wird die Deinstallation des eBusd und der eBusd Konfigurationsdateien beschrieben.&lt;br /&gt;
&lt;br /&gt;
Zunächst muss der eBusd Dienst beendet werden, dies erfolgt mit der folgenden Kommandozeile:&lt;br /&gt;
 service ebusd stop&lt;br /&gt;
Anschließend erscheint eine Meldung:&lt;br /&gt;
 [ ok ] Stopping ebusd: ebusd.&lt;br /&gt;
die einen erfolgreichen Stop des Dienstes signalisiert.&lt;br /&gt;
&lt;br /&gt;
Anschließend wird zunächst das Debian Konfigurations Package deinstalliert. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Bei der Deinstallation werden alle Konfigurationsdateien (CSV-Files) unwiderruflich gelöscht!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Deinstallation erfolgt mit der folgenden Kommandozeile:&lt;br /&gt;
 sudo dpkg -r --force-overwrite ebusd-configuration&lt;br /&gt;
&lt;br /&gt;
Das eBusd Debian Package wird mit der folgenden Kommandozeile deinstalliert:&lt;br /&gt;
 sudo dpkg -r --force-overwrite ebusd&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tipp:&#039;&#039;&#039; Mit der folgenden Kommandozeile: &lt;br /&gt;
 dpkg -l | grep &#039;ebusd&#039; &lt;br /&gt;
können die installierten eBusd Debian Packages überprüft werden. &lt;br /&gt;
&lt;br /&gt;
Liefert der Befehl kein Ergebnis, dann kann davon ausgegangen werden, dass kein eBusd Debian Package mehr installiert ist.&lt;br /&gt;
&lt;br /&gt;
==eBusd Installation Build Prozess==&lt;br /&gt;
Möchte man eine aktuelle Entwicklungsversion von eBusd nutzen, weil ein Fehler behoben wurde und für diese Version noch kein Debian Package vorhanden ist, dann kann der eBusd manuell kompiliert werden. Nachfolgend werden die dafür notwendigen Schritte beschrieben.&lt;br /&gt;
&lt;br /&gt;
===Voraussetzungen===&lt;br /&gt;
Zunächst müssen die notwendigen Werkzeuge auf dem System installiert werden. Dies erfolgt mit der nachfolgenden Kommandozeile:&lt;br /&gt;
 apt-get -y install git &amp;amp;&amp;amp; apt-get -y install autoconf &amp;amp;&amp;amp; apt-get -y install automake &amp;amp;&amp;amp; apt-get -y install g++ &amp;amp;&amp;amp; apt-get -y install make&lt;br /&gt;
&lt;br /&gt;
Weiterführende Informationen findet man auch direkt im eBusd [https://github.com/john30/ebusd/wiki/1.-Build-and-install Wiki]!&lt;br /&gt;
&lt;br /&gt;
===eBusd kompilieren ===&lt;br /&gt;
&lt;br /&gt;
Nachdem alle Voraussetzungen erfüllt sind, kann der eBusd auf dem lokalen System kompiliert und installiert werden.&lt;br /&gt;
Dafür sind folgende Schritte notwendig:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;eBusd auschecken&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/john30/ebusd.git &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Den Kompilierungsvorgang starten&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 cd ebusd&lt;br /&gt;
 sudo ./autogen.sh --prefix=/usr&lt;br /&gt;
 sudo make&lt;br /&gt;
 sudo make install&lt;br /&gt;
 sudo cp contrib/debian/default/ebusd /etc/default/ebusd # Konfigurationsdatei für eBusd Startoptionen.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Vorgang kann je nach Geschwindigkeit des Systems ca. 20 Minuten dauern. &lt;br /&gt;
&lt;br /&gt;
Wurde der Vorgang erfolgreich durchgeführt, dann kann mit der folgenden Kommandozeile die Version abgefragt werden:&lt;br /&gt;
&lt;br /&gt;
 ebusd -V&lt;br /&gt;
&lt;br /&gt;
===Autostart von eBusd konfigurieren===&lt;br /&gt;
&lt;br /&gt;
Damit die Austostartroutine auch nach einem Neustart des Systems funktioniert, muss das Dämonstartfile in das entsprechende Verzeichnis kopiert werden.&lt;br /&gt;
Die Konfiguration wird mit der folgenden Kommandozeile durchgeführt:  &lt;br /&gt;
&lt;br /&gt;
 sudo cp contrib/debian/init.d/ebusd /etc/init.d/ebusd   # (Dämonstartfile kopieren)&lt;br /&gt;
&lt;br /&gt;
Der eBusd Dienst kann, wie [[#eBusd starten|hier]] beschrieben, gestartet werden.&lt;br /&gt;
&lt;br /&gt;
===eBusd Logrotate===&lt;br /&gt;
Logrotate ist ein logischer Ablauf was mit dem Logfile geschehen soll. Man kann damit das File täglich komprimieren und das 7 Tage lang, dann erst wieder beginnen es zu überschreiben. Dies ist besonders wichtig, denn sonst würde irgendwann das Logilfe bis zu einer extremen Größe anwachsen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/var/log/ebusd.log {&lt;br /&gt;
     rotate 7&lt;br /&gt;
     copytruncate&lt;br /&gt;
     compress&lt;br /&gt;
     missingok&lt;br /&gt;
     notifempty&lt;br /&gt;
     daily&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Logfile kann in &#039;&#039;&#039;/etc/logrotate.d/ebusd&#039;&#039;&#039; konfiguriert werden.&lt;br /&gt;
In diesem Beispiel wird alle 7 Tage rotiert und die Datei komprimiert, das aktuelle Tagesfile ist unkomprimiert und mit einem Editor lesbar.&lt;br /&gt;
Das Ergebnis aus der oben dargestellten Definition sieht wie folgt aus:&lt;br /&gt;
[[Datei:EBUS_Logfile_logrotate.png|thumb|left|alt=Logfile Ansicht]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Systemüberwachung=&lt;br /&gt;
&lt;br /&gt;
Aufgrund unterschiedlicher Ursachen kann es vorkommen, dass der eBus Dämon seinen Dienst einstellt. Die hätte zufolge, dass der Lese- und Schreibzugriff nicht mehr möglich wäre. Nachfolgend werden zwei Möglichkeiten beschreiben wie eine Überwachung des Systems realisiert und im Störungsfall die Funktionalität wiederhergestellt, werden kann.&lt;br /&gt;
&lt;br /&gt;
==Mithilfe von FHEM==&lt;br /&gt;
&lt;br /&gt;
In FHEM kann man ein Notify einrichten, um bei einem Verbindungsabbruch mehrere Versuche zum Reconnect durchzuführen&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
# fhem.cfg&lt;br /&gt;
define EBUS.N notify (EBUS.*DISCONNECTED.*)|(HK.Hz:A.Temp.*err) { EBUSrecover(&amp;quot;notify EBUS.N&amp;quot;,0)}&lt;br /&gt;
attr EBUS.N group deviceDetector&lt;br /&gt;
attr EBUS.N room Alarm&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das dabei aufgerufene Perl-Programm besteht nur aus wenigen Zeilen und muss in die 99_myUtils.pm kopiert/erweitert werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# 99_myUtils.pm&lt;br /&gt;
sub EBUSrecover($$)&lt;br /&gt;
{   &lt;br /&gt;
  my ($evt,$num) = @_;&lt;br /&gt;
  Log 1,&amp;quot;[EBUS] Recover triggered from $evt, attempt No. $num&amp;quot;;&lt;br /&gt;
  if(Value(&amp;quot;EBUS&amp;quot;) ne &amp;quot;opened&amp;quot;){&lt;br /&gt;
    if( $num &amp;lt; 7){&lt;br /&gt;
      $num++;&lt;br /&gt;
      fhem(&amp;quot;set EBUS reopen&amp;quot;);&lt;br /&gt;
      fhem(&amp;quot;delete EBUSrecoverdly&amp;quot;) if($defs{&amp;quot;EBUSrecoverdly&amp;quot;});&lt;br /&gt;
      fhem(&amp;quot;define EBUSrecoverdly at +00:00:05 {EBUSrecover(&#039;EBUSrecover&#039;,$num)}&amp;quot;);&lt;br /&gt;
    }else{&lt;br /&gt;
      fhem(&amp;quot;set Device.warn EBUS&amp;quot;) &lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mithilfe von Watchdog==&lt;br /&gt;
&lt;br /&gt;
Es empfiehlt sich auch, den ebusd kontinuierlich zu überwachen und ggf. neu zu starten. Mit der nachfolgenden Beschreibung wird alle 5 Sekunden die Existenz des Programms abgefragt und dieses bei einem versagenden Test neu gestartet.&lt;br /&gt;
&lt;br /&gt;
Dazu wird auf dem System nach überall erhältlichen Anleitungen der Watchdog Timer installiert und die Datei /etc/watchdog.conf mit den beiden Parametern&lt;br /&gt;
 test-timeout = 10&lt;br /&gt;
 interval     = 5&lt;br /&gt;
besetzt. Ferner wird die Datei /etc/watchdog.d/ebusd angelegt mit dem Inhalt&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
# description: watchdog helper file for ebusd  &lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
&#039;test&#039;)&lt;br /&gt;
       #--- Test for ebusd&lt;br /&gt;
       if [ -s /var/run/ebusd.pid ] ; then&lt;br /&gt;
           RUN=`ps -ef | grep ebusd.*USB0 | grep -v grep`&lt;br /&gt;
           if [ &amp;quot;$RUN&amp;quot; != &amp;quot;&amp;quot; ] ; then            &lt;br /&gt;
              #echo &amp;quot;ebusd is already running&amp;quot;&lt;br /&gt;
              exit 0&lt;br /&gt;
           else&lt;br /&gt;
              echo &amp;quot;ebusd defunct at &amp;quot;`date`&lt;br /&gt;
              exit 1    &lt;br /&gt;
           fi&lt;br /&gt;
       else&lt;br /&gt;
           echo &amp;quot;ebusd not running, return 1 at &amp;quot;`date`&lt;br /&gt;
           exit 1    &lt;br /&gt;
       fi&lt;br /&gt;
       ;;&lt;br /&gt;
&#039;repair&#039;)&lt;br /&gt;
       #-- Restarting ebusd&lt;br /&gt;
       echo &amp;quot;ebusd restarting at &amp;quot;`date`&lt;br /&gt;
       /etc/init.d/ebusd start&lt;br /&gt;
       RETVAL=$?&lt;br /&gt;
       exit 0&lt;br /&gt;
       ;;&lt;br /&gt;
*)&lt;br /&gt;
       exit 0&lt;br /&gt;
       ;;&lt;br /&gt;
esac&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Visualisierung und Steuerung=&lt;br /&gt;
&lt;br /&gt;
==Mit ECMD in FHEM==&lt;br /&gt;
Eine einfache aber sichere Anbindung des eBusd an FHEM kann mit [[ECMD]] durchgeführt werden. Es ist egal ob eBusd auf dem selben Raspberry wie FHEM läuft oder ein eigener Raspberry dafür verwendet wird. Die gezeigten Beispiele sind nur eine der Möglichkeiten die zum Ziel führen, sollen aber sicher und schnell zu den ersten Erfolgen führen.&lt;br /&gt;
&lt;br /&gt;
===ECMD in FHEM aktivieren===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
# fhem.cfg&lt;br /&gt;
define EBUS ECMD telnet &#039;&#039;&#039;ip-raspi-ebusd&#039;&#039;&#039;:8888   # IP Adresse ebusd einsetzen!!!&lt;br /&gt;
attr EBUS classdefs bai00.class=/opt/fhem/FHEM/bai00.cfg&lt;br /&gt;
attr EBUS icon usb&lt;br /&gt;
attr EBUS requestSeparator 000&lt;br /&gt;
attr EBUS room Vaillant&lt;br /&gt;
&lt;br /&gt;
# Die Definition von ECMD, &amp;quot;ip-raspi-ebusd&amp;quot; muss durch die IP-Adresse ersetzt werden. Beispiel:&lt;br /&gt;
define EBUS ECMD telnet 192.168.0.10:8888&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Die Kommunikation erfolgt über Telnet und  8888 ist das Port über welches kommuniziert werden soll.&lt;br /&gt;
&lt;br /&gt;
===ECMD Devices definieren===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
# fhem.cfg&lt;br /&gt;
define Vorlauf ECMDDevice bai00.class&lt;br /&gt;
attr Vorlauf IODev EBUS&lt;br /&gt;
attr Vorlauf group Vaillant&lt;br /&gt;
attr Vorlauf icon sani_supply_temp&lt;br /&gt;
attr Vorlauf room Vaillant&lt;br /&gt;
&lt;br /&gt;
define Ruecklauf ECMDDevice bai00.class&lt;br /&gt;
attr Ruecklauf IODev EBUS&lt;br /&gt;
attr Ruecklauf group Vaillant&lt;br /&gt;
attr Ruecklauf icon sani_return_temp&lt;br /&gt;
attr Ruecklauf room Vaillant&lt;br /&gt;
&lt;br /&gt;
define PumpeWatt ECMDDevice bai00.class&lt;br /&gt;
attr PumpeWatt IODev EBUS&lt;br /&gt;
attr PumpeWatt group Vaillant&lt;br /&gt;
attr PumpeWatt icon measure_power&lt;br /&gt;
attr PumpeWatt room Vaillant&lt;br /&gt;
&lt;br /&gt;
define Fanspeed ECMDDevice bai00.class&lt;br /&gt;
attr Fanspeed IODev EBUS&lt;br /&gt;
attr Fanspeed group Vaillant&lt;br /&gt;
attr Fanspeed icon vent_ventilation_level_automatic&lt;br /&gt;
attr Fanspeed room Vaillant&lt;br /&gt;
&lt;br /&gt;
define HKurve ECMDDevice bai00.class&lt;br /&gt;
attr HKurve IODev EBUS&lt;br /&gt;
attr HKurve group Vaillant&lt;br /&gt;
attr HKurve icon temp_control&lt;br /&gt;
attr HKurve room Vaillant&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Jeder Messwert der von eBusd abgefragt werden soll, muss dazu ein ECMDDevice erstellt werden. Hier ein paar Beispiele mit Vorlauf, Rücklauf, Leistung der Pumpe, Ventilatorgeschwindigkeit und der Heizkurve.&lt;br /&gt;
&lt;br /&gt;
[[Datei:EBUS_Daten_Heizung.png|thumb|left|alt=EBUS-USB Interface]]&lt;br /&gt;
Zu jedem ECMDDevice muss es eine Classdefinition in der bai00.cfg geben. Der Name &amp;quot;bai00.cfg&amp;quot; ist frei gewählt und wird in diesen Beispielen verwendet.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ECMD Classdefinition===&lt;br /&gt;
&lt;br /&gt;
Um eine Klasse zu definieren muss der dazu benötigte Code in eine eigene Datei (hier bai00.cfg) geschrieben werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
################## bai00.cfg ###############&lt;br /&gt;
# &lt;br /&gt;
#!/usr/bin/perl&lt;br /&gt;
# Aussentemperatur&lt;br /&gt;
get Aussentemp cmd {&amp;quot;r -f outsidetemp temp\n&amp;quot;}&lt;br /&gt;
get Aussentemp expect &amp;quot;.*\n*&amp;quot;&lt;br /&gt;
get Aussentemp postproc { $_ }&lt;br /&gt;
#&lt;br /&gt;
# vorlauftemperatur&lt;br /&gt;
get Vorlauf cmd {&amp;quot;r -m 10 status01 temp1.0\n&amp;quot;}&lt;br /&gt;
get Vorlauf expect &amp;quot;\d+\.\d+\n\n&amp;quot;&lt;br /&gt;
get Vorlauf postproc { sprintf(&amp;quot;%5.1f&amp;quot;,$_) }&lt;br /&gt;
#&lt;br /&gt;
# Ruecklauftemperatur&lt;br /&gt;
get Ruecklauf cmd {&amp;quot;r -m 10 status01 temp1.1\n&amp;quot;}&lt;br /&gt;
get Ruecklauf expect &amp;quot;\d+\.\d+\n\n&amp;quot;&lt;br /&gt;
get Ruecklauf postproc { sprintf(&amp;quot;%5.1f&amp;quot;,$_) }&lt;br /&gt;
#&lt;br /&gt;
# Pumpenleistung&lt;br /&gt;
get PumpeWatt cmd {&amp;quot;r -f PumpPower\n&amp;quot;}&lt;br /&gt;
get PumpeWatt expect &amp;quot;\d+\n\n&amp;quot;&lt;br /&gt;
get PumpeWatt postproc { sprintf(&amp;quot;%5.0f&amp;quot;,$_) }&lt;br /&gt;
#&lt;br /&gt;
# Fanspeed&lt;br /&gt;
get Fanspeed cmd {&amp;quot;r -f SDFanSpeed\n&amp;quot;}&lt;br /&gt;
get Fanspeed expect &amp;quot;\d+\n\n&amp;quot;&lt;br /&gt;
get Fanspeed postproc { sprintf(&amp;quot;%5.0f&amp;quot;,$_) }  &lt;br /&gt;
#&lt;br /&gt;
# Heizkurve lesen&lt;br /&gt;
get HKurve cmd {&amp;quot;r -f Hc1HeatCurve\n&amp;quot;}&lt;br /&gt;
get HKurve expect &amp;quot;\d+\.\d+\n&amp;quot;&lt;br /&gt;
get HKurve postproc { sprintf(&amp;quot;%3.1f&amp;quot;,$_) }&lt;br /&gt;
#&lt;br /&gt;
# HeizkurveSchreiben&lt;br /&gt;
get HeizkurveSchreiben cmd {&amp;quot;write 430 Hc1HeatCurve &amp;quot;.Value(&amp;quot;HeizkurveEinstellen&amp;quot;).&amp;quot;\n&amp;quot;}&lt;br /&gt;
get HeizkurveSchreiben expect &amp;quot;.*\n\n&amp;quot;&lt;br /&gt;
get HeizkurveSchreiben postproc  { $_ } &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für jeden Device wird hier festgelegt wie die Befehls Syntax der Abfrage auszusehen hat (cmd) und wie die Ergebnisse zu filtern sind (expect), wie soll das Ausgabeformat sein (postproc). Diese Definitionen bitte in einer neuen Datei &amp;quot;bai00.cfg&amp;quot; speichern.&lt;br /&gt;
&lt;br /&gt;
===ECMD Zyklische Abfrage===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
# Abfrage Timersteuerung, fhem.cfg&lt;br /&gt;
define EBUS.Timer at +*00:15:00 get Aussentemp Aussentemp;;get Vorlauf Vorlauf;;get Ruecklauf Ruecklauf;;get PumpeWatt PumpeWatt;get Fanspeed Fanspeed;;get PumpeWatt PumpeWatt;;get HKurve HKurve&lt;br /&gt;
attr EBUS.Timer group VaillantControl&lt;br /&gt;
attr EBUS.Timer icon time_timer&lt;br /&gt;
attr EBUS.Timer room Vaillant&lt;br /&gt;
attr EBUS.Timer verbose 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um die Daten auch zyklisch vom eBus abholen zu können, wird ein Timer gesetzt. Hier wird alle 15 Minuten abgefragt.&lt;br /&gt;
Tipp: unwichtige Daten wie Druck oder irgendwelche Zähler definiert man in einem zweiten Timer, welcher dann zB. auf 1 Stunde getriggert wird. So wird die Häufigkeit des Zugriffs auf den eBus entlastet.&lt;br /&gt;
&lt;br /&gt;
===ECMD Solar, Warmwasser und Heizkreis===&lt;br /&gt;
&lt;br /&gt;
====ECMD Beispiel Solar====&lt;br /&gt;
Im nachfolgenden Beispiel wird der EBUS über das Modul ECMD angebunden und mit drei Klassen von Kommandos versehen. IP Adresse ist jene des Device wo der eBusd läuft. &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
define EBUS ECMD telnet 192.168.0.192:8888&lt;br /&gt;
attr EBUS classdefs HK.SOL.class=/opt/fhem/FHEM/ebus_solar.cfg:HK.WW.class=/opt/fhem/FHEM/ebus_ww.cfg:HK.Hz.class=/opt/fhem/FHEM/ebus_hz.cfg&lt;br /&gt;
attr EBUS room System&lt;br /&gt;
#--&lt;br /&gt;
define HK.Hz ECMDDevice HK.Hz.class&lt;br /&gt;
attr HK.Hz IODev EBUS&lt;br /&gt;
attr HK.Hz group heating&lt;br /&gt;
attr HK.Hz room Verbrauch&lt;br /&gt;
#--&lt;br /&gt;
define HK.WW ECMDDevice HK.WW.class&lt;br /&gt;
attr HK.WW IODev EBUS&lt;br /&gt;
attr HK.WW group heating&lt;br /&gt;
attr HK.WW room Verbrauch&lt;br /&gt;
#--&lt;br /&gt;
define HK.SOL ECMDDevice HK.SOL.class&lt;br /&gt;
attr HK.SOL IODev EBUS&lt;br /&gt;
attr HK.SOL group solarGenerator&lt;br /&gt;
attr HK.SOL room Solaranlage&lt;br /&gt;
#--&lt;br /&gt;
# Diese drei Klassen werden als separate Files mit den in der EBUS-Definition stehenden Dateinamen &#039;&#039;ebus_hz.cfg&#039;&#039;, &#039;&#039;ebus_ww.cfg&#039;&#039; sowie &#039;&#039;ebus_solar.cfg&#039;&#039; angelegt. Alle drei ECMD-Devices werden nun zyklisch (z.B. jede Minute) abgefragt mit&lt;br /&gt;
define EBUS.Timer at +*00:01:00 get HK.Hz A.Temp;;get HK.Hz state;;get HK.WW state;;get HK.SOL state&lt;br /&gt;
attr EBUS.Timer group heatingControl&lt;br /&gt;
attr EBUS.Timer room Verbrauch&lt;br /&gt;
attr EBUS.Timer verbose 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====ECMD Classdefinition Heizkreis====&lt;br /&gt;
Die erste Datei definiert die FHEM-Readings für die Abfrage von Außentemperatur und Heizkreis:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# Außentemperatur&lt;br /&gt;
get A.Temp cmd {&amp;quot;cyc broad temp\n&amp;quot;}&lt;br /&gt;
get A.Temp expect &amp;quot;.*&amp;quot;&lt;br /&gt;
get A.Temp postproc { my $rval;\&lt;br /&gt;
 if(($_ eq &amp;quot;&amp;quot;)||($_ eq &amp;quot;no data stored&amp;quot;) ){\&lt;br /&gt;
   $rval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
 }else{\&lt;br /&gt;
   $rval=sprintf(&amp;quot;%5.2f °C&amp;quot;,$_);\&lt;br /&gt;
 }\&lt;br /&gt;
$rval; }&lt;br /&gt;
# Heizkeis HK1&lt;br /&gt;
get state cmd {&amp;quot;cyc mv HK1_temp\n&amp;quot;}&lt;br /&gt;
get state expect &amp;quot;.*&amp;quot;&lt;br /&gt;
get state postproc { my ($bval,$rval,$tval,$pval,$qval,$sval,$xval,$zval);\&lt;br /&gt;
my $hash  = $defs{&amp;quot;%NAME&amp;quot;};\&lt;br /&gt;
 if( ($_ eq &amp;quot;&amp;quot;)||($_ eq &amp;quot;no data stored&amp;quot;) ){\&lt;br /&gt;
    $bval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    $rval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    $tval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    $pval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    $qval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    $sval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    $xval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    $zval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
 }else{\&lt;br /&gt;
    my @values=split(&#039; &#039;,$_);\&lt;br /&gt;
    if( $values[0] &amp;lt; 15 ){\&lt;br /&gt;
       $bval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
       $rval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
       $tval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
       $pval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
       $qval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
       $sval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
       $xval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
       $zval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    } else { \&lt;br /&gt;
       $bval = HzBedarf();\&lt;br /&gt;
       $rval = sprintf(&amp;quot;%5.2f °C&amp;quot;,$values[0]);\&lt;br /&gt;
       $tval = sprintf(&amp;quot;%5.2f °C&amp;quot;,$values[1]);\&lt;br /&gt;
       if( $values[2] == 0 ){\&lt;br /&gt;
          $pval = &amp;quot;OFF&amp;quot;;\&lt;br /&gt;
          $qval = &amp;quot;0 0&amp;quot;;\&lt;br /&gt;
       }elsif( $values[2] == 1 ){\&lt;br /&gt;
          $pval = &amp;quot;ON (HK)&amp;quot;;\&lt;br /&gt;
          $qval = &amp;quot;80 0&amp;quot;;\&lt;br /&gt;
       }elsif( $values[2] == 2 ){\&lt;br /&gt;
          $pval = &amp;quot;ON (WW)&amp;quot;;\&lt;br /&gt;
          $qval = &amp;quot;0 80&amp;quot;;\&lt;br /&gt;
       }else{\&lt;br /&gt;
          $pval = &amp;quot;unknown&amp;quot;;\&lt;br /&gt;
          $qval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
       }\&lt;br /&gt;
       $sval = sprintf(&amp;quot;%d&amp;quot;,$values[2]);\&lt;br /&gt;
       $xval = sprintf(&amp;quot;%5.2f %5.2f %s %5.2f&amp;quot;,\&lt;br /&gt;
         $values[0],$values[1],$qval,$bval);\&lt;br /&gt;
       $zval = sprintf(&amp;quot;VL.T %5.2f °C, RL.T %5.2f °C, %s&amp;quot;,\&lt;br /&gt;
         $values[0],$values[1],$pval);\&lt;br /&gt;
    }\&lt;br /&gt;
  }\&lt;br /&gt;
readingsSingleUpdate($hash, &amp;quot;VL.T&amp;quot;, $rval, 1);\&lt;br /&gt;
readingsSingleUpdate($hash, &amp;quot;RL.T&amp;quot;, $tval, 1);\&lt;br /&gt;
readingsSingleUpdate($hash, &amp;quot;Pumpe&amp;quot;, $pval, 1); \&lt;br /&gt;
readingsSingleUpdate($hash, &amp;quot;Pumpe.P&amp;quot;, $qval, 1); \&lt;br /&gt;
readingsSingleUpdate($hash, &amp;quot;Bedarf&amp;quot;, $bval, 1); \&lt;br /&gt;
readingsSingleUpdate($hash, &amp;quot;Status&amp;quot;, $sval, 1);\&lt;br /&gt;
readingsSingleUpdate($hash, &amp;quot;reading&amp;quot;, $xval, 1);\&lt;br /&gt;
$zval; }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====ECMD Classdefinition Warmwasserkreis====&lt;br /&gt;
Die zweite Datei definiert die FHEM-Readings für den Warmwasserkreis:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# Warmwasserkreis&lt;br /&gt;
get state cmd {&amp;quot;cyc broad getstatus_WW\n&amp;quot;}&lt;br /&gt;
get state expect &amp;quot;.*&amp;quot;&lt;br /&gt;
get state postproc { my ($rval,$tval,$bval,$pval,$xval,$zval);\&lt;br /&gt;
my $hash  = $defs{&amp;quot;%NAME&amp;quot;};\&lt;br /&gt;
 if( ($_ eq &amp;quot;&amp;quot;)||($_ eq &amp;quot;no data stored&amp;quot;) ){\&lt;br /&gt;
    $rval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    $tval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    $bval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    $pval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    $xval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    $zval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
 }else{\&lt;br /&gt;
    my @values=split(&#039; &#039;,$_);\&lt;br /&gt;
    if( $values[1] &amp;lt; 15 ){\&lt;br /&gt;
       $rval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
       $tval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
       $bval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
       $pval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
       $xval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
       $zval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    }else {\&lt;br /&gt;
       $rval = sprintf(&amp;quot;%5.2f °C&amp;quot;,$values[0]);\&lt;br /&gt;
       $tval = sprintf(&amp;quot;%5.2f °C&amp;quot;,$values[1]);\&lt;br /&gt;
       $bval = ($values[2] == 80) ? &amp;quot;ON (WW)&amp;quot; : &amp;quot;OFF&amp;quot;;\&lt;br /&gt;
       $pval = ($values[3] == 1) ? &amp;quot;ON&amp;quot; : &amp;quot;OFF&amp;quot;;\&lt;br /&gt;
       $xval = sprintf(&amp;quot;%5.2f %5.2f %5.2f %d %d&amp;quot;,\&lt;br /&gt;
        $values[0],0.0,$values[1],$values[2],$values[3]);\&lt;br /&gt;
       $zval = sprintf(&amp;quot;SF1.T %5.2f °C, %s&amp;quot;,\&lt;br /&gt;
        $values[0],$pval);\&lt;br /&gt;
    }\&lt;br /&gt;
  }\&lt;br /&gt;
$zval; }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====ECMD Classdefinition Solarkreis====&lt;br /&gt;
Die dritte Datei definiert die FHEM-Readings für den Solarkreis:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# Solarkreis&lt;br /&gt;
get state cmd {&amp;quot;cyc broad getstatus_SOL\n&amp;quot;}&lt;br /&gt;
get state expect &amp;quot;.*&amp;quot;&lt;br /&gt;
get state postproc { my ($rval,$pval,$qval,$lval,$yval,$xval,$zval);\&lt;br /&gt;
my $hash  = $defs{&amp;quot;%NAME&amp;quot;};\&lt;br /&gt;
 if( ($_ eq &amp;quot;&amp;quot;)||($_ eq &amp;quot;no data stored&amp;quot;) ){\&lt;br /&gt;
    $rval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    $pval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    $qval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    $lval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    $yval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    $xval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
    $zval = &amp;quot;err&amp;quot;;\&lt;br /&gt;
 }else{\&lt;br /&gt;
    my @values=split(&#039; &#039;,$_);\&lt;br /&gt;
    $rval = sprintf(&amp;quot;%5.2f °C&amp;quot;,$values[0]);\&lt;br /&gt;
    $pval = ($values[1] == 1)?&amp;quot;ON&amp;quot;:&amp;quot;OFF&amp;quot;;\&lt;br /&gt;
    $qval = ($values[1] == 1)?65:0;\&lt;br /&gt;
    $lval = sprintf(&amp;quot;%5.2f %%&amp;quot;,$values[2]);\&lt;br /&gt;
    $yval = sprintf(&amp;quot;%d&amp;quot;,$values[3]);\&lt;br /&gt;
    $xval = sprintf(&amp;quot;%5.2f %d %5.2f %d&amp;quot;,\&lt;br /&gt;
      $values[0],$qval,$values[2],$values[3]);\&lt;br /&gt;
    $zval = sprintf(&amp;quot;Coll.T %5.2f °C, %s&amp;quot;,\&lt;br /&gt;
      $values[0],$pval);\&lt;br /&gt;
 }\&lt;br /&gt;
readingsSingleUpdate($hash, &amp;quot;Coll.T&amp;quot;, $rval, 1);\&lt;br /&gt;
readingsSingleUpdate($hash, &amp;quot;Pumpe&amp;quot;, $pval, 1);\&lt;br /&gt;
readingsSingleUpdate($hash, &amp;quot;Pumpe.P&amp;quot;, $qval.&amp;quot; W&amp;quot;, 1);\&lt;br /&gt;
readingsSingleUpdate($hash, &amp;quot;Load&amp;quot;,  $lval, 1);\&lt;br /&gt;
readingsSingleUpdate($hash, &amp;quot;Yield&amp;quot;, $yval, 1);\&lt;br /&gt;
readingsSingleUpdate($hash, &amp;quot;reading&amp;quot;, $xval, 1);\&lt;br /&gt;
$zval; }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ECMD Classdefinition Heizkurve===&lt;br /&gt;
&lt;br /&gt;
Diese Klassendefinition muss in der bai00.cfg gespeichert (angehängt) werden.&lt;br /&gt;
in diesem Beispiel wurde sie für die Vaillant Calormatic 430 definiert, bei einer Calormatic 470 muss der Text entsprechend geändert werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
# HeizkurveSchreiben Calormatic 430, bai00.cfg&lt;br /&gt;
get HeizkurveSchreiben cmd {&amp;quot;write -c 430 Hc1HeatCurve &amp;quot;.Value(&amp;quot;HeizkurveEinstellen&amp;quot;).&amp;quot;\n&amp;quot;}&lt;br /&gt;
get HeizkurveSchreiben expect &amp;quot;.*\n\n&amp;quot;&lt;br /&gt;
get HeizkurveSchreiben postproc  { $_ }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Heizkurve schreiben===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
#fhem.cfg&lt;br /&gt;
define HeizkurveEinstellen dummy&lt;br /&gt;
attr HeizkurveEinstellen group Heizkurve_Einstellen&lt;br /&gt;
attr HeizkurveEinstellen icon temp_control&lt;br /&gt;
attr HeizkurveEinstellen room Vaillant,Heizung&lt;br /&gt;
attr HeizkurveEinstellen setList state:0.20,0.40,0.50,0.60,0.70,0.80,0.90,1.00,1.10,1.20,1.30,1.40,1.50,1.60,1.70&lt;br /&gt;
attr HeizkurveEinstellen webCmd state&lt;br /&gt;
&lt;br /&gt;
define HeizkurveSchreiben_Click notify HeizkurveEinstellen {\&lt;br /&gt;
 fhem(&amp;quot;get HeizkurveSchreiben HeizkurveSchreiben&amp;quot;);;\&lt;br /&gt;
}&lt;br /&gt;
attr HeizkurveSchreiben_Click group heatingControl&lt;br /&gt;
attr HeizkurveSchreiben_Click room Vaillant&lt;br /&gt;
&lt;br /&gt;
define HeizkurveSchreiben ECMDDevice bai00.class&lt;br /&gt;
attr HeizkurveSchreiben IODev EBUS&lt;br /&gt;
attr HeizkurveSchreiben group Heizkurve_Einstellen&lt;br /&gt;
attr HeizkurveSchreiben room Vaillant&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein kleines Demo wie man via ECMD und eBus die Daten zurück in die Register der Therme (Calormatic) schreiben kann. Hier wird die Heizkurve verstellt.&lt;br /&gt;
Ein Dummy wird definiert und über eine setList werden die verschiedenen Kurven vorgegeben. Dank setList kann es zu keinen unerlaubten Eingaben kommen. Über den notify wird die Heizkurve dann schließlich gesetzt.&lt;br /&gt;
&lt;br /&gt;
[[Datei:EBUS_Heizkurve_Einstellen.png|thumb|left|alt=EBUS-USB Interface]]&lt;br /&gt;
Vorsicht: überlegt euch bitte gut was ihr zurück schreiben wollt, es kann unter Umständen gefährlich für eure Hardware oder Gesundheit werden (zB: Warmwasser auf über 60 Grad). Alles was hier durchgeführt wird, führt ihr auf eigene Verantwortung durch.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Wochenprogramme===&lt;br /&gt;
Ein gerne benutztes Feature ist die Änderung der Zeitprogramme des Heizgerätes in FHEM. Die Visualisierung  ist etwas komplexer weil alles x 7 ist und hier Steuerzeichen beim Zusammensetzen des Sendestrings vorkommen die nicht direkt übergeben werden können. Einzelne Timer können damit nicht geschrieben werden, daher wird bei jeder Timereingabe der komplette String geschrieben. Der Einfachheit halber und wegen der Übersicht sind nur 2 Tagesprogramme (Timer) im Beispielcode vorgesehen (die Calormatic kann 3).&lt;br /&gt;
[[Datei:EBUS_Timerprogramme.png|thumb|left|alt=Wochentimer]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
#####################&lt;br /&gt;
#  Timer-Programme  #&lt;br /&gt;
#####################&lt;br /&gt;
get Mo cmd {&amp;quot;r -f hc1Timer.Monday\n&amp;quot;}&lt;br /&gt;
get Mo expect &amp;quot;.*\n\n&amp;quot;&lt;br /&gt;
get Mo postproc { Vaillant_Timer($_); }&lt;br /&gt;
get Di cmd {&amp;quot;r -f hc1Timer.Tuesday\n&amp;quot;}&lt;br /&gt;
get Di expect &amp;quot;.*\n\n&amp;quot;&lt;br /&gt;
get Di postproc { Vaillant_Timer($_); }&lt;br /&gt;
get Mi cmd {&amp;quot;r -f hc1Timer.Wednesday\n&amp;quot;}&lt;br /&gt;
get Mi expect &amp;quot;.*\n\n&amp;quot;&lt;br /&gt;
get Mi postproc { Vaillant_Timer($_); }&lt;br /&gt;
get Do cmd {&amp;quot;r -f hc1Timer.Thursday\n&amp;quot;}&lt;br /&gt;
get Do expect &amp;quot;.*\n\n&amp;quot;&lt;br /&gt;
get Do postproc { Vaillant_Timer($_); }&lt;br /&gt;
get Fr cmd {&amp;quot;r -f hc1Timer.Friday\n&amp;quot;}&lt;br /&gt;
get Fr expect &amp;quot;.*\n\n&amp;quot;&lt;br /&gt;
get Fr postproc { Vaillant_Timer($_); }&lt;br /&gt;
get Sa cmd {&amp;quot;r -f hc1Timer.Saturday\n&amp;quot;}&lt;br /&gt;
get Sa expect &amp;quot;.*\n\n&amp;quot;&lt;br /&gt;
get Sa postproc { Vaillant_Timer($_); }&lt;br /&gt;
get So cmd {&amp;quot;r -f hc1Timer.Sunday\n&amp;quot;}&lt;br /&gt;
get So expect &amp;quot;.*\n\n&amp;quot;&lt;br /&gt;
get So postproc { Vaillant_Timer($_); }&lt;br /&gt;
get ZeitfensterSchreibenMo cmd {&amp;quot;write -c 430 hc1Timer.Monday &amp;quot;.ReadingsVal(&amp;quot;TimeMo&amp;quot;,&amp;quot;HHMM1&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeMo&amp;quot;,&amp;quot;HHMM2&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeMo&amp;quot;,&amp;quot;HHMM3&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeMo&amp;quot;,&amp;quot;HHMM4&amp;quot;,0) . chr(59) . &amp;quot;24:00&amp;quot; . chr(59) . &amp;quot;24:00&amp;quot; . chr(59) . &amp;quot;selected\n&amp;quot;}&lt;br /&gt;
get ZeitfensterSchreibenMo expect &amp;quot;.*\n\n&amp;quot;&lt;br /&gt;
get ZeitfensterSchreibenMo postproc  { $_ }&lt;br /&gt;
get ZeitfensterSchreibenDi cmd {&amp;quot;write -c 430 hc1Timer.Tuesday &amp;quot;.ReadingsVal(&amp;quot;TimeDi&amp;quot;,&amp;quot;HHMM1&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeDi&amp;quot;,&amp;quot;HHMM2&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeDi&amp;quot;,&amp;quot;HHMM3&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeDi&amp;quot;,&amp;quot;HHMM4&amp;quot;,0) . chr(59) . &amp;quot;24:00&amp;quot; . chr(59) . &amp;quot;24:00&amp;quot; . chr(59) . &amp;quot;selected\n&amp;quot;}&lt;br /&gt;
get ZeitfensterSchreibenDi expect &amp;quot;.*\n\n&amp;quot;&lt;br /&gt;
get ZeitfensterSchreibenDi postproc  { $_ }&lt;br /&gt;
get ZeitfensterSchreibenMi cmd {&amp;quot;write -c 430 hc1Timer.Wednesday &amp;quot;.ReadingsVal(&amp;quot;TimeMi&amp;quot;,&amp;quot;HHMM1&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeMi&amp;quot;,&amp;quot;HHMM2&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeMi&amp;quot;,&amp;quot;HHMM3&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeMi&amp;quot;,&amp;quot;HHMM4&amp;quot;,0) . chr(59) . &amp;quot;24:00&amp;quot; . chr(59) . &amp;quot;24:00&amp;quot; . chr(59) . &amp;quot;selected\n&amp;quot;}&lt;br /&gt;
get ZeitfensterSchreibenMi expect &amp;quot;.*\n\n&amp;quot;&lt;br /&gt;
get ZeitfensterSchreibenMi postproc  { $_ }&lt;br /&gt;
get ZeitfensterSchreibenDo cmd {&amp;quot;write -c 430 hc1Timer.Thursday &amp;quot;.ReadingsVal(&amp;quot;TimeDo&amp;quot;,&amp;quot;HHMM1&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeDo&amp;quot;,&amp;quot;HHMM2&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeDo&amp;quot;,&amp;quot;HHMM3&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeDo&amp;quot;,&amp;quot;HHMM4&amp;quot;,0) . chr(59) . &amp;quot;24:00&amp;quot; . chr(59) . &amp;quot;24:00&amp;quot; . chr(59) . &amp;quot;selected\n&amp;quot;}&lt;br /&gt;
get ZeitfensterSchreibenDo expect &amp;quot;.*\n\n&amp;quot;&lt;br /&gt;
get ZeitfensterSchreibenDo postproc  { $_ }&lt;br /&gt;
get ZeitfensterSchreibenFr cmd {&amp;quot;write -c 430 hc1Timer.Friday &amp;quot;.ReadingsVal(&amp;quot;TimeFr&amp;quot;,&amp;quot;HHMM1&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeFr&amp;quot;,&amp;quot;HHMM2&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeFr&amp;quot;,&amp;quot;HHMM3&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeFr&amp;quot;,&amp;quot;HHMM4&amp;quot;,0) . chr(59) . &amp;quot;24:00&amp;quot; . chr(59) . &amp;quot;24:00&amp;quot; . chr(59) . &amp;quot;selected\n&amp;quot;}&lt;br /&gt;
get ZeitfensterSchreibenFr expect &amp;quot;.*\n\n&amp;quot;&lt;br /&gt;
get ZeitfensterSchreibenFr postproc  { $_ }&lt;br /&gt;
get ZeitfensterSchreibenSa cmd {&amp;quot;write -c 430 hc1Timer.Saturday &amp;quot;.ReadingsVal(&amp;quot;TimeSa&amp;quot;,&amp;quot;HHMM1&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeSa&amp;quot;,&amp;quot;HHMM2&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeSa&amp;quot;,&amp;quot;HHMM3&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeSa&amp;quot;,&amp;quot;HHMM4&amp;quot;,0) . chr(59) . &amp;quot;24:00&amp;quot; . chr(59) . &amp;quot;24:00&amp;quot; . chr(59) . &amp;quot;selected\n&amp;quot;}&lt;br /&gt;
get ZeitfensterSchreibenSa expect &amp;quot;.*\n\n&amp;quot;&lt;br /&gt;
get ZeitfensterSchreibenSa postproc  { $_ }&lt;br /&gt;
get ZeitfensterSchreibenSo cmd {&amp;quot;write -c 430 hc1Timer.Sunday &amp;quot;.ReadingsVal(&amp;quot;TimeSo&amp;quot;,&amp;quot;HHMM1&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeSo&amp;quot;,&amp;quot;HHMM2&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeSo&amp;quot;,&amp;quot;HHMM3&amp;quot;,0) . chr(59) . ReadingsVal(&amp;quot;TimeSo&amp;quot;,&amp;quot;HHMM4&amp;quot;,0) . chr(59) . &amp;quot;24:00&amp;quot; . chr(59) . &amp;quot;24:00&amp;quot; . chr(59) . &amp;quot;selected\n&amp;quot;}&lt;br /&gt;
get ZeitfensterSchreibenSo expect &amp;quot;.*\n\n&amp;quot;&lt;br /&gt;
get ZeitfensterSchreibenSo postproc  { $_ }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieses Beispiel ist für eine Vaillant Calormatic 430, bei einer Calormatic 470 müssen die entsprechenden Zeilen angepasst werden (write -c 430....) .&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
#########################################################&lt;br /&gt;
#&lt;br /&gt;
#                      Vaillant_Timer&lt;br /&gt;
# Datenstring = 03:30;19:30;20:00;20:00;20:00;20:00;Mo-Fr&lt;br /&gt;
#########################################################&lt;br /&gt;
# 99_myUtils.pm&lt;br /&gt;
sub Vaillant_Timer($)&lt;br /&gt;
{&lt;br /&gt;
 my @values=split(/[; ]/,$_);&lt;br /&gt;
 #-- suppress leading zero ?&lt;br /&gt;
 for(my $i=0;$i&amp;lt;7;$i++){ &lt;br /&gt;
   $values[$i]=~s/^0//;&lt;br /&gt;
 }&lt;br /&gt;
 my $sval=sprintf(&amp;quot;%s-%s&amp;quot;,$values[0],$values[1]);&lt;br /&gt;
 $sval  .=sprintf(&amp;quot;, %s-%s&amp;quot;,$values[2],$values[3])&lt;br /&gt;
   if($values[2] ne $values[3]);&lt;br /&gt;
 $sval  .=sprintf(&amp;quot;, %s-%s&amp;quot;,$values[4],$values[5])&lt;br /&gt;
   if($values[4] ne $values[5]);&lt;br /&gt;
 return $sval;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Oben gezeigtes Beispiel benötigt den Vaillant_Timer (von Prof. Peter Henning). Dieser Code muss in die 99_myUtils.pm gespeichert werden. Unter diesem {{Link2Forum|Topic=41064|Message=336911|LinkText=Link}} gibt es weiterreichende Informationen zu diesem Thema.&lt;br /&gt;
&lt;br /&gt;
==GAEBUS==&lt;br /&gt;
&lt;br /&gt;
GAEBUS ist ein Perl Modul welches es in FHEM ermöglicht sämtliche Daten des eBus bequem zu konfigurieren.&lt;br /&gt;
Das Protokoll ist ebenso wie bei ECMD Telnet, aber die Einrichtung unterscheidet sich sehr stark und wird von den meisten Anwendern einfacher empfunden. Allerdings ist im derzeitigen Entwicklungsstand der GAEBUS noch nicht so flexibel wie ECMD. Das betrifft vor allem die Datenfilterung und Datenformatierung.&lt;br /&gt;
&lt;br /&gt;
Eine genaue Installations- und Einrichtungsanleitung kann aus diesem {{Link2Forum|Topic=46098|Message=381580|LinkText=Forums-Thread}} entnommen werden.&lt;br /&gt;
&lt;br /&gt;
Den Diskussionsthread des Autors findet man {{Link2Forum|Topic=41064|Message=332654|LinkText=hier}}.&lt;br /&gt;
&lt;br /&gt;
==FHEM Tablet UI (FTUI)==&lt;br /&gt;
&lt;br /&gt;
Die [http://forum.fhem.de/index.php/board,71.0.html Tablet-UI] ist ein ansprechendes HTML Frontend welches durch intensive Betreuung des Autors sehr gepflegt wird. Mit sogenannten Widgets kann hier auch für ungeübte schnell ein optisch ansprechendes Ergebnis erzielt werden. Die Tablet-UI stellt mit ihren Widgets direkt die Verbindung zu den Readings in FHEM her. Alle Messwerte die hier dargestellt werden sollen, müssen daher vorher in FHEM bereits definiert werden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:EBUSD_FTUI.png|thumb|left|alt=eBus Platine]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der komplette Demo-Code der abgebildeten Seite kann hier downgeloadet werden: {{Link2Forum|Topic=46098|Message=383071|LinkText=Tablet-UI}}&lt;br /&gt;
&lt;br /&gt;
=Tipps &amp;amp; Tricks=&lt;br /&gt;
&lt;br /&gt;
==eBusd Bedeutung der Telegramme==&lt;br /&gt;
&lt;br /&gt;
Der ebusd wird entweder über &#039;&#039;ebusctl&#039;&#039; oder über &#039;&#039;telnet&#039;&#039; durch Klartextkommandos abgefragt, die lauten z.B. &#039;&#039;read -c broadcast outsidetemp&#039;&#039;.&lt;br /&gt;
*In CSV-Dateien in /etc/ebusd wird festgelegt, in welche bzw. aus welcher binären Folge ein Kommando übersetzt wird. Konkret handelt es sich z.B. bei &#039;&#039;read -c broadcast outsidetemp&#039;&#039; um die Außentemperatur, die im Heizungssystem zyklisch als Broadcast gesendet wird und vom ebusd einfach mitgelesen wird.&lt;br /&gt;
*Für unterschiedliche Heizungssysteme werden unterschiedliche CSV-Dateien benötigt. &lt;br /&gt;
Für die Übersetzung der binären Daten in den Klartext ist es notwendig die entsprechenden Konfigurationsdateien(CSV-Files) zu installieren.&lt;br /&gt;
Den aktuellen Stand dieser Dateien findet ihr im [https://github.com/john30/ebusd-configuration/releases GIT von John].&lt;br /&gt;
&lt;br /&gt;
Desweiteren kann der eBusd gestartet werden, und zwar mit den Optionen -f (läuft im Vordergrund) und --loglevel debug (alles wird geloggt). Diese Optionen produzieren Unmengen an Daten und damit werden auch alle empfangenen Telegramme protokolliert, z.B.  &lt;br /&gt;
 10feb5160301f00d44&lt;br /&gt;
Hierin bedeutet&lt;br /&gt;
{|&lt;br /&gt;
|Byte&lt;br /&gt;
|Bedeutung&lt;br /&gt;
|hier&lt;br /&gt;
|-&lt;br /&gt;
|0x10&lt;br /&gt;
|Adresse des Senders&lt;br /&gt;
|Zentrale&lt;br /&gt;
|-&lt;br /&gt;
|0xfe&lt;br /&gt;
|Adresse des Empfängers&lt;br /&gt;
|Alle Geräte&lt;br /&gt;
|-&lt;br /&gt;
|0xb5&lt;br /&gt;
|Herstellercode&lt;br /&gt;
|Vaillant&lt;br /&gt;
|-&lt;br /&gt;
|0x16&lt;br /&gt;
|Klasse des Kommandos&lt;br /&gt;
|Broadcast&lt;br /&gt;
|-&lt;br /&gt;
|0x03&lt;br /&gt;
|Anzahl Datenbytes&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|0x01&lt;br /&gt;
|Bedeutung des Wertes&lt;br /&gt;
|outsidetemp = Außentemperatur&lt;br /&gt;
|-&lt;br /&gt;
|0xf0&lt;br /&gt;
|LSB des Wertes&lt;br /&gt;
|240&lt;br /&gt;
|-&lt;br /&gt;
|0x0d&lt;br /&gt;
|MSB des Wertes&lt;br /&gt;
|12&lt;br /&gt;
|-&lt;br /&gt;
|0x44&lt;br /&gt;
|CRC&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
Damit ergibt sich in diesem Falle eine Außentemperatur von (12*256 + 240)/256 = 12,9375 Grad Celsius. In der zugehörigen CSV-Datei wird dem ebusd diese Übersetzung mitgeteilt durch eine Zeile der Form&lt;br /&gt;
 u,broadcast,outsidetemp,Außentemperatur,,FE,B516,01,temp2,m,D2B,,°C,Temperatur&lt;br /&gt;
Diese CSV-Dateien können z.B. mit OpenOffice aus einem Spreadsheet generiert werden, indem dieses als CSV-Datei mit Separator &amp;quot;,&amp;quot; gespeichert wird. &lt;br /&gt;
*Bei einem vollkommen unbekannten Heizungssystem sollte man den Hersteller fragen, welche Codes er verwendet&lt;br /&gt;
*Für Vaillant- und Wolf- Heizungssysteme liegen in dem oben genannten Verzeichnis ein paar Beispiele vor, die man als Ausgangspunkt nehmen kann.&lt;br /&gt;
&lt;br /&gt;
==Serieller Konverter==&lt;br /&gt;
&lt;br /&gt;
[[Datei:EBUS_RS232_Konverter.png|thumb|left|alt=eBus Platine]]&lt;br /&gt;
Es hat sich als nicht praktikabel erwiesen, den eBus mit einem Pegelwandler direkt an den seriellen GPIO-Port des Raspberry Pi anzuschließen. Die ständig einlaufenden Synchronisationssignale auf dem eBus, sowie die interne Verarbeitung der GPIO-Signale im Raspberry führen zu einer intolerablen Latenz, d.h., die eBus-Signale kommen verspätet bei der Software eBusd an (bis zu 90 Minuten wurden beobachtet). Stattdessen sollte grundsätzlich ein Seriell-USB-Konverter verwendet werden und der Raspberry Pi über einen USB-Port mit dem eBus verbunden werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==USB Device und Port unter Linux ermitteln==&lt;br /&gt;
&lt;br /&gt;
Die einfachste Art den USB Device zu ermitteln erfolgt direkt am Raspberry Pi mit dem Befehl &amp;quot;lsusb&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 pi@raspberry2 ~ $ lsusb&lt;br /&gt;
 Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.&lt;br /&gt;
 Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub&lt;br /&gt;
 Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.&lt;br /&gt;
 Bus 001 Device 004: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC&lt;br /&gt;
&lt;br /&gt;
in diesem Beispiel ist das der Device 004, dieser FT232 lauscht am eBus und ist mit dem eBus-Konverter verbunden.&lt;br /&gt;
&lt;br /&gt;
Der USB Port kann mit der folgenden Kommandozeile ermittelt werden:&lt;br /&gt;
 sudo dmesg | grep -i tty&lt;br /&gt;
Die Ausgabe sieht wie folgt aus:&lt;br /&gt;
 [553999.530995] usb 1-1.3: FTDI USB Serial Device converter now attached to &#039;&#039;&#039;ttyUSB0&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==eBusd==&lt;br /&gt;
===Prüfen der eBusd Konfigurationsdateien===&lt;br /&gt;
Mit dem Parameter &amp;quot;&#039;&#039;&#039;--checkconfig --scanconfig&#039;&#039;&#039;&amp;quot; kann die Installation der benutzten CSV Dateien am Raspberyy Pi überprüft werden. Vor allem wird hier angezeigt wieviele Messages übersetzt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
pi@raspberry2 ~ $ ebusd --checkconfig --scanconfig&lt;br /&gt;
2016-01-22 17:14:12.619 [main notice] Performing configuration check...&lt;br /&gt;
2016-01-22 17:14:19.336 [main notice] found messages: 4440 (416 conditional on 89 conditions, 2 poll, 64 update)&lt;br /&gt;
&lt;br /&gt;
pi@raspberry2 ~ $ ebusctl info&lt;br /&gt;
version: ebusd 2.0.0ea7efc&lt;br /&gt;
signal: acquired&lt;br /&gt;
symbol rate: 24&lt;br /&gt;
masters: 3&lt;br /&gt;
messages: 426&lt;br /&gt;
address 03: master #3&lt;br /&gt;
address 08: slave #3, scanned &amp;quot;MF=Vaillant;ID=BAI00;SW=0518;HW=7401&amp;quot;, loaded  &amp;quot;vaillant/08.bai.HW7401.csv&amp;quot;&lt;br /&gt;
address 10: master #6&lt;br /&gt;
address 15: slave #6, scanned &amp;quot;MF=Vaillant;ID=43000;SW=0215;HW=2002&amp;quot;, loaded &amp;quot;vaillant/15.430.csv&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Info hingegen zeigt genau welche CSV Dateien geladen worden sind und ihre Soft- und Hardewareversion.&lt;br /&gt;
&lt;br /&gt;
===Bedeutung von &amp;quot;unknown MS&amp;quot; in der eBusd Logdatei===&lt;br /&gt;
Der Autor des eBus Dämons ist ständig bemüht die Geräte der unterschiedlichen Hersteller alle zu erfassen und so die Konfigurationsdateien zu ergänzen. Je nach Hard- und Softwarekonfiguration können  Broadcast Meldungen vom eBus kommen die in der _broadcast.csv noch nicht übersetzt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
2015-12-30 21:48:57.662 [update notice] unknown MS cmd: 1008b5110101 / 09404210004a620000ff&lt;br /&gt;
2015-12-30 21:48:59.670 [update notice] unknown BC cmd: 10feb516080001492130120315&lt;br /&gt;
2015-12-30 21:48:59.923 [update notice] unknown MS cmd: 1008b512020064 / 00&lt;br /&gt;
2015-12-30 21:49:01.711 [update notice] unknown MS cmd: 1008b5100900003c7affff00ff00 / 0101&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Meldungen haben in der Regel für den weiteren Verlauf der Kommunikation über den eBus keinen Einfluß und ist keine Fehlfunktion der Schaltung oder Platine!&lt;br /&gt;
&lt;br /&gt;
===Bedeutung von &amp;quot;signal lost&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
pi@raspberrypi /etc/init.d $ sudo ebusd -f -c /tmp --logareas bus --loglevel info -d /dev/ttyUSB0&lt;br /&gt;
2016-01-18 22:38:56.348 [bus notice] signal acquired&lt;br /&gt;
2016-01-18 22:38:56.477 [bus notice] new master 10, master count 2&lt;br /&gt;
2016-01-18 22:38:56.481 [bus notice] new master 3f, master count 3&lt;br /&gt;
2016-01-18 22:39:02.051 [bus error] signal lost&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei dieser Meldung verliert der USB Konverter nach 20-Sekunden die Verbindung zum Raspberry Pi und produziert dann den Logeintrag.&lt;br /&gt;
{{Link2Forum|Topic=46098|Message=394313|LinkText=Lösungvorschlag}}&lt;br /&gt;
&lt;br /&gt;
===ERR: unable to load===&lt;br /&gt;
&lt;br /&gt;
 2016-01-17 19:04:03.961 [main error] unable to load scan config 08: no file from /etc/ebusd/vaillant with prefix 08. matches ID &amp;quot;bai00&amp;quot;, SW0604, HW5502&lt;br /&gt;
&lt;br /&gt;
Ebusd wird gestartet, findet aber ein Konfigurations File (CSV) nicht.&lt;br /&gt;
&lt;br /&gt;
Die eBusd Konfigurationsdateien könne nach [[#eBusd Konfigurationsdateien (CSV-Files)|diesem]] Vorgehen installiert werden.&lt;br /&gt;
Die Konfigurationsdateien aus dem Git neu laden und installieren.&lt;br /&gt;
{{Link2Forum|Topic=46098|Message=394270|LinkText=Lösungvorschlag}}&lt;br /&gt;
&lt;br /&gt;
===ERR: duplicate Entry===&lt;br /&gt;
&lt;br /&gt;
===ERR: End of input reached===&lt;br /&gt;
&lt;br /&gt;
Die CSV Dateien wurden [http://forum.fhem.de/index.php/topic,46098.msg383450/topicseen.html#msg383450 fehlerhaft installiert] oder sind defekt!&lt;br /&gt;
Eine Neuinstallation dieser Dateien ist erforderlich!&lt;br /&gt;
&lt;br /&gt;
 Error reading &amp;quot;/etc/ebusd/vaillant/05.vd3.csv&amp;quot; line 1 field 1 value &amp;quot;05.vd4.csv&amp;quot;: ERR: end of input reached&lt;br /&gt;
 Erroneous item is here:&lt;br /&gt;
 05.vd4.csv&lt;br /&gt;
  ^&lt;br /&gt;
 Error reading &amp;quot;/etc/ebusd/vaillant/15.hep.csv&amp;quot; line 1 field 1 value &amp;quot;15.sdr_p.csv&amp;quot;: ERR: end of input reached&lt;br /&gt;
 Erroneous item is here:&lt;br /&gt;
 15.sdr_p.csv&lt;br /&gt;
  ^&lt;br /&gt;
&lt;br /&gt;
===BUS ERR send to 15===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
2016-01-16 19:20:28.575 [bus notice] new master 03, master count 4&lt;br /&gt;
2016-01-16 19:20:28.575 [update notice] unknown MS cmd: 1008b513020508 / 00&lt;br /&gt;
2016-01-16 19:20:29.413 [update notice] unknown MS cmd: 100ab504010d / 054201008037&lt;br /&gt;
2016-01-16 19:20:32.398 [bus error] send to 08: ERR: read timeout, retry&lt;br /&gt;
2016-01-16 19:20:33.005 [bus error] send to 08: ERR: read timeout, retry&lt;br /&gt;
2016-01-16 19:20:33.613 [bus error] send to 08: ERR: read timeout, retry&lt;br /&gt;
2016-01-16 19:20:34.859 [bus error] send to 08: ERR: read timeout&lt;br /&gt;
2016-01-16 19:20:34.859 [main error] scan config 08 message: ERR: read timeout&lt;br /&gt;
2016-01-16 19:20:37.017 [main notice] read common config file /etc/ebusd/vaillant/scan.csv&lt;br /&gt;
2016-01-16 19:20:37.019 [main notice] read common config file /etc/ebusd/vaillant/broadcast.csv&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Fehlermeldung (read timeout) kann verschiedene Ursachen haben, meist liegt der Fehler in einer fehlerhaften Verkabelung.&lt;br /&gt;
{{Link2Forum|Topic=46098|Message=393547|LinkText=Lösungsvorschlag}}&lt;br /&gt;
&lt;br /&gt;
=Systemarchitektur / Systemdesign=&lt;br /&gt;
Es muss sich jeder vorher überlegen, ob man für den eBus einen eigenen Rechner Raspberry Pi nimmt, oder auf der bestehenden FHEM Installation laufen lassen will. Eine Trennung bietet mehrere Vorteile die dann speziell im Testbetrieb den normalen Smart-Home Betrieb nicht beinflussen.&lt;br /&gt;
[[Datei:EBUS_Konfiguration.png|thumb|left|alt=eBus Konfiguration]]&lt;br /&gt;
Hier eine Konfiguration von FHEM und das Zusammenspiel mit eBusd via ECMD. Das soll aber jeder so handhaben wie es am Besten in das eigene Konzept passt.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Werkzeuge / Tools=&lt;br /&gt;
&lt;br /&gt;
==PSPad==&lt;br /&gt;
[http://www.pspad.com/de/ Pspad] ist ein besonders auf Programmierer zugeschnittener unicode-fähiger Editor für Microsoft Windows, welcher in der Lage ist auch per FTP die Dateien direkt zu editieren und zu schreiben ohne den Umweg sie vorher kopieren zu müssen! Besonders wichtig ist neben einem Syntaxhighlighter das er Linuxkonform ist und die Steuerzeichen am Zeilenende richtig interpretiert.&lt;br /&gt;
&lt;br /&gt;
Hier zwei wichtige Infos zur Einrichtung des PSPad.&lt;br /&gt;
&lt;br /&gt;
[[Datei:EBUS_PSPad_FTP.png|thumb|left|alt=eBus Platine]]&lt;br /&gt;
&lt;br /&gt;
Im Tab &amp;quot;&#039;&#039;&#039;FTP&#039;&#039;&#039;&amp;quot; unten mit der rechten Maustaste auf die weiße Fläche klicken und in dem neu geöffneten Fenster &amp;quot;FTP verbinden&amp;quot; wählen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:EBUS_PSPad_FTP2.png|thumb|left|alt=eBus Platine]]&lt;br /&gt;
Es öffnet sich ein Fenster mit den Verbindungsdaten des FTP Servers. Nicht vergessen, das unten markierte Häckchen &amp;quot;&#039;&#039;&#039;Verbindung halten&#039;&#039;&#039; ...&amp;quot; zu markieren. Es wird dann alle 60 Sekunden ein NOOP Signal gesendet und die Verbindung wird nach einem Timeout nicht jedes Mal beendet.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Filezilla==&lt;br /&gt;
Ebenso wie PSPad wird es für viele Arbeiten am Raspberry und eBusd eine Erleichterung sein manche Dateien direkt zu kopieren oder am PC zu sichern.&lt;br /&gt;
[https://filezilla-project.org/ Filezilla] beherrscht ebenfalls das &#039;&#039;&#039;FTP Protokoll&#039;&#039;&#039; und speichert die Verbindungsdaten in einem Profil.&lt;br /&gt;
&lt;br /&gt;
[[Datei:EBUS_Filezilla_FTP.png|thumb|left|alt=eBus Platine]]&lt;br /&gt;
Links oben öffnet man den Servermanager und wählt (links unten) &amp;quot;neuer Server&amp;quot;. Man gibt die Verbindungsdaten des Raspberry ein und drückt &amp;quot;speichern&amp;quot;. Das Verbindungs Profil steht nun im Servermanager als &amp;quot;Raspberry&amp;quot; zur Verfügung und die Verbindung kann nun mit einem Doppelklick geöffnet werden. Dateien können nun durch einfaches Drag &amp;amp; Drop zwischen linken (lokales Laufwerk am PC) und rechten Dateifenster (in diesem Fall Raspberry) bequem kopiert werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Putty==&lt;br /&gt;
[http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html PuTTY] ist ein SSH Client welcher neben Secure Shell auch Telnet, Remote login und eine serielle Schnittstelle enthält. Als Tipp sei hier erwähnt, dass hier einige sehr nützliche Features zur Verfügung stehen:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;rechte Maustaste&#039;&#039;&#039; = Zwischenablage wird ins Terminalfenster kopiert &lt;br /&gt;
* &#039;&#039;&#039;Text mit Maus markieren&#039;&#039;&#039; = in Zwischenablage kopieren&lt;br /&gt;
* &#039;&#039;&#039;Pfeiltasten Auf/Ab&#039;&#039;&#039; = die letzten Befehle wiederholen, durch die Liste steppen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:EBUS_Putty.png|thumb|left|alt=eBus Platine]]&lt;br /&gt;
Ebenso können mit Putty mehrere Terminalfenster parallel geöffnet werden. Diese Methode ist bei der Kalibrierung des Potis im Raw-Modus sehr von Vorteil.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Weiterführende Links=&lt;br /&gt;
Diskussionsthread aus dem Forum:&lt;br /&gt;
*{{Link2Forum|Topic=46098|LinkText=eBus Schaltung in Betrieb nehmen!}}&lt;br /&gt;
*{{Link2Forum|Topic=29737|LinkText=Läuft: Heizung mit eBus-Schnittstelle}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:Heizungssteuerung]]&lt;br /&gt;
[[Kategorie:Interfaces]]&lt;/div&gt;</summary>
		<author><name>Reinhart</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Sonoff&amp;diff=22471</id>
		<title>Sonoff</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Sonoff&amp;diff=22471"/>
		<updated>2017-09-03T07:57:06Z</updated>

		<summary type="html">&lt;p&gt;Reinhart: Beispiele an Tasmota 5.x angepasst&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=Ankopplung der Sonoff Module an Fhem&lt;br /&gt;
|ModType=&lt;br /&gt;
|ModForumArea=ESP8266&lt;br /&gt;
|ModTechName=Sonoff&lt;br /&gt;
|ModOwner=Reinhart &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Einleitung&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die [https://www.itead.cc/sonoff-wifi-wireless-switch.html Fa. Itead] bietet kostengünstige &amp;quot;Sonoff&amp;quot; Produkte an, die den [http://dl.itead.cc/IM151116002/0A-ESP8266_Specifications_v4.1.pdf ESP8266 Chip] On Board haben und somit die ideale Grundlage für [http://www.esp8266.nu/index.php/Main_Page ESPEasy] und für [https://forum.fhem.de/index.php/board,46.0.html FHEM] darstellen. Unverändert nutzen diese Geräte allerdings eine in China basierende Cloudlösung und müssen für die Benutzung in FHEM umgeflasht werden. Dieser Artikel beschreibt die Ankopplung der Sonoff Module an FHEM mit ESPEasy oder (Arends) [[MQTT Einführung|MQTT]] mit Tamota. Hierbei sind Grundkenntnisse beim arduino (um die Firmware neu zu flashen) sowie im Umgang mit 230V notwendig.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bitte unbedingt die elektrotechnischen Sicherheitsrichtlinien beachten und einhalten!&#039;&#039;&#039;&lt;br /&gt;
[[Datei:sonoff_sw_15.jpg|thumb|left|alt=Warnung Netzspannung]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Achtung: An dem Modul liegt Netzspannung an, die lebensgefährlich ist. Es dürfen nur entsprechend ausgebildete Personen dieses Modul in Betrieb nehmen. Zum Umbau und zur Softwareaktualisierung darf keine Netzspannung angeschlossen sein&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Wie gefährlich das hantieren mit Netzspannung sein kann, zeigt das Beispiel eines [http://mysku.ru/blog/china-stores/45762.html russischen Anwenders]. Er hat beim Flashen die Netzspannung am Modul gelassen und somit (über die Verbindung mit dem Netzteil des Laptops) lebensgefährliche Spannung auf die FTDI Schnittstelle gebracht. Das Modul ist dabei abgeraucht!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Links des Herstellers&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://www.itead.cc/blog/user-guide-for-sonoff-slampher User Manual von Itead]&lt;br /&gt;
&lt;br /&gt;
[https://www.itead.cc/wiki/images/6/6b/Sonoff_schmatic.pdf Sonoff Schaltplan]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Modelle (mit Produktübersicht) ==&lt;br /&gt;
&lt;br /&gt;
Eine Übersichtliste der verschiedenen Produkte mit technischen Kurzangaben.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:right&amp;quot;&lt;br /&gt;
! Produkt Name !! Beschreibung !! Spannungsversorgung !!  Imax !! Pmax !! Frequenz !! Schaltplan !! Link&lt;br /&gt;
|-&lt;br /&gt;
| Sonoff || WWW-Schalter || 90~250V AC || 10A || 2200W || 2.4Ghz || [http://wiki.iteadstudio.com/Sonoff Plan] || [https://www.itead.cc/smart-home/sonoff-wifi-wireless-switch.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| Sonoff RF || 433 MHz Fernbed. || 90~250V AC || 10A || 2200W || 2.4Ghz || [http://wiki.iteadstudio.com/Sonoff_RF Plan] || [https://www.itead.cc/smart-home/im151116003.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| Sonoff SV || Niederspannungsschalter|| 5~24V DC || 10A || 240W DC || 2.4Ghz || [http://wiki.iteadstudio.com/Sonoff_SV Plan] || [https://www.itead.cc/smart-home/sonoff-sv.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| Sonoff TH10/TH16 || WWW-Schalter mit Temp.&amp;amp;Luftf. ||  90~250V AC || 10A/16A || 2200W(10A)/3500W(16A)	 || 2.4Ghz || [http://wiki.iteadstudio.com/Sonoff_TH_10/16 Plan] || [https://www.itead.cc/smart-home/sonoff-th.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Sonoff Dual || Doppel-WWW-Schalter ||  90~250V AC || 16A || 3500W || 2.4Ghz || [https://www.itead.cc/wiki/Sonoff_Dual Plan] || [https://www.itead.cc/sonoff-dual.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Sonoff Pow || WWW-Schalter und Strommessgerät ||  90~250V AC || 16A || 3500W || 2.4Ghz || [https://www.itead.cc/wiki/Sonoff_Pow Plan] || [https://www.itead.cc/sonoff-pow.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Sonoff LED || WWW-LED-Dimmer ||  180~265V AC || 0.3-0.6A || 42W || 2.4Ghz ||  kein || [https://www.itead.cc/sonoff-led.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Sonoff Touch || WWW-Wandschalter ||  90~250V AC || 2A || 400W || 2.4Ghz || kein || [https://www.itead.cc/sonoff-touch.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Slampher || WWW-433MHz-Lichtfassung ||  90~250V AC || 2A || 200W || 2.4Ghz || [http://wiki.iteadstudio.com/Slampher Plan] || [https://www.itead.cc/smart-home/slampher-wifi-wireless-light-holder.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  S20 Smart Socket || Smart socket || 	90~250V AC || 10A || 2000W || 2.4Ghz || kein || [https://www.itead.cc/smart-home/smart-socket-eu.html EU-Stecker] &lt;br /&gt;
|-&lt;br /&gt;
|  iFan || Smart Lüfter ||  185~264V AC ||﹤1A || 60W || 2.4Ghz || kein || [https://www.itead.cc/smart-home/smart-socket-eu.html EU-Stecker] &lt;br /&gt;
|-&lt;br /&gt;
| Motor/Pump Control Switch || clockwise/anticlockwise running ||  5V/7~32V DC || 10A || 50~320W || 2.4Ghz || kein || [https://www.itead.cc/smart-home/motor-reversing-wifi-wireless-switch.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| 1 Chnl Inching/self-locking Switch || Access control ||  	5V/12V DC || 10A || 50/120W || 2.4Ghz || kein || [https://www.itead.cc/smart-home/inching-self-locking-wifi-wireless-switch.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  4 Chnl Inching/self-locking/inter-locking Switch || Access control, rolling door control ||  5V/5~32V DC/90~250V AC || 10A || 50~320W/2500W || 2.4Ghz || kein || [https://www.itead.cc/ifan.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Model IM151116002: Erstes Modell===&lt;br /&gt;
Link zum Hersteller: [https://www.itead.cc/sonoff-wifi-wireless-switch.html Sonoff WiFi Wireless Smart Switch for MQTT COAP Smart Home]&lt;br /&gt;
[[Datei:sonoff_sw_0.jpg|thumb|left|alt=sonoff Switch]]&lt;br /&gt;
&lt;br /&gt;
Das sonoff Modul ist in einem zweckmäßigen Gehäuse verbaut.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_1.jpg|thumb|left|alt=sonoff Switch von vorne]]&lt;br /&gt;
&lt;br /&gt;
Die Platine ist sehr übersichtlich aufgebaut und der Hersteller hat zudem Vorbereitungen zum Flashen einer alternativen Software vorgesehen (über serielle Schnittstelle via FTDI-Modul). Mit einer alternativen Software wie ESPEasy kann &#039;&#039;&#039;sonoff&#039;&#039;&#039; an FHEM leicht angebunden werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_3.jpg|thumb|left|alt=sonoff Switch von hinten]]&lt;br /&gt;
Die stromführenden Leitungen wurden mit Lötzinn vom Hersteller verstärkt um die angegebenen Stromstärken mit geringer Hitzeentwicklung zu transportieren.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung: Bitte vor den Arbeiten kontrollieren, das an der Platine keine Netzspannung angeschlossen ist, LEBENSGEFAHR!&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Model IM160712005: TH 10A/16A ===&lt;br /&gt;
Link zum Hersteller: [https://www.itead.cc/sonoff-th.html Sonoff TH 10A/16A WiFi Smart Switch]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sonoff_TH_10A-16A_kleiner.jpg|thumb|left|alt=TH10 / TH16 weitere GPIO zugänglich machen]]&lt;br /&gt;
Der Hersteller hat eine Platine für eine weitere Stiftleiste vorbereitet, die jedoch bestückt werden muss. Die nicht beschalteten Stifte können dann genutzt werden, um die &amp;quot;verdeckten&amp;quot; GPIO zugänglich zu machen. Die Verdrahtung kann dem Bild entnommen werden.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Achtung: Bitte vor den Arbeiten kontrollieren, das an der Platine keine Netzspannung angeschlossen ist, LEBENSGEFAHR!&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Model IM160811001: Sonoff Dual ===&lt;br /&gt;
Link zum Hersteller: [https://www.itead.cc/sonoff-dual.html Sonoff Dual WiFi Wireless Smart Swtich]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Model IM160810001: Sonoff Pow ===&lt;br /&gt;
Link zum Hersteller: [https://www.itead.cc/sonoff-pow.html Sonoff POW WiFi Switch with Power Consumption Measurement]&lt;br /&gt;
[[Datei:sonoff_sw_30.jpg|thumb|left|alt=SONOFF POW]]Ein sehr interessantes und kostengünstiges Modul zur Messung der aktuellen Leistung. Das Modul kann via MQTT in FHEM angebunden werden. Ein Beispiel zur Einbindung ist [http://www.fhemwiki.de/wiki/Sonoff#Sonoff_POW_einrichten unten] im Wiki beschrieben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===weitere Modelle===&lt;br /&gt;
Weitere Modelle finden sich auf der [https://www.itead.cc/search/result/?cat=&amp;amp;q=sonoff  Homepage des Hersstellers]&lt;br /&gt;
&lt;br /&gt;
=Neuprogrammierung der Sonoff-Modelle=&lt;br /&gt;
==Einleitung: Welche Firmware? ==&lt;br /&gt;
===Übersicht===&lt;br /&gt;
Vorab: Es gibt derzeit (August 2017) zwei Möglichkeiten, die Geräte von Sonoff mit eigener Firmware zu versehen. Entweder man verwendet MQTT gemeinsam mit TASMOTA oder man verwendet ESPEasy. Beide Firmware-Produkte werden derzeit weiterentwickelt. Es scheint so zu sein, dass bei den POW-Geräten die Sensoren nicht korrekt erkannt werden und sich dort MQTT anbietet. Jedoch sollte in den Foren geprüft werden, ob diese eindeutige Präferenz durch Weiterentwicklung noch aufrecht erhalten werden kann.&lt;br /&gt;
&lt;br /&gt;
Der Autor Arends hat die Version Sonoff-MQTT-OTA-Arduino eingestellt und die Version 3.2.13 (Ende Jänner 2017) dürfte wohl die letzte dieser Generation gewesen sein. Mit der Einstellung dieser Version wurde zwar der Nachfolger TASMOTA erschaffen, aber leider nun auf das Messageformat LEGACY gänzlich verzichtet, was bei der Auswertung der Messdaten in Fhem doch einige Probleme mit sich bringt (der verwendete JSON String muss zusätzlich gefiltert werden). Es gibt aber bereits sehr gute Lösungswege um dieses Problem zu beheben: {{Link2Forum|Topic=66761|LinkText=In diesem Thread}} wurde ein &#039;&#039;JSON to Reading Modul&#039;&#039; vorgestellt, dass den JSON String analysiert und alle darin enthaltenen Daten in Readings kopiert. Die Readings werden dabei in FHEM automatisch angelegt.&lt;br /&gt;
&lt;br /&gt;
Link frühere Software: [https://github.com/arendst/Sonoff-MQTT-OTA-Arduino Sonoff-MQTT-OTA-Arduino]&lt;br /&gt;
&lt;br /&gt;
===Stromversorgung===&lt;br /&gt;
&lt;br /&gt;
Während des Flashvorganges benötigt das Sonoff-Modul eine Stromversorgung. Dabei darf unter keinen Umständen die Netzspannung von 230V verwendet werden. Selbst die 5V aus einem USB-Anschluss sind zu hoch, da das Modul sonst Gefahr läuft unbrauchbar zu werden. Es sind ausschließlich 3.3V zu verwenden. &lt;br /&gt;
&lt;br /&gt;
Der FTDI Chip kann laut Datenblatt höchstens 50 mA liefern, das ESP Modul zieht aber bis zu 300 mA Spitzenstrom und verbraucht schon im normalen Modus ca. 50-70 mA. Die einfachen FTDI Adapter ohne separaten Spannungsregler sind damit als 3.3 Volt Versorgung beim Flashen ungeeignet. Es ist am besten, wenn das Sonoff Modul mit einer separaten Stromversorgung von 3.3 Volt (bei ausreichender Last von bis zu 300 mA) versorgt wird. &lt;br /&gt;
&lt;br /&gt;
Achtung! Es kann sein, dass der Flashvorgang ohne Fehler läuft, der Flash aber anschließend korrupt ist und das Modul unklares Verhalten zeigt. In dem Fall die Spannungsversorgung 3.3 Volt prüfen! Auch das USB Kabel kann eine Fehlerursache sein.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Schnittstelle ===&lt;br /&gt;
[[Datei:sonoff_sw_2.jpg|thumb|left|alt=serielle Schnittstelle]]&lt;br /&gt;
&lt;br /&gt;
Die abgebildete Platine zeigt die benötigten Signale für ein FTDI Modul (Model: IM151116002).&lt;br /&gt;
&lt;br /&gt;
 Pin5 = vorbereitet für GPIO&lt;br /&gt;
 Pin4 = Masse&lt;br /&gt;
 Pin3 = TxD&lt;br /&gt;
 Pin2 = RxD&lt;br /&gt;
 Pin1 = 3.3V&lt;br /&gt;
&lt;br /&gt;
Siehe dazu auch den {{Link2Forum|Topic=55036|LinkText=Link aus dem Forum}}:&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_4.jpg|thumb|left|alt=Platine mit Stiftleiste bestücken]]&lt;br /&gt;
Der Hersteller hat zwar die Platine vorbereitet, diese muss jedoch mit einer Stiftleiste bestückt werden, um das FTDI Modul bequem verbinden zu können. Die Stiftleiste muss allerdings selber nachgerüstet werden. Nachdem das ESPEasy zum ersten Mal geflasht wurde, kann es in Zukunft via WEB (OTA) geflasht werden und die Stiftleiste ist dann eigentlich nicht mehr erforderlich. &amp;lt;br&amp;gt;&lt;br /&gt;
Für die Module TH10/TH16 sind die Lötpunkte für die Stiftleiste schon beschriftet. &lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Achtung: Bitte vor den Arbeiten kontrollieren, das an der Platine keine Netzspannung angeschlossen ist, LEBENSGEFAHR!&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Arduino als USB-TTL ===&lt;br /&gt;
&lt;br /&gt;
Sollte kein USB-TTL-Adapter vorhanden sein, kann man zum flashen auch einen arduino &amp;quot;missbrauchen&amp;quot;. Dazu wird RESET und GND verbunden, siehe [http://www.instructables.com/id/Turn-Arduino-into-USB-to-TTL-Adapter-with-1-wire/ diese Webseite]. Der Vorteil dieser Lösung besteht darin, dass die PINS für 5V und 3.3V deutlich voneinander getrennt sind.&lt;br /&gt;
&lt;br /&gt;
===Fehlermeldungen ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:FehlersucheHochladen.png|thumb|left|alt=Fehlersuche aktivieren]]&lt;br /&gt;
Eine sehr typische Fehlermeldung während des Flashvorganges ist &lt;br /&gt;
 warning: espcomm_sync failed&lt;br /&gt;
 error: espcomm_open failed&lt;br /&gt;
 error: espcomm_upload_mem failed&lt;br /&gt;
Das tückische an dieser Fehlermeldung ist, dass sie nahezu keine Hinweise darauf gibt, weshalb der upload fehlgeschlagen ist. In sehr vielen Fällen können die Fehler auf ganz klassische Probleme zurückgeführt werden: so wurde Tx beim Chip nicht mit Rx, sondern wieder Tx beim arduino verbunden oder es wurde der falsche COM-Port ausgewählt, der falsche Uploader etc pp. Die arduino-IDE erlaubt es, genaue Angaben beim Hochladen auszulesen (siehe Screenshot oben, Haken bei &amp;quot;Hochladen&amp;quot;). Ohne diese Angaben ist eine Fehlersuche typischerweise aussichtslos.&lt;br /&gt;
&lt;br /&gt;
==MQTT und TASMOTA==&lt;br /&gt;
&lt;br /&gt;
TASMOTA verlangt vorab die Installation eines MQTT-Brokers (idealerweise auf dem Raspberry). Auf der Webseite [https://waschto.eu/sonoff-funkschalter-auf-esp8266-basis] ist die Installation sehr ausführlich beschrieben - bis hin zum Flashen des Sonoff-Gerätes. Insbesondere die Einrichtung der Ardunio-Umgebung und das Flashen selbst setzt einige Grundkenntnisse in Linux und arduino-Programmierung voraus, da sich mit den neuen Updates Verzeichnis- und Dateinamen geändert haben und diverse Dateien verschoben und umbenannt werden müssen.  &lt;br /&gt;
&lt;br /&gt;
In diesem Wiki befindet sich eine Kurzeinführung zur Installation eines MQTT-Brokers auf der Wiki-Seite von [[MQTT_Einf%C3%BChrung]]. &lt;br /&gt;
&lt;br /&gt;
Link: [https://github.com/arendst/Sonoff-Tasmota Tasmota]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Flashen mit Arends Sketch===&lt;br /&gt;
Die Einrichtung des Arduino-Sketches ist keine leichte Fingerübung, da sich diverse Dateinamen und Speicherorte mit updates gegenüber den hier und in anderen Beschreibungen genannten geändert haben können (und werden...). Es wird auf die sehr  [https://waschto.eu/sonoff-funkschalter-auf-esp8266-basis umfangreiche Erläuterung von waschto.eu] verwiesen, wobei einige weitere (kleinere) Änderungen auch dort nicht dokumentiert sind, sich aber aus dem Sinnzusammenhang der Fehlermeldungen erschließen lassen. Alle hier gezeigten Bildschirmfotos und Beispiele beziehen sich auf Basis der Version Tasmota (Stand 22.02.2017).&lt;br /&gt;
&lt;br /&gt;
Der Sketch kann hier [https://github.com/arendst/Sonoff-Tasmota.git geladen werden.]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/arendst/Sonoff-Tasmota Arends Tasmota Github]&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_bv_01.jpg|thumb|left|alt=Arduino Boardverwalter]]&lt;br /&gt;
In der Arduino IDE unter Datei / Voreinstellungen im Feld &amp;quot;Zusätzliche Boardverwalter-URLs:&amp;quot; den Link: http://arduino.esp8266.com/stable/package_esp8266com_index.json einfügen. &lt;br /&gt;
&lt;br /&gt;
Dann unter &#039;&#039;&#039;Werkzeuge / Board / Boardverwalter&#039;&#039;&#039; ganz am Ende der Liste die Librarys für &amp;quot;esp8266 by ESP8266 Community&amp;quot; die letzte Version zu installieren. {{Link2Forum|Topic=46205|Message=534707|LinkText=Link zum Board}}.&lt;br /&gt;
Im Tasmota Verzeichnis \lib werden auch die zum kompilieren benötigten Librarys zur Verfügung gestellt.&lt;br /&gt;
&lt;br /&gt;
Das gesamte Sonoff Verzeichnis aus [https://github.com/arendst/Sonoff-Tasmota/archive/master.zip Arendts Sketch] entpacken (ist wie hier verlinkt ein Zipfile) und dann aus diesem Verzeichnis die sonoff.ino öffnen. Es können dann alle zu dem Sketch zugehörigen Dateien angesehen/editiert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Anschließend sollte noch die Datei &#039;&#039;&#039;user_config.h&#039;&#039;&#039; (im Unterverzeichnis &amp;quot;sonoff&amp;quot;) editiert werden. Die Abschnitte          &lt;br /&gt;
&lt;br /&gt;
 // Wifi&lt;br /&gt;
 // Syslog&lt;br /&gt;
 // Ota&lt;br /&gt;
 // MQTT&lt;br /&gt;
&lt;br /&gt;
müssen mit der eigenen &amp;quot;&#039;&#039;&#039;Ip-Adresse-Server&#039;&#039;&#039;&amp;quot;, &amp;quot;&#039;&#039;&#039;SSID&#039;&#039;&#039;&amp;quot; und &amp;quot;&#039;&#039;&#039;password&#039;&#039;&#039;&amp;quot; angepasst werden, das erleichtert den ersten Connect mit dem Modul. Seit der Version 2.1.2 können die WIFI Einstellungen 2-fach angegeben werden, somit wechselt das Device automatisch auf den 2. Wifi Hotspot wenn der erste nicht erreicht wird.&lt;br /&gt;
&lt;br /&gt;
 #define STA_SSID               &amp;quot;SSID&amp;quot;      // Wifi SSID&lt;br /&gt;
 #define STA_PASS               &amp;quot;password&amp;quot;  // Wifi password&lt;br /&gt;
 #define WIFI_HOSTNAME          &amp;quot;%s-%04d&amp;quot;         // Expands to &amp;lt;MQTT_TOPIC&amp;gt;-&amp;lt;last 4 decimal chars of MAC address&amp;gt;&lt;br /&gt;
 #define WIFI_CONFIG_TOOL       WIFI_WPSCONFIG    // Default tool if wifi fails to connect (WIFI_SMARTCONFIG, WIFI_MANAGER or WIFI_WPSCONFIG)&lt;br /&gt;
&lt;br /&gt;
 // Syslog&lt;br /&gt;
 #define SYS_LOG_HOST           &amp;quot;Ip-Adresse-Server&amp;quot;&lt;br /&gt;
 #define SYS_LOG_PORT           514&lt;br /&gt;
 #define SYS_LOG_LEVEL          LOG_LEVEL_NONE&lt;br /&gt;
 #define SERIAL_LOG_LEVEL       LOG_LEVEL_INFO&lt;br /&gt;
 #define WEB_LOG_LEVEL          LOG_LEVEL_INFO&lt;br /&gt;
&lt;br /&gt;
 // Ota&lt;br /&gt;
 #if (ARDUINO &amp;gt;= 168)&lt;br /&gt;
  #define OTA_URL              &amp;quot;http://Ip-Adresse-Server:80/api/arduino/&amp;quot; PROJECT &amp;quot;.ino.bin&amp;quot;&lt;br /&gt;
 #else&lt;br /&gt;
  #define OTA_URL              &amp;quot;http://Ip-Adresse-Server:80/api/arduino/&amp;quot; PROJECT &amp;quot;.cpp.bin&amp;quot;&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
 // MQTT&lt;br /&gt;
 #define MQTT_HOST              &amp;quot;Ip-Adresse-Server&amp;quot;&lt;br /&gt;
 #define MQTT_PORT              1883&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wichtig:&#039;&#039;&#039; Im Userprofile des Arduino Kompilers (%userprofile%\Documents\Arduino\libraries\pubsubclient\src\PubSubClient.h) die Max Packet Size auf 512 erhöht werden!&lt;br /&gt;
&lt;br /&gt;
  #define MQTT_MAX_PACKET_SIZE 512&lt;br /&gt;
  #define MQTT_KEEPALIVE 120&lt;br /&gt;
Anpassung der max. Packet Size auf 512 und das Keepalive auf 120&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Anschluß wird der Sketch mit der Arduino IDE (getestet mit 1.6.12) compiliert und die Binary dann exportiert (Sketch / Kompilierte Binärdatei exportieren). Die erzeugte .bin Datei dann mit dem Tool &amp;quot;ESP8266Flasher.exe&amp;quot; flashen, so wie auch bei ESPEasy. Sehr gut funktioniert aud das Esptool. Wer nicht compilieren will, kann auch im Unterverzeichnis ./api/arduino/ die fertige Binary ( sonoff.ino ) benutzen, aber dann ohne Voreinstellung der lokalen IPs.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_22.jpg|thumb|left|alt=Arends Menü]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; sollten Probleme mit dem ersten Login im Webinterface auftreten, hat der Autor vorgesorgt und mit speziellem wiederholten Tastendruck können verschiedene Modi aufgerufen werden: zB: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3 x Taste kurz drücken&#039;&#039;&#039; und eine Smartconfig wird gestartet und die &#039;&#039;&#039;SSID&#039;&#039;&#039; und das &#039;&#039;&#039;Passwort&#039;&#039;&#039; kann über diese [https://play.google.com/store/apps/details?id=com.cmmakerclub.iot.esptouch Android App] eingegeben werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4 x Taste kurz drücken&#039;&#039;&#039; und man bringt den Device in den &#039;&#039;&#039;Access Point Mode&#039;&#039;&#039; mit der IP-Adresse &#039;&#039;&#039;192.168.4.1&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bis zu 7 verschiedene Modi sind möglich, mehr dazu in Arends Wiki.&lt;br /&gt;
&lt;br /&gt;
[https://github.com/arendst/Sonoff-MQTT-OTA-Arduino/wiki/Button-usage Link zum Wiki Arends, Button]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===MQTT testen===&lt;br /&gt;
[[Datei:sonoff_sw_20.jpg|thumb|left|alt=Arends Menü]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nach erfolgtem Flash des Modules kann das Webinterface des Moduls zum ersten Mal aufgerufen werden (im Router nach der IP des Moduls suchen).&lt;br /&gt;
&lt;br /&gt;
Es bieten sich hier mehrere Möglichkeiten die die weitere Einrichtung des Moduls unterstützen. Einfach die Menüpunkte durchprobieren, sie erklären sich von selbst. Für erste Tests empfiehlt sich die lokale Konsole um die Ereignisse aus Sicht des Modules mit verfolgen zu können. Alles was hier gesendet wird, sollte ebenfalls am Server mitgeloggt werden können. Wenn bis hierher alles funktioniert, kann dann mir der Konfiguration in FHEM beginnen.&lt;br /&gt;
&lt;br /&gt;
Der Name des Moduls kann unter &amp;quot;Configuration&amp;quot; -&amp;gt; &amp;quot;Configure MQTT&amp;quot; -&amp;gt; &amp;quot;Topic (sonoff)&amp;quot; nachgeschaut und geändert werden. In FHEM wird beim definieren des Moduls dieser Name in den subscribeReadings bzw. publishSets eingegeben um die Verbindung zum Modul herzustellen.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Am Server jetzt eine Konsole öffnen und folgende Topic (alle) einstellen.&lt;br /&gt;
&lt;br /&gt;
 mosquitto_sub -d -v -t \# &lt;br /&gt;
Mit dieser Einstellung werden alle Topics geloggt! &lt;br /&gt;
&lt;br /&gt;
 pi@raspberry ~ $ mosquitto_sub -d -v -t \#&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff_dht/DHT/TEMPERATURE&#039;, ... (6 bytes))&lt;br /&gt;
 tele/sonoff_dht/DHT/TEMPERATURE 21.8 C&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff_dht/DHT/HUMIDITY&#039;, ... (6 bytes))&lt;br /&gt;
 tele/sonoff_dht/DHT/HUMIDITY 41.7 %&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff_dht/TIME&#039;, ... (19 bytes))&lt;br /&gt;
 tele/sonoff_dht/TIME 2017-02-22T16:05:43&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow3/STATE&#039;, ... (104 bytes))&lt;br /&gt;
 tele/sonoffpow3/STATE {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:05:44&amp;quot;, &amp;quot;Uptime&amp;quot;:100, &amp;quot;LIGHT&amp;quot;:&amp;quot;ON&amp;quot;, &amp;quot;Wifi&amp;quot;:{&amp;quot;AP&amp;quot;:2, &amp;quot;SSID&amp;quot;:&amp;quot;Pergola&amp;quot;, &amp;quot;RSSI&amp;quot;:96}}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow3/ENERGY&#039;, ... (134 bytes))&lt;br /&gt;
 tele/sonoffpow3/ENERGY {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:05:44&amp;quot;, &amp;quot;Yesterday&amp;quot;:0.083, &amp;quot;Today&amp;quot;:0.055, &amp;quot;Period&amp;quot;:0, &amp;quot;Power&amp;quot;:0, &amp;quot;Factor&amp;quot;:0.00, &amp;quot;Voltage&amp;quot;:229, &amp;quot;Current&amp;quot;:0.000}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;stat/TestSwitch/RESULT&#039;, ... (14 bytes))&lt;br /&gt;
 stat/TestSwitch/RESULT {&amp;quot;POWER&amp;quot;:&amp;quot;ON&amp;quot;}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;stat/TestSwitch/POWER&#039;, ... (2 bytes))&lt;br /&gt;
 stat/TestSwitch/POWER ON&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow3/STATE&#039;, ... (104 bytes))&lt;br /&gt;
 tele/sonoffpow3/STATE {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:07:14&amp;quot;, &amp;quot;Uptime&amp;quot;:100, &amp;quot;LIGHT&amp;quot;:&amp;quot;ON&amp;quot;, &amp;quot;Wifi&amp;quot;:{&amp;quot;AP&amp;quot;:2, &amp;quot;SSID&amp;quot;:&amp;quot;Pergola&amp;quot;, &amp;quot;RSSI&amp;quot;:96}}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow3/ENERGY&#039;, ... (134 bytes))&lt;br /&gt;
 tele/sonoffpow3/ENERGY {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:07:14&amp;quot;, &amp;quot;Yesterday&amp;quot;:0.083, &amp;quot;Today&amp;quot;:0.055, &amp;quot;Period&amp;quot;:0, &amp;quot;Power&amp;quot;:3, &amp;quot;Factor&amp;quot;:0.20, &amp;quot;Voltage&amp;quot;:227, &amp;quot;Current&amp;quot;:0.072}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;stat/TestSwitch/RESULT&#039;, ... (15 bytes))&lt;br /&gt;
 stat/TestSwitch/RESULT {&amp;quot;POWER&amp;quot;:&amp;quot;OFF&amp;quot;}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;stat/TestSwitch/POWER&#039;, ... (3 bytes))&lt;br /&gt;
 stat/TestSwitch/POWER OFF&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Interessant sind für uns nun diese Einträge &amp;quot;stat/TestSwitch/POWER ON&amp;quot; , dazu am Taster des Sonoff manuell umschalten. Dies entspricht genau der Syntax wie sie im Anschluss in FHEM dann zu verwenden ist.&lt;br /&gt;
&lt;br /&gt;
Mit diesen Einstellungen können dann entweder nach Telemetriedaten oder nach Statusmeldungen gefiltert werden. Dies ist jedoch nur notwendig wenn bereits andere MQTT Devices am Broker hängen und es sonst zu unübersichtlich wird.&lt;br /&gt;
 mosquitto_sub -h localhost -t tele/sonoff/#    = Telemetriedaten&lt;br /&gt;
 mosquitto_sub -h localhost -t stat/sonoff/#    = Statusmeldungen&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_21.jpg|thumb|left|alt=Arends Log]]&lt;br /&gt;
Sehr nützlich das lokale Log zur Fehlersuche und Inbetriebnahme.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Anbindung FHEM===&lt;br /&gt;
[[Datei:sonoff_sw_24.jpg|thumb|left|alt=FHEM sonoff Schalter]]&lt;br /&gt;
Dieser einfache Schalter kommuniziert bidirektional mit dem sonoff Device.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_25.jpg|thumb|left|alt=FHEM sonoff Schalter]]&lt;br /&gt;
Die Readings in diesem verwendeten Beispiel zeigen sich wie in FHEM gewohnt.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Einrichtung in FHEM wird von den Modulen 00_MQTT.pm, 10_MQTT_BRIDGE und 10_MQTT_DEVICE.pm unterstützt.&lt;br /&gt;
Ebenso wird das Modul 98_expandJSON.pm benötigt um den {{Link2Forum|Topic=66761|LinkText=JSON String zu filtern}}.&lt;br /&gt;
&lt;br /&gt;
[https://forum.fhem.de/index.php?topic=27532.0 Link zum Forum: MQTT FHEM Einrichtung]&lt;br /&gt;
&lt;br /&gt;
 ### 1. Broker anlegen ###&lt;br /&gt;
 define myBroker MQTT 10.0.0.5:1883&lt;br /&gt;
&lt;br /&gt;
 ### 2. FHEM Device mit MQTT verbinden ###&lt;br /&gt;
 define Sonoff_Switch MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Switch IODev myBroker&lt;br /&gt;
 attr Sonoff_Switch devStateIcon ON:rc_GREEN:OFF OFF:rc_RED:ON&lt;br /&gt;
 attr Sonoff_Switch icon hue_filled_br30&lt;br /&gt;
 attr Sonoff_Switch publishSet ON OFF cmnd/TestSwitch/POWER1&lt;br /&gt;
 attr Sonoff_Switch room MQTT&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_Licht stat/Sonoff_Switch/POWER1&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_Sensor tele/Sonoff_Switch/SENSOR&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_Status stat/Sonoff_Switch/STATUS&lt;br /&gt;
 attr Sonoff_Switch webCmd ON:OFF&lt;br /&gt;
Der hier dargestellte Beispielcode realisiert die Kommunikation zwischen FHEM und dem sonoff Modul via MQTT Broker. Zu beachten ist hier, dass &#039;&#039;&#039;subscribeReading_Licht&#039;&#039;&#039; und &#039;&#039;&#039;subscribeReading_state&#039;&#039;&#039; unterschiedliche Syntax des Topic Strings haben!&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ESPEasy==&lt;br /&gt;
===ESPEasy flashen===&lt;br /&gt;
[[Datei:sonoff_sw_6.jpg|thumb|left|alt=sonoff mit angestecktem FDTI Adapter]]&lt;br /&gt;
Die Spannungsversorgung des Sonoff Moduls wird hier vom FTDI Konverter mit 3.3V über die Verbindungskabel zum Pfostenstecker durchgeführt. Siehe obigen Hinweis: [[Sonoff#internal|Vorbereitungen zum Flashen]] &#039;&#039;&#039;Anmerkung: Oben steht, dass man die Spannungsversorgung nicht mit den einfachen FTDI-Chips vornehmen soll, im Bild aber geschieht dies?&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Der FTDI Adapter wird dann mit der USB Schnittstelle mit dem Computer verbunden.&lt;br /&gt;
&lt;br /&gt;
Zum compilieren wird in der Arduino Umgebung auch die ArduinoJson Library 5.6.4+ benötigt. Eine genaue Anleitung kann {{Link2Forum|Topic=55728|Message=473220|LinkText=hier}} nachgelesen werden. Es sollte stets die aktuelle Version der Arduino Umgebung verwendet werden, bzw. die Librarys auf Letztstand gehalten werden. &lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===mit Arduino compilieren===&lt;br /&gt;
[[Datei:sonoff_sw_10.jpg|thumb|left|alt=Einstellung Arduino IDE]]&lt;br /&gt;
Wer selber mit der Arduino IDE compilieren will, bitte folgende Einstellungen beachten. Die Sketche befinden sich [https://github.com/arendst/Sonoff-MQTT-OTA-Arduino hier]. Die anschließenden Arbeiten sind dann gleich wie bei Abschnitt &#039;&#039;&#039;fertige Binary&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Unbedingt die neueste [https://github.com/bblanchon/ArduinoJson Arduino Json Library] benutzen (siehe oben). Es gibt zwar keine Compilerfehler, aber es kommt anschließend zu Fehlfunktionen in der ESP Bridge! Die Installation der entsprechenden Arduino-Bibliotheken kann man [https://arduino-hannover.de/2015/04/08/arduino-ide-mit-dem-esp8266/ hier] nachlesen. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 Generic ESP8266 Module&lt;br /&gt;
 Flash Mode: QIO&lt;br /&gt;
 Flash Frequency: 40 MHz&lt;br /&gt;
 CPU Frequency: 80 MHz&lt;br /&gt;
 Flash Size: 1M (64K SPIFFS)&lt;br /&gt;
 Debug Port: disabled&lt;br /&gt;
 Debug Level: none&lt;br /&gt;
 Reset Mode: ck&lt;br /&gt;
 Upload Speed: 115200&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===fertige Binary flashen===&lt;br /&gt;
[[Datei:sonoff_sw_7.jpg|thumb|left|alt=NodeMCU Firmware Flasher]]&lt;br /&gt;
Es empfiehlt sich eine fertige Binary von ESPEasy aufzuspielen. In diesem Wiki wurde R140 verwendet.&lt;br /&gt;
&lt;br /&gt;
Siehe dazu auch den [http://www.esp8266.nu/index.php/Main_Page Link von ESPEasy] und das [https://learn.adafruit.com/building-and-running-micropython-on-the-esp8266/flash-firmware Handbuch] für den Flasher.&lt;br /&gt;
&lt;br /&gt;
In manchen Versionen von ESPEasy (zB.R120) ist auch ein Flasher beigelegt, welcher zwar keine grafische Oberfläche hat aber hervorragend funktioniert. Wenn andere versagen, geht es mit diesem Flasher immer noch, einfach probieren!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 Netzspannung darf &#039;NICHT&#039; angeschlossen sein!!!&lt;br /&gt;
 Taster am Sonoff gedrückt halten&lt;br /&gt;
 FTDI Adapter verbinden&lt;br /&gt;
 Taster am Sonoff los lassen&lt;br /&gt;
 Sketch übertragen&lt;br /&gt;
 Sonoff vom FTDI trennen&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Wenn einmal die Firmware auf das sonoff Modul geflasht worden ist, kann in Zukunft ESPEasy direkt unter Tools via HTTP dies durchführen. Es muss dazu kein FTDI Konverter mehr verwendet werden.&lt;br /&gt;
&lt;br /&gt;
===ESPEasy einstellen===&lt;br /&gt;
[[Datei:sonoff_sw_11.jpg|thumb|left|alt=ESPEasy Devices]]&lt;br /&gt;
Wenn das Modul fertig geflasht ist und die Verbindung zum Modul hergestellt ist, können die Einstellungen in ESPEasy durchgeführt werden.&lt;br /&gt;
Dazu am Webinterface anmelden und zunächst die zwei Devices definieren.&lt;br /&gt;
&lt;br /&gt;
Der Hersteller hat für das &#039;&#039;&#039;Relaise GPIO 12&#039;&#039;&#039; und für die &#039;&#039;&#039;grüne Led GPIO 13&#039;&#039;&#039; vorgesehen. Der &#039;&#039;&#039;Taster ist an GPIO 0&#039;&#039;&#039; angeschlossen.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Device Schalter===&lt;br /&gt;
[[Datei:sonoff_sw_12.jpg|thumb|left|alt=Device Relais]]&lt;br /&gt;
Bei den Devices sollten die hier dargestellte Einstellungen beachtet werden. Der Switch (PUMP) sollte auf Input gestellt werden, sodass die anschließenden und benötigten Rules aktiviert werden können.&lt;br /&gt;
&lt;br /&gt;
Da beide Devicenamen gleich benannt wurden (PUMP) wird in FHEM nur ein Device angelegt! Die dazugehörenden Valuenames sind unterschiedlich (Relay, Key).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Device Taster===&lt;br /&gt;
[[Datei:sonoff_sw_13.jpg|thumb|left|alt=Device Key]]&lt;br /&gt;
Der Taste muss natürlich nur konfiguriert werden, wenn auch händisch am Modul geschaltet werden soll. Wird dies nicht benötigt, können auch die Rules geändert bzw. angepasst werden. Doch alleine zu Testzwecken ist es eine nützliche Sache.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Rules===&lt;br /&gt;
[[Datei:sonoff_sw_14.jpg|thumb|left|alt=Rules]]&lt;br /&gt;
Da das sonoff Modul auch einen eingebauten Taster hat und somit auch lokal bedient werden kann, sollte man zunächst unter &#039;&#039;&#039;Tools / Advanced das Häckchen Rules&#039;&#039;&#039; aktivieren, erst dann wird der Tab sichtbar und es können Rules erstellt werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 on PUMP#Key do&lt;br /&gt;
  if [PUMP#Relay]=1&lt;br /&gt;
    gpio,12,0&lt;br /&gt;
  else&lt;br /&gt;
    gpio,12,1&lt;br /&gt;
  endif&lt;br /&gt;
 endon&lt;br /&gt;
 on PUMP#Relay do&lt;br /&gt;
  if [PUMP#Relay]=1 &lt;br /&gt;
    gpio,13,0&lt;br /&gt;
  else&lt;br /&gt;
    gpio,13,1&lt;br /&gt;
  endif&lt;br /&gt;
 endon&lt;br /&gt;
Diese Rules ermöglichen, das bei lokaler Bedienung durch den Taster auch die &#039;&#039;&#039;Led&#039;&#039;&#039; richtig geschaltet wird.&lt;br /&gt;
Mit &#039;on PUMP#Key do&#039; wird geprüft ob die Taste gedrückt ist und schaltet dann entsprechend die Led. Mit den Rules können auch Timer oder sonstige Spielereien realisiert werden. Siehe dazu das [http://www.esp8266.nu/index.php/Tutorial_Rules Tutorial] von ESPeasy.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Anbindung FHEM===&lt;br /&gt;
[[Datei:sonoff_sw_9.jpg|thumb|left|alt=FHEM Konfiguration]]&lt;br /&gt;
Dies ist eine einfache Darstellung wie FHEM automatisch den Device erstellt.&lt;br /&gt;
&lt;br /&gt;
Damit FHEM mit ESPEasy und dem sonoff Modul kommunizieren kann, muss in der fhem.cfg vorerst nur die espBridge mit dem hier dargestellten Eintrag aktiviert werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 define espBridge ESPEasy bridge 8383&lt;br /&gt;
Dies ist eigentlich die einzige Zeile die in fhem.cfg angelegt werden muss. Die restliche Konfiguration wird von FHEM automatisch generiert. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 ##########################################&lt;br /&gt;
 ###             ESPEASY               ####&lt;br /&gt;
 ##########################################&lt;br /&gt;
 &lt;br /&gt;
 define ESPEasy_sonoff_1_PUMP ESPEasy 10.0.0.37 80 espBridge sonoff_1_PUMP&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP IODev espBridge&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP devStateIcon on:rc_GREEN:off off:rc_RED:on absent:rc_BLUE:off gpio:rc_YELLOW:off&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP eventMap /gpio 12 on:on/gpio 12 off:off/gpio 12 gpio:off/gpio 12 output:off/&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP group ESPEasy Device&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP icon hue_filled_outlet&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP room ESPEasy&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP setState 0&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP stateFormat {ReadingsVal($name,&amp;quot;presence&amp;quot;,&amp;quot;&amp;quot;) eq &amp;quot;absent&amp;quot; ? &amp;quot;absent&amp;quot; : ReadingsVal($name,&amp;quot;Relay&amp;quot;,&amp;quot;&amp;quot;)}&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP webCmd :&lt;br /&gt;
&lt;br /&gt;
hier ein Beispiel wie es auch manuell leicht modifiziert werden kann.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_8.jpg|thumb|left|alt=sonoff Readings]]&lt;br /&gt;
&lt;br /&gt;
Die Readings werden durch die Bridge (Modul ESPEasy) automatisch angelegt.&lt;br /&gt;
&lt;br /&gt;
Es besteht hier noch genug Spielraum um zB. auch noch Temperatursensoren an das Modul anzuschließen und ebenfalls in FHEM darzustellen.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Beispiele=&lt;br /&gt;
==Einrichtung Sonoff POW==&lt;br /&gt;
[[Datei:sonoff_sw_31.jpg|thumb|left|alt=Sonoff POW]]&lt;br /&gt;
&#039;&#039;&#039;Bei einer Charge des Sonoff POW gibt es Kontaktprobleme beim Sicherungshalter. ITAED hat deshalb eine Rückrufaktion gestartet: [https://www.itead.cc/blog/sonoff-th16-and-pow-recall-notice Link zur Rückrufaktion]. Bitte unbedingt die Kontaktierung des Sicherungshalter überprüfen bzw. neuen Sicherungshalter einsetzen!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Das Modul kommt in gewohnter Itead Qualität, eine derart kostengünstige Energiemessung wird bei Smart Home Anwendern gerne eingesetzt. Die Originalsoftware habe ich nicht einmal getestet, da damit eine Anbindung an FHEM leider nicht möglich ist (wer will schon die Steuerbefehle seiner Schalter an eine nicht dokumentierte chinesische Cloud senden).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_sw_33.jpg|thumb|left|alt=Sonoff POW]]&lt;br /&gt;
Bitte auf keinen Fall das Modul während der Arbeiten an die Netzspannung anschießen. Zum Flashen genügt (und nur diese) die Versorgungspannung des USB-TTL Konverters. Wie auf dem Foto gut erkennbar, wurde dieses Modul ohne einlöten einer Pfostensteckerleiste geflasht. Die Steckverbindung wird einfach in die Lötaugen gesteckt und mit einem Gummiring fixiert, da ja spätere Flashvorgänge im Webif des Models funktionieren und so die Arbeit eingespart werden kann. Es steht jedoch nichts im Wege die Pfostensteckerleiste einzulöten.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Die Anschlüsse am Modul sind wie folgt belegt.&lt;br /&gt;
 o GND&lt;br /&gt;
 o TxD&lt;br /&gt;
 o RxD&lt;br /&gt;
 o VDD&lt;br /&gt;
&lt;br /&gt;
Für den Flashvorgang gelten die selben Regeln wie schon beim sonoff Switch oben erwähnt (3,3V!).&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Software===&lt;br /&gt;
[[Datei:sonoff_sw_35.jpg|thumb|left|alt=Sonoff POW FHEM]]&lt;br /&gt;
Als Software steht im Augenblick nur der Sketch von Arends zur Verfügung, liefert aber alles was das Herz begehrt und ist ist einfach zu handhaben. Hier eine eine einfache Darstellung mit der aktuellen Leistung und dem Tagesverbrauch. Zusätzlich besteht auch noch die Möglichkeit den angeschlossenen Verbraucher Ein- oder Auszuschalten. &lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_pow_02.jpg|thumb|left|alt=Sonoff POW Webif]]&lt;br /&gt;
Seit Version 2.0.19a ist auch die Leistungsanzeige im WEBIF wie im Bild links integriert. Auch der Energieverbrauch des Vortages wird mit angezeigt. Alle hier angezeigten Daten werden auch zyklisch im MQTT String an FHEM übergeben.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich kann im Sketch auch das Feature &amp;quot;&#039;&#039;&#039;Power_Limit&#039;&#039;&#039;&amp;quot; aktiviert werden. Mit dem Power_Limit wird eine zusätzliche Nachricht erzeugt, wenn ein bestimmter einstellbarer Grenzwert über- oder unterschritten wird. &lt;br /&gt;
&lt;br /&gt;
Es lassen sich dadurch Meldungen wie &amp;quot;Waschmaschine fertig&amp;quot; oder ähnliches ohne weitere Schwellwert Überwachungen in FHEM ableiten. Die Meldungen kommen in MQTT mit &amp;quot;&#039;&#039;&#039;POWER_LOW ON&#039;&#039;&#039;&amp;quot; bzw. &amp;quot;&#039;&#039;&#039;POWER_LOW OFF&#039;&#039;&#039;&amp;quot;.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei erstmaligen Start des Modules muss der Typ des Modules von &amp;quot;SONOFF&amp;quot; auf &amp;quot;&#039;&#039;&#039;SONOFF_Pow&#039;&#039;&#039;&amp;quot; geändert werden, damit die Software weiß mit welchem Modul es zu tun hat und kann dann die entsprechenden Berechnungen durchführen. Die Leistungsdaten kommen ja in Form einer Frequenz aus dem Baustein und müssen im Sketch (xsns_hlw8102.ino) umgerechnet werden.&lt;br /&gt;
                                            &lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_sw_36.jpg|thumb|left|alt=Sonoff POW Attribute]]&lt;br /&gt;
Dieses Bild zeigt die Attribute die vom Modul via MQTT an FHEM geliefert werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
aktuell gelieferter JSON String vom Sketch der alle Messdaten beinhaltet.&lt;br /&gt;
 {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:38:47&amp;quot;, &amp;quot;Yesterday&amp;quot;:&amp;quot;2.286&amp;quot;, &amp;quot;Today&amp;quot;:&amp;quot;1.593&amp;quot;, &amp;quot;Period&amp;quot;:9, &amp;quot;Power&amp;quot;:231, &amp;quot;Factor&amp;quot;:&amp;quot;1.00&amp;quot;, &amp;quot;Voltage&amp;quot;:231, &amp;quot;Current&amp;quot;:&amp;quot;0.866&amp;quot;}&lt;br /&gt;
und hier das zugehörige Reading.&lt;br /&gt;
 tele/sonoffpow/ENERGY    &lt;br /&gt;
       &lt;br /&gt;
&lt;br /&gt;
Hier ein Mittschnitt des Datenverkehrs zum Broker zwecks Kontrolle der korrekten Funktion der Module und der Software.&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/STATE&#039;, ... (103 bytes))&lt;br /&gt;
 tele/sonoffpow/STATE {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:39:15&amp;quot;, &amp;quot;Uptime&amp;quot;:79, &amp;quot;LIGHT&amp;quot;:&amp;quot;OFF&amp;quot;, &amp;quot;Wifi&amp;quot;:{&amp;quot;AP&amp;quot;:2, &amp;quot;SSID&amp;quot;:&amp;quot;Liwest&amp;quot;, &amp;quot;RSSI&amp;quot;:54}}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/ENERGY&#039;, ... (140 bytes))&lt;br /&gt;
 tele/sonoffpow/ENERGY {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:39:15&amp;quot;, &amp;quot;Yesterday&amp;quot;:&amp;quot;1.391&amp;quot;, &amp;quot;Today&amp;quot;:&amp;quot;1.191&amp;quot;, &amp;quot;Period&amp;quot;:0, &amp;quot;Power&amp;quot;:0, &amp;quot;Factor&amp;quot;:&amp;quot;0.00&amp;quot;, &amp;quot;Voltage&amp;quot;:0, &amp;quot;Current&amp;quot;:&amp;quot;0.000&amp;quot;}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff_wall1/STATE&#039;, ... (105 bytes))&lt;br /&gt;
 tele/sonoff_wall1/STATE {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:39:15&amp;quot;, &amp;quot;Uptime&amp;quot;:96, &amp;quot;POWER&amp;quot;:&amp;quot;OFF&amp;quot;, &amp;quot;Wifi&amp;quot;:{&amp;quot;AP&amp;quot;:2, &amp;quot;SSID&amp;quot;:&amp;quot;Pergola&amp;quot;, &amp;quot;RSSI&amp;quot;:100}}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow3/STATE&#039;, ... (104 bytes))&lt;br /&gt;
 tele/sonoffpow3/STATE {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:39:20&amp;quot;, &amp;quot;Uptime&amp;quot;:100, &amp;quot;LIGHT&amp;quot;:&amp;quot;ON&amp;quot;, &amp;quot;Wifi&amp;quot;:{&amp;quot;AP&amp;quot;:2, &amp;quot;SSID&amp;quot;:&amp;quot;Pergola&amp;quot;, &amp;quot;RSSI&amp;quot;:96}}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow3/ENERGY&#039;, ... (134 bytes))&lt;br /&gt;
 tele/sonoffpow3/ENERGY {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:39:20&amp;quot;, &amp;quot;Yesterday&amp;quot;:0.083, &amp;quot;Today&amp;quot;:0.057, &amp;quot;Period&amp;quot;:0, &amp;quot;Power&amp;quot;:0, &amp;quot;Factor&amp;quot;:0.00, &amp;quot;Voltage&amp;quot;:230, &amp;quot;Current&amp;quot;:0.000}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Einstellungen können mit folgender Syntax angefordert werden (zwei Terminalfenster öffnen, eines zum protokollieren und eines zum Seden der Befehle).&lt;br /&gt;
 mosquitto_sub -d -v -t \#  MQTT Datenverkehr protokolieren&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/status/set -m &amp;quot;8&amp;quot;      = SonoffPOW Status jetzt auslesen&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/TelePeriod/set -m &amp;quot;60&amp;quot; = Timer setzen, alle 60 Sekunden Daten senden &lt;br /&gt;
Die Kommandos können direkt am Broker (Terminalfenster Putty etc.) abgesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kalibrieren ===&lt;br /&gt;
Ab Version 2.0.11 kann nun auch der POW kalibriert werden.&lt;br /&gt;
Dazu kann man 2 Konsolenfenster öffnen, im ersten aktiviert man das Protokoll für den Datenverkehr&lt;br /&gt;
 mosquitto_sub -d -v -t \#  MQTT Datenverkehr protokollieren&lt;br /&gt;
&lt;br /&gt;
Dann kann mit folgenden Befehlen die HLW Referenz Pulsfrequenz gesetzt werden.&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/HLWUCAL/set -m &amp;quot;2100&amp;quot;     default = 1950&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/HLWICAL/set -m &amp;quot;2450&amp;quot;     default = 3500&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/HLWPCAL/set -m &amp;quot;13500&amp;quot;    default = 12345 &lt;br /&gt;
Entweder man hat eine definierte Last zur Verfügung oder besser man misst mit einem Leistungsmesser nach. Die Spannung kann man mit einem Multimeter nachmessen (sollte 230 V sein) und der Strom wird errechnet (bei 100 Watt I = P / U ) = 100/230 = 0,4347.&lt;br /&gt;
Die Referenzwerte solange geringfügig ändern bis die Ausgabe passt. Für die Ausgabe wird einfach eine Statusabfrage durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/status/set -m &amp;quot;8&amp;quot;&lt;br /&gt;
Befehl für die Statusabfrage&lt;br /&gt;
&lt;br /&gt;
 cmnd/sonoffpow/status/set 8&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;stat/sonoffpow/STATUS&#039;, ... (103 bytes))&lt;br /&gt;
 stat/sonoffpow/STATUS PWR: Voltage 225 V, Current 0.427 A, Current Power 98 W, Total Power Today 0.080 kWh, Power Factor 1.00&lt;br /&gt;
Ergebnis der Statusabfrage mit Spannung, Strom und Leistung.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===FHEM Anbindung===&lt;br /&gt;
Ein Beispiel einer einfachen Anbindung via JSON an FHEM. MQTT von Arends ist insofern notwendig, da in der Software ESPEasy und der Bridge noch keine Implementierung der Frequenzumrechnung enthalten ist.&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Pow MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Pow IODev myBroker&lt;br /&gt;
 attr Sonoff_Pow icon measure_power&lt;br /&gt;
 attr Sonoff_Pow publishSet ON OFF cmnd/sonoffpow/POWER&lt;br /&gt;
 attr Sonoff_Pow stateFormat {sprintf(&amp;quot;aktuell: %.1f W Tag: %.2f Kw/h&amp;quot;, ReadingsVal($name,&amp;quot;Power&amp;quot;,undef), ReadingsVal($name,&amp;quot;Today&amp;quot;,undef))}&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_ENERGY tele/sonoffpow/ENERGY&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_POWER stat/sonoffpow/POWER&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_state cmnd/sonoffpow/POWER&lt;br /&gt;
 attr Sonoff_Pow webCmd ON:OFF&lt;br /&gt;
Zusätzlich kann hier noch das Relais mit &amp;quot;on&amp;quot; und &amp;quot;off&amp;quot; ein- ausgeschaltet werden.&lt;br /&gt;
&lt;br /&gt;
====JSON Filter====&lt;br /&gt;
Ebenso notwendig ist das setzen der Regexp für den JSON Konverter.&lt;br /&gt;
 define ej3 expandJSON Sonoff.*:.*:.{.*}&lt;br /&gt;
hier wird alles was mit dem Namen Sonoff beginnt gefiltert und automatisch alle darin enthaltenen Readings erstellt.&lt;br /&gt;
&lt;br /&gt;
 define ej3 expandJSON Sonoff.*:ENERGY.*:.{.*} (Power|Yesterday|Today)&lt;br /&gt;
oder so, da werden nur die Readings Power, Yesterday und Today erstellt.&lt;br /&gt;
Somit ist auch klar, das in FHEM auch JSON installiert sein muss. Ebenso können die verschiedenen Regexp im [https://github.com/ddtlabs/expandJSON Wiki] nachgelesen werden.&lt;br /&gt;
&lt;br /&gt;
[https://forum.fhem.de/index.php/topic,66761.15.html Link zum Diskussionsthread].&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Source Reading:&#039;&#039;&#039;&lt;br /&gt;
 device:reading:.{.*} &lt;br /&gt;
 .*WifiIOT.*:sensor.*:.{.*} &lt;br /&gt;
 sonoff_.*:.*:.{.*} &lt;br /&gt;
 dev.*:(sensor1|sensor2|teleme.*):.{.*} &lt;br /&gt;
 (dev.*|[Dd]evice.*):json:.{.*} &lt;br /&gt;
 (devX:jsonX:.{.*}|devY.*:jsonY:.{.*Wifi.*{.*SSID.*}.*}) &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Target Reading:&#039;&#039;&#039;&lt;br /&gt;
 .*power.* &lt;br /&gt;
 (Current|Voltage|Wifi.*)  &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Komplette Definition des Filters:&#039;&#039;&#039;&lt;br /&gt;
 define ej1 expandJSON device:sourceReading:.{.*} targetReading &lt;br /&gt;
 define ej3 expandJSON .*\.SEN\..*:.*:.{.*} &lt;br /&gt;
 define ej3 expandJSON sonoff_.*:sensor.*:.{.*} (power.*|current|voltage)&lt;br /&gt;
 define ej3 expandJSON Sonoff.*:.*:.{.*} (Power|Current|Voltage|Yesterday|Today|Total|AnalogInput0|RSSI|.*Humidity|.*Temperature|Counter1|Period)&lt;br /&gt;
letzteres Filter definiert so ziemlich alle wichtigen Sonoff Messdaten &lt;br /&gt;
&lt;br /&gt;
===Netz-Anschluß===&lt;br /&gt;
[[Datei:sonoff_sw_34.jpg|thumb|left|alt=Sonoff POW Netzanschluß]]&lt;br /&gt;
Erst wenn alle Arbeiten an der Hard- und Software abgeschlossen sind, kann man das Modul an die Netzspannung anschließen. Wer es sich einfach machen will, nimmt eine Industriell gefertigte 230 V Verlängerung  (zwischen 1,5 - 3 Meter) und schneidet sie in der Mitte durch. Nach dem abisolieren der flexiblen Drähte sollte diese &#039;&#039;&#039;verlötet oder mit Aderendhülsen&#039;&#039;&#039; versehen werden (müssen aber exakt passen, da hier kaum Platz in den Klemmen ist). &lt;br /&gt;
Mit einem kleinen Schraubendreher kann man die Feder der Klemmen niederdrücken und das verzinnte Drahtende tief ich die Öffnung stecken. Es dürfen keine Drahtlitzen aus den Öffnungen sichtbar sein, Kurzschlußgefahr! Ebenso sollte eine Zugprobe durchgeführt werden ob die Klemme auch richtig eingerastet ist.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ACHTUNG: diese Arbeiten müssen von einem ausgebildeten Fachpersonal (Elektriker) durchgeführt werden, Lebensgefahr!&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ReadingsGroup mit Schaltmöglichkeit===&lt;br /&gt;
[[Datei:sonoff_pow_03.jpg|thumb|left|alt=readingsGroup mit Schalter]]&lt;br /&gt;
Die ReadingsGroup kann auch gleich mit einem Schalter versehen werden um den POW Ein- oder Aus schalten zu können. Dazu ist aber eine andere Einstellung im Sketch erforderlich.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der &amp;quot;&#039;&#039;&#039;user_config.h&#039;&#039;&#039;&amp;quot; muss an dieser Stelle auch die &amp;quot;&#039;&#039;&#039;PUB_PREFIX&#039;&#039;&#039;&amp;quot; auf die gleiche Topic wie &amp;quot;PUB_PREFIX2&amp;quot; eingestellt werden. Durch diese Maßnahme wird erreicht, dass sofort nach dem Knopfdruck auch der Status mit der Topic &amp;quot;tele&amp;quot; übertragen wird. Würde der weiterhin mit &amp;quot;stat&amp;quot; übertragen, kann er in der Readingsgroup nur sehr umständlich weiter behandelt werden. Dadurch wird erreicht, dass der Schalter sofort nach dem Schaltvorgang und der Rückmeldung (Status) auch seine Farbe ändert. Wird dieser Eintrag vergessen, ändert der Schalter erst nach Eintreffen der nächsten zyklischen Abfrage seinen Status/Farbe.&lt;br /&gt;
&lt;br /&gt;
 #define SUB_PREFIX             &amp;quot;cmnd&amp;quot;       // Sonoff devices subscribe to:- SUB_PREFIX/MQTT_TOPIC and SUB_PREFIX/MQTT_GRPTOPIC&lt;br /&gt;
 #define PUB_PREFIX             &amp;quot;tele&amp;quot;       // Sonoff devices publish to:- PUB_PREFIX/MQTT_TOPIC&lt;br /&gt;
 #define PUB_PREFIX2            &amp;quot;tele&amp;quot;       // Sonoff devices publish telemetry data to:- PUB_PREFIX2/MQTT_TOPIC/UPTIME, POWER/LIGHT and TIME&lt;br /&gt;
hier die PUB_PREFIX mit der geänderten Topic &amp;quot;tele&amp;quot; anstatt &amp;quot;stat&amp;quot; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 define SonoffPows readingsGroup &amp;lt;%measure_power&amp;gt;,&amp;lt;aktuell&amp;gt;,&amp;lt;Tag&amp;gt;,&amp;lt;Gestern&amp;gt;,&amp;lt;Strom&amp;gt;,&amp;lt;Durchschnitt&amp;gt;,&amp;lt;max.P&amp;gt;,&amp;lt;Zyklus&amp;gt;,&amp;lt;Faktor&amp;gt;,&amp;lt;Status&amp;gt;,&amp;lt; hr &amp;gt; .*(Sonoff_Pow|Sonoff_Pow2|Sonoff_Pow3|Sonoff_Pow4):Power,Today,Yesterday,Current,Power_avg_day,Power_max_day,Period,Factor,LIGHT&lt;br /&gt;
 attr SonoffPows commands {&#039;LIGHT.ON&#039; =&amp;gt; &#039;set $DEVICE OFF&#039;,&#039;LIGHT.OFF&#039; =&amp;gt; &#039;set $DEVICE ON&#039;}&lt;br /&gt;
 attr SonoffPows mapping %ALIAS&lt;br /&gt;
 attr SonoffPows nameStyle style=&amp;quot;color:yellow&amp;quot;&lt;br /&gt;
 attr SonoffPows room Energie,MQTT&lt;br /&gt;
 attr SonoffPows valueFormat {&#039;Power&#039; =&amp;gt;&amp;quot;%.0f W&amp;quot;, &#039;Today&#039; =&amp;gt;&amp;quot;%.2f Kw&amp;quot;,&#039;Yesterday&#039; =&amp;gt;&amp;quot;%.2f Kw&amp;quot;, &#039;CURRENT&#039; =&amp;gt;&amp;quot;%.2f A&amp;quot;,&#039;Power_max_day&#039; =&amp;gt; &amp;quot;%.0f W&amp;quot;,&#039;Power_avg_day&#039; =&amp;gt; &amp;quot;%.2f W&amp;quot;,&#039;Power&#039;=&amp;gt;&amp;quot;%.0f W&amp;quot;,&#039;Factor&#039; =&amp;gt; &amp;quot;%.2f &amp;quot;}&lt;br /&gt;
 attr SonoffPows valueIcon {&#039;LIGHT.ON&#039; =&amp;gt; &#039;rc_GREEN@green&#039;, &#039;LIGHT.OFF&#039; =&amp;gt; &#039;rc_RED@red&#039;}&lt;br /&gt;
 attr SonoffPows valueStyle { if($READING eq &amp;quot;Power&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 0 &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Today&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 4.8){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Today&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 2.5){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Today&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 2.5 &amp;amp;&amp;amp; $VALUE &amp;lt; 4.8 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Yesterday&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 2.5){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Yesterday&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 2.5 &amp;amp;&amp;amp; $VALUE &amp;lt; 4.8 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Yesterday&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 4.8){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Current&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 0.45){&#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039;}elsif( $READING eq &amp;quot;Current&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 0.45 &amp;amp;&amp;amp; $VALUE &amp;lt; 0.87 ){&#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Current&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 0.87){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Period&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 10){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Period&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 10 &amp;amp;&amp;amp; $VALUE &amp;lt; 15 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Period&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 15){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039;}}&lt;br /&gt;
Dieses Beispiel ist für &#039;&#039;&#039;Tasmota mit JSON&#039;&#039;&#039; ausgelegt und benötigt ebenso wie oben die Erweiterung &amp;quot;average&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Pow_CURRENT_POWER average Sonoff_Pow:Power.*&lt;br /&gt;
damit werden der Durchschnitt und min max für Tasmota mit JSON erzeugt.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===FTUI===&lt;br /&gt;
[[Datei:sonoff_pow_energy.JPG|thumb|left|alt=Tablett FTUI]]&lt;br /&gt;
Wer möchte kann die Energieanzeigen auch mit der {{Link2Forum|Topic=34233|LinkText=Tablett UI}} für eine Tablet Ansicht gestalten. Mit dieser stehen viele Möglichkeiten zu einer attraktiven Darstellung zur Verfügung.&lt;br /&gt;
Hier ein Beispiel welches mit den Widget &amp;quot;[http://www.fhemwiki.de/wiki/FHEM_Tablet_UI#Widget_THERMOSTAT thermostat]&amp;quot; dargestellt ist.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Slampher==&lt;br /&gt;
[[Datei:sonoff_sl_53.jpg|thumb|left|alt=Sonoff SLAMPHER]]&lt;br /&gt;
Dieses Modul ist eine Besonderheit was das Flashen betrifft, denn mit Hilfe des Tasters kann der ESP8266 NICHT in den Flashmode gebracht werden. Der Taster ist intern anderwärtig verdrahtet und somit für diesen Zweck nicht zu gebrauchen.&lt;br /&gt;
&lt;br /&gt;
Wie hier links im Bild zu sehen ist, muss der rechte Pin des R20 (oben im Bild) während dem Einstecken des USB Steckers auf Masse gelegt werden. Die beste Möglichkeit ist ein Stücken Draht anzulöten und diesen dann beim einstecken auf den Masse Pin des USB-Konverters zu legen.&lt;br /&gt;
&lt;br /&gt;
Pinbelegung des Steckers von oben nach unten:&lt;br /&gt;
 o - GND&lt;br /&gt;
 o - TxD&lt;br /&gt;
 o - RxD&lt;br /&gt;
 &#039;&#039;&#039;o&#039;&#039;&#039; - Vdd&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sl_51.jpg|thumb|left|alt=Sonoff SLAMPHER R20]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier ist genau ersichtlich, wo der R20 auf der Platine platziert ist. }}&lt;br /&gt;
Hier nocheinmal schön zu sehen wo der R20 (der ist nicht eingelötet sondern leer) exakt auf der Platine liegt, gemeint ist der rechte Pin. Hier kann auch leicht gelötet werden, da keine empfindlichen Bauteile in der Nähe sind und auch genug Platz vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_sl_50.jpg|thumb|left|alt=Sonoff SLAMPHER R20]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier ist genau ersichtlich, wo der Draht am R20 aufgelötet wurde }}&lt;br /&gt;
Hier ist ein kleines Stück Schaltdraht auf den Pin bereist aufgelötet und bereit zum Flashen!&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel wurde keine Pfostensteckerleiste auf die Platine aufgelötet, sondern nur durchgesteckt und mit einem Gummiring  zum Relais fixiert, das erspart den Lötvorgang, weil in Zukunft dann ohnehin OTA geflasht werden kann.&lt;br /&gt;
&lt;br /&gt;
Also Pin20 auf Masse legen und USB-Konverter an den PC einstecken, dann den Draht von der Masse entfernen. Der ESP8266 sollte jetzt im Flashmodus bereit stehen und kann wie bereits oben beschrieben geflasht werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sonoff Slampher Software===&lt;br /&gt;
[[Datei:sonoff_sl_54.jpg|thumb|left|alt=Sonoff SLAMPHER FHEM]]&lt;br /&gt;
&lt;br /&gt;
Als Software wird Arends Sketch installiert (Kommunikation über MQTT), da zum derzeitigen Zeitpunkt ESPEasy das Modul noch nicht integriert hat und somit auch nicht ansteuern kann.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_SL MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_SL IODev myBroker&lt;br /&gt;
 attr Sonoff_SL devStateIcon ON:rc_GREEN:OFF OFF:rc_RED:ON&lt;br /&gt;
 attr Sonoff_SL icon hue_filled_br30&lt;br /&gt;
 attr Sonoff_SL publishSet ON OFF cmnd/sonoffsl/POWER1&lt;br /&gt;
 attr Sonoff_SL room Bewegung,_Sonoff&lt;br /&gt;
 attr Sonoff_SL stateFormat Licht&lt;br /&gt;
 attr Sonoff_SL subscribeReading_Licht tele/sonoffsl/POWER1&lt;br /&gt;
 attr Sonoff_SL subscribeReading_state cmnd/sonoffsl/POWER1&lt;br /&gt;
 attr Sonoff_SL webCmd ON:OFF&lt;br /&gt;
&lt;br /&gt;
Hier ein Beispiel wie in FHEM der Slampher eingebunden werden kann. In diesem Beispiel wird davon ausgegangen, das im Modul die Topic &amp;quot;sonoffsl&amp;quot; benannt wurde. Wer einen anderen Namen haben möchte, muss dies dann auch in FHEM entsprechend anpassen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Th10/16 ==&lt;br /&gt;
[[Datei:sonoff_th_01.jpg|thumb|left|alt=Sonoff TH10]]&lt;br /&gt;
Das Modul kann durch drücken des Tasters während dem Einstecken des USB-Konverters in den Flashmodus gebracht werden.&lt;br /&gt;
Der Th10/16 kann mit zwei unterschiedlichen Typen von Sensoren bestückt werden, hier im Beispiel mit dem externen Temperaturfühler DS18B20.&lt;br /&gt;
&lt;br /&gt;
Wie im Bild klar zu sehen ist, kann das Webif auch zur Darstellung via Mobile verwendet werden. Mit &amp;quot;Toggle&amp;quot; wird Ein- oder Aus geschaltet und  darunter ist die aktuelle Temperatur ersichtlich. Für diese Ansicht muss keine MQTT Verbindung eingerichtet werden, da die Kommunikation hier rein über HTTP erfolgt.&lt;br /&gt;
&lt;br /&gt;
Die unten dargestellten Beispiele für FHEM beziehen sich auf Arends Sketch, also über MQTT. Dieses Modul kann aber genauso leicht über ESPEasy und der ESPEasy-Bridge eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Pinbelegung des Steckers von oben nach unten:&lt;br /&gt;
 o - GND&lt;br /&gt;
 o - TxD&lt;br /&gt;
 o - RxD&lt;br /&gt;
 &#039;&#039;&#039;o&#039;&#039;&#039; - Vdd&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_th_02.jpg|thumb|left|alt=Sonoff TH10]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Einbindung in FHEM via MQTT! }}&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ### Temperatur und Luftfeuchte vom Sonoff Switch ###&lt;br /&gt;
 define Sonoff_Temp MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Temp IODev myBroker&lt;br /&gt;
 attr Sonoff_Temp alias Pool Wasser&lt;br /&gt;
 attr Sonoff_Temp eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_Temp icon temperature_humidity&lt;br /&gt;
 attr Sonoff_Temp publishSet ON OFF cmnd/sonoffth/POWER1&lt;br /&gt;
 attr Sonoff_Temp room _Sonoff&lt;br /&gt;
 attr Sonoff_Temp stateFormat {sprintf(&amp;quot;Temperatur: %.1f Grad&amp;quot;, ReadingsVal($name,&amp;quot;temperature&amp;quot;,0))}&lt;br /&gt;
 attr Sonoff_Temp subscribeReading_SENSOR tele/sonoffth/SENSOR&lt;br /&gt;
 attr Sonoff_Temp subscribeReading_state cmnd/sonoffth/POWER1&lt;br /&gt;
Beispiel für FHEM mit Temperaturanzeige mit DS18B20&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Switch MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Switch IODev myBroker&lt;br /&gt;
 attr Sonoff_Switch alias Pool Licht&lt;br /&gt;
 attr Sonoff_Switch devStateIcon on:rc_GREEN:off off:rc_RED:on&lt;br /&gt;
 attr Sonoff_Switch eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_Switch icon light_ceiling&lt;br /&gt;
 attr Sonoff_Switch publishSet ON OFF cmnd/sonoffth/POWER1&lt;br /&gt;
 attr Sonoff_Switch room _Sonoff&lt;br /&gt;
 attr Sonoff_Switch stateFormat Licht&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_Licht tele/sonoffth/POWER1&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_state cmnd/sonoffth/POWER1&lt;br /&gt;
 attr Sonoff_Switch webCmd ON:OFF&lt;br /&gt;
Der Schalter nochmals seperat dargestellt, je nach Geschmack.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff 4CH 4-Kanal Schaltmodul==&lt;br /&gt;
===Besonderheiten ===&lt;br /&gt;
[[Datei:sonoff_ch4_1.jpg|thumb|left|alt=Sonoff CH4]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Achtung andere Einstellungen der Arduino IDE: Select Board &amp;quot;Generic ESP8285 Module&amp;quot; (=Flash Mode &amp;quot;DOUT&amp;quot;) and Flash Size &amp;quot;1M (64K SPIFFS)&amp;quot;n! }}&lt;br /&gt;
&lt;br /&gt;
Der Sonoff 4CH ist mit seinen 4 Kanälen ein sehr preiswertes Modul im Gehäuse und für Hutschinenmontage. Anstatt des üblichen ESP8266 besitzt dieses Modul schon den moderneren &#039;&#039;&#039;ESP8285&#039;&#039;&#039;. Es müssen daher in der Arduino IDE andere Einstellungen vorgenommen werden. Unter Board wird hier das &amp;quot;&#039;&#039;&#039;Generic 8285 Module&#039;&#039;&#039;&amp;quot; mit &#039;&#039;&#039;1M und 64K Spiffs&#039;&#039;&#039; angewählt. Der Flashmode &amp;quot;&#039;&#039;&#039;DOUT&#039;&#039;&#039;&amp;quot; wird dann automatisch eingestellt, bzw. ausgeblendet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Es ist daher unbedingt notwendig den Sketch mit den geänderten Einstellungen selbst zu kompilieren, ansonsten stürzt das Modul nach Auswahl des Typs ab  und wird nicht mehr rebooten können!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das Modul ist etwas größer als die anderen Sonoff Produkte und besitzt mit 14,5 x 9 cm schon beachtliche Einbau Maße.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_ch4_2.jpg|thumb|left|alt=Sonoff 4CH FDTI]]&lt;br /&gt;
Als weitere Besonderheit sei hier erwähnt, das die Signale &#039;&#039;&#039;RxD auf RxD und TxD auf TxD&#039;&#039;&#039; des FTDI Konverters zu verbinden sind. Wie bei allen Sonoff Modulen darf man &#039;&#039;&#039;zum flashen keine Netzspannung anschließen&#039;&#039;&#039;, sondern nur über die Versorgungsspannung des FDTI Konverters mit 3,3 V versorgen (Jumper richtig setzen). Die Stiftleiste für den FTDI Anschluß ist hier schon eingelötet.&lt;br /&gt;
&lt;br /&gt;
In den Flashmodus gelangt man durch drücken der &#039;&#039;&#039;Taste FW/IO0&#039;&#039;&#039; während des einstecken des USB Anschlusses.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_ch4_3.jpg|thumb|left|alt=Sonoff 4CH Arends]]&lt;br /&gt;
Hier die Ansicht des Webinterface des Arends Sketches!&lt;br /&gt;
Bei der Software sei erwähnt, das die getestete Version 3.1.16 nur bei Kanal 1 den Modus &amp;quot;PulseTime&amp;quot; beherrscht. Wer also gepulste Ausgänge (zB: elektrische Garage/Toröffner) benötigt muss diese per Software nachbilden oder mit dem Kanal 1 auskommen. Eine &amp;quot;Pulsetime 10&amp;quot; ist ein guter Wert dafür (etwa 1 Sekunde). &lt;br /&gt;
&lt;br /&gt;
Als Alternative kann mit dieser HTML Seite des Webservers am Modul des CH4 schon mit jedem Browser fähigem Handy (Android, iPhone, Windows) aufgerufen werden und somit alle Funktionen gesteuert werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_ch4_4.jpg|thumb|left|alt=Sonoff CH4 Software APP]]&lt;br /&gt;
Hier dargestellt die Original Software die Sonoff zum Modul liefert (EWeLink) und über ihre Cloud verbindet. Leider kann hier keine gepulste Ausgabe erfolgen. Mit einem Countdown kann zwar der Ausgang wieder abgeschaltet werden, die kleinste Zeiteinheit ist aber 1 Minute und somit für einen Impuls leider nicht zu gebrauchen. Ebenso kann mit dieser Software keine Einbindung in FHEM erfolgen, obwohl es eine nette anschauliche Darstellung ist.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Anbindung FHEM===&lt;br /&gt;
Beispiel zur Anbindung in FHEM für den 4CH, hier werden einfach 4 einzelne Schalter definiert!&lt;br /&gt;
 define Sonoff_ch1 MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_ch1 IODev myBroker&lt;br /&gt;
 attr Sonoff_ch1 alias Sonoff CH1&lt;br /&gt;
 attr Sonoff_ch1 devStateIcon on:rc_GREEN:off off:rc_RED:on&lt;br /&gt;
 attr Sonoff_ch1 eventMap ON:on OFF:off ON:Ein OFF:Aus&lt;br /&gt;
 attr Sonoff_ch1 group Toröffner&lt;br /&gt;
 attr Sonoff_ch1 icon light_ceiling&lt;br /&gt;
 attr Sonoff_ch1 publishSet ON OFF cmnd/sonoffch4/POWER1&lt;br /&gt;
 attr Sonoff_ch1 stateFormat Power&lt;br /&gt;
 attr Sonoff_ch1 subscribeReading_Power tele/sonoffch4/POWER1&lt;br /&gt;
 attr Sonoff_ch1 subscribeReading_state cmnd/sonoffch4/POWER1&lt;br /&gt;
 attr Sonoff_ch1 webCmd Ein:Aus&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_ch2 MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_ch2 IODev myBroker&lt;br /&gt;
 attr Sonoff_ch2 alias Sonoff CH2&lt;br /&gt;
 attr Sonoff_ch2 devStateIcon on:rc_GREEN:off off:rc_RED:on&lt;br /&gt;
 attr Sonoff_ch2 eventMap ON:on OFF:off ON:Ein OFF:Aus&lt;br /&gt;
 attr Sonoff_ch2 group Toröffner&lt;br /&gt;
 attr Sonoff_ch2 icon light_ceiling&lt;br /&gt;
 attr Sonoff_ch2 publishSet ON OFF cmnd/sonoffch4/POWER2&lt;br /&gt;
 attr Sonoff_ch2 stateFormat Power&lt;br /&gt;
 attr Sonoff_ch2 subscribeReading_Power tele/sonoffch4/POWER2&lt;br /&gt;
 attr Sonoff_ch2 subscribeReading_state cmnd/sonoffch4/POWER2&lt;br /&gt;
 attr Sonoff_ch2 webCmd Ein:Aus&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_ch3 MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_ch3 IODev myBroker&lt;br /&gt;
 attr Sonoff_ch3 alias Sonoff CH3&lt;br /&gt;
 attr Sonoff_ch3 devStateIcon on:rc_GREEN:off off:rc_RED:on&lt;br /&gt;
 attr Sonoff_ch3 eventMap ON:on OFF:off ON:Ein OFF:Aus&lt;br /&gt;
 attr Sonoff_ch3 group Toröffner&lt;br /&gt;
 attr Sonoff_ch3 icon light_ceiling&lt;br /&gt;
 attr Sonoff_ch3 publishSet ON OFF cmnd/sonoffch4/POWER3&lt;br /&gt;
 attr Sonoff_ch3 stateFormat Power&lt;br /&gt;
 attr Sonoff_ch3 subscribeReading_Power tele/sonoffch4/POWER3&lt;br /&gt;
 attr Sonoff_ch3 subscribeReading_state cmnd/sonoffch4/POWER3&lt;br /&gt;
 attr Sonoff_ch3 webCmd Ein:Aus&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_ch4 MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_ch4 IODev myBroker&lt;br /&gt;
 attr Sonoff_ch4 alias Sonoff CH4&lt;br /&gt;
 attr Sonoff_ch4 devStateIcon on:rc_GREEN:off off:rc_RED:on&lt;br /&gt;
 attr Sonoff_ch4 eventMap ON:on OFF:off ON:Ein OFF:Aus&lt;br /&gt;
 attr Sonoff_ch4 group Toröffner&lt;br /&gt;
 attr Sonoff_ch4 icon light_ceiling&lt;br /&gt;
 attr Sonoff_ch4 publishSet on off cmnd/sonoffch4/POWER4&lt;br /&gt;
 attr Sonoff_ch4 stateFormat Power&lt;br /&gt;
 attr Sonoff_ch4 subscribeReading_Power tele/sonoffch4/POWER4&lt;br /&gt;
 attr Sonoff_ch4 subscribeReading_state cmnd/sonoffch4/POWER4&lt;br /&gt;
 attr Sonoff_ch4 webCmd Ein:Aus&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Erweiterungen mit Sensoren=&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wozu überhaupt den Switch erweitern wenn es auch die Modelle TH10 und TH16 gibt?&lt;br /&gt;
&lt;br /&gt;
Manche Personen können dadurch dem Basteltrieb nachkommen, aber das wesentliche ist der Preis, da die Switches doch fast um die Hälfte billiger sind. Die Sensoren kosten ebenfalls kaum nennenswerte Beträge.&lt;br /&gt;
&lt;br /&gt;
Oder es hat schon jemand Switches im Einsatz und möchte jetzt zusätzlich die Temperatur erfassen!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sonoff Switch mit Temperatur + Luftfeuchte== &lt;br /&gt;
=== Hardware erweitern mit DHT22 ===&lt;br /&gt;
[[Datei:sonoff_sw_4.PNG|thumb|left|alt=Sonoff Switch Pinleiste mit Temperatur]]&lt;br /&gt;
Am Sonoff Switch wurde ja schon eine Stiftleiste zum Flashen eingelötet. Diese Stiftleiste bietet schon alle Anschlüsse welche für die Temperatur- und Luftfeuchtemessung benötigt werden. Am 5. Anschluß der Stifftleiste ist das Signal &amp;quot;SCL&amp;quot; (GPIO14) herausgeführt, welches für den DHT22 zur Erfassung der Messdaten benötigt wird. Der Sonsor wird mit einem einem 3-poligen Kabel (zB: ein Steckkabel für ein Breadboard oder direkt anlöten) verbunden. Damit der DHT22 korrekt funktioniert, wird ein Widerstand mit 4,7 K Ohm zwischen Vdd und Data am DHT22 zusätzlich benötigt. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_45.jpg|thumb|left|alt=AM2302 / DHT22]]&lt;br /&gt;
&lt;br /&gt;
Ansicht des DHT22 (AM2302) mit den aufgesteckten Verbindungskabeln. Von links nach rechts sind das&lt;br /&gt;
&lt;br /&gt;
 1 = VCC 3,3 V&lt;br /&gt;
 2 = Data&lt;br /&gt;
 3 = nc (nicht belegt)&lt;br /&gt;
 4 = GND&lt;br /&gt;
&lt;br /&gt;
Pin1 (VCC) des DHT22 muss also auf Pin1 der Stiftleiste, Pin2 (Data) auf Pin5 und Pin4 (GND) auf Pin4. &lt;br /&gt;
Pin2 und Pin1 soll hier noch der Widerstand aufgelötet werden.&lt;br /&gt;
&lt;br /&gt;
 1 ------- 1 (VDD)&lt;br /&gt;
 2 ------- 5 (GPIO14)&lt;br /&gt;
 3&lt;br /&gt;
 4 ------- 4 (GND)&lt;br /&gt;
 DHT22  Stiftleiste&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_44.jpg|thumb|left|alt=umgebautes Modul]]&lt;br /&gt;
Diese Darstellung zeigt das umgebaute und bereits verschlossene Modul. Auf der Seite des Tasters (bitte nur hier, da auf der anderen Seite die 230 V verlaufen und neben der Lebensgefahr auch den Sensor beeinflussen) ist hier einfach mit einer Eisensäge ein Schlitz eingesägt, der dient in diesem Falle als Kabeldurchführung. Ein Schlitz ist besser als ein Loch, da der Oberteil des Gehäuses sich leichter aufsetzen läßt. Wer ein längeres Kabel benötigt, kann natürlich auch ein 3-poliges Telefonkabel (oder Mikrokabel oder sonstiges) verwenden. Der Sensor sollte etwas Abstand zum Gehäuse haben, da dieses auch eine Eigenerwärmung hat. Wer es ganz originalgetreu lösen will, kann auch eine 3-polige Mini Buchse für Klinckenstecker (3,5mm) einbauen so wie sie am TH10/16 vorhanden ist.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Software anpassen am Beispiel MQTT ===&lt;br /&gt;
[[Datei:sonoff_sw_40.jpg|thumb|left|alt=Sonoff MQTT]]&lt;br /&gt;
&lt;br /&gt;
Die richtige Auswahl des Sensors und des verwendeten GPIO erfolgt im WEBIF des Modules und wird seit Tasmota nur mehr dort eingestellt. Eventuell sollte das aktuell verwendete [https://github.com/ddtlabs/expandJSON/ JSON Filter] geändert/erweitert werde (siehe beim Modul POW).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Software Anpassung DHT22 in FHEM ===&lt;br /&gt;
[[Datei:sonoff_sw_41.jpg|thumb|left|alt=umgebautes Modul]]&lt;br /&gt;
&lt;br /&gt;
Links in der Hardcopy sind die Readings die nach der Anpassung von FHEM (Broker) befüllt werden sollten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ### Temperatur und Luftfeuchte vom Sonoff Switch ###&lt;br /&gt;
 define Sonoff_Temp MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Temp IODev myBroker&lt;br /&gt;
 attr Sonoff_Temp icon temperature_humidity&lt;br /&gt;
 attr Sonoff_Temp room MQTT&lt;br /&gt;
 attr Sonoff_Temp stateFormat {sprintf(&amp;quot;Temperatur: %.1f Grad Feuchte: %.1f &amp;quot;, ReadingsVal($name,&amp;quot;temperature&amp;quot;,0), ReadingsVal($name,&amp;quot;humidity&amp;quot;,0))}&lt;br /&gt;
 attr Sonoff_Temp subscribeReading_Sensor tele/sonoff/SENSOR&lt;br /&gt;
Hier die zusätzliche Erweiterung um die Temperatur und die Luftfeuchte in FHEM. Der in der Topic verwendete Name &amp;quot;sonoff&amp;quot; muss natürlich der Einstellung in der Software am Switch entsprechen. Bei Verwendung mehrerer Switches muss natürlich auch der Name bei jedem geändert werden.&lt;br /&gt;
&lt;br /&gt;
Als Regexp für JSON kann dieser Filter eingesezt werden.&lt;br /&gt;
 define ej3 expandJSON .*\.SEN\..*:.*:.{.*} &lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Logfile für die Temperatur ===&lt;br /&gt;
 define SVG_FileLog_Sonoff_Temp SVG myDbLog:SVG_FileLog_Sonoff_Temp:HISTORY&lt;br /&gt;
 attr SVG_FileLog_Sonoff_Temp room MQTT&lt;br /&gt;
&lt;br /&gt;
Und schließlich fehlt noch das Logfile, damit der Temperaturverlauf auch in schönen Plots dargestellt werden kann.&lt;br /&gt;
Das hier verwendete Beispiel funktioniert nur mit einer DbLog.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Switch als Thermostat verwenden mit MQTT==&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_55.jpg|thumb|left|alt=Thermostat]]&lt;br /&gt;
Mit diesem einfachen Beispiel wird ein Pelett Ofen mit einem externen Thermostat (sonoff Switch oder TH10/16) gesteuert. Zum besseren Überblick wird die Steuerung in einzelne Module getrennt, es könnte aber auch einiges zu einer einzigen Definition zusammen gefasst werden. Der Thermostat könnte auch als Frostwächter benutzt werden und ein anderes Heizgerät steuern.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 ###################################&lt;br /&gt;
 ### Sonoff Thermostat Regelung ####&lt;br /&gt;
 ###################################&lt;br /&gt;
 define Sonoff_dht MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_dht IODev myBroker&lt;br /&gt;
 attr Sonoff_dht alias Raumtemperatur&lt;br /&gt;
 attr Sonoff_dht group Thermostat&lt;br /&gt;
 attr Sonoff_dht icon temperature_humidity&lt;br /&gt;
 attr Sonoff_dht publishSet ON OFF cmnd/sonoff_dht/POWER1&lt;br /&gt;
 attr Sonoff_dht room _Sonoff&lt;br /&gt;
 attr Sonoff_dht stateFormat {sprintf(&amp;quot;Temperatur: %.1f Grad Feuchte: %.1f &amp;quot;, ReadingsVal($name,&amp;quot;temperature&amp;quot;,0),  ReadingsVal($name,&amp;quot;humidity&amp;quot;,0))}&lt;br /&gt;
 attr Sonoff_dht subscribeReading_Sensor tele/sonoff_dht/SENSOR&lt;br /&gt;
 attr Sonoff_dht subscribeReading_state cmnd/sonoff_dht/POWER1&lt;br /&gt;
FHEM Definition zur Erfassung der Temperatur und der Luftfeuchte. Damit dieses Beispiel funktioniert, ist am Sonoff Modul die Topic &amp;quot;&#039;&#039;&#039;sonoff_dht&#039;&#039;&#039;&amp;quot; zu setzen. Dieser Temperaturwert dient dem Thermostat als ISTWert.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Sw MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Sw IODev myBroker&lt;br /&gt;
 attr Sonoff_Sw alias Pellets Ofen&lt;br /&gt;
 attr Sonoff_Sw devStateIcon on:rc_GREEN:off off:rc_RED:on&lt;br /&gt;
 attr Sonoff_Sw eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_Sw group Thermostat&lt;br /&gt;
 attr Sonoff_Sw icon sani_boiler_temp&lt;br /&gt;
 attr Sonoff_Sw publishSet ON OFF cmnd/sonoff_dht/POWER1&lt;br /&gt;
 attr Sonoff_Sw room _Sonoff&lt;br /&gt;
 attr Sonoff_Sw stateFormat Licht&lt;br /&gt;
 attr Sonoff_Sw subscribeReading_Licht tele/sonoff_dht/POWER1&lt;br /&gt;
 attr Sonoff_Sw subscribeReading_state cmnd/sonoff_dht/POWER1&lt;br /&gt;
 attr Sonoff_Sw webCmd ON:OFF&lt;br /&gt;
FHEM Definition zum Absetzen der Befehle für das Relais (Thermostat) Ein- / Aus. Wenn das zu steuernde Geräte einen potentialfreien Thermostatanschluß benötigt (in den meisten Fällen), muss noch ein Relais dazwischen geschaltet werden um die Trennung der Netzspannung zu gewährleisten.&lt;br /&gt;
&lt;br /&gt;
 define ThermostatPellets dummy&lt;br /&gt;
 attr ThermostatPellets alias Pellets Ofen Sollwert&lt;br /&gt;
 attr ThermostatPellets group Thermostat&lt;br /&gt;
 attr ThermostatPellets icon temp_control&lt;br /&gt;
 attr ThermostatPellets room _Sonoff&lt;br /&gt;
 attr ThermostatPellets setList state:0,5,10,12,13,14,15,16,17,17.5,18,18.5,19,19.5,20,20.5,21,21.5,22,23,24,25,26,27&lt;br /&gt;
 attr ThermostatPellets webCmd state&lt;br /&gt;
Die Sollwertvorgabe für das Thermostat durch einen Dummy, damit können die gewünschten Temperaturen eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
 ### sofort ausführen wenn neuer Sollwert eingestellt wird ###&lt;br /&gt;
 define Thermostat_on_notify notify ThermostatPellets IF (ReadingsVal(&amp;quot;Sonoff_Sw&amp;quot;,&amp;quot;state&amp;quot;,0) eq &amp;quot;OFF&amp;quot; &amp;amp;&amp;amp; (ReadingsVal(&amp;quot;Sonoff_dht&amp;quot;,&amp;quot;temperature&amp;quot;,0) &amp;lt;= Value(&amp;quot;ThermostatPellets&amp;quot;))) (set Sonoff_Sw ON)&lt;br /&gt;
 define Thermostat_off_notify notify ThermostatPellets IF (ReadingsVal(&amp;quot;Sonoff_Sw&amp;quot;,&amp;quot;state&amp;quot;,0) eq &amp;quot;ON&amp;quot; &amp;amp;&amp;amp; (ReadingsVal(&amp;quot;Sonoff_dht&amp;quot;,&amp;quot;temperature&amp;quot;,0) &amp;gt; Value(&amp;quot;ThermostatPellets&amp;quot;))) (set Sonoff_Sw OFF)&lt;br /&gt;
Mit einem notify wird die manuelle Änderung des Sollwertes überwacht und sofort reagiert.&lt;br /&gt;
&lt;br /&gt;
 ## zyklisch prüfen ob Sollwert erreicht wurde ###&lt;br /&gt;
 define Thermostat_on at +*00:15:00 IF (ReadingsVal(&amp;quot;Sonoff_Sw&amp;quot;,&amp;quot;Licht&amp;quot;,0) eq &amp;quot;OFF&amp;quot; &amp;amp;&amp;amp; (ReadingsVal(&amp;quot;Sonoff_dht&amp;quot;,&amp;quot;temperature&amp;quot;,0) &amp;lt;= Value(&amp;quot;ThermostatPellets&amp;quot;))) (set Sonoff_Sw ON)&lt;br /&gt;
 define Thermostat_off at +*00:15:00 IF (Value(&amp;quot;Sonoff_Sw&amp;quot;) eq &amp;quot;ON&amp;quot; &amp;amp;&amp;amp; (ReadingsVal(&amp;quot;Sonoff_dht&amp;quot;,&amp;quot;temperature&amp;quot;,0) &amp;gt; Value(&amp;quot;ThermostatPellets&amp;quot;))) (set Sonoff_Sw OFF)&lt;br /&gt;
Hier noch die Soll- Ist Wertvergleiche zur Steuerung. Es wird alle 15 Minuten überprüft ob die Temperatur erreicht ist. Bei einer trägen Heizung sollten 15 Minuten ausreichend sein, wer will kann dies aber auch alle 5 oder 10 Minuten prüfen.&lt;br /&gt;
Da des öfteren die Bezeichnungen der Readings im Sketch geändert werden ( zB:temperature ), bitte die richtige Schreibweise ( Groß/Klein ) in den Readings kontrollieren und gegebenenfalls hier anpassen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Switch mit Bewegungsmelder HC-SR501==&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_pir_1.jpg|thumb|left|alt=Bewegungsmelder]]&lt;br /&gt;
Basierend auf dem Wall Switch MQTT Sketch von Arends wurde hier ein Sonoff BASIC + PIR HC-SR501 in eine größere Verteilerdose eingebaut, der Sonoff wurde dabei etwas gekürzt. Die Bewegungsmelder sind ab etwa 70 Cent erhältlich.&lt;br /&gt;
&lt;br /&gt;
Der Sketch kann auch den Blink Modus. Damit kann man im Alarmfall z.B. Alle Strahler rings ums Haus blinken lassen.&lt;br /&gt;
&lt;br /&gt;
Mehr dazu kann hier im {{Link2Forum|Topic=63824|LinkText=Forum}}im Diskussionsthread nachgelesen werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_pir_2.jpg|thumb|left|alt=Bewegungsmelder]]&lt;br /&gt;
Ein Beispiel wir der Bewegungsmelder in der Feuchtraumdose montiert werden kann. Wird der Bewegungsmelder abgesetzt vom Switch montiert, ist darauf zu achten das die Kabel nicht zu lange werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Spannungsversorgung des HC-SR501===&lt;br /&gt;
[[Datei:sonoff_pir_4.jpg|thumb|left|alt=5V für Bewegungsmelder]]&lt;br /&gt;
Der HC-SR501 wird vom Sonoff versorgt, wobei hier die 3,3 V nicht immer ausreichen. Es ist deshalb am HC-SR501 eine Diode zu überbrücken, dann reichen die 3,3V vom Sonoff. Es können aber auch am Sonoff die 5V angezapft werden. Hier im Bild dargestellt wo die 5V angezapft werden können.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_pir_5.jpg|thumb|left|alt=3,3V für Bewegungsmelder]]&lt;br /&gt;
Hier eine kleine Übersicht der wichtigsten Teile und deren Platzierung am HC-SR501. &lt;br /&gt;
Den PIR kann man auch mit 3,3V betreiben wenn man die Diode am Eingang nach Vcc überbrückt, dann reicht die Spannung für einen reibungslosen Betrieb völlig aus. Dies gilt für den HC-SR501, wird ein anderer PIR verwendet muss man nachschauen ob das auch möglich ist, ansonsten die 5V Variante wählen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===Einbindung des HC-SR501 in FHEM===&lt;br /&gt;
 # ------------- Sonoff_pir mit Bewegungsmelder ---------------&lt;br /&gt;
 define Sonoff_pir MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_pir IODev myBroker&lt;br /&gt;
 attr Sonoff_pir eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_pir group Sonoff&lt;br /&gt;
 attr Sonoff_pir icon hue_filled_br30&lt;br /&gt;
 attr Sonoff_pir publishSet ON OFF cmnd/sonoff_pir/1/POWER&lt;br /&gt;
 attr Sonoff_pir room MQTT&lt;br /&gt;
 attr Sonoff_pir stateFormat Licht&lt;br /&gt;
 attr Sonoff_pir subscribeReading_Licht stat/sonoff_pir/POWER&lt;br /&gt;
 attr Sonoff_pir subscribeReading_state cmnd/sonoff_pir/1/POWER&lt;br /&gt;
 attr Sonoff_pir webCmd :&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel wie der Sonoff Switch in FHEM eingebunden wird. Wenn im Sketch der Prefix von stat auf tele geändert wurde, ist dies auch hier durchzuführen ( subscribeReading_Licht tele/sonoff_pir/POWER ), ansonsten bleibt es so wie im Beispiel. Getestet wurde dieses Beispiel mit Version 5.5.2i. Die Topic sollte auf den Namen &amp;quot;sonoff_pir&amp;quot; eingestellt werden. Bei anderen Namen ist dies entsprechend in FHEM anzupassen. &lt;br /&gt;
&lt;br /&gt;
Mit dem Kommando &#039;&#039;&#039;SwitchTopic Alarm_SO2&#039;&#039;&#039; ( direkt im Webinterface des Sonoff ) wird der Wall Switch GPIO14 vom Sonoff entkoppelt und somit sendet der Bewegungsmelder direkt an FHEM --&amp;gt; Motion_pir MQTT_DEVICE.&lt;br /&gt;
Bei den älteren Versionen vor Tasmota war das noch das Kommando ButtonTopic.&lt;br /&gt;
&lt;br /&gt;
Es sollte auch unbedingt kontrolliert werden, wie die Ausgabe des Alarmes in der Console erfolgt. Erscheint hier die Meldung &amp;quot;cmnd/Alarm_SO2/POWER TOGGLE&amp;quot; dann muss mit dem Kommando &amp;quot;&#039;&#039;&#039;SwitchMode 1&#039;&#039;&#039;&amp;quot; das Ausgabeformat umgeschaltet werden, erst dann kommt das gewünschte Format &amp;quot;On&amp;quot; und &amp;quot;OFF&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 # ------------------ Motion_pir MQTT_DEVICE -----------------&lt;br /&gt;
 define Motion_pir MQTT_DEVICE&lt;br /&gt;
 attr Motion_pir IODev myBroker&lt;br /&gt;
 attr Motion_pir devStateIcon on:on-for-timer off:off&lt;br /&gt;
 attr Motion_pir eventMap ON:on OFF:off&lt;br /&gt;
 attr Motion_pir group Sonoff&lt;br /&gt;
 attr Motion_pir icon people_sensor&lt;br /&gt;
 attr Motion_pir room MQTT&lt;br /&gt;
 attr Motion_pir stateFormat Alarm&lt;br /&gt;
 attr Motion_pir subscribeReading_Alarm cmnd/Alarm_SO2/POWER1&lt;br /&gt;
Die Motion_pir dient nun zur eigentlichen Einschaltung des Lichtes und sendet das Kommando &#039;&#039;&#039;cmnd/Alarm_SO2/POWER1&#039;&#039;&#039; an den entkoppelten GPIO 14 des Switch.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # ------------------ DoIf zur Motion Abfrage -----------------&lt;br /&gt;
 define di_Sonoff_pir_Alarm DOIF ([Motion_pir:&amp;quot;on&amp;quot;] and [Tag_Nacht:twilight_weather] &amp;lt; 35) (set Sonoff_pir on) DOELSEIF ([Motion_pir:&amp;quot;off&amp;quot;] and [Tag_Nacht:twilight_weather] &amp;lt; 35) (set Sonoff_pir off)&lt;br /&gt;
 attr di_Sonoff_pir_Alarm comment Abhängig von Helligkeitssensor wird nachts,bei Bewegung das Licht eingeschaltet!&lt;br /&gt;
 attr di_Sonoff_pir_Alarm group Sonoff&lt;br /&gt;
 attr di_Sonoff_pir_Alarm room MQTT&lt;br /&gt;
Zusätzlich kann nun mit einem &#039;&#039;&#039;Doif&#039;&#039;&#039; verknüpft werden um das Ganze mit Tag_Nacht:twilight_weather dann in Abhängigkeit der Helligkeit zu schalten. Selbstverständlich kann jede andere Quelle mit einem Helligkeitswert verwendet werden.&lt;br /&gt;
&lt;br /&gt;
===Alarmausgabe über Grouptopic===&lt;br /&gt;
 # ------------------------ Sonoffs Group ----------------------&lt;br /&gt;
 define Sonoffs MQTT_DEVICE&lt;br /&gt;
 attr Sonoffs IODev myBroker&lt;br /&gt;
 attr Sonoffs eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoffs group Sonoff&lt;br /&gt;
 attr Sonoffs icon hue_filled_br30&lt;br /&gt;
 attr Sonoffs publishSet ON OFF cmnd/sonoffs/POWER1&lt;br /&gt;
 attr Sonoffs room MQTT&lt;br /&gt;
 attr Sonoffs stateFormat state&lt;br /&gt;
 attr Sonoffs subscribeReading_Licht stat/sonoffs/POWER1&lt;br /&gt;
 attr Sonoffs subscribeReading_state cmnd/sonoffs/POWER1&lt;br /&gt;
Wer möchte kann auch mit der Group Topic mehrere Switches mit Bewegungsmelder zusammenfassen und alle Lampen im Alarmfall gemeinsam in den Blinkmodus schalten. cmnd/sonoffs ist das Kommando für die Group Topic, sofern diese vom User nicht verändert wurde.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Switch als IR-Sender verwenden == &lt;br /&gt;
===Einrichtung ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_ir_1.jpg|thumb|left|alt=IR]]&lt;br /&gt;
Mit einem normalen Sonoff Basic Modul kann dies zu einer IR Fernbedienung hochgerüstet werden.&lt;br /&gt;
&lt;br /&gt;
Der einfache Schaltplan ist [https://raw.githubusercontent.com/altelch/SonoffIR/master/SonoffIR-Schematics.png hier] zu finden und der Nachbau ist sehr einfach. Man kann aber auch aus einer alten FB die IR-Diode ausbauen und zusammen schalten. Ein kleines Howto ist in [https://github.com/altelch/SonoffIR diesem Wiki] auf Github zu finden.&lt;br /&gt;
&lt;br /&gt;
Verwendet wird dazu der Arends Sketch.&lt;br /&gt;
&lt;br /&gt;
Als erstes sucht man sich auf [http://lirc.sourceforge.net/remotes/ LIRC]die entsprechenden FB-Codes, im Beispiel hier für einen Samsung TV 55&amp;quot; Curved UHD HU8580. Die FB ist zwar nicht exakt dieselbe, aber die Befehle passen soweit. Im Webif des Sonoff Modules ist beim angeschlossenen GPIO der IR-Diode &amp;quot;8 IRremote&amp;quot; einzustellen.&lt;br /&gt;
&lt;br /&gt;
Link zum {{Link2Forum|Topic=67316|LinkText=Forums Thread}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Wichtig sind dabei folgende Daten:&lt;br /&gt;
 name  Samsung_BN59-00940A&lt;br /&gt;
 bits           16&lt;br /&gt;
 pre_data_bits  16&lt;br /&gt;
 pre_data       0xE0E0&lt;br /&gt;
 Power On/Off   0x40BF[/code]&lt;br /&gt;
&lt;br /&gt;
Nun stellt man sich den Sendestring zusammen:&lt;br /&gt;
 predata+Befehl =  E0E0&#039;&#039;&#039;40BF&#039;&#039;&#039; (hex) = 3772793023 (dec) und 32 Bit Datenlänge.&lt;br /&gt;
&lt;br /&gt;
 Der JSON String für den IRSend ist laut [https://github.com/arendst/Sonoff-Tasmota/wiki/Commands Arends Wiki] folgender.&lt;br /&gt;
 IRsend    | {&amp;quot;protocol&amp;quot;: &amp;quot;&amp;lt;proto&amp;gt;&amp;quot;, | Send IR remote control as JSON encapsulated command.&lt;br /&gt;
           |   &amp;quot;bits&amp;quot;: 1..32         | &amp;lt;proto&amp;gt; is NEC, SONY, RC5, RC6, DISH, JVC or SAMSUNG&lt;br /&gt;
           |   &amp;quot;data&amp;quot;: 1..(2^32)-1}  | bits are the required number of data bits.&lt;br /&gt;
           |                         | data is the data frame as 32 bit unsigned integer.&lt;br /&gt;
           |                         | See http://www.lirc.org/ for more info.&lt;br /&gt;
&lt;br /&gt;
das ergibt dann unseren Befehl für die Kommandozeile am Modul. Die Bitlänge für Pre und Data sind ebenfalls zu addieren (16 + 16 = 32 Bit) und beim Arends Sketch muss im JSON Format gesendet werden:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;irsend  {&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772793023}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
oder hier für die Kommandozeile am Broker:&lt;br /&gt;
 &#039;&#039;&#039;mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772793023}&#039;&#039;&#039;&#039;&lt;br /&gt;
TestSwitch ist hier der verwendete Name des Sonoff Moduls, wird ein anderer Name verwendet ist dieser hier anzupassen.&lt;br /&gt;
&lt;br /&gt;
Jedesmal wenn nun der Befehl gesendet wird, wird entweder Ein- oder Aus geschaltet. Die Verzögerung über Wlan ist vernachlässigbar. Ebenso können die Kanäle oder die Laustärke verstellt werden. Im Prinzip funktionieren alle Befehle die auf der FB vorhanden sind.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===FHEM Beispiel===&lt;br /&gt;
[[Datei:sonoff_ir_2.jpg|thumb|left|alt=IR]]&lt;br /&gt;
Hier ein Beispiel wie der Code für die Fernbedienung in Fhem eingebunden werden kann.&lt;br /&gt;
 define RC_TV remotecontrol&lt;br /&gt;
 attr RC_TV rc_iconpath icons/remotecontrol&lt;br /&gt;
 attr RC_TV rc_iconprefix black_btn_&lt;br /&gt;
 attr RC_TV room Entwicklung&lt;br /&gt;
 attr RC_TV row00 KEY_POWER:POWEROFF,:blank,:blank&lt;br /&gt;
 attr RC_TV row02 :blank,:blank,:blank&lt;br /&gt;
 attr RC_TV row03 KEY_1:1,KEY_2:2,KEY_3:3&lt;br /&gt;
 attr RC_TV row04 KEY_4:4,KEY_5:5,KEY_6:6&lt;br /&gt;
 attr RC_TV row05 KEY_7:7,KEY_8:8,KEY_9:9&lt;br /&gt;
 attr RC_TV row06 :blank,KEY_0:0,:blank&lt;br /&gt;
 attr RC_TV row07 :blank,:blank,:blank&lt;br /&gt;
 attr RC_TV row08 KEY_VOLUMEUP:UP,KEY_MUTE:MUTE,KEY_CHANNELUP:CHUP&lt;br /&gt;
 attr RC_TV row09 KEY_VOLUMEDOWN:DOWN,:blank,KEY_CHANNELDOWN:CHDOWN&lt;br /&gt;
&lt;br /&gt;
 define Samsung_TV notify RC_TV &amp;quot;/opt/fhem/ircmd.sh $EVENT&amp;quot;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
In einem externen Shell Script werden die Parameter übergeben und der Sendestring für den IRSend zusammen gestellt. Das Script ins FHEM Home Verzeichnis kopieren ( /opt/fhem ) und die Rechte auf 755 setzen.&lt;br /&gt;
[https://wiki.fhem.de/wiki/Remotecontrol Link zum Wiki] einer universellen Fernbedienung.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh -e&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_POWER&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772793023}&#039;&lt;br /&gt;
 fi&lt;br /&gt;
 # E0E0E01F   3772833823&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_VOLUMEUP&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772833823}&#039;&lt;br /&gt;
 fi&lt;br /&gt;
 # E0E0D02F   3772829743&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_VOLUMEDOWN&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772829743}&#039;&lt;br /&gt;
 fi&lt;br /&gt;
 # E0E0F00F   3772837903&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_MUTE&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772837903}&#039;&lt;br /&gt;
 fi&lt;br /&gt;
 # E0E020DF   3772784863&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_1&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772784863}&#039;&lt;br /&gt;
 fi&lt;br /&gt;
 # E0E0A05F   3772817503&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_2&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772817503}&#039;&lt;br /&gt;
 fi   &lt;br /&gt;
 # E0E0609F   3772801183&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_3&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772801183}&#039;&lt;br /&gt;
 fi &lt;br /&gt;
 # E0E010EF   3772780783&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_4&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772780783}&#039;&lt;br /&gt;
 fi &lt;br /&gt;
 # E0E0906F   3772813423&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_5&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772813423}&#039;&lt;br /&gt;
 fi &lt;br /&gt;
 # E0E050AF   3772797103&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_6&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772797103}&#039;&lt;br /&gt;
 fi &lt;br /&gt;
 # E0E030CF   3772788943&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_7&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772788943}&#039;&lt;br /&gt;
 fi&lt;br /&gt;
 # E0E0B04F   3772821583&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_8&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772821583}&#039;&lt;br /&gt;
 fi &lt;br /&gt;
 # E0E0708F   3772805263&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_9&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772805263}&#039;&lt;br /&gt;
 fi         &lt;br /&gt;
 # E0E08877   3772811383&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_0&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772811383}&#039;&lt;br /&gt;
 fi&lt;br /&gt;
 # E0E048B7   3772795063&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_CHANNELUP&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772795063}&#039;&lt;br /&gt;
 fi&lt;br /&gt;
 # E0E008F7   3772778743&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_CHANNELDOWN&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772778743}&#039;&lt;br /&gt;
 fi  &lt;br /&gt;
Das Script kann sehr leicht für jede andere FB abgeändert werden und auch noch zusätzliche Tasten eingebunden werden. Bitte nicht auf die vorangestellten Pre-Data-Bits vergessen. Auf die Verwendung des Scriptes kann auch verzichtet werden, wenn der JSON String in Fhem direkt zusammen gestellt wird. Für den Nachbau ist es aber leichter verständlicher und kann auch leicht selber an die eigene FB angepasst werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Development Board==&lt;br /&gt;
===Einrichtung===&lt;br /&gt;
[[Datei:sonoff_dev_1.jpg|thumb|left|alt=Dev. Board]]&lt;br /&gt;
Das Board kommt ohne Software und muss zunächst mit einem Sketch bespielt werden. Hier kurz beschrieben der Arends Sketch, es funktioniert aber mit ESPEasy genau so gut. &lt;br /&gt;
&lt;br /&gt;
Damit die vielen GPIO&#039;s auch nach freiem Wunsch zugeordnet werden können, müssen die erforderten Einstellungen da allerdings in der sonoff_template.h bekannt gegeben werden. Hier wurde der GPIO12 und 13 einem Relais zugeordnet. Der Rest kann dann frei im Webif konfiguriert werden (Type = User Test).&lt;br /&gt;
&lt;br /&gt;
Link zum [https://www.itead.cc/wiki/Sonoff_DEV Wiki des Herstellers]&lt;br /&gt;
&lt;br /&gt;
Link zum [https://www.itead.cc/wiki/images/3/30/01.73.02.0101_Sonoff_DEV_Schematic.pdf Schaltplan]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Anschlüsse und GPIO&#039;s am Board.&lt;br /&gt;
&lt;br /&gt;
 3V3    VDD   3.3V Power supply output  &lt;br /&gt;
 GND    GND   Power supply pin  &lt;br /&gt;
  4    GPIO4  GPIO4  &lt;br /&gt;
  5    GPIO5  GPIO5  &lt;br /&gt;
 12    GPIO12 GPIO12/HSPIQ  &lt;br /&gt;
 13    GPIO13 GPIO13/HSPID  &lt;br /&gt;
 14    GPIO14 GPIO14/HSPICLK  &lt;br /&gt;
 ADC    ADC   Detect analog input voltage（0~1V）  &lt;br /&gt;
 RX    U0RXD  Flash programming UART RX;GPIO3  &lt;br /&gt;
 TX    U0TXD  Flash programming UART TX;GPIO1;SPICS1  &lt;br /&gt;
 E-FW  GPIO0  GPIO0/SPICS2/Serial programming enable pin  &lt;br /&gt;
 RESET RESET  External reset signal(low active)  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_dev_2.jpg|thumb|left|alt=Dev. Board]]&lt;br /&gt;
hier können die wesentlichen Funktionen (Relaisfunktion oder freier GPIO) konfiguriert werden. Man zählt die GPIO&#039;s von oben nach unten und wenn einer nicht benötigt wird, wird eine 0 angegeben.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
 { &amp;quot;User Test&amp;quot;,       // Sonoff Basic User Test&lt;br /&gt;
     GPIO_KEY1,        // GPIO00 Button&lt;br /&gt;
     0,&lt;br /&gt;
     GPIO_USER,        // GPIO02 Optional sensor&lt;br /&gt;
     GPIO_USER,        // GPIO03 Serial TXD and Optional sensor&lt;br /&gt;
     GPIO_USER,        // GPIO04 Optional sensor&lt;br /&gt;
     GPIO_USER,        // GPIO05 Optional sensor&lt;br /&gt;
     0, 0, 0, 0, 0, 0,&lt;br /&gt;
     &#039;&#039;&#039;GPIO_REL2&#039;&#039;&#039;,        // GPIO12 Relay 2 (0 = Off, 1 = On)&lt;br /&gt;
     &#039;&#039;&#039;GPIO_REL1&#039;&#039;&#039;,        // GPIO13 Relay 1 (0 = Off, 1 = On)&lt;br /&gt;
     GPIO_USER,        // GPIO14 Optional sensor&lt;br /&gt;
     0, 0&lt;br /&gt;
  }&lt;br /&gt;
Hier wurde am Modul &amp;quot;&#039;&#039;&#039;User Test&#039;&#039;&#039;&amp;quot; in der Datei &amp;quot;sonoff_template.h&amp;quot; abgeändert, um 2 Relais über GIPO12 und GPIO13 ansteuern zu können. &lt;br /&gt;
&lt;br /&gt;
Gedacht ist es als Enwicklerboard, es ist aber auch genau so gut für den produktiven Einsatz geeignet, hat aber kein eingebautes Netzteil. Es ist zum flashen &#039;&#039;&#039;kein externes FTDI Modul notwendig&#039;&#039;&#039;, das hat es bereits an Board und es muss lediglich der USB Treiber für Windows installiert werden. Geflasht wird dann mit dem USB Kabel der Spannungsversorgung.&lt;br /&gt;
&lt;br /&gt;
Die 4-pol. Stecker haben das &#039;&#039;&#039;Rastermaß 2.0 mm&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
===Anbindung FHEM===&lt;br /&gt;
&lt;br /&gt;
je nach Anwendungszweck wird entweder ein normaler Schalter oder wie bei DHT16 beschrieben ein oder mehrere Sensoren angebunden.&lt;br /&gt;
Beim Arends Sketch ist zu beachten, dass pro Sensorgruppe nur ein Sensor angeschlossen werden kann.&lt;br /&gt;
&lt;br /&gt;
 •DHT11 Temperature and Humidity -  DHT11 (1)  in group 1&lt;br /&gt;
 •DHT21 Temperature and Humidity -  AM2301 (2) in group 1&lt;br /&gt;
 •AM2301 Temperature and Humidity - AM2301 (2) in group 1&lt;br /&gt;
 •DHT22 Temperature and Humidity -  DHT22 (3)  in group 1&lt;br /&gt;
 •AM2302 Temperature and Humidity - DHT22 (3)  in group 1&lt;br /&gt;
 •AM2321 Temperature and Humidity - DHT22 (3)  in group 1&lt;br /&gt;
 •DS18B20 Temperature           - DS18x20 (4)  in group 2&lt;br /&gt;
 Enable option  USE_DS18x20  in  user_config.h  for multiple sensors using OneWire library&lt;br /&gt;
 •DS18S20 Temperature          -  DS18x20 (4)  in group 2&lt;br /&gt;
 Enable option  USE_DS18x20  in  user_config.h  using OneWire library&lt;br /&gt;
 •External switch               -  Switch (9) &lt;br /&gt;
 Use  SwitchMode  to tune it&#039;s behaviour&lt;br /&gt;
 •HC-SR501 PIR Motion Detection -  Switch (9) &lt;br /&gt;
 Use  SwitchMode  to tune it&#039;s behaviour&lt;br /&gt;
Beispiel: 2 DHT22 funktionieren nicht, aber ein DHT22 und ein DS18b20 schon. Wer mehrere Sensoren benötigt, muss auf ESPEasy ausweichen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:IP Components]]&lt;br /&gt;
--[[Benutzer:Reinhart|Reinhart]] ([[Benutzer Diskussion:Reinhart|Diskussion]]) 23. Feb. 2017 (CET)&lt;/div&gt;</summary>
		<author><name>Reinhart</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Sonoff&amp;diff=22254</id>
		<title>Sonoff</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Sonoff&amp;diff=22254"/>
		<updated>2017-08-19T06:53:39Z</updated>

		<summary type="html">&lt;p&gt;Reinhart: /* Sonoff Switch mit Bewegungsmelder HC-SR501 */  Anpassung Tasmota 5.x&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=Ankopplung der Sonoff Module an Fhem&lt;br /&gt;
|ModType=&lt;br /&gt;
|ModForumArea=ESP8266&lt;br /&gt;
|ModTechName=Sonoff&lt;br /&gt;
|ModOwner=Reinhart &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Einleitung&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die [https://www.itead.cc/sonoff-wifi-wireless-switch.html Fa. Itead] bietet kostengünstige &amp;quot;Sonoff&amp;quot; Produkte an, die den [http://dl.itead.cc/IM151116002/0A-ESP8266_Specifications_v4.1.pdf ESP8266 Chip] On Board haben und somit die ideale Grundlage für [http://www.esp8266.nu/index.php/Main_Page ESPEasy] und für [https://forum.fhem.de/index.php/board,46.0.html FHEM] darstellen. Unverändert nutzen diese Geräte allerdings eine in China basierende Cloudlösung und müssen für die Benutzung in FHEM umgeflasht werden. Dieser Artikel beschreibt die Ankopplung der Sonoff Module an FHEM mit ESPEasy oder (Arends) MQTT mit Tamota. Hierbei sind Grundkenntnisse beim arduino (um die Firmware neu zu flashen) sowie im Umgang mit 230V notwendig.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bitte unbedingt die elektrotechnischen Sicherheitsrichtlinien beachten und einhalten!&#039;&#039;&#039;&lt;br /&gt;
[[Datei:sonoff_sw_15.jpg|thumb|left|alt=Warnung Netzspannung]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Achtung: An dem Modul liegt Netzspannung an, die lebensgefährlich ist. Es dürfen nur entsprechend ausgebildete Personen dieses Modul in Betrieb nehmen. Zum Umbau und zur Softwareaktualisierung darf keine Netzspannung angeschlossen sein&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Wie gefährlich das hantieren mit Netzspannung sein kann, zeigt das Beispiel eines [http://mysku.ru/blog/china-stores/45762.html russischen Anwenders]. Er hat beim Flashen die Netzspannung am Modul gelassen und somit (über die Verbindung mit dem Netzteil des Laptops) lebensgefährliche Spannung auf die FTDI Schnittstelle gebracht. Das Modul ist dabei abgeraucht!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Links des Herstellers&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://www.itead.cc/blog/user-guide-for-sonoff-slampher User Manual von Itead]&lt;br /&gt;
&lt;br /&gt;
[https://www.itead.cc/wiki/images/6/6b/Sonoff_schmatic.pdf Sonoff Schaltplan]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Modelle (mit Produktübersicht) ==&lt;br /&gt;
&lt;br /&gt;
Eine Übersichtliste der verschiedenen Produkte mit technischen Kurzangaben.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:right&amp;quot;&lt;br /&gt;
! Produkt Name !! Beschreibung !! Spannungsversorgung !!  Imax !! Pmax !! Frequenz !! Schaltplan !! Link&lt;br /&gt;
|-&lt;br /&gt;
| Sonoff || Wireless control switch || 90~250V AC || 10A || 2200W || 2.4Ghz || [http://wiki.iteadstudio.com/Sonoff Plan] || [https://www.itead.cc/smart-home/sonoff-wifi-wireless-switch.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| Sonoff RF || 433 RF remote || 90~250V AC || 10A || 2200W || 2.4Ghz || [http://wiki.iteadstudio.com/Sonoff_RF Plan] || [https://www.itead.cc/smart-home/im151116003.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| Sonoff SV || Low voltage Input || 5~24V DC || 10A || 240W DC || 2.4Ghz || [http://wiki.iteadstudio.com/Sonoff_SV Plan] || [https://www.itead.cc/smart-home/sonoff-sv.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| Sonoff TH10/TH16 || Monitor and set Temp.&amp;amp;Hum. ||  90~250V AC || 10A/16A || 2200W(10A)/3500W(16A)	 || 2.4Ghz || [http://wiki.iteadstudio.com/Sonoff_TH_10/16 Plan] || [https://www.itead.cc/smart-home/sonoff-th.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Sonoff Dual || Remote control 2 devices ||  90~250V AC || 16A || 3500W || 2.4Ghz || [https://www.itead.cc/wiki/Sonoff_Dual Plan] || [https://www.itead.cc/sonoff-dual.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Sonoff Pow || Report power &amp;amp;power usage ||  90~250V AC || 16A || 3500W || 2.4Ghz || [https://www.itead.cc/wiki/Sonoff_Pow Plan] || [https://www.itead.cc/sonoff-pow.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Sonoff LED || WiFi Control Dimming LED ||  180~265V AC || 0.3-0.6A || 42W || 2.4Ghz ||  kein || [https://www.itead.cc/sonoff-led.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Sonoff Touch || WiFi wall touch switch ||  90~250V AC || 2A || 400W || 2.4Ghz || kein || [https://www.itead.cc/sonoff-touch.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Slampher || Wireless control light holder ||  90~250V AC || 2A || 200W || 2.4Ghz || [http://wiki.iteadstudio.com/Slampher Plan] || [https://www.itead.cc/smart-home/slampher-wifi-wireless-light-holder.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  S20 Smart Socket || Smart socket || 	90~250V AC || 10A || 2000W || 2.4Ghz || kein || [https://www.itead.cc/smart-home/smart-socket-eu.html EU-Stecker] &lt;br /&gt;
|-&lt;br /&gt;
|  iFan || Smart fan ||  185~264V AC ||﹤1A || 60W || 2.4Ghz || kein || [https://www.itead.cc/smart-home/smart-socket-eu.html EU-Stecker] &lt;br /&gt;
|-&lt;br /&gt;
| Motor/Pump Control Switch || clockwise/anticlockwise running ||  5V/7~32V DC || 10A || 50~320W || 2.4Ghz || kein || [https://www.itead.cc/smart-home/motor-reversing-wifi-wireless-switch.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| 1 Chnl Inching/self-locking Switch || Access control ||  	5V/12V DC || 10A || 50/120W || 2.4Ghz || kein || [https://www.itead.cc/smart-home/inching-self-locking-wifi-wireless-switch.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  4 Chnl Inching/self-locking/inter-locking Switch || Access control, rolling door control ||  5V/5~32V DC/90~250V AC || 10A || 50~320W/2500W || 2.4Ghz || kein || [https://www.itead.cc/ifan.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Model IM151116002: Erstes Modell===&lt;br /&gt;
Link zum Hersteller: [https://www.itead.cc/sonoff-wifi-wireless-switch.html Sonoff WiFi Wireless Smart Switch for MQTT COAP Smart Home]&lt;br /&gt;
[[Datei:sonoff_sw_0.jpg|thumb|left|alt=sonoff Switch]]&lt;br /&gt;
&lt;br /&gt;
Das sonoff Modul ist in einem zweckmäßigen Gehäuse verbaut.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_1.jpg|thumb|left|alt=sonoff Switch von vorne]]&lt;br /&gt;
&lt;br /&gt;
Die Platine ist sehr übersichtlich aufgebaut und der Hersteller hat zudem Vorbereitungen zum Flashen einer alternativen Software vorgesehen (über serielle Schnittstelle via FTDI-Modul). Mit einer alternativen Software wie ESPEasy kann &#039;&#039;&#039;sonoff&#039;&#039;&#039; an FHEM leicht angebunden werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_3.jpg|thumb|left|alt=sonoff Switch von hinten]]&lt;br /&gt;
Die stromführenden Leitungen wurden mit Lötzinn vom Hersteller verstärkt um die angegebenen Stromstärken mit geringer Hitzeentwicklung zu transportieren.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung: Bitte vor den Arbeiten kontrollieren, das an der Platine keine Netzspannung angeschlossen ist, LEBENSGEFAHR!&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Model IM160712005: TH 10A/16A ===&lt;br /&gt;
Link zum Hersteller: [https://www.itead.cc/sonoff-th.html Sonoff TH 10A/16A WiFi Smart Switch]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sonoff_TH_10A-16A_kleiner.jpg|thumb|left|alt=TH10 / TH16 weitere GPIO zugänglich machen]]&lt;br /&gt;
Der Hersteller hat eine Platine für eine weitere Stiftleiste vorbereitet, die jedoch bestückt werden muss. Die nicht beschalteten Stifte können dann genutzt werden, um die &amp;quot;verdeckten&amp;quot; GPIO zugänglich zu machen. Die Verdrahtung kann dem Bild entnommen werden.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Achtung: Bitte vor den Arbeiten kontrollieren, das an der Platine keine Netzspannung angeschlossen ist, LEBENSGEFAHR!&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Model IM160811001: Sonoff Dual ===&lt;br /&gt;
Link zum Hersteller: [https://www.itead.cc/sonoff-dual.html Sonoff Dual WiFi Wireless Smart Swtich]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Model IM160810001: Sonoff Pow ===&lt;br /&gt;
Link zum Hersteller: [https://www.itead.cc/sonoff-pow.html Sonoff POW WiFi Switch with Power Consumption Measurement]&lt;br /&gt;
[[Datei:sonoff_sw_30.jpg|thumb|left|alt=SONOFF POW]]Ein sehr interessantes und kostengünstiges Modul zur Messung der aktuellen Leistung. Das Modul kann via MQTT in FHEM angebunden werden. Ein Beispiel zur Einbindung ist [http://www.fhemwiki.de/wiki/Sonoff#Sonoff_POW_einrichten unten] im Wiki beschrieben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===weitere Modelle===&lt;br /&gt;
Weitere Modelle finden sich auf der [https://www.itead.cc/search/result/?cat=&amp;amp;q=sonoff  Homepage des Hersstellers]&lt;br /&gt;
&lt;br /&gt;
=Neuprogrammierung der Sonoff-Modelle=&lt;br /&gt;
==Einleitung: Welche Firmware? ==&lt;br /&gt;
===Übersicht===&lt;br /&gt;
Vorab: Es gibt derzeit (August 2017) zwei Möglichkeiten, die Geräte von Sonoff mit eigener Firmware zu versehen. Entweder man verwendet MQTT gemeinsam mit TASMOTA oder man verwendet ESPEasy. Beide Firmware-Produkte werden derzeit weiterentwickelt. Es scheint so zu sein, dass bei den POW-Geräten die Sensoren nicht korrekt erkannt werden und sich dort MQTT anbietet. Jedoch sollte in den Foren geprüft werden, ob diese eindeutige Präferenz durch Weiterentwicklung noch aufrecht erhalten werden kann.&lt;br /&gt;
&lt;br /&gt;
Der Autor Arends hat die Version Sonoff-MQTT-OTA-Arduino eingestellt und die Version 3.2.13 (Ende Jänner 2017) dürfte wohl die letzte dieser Generation gewesen sein. Mit der Einstellung dieser Version wurde zwar der Nachfolger TASMOTA erschaffen, aber leider nun auf das Messageformat LEGACY gänzlich verzichtet, was bei der Auswertung der Messdaten in Fhem doch einige Probleme mit sich bringt (der verwendete JSON String muss zusätzlich gefiltert werden). Es gibt aber bereits sehr gute Lösungswege um dieses Problem zu beheben: {{Link2Forum|Topic=66761|LinkText=In diesem Thread}} wurde ein &#039;&#039;JSON to Reading Modul&#039;&#039; vorgestellt, dass den JSON String analysiert und alle darin enthaltenen Daten in Readings kopiert. Die Readings werden dabei in FHEM automatisch angelegt.&lt;br /&gt;
&lt;br /&gt;
Link frühere Software: [https://github.com/arendst/Sonoff-MQTT-OTA-Arduino Sonoff-MQTT-OTA-Arduino]&lt;br /&gt;
&lt;br /&gt;
===Stromversorgung===&lt;br /&gt;
&lt;br /&gt;
Während des Flashvorganges benötigt das Sonoff-Modul eine Stromversorgung. Dabei darf unter keinen Umständen die Netzspannung von 230V verwendet werden. Selbst die 5V aus einem USB-Anschluss sind zu hoch, da das Modul sonst Gefahr läuft unbrauchbar zu werden. Es sind ausschließlich 3.3V zu verwenden. &lt;br /&gt;
&lt;br /&gt;
Der FTDI Chip kann laut Datenblatt höchstens 50 mA liefern, das ESP Modul zieht aber bis zu 300 mA Spitzenstrom und verbraucht schon im normalen Modus ca. 50-70 mA. Die einfachen FTDI Adapter ohne separaten Spannungsregler sind damit als 3.3 Volt Versorgung beim Flashen ungeeignet. Es ist am besten, wenn das Sonoff Modul mit einer separaten Stromversorgung von 3.3 Volt (bei ausreichender Last von bis zu 300 mA) versorgt wird. &lt;br /&gt;
&lt;br /&gt;
Achtung! Es kann sein, dass der Flashvorgang ohne Fehler läuft, der Flash aber anschließend korrupt ist und das Modul unklares Verhalten zeigt. In dem Fall die Spannungsversorgung 3.3 Volt prüfen! Auch das USB Kabel kann eine Fehlerursache sein.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Schnittstelle ===&lt;br /&gt;
[[Datei:sonoff_sw_2.jpg|thumb|left|alt=serielle Schnittstelle]]&lt;br /&gt;
&lt;br /&gt;
Die abgebildete Platine zeigt die benötigten Signale für ein FTDI Modul (Model: IM151116002).&lt;br /&gt;
&lt;br /&gt;
 Pin5 = vorbereitet für GPIO&lt;br /&gt;
 Pin4 = Masse&lt;br /&gt;
 Pin3 = TxD&lt;br /&gt;
 Pin2 = RxD&lt;br /&gt;
 Pin1 = 3.3V&lt;br /&gt;
&lt;br /&gt;
Siehe dazu auch den {{Link2Forum|Topic=55036|LinkText=Link aus dem Forum}}:&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_4.jpg|thumb|left|alt=Platine mit Stiftleiste bestücken]]&lt;br /&gt;
Der Hersteller hat zwar die Platine vorbereitet, diese muss jedoch mit einer Stiftleiste bestückt werden, um das FTDI Modul bequem verbinden zu können. Die Stiftleiste muss allerdings selber nachgerüstet werden. Nachdem das ESPEasy zum ersten Mal geflasht wurde, kann es in Zukunft via WEB (OTA) geflasht werden und die Stiftleiste ist dann eigentlich nicht mehr erforderlich. &amp;lt;br&amp;gt;&lt;br /&gt;
Für die Module TH10/TH16 sind die Lötpunkte für die Stiftleiste schon beschriftet. &lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Achtung: Bitte vor den Arbeiten kontrollieren, das an der Platine keine Netzspannung angeschlossen ist, LEBENSGEFAHR!&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Arduino als USB-TTL ===&lt;br /&gt;
&lt;br /&gt;
Sollte kein USB-TTL-Adapter vorhanden sein, kann man zum flashen auch einen arduino &amp;quot;missbrauchen&amp;quot;. Dazu wird RESET und GND verbunden, siehe [http://www.instructables.com/id/Turn-Arduino-into-USB-to-TTL-Adapter-with-1-wire/ diese Webseite]. Der Vorteil dieser Lösung besteht darin, dass die PINS für 5V und 3.3V deutlich voneinander getrennt sind.&lt;br /&gt;
&lt;br /&gt;
===Fehlermeldungen ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:FehlersucheHochladen.png|thumb|left|alt=Fehlersuche aktivieren]]&lt;br /&gt;
Eine sehr typische Fehlermeldung während des Flashvorganges ist &lt;br /&gt;
 warning: espcomm_sync failed&lt;br /&gt;
 error: espcomm_open failed&lt;br /&gt;
 error: espcomm_upload_mem failed&lt;br /&gt;
Das tückische an dieser Fehlermeldung ist, dass sie nahezu keine Hinweise darauf gibt, weshalb der upload fehlgeschlagen ist. In sehr vielen Fällen können die Fehler auf ganz klassische Probleme zurückgeführt werden: so wurde Tx beim Chip nicht mit Rx, sondern wieder Tx beim arduino verbunden oder es wurde der falsche COM-Port ausgewählt, der falsche Uploader etc pp. Die arduino-IDE erlaubt es, genaue Angaben beim Hochladen auszulesen (siehe Screenshot oben, Haken bei &amp;quot;Hochladen&amp;quot;). Ohne diese Angaben ist eine Fehlersuche typischerweise aussichtslos.&lt;br /&gt;
&lt;br /&gt;
==MQTT und TASMOTA==&lt;br /&gt;
&lt;br /&gt;
TASMOTA verlangt vorab die Installation eines MQTT-Brokers (idealerweise auf dem Raspberry). Auf der Webseite [https://waschto.eu/sonoff-funkschalter-auf-esp8266-basis] ist die Installation sehr ausführlich beschrieben - bis hin zum Flashen des Sonoff-Gerätes. Insbesondere die Einrichtung der Ardunio-Umgebung und das Flashen selbst setzt einige Grundkenntnisse in Linux und arduino-Programmierung voraus, da sich mit den neuen Updates Verzeichnis- und Dateinamen geändert haben und diverse Dateien verschoben und umbenannt werden müssen.  &lt;br /&gt;
&lt;br /&gt;
Link: [https://github.com/arendst/Sonoff-Tasmota Tasmota]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===MQTT Server auf dem RPi einrichten===&lt;br /&gt;
Man hat als Anwender die Wahl, ob die Kommunikation über die ESPEasy-Bridge oder MQTT erfolgen soll. MQTT ist bei der Einrichtung etwas komplexer, da hier auch auf dem Server der Broker installiert werden muss.&lt;br /&gt;
&lt;br /&gt;
Im wesentlichen beschränkt sich die Installation eines MQTT Servers aber auf wenige Arbeitsschritte und ist wie folgt beschrieben durchzuführen. Wer schon einen &#039;&#039;&#039;mosquitto&#039;&#039;&#039; auf dem Server installiert hat, kann diesen Schritt überspringen.&lt;br /&gt;
&lt;br /&gt;
 # aus dem mosquitto Repo installieren:&lt;br /&gt;
 wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key&lt;br /&gt;
 sudo apt-key add mosquitto-repo.gpg.key&lt;br /&gt;
 cd /etc/apt/sources.list.d/&lt;br /&gt;
 sudo wget http://repo.mosquitto.org/debian/mosquitto-wheezy.list&lt;br /&gt;
 # oder für jessie&lt;br /&gt;
 sudo wget http://repo.mosquitto.org/debian/mosquitto-jessie.list&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 # mosquitto installieren, sowie client Befehl mosquito_sub (gehört nicht zum Server, wird aber weiter unten benötigt)&lt;br /&gt;
 sudo apt-get install mosquitto mosquitto-clients&lt;br /&gt;
 &lt;br /&gt;
 # MQTT Server Test&lt;br /&gt;
 sudo service mosquitto status&lt;br /&gt;
&lt;br /&gt;
 # Start / Stop des Servers&lt;br /&gt;
 sudo service mosquitto stop&lt;br /&gt;
 sudo service mosquitto start&lt;br /&gt;
 &lt;br /&gt;
 # Perl Version ausgeben&lt;br /&gt;
 perl -v&lt;br /&gt;
 # Perl MQTT Module nachinstallieren (läuft ein paar Minuten)&lt;br /&gt;
 sudo cpan install Net::MQTT:Simple&lt;br /&gt;
 sudo cpan install Net::MQTT:Constants&lt;br /&gt;
&lt;br /&gt;
===Flashen mit Arends Sketch===&lt;br /&gt;
Die Einrichtung des Arduino-Sketches ist keine leichte Fingerübung, da sich diverse Dateinamen und Speicherorte mit updates gegenüber den hier und in anderen Beschreibungen genannten geändert haben können (und werden...). Es wird auf die sehr  [https://waschto.eu/sonoff-funkschalter-auf-esp8266-basis umfangreiche Erläuterung von waschto.eu] verwiesen, wobei einige weitere (kleinere) Änderungen auch dort nicht dokumentiert sind, sich aber aus dem Sinnzusammenhang der Fehlermeldungen erschließen lassen. Alle hier gezeigten Bildschirmfotos und Beispiele beziehen sich auf Basis der Version Tasmota (Stand 22.02.2017).&lt;br /&gt;
&lt;br /&gt;
Der Sketch kann hier [https://github.com/arendst/Sonoff-Tasmota.git geladen werden.]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/arendst/Sonoff-Tasmota Arends Tasmota Github]&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_bv_01.jpg|thumb|left|alt=Arduino Boardverwalter]]&lt;br /&gt;
In der Arduino IDE unter Datei / Voreinstellungen im Feld &amp;quot;Zusätzliche Boardverwalter-URLs:&amp;quot; den Link: http://arduino.esp8266.com/stable/package_esp8266com_index.json einfügen. &lt;br /&gt;
&lt;br /&gt;
Dann unter &#039;&#039;&#039;Werkzeuge / Board / Boardverwalter&#039;&#039;&#039; ganz am Ende der Liste die Librarys für &amp;quot;esp8266 by ESP8266 Community&amp;quot; die letzte Version zu installieren. {{Link2Forum|Topic=46205|Message=534707|LinkText=Link zum Board}}.&lt;br /&gt;
Im Tasmota Verzeichnis \lib werden auch die zum kompilieren benötigten Librarys zur Verfügung gestellt.&lt;br /&gt;
&lt;br /&gt;
Das gesamte Sonoff Verzeichnis aus [https://github.com/arendst/Sonoff-Tasmota/archive/master.zip Arendts Sketch] entpacken (ist wie hier verlinkt ein Zipfile) und dann aus diesem Verzeichnis die sonoff.ino öffnen. Es können dann alle zu dem Sketch zugehörigen Dateien angesehen/editiert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Anschließend sollte noch die Datei &#039;&#039;&#039;user_config.h&#039;&#039;&#039; (im Unterverzeichnis &amp;quot;sonoff&amp;quot;) editiert werden. Die Abschnitte          &lt;br /&gt;
&lt;br /&gt;
 // Wifi&lt;br /&gt;
 // Syslog&lt;br /&gt;
 // Ota&lt;br /&gt;
 // MQTT&lt;br /&gt;
&lt;br /&gt;
müssen mit der eigenen &amp;quot;&#039;&#039;&#039;Ip-Adresse-Server&#039;&#039;&#039;&amp;quot;, &amp;quot;&#039;&#039;&#039;SSID&#039;&#039;&#039;&amp;quot; und &amp;quot;&#039;&#039;&#039;password&#039;&#039;&#039;&amp;quot; angepasst werden, das erleichtert den ersten Connect mit dem Modul. Seit der Version 2.1.2 können die WIFI Einstellungen 2-fach angegeben werden, somit wechselt das Device automatisch auf den 2. Wifi Hotspot wenn der erste nicht erreicht wird.&lt;br /&gt;
&lt;br /&gt;
 #define STA_SSID               &amp;quot;SSID&amp;quot;      // Wifi SSID&lt;br /&gt;
 #define STA_PASS               &amp;quot;password&amp;quot;  // Wifi password&lt;br /&gt;
 #define WIFI_HOSTNAME          &amp;quot;%s-%04d&amp;quot;         // Expands to &amp;lt;MQTT_TOPIC&amp;gt;-&amp;lt;last 4 decimal chars of MAC address&amp;gt;&lt;br /&gt;
 #define WIFI_CONFIG_TOOL       WIFI_WPSCONFIG    // Default tool if wifi fails to connect (WIFI_SMARTCONFIG, WIFI_MANAGER or WIFI_WPSCONFIG)&lt;br /&gt;
&lt;br /&gt;
 // Syslog&lt;br /&gt;
 #define SYS_LOG_HOST           &amp;quot;Ip-Adresse-Server&amp;quot;&lt;br /&gt;
 #define SYS_LOG_PORT           514&lt;br /&gt;
 #define SYS_LOG_LEVEL          LOG_LEVEL_NONE&lt;br /&gt;
 #define SERIAL_LOG_LEVEL       LOG_LEVEL_INFO&lt;br /&gt;
 #define WEB_LOG_LEVEL          LOG_LEVEL_INFO&lt;br /&gt;
&lt;br /&gt;
 // Ota&lt;br /&gt;
 #if (ARDUINO &amp;gt;= 168)&lt;br /&gt;
  #define OTA_URL              &amp;quot;http://Ip-Adresse-Server:80/api/arduino/&amp;quot; PROJECT &amp;quot;.ino.bin&amp;quot;&lt;br /&gt;
 #else&lt;br /&gt;
  #define OTA_URL              &amp;quot;http://Ip-Adresse-Server:80/api/arduino/&amp;quot; PROJECT &amp;quot;.cpp.bin&amp;quot;&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
 // MQTT&lt;br /&gt;
 #define MQTT_HOST              &amp;quot;Ip-Adresse-Server&amp;quot;&lt;br /&gt;
 #define MQTT_PORT              1883&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wichtig:&#039;&#039;&#039; Im Userprofile des Arduino Kompilers (%userprofile%\Documents\Arduino\libraries\pubsubclient\src\PubSubClient.h) die Max Packet Size auf 512 erhöht werden!&lt;br /&gt;
&lt;br /&gt;
  #define MQTT_MAX_PACKET_SIZE 512&lt;br /&gt;
  #define MQTT_KEEPALIVE 120&lt;br /&gt;
Anpassung der max. Packet Size auf 512 und das Keepalive auf 120&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Anschluß wird der Sketch mit der Arduino IDE (getestet mit 1.6.12) compiliert und die Binary dann exportiert (Sketch / Kompilierte Binärdatei exportieren). Die erzeugte .bin Datei dann mit dem Tool &amp;quot;ESP8266Flasher.exe&amp;quot; flashen, so wie auch bei ESPEasy. Sehr gut funktioniert aud das Esptool. Wer nicht compilieren will, kann auch im Unterverzeichnis ./api/arduino/ die fertige Binary ( sonoff.ino ) benutzen, aber dann ohne Voreinstellung der lokalen IPs.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_22.jpg|thumb|left|alt=Arends Menü]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; sollten Probleme mit dem ersten Login im Webinterface auftreten, hat der Autor vorgesorgt und mit speziellem wiederholten Tastendruck können verschiedene Modi aufgerufen werden: zB: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3 x Taste kurz drücken&#039;&#039;&#039; und eine Smartconfig wird gestartet und die &#039;&#039;&#039;SSID&#039;&#039;&#039; und das &#039;&#039;&#039;Passwort&#039;&#039;&#039; kann über diese [https://play.google.com/store/apps/details?id=com.cmmakerclub.iot.esptouch Android App] eingegeben werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4 x Taste kurz drücken&#039;&#039;&#039; und man bringt den Device in den &#039;&#039;&#039;Access Point Mode&#039;&#039;&#039; mit der IP-Adresse &#039;&#039;&#039;192.168.4.1&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bis zu 7 verschiedene Modi sind möglich, mehr dazu in Arends Wiki.&lt;br /&gt;
&lt;br /&gt;
[https://github.com/arendst/Sonoff-MQTT-OTA-Arduino/wiki/Button-usage Link zum Wiki Arends, Button]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===MQTT testen===&lt;br /&gt;
[[Datei:sonoff_sw_20.jpg|thumb|left|alt=Arends Menü]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nach erfolgtem Flash des Modules kann das Webinterface des Moduls zum ersten Mal aufgerufen werden (im Router nach der IP des Moduls suchen).&lt;br /&gt;
&lt;br /&gt;
Es bieten sich hier mehrere Möglichkeiten die die weitere Einrichtung des Moduls unterstützen. Einfach die Menüpunkte durchprobieren, sie erklären sich von selbst. Für erste Tests empfiehlt sich die lokale Konsole um die Ereignisse aus Sicht des Modules mit verfolgen zu können. Alles was hier gesendet wird, sollte ebenfalls am Server mitgeloggt werden können. Wenn bis hierher alles funktioniert, kann dann mir der Konfiguration in FHEM beginnen.&lt;br /&gt;
&lt;br /&gt;
Der Name des Moduls kann unter &amp;quot;Configuration&amp;quot; -&amp;gt; &amp;quot;Configure MQTT&amp;quot; -&amp;gt; &amp;quot;Topic (sonoff)&amp;quot; nachgeschaut und geändert werden. In FHEM wird beim definieren des Moduls dieser Name in den subscribeReadings bzw. publishSets eingegeben um die Verbindung zum Modul herzustellen.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Am Server jetzt eine Konsole öffnen und folgende Topic (alle) einstellen.&lt;br /&gt;
&lt;br /&gt;
 mosquitto_sub -d -v -t \# &lt;br /&gt;
Mit dieser Einstellung werden alle Topics geloggt! &lt;br /&gt;
&lt;br /&gt;
 pi@raspberry ~ $ mosquitto_sub -d -v -t \#&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff_dht/DHT/TEMPERATURE&#039;, ... (6 bytes))&lt;br /&gt;
 tele/sonoff_dht/DHT/TEMPERATURE 21.8 C&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff_dht/DHT/HUMIDITY&#039;, ... (6 bytes))&lt;br /&gt;
 tele/sonoff_dht/DHT/HUMIDITY 41.7 %&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff_dht/TIME&#039;, ... (19 bytes))&lt;br /&gt;
 tele/sonoff_dht/TIME 2017-02-22T16:05:43&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow3/STATE&#039;, ... (104 bytes))&lt;br /&gt;
 tele/sonoffpow3/STATE {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:05:44&amp;quot;, &amp;quot;Uptime&amp;quot;:100, &amp;quot;LIGHT&amp;quot;:&amp;quot;ON&amp;quot;, &amp;quot;Wifi&amp;quot;:{&amp;quot;AP&amp;quot;:2, &amp;quot;SSID&amp;quot;:&amp;quot;Pergola&amp;quot;, &amp;quot;RSSI&amp;quot;:96}}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow3/ENERGY&#039;, ... (134 bytes))&lt;br /&gt;
 tele/sonoffpow3/ENERGY {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:05:44&amp;quot;, &amp;quot;Yesterday&amp;quot;:0.083, &amp;quot;Today&amp;quot;:0.055, &amp;quot;Period&amp;quot;:0, &amp;quot;Power&amp;quot;:0, &amp;quot;Factor&amp;quot;:0.00, &amp;quot;Voltage&amp;quot;:229, &amp;quot;Current&amp;quot;:0.000}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;stat/TestSwitch/RESULT&#039;, ... (14 bytes))&lt;br /&gt;
 stat/TestSwitch/RESULT {&amp;quot;POWER&amp;quot;:&amp;quot;ON&amp;quot;}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;stat/TestSwitch/POWER&#039;, ... (2 bytes))&lt;br /&gt;
 stat/TestSwitch/POWER ON&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow3/STATE&#039;, ... (104 bytes))&lt;br /&gt;
 tele/sonoffpow3/STATE {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:07:14&amp;quot;, &amp;quot;Uptime&amp;quot;:100, &amp;quot;LIGHT&amp;quot;:&amp;quot;ON&amp;quot;, &amp;quot;Wifi&amp;quot;:{&amp;quot;AP&amp;quot;:2, &amp;quot;SSID&amp;quot;:&amp;quot;Pergola&amp;quot;, &amp;quot;RSSI&amp;quot;:96}}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow3/ENERGY&#039;, ... (134 bytes))&lt;br /&gt;
 tele/sonoffpow3/ENERGY {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:07:14&amp;quot;, &amp;quot;Yesterday&amp;quot;:0.083, &amp;quot;Today&amp;quot;:0.055, &amp;quot;Period&amp;quot;:0, &amp;quot;Power&amp;quot;:3, &amp;quot;Factor&amp;quot;:0.20, &amp;quot;Voltage&amp;quot;:227, &amp;quot;Current&amp;quot;:0.072}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;stat/TestSwitch/RESULT&#039;, ... (15 bytes))&lt;br /&gt;
 stat/TestSwitch/RESULT {&amp;quot;POWER&amp;quot;:&amp;quot;OFF&amp;quot;}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;stat/TestSwitch/POWER&#039;, ... (3 bytes))&lt;br /&gt;
 stat/TestSwitch/POWER OFF&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Interessant sind für uns nun diese Einträge &amp;quot;stat/TestSwitch/POWER ON&amp;quot; , dazu am Taster des Sonoff manuell umschalten. Dies entspricht genau der Syntax wie sie im Anschluss in FHEM dann zu verwenden ist.&lt;br /&gt;
&lt;br /&gt;
Mit diesen Einstellungen können dann entweder nach Telemetriedaten oder nach Statusmeldungen gefiltert werden. Dies ist jedoch nur notwendig wenn bereits andere MQTT Devices am Broker hängen und es sonst zu unübersichtlich wird.&lt;br /&gt;
 mosquitto_sub -h localhost -t tele/sonoff/#    = Telemetriedaten&lt;br /&gt;
 mosquitto_sub -h localhost -t stat/sonoff/#    = Statusmeldungen&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_21.jpg|thumb|left|alt=Arends Log]]&lt;br /&gt;
Sehr nützlich das lokale Log zur Fehlersuche und Inbetriebnahme.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Anbindung FHEM===&lt;br /&gt;
[[Datei:sonoff_sw_24.jpg|thumb|left|alt=FHEM sonoff Schalter]]&lt;br /&gt;
Dieser einfache Schalter kommuniziert bidirektional mit dem sonoff Device.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_25.jpg|thumb|left|alt=FHEM sonoff Schalter]]&lt;br /&gt;
Die Readings in diesem verwendeten Beispiel zeigen sich wie in FHEM gewohnt.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Einrichtung in FHEM wird von den Modulen 00_MQTT.pm, 10_MQTT_BRIDGE und 10_MQTT_DEVICE.pm unterstützt.&lt;br /&gt;
Ebenso wird das Modul 98_expandJSON.pm benötigt um den {{Link2Forum|Topic=66761|LinkText=JSON String zu filtern}}.&lt;br /&gt;
&lt;br /&gt;
[https://forum.fhem.de/index.php?topic=27532.0 Link zum Forum: MQTT FHEM Einrichtung]&lt;br /&gt;
&lt;br /&gt;
 ### 1. Broker anlegen ###&lt;br /&gt;
 define myBroker MQTT 10.0.0.5:1883&lt;br /&gt;
&lt;br /&gt;
 ### 2. FHEM Device mit MQTT verbinden ###&lt;br /&gt;
 define Sonoff_Switch MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Switch IODev myBroker&lt;br /&gt;
 attr Sonoff_Switch devStateIcon ON:rc_GREEN:OFF OFF:rc_RED:ON&lt;br /&gt;
 attr Sonoff_Switch icon hue_filled_br30&lt;br /&gt;
 attr Sonoff_Switch publishSet ON OFF cmnd/TestSwitch/POWER/set&lt;br /&gt;
 attr Sonoff_Switch room MQTT&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_Licht stat/Sonoff_Switch/POWER&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_Sensor tele/Sonoff_Switch/SENSOR&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_Status stat/Sonoff_Switch/STATUS&lt;br /&gt;
 attr Sonoff_Switch webCmd ON:OFF&lt;br /&gt;
Der hier dargestellte Beispielcode realisiert die Kommunikation zwischen FHEM und dem sonoff Modul via MQTT Broker. Zu beachten ist hier, dass &#039;&#039;&#039;subscribeReading_Licht&#039;&#039;&#039; und &#039;&#039;&#039;subscribeReading_state&#039;&#039;&#039; unterschiedliche Syntax des Topic Strings haben!&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ESPEasy==&lt;br /&gt;
===ESPEasy flashen===&lt;br /&gt;
[[Datei:sonoff_sw_6.jpg|thumb|left|alt=sonoff mit angestecktem FDTI Adapter]]&lt;br /&gt;
Die Spannungsversorgung des Sonoff Moduls wird hier vom FTDI Konverter mit 3.3V über die Verbindungskabel zum Pfostenstecker durchgeführt. Siehe obigen Hinweis: [[Sonoff#internal|Vorbereitungen zum Flashen]] &#039;&#039;&#039;Anmerkung: Oben steht, dass man die Spannungsversorgung nicht mit den einfachen FTDI-Chips vornehmen soll, im Bild aber geschieht dies?&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Der FTDI Adapter wird dann mit der USB Schnittstelle mit dem Computer verbunden.&lt;br /&gt;
&lt;br /&gt;
Zum compilieren wird in der Arduino Umgebung auch die ArduinoJson Library 5.6.4+ benötigt. Eine genaue Anleitung kann {{Link2Forum|Topic=55728|Message=473220|LinkText=hier}} nachgelesen werden. Es sollte stets die aktuelle Version der Arduino Umgebung verwendet werden, bzw. die Librarys auf Letztstand gehalten werden. &lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===mit Arduino compilieren===&lt;br /&gt;
[[Datei:sonoff_sw_10.jpg|thumb|left|alt=Einstellung Arduino IDE]]&lt;br /&gt;
Wer selber mit der Arduino IDE compilieren will, bitte folgende Einstellungen beachten. Die Sketche befinden sich [https://github.com/arendst/Sonoff-MQTT-OTA-Arduino hier]. Die anschließenden Arbeiten sind dann gleich wie bei Abschnitt &#039;&#039;&#039;fertige Binary&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Unbedingt die neueste [https://github.com/bblanchon/ArduinoJson Arduino Json Library] benutzen (siehe oben). Es gibt zwar keine Compilerfehler, aber es kommt anschließend zu Fehlfunktionen in der ESP Bridge! Die Installation der entsprechenden Arduino-Bibliotheken kann man [https://arduino-hannover.de/2015/04/08/arduino-ide-mit-dem-esp8266/ hier] nachlesen. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 Generic ESP8266 Module&lt;br /&gt;
 Flash Mode: QIO&lt;br /&gt;
 Flash Frequency: 40 MHz&lt;br /&gt;
 CPU Frequency: 80 MHz&lt;br /&gt;
 Flash Size: 1M (64K SPIFFS)&lt;br /&gt;
 Debug Port: disabled&lt;br /&gt;
 Debug Level: none&lt;br /&gt;
 Reset Mode: ck&lt;br /&gt;
 Upload Speed: 115200&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===fertige Binary flashen===&lt;br /&gt;
[[Datei:sonoff_sw_7.jpg|thumb|left|alt=NodeMCU Firmware Flasher]]&lt;br /&gt;
Es empfiehlt sich eine fertige Binary von ESPEasy aufzuspielen. In diesem Wiki wurde R140 verwendet.&lt;br /&gt;
&lt;br /&gt;
Siehe dazu auch den [http://www.esp8266.nu/index.php/Main_Page Link von ESPEasy] und das [https://learn.adafruit.com/building-and-running-micropython-on-the-esp8266/flash-firmware Handbuch] für den Flasher.&lt;br /&gt;
&lt;br /&gt;
In manchen Versionen von ESPEasy (zB.R120) ist auch ein Flasher beigelegt, welcher zwar keine grafische Oberfläche hat aber hervorragend funktioniert. Wenn andere versagen, geht es mit diesem Flasher immer noch, einfach probieren!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 Netzspannung darf &#039;NICHT&#039; angeschlossen sein!!!&lt;br /&gt;
 Taster am Sonoff gedrückt halten&lt;br /&gt;
 FTDI Adapter verbinden&lt;br /&gt;
 Taster am Sonoff los lassen&lt;br /&gt;
 Sketch übertragen&lt;br /&gt;
 Sonoff vom FTDI trennen&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Wenn einmal die Firmware auf das sonoff Modul geflasht worden ist, kann in Zukunft ESPEasy direkt unter Tools via HTTP dies durchführen. Es muss dazu kein FTDI Konverter mehr verwendet werden.&lt;br /&gt;
&lt;br /&gt;
===ESPEasy einstellen===&lt;br /&gt;
[[Datei:sonoff_sw_11.jpg|thumb|left|alt=ESPEasy Devices]]&lt;br /&gt;
Wenn das Modul fertig geflasht ist und die Verbindung zum Modul hergestellt ist, können die Einstellungen in ESPEasy durchgeführt werden.&lt;br /&gt;
Dazu am Webinterface anmelden und zunächst die zwei Devices definieren.&lt;br /&gt;
&lt;br /&gt;
Der Hersteller hat für das &#039;&#039;&#039;Relaise GPIO 12&#039;&#039;&#039; und für die &#039;&#039;&#039;grüne Led GPIO 13&#039;&#039;&#039; vorgesehen. Der &#039;&#039;&#039;Taster ist an GPIO 0&#039;&#039;&#039; angeschlossen.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Device Schalter===&lt;br /&gt;
[[Datei:sonoff_sw_12.jpg|thumb|left|alt=Device Relais]]&lt;br /&gt;
Bei den Devices sollten die hier dargestellte Einstellungen beachtet werden. Der Switch (PUMP) sollte auf Input gestellt werden, sodass die anschließenden und benötigten Rules aktiviert werden können.&lt;br /&gt;
&lt;br /&gt;
Da beide Devicenamen gleich benannt wurden (PUMP) wird in FHEM nur ein Device angelegt! Die dazugehörenden Valuenames sind unterschiedlich (Relay, Key).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Device Taster===&lt;br /&gt;
[[Datei:sonoff_sw_13.jpg|thumb|left|alt=Device Key]]&lt;br /&gt;
Der Taste muss natürlich nur konfiguriert werden, wenn auch händisch am Modul geschaltet werden soll. Wird dies nicht benötigt, können auch die Rules geändert bzw. angepasst werden. Doch alleine zu Testzwecken ist es eine nützliche Sache.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Rules===&lt;br /&gt;
[[Datei:sonoff_sw_14.jpg|thumb|left|alt=Rules]]&lt;br /&gt;
Da das sonoff Modul auch einen eingebauten Taster hat und somit auch lokal bedient werden kann, sollte man zunächst unter &#039;&#039;&#039;Tools / Advanced das Häckchen Rules&#039;&#039;&#039; aktivieren, erst dann wird der Tab sichtbar und es können Rules erstellt werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 on PUMP#Key do&lt;br /&gt;
  if [PUMP#Relay]=1&lt;br /&gt;
    gpio,12,0&lt;br /&gt;
  else&lt;br /&gt;
    gpio,12,1&lt;br /&gt;
  endif&lt;br /&gt;
 endon&lt;br /&gt;
 on PUMP#Relay do&lt;br /&gt;
  if [PUMP#Relay]=1 &lt;br /&gt;
    gpio,13,0&lt;br /&gt;
  else&lt;br /&gt;
    gpio,13,1&lt;br /&gt;
  endif&lt;br /&gt;
 endon&lt;br /&gt;
Diese Rules ermöglichen, das bei lokaler Bedienung durch den Taster auch die &#039;&#039;&#039;Led&#039;&#039;&#039; richtig geschaltet wird.&lt;br /&gt;
Mit &#039;on PUMP#Key do&#039; wird geprüft ob die Taste gedrückt ist und schaltet dann entsprechend die Led. Mit den Rules können auch Timer oder sonstige Spielereien realisiert werden. Siehe dazu das [http://www.esp8266.nu/index.php/Tutorial_Rules Tutorial] von ESPeasy.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Anbindung FHEM===&lt;br /&gt;
[[Datei:sonoff_sw_9.jpg|thumb|left|alt=FHEM Konfiguration]]&lt;br /&gt;
Dies ist eine einfache Darstellung wie FHEM automatisch den Device erstellt.&lt;br /&gt;
&lt;br /&gt;
Damit FHEM mit ESPEasy und dem sonoff Modul kommunizieren kann, muss in der fhem.cfg vorerst nur die espBridge mit dem hier dargestellten Eintrag aktiviert werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 define espBridge ESPEasy bridge 8383&lt;br /&gt;
Dies ist eigentlich die einzige Zeile die in fhem.cfg angelegt werden muss. Die restliche Konfiguration wird von FHEM automatisch generiert. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 ##########################################&lt;br /&gt;
 ###             ESPEASY               ####&lt;br /&gt;
 ##########################################&lt;br /&gt;
 &lt;br /&gt;
 define ESPEasy_sonoff_1_PUMP ESPEasy 10.0.0.37 80 espBridge sonoff_1_PUMP&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP IODev espBridge&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP devStateIcon on:rc_GREEN:off off:rc_RED:on absent:rc_BLUE:off gpio:rc_YELLOW:off&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP eventMap /gpio 12 on:on/gpio 12 off:off/gpio 12 gpio:off/gpio 12 output:off/&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP group ESPEasy Device&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP icon hue_filled_outlet&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP room ESPEasy&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP setState 0&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP stateFormat {ReadingsVal($name,&amp;quot;presence&amp;quot;,&amp;quot;&amp;quot;) eq &amp;quot;absent&amp;quot; ? &amp;quot;absent&amp;quot; : ReadingsVal($name,&amp;quot;Relay&amp;quot;,&amp;quot;&amp;quot;)}&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP webCmd :&lt;br /&gt;
&lt;br /&gt;
hier ein Beispiel wie es auch manuell leicht modifiziert werden kann.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_8.jpg|thumb|left|alt=sonoff Readings]]&lt;br /&gt;
&lt;br /&gt;
Die Readings werden durch die Bridge (Modul ESPEasy) automatisch angelegt.&lt;br /&gt;
&lt;br /&gt;
Es besteht hier noch genug Spielraum um zB. auch noch Temperatursensoren an das Modul anzuschließen und ebenfalls in FHEM darzustellen.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Beispiele=&lt;br /&gt;
==Einrichtung Sonoff POW==&lt;br /&gt;
[[Datei:sonoff_sw_31.jpg|thumb|left|alt=Sonoff POW]]&lt;br /&gt;
&#039;&#039;&#039;Bei einer Charge des Sonoff POW gibt es Kontaktprobleme beim Sicherungshalter. ITAED hat deshalb eine Rückrufaktion gestartet: [https://www.itead.cc/blog/sonoff-th16-and-pow-recall-notice Link zur Rückrufaktion]. Bitte unbedingt die Kontaktierung des Sicherungshalter überprüfen bzw. neuen Sicherungshalter einsetzen!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Das Modul kommt in gewohnter Itead Qualität, eine derart kostengünstige Energiemessung wird bei Smart Home Anwendern gerne eingesetzt. Die Originalsoftware habe ich nicht einmal getestet, da damit eine Anbindung an FHEM leider nicht möglich ist (wer will schon die Steuerbefehle seiner Schalter an eine nicht dokumentierte chinesische Cloud senden).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_sw_33.jpg|thumb|left|alt=Sonoff POW]]&lt;br /&gt;
Bitte auf keinen Fall das Modul während der Arbeiten an die Netzspannung anschießen. Zum Flashen genügt (und nur diese) die Versorgungspannung des USB-TTL Konverters. Wie auf dem Foto gut erkennbar, wurde dieses Modul ohne einlöten einer Pfostensteckerleiste geflasht. Die Steckverbindung wird einfach in die Lötaugen gesteckt und mit einem Gummiring fixiert, da ja spätere Flashvorgänge im Webif des Models funktionieren und so die Arbeit eingespart werden kann. Es steht jedoch nichts im Wege die Pfostensteckerleiste einzulöten.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Die Anschlüsse am Modul sind wie folgt belegt.&lt;br /&gt;
 o GND&lt;br /&gt;
 o TxD&lt;br /&gt;
 o RxD&lt;br /&gt;
 o VDD&lt;br /&gt;
&lt;br /&gt;
Für den Flashvorgang gelten die selben Regeln wie schon beim sonoff Switch oben erwähnt (3,3V!).&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Software===&lt;br /&gt;
[[Datei:sonoff_sw_35.jpg|thumb|left|alt=Sonoff POW FHEM]]&lt;br /&gt;
Als Software steht im Augenblick nur der Sketch von Arends zur Verfügung, liefert aber alles was das Herz begehrt und ist ist einfach zu handhaben. Hier eine eine einfache Darstellung mit der aktuellen Leistung und dem Tagesverbrauch. Zusätzlich besteht auch noch die Möglichkeit den angeschlossenen Verbraucher Ein- oder Auszuschalten. &lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_pow_02.jpg|thumb|left|alt=Sonoff POW Webif]]&lt;br /&gt;
Seit Version 2.0.19a ist auch die Leistungsanzeige im WEBIF wie im Bild links integriert. Auch der Energieverbrauch des Vortages wird mit angezeigt. Alle hier angezeigten Daten werden auch zyklisch im MQTT String an FHEM übergeben.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich kann im Sketch auch das Feature &amp;quot;&#039;&#039;&#039;Power_Limit&#039;&#039;&#039;&amp;quot; aktiviert werden. Mit dem Power_Limit wird eine zusätzliche Nachricht erzeugt, wenn ein bestimmter einstellbarer Grenzwert über- oder unterschritten wird. &lt;br /&gt;
&lt;br /&gt;
Es lassen sich dadurch Meldungen wie &amp;quot;Waschmaschine fertig&amp;quot; oder ähnliches ohne weitere Schwellwert Überwachungen in FHEM ableiten. Die Meldungen kommen in MQTT mit &amp;quot;&#039;&#039;&#039;POWER_LOW ON&#039;&#039;&#039;&amp;quot; bzw. &amp;quot;&#039;&#039;&#039;POWER_LOW OFF&#039;&#039;&#039;&amp;quot;.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei erstmaligen Start des Modules muss der Typ des Modules von &amp;quot;SONOFF&amp;quot; auf &amp;quot;&#039;&#039;&#039;SONOFF_Pow&#039;&#039;&#039;&amp;quot; geändert werden, damit die Software weiß mit welchem Modul es zu tun hat und kann dann die entsprechenden Berechnungen durchführen. Die Leistungsdaten kommen ja in Form einer Frequenz aus dem Baustein und müssen im Sketch (xsns_hlw8102.ino) umgerechnet werden.&lt;br /&gt;
                                            &lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_sw_36.jpg|thumb|left|alt=Sonoff POW Attribute]]&lt;br /&gt;
Dieses Bild zeigt die Attribute die vom Modul via MQTT an FHEM geliefert werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
aktuell gelieferter JSON String vom Sketch der alle Messdaten beinhaltet.&lt;br /&gt;
 {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:38:47&amp;quot;, &amp;quot;Yesterday&amp;quot;:&amp;quot;2.286&amp;quot;, &amp;quot;Today&amp;quot;:&amp;quot;1.593&amp;quot;, &amp;quot;Period&amp;quot;:9, &amp;quot;Power&amp;quot;:231, &amp;quot;Factor&amp;quot;:&amp;quot;1.00&amp;quot;, &amp;quot;Voltage&amp;quot;:231, &amp;quot;Current&amp;quot;:&amp;quot;0.866&amp;quot;}&lt;br /&gt;
und hier das zugehörige Reading.&lt;br /&gt;
 tele/sonoffpow/ENERGY    &lt;br /&gt;
       &lt;br /&gt;
&lt;br /&gt;
Hier ein Mittschnitt des Datenverkehrs zum Broker zwecks Kontrolle der korrekten Funktion der Module und der Software.&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/STATE&#039;, ... (103 bytes))&lt;br /&gt;
 tele/sonoffpow/STATE {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:39:15&amp;quot;, &amp;quot;Uptime&amp;quot;:79, &amp;quot;LIGHT&amp;quot;:&amp;quot;OFF&amp;quot;, &amp;quot;Wifi&amp;quot;:{&amp;quot;AP&amp;quot;:2, &amp;quot;SSID&amp;quot;:&amp;quot;Liwest&amp;quot;, &amp;quot;RSSI&amp;quot;:54}}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/ENERGY&#039;, ... (140 bytes))&lt;br /&gt;
 tele/sonoffpow/ENERGY {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:39:15&amp;quot;, &amp;quot;Yesterday&amp;quot;:&amp;quot;1.391&amp;quot;, &amp;quot;Today&amp;quot;:&amp;quot;1.191&amp;quot;, &amp;quot;Period&amp;quot;:0, &amp;quot;Power&amp;quot;:0, &amp;quot;Factor&amp;quot;:&amp;quot;0.00&amp;quot;, &amp;quot;Voltage&amp;quot;:0, &amp;quot;Current&amp;quot;:&amp;quot;0.000&amp;quot;}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff_wall1/STATE&#039;, ... (105 bytes))&lt;br /&gt;
 tele/sonoff_wall1/STATE {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:39:15&amp;quot;, &amp;quot;Uptime&amp;quot;:96, &amp;quot;POWER&amp;quot;:&amp;quot;OFF&amp;quot;, &amp;quot;Wifi&amp;quot;:{&amp;quot;AP&amp;quot;:2, &amp;quot;SSID&amp;quot;:&amp;quot;Pergola&amp;quot;, &amp;quot;RSSI&amp;quot;:100}}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow3/STATE&#039;, ... (104 bytes))&lt;br /&gt;
 tele/sonoffpow3/STATE {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:39:20&amp;quot;, &amp;quot;Uptime&amp;quot;:100, &amp;quot;LIGHT&amp;quot;:&amp;quot;ON&amp;quot;, &amp;quot;Wifi&amp;quot;:{&amp;quot;AP&amp;quot;:2, &amp;quot;SSID&amp;quot;:&amp;quot;Pergola&amp;quot;, &amp;quot;RSSI&amp;quot;:96}}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow3/ENERGY&#039;, ... (134 bytes))&lt;br /&gt;
 tele/sonoffpow3/ENERGY {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:39:20&amp;quot;, &amp;quot;Yesterday&amp;quot;:0.083, &amp;quot;Today&amp;quot;:0.057, &amp;quot;Period&amp;quot;:0, &amp;quot;Power&amp;quot;:0, &amp;quot;Factor&amp;quot;:0.00, &amp;quot;Voltage&amp;quot;:230, &amp;quot;Current&amp;quot;:0.000}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Einstellungen können mit folgender Syntax angefordert werden (zwei Terminalfenster öffnen, eines zum protokollieren und eines zum Seden der Befehle).&lt;br /&gt;
 mosquitto_sub -d -v -t \#  MQTT Datenverkehr protokolieren&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/status/set -m &amp;quot;8&amp;quot;      = SonoffPOW Status jetzt auslesen&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/TelePeriod/set -m &amp;quot;60&amp;quot; = Timer setzen, alle 60 Sekunden Daten senden &lt;br /&gt;
Die Kommandos können direkt am Broker (Terminalfenster Putty etc.) abgesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kalibrieren ===&lt;br /&gt;
Ab Version 2.0.11 kann nun auch der POW kalibriert werden.&lt;br /&gt;
Dazu kann man 2 Konsolenfenster öffnen, im ersten aktiviert man das Protokoll für den Datenverkehr&lt;br /&gt;
 mosquitto_sub -d -v -t \#  MQTT Datenverkehr protokollieren&lt;br /&gt;
&lt;br /&gt;
Dann kann mit folgenden Befehlen die HLW Referenz Pulsfrequenz gesetzt werden.&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/HLWUCAL/set -m &amp;quot;2100&amp;quot;     default = 1950&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/HLWICAL/set -m &amp;quot;2450&amp;quot;     default = 3500&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/HLWPCAL/set -m &amp;quot;13500&amp;quot;    default = 12345 &lt;br /&gt;
Entweder man hat eine definierte Last zur Verfügung oder besser man misst mit einem Leistungsmesser nach. Die Spannung kann man mit einem Multimeter nachmessen (sollte 230 V sein) und der Strom wird errechnet (bei 100 Watt I = P / U ) = 100/230 = 0,4347.&lt;br /&gt;
Die Referenzwerte solange geringfügig ändern bis die Ausgabe passt. Für die Ausgabe wird einfach eine Statusabfrage durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/status/set -m &amp;quot;8&amp;quot;&lt;br /&gt;
Befehl für die Statusabfrage&lt;br /&gt;
&lt;br /&gt;
 cmnd/sonoffpow/status/set 8&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;stat/sonoffpow/STATUS&#039;, ... (103 bytes))&lt;br /&gt;
 stat/sonoffpow/STATUS PWR: Voltage 225 V, Current 0.427 A, Current Power 98 W, Total Power Today 0.080 kWh, Power Factor 1.00&lt;br /&gt;
Ergebnis der Statusabfrage mit Spannung, Strom und Leistung.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===FHEM Anbindung===&lt;br /&gt;
Ein Beispiel einer einfachen Anbindung via JSON an FHEM. MQTT von Arends ist insofern notwendig, da in der Software ESPEasy und der Bridge noch keine Implementierung der Frequenzumrechnung enthalten ist.&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Pow MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Pow IODev myBroker&lt;br /&gt;
 attr Sonoff_Pow icon measure_power&lt;br /&gt;
 attr Sonoff_Pow publishSet ON OFF cmnd/sonoffpow/POWER&lt;br /&gt;
 attr Sonoff_Pow stateFormat {sprintf(&amp;quot;aktuell: %.1f W Tag: %.2f Kw/h&amp;quot;, ReadingsVal($name,&amp;quot;Power&amp;quot;,undef), ReadingsVal($name,&amp;quot;Today&amp;quot;,undef))}&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_ENERGY tele/sonoffpow/ENERGY&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_POWER stat/sonoffpow/POWER&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_state cmnd/sonoffpow/POWER&lt;br /&gt;
 attr Sonoff_Pow webCmd ON:OFF&lt;br /&gt;
Zusätzlich kann hier noch das Relais mit &amp;quot;on&amp;quot; und &amp;quot;off&amp;quot; ein- ausgeschaltet werden.&lt;br /&gt;
&lt;br /&gt;
Ebenso notwendig ist das setzen der Regexp für den JSON Konverter.&lt;br /&gt;
 define ej3 expandJSON Sonoff.*:.*:.{.*}&lt;br /&gt;
hier wird alles was mit dem Namen Sonoff beginnt gefiltert und automatisch alle darin enthaltenen Readings erstellt.&lt;br /&gt;
&lt;br /&gt;
 define ej3 expandJSON Sonoff.*:ENERGY.*:.{.*} (Power|Yesterday|Today)&lt;br /&gt;
oder so, da werden nur die Readings Power, Yesterday und Today erstellt.&lt;br /&gt;
Somit ist auch kalr, das in FHEM auch JSON installiert sein muss. Ebenso können die verschiedenen Regexp im [https://github.com/ddtlabs/expandJSON Wiki] nachgelesen werden.&lt;br /&gt;
&lt;br /&gt;
[https://forum.fhem.de/index.php/topic,66761.15.html Link zum Diskussionsthread].&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Source Reading:&#039;&#039;&#039;&lt;br /&gt;
 device:reading:.{.*} &lt;br /&gt;
 .*WifiIOT.*:sensor.*:.{.*} &lt;br /&gt;
 sonoff_.*:.*:.{.*} &lt;br /&gt;
 dev.*:(sensor1|sensor2|teleme.*):.{.*} &lt;br /&gt;
 (dev.*|[Dd]evice.*):json:.{.*} &lt;br /&gt;
 (devX:jsonX:.{.*}|devY.*:jsonY:.{.*Wifi.*{.*SSID.*}.*}) &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Target Reading:&#039;&#039;&#039;&lt;br /&gt;
 .*power.* &lt;br /&gt;
 (Current|Voltage|Wifi.*)  &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Komplette Definition des Filters:&#039;&#039;&#039;&lt;br /&gt;
 define ej1 expandJSON device:sourceReading:.{.*} targetReading &lt;br /&gt;
 define ej3 expandJSON .*\.SEN\..*:.*:.{.*} &lt;br /&gt;
 define ej3 expandJSON sonoff_.*:sensor.*:.{.*} (power.*|current|voltage)&lt;br /&gt;
&lt;br /&gt;
===Netz-Anschluß===&lt;br /&gt;
[[Datei:sonoff_sw_34.jpg|thumb|left|alt=Sonoff POW Netzanschluß]]&lt;br /&gt;
Erst wenn alle Arbeiten an der Hard- und Software abgeschlossen sind, kann man das Modul an die Netzspannung anschließen. Wer es sich einfach machen will, nimmt eine Industriell gefertigte 230 V Verlängerung  (zwischen 1,5 - 3 Meter) und schneidet sie in der Mitte durch. Nach dem abisolieren der flexiblen Drähte sollte diese &#039;&#039;&#039;verlötet oder mit Aderendhülsen&#039;&#039;&#039; versehen werden (müssen aber exakt passen, da hier kaum Platz in den Klemmen ist). &lt;br /&gt;
Mit einem kleinen Schraubendreher kann man die Feder der Klemmen niederdrücken und das verzinnte Drahtende tief ich die Öffnung stecken. Es dürfen keine Drahtlitzen aus den Öffnungen sichtbar sein, Kurzschlußgefahr! Ebenso sollte eine Zugprobe durchgeführt werden ob die Klemme auch richtig eingerastet ist.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ACHTUNG: diese Arbeiten müssen von einem ausgebildeten Fachpersonal (Elektriker) durchgeführt werden, Lebensgefahr!&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ReadingsGroup mit Schaltmöglichkeit===&lt;br /&gt;
[[Datei:sonoff_pow_03.jpg|thumb|left|alt=readingsGroup mit Schalter]]&lt;br /&gt;
Die ReadingsGroup kann auch gleich mit einem Schalter versehen werden um den POW Ein- oder Aus schalten zu können. Dazu ist aber eine andere Einstellung im Sketch erforderlich.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der &amp;quot;&#039;&#039;&#039;user_config.h&#039;&#039;&#039;&amp;quot; muss an dieser Stelle auch die &amp;quot;&#039;&#039;&#039;PUB_PREFIX&#039;&#039;&#039;&amp;quot; auf die gleiche Topic wie &amp;quot;PUB_PREFIX2&amp;quot; eingestellt werden. Durch diese Maßnahme wird erreicht, dass sofort nach dem Knopfdruck auch der Status mit der Topic &amp;quot;tele&amp;quot; übertragen wird. Würde der weiterhin mit &amp;quot;stat&amp;quot; übertragen, kann er in der Readingsgroup nur sehr umständlich weiter behandelt werden. Dadurch wird erreicht, dass der Schalter sofort nach dem Schaltvorgang und der Rückmeldung (Status) auch seine Farbe ändert. Wird dieser Eintrag vergessen, ändert der Schalter erst nach Eintreffen der nächsten zyklischen Abfrage seinen Status/Farbe.&lt;br /&gt;
&lt;br /&gt;
 #define SUB_PREFIX             &amp;quot;cmnd&amp;quot;       // Sonoff devices subscribe to:- SUB_PREFIX/MQTT_TOPIC and SUB_PREFIX/MQTT_GRPTOPIC&lt;br /&gt;
 #define PUB_PREFIX             &amp;quot;tele&amp;quot;       // Sonoff devices publish to:- PUB_PREFIX/MQTT_TOPIC&lt;br /&gt;
 #define PUB_PREFIX2            &amp;quot;tele&amp;quot;       // Sonoff devices publish telemetry data to:- PUB_PREFIX2/MQTT_TOPIC/UPTIME, POWER/LIGHT and TIME&lt;br /&gt;
hier die PUB_PREFIX mit der geänderten Topic &amp;quot;tele&amp;quot; anstatt &amp;quot;stat&amp;quot; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 define SonoffPows readingsGroup &amp;lt;%measure_power&amp;gt;,&amp;lt;aktuell&amp;gt;,&amp;lt;Tag&amp;gt;,&amp;lt;Gestern&amp;gt;,&amp;lt;Strom&amp;gt;,&amp;lt;Durchschnitt&amp;gt;,&amp;lt;max.P&amp;gt;,&amp;lt;Zyklus&amp;gt;,&amp;lt;Faktor&amp;gt;,&amp;lt;Status&amp;gt;,&amp;lt; hr &amp;gt; .*(Sonoff_Pow|Sonoff_Pow2|Sonoff_Pow3|Sonoff_Pow4):Power,Today,Yesterday,Current,Power_avg_day,Power_max_day,Period,Factor,LIGHT&lt;br /&gt;
 attr SonoffPows commands {&#039;LIGHT.ON&#039; =&amp;gt; &#039;set $DEVICE OFF&#039;,&#039;LIGHT.OFF&#039; =&amp;gt; &#039;set $DEVICE ON&#039;}&lt;br /&gt;
 attr SonoffPows mapping %ALIAS&lt;br /&gt;
 attr SonoffPows nameStyle style=&amp;quot;color:yellow&amp;quot;&lt;br /&gt;
 attr SonoffPows room Energie,MQTT&lt;br /&gt;
 attr SonoffPows valueFormat {&#039;Power&#039; =&amp;gt;&amp;quot;%.0f W&amp;quot;, &#039;Today&#039; =&amp;gt;&amp;quot;%.2f Kw&amp;quot;,&#039;Yesterday&#039; =&amp;gt;&amp;quot;%.2f Kw&amp;quot;, &#039;CURRENT&#039; =&amp;gt;&amp;quot;%.2f A&amp;quot;,&#039;Power_max_day&#039; =&amp;gt; &amp;quot;%.0f W&amp;quot;,&#039;Power_avg_day&#039; =&amp;gt; &amp;quot;%.2f W&amp;quot;,&#039;Power&#039;=&amp;gt;&amp;quot;%.0f W&amp;quot;,&#039;Factor&#039; =&amp;gt; &amp;quot;%.2f &amp;quot;}&lt;br /&gt;
 attr SonoffPows valueIcon {&#039;LIGHT.ON&#039; =&amp;gt; &#039;rc_GREEN@green&#039;, &#039;LIGHT.OFF&#039; =&amp;gt; &#039;rc_RED@red&#039;}&lt;br /&gt;
 attr SonoffPows valueStyle { if($READING eq &amp;quot;Power&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 0 &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Today&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 4.8){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Today&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 2.5){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Today&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 2.5 &amp;amp;&amp;amp; $VALUE &amp;lt; 4.8 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Yesterday&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 2.5){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Yesterday&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 2.5 &amp;amp;&amp;amp; $VALUE &amp;lt; 4.8 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Yesterday&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 4.8){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Current&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 0.45){&#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039;}elsif( $READING eq &amp;quot;Current&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 0.45 &amp;amp;&amp;amp; $VALUE &amp;lt; 0.87 ){&#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Current&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 0.87){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Period&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 10){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Period&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 10 &amp;amp;&amp;amp; $VALUE &amp;lt; 15 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Period&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 15){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039;}}&lt;br /&gt;
Dieses Beispiel ist für &#039;&#039;&#039;Tasmota mit JSON&#039;&#039;&#039; ausgelegt und benötigt ebenso wie oben die Erweiterung &amp;quot;average&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Pow_CURRENT_POWER average Sonoff_Pow:Power.*&lt;br /&gt;
damit werden der Durchschnitt und min max für Tasmota mit JSON erzeugt.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===FTUI===&lt;br /&gt;
[[Datei:sonoff_pow_energy.JPG|thumb|left|alt=Tablett FTUI]]&lt;br /&gt;
Wer möchte kann die Energieanzeigen auch mit der {{Link2Forum|Topic=34233|LinkText=Tablett UI}} für eine Tablet Ansicht gestalten. Mit dieser stehen viele Möglichkeiten zu einer attraktiven Darstellung zur Verfügung.&lt;br /&gt;
Hier ein Beispiel welches mit den Widget &amp;quot;[http://www.fhemwiki.de/wiki/FHEM_Tablet_UI#Widget_THERMOSTAT thermostat]&amp;quot; dargestellt ist.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Slampher==&lt;br /&gt;
[[Datei:sonoff_sl_53.jpg|thumb|left|alt=Sonoff SLAMPHER]]&lt;br /&gt;
Dieses Modul ist eine Besonderheit was das Flashen betrifft, denn mit Hilfe des Tasters kann der ESP8266 NICHT in den Flashmode gebracht werden. Der Taster ist intern anderwärtig verdrahtet und somit für diesen Zweck nicht zu gebrauchen.&lt;br /&gt;
&lt;br /&gt;
Wie hier links im Bild zu sehen ist, muss der rechte Pin des R20 (oben im Bild) während dem Einstecken des USB Steckers auf Masse gelegt werden. Die beste Möglichkeit ist ein Stücken Draht anzulöten und diesen dann beim einstecken auf den Masse Pin des USB-Konverters zu legen.&lt;br /&gt;
&lt;br /&gt;
Pinbelegung des Steckers von oben nach unten:&lt;br /&gt;
 o - GND&lt;br /&gt;
 o - TxD&lt;br /&gt;
 o - RxD&lt;br /&gt;
 &#039;&#039;&#039;o&#039;&#039;&#039; - Vdd&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sl_51.jpg|thumb|left|alt=Sonoff SLAMPHER R20]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier ist genau ersichtlich, wo der R20 auf der Platine platziert ist. }}&lt;br /&gt;
Hier nocheinmal schön zu sehen wo der R20 (der ist nicht eingelötet sondern leer) exakt auf der Platine liegt, gemeint ist der rechte Pin. Hier kann auch leicht gelötet werden, da keine empfindlichen Bauteile in der Nähe sind und auch genug Platz vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_sl_50.jpg|thumb|left|alt=Sonoff SLAMPHER R20]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier ist genau ersichtlich, wo der Draht am R20 aufgelötet wurde }}&lt;br /&gt;
Hier ist ein kleines Stück Schaltdraht auf den Pin bereist aufgelötet und bereit zum Flashen!&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel wurde keine Pfostensteckerleiste auf die Platine aufgelötet, sondern nur durchgesteckt und mit einem Gummiring  zum Relais fixiert, das erspart den Lötvorgang, weil in Zukunft dann ohnehin OTA geflasht werden kann.&lt;br /&gt;
&lt;br /&gt;
Also Pin20 auf Masse legen und USB-Konverter an den PC einstecken, dann den Draht von der Masse entfernen. Der ESP8266 sollte jetzt im Flashmodus bereit stehen und kann wie bereits oben beschrieben geflasht werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sonoff Slampher Software===&lt;br /&gt;
[[Datei:sonoff_sl_54.jpg|thumb|left|alt=Sonoff SLAMPHER FHEM]]&lt;br /&gt;
&lt;br /&gt;
Als Software wird Arends Sketch installiert (Kommunikation über MQTT), da zum derzeitigen Zeitpunkt ESPEasy das Modul noch nicht integriert hat und somit auch nicht ansteuern kann.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_SL MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_SL IODev myBroker&lt;br /&gt;
 attr Sonoff_SL devStateIcon ON:rc_GREEN:OFF OFF:rc_RED:ON&lt;br /&gt;
 attr Sonoff_SL icon hue_filled_br30&lt;br /&gt;
 attr Sonoff_SL publishSet ON OFF cmnd/sonoffsl/POWER/set&lt;br /&gt;
 attr Sonoff_SL room Bewegung,_Sonoff&lt;br /&gt;
 attr Sonoff_SL stateFormat Licht&lt;br /&gt;
 attr Sonoff_SL subscribeReading_Licht tele/sonoffsl/POWER&lt;br /&gt;
 attr Sonoff_SL subscribeReading_state cmnd/sonoffsl/POWER/set&lt;br /&gt;
 attr Sonoff_SL webCmd ON:OFF&lt;br /&gt;
&lt;br /&gt;
Hier ein Beispiel wie in FHEM der Slampher eingebunden werden kann. In diesem Beispiel wird davon ausgegangen, das im Modul die Topic &amp;quot;sonoffsl&amp;quot; benannt wurde. Wer einen anderen Namen haben möchte, muss dies dann auch in FHEM entsprechend anpassen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Th10/16 ==&lt;br /&gt;
[[Datei:sonoff_th_01.jpg|thumb|left|alt=Sonoff TH10]]&lt;br /&gt;
Das Modul kann durch drücken des Tasters während dem Einstecken des USB-Konverters in den Flashmodus gebracht werden.&lt;br /&gt;
Der Th10/16 kann mit zwei unterschiedlichen Typen von Sensoren bestückt werden, hier im Beispiel mit dem externen Temperaturfühler DS18B20.&lt;br /&gt;
&lt;br /&gt;
Wie im Bild klar zu sehen ist, kann das Webif auch zur Darstellung via Mobile verwendet werden. Mit &amp;quot;Toggle&amp;quot; wird Ein- oder Aus geschaltet und  darunter ist die aktuelle Temperatur ersichtlich. Für diese Ansicht muss keine MQTT Verbindung eingerichtet werden, da die Kommunikation hier rein über HTTP erfolgt.&lt;br /&gt;
&lt;br /&gt;
Die unten dargestellten Beispiele für FHEM beziehen sich auf Arends Sketch, also über MQTT. Dieses Modul kann aber genauso leicht über ESPEasy und der ESPEasy-Bridge eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Pinbelegung des Steckers von oben nach unten:&lt;br /&gt;
 o - GND&lt;br /&gt;
 o - TxD&lt;br /&gt;
 o - RxD&lt;br /&gt;
 &#039;&#039;&#039;o&#039;&#039;&#039; - Vdd&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_th_02.jpg|thumb|left|alt=Sonoff TH10]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Einbindung in FHEM via MQTT! }}&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ### Temperatur und Luftfeuchte vom Sonoff Switch ###&lt;br /&gt;
 define Sonoff_Temp MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Temp IODev myBroker&lt;br /&gt;
 attr Sonoff_Temp alias Pool Wasser&lt;br /&gt;
 attr Sonoff_Temp eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_Temp icon temperature_humidity&lt;br /&gt;
 attr Sonoff_Temp publishSet ON OFF cmnd/sonoffth/POWER/set&lt;br /&gt;
 attr Sonoff_Temp room _Sonoff&lt;br /&gt;
 attr Sonoff_Temp stateFormat {sprintf(&amp;quot;Temperatur: %.1f Grad&amp;quot;, ReadingsVal($name,&amp;quot;temperature&amp;quot;,0))}&lt;br /&gt;
 attr Sonoff_Temp subscribeReading_SENSOR tele/sonoffth/SENSOR&lt;br /&gt;
 attr Sonoff_Temp subscribeReading_state cmnd/sonoffth/POWER/set&lt;br /&gt;
Beispiel für FHEM mit Temperaturanzeige mit DS18B20&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Switch MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Switch IODev myBroker&lt;br /&gt;
 attr Sonoff_Switch alias Pool Licht&lt;br /&gt;
 attr Sonoff_Switch devStateIcon on:rc_GREEN:off off:rc_RED:on&lt;br /&gt;
 attr Sonoff_Switch eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_Switch icon light_ceiling&lt;br /&gt;
 attr Sonoff_Switch publishSet ON OFF cmnd/sonoffth/POWER/set&lt;br /&gt;
 attr Sonoff_Switch room _Sonoff&lt;br /&gt;
 attr Sonoff_Switch stateFormat Licht&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_Licht tele/sonoffth/POWER&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_state cmnd/sonoffth/POWER/set&lt;br /&gt;
 attr Sonoff_Switch webCmd ON:OFF&lt;br /&gt;
Der Schalter nochmals seperat dargestellt, je nach Geschmack.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff 4CH 4-Kanal Schaltmodul==&lt;br /&gt;
===Besonderheiten ===&lt;br /&gt;
[[Datei:sonoff_ch4_1.jpg|thumb|left|alt=Sonoff CH4]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Achtung andere Einstellungen der Arduino IDE: Select Board &amp;quot;Generic ESP8285 Module&amp;quot; (=Flash Mode &amp;quot;DOUT&amp;quot;) and Flash Size &amp;quot;1M (64K SPIFFS)&amp;quot;n! }}&lt;br /&gt;
&lt;br /&gt;
Der Sonoff 4CH ist mit seinen 4 Kanälen ein sehr preiswertes Modul im Gehäuse und für Hutschinenmontage. Anstatt des üblichen ESP8266 besitzt dieses Modul schon den moderneren &#039;&#039;&#039;ESP8285&#039;&#039;&#039;. Es müssen daher in der Arduino IDE andere Einstellungen vorgenommen werden. Unter Board wird hier das &amp;quot;&#039;&#039;&#039;Generic 8285 Module&#039;&#039;&#039;&amp;quot; mit &#039;&#039;&#039;1M und 64K Spiffs&#039;&#039;&#039; angewählt. Der Flashmode &amp;quot;&#039;&#039;&#039;DOUT&#039;&#039;&#039;&amp;quot; wird dann automatisch eingestellt, bzw. ausgeblendet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Es ist daher unbedingt notwendig den Sketch mit den geänderten Einstellungen selbst zu kompilieren, ansonsten stürzt das Modul nach Auswahl des Typs ab  und wird nicht mehr rebooten können!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das Modul ist etwas größer als die anderen Sonoff Produkte und besitzt mit 14,5 x 9 cm schon beachtliche Einbau Maße.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_ch4_2.jpg|thumb|left|alt=Sonoff 4CH FDTI]]&lt;br /&gt;
Als weitere Besonderheit sei hier erwähnt, das die Signale &#039;&#039;&#039;RxD auf RxD und TxD auf TxD&#039;&#039;&#039; des FTDI Konverters zu verbinden sind. Wie bei allen Sonoff Modulen darf man &#039;&#039;&#039;zum flashen keine Netzspannung anschließen&#039;&#039;&#039;, sondern nur über die Versorgungsspannung des FDTI Konverters mit 3,3 V versorgen (Jumper richtig setzen). Die Stiftleiste für den FTDI Anschluß ist hier schon eingelötet.&lt;br /&gt;
&lt;br /&gt;
In den Flashmodus gelangt man durch drücken der &#039;&#039;&#039;Taste FW/IO0&#039;&#039;&#039; während des einstecken des USB Anschlusses.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_ch4_3.jpg|thumb|left|alt=Sonoff 4CH Arends]]&lt;br /&gt;
Hier die Ansicht des Webinterface des Arends Sketches!&lt;br /&gt;
Bei der Software sei erwähnt, das die getestete Version 3.1.16 nur bei Kanal 1 den Modus &amp;quot;PulseTime&amp;quot; beherrscht. Wer also gepulste Ausgänge (zB: elektrische Garage/Toröffner) benötigt muss diese per Software nachbilden oder mit dem Kanal 1 auskommen. Eine &amp;quot;Pulsetime 10&amp;quot; ist ein guter Wert dafür (etwa 1 Sekunde). &lt;br /&gt;
&lt;br /&gt;
Als Alternative kann mit dieser HTML Seite des Webservers am Modul des CH4 schon mit jedem Browser fähigem Handy (Android, iPhone, Windows) aufgerufen werden und somit alle Funktionen gesteuert werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_ch4_4.jpg|thumb|left|alt=Sonoff CH4 Software APP]]&lt;br /&gt;
Hier dargestellt die Original Software die Sonoff zum Modul liefert (EWeLink) und über ihre Cloud verbindet. Leider kann hier keine gepulste Ausgabe erfolgen. Mit einem Countdown kann zwar der Ausgang wieder abgeschaltet werden, die kleinste Zeiteinheit ist aber 1 Minute und somit für einen Impuls leider nicht zu gebrauchen. Ebenso kann mit dieser Software keine Einbindung in FHEM erfolgen, obwohl es eine nette anschauliche Darstellung ist.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Anbindung FHEM===&lt;br /&gt;
Beispiel zur Anbindung in FHEM für den 4CH, hier werden einfach 4 einzelne Schalter definiert!&lt;br /&gt;
 define Sonoff_ch1 MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_ch1 IODev myBroker&lt;br /&gt;
 attr Sonoff_ch1 alias Sonoff CH1&lt;br /&gt;
 attr Sonoff_ch1 devStateIcon on:rc_GREEN:off off:rc_RED:on&lt;br /&gt;
 attr Sonoff_ch1 eventMap ON:on OFF:off ON:Ein OFF:Aus&lt;br /&gt;
 attr Sonoff_ch1 group Toröffner&lt;br /&gt;
 attr Sonoff_ch1 icon light_ceiling&lt;br /&gt;
 attr Sonoff_ch1 publishSet ON OFF cmnd/sonoffch4/POWER1/set&lt;br /&gt;
 attr Sonoff_ch1 stateFormat Power&lt;br /&gt;
 attr Sonoff_ch1 subscribeReading_Power tele/sonoffch4/POWER1&lt;br /&gt;
 attr Sonoff_ch1 subscribeReading_state cmnd/sonoffch4/POWER1/set&lt;br /&gt;
 attr Sonoff_ch1 webCmd Ein:Aus&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_ch2 MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_ch2 IODev myBroker&lt;br /&gt;
 attr Sonoff_ch2 alias Sonoff CH2&lt;br /&gt;
 attr Sonoff_ch2 devStateIcon on:rc_GREEN:off off:rc_RED:on&lt;br /&gt;
 attr Sonoff_ch2 eventMap ON:on OFF:off ON:Ein OFF:Aus&lt;br /&gt;
 attr Sonoff_ch2 group Toröffner&lt;br /&gt;
 attr Sonoff_ch2 icon light_ceiling&lt;br /&gt;
 attr Sonoff_ch2 publishSet ON OFF cmnd/sonoffch4/POWER2/set&lt;br /&gt;
 attr Sonoff_ch2 stateFormat Power&lt;br /&gt;
 attr Sonoff_ch2 subscribeReading_Power tele/sonoffch4/POWER2&lt;br /&gt;
 attr Sonoff_ch2 subscribeReading_state cmnd/sonoffch4/POWER2/set&lt;br /&gt;
 attr Sonoff_ch2 webCmd Ein:Aus&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_ch3 MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_ch3 IODev myBroker&lt;br /&gt;
 attr Sonoff_ch3 alias Sonoff CH3&lt;br /&gt;
 attr Sonoff_ch3 devStateIcon on:rc_GREEN:off off:rc_RED:on&lt;br /&gt;
 attr Sonoff_ch3 eventMap ON:on OFF:off ON:Ein OFF:Aus&lt;br /&gt;
 attr Sonoff_ch3 group Toröffner&lt;br /&gt;
 attr Sonoff_ch3 icon light_ceiling&lt;br /&gt;
 attr Sonoff_ch3 publishSet ON OFF cmnd/sonoffch4/POWER3/set&lt;br /&gt;
 attr Sonoff_ch3 stateFormat Power&lt;br /&gt;
 attr Sonoff_ch3 subscribeReading_Power tele/sonoffch4/POWER3&lt;br /&gt;
 attr Sonoff_ch3 subscribeReading_state cmnd/sonoffch4/POWER3/set&lt;br /&gt;
 attr Sonoff_ch3 webCmd Ein:Aus&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_ch4 MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_ch4 IODev myBroker&lt;br /&gt;
 attr Sonoff_ch4 alias Sonoff CH4&lt;br /&gt;
 attr Sonoff_ch4 devStateIcon on:rc_GREEN:off off:rc_RED:on&lt;br /&gt;
 attr Sonoff_ch4 eventMap ON:on OFF:off ON:Ein OFF:Aus&lt;br /&gt;
 attr Sonoff_ch4 group Toröffner&lt;br /&gt;
 attr Sonoff_ch4 icon light_ceiling&lt;br /&gt;
 attr Sonoff_ch4 publishSet on off cmnd/sonoffch4/POWER4/set&lt;br /&gt;
 attr Sonoff_ch4 stateFormat Power&lt;br /&gt;
 attr Sonoff_ch4 subscribeReading_Power tele/sonoffch4/POWER4&lt;br /&gt;
 attr Sonoff_ch4 subscribeReading_state cmnd/sonoffch4/POWER4/set&lt;br /&gt;
 attr Sonoff_ch4 webCmd Ein:Aus&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Erweiterungen mit Sensoren=&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wozu überhaupt den Switch erweitern wenn es auch die Modelle TH10 und TH16 gibt?&lt;br /&gt;
&lt;br /&gt;
Manche Personen können dadurch dem Basteltrieb nachkommen, aber das wesentliche ist der Preis, da die Switches doch fast um die Hälfte billiger sind. Die Sensoren kosten ebenfalls kaum nennenswerte Beträge.&lt;br /&gt;
&lt;br /&gt;
Oder es hat schon jemand Switches im Einsatz und möchte jetzt zusätzlich die Temperatur erfassen!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sonoff Switch mit Temperatur + Luftfeuchte== &lt;br /&gt;
=== Hardware erweitern mit DHT22 ===&lt;br /&gt;
[[Datei:sonoff_sw_4.PNG|thumb|left|alt=Sonoff Switch Pinleiste mit Temperatur]]&lt;br /&gt;
Am Sonoff Switch wurde ja schon eine Stiftleiste zum Flashen eingelötet. Diese Stiftleiste bietet schon alle Anschlüsse welche für die Temperatur- und Luftfeuchtemessung benötigt werden. Am 5. Anschluß der Stifftleiste ist das Signal &amp;quot;SCL&amp;quot; (GPIO14) herausgeführt, welches für den DHT22 zur Erfassung der Messdaten benötigt wird. Der Sonsor wird mit einem einem 3-poligen Kabel (zB: ein Steckkabel für ein Breadboard oder direkt anlöten) verbunden. Damit der DHT22 korrekt funktioniert, wird ein Widerstand mit 4,7 K Ohm zwischen Vdd und Data am DHT22 zusätzlich benötigt. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_45.jpg|thumb|left|alt=AM2302 / DHT22]]&lt;br /&gt;
&lt;br /&gt;
Ansicht des DHT22 (AM2302) mit den aufgesteckten Verbindungskabeln. Von links nach rechts sind das&lt;br /&gt;
&lt;br /&gt;
 1 = VCC 3,3 V&lt;br /&gt;
 2 = Data&lt;br /&gt;
 3 = nc (nicht belegt)&lt;br /&gt;
 4 = GND&lt;br /&gt;
&lt;br /&gt;
Pin1 (VCC) des DHT22 muss also auf Pin1 der Stiftleiste, Pin2 (Data) auf Pin5 und Pin4 (GND) auf Pin4. &lt;br /&gt;
Pin2 und Pin1 soll hier noch der Widerstand aufgelötet werden.&lt;br /&gt;
&lt;br /&gt;
 1 ------- 1 (VDD)&lt;br /&gt;
 2 ------- 5 (GPIO14)&lt;br /&gt;
 3&lt;br /&gt;
 4 ------- 4 (GND)&lt;br /&gt;
 DHT22  Stiftleiste&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_44.jpg|thumb|left|alt=umgebautes Modul]]&lt;br /&gt;
Diese Darstellung zeigt das umgebaute und bereits verschlossene Modul. Auf der Seite des Tasters (bitte nur hier, da auf der anderen Seite die 230 V verlaufen und neben der Lebensgefahr auch den Sensor beeinflussen) ist hier einfach mit einer Eisensäge ein Schlitz eingesägt, der dient in diesem Falle als Kabeldurchführung. Ein Schlitz ist besser als ein Loch, da der Oberteil des Gehäuses sich leichter aufsetzen läßt. Wer ein längeres Kabel benötigt, kann natürlich auch ein 3-poliges Telefonkabel (oder Mikrokabel oder sonstiges) verwenden. Der Sensor sollte etwas Abstand zum Gehäuse haben, da dieses auch eine Eigenerwärmung hat. Wer es ganz originalgetreu lösen will, kann auch eine 3-polige Mini Buchse für Klinckenstecker (3,5mm) einbauen so wie sie am TH10/16 vorhanden ist.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Software anpassen am Beispiel MQTT ===&lt;br /&gt;
[[Datei:sonoff_sw_40.jpg|thumb|left|alt=Sonoff MQTT]]&lt;br /&gt;
&lt;br /&gt;
Die richtige Auswahl des Sensors und des verwendeten GPIO erfolgt im WEBIF des Modules und wird seit Tasmota nur mehr dort eingestellt. Eventuell sollte das aktuell verwendete [https://github.com/ddtlabs/expandJSON/ JSON Filter] geändert/erweitert werde (siehe beim Modul POW).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Software Anpassung DHT22 in FHEM ===&lt;br /&gt;
[[Datei:sonoff_sw_41.jpg|thumb|left|alt=umgebautes Modul]]&lt;br /&gt;
&lt;br /&gt;
Links in der Hardcopy sind die Readings die nach der Anpassung von FHEM (Broker) befüllt werden sollten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ### Temperatur und Luftfeuchte vom Sonoff Switch ###&lt;br /&gt;
 define Sonoff_Temp MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Temp IODev myBroker&lt;br /&gt;
 attr Sonoff_Temp icon temperature_humidity&lt;br /&gt;
 attr Sonoff_Temp room MQTT&lt;br /&gt;
 attr Sonoff_Temp stateFormat {sprintf(&amp;quot;Temperatur: %.1f Grad Feuchte: %.1f &amp;quot;, ReadingsVal($name,&amp;quot;temperature&amp;quot;,0), ReadingsVal($name,&amp;quot;humidity&amp;quot;,0))}&lt;br /&gt;
 attr Sonoff_Temp subscribeReading_Sensor tele/sonoff/SENSOR&lt;br /&gt;
Hier die zusätzliche Erweiterung um die Temperatur und die Luftfeuchte in FHEM. Der in der Topic verwendete Name &amp;quot;sonoff&amp;quot; muss natürlich der Einstellung in der Software am Switch entsprechen. Bei Verwendung mehrerer Switches muss natürlich auch der Name bei jedem geändert werden.&lt;br /&gt;
&lt;br /&gt;
Als Regexp für JSON kann dieser Filter eingesezt werden.&lt;br /&gt;
 define ej3 expandJSON .*\.SEN\..*:.*:.{.*} &lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Logfile für die Temperatur ===&lt;br /&gt;
 define SVG_FileLog_Sonoff_Temp SVG myDbLog:SVG_FileLog_Sonoff_Temp:HISTORY&lt;br /&gt;
 attr SVG_FileLog_Sonoff_Temp room MQTT&lt;br /&gt;
&lt;br /&gt;
Und schließlich fehlt noch das Logfile, damit der Temperaturverlauf auch in schönen Plots dargestellt werden kann.&lt;br /&gt;
Das hier verwendete Beispiel funktioniert nur mit einer DbLog.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Switch als Thermostat verwenden mit MQTT==&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_55.jpg|thumb|left|alt=Thermostat]]&lt;br /&gt;
Mit diesem einfachen Beispiel wird ein Pelett Ofen mit einem externen Thermostat (sonoff Switch oder TH10/16) gesteuert. Zum besseren Überblick wird die Steuerung in einzelne Module getrennt, es könnte aber auch einiges zu einer einzigen Definition zusammen gefasst werden. Der Thermostat könnte auch als Frostwächter benutzt werden und ein anderes Heizgerät steuern.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 ###################################&lt;br /&gt;
 ### Sonoff Thermostat Regelung ####&lt;br /&gt;
 ###################################&lt;br /&gt;
 define Sonoff_dht MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_dht IODev myBroker&lt;br /&gt;
 attr Sonoff_dht alias Raumtemperatur&lt;br /&gt;
 attr Sonoff_dht group Thermostat&lt;br /&gt;
 attr Sonoff_dht icon temperature_humidity&lt;br /&gt;
 attr Sonoff_dht publishSet ON OFF cmnd/sonoff_dht/POWER/set&lt;br /&gt;
 attr Sonoff_dht room _Sonoff&lt;br /&gt;
 attr Sonoff_dht stateFormat {sprintf(&amp;quot;Temperatur: %.1f Grad Feuchte: %.1f &amp;quot;, ReadingsVal($name,&amp;quot;temperature&amp;quot;,0),  ReadingsVal($name,&amp;quot;humidity&amp;quot;,0))}&lt;br /&gt;
 attr Sonoff_dht subscribeReading_Sensor tele/sonoff_dht/SENSOR&lt;br /&gt;
 attr Sonoff_dht subscribeReading_state cmnd/sonoff_dht/POWER/set&lt;br /&gt;
FHEM Definition zur Erfassung der Temperatur und der Luftfeuchte. Damit dieses Beispiel funktioniert, ist am Sonoff Modul die Topic &amp;quot;&#039;&#039;&#039;sonoff_dht&#039;&#039;&#039;&amp;quot; zu setzen. Dieser Temperaturwert dient dem Thermostat als ISTWert.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Sw MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Sw IODev myBroker&lt;br /&gt;
 attr Sonoff_Sw alias Pellets Ofen&lt;br /&gt;
 attr Sonoff_Sw devStateIcon on:rc_GREEN:off off:rc_RED:on&lt;br /&gt;
 attr Sonoff_Sw eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_Sw group Thermostat&lt;br /&gt;
 attr Sonoff_Sw icon sani_boiler_temp&lt;br /&gt;
 attr Sonoff_Sw publishSet ON OFF cmnd/sonoff_dht/POWER/set&lt;br /&gt;
 attr Sonoff_Sw room _Sonoff&lt;br /&gt;
 attr Sonoff_Sw stateFormat Licht&lt;br /&gt;
 attr Sonoff_Sw subscribeReading_Licht tele/sonoff_dht/POWER&lt;br /&gt;
 attr Sonoff_Sw subscribeReading_state cmnd/sonoff_dht/POWER/set&lt;br /&gt;
 attr Sonoff_Sw webCmd ON:OFF&lt;br /&gt;
FHEM Definition zum Absetzen der Befehle für das Relais (Thermostat) Ein- / Aus. Wenn das zu steuernde Geräte einen potentialfreien Thermostatanschluß benötigt (in den meisten Fällen), muss noch ein Relais dazwischen geschaltet werden um die Trennung der Netzspannung zu gewährleisten.&lt;br /&gt;
&lt;br /&gt;
 define ThermostatPellets dummy&lt;br /&gt;
 attr ThermostatPellets alias Pellets Ofen Sollwert&lt;br /&gt;
 attr ThermostatPellets group Thermostat&lt;br /&gt;
 attr ThermostatPellets icon temp_control&lt;br /&gt;
 attr ThermostatPellets room _Sonoff&lt;br /&gt;
 attr ThermostatPellets setList state:0,5,10,12,13,14,15,16,17,17.5,18,18.5,19,19.5,20,20.5,21,21.5,22,23,24,25,26,27&lt;br /&gt;
 attr ThermostatPellets webCmd state&lt;br /&gt;
Die Sollwertvorgabe für das Thermostat durch einen Dummy, damit können die gewünschten Temperaturen eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
 ### sofort ausführen wenn neuer Sollwert eingestellt wird ###&lt;br /&gt;
 define Thermostat_on_notify notify ThermostatPellets IF (ReadingsVal(&amp;quot;Sonoff_Sw&amp;quot;,&amp;quot;state&amp;quot;,0) eq &amp;quot;OFF&amp;quot; &amp;amp;&amp;amp; (ReadingsVal(&amp;quot;Sonoff_dht&amp;quot;,&amp;quot;temperature&amp;quot;,0) &amp;lt;= Value(&amp;quot;ThermostatPellets&amp;quot;))) (set Sonoff_Sw ON)&lt;br /&gt;
 define Thermostat_off_notify notify ThermostatPellets IF (ReadingsVal(&amp;quot;Sonoff_Sw&amp;quot;,&amp;quot;state&amp;quot;,0) eq &amp;quot;ON&amp;quot; &amp;amp;&amp;amp; (ReadingsVal(&amp;quot;Sonoff_dht&amp;quot;,&amp;quot;temperature&amp;quot;,0) &amp;gt; Value(&amp;quot;ThermostatPellets&amp;quot;))) (set Sonoff_Sw OFF)&lt;br /&gt;
Mit einem notify wird die manuelle Änderung des Sollwertes überwacht und sofort reagiert.&lt;br /&gt;
&lt;br /&gt;
 ## zyklisch prüfen ob Sollwert erreicht wurde ###&lt;br /&gt;
 define Thermostat_on at +*00:15:00 IF (ReadingsVal(&amp;quot;Sonoff_Sw&amp;quot;,&amp;quot;Licht&amp;quot;,0) eq &amp;quot;OFF&amp;quot; &amp;amp;&amp;amp; (ReadingsVal(&amp;quot;Sonoff_dht&amp;quot;,&amp;quot;temperature&amp;quot;,0) &amp;lt;= Value(&amp;quot;ThermostatPellets&amp;quot;))) (set Sonoff_Sw ON)&lt;br /&gt;
 define Thermostat_off at +*00:15:00 IF (Value(&amp;quot;Sonoff_Sw&amp;quot;) eq &amp;quot;ON&amp;quot; &amp;amp;&amp;amp; (ReadingsVal(&amp;quot;Sonoff_dht&amp;quot;,&amp;quot;temperature&amp;quot;,0) &amp;gt; Value(&amp;quot;ThermostatPellets&amp;quot;))) (set Sonoff_Sw OFF)&lt;br /&gt;
Hier noch die Soll- Ist Wertvergleiche zur Steuerung. Es wird alle 15 Minuten überprüft ob die Temperatur erreicht ist. Bei einer trägen Heizung sollten 15 Minuten ausreichend sein, wer will kann dies aber auch alle 5 oder 10 Minuten prüfen.&lt;br /&gt;
Da des öfteren die Bezeichnungen der Readings im Sketch geändert werden ( zB:temperature ), bitte die richtige Schreibweise ( Groß/Klein ) in den Readings kontrollieren und gegebenenfalls hier anpassen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Switch mit Bewegungsmelder HC-SR501==&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_pir_1.jpg|thumb|left|alt=Bewegungsmelder]]&lt;br /&gt;
Basierend auf dem Wall Switch MQTT Sketch von Arends wurde hier ein Sonoff BASIC + PIR HC-SR501 in eine größere Verteilerdose eingebaut, der Sonoff wurde dabei etwas gekürzt. Die Bewegungsmelder sind ab etwa 70 Cent erhältlich.&lt;br /&gt;
&lt;br /&gt;
Der Sketch kann auch den Blink Modus. Damit kann man im Alarmfall z.B. Alle Strahler rings ums Haus blinken lassen.&lt;br /&gt;
&lt;br /&gt;
Mehr dazu kann hier im {{Link2Forum|Topic=63824|LinkText=Forum}}im Diskussionsthread nachgelesen werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_pir_2.jpg|thumb|left|alt=Bewegungsmelder]]&lt;br /&gt;
Ein Beispiel wir der Bewegungsmelder in der Feuchtraumdose montiert werden kann. Wird der Bewegungsmelder abgesetzt vom Switch montiert, ist darauf zu achten das die Kabel nicht zu lange werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Spannungsversorgung des HC-SR501===&lt;br /&gt;
[[Datei:sonoff_pir_4.jpg|thumb|left|alt=5V für Bewegungsmelder]]&lt;br /&gt;
Der HC-SR501 wird vom Sonoff versorgt, wobei hier die 3,3 V nicht immer ausreichen. Es ist deshalb am HC-SR501 eine Diode zu überbrücken, dann reichen die 3,3V vom Sonoff. Es können aber auch am Sonoff die 5V angezapft werden. Hier im Bild dargestellt wo die 5V angezapft werden können.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_pir_5.jpg|thumb|left|alt=3,3V für Bewegungsmelder]]&lt;br /&gt;
Hier eine kleine Übersicht der wichtigsten Teile und deren Platzierung am HC-SR501. &lt;br /&gt;
Den PIR kann man auch mit 3,3V betreiben wenn man die Diode am Eingang nach Vcc überbrückt, dann reicht die Spannung für einen reibungslosen Betrieb völlig aus. Dies gilt für den HC-SR501, wird ein anderer PIR verwendet muss man nachschauen ob das auch möglich ist, ansonsten die 5V Variante wählen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===Einbindung des HC-SR501 in FHEM===&lt;br /&gt;
 # ------------- Sonoff_pir mit Bewegungsmelder ---------------&lt;br /&gt;
 define Sonoff_pir MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_pir IODev myBroker&lt;br /&gt;
 attr Sonoff_pir eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_pir group Sonoff&lt;br /&gt;
 attr Sonoff_pir icon hue_filled_br30&lt;br /&gt;
 attr Sonoff_pir publishSet ON OFF cmnd/sonoff_pir/1/POWER&lt;br /&gt;
 attr Sonoff_pir room MQTT&lt;br /&gt;
 attr Sonoff_pir stateFormat Licht&lt;br /&gt;
 attr Sonoff_pir subscribeReading_Licht stat/sonoff_pir/POWER&lt;br /&gt;
 attr Sonoff_pir subscribeReading_state cmnd/sonoff_pir/1/POWER&lt;br /&gt;
 attr Sonoff_pir webCmd :&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel wie der Sonoff Switch in FHEM eingebunden wird. Wenn im Sketch der Prefix von stat auf tele geändert wurde, ist dies auch hier durchzuführen ( subscribeReading_Licht tele/sonoff_pir/POWER ), ansonsten bleibt es so wie im Beispiel. Getestet wurde dieses Beispiel mit Version 5.5.2i. Die Topic sollte auf den Namen &amp;quot;sonoff_pir&amp;quot; eingestellt werden. Bei anderen Namen ist dies entsprechend in FHEM anzupassen. &lt;br /&gt;
&lt;br /&gt;
Mit dem Kommando &#039;&#039;&#039;SwitchTopic Alarm_SO2&#039;&#039;&#039; ( direkt im Webinterface des Sonoff ) wird der Wall Switch GPIO14 vom Sonoff entkoppelt und somit sendet der Bewegungsmelder direkt an FHEM --&amp;gt; Motion_pir MQTT_DEVICE.&lt;br /&gt;
Bei den älteren Versionen vor Tasmota war das noch das Kommando ButtonTopic.&lt;br /&gt;
&lt;br /&gt;
Es sollte auch unbedingt kontrolliert werden, wie die Ausgabe des Alarmes in der Console erfolgt. Erscheint hier die Meldung &amp;quot;cmnd/Alarm_SO2/POWER TOGGLE&amp;quot; dann muss mit dem Kommando &amp;quot;&#039;&#039;&#039;SwitchMode 1&#039;&#039;&#039;&amp;quot; das Ausgabeformat umgeschaltet werden, erst dann kommt das gewünschte Format &amp;quot;On&amp;quot; und &amp;quot;OFF&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 # ------------------ Motion_pir MQTT_DEVICE -----------------&lt;br /&gt;
 define Motion_pir MQTT_DEVICE&lt;br /&gt;
 attr Motion_pir IODev myBroker&lt;br /&gt;
 attr Motion_pir devStateIcon on:on-for-timer off:off&lt;br /&gt;
 attr Motion_pir eventMap ON:on OFF:off&lt;br /&gt;
 attr Motion_pir group Sonoff&lt;br /&gt;
 attr Motion_pir icon people_sensor&lt;br /&gt;
 attr Motion_pir room MQTT&lt;br /&gt;
 attr Motion_pir stateFormat Alarm&lt;br /&gt;
 attr Motion_pir subscribeReading_Alarm cmnd/Alarm_SO2/POWER1&lt;br /&gt;
Die Motion_pir dient nun zur eigentlichen Einschaltung des Lichtes und sendet das Kommando &#039;&#039;&#039;cmnd/Alarm_SO2/POWER1&#039;&#039;&#039; an den entkoppelten GPIO 14 des Switch.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # ------------------ DoIf zur Motion Abfrage -----------------&lt;br /&gt;
 define di_Sonoff_pir_Alarm DOIF ([Motion_pir:&amp;quot;on&amp;quot;] and [Tag_Nacht:twilight_weather] &amp;lt; 35) (set Sonoff_pir on) DOELSEIF ([Motion_pir:&amp;quot;off&amp;quot;] and [Tag_Nacht:twilight_weather] &amp;lt; 35) (set Sonoff_pir off)&lt;br /&gt;
 attr di_Sonoff_pir_Alarm comment Abhängig von Helligkeitssensor wird nachts,bei Bewegung das Licht eingeschaltet!&lt;br /&gt;
 attr di_Sonoff_pir_Alarm group Sonoff&lt;br /&gt;
 attr di_Sonoff_pir_Alarm room MQTT&lt;br /&gt;
Zusätzlich kann nun mit einem &#039;&#039;&#039;Doif&#039;&#039;&#039; verknüpft werden um das Ganze mit Tag_Nacht:twilight_weather dann in Abhängigkeit der Helligkeit zu schalten. Selbstverständlich kann jede andere Quelle mit einem Helligkeitswert verwendet werden.&lt;br /&gt;
&lt;br /&gt;
===Alarmausgabe über Grouptopic===&lt;br /&gt;
 # ------------------------ Sonoffs Group ----------------------&lt;br /&gt;
 define Sonoffs MQTT_DEVICE&lt;br /&gt;
 attr Sonoffs IODev myBroker&lt;br /&gt;
 attr Sonoffs eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoffs group Sonoff&lt;br /&gt;
 attr Sonoffs icon hue_filled_br30&lt;br /&gt;
 attr Sonoffs publishSet ON OFF cmnd/sonoffs/POWER/set&lt;br /&gt;
 attr Sonoffs room MQTT&lt;br /&gt;
 attr Sonoffs stateFormat state&lt;br /&gt;
 attr Sonoffs subscribeReading_Licht stat/sonoffs/POWER&lt;br /&gt;
 attr Sonoffs subscribeReading_state cmnd/sonoffs/POWER&lt;br /&gt;
Wer möchte kann auch mit der Group Topic mehrere Switches mit Bewegungsmelder zusammenfassen und alle Lampen im Alarmfall gemeinsam in den Blinkmodus schalten. cmnd/sonoffs ist das Kommando für die Group Topic, sofern diese vom User nicht verändert wurde.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Switch als IR-Sender verwenden == &lt;br /&gt;
===Einrichtung ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_ir_1.jpg|thumb|left|alt=IR]]&lt;br /&gt;
Mit einem normalen Sonoff Basic Modul kann dies zu einer IR Fernbedienung hochgerüstet werden.&lt;br /&gt;
&lt;br /&gt;
Der einfache Schaltplan ist [https://raw.githubusercontent.com/altelch/SonoffIR/master/SonoffIR-Schematics.png hier] zu finden und der Nachbau ist sehr einfach. Man kann aber auch aus einer alten FB die IR-Diode ausbauen und zusammen schalten. Ein kleines Howto ist in [https://github.com/altelch/SonoffIR diesem Wiki] auf Github zu finden.&lt;br /&gt;
&lt;br /&gt;
Verwendet wird dazu der Arends Sketch.&lt;br /&gt;
&lt;br /&gt;
Als erstes sucht man sich auf [http://lirc.sourceforge.net/remotes/ LIRC]die entsprechenden FB-Codes, im Beispiel hier für einen Samsung TV 55&amp;quot; Curved UHD HU8580. Die FB ist zwar nicht exakt dieselbe, aber die Befehle passen soweit. Im Webif des Sonoff Modules ist beim angeschlossenen GPIO der IR-Diode &amp;quot;8 IRremote&amp;quot; einzustellen.&lt;br /&gt;
&lt;br /&gt;
Link zum {{Link2Forum|Topic=67316|LinkText=Forums Thread}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Wichtig sind dabei folgende Daten:&lt;br /&gt;
 name  Samsung_BN59-00940A&lt;br /&gt;
 bits           16&lt;br /&gt;
 pre_data_bits  16&lt;br /&gt;
 pre_data       0xE0E0&lt;br /&gt;
 Power On/Off   0x40BF[/code]&lt;br /&gt;
&lt;br /&gt;
Nun stellt man sich den Sendestring zusammen:&lt;br /&gt;
 predata+Befehl =  E0E0&#039;&#039;&#039;40BF&#039;&#039;&#039; (hex) = 3772793023 (dec) und 32 Bit Datenlänge.&lt;br /&gt;
&lt;br /&gt;
 Der JSON String für den IRSend ist laut [https://github.com/arendst/Sonoff-Tasmota/wiki/Commands Arends Wiki] folgender.&lt;br /&gt;
 IRsend    | {&amp;quot;protocol&amp;quot;: &amp;quot;&amp;lt;proto&amp;gt;&amp;quot;, | Send IR remote control as JSON encapsulated command.&lt;br /&gt;
           |   &amp;quot;bits&amp;quot;: 1..32         | &amp;lt;proto&amp;gt; is NEC, SONY, RC5, RC6, DISH, JVC or SAMSUNG&lt;br /&gt;
           |   &amp;quot;data&amp;quot;: 1..(2^32)-1}  | bits are the required number of data bits.&lt;br /&gt;
           |                         | data is the data frame as 32 bit unsigned integer.&lt;br /&gt;
           |                         | See http://www.lirc.org/ for more info.&lt;br /&gt;
&lt;br /&gt;
das ergibt dann unseren Befehl für die Kommandozeile am Modul. Die Bitlänge für Pre und Data sind ebenfalls zu addieren (16 + 16 = 32 Bit) und beim Arends Sketch muss im JSON Format gesendet werden:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;irsend  {&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772793023}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
oder hier für die Kommandozeile am Broker:&lt;br /&gt;
 &#039;&#039;&#039;mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772793023}&#039;&#039;&#039;&#039;&lt;br /&gt;
TestSwitch ist hier der verwendete Name des Sonoff Moduls, wird ein anderer Name verwendet ist dieser hier anzupassen.&lt;br /&gt;
&lt;br /&gt;
Jedesmal wenn nun der Befehl gesendet wird, wird entweder Ein- oder Aus geschaltet. Die Verzögerung über Wlan ist vernachlässigbar. Ebenso können die Kanäle oder die Laustärke verstellt werden. Im Prinzip funktionieren alle Befehle die auf der FB vorhanden sind.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===FHEM Beispiel===&lt;br /&gt;
[[Datei:sonoff_ir_2.jpg|thumb|left|alt=IR]]&lt;br /&gt;
Hier ein Beispiel wie der Code für die Fernbedienung in Fhem eingebunden werden kann.&lt;br /&gt;
 define RC_TV remotecontrol&lt;br /&gt;
 attr RC_TV rc_iconpath icons/remotecontrol&lt;br /&gt;
 attr RC_TV rc_iconprefix black_btn_&lt;br /&gt;
 attr RC_TV room Entwicklung&lt;br /&gt;
 attr RC_TV row00 KEY_POWER:POWEROFF,:blank,:blank&lt;br /&gt;
 attr RC_TV row02 :blank,:blank,:blank&lt;br /&gt;
 attr RC_TV row03 KEY_1:1,KEY_2:2,KEY_3:3&lt;br /&gt;
 attr RC_TV row04 KEY_4:4,KEY_5:5,KEY_6:6&lt;br /&gt;
 attr RC_TV row05 KEY_7:7,KEY_8:8,KEY_9:9&lt;br /&gt;
 attr RC_TV row06 :blank,KEY_0:0,:blank&lt;br /&gt;
 attr RC_TV row07 :blank,:blank,:blank&lt;br /&gt;
 attr RC_TV row08 KEY_VOLUMEUP:UP,KEY_MUTE:MUTE,KEY_CHANNELUP:CHUP&lt;br /&gt;
 attr RC_TV row09 KEY_VOLUMEDOWN:DOWN,:blank,KEY_CHANNELDOWN:CHDOWN&lt;br /&gt;
&lt;br /&gt;
 define Samsung_TV notify RC_TV &amp;quot;/opt/fhem/ircmd.sh $EVENT&amp;quot;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
In einem externen Shell Script werden die Parameter übergeben und der Sendestring für den IRSend zusammen gestellt. Das Script ins FHEM Home Verzeichnis kopieren ( /opt/fhem ) und die Rechte auf 755 setzen.&lt;br /&gt;
[https://wiki.fhem.de/wiki/Remotecontrol Link zum Wiki] einer universellen Fernbedienung.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh -e&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_POWER&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772793023}&#039;&lt;br /&gt;
 fi&lt;br /&gt;
 # E0E0E01F   3772833823&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_VOLUMEUP&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772833823}&#039;&lt;br /&gt;
 fi&lt;br /&gt;
 # E0E0D02F   3772829743&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_VOLUMEDOWN&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772829743}&#039;&lt;br /&gt;
 fi&lt;br /&gt;
 # E0E0F00F   3772837903&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_MUTE&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772837903}&#039;&lt;br /&gt;
 fi&lt;br /&gt;
 # E0E020DF   3772784863&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_1&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772784863}&#039;&lt;br /&gt;
 fi&lt;br /&gt;
 # E0E0A05F   3772817503&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_2&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772817503}&#039;&lt;br /&gt;
 fi   &lt;br /&gt;
 # E0E0609F   3772801183&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_3&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772801183}&#039;&lt;br /&gt;
 fi &lt;br /&gt;
 # E0E010EF   3772780783&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_4&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772780783}&#039;&lt;br /&gt;
 fi &lt;br /&gt;
 # E0E0906F   3772813423&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_5&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772813423}&#039;&lt;br /&gt;
 fi &lt;br /&gt;
 # E0E050AF   3772797103&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_6&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772797103}&#039;&lt;br /&gt;
 fi &lt;br /&gt;
 # E0E030CF   3772788943&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_7&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772788943}&#039;&lt;br /&gt;
 fi&lt;br /&gt;
 # E0E0B04F   3772821583&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_8&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772821583}&#039;&lt;br /&gt;
 fi &lt;br /&gt;
 # E0E0708F   3772805263&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_9&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772805263}&#039;&lt;br /&gt;
 fi         &lt;br /&gt;
 # E0E08877   3772811383&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_0&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772811383}&#039;&lt;br /&gt;
 fi&lt;br /&gt;
 # E0E048B7   3772795063&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_CHANNELUP&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772795063}&#039;&lt;br /&gt;
 fi&lt;br /&gt;
 # E0E008F7   3772778743&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_CHANNELDOWN&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772778743}&#039;&lt;br /&gt;
 fi  &lt;br /&gt;
Das Script kann sehr leicht für jede andere FB abgeändert werden und auch noch zusätzliche Tasten eingebunden werden. Bitte nicht auf die vorangestellten Pre-Data-Bits vergessen. Auf die Verwendung des Scriptes kann auch verzichtet werden, wenn der JSON String in Fhem direkt zusammen gestellt wird. Für den Nachbau ist es aber leichter verständlicher und kann auch leicht selber an die eigene FB angepasst werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Development Board==&lt;br /&gt;
===Einrichtung===&lt;br /&gt;
[[Datei:sonoff_dev_1.jpg|thumb|left|alt=Dev. Board]]&lt;br /&gt;
Das Board kommt ohne Software und muss zunächst mit einem Sketch bespielt werden. Hier kurz beschrieben der Arends Sketch, es funktioniert aber mit ESPEasy genau so gut. &lt;br /&gt;
&lt;br /&gt;
Damit die vielen GPIO&#039;s auch nach freiem Wunsch zugeordnet werden können, müssen die erforderten Einstellungen da allerdings in der sonoff_template.h bekannt gegeben werden. Hier wurde der GPIO12 und 13 einem Relais zugeordnet. Der Rest kann dann frei im Webif konfiguriert werden (Type = User Test).&lt;br /&gt;
&lt;br /&gt;
Link zum [https://www.itead.cc/wiki/Sonoff_DEV Wiki des Herstellers]&lt;br /&gt;
&lt;br /&gt;
Link zum [https://www.itead.cc/wiki/images/3/30/01.73.02.0101_Sonoff_DEV_Schematic.pdf Schaltplan]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Anschlüsse und GPIO&#039;s am Board.&lt;br /&gt;
&lt;br /&gt;
 3V3    VDD   3.3V Power supply output  &lt;br /&gt;
 GND    GND   Power supply pin  &lt;br /&gt;
  4    GPIO4  GPIO4  &lt;br /&gt;
  5    GPIO5  GPIO5  &lt;br /&gt;
 12    GPIO12 GPIO12/HSPIQ  &lt;br /&gt;
 13    GPIO13 GPIO13/HSPID  &lt;br /&gt;
 14    GPIO14 GPIO14/HSPICLK  &lt;br /&gt;
 ADC    ADC   Detect analog input voltage（0~1V）  &lt;br /&gt;
 RX    U0RXD  Flash programming UART RX;GPIO3  &lt;br /&gt;
 TX    U0TXD  Flash programming UART TX;GPIO1;SPICS1  &lt;br /&gt;
 E-FW  GPIO0  GPIO0/SPICS2/Serial programming enable pin  &lt;br /&gt;
 RESET RESET  External reset signal(low active)  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_dev_2.jpg|thumb|left|alt=Dev. Board]]&lt;br /&gt;
hier können die wesentlichen Funktionen (Relaisfunktion oder freier GPIO) konfiguriert werden. Man zählt die GPIO&#039;s von oben nach unten und wenn einer nicht benötigt wird, wird eine 0 angegeben.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
 { &amp;quot;User Test&amp;quot;,       // Sonoff Basic User Test&lt;br /&gt;
     GPIO_KEY1,        // GPIO00 Button&lt;br /&gt;
     0,&lt;br /&gt;
     GPIO_USER,        // GPIO02 Optional sensor&lt;br /&gt;
     GPIO_USER,        // GPIO03 Serial TXD and Optional sensor&lt;br /&gt;
     GPIO_USER,        // GPIO04 Optional sensor&lt;br /&gt;
     GPIO_USER,        // GPIO05 Optional sensor&lt;br /&gt;
     0, 0, 0, 0, 0, 0,&lt;br /&gt;
     &#039;&#039;&#039;GPIO_REL2&#039;&#039;&#039;,        // GPIO12 Relay 2 (0 = Off, 1 = On)&lt;br /&gt;
     &#039;&#039;&#039;GPIO_REL1&#039;&#039;&#039;,        // GPIO13 Relay 1 (0 = Off, 1 = On)&lt;br /&gt;
     GPIO_USER,        // GPIO14 Optional sensor&lt;br /&gt;
     0, 0&lt;br /&gt;
  }&lt;br /&gt;
Hier wurde am Modul &amp;quot;&#039;&#039;&#039;User Test&#039;&#039;&#039;&amp;quot; in der Datei &amp;quot;sonoff_template.h&amp;quot; abgeändert, um 2 Relais über GIPO12 und GPIO13 ansteuern zu können. &lt;br /&gt;
&lt;br /&gt;
Gedacht ist es als Enwicklerboard, es ist aber auch genau so gut für den produktiven Einsatz geeignet, hat aber kein eingebautes Netzteil. Es ist zum flashen &#039;&#039;&#039;kein externes FTDI Modul notwendig&#039;&#039;&#039;, das hat es bereits an Board und es muss lediglich der USB Treiber für Windows installiert werden. Geflasht wird dann mit dem USB Kabel der Spannungsversorgung.&lt;br /&gt;
&lt;br /&gt;
Die 4-pol. Stecker haben das &#039;&#039;&#039;Rastermaß 2.0 mm&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
===Anbindung FHEM===&lt;br /&gt;
&lt;br /&gt;
je nach Anwendungszweck wird entweder ein normaler Schalter oder wie bei DHT16 beschrieben ein oder mehrere Sensoren angebunden.&lt;br /&gt;
Beim Arends Sketch ist zu beachten, dass pro Sensorgruppe nur ein Sensor angeschlossen werden kann.&lt;br /&gt;
&lt;br /&gt;
 •DHT11 Temperature and Humidity -  DHT11 (1)  in group 1&lt;br /&gt;
 •DHT21 Temperature and Humidity -  AM2301 (2) in group 1&lt;br /&gt;
 •AM2301 Temperature and Humidity - AM2301 (2) in group 1&lt;br /&gt;
 •DHT22 Temperature and Humidity -  DHT22 (3)  in group 1&lt;br /&gt;
 •AM2302 Temperature and Humidity - DHT22 (3)  in group 1&lt;br /&gt;
 •AM2321 Temperature and Humidity - DHT22 (3)  in group 1&lt;br /&gt;
 •DS18B20 Temperature           - DS18x20 (4)  in group 2&lt;br /&gt;
 Enable option  USE_DS18x20  in  user_config.h  for multiple sensors using OneWire library&lt;br /&gt;
 •DS18S20 Temperature          -  DS18x20 (4)  in group 2&lt;br /&gt;
 Enable option  USE_DS18x20  in  user_config.h  using OneWire library&lt;br /&gt;
 •External switch               -  Switch (9) &lt;br /&gt;
 Use  SwitchMode  to tune it&#039;s behaviour&lt;br /&gt;
 •HC-SR501 PIR Motion Detection -  Switch (9) &lt;br /&gt;
 Use  SwitchMode  to tune it&#039;s behaviour&lt;br /&gt;
Beispiel: 2 DHT22 funktionieren nicht, aber ein DHT22 und ein DS18b20 schon. Wer mehrere Sensoren benötigt, muss auf ESPEasy ausweichen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:IP Components]]&lt;br /&gt;
--[[Benutzer:Reinhart|Reinhart]] ([[Benutzer Diskussion:Reinhart|Diskussion]]) 23. Feb. 2017 (CET)&lt;/div&gt;</summary>
		<author><name>Reinhart</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Sonoff&amp;diff=20474</id>
		<title>Sonoff</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Sonoff&amp;diff=20474"/>
		<updated>2017-03-02T17:54:50Z</updated>

		<summary type="html">&lt;p&gt;Reinhart: Packetsize angepasst&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=Ankopplung der Sonoff Module an Fhem&lt;br /&gt;
|ModType=&lt;br /&gt;
|ModForumArea=ESP8266&lt;br /&gt;
|ModTechName=Sonoff&lt;br /&gt;
|ModOwner=Reinhart &lt;br /&gt;
}}&lt;br /&gt;
&#039;&#039;&#039;SONOFF, dieser Artikel beschreibt die Ankopplung der kostengünstigen Sonoff Module an FHEM mit ESPEasy oder Arends MQTT.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Seit einiger Zeit werden von der [https://www.itead.cc/sonoff-wifi-wireless-switch.html Fa. Itead] kostengünstige &amp;quot;sonoff&amp;quot; Produkte angeboten die glücklicherweise den [http://dl.itead.cc/IM151116002/0A-ESP8266_Specifications_v4.1.pdf ESP8266 Chip] On Board haben und somit die ideale Grundlage für [http://www.esp8266.nu/index.php/Main_Page ESPEasy] und für [https://forum.fhem.de/index.php/board,46.0.html FHEM] darstellen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nützliche Links zum Hersteller:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://www.itead.cc/blog/user-guide-for-sonoff-slampher User Manual von Itead]&lt;br /&gt;
&lt;br /&gt;
[https://www.itead.cc/wiki/images/6/6b/Sonoff_schmatic.pdf Sonoff Schaltplan]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Hardware=&lt;br /&gt;
&#039;&#039;&#039;Bitte unbedingt die elektrotechnischen Sicherheitsrichtlinien beachten und einhalten!&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_sw_15.jpg|thumb|left|alt=Warnung Netzspannung]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Achtung: An dem Modul liegt Netzspannung an die lebensgefährlich ist. Es dürfen nur entsprechend ausgebildete Personen dieses Modul in Betrieb nehmen. Zum Umbau und zur Softwareaktualisierung darf keine Netzspannung angeschlossen sein&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Wie gefährlich das hantieren mit Netzspannung sein kann, wird hier am Beispiel eines [http://mysku.ru/blog/china-stores/45762.html russischen Anwenders] gezeigt, der hat beim Flashen die Netzspannung am Modul gelassen und somit über die Verbindung mit dem Netzteil des Laptop lebensgefährliche Spannung auf die FTDI Schnittstelle gebracht. Das Modul ist dabei abgeraucht!&lt;br /&gt;
&lt;br /&gt;
==Modelle==&lt;br /&gt;
&lt;br /&gt;
===Produktübersichtsliste sonoff===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:right&amp;quot;&lt;br /&gt;
! Produkt Name !! Beschreibung !! Spannungsversorgung !!  Imax !! Pmax !! Frequenz !! Schaltplan !! Link&lt;br /&gt;
|-&lt;br /&gt;
| Sonoff || Wireless control switch || 90~250V AC || 10A || 2200W || 2.4Ghz || [http://wiki.iteadstudio.com/Sonoff Plan] || [https://www.itead.cc/smart-home/sonoff-wifi-wireless-switch.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| Sonoff RF || 433 RF remote || 90~250V AC || 10A || 2200W || 2.4Ghz || [http://wiki.iteadstudio.com/Sonoff_RF Plan] || [https://www.itead.cc/smart-home/im151116003.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| Sonoff SV || Low voltage Input || 5~24V DC || 10A || 240W DC || 2.4Ghz || [http://wiki.iteadstudio.com/Sonoff_SV Plan] || [https://www.itead.cc/smart-home/sonoff-sv.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| Sonoff TH10/TH16 || Monitor and set Temp.&amp;amp;Hum. ||  90~250V AC || 10A/16A || 2200W(10A)/3500W(16A)	 || 2.4Ghz || [http://wiki.iteadstudio.com/Sonoff_TH_10/16 Plan] || [https://www.itead.cc/smart-home/sonoff-th.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Sonoff Dual || Remote control 2 devices ||  90~250V AC || 16A || 3500W || 2.4Ghz || [https://www.itead.cc/wiki/Sonoff_Dual Plan] || [https://www.itead.cc/sonoff-dual.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Sonoff Pow || Report power &amp;amp;power usage ||  90~250V AC || 16A || 3500W || 2.4Ghz || [https://www.itead.cc/wiki/Sonoff_Pow Plan] || [https://www.itead.cc/sonoff-pow.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Sonoff LED || WiFi Control Dimming LED ||  180~265V AC || 0.3-0.6A || 42W || 2.4Ghz ||  kein || [https://www.itead.cc/sonoff-led.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Sonoff Touch || WiFi wall touch switch ||  90~250V AC || 2A || 400W || 2.4Ghz || kein || [https://www.itead.cc/sonoff-touch.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Slampher || Wireless control light holder ||  90~250V AC || 2A || 200W || 2.4Ghz || [http://wiki.iteadstudio.com/Slampher Plan] || [https://www.itead.cc/smart-home/slampher-wifi-wireless-light-holder.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  S20 Smart Socket || Smart socket || 	90~250V AC || 10A || 2000W || 2.4Ghz || kein || [https://www.itead.cc/smart-home/smart-socket-eu.html EU-Stecker] &lt;br /&gt;
|-&lt;br /&gt;
|  iFan || Smart fan ||  185~264V AC ||﹤1A || 60W || 2.4Ghz || kein || [https://www.itead.cc/smart-home/smart-socket-eu.html EU-Stecker] &lt;br /&gt;
|-&lt;br /&gt;
| Motor/Pump Control Switch || clockwise/anticlockwise running ||  5V/7~32V DC || 10A || 50~320W || 2.4Ghz || kein || [https://www.itead.cc/smart-home/motor-reversing-wifi-wireless-switch.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| 1 Chnl Inching/self-locking Switch || Access control ||  	5V/12V DC || 10A || 50/120W || 2.4Ghz || kein || [https://www.itead.cc/smart-home/inching-self-locking-wifi-wireless-switch.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  4 Chnl Inching/self-locking/inter-locking Switch || Access control, rolling door control ||  5V/5~32V DC/90~250V AC || 10A || 50~320W/2500W || 2.4Ghz || kein || [https://www.itead.cc/ifan.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Eine Übersichtliste der verschiedenen Produkte mit technischen Kurzangaben.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Model: IM151116002: Erstes Modell===&lt;br /&gt;
[https://www.itead.cc/sonoff-wifi-wireless-switch.html Sonoff WiFi Wireless Smart Switch for MQTT COAP Smart Home]&lt;br /&gt;
[[Datei:sonoff_sw_0.jpg|thumb|left|alt=sonoff Switch]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Das sonoff Modul ist in einem zweckmäßigen und gefälligem Gehäuse verbaut!&lt;br /&gt;
&lt;br /&gt;
====Platine====&lt;br /&gt;
[[Datei:sonoff_sw_1.jpg|thumb|left|alt=sonoff Switch von vorne]]&lt;br /&gt;
&lt;br /&gt;
Die Platine ist sehr übersichtlich aufgebaut und der Hersteller hat auch alle Vorbereitungen zum Flashen einer alternativen Software vorgesehen (über serielle Schnittstelle via FTDI-Modul). Mit einer alternativen Software wie ESPEasy ist eine direkte Ankopplung des &#039;&#039;&#039;sonoff&#039;&#039;&#039; an FHEM somit ein leicht durchführbarer Vorgang.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_3.jpg|thumb|left|alt=sonoff Switch von hinten]]&lt;br /&gt;
Die stromführenden Leitungen wurden mit Lötzinn vom Hersteller verstärkt um die angegebenen Stromstärken mit geringer Hitzeentwicklung zu transportieren.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung: Bitte vor den Arbeiten kontrollieren, das an der Platine keine Netzspannung angeschlossen ist, LEBENSGEFAHR!&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Model: IM160712005: TH 10A/16A ===&lt;br /&gt;
[https://www.itead.cc/sonoff-th.html Sonoff TH 10A/16A WiFi Smart Switch]&lt;br /&gt;
&lt;br /&gt;
====TH10 / TH16 weitere GPIO zugänglich machen====&lt;br /&gt;
[[Datei:Sonoff_TH_10A-16A_kleiner.jpg|thumb|left|alt=TH10 / TH16 weitere GPIO zugänglich machen]]&lt;br /&gt;
Der Hersteller hat zwar schon Platine für eine weitere Stiftleiste vorbereitet, jedoch muss diese noch bestückt werden. Die nicht beschalteten Stifte können dann genutzt werden um die &amp;quot;verdeckten&amp;quot; GPIO zugänglich zu machen. Die Verdrahtung kann dem Bild entnommen werden.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Achtung: Bitte vor den Arbeiten kontrollieren, das an der Platine keine Netzspannung angeschlossen ist, LEBENSGEFAHR!&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Model: IM160811001: Sonoff Dual ===&lt;br /&gt;
[https://www.itead.cc/sonoff-dual.html Sonoff Dual WiFi Wireless Smart Swtich]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Model: IM160810001: Sonoff Pow ===&lt;br /&gt;
[https://www.itead.cc/sonoff-pow.html Sonoff POW WiFi Switch with Power Consumption Measurement]&lt;br /&gt;
[[Datei:sonoff_sw_30.jpg|thumb|left|alt=SONOFF POW]]Ein sehr interessantes und kostengünstiges Modul zur Messung der aktuellen Leistung. Das Modul kann via MQTT in FHEM angebunden werden.&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel zur Einbindung ist [http://www.fhemwiki.de/wiki/Sonoff#Sonoff_POW_einrichten hier unten] im Wiki beschrieben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===Model: weitere Modelle===&lt;br /&gt;
[https://www.itead.cc/search/result/?cat=&amp;amp;q=sonoff Sonoff Weitere Modelle finden sich auf der Homepage des Hersstellers]&lt;br /&gt;
&lt;br /&gt;
==Vorbereitungen zum Flashen==&lt;br /&gt;
[[Datei:sonoff_sw_2.jpg|thumb|left|alt=serielle Schnittstelle]]&lt;br /&gt;
&lt;br /&gt;
Hier auf der Platine sind die benötigten Signale für ein FTDI Modul schon vorhanden. Der quadratische Pin gleich über dem Taster ist die Spannungsversorgung zum Flashen vom FDTI von 3.3V Es muss daher unbedingt ein FTDI Modul genommen werden, dass nicht nur einen Jumper für 3.3V besitzt sondern auch die Spannung auf 3.3V herab setzt. Ist dies nicht der Fall, läuft man Gefahr das Modul unbrauchbar zu machen. Es ist daher zu empfehlen einen Spannungsteiler mit 2 Widerständen oder einen Pegelwandler zwischenschalten.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Signale der Schnittstelle==&lt;br /&gt;
von oben nach unten auf der Steckerleiste des sonoff U4 (Model: IM151116002).&lt;br /&gt;
&lt;br /&gt;
 Pin5 = vorbereitet für GPIO&lt;br /&gt;
 Pin4 = Masse&lt;br /&gt;
 Pin3 = TxD&lt;br /&gt;
 Pin2 = RxD&lt;br /&gt;
 Pin1 = 3.3V&lt;br /&gt;
&lt;br /&gt;
Siehe dazu auch den [https://forum.fhem.de/index.php/topic,55036.0.html Link aus dem Forum]:&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Platine mit Stiftleiste bestücken==&lt;br /&gt;
[[Datei:sonoff_sw_4.jpg|thumb|left|alt=Platine mit Stiftleiste bestücken]]&lt;br /&gt;
Der Hersteller hat zwar schon die Platine vorbereitet, jedoch muss sie noch mit einer Stiftleiste bestückt werden um das FTDI Modul bequem verbinden zu können. Nachdem einmal ESPEasy geflasht worden ist, kann es in Zukunft via WEB (OTA) geflasht werden und die Stiftleiste ist dann nicht mehr erforderlich. Aufgrund der geringen Kosten fällt dies jedoch nicht ins Gewicht.&amp;lt;br&amp;gt;&lt;br /&gt;
Für die Module TH10/TH16 sind die Lötpunkte für die Stiftleiste schon beschriftet. Die Stiftleiste selber muss allerdings auch nachgerüstet werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Achtung&#039;&#039;&#039;: Bitte vor den Arbeiten kontrollieren, das an der Platine keine Netzspannung angeschlossen ist, LEBENSGEFAHR!&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Software=&lt;br /&gt;
==MQTT und TASMOTA==&lt;br /&gt;
Der Autor Arends hat die Version Sonoff-MQTT-OTA-Arduino nun eingestellt und die Version 3.2.13 (Ende Jänner 2017)dürfte wohl die letzte dieser Generation gewesen sein. Mit der Einstellung dieser Version wurde zwar der Nachfolger &#039;&#039;&#039;TASMOTA&#039;&#039;&#039; erschaffen, aber leider nun auf das &#039;&#039;&#039;Messageformat LEGACY&#039;&#039;&#039; gänzlich verzichtet was bei der Auswertung der Messdaten in Fhem doch einige Probleme mit sich bringt, da der verwendete JSON String nun zusätzlich gefiltert werden muss.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Es gibt aber bereits sehr gute Lösungswege um dieses Problem zu beheben und somit spricht dem neuen Ausgabeformat nichts dagegen!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://forum.fhem.de/index.php/topic,66761.0.html in diesem Thread] wurde ein &#039;&#039;&#039;JSON to Reading Modul&#039;&#039;&#039; vorgestellt, dass den JSON String analysiert und alle darin enthaltenen Daten in Readings kopiert. Die Readings werden dabei in FHEM automatisch angelegt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Link: [https://github.com/arendst/Sonoff-Tasmota Tasmota]&lt;br /&gt;
&lt;br /&gt;
Link alte Software: [https://github.com/arendst/Sonoff-MQTT-OTA-Arduino Sonoff-MQTT-OTA-Arduino]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Alle hier im Wiki verwendeten Beispiele und deren Beschreibung sind nun für die neue Tasmota Version ausgelegt. Da in Tasmota fast alles im WEBIF konfiguriert werden kann, entfallen daher sinngemäß einige hier im Wiki erklärten Definitionen, speziell in der &amp;quot;user_config.h&amp;quot;.&lt;br /&gt;
Trotz diesem Komfort müssen die Einstellungen aber nun im WEBIF vorgenommen werden, die wohl wichtigste ist die Auswahl der verwendeten Hardware (Sonoff POW etc.).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ESPEasy flashen==&lt;br /&gt;
[[Datei:sonoff_sw_6.jpg|thumb|left|alt=sonoff mit angestecktem FDTI Adapter]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier geht es ausschließlich um die Software ESPEasy an den sonoff Modulen! }}&lt;br /&gt;
Die Spannungsversorgung des Sonoff Moduls wird hier vom FTDI Konverter mit 3.3V über die Verbindungskabel zum Pfostenstecker durchgeführt. &lt;br /&gt;
&lt;br /&gt;
Der FTDI Adapter wird dann mit der USB Schnittstelle mit dem Computer verbunden.&lt;br /&gt;
&lt;br /&gt;
Zum compilieren wird in der Arduino Umgebung auch die ArduinoJson Library 5.6.4+ benötigt. Eine genaue Anleitung kann [https://forum.fhem.de/index.php/topic,55728.msg473220.html#msg473220 hier] nachgelesen werden. Es sollte stest die aktuelle Version der Arduino Umgebung verwendet werden, bzw. die Librarys auf Letztstand gehalten werden. &lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===mit Arduino compilieren===&lt;br /&gt;
[[Datei:sonoff_sw_10.jpg|thumb|left|alt=Einstellung Arduino IDE]]&lt;br /&gt;
Wer selber mit der Arduino IDE compilieren will bitte folgende Einstellungen beachten. Die anschließenden Arbeiten sind dann gleich wie bei Abschnitt &#039;&#039;&#039;fertige Binary&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Unbedingt die neueste [https://github.com/bblanchon/ArduinoJson Arduino Json Library] benutzen (siehe oben)! Es gibt zwar keine Compilerfehler, aber es kommt anschließend zu Fehlfunktionen in der ESP Bridge!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 Generic ESP8266 Module&lt;br /&gt;
 Flash Mode: QIO&lt;br /&gt;
 Flash Frequency: 40 MHz&lt;br /&gt;
 CPU Frequency: 80 MHz&lt;br /&gt;
 Flash Size: 1M (64K SPIFFS)&lt;br /&gt;
 Debug Port: disabled&lt;br /&gt;
 Debug Level: none&lt;br /&gt;
 Reset Mode: ck&lt;br /&gt;
 Upload Speed: 115200&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===fertige Binary flashen===&lt;br /&gt;
[[Datei:sonoff_sw_7.jpg|thumb|left|alt=NodeMCU Firmware Flasher]]&lt;br /&gt;
Es empfiehlt sich eine fertige Binary von ESPEasy aufzuspielen. In diesem Wiki wurde R140 verwendet.&lt;br /&gt;
&lt;br /&gt;
Siehe dazu auch den [http://www.esp8266.nu/index.php/Main_Page Link von ESPEasy] und das [https://learn.adafruit.com/building-and-running-micropython-on-the-esp8266/flash-firmware Handbuch] für den Flasher.&lt;br /&gt;
&lt;br /&gt;
In manchen Versionen von ESPEasy (zB.R120) ist auch ein Flasher beigelegt, welcher zwar keine grafische Oberfläche hat aber hervorragend funktioniert. Wenn andere versagen, geht es mit diesem Flasher immer noch, einfach probieren!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 Netzspannung darf &#039;NICHT&#039; angeschlossen sein!!!&lt;br /&gt;
 Taster am Sonoff gedrückt halten&lt;br /&gt;
 FTDI Adapter verbinden&lt;br /&gt;
 Taster am Sonoff los lassen&lt;br /&gt;
 Sketch übertragen&lt;br /&gt;
 Sonoff vom FTDI trennen&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Wenn einmal die Firmware auf das sonoff Modul geflasht worden ist, kann in Zukunft ESPEasy direkt unter Tools via HTTP dies durchführen. Es muss dazu kein FTDI Konverter mehr verwendet werden.&lt;br /&gt;
&lt;br /&gt;
==ESPEasy==&lt;br /&gt;
[[Datei:sonoff_sw_11.jpg|thumb|left|alt=ESPEasy Devices]]&lt;br /&gt;
Wenn das Modul fertig geflasht ist und die Verbindung zum Modul hergestellt ist, können die Einstellungen in ESPEasy durchgeführt werden.&lt;br /&gt;
Dazu am Webinterface anmelden und zunächst die zwei Devices definieren.&lt;br /&gt;
&lt;br /&gt;
Der Hersteller hat für das &#039;&#039;&#039;Relaise GPIO 12&#039;&#039;&#039; und für die &#039;&#039;&#039;grüne Led GPIO 13&#039;&#039;&#039; vorgesehen. Der &#039;&#039;&#039;Taster ist an GPIO 0&#039;&#039;&#039; angeschlossen.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Device Schalter===&lt;br /&gt;
[[Datei:sonoff_sw_12.jpg|thumb|left|alt=Device Relais]]&lt;br /&gt;
Bei den Devices sollten die hier dargestellte Einstellungen beachtet werden. Der Switch (PUMP) sollte auf Input gestellt werden, sodass die anschließenden und benötigten Rules aktiviert werden können.&lt;br /&gt;
&lt;br /&gt;
Da beide Devicenamen gleich benannt wurden (PUMP) wird in FHEM nur ein Device angelegt! Die dazugehörenden Valuenames sind unterschiedlich (Relay, Key).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Device Taster===&lt;br /&gt;
[[Datei:sonoff_sw_13.jpg|thumb|left|alt=Device Key]]&lt;br /&gt;
Der Taste muss natürlich nur konfiguriert werden, wenn auch händisch am Modul geschaltet werden soll. Wird dies nicht benötigt, können auch die Rules geändert bzw. angepasst werden. Doch alleine zu Testzwecken ist es eine nützliche Sache.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Rules===&lt;br /&gt;
[[Datei:sonoff_sw_14.jpg|thumb|left|alt=Rules]]&lt;br /&gt;
Da das sonoff Modul auch einen eingebauten Taster hat und somit auch lokal bedient werden kann, sollte man zunächst unter &#039;&#039;&#039;Tools / Advanced das Häckchen Rules&#039;&#039;&#039; aktivieren, erst dann wird der Tab sichtbar und es können Rules erstellt werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 on PUMP#Key do&lt;br /&gt;
  if [PUMP#Relay]=1&lt;br /&gt;
    gpio,12,0&lt;br /&gt;
  else&lt;br /&gt;
    gpio,12,1&lt;br /&gt;
  endif&lt;br /&gt;
 endon&lt;br /&gt;
 on PUMP#Relay do&lt;br /&gt;
  if [PUMP#Relay]=1 &lt;br /&gt;
    gpio,13,0&lt;br /&gt;
  else&lt;br /&gt;
    gpio,13,1&lt;br /&gt;
  endif&lt;br /&gt;
 endon&lt;br /&gt;
Diese Rules ermöglichen, das bei lokaler Bedienung durch den Taster auch die &#039;&#039;&#039;Led&#039;&#039;&#039; richtig geschaltet wird.&lt;br /&gt;
Mit &#039;on PUMP#Key do&#039; wird geprüft ob die Taste gedrückt ist und schaltet dann entsprechend die Led. Mit den Rules können auch Timer oder sonstige Spielereien realisiert werden. Siehe dazu das [http://www.esp8266.nu/index.php/Tutorial_Rules Tutorial] von ESPeasy.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ESPEasy in FHEM einrichten==&lt;br /&gt;
[[Datei:sonoff_sw_9.jpg|thumb|left|alt=FHEM Konfiguration]]&lt;br /&gt;
Dies ist eine einfache Darstellung wie FHEM automatisch den Device erstellt.&lt;br /&gt;
&lt;br /&gt;
Damit FHEM mit ESPEasy und dem sonoff Modul kommunizieren kann, muss in der fhem.cfg vorerst nur die espBridge mit dem hier dargestellten Eintrag aktiviert werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 define espBridge ESPEasy bridge 8383&lt;br /&gt;
Dies ist eigentlich die einzige Zeile die in fhem.cfg angelegt werden muss. Die restliche Konfiguration wird von FHEM automatisch generiert. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 ##########################################&lt;br /&gt;
 ###             ESPEASY               ####&lt;br /&gt;
 ##########################################&lt;br /&gt;
 &lt;br /&gt;
 define ESPEasy_sonoff_1_PUMP ESPEasy 10.0.0.37 80 espBridge sonoff_1_PUMP&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP IODev espBridge&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP devStateIcon on:rc_GREEN:off off:rc_RED:on absent:rc_BLUE:off gpio:rc_YELLOW:off&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP eventMap /gpio 12 on:on/gpio 12 off:off/gpio 12 gpio:off/gpio 12 output:off/&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP group ESPEasy Device&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP icon hue_filled_outlet&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP room ESPEasy&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP setState 0&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP stateFormat {ReadingsVal($name,&amp;quot;presence&amp;quot;,&amp;quot;&amp;quot;) eq &amp;quot;absent&amp;quot; ? &amp;quot;absent&amp;quot; : ReadingsVal($name,&amp;quot;Relay&amp;quot;,&amp;quot;&amp;quot;)}&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP webCmd :&lt;br /&gt;
&lt;br /&gt;
hier ein Beispiel wie es auch manuell leicht modifiziert werden kann.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_8.jpg|thumb|left|alt=sonoff Readings]]&lt;br /&gt;
&lt;br /&gt;
Die Readings werden durch die Bridge (Modul ESPEasy) automatisch angelegt.&lt;br /&gt;
&lt;br /&gt;
Es besteht hier noch genug Spielraum um zB. auch noch Temperatursensoren an das Modul anzuschließen und ebenfalls in FHEM darzustellen.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==MQTT Server einrichten==&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier geht es ausschließlich um den Sketch von Arends und MQTT an den sonoff Modulen! }}&lt;br /&gt;
Es bleibt jedem Anwender die freie Wahl ob die Kommunikation über die ESPEasy-Bridge oder MQTT erfolgen soll. MQTT ist bei der Einrichtung etwas komplexer, da hier auch auf dem Server der Broker installiert werden muss.&lt;br /&gt;
&lt;br /&gt;
Im wesentlichen beschränkt sich die Installation eines MQTT Servers aber auf wenige Arbeitsschritte und ist wie folgt beschrieben durchzuführen. Wer schon einen &#039;&#039;&#039;mosquitto&#039;&#039;&#039; auf dem Server installiert hat, kann diesen Schritt überspringen.&lt;br /&gt;
&lt;br /&gt;
Dieses Kapitel ist insofern interessant, da mit dem Sketch von Theo Arends auch die Einbindung der neuen sonoff Pow Module bereits möglich ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # aus dem mosquitto Repo installieren:&lt;br /&gt;
 wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key&lt;br /&gt;
 sudo apt-key add mosquitto-repo.gpg.key&lt;br /&gt;
 cd /etc/apt/sources.list.d/&lt;br /&gt;
 sudo wget http://repo.mosquitto.org/debian/mosquitto-wheezy.list&lt;br /&gt;
 # oder für jessie&lt;br /&gt;
 sudo wget http://repo.mosquitto.org/debian/mosquitto-jessie.list&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 # mosquitto installieren, sowie client Befehl mosquito_sub (gehört nicht zum Server, wird aber weiter unten benötigt)&lt;br /&gt;
 sudo apt-get install mosquitto mosquitto-clients&lt;br /&gt;
 &lt;br /&gt;
 # MQTT Server Test&lt;br /&gt;
 sudo service mosquitto status&lt;br /&gt;
&lt;br /&gt;
 # Start / Stop des Servers&lt;br /&gt;
 sudo service mosquitto stop&lt;br /&gt;
 sudo service mosquitto start&lt;br /&gt;
 &lt;br /&gt;
 # Perl Version ausgeben&lt;br /&gt;
 perl -v&lt;br /&gt;
 # Perl MQTT Module nachinstallieren (läuft ein paar Minuten)&lt;br /&gt;
 sudo cpan install Net::MQTT:Simple&lt;br /&gt;
 sudo cpan install Net::MQTT:Constants&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Software Arends Sketch===&lt;br /&gt;
[[Datei:sonoff_sw_22.jpg|thumb|left|alt=Arends Menü]]&lt;br /&gt;
&lt;br /&gt;
Ebenso bietet sich die Möglichkeit eine andere alternative Software auf den unterschiedlichen Sonoff Modellen aufzuspielen.&lt;br /&gt;
Speziell für diese Module zugeschnittene Software stammt vom Autor Theo Arends. Alle hier gezeigten Bildschirmfotos und Beispiele beziehen sich auf Basis der Version Tasmota (Stand 22.02.2017).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Links zu Theo Arend Github&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/arendst/Sonoff-Tasmota.git Donwload Tasmota]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/arendst/Sonoff-Tasmota Arends Tasmota Github]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; sollten Probleme mit dem ersten Login im Webinterface auftreten, hat der Autor vorgesorgt und mit speziellem wiederholten Tastendruck können verschiedene Modi aufgerufen werden: zB: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3 x Taste kurz drücken&#039;&#039;&#039; und eine Smartconfig wird gestartet und die &#039;&#039;&#039;SSID&#039;&#039;&#039; und das &#039;&#039;&#039;Passwort&#039;&#039;&#039; kann über diese [https://play.google.com/store/apps/details?id=com.cmmakerclub.iot.esptouch Android App] eingegeben werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4 x Taste kurz drücken&#039;&#039;&#039; und man bringt den Device in den &#039;&#039;&#039;Access Point Mode&#039;&#039;&#039; mit der IP-Adresse &#039;&#039;&#039;192.168.4.1&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bis zu 7 verschiedene Modi sind möglich, mehr dazu in Arends Wiki.&lt;br /&gt;
&lt;br /&gt;
[https://github.com/arendst/Sonoff-MQTT-OTA-Arduino/wiki/Button-usage Link zum Wiki Arends, Button]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_bv_01.jpg|thumb|left|alt=Arduino Boardverwalter]]&lt;br /&gt;
In der Arduino IDE unter Datei / Voreinstellungen im Feld &amp;quot;Zusätzliche Boardverwalter-URLs:&amp;quot; den Link: http://arduino.esp8266.com/stable/package_esp8266com_index.json einfügen. &lt;br /&gt;
&lt;br /&gt;
Dann unter &#039;&#039;&#039;Werkzeuge / Board / Boardverwalter&#039;&#039;&#039; ganz am Ende der Liste die Librarys für &amp;quot;esp8266 by ESP8266 Community&amp;quot; die letzte Version zu installieren. [https://forum.fhem.de/index.php/topic,46205.msg534707.html#msg534707 Link zum Board].&lt;br /&gt;
Im Tasmota Verzeichnis \lib werden auch die zum kompilieren benötigten Librarys zur Verfügung gestellt.&lt;br /&gt;
&lt;br /&gt;
Das gesamte Sonoff Verzeichnis aus [https://github.com/arendst/Sonoff-Tasmota/archive/master.zip Arendts Sketch] entpacken (ist wie hier verlinkt ein Zipfile) und dann aus diesem Verzeichnis die sonoff.ino öffnen. Es können dann alle zu dem Sketch zugehörigen Dateien angesehen/editiert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Anschließend sollte noch die Datei &#039;&#039;&#039;user_config.h&#039;&#039;&#039; (im Unterverzeichnis &amp;quot;sonoff&amp;quot;) editiert werden. Die Abschnitte          &lt;br /&gt;
&lt;br /&gt;
 // Wifi&lt;br /&gt;
 // Syslog&lt;br /&gt;
 // Ota&lt;br /&gt;
 // MQTT&lt;br /&gt;
&lt;br /&gt;
müssen mit der eigenen &amp;quot;&#039;&#039;&#039;Ip-Adresse-Server&#039;&#039;&#039;&amp;quot;, &amp;quot;&#039;&#039;&#039;SSID&#039;&#039;&#039;&amp;quot; und &amp;quot;&#039;&#039;&#039;password&#039;&#039;&#039;&amp;quot; angepasst werden, das erleichtert den ersten Connect mit dem Modul. Seit der Version 2.1.2 können die WIFI Einstellungen 2-fach angegeben werden, somit wechselt das Device automatisch auf den 2. Wifi Hotspot wenn der erste nicht erreicht wird.&lt;br /&gt;
&lt;br /&gt;
 #define STA_SSID               &amp;quot;SSID&amp;quot;      // Wifi SSID&lt;br /&gt;
 #define STA_PASS               &amp;quot;password&amp;quot;  // Wifi password&lt;br /&gt;
 #define WIFI_HOSTNAME          &amp;quot;%s-%04d&amp;quot;         // Expands to &amp;lt;MQTT_TOPIC&amp;gt;-&amp;lt;last 4 decimal chars of MAC address&amp;gt;&lt;br /&gt;
 #define WIFI_CONFIG_TOOL       WIFI_WPSCONFIG    // Default tool if wifi fails to connect (WIFI_SMARTCONFIG, WIFI_MANAGER or WIFI_WPSCONFIG)&lt;br /&gt;
&lt;br /&gt;
 // Syslog&lt;br /&gt;
 #define SYS_LOG_HOST           &amp;quot;Ip-Adresse-Server&amp;quot;&lt;br /&gt;
 #define SYS_LOG_PORT           514&lt;br /&gt;
 #define SYS_LOG_LEVEL          LOG_LEVEL_NONE&lt;br /&gt;
 #define SERIAL_LOG_LEVEL       LOG_LEVEL_INFO&lt;br /&gt;
 #define WEB_LOG_LEVEL          LOG_LEVEL_INFO&lt;br /&gt;
&lt;br /&gt;
 // Ota&lt;br /&gt;
 #if (ARDUINO &amp;gt;= 168)&lt;br /&gt;
  #define OTA_URL              &amp;quot;http://Ip-Adresse-Server:80/api/arduino/&amp;quot; PROJECT &amp;quot;.ino.bin&amp;quot;&lt;br /&gt;
 #else&lt;br /&gt;
  #define OTA_URL              &amp;quot;http://Ip-Adresse-Server:80/api/arduino/&amp;quot; PROJECT &amp;quot;.cpp.bin&amp;quot;&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
 // MQTT&lt;br /&gt;
 #define MQTT_HOST              &amp;quot;Ip-Adresse-Server&amp;quot;&lt;br /&gt;
 #define MQTT_PORT              1883&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wichtig:&#039;&#039;&#039; Im Userprofile des Arduino Kompilers (%userprofile%\Documents\Arduino\libraries\pubsubclient\src\PubSubClient.h) die Max Packet Size auf 512 erhöht werden!&lt;br /&gt;
&lt;br /&gt;
  #define MQTT_MAX_PACKET_SIZE 512&lt;br /&gt;
  #define MQTT_KEEPALIVE 120&lt;br /&gt;
Anpassung der max. Packet Size auf 512 und das Keepalive auf 120&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Anschluß wird der Sketch mit der Arduino IDE (getestet mit 1.6.12) compiliert und die Binary dann exportiert (Sketch / Kompilierte Binärdatei exportieren). Die erzeugte .bin Datei dann mit dem Tool &amp;quot;ESP8266Flasher.exe&amp;quot; flashen, so wie auch bei ESPEasy. Sehr gut funktioniert aud das Esptool. Wer nicht compilieren will, kann auch im Unterverzeichnis ./api/arduino/ die fertige Binary ( sonoff.ino ) benutzen, aber dann ohne Voreinstellung der lokalen IPs.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===MQTT testen===&lt;br /&gt;
[[Datei:sonoff_sw_20.jpg|thumb|left|alt=Arends Menü]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nach erfolgtem Flash des Modules kann das Webinterface des Moduls zum ersten Mal aufgerufen werden (im Router nach der IP des Moduls suchen).&lt;br /&gt;
&lt;br /&gt;
Es bieten sich hier mehrere Möglichkeiten die die weitere Einrichtung des Moduls unterstützen. Einfach die Menüpunkte durchprobieren, sie erklären sich von selbst. Für erste Tests empfiehlt sich die lokale Konsole um die Ereignisse aus Sicht des Modules mit verfolgen zu können. Alles was hier gesendet wird, sollte ebenfalls am Server mitgeloggt werden können. Wenn bis hierher alles funktioniert, kann dann mir der Konfiguration in FHEM beginnen.&lt;br /&gt;
&lt;br /&gt;
Der Name des Moduls kann unter &amp;quot;Configuration&amp;quot; -&amp;gt; &amp;quot;Configure MQTT&amp;quot; -&amp;gt; &amp;quot;Topic (sonoff)&amp;quot; nachgeschaut und geändert werden. In FHEM wird beim definieren des Moduls dieser Name in den subscribeReadings bzw. publishSets eingegeben um die Verbindung zum Modul herzustellen.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Am Server jetzt eine Konsole öffnen und folgende Topic (alle) einstellen.&lt;br /&gt;
&lt;br /&gt;
 mosquitto_sub -d -v -t \# &lt;br /&gt;
Mit dieser Einstellung werden alle Topics geloggt! &lt;br /&gt;
&lt;br /&gt;
 pi@raspberry ~ $ mosquitto_sub -d -v -t \#&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff_dht/DHT/TEMPERATURE&#039;, ... (6 bytes))&lt;br /&gt;
 tele/sonoff_dht/DHT/TEMPERATURE 21.8 C&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff_dht/DHT/HUMIDITY&#039;, ... (6 bytes))&lt;br /&gt;
 tele/sonoff_dht/DHT/HUMIDITY 41.7 %&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff_dht/TIME&#039;, ... (19 bytes))&lt;br /&gt;
 tele/sonoff_dht/TIME 2017-02-22T16:05:43&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow3/STATE&#039;, ... (104 bytes))&lt;br /&gt;
 tele/sonoffpow3/STATE {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:05:44&amp;quot;, &amp;quot;Uptime&amp;quot;:100, &amp;quot;LIGHT&amp;quot;:&amp;quot;ON&amp;quot;, &amp;quot;Wifi&amp;quot;:{&amp;quot;AP&amp;quot;:2, &amp;quot;SSID&amp;quot;:&amp;quot;Pergola&amp;quot;, &amp;quot;RSSI&amp;quot;:96}}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow3/ENERGY&#039;, ... (134 bytes))&lt;br /&gt;
 tele/sonoffpow3/ENERGY {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:05:44&amp;quot;, &amp;quot;Yesterday&amp;quot;:0.083, &amp;quot;Today&amp;quot;:0.055, &amp;quot;Period&amp;quot;:0, &amp;quot;Power&amp;quot;:0, &amp;quot;Factor&amp;quot;:0.00, &amp;quot;Voltage&amp;quot;:229, &amp;quot;Current&amp;quot;:0.000}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;stat/TestSwitch/RESULT&#039;, ... (14 bytes))&lt;br /&gt;
 stat/TestSwitch/RESULT {&amp;quot;POWER&amp;quot;:&amp;quot;ON&amp;quot;}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;stat/TestSwitch/POWER&#039;, ... (2 bytes))&lt;br /&gt;
 stat/TestSwitch/POWER ON&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow3/STATE&#039;, ... (104 bytes))&lt;br /&gt;
 tele/sonoffpow3/STATE {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:07:14&amp;quot;, &amp;quot;Uptime&amp;quot;:100, &amp;quot;LIGHT&amp;quot;:&amp;quot;ON&amp;quot;, &amp;quot;Wifi&amp;quot;:{&amp;quot;AP&amp;quot;:2, &amp;quot;SSID&amp;quot;:&amp;quot;Pergola&amp;quot;, &amp;quot;RSSI&amp;quot;:96}}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow3/ENERGY&#039;, ... (134 bytes))&lt;br /&gt;
 tele/sonoffpow3/ENERGY {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:07:14&amp;quot;, &amp;quot;Yesterday&amp;quot;:0.083, &amp;quot;Today&amp;quot;:0.055, &amp;quot;Period&amp;quot;:0, &amp;quot;Power&amp;quot;:3, &amp;quot;Factor&amp;quot;:0.20, &amp;quot;Voltage&amp;quot;:227, &amp;quot;Current&amp;quot;:0.072}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;stat/TestSwitch/RESULT&#039;, ... (15 bytes))&lt;br /&gt;
 stat/TestSwitch/RESULT {&amp;quot;POWER&amp;quot;:&amp;quot;OFF&amp;quot;}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;stat/TestSwitch/POWER&#039;, ... (3 bytes))&lt;br /&gt;
 stat/TestSwitch/POWER OFF&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Interessant sind für uns nun diese Einträge &amp;quot;stat/TestSwitch/POWER ON&amp;quot; , dazu am Taster des Sonoff manuell umschalten. Dies entspricht genau der Syntax wie sie im Anschluss in FHEM dann zu verwenden ist.&lt;br /&gt;
&lt;br /&gt;
Mit diesen Einstellungen können dann entweder nach Telemetriedaten oder nach Statusmeldungen gefiltert werden. Dies ist jedoch nur notwendig wenn bereits andere MQTT Devices am Broker hängen und es sonst zu unübersichtlich wird.&lt;br /&gt;
 mosquitto_sub -h localhost -t tele/sonoff/#    = Telemetriedaten&lt;br /&gt;
 mosquitto_sub -h localhost -t stat/sonoff/#    = Statusmeldungen&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_21.jpg|thumb|left|alt=Arends Log]]&lt;br /&gt;
Sehr nützlich das lokale Log zur Fehlersuche und Inbetriebnahme.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==MQTT in FHEM einrichten==&lt;br /&gt;
[[Datei:sonoff_sw_24.jpg|thumb|left|alt=FHEM sonoff Schalter]]&lt;br /&gt;
Dieser einfache Schalter kommuniziert bidirektional mit dem sonoff Device.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_25.jpg|thumb|left|alt=FHEM sonoff Schalter]]&lt;br /&gt;
Die Readings in diesem verwendeten Beispiel zeigen sich wie in FHEM gewohnt.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Einrichtung in FHEM wird von den Modulen 00_MQTT.pm, 10_MQTT_BRIDGE und 10_MQTT_DEVICE.pm unterstützt.&lt;br /&gt;
Ebenso wird das Modul 98_expandJSON.pm benötigt um den [https://forum.fhem.de/index.php/topic,66761.0.html JSON String zu filtern].&lt;br /&gt;
&lt;br /&gt;
[https://forum.fhem.de/index.php?topic=27532.0 Link zum Forum: MQTT FHEM Einrichtung]&lt;br /&gt;
&lt;br /&gt;
 ### 1. Broker anlegen ###&lt;br /&gt;
 define myBroker MQTT 10.0.0.5:1883&lt;br /&gt;
&lt;br /&gt;
 ### 2. FHEM Device mit MQTT verbinden ###&lt;br /&gt;
 define Sonoff_Switch MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Switch IODev myBroker&lt;br /&gt;
 attr Sonoff_Switch devStateIcon ON:rc_GREEN:OFF OFF:rc_RED:ON&lt;br /&gt;
 attr Sonoff_Switch icon hue_filled_br30&lt;br /&gt;
 attr Sonoff_Switch publishSet ON OFF cmnd/TestSwitch/POWER/set&lt;br /&gt;
 attr Sonoff_Switch room MQTT&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_Licht stat/Sonoff_Switch/POWER&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_Sensor tele/Sonoff_Switch/SENSOR&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_Status stat/Sonoff_Switch/STATUS&lt;br /&gt;
 attr Sonoff_Switch webCmd ON:OFF&lt;br /&gt;
Der hier dargestellte Beispielcode realisiert die Kommunikation zwischen FHEM und dem sonoff Modul via MQTT Broker. Zu beachten ist hier, dass &#039;&#039;&#039;subscribeReading_Licht&#039;&#039;&#039; und &#039;&#039;&#039;subscribeReading_state&#039;&#039;&#039; unterschiedliche Syntax des Topic Strings haben!&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff POW einrichten==&lt;br /&gt;
[[Datei:sonoff_sw_31.jpg|thumb|left|alt=Sonoff POW]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier geht es ausschließlich um das Modul Sonoff POW!}}&lt;br /&gt;
Das Modul kommt in gewohnter Itead Qualität und eine derart kostengünstige Energiemessung wird bei Smart Home Anwendern gerne eingesetzt. Die Originalsoftware habe ich nicht einmal getestet, da damit eine Anbindung an FHEM leider nicht möglich ist.&lt;br /&gt;
&lt;br /&gt;
Ebenso möchte kaum jemand an eine nicht dokumentierte chinesische Cloud die Steuerbefehle seiner Schalter senden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_sw_33.jpg|thumb|left|alt=Sonoff POW]]&lt;br /&gt;
Bitte auf keinen Fall das Modul während der Arbeiten an die Netzspannung anschießen. Zum Flashen genügt (und nur diese) die Versorgungspannung des USB-TTL Konverters. Wie auf dem Foto gut erkennbar, wurde dieses Modul ohne einlöten einer Pfostensteckerleiste geflasht. Die Steckverbindung wird einfach in die Lötaugen gesteckt und mit einem Gummiring fixiert, da ja spätere Flashvorgänge im Webif des Models funktionieren und so die Arbeit eingespart werden kann. Es steht jedoch nichts im Wege die Pfostensteckerleiste einzulöten.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Die Anschlüsse am Modul sind wie folgt belegt.&lt;br /&gt;
 o GND&lt;br /&gt;
 o TxD&lt;br /&gt;
 o RxD&lt;br /&gt;
 o VDD&lt;br /&gt;
&lt;br /&gt;
Für den Flashvorgang gelten die selben Regeln wie schon beim sonoff Switch oben erwähnt (3,3V!).&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Sonoff POW Software===&lt;br /&gt;
[[Datei:sonoff_sw_35.jpg|thumb|left|alt=Sonoff POW FHEM]]&lt;br /&gt;
Als Software steht im Augenblick nur der Sketch von Arends zur Verfügung, liefert aber alles was das Herz begehrt und ist ist einfach zu handhaben. Hier eine eine einfache Darstellung mit der aktuellen Leistung und dem Tagesverbrauch. Zusätzlich besteht auch noch die Möglichkeit den angeschlossenen Verbraucher Ein- oder Auszuschalten. &lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_pow_02.jpg|thumb|left|alt=Sonoff POW Webif]]&lt;br /&gt;
Seit Version 2.0.19a ist auch die Leistungsanzeige im WEBIF wie im Bild links integriert. Auch der Energieverbrauch des Vortages wird mit angezeigt. Alle hier angezeigten Daten werden auch zyklisch im MQTT String an FHEM übergeben.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich kann im Sketch auch das Feature &amp;quot;&#039;&#039;&#039;Power_Limit&#039;&#039;&#039;&amp;quot; aktiviert werden. Mit dem Power_Limit wird eine zusätzliche Nachricht erzeugt, wenn ein bestimmter einstellbarer Grenzwert über- oder unterschritten wird. &lt;br /&gt;
&lt;br /&gt;
Es lassen sich dadurch Meldungen wie &amp;quot;Waschmaschine fertig&amp;quot; oder ähnliches ohne weitere Schwellwert Überwachungen in FHEM ableiten. Die Meldungen kommen in MQTT mit &amp;quot;&#039;&#039;&#039;POWER_LOW ON&#039;&#039;&#039;&amp;quot; bzw. &amp;quot;&#039;&#039;&#039;POWER_LOW OFF&#039;&#039;&#039;&amp;quot;.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei erstmaligen Start des Modules muss der Typ des Modules von &amp;quot;SONOFF&amp;quot; auf &amp;quot;&#039;&#039;&#039;SONOFF_Pow&#039;&#039;&#039;&amp;quot; geändert werden, damit die Software weiß mit welchem Modul es zu tun hat und kann dann die entsprechenden Berechnungen durchführen. Die Leistungsdaten kommen ja in Form einer Frequenz aus dem Baustein und müssen im Sketch (xsns_hlw8102.ino) umgerechnet werden.&lt;br /&gt;
                                            &lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_sw_36.jpg|thumb|left|alt=Sonoff POW Attribute]]&lt;br /&gt;
Dieses Bild zeigt die Attribute die vom Modul via MQTT an FHEM geliefert werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
aktuell gelieferter JSON String vom Sketch der alle Messdaten beinhaltet.&lt;br /&gt;
 {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:38:47&amp;quot;, &amp;quot;Yesterday&amp;quot;:&amp;quot;2.286&amp;quot;, &amp;quot;Today&amp;quot;:&amp;quot;1.593&amp;quot;, &amp;quot;Period&amp;quot;:9, &amp;quot;Power&amp;quot;:231, &amp;quot;Factor&amp;quot;:&amp;quot;1.00&amp;quot;, &amp;quot;Voltage&amp;quot;:231, &amp;quot;Current&amp;quot;:&amp;quot;0.866&amp;quot;}&lt;br /&gt;
und hier das zugehörige Reading.&lt;br /&gt;
 tele/sonoffpow/ENERGY    &lt;br /&gt;
       &lt;br /&gt;
&lt;br /&gt;
Hier ein Mittschnitt des Datenverkehrs zum Broker zwecks Kontrolle der korrekten Funktion der Module und der Software.&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/STATE&#039;, ... (103 bytes))&lt;br /&gt;
 tele/sonoffpow/STATE {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:39:15&amp;quot;, &amp;quot;Uptime&amp;quot;:79, &amp;quot;LIGHT&amp;quot;:&amp;quot;OFF&amp;quot;, &amp;quot;Wifi&amp;quot;:{&amp;quot;AP&amp;quot;:2, &amp;quot;SSID&amp;quot;:&amp;quot;Liwest&amp;quot;, &amp;quot;RSSI&amp;quot;:54}}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/ENERGY&#039;, ... (140 bytes))&lt;br /&gt;
 tele/sonoffpow/ENERGY {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:39:15&amp;quot;, &amp;quot;Yesterday&amp;quot;:&amp;quot;1.391&amp;quot;, &amp;quot;Today&amp;quot;:&amp;quot;1.191&amp;quot;, &amp;quot;Period&amp;quot;:0, &amp;quot;Power&amp;quot;:0, &amp;quot;Factor&amp;quot;:&amp;quot;0.00&amp;quot;, &amp;quot;Voltage&amp;quot;:0, &amp;quot;Current&amp;quot;:&amp;quot;0.000&amp;quot;}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff_wall1/STATE&#039;, ... (105 bytes))&lt;br /&gt;
 tele/sonoff_wall1/STATE {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:39:15&amp;quot;, &amp;quot;Uptime&amp;quot;:96, &amp;quot;POWER&amp;quot;:&amp;quot;OFF&amp;quot;, &amp;quot;Wifi&amp;quot;:{&amp;quot;AP&amp;quot;:2, &amp;quot;SSID&amp;quot;:&amp;quot;Pergola&amp;quot;, &amp;quot;RSSI&amp;quot;:100}}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow3/STATE&#039;, ... (104 bytes))&lt;br /&gt;
 tele/sonoffpow3/STATE {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:39:20&amp;quot;, &amp;quot;Uptime&amp;quot;:100, &amp;quot;LIGHT&amp;quot;:&amp;quot;ON&amp;quot;, &amp;quot;Wifi&amp;quot;:{&amp;quot;AP&amp;quot;:2, &amp;quot;SSID&amp;quot;:&amp;quot;Pergola&amp;quot;, &amp;quot;RSSI&amp;quot;:96}}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow3/ENERGY&#039;, ... (134 bytes))&lt;br /&gt;
 tele/sonoffpow3/ENERGY {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:39:20&amp;quot;, &amp;quot;Yesterday&amp;quot;:0.083, &amp;quot;Today&amp;quot;:0.057, &amp;quot;Period&amp;quot;:0, &amp;quot;Power&amp;quot;:0, &amp;quot;Factor&amp;quot;:0.00, &amp;quot;Voltage&amp;quot;:230, &amp;quot;Current&amp;quot;:0.000}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Einstellungen können mit folgender Syntax angefordert werden (zwei Terminalfenster öffnen, eines zum protokollieren und eines zum Seden der Befehle).&lt;br /&gt;
 mosquitto_sub -d -v -t \#  MQTT Datenverkehr protokolieren&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/status/set -m &amp;quot;8&amp;quot;      = SonoffPOW Status jetzt auslesen&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/TelePeriod/set -m &amp;quot;60&amp;quot; = Timer setzen, alle 60 Sekunden Daten senden &lt;br /&gt;
Die Kommandos können direkt am Broker (Terminalfenster Putty etc.) abgesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sonoff POW Kalibrieren ===&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier wird beschrieben, wie der &#039;&#039;Sonoff POW kalibriert&#039;&#039; werden kann. }}&lt;br /&gt;
Ab Version 2.0.11 kann nun auch der POW kalibriert werden.&lt;br /&gt;
Dazu kann man 2 Konsolenfenster öffnen, im ersten aktiviert man das Protokoll für den Datenverkehr&lt;br /&gt;
 mosquitto_sub -d -v -t \#  MQTT Datenverkehr protokollieren&lt;br /&gt;
&lt;br /&gt;
Dann kann mit folgenden Befehlen die HLW Referenz Pulsfrequenz gesetzt werden.&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/HLWUCAL/set -m &amp;quot;2100&amp;quot;     default = 1950&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/HLWICAL/set -m &amp;quot;2450&amp;quot;     default = 3500&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/HLWPCAL/set -m &amp;quot;13500&amp;quot;    default = 12345 &lt;br /&gt;
Entweder man hat eine definierte Last zur Verfügung oder besser man misst mit einem Leistungsmesser nach. Die Spannung kann man mit einem Multimeter nachmessen (sollte 230 V sein) und der Strom wird errechnet (bei 100 Watt I = P / U ) = 100/230 = 0,4347.&lt;br /&gt;
Die Referenzwerte solange geringfügig ändern bis die Ausgabe passt. Für die Ausgabe wird einfach eine Statusabfrage durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/status/set -m &amp;quot;8&amp;quot;&lt;br /&gt;
Befehl für die Statusabfrage&lt;br /&gt;
&lt;br /&gt;
 cmnd/sonoffpow/status/set 8&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;stat/sonoffpow/STATUS&#039;, ... (103 bytes))&lt;br /&gt;
 stat/sonoffpow/STATUS PWR: Voltage 225 V, Current 0.427 A, Current Power 98 W, Total Power Today 0.080 kWh, Power Factor 1.00&lt;br /&gt;
Ergebnis der Statusabfrage mit Spannung, Strom und Leistung.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sonoff POW FHEM Anbindung===&lt;br /&gt;
Ein Beispiel einer einfachen Anbindung via JSON an FHEM. MQTT von Arends ist insofern notwendig, da in der Software ESPEasy und der Bridge noch keine Implementierung der Frequenzumrechnung enthalten ist.&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Pow MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Pow IODev myBroker&lt;br /&gt;
 attr Sonoff_Pow icon measure_power&lt;br /&gt;
 attr Sonoff_Pow publishSet ON OFF cmnd/sonoffpow/LIGHT/&lt;br /&gt;
 attr Sonoff_Pow stateFormat {sprintf(&amp;quot;aktuell: %.1f W Tag: %.2f Kw/h&amp;quot;, ReadingsVal($name,&amp;quot;Power&amp;quot;,undef), ReadingsVal($name,&amp;quot;Today&amp;quot;,undef))}&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_ENERGY tele/sonoffpow/ENERGY&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_LIGHT stat/sonoffpow/LIGHT&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_state cmnd/sonoffpow/LIGHT&lt;br /&gt;
 attr Sonoff_Pow webCmd ON:OFF&lt;br /&gt;
Zusätzlich kann hier noch das Relais mit &amp;quot;on&amp;quot; und &amp;quot;off&amp;quot; ein- ausgeschaltet werden.&lt;br /&gt;
&lt;br /&gt;
Ebenso notwendig ist das setzen der Regexp für den JSON Konverter.&lt;br /&gt;
 define ej3 expandJSON Sonoff.*:.*:.{.*}&lt;br /&gt;
hier wird alles was mit dem Namen Sonoff beginnt gefiltert und automatisch alle darin enthaltenen Readings erstellt.&lt;br /&gt;
&lt;br /&gt;
 define ej3 expandJSON Sonoff.*:ENERGY.*:.{.*} (Power|Yesterday|Today)&lt;br /&gt;
oder so, da werden nur die Readings Power, Yesterday und Today erstellt.&lt;br /&gt;
Somit ist auch kalr, das in FHEM auch JSON installiert sein muss. Ebenso können die verschiedenen Regexp im [https://github.com/ddtlabs/expandJSON Wiki] nachgelesen werden.&lt;br /&gt;
&lt;br /&gt;
[https://forum.fhem.de/index.php/topic,66761.15.html Link zum Diskussionsthread].&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Source Reading:&#039;&#039;&#039;&lt;br /&gt;
 device:reading:.{.*} &lt;br /&gt;
 .*WifiIOT.*:sensor.*:.{.*} &lt;br /&gt;
 sonoff_.*:.*:.{.*} &lt;br /&gt;
 dev.*:(sensor1|sensor2|teleme.*):.{.*} &lt;br /&gt;
 (dev.*|[Dd]evice.*):json:.{.*} &lt;br /&gt;
 (devX:jsonX:.{.*}|devY.*:jsonY:.{.*Wifi.*{.*SSID.*}.*}) &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Target Reading:&#039;&#039;&#039;&lt;br /&gt;
 .*power.* &lt;br /&gt;
 (Current|Voltage|Wifi.*)  &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Komplette Definition des Filters:&#039;&#039;&#039;&lt;br /&gt;
 define ej1 expandJSON device:sourceReading:.{.*} targetReading &lt;br /&gt;
 define ej3 expandJSON .*\.SEN\..*:.*:.{.*} &lt;br /&gt;
 define ej3 expandJSON sonoff_.*:sensor.*:.{.*} (power.*|current|voltage)&lt;br /&gt;
&lt;br /&gt;
===Sonoff POW Netz-Anschluß===&lt;br /&gt;
[[Datei:sonoff_sw_34.jpg|thumb|left|alt=Sonoff POW Netzanschluß]]&lt;br /&gt;
Erst wenn alle Arbeiten an der Hard- und Software abgeschlossen sind, kann man das Modul an die Netzspannung anschließen. Wer es sich einfach machen will, nimmt eine Industriell gefertigte 230 V Verlängerung  (zwischen 1,5 - 3 Meter) und schneidet sie in der Mitte durch. Nach dem abisolieren der flexiblen Drähte sollte diese &#039;&#039;&#039;verlötet oder mit Aderendhülsen&#039;&#039;&#039; versehen werden (müssen aber exakt passen, da hier kaum Platz in den Klemmen ist). &lt;br /&gt;
Mit einem kleinen Schraubendreher kann man die Feder der Klemmen niederdrücken und das verzinnte Drahtende tief ich die Öffnung stecken. Es dürfen keine Drahtlitzen aus den Öffnungen sichtbar sein, Kurzschlußgefahr! Ebenso sollte eine Zugprobe durchgeführt werden ob die Klemme auch richtig eingerastet ist.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ACHTUNG:&#039;&#039;&#039; diese Arbeiten müssen von einem ausgebildeten Fachpersonal (Elektriker) durchgeführt werden, Lebensgefahr!&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sonoff POW Design===&lt;br /&gt;
&lt;br /&gt;
====ReadingsGroup mit Schaltmöglichkeit====&lt;br /&gt;
[[Datei:sonoff_pow_03.jpg|thumb|left|alt=readingsGroup mit Schalter]]&lt;br /&gt;
Die ReadingsGroup kann auch gleich mit einem Schalter versehen werden um den POW Ein- oder Aus schalten zu können. Dazu ist aber eine andere Einstellung im Sketch erforderlich.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der &amp;quot;&#039;&#039;&#039;user_config.h&#039;&#039;&#039;&amp;quot; muss an dieser Stelle auch die &amp;quot;&#039;&#039;&#039;PUB_PREFIX&#039;&#039;&#039;&amp;quot; auf die gleiche Topic wie &amp;quot;PUB_PREFIX2&amp;quot; eingestellt werden. Durch diese Maßnahme wird erreicht, dass sofort nach dem Knopfdruck auch der Status mit der Topic &amp;quot;tele&amp;quot; übertragen wird. Würde der weiterhin mit &amp;quot;stat&amp;quot; übertragen, kann er in der Readingsgroup nur sehr umständlich weiter behandelt werden. Dadurch wird erreicht, dass der Schalter sofort nach dem Schaltvorgang und der Rückmeldung (Status) auch seine Farbe ändert. Wird dieser Eintrag vergessen, ändert der Schalter erst nach Eintreffen der nächsten zyklischen Abfrage seinen Status/Farbe.&lt;br /&gt;
&lt;br /&gt;
 #define SUB_PREFIX             &amp;quot;cmnd&amp;quot;       // Sonoff devices subscribe to:- SUB_PREFIX/MQTT_TOPIC and SUB_PREFIX/MQTT_GRPTOPIC&lt;br /&gt;
 #define PUB_PREFIX             &amp;quot;tele&amp;quot;       // Sonoff devices publish to:- PUB_PREFIX/MQTT_TOPIC&lt;br /&gt;
 #define PUB_PREFIX2            &amp;quot;tele&amp;quot;       // Sonoff devices publish telemetry data to:- PUB_PREFIX2/MQTT_TOPIC/UPTIME, POWER/LIGHT and TIME&lt;br /&gt;
hier die PUB_PREFIX mit der geänderten Topic &amp;quot;tele&amp;quot; anstatt &amp;quot;stat&amp;quot; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 define SonoffPows readingsGroup &amp;lt;%measure_power&amp;gt;,&amp;lt;aktuell&amp;gt;,&amp;lt;Tag&amp;gt;,&amp;lt;Gestern&amp;gt;,&amp;lt;Strom&amp;gt;,&amp;lt;Durchschnitt&amp;gt;,&amp;lt;max.P&amp;gt;,&amp;lt;Zyklus&amp;gt;,&amp;lt;Faktor&amp;gt;,&amp;lt;Status&amp;gt;,&amp;lt; hr &amp;gt; .*(Sonoff_Pow|Sonoff_Pow2|Sonoff_Pow3|Sonoff_Pow4):Power,Today,Yesterday,Current,Power_avg_day,Power_max_day,Period,Factor,LIGHT&lt;br /&gt;
 attr SonoffPows commands {&#039;LIGHT.ON&#039; =&amp;gt; &#039;set $DEVICE OFF&#039;,&#039;LIGHT.OFF&#039; =&amp;gt; &#039;set $DEVICE ON&#039;}&lt;br /&gt;
 attr SonoffPows mapping %ALIAS&lt;br /&gt;
 attr SonoffPows nameStyle style=&amp;quot;color:yellow&amp;quot;&lt;br /&gt;
 attr SonoffPows room Energie,MQTT&lt;br /&gt;
 attr SonoffPows valueFormat {&#039;Power&#039; =&amp;gt;&amp;quot;%.0f W&amp;quot;, &#039;Today&#039; =&amp;gt;&amp;quot;%.2f Kw&amp;quot;,&#039;Yesterday&#039; =&amp;gt;&amp;quot;%.2f Kw&amp;quot;, &#039;CURRENT&#039; =&amp;gt;&amp;quot;%.2f A&amp;quot;,&#039;Power_max_day&#039; =&amp;gt; &amp;quot;%.0f W&amp;quot;,&#039;Power_avg_day&#039; =&amp;gt; &amp;quot;%.2f W&amp;quot;,&#039;Power&#039;=&amp;gt;&amp;quot;%.0f W&amp;quot;,&#039;Factor&#039; =&amp;gt; &amp;quot;%.2f &amp;quot;}&lt;br /&gt;
 attr SonoffPows valueIcon {&#039;LIGHT.ON&#039; =&amp;gt; &#039;rc_GREEN@green&#039;, &#039;LIGHT.OFF&#039; =&amp;gt; &#039;rc_RED@red&#039;}&lt;br /&gt;
 attr SonoffPows valueStyle { if($READING eq &amp;quot;Power&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 0 &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Today&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 4.8){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Today&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 2.5){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Today&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 2.5 &amp;amp;&amp;amp; $VALUE &amp;lt; 4.8 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Yesterday&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 2.5){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Yesterday&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 2.5 &amp;amp;&amp;amp; $VALUE &amp;lt; 4.8 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Yesterday&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 4.8){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Current&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 0.45){&#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039;}elsif( $READING eq &amp;quot;Current&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 0.45 &amp;amp;&amp;amp; $VALUE &amp;lt; 0.87 ){&#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Current&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 0.87){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Period&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 10){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Period&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 10 &amp;amp;&amp;amp; $VALUE &amp;lt; 15 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Period&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 15){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039;}}&lt;br /&gt;
Dieses Beispiel ist für &#039;&#039;&#039;Tasmota mit JSON&#039;&#039;&#039; ausgelegt und benötigt ebenso wie oben die Erweiterung &amp;quot;average&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Pow_CURRENT_POWER average Sonoff_Pow:Power.*&lt;br /&gt;
damit werden der Durchschnitt und min max für Tasmota mit JSON erzeugt.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====POW mit FTUI anzeigen====&lt;br /&gt;
[[Datei:sonoff_pow_energy.JPG|thumb|left|alt=Tablett FTUI]]&lt;br /&gt;
Wer möchte kann die Energieanzeigen auch mit der [https://forum.fhem.de/index.php/topic,34233.0.html Tablett UI] für eine Tablet Ansicht gestalten. Mit dieser stehen viele Möglichkeiten zu einer attraktiven Darstellung zur Verfügung.&lt;br /&gt;
Hier ein Beispiel welches mit den Widget &amp;quot;[http://www.fhemwiki.de/wiki/FHEM_Tablet_UI#Widget_THERMOSTAT thermostat]&amp;quot; dargestellt ist.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Slampher Flashen==&lt;br /&gt;
[[Datei:sonoff_sl_53.jpg|thumb|left|alt=Sonoff SLAMPHER]]&lt;br /&gt;
Dieses Modul ist eine Besonderheit was das Flashen betrifft, denn mit Hilfe des Tasters kann der ESP8266 NICHT in den Flashmode gebracht werden. Der Taster ist intern anderwärtig verdrahtet und somit für diesen Zweck nicht zu gebrauchen.&lt;br /&gt;
&lt;br /&gt;
Wie hier links im Bild zu sehen ist, muss der rechte Pin des R20 (oben im Bild) während dem Einstecken des USB Steckers auf Masse gelegt werden. Die beste Möglichkeit ist ein Stücken Draht anzulöten und diesen dann beim einstecken auf den Masse Pin des USB-Konverters zu legen.&lt;br /&gt;
&lt;br /&gt;
Pinbelegung des Steckers von oben nach unten:&lt;br /&gt;
 o - GND&lt;br /&gt;
 o - TxD&lt;br /&gt;
 o - RxD&lt;br /&gt;
 &#039;&#039;&#039;o&#039;&#039;&#039; - Vdd&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sl_51.jpg|thumb|left|alt=Sonoff SLAMPHER R20]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier ist genau ersichtlich, wo der R20 auf der Platine platziert ist. }}&lt;br /&gt;
Hier nocheinmal schön zu sehen wo der R20 (der ist nicht eingelötet sondern leer) exakt auf der Platine liegt, gemeint ist der rechte Pin. Hier kann auch leicht gelötet werden, da keine empfindlichen Bauteile in der Nähe sind und auch genug Platz vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_sl_50.jpg|thumb|left|alt=Sonoff SLAMPHER R20]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier ist genau ersichtlich, wo der Draht am R20 aufgelötet wurde }}&lt;br /&gt;
Hier ist ein kleines Stück Schaltdraht auf den Pin bereist aufgelötet und bereit zum Flashen!&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel wurde keine Pfostensteckerleiste auf die Platine aufgelötet, sondern nur durchgesteckt und mit einem Gummiring  zum Relais fixiert, das erspart den Lötvorgang, weil in Zukunft dann ohnehin OTA geflasht werden kann.&lt;br /&gt;
&lt;br /&gt;
Also Pin20 auf Masse legen und USB-Konverter an den PC einstecken, dann den Draht von der Masse entfernen. Der ESP8266 sollte jetzt im Flashmodus bereit stehen und kann wie bereits oben beschrieben geflasht werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sonoff Slampher Software===&lt;br /&gt;
[[Datei:sonoff_sl_54.jpg|thumb|left|alt=Sonoff SLAMPHER FHEM]]&lt;br /&gt;
&lt;br /&gt;
Als Software wird Arends Sketch installiert (Kommunikation über MQTT), da zum derzeitigen Zeitpunkt ESPEasy das Modul noch nicht integriert hat und somit auch nicht ansteuern kann.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_SL MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_SL IODev myBroker&lt;br /&gt;
 attr Sonoff_SL devStateIcon ON:rc_GREEN:OFF OFF:rc_RED:ON&lt;br /&gt;
 attr Sonoff_SL icon hue_filled_br30&lt;br /&gt;
 attr Sonoff_SL publishSet ON OFF cmnd/sonoffsl/POWER/set&lt;br /&gt;
 attr Sonoff_SL room Bewegung,_Sonoff&lt;br /&gt;
 attr Sonoff_SL stateFormat Licht&lt;br /&gt;
 attr Sonoff_SL subscribeReading_Licht tele/sonoffsl/POWER&lt;br /&gt;
 attr Sonoff_SL subscribeReading_state cmnd/sonoffsl/POWER/set&lt;br /&gt;
 attr Sonoff_SL webCmd ON:OFF&lt;br /&gt;
&lt;br /&gt;
Hier ein Beispiel wie in FHEM der Slampher eingebunden werden kann. In diesem Beispiel wird davon ausgegangen, das im Modul die Topic &amp;quot;sonoffsl&amp;quot; benannt wurde. Wer einen anderen Namen haben möchte, muss dies dann auch in FHEM entsprechend anpassen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Th10/16 FHEM==&lt;br /&gt;
[[Datei:sonoff_th_01.jpg|thumb|left|alt=Sonoff TH10]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Temperatur Modul TH10 / 16! }}&lt;br /&gt;
Das Modul kann durch drücken des Tasters während dem Einstecken des USB-Konverters in den Flashmodus gebracht werden.&lt;br /&gt;
Der Th10/16 kann mit zwei unterschiedlichen Typen von Sensoren bestückt werden, hier im Beispiel mit dem externen Temperaturfühler DS18B20.&lt;br /&gt;
&lt;br /&gt;
Wie im Bild klar zu sehen ist, kann das Webif auch zur Darstellung via Mobile verwendet werden. Mit &amp;quot;Toggle&amp;quot; wird Ein- oder Aus geschaltet und  darunter ist die aktuelle Temperatur ersichtlich. Für diese Ansicht muss keine MQTT Verbindung eingerichtet werden, da die Kommunikation hier rein über HTTP erfolgt.&lt;br /&gt;
&lt;br /&gt;
Die unten dargestellten Beispiele für FHEM beziehen sich auf Arends Sketch, also über MQTT. Dieses Modul kann aber genauso leicht über ESPEasy und der ESPEasy-Bridge eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Pinbelegung des Steckers von oben nach unten:&lt;br /&gt;
 o - GND&lt;br /&gt;
 o - TxD&lt;br /&gt;
 o - RxD&lt;br /&gt;
 &#039;&#039;&#039;o&#039;&#039;&#039; - Vdd&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_th_02.jpg|thumb|left|alt=Sonoff TH10]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Einbindung in FHEM via MQTT! }}&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ### Temperatur und Luftfeuchte vom Sonoff Switch ###&lt;br /&gt;
 define Sonoff_Temp MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Temp IODev myBroker&lt;br /&gt;
 attr Sonoff_Temp alias Pool Wasser&lt;br /&gt;
 attr Sonoff_Temp eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_Temp icon temperature_humidity&lt;br /&gt;
 attr Sonoff_Temp publishSet ON OFF cmnd/sonoffth/POWER/set&lt;br /&gt;
 attr Sonoff_Temp room _Sonoff&lt;br /&gt;
 attr Sonoff_Temp stateFormat {sprintf(&amp;quot;Temperatur: %.1f Grad&amp;quot;, ReadingsVal($name,&amp;quot;temperature&amp;quot;,0))}&lt;br /&gt;
 attr Sonoff_Temp subscribeReading_SENSOR tele/sonoffth/SENSOR&lt;br /&gt;
 attr Sonoff_Temp subscribeReading_state cmnd/sonoffth/POWER/set&lt;br /&gt;
Beispiel für FHEM mit Temperaturanzeige mit DS18B20&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Switch MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Switch IODev myBroker&lt;br /&gt;
 attr Sonoff_Switch alias Pool Licht&lt;br /&gt;
 attr Sonoff_Switch devStateIcon on:rc_GREEN:off off:rc_RED:on&lt;br /&gt;
 attr Sonoff_Switch eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_Switch icon light_ceiling&lt;br /&gt;
 attr Sonoff_Switch publishSet ON OFF cmnd/sonoffth/POWER/set&lt;br /&gt;
 attr Sonoff_Switch room _Sonoff&lt;br /&gt;
 attr Sonoff_Switch stateFormat Licht&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_Licht tele/sonoffth/POWER&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_state cmnd/sonoffth/POWER/set&lt;br /&gt;
 attr Sonoff_Switch webCmd ON:OFF&lt;br /&gt;
Der Schalter nochmals seperat dargestellt, je nach Geschmack.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff 4CH 4-Kanal Schaltmodul==&lt;br /&gt;
[[Datei:sonoff_ch4_1.jpg|thumb|left|alt=Sonoff CH4]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Achtung andere Einstellungen der Arduino IDE: Select Board &amp;quot;Generic ESP8285 Module&amp;quot; (=Flash Mode &amp;quot;DOUT&amp;quot;) and Flash Size &amp;quot;1M (64K SPIFFS)&amp;quot;n! }}&lt;br /&gt;
&lt;br /&gt;
Der Sonoff 4CH ist mit seinen 4 Kanälen ein sehr preiswertes Modul im Gehäuse und für Hutschinenmontage. Anstatt des üblichen ESP8266 besitzt dieses Modul schon den moderneren &#039;&#039;&#039;ESP8285&#039;&#039;&#039;. Es müssen daher in der Arduino IDE andere Einstellungen vorgenommen werden. Unter Board wird hier das &amp;quot;&#039;&#039;&#039;Generic 8285 Module&#039;&#039;&#039;&amp;quot; mit &#039;&#039;&#039;1M und 64K Spiffs&#039;&#039;&#039; angewählt. Der Flashmode &amp;quot;&#039;&#039;&#039;DOUT&#039;&#039;&#039;&amp;quot; wird dann automatisch eingestellt, bzw. ausgeblendet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Es ist daher unbedingt notwendig den Sketch mit den geänderten Einstellungen selbst zu kompilieren, ansonsten stürzt das Modul nach Auswahl des Typs ab  und wird nicht mehr rebooten können!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das Modul ist etwas größer als die anderen Sonoff Produkte und besitzt mit 14,5 x 9 cm schon beachtliche Einbau Maße.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_ch4_2.jpg|thumb|left|alt=Sonoff 4CH FDTI]]&lt;br /&gt;
Als weitere Besonderheit sei hier erwähnt, das die Signale &#039;&#039;&#039;RxD auf RxD und TxD auf TxD&#039;&#039;&#039; des FTDI Konverters zu verbinden sind. Wie bei allen Sonoff Modulen darf man &#039;&#039;&#039;zum flashen keine Netzspannung anschließen&#039;&#039;&#039;, sondern nur über die Versorgungsspannung des FDTI Konverters mit 3,3 V versorgen (Jumper richtig setzen). Die Stiftleiste für den FTDI Anschluß ist hier schon eingelötet.&lt;br /&gt;
&lt;br /&gt;
In den Flashmodus gelangt man durch drücken der &#039;&#039;&#039;Taste FW/IO0&#039;&#039;&#039; während des einstecken des USB Anschlusses.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_ch4_3.jpg|thumb|left|alt=Sonoff 4CH Arends]]&lt;br /&gt;
Hier die Ansicht des Webinterface des Arends Sketches!&lt;br /&gt;
Bei der Software sei erwähnt, das die getestete Version 3.1.16 nur bei Kanal 1 den Modus &amp;quot;PulseTime&amp;quot; beherrscht. Wer also gepulste Ausgänge (zB: elektrische Garage/Toröffner) benötigt muss diese per Software nachbilden oder mit dem Kanal 1 auskommen. Eine &amp;quot;Pulsetime 10&amp;quot; ist ein guter Wert dafür (etwa 1 Sekunde). &lt;br /&gt;
&lt;br /&gt;
Als Alternative kann mit dieser HTML Seite des Webservers am Modul des CH4 schon mit jedem Browser fähigem Handy (Android, iPhone, Windows) aufgerufen werden und somit alle Funktionen gesteuert werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_ch4_4.jpg|thumb|left|alt=Sonoff CH4 Software APP]]&lt;br /&gt;
Hier dargestellt die Original Software die Sonoff zum Modul liefert (EWeLink) und über ihre Cloud verbindet. Leider kann hier keine gepulste Ausgabe erfolgen. Mit einem Countdown kann zwar der Ausgang wieder abgeschaltet werden, die kleinste Zeiteinheit ist aber 1 Minute und somit für einen Impuls leider nicht zu gebrauchen. Ebenso kann mit dieser Software keine Einbindung in FHEM erfolgen, obwohl es eine nette anschauliche Darstellung ist.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sonoff 4CH 4-Kanal Anbindung FHEM===&lt;br /&gt;
Beispiel zur Anbindung in FHEM für den 4CH, hier werden einfach 4 einzelne Schalter definiert!&lt;br /&gt;
 define Sonoff_ch1 MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_ch1 IODev myBroker&lt;br /&gt;
 attr Sonoff_ch1 alias Sonoff CH1&lt;br /&gt;
 attr Sonoff_ch1 devStateIcon on:rc_GREEN:off off:rc_RED:on&lt;br /&gt;
 attr Sonoff_ch1 eventMap ON:on OFF:off ON:Ein OFF:Aus&lt;br /&gt;
 attr Sonoff_ch1 group Toröffner&lt;br /&gt;
 attr Sonoff_ch1 icon light_ceiling&lt;br /&gt;
 attr Sonoff_ch1 publishSet ON OFF cmnd/sonoffch4/POWER1/set&lt;br /&gt;
 attr Sonoff_ch1 stateFormat Power&lt;br /&gt;
 attr Sonoff_ch1 subscribeReading_Power tele/sonoffch4/POWER1&lt;br /&gt;
 attr Sonoff_ch1 subscribeReading_state cmnd/sonoffch4/POWER1/set&lt;br /&gt;
 attr Sonoff_ch1 webCmd Ein:Aus&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_ch2 MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_ch2 IODev myBroker&lt;br /&gt;
 attr Sonoff_ch2 alias Sonoff CH2&lt;br /&gt;
 attr Sonoff_ch2 devStateIcon on:rc_GREEN:off off:rc_RED:on&lt;br /&gt;
 attr Sonoff_ch2 eventMap ON:on OFF:off ON:Ein OFF:Aus&lt;br /&gt;
 attr Sonoff_ch2 group Toröffner&lt;br /&gt;
 attr Sonoff_ch2 icon light_ceiling&lt;br /&gt;
 attr Sonoff_ch2 publishSet ON OFF cmnd/sonoffch4/POWER2/set&lt;br /&gt;
 attr Sonoff_ch2 stateFormat Power&lt;br /&gt;
 attr Sonoff_ch2 subscribeReading_Power tele/sonoffch4/POWER2&lt;br /&gt;
 attr Sonoff_ch2 subscribeReading_state cmnd/sonoffch4/POWER2/set&lt;br /&gt;
 attr Sonoff_ch2 webCmd Ein:Aus&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_ch3 MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_ch3 IODev myBroker&lt;br /&gt;
 attr Sonoff_ch3 alias Sonoff CH3&lt;br /&gt;
 attr Sonoff_ch3 devStateIcon on:rc_GREEN:off off:rc_RED:on&lt;br /&gt;
 attr Sonoff_ch3 eventMap ON:on OFF:off ON:Ein OFF:Aus&lt;br /&gt;
 attr Sonoff_ch3 group Toröffner&lt;br /&gt;
 attr Sonoff_ch3 icon light_ceiling&lt;br /&gt;
 attr Sonoff_ch3 publishSet ON OFF cmnd/sonoffch4/POWER3/set&lt;br /&gt;
 attr Sonoff_ch3 stateFormat Power&lt;br /&gt;
 attr Sonoff_ch3 subscribeReading_Power tele/sonoffch4/POWER3&lt;br /&gt;
 attr Sonoff_ch3 subscribeReading_state cmnd/sonoffch4/POWER3/set&lt;br /&gt;
 attr Sonoff_ch3 webCmd Ein:Aus&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_ch4 MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_ch4 IODev myBroker&lt;br /&gt;
 attr Sonoff_ch4 alias Sonoff CH4&lt;br /&gt;
 attr Sonoff_ch4 devStateIcon on:rc_GREEN:off off:rc_RED:on&lt;br /&gt;
 attr Sonoff_ch4 eventMap ON:on OFF:off ON:Ein OFF:Aus&lt;br /&gt;
 attr Sonoff_ch4 group Toröffner&lt;br /&gt;
 attr Sonoff_ch4 icon light_ceiling&lt;br /&gt;
 attr Sonoff_ch4 publishSet on off cmnd/sonoffch4/POWER4/set&lt;br /&gt;
 attr Sonoff_ch4 stateFormat Power&lt;br /&gt;
 attr Sonoff_ch4 subscribeReading_Power tele/sonoffch4/POWER4&lt;br /&gt;
 attr Sonoff_ch4 subscribeReading_state cmnd/sonoffch4/POWER4/set&lt;br /&gt;
 attr Sonoff_ch4 webCmd Ein:Aus&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Erweiterungen=&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sonoff Switch mit Temperatur + Luftfeuchte== &lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier geht es um nützliche Hardware Erweiterungen an den Originalmodulen!}}&lt;br /&gt;
Wozu überhaupt den Switch erweitern wenn es auch die Modelle TH10 und TH16 gibt?&lt;br /&gt;
&lt;br /&gt;
Manche Personen können dadurch dem Basteltrieb nachkommen, aber das wesentliche ist der Preis, da die Switches doch fast um die Hälfte billiger sind. Die Sensoren kosten ebenfalls kaum nennenswerte Beträge.&lt;br /&gt;
&lt;br /&gt;
Oder es hat schon jemand Switches im Einsatz und möchte jetzt zusätzlich die Temperatur erfassen!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hardware erweitern mit DHT22 ===&lt;br /&gt;
[[Datei:sonoff_sw_4.PNG|thumb|left|alt=Sonoff Switch Pinleiste mit Temperatur]]&lt;br /&gt;
Am Sonoff Switch wurde ja schon eine Stiftleiste zum Flashen eingelötet. Diese Stiftleiste bietet schon alle Anschlüsse welche für die Temperatur- und Luftfeuchtemessung benötigt werden. Am 5. Anschluß der Stifftleiste ist das Signal &amp;quot;SCL&amp;quot; (GPIO14) herausgeführt, welches für den DHT22 zur Erfassung der Messdaten benötigt wird. Der Sonsor wird mit einem einem 3-poligen Kabel (zB: ein Steckkabel für ein Breadboard oder direkt anlöten) verbunden. Damit der DHT22 korrekt funktioniert, wird ein Widerstand mit 4,7 K Ohm zwischen Vdd und Data am DHT22 zusätzlich benötigt. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_45.jpg|thumb|left|alt=AM2302 / DHT22]]&lt;br /&gt;
&lt;br /&gt;
Ansicht des DHT22 (AM2302) mit den aufgesteckten Verbindungskabeln. Von links nach rechts sind das&lt;br /&gt;
&lt;br /&gt;
 1 = VCC 3,3 V&lt;br /&gt;
 2 = Data&lt;br /&gt;
 3 = nc (nicht belegt)&lt;br /&gt;
 4 = GND&lt;br /&gt;
&lt;br /&gt;
Pin1 (VCC) des DHT22 muss also auf Pin1 der Stiftleiste, Pin2 (Data) auf Pin5 und Pin4 (GND) auf Pin4. &lt;br /&gt;
Pin2 und Pin1 soll hier noch der Widerstand aufgelötet werden.&lt;br /&gt;
&lt;br /&gt;
 1 ------- 1 (VDD)&lt;br /&gt;
 2 ------- 5 (GPIO14)&lt;br /&gt;
 3&lt;br /&gt;
 4 ------- 4 (GND)&lt;br /&gt;
 DHT22  Stiftleiste&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_44.jpg|thumb|left|alt=umgebautes Modul]]&lt;br /&gt;
Diese Darstellung zeigt das umgebaute und bereits verschlossene Modul. Auf der Seite des Tasters (bitte nur hier, da auf der anderen Seite die 230 V verlaufen und neben der Lebensgefahr auch den Sensor beeinflussen) ist hier einfach mit einer Eisensäge ein Schlitz eingesägt, der dient in diesem Falle als Kabeldurchführung. Ein Schlitz ist besser als ein Loch, da der Oberteil des Gehäuses sich leichter aufsetzen läßt. Wer ein längeres Kabel benötigt, kann natürlich auch ein 3-poliges Telefonkabel (oder Mikrokabel oder sonstiges) verwenden. Der Sensor sollte etwas Abstand zum Gehäuse haben, da dieses auch eine Eigenerwärmung hat. Wer es ganz originalgetreu lösen will, kann auch eine 3-polige Mini Buchse für Klinckenstecker (3,5mm) einbauen so wie sie am TH10/16 vorhanden ist.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Software anpassen am Beispiel MQTT ===&lt;br /&gt;
[[Datei:sonoff_sw_40.jpg|thumb|left|alt=Sonoff MQTT]]&lt;br /&gt;
&lt;br /&gt;
Die richtige Auswahl des Sensors und des verwendeten GPIO erfolgt im WEBIF des Modules und wird seit Tasmota nur mehr dort eingestellt. Eventuell sollte das aktuell verwendete [https://github.com/ddtlabs/expandJSON/ JSON Filter] geändert/erweitert werde (siehe beim Modul POW).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Software Anpassung DHT22 in FHEM ===&lt;br /&gt;
[[Datei:sonoff_sw_41.jpg|thumb|left|alt=umgebautes Modul]]&lt;br /&gt;
&lt;br /&gt;
Links in der Hardcopy sind die Readings die nach der Anpassung von FHEM (Broker) befüllt werden sollten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ### Temperatur und Luftfeuchte vom Sonoff Switch ###&lt;br /&gt;
 define Sonoff_Temp MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Temp IODev myBroker&lt;br /&gt;
 attr Sonoff_Temp icon temperature_humidity&lt;br /&gt;
 attr Sonoff_Temp room MQTT&lt;br /&gt;
 attr Sonoff_Temp stateFormat {sprintf(&amp;quot;Temperatur: %.1f Grad Feuchte: %.1f &amp;quot;, ReadingsVal($name,&amp;quot;temperature&amp;quot;,0), ReadingsVal($name,&amp;quot;humidity&amp;quot;,0))}&lt;br /&gt;
 attr Sonoff_Temp subscribeReading_Sensor tele/sonoff/SENSOR&lt;br /&gt;
Hier die zusätzliche Erweiterung um die Temperatur und die Luftfeuchte in FHEM. Der in der Topic verwendete Name &amp;quot;sonoff&amp;quot; muss natürlich der Einstellung in der Software am Switch entsprechen. Bei Verwendung mehrerer Switches muss natürlich auch der Name bei jedem geändert werden.&lt;br /&gt;
&lt;br /&gt;
Als Regexp für JSON kann dieser Filter eingesezt werden.&lt;br /&gt;
 define ej3 expandJSON .*\.SEN\..*:.*:.{.*} &lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Logfile für die Temperatur ===&lt;br /&gt;
 define SVG_FileLog_Sonoff_Temp SVG myDbLog:SVG_FileLog_Sonoff_Temp:HISTORY&lt;br /&gt;
 attr SVG_FileLog_Sonoff_Temp room MQTT&lt;br /&gt;
&lt;br /&gt;
Und schließlich fehlt noch das Logfile, damit der Temperaturverlauf auch in schönen Plots dargestellt werden kann.&lt;br /&gt;
Das hier verwendete Beispiel funktioniert nur mit einer DbLog.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Switch als Thermostat verwenden mit MQTT== &lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_55.jpg|thumb|left|alt=Thermostat]]&lt;br /&gt;
Mit diesem einfachen Beispiel wird ein Pelett Ofen mit einem externen Thermostat (sonoff Switch oder TH10/16) gesteuert. Zum besseren Überblick wird die Steuerung in einzelne Module getrennt, es könnte aber auch einiges zu einer einzigen Definition zusammen gefasst werden. Der Thermostat könnte auch als Frostwächter benutzt werden und ein anderes Heizgerät steuern.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 ###################################&lt;br /&gt;
 ### Sonoff Thermostat Regelung ####&lt;br /&gt;
 ###################################&lt;br /&gt;
 define Sonoff_dht MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_dht IODev myBroker&lt;br /&gt;
 attr Sonoff_dht alias Raumtemperatur&lt;br /&gt;
 attr Sonoff_dht group Thermostat&lt;br /&gt;
 attr Sonoff_dht icon temperature_humidity&lt;br /&gt;
 attr Sonoff_dht publishSet ON OFF cmnd/sonoff_dht/POWER/set&lt;br /&gt;
 attr Sonoff_dht room _Sonoff&lt;br /&gt;
 attr Sonoff_dht stateFormat {sprintf(&amp;quot;Temperatur: %.1f Grad Feuchte: %.1f &amp;quot;, ReadingsVal($name,&amp;quot;temperature&amp;quot;,0),  ReadingsVal($name,&amp;quot;humidity&amp;quot;,0))}&lt;br /&gt;
 attr Sonoff_dht subscribeReading_Sensor tele/sonoff_dht/SENSOR&lt;br /&gt;
 attr Sonoff_dht subscribeReading_state cmnd/sonoff_dht/POWER/set&lt;br /&gt;
FHEM Definition zur Erfassung der Temperatur und der Luftfeuchte. Damit dieses Beispiel funktioniert, ist am Sonoff Modul die Topic &amp;quot;&#039;&#039;&#039;sonoff_dht&#039;&#039;&#039;&amp;quot; zu setzen. Dieser Temperaturwert dient dem Thermostat als ISTWert.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Sw MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Sw IODev myBroker&lt;br /&gt;
 attr Sonoff_Sw alias Pellets Ofen&lt;br /&gt;
 attr Sonoff_Sw devStateIcon on:rc_GREEN:off off:rc_RED:on&lt;br /&gt;
 attr Sonoff_Sw eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_Sw group Thermostat&lt;br /&gt;
 attr Sonoff_Sw icon sani_boiler_temp&lt;br /&gt;
 attr Sonoff_Sw publishSet ON OFF cmnd/sonoff_dht/POWER/set&lt;br /&gt;
 attr Sonoff_Sw room _Sonoff&lt;br /&gt;
 attr Sonoff_Sw stateFormat Licht&lt;br /&gt;
 attr Sonoff_Sw subscribeReading_Licht tele/sonoff_dht/POWER&lt;br /&gt;
 attr Sonoff_Sw subscribeReading_state cmnd/sonoff_dht/POWER/set&lt;br /&gt;
 attr Sonoff_Sw webCmd ON:OFF&lt;br /&gt;
FHEM Definition zum Absetzen der Befehle für das Relais (Thermostat) Ein- / Aus. Wenn das zu steuernde Geräte einen potentialfreien Thermostatanschluß benötigt (in den meisten Fällen), muss noch ein Relais dazwischen geschaltet werden um die Trennung der Netzspannung zu gewährleisten.&lt;br /&gt;
&lt;br /&gt;
 define ThermostatPellets dummy&lt;br /&gt;
 attr ThermostatPellets alias Pellets Ofen Sollwert&lt;br /&gt;
 attr ThermostatPellets group Thermostat&lt;br /&gt;
 attr ThermostatPellets icon temp_control&lt;br /&gt;
 attr ThermostatPellets room _Sonoff&lt;br /&gt;
 attr ThermostatPellets setList state:0,5,10,12,13,14,15,16,17,17.5,18,18.5,19,19.5,20,20.5,21,21.5,22,23,24,25,26,27&lt;br /&gt;
 attr ThermostatPellets webCmd state&lt;br /&gt;
Die Sollwertvorgabe für das Thermostat durch einen Dummy, damit können die gewünschten Temperaturen eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
 ### sofort ausführen wenn neuer Sollwert eingestellt wird ###&lt;br /&gt;
 define Thermostat_on_notify notify ThermostatPellets IF (ReadingsVal(&amp;quot;Sonoff_Sw&amp;quot;,&amp;quot;state&amp;quot;,0) eq &amp;quot;OFF&amp;quot; &amp;amp;&amp;amp; (ReadingsVal(&amp;quot;Sonoff_dht&amp;quot;,&amp;quot;temperature&amp;quot;,0) &amp;lt;= Value(&amp;quot;ThermostatPellets&amp;quot;))) (set Sonoff_Sw ON)&lt;br /&gt;
 define Thermostat_off_notify notify ThermostatPellets IF (ReadingsVal(&amp;quot;Sonoff_Sw&amp;quot;,&amp;quot;state&amp;quot;,0) eq &amp;quot;ON&amp;quot; &amp;amp;&amp;amp; (ReadingsVal(&amp;quot;Sonoff_dht&amp;quot;,&amp;quot;temperature&amp;quot;,0) &amp;gt; Value(&amp;quot;ThermostatPellets&amp;quot;))) (set Sonoff_Sw OFF)&lt;br /&gt;
Mit einem notify wird die manuelle Änderung des Sollwertes überwacht und sofort reagiert.&lt;br /&gt;
&lt;br /&gt;
 ## zyklisch prüfen ob Sollwert erreicht wurde ###&lt;br /&gt;
 define Thermostat_on at +*00:15:00 IF (ReadingsVal(&amp;quot;Sonoff_Sw&amp;quot;,&amp;quot;Licht&amp;quot;,0) eq &amp;quot;OFF&amp;quot; &amp;amp;&amp;amp; (ReadingsVal(&amp;quot;Sonoff_dht&amp;quot;,&amp;quot;temperature&amp;quot;,0) &amp;lt;= Value(&amp;quot;ThermostatPellets&amp;quot;))) (set Sonoff_Sw ON)&lt;br /&gt;
 define Thermostat_off at +*00:15:00 IF (Value(&amp;quot;Sonoff_Sw&amp;quot;) eq &amp;quot;ON&amp;quot; &amp;amp;&amp;amp; (ReadingsVal(&amp;quot;Sonoff_dht&amp;quot;,&amp;quot;temperature&amp;quot;,0) &amp;gt; Value(&amp;quot;ThermostatPellets&amp;quot;))) (set Sonoff_Sw OFF)&lt;br /&gt;
Hier noch die Soll- Ist Wertvergleiche zur Steuerung. Es wird alle 15 Minuten überprüft ob die Temperatur erreicht ist. Bei einer trägen Heizung sollten 15 Minuten ausreichend sein, wer will kann dies aber auch alle 5 oder 10 Minuten prüfen.&lt;br /&gt;
Da des öfteren die Bezeichnungen der Readings im Sketch geändert werden ( zB:temperature ), bitte die richtige Schreibweise ( Groß/Klein ) in den Readings kontrollieren und gegebenenfalls hier anpassen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Switch mit Bewegungsmelder HC-SR501== &lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_pir_1.jpg|thumb|left|alt=Bewegungsmelder]]&lt;br /&gt;
Basierend auf dem Wall Switch MQTT Sketch von Arends wurde hier ein Sonoff BASIC + PIR HC-SR501 in eine größere Verteilerdose eingebaut, der Sonoff wurde dabei etwas gekürzt. Die Bewegungsmelder sind ab etwa 70 Cent erhältlich.&lt;br /&gt;
&lt;br /&gt;
Der Sketch kann auch den Blink Modus. Damit kann man im Alarmfall z.B. Alle Strahler rings ums Haus blinken lassen.&lt;br /&gt;
&lt;br /&gt;
Mehr dazu kann hier im [https://forum.fhem.de/index.php/topic,63824.0.html Forum]im Diskussionsthread nachgelesen werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_pir_2.jpg|thumb|left|alt=Bewegungsmelder]]&lt;br /&gt;
Ein Beispiel wir der Bewegungsmelder in der Feuchtraumdose montiert werden kann. Wird der Bewegungsmelder abgesetzt vom Switch montiert, ist darauf zu achten das die Kabel nicht zu lange werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
===Spannungsversorgung des HC-SR501===&lt;br /&gt;
[[Datei:sonoff_pir_4.jpg|thumb|left|alt=5V für Bewegungsmelder]]&lt;br /&gt;
Der HC-SR501 wird vom Sonoff versorgt, wobei hier die 3,3 V nicht immer ausreichen. Es ist deshalb am HC-SR501 eine Diode zu überbrücken, dann reichen die 3,3V vom Sonoff. Es können aber auch am Sonoff die 5V angezapft werden. Hier im Bild dargestellt wo die 5V angezapft werden können.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_pir_5.jpg|thumb|left|alt=3,3V für Bewegungsmelder]]&lt;br /&gt;
Hier eine kleine Übersicht der wichtigsten Teile und deren Platzierung am HC-SR501. &lt;br /&gt;
Den PIR kann man auch mit 3,3V betreiben wenn man die Diode am Eingang nach Vcc überbrückt, dann reicht die Spannung für einen reibungslosen Betrieb völlig aus. Dies gilt für den HC-SR501, wird ein anderer PIR verwendet muss man nachschauen ob das auch möglich ist, ansonsten die 5V Variante wählen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===Einbindung des HC-SR501 in FHEM===&lt;br /&gt;
 # ------------- Sonoff_pir mit Bewegungsmelder ---------------&lt;br /&gt;
 define Sonoff_pir MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_pir IODev myBroker&lt;br /&gt;
 attr Sonoff_pir eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_pir group Sonoff&lt;br /&gt;
 attr Sonoff_pir icon hue_filled_br30&lt;br /&gt;
 attr Sonoff_pir publishSet ON OFF cmnd/sonoff_pir/POWER/set&lt;br /&gt;
 attr Sonoff_pir room MQTT&lt;br /&gt;
 attr Sonoff_pir stateFormat Licht&lt;br /&gt;
 attr Sonoff_pir subscribeReading_Licht stat/sonoff_pir/POWER&lt;br /&gt;
 attr Sonoff_pir subscribeReading_state cmnd/sonoff_pir/POWER/set&lt;br /&gt;
 attr Sonoff_pir webCmd :&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel wie der Sonoff Switch in FHEM eingebunden wird. Wenn im Sketch der Prefix von stat auf tele geändert wurde, ist dies auch hier durchzuführen ( subscribeReading_Licht tele/sonoff_pir/POWER ), ansonsten bleibt es so wie im Beispiel. Getestet wurde dieses Beispiel mit Version 3.1.6. Die Topic sollte auf den Namen &amp;quot;sonoff_pir&amp;quot; eingestellt werden. Bei anderen Namen ist dies entsprechend in FHEM anzupassen. &lt;br /&gt;
&lt;br /&gt;
Mit dem Kommando &#039;&#039;&#039;BUTTONTOPIC Alarm_SO2&#039;&#039;&#039; ( direkt im Webinterface des Sonoff ) wird der Wall Switch GPIO14 vom Sonoff entkoppelt und somit sendet der Bewegungsmelder direkt an FHEM --&amp;gt; Motion_pir MQTT_DEVICE&lt;br /&gt;
&lt;br /&gt;
Es sollte auch unbedingt kontrolliert werden, wie die Ausgabe des Alarmes in der Console erfolgt. Erscheint hier die Meldung &amp;quot;cmnd/Alarm_SO2/POWER = TOGGLE&amp;quot; dann muss mit dem Kommando &amp;quot;&#039;&#039;&#039;switchmode 1&#039;&#039;&#039;&amp;quot; das Ausgabeformat umgeschaltet werden, erst dann kommt das gewünschte Format &amp;quot;On&amp;quot; und &amp;quot;OFF&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 # ------------------ Motion_pir MQTT_DEVICE -----------------&lt;br /&gt;
 define Motion_pir MQTT_DEVICE&lt;br /&gt;
 attr Motion_pir IODev myBroker&lt;br /&gt;
 attr Motion_pir devStateIcon on:on-for-timer off:off&lt;br /&gt;
 attr Motion_pir eventMap ON:on OFF:off&lt;br /&gt;
 attr Motion_pir group Sonoff&lt;br /&gt;
 attr Motion_pir icon people_sensor&lt;br /&gt;
 attr Motion_pir room MQTT&lt;br /&gt;
 attr Motion_pir stateFormat Alarm&lt;br /&gt;
 attr Motion_pir subscribeReading_Alarm cmnd/Alarm_SO2/POWER&lt;br /&gt;
Die Motion_pir dient nun zur eigentlichen Einschaltung des Lichtes und sendet das Kommando &#039;&#039;&#039;cmnd/Alarm_SO2/POWER&#039;&#039;&#039; an den entkopellten GPIO 14 des Switch.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # ------------------ DoIf zur Motion Abfrage -----------------&lt;br /&gt;
 define di_Sonoff_pir_Alarm DOIF ([Motion_pir:&amp;quot;on&amp;quot;] and [Tag_Nacht:twilight_weather] &amp;lt; 35) (set Sonoff_pir on) DOELSEIF ([Motion_pir:&amp;quot;off&amp;quot;] and [Tag_Nacht:twilight_weather] &amp;lt; 35) (set Sonoff_pir off)&lt;br /&gt;
 attr di_Sonoff_pir_Alarm comment Abhängig von Helligkeitssensor wird nachts,bei Bewegung das Licht eingeschaltet!&lt;br /&gt;
 attr di_Sonoff_pir_Alarm group Sonoff&lt;br /&gt;
 attr di_Sonoff_pir_Alarm room MQTT&lt;br /&gt;
Zusätzlich kann nun mit einem &#039;&#039;&#039;Doif&#039;&#039;&#039; verknüpft werden um das Ganze mit Tag_Nacht:twilight_weather dann in Abhängigkeit der Helligkeit zu schalten. Selbstverständlich kann jede andere Quelle mit einem Helligkeitswert verwendet werden.&lt;br /&gt;
&lt;br /&gt;
===Alarmausgabe über Grouptopic===&lt;br /&gt;
 # ------------------------ Sonoffs Group ----------------------&lt;br /&gt;
 define Sonoffs MQTT_DEVICE&lt;br /&gt;
 attr Sonoffs IODev myBroker&lt;br /&gt;
 attr Sonoffs eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoffs group Sonoff&lt;br /&gt;
 attr Sonoffs icon hue_filled_br30&lt;br /&gt;
 attr Sonoffs publishSet ON OFF cmnd/sonoffs/POWER/set&lt;br /&gt;
 attr Sonoffs room MQTT&lt;br /&gt;
 attr Sonoffs stateFormat state&lt;br /&gt;
 attr Sonoffs subscribeReading_Licht stat/sonoffs/POWER&lt;br /&gt;
 attr Sonoffs subscribeReading_state cmnd/sonoffs/POWER/set&lt;br /&gt;
Wer möchte kann auch mit der Group Topic mehrere Switches mit Bewegungsmelder zusammenfassen und alle Lampen im Alarmfall gemeinsam in den Blinkmodus schalten. cmnd/sonoffs ist das Kommando für die Group Topic, sofern diese vom User nicht verändert wurde.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Switch als IR-Sender verwenden == &lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_ir_1.jpg|thumb|left|alt=IR]]&lt;br /&gt;
Mit einem normalen Sonoff Basic Modul kann dies zu einer IR Fernbedienung hochgerüstet werden.&lt;br /&gt;
&lt;br /&gt;
Der einfache Schaltplan ist [https://raw.githubusercontent.com/altelch/SonoffIR/master/SonoffIR-Schematics.png hier] zu finden und der Nachbau ist sehr einfach. Man kann aber auch aus einer alten FB die IR-Diode ausbauen und zusammen schalten. Ein kleines Howto ist in [https://github.com/altelch/SonoffIR diesem Wiki] auf Github zu finden.&lt;br /&gt;
&lt;br /&gt;
Verwendet wird dazu der Arends Sketch.&lt;br /&gt;
&lt;br /&gt;
Als erstes sucht man sich auf [http://lirc.sourceforge.net/remotes/ LIRC]die entsprechenden FB-Codes, im Beispiel hier für einen Samsung TV 55&amp;quot; Curved UHD HU8580. Die FB ist zwar nicht exakt dieselbe, aber die Befehle passen soweit. Im Webif des Sonoff Modules ist beim angeschlossenen GPIO der IR-Diode &amp;quot;8 IRremote&amp;quot; einzustellen.&lt;br /&gt;
&lt;br /&gt;
Link zum [https://forum.fhem.de/index.php/topic,67316.0.html Forums Thread]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Wichtig sind dabei folgende Daten:&lt;br /&gt;
 name  Samsung_BN59-00940A&lt;br /&gt;
 bits           16&lt;br /&gt;
 pre_data_bits  16&lt;br /&gt;
 pre_data       0xE0E0&lt;br /&gt;
 Power On/Off   0x40BF[/code]&lt;br /&gt;
&lt;br /&gt;
Nun stellt man sich den Sendestring zusammen:&lt;br /&gt;
 predata+Befehl =  E0E0&#039;&#039;&#039;40BF&#039;&#039;&#039; (hex) = 3772793023 (dec) und 32 Bit Datenlänge.&lt;br /&gt;
&lt;br /&gt;
 Der JSON String für den IRSend ist laut [https://github.com/arendst/Sonoff-Tasmota/wiki/Commands Arends Wiki] folgender.&lt;br /&gt;
 IRsend    | {&amp;quot;protocol&amp;quot;: &amp;quot;&amp;lt;proto&amp;gt;&amp;quot;, | Send IR remote control as JSON encapsulated command.&lt;br /&gt;
           |   &amp;quot;bits&amp;quot;: 1..32         | &amp;lt;proto&amp;gt; is NEC, SONY, RC5, RC6, DISH, JVC or SAMSUNG&lt;br /&gt;
           |   &amp;quot;data&amp;quot;: 1..(2^32)-1}  | bits are the required number of data bits.&lt;br /&gt;
           |                         | data is the data frame as 32 bit unsigned integer.&lt;br /&gt;
           |                         | See http://www.lirc.org/ for more info.&lt;br /&gt;
&lt;br /&gt;
das ergibt dann unseren Befehl für die Kommandozeile am Modul. Die Bitlänge für Pre und Data sind ebenfalls zu addieren (16 + 16 = 32 Bit) und beim Arends Sketch muss im JSON Format gesendet werden:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;irsend  {&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772793023}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
oder hier für die Kommandozeile am Broker:&lt;br /&gt;
 &#039;&#039;&#039;mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772793023}&#039;&#039;&#039;&#039;&lt;br /&gt;
TestSwitch ist hier der verwendete Name des Sonoff Moduls, wird ein anderer Name verwendet ist dieser hier anzupassen.&lt;br /&gt;
&lt;br /&gt;
Jedesmal wenn nun der Befehl gesendet wird, wird entweder Ein- oder Aus geschaltet. Die Verzögerung über Wlan ist vernachlässigbar. Ebenso können die Kanäle oder die Laustärke verstellt werden. Im Prinzip funktionieren alle Befehle die auf der FB vorhanden sind.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Sonoff Switch als IR-Sender FHEM Beispiel===&lt;br /&gt;
[[Datei:sonoff_ir_2.jpg|thumb|left|alt=IR]]&lt;br /&gt;
Hier ein Beispiel wie der Code für die Fernbedienung in Fhem eingebunden werden kann.&lt;br /&gt;
 define RC_TV remotecontrol&lt;br /&gt;
 attr RC_TV rc_iconpath icons/remotecontrol&lt;br /&gt;
 attr RC_TV rc_iconprefix black_btn_&lt;br /&gt;
 attr RC_TV room Entwicklung&lt;br /&gt;
 attr RC_TV row00 KEY_POWER:POWEROFF,:blank,:blank&lt;br /&gt;
 attr RC_TV row02 :blank,:blank,:blank&lt;br /&gt;
 attr RC_TV row03 KEY_1:1,KEY_2:2,KEY_3:3&lt;br /&gt;
 attr RC_TV row04 KEY_4:4,KEY_5:5,KEY_6:6&lt;br /&gt;
 attr RC_TV row05 KEY_7:7,KEY_8:8,KEY_9:9&lt;br /&gt;
 attr RC_TV row06 :blank,KEY_0:0,:blank&lt;br /&gt;
 attr RC_TV row07 :blank,:blank,:blank&lt;br /&gt;
 attr RC_TV row08 KEY_VOLUMEUP:UP,KEY_MUTE:MUTE,KEY_CHANNELUP:CHUP&lt;br /&gt;
 attr RC_TV row09 KEY_VOLUMEDOWN:DOWN,:blank,KEY_CHANNELDOWN:CHDOWN&lt;br /&gt;
&lt;br /&gt;
 define Samsung_TV notify RC_TV &amp;quot;/opt/fhem/ircmd.sh $EVENT&amp;quot;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
In einem externen Shell Script werden die Parameter übergeben und der Sendestring für den IRSend zusammen gestellt. Das Script ins FHEM Home Verzeichnis kopieren ( /opt/fhem ) und die Rechte auf 755 setzen.&lt;br /&gt;
[https://wiki.fhem.de/wiki/Remotecontrol Link zum Wiki] einer universellen Fernbedienung.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh -e&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_POWER&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772793023}&#039;&lt;br /&gt;
 fi&lt;br /&gt;
 # E0E0E01F   3772833823&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_VOLUMEUP&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772833823}&#039;&lt;br /&gt;
 fi&lt;br /&gt;
 # E0E0D02F   3772829743&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_VOLUMEDOWN&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772829743}&#039;&lt;br /&gt;
 fi&lt;br /&gt;
 # E0E0F00F   3772837903&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_MUTE&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772837903}&#039;&lt;br /&gt;
 fi&lt;br /&gt;
 # E0E020DF   3772784863&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_1&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772784863}&#039;&lt;br /&gt;
 fi&lt;br /&gt;
 # E0E0A05F   3772817503&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_2&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772817503}&#039;&lt;br /&gt;
 fi   &lt;br /&gt;
 # E0E0609F   3772801183&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_3&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772801183}&#039;&lt;br /&gt;
 fi &lt;br /&gt;
 # E0E010EF   3772780783&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_4&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772780783}&#039;&lt;br /&gt;
 fi &lt;br /&gt;
 # E0E0906F   3772813423&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_5&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772813423}&#039;&lt;br /&gt;
 fi &lt;br /&gt;
 # E0E050AF   3772797103&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_6&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772797103}&#039;&lt;br /&gt;
 fi &lt;br /&gt;
 # E0E030CF   3772788943&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_7&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772788943}&#039;&lt;br /&gt;
 fi&lt;br /&gt;
 # E0E0B04F   3772821583&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_8&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772821583}&#039;&lt;br /&gt;
 fi &lt;br /&gt;
 # E0E0708F   3772805263&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_9&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772805263}&#039;&lt;br /&gt;
 fi         &lt;br /&gt;
 # E0E08877   3772811383&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_0&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772811383}&#039;&lt;br /&gt;
 fi&lt;br /&gt;
 # E0E048B7   3772795063&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_CHANNELUP&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772795063}&#039;&lt;br /&gt;
 fi&lt;br /&gt;
 # E0E008F7   3772778743&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_CHANNELDOWN&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772778743}&#039;&lt;br /&gt;
 fi  &lt;br /&gt;
Das Script kann sehr leicht für jede andere FB abgeändert werden und auch noch zusätzliche Tasten eingebunden werden. Bitte nicht auf die vorangestellten Pre-Data-Bits vergessen. Auf die Verwendung des Scriptes kann auch verzichtet werden, wenn der JSON String in Fhem direkt zusammen gestellt wird. Für den Nachbau ist es aber leichter verständlicher und kann auch leicht selber an die eigene FB angepasst werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
==Sonoff Development Board==&lt;br /&gt;
[[Datei:sonoff_dev_1.jpg|thumb|left|alt=Dev. Board]]&lt;br /&gt;
Das Board kommt ohne Software und muss zunächst mit einem Sketch bespielt werden. Hier kurz beschrieben der Arends Sketch, es funktioniert aber mit ESPEasy genau so gut. &lt;br /&gt;
&lt;br /&gt;
Damit die vielen GPIO&#039;s auch nach freiem Wunsch zugeordnet werden können, müssen die erforderten Einstellungen da allerdings in der sonoff_template.h bekannt gegeben werden. Hier wurde der GPIO12 und 13 einem Relais zugeordnet. Der Rest kann dann frei im Webif konfiguriert werden (Type = User Test).&lt;br /&gt;
&lt;br /&gt;
Link zum [https://www.itead.cc/wiki/Sonoff_DEV Wiki des Herstellers]&lt;br /&gt;
&lt;br /&gt;
Link zum [https://www.itead.cc/wiki/images/3/30/01.73.02.0101_Sonoff_DEV_Schematic.pdf Schaltplan]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Anschlüsse und GPIO&#039;s am Board.&lt;br /&gt;
&lt;br /&gt;
 3V3    VDD   3.3V Power supply output  &lt;br /&gt;
 GND    GND   Power supply pin  &lt;br /&gt;
  4    GPIO4  GPIO4  &lt;br /&gt;
  5    GPIO5  GPIO5  &lt;br /&gt;
 12    GPIO12 GPIO12/HSPIQ  &lt;br /&gt;
 13    GPIO13 GPIO13/HSPID  &lt;br /&gt;
 14    GPIO14 GPIO14/HSPICLK  &lt;br /&gt;
 ADC    ADC   Detect analog input voltage（0~1V）  &lt;br /&gt;
 RX    U0RXD  Flash programming UART RX;GPIO3  &lt;br /&gt;
 TX    U0TXD  Flash programming UART TX;GPIO1;SPICS1  &lt;br /&gt;
 E-FW  GPIO0  GPIO0/SPICS2/Serial programming enable pin  &lt;br /&gt;
 RESET RESET  External reset signal(low active)  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_dev_2.jpg|thumb|left|alt=Dev. Board]]&lt;br /&gt;
hier können die wesentlichen Funktionen (Relaisfunktion oder freier GPIO) konfiguriert werden. Man zählt die GPIO&#039;s von oben nach unten und wenn einer nicht benötigt wird, wird eine 0 angegeben.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
 { &amp;quot;User Test&amp;quot;,       // Sonoff Basic User Test&lt;br /&gt;
     GPIO_KEY1,        // GPIO00 Button&lt;br /&gt;
     0,&lt;br /&gt;
     GPIO_USER,        // GPIO02 Optional sensor&lt;br /&gt;
     GPIO_USER,        // GPIO03 Serial TXD and Optional sensor&lt;br /&gt;
     GPIO_USER,        // GPIO04 Optional sensor&lt;br /&gt;
     GPIO_USER,        // GPIO05 Optional sensor&lt;br /&gt;
     0, 0, 0, 0, 0, 0,&lt;br /&gt;
     &#039;&#039;&#039;GPIO_REL2&#039;&#039;&#039;,        // GPIO12 Relay 2 (0 = Off, 1 = On)&lt;br /&gt;
     &#039;&#039;&#039;GPIO_REL1&#039;&#039;&#039;,        // GPIO13 Relay 1 (0 = Off, 1 = On)&lt;br /&gt;
     GPIO_USER,        // GPIO14 Optional sensor&lt;br /&gt;
     0, 0&lt;br /&gt;
  }&lt;br /&gt;
Hier wurde am Modul &amp;quot;&#039;&#039;&#039;User Test&#039;&#039;&#039;&amp;quot; in der Datei &amp;quot;sonoff_template.h&amp;quot; abgeändert, um 2 Relais über GIPO12 und GPIO13 ansteuern zu können. &lt;br /&gt;
&lt;br /&gt;
Gedacht ist es als Enwicklerboard, es ist aber auch genau so gut für den produktiven Einsatz geeignet, hat aber kein eingebautes Netzteil. Es ist zum flashen &#039;&#039;&#039;kein externes FTDI Modul notwendig&#039;&#039;&#039;, das hat es bereits an Board und es muss lediglich der USB Treiber für Windows installiert werden. Geflasht wird dann mit dem USB Kabel der Spannungsversorgung.&lt;br /&gt;
&lt;br /&gt;
Die 4-pol. Stecker haben das &#039;&#039;&#039;Rastermaß 2.0 mm&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
===Sonoff Dev Board Anbindung FHEM===&lt;br /&gt;
&lt;br /&gt;
je nach Anwendungszweck wird entweder ein normaler Schalter oder wie bei DHT16 beschrieben ein oder mehrere Sensoren angebunden.&lt;br /&gt;
Beim Arends Sketch ist zu beachten, dass pro Sensorgruppe nur ein Sensor angeschlossen werden kann.&lt;br /&gt;
&lt;br /&gt;
 •DHT11 Temperature and Humidity -  DHT11 (1)  in group 1&lt;br /&gt;
 •DHT21 Temperature and Humidity -  AM2301 (2) in group 1&lt;br /&gt;
 •AM2301 Temperature and Humidity - AM2301 (2) in group 1&lt;br /&gt;
 •DHT22 Temperature and Humidity -  DHT22 (3)  in group 1&lt;br /&gt;
 •AM2302 Temperature and Humidity - DHT22 (3)  in group 1&lt;br /&gt;
 •AM2321 Temperature and Humidity - DHT22 (3)  in group 1&lt;br /&gt;
 •DS18B20 Temperature           - DS18x20 (4)  in group 2&lt;br /&gt;
 Enable option  USE_DS18x20  in  user_config.h  for multiple sensors using OneWire library&lt;br /&gt;
 •DS18S20 Temperature          -  DS18x20 (4)  in group 2&lt;br /&gt;
 Enable option  USE_DS18x20  in  user_config.h  using OneWire library&lt;br /&gt;
 •External switch               -  Switch (9) &lt;br /&gt;
 Use  SwitchMode  to tune it&#039;s behaviour&lt;br /&gt;
 •HC-SR501 PIR Motion Detection -  Switch (9) &lt;br /&gt;
 Use  SwitchMode  to tune it&#039;s behaviour&lt;br /&gt;
Beispiel: 2 DHT22 funktionieren nicht, aber ein DHT22 und ein DS18b20 schon. Wer mehrere Sensoren benötigt, muss auf ESPEasy ausweichen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:IP Components]]&lt;br /&gt;
--[[Benutzer:Reinhart|Reinhart]] ([[Benutzer Diskussion:Reinhart|Diskussion]]) 23. Feb. 2017 (CET)&lt;/div&gt;</summary>
		<author><name>Reinhart</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Sonoff&amp;diff=20202</id>
		<title>Sonoff</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Sonoff&amp;diff=20202"/>
		<updated>2017-02-23T15:00:40Z</updated>

		<summary type="html">&lt;p&gt;Reinhart: Dev Board hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=Ankopplung der Sonoff Module an Fhem&lt;br /&gt;
|ModType=&lt;br /&gt;
|ModForumArea=ESP8266&lt;br /&gt;
|ModTechName=Sonoff&lt;br /&gt;
|ModOwner=Reinhart &lt;br /&gt;
}}&lt;br /&gt;
&#039;&#039;&#039;SONOFF, dieser Artikel beschreibt die Ankopplung der kostengünstigen Sonoff Module an FHEM mit ESPEasy oder Arends MQTT.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Seit einiger Zeit werden von der [https://www.itead.cc/sonoff-wifi-wireless-switch.html Fa. Itead] kostengünstige &amp;quot;sonoff&amp;quot; Produkte angeboten die glücklicherweise den [http://dl.itead.cc/IM151116002/0A-ESP8266_Specifications_v4.1.pdf ESP8266 Chip] On Board haben und somit die ideale Grundlage für [http://www.esp8266.nu/index.php/Main_Page ESPEasy] und für [https://forum.fhem.de/index.php/board,46.0.html FHEM] darstellen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nützliche Links zum Hersteller:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://www.itead.cc/blog/user-guide-for-sonoff-slampher User Manual von Itead]&lt;br /&gt;
&lt;br /&gt;
[https://www.itead.cc/wiki/images/6/6b/Sonoff_schmatic.pdf Sonoff Schaltplan]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Hardware=&lt;br /&gt;
&#039;&#039;&#039;Bitte unbedingt die elektrotechnischen Sicherheitsrichtlinien beachten und einhalten!&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_sw_15.jpg|thumb|left|alt=Warnung Netzspannung]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Achtung: An dem Modul liegt Netzspannung an die lebensgefährlich ist. Es dürfen nur entsprechend ausgebildete Personen dieses Modul in Betrieb nehmen. Zum Umbau und zur Softwareaktualisierung darf keine Netzspannung angeschlossen sein&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Wie gefährlich das hantieren mit Netzspannung sein kann, wird hier am Beispiel eines [http://mysku.ru/blog/china-stores/45762.html russischen Anwenders] gezeigt, der hat beim Flashen die Netzspannung am Modul gelassen und somit über die Verbindung mit dem Netzteil des Laptop lebensgefährliche Spannung auf die FTDI Schnittstelle gebracht. Das Modul ist dabei abgeraucht!&lt;br /&gt;
&lt;br /&gt;
==Modelle==&lt;br /&gt;
&lt;br /&gt;
===Produktübersichtsliste sonoff===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:right&amp;quot;&lt;br /&gt;
! Produkt Name !! Beschreibung !! Spannungsversorgung !!  Imax !! Pmax !! Frequenz !! Schaltplan !! Link&lt;br /&gt;
|-&lt;br /&gt;
| Sonoff || Wireless control switch || 90~250V AC || 10A || 2200W || 2.4Ghz || [http://wiki.iteadstudio.com/Sonoff Plan] || [https://www.itead.cc/smart-home/sonoff-wifi-wireless-switch.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| Sonoff RF || 433 RF remote || 90~250V AC || 10A || 2200W || 2.4Ghz || [http://wiki.iteadstudio.com/Sonoff_RF Plan] || [https://www.itead.cc/smart-home/im151116003.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| Sonoff SV || Low voltage Input || 5~24V DC || 10A || 240W DC || 2.4Ghz || [http://wiki.iteadstudio.com/Sonoff_SV Plan] || [https://www.itead.cc/smart-home/sonoff-sv.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| Sonoff TH10/TH16 || Monitor and set Temp.&amp;amp;Hum. ||  90~250V AC || 10A/16A || 2200W(10A)/3500W(16A)	 || 2.4Ghz || [http://wiki.iteadstudio.com/Sonoff_TH_10/16 Plan] || [https://www.itead.cc/smart-home/sonoff-th.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Sonoff Dual || Remote control 2 devices ||  90~250V AC || 16A || 3500W || 2.4Ghz || [https://www.itead.cc/wiki/Sonoff_Dual Plan] || [https://www.itead.cc/sonoff-dual.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Sonoff Pow || Report power &amp;amp;power usage ||  90~250V AC || 16A || 3500W || 2.4Ghz || [https://www.itead.cc/wiki/Sonoff_Pow Plan] || [https://www.itead.cc/sonoff-pow.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Sonoff LED || WiFi Control Dimming LED ||  180~265V AC || 0.3-0.6A || 42W || 2.4Ghz ||  kein || [https://www.itead.cc/sonoff-led.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Sonoff Touch || WiFi wall touch switch ||  90~250V AC || 2A || 400W || 2.4Ghz || kein || [https://www.itead.cc/sonoff-touch.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Slampher || Wireless control light holder ||  90~250V AC || 2A || 200W || 2.4Ghz || [http://wiki.iteadstudio.com/Slampher Plan] || [https://www.itead.cc/smart-home/slampher-wifi-wireless-light-holder.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  S20 Smart Socket || Smart socket || 	90~250V AC || 10A || 2000W || 2.4Ghz || kein || [https://www.itead.cc/smart-home/smart-socket-eu.html EU-Stecker] &lt;br /&gt;
|-&lt;br /&gt;
|  iFan || Smart fan ||  185~264V AC ||﹤1A || 60W || 2.4Ghz || kein || [https://www.itead.cc/smart-home/smart-socket-eu.html EU-Stecker] &lt;br /&gt;
|-&lt;br /&gt;
| Motor/Pump Control Switch || clockwise/anticlockwise running ||  5V/7~32V DC || 10A || 50~320W || 2.4Ghz || kein || [https://www.itead.cc/smart-home/motor-reversing-wifi-wireless-switch.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| 1 Chnl Inching/self-locking Switch || Access control ||  	5V/12V DC || 10A || 50/120W || 2.4Ghz || kein || [https://www.itead.cc/smart-home/inching-self-locking-wifi-wireless-switch.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  4 Chnl Inching/self-locking/inter-locking Switch || Access control, rolling door control ||  5V/5~32V DC/90~250V AC || 10A || 50~320W/2500W || 2.4Ghz || kein || [https://www.itead.cc/ifan.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Eine Übersichtliste der verschiedenen Produkte mit technischen Kurzangaben.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Model: IM151116002: Erstes Modell===&lt;br /&gt;
[https://www.itead.cc/sonoff-wifi-wireless-switch.html Sonoff WiFi Wireless Smart Switch for MQTT COAP Smart Home]&lt;br /&gt;
[[Datei:sonoff_sw_0.jpg|thumb|left|alt=sonoff Switch]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Das sonoff Modul ist in einem zweckmäßigen und gefälligem Gehäuse verbaut!&lt;br /&gt;
&lt;br /&gt;
====Platine====&lt;br /&gt;
[[Datei:sonoff_sw_1.jpg|thumb|left|alt=sonoff Switch von vorne]]&lt;br /&gt;
&lt;br /&gt;
Die Platine ist sehr übersichtlich aufgebaut und der Hersteller hat auch alle Vorbereitungen zum Flashen einer alternativen Software vorgesehen (über serielle Schnittstelle via FTDI-Modul). Mit einer alternativen Software wie ESPEasy ist eine direkte Ankopplung des &#039;&#039;&#039;sonoff&#039;&#039;&#039; an FHEM somit ein leicht durchführbarer Vorgang.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_3.jpg|thumb|left|alt=sonoff Switch von hinten]]&lt;br /&gt;
Die stromführenden Leitungen wurden mit Lötzinn vom Hersteller verstärkt um die angegebenen Stromstärken mit geringer Hitzeentwicklung zu transportieren.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung: Bitte vor den Arbeiten kontrollieren, das an der Platine keine Netzspannung angeschlossen ist, LEBENSGEFAHR!&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Model: IM160712005: TH 10A/16A ===&lt;br /&gt;
[https://www.itead.cc/sonoff-th.html Sonoff TH 10A/16A WiFi Smart Switch]&lt;br /&gt;
&lt;br /&gt;
====TH10 / TH16 weitere GPIO zugänglich machen====&lt;br /&gt;
[[Datei:Sonoff_TH_10A-16A_kleiner.jpg|thumb|left|alt=TH10 / TH16 weitere GPIO zugänglich machen]]&lt;br /&gt;
Der Hersteller hat zwar schon Platine für eine weitere Stiftleiste vorbereitet, jedoch muss diese noch bestückt werden. Die nicht beschalteten Stifte können dann genutzt werden um die &amp;quot;verdeckten&amp;quot; GPIO zugänglich zu machen. Die Verdrahtung kann dem Bild entnommen werden.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Achtung: Bitte vor den Arbeiten kontrollieren, das an der Platine keine Netzspannung angeschlossen ist, LEBENSGEFAHR!&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Model: IM160811001: Sonoff Dual ===&lt;br /&gt;
[https://www.itead.cc/sonoff-dual.html Sonoff Dual WiFi Wireless Smart Swtich]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Model: IM160810001: Sonoff Pow ===&lt;br /&gt;
[https://www.itead.cc/sonoff-pow.html Sonoff POW WiFi Switch with Power Consumption Measurement]&lt;br /&gt;
[[Datei:sonoff_sw_30.jpg|thumb|left|alt=SONOFF POW]]Ein sehr interessantes und kostengünstiges Modul zur Messung der aktuellen Leistung. Das Modul kann via MQTT in FHEM angebunden werden.&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel zur Einbindung ist [http://www.fhemwiki.de/wiki/Sonoff#Sonoff_POW_einrichten hier unten] im Wiki beschrieben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===Model: weitere Modelle===&lt;br /&gt;
[https://www.itead.cc/search/result/?cat=&amp;amp;q=sonoff Sonoff Weitere Modelle finden sich auf der Homepage des Hersstellers]&lt;br /&gt;
&lt;br /&gt;
==Vorbereitungen zum Flashen==&lt;br /&gt;
[[Datei:sonoff_sw_2.jpg|thumb|left|alt=serielle Schnittstelle]]&lt;br /&gt;
&lt;br /&gt;
Hier auf der Platine sind die benötigten Signale für ein FTDI Modul schon vorhanden. Der quadratische Pin gleich über dem Taster ist die Spannungsversorgung zum Flashen vom FDTI von 3.3V Es muss daher unbedingt ein FTDI Modul genommen werden, dass nicht nur einen Jumper für 3.3V besitzt sondern auch die Spannung auf 3.3V herab setzt. Ist dies nicht der Fall, läuft man Gefahr das Modul unbrauchbar zu machen. Es ist daher zu empfehlen einen Spannungsteiler mit 2 Widerständen oder einen Pegelwandler zwischenschalten.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Signale der Schnittstelle==&lt;br /&gt;
von oben nach unten auf der Steckerleiste des sonoff U4 (Model: IM151116002).&lt;br /&gt;
&lt;br /&gt;
 Pin5 = vorbereitet für GPIO&lt;br /&gt;
 Pin4 = Masse&lt;br /&gt;
 Pin3 = TxD&lt;br /&gt;
 Pin2 = RxD&lt;br /&gt;
 Pin1 = 3.3V&lt;br /&gt;
&lt;br /&gt;
Siehe dazu auch den [https://forum.fhem.de/index.php/topic,55036.0.html Link aus dem Forum]:&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Platine mit Stiftleiste bestücken==&lt;br /&gt;
[[Datei:sonoff_sw_4.jpg|thumb|left|alt=Platine mit Stiftleiste bestücken]]&lt;br /&gt;
Der Hersteller hat zwar schon die Platine vorbereitet, jedoch muss sie noch mit einer Stiftleiste bestückt werden um das FTDI Modul bequem verbinden zu können. Nachdem einmal ESPEasy geflasht worden ist, kann es in Zukunft via WEB (OTA) geflasht werden und die Stiftleiste ist dann nicht mehr erforderlich. Aufgrund der geringen Kosten fällt dies jedoch nicht ins Gewicht.&amp;lt;br&amp;gt;&lt;br /&gt;
Für die Module TH10/TH16 sind die Lötpunkte für die Stiftleiste schon beschriftet. Die Stiftleiste selber muss allerdings auch nachgerüstet werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Achtung&#039;&#039;&#039;: Bitte vor den Arbeiten kontrollieren, das an der Platine keine Netzspannung angeschlossen ist, LEBENSGEFAHR!&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Software=&lt;br /&gt;
==MQTT und TASMOTA==&lt;br /&gt;
Der Autor Arends hat die Version Sonoff-MQTT-OTA-Arduino nun eingestellt und die Version 3.2.13 (Ende Jänner 2017)dürfte wohl die letzte dieser Generation gewesen sein. Mit der Einstellung dieser Version wurde zwar der Nachfolger &#039;&#039;&#039;TASMOTA&#039;&#039;&#039; erschaffen, aber leider nun auf das &#039;&#039;&#039;Messageformat LEGACY&#039;&#039;&#039; gänzlich verzichtet was bei der Auswertung der Messdaten in Fhem doch einige Probleme mit sich bringt, da der verwendete JSON String nun zusätzlich gefiltert werden muss.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Es gibt aber bereits sehr gute Lösungswege um dieses Problem zu beheben und somit spricht dem neuen Ausgabeformat nichts dagegen!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://forum.fhem.de/index.php/topic,66761.0.html in diesem Thread] wurde ein &#039;&#039;&#039;JSON to Reading Modul&#039;&#039;&#039; vorgestellt, dass den JSON String analysiert und alle darin enthaltenen Daten in Readings kopiert. Die Readings werden dabei in FHEM automatisch angelegt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Link: [https://github.com/arendst/Sonoff-Tasmota Tasmota]&lt;br /&gt;
&lt;br /&gt;
Link alte Software: [https://github.com/arendst/Sonoff-MQTT-OTA-Arduino Sonoff-MQTT-OTA-Arduino]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Alle hier im Wiki verwendeten Beispiele und deren Beschreibung sind nun für die neue Tasmota Version ausgelegt. Da in Tasmota fast alles im WEBIF konfiguriert werden kann, entfallen daher sinngemäß einige hier im Wiki erklärten Definitionen, speziell in der &amp;quot;user_config.h&amp;quot;.&lt;br /&gt;
Trotz diesem Komfort müssen die Einstellungen aber nun im WEBIF vorgenommen werden, die wohl wichtigste ist die Auswahl der verwendeten Hardware (Sonoff POW etc.).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ESPEasy flashen==&lt;br /&gt;
[[Datei:sonoff_sw_6.jpg|thumb|left|alt=sonoff mit angestecktem FDTI Adapter]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier geht es ausschließlich um die Software ESPEasy an den sonoff Modulen! }}&lt;br /&gt;
Die Spannungsversorgung des Sonoff Moduls wird hier vom FTDI Konverter mit 3.3V über die Verbindungskabel zum Pfostenstecker durchgeführt. &lt;br /&gt;
&lt;br /&gt;
Der FTDI Adapter wird dann mit der USB Schnittstelle mit dem Computer verbunden.&lt;br /&gt;
&lt;br /&gt;
Zum compilieren wird in der Arduino Umgebung auch die ArduinoJson Library 5.6.4+ benötigt. Eine genaue Anleitung kann [https://forum.fhem.de/index.php/topic,55728.msg473220.html#msg473220 hier] nachgelesen werden. Es sollte stest die aktuelle Version der Arduino Umgebung verwendet werden, bzw. die Librarys auf Letztstand gehalten werden. &lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===mit Arduino compilieren===&lt;br /&gt;
[[Datei:sonoff_sw_10.jpg|thumb|left|alt=Einstellung Arduino IDE]]&lt;br /&gt;
Wer selber mit der Arduino IDE compilieren will bitte folgende Einstellungen beachten. Die anschließenden Arbeiten sind dann gleich wie bei Abschnitt &#039;&#039;&#039;fertige Binary&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Unbedingt die neueste [https://github.com/bblanchon/ArduinoJson Arduino Json Library] benutzen (siehe oben)! Es gibt zwar keine Compilerfehler, aber es kommt anschließend zu Fehlfunktionen in der ESP Bridge!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 Generic ESP8266 Module&lt;br /&gt;
 Flash Mode: QIO&lt;br /&gt;
 Flash Frequency: 40 MHz&lt;br /&gt;
 CPU Frequency: 80 MHz&lt;br /&gt;
 Flash Size: 1M (64K SPIFFS)&lt;br /&gt;
 Debug Port: disabled&lt;br /&gt;
 Debug Level: none&lt;br /&gt;
 Reset Mode: ck&lt;br /&gt;
 Upload Speed: 115200&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===fertige Binary flashen===&lt;br /&gt;
[[Datei:sonoff_sw_7.jpg|thumb|left|alt=NodeMCU Firmware Flasher]]&lt;br /&gt;
Es empfiehlt sich eine fertige Binary von ESPEasy aufzuspielen. In diesem Wiki wurde R140 verwendet.&lt;br /&gt;
&lt;br /&gt;
Siehe dazu auch den [http://www.esp8266.nu/index.php/Main_Page Link von ESPEasy] und das [https://learn.adafruit.com/building-and-running-micropython-on-the-esp8266/flash-firmware Handbuch] für den Flasher.&lt;br /&gt;
&lt;br /&gt;
In manchen Versionen von ESPEasy (zB.R120) ist auch ein Flasher beigelegt, welcher zwar keine grafische Oberfläche hat aber hervorragend funktioniert. Wenn andere versagen, geht es mit diesem Flasher immer noch, einfach probieren!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 Netzspannung darf &#039;NICHT&#039; angeschlossen sein!!!&lt;br /&gt;
 Taster am Sonoff gedrückt halten&lt;br /&gt;
 FTDI Adapter verbinden&lt;br /&gt;
 Taster am Sonoff los lassen&lt;br /&gt;
 Sketch übertragen&lt;br /&gt;
 Sonoff vom FTDI trennen&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Wenn einmal die Firmware auf das sonoff Modul geflasht worden ist, kann in Zukunft ESPEasy direkt unter Tools via HTTP dies durchführen. Es muss dazu kein FTDI Konverter mehr verwendet werden.&lt;br /&gt;
&lt;br /&gt;
==ESPEasy==&lt;br /&gt;
[[Datei:sonoff_sw_11.jpg|thumb|left|alt=ESPEasy Devices]]&lt;br /&gt;
Wenn das Modul fertig geflasht ist und die Verbindung zum Modul hergestellt ist, können die Einstellungen in ESPEasy durchgeführt werden.&lt;br /&gt;
Dazu am Webinterface anmelden und zunächst die zwei Devices definieren.&lt;br /&gt;
&lt;br /&gt;
Der Hersteller hat für das &#039;&#039;&#039;Relaise GPIO 12&#039;&#039;&#039; und für die &#039;&#039;&#039;grüne Led GPIO 13&#039;&#039;&#039; vorgesehen. Der &#039;&#039;&#039;Taster ist an GPIO 0&#039;&#039;&#039; angeschlossen.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Device Schalter===&lt;br /&gt;
[[Datei:sonoff_sw_12.jpg|thumb|left|alt=Device Relais]]&lt;br /&gt;
Bei den Devices sollten die hier dargestellte Einstellungen beachtet werden. Der Switch (PUMP) sollte auf Input gestellt werden, sodass die anschließenden und benötigten Rules aktiviert werden können.&lt;br /&gt;
&lt;br /&gt;
Da beide Devicenamen gleich benannt wurden (PUMP) wird in FHEM nur ein Device angelegt! Die dazugehörenden Valuenames sind unterschiedlich (Relay, Key).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Device Taster===&lt;br /&gt;
[[Datei:sonoff_sw_13.jpg|thumb|left|alt=Device Key]]&lt;br /&gt;
Der Taste muss natürlich nur konfiguriert werden, wenn auch händisch am Modul geschaltet werden soll. Wird dies nicht benötigt, können auch die Rules geändert bzw. angepasst werden. Doch alleine zu Testzwecken ist es eine nützliche Sache.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Rules===&lt;br /&gt;
[[Datei:sonoff_sw_14.jpg|thumb|left|alt=Rules]]&lt;br /&gt;
Da das sonoff Modul auch einen eingebauten Taster hat und somit auch lokal bedient werden kann, sollte man zunächst unter &#039;&#039;&#039;Tools / Advanced das Häckchen Rules&#039;&#039;&#039; aktivieren, erst dann wird der Tab sichtbar und es können Rules erstellt werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 on PUMP#Key do&lt;br /&gt;
  if [PUMP#Relay]=1&lt;br /&gt;
    gpio,12,0&lt;br /&gt;
  else&lt;br /&gt;
    gpio,12,1&lt;br /&gt;
  endif&lt;br /&gt;
 endon&lt;br /&gt;
 on PUMP#Relay do&lt;br /&gt;
  if [PUMP#Relay]=1 &lt;br /&gt;
    gpio,13,0&lt;br /&gt;
  else&lt;br /&gt;
    gpio,13,1&lt;br /&gt;
  endif&lt;br /&gt;
 endon&lt;br /&gt;
Diese Rules ermöglichen, das bei lokaler Bedienung durch den Taster auch die &#039;&#039;&#039;Led&#039;&#039;&#039; richtig geschaltet wird.&lt;br /&gt;
Mit &#039;on PUMP#Key do&#039; wird geprüft ob die Taste gedrückt ist und schaltet dann entsprechend die Led. Mit den Rules können auch Timer oder sonstige Spielereien realisiert werden. Siehe dazu das [http://www.esp8266.nu/index.php/Tutorial_Rules Tutorial] von ESPeasy.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ESPEasy in FHEM einrichten==&lt;br /&gt;
[[Datei:sonoff_sw_9.jpg|thumb|left|alt=FHEM Konfiguration]]&lt;br /&gt;
Dies ist eine einfache Darstellung wie FHEM automatisch den Device erstellt.&lt;br /&gt;
&lt;br /&gt;
Damit FHEM mit ESPEasy und dem sonoff Modul kommunizieren kann, muss in der fhem.cfg vorerst nur die espBridge mit dem hier dargestellten Eintrag aktiviert werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 define espBridge ESPEasy bridge 8383&lt;br /&gt;
Dies ist eigentlich die einzige Zeile die in fhem.cfg angelegt werden muss. Die restliche Konfiguration wird von FHEM automatisch generiert. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 ##########################################&lt;br /&gt;
 ###             ESPEASY               ####&lt;br /&gt;
 ##########################################&lt;br /&gt;
 &lt;br /&gt;
 define ESPEasy_sonoff_1_PUMP ESPEasy 10.0.0.37 80 espBridge sonoff_1_PUMP&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP IODev espBridge&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP devStateIcon on:rc_GREEN:off off:rc_RED:on absent:rc_BLUE:off gpio:rc_YELLOW:off&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP eventMap /gpio 12 on:on/gpio 12 off:off/gpio 12 gpio:off/gpio 12 output:off/&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP group ESPEasy Device&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP icon hue_filled_outlet&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP room ESPEasy&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP setState 0&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP stateFormat {ReadingsVal($name,&amp;quot;presence&amp;quot;,&amp;quot;&amp;quot;) eq &amp;quot;absent&amp;quot; ? &amp;quot;absent&amp;quot; : ReadingsVal($name,&amp;quot;Relay&amp;quot;,&amp;quot;&amp;quot;)}&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP webCmd :&lt;br /&gt;
&lt;br /&gt;
hier ein Beispiel wie es auch manuell leicht modifiziert werden kann.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_8.jpg|thumb|left|alt=sonoff Readings]]&lt;br /&gt;
&lt;br /&gt;
Die Readings werden durch die Bridge (Modul ESPEasy) automatisch angelegt.&lt;br /&gt;
&lt;br /&gt;
Es besteht hier noch genug Spielraum um zB. auch noch Temperatursensoren an das Modul anzuschließen und ebenfalls in FHEM darzustellen.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==MQTT Server einrichten==&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier geht es ausschließlich um den Sketch von Arends und MQTT an den sonoff Modulen! }}&lt;br /&gt;
Es bleibt jedem Anwender die freie Wahl ob die Kommunikation über die ESPEasy-Bridge oder MQTT erfolgen soll. MQTT ist bei der Einrichtung etwas komplexer, da hier auch auf dem Server der Broker installiert werden muss.&lt;br /&gt;
&lt;br /&gt;
Im wesentlichen beschränkt sich die Installation eines MQTT Servers aber auf wenige Arbeitsschritte und ist wie folgt beschrieben durchzuführen. Wer schon einen &#039;&#039;&#039;mosquitto&#039;&#039;&#039; auf dem Server installiert hat, kann diesen Schritt überspringen.&lt;br /&gt;
&lt;br /&gt;
Dieses Kapitel ist insofern interessant, da mit dem Sketch von Theo Arends auch die Einbindung der neuen sonoff Pow Module bereits möglich ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # aus dem mosquitto Repo installieren:&lt;br /&gt;
 wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key&lt;br /&gt;
 sudo apt-key add mosquitto-repo.gpg.key&lt;br /&gt;
 cd /etc/apt/sources.list.d/&lt;br /&gt;
 sudo wget http://repo.mosquitto.org/debian/mosquitto-wheezy.list&lt;br /&gt;
 # oder für jessie&lt;br /&gt;
 sudo wget http://repo.mosquitto.org/debian/mosquitto-jessie.list&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 # mosquitto installieren, sowie client Befehl mosquito_sub (gehört nicht zum Server, wird aber weiter unten benötigt)&lt;br /&gt;
 sudo apt-get install mosquitto mosquitto-clients&lt;br /&gt;
 &lt;br /&gt;
 # MQTT Server Test&lt;br /&gt;
 sudo service mosquitto status&lt;br /&gt;
&lt;br /&gt;
 # Start / Stop des Servers&lt;br /&gt;
 sudo service mosquitto stop&lt;br /&gt;
 sudo service mosquitto start&lt;br /&gt;
 &lt;br /&gt;
 # Perl Version ausgeben&lt;br /&gt;
 perl -v&lt;br /&gt;
 # Perl MQTT Module nachinstallieren (läuft ein paar Minuten)&lt;br /&gt;
 sudo cpan install Net::MQTT:Simple&lt;br /&gt;
 sudo cpan install Net::MQTT:Constants&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Software Arends Sketch===&lt;br /&gt;
[[Datei:sonoff_sw_22.jpg|thumb|left|alt=Arends Menü]]&lt;br /&gt;
&lt;br /&gt;
Ebenso bietet sich die Möglichkeit eine andere alternative Software auf den unterschiedlichen Sonoff Modellen aufzuspielen.&lt;br /&gt;
Speziell für diese Module zugeschnittene Software stammt vom Autor Theo Arends. Alle hier gezeigten Bildschirmfotos und Beispiele beziehen sich auf Basis der Version Tasmota (Stand 22.02.2017).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Links zu Theo Arend Github&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/arendst/Sonoff-Tasmota.git Donwload Tasmota]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/arendst/Sonoff-Tasmota Arends Tasmota Github]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; sollten Probleme mit dem ersten Login im Webinterface auftreten, hat der Autor vorgesorgt und mit speziellem wiederholten Tastendruck können verschiedene Modi aufgerufen werden: zB: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3 x Taste kurz drücken&#039;&#039;&#039; und eine Smartconfig wird gestartet und die &#039;&#039;&#039;SSID&#039;&#039;&#039; und das &#039;&#039;&#039;Passwort&#039;&#039;&#039; kann über diese [https://play.google.com/store/apps/details?id=com.cmmakerclub.iot.esptouch Android App] eingegeben werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4 x Taste kurz drücken&#039;&#039;&#039; und man bringt den Device in den &#039;&#039;&#039;Access Point Mode&#039;&#039;&#039; mit der IP-Adresse &#039;&#039;&#039;192.168.4.1&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bis zu 7 verschiedene Modi sind möglich, mehr dazu in Arends Wiki.&lt;br /&gt;
&lt;br /&gt;
[https://github.com/arendst/Sonoff-MQTT-OTA-Arduino/wiki/Button-usage Link zum Wiki Arends, Button]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_bv_01.jpg|thumb|left|alt=Arduino Boardverwalter]]&lt;br /&gt;
In der Arduino IDE unter Datei / Voreinstellungen im Feld &amp;quot;Zusätzliche Boardverwalter-URLs:&amp;quot; den Link: http://arduino.esp8266.com/stable/package_esp8266com_index.json einfügen. &lt;br /&gt;
&lt;br /&gt;
Dann unter &#039;&#039;&#039;Werkzeuge / Board / Boardverwalter&#039;&#039;&#039; ganz am Ende der Liste die Librarys für &amp;quot;esp8266 by ESP8266 Community&amp;quot; die letzte Version zu installieren. [https://forum.fhem.de/index.php/topic,46205.msg534707.html#msg534707 Link zum Board].&lt;br /&gt;
Im Tasmota Verzeichnis \lib werden auch die zum kompilieren benötigten Librarys zur Verfügung gestellt.&lt;br /&gt;
&lt;br /&gt;
Das gesamte Sonoff Verzeichnis aus [https://github.com/arendst/Sonoff-Tasmota/archive/master.zip Arendts Sketch] entpacken (ist wie hier verlinkt ein Zipfile) und dann aus diesem Verzeichnis die sonoff.ino öffnen. Es können dann alle zu dem Sketch zugehörigen Dateien angesehen/editiert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Anschließend sollte noch die Datei &#039;&#039;&#039;user_config.h&#039;&#039;&#039; (im Unterverzeichnis &amp;quot;sonoff&amp;quot;) editiert werden. Die Abschnitte          &lt;br /&gt;
&lt;br /&gt;
 // Wifi&lt;br /&gt;
 // Syslog&lt;br /&gt;
 // Ota&lt;br /&gt;
 // MQTT&lt;br /&gt;
&lt;br /&gt;
müssen mit der eigenen &amp;quot;&#039;&#039;&#039;Ip-Adresse-Server&#039;&#039;&#039;&amp;quot;, &amp;quot;&#039;&#039;&#039;SSID&#039;&#039;&#039;&amp;quot; und &amp;quot;&#039;&#039;&#039;password&#039;&#039;&#039;&amp;quot; angepasst werden, das erleichtert den ersten Connect mit dem Modul. Seit der Version 2.1.2 können die WIFI Einstellungen 2-fach angegeben werden, somit wechselt das Device automatisch auf den 2. Wifi Hotspot wenn der erste nicht erreicht wird.&lt;br /&gt;
&lt;br /&gt;
 #define STA_SSID               &amp;quot;SSID&amp;quot;      // Wifi SSID&lt;br /&gt;
 #define STA_PASS               &amp;quot;password&amp;quot;  // Wifi password&lt;br /&gt;
 #define WIFI_HOSTNAME          &amp;quot;%s-%04d&amp;quot;         // Expands to &amp;lt;MQTT_TOPIC&amp;gt;-&amp;lt;last 4 decimal chars of MAC address&amp;gt;&lt;br /&gt;
 #define WIFI_CONFIG_TOOL       WIFI_WPSCONFIG    // Default tool if wifi fails to connect (WIFI_SMARTCONFIG, WIFI_MANAGER or WIFI_WPSCONFIG)&lt;br /&gt;
&lt;br /&gt;
 // Syslog&lt;br /&gt;
 #define SYS_LOG_HOST           &amp;quot;Ip-Adresse-Server&amp;quot;&lt;br /&gt;
 #define SYS_LOG_PORT           514&lt;br /&gt;
 #define SYS_LOG_LEVEL          LOG_LEVEL_NONE&lt;br /&gt;
 #define SERIAL_LOG_LEVEL       LOG_LEVEL_INFO&lt;br /&gt;
 #define WEB_LOG_LEVEL          LOG_LEVEL_INFO&lt;br /&gt;
&lt;br /&gt;
 // Ota&lt;br /&gt;
 #if (ARDUINO &amp;gt;= 168)&lt;br /&gt;
  #define OTA_URL              &amp;quot;http://Ip-Adresse-Server:80/api/arduino/&amp;quot; PROJECT &amp;quot;.ino.bin&amp;quot;&lt;br /&gt;
 #else&lt;br /&gt;
  #define OTA_URL              &amp;quot;http://Ip-Adresse-Server:80/api/arduino/&amp;quot; PROJECT &amp;quot;.cpp.bin&amp;quot;&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
 // MQTT&lt;br /&gt;
 #define MQTT_HOST              &amp;quot;Ip-Adresse-Server&amp;quot;&lt;br /&gt;
 #define MQTT_PORT              1883&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wichtig:&#039;&#039;&#039; Im Userprofile des Arduino Kompilers (%userprofile%\Documents\Arduino\libraries\pubsubclient\src\PubSubClient.h) die Max Packet Size auf 400 erhöht werden!&lt;br /&gt;
&lt;br /&gt;
  #define MQTT_MAX_PACKET_SIZE 400&lt;br /&gt;
  #define MQTT_KEEPALIVE 120&lt;br /&gt;
Anpassung der max. Packet Size auf 400 und das Keepalive auf 120&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Anschluß wird der Sketch mit der Arduino IDE (getestet mit 1.6.12) compiliert und die Binary dann exportiert (Sketch / Kompilierte Binärdatei exportieren). Die erzeugte .bin Datei dann mit dem Tool &amp;quot;ESP8266Flasher.exe&amp;quot; flashen, so wie auch bei ESPEasy. Sehr gut funktioniert aud das Esptool. Wer nicht compilieren will, kann auch im Unterverzeichnis ./api/arduino/ die fertige Binary ( sonoff.ino ) benutzen, aber dann ohne Voreinstellung der lokalen IPs.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===MQTT testen===&lt;br /&gt;
[[Datei:sonoff_sw_20.jpg|thumb|left|alt=Arends Menü]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nach erfolgtem Flash des Modules kann das Webinterface des Moduls zum ersten Mal aufgerufen werden (im Router nach der IP des Moduls suchen).&lt;br /&gt;
&lt;br /&gt;
Es bieten sich hier mehrere Möglichkeiten die die weitere Einrichtung des Moduls unterstützen. Einfach die Menüpunkte durchprobieren, sie erklären sich von selbst. Für erste Tests empfiehlt sich die lokale Konsole um die Ereignisse aus Sicht des Modules mit verfolgen zu können. Alles was hier gesendet wird, sollte ebenfalls am Server mitgeloggt werden können. Wenn bis hierher alles funktioniert, kann dann mir der Konfiguration in FHEM beginnen.&lt;br /&gt;
&lt;br /&gt;
Der Name des Moduls kann unter &amp;quot;Configuration&amp;quot; -&amp;gt; &amp;quot;Configure MQTT&amp;quot; -&amp;gt; &amp;quot;Topic (sonoff)&amp;quot; nachgeschaut und geändert werden. In FHEM wird beim definieren des Moduls dieser Name in den subscribeReadings bzw. publishSets eingegeben um die Verbindung zum Modul herzustellen.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Am Server jetzt eine Konsole öffnen und folgende Topic (alle) einstellen.&lt;br /&gt;
&lt;br /&gt;
 mosquitto_sub -d -v -t \# &lt;br /&gt;
Mit dieser Einstellung werden alle Topics geloggt! &lt;br /&gt;
&lt;br /&gt;
 pi@raspberry ~ $ mosquitto_sub -d -v -t \#&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff_dht/DHT/TEMPERATURE&#039;, ... (6 bytes))&lt;br /&gt;
 tele/sonoff_dht/DHT/TEMPERATURE 21.8 C&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff_dht/DHT/HUMIDITY&#039;, ... (6 bytes))&lt;br /&gt;
 tele/sonoff_dht/DHT/HUMIDITY 41.7 %&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff_dht/TIME&#039;, ... (19 bytes))&lt;br /&gt;
 tele/sonoff_dht/TIME 2017-02-22T16:05:43&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow3/STATE&#039;, ... (104 bytes))&lt;br /&gt;
 tele/sonoffpow3/STATE {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:05:44&amp;quot;, &amp;quot;Uptime&amp;quot;:100, &amp;quot;LIGHT&amp;quot;:&amp;quot;ON&amp;quot;, &amp;quot;Wifi&amp;quot;:{&amp;quot;AP&amp;quot;:2, &amp;quot;SSID&amp;quot;:&amp;quot;Pergola&amp;quot;, &amp;quot;RSSI&amp;quot;:96}}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow3/ENERGY&#039;, ... (134 bytes))&lt;br /&gt;
 tele/sonoffpow3/ENERGY {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:05:44&amp;quot;, &amp;quot;Yesterday&amp;quot;:0.083, &amp;quot;Today&amp;quot;:0.055, &amp;quot;Period&amp;quot;:0, &amp;quot;Power&amp;quot;:0, &amp;quot;Factor&amp;quot;:0.00, &amp;quot;Voltage&amp;quot;:229, &amp;quot;Current&amp;quot;:0.000}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;stat/TestSwitch/RESULT&#039;, ... (14 bytes))&lt;br /&gt;
 stat/TestSwitch/RESULT {&amp;quot;POWER&amp;quot;:&amp;quot;ON&amp;quot;}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;stat/TestSwitch/POWER&#039;, ... (2 bytes))&lt;br /&gt;
 stat/TestSwitch/POWER ON&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow3/STATE&#039;, ... (104 bytes))&lt;br /&gt;
 tele/sonoffpow3/STATE {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:07:14&amp;quot;, &amp;quot;Uptime&amp;quot;:100, &amp;quot;LIGHT&amp;quot;:&amp;quot;ON&amp;quot;, &amp;quot;Wifi&amp;quot;:{&amp;quot;AP&amp;quot;:2, &amp;quot;SSID&amp;quot;:&amp;quot;Pergola&amp;quot;, &amp;quot;RSSI&amp;quot;:96}}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow3/ENERGY&#039;, ... (134 bytes))&lt;br /&gt;
 tele/sonoffpow3/ENERGY {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:07:14&amp;quot;, &amp;quot;Yesterday&amp;quot;:0.083, &amp;quot;Today&amp;quot;:0.055, &amp;quot;Period&amp;quot;:0, &amp;quot;Power&amp;quot;:3, &amp;quot;Factor&amp;quot;:0.20, &amp;quot;Voltage&amp;quot;:227, &amp;quot;Current&amp;quot;:0.072}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;stat/TestSwitch/RESULT&#039;, ... (15 bytes))&lt;br /&gt;
 stat/TestSwitch/RESULT {&amp;quot;POWER&amp;quot;:&amp;quot;OFF&amp;quot;}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;stat/TestSwitch/POWER&#039;, ... (3 bytes))&lt;br /&gt;
 stat/TestSwitch/POWER OFF&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Interessant sind für uns nun diese Einträge &amp;quot;stat/TestSwitch/POWER ON&amp;quot; , dazu am Taster des Sonoff manuell umschalten. Dies entspricht genau der Syntax wie sie im Anschluss in FHEM dann zu verwenden ist.&lt;br /&gt;
&lt;br /&gt;
Mit diesen Einstellungen können dann entweder nach Telemetriedaten oder nach Statusmeldungen gefiltert werden. Dies ist jedoch nur notwendig wenn bereits andere MQTT Devices am Broker hängen und es sonst zu unübersichtlich wird.&lt;br /&gt;
 mosquitto_sub -h localhost -t tele/sonoff/#    = Telemetriedaten&lt;br /&gt;
 mosquitto_sub -h localhost -t stat/sonoff/#    = Statusmeldungen&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_21.jpg|thumb|left|alt=Arends Log]]&lt;br /&gt;
Sehr nützlich das lokale Log zur Fehlersuche und Inbetriebnahme.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==MQTT in FHEM einrichten==&lt;br /&gt;
[[Datei:sonoff_sw_24.jpg|thumb|left|alt=FHEM sonoff Schalter]]&lt;br /&gt;
Dieser einfache Schalter kommuniziert bidirektional mit dem sonoff Device.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_25.jpg|thumb|left|alt=FHEM sonoff Schalter]]&lt;br /&gt;
Die Readings in diesem verwendeten Beispiel zeigen sich wie in FHEM gewohnt.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Einrichtung in FHEM wird von den Modulen 00_MQTT.pm, 10_MQTT_BRIDGE und 10_MQTT_DEVICE.pm unterstützt.&lt;br /&gt;
Ebenso wird das Modul 98_expandJSON.pm benötigt um den [https://forum.fhem.de/index.php/topic,66761.0.html JSON String zu filtern].&lt;br /&gt;
&lt;br /&gt;
[https://forum.fhem.de/index.php?topic=27532.0 Link zum Forum: MQTT FHEM Einrichtung]&lt;br /&gt;
&lt;br /&gt;
 ### 1. Broker anlegen ###&lt;br /&gt;
 define myBroker MQTT 10.0.0.5:1883&lt;br /&gt;
&lt;br /&gt;
 ### 2. FHEM Device mit MQTT verbinden ###&lt;br /&gt;
 define Sonoff_Switch MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Switch IODev myBroker&lt;br /&gt;
 attr Sonoff_Switch devStateIcon ON:rc_GREEN:OFF OFF:rc_RED:ON&lt;br /&gt;
 attr Sonoff_Switch icon hue_filled_br30&lt;br /&gt;
 attr Sonoff_Switch publishSet ON OFF cmnd/TestSwitch/POWER/set&lt;br /&gt;
 attr Sonoff_Switch room MQTT&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_Licht stat/Sonoff_Switch/POWER&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_Sensor tele/Sonoff_Switch/SENSOR&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_Status stat/Sonoff_Switch/STATUS&lt;br /&gt;
 attr Sonoff_Switch webCmd ON:OFF&lt;br /&gt;
Der hier dargestellte Beispielcode realisiert die Kommunikation zwischen FHEM und dem sonoff Modul via MQTT Broker. Zu beachten ist hier, dass &#039;&#039;&#039;subscribeReading_Licht&#039;&#039;&#039; und &#039;&#039;&#039;subscribeReading_state&#039;&#039;&#039; unterschiedliche Syntax des Topic Strings haben!&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff POW einrichten==&lt;br /&gt;
[[Datei:sonoff_sw_31.jpg|thumb|left|alt=Sonoff POW]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier geht es ausschließlich um das Modul Sonoff POW!}}&lt;br /&gt;
Das Modul kommt in gewohnter Itead Qualität und eine derart kostengünstige Energiemessung wird bei Smart Home Anwendern gerne eingesetzt. Die Originalsoftware habe ich nicht einmal getestet, da damit eine Anbindung an FHEM leider nicht möglich ist.&lt;br /&gt;
&lt;br /&gt;
Ebenso möchte kaum jemand an eine nicht dokumentierte chinesische Cloud die Steuerbefehle seiner Schalter senden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_sw_33.jpg|thumb|left|alt=Sonoff POW]]&lt;br /&gt;
Bitte auf keinen Fall das Modul während der Arbeiten an die Netzspannung anschießen. Zum Flashen genügt (und nur diese) die Versorgungspannung des USB-TTL Konverters. Wie auf dem Foto gut erkennbar, wurde dieses Modul ohne einlöten einer Pfostensteckerleiste geflasht. Die Steckverbindung wird einfach in die Lötaugen gesteckt und mit einem Gummiring fixiert, da ja spätere Flashvorgänge im Webif des Models funktionieren und so die Arbeit eingespart werden kann. Es steht jedoch nichts im Wege die Pfostensteckerleiste einzulöten.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Die Anschlüsse am Modul sind wie folgt belegt.&lt;br /&gt;
 o GND&lt;br /&gt;
 o TxD&lt;br /&gt;
 o RxD&lt;br /&gt;
 o VDD&lt;br /&gt;
&lt;br /&gt;
Für den Flashvorgang gelten die selben Regeln wie schon beim sonoff Switch oben erwähnt (3,3V!).&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Sonoff POW Software===&lt;br /&gt;
[[Datei:sonoff_sw_35.jpg|thumb|left|alt=Sonoff POW FHEM]]&lt;br /&gt;
Als Software steht im Augenblick nur der Sketch von Arends zur Verfügung, liefert aber alles was das Herz begehrt und ist ist einfach zu handhaben. Hier eine eine einfache Darstellung mit der aktuellen Leistung und dem Tagesverbrauch. Zusätzlich besteht auch noch die Möglichkeit den angeschlossenen Verbraucher Ein- oder Auszuschalten. &lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_pow_02.jpg|thumb|left|alt=Sonoff POW Webif]]&lt;br /&gt;
Seit Version 2.0.19a ist auch die Leistungsanzeige im WEBIF wie im Bild links integriert. Auch der Energieverbrauch des Vortages wird mit angezeigt. Alle hier angezeigten Daten werden auch zyklisch im MQTT String an FHEM übergeben.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich kann im Sketch auch das Feature &amp;quot;&#039;&#039;&#039;Power_Limit&#039;&#039;&#039;&amp;quot; aktiviert werden. Mit dem Power_Limit wird eine zusätzliche Nachricht erzeugt, wenn ein bestimmter einstellbarer Grenzwert über- oder unterschritten wird. &lt;br /&gt;
&lt;br /&gt;
Es lassen sich dadurch Meldungen wie &amp;quot;Waschmaschine fertig&amp;quot; oder ähnliches ohne weitere Schwellwert Überwachungen in FHEM ableiten. Die Meldungen kommen in MQTT mit &amp;quot;&#039;&#039;&#039;POWER_LOW ON&#039;&#039;&#039;&amp;quot; bzw. &amp;quot;&#039;&#039;&#039;POWER_LOW OFF&#039;&#039;&#039;&amp;quot;.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei erstmaligen Start des Modules muss der Typ des Modules von &amp;quot;SONOFF&amp;quot; auf &amp;quot;&#039;&#039;&#039;SONOFF_Pow&#039;&#039;&#039;&amp;quot; geändert werden, damit die Software weiß mit welchem Modul es zu tun hat und kann dann die entsprechenden Berechnungen durchführen. Die Leistungsdaten kommen ja in Form einer Frequenz aus dem Baustein und müssen im Sketch (xsns_hlw8102.ino) umgerechnet werden.&lt;br /&gt;
                                            &lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_sw_36.jpg|thumb|left|alt=Sonoff POW Attribute]]&lt;br /&gt;
Dieses Bild zeigt die Attribute die vom Modul via MQTT an FHEM geliefert werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
aktuell gelieferter JSON String vom Sketch der alle Messdaten beinhaltet.&lt;br /&gt;
 {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:38:47&amp;quot;, &amp;quot;Yesterday&amp;quot;:&amp;quot;2.286&amp;quot;, &amp;quot;Today&amp;quot;:&amp;quot;1.593&amp;quot;, &amp;quot;Period&amp;quot;:9, &amp;quot;Power&amp;quot;:231, &amp;quot;Factor&amp;quot;:&amp;quot;1.00&amp;quot;, &amp;quot;Voltage&amp;quot;:231, &amp;quot;Current&amp;quot;:&amp;quot;0.866&amp;quot;}&lt;br /&gt;
und hier das zugehörige Reading.&lt;br /&gt;
 tele/sonoffpow/ENERGY    &lt;br /&gt;
       &lt;br /&gt;
&lt;br /&gt;
Hier ein Mittschnitt des Datenverkehrs zum Broker zwecks Kontrolle der korrekten Funktion der Module und der Software.&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/STATE&#039;, ... (103 bytes))&lt;br /&gt;
 tele/sonoffpow/STATE {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:39:15&amp;quot;, &amp;quot;Uptime&amp;quot;:79, &amp;quot;LIGHT&amp;quot;:&amp;quot;OFF&amp;quot;, &amp;quot;Wifi&amp;quot;:{&amp;quot;AP&amp;quot;:2, &amp;quot;SSID&amp;quot;:&amp;quot;Liwest&amp;quot;, &amp;quot;RSSI&amp;quot;:54}}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/ENERGY&#039;, ... (140 bytes))&lt;br /&gt;
 tele/sonoffpow/ENERGY {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:39:15&amp;quot;, &amp;quot;Yesterday&amp;quot;:&amp;quot;1.391&amp;quot;, &amp;quot;Today&amp;quot;:&amp;quot;1.191&amp;quot;, &amp;quot;Period&amp;quot;:0, &amp;quot;Power&amp;quot;:0, &amp;quot;Factor&amp;quot;:&amp;quot;0.00&amp;quot;, &amp;quot;Voltage&amp;quot;:0, &amp;quot;Current&amp;quot;:&amp;quot;0.000&amp;quot;}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff_wall1/STATE&#039;, ... (105 bytes))&lt;br /&gt;
 tele/sonoff_wall1/STATE {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:39:15&amp;quot;, &amp;quot;Uptime&amp;quot;:96, &amp;quot;POWER&amp;quot;:&amp;quot;OFF&amp;quot;, &amp;quot;Wifi&amp;quot;:{&amp;quot;AP&amp;quot;:2, &amp;quot;SSID&amp;quot;:&amp;quot;Pergola&amp;quot;, &amp;quot;RSSI&amp;quot;:100}}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow3/STATE&#039;, ... (104 bytes))&lt;br /&gt;
 tele/sonoffpow3/STATE {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:39:20&amp;quot;, &amp;quot;Uptime&amp;quot;:100, &amp;quot;LIGHT&amp;quot;:&amp;quot;ON&amp;quot;, &amp;quot;Wifi&amp;quot;:{&amp;quot;AP&amp;quot;:2, &amp;quot;SSID&amp;quot;:&amp;quot;Pergola&amp;quot;, &amp;quot;RSSI&amp;quot;:96}}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow3/ENERGY&#039;, ... (134 bytes))&lt;br /&gt;
 tele/sonoffpow3/ENERGY {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:39:20&amp;quot;, &amp;quot;Yesterday&amp;quot;:0.083, &amp;quot;Today&amp;quot;:0.057, &amp;quot;Period&amp;quot;:0, &amp;quot;Power&amp;quot;:0, &amp;quot;Factor&amp;quot;:0.00, &amp;quot;Voltage&amp;quot;:230, &amp;quot;Current&amp;quot;:0.000}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Einstellungen können mit folgender Syntax angefordert werden (zwei Terminalfenster öffnen, eines zum protokollieren und eines zum Seden der Befehle).&lt;br /&gt;
 mosquitto_sub -d -v -t \#  MQTT Datenverkehr protokolieren&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/status/set -m &amp;quot;8&amp;quot;      = SonoffPOW Status jetzt auslesen&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/TelePeriod/set -m &amp;quot;60&amp;quot; = Timer setzen, alle 60 Sekunden Daten senden &lt;br /&gt;
Die Kommandos können direkt am Broker (Terminalfenster Putty etc.) abgesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sonoff POW Kalibrieren ===&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier wird beschrieben, wie der &#039;&#039;Sonoff POW kalibriert&#039;&#039; werden kann. }}&lt;br /&gt;
Ab Version 2.0.11 kann nun auch der POW kalibriert werden.&lt;br /&gt;
Dazu kann man 2 Konsolenfenster öffnen, im ersten aktiviert man das Protokoll für den Datenverkehr&lt;br /&gt;
 mosquitto_sub -d -v -t \#  MQTT Datenverkehr protokollieren&lt;br /&gt;
&lt;br /&gt;
Dann kann mit folgenden Befehlen die HLW Referenz Pulsfrequenz gesetzt werden.&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/HLWUCAL/set -m &amp;quot;2100&amp;quot;     default = 1950&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/HLWICAL/set -m &amp;quot;2450&amp;quot;     default = 3500&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/HLWPCAL/set -m &amp;quot;13500&amp;quot;    default = 12345 &lt;br /&gt;
Entweder man hat eine definierte Last zur Verfügung oder besser man misst mit einem Leistungsmesser nach. Die Spannung kann man mit einem Multimeter nachmessen (sollte 230 V sein) und der Strom wird errechnet (bei 100 Watt I = P / U ) = 100/230 = 0,4347.&lt;br /&gt;
Die Referenzwerte solange geringfügig ändern bis die Ausgabe passt. Für die Ausgabe wird einfach eine Statusabfrage durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/status/set -m &amp;quot;8&amp;quot;&lt;br /&gt;
Befehl für die Statusabfrage&lt;br /&gt;
&lt;br /&gt;
 cmnd/sonoffpow/status/set 8&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;stat/sonoffpow/STATUS&#039;, ... (103 bytes))&lt;br /&gt;
 stat/sonoffpow/STATUS PWR: Voltage 225 V, Current 0.427 A, Current Power 98 W, Total Power Today 0.080 kWh, Power Factor 1.00&lt;br /&gt;
Ergebnis der Statusabfrage mit Spannung, Strom und Leistung.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sonoff POW FHEM Anbindung===&lt;br /&gt;
Ein Beispiel einer einfachen Anbindung via JSON an FHEM. MQTT von Arends ist insofern notwendig, da in der Software ESPEasy und der Bridge noch keine Implementierung der Frequenzumrechnung enthalten ist.&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Pow MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Pow IODev myBroker&lt;br /&gt;
 attr Sonoff_Pow icon measure_power&lt;br /&gt;
 attr Sonoff_Pow publishSet ON OFF cmnd/sonoffpow/LIGHT/&lt;br /&gt;
 attr Sonoff_Pow stateFormat {sprintf(&amp;quot;aktuell: %.1f W Tag: %.2f Kw/h&amp;quot;, ReadingsVal($name,&amp;quot;Power&amp;quot;,undef), ReadingsVal($name,&amp;quot;Today&amp;quot;,undef))}&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_ENERGY tele/sonoffpow/ENERGY&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_LIGHT stat/sonoffpow/LIGHT&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_state cmnd/sonoffpow/LIGHT&lt;br /&gt;
 attr Sonoff_Pow webCmd ON:OFF&lt;br /&gt;
Zusätzlich kann hier noch das Relais mit &amp;quot;on&amp;quot; und &amp;quot;off&amp;quot; ein- ausgeschaltet werden.&lt;br /&gt;
&lt;br /&gt;
Ebenso notwendig ist das setzen der Regexp für den JSON Konverter.&lt;br /&gt;
 define ej3 expandJSON Sonoff.*:.*:.{.*}&lt;br /&gt;
hier wird alles was mit dem Namen Sonoff beginnt gefiltert und automatisch alle darin enthaltenen Readings erstellt.&lt;br /&gt;
&lt;br /&gt;
 define ej3 expandJSON Sonoff.*:ENERGY.*:.{.*} (Power|Yesterday|Today)&lt;br /&gt;
oder so, da werden nur die Readings Power, Yesterday und Today erstellt.&lt;br /&gt;
Somit ist auch kalr, das in FHEM auch JSON installiert sein muss. Ebenso können die verschiedenen Regexp im [https://github.com/ddtlabs/expandJSON Wiki] nachgelesen werden.&lt;br /&gt;
&lt;br /&gt;
[https://forum.fhem.de/index.php/topic,66761.15.html Link zum Diskussionsthread].&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Source Reading:&#039;&#039;&#039;&lt;br /&gt;
 device:reading:.{.*} &lt;br /&gt;
 .*WifiIOT.*:sensor.*:.{.*} &lt;br /&gt;
 sonoff_.*:.*:.{.*} &lt;br /&gt;
 dev.*:(sensor1|sensor2|teleme.*):.{.*} &lt;br /&gt;
 (dev.*|[Dd]evice.*):json:.{.*} &lt;br /&gt;
 (devX:jsonX:.{.*}|devY.*:jsonY:.{.*Wifi.*{.*SSID.*}.*}) &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Target Reading:&#039;&#039;&#039;&lt;br /&gt;
 .*power.* &lt;br /&gt;
 (Current|Voltage|Wifi.*)  &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Komplette Definition des Filters:&#039;&#039;&#039;&lt;br /&gt;
 define ej1 expandJSON device:sourceReading:.{.*} targetReading &lt;br /&gt;
 define ej3 expandJSON .*\.SEN\..*:.*:.{.*} &lt;br /&gt;
 define ej3 expandJSON sonoff_.*:sensor.*:.{.*} (power.*|current|voltage)&lt;br /&gt;
&lt;br /&gt;
===Sonoff POW Netz-Anschluß===&lt;br /&gt;
[[Datei:sonoff_sw_34.jpg|thumb|left|alt=Sonoff POW Netzanschluß]]&lt;br /&gt;
Erst wenn alle Arbeiten an der Hard- und Software abgeschlossen sind, kann man das Modul an die Netzspannung anschließen. Wer es sich einfach machen will, nimmt eine Industriell gefertigte 230 V Verlängerung  (zwischen 1,5 - 3 Meter) und schneidet sie in der Mitte durch. Nach dem abisolieren der flexiblen Drähte sollte diese &#039;&#039;&#039;verlötet oder mit Aderendhülsen&#039;&#039;&#039; versehen werden (müssen aber exakt passen, da hier kaum Platz in den Klemmen ist). &lt;br /&gt;
Mit einem kleinen Schraubendreher kann man die Feder der Klemmen niederdrücken und das verzinnte Drahtende tief ich die Öffnung stecken. Es dürfen keine Drahtlitzen aus den Öffnungen sichtbar sein, Kurzschlußgefahr! Ebenso sollte eine Zugprobe durchgeführt werden ob die Klemme auch richtig eingerastet ist.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ACHTUNG:&#039;&#039;&#039; diese Arbeiten müssen von einem ausgebildeten Fachpersonal (Elektriker) durchgeführt werden, Lebensgefahr!&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sonoff POW Design===&lt;br /&gt;
&lt;br /&gt;
====ReadingsGroup mit Schaltmöglichkeit====&lt;br /&gt;
[[Datei:sonoff_pow_03.jpg|thumb|left|alt=readingsGroup mit Schalter]]&lt;br /&gt;
Die ReadingsGroup kann auch gleich mit einem Schalter versehen werden um den POW Ein- oder Aus schalten zu können. Dazu ist aber eine andere Einstellung im Sketch erforderlich.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der &amp;quot;&#039;&#039;&#039;user_config.h&#039;&#039;&#039;&amp;quot; muss an dieser Stelle auch die &amp;quot;&#039;&#039;&#039;PUB_PREFIX&#039;&#039;&#039;&amp;quot; auf die gleiche Topic wie &amp;quot;PUB_PREFIX2&amp;quot; eingestellt werden. Durch diese Maßnahme wird erreicht, dass sofort nach dem Knopfdruck auch der Status mit der Topic &amp;quot;tele&amp;quot; übertragen wird. Würde der weiterhin mit &amp;quot;stat&amp;quot; übertragen, kann er in der Readingsgroup nur sehr umständlich weiter behandelt werden. Dadurch wird erreicht, dass der Schalter sofort nach dem Schaltvorgang und der Rückmeldung (Status) auch seine Farbe ändert. Wird dieser Eintrag vergessen, ändert der Schalter erst nach Eintreffen der nächsten zyklischen Abfrage seinen Status/Farbe.&lt;br /&gt;
&lt;br /&gt;
 #define SUB_PREFIX             &amp;quot;cmnd&amp;quot;       // Sonoff devices subscribe to:- SUB_PREFIX/MQTT_TOPIC and SUB_PREFIX/MQTT_GRPTOPIC&lt;br /&gt;
 #define PUB_PREFIX             &amp;quot;tele&amp;quot;       // Sonoff devices publish to:- PUB_PREFIX/MQTT_TOPIC&lt;br /&gt;
 #define PUB_PREFIX2            &amp;quot;tele&amp;quot;       // Sonoff devices publish telemetry data to:- PUB_PREFIX2/MQTT_TOPIC/UPTIME, POWER/LIGHT and TIME&lt;br /&gt;
hier die PUB_PREFIX mit der geänderten Topic &amp;quot;tele&amp;quot; anstatt &amp;quot;stat&amp;quot; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 define SonoffPows readingsGroup &amp;lt;%measure_power&amp;gt;,&amp;lt;aktuell&amp;gt;,&amp;lt;Tag&amp;gt;,&amp;lt;Gestern&amp;gt;,&amp;lt;Strom&amp;gt;,&amp;lt;Durchschnitt&amp;gt;,&amp;lt;max.P&amp;gt;,&amp;lt;Zyklus&amp;gt;,&amp;lt;Faktor&amp;gt;,&amp;lt;Status&amp;gt;,&amp;lt; hr &amp;gt; .*(Sonoff_Pow|Sonoff_Pow2|Sonoff_Pow3|Sonoff_Pow4):Power,Today,Yesterday,Current,Power_avg_day,Power_max_day,Period,Factor,LIGHT&lt;br /&gt;
 attr SonoffPows commands {&#039;LIGHT.ON&#039; =&amp;gt; &#039;set $DEVICE OFF&#039;,&#039;LIGHT.OFF&#039; =&amp;gt; &#039;set $DEVICE ON&#039;}&lt;br /&gt;
 attr SonoffPows mapping %ALIAS&lt;br /&gt;
 attr SonoffPows nameStyle style=&amp;quot;color:yellow&amp;quot;&lt;br /&gt;
 attr SonoffPows room Energie,MQTT&lt;br /&gt;
 attr SonoffPows valueFormat {&#039;Power&#039; =&amp;gt;&amp;quot;%.0f W&amp;quot;, &#039;Today&#039; =&amp;gt;&amp;quot;%.2f Kw&amp;quot;,&#039;Yesterday&#039; =&amp;gt;&amp;quot;%.2f Kw&amp;quot;, &#039;CURRENT&#039; =&amp;gt;&amp;quot;%.2f A&amp;quot;,&#039;Power_max_day&#039; =&amp;gt; &amp;quot;%.0f W&amp;quot;,&#039;Power_avg_day&#039; =&amp;gt; &amp;quot;%.2f W&amp;quot;,&#039;Power&#039;=&amp;gt;&amp;quot;%.0f W&amp;quot;,&#039;Factor&#039; =&amp;gt; &amp;quot;%.2f &amp;quot;}&lt;br /&gt;
 attr SonoffPows valueIcon {&#039;LIGHT.ON&#039; =&amp;gt; &#039;rc_GREEN@green&#039;, &#039;LIGHT.OFF&#039; =&amp;gt; &#039;rc_RED@red&#039;}&lt;br /&gt;
 attr SonoffPows valueStyle { if($READING eq &amp;quot;Power&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 0 &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Today&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 4.8){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Today&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 2.5){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Today&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 2.5 &amp;amp;&amp;amp; $VALUE &amp;lt; 4.8 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Yesterday&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 2.5){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Yesterday&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 2.5 &amp;amp;&amp;amp; $VALUE &amp;lt; 4.8 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Yesterday&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 4.8){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Current&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 0.45){&#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039;}elsif( $READING eq &amp;quot;Current&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 0.45 &amp;amp;&amp;amp; $VALUE &amp;lt; 0.87 ){&#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Current&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 0.87){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Period&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 10){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Period&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 10 &amp;amp;&amp;amp; $VALUE &amp;lt; 15 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Period&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 15){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039;}}&lt;br /&gt;
Dieses Beispiel ist für &#039;&#039;&#039;Tasmota mit JSON&#039;&#039;&#039; ausgelegt und benötigt ebenso wie oben die Erweiterung &amp;quot;average&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Pow_CURRENT_POWER average Sonoff_Pow:Power.*&lt;br /&gt;
damit werden der Durchschnitt und min max für Tasmota mit JSON erzeugt.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====POW mit FTUI anzeigen====&lt;br /&gt;
[[Datei:sonoff_pow_energy.JPG|thumb|left|alt=Tablett FTUI]]&lt;br /&gt;
Wer möchte kann die Energieanzeigen auch mit der [https://forum.fhem.de/index.php/topic,34233.0.html Tablett UI] für eine Tablet Ansicht gestalten. Mit dieser stehen viele Möglichkeiten zu einer attraktiven Darstellung zur Verfügung.&lt;br /&gt;
Hier ein Beispiel welches mit den Widget &amp;quot;[http://www.fhemwiki.de/wiki/FHEM_Tablet_UI#Widget_THERMOSTAT thermostat]&amp;quot; dargestellt ist.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Slampher Flashen==&lt;br /&gt;
[[Datei:sonoff_sl_53.jpg|thumb|left|alt=Sonoff SLAMPHER]]&lt;br /&gt;
Dieses Modul ist eine Besonderheit was das Flashen betrifft, denn mit Hilfe des Tasters kann der ESP8266 NICHT in den Flashmode gebracht werden. Der Taster ist intern anderwärtig verdrahtet und somit für diesen Zweck nicht zu gebrauchen.&lt;br /&gt;
&lt;br /&gt;
Wie hier links im Bild zu sehen ist, muss der rechte Pin des R20 (oben im Bild) während dem Einstecken des USB Steckers auf Masse gelegt werden. Die beste Möglichkeit ist ein Stücken Draht anzulöten und diesen dann beim einstecken auf den Masse Pin des USB-Konverters zu legen.&lt;br /&gt;
&lt;br /&gt;
Pinbelegung des Steckers von oben nach unten:&lt;br /&gt;
 o - GND&lt;br /&gt;
 o - TxD&lt;br /&gt;
 o - RxD&lt;br /&gt;
 &#039;&#039;&#039;o&#039;&#039;&#039; - Vdd&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sl_51.jpg|thumb|left|alt=Sonoff SLAMPHER R20]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier ist genau ersichtlich, wo der R20 auf der Platine platziert ist. }}&lt;br /&gt;
Hier nocheinmal schön zu sehen wo der R20 (der ist nicht eingelötet sondern leer) exakt auf der Platine liegt, gemeint ist der rechte Pin. Hier kann auch leicht gelötet werden, da keine empfindlichen Bauteile in der Nähe sind und auch genug Platz vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_sl_50.jpg|thumb|left|alt=Sonoff SLAMPHER R20]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier ist genau ersichtlich, wo der Draht am R20 aufgelötet wurde }}&lt;br /&gt;
Hier ist ein kleines Stück Schaltdraht auf den Pin bereist aufgelötet und bereit zum Flashen!&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel wurde keine Pfostensteckerleiste auf die Platine aufgelötet, sondern nur durchgesteckt und mit einem Gummiring  zum Relais fixiert, das erspart den Lötvorgang, weil in Zukunft dann ohnehin OTA geflasht werden kann.&lt;br /&gt;
&lt;br /&gt;
Also Pin20 auf Masse legen und USB-Konverter an den PC einstecken, dann den Draht von der Masse entfernen. Der ESP8266 sollte jetzt im Flashmodus bereit stehen und kann wie bereits oben beschrieben geflasht werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sonoff Slampher Software===&lt;br /&gt;
[[Datei:sonoff_sl_54.jpg|thumb|left|alt=Sonoff SLAMPHER FHEM]]&lt;br /&gt;
&lt;br /&gt;
Als Software wird Arends Sketch installiert (Kommunikation über MQTT), da zum derzeitigen Zeitpunkt ESPEasy das Modul noch nicht integriert hat und somit auch nicht ansteuern kann.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_SL MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_SL IODev myBroker&lt;br /&gt;
 attr Sonoff_SL devStateIcon ON:rc_GREEN:OFF OFF:rc_RED:ON&lt;br /&gt;
 attr Sonoff_SL icon hue_filled_br30&lt;br /&gt;
 attr Sonoff_SL publishSet ON OFF cmnd/sonoffsl/POWER/set&lt;br /&gt;
 attr Sonoff_SL room Bewegung,_Sonoff&lt;br /&gt;
 attr Sonoff_SL stateFormat Licht&lt;br /&gt;
 attr Sonoff_SL subscribeReading_Licht tele/sonoffsl/POWER&lt;br /&gt;
 attr Sonoff_SL subscribeReading_state cmnd/sonoffsl/POWER/set&lt;br /&gt;
 attr Sonoff_SL webCmd ON:OFF&lt;br /&gt;
&lt;br /&gt;
Hier ein Beispiel wie in FHEM der Slampher eingebunden werden kann. In diesem Beispiel wird davon ausgegangen, das im Modul die Topic &amp;quot;sonoffsl&amp;quot; benannt wurde. Wer einen anderen Namen haben möchte, muss dies dann auch in FHEM entsprechend anpassen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Th10/16 FHEM==&lt;br /&gt;
[[Datei:sonoff_th_01.jpg|thumb|left|alt=Sonoff TH10]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Temperatur Modul TH10 / 16! }}&lt;br /&gt;
Das Modul kann durch drücken des Tasters während dem Einstecken des USB-Konverters in den Flashmodus gebracht werden.&lt;br /&gt;
Der Th10/16 kann mit zwei unterschiedlichen Typen von Sensoren bestückt werden, hier im Beispiel mit dem externen Temperaturfühler DS18B20.&lt;br /&gt;
&lt;br /&gt;
Wie im Bild klar zu sehen ist, kann das Webif auch zur Darstellung via Mobile verwendet werden. Mit &amp;quot;Toggle&amp;quot; wird Ein- oder Aus geschaltet und  darunter ist die aktuelle Temperatur ersichtlich. Für diese Ansicht muss keine MQTT Verbindung eingerichtet werden, da die Kommunikation hier rein über HTTP erfolgt.&lt;br /&gt;
&lt;br /&gt;
Die unten dargestellten Beispiele für FHEM beziehen sich auf Arends Sketch, also über MQTT. Dieses Modul kann aber genauso leicht über ESPEasy und der ESPEasy-Bridge eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Pinbelegung des Steckers von oben nach unten:&lt;br /&gt;
 o - GND&lt;br /&gt;
 o - TxD&lt;br /&gt;
 o - RxD&lt;br /&gt;
 &#039;&#039;&#039;o&#039;&#039;&#039; - Vdd&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_th_02.jpg|thumb|left|alt=Sonoff TH10]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Einbindung in FHEM via MQTT! }}&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ### Temperatur und Luftfeuchte vom Sonoff Switch ###&lt;br /&gt;
 define Sonoff_Temp MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Temp IODev myBroker&lt;br /&gt;
 attr Sonoff_Temp alias Pool Wasser&lt;br /&gt;
 attr Sonoff_Temp eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_Temp icon temperature_humidity&lt;br /&gt;
 attr Sonoff_Temp publishSet ON OFF cmnd/sonoffth/POWER/set&lt;br /&gt;
 attr Sonoff_Temp room _Sonoff&lt;br /&gt;
 attr Sonoff_Temp stateFormat {sprintf(&amp;quot;Temperatur: %.1f Grad&amp;quot;, ReadingsVal($name,&amp;quot;temperature&amp;quot;,0))}&lt;br /&gt;
 attr Sonoff_Temp subscribeReading_SENSOR tele/sonoffth/SENSOR&lt;br /&gt;
 attr Sonoff_Temp subscribeReading_state cmnd/sonoffth/POWER/set&lt;br /&gt;
Beispiel für FHEM mit Temperaturanzeige mit DS18B20&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Switch MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Switch IODev myBroker&lt;br /&gt;
 attr Sonoff_Switch alias Pool Licht&lt;br /&gt;
 attr Sonoff_Switch devStateIcon on:rc_GREEN:off off:rc_RED:on&lt;br /&gt;
 attr Sonoff_Switch eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_Switch icon light_ceiling&lt;br /&gt;
 attr Sonoff_Switch publishSet ON OFF cmnd/sonoffth/POWER/set&lt;br /&gt;
 attr Sonoff_Switch room _Sonoff&lt;br /&gt;
 attr Sonoff_Switch stateFormat Licht&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_Licht tele/sonoffth/POWER&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_state cmnd/sonoffth/POWER/set&lt;br /&gt;
 attr Sonoff_Switch webCmd ON:OFF&lt;br /&gt;
Der Schalter nochmals seperat dargestellt, je nach Geschmack.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff 4CH 4-Kanal Schaltmodul==&lt;br /&gt;
[[Datei:sonoff_ch4_1.jpg|thumb|left|alt=Sonoff CH4]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Achtung andere Einstellungen der Arduino IDE: Select Board &amp;quot;Generic ESP8285 Module&amp;quot; (=Flash Mode &amp;quot;DOUT&amp;quot;) and Flash Size &amp;quot;1M (64K SPIFFS)&amp;quot;n! }}&lt;br /&gt;
&lt;br /&gt;
Der Sonoff 4CH ist mit seinen 4 Kanälen ein sehr preiswertes Modul im Gehäuse und für Hutschinenmontage. Anstatt des üblichen ESP8266 besitzt dieses Modul schon den moderneren &#039;&#039;&#039;ESP8285&#039;&#039;&#039;. Es müssen daher in der Arduino IDE andere Einstellungen vorgenommen werden. Unter Board wird hier das &amp;quot;&#039;&#039;&#039;Generic 8285 Module&#039;&#039;&#039;&amp;quot; mit &#039;&#039;&#039;1M und 64K Spiffs&#039;&#039;&#039; angewählt. Der Flashmode &amp;quot;&#039;&#039;&#039;DOUT&#039;&#039;&#039;&amp;quot; wird dann automatisch eingestellt, bzw. ausgeblendet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Es ist daher unbedingt notwendig den Sketch mit den geänderten Einstellungen selbst zu kompilieren, ansonsten stürzt das Modul nach Auswahl des Typs ab  und wird nicht mehr rebooten können!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das Modul ist etwas größer als die anderen Sonoff Produkte und besitzt mit 14,5 x 9 cm schon beachtliche Einbau Maße.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_ch4_2.jpg|thumb|left|alt=Sonoff 4CH FDTI]]&lt;br /&gt;
Als weitere Besonderheit sei hier erwähnt, das die Signale &#039;&#039;&#039;RxD auf RxD und TxD auf TxD&#039;&#039;&#039; des FTDI Konverters zu verbinden sind. Wie bei allen Sonoff Modulen darf man &#039;&#039;&#039;zum flashen keine Netzspannung anschließen&#039;&#039;&#039;, sondern nur über die Versorgungsspannung des FDTI Konverters mit 3,3 V versorgen (Jumper richtig setzen). Die Stiftleiste für den FTDI Anschluß ist hier schon eingelötet.&lt;br /&gt;
&lt;br /&gt;
In den Flashmodus gelangt man durch drücken der &#039;&#039;&#039;Taste FW/IO0&#039;&#039;&#039; während des einstecken des USB Anschlusses.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_ch4_3.jpg|thumb|left|alt=Sonoff 4CH Arends]]&lt;br /&gt;
Hier die Ansicht des Webinterface des Arends Sketches!&lt;br /&gt;
Bei der Software sei erwähnt, das die getestete Version 3.1.16 nur bei Kanal 1 den Modus &amp;quot;PulseTime&amp;quot; beherrscht. Wer also gepulste Ausgänge (zB: elektrische Garage/Toröffner) benötigt muss diese per Software nachbilden oder mit dem Kanal 1 auskommen. Eine &amp;quot;Pulsetime 10&amp;quot; ist ein guter Wert dafür (etwa 1 Sekunde). &lt;br /&gt;
&lt;br /&gt;
Als Alternative kann mit dieser HTML Seite des Webservers am Modul des CH4 schon mit jedem Browser fähigem Handy (Android, iPhone, Windows) aufgerufen werden und somit alle Funktionen gesteuert werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_ch4_4.jpg|thumb|left|alt=Sonoff CH4 Software APP]]&lt;br /&gt;
Hier dargestellt die Original Software die Sonoff zum Modul liefert (EWeLink) und über ihre Cloud verbindet. Leider kann hier keine gepulste Ausgabe erfolgen. Mit einem Countdown kann zwar der Ausgang wieder abgeschaltet werden, die kleinste Zeiteinheit ist aber 1 Minute und somit für einen Impuls leider nicht zu gebrauchen. Ebenso kann mit dieser Software keine Einbindung in FHEM erfolgen, obwohl es eine nette anschauliche Darstellung ist.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sonoff 4CH 4-Kanal Anbindung FHEM===&lt;br /&gt;
Beispiel zur Anbindung in FHEM für den 4CH, hier werden einfach 4 einzelne Schalter definiert!&lt;br /&gt;
 define Sonoff_ch1 MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_ch1 IODev myBroker&lt;br /&gt;
 attr Sonoff_ch1 alias Sonoff CH1&lt;br /&gt;
 attr Sonoff_ch1 devStateIcon on:rc_GREEN:off off:rc_RED:on&lt;br /&gt;
 attr Sonoff_ch1 eventMap ON:on OFF:off ON:Ein OFF:Aus&lt;br /&gt;
 attr Sonoff_ch1 group Toröffner&lt;br /&gt;
 attr Sonoff_ch1 icon light_ceiling&lt;br /&gt;
 attr Sonoff_ch1 publishSet ON OFF cmnd/sonoffch4/POWER1/set&lt;br /&gt;
 attr Sonoff_ch1 stateFormat Power&lt;br /&gt;
 attr Sonoff_ch1 subscribeReading_Power tele/sonoffch4/POWER1&lt;br /&gt;
 attr Sonoff_ch1 subscribeReading_state cmnd/sonoffch4/POWER1/set&lt;br /&gt;
 attr Sonoff_ch1 webCmd Ein:Aus&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_ch2 MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_ch2 IODev myBroker&lt;br /&gt;
 attr Sonoff_ch2 alias Sonoff CH2&lt;br /&gt;
 attr Sonoff_ch2 devStateIcon on:rc_GREEN:off off:rc_RED:on&lt;br /&gt;
 attr Sonoff_ch2 eventMap ON:on OFF:off ON:Ein OFF:Aus&lt;br /&gt;
 attr Sonoff_ch2 group Toröffner&lt;br /&gt;
 attr Sonoff_ch2 icon light_ceiling&lt;br /&gt;
 attr Sonoff_ch2 publishSet ON OFF cmnd/sonoffch4/POWER2/set&lt;br /&gt;
 attr Sonoff_ch2 stateFormat Power&lt;br /&gt;
 attr Sonoff_ch2 subscribeReading_Power tele/sonoffch4/POWER2&lt;br /&gt;
 attr Sonoff_ch2 subscribeReading_state cmnd/sonoffch4/POWER2/set&lt;br /&gt;
 attr Sonoff_ch2 webCmd Ein:Aus&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_ch3 MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_ch3 IODev myBroker&lt;br /&gt;
 attr Sonoff_ch3 alias Sonoff CH3&lt;br /&gt;
 attr Sonoff_ch3 devStateIcon on:rc_GREEN:off off:rc_RED:on&lt;br /&gt;
 attr Sonoff_ch3 eventMap ON:on OFF:off ON:Ein OFF:Aus&lt;br /&gt;
 attr Sonoff_ch3 group Toröffner&lt;br /&gt;
 attr Sonoff_ch3 icon light_ceiling&lt;br /&gt;
 attr Sonoff_ch3 publishSet ON OFF cmnd/sonoffch4/POWER3/set&lt;br /&gt;
 attr Sonoff_ch3 stateFormat Power&lt;br /&gt;
 attr Sonoff_ch3 subscribeReading_Power tele/sonoffch4/POWER3&lt;br /&gt;
 attr Sonoff_ch3 subscribeReading_state cmnd/sonoffch4/POWER3/set&lt;br /&gt;
 attr Sonoff_ch3 webCmd Ein:Aus&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_ch4 MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_ch4 IODev myBroker&lt;br /&gt;
 attr Sonoff_ch4 alias Sonoff CH4&lt;br /&gt;
 attr Sonoff_ch4 devStateIcon on:rc_GREEN:off off:rc_RED:on&lt;br /&gt;
 attr Sonoff_ch4 eventMap ON:on OFF:off ON:Ein OFF:Aus&lt;br /&gt;
 attr Sonoff_ch4 group Toröffner&lt;br /&gt;
 attr Sonoff_ch4 icon light_ceiling&lt;br /&gt;
 attr Sonoff_ch4 publishSet on off cmnd/sonoffch4/POWER4/set&lt;br /&gt;
 attr Sonoff_ch4 stateFormat Power&lt;br /&gt;
 attr Sonoff_ch4 subscribeReading_Power tele/sonoffch4/POWER4&lt;br /&gt;
 attr Sonoff_ch4 subscribeReading_state cmnd/sonoffch4/POWER4/set&lt;br /&gt;
 attr Sonoff_ch4 webCmd Ein:Aus&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Erweiterungen=&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sonoff Switch mit Temperatur + Luftfeuchte== &lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier geht es um nützliche Hardware Erweiterungen an den Originalmodulen!}}&lt;br /&gt;
Wozu überhaupt den Switch erweitern wenn es auch die Modelle TH10 und TH16 gibt?&lt;br /&gt;
&lt;br /&gt;
Manche Personen können dadurch dem Basteltrieb nachkommen, aber das wesentliche ist der Preis, da die Switches doch fast um die Hälfte billiger sind. Die Sensoren kosten ebenfalls kaum nennenswerte Beträge.&lt;br /&gt;
&lt;br /&gt;
Oder es hat schon jemand Switches im Einsatz und möchte jetzt zusätzlich die Temperatur erfassen!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hardware erweitern mit DHT22 ===&lt;br /&gt;
[[Datei:sonoff_sw_4.PNG|thumb|left|alt=Sonoff Switch Pinleiste mit Temperatur]]&lt;br /&gt;
Am Sonoff Switch wurde ja schon eine Stiftleiste zum Flashen eingelötet. Diese Stiftleiste bietet schon alle Anschlüsse welche für die Temperatur- und Luftfeuchtemessung benötigt werden. Am 5. Anschluß der Stifftleiste ist das Signal &amp;quot;SCL&amp;quot; (GPIO14) herausgeführt, welches für den DHT22 zur Erfassung der Messdaten benötigt wird. Der Sonsor wird mit einem einem 3-poligen Kabel (zB: ein Steckkabel für ein Breadboard oder direkt anlöten) verbunden. Damit der DHT22 korrekt funktioniert, wird ein Widerstand mit 4,7 K Ohm zwischen Vdd und Data am DHT22 zusätzlich benötigt. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_45.jpg|thumb|left|alt=AM2302 / DHT22]]&lt;br /&gt;
&lt;br /&gt;
Ansicht des DHT22 (AM2302) mit den aufgesteckten Verbindungskabeln. Von links nach rechts sind das&lt;br /&gt;
&lt;br /&gt;
 1 = VCC 3,3 V&lt;br /&gt;
 2 = Data&lt;br /&gt;
 3 = nc (nicht belegt)&lt;br /&gt;
 4 = GND&lt;br /&gt;
&lt;br /&gt;
Pin1 (VCC) des DHT22 muss also auf Pin1 der Stiftleiste, Pin2 (Data) auf Pin5 und Pin4 (GND) auf Pin4. &lt;br /&gt;
Pin2 und Pin1 soll hier noch der Widerstand aufgelötet werden.&lt;br /&gt;
&lt;br /&gt;
 1 ------- 1 (VDD)&lt;br /&gt;
 2 ------- 5 (GPIO14)&lt;br /&gt;
 3&lt;br /&gt;
 4 ------- 4 (GND)&lt;br /&gt;
 DHT22  Stiftleiste&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_44.jpg|thumb|left|alt=umgebautes Modul]]&lt;br /&gt;
Diese Darstellung zeigt das umgebaute und bereits verschlossene Modul. Auf der Seite des Tasters (bitte nur hier, da auf der anderen Seite die 230 V verlaufen und neben der Lebensgefahr auch den Sensor beeinflussen) ist hier einfach mit einer Eisensäge ein Schlitz eingesägt, der dient in diesem Falle als Kabeldurchführung. Ein Schlitz ist besser als ein Loch, da der Oberteil des Gehäuses sich leichter aufsetzen läßt. Wer ein längeres Kabel benötigt, kann natürlich auch ein 3-poliges Telefonkabel (oder Mikrokabel oder sonstiges) verwenden. Der Sensor sollte etwas Abstand zum Gehäuse haben, da dieses auch eine Eigenerwärmung hat. Wer es ganz originalgetreu lösen will, kann auch eine 3-polige Mini Buchse für Klinckenstecker (3,5mm) einbauen so wie sie am TH10/16 vorhanden ist.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Software anpassen am Beispiel MQTT ===&lt;br /&gt;
[[Datei:sonoff_sw_40.jpg|thumb|left|alt=Sonoff MQTT]]&lt;br /&gt;
&lt;br /&gt;
Die richtige Auswahl des Sensors und des verwendeten GPIO erfolgt im WEBIF des Modules und wird seit Tasmota nur mehr dort eingestellt. Eventuell sollte das aktuell verwendete [https://github.com/ddtlabs/expandJSON/ JSON Filter] geändert/erweitert werde (siehe beim Modul POW).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Software Anpassung DHT22 in FHEM ===&lt;br /&gt;
[[Datei:sonoff_sw_41.jpg|thumb|left|alt=umgebautes Modul]]&lt;br /&gt;
&lt;br /&gt;
Links in der Hardcopy sind die Readings die nach der Anpassung von FHEM (Broker) befüllt werden sollten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ### Temperatur und Luftfeuchte vom Sonoff Switch ###&lt;br /&gt;
 define Sonoff_Temp MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Temp IODev myBroker&lt;br /&gt;
 attr Sonoff_Temp icon temperature_humidity&lt;br /&gt;
 attr Sonoff_Temp room MQTT&lt;br /&gt;
 attr Sonoff_Temp stateFormat {sprintf(&amp;quot;Temperatur: %.1f Grad Feuchte: %.1f &amp;quot;, ReadingsVal($name,&amp;quot;temperature&amp;quot;,0), ReadingsVal($name,&amp;quot;humidity&amp;quot;,0))}&lt;br /&gt;
 attr Sonoff_Temp subscribeReading_Sensor tele/sonoff/SENSOR&lt;br /&gt;
Hier die zusätzliche Erweiterung um die Temperatur und die Luftfeuchte in FHEM. Der in der Topic verwendete Name &amp;quot;sonoff&amp;quot; muss natürlich der Einstellung in der Software am Switch entsprechen. Bei Verwendung mehrerer Switches muss natürlich auch der Name bei jedem geändert werden.&lt;br /&gt;
&lt;br /&gt;
Als Regexp für JSON kann dieser Filter eingesezt werden.&lt;br /&gt;
 define ej3 expandJSON .*\.SEN\..*:.*:.{.*} &lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Logfile für die Temperatur ===&lt;br /&gt;
 define SVG_FileLog_Sonoff_Temp SVG myDbLog:SVG_FileLog_Sonoff_Temp:HISTORY&lt;br /&gt;
 attr SVG_FileLog_Sonoff_Temp room MQTT&lt;br /&gt;
&lt;br /&gt;
Und schließlich fehlt noch das Logfile, damit der Temperaturverlauf auch in schönen Plots dargestellt werden kann.&lt;br /&gt;
Das hier verwendete Beispiel funktioniert nur mit einer DbLog.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Switch als Thermostat verwenden mit MQTT== &lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_55.jpg|thumb|left|alt=Thermostat]]&lt;br /&gt;
Mit diesem einfachen Beispiel wird ein Pelett Ofen mit einem externen Thermostat (sonoff Switch oder TH10/16) gesteuert. Zum besseren Überblick wird die Steuerung in einzelne Module getrennt, es könnte aber auch einiges zu einer einzigen Definition zusammen gefasst werden. Der Thermostat könnte auch als Frostwächter benutzt werden und ein anderes Heizgerät steuern.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 ###################################&lt;br /&gt;
 ### Sonoff Thermostat Regelung ####&lt;br /&gt;
 ###################################&lt;br /&gt;
 define Sonoff_dht MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_dht IODev myBroker&lt;br /&gt;
 attr Sonoff_dht alias Raumtemperatur&lt;br /&gt;
 attr Sonoff_dht group Thermostat&lt;br /&gt;
 attr Sonoff_dht icon temperature_humidity&lt;br /&gt;
 attr Sonoff_dht publishSet ON OFF cmnd/sonoff_dht/POWER/set&lt;br /&gt;
 attr Sonoff_dht room _Sonoff&lt;br /&gt;
 attr Sonoff_dht stateFormat {sprintf(&amp;quot;Temperatur: %.1f Grad Feuchte: %.1f &amp;quot;, ReadingsVal($name,&amp;quot;temperature&amp;quot;,0),  ReadingsVal($name,&amp;quot;humidity&amp;quot;,0))}&lt;br /&gt;
 attr Sonoff_dht subscribeReading_Sensor tele/sonoff_dht/SENSOR&lt;br /&gt;
 attr Sonoff_dht subscribeReading_state cmnd/sonoff_dht/POWER/set&lt;br /&gt;
FHEM Definition zur Erfassung der Temperatur und der Luftfeuchte. Damit dieses Beispiel funktioniert, ist am Sonoff Modul die Topic &amp;quot;&#039;&#039;&#039;sonoff_dht&#039;&#039;&#039;&amp;quot; zu setzen. Dieser Temperaturwert dient dem Thermostat als ISTWert.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Sw MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Sw IODev myBroker&lt;br /&gt;
 attr Sonoff_Sw alias Pellets Ofen&lt;br /&gt;
 attr Sonoff_Sw devStateIcon on:rc_GREEN:off off:rc_RED:on&lt;br /&gt;
 attr Sonoff_Sw eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_Sw group Thermostat&lt;br /&gt;
 attr Sonoff_Sw icon sani_boiler_temp&lt;br /&gt;
 attr Sonoff_Sw publishSet ON OFF cmnd/sonoff_dht/POWER/set&lt;br /&gt;
 attr Sonoff_Sw room _Sonoff&lt;br /&gt;
 attr Sonoff_Sw stateFormat Licht&lt;br /&gt;
 attr Sonoff_Sw subscribeReading_Licht tele/sonoff_dht/POWER&lt;br /&gt;
 attr Sonoff_Sw subscribeReading_state cmnd/sonoff_dht/POWER/set&lt;br /&gt;
 attr Sonoff_Sw webCmd ON:OFF&lt;br /&gt;
FHEM Definition zum Absetzen der Befehle für das Relais (Thermostat) Ein- / Aus. Wenn das zu steuernde Geräte einen potentialfreien Thermostatanschluß benötigt (in den meisten Fällen), muss noch ein Relais dazwischen geschaltet werden um die Trennung der Netzspannung zu gewährleisten.&lt;br /&gt;
&lt;br /&gt;
 define ThermostatPellets dummy&lt;br /&gt;
 attr ThermostatPellets alias Pellets Ofen Sollwert&lt;br /&gt;
 attr ThermostatPellets group Thermostat&lt;br /&gt;
 attr ThermostatPellets icon temp_control&lt;br /&gt;
 attr ThermostatPellets room _Sonoff&lt;br /&gt;
 attr ThermostatPellets setList state:0,5,10,12,13,14,15,16,17,17.5,18,18.5,19,19.5,20,20.5,21,21.5,22,23,24,25,26,27&lt;br /&gt;
 attr ThermostatPellets webCmd state&lt;br /&gt;
Die Sollwertvorgabe für das Thermostat durch einen Dummy, damit können die gewünschten Temperaturen eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
 ### sofort ausführen wenn neuer Sollwert eingestellt wird ###&lt;br /&gt;
 define Thermostat_on_notify notify ThermostatPellets IF (ReadingsVal(&amp;quot;Sonoff_Sw&amp;quot;,&amp;quot;state&amp;quot;,0) eq &amp;quot;OFF&amp;quot; &amp;amp;&amp;amp; (ReadingsVal(&amp;quot;Sonoff_dht&amp;quot;,&amp;quot;temperature&amp;quot;,0) &amp;lt;= Value(&amp;quot;ThermostatPellets&amp;quot;))) (set Sonoff_Sw ON)&lt;br /&gt;
 define Thermostat_off_notify notify ThermostatPellets IF (ReadingsVal(&amp;quot;Sonoff_Sw&amp;quot;,&amp;quot;state&amp;quot;,0) eq &amp;quot;ON&amp;quot; &amp;amp;&amp;amp; (ReadingsVal(&amp;quot;Sonoff_dht&amp;quot;,&amp;quot;temperature&amp;quot;,0) &amp;gt; Value(&amp;quot;ThermostatPellets&amp;quot;))) (set Sonoff_Sw OFF)&lt;br /&gt;
Mit einem notify wird die manuelle Änderung des Sollwertes überwacht und sofort reagiert.&lt;br /&gt;
&lt;br /&gt;
 ## zyklisch prüfen ob Sollwert erreicht wurde ###&lt;br /&gt;
 define Thermostat_on at +*00:15:00 IF (ReadingsVal(&amp;quot;Sonoff_Sw&amp;quot;,&amp;quot;Licht&amp;quot;,0) eq &amp;quot;OFF&amp;quot; &amp;amp;&amp;amp; (ReadingsVal(&amp;quot;Sonoff_dht&amp;quot;,&amp;quot;temperature&amp;quot;,0) &amp;lt;= Value(&amp;quot;ThermostatPellets&amp;quot;))) (set Sonoff_Sw ON)&lt;br /&gt;
 define Thermostat_off at +*00:15:00 IF (Value(&amp;quot;Sonoff_Sw&amp;quot;) eq &amp;quot;ON&amp;quot; &amp;amp;&amp;amp; (ReadingsVal(&amp;quot;Sonoff_dht&amp;quot;,&amp;quot;temperature&amp;quot;,0) &amp;gt; Value(&amp;quot;ThermostatPellets&amp;quot;))) (set Sonoff_Sw OFF)&lt;br /&gt;
Hier noch die Soll- Ist Wertvergleiche zur Steuerung. Es wird alle 15 Minuten überprüft ob die Temperatur erreicht ist. Bei einer trägen Heizung sollten 15 Minuten ausreichend sein, wer will kann dies aber auch alle 5 oder 10 Minuten prüfen.&lt;br /&gt;
Da des öfteren die Bezeichnungen der Readings im Sketch geändert werden ( zB:temperature ), bitte die richtige Schreibweise ( Groß/Klein ) in den Readings kontrollieren und gegebenenfalls hier anpassen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Switch mit Bewegungsmelder HC-SR501== &lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_pir_1.jpg|thumb|left|alt=Bewegungsmelder]]&lt;br /&gt;
Basierend auf dem Wall Switch MQTT Sketch von Arends wurde hier ein Sonoff BASIC + PIR HC-SR501 in eine größere Verteilerdose eingebaut, der Sonoff wurde dabei etwas gekürzt. Die Bewegungsmelder sind ab etwa 70 Cent erhältlich.&lt;br /&gt;
&lt;br /&gt;
Der Sketch kann auch den Blink Modus. Damit kann man im Alarmfall z.B. Alle Strahler rings ums Haus blinken lassen.&lt;br /&gt;
&lt;br /&gt;
Mehr dazu kann hier im [https://forum.fhem.de/index.php/topic,63824.0.html Forum]im Diskussionsthread nachgelesen werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_pir_2.jpg|thumb|left|alt=Bewegungsmelder]]&lt;br /&gt;
Ein Beispiel wir der Bewegungsmelder in der Feuchtraumdose montiert werden kann. Wird der Bewegungsmelder abgesetzt vom Switch montiert, ist darauf zu achten das die Kabel nicht zu lange werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
===Spannungsversorgung des HC-SR501===&lt;br /&gt;
[[Datei:sonoff_pir_4.jpg|thumb|left|alt=5V für Bewegungsmelder]]&lt;br /&gt;
Der HC-SR501 wird vom Sonoff versorgt, wobei hier die 3,3 V nicht immer ausreichen. Es ist deshalb am HC-SR501 eine Diode zu überbrücken, dann reichen die 3,3V vom Sonoff. Es können aber auch am Sonoff die 5V angezapft werden. Hier im Bild dargestellt wo die 5V angezapft werden können.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_pir_5.jpg|thumb|left|alt=3,3V für Bewegungsmelder]]&lt;br /&gt;
Hier eine kleine Übersicht der wichtigsten Teile und deren Platzierung am HC-SR501. &lt;br /&gt;
Den PIR kann man auch mit 3,3V betreiben wenn man die Diode am Eingang nach Vcc überbrückt, dann reicht die Spannung für einen reibungslosen Betrieb völlig aus. Dies gilt für den HC-SR501, wird ein anderer PIR verwendet muss man nachschauen ob das auch möglich ist, ansonsten die 5V Variante wählen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===Einbindung des HC-SR501 in FHEM===&lt;br /&gt;
 # ------------- Sonoff_pir mit Bewegungsmelder ---------------&lt;br /&gt;
 define Sonoff_pir MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_pir IODev myBroker&lt;br /&gt;
 attr Sonoff_pir eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_pir group Sonoff&lt;br /&gt;
 attr Sonoff_pir icon hue_filled_br30&lt;br /&gt;
 attr Sonoff_pir publishSet ON OFF cmnd/sonoff_pir/POWER/set&lt;br /&gt;
 attr Sonoff_pir room MQTT&lt;br /&gt;
 attr Sonoff_pir stateFormat Licht&lt;br /&gt;
 attr Sonoff_pir subscribeReading_Licht stat/sonoff_pir/POWER&lt;br /&gt;
 attr Sonoff_pir subscribeReading_state cmnd/sonoff_pir/POWER/set&lt;br /&gt;
 attr Sonoff_pir webCmd :&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel wie der Sonoff Switch in FHEM eingebunden wird. Wenn im Sketch der Prefix von stat auf tele geändert wurde, ist dies auch hier durchzuführen ( subscribeReading_Licht tele/sonoff_pir/POWER ), ansonsten bleibt es so wie im Beispiel. Getestet wurde dieses Beispiel mit Version 3.1.6. Die Topic sollte auf den Namen &amp;quot;sonoff_pir&amp;quot; eingestellt werden. Bei anderen Namen ist dies entsprechend in FHEM anzupassen. &lt;br /&gt;
&lt;br /&gt;
Mit dem Kommando &#039;&#039;&#039;BUTTONTOPIC Alarm_SO2&#039;&#039;&#039; ( direkt im Webinterface des Sonoff ) wird der Wall Switch GPIO14 vom Sonoff entkoppelt und somit sendet der Bewegungsmelder direkt an FHEM --&amp;gt; Motion_pir MQTT_DEVICE&lt;br /&gt;
&lt;br /&gt;
Es sollte auch unbedingt kontrolliert werden, wie die Ausgabe des Alarmes in der Console erfolgt. Erscheint hier die Meldung &amp;quot;cmnd/Alarm_SO2/POWER = TOGGLE&amp;quot; dann muss mit dem Kommando &amp;quot;&#039;&#039;&#039;switchmode 1&#039;&#039;&#039;&amp;quot; das Ausgabeformat umgeschaltet werden, erst dann kommt das gewünschte Format &amp;quot;On&amp;quot; und &amp;quot;OFF&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 # ------------------ Motion_pir MQTT_DEVICE -----------------&lt;br /&gt;
 define Motion_pir MQTT_DEVICE&lt;br /&gt;
 attr Motion_pir IODev myBroker&lt;br /&gt;
 attr Motion_pir devStateIcon on:on-for-timer off:off&lt;br /&gt;
 attr Motion_pir eventMap ON:on OFF:off&lt;br /&gt;
 attr Motion_pir group Sonoff&lt;br /&gt;
 attr Motion_pir icon people_sensor&lt;br /&gt;
 attr Motion_pir room MQTT&lt;br /&gt;
 attr Motion_pir stateFormat Alarm&lt;br /&gt;
 attr Motion_pir subscribeReading_Alarm cmnd/Alarm_SO2/POWER&lt;br /&gt;
Die Motion_pir dient nun zur eigentlichen Einschaltung des Lichtes und sendet das Kommando &#039;&#039;&#039;cmnd/Alarm_SO2/POWER&#039;&#039;&#039; an den entkopellten GPIO 14 des Switch.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # ------------------ DoIf zur Motion Abfrage -----------------&lt;br /&gt;
 define di_Sonoff_pir_Alarm DOIF ([Motion_pir:&amp;quot;on&amp;quot;] and [Tag_Nacht:twilight_weather] &amp;lt; 35) (set Sonoff_pir on) DOELSEIF ([Motion_pir:&amp;quot;off&amp;quot;] and [Tag_Nacht:twilight_weather] &amp;lt; 35) (set Sonoff_pir off)&lt;br /&gt;
 attr di_Sonoff_pir_Alarm comment Abhängig von Helligkeitssensor wird nachts,bei Bewegung das Licht eingeschaltet!&lt;br /&gt;
 attr di_Sonoff_pir_Alarm group Sonoff&lt;br /&gt;
 attr di_Sonoff_pir_Alarm room MQTT&lt;br /&gt;
Zusätzlich kann nun mit einem &#039;&#039;&#039;Doif&#039;&#039;&#039; verknüpft werden um das Ganze mit Tag_Nacht:twilight_weather dann in Abhängigkeit der Helligkeit zu schalten. Selbstverständlich kann jede andere Quelle mit einem Helligkeitswert verwendet werden.&lt;br /&gt;
&lt;br /&gt;
===Alarmausgabe über Grouptopic===&lt;br /&gt;
 # ------------------------ Sonoffs Group ----------------------&lt;br /&gt;
 define Sonoffs MQTT_DEVICE&lt;br /&gt;
 attr Sonoffs IODev myBroker&lt;br /&gt;
 attr Sonoffs eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoffs group Sonoff&lt;br /&gt;
 attr Sonoffs icon hue_filled_br30&lt;br /&gt;
 attr Sonoffs publishSet ON OFF cmnd/sonoffs/POWER/set&lt;br /&gt;
 attr Sonoffs room MQTT&lt;br /&gt;
 attr Sonoffs stateFormat state&lt;br /&gt;
 attr Sonoffs subscribeReading_Licht stat/sonoffs/POWER&lt;br /&gt;
 attr Sonoffs subscribeReading_state cmnd/sonoffs/POWER/set&lt;br /&gt;
Wer möchte kann auch mit der Group Topic mehrere Switches mit Bewegungsmelder zusammenfassen und alle Lampen im Alarmfall gemeinsam in den Blinkmodus schalten. cmnd/sonoffs ist das Kommando für die Group Topic, sofern diese vom User nicht verändert wurde.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Switch als IR-Sender verwenden == &lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_ir_1.jpg|thumb|left|alt=IR]]&lt;br /&gt;
Mit einem normalen Sonoff Basic Modul kann dies zu einer IR Fernbedienung hochgerüstet werden.&lt;br /&gt;
&lt;br /&gt;
Der einfache Schaltplan ist [https://raw.githubusercontent.com/altelch/SonoffIR/master/SonoffIR-Schematics.png hier] zu finden und der Nachbau ist sehr einfach. Man kann aber auch aus einer alten FB die IR-Diode ausbauen und zusammen schalten. Ein kleines Howto ist in [https://github.com/altelch/SonoffIR diesem Wiki] auf Github zu finden.&lt;br /&gt;
&lt;br /&gt;
Verwendet wird dazu der Arends Sketch.&lt;br /&gt;
&lt;br /&gt;
Als erstes sucht man sich auf [http://lirc.sourceforge.net/remotes/ LIRC]die entsprechenden FB-Codes, im Beispiel hier für einen Samsung TV 55&amp;quot; Curved UHD HU8580. Die FB ist zwar nicht exakt dieselbe, aber die Befehle passen soweit. Im Webif des Sonoff Modules ist beim angeschlossenen GPIO der IR-Diode &amp;quot;8 IRremote&amp;quot; einzustellen.&lt;br /&gt;
&lt;br /&gt;
Link zum [https://forum.fhem.de/index.php/topic,67316.0.html Forums Thread]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Wichtig sind dabei folgende Daten:&lt;br /&gt;
 name  Samsung_BN59-00940A&lt;br /&gt;
 bits           16&lt;br /&gt;
 pre_data_bits  16&lt;br /&gt;
 pre_data       0xE0E0&lt;br /&gt;
 Power On/Off   0x40BF[/code]&lt;br /&gt;
&lt;br /&gt;
Nun stellt man sich den Sendestring zusammen:&lt;br /&gt;
 predata+Befehl =  E0E0&#039;&#039;&#039;40BF&#039;&#039;&#039; (hex) = 3772793023 (dec) und 32 Bit Datenlänge.&lt;br /&gt;
&lt;br /&gt;
 Der JSON String für den IRSend ist laut [https://github.com/arendst/Sonoff-Tasmota/wiki/Commands Arends Wiki] folgender.&lt;br /&gt;
 IRsend    | {&amp;quot;protocol&amp;quot;: &amp;quot;&amp;lt;proto&amp;gt;&amp;quot;, | Send IR remote control as JSON encapsulated command.&lt;br /&gt;
           |   &amp;quot;bits&amp;quot;: 1..32         | &amp;lt;proto&amp;gt; is NEC, SONY, RC5, RC6, DISH, JVC or SAMSUNG&lt;br /&gt;
           |   &amp;quot;data&amp;quot;: 1..(2^32)-1}  | bits are the required number of data bits.&lt;br /&gt;
           |                         | data is the data frame as 32 bit unsigned integer.&lt;br /&gt;
           |                         | See http://www.lirc.org/ for more info.&lt;br /&gt;
&lt;br /&gt;
das ergibt dann unseren Befehl für die Kommandozeile am Modul. Die Bitlänge für Pre und Data sind ebenfalls zu addieren (16 + 16 = 32 Bit) und beim Arends Sketch muss im JSON Format gesendet werden:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;irsend  {&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772793023}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
oder hier für die Kommandozeile am Broker:&lt;br /&gt;
 &#039;&#039;&#039;mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772793023}&#039;&#039;&#039;&#039;&lt;br /&gt;
TestSwitch ist hier der verwendete Name des Sonoff Moduls, wird ein anderer Name verwendet ist dieser hier anzupassen.&lt;br /&gt;
&lt;br /&gt;
Jedesmal wenn nun der Befehl gesendet wird, wird entweder Ein- oder Aus geschaltet. Die Verzögerung über Wlan ist vernachlässigbar. Ebenso können die Kanäle oder die Laustärke verstellt werden. Im Prinzip funktionieren alle Befehle die auf der FB vorhanden sind.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Sonoff Switch als IR-Sender FHEM Beispiel===&lt;br /&gt;
[[Datei:sonoff_ir_2.jpg|thumb|left|alt=IR]]&lt;br /&gt;
Hier ein Beispiel wie der Code für die Fernbedienung in Fhem eingebunden werden kann.&lt;br /&gt;
 define RC_TV remotecontrol&lt;br /&gt;
 attr RC_TV rc_iconpath icons/remotecontrol&lt;br /&gt;
 attr RC_TV rc_iconprefix black_btn_&lt;br /&gt;
 attr RC_TV room Entwicklung&lt;br /&gt;
 attr RC_TV row00 KEY_POWER:POWEROFF,:blank,:blank&lt;br /&gt;
 attr RC_TV row02 :blank,:blank,:blank&lt;br /&gt;
 attr RC_TV row03 KEY_1:1,KEY_2:2,KEY_3:3&lt;br /&gt;
 attr RC_TV row04 KEY_4:4,KEY_5:5,KEY_6:6&lt;br /&gt;
 attr RC_TV row05 KEY_7:7,KEY_8:8,KEY_9:9&lt;br /&gt;
 attr RC_TV row06 :blank,KEY_0:0,:blank&lt;br /&gt;
 attr RC_TV row07 :blank,:blank,:blank&lt;br /&gt;
 attr RC_TV row08 KEY_VOLUMEUP:UP,KEY_MUTE:MUTE,KEY_CHANNELUP:CHUP&lt;br /&gt;
 attr RC_TV row09 KEY_VOLUMEDOWN:DOWN,:blank,KEY_CHANNELDOWN:CHDOWN&lt;br /&gt;
&lt;br /&gt;
 define Samsung_TV notify RC_TV &amp;quot;/opt/fhem/ircmd.sh $EVENT&amp;quot;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
In einem externen Shell Script werden die Parameter übergeben und der Sendestring für den IRSend zusammen gestellt. Das Script ins FHEM Home Verzeichnis kopieren ( /opt/fhem ) und die Rechte auf 755 setzen.&lt;br /&gt;
[https://wiki.fhem.de/wiki/Remotecontrol Link zum Wiki] einer universellen Fernbedienung.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh -e&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_POWER&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772793023}&#039;&lt;br /&gt;
 fi&lt;br /&gt;
 # E0E0E01F   3772833823&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_VOLUMEUP&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772833823}&#039;&lt;br /&gt;
 fi&lt;br /&gt;
 # E0E0D02F   3772829743&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_VOLUMEDOWN&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772829743}&#039;&lt;br /&gt;
 fi&lt;br /&gt;
 # E0E0F00F   3772837903&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_MUTE&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772837903}&#039;&lt;br /&gt;
 fi&lt;br /&gt;
 # E0E020DF   3772784863&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_1&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772784863}&#039;&lt;br /&gt;
 fi&lt;br /&gt;
 # E0E0A05F   3772817503&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_2&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772817503}&#039;&lt;br /&gt;
 fi   &lt;br /&gt;
 # E0E0609F   3772801183&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_3&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772801183}&#039;&lt;br /&gt;
 fi &lt;br /&gt;
 # E0E010EF   3772780783&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_4&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772780783}&#039;&lt;br /&gt;
 fi &lt;br /&gt;
 # E0E0906F   3772813423&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_5&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772813423}&#039;&lt;br /&gt;
 fi &lt;br /&gt;
 # E0E050AF   3772797103&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_6&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772797103}&#039;&lt;br /&gt;
 fi &lt;br /&gt;
 # E0E030CF   3772788943&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_7&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772788943}&#039;&lt;br /&gt;
 fi&lt;br /&gt;
 # E0E0B04F   3772821583&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_8&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772821583}&#039;&lt;br /&gt;
 fi &lt;br /&gt;
 # E0E0708F   3772805263&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_9&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772805263}&#039;&lt;br /&gt;
 fi         &lt;br /&gt;
 # E0E08877   3772811383&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_0&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772811383}&#039;&lt;br /&gt;
 fi&lt;br /&gt;
 # E0E048B7   3772795063&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_CHANNELUP&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772795063}&#039;&lt;br /&gt;
 fi&lt;br /&gt;
 # E0E008F7   3772778743&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_CHANNELDOWN&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772778743}&#039;&lt;br /&gt;
 fi  &lt;br /&gt;
Das Script kann sehr leicht für jede andere FB abgeändert werden und auch noch zusätzliche Tasten eingebunden werden. Bitte nicht auf die vorangestellten Pre-Data-Bits vergessen. Auf die Verwendung des Scriptes kann auch verzichtet werden, wenn der JSON String in Fhem direkt zusammen gestellt wird. Für den Nachbau ist es aber leichter verständlicher und kann auch leicht selber an die eigene FB angepasst werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
==Sonoff Development Board==&lt;br /&gt;
[[Datei:sonoff_dev_1.jpg|thumb|left|alt=Dev. Board]]&lt;br /&gt;
Das Board kommt ohne Software und muss zunächst mit einem Sketch bespielt werden. Hier kurz beschrieben der Arends Sketch, es funktioniert aber mit ESPEasy genau so gut. &lt;br /&gt;
&lt;br /&gt;
Damit die vielen GPIO&#039;s auch nach freiem Wunsch zugeordnet werden können, müssen die erforderten Einstellungen da allerdings in der sonoff_template.h bekannt gegeben werden. Hier wurde der GPIO12 und 13 einem Relais zugeordnet. Der Rest kann dann frei im Webif konfiguriert werden (Type = User Test).&lt;br /&gt;
&lt;br /&gt;
Link zum [https://www.itead.cc/wiki/Sonoff_DEV Wiki des Herstellers]&lt;br /&gt;
&lt;br /&gt;
Link zum [https://www.itead.cc/wiki/images/3/30/01.73.02.0101_Sonoff_DEV_Schematic.pdf Schaltplan]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Anschlüsse und GPIO&#039;s am Board.&lt;br /&gt;
&lt;br /&gt;
 3V3    VDD   3.3V Power supply output  &lt;br /&gt;
 GND    GND   Power supply pin  &lt;br /&gt;
  4    GPIO4  GPIO4  &lt;br /&gt;
  5    GPIO5  GPIO5  &lt;br /&gt;
 12    GPIO12 GPIO12/HSPIQ  &lt;br /&gt;
 13    GPIO13 GPIO13/HSPID  &lt;br /&gt;
 14    GPIO14 GPIO14/HSPICLK  &lt;br /&gt;
 ADC    ADC   Detect analog input voltage（0~1V）  &lt;br /&gt;
 RX    U0RXD  Flash programming UART RX;GPIO3  &lt;br /&gt;
 TX    U0TXD  Flash programming UART TX;GPIO1;SPICS1  &lt;br /&gt;
 E-FW  GPIO0  GPIO0/SPICS2/Serial programming enable pin  &lt;br /&gt;
 RESET RESET  External reset signal(low active)  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_dev_2.jpg|thumb|left|alt=Dev. Board]]&lt;br /&gt;
hier können die wesentlichen Funktionen (Relaisfunktion oder freier GPIO) konfiguriert werden. Man zählt die GPIO&#039;s von oben nach unten und wenn einer nicht benötigt wird, wird eine 0 angegeben.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
 { &amp;quot;User Test&amp;quot;,       // Sonoff Basic User Test&lt;br /&gt;
     GPIO_KEY1,        // GPIO00 Button&lt;br /&gt;
     0,&lt;br /&gt;
     GPIO_USER,        // GPIO02 Optional sensor&lt;br /&gt;
     GPIO_USER,        // GPIO03 Serial TXD and Optional sensor&lt;br /&gt;
     GPIO_USER,        // GPIO04 Optional sensor&lt;br /&gt;
     GPIO_USER,        // GPIO05 Optional sensor&lt;br /&gt;
     0, 0, 0, 0, 0, 0,&lt;br /&gt;
     &#039;&#039;&#039;GPIO_REL2&#039;&#039;&#039;,        // GPIO12 Relay 2 (0 = Off, 1 = On)&lt;br /&gt;
     &#039;&#039;&#039;GPIO_REL1&#039;&#039;&#039;,        // GPIO13 Relay 1 (0 = Off, 1 = On)&lt;br /&gt;
     GPIO_USER,        // GPIO14 Optional sensor&lt;br /&gt;
     0, 0&lt;br /&gt;
  }&lt;br /&gt;
Hier wurde am Modul &amp;quot;&#039;&#039;&#039;User Test&#039;&#039;&#039;&amp;quot; in der Datei &amp;quot;sonoff_template.h&amp;quot; abgeändert, um 2 Relais über GIPO12 und GPIO13 ansteuern zu können. &lt;br /&gt;
&lt;br /&gt;
Gedacht ist es als Enwicklerboard, es ist aber auch genau so gut für den produktiven Einsatz geeignet, hat aber kein eingebautes Netzteil. Es ist zum flashen &#039;&#039;&#039;kein externes FTDI Modul notwendig&#039;&#039;&#039;, das hat es bereits an Board und es muss lediglich der USB Treiber für Windows installiert werden. Geflasht wird dann mit dem USB Kabel der Spannungsversorgung.&lt;br /&gt;
&lt;br /&gt;
Die 4-pol. Stecker haben das &#039;&#039;&#039;Rastermaß 2.0 mm&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
===Sonoff Dev Board Anbindung FHEM===&lt;br /&gt;
&lt;br /&gt;
je nach Anwendungszweck wird entweder ein normaler Schalter oder wie bei DHT16 beschrieben ein oder mehrere Sensoren angebunden.&lt;br /&gt;
Beim Arends Sketch ist zu beachten, dass pro Sensorgruppe nur ein Sensor angeschlossen werden kann.&lt;br /&gt;
&lt;br /&gt;
 •DHT11 Temperature and Humidity -  DHT11 (1)  in group 1&lt;br /&gt;
 •DHT21 Temperature and Humidity -  AM2301 (2) in group 1&lt;br /&gt;
 •AM2301 Temperature and Humidity - AM2301 (2) in group 1&lt;br /&gt;
 •DHT22 Temperature and Humidity -  DHT22 (3)  in group 1&lt;br /&gt;
 •AM2302 Temperature and Humidity - DHT22 (3)  in group 1&lt;br /&gt;
 •AM2321 Temperature and Humidity - DHT22 (3)  in group 1&lt;br /&gt;
 •DS18B20 Temperature           - DS18x20 (4)  in group 2&lt;br /&gt;
 Enable option  USE_DS18x20  in  user_config.h  for multiple sensors using OneWire library&lt;br /&gt;
 •DS18S20 Temperature          -  DS18x20 (4)  in group 2&lt;br /&gt;
 Enable option  USE_DS18x20  in  user_config.h  using OneWire library&lt;br /&gt;
 •External switch               -  Switch (9) &lt;br /&gt;
 Use  SwitchMode  to tune it&#039;s behaviour&lt;br /&gt;
 •HC-SR501 PIR Motion Detection -  Switch (9) &lt;br /&gt;
 Use  SwitchMode  to tune it&#039;s behaviour&lt;br /&gt;
Beispiel: 2 DHT22 funktionieren nicht, aber ein DHT22 und ein DS18b20 schon. Wer mehrere Sensoren benötigt, muss auf ESPEasy ausweichen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:IP Components]]&lt;br /&gt;
--[[Benutzer:Reinhart|Reinhart]] ([[Benutzer Diskussion:Reinhart|Diskussion]]) 23. Feb. 2017 (CET)&lt;/div&gt;</summary>
		<author><name>Reinhart</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:Sonoff_dev_2.jpg&amp;diff=20201</id>
		<title>Datei:Sonoff dev 2.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:Sonoff_dev_2.jpg&amp;diff=20201"/>
		<updated>2017-02-23T14:59:01Z</updated>

		<summary type="html">&lt;p&gt;Reinhart: eigene Aufnahmen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;eigene Aufnahmen&lt;/div&gt;</summary>
		<author><name>Reinhart</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:Sonoff_dev_1.jpg&amp;diff=20200</id>
		<title>Datei:Sonoff dev 1.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:Sonoff_dev_1.jpg&amp;diff=20200"/>
		<updated>2017-02-23T14:58:49Z</updated>

		<summary type="html">&lt;p&gt;Reinhart: eigene Aufnahmen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;eigene Aufnahmen&lt;/div&gt;</summary>
		<author><name>Reinhart</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Sonoff&amp;diff=20182</id>
		<title>Sonoff</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Sonoff&amp;diff=20182"/>
		<updated>2017-02-23T09:43:32Z</updated>

		<summary type="html">&lt;p&gt;Reinhart: Sonoff IRSend hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=Ankopplung der Sonoff Module an Fhem&lt;br /&gt;
|ModType=&lt;br /&gt;
|ModForumArea=ESP8266&lt;br /&gt;
|ModTechName=Sonoff&lt;br /&gt;
|ModOwner=Reinhart &lt;br /&gt;
}}&lt;br /&gt;
&#039;&#039;&#039;SONOFF, dieser Artikel beschreibt die Ankopplung der kostengünstigen Sonoff Module an FHEM mit ESPEasy oder Arends MQTT.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Seit einiger Zeit werden von der [https://www.itead.cc/sonoff-wifi-wireless-switch.html Fa. Itead] kostengünstige &amp;quot;sonoff&amp;quot; Produkte angeboten die glücklicherweise den [http://dl.itead.cc/IM151116002/0A-ESP8266_Specifications_v4.1.pdf ESP8266 Chip] On Board haben und somit die ideale Grundlage für [http://www.esp8266.nu/index.php/Main_Page ESPEasy] und für [https://forum.fhem.de/index.php/board,46.0.html FHEM] darstellen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nützliche Links zum Hersteller:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://www.itead.cc/blog/user-guide-for-sonoff-slampher User Manual von Itead]&lt;br /&gt;
&lt;br /&gt;
[https://www.itead.cc/wiki/images/6/6b/Sonoff_schmatic.pdf Sonoff Schaltplan]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Hardware=&lt;br /&gt;
&#039;&#039;&#039;Bitte unbedingt die elektrotechnischen Sicherheitsrichtlinien beachten und einhalten!&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_sw_15.jpg|thumb|left|alt=Warnung Netzspannung]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Achtung: An dem Modul liegt Netzspannung an die lebensgefährlich ist. Es dürfen nur entsprechend ausgebildete Personen dieses Modul in Betrieb nehmen. Zum Umbau und zur Softwareaktualisierung darf keine Netzspannung angeschlossen sein&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Wie gefährlich das hantieren mit Netzspannung sein kann, wird hier am Beispiel eines [http://mysku.ru/blog/china-stores/45762.html russischen Anwenders] gezeigt, der hat beim Flashen die Netzspannung am Modul gelassen und somit über die Verbindung mit dem Netzteil des Laptop lebensgefährliche Spannung auf die FTDI Schnittstelle gebracht. Das Modul ist dabei abgeraucht!&lt;br /&gt;
&lt;br /&gt;
==Modelle==&lt;br /&gt;
&lt;br /&gt;
===Produktübersichtsliste sonoff===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:right&amp;quot;&lt;br /&gt;
! Produkt Name !! Beschreibung !! Spannungsversorgung !!  Imax !! Pmax !! Frequenz !! Schaltplan !! Link&lt;br /&gt;
|-&lt;br /&gt;
| Sonoff || Wireless control switch || 90~250V AC || 10A || 2200W || 2.4Ghz || [http://wiki.iteadstudio.com/Sonoff Plan] || [https://www.itead.cc/smart-home/sonoff-wifi-wireless-switch.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| Sonoff RF || 433 RF remote || 90~250V AC || 10A || 2200W || 2.4Ghz || [http://wiki.iteadstudio.com/Sonoff_RF Plan] || [https://www.itead.cc/smart-home/im151116003.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| Sonoff SV || Low voltage Input || 5~24V DC || 10A || 240W DC || 2.4Ghz || [http://wiki.iteadstudio.com/Sonoff_SV Plan] || [https://www.itead.cc/smart-home/sonoff-sv.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| Sonoff TH10/TH16 || Monitor and set Temp.&amp;amp;Hum. ||  90~250V AC || 10A/16A || 2200W(10A)/3500W(16A)	 || 2.4Ghz || [http://wiki.iteadstudio.com/Sonoff_TH_10/16 Plan] || [https://www.itead.cc/smart-home/sonoff-th.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Sonoff Dual || Remote control 2 devices ||  90~250V AC || 16A || 3500W || 2.4Ghz || [https://www.itead.cc/wiki/Sonoff_Dual Plan] || [https://www.itead.cc/sonoff-dual.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Sonoff Pow || Report power &amp;amp;power usage ||  90~250V AC || 16A || 3500W || 2.4Ghz || [https://www.itead.cc/wiki/Sonoff_Pow Plan] || [https://www.itead.cc/sonoff-pow.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Sonoff LED || WiFi Control Dimming LED ||  180~265V AC || 0.3-0.6A || 42W || 2.4Ghz ||  kein || [https://www.itead.cc/sonoff-led.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Sonoff Touch || WiFi wall touch switch ||  90~250V AC || 2A || 400W || 2.4Ghz || kein || [https://www.itead.cc/sonoff-touch.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Slampher || Wireless control light holder ||  90~250V AC || 2A || 200W || 2.4Ghz || [http://wiki.iteadstudio.com/Slampher Plan] || [https://www.itead.cc/smart-home/slampher-wifi-wireless-light-holder.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  S20 Smart Socket || Smart socket || 	90~250V AC || 10A || 2000W || 2.4Ghz || kein || [https://www.itead.cc/smart-home/smart-socket-eu.html EU-Stecker] &lt;br /&gt;
|-&lt;br /&gt;
|  iFan || Smart fan ||  185~264V AC ||﹤1A || 60W || 2.4Ghz || kein || [https://www.itead.cc/smart-home/smart-socket-eu.html EU-Stecker] &lt;br /&gt;
|-&lt;br /&gt;
| Motor/Pump Control Switch || clockwise/anticlockwise running ||  5V/7~32V DC || 10A || 50~320W || 2.4Ghz || kein || [https://www.itead.cc/smart-home/motor-reversing-wifi-wireless-switch.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| 1 Chnl Inching/self-locking Switch || Access control ||  	5V/12V DC || 10A || 50/120W || 2.4Ghz || kein || [https://www.itead.cc/smart-home/inching-self-locking-wifi-wireless-switch.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  4 Chnl Inching/self-locking/inter-locking Switch || Access control, rolling door control ||  5V/5~32V DC/90~250V AC || 10A || 50~320W/2500W || 2.4Ghz || kein || [https://www.itead.cc/ifan.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Eine Übersichtliste der verschiedenen Produkte mit technischen Kurzangaben.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Model: IM151116002: Erstes Modell===&lt;br /&gt;
[https://www.itead.cc/sonoff-wifi-wireless-switch.html Sonoff WiFi Wireless Smart Switch for MQTT COAP Smart Home]&lt;br /&gt;
[[Datei:sonoff_sw_0.jpg|thumb|left|alt=sonoff Switch]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Das sonoff Modul ist in einem zweckmäßigen und gefälligem Gehäuse verbaut!&lt;br /&gt;
&lt;br /&gt;
====Platine====&lt;br /&gt;
[[Datei:sonoff_sw_1.jpg|thumb|left|alt=sonoff Switch von vorne]]&lt;br /&gt;
&lt;br /&gt;
Die Platine ist sehr übersichtlich aufgebaut und der Hersteller hat auch alle Vorbereitungen zum Flashen einer alternativen Software vorgesehen (über serielle Schnittstelle via FTDI-Modul). Mit einer alternativen Software wie ESPEasy ist eine direkte Ankopplung des &#039;&#039;&#039;sonoff&#039;&#039;&#039; an FHEM somit ein leicht durchführbarer Vorgang.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_3.jpg|thumb|left|alt=sonoff Switch von hinten]]&lt;br /&gt;
Die stromführenden Leitungen wurden mit Lötzinn vom Hersteller verstärkt um die angegebenen Stromstärken mit geringer Hitzeentwicklung zu transportieren.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung: Bitte vor den Arbeiten kontrollieren, das an der Platine keine Netzspannung angeschlossen ist, LEBENSGEFAHR!&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Model: IM160712005: TH 10A/16A ===&lt;br /&gt;
[https://www.itead.cc/sonoff-th.html Sonoff TH 10A/16A WiFi Smart Switch]&lt;br /&gt;
&lt;br /&gt;
====TH10 / TH16 weitere GPIO zugänglich machen====&lt;br /&gt;
[[Datei:Sonoff_TH_10A-16A_kleiner.jpg|thumb|left|alt=TH10 / TH16 weitere GPIO zugänglich machen]]&lt;br /&gt;
Der Hersteller hat zwar schon Platine für eine weitere Stiftleiste vorbereitet, jedoch muss diese noch bestückt werden. Die nicht beschalteten Stifte können dann genutzt werden um die &amp;quot;verdeckten&amp;quot; GPIO zugänglich zu machen. Die Verdrahtung kann dem Bild entnommen werden.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Achtung: Bitte vor den Arbeiten kontrollieren, das an der Platine keine Netzspannung angeschlossen ist, LEBENSGEFAHR!&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Model: IM160811001: Sonoff Dual ===&lt;br /&gt;
[https://www.itead.cc/sonoff-dual.html Sonoff Dual WiFi Wireless Smart Swtich]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Model: IM160810001: Sonoff Pow ===&lt;br /&gt;
[https://www.itead.cc/sonoff-pow.html Sonoff POW WiFi Switch with Power Consumption Measurement]&lt;br /&gt;
[[Datei:sonoff_sw_30.jpg|thumb|left|alt=SONOFF POW]]Ein sehr interessantes und kostengünstiges Modul zur Messung der aktuellen Leistung. Das Modul kann via MQTT in FHEM angebunden werden.&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel zur Einbindung ist [http://www.fhemwiki.de/wiki/Sonoff#Sonoff_POW_einrichten hier unten] im Wiki beschrieben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===Model: weitere Modelle===&lt;br /&gt;
[https://www.itead.cc/search/result/?cat=&amp;amp;q=sonoff Sonoff Weitere Modelle finden sich auf der Homepage des Hersstellers]&lt;br /&gt;
&lt;br /&gt;
==Vorbereitungen zum Flashen==&lt;br /&gt;
[[Datei:sonoff_sw_2.jpg|thumb|left|alt=serielle Schnittstelle]]&lt;br /&gt;
&lt;br /&gt;
Hier auf der Platine sind die benötigten Signale für ein FTDI Modul schon vorhanden. Der quadratische Pin gleich über dem Taster ist die Spannungsversorgung zum Flashen vom FDTI von 3.3V Es muss daher unbedingt ein FTDI Modul genommen werden, dass nicht nur einen Jumper für 3.3V besitzt sondern auch die Spannung auf 3.3V herab setzt. Ist dies nicht der Fall, läuft man Gefahr das Modul unbrauchbar zu machen. Es ist daher zu empfehlen einen Spannungsteiler mit 2 Widerständen oder einen Pegelwandler zwischenschalten.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Signale der Schnittstelle==&lt;br /&gt;
von oben nach unten auf der Steckerleiste des sonoff U4 (Model: IM151116002).&lt;br /&gt;
&lt;br /&gt;
 Pin5 = vorbereitet für GPIO&lt;br /&gt;
 Pin4 = Masse&lt;br /&gt;
 Pin3 = TxD&lt;br /&gt;
 Pin2 = RxD&lt;br /&gt;
 Pin1 = 3.3V&lt;br /&gt;
&lt;br /&gt;
Siehe dazu auch den [https://forum.fhem.de/index.php/topic,55036.0.html Link aus dem Forum]:&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Platine mit Stiftleiste bestücken==&lt;br /&gt;
[[Datei:sonoff_sw_4.jpg|thumb|left|alt=Platine mit Stiftleiste bestücken]]&lt;br /&gt;
Der Hersteller hat zwar schon die Platine vorbereitet, jedoch muss sie noch mit einer Stiftleiste bestückt werden um das FTDI Modul bequem verbinden zu können. Nachdem einmal ESPEasy geflasht worden ist, kann es in Zukunft via WEB (OTA) geflasht werden und die Stiftleiste ist dann nicht mehr erforderlich. Aufgrund der geringen Kosten fällt dies jedoch nicht ins Gewicht.&amp;lt;br&amp;gt;&lt;br /&gt;
Für die Module TH10/TH16 sind die Lötpunkte für die Stiftleiste schon beschriftet. Die Stiftleiste selber muss allerdings auch nachgerüstet werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Achtung&#039;&#039;&#039;: Bitte vor den Arbeiten kontrollieren, das an der Platine keine Netzspannung angeschlossen ist, LEBENSGEFAHR!&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Software=&lt;br /&gt;
==MQTT und TASMOTA==&lt;br /&gt;
Der Autor Arends hat die Version Sonoff-MQTT-OTA-Arduino nun eingestellt und die Version 3.2.13 (Ende Jänner 2017)dürfte wohl die letzte dieser Generation gewesen sein. Mit der Einstellung dieser Version wurde zwar der Nachfolger &#039;&#039;&#039;TASMOTA&#039;&#039;&#039; erschaffen, aber leider nun auf das &#039;&#039;&#039;Messageformat LEGACY&#039;&#039;&#039; gänzlich verzichtet was bei der Auswertung der Messdaten in Fhem doch einige Probleme mit sich bringt, da der verwendete JSON String nun zusätzlich gefiltert werden muss.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Es gibt aber bereits sehr gute Lösungswege um dieses Problem zu beheben und somit spricht dem neuen Ausgabeformat nichts dagegen!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://forum.fhem.de/index.php/topic,66761.0.html in diesem Thread] wurde ein &#039;&#039;&#039;JSON to Reading Modul&#039;&#039;&#039; vorgestellt, dass den JSON String analysiert und alle darin enthaltenen Daten in Readings kopiert. Die Readings werden dabei in FHEM automatisch angelegt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Link: [https://github.com/arendst/Sonoff-Tasmota Tasmota]&lt;br /&gt;
&lt;br /&gt;
Link alte Software: [https://github.com/arendst/Sonoff-MQTT-OTA-Arduino Sonoff-MQTT-OTA-Arduino]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Alle hier im Wiki verwendeten Beispiele und deren Beschreibung sind nun für die neue Tasmota Version ausgelegt. Da in Tasmota fast alles im WEBIF konfiguriert werden kann, entfallen daher sinngemäß einige hier im Wiki erklärten Definitionen, speziell in der &amp;quot;user_config.h&amp;quot;.&lt;br /&gt;
Trotz diesem Komfort müssen die Einstellungen aber nun im WEBIF vorgenommen werden, die wohl wichtigste ist die Auswahl der verwendeten Hardware (Sonoff POW etc.).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ESPEasy flashen==&lt;br /&gt;
[[Datei:sonoff_sw_6.jpg|thumb|left|alt=sonoff mit angestecktem FDTI Adapter]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier geht es ausschließlich um die Software ESPEasy an den sonoff Modulen! }}&lt;br /&gt;
Die Spannungsversorgung des Sonoff Moduls wird hier vom FTDI Konverter mit 3.3V über die Verbindungskabel zum Pfostenstecker durchgeführt. &lt;br /&gt;
&lt;br /&gt;
Der FTDI Adapter wird dann mit der USB Schnittstelle mit dem Computer verbunden.&lt;br /&gt;
&lt;br /&gt;
Zum compilieren wird in der Arduino Umgebung auch die ArduinoJson Library 5.6.4+ benötigt. Eine genaue Anleitung kann [https://forum.fhem.de/index.php/topic,55728.msg473220.html#msg473220 hier] nachgelesen werden. Es sollte stest die aktuelle Version der Arduino Umgebung verwendet werden, bzw. die Librarys auf Letztstand gehalten werden. &lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===mit Arduino compilieren===&lt;br /&gt;
[[Datei:sonoff_sw_10.jpg|thumb|left|alt=Einstellung Arduino IDE]]&lt;br /&gt;
Wer selber mit der Arduino IDE compilieren will bitte folgende Einstellungen beachten. Die anschließenden Arbeiten sind dann gleich wie bei Abschnitt &#039;&#039;&#039;fertige Binary&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Unbedingt die neueste [https://github.com/bblanchon/ArduinoJson Arduino Json Library] benutzen (siehe oben)! Es gibt zwar keine Compilerfehler, aber es kommt anschließend zu Fehlfunktionen in der ESP Bridge!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 Generic ESP8266 Module&lt;br /&gt;
 Flash Mode: QIO&lt;br /&gt;
 Flash Frequency: 40 MHz&lt;br /&gt;
 CPU Frequency: 80 MHz&lt;br /&gt;
 Flash Size: 1M (64K SPIFFS)&lt;br /&gt;
 Debug Port: disabled&lt;br /&gt;
 Debug Level: none&lt;br /&gt;
 Reset Mode: ck&lt;br /&gt;
 Upload Speed: 115200&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===fertige Binary flashen===&lt;br /&gt;
[[Datei:sonoff_sw_7.jpg|thumb|left|alt=NodeMCU Firmware Flasher]]&lt;br /&gt;
Es empfiehlt sich eine fertige Binary von ESPEasy aufzuspielen. In diesem Wiki wurde R140 verwendet.&lt;br /&gt;
&lt;br /&gt;
Siehe dazu auch den [http://www.esp8266.nu/index.php/Main_Page Link von ESPEasy] und das [https://learn.adafruit.com/building-and-running-micropython-on-the-esp8266/flash-firmware Handbuch] für den Flasher.&lt;br /&gt;
&lt;br /&gt;
In manchen Versionen von ESPEasy (zB.R120) ist auch ein Flasher beigelegt, welcher zwar keine grafische Oberfläche hat aber hervorragend funktioniert. Wenn andere versagen, geht es mit diesem Flasher immer noch, einfach probieren!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 Netzspannung darf &#039;NICHT&#039; angeschlossen sein!!!&lt;br /&gt;
 Taster am Sonoff gedrückt halten&lt;br /&gt;
 FTDI Adapter verbinden&lt;br /&gt;
 Taster am Sonoff los lassen&lt;br /&gt;
 Sketch übertragen&lt;br /&gt;
 Sonoff vom FTDI trennen&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Wenn einmal die Firmware auf das sonoff Modul geflasht worden ist, kann in Zukunft ESPEasy direkt unter Tools via HTTP dies durchführen. Es muss dazu kein FTDI Konverter mehr verwendet werden.&lt;br /&gt;
&lt;br /&gt;
==ESPEasy==&lt;br /&gt;
[[Datei:sonoff_sw_11.jpg|thumb|left|alt=ESPEasy Devices]]&lt;br /&gt;
Wenn das Modul fertig geflasht ist und die Verbindung zum Modul hergestellt ist, können die Einstellungen in ESPEasy durchgeführt werden.&lt;br /&gt;
Dazu am Webinterface anmelden und zunächst die zwei Devices definieren.&lt;br /&gt;
&lt;br /&gt;
Der Hersteller hat für das &#039;&#039;&#039;Relaise GPIO 12&#039;&#039;&#039; und für die &#039;&#039;&#039;grüne Led GPIO 13&#039;&#039;&#039; vorgesehen. Der &#039;&#039;&#039;Taster ist an GPIO 0&#039;&#039;&#039; angeschlossen.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Device Schalter===&lt;br /&gt;
[[Datei:sonoff_sw_12.jpg|thumb|left|alt=Device Relais]]&lt;br /&gt;
Bei den Devices sollten die hier dargestellte Einstellungen beachtet werden. Der Switch (PUMP) sollte auf Input gestellt werden, sodass die anschließenden und benötigten Rules aktiviert werden können.&lt;br /&gt;
&lt;br /&gt;
Da beide Devicenamen gleich benannt wurden (PUMP) wird in FHEM nur ein Device angelegt! Die dazugehörenden Valuenames sind unterschiedlich (Relay, Key).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Device Taster===&lt;br /&gt;
[[Datei:sonoff_sw_13.jpg|thumb|left|alt=Device Key]]&lt;br /&gt;
Der Taste muss natürlich nur konfiguriert werden, wenn auch händisch am Modul geschaltet werden soll. Wird dies nicht benötigt, können auch die Rules geändert bzw. angepasst werden. Doch alleine zu Testzwecken ist es eine nützliche Sache.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Rules===&lt;br /&gt;
[[Datei:sonoff_sw_14.jpg|thumb|left|alt=Rules]]&lt;br /&gt;
Da das sonoff Modul auch einen eingebauten Taster hat und somit auch lokal bedient werden kann, sollte man zunächst unter &#039;&#039;&#039;Tools / Advanced das Häckchen Rules&#039;&#039;&#039; aktivieren, erst dann wird der Tab sichtbar und es können Rules erstellt werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 on PUMP#Key do&lt;br /&gt;
  if [PUMP#Relay]=1&lt;br /&gt;
    gpio,12,0&lt;br /&gt;
  else&lt;br /&gt;
    gpio,12,1&lt;br /&gt;
  endif&lt;br /&gt;
 endon&lt;br /&gt;
 on PUMP#Relay do&lt;br /&gt;
  if [PUMP#Relay]=1 &lt;br /&gt;
    gpio,13,0&lt;br /&gt;
  else&lt;br /&gt;
    gpio,13,1&lt;br /&gt;
  endif&lt;br /&gt;
 endon&lt;br /&gt;
Diese Rules ermöglichen, das bei lokaler Bedienung durch den Taster auch die &#039;&#039;&#039;Led&#039;&#039;&#039; richtig geschaltet wird.&lt;br /&gt;
Mit &#039;on PUMP#Key do&#039; wird geprüft ob die Taste gedrückt ist und schaltet dann entsprechend die Led. Mit den Rules können auch Timer oder sonstige Spielereien realisiert werden. Siehe dazu das [http://www.esp8266.nu/index.php/Tutorial_Rules Tutorial] von ESPeasy.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ESPEasy in FHEM einrichten==&lt;br /&gt;
[[Datei:sonoff_sw_9.jpg|thumb|left|alt=FHEM Konfiguration]]&lt;br /&gt;
Dies ist eine einfache Darstellung wie FHEM automatisch den Device erstellt.&lt;br /&gt;
&lt;br /&gt;
Damit FHEM mit ESPEasy und dem sonoff Modul kommunizieren kann, muss in der fhem.cfg vorerst nur die espBridge mit dem hier dargestellten Eintrag aktiviert werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 define espBridge ESPEasy bridge 8383&lt;br /&gt;
Dies ist eigentlich die einzige Zeile die in fhem.cfg angelegt werden muss. Die restliche Konfiguration wird von FHEM automatisch generiert. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 ##########################################&lt;br /&gt;
 ###             ESPEASY               ####&lt;br /&gt;
 ##########################################&lt;br /&gt;
 &lt;br /&gt;
 define ESPEasy_sonoff_1_PUMP ESPEasy 10.0.0.37 80 espBridge sonoff_1_PUMP&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP IODev espBridge&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP devStateIcon on:rc_GREEN:off off:rc_RED:on absent:rc_BLUE:off gpio:rc_YELLOW:off&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP eventMap /gpio 12 on:on/gpio 12 off:off/gpio 12 gpio:off/gpio 12 output:off/&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP group ESPEasy Device&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP icon hue_filled_outlet&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP room ESPEasy&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP setState 0&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP stateFormat {ReadingsVal($name,&amp;quot;presence&amp;quot;,&amp;quot;&amp;quot;) eq &amp;quot;absent&amp;quot; ? &amp;quot;absent&amp;quot; : ReadingsVal($name,&amp;quot;Relay&amp;quot;,&amp;quot;&amp;quot;)}&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP webCmd :&lt;br /&gt;
&lt;br /&gt;
hier ein Beispiel wie es auch manuell leicht modifiziert werden kann.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_8.jpg|thumb|left|alt=sonoff Readings]]&lt;br /&gt;
&lt;br /&gt;
Die Readings werden durch die Bridge (Modul ESPEasy) automatisch angelegt.&lt;br /&gt;
&lt;br /&gt;
Es besteht hier noch genug Spielraum um zB. auch noch Temperatursensoren an das Modul anzuschließen und ebenfalls in FHEM darzustellen.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==MQTT Server einrichten==&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier geht es ausschließlich um den Sketch von Arends und MQTT an den sonoff Modulen! }}&lt;br /&gt;
Es bleibt jedem Anwender die freie Wahl ob die Kommunikation über die ESPEasy-Bridge oder MQTT erfolgen soll. MQTT ist bei der Einrichtung etwas komplexer, da hier auch auf dem Server der Broker installiert werden muss.&lt;br /&gt;
&lt;br /&gt;
Im wesentlichen beschränkt sich die Installation eines MQTT Servers aber auf wenige Arbeitsschritte und ist wie folgt beschrieben durchzuführen. Wer schon einen &#039;&#039;&#039;mosquitto&#039;&#039;&#039; auf dem Server installiert hat, kann diesen Schritt überspringen.&lt;br /&gt;
&lt;br /&gt;
Dieses Kapitel ist insofern interessant, da mit dem Sketch von Theo Arends auch die Einbindung der neuen sonoff Pow Module bereits möglich ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # aus dem mosquitto Repo installieren:&lt;br /&gt;
 wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key&lt;br /&gt;
 sudo apt-key add mosquitto-repo.gpg.key&lt;br /&gt;
 cd /etc/apt/sources.list.d/&lt;br /&gt;
 sudo wget http://repo.mosquitto.org/debian/mosquitto-wheezy.list&lt;br /&gt;
 # oder für jessie&lt;br /&gt;
 sudo wget http://repo.mosquitto.org/debian/mosquitto-jessie.list&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 # mosquitto installieren, sowie client Befehl mosquito_sub (gehört nicht zum Server, wird aber weiter unten benötigt)&lt;br /&gt;
 sudo apt-get install mosquitto mosquitto-clients&lt;br /&gt;
 &lt;br /&gt;
 # MQTT Server Test&lt;br /&gt;
 sudo service mosquitto status&lt;br /&gt;
&lt;br /&gt;
 # Start / Stop des Servers&lt;br /&gt;
 sudo service mosquitto stop&lt;br /&gt;
 sudo service mosquitto start&lt;br /&gt;
 &lt;br /&gt;
 # Perl Version ausgeben&lt;br /&gt;
 perl -v&lt;br /&gt;
 # Perl MQTT Module nachinstallieren (läuft ein paar Minuten)&lt;br /&gt;
 sudo cpan install Net::MQTT:Simple&lt;br /&gt;
 sudo cpan install Net::MQTT:Constants&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Software Arends Sketch===&lt;br /&gt;
[[Datei:sonoff_sw_22.jpg|thumb|left|alt=Arends Menü]]&lt;br /&gt;
&lt;br /&gt;
Ebenso bietet sich die Möglichkeit eine andere alternative Software auf den unterschiedlichen Sonoff Modellen aufzuspielen.&lt;br /&gt;
Speziell für diese Module zugeschnittene Software stammt vom Autor Theo Arends. Alle hier gezeigten Bildschirmfotos und Beispiele beziehen sich auf Basis der Version Tasmota (Stand 22.02.2017).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Links zu Theo Arend Github&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/arendst/Sonoff-Tasmota.git Donwload Tasmota]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/arendst/Sonoff-Tasmota Arends Tasmota Github]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; sollten Probleme mit dem ersten Login im Webinterface auftreten, hat der Autor vorgesorgt und mit speziellem wiederholten Tastendruck können verschiedene Modi aufgerufen werden: zB: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3 x Taste kurz drücken&#039;&#039;&#039; und eine Smartconfig wird gestartet und die &#039;&#039;&#039;SSID&#039;&#039;&#039; und das &#039;&#039;&#039;Passwort&#039;&#039;&#039; kann über diese [https://play.google.com/store/apps/details?id=com.cmmakerclub.iot.esptouch Android App] eingegeben werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4 x Taste kurz drücken&#039;&#039;&#039; und man bringt den Device in den &#039;&#039;&#039;Access Point Mode&#039;&#039;&#039; mit der IP-Adresse &#039;&#039;&#039;192.168.4.1&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bis zu 7 verschiedene Modi sind möglich, mehr dazu in Arends Wiki.&lt;br /&gt;
&lt;br /&gt;
[https://github.com/arendst/Sonoff-MQTT-OTA-Arduino/wiki/Button-usage Link zum Wiki Arends, Button]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_bv_01.jpg|thumb|left|alt=Arduino Boardverwalter]]&lt;br /&gt;
In der Arduino IDE unter Datei / Voreinstellungen im Feld &amp;quot;Zusätzliche Boardverwalter-URLs:&amp;quot; den Link: http://arduino.esp8266.com/stable/package_esp8266com_index.json einfügen. &lt;br /&gt;
&lt;br /&gt;
Dann unter &#039;&#039;&#039;Werkzeuge / Board / Boardverwalter&#039;&#039;&#039; ganz am Ende der Liste die Librarys für &amp;quot;esp8266 by ESP8266 Community&amp;quot; die letzte Version zu installieren. [https://forum.fhem.de/index.php/topic,46205.msg534707.html#msg534707 Link zum Board].&lt;br /&gt;
Im Tasmota Verzeichnis \lib werden auch die zum kompilieren benötigten Librarys zur Verfügung gestellt.&lt;br /&gt;
&lt;br /&gt;
Das gesamte Sonoff Verzeichnis aus [https://github.com/arendst/Sonoff-Tasmota/archive/master.zip Arendts Sketch] entpacken (ist wie hier verlinkt ein Zipfile) und dann aus diesem Verzeichnis die sonoff.ino öffnen. Es können dann alle zu dem Sketch zugehörigen Dateien angesehen/editiert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Anschließend sollte noch die Datei &#039;&#039;&#039;user_config.h&#039;&#039;&#039; (im Unterverzeichnis &amp;quot;sonoff&amp;quot;) editiert werden. Die Abschnitte          &lt;br /&gt;
&lt;br /&gt;
 // Wifi&lt;br /&gt;
 // Syslog&lt;br /&gt;
 // Ota&lt;br /&gt;
 // MQTT&lt;br /&gt;
&lt;br /&gt;
müssen mit der eigenen &amp;quot;&#039;&#039;&#039;Ip-Adresse-Server&#039;&#039;&#039;&amp;quot;, &amp;quot;&#039;&#039;&#039;SSID&#039;&#039;&#039;&amp;quot; und &amp;quot;&#039;&#039;&#039;password&#039;&#039;&#039;&amp;quot; angepasst werden, das erleichtert den ersten Connect mit dem Modul. Seit der Version 2.1.2 können die WIFI Einstellungen 2-fach angegeben werden, somit wechselt das Device automatisch auf den 2. Wifi Hotspot wenn der erste nicht erreicht wird.&lt;br /&gt;
&lt;br /&gt;
 #define STA_SSID               &amp;quot;SSID&amp;quot;      // Wifi SSID&lt;br /&gt;
 #define STA_PASS               &amp;quot;password&amp;quot;  // Wifi password&lt;br /&gt;
 #define WIFI_HOSTNAME          &amp;quot;%s-%04d&amp;quot;         // Expands to &amp;lt;MQTT_TOPIC&amp;gt;-&amp;lt;last 4 decimal chars of MAC address&amp;gt;&lt;br /&gt;
 #define WIFI_CONFIG_TOOL       WIFI_WPSCONFIG    // Default tool if wifi fails to connect (WIFI_SMARTCONFIG, WIFI_MANAGER or WIFI_WPSCONFIG)&lt;br /&gt;
&lt;br /&gt;
 // Syslog&lt;br /&gt;
 #define SYS_LOG_HOST           &amp;quot;Ip-Adresse-Server&amp;quot;&lt;br /&gt;
 #define SYS_LOG_PORT           514&lt;br /&gt;
 #define SYS_LOG_LEVEL          LOG_LEVEL_NONE&lt;br /&gt;
 #define SERIAL_LOG_LEVEL       LOG_LEVEL_INFO&lt;br /&gt;
 #define WEB_LOG_LEVEL          LOG_LEVEL_INFO&lt;br /&gt;
&lt;br /&gt;
 // Ota&lt;br /&gt;
 #if (ARDUINO &amp;gt;= 168)&lt;br /&gt;
  #define OTA_URL              &amp;quot;http://Ip-Adresse-Server:80/api/arduino/&amp;quot; PROJECT &amp;quot;.ino.bin&amp;quot;&lt;br /&gt;
 #else&lt;br /&gt;
  #define OTA_URL              &amp;quot;http://Ip-Adresse-Server:80/api/arduino/&amp;quot; PROJECT &amp;quot;.cpp.bin&amp;quot;&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
 // MQTT&lt;br /&gt;
 #define MQTT_HOST              &amp;quot;Ip-Adresse-Server&amp;quot;&lt;br /&gt;
 #define MQTT_PORT              1883&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wichtig:&#039;&#039;&#039; Im Userprofile des Arduino Kompilers (%userprofile%\Documents\Arduino\libraries\pubsubclient\src\PubSubClient.h) die Max Packet Size auf 400 erhöht werden!&lt;br /&gt;
&lt;br /&gt;
  #define MQTT_MAX_PACKET_SIZE 400&lt;br /&gt;
  #define MQTT_KEEPALIVE 120&lt;br /&gt;
Anpassung der max. Packet Size auf 400 und das Keepalive auf 120&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Anschluß wird der Sketch mit der Arduino IDE (getestet mit 1.6.12) compiliert und die Binary dann exportiert (Sketch / Kompilierte Binärdatei exportieren). Die erzeugte .bin Datei dann mit dem Tool &amp;quot;ESP8266Flasher.exe&amp;quot; flashen, so wie auch bei ESPEasy. Sehr gut funktioniert aud das Esptool. Wer nicht compilieren will, kann auch im Unterverzeichnis ./api/arduino/ die fertige Binary ( sonoff.ino ) benutzen, aber dann ohne Voreinstellung der lokalen IPs.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===MQTT testen===&lt;br /&gt;
[[Datei:sonoff_sw_20.jpg|thumb|left|alt=Arends Menü]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nach erfolgtem Flash des Modules kann das Webinterface des Moduls zum ersten Mal aufgerufen werden (im Router nach der IP des Moduls suchen).&lt;br /&gt;
&lt;br /&gt;
Es bieten sich hier mehrere Möglichkeiten die die weitere Einrichtung des Moduls unterstützen. Einfach die Menüpunkte durchprobieren, sie erklären sich von selbst. Für erste Tests empfiehlt sich die lokale Konsole um die Ereignisse aus Sicht des Modules mit verfolgen zu können. Alles was hier gesendet wird, sollte ebenfalls am Server mitgeloggt werden können. Wenn bis hierher alles funktioniert, kann dann mir der Konfiguration in FHEM beginnen.&lt;br /&gt;
&lt;br /&gt;
Der Name des Moduls kann unter &amp;quot;Configuration&amp;quot; -&amp;gt; &amp;quot;Configure MQTT&amp;quot; -&amp;gt; &amp;quot;Topic (sonoff)&amp;quot; nachgeschaut und geändert werden. In FHEM wird beim definieren des Moduls dieser Name in den subscribeReadings bzw. publishSets eingegeben um die Verbindung zum Modul herzustellen.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Am Server jetzt eine Konsole öffnen und folgende Topic (alle) einstellen.&lt;br /&gt;
&lt;br /&gt;
 mosquitto_sub -d -v -t \# &lt;br /&gt;
Mit dieser Einstellung werden alle Topics geloggt! &lt;br /&gt;
&lt;br /&gt;
 pi@raspberry ~ $ mosquitto_sub -d -v -t \#&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff_dht/DHT/TEMPERATURE&#039;, ... (6 bytes))&lt;br /&gt;
 tele/sonoff_dht/DHT/TEMPERATURE 21.8 C&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff_dht/DHT/HUMIDITY&#039;, ... (6 bytes))&lt;br /&gt;
 tele/sonoff_dht/DHT/HUMIDITY 41.7 %&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff_dht/TIME&#039;, ... (19 bytes))&lt;br /&gt;
 tele/sonoff_dht/TIME 2017-02-22T16:05:43&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow3/STATE&#039;, ... (104 bytes))&lt;br /&gt;
 tele/sonoffpow3/STATE {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:05:44&amp;quot;, &amp;quot;Uptime&amp;quot;:100, &amp;quot;LIGHT&amp;quot;:&amp;quot;ON&amp;quot;, &amp;quot;Wifi&amp;quot;:{&amp;quot;AP&amp;quot;:2, &amp;quot;SSID&amp;quot;:&amp;quot;Pergola&amp;quot;, &amp;quot;RSSI&amp;quot;:96}}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow3/ENERGY&#039;, ... (134 bytes))&lt;br /&gt;
 tele/sonoffpow3/ENERGY {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:05:44&amp;quot;, &amp;quot;Yesterday&amp;quot;:0.083, &amp;quot;Today&amp;quot;:0.055, &amp;quot;Period&amp;quot;:0, &amp;quot;Power&amp;quot;:0, &amp;quot;Factor&amp;quot;:0.00, &amp;quot;Voltage&amp;quot;:229, &amp;quot;Current&amp;quot;:0.000}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;stat/TestSwitch/RESULT&#039;, ... (14 bytes))&lt;br /&gt;
 stat/TestSwitch/RESULT {&amp;quot;POWER&amp;quot;:&amp;quot;ON&amp;quot;}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;stat/TestSwitch/POWER&#039;, ... (2 bytes))&lt;br /&gt;
 stat/TestSwitch/POWER ON&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow3/STATE&#039;, ... (104 bytes))&lt;br /&gt;
 tele/sonoffpow3/STATE {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:07:14&amp;quot;, &amp;quot;Uptime&amp;quot;:100, &amp;quot;LIGHT&amp;quot;:&amp;quot;ON&amp;quot;, &amp;quot;Wifi&amp;quot;:{&amp;quot;AP&amp;quot;:2, &amp;quot;SSID&amp;quot;:&amp;quot;Pergola&amp;quot;, &amp;quot;RSSI&amp;quot;:96}}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow3/ENERGY&#039;, ... (134 bytes))&lt;br /&gt;
 tele/sonoffpow3/ENERGY {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:07:14&amp;quot;, &amp;quot;Yesterday&amp;quot;:0.083, &amp;quot;Today&amp;quot;:0.055, &amp;quot;Period&amp;quot;:0, &amp;quot;Power&amp;quot;:3, &amp;quot;Factor&amp;quot;:0.20, &amp;quot;Voltage&amp;quot;:227, &amp;quot;Current&amp;quot;:0.072}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;stat/TestSwitch/RESULT&#039;, ... (15 bytes))&lt;br /&gt;
 stat/TestSwitch/RESULT {&amp;quot;POWER&amp;quot;:&amp;quot;OFF&amp;quot;}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;stat/TestSwitch/POWER&#039;, ... (3 bytes))&lt;br /&gt;
 stat/TestSwitch/POWER OFF&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Interessant sind für uns nun diese Einträge &amp;quot;stat/TestSwitch/POWER ON&amp;quot; , dazu am Taster des Sonoff manuell umschalten. Dies entspricht genau der Syntax wie sie im Anschluss in FHEM dann zu verwenden ist.&lt;br /&gt;
&lt;br /&gt;
Mit diesen Einstellungen können dann entweder nach Telemetriedaten oder nach Statusmeldungen gefiltert werden. Dies ist jedoch nur notwendig wenn bereits andere MQTT Devices am Broker hängen und es sonst zu unübersichtlich wird.&lt;br /&gt;
 mosquitto_sub -h localhost -t tele/sonoff/#    = Telemetriedaten&lt;br /&gt;
 mosquitto_sub -h localhost -t stat/sonoff/#    = Statusmeldungen&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_21.jpg|thumb|left|alt=Arends Log]]&lt;br /&gt;
Sehr nützlich das lokale Log zur Fehlersuche und Inbetriebnahme.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==MQTT in FHEM einrichten==&lt;br /&gt;
[[Datei:sonoff_sw_24.jpg|thumb|left|alt=FHEM sonoff Schalter]]&lt;br /&gt;
Dieser einfache Schalter kommuniziert bidirektional mit dem sonoff Device.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_25.jpg|thumb|left|alt=FHEM sonoff Schalter]]&lt;br /&gt;
Die Readings in diesem verwendeten Beispiel zeigen sich wie in FHEM gewohnt.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Einrichtung in FHEM wird von den Modulen 00_MQTT.pm, 10_MQTT_BRIDGE und 10_MQTT_DEVICE.pm unterstützt.&lt;br /&gt;
Ebenso wird das Modul 98_expandJSON.pm benötigt um den [https://forum.fhem.de/index.php/topic,66761.0.html JSON String zu filtern].&lt;br /&gt;
&lt;br /&gt;
[https://forum.fhem.de/index.php?topic=27532.0 Link zum Forum: MQTT FHEM Einrichtung]&lt;br /&gt;
&lt;br /&gt;
 ### 1. Broker anlegen ###&lt;br /&gt;
 define myBroker MQTT 10.0.0.5:1883&lt;br /&gt;
&lt;br /&gt;
 ### 2. FHEM Device mit MQTT verbinden ###&lt;br /&gt;
 define Sonoff_Switch MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Switch IODev myBroker&lt;br /&gt;
 attr Sonoff_Switch devStateIcon ON:rc_GREEN:OFF OFF:rc_RED:ON&lt;br /&gt;
 attr Sonoff_Switch icon hue_filled_br30&lt;br /&gt;
 attr Sonoff_Switch publishSet ON OFF cmnd/TestSwitch/POWER/set&lt;br /&gt;
 attr Sonoff_Switch room MQTT&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_Licht stat/Sonoff_Switch/POWER&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_Sensor tele/Sonoff_Switch/SENSOR&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_Status stat/Sonoff_Switch/STATUS&lt;br /&gt;
 attr Sonoff_Switch webCmd ON:OFF&lt;br /&gt;
Der hier dargestellte Beispielcode realisiert die Kommunikation zwischen FHEM und dem sonoff Modul via MQTT Broker. Zu beachten ist hier, dass &#039;&#039;&#039;subscribeReading_Licht&#039;&#039;&#039; und &#039;&#039;&#039;subscribeReading_state&#039;&#039;&#039; unterschiedliche Syntax des Topic Strings haben!&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff POW einrichten==&lt;br /&gt;
[[Datei:sonoff_sw_31.jpg|thumb|left|alt=Sonoff POW]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier geht es ausschließlich um das Modul Sonoff POW!}}&lt;br /&gt;
Das Modul kommt in gewohnter Itead Qualität und eine derart kostengünstige Energiemessung wird bei Smart Home Anwendern gerne eingesetzt. Die Originalsoftware habe ich nicht einmal getestet, da damit eine Anbindung an FHEM leider nicht möglich ist.&lt;br /&gt;
&lt;br /&gt;
Ebenso möchte kaum jemand an eine nicht dokumentierte chinesische Cloud die Steuerbefehle seiner Schalter senden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_sw_33.jpg|thumb|left|alt=Sonoff POW]]&lt;br /&gt;
Bitte auf keinen Fall das Modul während der Arbeiten an die Netzspannung anschießen. Zum Flashen genügt (und nur diese) die Versorgungspannung des USB-TTL Konverters. Wie auf dem Foto gut erkennbar, wurde dieses Modul ohne einlöten einer Pfostensteckerleiste geflasht. Die Steckverbindung wird einfach in die Lötaugen gesteckt und mit einem Gummiring fixiert, da ja spätere Flashvorgänge im Webif des Models funktionieren und so die Arbeit eingespart werden kann. Es steht jedoch nichts im Wege die Pfostensteckerleiste einzulöten.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Die Anschlüsse am Modul sind wie folgt belegt.&lt;br /&gt;
 o GND&lt;br /&gt;
 o TxD&lt;br /&gt;
 o RxD&lt;br /&gt;
 o VDD&lt;br /&gt;
&lt;br /&gt;
Für den Flashvorgang gelten die selben Regeln wie schon beim sonoff Switch oben erwähnt (3,3V!).&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Sonoff POW Software===&lt;br /&gt;
[[Datei:sonoff_sw_35.jpg|thumb|left|alt=Sonoff POW FHEM]]&lt;br /&gt;
Als Software steht im Augenblick nur der Sketch von Arends zur Verfügung, liefert aber alles was das Herz begehrt und ist ist einfach zu handhaben. Hier eine eine einfache Darstellung mit der aktuellen Leistung und dem Tagesverbrauch. Zusätzlich besteht auch noch die Möglichkeit den angeschlossenen Verbraucher Ein- oder Auszuschalten. &lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_pow_02.jpg|thumb|left|alt=Sonoff POW Webif]]&lt;br /&gt;
Seit Version 2.0.19a ist auch die Leistungsanzeige im WEBIF wie im Bild links integriert. Auch der Energieverbrauch des Vortages wird mit angezeigt. Alle hier angezeigten Daten werden auch zyklisch im MQTT String an FHEM übergeben.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich kann im Sketch auch das Feature &amp;quot;&#039;&#039;&#039;Power_Limit&#039;&#039;&#039;&amp;quot; aktiviert werden. Mit dem Power_Limit wird eine zusätzliche Nachricht erzeugt, wenn ein bestimmter einstellbarer Grenzwert über- oder unterschritten wird. &lt;br /&gt;
&lt;br /&gt;
Es lassen sich dadurch Meldungen wie &amp;quot;Waschmaschine fertig&amp;quot; oder ähnliches ohne weitere Schwellwert Überwachungen in FHEM ableiten. Die Meldungen kommen in MQTT mit &amp;quot;&#039;&#039;&#039;POWER_LOW ON&#039;&#039;&#039;&amp;quot; bzw. &amp;quot;&#039;&#039;&#039;POWER_LOW OFF&#039;&#039;&#039;&amp;quot;.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei erstmaligen Start des Modules muss der Typ des Modules von &amp;quot;SONOFF&amp;quot; auf &amp;quot;&#039;&#039;&#039;SONOFF_Pow&#039;&#039;&#039;&amp;quot; geändert werden, damit die Software weiß mit welchem Modul es zu tun hat und kann dann die entsprechenden Berechnungen durchführen. Die Leistungsdaten kommen ja in Form einer Frequenz aus dem Baustein und müssen im Sketch (xsns_hlw8102.ino) umgerechnet werden.&lt;br /&gt;
                                            &lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_sw_36.jpg|thumb|left|alt=Sonoff POW Attribute]]&lt;br /&gt;
Dieses Bild zeigt die Attribute die vom Modul via MQTT an FHEM geliefert werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
aktuell gelieferter JSON String vom Sketch der alle Messdaten beinhaltet.&lt;br /&gt;
 {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:38:47&amp;quot;, &amp;quot;Yesterday&amp;quot;:&amp;quot;2.286&amp;quot;, &amp;quot;Today&amp;quot;:&amp;quot;1.593&amp;quot;, &amp;quot;Period&amp;quot;:9, &amp;quot;Power&amp;quot;:231, &amp;quot;Factor&amp;quot;:&amp;quot;1.00&amp;quot;, &amp;quot;Voltage&amp;quot;:231, &amp;quot;Current&amp;quot;:&amp;quot;0.866&amp;quot;}&lt;br /&gt;
und hier das zugehörige Reading.&lt;br /&gt;
 tele/sonoffpow/ENERGY    &lt;br /&gt;
       &lt;br /&gt;
&lt;br /&gt;
Hier ein Mittschnitt des Datenverkehrs zum Broker zwecks Kontrolle der korrekten Funktion der Module und der Software.&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/STATE&#039;, ... (103 bytes))&lt;br /&gt;
 tele/sonoffpow/STATE {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:39:15&amp;quot;, &amp;quot;Uptime&amp;quot;:79, &amp;quot;LIGHT&amp;quot;:&amp;quot;OFF&amp;quot;, &amp;quot;Wifi&amp;quot;:{&amp;quot;AP&amp;quot;:2, &amp;quot;SSID&amp;quot;:&amp;quot;Liwest&amp;quot;, &amp;quot;RSSI&amp;quot;:54}}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/ENERGY&#039;, ... (140 bytes))&lt;br /&gt;
 tele/sonoffpow/ENERGY {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:39:15&amp;quot;, &amp;quot;Yesterday&amp;quot;:&amp;quot;1.391&amp;quot;, &amp;quot;Today&amp;quot;:&amp;quot;1.191&amp;quot;, &amp;quot;Period&amp;quot;:0, &amp;quot;Power&amp;quot;:0, &amp;quot;Factor&amp;quot;:&amp;quot;0.00&amp;quot;, &amp;quot;Voltage&amp;quot;:0, &amp;quot;Current&amp;quot;:&amp;quot;0.000&amp;quot;}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff_wall1/STATE&#039;, ... (105 bytes))&lt;br /&gt;
 tele/sonoff_wall1/STATE {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:39:15&amp;quot;, &amp;quot;Uptime&amp;quot;:96, &amp;quot;POWER&amp;quot;:&amp;quot;OFF&amp;quot;, &amp;quot;Wifi&amp;quot;:{&amp;quot;AP&amp;quot;:2, &amp;quot;SSID&amp;quot;:&amp;quot;Pergola&amp;quot;, &amp;quot;RSSI&amp;quot;:100}}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow3/STATE&#039;, ... (104 bytes))&lt;br /&gt;
 tele/sonoffpow3/STATE {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:39:20&amp;quot;, &amp;quot;Uptime&amp;quot;:100, &amp;quot;LIGHT&amp;quot;:&amp;quot;ON&amp;quot;, &amp;quot;Wifi&amp;quot;:{&amp;quot;AP&amp;quot;:2, &amp;quot;SSID&amp;quot;:&amp;quot;Pergola&amp;quot;, &amp;quot;RSSI&amp;quot;:96}}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow3/ENERGY&#039;, ... (134 bytes))&lt;br /&gt;
 tele/sonoffpow3/ENERGY {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:39:20&amp;quot;, &amp;quot;Yesterday&amp;quot;:0.083, &amp;quot;Today&amp;quot;:0.057, &amp;quot;Period&amp;quot;:0, &amp;quot;Power&amp;quot;:0, &amp;quot;Factor&amp;quot;:0.00, &amp;quot;Voltage&amp;quot;:230, &amp;quot;Current&amp;quot;:0.000}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Einstellungen können mit folgender Syntax angefordert werden (zwei Terminalfenster öffnen, eines zum protokollieren und eines zum Seden der Befehle).&lt;br /&gt;
 mosquitto_sub -d -v -t \#  MQTT Datenverkehr protokolieren&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/status/set -m &amp;quot;8&amp;quot;      = SonoffPOW Status jetzt auslesen&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/TelePeriod/set -m &amp;quot;60&amp;quot; = Timer setzen, alle 60 Sekunden Daten senden &lt;br /&gt;
Die Kommandos können direkt am Broker (Terminalfenster Putty etc.) abgesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sonoff POW Kalibrieren ===&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier wird beschrieben, wie der &#039;&#039;Sonoff POW kalibriert&#039;&#039; werden kann. }}&lt;br /&gt;
Ab Version 2.0.11 kann nun auch der POW kalibriert werden.&lt;br /&gt;
Dazu kann man 2 Konsolenfenster öffnen, im ersten aktiviert man das Protokoll für den Datenverkehr&lt;br /&gt;
 mosquitto_sub -d -v -t \#  MQTT Datenverkehr protokollieren&lt;br /&gt;
&lt;br /&gt;
Dann kann mit folgenden Befehlen die HLW Referenz Pulsfrequenz gesetzt werden.&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/HLWUCAL/set -m &amp;quot;2100&amp;quot;     default = 1950&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/HLWICAL/set -m &amp;quot;2450&amp;quot;     default = 3500&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/HLWPCAL/set -m &amp;quot;13500&amp;quot;    default = 12345 &lt;br /&gt;
Entweder man hat eine definierte Last zur Verfügung oder besser man misst mit einem Leistungsmesser nach. Die Spannung kann man mit einem Multimeter nachmessen (sollte 230 V sein) und der Strom wird errechnet (bei 100 Watt I = P / U ) = 100/230 = 0,4347.&lt;br /&gt;
Die Referenzwerte solange geringfügig ändern bis die Ausgabe passt. Für die Ausgabe wird einfach eine Statusabfrage durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/status/set -m &amp;quot;8&amp;quot;&lt;br /&gt;
Befehl für die Statusabfrage&lt;br /&gt;
&lt;br /&gt;
 cmnd/sonoffpow/status/set 8&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;stat/sonoffpow/STATUS&#039;, ... (103 bytes))&lt;br /&gt;
 stat/sonoffpow/STATUS PWR: Voltage 225 V, Current 0.427 A, Current Power 98 W, Total Power Today 0.080 kWh, Power Factor 1.00&lt;br /&gt;
Ergebnis der Statusabfrage mit Spannung, Strom und Leistung.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sonoff POW FHEM Anbindung===&lt;br /&gt;
Ein Beispiel einer einfachen Anbindung via JSON an FHEM. MQTT von Arends ist insofern notwendig, da in der Software ESPEasy und der Bridge noch keine Implementierung der Frequenzumrechnung enthalten ist.&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Pow MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Pow IODev myBroker&lt;br /&gt;
 attr Sonoff_Pow icon measure_power&lt;br /&gt;
 attr Sonoff_Pow publishSet ON OFF cmnd/sonoffpow/LIGHT/&lt;br /&gt;
 attr Sonoff_Pow stateFormat {sprintf(&amp;quot;aktuell: %.1f W Tag: %.2f Kw/h&amp;quot;, ReadingsVal($name,&amp;quot;Power&amp;quot;,undef), ReadingsVal($name,&amp;quot;Today&amp;quot;,undef))}&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_ENERGY tele/sonoffpow/ENERGY&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_LIGHT stat/sonoffpow/LIGHT&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_state cmnd/sonoffpow/LIGHT&lt;br /&gt;
 attr Sonoff_Pow webCmd ON:OFF&lt;br /&gt;
Zusätzlich kann hier noch das Relais mit &amp;quot;on&amp;quot; und &amp;quot;off&amp;quot; ein- ausgeschaltet werden.&lt;br /&gt;
&lt;br /&gt;
Ebenso notwendig ist das setzen der Regexp für den JSON Konverter.&lt;br /&gt;
 define ej3 expandJSON Sonoff.*:.*:.{.*}&lt;br /&gt;
hier wird alles was mit dem Namen Sonoff beginnt gefiltert und automatisch alle darin enthaltenen Readings erstellt.&lt;br /&gt;
&lt;br /&gt;
 define ej3 expandJSON Sonoff.*:ENERGY.*:.{.*} (Power|Yesterday|Today)&lt;br /&gt;
oder so, da werden nur die Readings Power, Yesterday und Today erstellt.&lt;br /&gt;
Somit ist auch kalr, das in FHEM auch JSON installiert sein muss. Ebenso können die verschiedenen Regexp im [https://github.com/ddtlabs/expandJSON Wiki] nachgelesen werden.&lt;br /&gt;
&lt;br /&gt;
[https://forum.fhem.de/index.php/topic,66761.15.html Link zum Diskussionsthread].&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Source Reading:&#039;&#039;&#039;&lt;br /&gt;
 device:reading:.{.*} &lt;br /&gt;
 .*WifiIOT.*:sensor.*:.{.*} &lt;br /&gt;
 sonoff_.*:.*:.{.*} &lt;br /&gt;
 dev.*:(sensor1|sensor2|teleme.*):.{.*} &lt;br /&gt;
 (dev.*|[Dd]evice.*):json:.{.*} &lt;br /&gt;
 (devX:jsonX:.{.*}|devY.*:jsonY:.{.*Wifi.*{.*SSID.*}.*}) &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Target Reading:&#039;&#039;&#039;&lt;br /&gt;
 .*power.* &lt;br /&gt;
 (Current|Voltage|Wifi.*)  &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Komplette Definition des Filters:&#039;&#039;&#039;&lt;br /&gt;
 define ej1 expandJSON device:sourceReading:.{.*} targetReading &lt;br /&gt;
 define ej3 expandJSON .*\.SEN\..*:.*:.{.*} &lt;br /&gt;
 define ej3 expandJSON sonoff_.*:sensor.*:.{.*} (power.*|current|voltage)&lt;br /&gt;
&lt;br /&gt;
===Sonoff POW Netz-Anschluß===&lt;br /&gt;
[[Datei:sonoff_sw_34.jpg|thumb|left|alt=Sonoff POW Netzanschluß]]&lt;br /&gt;
Erst wenn alle Arbeiten an der Hard- und Software abgeschlossen sind, kann man das Modul an die Netzspannung anschließen. Wer es sich einfach machen will, nimmt eine Industriell gefertigte 230 V Verlängerung  (zwischen 1,5 - 3 Meter) und schneidet sie in der Mitte durch. Nach dem abisolieren der flexiblen Drähte sollte diese &#039;&#039;&#039;verlötet oder mit Aderendhülsen&#039;&#039;&#039; versehen werden (müssen aber exakt passen, da hier kaum Platz in den Klemmen ist). &lt;br /&gt;
Mit einem kleinen Schraubendreher kann man die Feder der Klemmen niederdrücken und das verzinnte Drahtende tief ich die Öffnung stecken. Es dürfen keine Drahtlitzen aus den Öffnungen sichtbar sein, Kurzschlußgefahr! Ebenso sollte eine Zugprobe durchgeführt werden ob die Klemme auch richtig eingerastet ist.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ACHTUNG:&#039;&#039;&#039; diese Arbeiten müssen von einem ausgebildeten Fachpersonal (Elektriker) durchgeführt werden, Lebensgefahr!&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sonoff POW Design===&lt;br /&gt;
&lt;br /&gt;
====ReadingsGroup mit Schaltmöglichkeit====&lt;br /&gt;
[[Datei:sonoff_pow_03.jpg|thumb|left|alt=readingsGroup mit Schalter]]&lt;br /&gt;
Die ReadingsGroup kann auch gleich mit einem Schalter versehen werden um den POW Ein- oder Aus schalten zu können. Dazu ist aber eine andere Einstellung im Sketch erforderlich.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der &amp;quot;&#039;&#039;&#039;user_config.h&#039;&#039;&#039;&amp;quot; muss an dieser Stelle auch die &amp;quot;&#039;&#039;&#039;PUB_PREFIX&#039;&#039;&#039;&amp;quot; auf die gleiche Topic wie &amp;quot;PUB_PREFIX2&amp;quot; eingestellt werden. Durch diese Maßnahme wird erreicht, dass sofort nach dem Knopfdruck auch der Status mit der Topic &amp;quot;tele&amp;quot; übertragen wird. Würde der weiterhin mit &amp;quot;stat&amp;quot; übertragen, kann er in der Readingsgroup nur sehr umständlich weiter behandelt werden. Dadurch wird erreicht, dass der Schalter sofort nach dem Schaltvorgang und der Rückmeldung (Status) auch seine Farbe ändert. Wird dieser Eintrag vergessen, ändert der Schalter erst nach Eintreffen der nächsten zyklischen Abfrage seinen Status/Farbe.&lt;br /&gt;
&lt;br /&gt;
 #define SUB_PREFIX             &amp;quot;cmnd&amp;quot;       // Sonoff devices subscribe to:- SUB_PREFIX/MQTT_TOPIC and SUB_PREFIX/MQTT_GRPTOPIC&lt;br /&gt;
 #define PUB_PREFIX             &amp;quot;tele&amp;quot;       // Sonoff devices publish to:- PUB_PREFIX/MQTT_TOPIC&lt;br /&gt;
 #define PUB_PREFIX2            &amp;quot;tele&amp;quot;       // Sonoff devices publish telemetry data to:- PUB_PREFIX2/MQTT_TOPIC/UPTIME, POWER/LIGHT and TIME&lt;br /&gt;
hier die PUB_PREFIX mit der geänderten Topic &amp;quot;tele&amp;quot; anstatt &amp;quot;stat&amp;quot; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 define SonoffPows readingsGroup &amp;lt;%measure_power&amp;gt;,&amp;lt;aktuell&amp;gt;,&amp;lt;Tag&amp;gt;,&amp;lt;Gestern&amp;gt;,&amp;lt;Strom&amp;gt;,&amp;lt;Durchschnitt&amp;gt;,&amp;lt;max.P&amp;gt;,&amp;lt;Zyklus&amp;gt;,&amp;lt;Faktor&amp;gt;,&amp;lt;Status&amp;gt;,&amp;lt; hr &amp;gt; .*(Sonoff_Pow|Sonoff_Pow2|Sonoff_Pow3|Sonoff_Pow4):Power,Today,Yesterday,Current,Power_avg_day,Power_max_day,Period,Factor,LIGHT&lt;br /&gt;
 attr SonoffPows commands {&#039;LIGHT.ON&#039; =&amp;gt; &#039;set $DEVICE OFF&#039;,&#039;LIGHT.OFF&#039; =&amp;gt; &#039;set $DEVICE ON&#039;}&lt;br /&gt;
 attr SonoffPows mapping %ALIAS&lt;br /&gt;
 attr SonoffPows nameStyle style=&amp;quot;color:yellow&amp;quot;&lt;br /&gt;
 attr SonoffPows room Energie,MQTT&lt;br /&gt;
 attr SonoffPows valueFormat {&#039;Power&#039; =&amp;gt;&amp;quot;%.0f W&amp;quot;, &#039;Today&#039; =&amp;gt;&amp;quot;%.2f Kw&amp;quot;,&#039;Yesterday&#039; =&amp;gt;&amp;quot;%.2f Kw&amp;quot;, &#039;CURRENT&#039; =&amp;gt;&amp;quot;%.2f A&amp;quot;,&#039;Power_max_day&#039; =&amp;gt; &amp;quot;%.0f W&amp;quot;,&#039;Power_avg_day&#039; =&amp;gt; &amp;quot;%.2f W&amp;quot;,&#039;Power&#039;=&amp;gt;&amp;quot;%.0f W&amp;quot;,&#039;Factor&#039; =&amp;gt; &amp;quot;%.2f &amp;quot;}&lt;br /&gt;
 attr SonoffPows valueIcon {&#039;LIGHT.ON&#039; =&amp;gt; &#039;rc_GREEN@green&#039;, &#039;LIGHT.OFF&#039; =&amp;gt; &#039;rc_RED@red&#039;}&lt;br /&gt;
 attr SonoffPows valueStyle { if($READING eq &amp;quot;Power&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 0 &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Today&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 4.8){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Today&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 2.5){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Today&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 2.5 &amp;amp;&amp;amp; $VALUE &amp;lt; 4.8 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Yesterday&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 2.5){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Yesterday&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 2.5 &amp;amp;&amp;amp; $VALUE &amp;lt; 4.8 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Yesterday&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 4.8){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Current&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 0.45){&#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039;}elsif( $READING eq &amp;quot;Current&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 0.45 &amp;amp;&amp;amp; $VALUE &amp;lt; 0.87 ){&#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Current&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 0.87){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Period&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 10){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Period&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 10 &amp;amp;&amp;amp; $VALUE &amp;lt; 15 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Period&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 15){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039;}}&lt;br /&gt;
Dieses Beispiel ist für &#039;&#039;&#039;Tasmota mit JSON&#039;&#039;&#039; ausgelegt und benötigt ebenso wie oben die Erweiterung &amp;quot;average&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Pow_CURRENT_POWER average Sonoff_Pow:Power.*&lt;br /&gt;
damit werden der Durchschnitt und min max für Tasmota mit JSON erzeugt.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====POW mit FTUI anzeigen====&lt;br /&gt;
[[Datei:sonoff_pow_energy.JPG|thumb|left|alt=Tablett FTUI]]&lt;br /&gt;
Wer möchte kann die Energieanzeigen auch mit der [https://forum.fhem.de/index.php/topic,34233.0.html Tablett UI] für eine Tablet Ansicht gestalten. Mit dieser stehen viele Möglichkeiten zu einer attraktiven Darstellung zur Verfügung.&lt;br /&gt;
Hier ein Beispiel welches mit den Widget &amp;quot;[http://www.fhemwiki.de/wiki/FHEM_Tablet_UI#Widget_THERMOSTAT thermostat]&amp;quot; dargestellt ist.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Slampher Flashen==&lt;br /&gt;
[[Datei:sonoff_sl_53.jpg|thumb|left|alt=Sonoff SLAMPHER]]&lt;br /&gt;
Dieses Modul ist eine Besonderheit was das Flashen betrifft, denn mit Hilfe des Tasters kann der ESP8266 NICHT in den Flashmode gebracht werden. Der Taster ist intern anderwärtig verdrahtet und somit für diesen Zweck nicht zu gebrauchen.&lt;br /&gt;
&lt;br /&gt;
Wie hier links im Bild zu sehen ist, muss der rechte Pin des R20 (oben im Bild) während dem Einstecken des USB Steckers auf Masse gelegt werden. Die beste Möglichkeit ist ein Stücken Draht anzulöten und diesen dann beim einstecken auf den Masse Pin des USB-Konverters zu legen.&lt;br /&gt;
&lt;br /&gt;
Pinbelegung des Steckers von oben nach unten:&lt;br /&gt;
 o - GND&lt;br /&gt;
 o - TxD&lt;br /&gt;
 o - RxD&lt;br /&gt;
 &#039;&#039;&#039;o&#039;&#039;&#039; - Vdd&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sl_51.jpg|thumb|left|alt=Sonoff SLAMPHER R20]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier ist genau ersichtlich, wo der R20 auf der Platine platziert ist. }}&lt;br /&gt;
Hier nocheinmal schön zu sehen wo der R20 (der ist nicht eingelötet sondern leer) exakt auf der Platine liegt, gemeint ist der rechte Pin. Hier kann auch leicht gelötet werden, da keine empfindlichen Bauteile in der Nähe sind und auch genug Platz vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_sl_50.jpg|thumb|left|alt=Sonoff SLAMPHER R20]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier ist genau ersichtlich, wo der Draht am R20 aufgelötet wurde }}&lt;br /&gt;
Hier ist ein kleines Stück Schaltdraht auf den Pin bereist aufgelötet und bereit zum Flashen!&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel wurde keine Pfostensteckerleiste auf die Platine aufgelötet, sondern nur durchgesteckt und mit einem Gummiring  zum Relais fixiert, das erspart den Lötvorgang, weil in Zukunft dann ohnehin OTA geflasht werden kann.&lt;br /&gt;
&lt;br /&gt;
Also Pin20 auf Masse legen und USB-Konverter an den PC einstecken, dann den Draht von der Masse entfernen. Der ESP8266 sollte jetzt im Flashmodus bereit stehen und kann wie bereits oben beschrieben geflasht werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sonoff Slampher Software===&lt;br /&gt;
[[Datei:sonoff_sl_54.jpg|thumb|left|alt=Sonoff SLAMPHER FHEM]]&lt;br /&gt;
&lt;br /&gt;
Als Software wird Arends Sketch installiert (Kommunikation über MQTT), da zum derzeitigen Zeitpunkt ESPEasy das Modul noch nicht integriert hat und somit auch nicht ansteuern kann.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_SL MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_SL IODev myBroker&lt;br /&gt;
 attr Sonoff_SL devStateIcon ON:rc_GREEN:OFF OFF:rc_RED:ON&lt;br /&gt;
 attr Sonoff_SL icon hue_filled_br30&lt;br /&gt;
 attr Sonoff_SL publishSet ON OFF cmnd/sonoffsl/POWER/set&lt;br /&gt;
 attr Sonoff_SL room Bewegung,_Sonoff&lt;br /&gt;
 attr Sonoff_SL stateFormat Licht&lt;br /&gt;
 attr Sonoff_SL subscribeReading_Licht tele/sonoffsl/POWER&lt;br /&gt;
 attr Sonoff_SL subscribeReading_state cmnd/sonoffsl/POWER/set&lt;br /&gt;
 attr Sonoff_SL webCmd ON:OFF&lt;br /&gt;
&lt;br /&gt;
Hier ein Beispiel wie in FHEM der Slampher eingebunden werden kann. In diesem Beispiel wird davon ausgegangen, das im Modul die Topic &amp;quot;sonoffsl&amp;quot; benannt wurde. Wer einen anderen Namen haben möchte, muss dies dann auch in FHEM entsprechend anpassen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Th10/16 FHEM==&lt;br /&gt;
[[Datei:sonoff_th_01.jpg|thumb|left|alt=Sonoff TH10]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Temperatur Modul TH10 / 16! }}&lt;br /&gt;
Das Modul kann durch drücken des Tasters während dem Einstecken des USB-Konverters in den Flashmodus gebracht werden.&lt;br /&gt;
Der Th10/16 kann mit zwei unterschiedlichen Typen von Sensoren bestückt werden, hier im Beispiel mit dem externen Temperaturfühler DS18B20.&lt;br /&gt;
&lt;br /&gt;
Wie im Bild klar zu sehen ist, kann das Webif auch zur Darstellung via Mobile verwendet werden. Mit &amp;quot;Toggle&amp;quot; wird Ein- oder Aus geschaltet und  darunter ist die aktuelle Temperatur ersichtlich. Für diese Ansicht muss keine MQTT Verbindung eingerichtet werden, da die Kommunikation hier rein über HTTP erfolgt.&lt;br /&gt;
&lt;br /&gt;
Die unten dargestellten Beispiele für FHEM beziehen sich auf Arends Sketch, also über MQTT. Dieses Modul kann aber genauso leicht über ESPEasy und der ESPEasy-Bridge eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Pinbelegung des Steckers von oben nach unten:&lt;br /&gt;
 o - GND&lt;br /&gt;
 o - TxD&lt;br /&gt;
 o - RxD&lt;br /&gt;
 &#039;&#039;&#039;o&#039;&#039;&#039; - Vdd&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_th_02.jpg|thumb|left|alt=Sonoff TH10]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Einbindung in FHEM via MQTT! }}&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ### Temperatur und Luftfeuchte vom Sonoff Switch ###&lt;br /&gt;
 define Sonoff_Temp MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Temp IODev myBroker&lt;br /&gt;
 attr Sonoff_Temp alias Pool Wasser&lt;br /&gt;
 attr Sonoff_Temp eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_Temp icon temperature_humidity&lt;br /&gt;
 attr Sonoff_Temp publishSet ON OFF cmnd/sonoffth/POWER/set&lt;br /&gt;
 attr Sonoff_Temp room _Sonoff&lt;br /&gt;
 attr Sonoff_Temp stateFormat {sprintf(&amp;quot;Temperatur: %.1f Grad&amp;quot;, ReadingsVal($name,&amp;quot;temperature&amp;quot;,0))}&lt;br /&gt;
 attr Sonoff_Temp subscribeReading_SENSOR tele/sonoffth/SENSOR&lt;br /&gt;
 attr Sonoff_Temp subscribeReading_state cmnd/sonoffth/POWER/set&lt;br /&gt;
Beispiel für FHEM mit Temperaturanzeige mit DS18B20&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Switch MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Switch IODev myBroker&lt;br /&gt;
 attr Sonoff_Switch alias Pool Licht&lt;br /&gt;
 attr Sonoff_Switch devStateIcon on:rc_GREEN:off off:rc_RED:on&lt;br /&gt;
 attr Sonoff_Switch eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_Switch icon light_ceiling&lt;br /&gt;
 attr Sonoff_Switch publishSet ON OFF cmnd/sonoffth/POWER/set&lt;br /&gt;
 attr Sonoff_Switch room _Sonoff&lt;br /&gt;
 attr Sonoff_Switch stateFormat Licht&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_Licht tele/sonoffth/POWER&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_state cmnd/sonoffth/POWER/set&lt;br /&gt;
 attr Sonoff_Switch webCmd ON:OFF&lt;br /&gt;
Der Schalter nochmals seperat dargestellt, je nach Geschmack.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff 4CH 4-Kanal Schaltmodul==&lt;br /&gt;
[[Datei:sonoff_ch4_1.jpg|thumb|left|alt=Sonoff CH4]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Achtung andere Einstellungen der Arduino IDE: Select Board &amp;quot;Generic ESP8285 Module&amp;quot; (=Flash Mode &amp;quot;DOUT&amp;quot;) and Flash Size &amp;quot;1M (64K SPIFFS)&amp;quot;n! }}&lt;br /&gt;
&lt;br /&gt;
Der Sonoff 4CH ist mit seinen 4 Kanälen ein sehr preiswertes Modul im Gehäuse und für Hutschinenmontage. Anstatt des üblichen ESP8266 besitzt dieses Modul schon den moderneren &#039;&#039;&#039;ESP8285&#039;&#039;&#039;. Es müssen daher in der Arduino IDE andere Einstellungen vorgenommen werden. Unter Board wird hier das &amp;quot;&#039;&#039;&#039;Generic 8285 Module&#039;&#039;&#039;&amp;quot; mit &#039;&#039;&#039;1M und 64K Spiffs&#039;&#039;&#039; angewählt. Der Flashmode &amp;quot;&#039;&#039;&#039;DOUT&#039;&#039;&#039;&amp;quot; wird dann automatisch eingestellt, bzw. ausgeblendet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Es ist daher unbedingt notwendig den Sketch mit den geänderten Einstellungen selbst zu kompilieren, ansonsten stürzt das Modul nach Auswahl des Typs ab  und wird nicht mehr rebooten können!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das Modul ist etwas größer als die anderen Sonoff Produkte und besitzt mit 14,5 x 9 cm schon beachtliche Einbau Maße.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_ch4_2.jpg|thumb|left|alt=Sonoff 4CH FDTI]]&lt;br /&gt;
Als weitere Besonderheit sei hier erwähnt, das die Signale &#039;&#039;&#039;RxD auf RxD und TxD auf TxD&#039;&#039;&#039; des FTDI Konverters zu verbinden sind. Wie bei allen Sonoff Modulen darf man &#039;&#039;&#039;zum flashen keine Netzspannung anschließen&#039;&#039;&#039;, sondern nur über die Versorgungsspannung des FDTI Konverters mit 3,3 V versorgen (Jumper richtig setzen). Die Stiftleiste für den FTDI Anschluß ist hier schon eingelötet.&lt;br /&gt;
&lt;br /&gt;
In den Flashmodus gelangt man durch drücken der &#039;&#039;&#039;Taste FW/IO0&#039;&#039;&#039; während des einstecken des USB Anschlusses.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_ch4_3.jpg|thumb|left|alt=Sonoff 4CH Arends]]&lt;br /&gt;
Hier die Ansicht des Webinterface des Arends Sketches!&lt;br /&gt;
Bei der Software sei erwähnt, das die getestete Version 3.1.16 nur bei Kanal 1 den Modus &amp;quot;PulseTime&amp;quot; beherrscht. Wer also gepulste Ausgänge (zB: elektrische Garage/Toröffner) benötigt muss diese per Software nachbilden oder mit dem Kanal 1 auskommen. Eine &amp;quot;Pulsetime 10&amp;quot; ist ein guter Wert dafür (etwa 1 Sekunde). &lt;br /&gt;
&lt;br /&gt;
Als Alternative kann mit dieser HTML Seite des Webservers am Modul des CH4 schon mit jedem Browser fähigem Handy (Android, iPhone, Windows) aufgerufen werden und somit alle Funktionen gesteuert werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_ch4_4.jpg|thumb|left|alt=Sonoff CH4 Software APP]]&lt;br /&gt;
Hier dargestellt die Original Software die Sonoff zum Modul liefert (EWeLink) und über ihre Cloud verbindet. Leider kann hier keine gepulste Ausgabe erfolgen. Mit einem Countdown kann zwar der Ausgang wieder abgeschaltet werden, die kleinste Zeiteinheit ist aber 1 Minute und somit für einen Impuls leider nicht zu gebrauchen. Ebenso kann mit dieser Software keine Einbindung in FHEM erfolgen, obwohl es eine nette anschauliche Darstellung ist.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sonoff 4CH 4-Kanal Anbindung FHEM===&lt;br /&gt;
Beispiel zur Anbindung in FHEM für den 4CH, hier werden einfach 4 einzelne Schalter definiert!&lt;br /&gt;
 define Sonoff_ch1 MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_ch1 IODev myBroker&lt;br /&gt;
 attr Sonoff_ch1 alias Sonoff CH1&lt;br /&gt;
 attr Sonoff_ch1 devStateIcon on:rc_GREEN:off off:rc_RED:on&lt;br /&gt;
 attr Sonoff_ch1 eventMap ON:on OFF:off ON:Ein OFF:Aus&lt;br /&gt;
 attr Sonoff_ch1 group Toröffner&lt;br /&gt;
 attr Sonoff_ch1 icon light_ceiling&lt;br /&gt;
 attr Sonoff_ch1 publishSet ON OFF cmnd/sonoffch4/POWER1/set&lt;br /&gt;
 attr Sonoff_ch1 stateFormat Power&lt;br /&gt;
 attr Sonoff_ch1 subscribeReading_Power tele/sonoffch4/POWER1&lt;br /&gt;
 attr Sonoff_ch1 subscribeReading_state cmnd/sonoffch4/POWER1/set&lt;br /&gt;
 attr Sonoff_ch1 webCmd Ein:Aus&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_ch2 MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_ch2 IODev myBroker&lt;br /&gt;
 attr Sonoff_ch2 alias Sonoff CH2&lt;br /&gt;
 attr Sonoff_ch2 devStateIcon on:rc_GREEN:off off:rc_RED:on&lt;br /&gt;
 attr Sonoff_ch2 eventMap ON:on OFF:off ON:Ein OFF:Aus&lt;br /&gt;
 attr Sonoff_ch2 group Toröffner&lt;br /&gt;
 attr Sonoff_ch2 icon light_ceiling&lt;br /&gt;
 attr Sonoff_ch2 publishSet ON OFF cmnd/sonoffch4/POWER2/set&lt;br /&gt;
 attr Sonoff_ch2 stateFormat Power&lt;br /&gt;
 attr Sonoff_ch2 subscribeReading_Power tele/sonoffch4/POWER2&lt;br /&gt;
 attr Sonoff_ch2 subscribeReading_state cmnd/sonoffch4/POWER2/set&lt;br /&gt;
 attr Sonoff_ch2 webCmd Ein:Aus&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_ch3 MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_ch3 IODev myBroker&lt;br /&gt;
 attr Sonoff_ch3 alias Sonoff CH3&lt;br /&gt;
 attr Sonoff_ch3 devStateIcon on:rc_GREEN:off off:rc_RED:on&lt;br /&gt;
 attr Sonoff_ch3 eventMap ON:on OFF:off ON:Ein OFF:Aus&lt;br /&gt;
 attr Sonoff_ch3 group Toröffner&lt;br /&gt;
 attr Sonoff_ch3 icon light_ceiling&lt;br /&gt;
 attr Sonoff_ch3 publishSet ON OFF cmnd/sonoffch4/POWER3/set&lt;br /&gt;
 attr Sonoff_ch3 stateFormat Power&lt;br /&gt;
 attr Sonoff_ch3 subscribeReading_Power tele/sonoffch4/POWER3&lt;br /&gt;
 attr Sonoff_ch3 subscribeReading_state cmnd/sonoffch4/POWER3/set&lt;br /&gt;
 attr Sonoff_ch3 webCmd Ein:Aus&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_ch4 MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_ch4 IODev myBroker&lt;br /&gt;
 attr Sonoff_ch4 alias Sonoff CH4&lt;br /&gt;
 attr Sonoff_ch4 devStateIcon on:rc_GREEN:off off:rc_RED:on&lt;br /&gt;
 attr Sonoff_ch4 eventMap ON:on OFF:off ON:Ein OFF:Aus&lt;br /&gt;
 attr Sonoff_ch4 group Toröffner&lt;br /&gt;
 attr Sonoff_ch4 icon light_ceiling&lt;br /&gt;
 attr Sonoff_ch4 publishSet on off cmnd/sonoffch4/POWER4/set&lt;br /&gt;
 attr Sonoff_ch4 stateFormat Power&lt;br /&gt;
 attr Sonoff_ch4 subscribeReading_Power tele/sonoffch4/POWER4&lt;br /&gt;
 attr Sonoff_ch4 subscribeReading_state cmnd/sonoffch4/POWER4/set&lt;br /&gt;
 attr Sonoff_ch4 webCmd Ein:Aus&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Erweiterungen=&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sonoff Switch mit Temperatur + Luftfeuchte== &lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier geht es um nützliche Hardware Erweiterungen an den Originalmodulen!}}&lt;br /&gt;
Wozu überhaupt den Switch erweitern wenn es auch die Modelle TH10 und TH16 gibt?&lt;br /&gt;
&lt;br /&gt;
Manche Personen können dadurch dem Basteltrieb nachkommen, aber das wesentliche ist der Preis, da die Switches doch fast um die Hälfte billiger sind. Die Sensoren kosten ebenfalls kaum nennenswerte Beträge.&lt;br /&gt;
&lt;br /&gt;
Oder es hat schon jemand Switches im Einsatz und möchte jetzt zusätzlich die Temperatur erfassen!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hardware erweitern mit DHT22 ===&lt;br /&gt;
[[Datei:sonoff_sw_4.PNG|thumb|left|alt=Sonoff Switch Pinleiste mit Temperatur]]&lt;br /&gt;
Am Sonoff Switch wurde ja schon eine Stiftleiste zum Flashen eingelötet. Diese Stiftleiste bietet schon alle Anschlüsse welche für die Temperatur- und Luftfeuchtemessung benötigt werden. Am 5. Anschluß der Stifftleiste ist das Signal &amp;quot;SCL&amp;quot; (GPIO14) herausgeführt, welches für den DHT22 zur Erfassung der Messdaten benötigt wird. Der Sonsor wird mit einem einem 3-poligen Kabel (zB: ein Steckkabel für ein Breadboard oder direkt anlöten) verbunden. Damit der DHT22 korrekt funktioniert, wird ein Widerstand mit 4,7 K Ohm zwischen Vdd und Data am DHT22 zusätzlich benötigt. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_45.jpg|thumb|left|alt=AM2302 / DHT22]]&lt;br /&gt;
&lt;br /&gt;
Ansicht des DHT22 (AM2302) mit den aufgesteckten Verbindungskabeln. Von links nach rechts sind das&lt;br /&gt;
&lt;br /&gt;
 1 = VCC 3,3 V&lt;br /&gt;
 2 = Data&lt;br /&gt;
 3 = nc (nicht belegt)&lt;br /&gt;
 4 = GND&lt;br /&gt;
&lt;br /&gt;
Pin1 (VCC) des DHT22 muss also auf Pin1 der Stiftleiste, Pin2 (Data) auf Pin5 und Pin4 (GND) auf Pin4. &lt;br /&gt;
Pin2 und Pin1 soll hier noch der Widerstand aufgelötet werden.&lt;br /&gt;
&lt;br /&gt;
 1 ------- 1 (VDD)&lt;br /&gt;
 2 ------- 5 (GPIO14)&lt;br /&gt;
 3&lt;br /&gt;
 4 ------- 4 (GND)&lt;br /&gt;
 DHT22  Stiftleiste&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_44.jpg|thumb|left|alt=umgebautes Modul]]&lt;br /&gt;
Diese Darstellung zeigt das umgebaute und bereits verschlossene Modul. Auf der Seite des Tasters (bitte nur hier, da auf der anderen Seite die 230 V verlaufen und neben der Lebensgefahr auch den Sensor beeinflussen) ist hier einfach mit einer Eisensäge ein Schlitz eingesägt, der dient in diesem Falle als Kabeldurchführung. Ein Schlitz ist besser als ein Loch, da der Oberteil des Gehäuses sich leichter aufsetzen läßt. Wer ein längeres Kabel benötigt, kann natürlich auch ein 3-poliges Telefonkabel (oder Mikrokabel oder sonstiges) verwenden. Der Sensor sollte etwas Abstand zum Gehäuse haben, da dieses auch eine Eigenerwärmung hat. Wer es ganz originalgetreu lösen will, kann auch eine 3-polige Mini Buchse für Klinckenstecker (3,5mm) einbauen so wie sie am TH10/16 vorhanden ist.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Software anpassen am Beispiel MQTT ===&lt;br /&gt;
[[Datei:sonoff_sw_40.jpg|thumb|left|alt=Sonoff MQTT]]&lt;br /&gt;
&lt;br /&gt;
Die richtige Auswahl des Sensors und des verwendeten GPIO erfolgt im WEBIF des Modules und wird seit Tasmota nur mehr dort eingestellt. Eventuell sollte das aktuell verwendete [https://github.com/ddtlabs/expandJSON/ JSON Filter] geändert/erweitert werde (siehe beim Modul POW).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Software Anpassung DHT22 in FHEM ===&lt;br /&gt;
[[Datei:sonoff_sw_41.jpg|thumb|left|alt=umgebautes Modul]]&lt;br /&gt;
&lt;br /&gt;
Links in der Hardcopy sind die Readings die nach der Anpassung von FHEM (Broker) befüllt werden sollten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ### Temperatur und Luftfeuchte vom Sonoff Switch ###&lt;br /&gt;
 define Sonoff_Temp MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Temp IODev myBroker&lt;br /&gt;
 attr Sonoff_Temp icon temperature_humidity&lt;br /&gt;
 attr Sonoff_Temp room MQTT&lt;br /&gt;
 attr Sonoff_Temp stateFormat {sprintf(&amp;quot;Temperatur: %.1f Grad Feuchte: %.1f &amp;quot;, ReadingsVal($name,&amp;quot;temperature&amp;quot;,0), ReadingsVal($name,&amp;quot;humidity&amp;quot;,0))}&lt;br /&gt;
 attr Sonoff_Temp subscribeReading_Sensor tele/sonoff/SENSOR&lt;br /&gt;
Hier die zusätzliche Erweiterung um die Temperatur und die Luftfeuchte in FHEM. Der in der Topic verwendete Name &amp;quot;sonoff&amp;quot; muss natürlich der Einstellung in der Software am Switch entsprechen. Bei Verwendung mehrerer Switches muss natürlich auch der Name bei jedem geändert werden.&lt;br /&gt;
&lt;br /&gt;
Als Regexp für JSON kann dieser Filter eingesezt werden.&lt;br /&gt;
 define ej3 expandJSON .*\.SEN\..*:.*:.{.*} &lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Logfile für die Temperatur ===&lt;br /&gt;
 define SVG_FileLog_Sonoff_Temp SVG myDbLog:SVG_FileLog_Sonoff_Temp:HISTORY&lt;br /&gt;
 attr SVG_FileLog_Sonoff_Temp room MQTT&lt;br /&gt;
&lt;br /&gt;
Und schließlich fehlt noch das Logfile, damit der Temperaturverlauf auch in schönen Plots dargestellt werden kann.&lt;br /&gt;
Das hier verwendete Beispiel funktioniert nur mit einer DbLog.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Switch als Thermostat verwenden mit MQTT== &lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_55.jpg|thumb|left|alt=Thermostat]]&lt;br /&gt;
Mit diesem einfachen Beispiel wird ein Pelett Ofen mit einem externen Thermostat (sonoff Switch oder TH10/16) gesteuert. Zum besseren Überblick wird die Steuerung in einzelne Module getrennt, es könnte aber auch einiges zu einer einzigen Definition zusammen gefasst werden. Der Thermostat könnte auch als Frostwächter benutzt werden und ein anderes Heizgerät steuern.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 ###################################&lt;br /&gt;
 ### Sonoff Thermostat Regelung ####&lt;br /&gt;
 ###################################&lt;br /&gt;
 define Sonoff_dht MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_dht IODev myBroker&lt;br /&gt;
 attr Sonoff_dht alias Raumtemperatur&lt;br /&gt;
 attr Sonoff_dht group Thermostat&lt;br /&gt;
 attr Sonoff_dht icon temperature_humidity&lt;br /&gt;
 attr Sonoff_dht publishSet ON OFF cmnd/sonoff_dht/POWER/set&lt;br /&gt;
 attr Sonoff_dht room _Sonoff&lt;br /&gt;
 attr Sonoff_dht stateFormat {sprintf(&amp;quot;Temperatur: %.1f Grad Feuchte: %.1f &amp;quot;, ReadingsVal($name,&amp;quot;temperature&amp;quot;,0),  ReadingsVal($name,&amp;quot;humidity&amp;quot;,0))}&lt;br /&gt;
 attr Sonoff_dht subscribeReading_Sensor tele/sonoff_dht/SENSOR&lt;br /&gt;
 attr Sonoff_dht subscribeReading_state cmnd/sonoff_dht/POWER/set&lt;br /&gt;
FHEM Definition zur Erfassung der Temperatur und der Luftfeuchte. Damit dieses Beispiel funktioniert, ist am Sonoff Modul die Topic &amp;quot;&#039;&#039;&#039;sonoff_dht&#039;&#039;&#039;&amp;quot; zu setzen. Dieser Temperaturwert dient dem Thermostat als ISTWert.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Sw MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Sw IODev myBroker&lt;br /&gt;
 attr Sonoff_Sw alias Pellets Ofen&lt;br /&gt;
 attr Sonoff_Sw devStateIcon on:rc_GREEN:off off:rc_RED:on&lt;br /&gt;
 attr Sonoff_Sw eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_Sw group Thermostat&lt;br /&gt;
 attr Sonoff_Sw icon sani_boiler_temp&lt;br /&gt;
 attr Sonoff_Sw publishSet ON OFF cmnd/sonoff_dht/POWER/set&lt;br /&gt;
 attr Sonoff_Sw room _Sonoff&lt;br /&gt;
 attr Sonoff_Sw stateFormat Licht&lt;br /&gt;
 attr Sonoff_Sw subscribeReading_Licht tele/sonoff_dht/POWER&lt;br /&gt;
 attr Sonoff_Sw subscribeReading_state cmnd/sonoff_dht/POWER/set&lt;br /&gt;
 attr Sonoff_Sw webCmd ON:OFF&lt;br /&gt;
FHEM Definition zum Absetzen der Befehle für das Relais (Thermostat) Ein- / Aus. Wenn das zu steuernde Geräte einen potentialfreien Thermostatanschluß benötigt (in den meisten Fällen), muss noch ein Relais dazwischen geschaltet werden um die Trennung der Netzspannung zu gewährleisten.&lt;br /&gt;
&lt;br /&gt;
 define ThermostatPellets dummy&lt;br /&gt;
 attr ThermostatPellets alias Pellets Ofen Sollwert&lt;br /&gt;
 attr ThermostatPellets group Thermostat&lt;br /&gt;
 attr ThermostatPellets icon temp_control&lt;br /&gt;
 attr ThermostatPellets room _Sonoff&lt;br /&gt;
 attr ThermostatPellets setList state:0,5,10,12,13,14,15,16,17,17.5,18,18.5,19,19.5,20,20.5,21,21.5,22,23,24,25,26,27&lt;br /&gt;
 attr ThermostatPellets webCmd state&lt;br /&gt;
Die Sollwertvorgabe für das Thermostat durch einen Dummy, damit können die gewünschten Temperaturen eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
 ### sofort ausführen wenn neuer Sollwert eingestellt wird ###&lt;br /&gt;
 define Thermostat_on_notify notify ThermostatPellets IF (ReadingsVal(&amp;quot;Sonoff_Sw&amp;quot;,&amp;quot;state&amp;quot;,0) eq &amp;quot;OFF&amp;quot; &amp;amp;&amp;amp; (ReadingsVal(&amp;quot;Sonoff_dht&amp;quot;,&amp;quot;temperature&amp;quot;,0) &amp;lt;= Value(&amp;quot;ThermostatPellets&amp;quot;))) (set Sonoff_Sw ON)&lt;br /&gt;
 define Thermostat_off_notify notify ThermostatPellets IF (ReadingsVal(&amp;quot;Sonoff_Sw&amp;quot;,&amp;quot;state&amp;quot;,0) eq &amp;quot;ON&amp;quot; &amp;amp;&amp;amp; (ReadingsVal(&amp;quot;Sonoff_dht&amp;quot;,&amp;quot;temperature&amp;quot;,0) &amp;gt; Value(&amp;quot;ThermostatPellets&amp;quot;))) (set Sonoff_Sw OFF)&lt;br /&gt;
Mit einem notify wird die manuelle Änderung des Sollwertes überwacht und sofort reagiert.&lt;br /&gt;
&lt;br /&gt;
 ## zyklisch prüfen ob Sollwert erreicht wurde ###&lt;br /&gt;
 define Thermostat_on at +*00:15:00 IF (ReadingsVal(&amp;quot;Sonoff_Sw&amp;quot;,&amp;quot;Licht&amp;quot;,0) eq &amp;quot;OFF&amp;quot; &amp;amp;&amp;amp; (ReadingsVal(&amp;quot;Sonoff_dht&amp;quot;,&amp;quot;temperature&amp;quot;,0) &amp;lt;= Value(&amp;quot;ThermostatPellets&amp;quot;))) (set Sonoff_Sw ON)&lt;br /&gt;
 define Thermostat_off at +*00:15:00 IF (Value(&amp;quot;Sonoff_Sw&amp;quot;) eq &amp;quot;ON&amp;quot; &amp;amp;&amp;amp; (ReadingsVal(&amp;quot;Sonoff_dht&amp;quot;,&amp;quot;temperature&amp;quot;,0) &amp;gt; Value(&amp;quot;ThermostatPellets&amp;quot;))) (set Sonoff_Sw OFF)&lt;br /&gt;
Hier noch die Soll- Ist Wertvergleiche zur Steuerung. Es wird alle 15 Minuten überprüft ob die Temperatur erreicht ist. Bei einer trägen Heizung sollten 15 Minuten ausreichend sein, wer will kann dies aber auch alle 5 oder 10 Minuten prüfen.&lt;br /&gt;
Da des öfteren die Bezeichnungen der Readings im Sketch geändert werden ( zB:temperature ), bitte die richtige Schreibweise ( Groß/Klein ) in den Readings kontrollieren und gegebenenfalls hier anpassen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Switch mit Bewegungsmelder HC-SR501== &lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_pir_1.jpg|thumb|left|alt=Bewegungsmelder]]&lt;br /&gt;
Basierend auf dem Wall Switch MQTT Sketch von Arends wurde hier ein Sonoff BASIC + PIR HC-SR501 in eine größere Verteilerdose eingebaut, der Sonoff wurde dabei etwas gekürzt. Die Bewegungsmelder sind ab etwa 70 Cent erhältlich.&lt;br /&gt;
&lt;br /&gt;
Der Sketch kann auch den Blink Modus. Damit kann man im Alarmfall z.B. Alle Strahler rings ums Haus blinken lassen.&lt;br /&gt;
&lt;br /&gt;
Mehr dazu kann hier im [https://forum.fhem.de/index.php/topic,63824.0.html Forum]im Diskussionsthread nachgelesen werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_pir_2.jpg|thumb|left|alt=Bewegungsmelder]]&lt;br /&gt;
Ein Beispiel wir der Bewegungsmelder in der Feuchtraumdose montiert werden kann. Wird der Bewegungsmelder abgesetzt vom Switch montiert, ist darauf zu achten das die Kabel nicht zu lange werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
===Spannungsversorgung des HC-SR501===&lt;br /&gt;
[[Datei:sonoff_pir_4.jpg|thumb|left|alt=5V für Bewegungsmelder]]&lt;br /&gt;
Der HC-SR501 wird vom Sonoff versorgt, wobei hier die 3,3 V nicht immer ausreichen. Es ist deshalb am HC-SR501 eine Diode zu überbrücken, dann reichen die 3,3V vom Sonoff. Es können aber auch am Sonoff die 5V angezapft werden. Hier im Bild dargestellt wo die 5V angezapft werden können.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_pir_5.jpg|thumb|left|alt=3,3V für Bewegungsmelder]]&lt;br /&gt;
Hier eine kleine Übersicht der wichtigsten Teile und deren Platzierung am HC-SR501. &lt;br /&gt;
Den PIR kann man auch mit 3,3V betreiben wenn man die Diode am Eingang nach Vcc überbrückt, dann reicht die Spannung für einen reibungslosen Betrieb völlig aus. Dies gilt für den HC-SR501, wird ein anderer PIR verwendet muss man nachschauen ob das auch möglich ist, ansonsten die 5V Variante wählen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===Einbindung des HC-SR501 in FHEM===&lt;br /&gt;
 # ------------- Sonoff_pir mit Bewegungsmelder ---------------&lt;br /&gt;
 define Sonoff_pir MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_pir IODev myBroker&lt;br /&gt;
 attr Sonoff_pir eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_pir group Sonoff&lt;br /&gt;
 attr Sonoff_pir icon hue_filled_br30&lt;br /&gt;
 attr Sonoff_pir publishSet ON OFF cmnd/sonoff_pir/POWER/set&lt;br /&gt;
 attr Sonoff_pir room MQTT&lt;br /&gt;
 attr Sonoff_pir stateFormat Licht&lt;br /&gt;
 attr Sonoff_pir subscribeReading_Licht stat/sonoff_pir/POWER&lt;br /&gt;
 attr Sonoff_pir subscribeReading_state cmnd/sonoff_pir/POWER/set&lt;br /&gt;
 attr Sonoff_pir webCmd :&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel wie der Sonoff Switch in FHEM eingebunden wird. Wenn im Sketch der Prefix von stat auf tele geändert wurde, ist dies auch hier durchzuführen ( subscribeReading_Licht tele/sonoff_pir/POWER ), ansonsten bleibt es so wie im Beispiel. Getestet wurde dieses Beispiel mit Version 3.1.6. Die Topic sollte auf den Namen &amp;quot;sonoff_pir&amp;quot; eingestellt werden. Bei anderen Namen ist dies entsprechend in FHEM anzupassen. &lt;br /&gt;
&lt;br /&gt;
Mit dem Kommando &#039;&#039;&#039;BUTTONTOPIC Alarm_SO2&#039;&#039;&#039; ( direkt im Webinterface des Sonoff ) wird der Wall Switch GPIO14 vom Sonoff entkoppelt und somit sendet der Bewegungsmelder direkt an FHEM --&amp;gt; Motion_pir MQTT_DEVICE&lt;br /&gt;
&lt;br /&gt;
Es sollte auch unbedingt kontrolliert werden, wie die Ausgabe des Alarmes in der Console erfolgt. Erscheint hier die Meldung &amp;quot;cmnd/Alarm_SO2/POWER = TOGGLE&amp;quot; dann muss mit dem Kommando &amp;quot;&#039;&#039;&#039;switchmode 1&#039;&#039;&#039;&amp;quot; das Ausgabeformat umgeschaltet werden, erst dann kommt das gewünschte Format &amp;quot;On&amp;quot; und &amp;quot;OFF&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 # ------------------ Motion_pir MQTT_DEVICE -----------------&lt;br /&gt;
 define Motion_pir MQTT_DEVICE&lt;br /&gt;
 attr Motion_pir IODev myBroker&lt;br /&gt;
 attr Motion_pir devStateIcon on:on-for-timer off:off&lt;br /&gt;
 attr Motion_pir eventMap ON:on OFF:off&lt;br /&gt;
 attr Motion_pir group Sonoff&lt;br /&gt;
 attr Motion_pir icon people_sensor&lt;br /&gt;
 attr Motion_pir room MQTT&lt;br /&gt;
 attr Motion_pir stateFormat Alarm&lt;br /&gt;
 attr Motion_pir subscribeReading_Alarm cmnd/Alarm_SO2/POWER&lt;br /&gt;
Die Motion_pir dient nun zur eigentlichen Einschaltung des Lichtes und sendet das Kommando &#039;&#039;&#039;cmnd/Alarm_SO2/POWER&#039;&#039;&#039; an den entkopellten GPIO 14 des Switch.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # ------------------ DoIf zur Motion Abfrage -----------------&lt;br /&gt;
 define di_Sonoff_pir_Alarm DOIF ([Motion_pir:&amp;quot;on&amp;quot;] and [Tag_Nacht:twilight_weather] &amp;lt; 35) (set Sonoff_pir on) DOELSEIF ([Motion_pir:&amp;quot;off&amp;quot;] and [Tag_Nacht:twilight_weather] &amp;lt; 35) (set Sonoff_pir off)&lt;br /&gt;
 attr di_Sonoff_pir_Alarm comment Abhängig von Helligkeitssensor wird nachts,bei Bewegung das Licht eingeschaltet!&lt;br /&gt;
 attr di_Sonoff_pir_Alarm group Sonoff&lt;br /&gt;
 attr di_Sonoff_pir_Alarm room MQTT&lt;br /&gt;
Zusätzlich kann nun mit einem &#039;&#039;&#039;Doif&#039;&#039;&#039; verknüpft werden um das Ganze mit Tag_Nacht:twilight_weather dann in Abhängigkeit der Helligkeit zu schalten. Selbstverständlich kann jede andere Quelle mit einem Helligkeitswert verwendet werden.&lt;br /&gt;
&lt;br /&gt;
===Alarmausgabe über Grouptopic===&lt;br /&gt;
 # ------------------------ Sonoffs Group ----------------------&lt;br /&gt;
 define Sonoffs MQTT_DEVICE&lt;br /&gt;
 attr Sonoffs IODev myBroker&lt;br /&gt;
 attr Sonoffs eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoffs group Sonoff&lt;br /&gt;
 attr Sonoffs icon hue_filled_br30&lt;br /&gt;
 attr Sonoffs publishSet ON OFF cmnd/sonoffs/POWER/set&lt;br /&gt;
 attr Sonoffs room MQTT&lt;br /&gt;
 attr Sonoffs stateFormat state&lt;br /&gt;
 attr Sonoffs subscribeReading_Licht stat/sonoffs/POWER&lt;br /&gt;
 attr Sonoffs subscribeReading_state cmnd/sonoffs/POWER/set&lt;br /&gt;
Wer möchte kann auch mit der Group Topic mehrere Switches mit Bewegungsmelder zusammenfassen und alle Lampen im Alarmfall gemeinsam in den Blinkmodus schalten. cmnd/sonoffs ist das Kommando für die Group Topic, sofern diese vom User nicht verändert wurde.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Switch als IR-Sender verwenden == &lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_ir_1.jpg|thumb|left|alt=IR]]&lt;br /&gt;
Mit einem normalen Sonoff Basic Modul kann dies zu einer IR Fernbedienung hochgerüstet werden.&lt;br /&gt;
&lt;br /&gt;
Der einfache Schaltplan ist [https://raw.githubusercontent.com/altelch/SonoffIR/master/SonoffIR-Schematics.png hier] zu finden und der Nachbau ist sehr einfach. Man kann aber auch aus einer alten FB die IR-Diode ausbauen und zusammen schalten. Ein kleines Howto ist in [https://github.com/altelch/SonoffIR diesem Wiki] auf Github zu finden.&lt;br /&gt;
&lt;br /&gt;
Verwendet wird dazu der Arends Sketch.&lt;br /&gt;
&lt;br /&gt;
Als erstes sucht man sich auf [http://lirc.sourceforge.net/remotes/ LIRC]die entsprechenden FB-Codes, im Beispiel hier für einen Samsung TV 55&amp;quot; Curved UHD HU8580. Die FB ist zwar nicht exakt dieselbe, aber die Befehle passen soweit. Im Webif des Sonoff Modules ist beim angeschlossenen GPIO der IR-Diode &amp;quot;8 IRremote&amp;quot; einzustellen.&lt;br /&gt;
&lt;br /&gt;
Link zum [https://forum.fhem.de/index.php/topic,67316.0.html Forums Thread]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Wichtig sind dabei folgende Daten:&lt;br /&gt;
 name  Samsung_BN59-00940A&lt;br /&gt;
 bits           16&lt;br /&gt;
 pre_data_bits  16&lt;br /&gt;
 pre_data       0xE0E0&lt;br /&gt;
 Power On/Off   0x40BF[/code]&lt;br /&gt;
&lt;br /&gt;
Nun stellt man sich den Sendestring zusammen:&lt;br /&gt;
 predata+Befehl =  E0E0&#039;&#039;&#039;40BF&#039;&#039;&#039; (hex) = 3772793023 (dec) und 32 Bit Datenlänge.&lt;br /&gt;
&lt;br /&gt;
 Der JSON String für den IRSend ist laut [https://github.com/arendst/Sonoff-Tasmota/wiki/Commands Arends Wiki] folgender.&lt;br /&gt;
 IRsend    | {&amp;quot;protocol&amp;quot;: &amp;quot;&amp;lt;proto&amp;gt;&amp;quot;, | Send IR remote control as JSON encapsulated command.&lt;br /&gt;
           |   &amp;quot;bits&amp;quot;: 1..32         | &amp;lt;proto&amp;gt; is NEC, SONY, RC5, RC6, DISH, JVC or SAMSUNG&lt;br /&gt;
           |   &amp;quot;data&amp;quot;: 1..(2^32)-1}  | bits are the required number of data bits.&lt;br /&gt;
           |                         | data is the data frame as 32 bit unsigned integer.&lt;br /&gt;
           |                         | See http://www.lirc.org/ for more info.&lt;br /&gt;
&lt;br /&gt;
das ergibt dann unseren Befehl für die Kommandozeile am Modul. Die Bitlänge für Pre und Data sind ebenfalls zu addieren (16 + 16 = 32 Bit) und beim Arends Sketch muss im JSON Format gesendet werden:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;irsend  {&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772793023}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
oder hier für die Kommandozeile am Broker:&lt;br /&gt;
 &#039;&#039;&#039;mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772793023}&#039;&#039;&#039;&#039;&lt;br /&gt;
TestSwitch ist hier der verwendete Name des Sonoff Moduls, wird ein anderer Name verwendet ist dieser hier anzupassen.&lt;br /&gt;
&lt;br /&gt;
Jedesmal wenn nun der Befehl gesendet wird, wird entweder Ein- oder Aus geschaltet. Die Verzögerung über Wlan ist vernachlässigbar. Ebenso können die Kanäle oder die Laustärke verstellt werden. Im Prinzip funktionieren alle Befehle die auf der FB vorhanden sind.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Sonoff Switch als IR-Sender FHEM Beispiel===&lt;br /&gt;
[[Datei:sonoff_ir_2.jpg|thumb|left|alt=IR]]&lt;br /&gt;
Hier ein Beispiel wie der Code für die Fernbedienung in Fhem eingebunden werden kann.&lt;br /&gt;
 define RC_TV remotecontrol&lt;br /&gt;
 attr RC_TV rc_iconpath icons/remotecontrol&lt;br /&gt;
 attr RC_TV rc_iconprefix black_btn_&lt;br /&gt;
 attr RC_TV room Entwicklung&lt;br /&gt;
 attr RC_TV row00 KEY_POWER:POWEROFF,:blank,:blank&lt;br /&gt;
 attr RC_TV row02 :blank,:blank,:blank&lt;br /&gt;
 attr RC_TV row03 KEY_1:1,KEY_2:2,KEY_3:3&lt;br /&gt;
 attr RC_TV row04 KEY_4:4,KEY_5:5,KEY_6:6&lt;br /&gt;
 attr RC_TV row05 KEY_7:7,KEY_8:8,KEY_9:9&lt;br /&gt;
 attr RC_TV row06 :blank,KEY_0:0,:blank&lt;br /&gt;
 attr RC_TV row07 :blank,:blank,:blank&lt;br /&gt;
 attr RC_TV row08 KEY_VOLUMEUP:UP,KEY_MUTE:MUTE,KEY_CHANNELUP:CHUP&lt;br /&gt;
 attr RC_TV row09 KEY_VOLUMEDOWN:DOWN,:blank,KEY_CHANNELDOWN:CHDOWN&lt;br /&gt;
&lt;br /&gt;
 define Samsung_TV notify RC_TV &amp;quot;/opt/fhem/ircmd.sh $EVENT&amp;quot;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
In einem externen Shell Script werden die Parameter übergeben und der Sendestring für den IRSend zusammen gestellt. Das Script ins FHEM Home Verzeichnis kopieren ( /opt/fhem ) und die Rechte auf 755 setzen.&lt;br /&gt;
[https://wiki.fhem.de/wiki/Remotecontrol Link zum Wiki] einer universellen Fernbedienung.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh -e&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_POWER&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772793023}&#039;&lt;br /&gt;
 fi&lt;br /&gt;
 # E0E0E01F   3772833823&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_VOLUMEUP&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772833823}&#039;&lt;br /&gt;
 fi&lt;br /&gt;
 # E0E0D02F   3772829743&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_VOLUMEDOWN&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772829743}&#039;&lt;br /&gt;
 fi&lt;br /&gt;
 # E0E0F00F   3772837903&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_MUTE&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772837903}&#039;&lt;br /&gt;
 fi&lt;br /&gt;
 # E0E020DF   3772784863&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_1&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772784863}&#039;&lt;br /&gt;
 fi&lt;br /&gt;
 # E0E0A05F   3772817503&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_2&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772817503}&#039;&lt;br /&gt;
 fi   &lt;br /&gt;
 # E0E0609F   3772801183&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_3&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772801183}&#039;&lt;br /&gt;
 fi &lt;br /&gt;
 # E0E010EF   3772780783&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_4&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772780783}&#039;&lt;br /&gt;
 fi &lt;br /&gt;
 # E0E0906F   3772813423&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_5&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772813423}&#039;&lt;br /&gt;
 fi &lt;br /&gt;
 # E0E050AF   3772797103&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_6&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772797103}&#039;&lt;br /&gt;
 fi &lt;br /&gt;
 # E0E030CF   3772788943&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_7&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772788943}&#039;&lt;br /&gt;
 fi&lt;br /&gt;
 # E0E0B04F   3772821583&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_8&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772821583}&#039;&lt;br /&gt;
 fi &lt;br /&gt;
 # E0E0708F   3772805263&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_9&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772805263}&#039;&lt;br /&gt;
 fi         &lt;br /&gt;
 # E0E08877   3772811383&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_0&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772811383}&#039;&lt;br /&gt;
 fi&lt;br /&gt;
 # E0E048B7   3772795063&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_CHANNELUP&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772795063}&#039;&lt;br /&gt;
 fi&lt;br /&gt;
 # E0E008F7   3772778743&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;KEY_CHANNELDOWN&amp;quot; ]; then&lt;br /&gt;
  mosquitto_pub -q 2 -t cmnd/TestSwitch/IRSend/set -m &#039;{&amp;quot;protocol&amp;quot;: &amp;quot;SAMSUNG&amp;quot;,&amp;quot;bits&amp;quot;: 32, &amp;quot;data&amp;quot;: 3772778743}&#039;&lt;br /&gt;
 fi  &lt;br /&gt;
Das Script kann sehr leicht für jede andere FB abgeändert werden und auch noch zusätzliche Tasten eingebunden werden. Bitte nicht auf die vorangestellten Pre-Data-Bits vergessen. Auf die Verwendung des Scriptes kann auch verzichtet werden, wenn der JSON String in Fhem direkt zusammen gestellt wird. Für den Nachbau ist es aber leichter verständlicher und kann auch leicht selber an die eigene FB angepasst werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:IP Components]]&lt;br /&gt;
--[[Benutzer:Reinhart|Reinhart]] ([[Benutzer Diskussion:Reinhart|Diskussion]]) 23. Feb. 2017 (CET)&lt;/div&gt;</summary>
		<author><name>Reinhart</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:Sonoff_ir_2.jpg&amp;diff=20181</id>
		<title>Datei:Sonoff ir 2.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:Sonoff_ir_2.jpg&amp;diff=20181"/>
		<updated>2017-02-23T09:39:20Z</updated>

		<summary type="html">&lt;p&gt;Reinhart: eigene Bilder&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;eigene Bilder&lt;/div&gt;</summary>
		<author><name>Reinhart</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:Sonoff_ir_1.jpg&amp;diff=20180</id>
		<title>Datei:Sonoff ir 1.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:Sonoff_ir_1.jpg&amp;diff=20180"/>
		<updated>2017-02-23T09:39:06Z</updated>

		<summary type="html">&lt;p&gt;Reinhart: eigene Bilder&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;eigene Bilder&lt;/div&gt;</summary>
		<author><name>Reinhart</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Sonoff&amp;diff=20175</id>
		<title>Sonoff</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Sonoff&amp;diff=20175"/>
		<updated>2017-02-22T17:09:37Z</updated>

		<summary type="html">&lt;p&gt;Reinhart: Header hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=Ankopplung der Sonoff Module an Fhem&lt;br /&gt;
|ModType=&lt;br /&gt;
|ModForumArea=ESP8266&lt;br /&gt;
|ModTechName=Sonoff&lt;br /&gt;
|ModOwner=Reinhart &lt;br /&gt;
}}&lt;br /&gt;
&#039;&#039;&#039;SONOFF, dieser Artikel beschreibt die Ankopplung der kostengünstigen Sonoff Module an FHEM mit ESPEasy oder Arends MQTT.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Seit einiger Zeit werden von der [https://www.itead.cc/sonoff-wifi-wireless-switch.html Fa. Itead] kostengünstige &amp;quot;sonoff&amp;quot; Produkte angeboten die glücklicherweise den [http://dl.itead.cc/IM151116002/0A-ESP8266_Specifications_v4.1.pdf ESP8266 Chip] On Board haben und somit die ideale Grundlage für [http://www.esp8266.nu/index.php/Main_Page ESPEasy] und für [https://forum.fhem.de/index.php/board,46.0.html FHEM] darstellen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nützliche Links zum Hersteller:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://www.itead.cc/blog/user-guide-for-sonoff-slampher User Manual von Itead]&lt;br /&gt;
&lt;br /&gt;
[https://www.itead.cc/wiki/images/6/6b/Sonoff_schmatic.pdf Sonoff Schaltplan]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Hardware=&lt;br /&gt;
&#039;&#039;&#039;Bitte unbedingt die elektrotechnischen Sicherheitsrichtlinien beachten und einhalten!&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_sw_15.jpg|thumb|left|alt=Warnung Netzspannung]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Achtung: An dem Modul liegt Netzspannung an die lebensgefährlich ist. Es dürfen nur entsprechend ausgebildete Personen dieses Modul in Betrieb nehmen. Zum Umbau und zur Softwareaktualisierung darf keine Netzspannung angeschlossen sein&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Wie gefährlich das hantieren mit Netzspannung sein kann, wird hier am Beispiel eines [http://mysku.ru/blog/china-stores/45762.html russischen Anwenders] gezeigt, der hat beim Flashen die Netzspannung am Modul gelassen und somit über die Verbindung mit dem Netzteil des Laptop lebensgefährliche Spannung auf die FTDI Schnittstelle gebracht. Das Modul ist dabei abgeraucht!&lt;br /&gt;
&lt;br /&gt;
==Modelle==&lt;br /&gt;
&lt;br /&gt;
===Produktübersichtsliste sonoff===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:right&amp;quot;&lt;br /&gt;
! Produkt Name !! Beschreibung !! Spannungsversorgung !!  Imax !! Pmax !! Frequenz !! Schaltplan !! Link&lt;br /&gt;
|-&lt;br /&gt;
| Sonoff || Wireless control switch || 90~250V AC || 10A || 2200W || 2.4Ghz || [http://wiki.iteadstudio.com/Sonoff Plan] || [https://www.itead.cc/smart-home/sonoff-wifi-wireless-switch.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| Sonoff RF || 433 RF remote || 90~250V AC || 10A || 2200W || 2.4Ghz || [http://wiki.iteadstudio.com/Sonoff_RF Plan] || [https://www.itead.cc/smart-home/im151116003.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| Sonoff SV || Low voltage Input || 5~24V DC || 10A || 240W DC || 2.4Ghz || [http://wiki.iteadstudio.com/Sonoff_SV Plan] || [https://www.itead.cc/smart-home/sonoff-sv.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| Sonoff TH10/TH16 || Monitor and set Temp.&amp;amp;Hum. ||  90~250V AC || 10A/16A || 2200W(10A)/3500W(16A)	 || 2.4Ghz || [http://wiki.iteadstudio.com/Sonoff_TH_10/16 Plan] || [https://www.itead.cc/smart-home/sonoff-th.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Sonoff Dual || Remote control 2 devices ||  90~250V AC || 16A || 3500W || 2.4Ghz || [https://www.itead.cc/wiki/Sonoff_Dual Plan] || [https://www.itead.cc/sonoff-dual.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Sonoff Pow || Report power &amp;amp;power usage ||  90~250V AC || 16A || 3500W || 2.4Ghz || [https://www.itead.cc/wiki/Sonoff_Pow Plan] || [https://www.itead.cc/sonoff-pow.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Sonoff LED || WiFi Control Dimming LED ||  180~265V AC || 0.3-0.6A || 42W || 2.4Ghz ||  kein || [https://www.itead.cc/sonoff-led.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Sonoff Touch || WiFi wall touch switch ||  90~250V AC || 2A || 400W || 2.4Ghz || kein || [https://www.itead.cc/sonoff-touch.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Slampher || Wireless control light holder ||  90~250V AC || 2A || 200W || 2.4Ghz || [http://wiki.iteadstudio.com/Slampher Plan] || [https://www.itead.cc/smart-home/slampher-wifi-wireless-light-holder.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  S20 Smart Socket || Smart socket || 	90~250V AC || 10A || 2000W || 2.4Ghz || kein || [https://www.itead.cc/smart-home/smart-socket-eu.html EU-Stecker] &lt;br /&gt;
|-&lt;br /&gt;
|  iFan || Smart fan ||  185~264V AC ||﹤1A || 60W || 2.4Ghz || kein || [https://www.itead.cc/smart-home/smart-socket-eu.html EU-Stecker] &lt;br /&gt;
|-&lt;br /&gt;
| Motor/Pump Control Switch || clockwise/anticlockwise running ||  5V/7~32V DC || 10A || 50~320W || 2.4Ghz || kein || [https://www.itead.cc/smart-home/motor-reversing-wifi-wireless-switch.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| 1 Chnl Inching/self-locking Switch || Access control ||  	5V/12V DC || 10A || 50/120W || 2.4Ghz || kein || [https://www.itead.cc/smart-home/inching-self-locking-wifi-wireless-switch.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  4 Chnl Inching/self-locking/inter-locking Switch || Access control, rolling door control ||  5V/5~32V DC/90~250V AC || 10A || 50~320W/2500W || 2.4Ghz || kein || [https://www.itead.cc/ifan.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Eine Übersichtliste der verschiedenen Produkte mit technischen Kurzangaben.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Model: IM151116002: Erstes Modell===&lt;br /&gt;
[https://www.itead.cc/sonoff-wifi-wireless-switch.html Sonoff WiFi Wireless Smart Switch for MQTT COAP Smart Home]&lt;br /&gt;
[[Datei:sonoff_sw_0.jpg|thumb|left|alt=sonoff Switch]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Das sonoff Modul ist in einem zweckmäßigen und gefälligem Gehäuse verbaut!&lt;br /&gt;
&lt;br /&gt;
====Platine====&lt;br /&gt;
[[Datei:sonoff_sw_1.jpg|thumb|left|alt=sonoff Switch von vorne]]&lt;br /&gt;
&lt;br /&gt;
Die Platine ist sehr übersichtlich aufgebaut und der Hersteller hat auch alle Vorbereitungen zum Flashen einer alternativen Software vorgesehen (über serielle Schnittstelle via FTDI-Modul). Mit einer alternativen Software wie ESPEasy ist eine direkte Ankopplung des &#039;&#039;&#039;sonoff&#039;&#039;&#039; an FHEM somit ein leicht durchführbarer Vorgang.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_3.jpg|thumb|left|alt=sonoff Switch von hinten]]&lt;br /&gt;
Die stromführenden Leitungen wurden mit Lötzinn vom Hersteller verstärkt um die angegebenen Stromstärken mit geringer Hitzeentwicklung zu transportieren.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung: Bitte vor den Arbeiten kontrollieren, das an der Platine keine Netzspannung angeschlossen ist, LEBENSGEFAHR!&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Model: IM160712005: TH 10A/16A ===&lt;br /&gt;
[https://www.itead.cc/sonoff-th.html Sonoff TH 10A/16A WiFi Smart Switch]&lt;br /&gt;
&lt;br /&gt;
====TH10 / TH16 weitere GPIO zugänglich machen====&lt;br /&gt;
[[Datei:Sonoff_TH_10A-16A_kleiner.jpg|thumb|left|alt=TH10 / TH16 weitere GPIO zugänglich machen]]&lt;br /&gt;
Der Hersteller hat zwar schon Platine für eine weitere Stiftleiste vorbereitet, jedoch muss diese noch bestückt werden. Die nicht beschalteten Stifte können dann genutzt werden um die &amp;quot;verdeckten&amp;quot; GPIO zugänglich zu machen. Die Verdrahtung kann dem Bild entnommen werden.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Achtung: Bitte vor den Arbeiten kontrollieren, das an der Platine keine Netzspannung angeschlossen ist, LEBENSGEFAHR!&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Model: IM160811001: Sonoff Dual ===&lt;br /&gt;
[https://www.itead.cc/sonoff-dual.html Sonoff Dual WiFi Wireless Smart Swtich]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Model: IM160810001: Sonoff Pow ===&lt;br /&gt;
[https://www.itead.cc/sonoff-pow.html Sonoff POW WiFi Switch with Power Consumption Measurement]&lt;br /&gt;
[[Datei:sonoff_sw_30.jpg|thumb|left|alt=SONOFF POW]]Ein sehr interessantes und kostengünstiges Modul zur Messung der aktuellen Leistung. Das Modul kann via MQTT in FHEM angebunden werden.&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel zur Einbindung ist [http://www.fhemwiki.de/wiki/Sonoff#Sonoff_POW_einrichten hier unten] im Wiki beschrieben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===Model: weitere Modelle===&lt;br /&gt;
[https://www.itead.cc/search/result/?cat=&amp;amp;q=sonoff Sonoff Weitere Modelle finden sich auf der Homepage des Hersstellers]&lt;br /&gt;
&lt;br /&gt;
==Vorbereitungen zum Flashen==&lt;br /&gt;
[[Datei:sonoff_sw_2.jpg|thumb|left|alt=serielle Schnittstelle]]&lt;br /&gt;
&lt;br /&gt;
Hier auf der Platine sind die benötigten Signale für ein FTDI Modul schon vorhanden. Der quadratische Pin gleich über dem Taster ist die Spannungsversorgung zum Flashen vom FDTI von 3.3V Es muss daher unbedingt ein FTDI Modul genommen werden, dass nicht nur einen Jumper für 3.3V besitzt sondern auch die Spannung auf 3.3V herab setzt. Ist dies nicht der Fall, läuft man Gefahr das Modul unbrauchbar zu machen. Es ist daher zu empfehlen einen Spannungsteiler mit 2 Widerständen oder einen Pegelwandler zwischenschalten.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Signale der Schnittstelle==&lt;br /&gt;
von oben nach unten auf der Steckerleiste des sonoff U4 (Model: IM151116002).&lt;br /&gt;
&lt;br /&gt;
 Pin5 = vorbereitet für GPIO&lt;br /&gt;
 Pin4 = Masse&lt;br /&gt;
 Pin3 = TxD&lt;br /&gt;
 Pin2 = RxD&lt;br /&gt;
 Pin1 = 3.3V&lt;br /&gt;
&lt;br /&gt;
Siehe dazu auch den [https://forum.fhem.de/index.php/topic,55036.0.html Link aus dem Forum]:&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Platine mit Stiftleiste bestücken==&lt;br /&gt;
[[Datei:sonoff_sw_4.jpg|thumb|left|alt=Platine mit Stiftleiste bestücken]]&lt;br /&gt;
Der Hersteller hat zwar schon die Platine vorbereitet, jedoch muss sie noch mit einer Stiftleiste bestückt werden um das FTDI Modul bequem verbinden zu können. Nachdem einmal ESPEasy geflasht worden ist, kann es in Zukunft via WEB (OTA) geflasht werden und die Stiftleiste ist dann nicht mehr erforderlich. Aufgrund der geringen Kosten fällt dies jedoch nicht ins Gewicht.&amp;lt;br&amp;gt;&lt;br /&gt;
Für die Module TH10/TH16 sind die Lötpunkte für die Stiftleiste schon beschriftet. Die Stiftleiste selber muss allerdings auch nachgerüstet werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Achtung&#039;&#039;&#039;: Bitte vor den Arbeiten kontrollieren, das an der Platine keine Netzspannung angeschlossen ist, LEBENSGEFAHR!&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Software=&lt;br /&gt;
==MQTT und TASMOTA==&lt;br /&gt;
Der Autor Arends hat die Version Sonoff-MQTT-OTA-Arduino nun eingestellt und die Version 3.2.13 (Ende Jänner 2017)dürfte wohl die letzte dieser Generation gewesen sein. Mit der Einstellung dieser Version wurde zwar der Nachfolger &#039;&#039;&#039;TASMOTA&#039;&#039;&#039; erschaffen, aber leider nun auf das &#039;&#039;&#039;Messageformat LEGACY&#039;&#039;&#039; gänzlich verzichtet was bei der Auswertung der Messdaten in Fhem doch einige Probleme mit sich bringt, da der verwendete JSON String nun zusätzlich gefiltert werden muss.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Es gibt aber bereits sehr gute Lösungswege um dieses Problem zu beheben und somit spricht dem neuen Ausgabeformat nichts dagegen!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://forum.fhem.de/index.php/topic,66761.0.html in diesem Thread] wurde ein &#039;&#039;&#039;JSON to Reading Modul&#039;&#039;&#039; vorgestellt, dass den JSON String analysiert und alle darin enthaltenen Daten in Readings kopiert. Die Readings werden dabei in FHEM automatisch angelegt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Link: [https://github.com/arendst/Sonoff-Tasmota Tasmota]&lt;br /&gt;
&lt;br /&gt;
Link alte Software: [https://github.com/arendst/Sonoff-MQTT-OTA-Arduino Sonoff-MQTT-OTA-Arduino]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Alle hier im Wiki verwendeten Beispiele und deren Beschreibung sind nun für die neue Tasmota Version ausgelegt. Da in Tasmota fast alles im WEBIF konfiguriert werden kann, entfallen daher sinngemäß einige hier im Wiki erklärten Definitionen, speziell in der &amp;quot;user_config.h&amp;quot;.&lt;br /&gt;
Trotz diesem Komfort müssen die Einstellungen aber nun im WEBIF vorgenommen werden, die wohl wichtigste ist die Auswahl der verwendeten Hardware (Sonoff POW etc.).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ESPEasy flashen==&lt;br /&gt;
[[Datei:sonoff_sw_6.jpg|thumb|left|alt=sonoff mit angestecktem FDTI Adapter]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier geht es ausschließlich um die Software ESPEasy an den sonoff Modulen! }}&lt;br /&gt;
Die Spannungsversorgung des Sonoff Moduls wird hier vom FTDI Konverter mit 3.3V über die Verbindungskabel zum Pfostenstecker durchgeführt. &lt;br /&gt;
&lt;br /&gt;
Der FTDI Adapter wird dann mit der USB Schnittstelle mit dem Computer verbunden.&lt;br /&gt;
&lt;br /&gt;
Zum compilieren wird in der Arduino Umgebung auch die ArduinoJson Library 5.6.4+ benötigt. Eine genaue Anleitung kann [https://forum.fhem.de/index.php/topic,55728.msg473220.html#msg473220 hier] nachgelesen werden. Es sollte stest die aktuelle Version der Arduino Umgebung verwendet werden, bzw. die Librarys auf Letztstand gehalten werden. &lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===mit Arduino compilieren===&lt;br /&gt;
[[Datei:sonoff_sw_10.jpg|thumb|left|alt=Einstellung Arduino IDE]]&lt;br /&gt;
Wer selber mit der Arduino IDE compilieren will bitte folgende Einstellungen beachten. Die anschließenden Arbeiten sind dann gleich wie bei Abschnitt &#039;&#039;&#039;fertige Binary&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Unbedingt die neueste [https://github.com/bblanchon/ArduinoJson Arduino Json Library] benutzen (siehe oben)! Es gibt zwar keine Compilerfehler, aber es kommt anschließend zu Fehlfunktionen in der ESP Bridge!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 Generic ESP8266 Module&lt;br /&gt;
 Flash Mode: QIO&lt;br /&gt;
 Flash Frequency: 40 MHz&lt;br /&gt;
 CPU Frequency: 80 MHz&lt;br /&gt;
 Flash Size: 1M (64K SPIFFS)&lt;br /&gt;
 Debug Port: disabled&lt;br /&gt;
 Debug Level: none&lt;br /&gt;
 Reset Mode: ck&lt;br /&gt;
 Upload Speed: 115200&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===fertige Binary flashen===&lt;br /&gt;
[[Datei:sonoff_sw_7.jpg|thumb|left|alt=NodeMCU Firmware Flasher]]&lt;br /&gt;
Es empfiehlt sich eine fertige Binary von ESPEasy aufzuspielen. In diesem Wiki wurde R140 verwendet.&lt;br /&gt;
&lt;br /&gt;
Siehe dazu auch den [http://www.esp8266.nu/index.php/Main_Page Link von ESPEasy] und das [https://learn.adafruit.com/building-and-running-micropython-on-the-esp8266/flash-firmware Handbuch] für den Flasher.&lt;br /&gt;
&lt;br /&gt;
In manchen Versionen von ESPEasy (zB.R120) ist auch ein Flasher beigelegt, welcher zwar keine grafische Oberfläche hat aber hervorragend funktioniert. Wenn andere versagen, geht es mit diesem Flasher immer noch, einfach probieren!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 Netzspannung darf &#039;NICHT&#039; angeschlossen sein!!!&lt;br /&gt;
 Taster am Sonoff gedrückt halten&lt;br /&gt;
 FTDI Adapter verbinden&lt;br /&gt;
 Taster am Sonoff los lassen&lt;br /&gt;
 Sketch übertragen&lt;br /&gt;
 Sonoff vom FTDI trennen&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Wenn einmal die Firmware auf das sonoff Modul geflasht worden ist, kann in Zukunft ESPEasy direkt unter Tools via HTTP dies durchführen. Es muss dazu kein FTDI Konverter mehr verwendet werden.&lt;br /&gt;
&lt;br /&gt;
==ESPEasy==&lt;br /&gt;
[[Datei:sonoff_sw_11.jpg|thumb|left|alt=ESPEasy Devices]]&lt;br /&gt;
Wenn das Modul fertig geflasht ist und die Verbindung zum Modul hergestellt ist, können die Einstellungen in ESPEasy durchgeführt werden.&lt;br /&gt;
Dazu am Webinterface anmelden und zunächst die zwei Devices definieren.&lt;br /&gt;
&lt;br /&gt;
Der Hersteller hat für das &#039;&#039;&#039;Relaise GPIO 12&#039;&#039;&#039; und für die &#039;&#039;&#039;grüne Led GPIO 13&#039;&#039;&#039; vorgesehen. Der &#039;&#039;&#039;Taster ist an GPIO 0&#039;&#039;&#039; angeschlossen.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Device Schalter===&lt;br /&gt;
[[Datei:sonoff_sw_12.jpg|thumb|left|alt=Device Relais]]&lt;br /&gt;
Bei den Devices sollten die hier dargestellte Einstellungen beachtet werden. Der Switch (PUMP) sollte auf Input gestellt werden, sodass die anschließenden und benötigten Rules aktiviert werden können.&lt;br /&gt;
&lt;br /&gt;
Da beide Devicenamen gleich benannt wurden (PUMP) wird in FHEM nur ein Device angelegt! Die dazugehörenden Valuenames sind unterschiedlich (Relay, Key).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Device Taster===&lt;br /&gt;
[[Datei:sonoff_sw_13.jpg|thumb|left|alt=Device Key]]&lt;br /&gt;
Der Taste muss natürlich nur konfiguriert werden, wenn auch händisch am Modul geschaltet werden soll. Wird dies nicht benötigt, können auch die Rules geändert bzw. angepasst werden. Doch alleine zu Testzwecken ist es eine nützliche Sache.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Rules===&lt;br /&gt;
[[Datei:sonoff_sw_14.jpg|thumb|left|alt=Rules]]&lt;br /&gt;
Da das sonoff Modul auch einen eingebauten Taster hat und somit auch lokal bedient werden kann, sollte man zunächst unter &#039;&#039;&#039;Tools / Advanced das Häckchen Rules&#039;&#039;&#039; aktivieren, erst dann wird der Tab sichtbar und es können Rules erstellt werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 on PUMP#Key do&lt;br /&gt;
  if [PUMP#Relay]=1&lt;br /&gt;
    gpio,12,0&lt;br /&gt;
  else&lt;br /&gt;
    gpio,12,1&lt;br /&gt;
  endif&lt;br /&gt;
 endon&lt;br /&gt;
 on PUMP#Relay do&lt;br /&gt;
  if [PUMP#Relay]=1 &lt;br /&gt;
    gpio,13,0&lt;br /&gt;
  else&lt;br /&gt;
    gpio,13,1&lt;br /&gt;
  endif&lt;br /&gt;
 endon&lt;br /&gt;
Diese Rules ermöglichen, das bei lokaler Bedienung durch den Taster auch die &#039;&#039;&#039;Led&#039;&#039;&#039; richtig geschaltet wird.&lt;br /&gt;
Mit &#039;on PUMP#Key do&#039; wird geprüft ob die Taste gedrückt ist und schaltet dann entsprechend die Led. Mit den Rules können auch Timer oder sonstige Spielereien realisiert werden. Siehe dazu das [http://www.esp8266.nu/index.php/Tutorial_Rules Tutorial] von ESPeasy.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ESPEasy in FHEM einrichten==&lt;br /&gt;
[[Datei:sonoff_sw_9.jpg|thumb|left|alt=FHEM Konfiguration]]&lt;br /&gt;
Dies ist eine einfache Darstellung wie FHEM automatisch den Device erstellt.&lt;br /&gt;
&lt;br /&gt;
Damit FHEM mit ESPEasy und dem sonoff Modul kommunizieren kann, muss in der fhem.cfg vorerst nur die espBridge mit dem hier dargestellten Eintrag aktiviert werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 define espBridge ESPEasy bridge 8383&lt;br /&gt;
Dies ist eigentlich die einzige Zeile die in fhem.cfg angelegt werden muss. Die restliche Konfiguration wird von FHEM automatisch generiert. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 ##########################################&lt;br /&gt;
 ###             ESPEASY               ####&lt;br /&gt;
 ##########################################&lt;br /&gt;
 &lt;br /&gt;
 define ESPEasy_sonoff_1_PUMP ESPEasy 10.0.0.37 80 espBridge sonoff_1_PUMP&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP IODev espBridge&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP devStateIcon on:rc_GREEN:off off:rc_RED:on absent:rc_BLUE:off gpio:rc_YELLOW:off&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP eventMap /gpio 12 on:on/gpio 12 off:off/gpio 12 gpio:off/gpio 12 output:off/&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP group ESPEasy Device&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP icon hue_filled_outlet&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP room ESPEasy&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP setState 0&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP stateFormat {ReadingsVal($name,&amp;quot;presence&amp;quot;,&amp;quot;&amp;quot;) eq &amp;quot;absent&amp;quot; ? &amp;quot;absent&amp;quot; : ReadingsVal($name,&amp;quot;Relay&amp;quot;,&amp;quot;&amp;quot;)}&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP webCmd :&lt;br /&gt;
&lt;br /&gt;
hier ein Beispiel wie es auch manuell leicht modifiziert werden kann.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_8.jpg|thumb|left|alt=sonoff Readings]]&lt;br /&gt;
&lt;br /&gt;
Die Readings werden durch die Bridge (Modul ESPEasy) automatisch angelegt.&lt;br /&gt;
&lt;br /&gt;
Es besteht hier noch genug Spielraum um zB. auch noch Temperatursensoren an das Modul anzuschließen und ebenfalls in FHEM darzustellen.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==MQTT Server einrichten==&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier geht es ausschließlich um den Sketch von Arends und MQTT an den sonoff Modulen! }}&lt;br /&gt;
Es bleibt jedem Anwender die freie Wahl ob die Kommunikation über die ESPEasy-Bridge oder MQTT erfolgen soll. MQTT ist bei der Einrichtung etwas komplexer, da hier auch auf dem Server der Broker installiert werden muss.&lt;br /&gt;
&lt;br /&gt;
Im wesentlichen beschränkt sich die Installation eines MQTT Servers aber auf wenige Arbeitsschritte und ist wie folgt beschrieben durchzuführen. Wer schon einen &#039;&#039;&#039;mosquitto&#039;&#039;&#039; auf dem Server installiert hat, kann diesen Schritt überspringen.&lt;br /&gt;
&lt;br /&gt;
Dieses Kapitel ist insofern interessant, da mit dem Sketch von Theo Arends auch die Einbindung der neuen sonoff Pow Module bereits möglich ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # aus dem mosquitto Repo installieren:&lt;br /&gt;
 wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key&lt;br /&gt;
 sudo apt-key add mosquitto-repo.gpg.key&lt;br /&gt;
 cd /etc/apt/sources.list.d/&lt;br /&gt;
 sudo wget http://repo.mosquitto.org/debian/mosquitto-wheezy.list&lt;br /&gt;
 # oder für jessie&lt;br /&gt;
 sudo wget http://repo.mosquitto.org/debian/mosquitto-jessie.list&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 # mosquitto installieren, sowie client Befehl mosquito_sub (gehört nicht zum Server, wird aber weiter unten benötigt)&lt;br /&gt;
 sudo apt-get install mosquitto mosquitto-clients&lt;br /&gt;
 &lt;br /&gt;
 # MQTT Server Test&lt;br /&gt;
 sudo service mosquitto status&lt;br /&gt;
&lt;br /&gt;
 # Start / Stop des Servers&lt;br /&gt;
 sudo service mosquitto stop&lt;br /&gt;
 sudo service mosquitto start&lt;br /&gt;
 &lt;br /&gt;
 # Perl Version ausgeben&lt;br /&gt;
 perl -v&lt;br /&gt;
 # Perl MQTT Module nachinstallieren (läuft ein paar Minuten)&lt;br /&gt;
 sudo cpan install Net::MQTT:Simple&lt;br /&gt;
 sudo cpan install Net::MQTT:Constants&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Software Arends Sketch===&lt;br /&gt;
[[Datei:sonoff_sw_22.jpg|thumb|left|alt=Arends Menü]]&lt;br /&gt;
&lt;br /&gt;
Ebenso bietet sich die Möglichkeit eine andere alternative Software auf den unterschiedlichen Sonoff Modellen aufzuspielen.&lt;br /&gt;
Speziell für diese Module zugeschnittene Software stammt vom Autor Theo Arends. Alle hier gezeigten Bildschirmfotos und Beispiele beziehen sich auf Basis der Version Tasmota (Stand 22.02.2017).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Links zu Theo Arend Github&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/arendst/Sonoff-Tasmota.git Donwload Tasmota]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/arendst/Sonoff-Tasmota Arends Tasmota Github]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; sollten Probleme mit dem ersten Login im Webinterface auftreten, hat der Autor vorgesorgt und mit speziellem wiederholten Tastendruck können verschiedene Modi aufgerufen werden: zB: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3 x Taste kurz drücken&#039;&#039;&#039; und eine Smartconfig wird gestartet und die &#039;&#039;&#039;SSID&#039;&#039;&#039; und das &#039;&#039;&#039;Passwort&#039;&#039;&#039; kann über diese [https://play.google.com/store/apps/details?id=com.cmmakerclub.iot.esptouch Android App] eingegeben werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4 x Taste kurz drücken&#039;&#039;&#039; und man bringt den Device in den &#039;&#039;&#039;Access Point Mode&#039;&#039;&#039; mit der IP-Adresse &#039;&#039;&#039;192.168.4.1&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bis zu 7 verschiedene Modi sind möglich, mehr dazu in Arends Wiki.&lt;br /&gt;
&lt;br /&gt;
[https://github.com/arendst/Sonoff-MQTT-OTA-Arduino/wiki/Button-usage Link zum Wiki Arends, Button]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_bv_01.jpg|thumb|left|alt=Arduino Boardverwalter]]&lt;br /&gt;
In der Arduino IDE unter Datei / Voreinstellungen im Feld &amp;quot;Zusätzliche Boardverwalter-URLs:&amp;quot; den Link: http://arduino.esp8266.com/stable/package_esp8266com_index.json einfügen. &lt;br /&gt;
&lt;br /&gt;
Dann unter &#039;&#039;&#039;Werkzeuge / Board / Boardverwalter&#039;&#039;&#039; ganz am Ende der Liste die Librarys für &amp;quot;esp8266 by ESP8266 Community&amp;quot; die letzte Version zu installieren. [https://forum.fhem.de/index.php/topic,46205.msg534707.html#msg534707 Link zum Board].&lt;br /&gt;
Im Tasmota Verzeichnis \lib werden auch die zum kompilieren benötigten Librarys zur Verfügung gestellt.&lt;br /&gt;
&lt;br /&gt;
Das gesamte Sonoff Verzeichnis aus [https://github.com/arendst/Sonoff-Tasmota/archive/master.zip Arendts Sketch] entpacken (ist wie hier verlinkt ein Zipfile) und dann aus diesem Verzeichnis die sonoff.ino öffnen. Es können dann alle zu dem Sketch zugehörigen Dateien angesehen/editiert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Anschließend sollte noch die Datei &#039;&#039;&#039;user_config.h&#039;&#039;&#039; (im Unterverzeichnis &amp;quot;sonoff&amp;quot;) editiert werden. Die Abschnitte          &lt;br /&gt;
&lt;br /&gt;
 // Wifi&lt;br /&gt;
 // Syslog&lt;br /&gt;
 // Ota&lt;br /&gt;
 // MQTT&lt;br /&gt;
&lt;br /&gt;
müssen mit der eigenen &amp;quot;&#039;&#039;&#039;Ip-Adresse-Server&#039;&#039;&#039;&amp;quot;, &amp;quot;&#039;&#039;&#039;SSID&#039;&#039;&#039;&amp;quot; und &amp;quot;&#039;&#039;&#039;password&#039;&#039;&#039;&amp;quot; angepasst werden, das erleichtert den ersten Connect mit dem Modul. Seit der Version 2.1.2 können die WIFI Einstellungen 2-fach angegeben werden, somit wechselt das Device automatisch auf den 2. Wifi Hotspot wenn der erste nicht erreicht wird.&lt;br /&gt;
&lt;br /&gt;
 #define STA_SSID               &amp;quot;SSID&amp;quot;      // Wifi SSID&lt;br /&gt;
 #define STA_PASS               &amp;quot;password&amp;quot;  // Wifi password&lt;br /&gt;
 #define WIFI_HOSTNAME          &amp;quot;%s-%04d&amp;quot;         // Expands to &amp;lt;MQTT_TOPIC&amp;gt;-&amp;lt;last 4 decimal chars of MAC address&amp;gt;&lt;br /&gt;
 #define WIFI_CONFIG_TOOL       WIFI_WPSCONFIG    // Default tool if wifi fails to connect (WIFI_SMARTCONFIG, WIFI_MANAGER or WIFI_WPSCONFIG)&lt;br /&gt;
&lt;br /&gt;
 // Syslog&lt;br /&gt;
 #define SYS_LOG_HOST           &amp;quot;Ip-Adresse-Server&amp;quot;&lt;br /&gt;
 #define SYS_LOG_PORT           514&lt;br /&gt;
 #define SYS_LOG_LEVEL          LOG_LEVEL_NONE&lt;br /&gt;
 #define SERIAL_LOG_LEVEL       LOG_LEVEL_INFO&lt;br /&gt;
 #define WEB_LOG_LEVEL          LOG_LEVEL_INFO&lt;br /&gt;
&lt;br /&gt;
 // Ota&lt;br /&gt;
 #if (ARDUINO &amp;gt;= 168)&lt;br /&gt;
  #define OTA_URL              &amp;quot;http://Ip-Adresse-Server:80/api/arduino/&amp;quot; PROJECT &amp;quot;.ino.bin&amp;quot;&lt;br /&gt;
 #else&lt;br /&gt;
  #define OTA_URL              &amp;quot;http://Ip-Adresse-Server:80/api/arduino/&amp;quot; PROJECT &amp;quot;.cpp.bin&amp;quot;&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
 // MQTT&lt;br /&gt;
 #define MQTT_HOST              &amp;quot;Ip-Adresse-Server&amp;quot;&lt;br /&gt;
 #define MQTT_PORT              1883&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wichtig:&#039;&#039;&#039; Im Userprofile des Arduino Kompilers (%userprofile%\Documents\Arduino\libraries\pubsubclient\src\PubSubClient.h) die Max Packet Size auf 400 erhöht werden!&lt;br /&gt;
&lt;br /&gt;
  #define MQTT_MAX_PACKET_SIZE 400&lt;br /&gt;
  #define MQTT_KEEPALIVE 120&lt;br /&gt;
Anpassung der max. Packet Size auf 400 und das Keepalive auf 120&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Anschluß wird der Sketch mit der Arduino IDE (getestet mit 1.6.12) compiliert und die Binary dann exportiert (Sketch / Kompilierte Binärdatei exportieren). Die erzeugte .bin Datei dann mit dem Tool &amp;quot;ESP8266Flasher.exe&amp;quot; flashen, so wie auch bei ESPEasy. Sehr gut funktioniert aud das Esptool. Wer nicht compilieren will, kann auch im Unterverzeichnis ./api/arduino/ die fertige Binary ( sonoff.ino ) benutzen, aber dann ohne Voreinstellung der lokalen IPs.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===MQTT testen===&lt;br /&gt;
[[Datei:sonoff_sw_20.jpg|thumb|left|alt=Arends Menü]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nach erfolgtem Flash des Modules kann das Webinterface des Moduls zum ersten Mal aufgerufen werden (im Router nach der IP des Moduls suchen).&lt;br /&gt;
&lt;br /&gt;
Es bieten sich hier mehrere Möglichkeiten die die weitere Einrichtung des Moduls unterstützen. Einfach die Menüpunkte durchprobieren, sie erklären sich von selbst. Für erste Tests empfiehlt sich die lokale Konsole um die Ereignisse aus Sicht des Modules mit verfolgen zu können. Alles was hier gesendet wird, sollte ebenfalls am Server mitgeloggt werden können. Wenn bis hierher alles funktioniert, kann dann mir der Konfiguration in FHEM beginnen.&lt;br /&gt;
&lt;br /&gt;
Der Name des Moduls kann unter &amp;quot;Configuration&amp;quot; -&amp;gt; &amp;quot;Configure MQTT&amp;quot; -&amp;gt; &amp;quot;Topic (sonoff)&amp;quot; nachgeschaut und geändert werden. In FHEM wird beim definieren des Moduls dieser Name in den subscribeReadings bzw. publishSets eingegeben um die Verbindung zum Modul herzustellen.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Am Server jetzt eine Konsole öffnen und folgende Topic (alle) einstellen.&lt;br /&gt;
&lt;br /&gt;
 mosquitto_sub -d -v -t \# &lt;br /&gt;
Mit dieser Einstellung werden alle Topics geloggt! &lt;br /&gt;
&lt;br /&gt;
 pi@raspberry ~ $ mosquitto_sub -d -v -t \#&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff_dht/DHT/TEMPERATURE&#039;, ... (6 bytes))&lt;br /&gt;
 tele/sonoff_dht/DHT/TEMPERATURE 21.8 C&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff_dht/DHT/HUMIDITY&#039;, ... (6 bytes))&lt;br /&gt;
 tele/sonoff_dht/DHT/HUMIDITY 41.7 %&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff_dht/TIME&#039;, ... (19 bytes))&lt;br /&gt;
 tele/sonoff_dht/TIME 2017-02-22T16:05:43&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow3/STATE&#039;, ... (104 bytes))&lt;br /&gt;
 tele/sonoffpow3/STATE {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:05:44&amp;quot;, &amp;quot;Uptime&amp;quot;:100, &amp;quot;LIGHT&amp;quot;:&amp;quot;ON&amp;quot;, &amp;quot;Wifi&amp;quot;:{&amp;quot;AP&amp;quot;:2, &amp;quot;SSID&amp;quot;:&amp;quot;Pergola&amp;quot;, &amp;quot;RSSI&amp;quot;:96}}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow3/ENERGY&#039;, ... (134 bytes))&lt;br /&gt;
 tele/sonoffpow3/ENERGY {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:05:44&amp;quot;, &amp;quot;Yesterday&amp;quot;:0.083, &amp;quot;Today&amp;quot;:0.055, &amp;quot;Period&amp;quot;:0, &amp;quot;Power&amp;quot;:0, &amp;quot;Factor&amp;quot;:0.00, &amp;quot;Voltage&amp;quot;:229, &amp;quot;Current&amp;quot;:0.000}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;stat/TestSwitch/RESULT&#039;, ... (14 bytes))&lt;br /&gt;
 stat/TestSwitch/RESULT {&amp;quot;POWER&amp;quot;:&amp;quot;ON&amp;quot;}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;stat/TestSwitch/POWER&#039;, ... (2 bytes))&lt;br /&gt;
 stat/TestSwitch/POWER ON&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow3/STATE&#039;, ... (104 bytes))&lt;br /&gt;
 tele/sonoffpow3/STATE {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:07:14&amp;quot;, &amp;quot;Uptime&amp;quot;:100, &amp;quot;LIGHT&amp;quot;:&amp;quot;ON&amp;quot;, &amp;quot;Wifi&amp;quot;:{&amp;quot;AP&amp;quot;:2, &amp;quot;SSID&amp;quot;:&amp;quot;Pergola&amp;quot;, &amp;quot;RSSI&amp;quot;:96}}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow3/ENERGY&#039;, ... (134 bytes))&lt;br /&gt;
 tele/sonoffpow3/ENERGY {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:07:14&amp;quot;, &amp;quot;Yesterday&amp;quot;:0.083, &amp;quot;Today&amp;quot;:0.055, &amp;quot;Period&amp;quot;:0, &amp;quot;Power&amp;quot;:3, &amp;quot;Factor&amp;quot;:0.20, &amp;quot;Voltage&amp;quot;:227, &amp;quot;Current&amp;quot;:0.072}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;stat/TestSwitch/RESULT&#039;, ... (15 bytes))&lt;br /&gt;
 stat/TestSwitch/RESULT {&amp;quot;POWER&amp;quot;:&amp;quot;OFF&amp;quot;}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;stat/TestSwitch/POWER&#039;, ... (3 bytes))&lt;br /&gt;
 stat/TestSwitch/POWER OFF&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Interessant sind für uns nun diese Einträge &amp;quot;stat/TestSwitch/POWER ON&amp;quot; , dazu am Taster des Sonoff manuell umschalten. Dies entspricht genau der Syntax wie sie im Anschluss in FHEM dann zu verwenden ist.&lt;br /&gt;
&lt;br /&gt;
Mit diesen Einstellungen können dann entweder nach Telemetriedaten oder nach Statusmeldungen gefiltert werden. Dies ist jedoch nur notwendig wenn bereits andere MQTT Devices am Broker hängen und es sonst zu unübersichtlich wird.&lt;br /&gt;
 mosquitto_sub -h localhost -t tele/sonoff/#    = Telemetriedaten&lt;br /&gt;
 mosquitto_sub -h localhost -t stat/sonoff/#    = Statusmeldungen&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_21.jpg|thumb|left|alt=Arends Log]]&lt;br /&gt;
Sehr nützlich das lokale Log zur Fehlersuche und Inbetriebnahme.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==MQTT in FHEM einrichten==&lt;br /&gt;
[[Datei:sonoff_sw_24.jpg|thumb|left|alt=FHEM sonoff Schalter]]&lt;br /&gt;
Dieser einfache Schalter kommuniziert bidirektional mit dem sonoff Device.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_25.jpg|thumb|left|alt=FHEM sonoff Schalter]]&lt;br /&gt;
Die Readings in diesem verwendeten Beispiel zeigen sich wie in FHEM gewohnt.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Einrichtung in FHEM wird von den Modulen 00_MQTT.pm, 10_MQTT_BRIDGE und 10_MQTT_DEVICE.pm unterstützt.&lt;br /&gt;
Ebenso wird das Modul 98_expandJSON.pm benötigt um den [https://forum.fhem.de/index.php/topic,66761.0.html JSON String zu filtern].&lt;br /&gt;
&lt;br /&gt;
[https://forum.fhem.de/index.php?topic=27532.0 Link zum Forum: MQTT FHEM Einrichtung]&lt;br /&gt;
&lt;br /&gt;
 ### 1. Broker anlegen ###&lt;br /&gt;
 define myBroker MQTT 10.0.0.5:1883&lt;br /&gt;
&lt;br /&gt;
 ### 2. FHEM Device mit MQTT verbinden ###&lt;br /&gt;
 define Sonoff_Switch MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Switch IODev myBroker&lt;br /&gt;
 attr Sonoff_Switch devStateIcon ON:rc_GREEN:OFF OFF:rc_RED:ON&lt;br /&gt;
 attr Sonoff_Switch icon hue_filled_br30&lt;br /&gt;
 attr Sonoff_Switch publishSet ON OFF cmnd/TestSwitch/POWER/set&lt;br /&gt;
 attr Sonoff_Switch room MQTT&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_Licht stat/Sonoff_Switch/POWER&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_Sensor tele/Sonoff_Switch/SENSOR&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_Status stat/Sonoff_Switch/STATUS&lt;br /&gt;
 attr Sonoff_Switch webCmd ON:OFF&lt;br /&gt;
Der hier dargestellte Beispielcode realisiert die Kommunikation zwischen FHEM und dem sonoff Modul via MQTT Broker. Zu beachten ist hier, dass &#039;&#039;&#039;subscribeReading_Licht&#039;&#039;&#039; und &#039;&#039;&#039;subscribeReading_state&#039;&#039;&#039; unterschiedliche Syntax des Topic Strings haben!&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff POW einrichten==&lt;br /&gt;
[[Datei:sonoff_sw_31.jpg|thumb|left|alt=Sonoff POW]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier geht es ausschließlich um das Modul Sonoff POW!}}&lt;br /&gt;
Das Modul kommt in gewohnter Itead Qualität und eine derart kostengünstige Energiemessung wird bei Smart Home Anwendern gerne eingesetzt. Die Originalsoftware habe ich nicht einmal getestet, da damit eine Anbindung an FHEM leider nicht möglich ist.&lt;br /&gt;
&lt;br /&gt;
Ebenso möchte kaum jemand an eine nicht dokumentierte chinesische Cloud die Steuerbefehle seiner Schalter senden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_sw_33.jpg|thumb|left|alt=Sonoff POW]]&lt;br /&gt;
Bitte auf keinen Fall das Modul während der Arbeiten an die Netzspannung anschießen. Zum Flashen genügt (und nur diese) die Versorgungspannung des USB-TTL Konverters. Wie auf dem Foto gut erkennbar, wurde dieses Modul ohne einlöten einer Pfostensteckerleiste geflasht. Die Steckverbindung wird einfach in die Lötaugen gesteckt und mit einem Gummiring fixiert, da ja spätere Flashvorgänge im Webif des Models funktionieren und so die Arbeit eingespart werden kann. Es steht jedoch nichts im Wege die Pfostensteckerleiste einzulöten.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Die Anschlüsse am Modul sind wie folgt belegt.&lt;br /&gt;
 o GND&lt;br /&gt;
 o TxD&lt;br /&gt;
 o RxD&lt;br /&gt;
 o VDD&lt;br /&gt;
&lt;br /&gt;
Für den Flashvorgang gelten die selben Regeln wie schon beim sonoff Switch oben erwähnt (3,3V!).&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Sonoff POW Software===&lt;br /&gt;
[[Datei:sonoff_sw_35.jpg|thumb|left|alt=Sonoff POW FHEM]]&lt;br /&gt;
Als Software steht im Augenblick nur der Sketch von Arends zur Verfügung, liefert aber alles was das Herz begehrt und ist ist einfach zu handhaben. Hier eine eine einfache Darstellung mit der aktuellen Leistung und dem Tagesverbrauch. Zusätzlich besteht auch noch die Möglichkeit den angeschlossenen Verbraucher Ein- oder Auszuschalten. &lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_pow_02.jpg|thumb|left|alt=Sonoff POW Webif]]&lt;br /&gt;
Seit Version 2.0.19a ist auch die Leistungsanzeige im WEBIF wie im Bild links integriert. Auch der Energieverbrauch des Vortages wird mit angezeigt. Alle hier angezeigten Daten werden auch zyklisch im MQTT String an FHEM übergeben.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich kann im Sketch auch das Feature &amp;quot;&#039;&#039;&#039;Power_Limit&#039;&#039;&#039;&amp;quot; aktiviert werden. Mit dem Power_Limit wird eine zusätzliche Nachricht erzeugt, wenn ein bestimmter einstellbarer Grenzwert über- oder unterschritten wird. &lt;br /&gt;
&lt;br /&gt;
Es lassen sich dadurch Meldungen wie &amp;quot;Waschmaschine fertig&amp;quot; oder ähnliches ohne weitere Schwellwert Überwachungen in FHEM ableiten. Die Meldungen kommen in MQTT mit &amp;quot;&#039;&#039;&#039;POWER_LOW ON&#039;&#039;&#039;&amp;quot; bzw. &amp;quot;&#039;&#039;&#039;POWER_LOW OFF&#039;&#039;&#039;&amp;quot;.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei erstmaligen Start des Modules muss der Typ des Modules von &amp;quot;SONOFF&amp;quot; auf &amp;quot;&#039;&#039;&#039;SONOFF_Pow&#039;&#039;&#039;&amp;quot; geändert werden, damit die Software weiß mit welchem Modul es zu tun hat und kann dann die entsprechenden Berechnungen durchführen. Die Leistungsdaten kommen ja in Form einer Frequenz aus dem Baustein und müssen im Sketch (xsns_hlw8102.ino) umgerechnet werden.&lt;br /&gt;
                                            &lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_sw_36.jpg|thumb|left|alt=Sonoff POW Attribute]]&lt;br /&gt;
Dieses Bild zeigt die Attribute die vom Modul via MQTT an FHEM geliefert werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
aktuell gelieferter JSON String vom Sketch der alle Messdaten beinhaltet.&lt;br /&gt;
 {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:38:47&amp;quot;, &amp;quot;Yesterday&amp;quot;:&amp;quot;2.286&amp;quot;, &amp;quot;Today&amp;quot;:&amp;quot;1.593&amp;quot;, &amp;quot;Period&amp;quot;:9, &amp;quot;Power&amp;quot;:231, &amp;quot;Factor&amp;quot;:&amp;quot;1.00&amp;quot;, &amp;quot;Voltage&amp;quot;:231, &amp;quot;Current&amp;quot;:&amp;quot;0.866&amp;quot;}&lt;br /&gt;
und hier das zugehörige Reading.&lt;br /&gt;
 tele/sonoffpow/ENERGY    &lt;br /&gt;
       &lt;br /&gt;
&lt;br /&gt;
Hier ein Mittschnitt des Datenverkehrs zum Broker zwecks Kontrolle der korrekten Funktion der Module und der Software.&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/STATE&#039;, ... (103 bytes))&lt;br /&gt;
 tele/sonoffpow/STATE {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:39:15&amp;quot;, &amp;quot;Uptime&amp;quot;:79, &amp;quot;LIGHT&amp;quot;:&amp;quot;OFF&amp;quot;, &amp;quot;Wifi&amp;quot;:{&amp;quot;AP&amp;quot;:2, &amp;quot;SSID&amp;quot;:&amp;quot;Liwest&amp;quot;, &amp;quot;RSSI&amp;quot;:54}}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/ENERGY&#039;, ... (140 bytes))&lt;br /&gt;
 tele/sonoffpow/ENERGY {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:39:15&amp;quot;, &amp;quot;Yesterday&amp;quot;:&amp;quot;1.391&amp;quot;, &amp;quot;Today&amp;quot;:&amp;quot;1.191&amp;quot;, &amp;quot;Period&amp;quot;:0, &amp;quot;Power&amp;quot;:0, &amp;quot;Factor&amp;quot;:&amp;quot;0.00&amp;quot;, &amp;quot;Voltage&amp;quot;:0, &amp;quot;Current&amp;quot;:&amp;quot;0.000&amp;quot;}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff_wall1/STATE&#039;, ... (105 bytes))&lt;br /&gt;
 tele/sonoff_wall1/STATE {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:39:15&amp;quot;, &amp;quot;Uptime&amp;quot;:96, &amp;quot;POWER&amp;quot;:&amp;quot;OFF&amp;quot;, &amp;quot;Wifi&amp;quot;:{&amp;quot;AP&amp;quot;:2, &amp;quot;SSID&amp;quot;:&amp;quot;Pergola&amp;quot;, &amp;quot;RSSI&amp;quot;:100}}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow3/STATE&#039;, ... (104 bytes))&lt;br /&gt;
 tele/sonoffpow3/STATE {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:39:20&amp;quot;, &amp;quot;Uptime&amp;quot;:100, &amp;quot;LIGHT&amp;quot;:&amp;quot;ON&amp;quot;, &amp;quot;Wifi&amp;quot;:{&amp;quot;AP&amp;quot;:2, &amp;quot;SSID&amp;quot;:&amp;quot;Pergola&amp;quot;, &amp;quot;RSSI&amp;quot;:96}}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow3/ENERGY&#039;, ... (134 bytes))&lt;br /&gt;
 tele/sonoffpow3/ENERGY {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:39:20&amp;quot;, &amp;quot;Yesterday&amp;quot;:0.083, &amp;quot;Today&amp;quot;:0.057, &amp;quot;Period&amp;quot;:0, &amp;quot;Power&amp;quot;:0, &amp;quot;Factor&amp;quot;:0.00, &amp;quot;Voltage&amp;quot;:230, &amp;quot;Current&amp;quot;:0.000}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Einstellungen können mit folgender Syntax angefordert werden (zwei Terminalfenster öffnen, eines zum protokollieren und eines zum Seden der Befehle).&lt;br /&gt;
 mosquitto_sub -d -v -t \#  MQTT Datenverkehr protokolieren&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/status/set -m &amp;quot;8&amp;quot;      = SonoffPOW Status jetzt auslesen&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/TelePeriod/set -m &amp;quot;60&amp;quot; = Timer setzen, alle 60 Sekunden Daten senden &lt;br /&gt;
Die Kommandos können direkt am Broker (Terminalfenster Putty etc.) abgesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sonoff POW Kalibrieren ===&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier wird beschrieben, wie der &#039;&#039;Sonoff POW kalibriert&#039;&#039; werden kann. }}&lt;br /&gt;
Ab Version 2.0.11 kann nun auch der POW kalibriert werden.&lt;br /&gt;
Dazu kann man 2 Konsolenfenster öffnen, im ersten aktiviert man das Protokoll für den Datenverkehr&lt;br /&gt;
 mosquitto_sub -d -v -t \#  MQTT Datenverkehr protokollieren&lt;br /&gt;
&lt;br /&gt;
Dann kann mit folgenden Befehlen die HLW Referenz Pulsfrequenz gesetzt werden.&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/HLWUCAL/set -m &amp;quot;2100&amp;quot;     default = 1950&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/HLWICAL/set -m &amp;quot;2450&amp;quot;     default = 3500&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/HLWPCAL/set -m &amp;quot;13500&amp;quot;    default = 12345 &lt;br /&gt;
Entweder man hat eine definierte Last zur Verfügung oder besser man misst mit einem Leistungsmesser nach. Die Spannung kann man mit einem Multimeter nachmessen (sollte 230 V sein) und der Strom wird errechnet (bei 100 Watt I = P / U ) = 100/230 = 0,4347.&lt;br /&gt;
Die Referenzwerte solange geringfügig ändern bis die Ausgabe passt. Für die Ausgabe wird einfach eine Statusabfrage durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/status/set -m &amp;quot;8&amp;quot;&lt;br /&gt;
Befehl für die Statusabfrage&lt;br /&gt;
&lt;br /&gt;
 cmnd/sonoffpow/status/set 8&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;stat/sonoffpow/STATUS&#039;, ... (103 bytes))&lt;br /&gt;
 stat/sonoffpow/STATUS PWR: Voltage 225 V, Current 0.427 A, Current Power 98 W, Total Power Today 0.080 kWh, Power Factor 1.00&lt;br /&gt;
Ergebnis der Statusabfrage mit Spannung, Strom und Leistung.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sonoff POW FHEM Anbindung===&lt;br /&gt;
Ein Beispiel einer einfachen Anbindung via JSON an FHEM. MQTT von Arends ist insofern notwendig, da in der Software ESPEasy und der Bridge noch keine Implementierung der Frequenzumrechnung enthalten ist.&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Pow MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Pow IODev myBroker&lt;br /&gt;
 attr Sonoff_Pow icon measure_power&lt;br /&gt;
 attr Sonoff_Pow publishSet ON OFF cmnd/sonoffpow/LIGHT/&lt;br /&gt;
 attr Sonoff_Pow stateFormat {sprintf(&amp;quot;aktuell: %.1f W Tag: %.2f Kw/h&amp;quot;, ReadingsVal($name,&amp;quot;Power&amp;quot;,undef), ReadingsVal($name,&amp;quot;Today&amp;quot;,undef))}&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_ENERGY tele/sonoffpow/ENERGY&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_LIGHT stat/sonoffpow/LIGHT&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_state cmnd/sonoffpow/LIGHT&lt;br /&gt;
 attr Sonoff_Pow webCmd ON:OFF&lt;br /&gt;
Zusätzlich kann hier noch das Relais mit &amp;quot;on&amp;quot; und &amp;quot;off&amp;quot; ein- ausgeschaltet werden.&lt;br /&gt;
&lt;br /&gt;
Ebenso notwendig ist das setzen der Regexp für den JSON Konverter.&lt;br /&gt;
 define ej3 expandJSON Sonoff.*:.*:.{.*}&lt;br /&gt;
hier wird alles was mit dem Namen Sonoff beginnt gefiltert und automatisch alle darin enthaltenen Readings erstellt.&lt;br /&gt;
&lt;br /&gt;
 define ej3 expandJSON Sonoff.*:ENERGY.*:.{.*} (Power|Yesterday|Today)&lt;br /&gt;
oder so, da werden nur die Readings Power, Yesterday und Today erstellt.&lt;br /&gt;
Somit ist auch kalr, das in FHEM auch JSON installiert sein muss. Ebenso können die verschiedenen Regexp im [https://github.com/ddtlabs/expandJSON Wiki] nachgelesen werden.&lt;br /&gt;
&lt;br /&gt;
[https://forum.fhem.de/index.php/topic,66761.15.html Link zum Diskussionsthread].&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Source Reading:&#039;&#039;&#039;&lt;br /&gt;
 device:reading:.{.*} &lt;br /&gt;
 .*WifiIOT.*:sensor.*:.{.*} &lt;br /&gt;
 sonoff_.*:.*:.{.*} &lt;br /&gt;
 dev.*:(sensor1|sensor2|teleme.*):.{.*} &lt;br /&gt;
 (dev.*|[Dd]evice.*):json:.{.*} &lt;br /&gt;
 (devX:jsonX:.{.*}|devY.*:jsonY:.{.*Wifi.*{.*SSID.*}.*}) &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Target Reading:&#039;&#039;&#039;&lt;br /&gt;
 .*power.* &lt;br /&gt;
 (Current|Voltage|Wifi.*)  &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Komplette Definition des Filters:&#039;&#039;&#039;&lt;br /&gt;
 define ej1 expandJSON device:sourceReading:.{.*} targetReading &lt;br /&gt;
 define ej3 expandJSON .*\.SEN\..*:.*:.{.*} &lt;br /&gt;
 define ej3 expandJSON sonoff_.*:sensor.*:.{.*} (power.*|current|voltage)&lt;br /&gt;
&lt;br /&gt;
===Sonoff POW Netz-Anschluß===&lt;br /&gt;
[[Datei:sonoff_sw_34.jpg|thumb|left|alt=Sonoff POW Netzanschluß]]&lt;br /&gt;
Erst wenn alle Arbeiten an der Hard- und Software abgeschlossen sind, kann man das Modul an die Netzspannung anschließen. Wer es sich einfach machen will, nimmt eine Industriell gefertigte 230 V Verlängerung  (zwischen 1,5 - 3 Meter) und schneidet sie in der Mitte durch. Nach dem abisolieren der flexiblen Drähte sollte diese &#039;&#039;&#039;verlötet oder mit Aderendhülsen&#039;&#039;&#039; versehen werden (müssen aber exakt passen, da hier kaum Platz in den Klemmen ist). &lt;br /&gt;
Mit einem kleinen Schraubendreher kann man die Feder der Klemmen niederdrücken und das verzinnte Drahtende tief ich die Öffnung stecken. Es dürfen keine Drahtlitzen aus den Öffnungen sichtbar sein, Kurzschlußgefahr! Ebenso sollte eine Zugprobe durchgeführt werden ob die Klemme auch richtig eingerastet ist.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ACHTUNG:&#039;&#039;&#039; diese Arbeiten müssen von einem ausgebildeten Fachpersonal (Elektriker) durchgeführt werden, Lebensgefahr!&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sonoff POW Design===&lt;br /&gt;
&lt;br /&gt;
====ReadingsGroup mit Schaltmöglichkeit====&lt;br /&gt;
[[Datei:sonoff_pow_03.jpg|thumb|left|alt=readingsGroup mit Schalter]]&lt;br /&gt;
Die ReadingsGroup kann auch gleich mit einem Schalter versehen werden um den POW Ein- oder Aus schalten zu können. Dazu ist aber eine andere Einstellung im Sketch erforderlich.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der &amp;quot;&#039;&#039;&#039;user_config.h&#039;&#039;&#039;&amp;quot; muss an dieser Stelle auch die &amp;quot;&#039;&#039;&#039;PUB_PREFIX&#039;&#039;&#039;&amp;quot; auf die gleiche Topic wie &amp;quot;PUB_PREFIX2&amp;quot; eingestellt werden. Durch diese Maßnahme wird erreicht, dass sofort nach dem Knopfdruck auch der Status mit der Topic &amp;quot;tele&amp;quot; übertragen wird. Würde der weiterhin mit &amp;quot;stat&amp;quot; übertragen, kann er in der Readingsgroup nur sehr umständlich weiter behandelt werden. Dadurch wird erreicht, dass der Schalter sofort nach dem Schaltvorgang und der Rückmeldung (Status) auch seine Farbe ändert. Wird dieser Eintrag vergessen, ändert der Schalter erst nach Eintreffen der nächsten zyklischen Abfrage seinen Status/Farbe.&lt;br /&gt;
&lt;br /&gt;
 #define SUB_PREFIX             &amp;quot;cmnd&amp;quot;       // Sonoff devices subscribe to:- SUB_PREFIX/MQTT_TOPIC and SUB_PREFIX/MQTT_GRPTOPIC&lt;br /&gt;
 #define PUB_PREFIX             &amp;quot;tele&amp;quot;       // Sonoff devices publish to:- PUB_PREFIX/MQTT_TOPIC&lt;br /&gt;
 #define PUB_PREFIX2            &amp;quot;tele&amp;quot;       // Sonoff devices publish telemetry data to:- PUB_PREFIX2/MQTT_TOPIC/UPTIME, POWER/LIGHT and TIME&lt;br /&gt;
hier die PUB_PREFIX mit der geänderten Topic &amp;quot;tele&amp;quot; anstatt &amp;quot;stat&amp;quot; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 define SonoffPows readingsGroup &amp;lt;%measure_power&amp;gt;,&amp;lt;aktuell&amp;gt;,&amp;lt;Tag&amp;gt;,&amp;lt;Gestern&amp;gt;,&amp;lt;Strom&amp;gt;,&amp;lt;Durchschnitt&amp;gt;,&amp;lt;max.P&amp;gt;,&amp;lt;Zyklus&amp;gt;,&amp;lt;Faktor&amp;gt;,&amp;lt;Status&amp;gt;,&amp;lt; hr &amp;gt; .*(Sonoff_Pow|Sonoff_Pow2|Sonoff_Pow3|Sonoff_Pow4):Power,Today,Yesterday,Current,Power_avg_day,Power_max_day,Period,Factor,LIGHT&lt;br /&gt;
 attr SonoffPows commands {&#039;LIGHT.ON&#039; =&amp;gt; &#039;set $DEVICE OFF&#039;,&#039;LIGHT.OFF&#039; =&amp;gt; &#039;set $DEVICE ON&#039;}&lt;br /&gt;
 attr SonoffPows mapping %ALIAS&lt;br /&gt;
 attr SonoffPows nameStyle style=&amp;quot;color:yellow&amp;quot;&lt;br /&gt;
 attr SonoffPows room Energie,MQTT&lt;br /&gt;
 attr SonoffPows valueFormat {&#039;Power&#039; =&amp;gt;&amp;quot;%.0f W&amp;quot;, &#039;Today&#039; =&amp;gt;&amp;quot;%.2f Kw&amp;quot;,&#039;Yesterday&#039; =&amp;gt;&amp;quot;%.2f Kw&amp;quot;, &#039;CURRENT&#039; =&amp;gt;&amp;quot;%.2f A&amp;quot;,&#039;Power_max_day&#039; =&amp;gt; &amp;quot;%.0f W&amp;quot;,&#039;Power_avg_day&#039; =&amp;gt; &amp;quot;%.2f W&amp;quot;,&#039;Power&#039;=&amp;gt;&amp;quot;%.0f W&amp;quot;,&#039;Factor&#039; =&amp;gt; &amp;quot;%.2f &amp;quot;}&lt;br /&gt;
 attr SonoffPows valueIcon {&#039;LIGHT.ON&#039; =&amp;gt; &#039;rc_GREEN@green&#039;, &#039;LIGHT.OFF&#039; =&amp;gt; &#039;rc_RED@red&#039;}&lt;br /&gt;
 attr SonoffPows valueStyle { if($READING eq &amp;quot;Power&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 0 &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Today&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 4.8){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Today&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 2.5){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Today&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 2.5 &amp;amp;&amp;amp; $VALUE &amp;lt; 4.8 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Yesterday&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 2.5){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Yesterday&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 2.5 &amp;amp;&amp;amp; $VALUE &amp;lt; 4.8 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Yesterday&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 4.8){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Current&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 0.45){&#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039;}elsif( $READING eq &amp;quot;Current&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 0.45 &amp;amp;&amp;amp; $VALUE &amp;lt; 0.87 ){&#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Current&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 0.87){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Period&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 10){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Period&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 10 &amp;amp;&amp;amp; $VALUE &amp;lt; 15 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Period&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 15){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039;}}&lt;br /&gt;
Dieses Beispiel ist für &#039;&#039;&#039;Tasmota mit JSON&#039;&#039;&#039; ausgelegt und benötigt ebenso wie oben die Erweiterung &amp;quot;average&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Pow_CURRENT_POWER average Sonoff_Pow:Power.*&lt;br /&gt;
damit werden der Durchschnitt und min max für Tasmota mit JSON erzeugt.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====POW mit FTUI anzeigen====&lt;br /&gt;
[[Datei:sonoff_pow_energy.JPG|thumb|left|alt=Tablett FTUI]]&lt;br /&gt;
Wer möchte kann die Energieanzeigen auch mit der [https://forum.fhem.de/index.php/topic,34233.0.html Tablett UI] für eine Tablet Ansicht gestalten. Mit dieser stehen viele Möglichkeiten zu einer attraktiven Darstellung zur Verfügung.&lt;br /&gt;
Hier ein Beispiel welches mit den Widget &amp;quot;[http://www.fhemwiki.de/wiki/FHEM_Tablet_UI#Widget_THERMOSTAT thermostat]&amp;quot; dargestellt ist.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Slampher Flashen==&lt;br /&gt;
[[Datei:sonoff_sl_53.jpg|thumb|left|alt=Sonoff SLAMPHER]]&lt;br /&gt;
Dieses Modul ist eine Besonderheit was das Flashen betrifft, denn mit Hilfe des Tasters kann der ESP8266 NICHT in den Flashmode gebracht werden. Der Taster ist intern anderwärtig verdrahtet und somit für diesen Zweck nicht zu gebrauchen.&lt;br /&gt;
&lt;br /&gt;
Wie hier links im Bild zu sehen ist, muss der rechte Pin des R20 (oben im Bild) während dem Einstecken des USB Steckers auf Masse gelegt werden. Die beste Möglichkeit ist ein Stücken Draht anzulöten und diesen dann beim einstecken auf den Masse Pin des USB-Konverters zu legen.&lt;br /&gt;
&lt;br /&gt;
Pinbelegung des Steckers von oben nach unten:&lt;br /&gt;
 o - GND&lt;br /&gt;
 o - TxD&lt;br /&gt;
 o - RxD&lt;br /&gt;
 &#039;&#039;&#039;o&#039;&#039;&#039; - Vdd&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sl_51.jpg|thumb|left|alt=Sonoff SLAMPHER R20]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier ist genau ersichtlich, wo der R20 auf der Platine platziert ist. }}&lt;br /&gt;
Hier nocheinmal schön zu sehen wo der R20 (der ist nicht eingelötet sondern leer) exakt auf der Platine liegt, gemeint ist der rechte Pin. Hier kann auch leicht gelötet werden, da keine empfindlichen Bauteile in der Nähe sind und auch genug Platz vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_sl_50.jpg|thumb|left|alt=Sonoff SLAMPHER R20]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier ist genau ersichtlich, wo der Draht am R20 aufgelötet wurde }}&lt;br /&gt;
Hier ist ein kleines Stück Schaltdraht auf den Pin bereist aufgelötet und bereit zum Flashen!&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel wurde keine Pfostensteckerleiste auf die Platine aufgelötet, sondern nur durchgesteckt und mit einem Gummiring  zum Relais fixiert, das erspart den Lötvorgang, weil in Zukunft dann ohnehin OTA geflasht werden kann.&lt;br /&gt;
&lt;br /&gt;
Also Pin20 auf Masse legen und USB-Konverter an den PC einstecken, dann den Draht von der Masse entfernen. Der ESP8266 sollte jetzt im Flashmodus bereit stehen und kann wie bereits oben beschrieben geflasht werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sonoff Slampher Software===&lt;br /&gt;
[[Datei:sonoff_sl_54.jpg|thumb|left|alt=Sonoff SLAMPHER FHEM]]&lt;br /&gt;
&lt;br /&gt;
Als Software wird Arends Sketch installiert (Kommunikation über MQTT), da zum derzeitigen Zeitpunkt ESPEasy das Modul noch nicht integriert hat und somit auch nicht ansteuern kann.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_SL MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_SL IODev myBroker&lt;br /&gt;
 attr Sonoff_SL devStateIcon ON:rc_GREEN:OFF OFF:rc_RED:ON&lt;br /&gt;
 attr Sonoff_SL icon hue_filled_br30&lt;br /&gt;
 attr Sonoff_SL publishSet ON OFF cmnd/sonoffsl/POWER/set&lt;br /&gt;
 attr Sonoff_SL room Bewegung,_Sonoff&lt;br /&gt;
 attr Sonoff_SL stateFormat Licht&lt;br /&gt;
 attr Sonoff_SL subscribeReading_Licht tele/sonoffsl/POWER&lt;br /&gt;
 attr Sonoff_SL subscribeReading_state cmnd/sonoffsl/POWER/set&lt;br /&gt;
 attr Sonoff_SL webCmd ON:OFF&lt;br /&gt;
&lt;br /&gt;
Hier ein Beispiel wie in FHEM der Slampher eingebunden werden kann. In diesem Beispiel wird davon ausgegangen, das im Modul die Topic &amp;quot;sonoffsl&amp;quot; benannt wurde. Wer einen anderen Namen haben möchte, muss dies dann auch in FHEM entsprechend anpassen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Th10/16 FHEM==&lt;br /&gt;
[[Datei:sonoff_th_01.jpg|thumb|left|alt=Sonoff TH10]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Temperatur Modul TH10 / 16! }}&lt;br /&gt;
Das Modul kann durch drücken des Tasters während dem Einstecken des USB-Konverters in den Flashmodus gebracht werden.&lt;br /&gt;
Der Th10/16 kann mit zwei unterschiedlichen Typen von Sensoren bestückt werden, hier im Beispiel mit dem externen Temperaturfühler DS18B20.&lt;br /&gt;
&lt;br /&gt;
Wie im Bild klar zu sehen ist, kann das Webif auch zur Darstellung via Mobile verwendet werden. Mit &amp;quot;Toggle&amp;quot; wird Ein- oder Aus geschaltet und  darunter ist die aktuelle Temperatur ersichtlich. Für diese Ansicht muss keine MQTT Verbindung eingerichtet werden, da die Kommunikation hier rein über HTTP erfolgt.&lt;br /&gt;
&lt;br /&gt;
Die unten dargestellten Beispiele für FHEM beziehen sich auf Arends Sketch, also über MQTT. Dieses Modul kann aber genauso leicht über ESPEasy und der ESPEasy-Bridge eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Pinbelegung des Steckers von oben nach unten:&lt;br /&gt;
 o - GND&lt;br /&gt;
 o - TxD&lt;br /&gt;
 o - RxD&lt;br /&gt;
 &#039;&#039;&#039;o&#039;&#039;&#039; - Vdd&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_th_02.jpg|thumb|left|alt=Sonoff TH10]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Einbindung in FHEM via MQTT! }}&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ### Temperatur und Luftfeuchte vom Sonoff Switch ###&lt;br /&gt;
 define Sonoff_Temp MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Temp IODev myBroker&lt;br /&gt;
 attr Sonoff_Temp alias Pool Wasser&lt;br /&gt;
 attr Sonoff_Temp eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_Temp icon temperature_humidity&lt;br /&gt;
 attr Sonoff_Temp publishSet ON OFF cmnd/sonoffth/POWER/set&lt;br /&gt;
 attr Sonoff_Temp room _Sonoff&lt;br /&gt;
 attr Sonoff_Temp stateFormat {sprintf(&amp;quot;Temperatur: %.1f Grad&amp;quot;, ReadingsVal($name,&amp;quot;temperature&amp;quot;,0))}&lt;br /&gt;
 attr Sonoff_Temp subscribeReading_SENSOR tele/sonoffth/SENSOR&lt;br /&gt;
 attr Sonoff_Temp subscribeReading_state cmnd/sonoffth/POWER/set&lt;br /&gt;
Beispiel für FHEM mit Temperaturanzeige mit DS18B20&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Switch MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Switch IODev myBroker&lt;br /&gt;
 attr Sonoff_Switch alias Pool Licht&lt;br /&gt;
 attr Sonoff_Switch devStateIcon on:rc_GREEN:off off:rc_RED:on&lt;br /&gt;
 attr Sonoff_Switch eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_Switch icon light_ceiling&lt;br /&gt;
 attr Sonoff_Switch publishSet ON OFF cmnd/sonoffth/POWER/set&lt;br /&gt;
 attr Sonoff_Switch room _Sonoff&lt;br /&gt;
 attr Sonoff_Switch stateFormat Licht&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_Licht tele/sonoffth/POWER&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_state cmnd/sonoffth/POWER/set&lt;br /&gt;
 attr Sonoff_Switch webCmd ON:OFF&lt;br /&gt;
Der Schalter nochmals seperat dargestellt, je nach Geschmack.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff 4CH 4-Kanal Schaltmodul==&lt;br /&gt;
[[Datei:sonoff_ch4_1.jpg|thumb|left|alt=Sonoff CH4]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Achtung andere Einstellungen der Arduino IDE: Select Board &amp;quot;Generic ESP8285 Module&amp;quot; (=Flash Mode &amp;quot;DOUT&amp;quot;) and Flash Size &amp;quot;1M (64K SPIFFS)&amp;quot;n! }}&lt;br /&gt;
&lt;br /&gt;
Der Sonoff 4CH ist mit seinen 4 Kanälen ein sehr preiswertes Modul im Gehäuse und für Hutschinenmontage. Anstatt des üblichen ESP8266 besitzt dieses Modul schon den moderneren &#039;&#039;&#039;ESP8285&#039;&#039;&#039;. Es müssen daher in der Arduino IDE andere Einstellungen vorgenommen werden. Unter Board wird hier das &amp;quot;&#039;&#039;&#039;Generic 8285 Module&#039;&#039;&#039;&amp;quot; mit &#039;&#039;&#039;1M und 64K Spiffs&#039;&#039;&#039; angewählt. Der Flashmode &amp;quot;&#039;&#039;&#039;DOUT&#039;&#039;&#039;&amp;quot; wird dann automatisch eingestellt, bzw. ausgeblendet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Es ist daher unbedingt notwendig den Sketch mit den geänderten Einstellungen selbst zu kompilieren, ansonsten stürzt das Modul nach Auswahl des Typs ab  und wird nicht mehr rebooten können!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das Modul ist etwas größer als die anderen Sonoff Produkte und besitzt mit 14,5 x 9 cm schon beachtliche Einbau Maße.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_ch4_2.jpg|thumb|left|alt=Sonoff 4CH FDTI]]&lt;br /&gt;
Als weitere Besonderheit sei hier erwähnt, das die Signale &#039;&#039;&#039;RxD auf RxD und TxD auf TxD&#039;&#039;&#039; des FTDI Konverters zu verbinden sind. Wie bei allen Sonoff Modulen darf man &#039;&#039;&#039;zum flashen keine Netzspannung anschließen&#039;&#039;&#039;, sondern nur über die Versorgungsspannung des FDTI Konverters mit 3,3 V versorgen (Jumper richtig setzen). Die Stiftleiste für den FTDI Anschluß ist hier schon eingelötet.&lt;br /&gt;
&lt;br /&gt;
In den Flashmodus gelangt man durch drücken der &#039;&#039;&#039;Taste FW/IO0&#039;&#039;&#039; während des einstecken des USB Anschlusses.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_ch4_3.jpg|thumb|left|alt=Sonoff 4CH Arends]]&lt;br /&gt;
Hier die Ansicht des Webinterface des Arends Sketches!&lt;br /&gt;
Bei der Software sei erwähnt, das die getestete Version 3.1.16 nur bei Kanal 1 den Modus &amp;quot;PulseTime&amp;quot; beherrscht. Wer also gepulste Ausgänge (zB: elektrische Garage/Toröffner) benötigt muss diese per Software nachbilden oder mit dem Kanal 1 auskommen. Eine &amp;quot;Pulsetime 10&amp;quot; ist ein guter Wert dafür (etwa 1 Sekunde). &lt;br /&gt;
&lt;br /&gt;
Als Alternative kann mit dieser HTML Seite des Webservers am Modul des CH4 schon mit jedem Browser fähigem Handy (Android, iPhone, Windows) aufgerufen werden und somit alle Funktionen gesteuert werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_ch4_4.jpg|thumb|left|alt=Sonoff CH4 Software APP]]&lt;br /&gt;
Hier dargestellt die Original Software die Sonoff zum Modul liefert (EWeLink) und über ihre Cloud verbindet. Leider kann hier keine gepulste Ausgabe erfolgen. Mit einem Countdown kann zwar der Ausgang wieder abgeschaltet werden, die kleinste Zeiteinheit ist aber 1 Minute und somit für einen Impuls leider nicht zu gebrauchen. Ebenso kann mit dieser Software keine Einbindung in FHEM erfolgen, obwohl es eine nette anschauliche Darstellung ist.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sonoff 4CH 4-Kanal Anbindung FHEM===&lt;br /&gt;
Beispiel zur Anbindung in FHEM für den 4CH, hier werden einfach 4 einzelne Schalter definiert!&lt;br /&gt;
 define Sonoff_ch1 MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_ch1 IODev myBroker&lt;br /&gt;
 attr Sonoff_ch1 alias Sonoff CH1&lt;br /&gt;
 attr Sonoff_ch1 devStateIcon on:rc_GREEN:off off:rc_RED:on&lt;br /&gt;
 attr Sonoff_ch1 eventMap ON:on OFF:off ON:Ein OFF:Aus&lt;br /&gt;
 attr Sonoff_ch1 group Toröffner&lt;br /&gt;
 attr Sonoff_ch1 icon light_ceiling&lt;br /&gt;
 attr Sonoff_ch1 publishSet ON OFF cmnd/sonoffch4/POWER1/set&lt;br /&gt;
 attr Sonoff_ch1 stateFormat Power&lt;br /&gt;
 attr Sonoff_ch1 subscribeReading_Power tele/sonoffch4/POWER1&lt;br /&gt;
 attr Sonoff_ch1 subscribeReading_state cmnd/sonoffch4/POWER1/set&lt;br /&gt;
 attr Sonoff_ch1 webCmd Ein:Aus&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_ch2 MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_ch2 IODev myBroker&lt;br /&gt;
 attr Sonoff_ch2 alias Sonoff CH2&lt;br /&gt;
 attr Sonoff_ch2 devStateIcon on:rc_GREEN:off off:rc_RED:on&lt;br /&gt;
 attr Sonoff_ch2 eventMap ON:on OFF:off ON:Ein OFF:Aus&lt;br /&gt;
 attr Sonoff_ch2 group Toröffner&lt;br /&gt;
 attr Sonoff_ch2 icon light_ceiling&lt;br /&gt;
 attr Sonoff_ch2 publishSet ON OFF cmnd/sonoffch4/POWER2/set&lt;br /&gt;
 attr Sonoff_ch2 stateFormat Power&lt;br /&gt;
 attr Sonoff_ch2 subscribeReading_Power tele/sonoffch4/POWER2&lt;br /&gt;
 attr Sonoff_ch2 subscribeReading_state cmnd/sonoffch4/POWER2/set&lt;br /&gt;
 attr Sonoff_ch2 webCmd Ein:Aus&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_ch3 MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_ch3 IODev myBroker&lt;br /&gt;
 attr Sonoff_ch3 alias Sonoff CH3&lt;br /&gt;
 attr Sonoff_ch3 devStateIcon on:rc_GREEN:off off:rc_RED:on&lt;br /&gt;
 attr Sonoff_ch3 eventMap ON:on OFF:off ON:Ein OFF:Aus&lt;br /&gt;
 attr Sonoff_ch3 group Toröffner&lt;br /&gt;
 attr Sonoff_ch3 icon light_ceiling&lt;br /&gt;
 attr Sonoff_ch3 publishSet ON OFF cmnd/sonoffch4/POWER3/set&lt;br /&gt;
 attr Sonoff_ch3 stateFormat Power&lt;br /&gt;
 attr Sonoff_ch3 subscribeReading_Power tele/sonoffch4/POWER3&lt;br /&gt;
 attr Sonoff_ch3 subscribeReading_state cmnd/sonoffch4/POWER3/set&lt;br /&gt;
 attr Sonoff_ch3 webCmd Ein:Aus&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_ch4 MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_ch4 IODev myBroker&lt;br /&gt;
 attr Sonoff_ch4 alias Sonoff CH4&lt;br /&gt;
 attr Sonoff_ch4 devStateIcon on:rc_GREEN:off off:rc_RED:on&lt;br /&gt;
 attr Sonoff_ch4 eventMap ON:on OFF:off ON:Ein OFF:Aus&lt;br /&gt;
 attr Sonoff_ch4 group Toröffner&lt;br /&gt;
 attr Sonoff_ch4 icon light_ceiling&lt;br /&gt;
 attr Sonoff_ch4 publishSet on off cmnd/sonoffch4/POWER4/set&lt;br /&gt;
 attr Sonoff_ch4 stateFormat Power&lt;br /&gt;
 attr Sonoff_ch4 subscribeReading_Power tele/sonoffch4/POWER4&lt;br /&gt;
 attr Sonoff_ch4 subscribeReading_state cmnd/sonoffch4/POWER4/set&lt;br /&gt;
 attr Sonoff_ch4 webCmd Ein:Aus&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Erweiterungen=&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sonoff Switch mit Temperatur + Luftfeuchte== &lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier geht es um nützliche Hardware Erweiterungen an den Originalmodulen!}}&lt;br /&gt;
Wozu überhaupt den Switch erweitern wenn es auch die Modelle TH10 und TH16 gibt?&lt;br /&gt;
&lt;br /&gt;
Manche Personen können dadurch dem Basteltrieb nachkommen, aber das wesentliche ist der Preis, da die Switches doch fast um die Hälfte billiger sind. Die Sensoren kosten ebenfalls kaum nennenswerte Beträge.&lt;br /&gt;
&lt;br /&gt;
Oder es hat schon jemand Switches im Einsatz und möchte jetzt zusätzlich die Temperatur erfassen!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hardware erweitern mit DHT22 ===&lt;br /&gt;
[[Datei:sonoff_sw_4.PNG|thumb|left|alt=Sonoff Switch Pinleiste mit Temperatur]]&lt;br /&gt;
Am Sonoff Switch wurde ja schon eine Stiftleiste zum Flashen eingelötet. Diese Stiftleiste bietet schon alle Anschlüsse welche für die Temperatur- und Luftfeuchtemessung benötigt werden. Am 5. Anschluß der Stifftleiste ist das Signal &amp;quot;SCL&amp;quot; (GPIO14) herausgeführt, welches für den DHT22 zur Erfassung der Messdaten benötigt wird. Der Sonsor wird mit einem einem 3-poligen Kabel (zB: ein Steckkabel für ein Breadboard oder direkt anlöten) verbunden. Damit der DHT22 korrekt funktioniert, wird ein Widerstand mit 4,7 K Ohm zwischen Vdd und Data am DHT22 zusätzlich benötigt. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_45.jpg|thumb|left|alt=AM2302 / DHT22]]&lt;br /&gt;
&lt;br /&gt;
Ansicht des DHT22 (AM2302) mit den aufgesteckten Verbindungskabeln. Von links nach rechts sind das&lt;br /&gt;
&lt;br /&gt;
 1 = VCC 3,3 V&lt;br /&gt;
 2 = Data&lt;br /&gt;
 3 = nc (nicht belegt)&lt;br /&gt;
 4 = GND&lt;br /&gt;
&lt;br /&gt;
Pin1 (VCC) des DHT22 muss also auf Pin1 der Stiftleiste, Pin2 (Data) auf Pin5 und Pin4 (GND) auf Pin4. &lt;br /&gt;
Pin2 und Pin1 soll hier noch der Widerstand aufgelötet werden.&lt;br /&gt;
&lt;br /&gt;
 1 ------- 1 (VDD)&lt;br /&gt;
 2 ------- 5 (GPIO14)&lt;br /&gt;
 3&lt;br /&gt;
 4 ------- 4 (GND)&lt;br /&gt;
 DHT22  Stiftleiste&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_44.jpg|thumb|left|alt=umgebautes Modul]]&lt;br /&gt;
Diese Darstellung zeigt das umgebaute und bereits verschlossene Modul. Auf der Seite des Tasters (bitte nur hier, da auf der anderen Seite die 230 V verlaufen und neben der Lebensgefahr auch den Sensor beeinflussen) ist hier einfach mit einer Eisensäge ein Schlitz eingesägt, der dient in diesem Falle als Kabeldurchführung. Ein Schlitz ist besser als ein Loch, da der Oberteil des Gehäuses sich leichter aufsetzen läßt. Wer ein längeres Kabel benötigt, kann natürlich auch ein 3-poliges Telefonkabel (oder Mikrokabel oder sonstiges) verwenden. Der Sensor sollte etwas Abstand zum Gehäuse haben, da dieses auch eine Eigenerwärmung hat. Wer es ganz originalgetreu lösen will, kann auch eine 3-polige Mini Buchse für Klinckenstecker (3,5mm) einbauen so wie sie am TH10/16 vorhanden ist.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Software anpassen am Beispiel MQTT ===&lt;br /&gt;
[[Datei:sonoff_sw_40.jpg|thumb|left|alt=Sonoff MQTT]]&lt;br /&gt;
&lt;br /&gt;
Die richtige Auswahl des Sensors und des verwendeten GPIO erfolgt im WEBIF des Modules und wird seit Tasmota nur mehr dort eingestellt. Eventuell sollte das aktuell verwendete [https://github.com/ddtlabs/expandJSON/ JSON Filter] geändert/erweitert werde (siehe beim Modul POW).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Software Anpassung DHT22 in FHEM ===&lt;br /&gt;
[[Datei:sonoff_sw_41.jpg|thumb|left|alt=umgebautes Modul]]&lt;br /&gt;
&lt;br /&gt;
Links in der Hardcopy sind die Readings die nach der Anpassung von FHEM (Broker) befüllt werden sollten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ### Temperatur und Luftfeuchte vom Sonoff Switch ###&lt;br /&gt;
 define Sonoff_Temp MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Temp IODev myBroker&lt;br /&gt;
 attr Sonoff_Temp icon temperature_humidity&lt;br /&gt;
 attr Sonoff_Temp room MQTT&lt;br /&gt;
 attr Sonoff_Temp stateFormat {sprintf(&amp;quot;Temperatur: %.1f Grad Feuchte: %.1f &amp;quot;, ReadingsVal($name,&amp;quot;temperature&amp;quot;,0), ReadingsVal($name,&amp;quot;humidity&amp;quot;,0))}&lt;br /&gt;
 attr Sonoff_Temp subscribeReading_Sensor tele/sonoff/SENSOR&lt;br /&gt;
Hier die zusätzliche Erweiterung um die Temperatur und die Luftfeuchte in FHEM. Der in der Topic verwendete Name &amp;quot;sonoff&amp;quot; muss natürlich der Einstellung in der Software am Switch entsprechen. Bei Verwendung mehrerer Switches muss natürlich auch der Name bei jedem geändert werden.&lt;br /&gt;
&lt;br /&gt;
Als Regexp für JSON kann dieser Filter eingesezt werden.&lt;br /&gt;
 define ej3 expandJSON .*\.SEN\..*:.*:.{.*} &lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Logfile für die Temperatur ===&lt;br /&gt;
 define SVG_FileLog_Sonoff_Temp SVG myDbLog:SVG_FileLog_Sonoff_Temp:HISTORY&lt;br /&gt;
 attr SVG_FileLog_Sonoff_Temp room MQTT&lt;br /&gt;
&lt;br /&gt;
Und schließlich fehlt noch das Logfile, damit der Temperaturverlauf auch in schönen Plots dargestellt werden kann.&lt;br /&gt;
Das hier verwendete Beispiel funktioniert nur mit einer DbLog.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Switch als Thermostat verwenden mit MQTT== &lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_55.jpg|thumb|left|alt=Thermostat]]&lt;br /&gt;
Mit diesem einfachen Beispiel wird ein Pelett Ofen mit einem externen Thermostat (sonoff Switch oder TH10/16) gesteuert. Zum besseren Überblick wird die Steuerung in einzelne Module getrennt, es könnte aber auch einiges zu einer einzigen Definition zusammen gefasst werden. Der Thermostat könnte auch als Frostwächter benutzt werden und ein anderes Heizgerät steuern.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 ###################################&lt;br /&gt;
 ### Sonoff Thermostat Regelung ####&lt;br /&gt;
 ###################################&lt;br /&gt;
 define Sonoff_dht MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_dht IODev myBroker&lt;br /&gt;
 attr Sonoff_dht alias Raumtemperatur&lt;br /&gt;
 attr Sonoff_dht group Thermostat&lt;br /&gt;
 attr Sonoff_dht icon temperature_humidity&lt;br /&gt;
 attr Sonoff_dht publishSet ON OFF cmnd/sonoff_dht/POWER/set&lt;br /&gt;
 attr Sonoff_dht room _Sonoff&lt;br /&gt;
 attr Sonoff_dht stateFormat {sprintf(&amp;quot;Temperatur: %.1f Grad Feuchte: %.1f &amp;quot;, ReadingsVal($name,&amp;quot;temperature&amp;quot;,0),  ReadingsVal($name,&amp;quot;humidity&amp;quot;,0))}&lt;br /&gt;
 attr Sonoff_dht subscribeReading_Sensor tele/sonoff_dht/SENSOR&lt;br /&gt;
 attr Sonoff_dht subscribeReading_state cmnd/sonoff_dht/POWER/set&lt;br /&gt;
FHEM Definition zur Erfassung der Temperatur und der Luftfeuchte. Damit dieses Beispiel funktioniert, ist am Sonoff Modul die Topic &amp;quot;&#039;&#039;&#039;sonoff_dht&#039;&#039;&#039;&amp;quot; zu setzen. Dieser Temperaturwert dient dem Thermostat als ISTWert.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Sw MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Sw IODev myBroker&lt;br /&gt;
 attr Sonoff_Sw alias Pellets Ofen&lt;br /&gt;
 attr Sonoff_Sw devStateIcon on:rc_GREEN:off off:rc_RED:on&lt;br /&gt;
 attr Sonoff_Sw eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_Sw group Thermostat&lt;br /&gt;
 attr Sonoff_Sw icon sani_boiler_temp&lt;br /&gt;
 attr Sonoff_Sw publishSet ON OFF cmnd/sonoff_dht/POWER/set&lt;br /&gt;
 attr Sonoff_Sw room _Sonoff&lt;br /&gt;
 attr Sonoff_Sw stateFormat Licht&lt;br /&gt;
 attr Sonoff_Sw subscribeReading_Licht tele/sonoff_dht/POWER&lt;br /&gt;
 attr Sonoff_Sw subscribeReading_state cmnd/sonoff_dht/POWER/set&lt;br /&gt;
 attr Sonoff_Sw webCmd ON:OFF&lt;br /&gt;
FHEM Definition zum Absetzen der Befehle für das Relais (Thermostat) Ein- / Aus. Wenn das zu steuernde Geräte einen potentialfreien Thermostatanschluß benötigt (in den meisten Fällen), muss noch ein Relais dazwischen geschaltet werden um die Trennung der Netzspannung zu gewährleisten.&lt;br /&gt;
&lt;br /&gt;
 define ThermostatPellets dummy&lt;br /&gt;
 attr ThermostatPellets alias Pellets Ofen Sollwert&lt;br /&gt;
 attr ThermostatPellets group Thermostat&lt;br /&gt;
 attr ThermostatPellets icon temp_control&lt;br /&gt;
 attr ThermostatPellets room _Sonoff&lt;br /&gt;
 attr ThermostatPellets setList state:0,5,10,12,13,14,15,16,17,17.5,18,18.5,19,19.5,20,20.5,21,21.5,22,23,24,25,26,27&lt;br /&gt;
 attr ThermostatPellets webCmd state&lt;br /&gt;
Die Sollwertvorgabe für das Thermostat durch einen Dummy, damit können die gewünschten Temperaturen eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
 ### sofort ausführen wenn neuer Sollwert eingestellt wird ###&lt;br /&gt;
 define Thermostat_on_notify notify ThermostatPellets IF (ReadingsVal(&amp;quot;Sonoff_Sw&amp;quot;,&amp;quot;state&amp;quot;,0) eq &amp;quot;OFF&amp;quot; &amp;amp;&amp;amp; (ReadingsVal(&amp;quot;Sonoff_dht&amp;quot;,&amp;quot;temperature&amp;quot;,0) &amp;lt;= Value(&amp;quot;ThermostatPellets&amp;quot;))) (set Sonoff_Sw ON)&lt;br /&gt;
 define Thermostat_off_notify notify ThermostatPellets IF (ReadingsVal(&amp;quot;Sonoff_Sw&amp;quot;,&amp;quot;state&amp;quot;,0) eq &amp;quot;ON&amp;quot; &amp;amp;&amp;amp; (ReadingsVal(&amp;quot;Sonoff_dht&amp;quot;,&amp;quot;temperature&amp;quot;,0) &amp;gt; Value(&amp;quot;ThermostatPellets&amp;quot;))) (set Sonoff_Sw OFF)&lt;br /&gt;
Mit einem notify wird die manuelle Änderung des Sollwertes überwacht und sofort reagiert.&lt;br /&gt;
&lt;br /&gt;
 ## zyklisch prüfen ob Sollwert erreicht wurde ###&lt;br /&gt;
 define Thermostat_on at +*00:15:00 IF (ReadingsVal(&amp;quot;Sonoff_Sw&amp;quot;,&amp;quot;Licht&amp;quot;,0) eq &amp;quot;OFF&amp;quot; &amp;amp;&amp;amp; (ReadingsVal(&amp;quot;Sonoff_dht&amp;quot;,&amp;quot;temperature&amp;quot;,0) &amp;lt;= Value(&amp;quot;ThermostatPellets&amp;quot;))) (set Sonoff_Sw ON)&lt;br /&gt;
 define Thermostat_off at +*00:15:00 IF (Value(&amp;quot;Sonoff_Sw&amp;quot;) eq &amp;quot;ON&amp;quot; &amp;amp;&amp;amp; (ReadingsVal(&amp;quot;Sonoff_dht&amp;quot;,&amp;quot;temperature&amp;quot;,0) &amp;gt; Value(&amp;quot;ThermostatPellets&amp;quot;))) (set Sonoff_Sw OFF)&lt;br /&gt;
Hier noch die Soll- Ist Wertvergleiche zur Steuerung. Es wird alle 15 Minuten überprüft ob die Temperatur erreicht ist. Bei einer trägen Heizung sollten 15 Minuten ausreichend sein, wer will kann dies aber auch alle 5 oder 10 Minuten prüfen.&lt;br /&gt;
Da des öfteren die Bezeichnungen der Readings im Sketch geändert werden ( zB:temperature ), bitte die richtige Schreibweise ( Groß/Klein ) in den Readings kontrollieren und gegebenenfalls hier anpassen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Switch mit Bewegungsmelder HC-SR501== &lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_pir_1.jpg|thumb|left|alt=Bewegungsmelder]]&lt;br /&gt;
Basierend auf dem Wall Switch MQTT Sketch von Arends wurde hier ein Sonoff BASIC + PIR HC-SR501 in eine größere Verteilerdose eingebaut, der Sonoff wurde dabei etwas gekürzt. Die Bewegungsmelder sind ab etwa 70 Cent erhältlich.&lt;br /&gt;
&lt;br /&gt;
Der Sketch kann auch den Blink Modus. Damit kann man im Alarmfall z.B. Alle Strahler rings ums Haus blinken lassen.&lt;br /&gt;
&lt;br /&gt;
Mehr dazu kann hier im [https://forum.fhem.de/index.php/topic,63824.0.html Forum]im Diskussionsthread nachgelesen werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_pir_2.jpg|thumb|left|alt=Bewegungsmelder]]&lt;br /&gt;
Ein Beispiel wir der Bewegungsmelder in der Feuchtraumdose montiert werden kann. Wird der Bewegungsmelder abgesetzt vom Switch montiert, ist darauf zu achten das die Kabel nicht zu lange werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
===Spannungsversorgung des HC-SR501===&lt;br /&gt;
[[Datei:sonoff_pir_4.jpg|thumb|left|alt=5V für Bewegungsmelder]]&lt;br /&gt;
Der HC-SR501 wird vom Sonoff versorgt, wobei hier die 3,3 V nicht immer ausreichen. Es ist deshalb am HC-SR501 eine Diode zu überbrücken, dann reichen die 3,3V vom Sonoff. Es können aber auch am Sonoff die 5V angezapft werden. Hier im Bild dargestellt wo die 5V angezapft werden können.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_pir_5.jpg|thumb|left|alt=3,3V für Bewegungsmelder]]&lt;br /&gt;
Hier eine kleine Übersicht der wichtigsten Teile und deren Platzierung am HC-SR501. &lt;br /&gt;
Den PIR kann man auch mit 3,3V betreiben wenn man die Diode am Eingang nach Vcc überbrückt, dann reicht die Spannung für einen reibungslosen Betrieb völlig aus. Dies gilt für den HC-SR501, wird ein anderer PIR verwendet muss man nachschauen ob das auch möglich ist, ansonsten die 5V Variante wählen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===Einbindung des HC-SR501 in FHEM===&lt;br /&gt;
 # ------------- Sonoff_pir mit Bewegungsmelder ---------------&lt;br /&gt;
 define Sonoff_pir MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_pir IODev myBroker&lt;br /&gt;
 attr Sonoff_pir eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_pir group Sonoff&lt;br /&gt;
 attr Sonoff_pir icon hue_filled_br30&lt;br /&gt;
 attr Sonoff_pir publishSet ON OFF cmnd/sonoff_pir/POWER/set&lt;br /&gt;
 attr Sonoff_pir room MQTT&lt;br /&gt;
 attr Sonoff_pir stateFormat Licht&lt;br /&gt;
 attr Sonoff_pir subscribeReading_Licht stat/sonoff_pir/POWER&lt;br /&gt;
 attr Sonoff_pir subscribeReading_state cmnd/sonoff_pir/POWER/set&lt;br /&gt;
 attr Sonoff_pir webCmd :&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel wie der Sonoff Switch in FHEM eingebunden wird. Wenn im Sketch der Prefix von stat auf tele geändert wurde, ist dies auch hier durchzuführen ( subscribeReading_Licht tele/sonoff_pir/POWER ), ansonsten bleibt es so wie im Beispiel. Getestet wurde dieses Beispiel mit Version 3.1.6. Die Topic sollte auf den Namen &amp;quot;sonoff_pir&amp;quot; eingestellt werden. Bei anderen Namen ist dies entsprechend in FHEM anzupassen. &lt;br /&gt;
&lt;br /&gt;
Mit dem Kommando &#039;&#039;&#039;BUTTONTOPIC Alarm_SO2&#039;&#039;&#039; ( direkt im Webinterface des Sonoff ) wird der Wall Switch GPIO14 vom Sonoff entkoppelt und somit sendet der Bewegungsmelder direkt an FHEM --&amp;gt; Motion_pir MQTT_DEVICE&lt;br /&gt;
&lt;br /&gt;
Es sollte auch unbedingt kontrolliert werden, wie die Ausgabe des Alarmes in der Console erfolgt. Erscheint hier die Meldung &amp;quot;cmnd/Alarm_SO2/POWER = TOGGLE&amp;quot; dann muss mit dem Kommando &amp;quot;&#039;&#039;&#039;switchmode 1&#039;&#039;&#039;&amp;quot; das Ausgabeformat umgeschaltet werden, erst dann kommt das gewünschte Format &amp;quot;On&amp;quot; und &amp;quot;OFF&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 # ------------------ Motion_pir MQTT_DEVICE -----------------&lt;br /&gt;
 define Motion_pir MQTT_DEVICE&lt;br /&gt;
 attr Motion_pir IODev myBroker&lt;br /&gt;
 attr Motion_pir devStateIcon on:on-for-timer off:off&lt;br /&gt;
 attr Motion_pir eventMap ON:on OFF:off&lt;br /&gt;
 attr Motion_pir group Sonoff&lt;br /&gt;
 attr Motion_pir icon people_sensor&lt;br /&gt;
 attr Motion_pir room MQTT&lt;br /&gt;
 attr Motion_pir stateFormat Alarm&lt;br /&gt;
 attr Motion_pir subscribeReading_Alarm cmnd/Alarm_SO2/POWER&lt;br /&gt;
Die Motion_pir dient nun zur eigentlichen Einschaltung des Lichtes und sendet das Kommando &#039;&#039;&#039;cmnd/Alarm_SO2/POWER&#039;&#039;&#039; an den entkopellten GPIO 14 des Switch.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # ------------------ DoIf zur Motion Abfrage -----------------&lt;br /&gt;
 define di_Sonoff_pir_Alarm DOIF ([Motion_pir:&amp;quot;on&amp;quot;] and [Tag_Nacht:twilight_weather] &amp;lt; 35) (set Sonoff_pir on) DOELSEIF ([Motion_pir:&amp;quot;off&amp;quot;] and [Tag_Nacht:twilight_weather] &amp;lt; 35) (set Sonoff_pir off)&lt;br /&gt;
 attr di_Sonoff_pir_Alarm comment Abhängig von Helligkeitssensor wird nachts,bei Bewegung das Licht eingeschaltet!&lt;br /&gt;
 attr di_Sonoff_pir_Alarm group Sonoff&lt;br /&gt;
 attr di_Sonoff_pir_Alarm room MQTT&lt;br /&gt;
Zusätzlich kann nun mit einem &#039;&#039;&#039;Doif&#039;&#039;&#039; verknüpft werden um das Ganze mit Tag_Nacht:twilight_weather dann in Abhängigkeit der Helligkeit zu schalten. Selbstverständlich kann jede andere Quelle mit einem Helligkeitswert verwendet werden.&lt;br /&gt;
&lt;br /&gt;
===Alarmausgabe über Grouptopic===&lt;br /&gt;
 # ------------------------ Sonoffs Group ----------------------&lt;br /&gt;
 define Sonoffs MQTT_DEVICE&lt;br /&gt;
 attr Sonoffs IODev myBroker&lt;br /&gt;
 attr Sonoffs eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoffs group Sonoff&lt;br /&gt;
 attr Sonoffs icon hue_filled_br30&lt;br /&gt;
 attr Sonoffs publishSet ON OFF cmnd/sonoffs/POWER/set&lt;br /&gt;
 attr Sonoffs room MQTT&lt;br /&gt;
 attr Sonoffs stateFormat state&lt;br /&gt;
 attr Sonoffs subscribeReading_Licht stat/sonoffs/POWER&lt;br /&gt;
 attr Sonoffs subscribeReading_state cmnd/sonoffs/POWER/set&lt;br /&gt;
Wer möchte kann auch mit der Group Topic mehrere Switches mit Bewegungsmelder zusammenfassen und alle Lampen im Alarmfall gemeinsam in den Blinkmodus schalten. cmnd/sonoffs ist das Kommando für die Group Topic, sofern diese vom User nicht verändert wurde.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:IP Components]]&lt;br /&gt;
--[[Benutzer:Reinhart|Reinhart]] ([[Benutzer Diskussion:Reinhart|Diskussion]]) 20:54, 5. Jan. 2017 (CET)&lt;/div&gt;</summary>
		<author><name>Reinhart</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Sonoff&amp;diff=20174</id>
		<title>Sonoff</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Sonoff&amp;diff=20174"/>
		<updated>2017-02-22T16:51:09Z</updated>

		<summary type="html">&lt;p&gt;Reinhart: Legacy Format entfernt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;SONOFF, dieser Artikel beschreibt die Ankopplung der kostengünstigen Sonoff Module an FHEM mit ESPEasy oder Arends MQTT.&#039;&#039;&#039;&lt;br /&gt;
{{Randnotiz|RNTyp=Fehl|RNText=Achtung: Arbeiten mit Netzspannung kann lebensgefährlich sein und darf nur von autorisiertem Fachpersonal durchgeführt werden!}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Seit einiger Zeit werden von der [https://www.itead.cc/sonoff-wifi-wireless-switch.html Fa. Itead] kostengünstige &amp;quot;sonoff&amp;quot; Produkte angeboten die glücklicherweise den [http://dl.itead.cc/IM151116002/0A-ESP8266_Specifications_v4.1.pdf ESP8266 Chip] On Board haben und somit die ideale Grundlage für [http://www.esp8266.nu/index.php/Main_Page ESPEasy] und für [https://forum.fhem.de/index.php/board,46.0.html FHEM] darstellen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nützliche Links zum Hersteller:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://www.itead.cc/blog/user-guide-for-sonoff-slampher User Manual von Itead]&lt;br /&gt;
&lt;br /&gt;
[https://www.itead.cc/wiki/images/6/6b/Sonoff_schmatic.pdf Sonoff Schaltplan]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Hardware=&lt;br /&gt;
&#039;&#039;&#039;Bitte unbedingt die elektrotechnischen Sicherheitsrichtlinien beachten und einhalten!&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_sw_15.jpg|thumb|left|alt=Warnung Netzspannung]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Achtung: An dem Modul liegt Netzspannung an die lebensgefährlich ist. Es dürfen nur entsprechend ausgebildete Personen dieses Modul in Betrieb nehmen. Zum Umbau und zur Softwareaktualisierung darf keine Netzspannung angeschlossen sein&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Wie gefährlich das hantieren mit Netzspannung sein kann, wird hier am Beispiel eines [http://mysku.ru/blog/china-stores/45762.html russischen Anwenders] gezeigt, der hat beim Flashen die Netzspannung am Modul gelassen und somit über die Verbindung mit dem Netzteil des Laptop lebensgefährliche Spannung auf die FTDI Schnittstelle gebracht. Das Modul ist dabei abgeraucht!&lt;br /&gt;
&lt;br /&gt;
==Modelle==&lt;br /&gt;
&lt;br /&gt;
===Produktübersichtsliste sonoff===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:right&amp;quot;&lt;br /&gt;
! Produkt Name !! Beschreibung !! Spannungsversorgung !!  Imax !! Pmax !! Frequenz !! Schaltplan !! Link&lt;br /&gt;
|-&lt;br /&gt;
| Sonoff || Wireless control switch || 90~250V AC || 10A || 2200W || 2.4Ghz || [http://wiki.iteadstudio.com/Sonoff Plan] || [https://www.itead.cc/smart-home/sonoff-wifi-wireless-switch.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| Sonoff RF || 433 RF remote || 90~250V AC || 10A || 2200W || 2.4Ghz || [http://wiki.iteadstudio.com/Sonoff_RF Plan] || [https://www.itead.cc/smart-home/im151116003.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| Sonoff SV || Low voltage Input || 5~24V DC || 10A || 240W DC || 2.4Ghz || [http://wiki.iteadstudio.com/Sonoff_SV Plan] || [https://www.itead.cc/smart-home/sonoff-sv.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| Sonoff TH10/TH16 || Monitor and set Temp.&amp;amp;Hum. ||  90~250V AC || 10A/16A || 2200W(10A)/3500W(16A)	 || 2.4Ghz || [http://wiki.iteadstudio.com/Sonoff_TH_10/16 Plan] || [https://www.itead.cc/smart-home/sonoff-th.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Sonoff Dual || Remote control 2 devices ||  90~250V AC || 16A || 3500W || 2.4Ghz || [https://www.itead.cc/wiki/Sonoff_Dual Plan] || [https://www.itead.cc/sonoff-dual.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Sonoff Pow || Report power &amp;amp;power usage ||  90~250V AC || 16A || 3500W || 2.4Ghz || [https://www.itead.cc/wiki/Sonoff_Pow Plan] || [https://www.itead.cc/sonoff-pow.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Sonoff LED || WiFi Control Dimming LED ||  180~265V AC || 0.3-0.6A || 42W || 2.4Ghz ||  kein || [https://www.itead.cc/sonoff-led.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Sonoff Touch || WiFi wall touch switch ||  90~250V AC || 2A || 400W || 2.4Ghz || kein || [https://www.itead.cc/sonoff-touch.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Slampher || Wireless control light holder ||  90~250V AC || 2A || 200W || 2.4Ghz || [http://wiki.iteadstudio.com/Slampher Plan] || [https://www.itead.cc/smart-home/slampher-wifi-wireless-light-holder.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  S20 Smart Socket || Smart socket || 	90~250V AC || 10A || 2000W || 2.4Ghz || kein || [https://www.itead.cc/smart-home/smart-socket-eu.html EU-Stecker] &lt;br /&gt;
|-&lt;br /&gt;
|  iFan || Smart fan ||  185~264V AC ||﹤1A || 60W || 2.4Ghz || kein || [https://www.itead.cc/smart-home/smart-socket-eu.html EU-Stecker] &lt;br /&gt;
|-&lt;br /&gt;
| Motor/Pump Control Switch || clockwise/anticlockwise running ||  5V/7~32V DC || 10A || 50~320W || 2.4Ghz || kein || [https://www.itead.cc/smart-home/motor-reversing-wifi-wireless-switch.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| 1 Chnl Inching/self-locking Switch || Access control ||  	5V/12V DC || 10A || 50/120W || 2.4Ghz || kein || [https://www.itead.cc/smart-home/inching-self-locking-wifi-wireless-switch.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  4 Chnl Inching/self-locking/inter-locking Switch || Access control, rolling door control ||  5V/5~32V DC/90~250V AC || 10A || 50~320W/2500W || 2.4Ghz || kein || [https://www.itead.cc/ifan.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Eine Übersichtliste der verschiedenen Produkte mit technischen Kurzangaben.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Model: IM151116002: Erstes Modell===&lt;br /&gt;
[https://www.itead.cc/sonoff-wifi-wireless-switch.html Sonoff WiFi Wireless Smart Switch for MQTT COAP Smart Home]&lt;br /&gt;
[[Datei:sonoff_sw_0.jpg|thumb|left|alt=sonoff Switch]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Das sonoff Modul ist in einem zweckmäßigen und gefälligem Gehäuse verbaut!&lt;br /&gt;
&lt;br /&gt;
====Platine====&lt;br /&gt;
[[Datei:sonoff_sw_1.jpg|thumb|left|alt=sonoff Switch von vorne]]&lt;br /&gt;
&lt;br /&gt;
Die Platine ist sehr übersichtlich aufgebaut und der Hersteller hat auch alle Vorbereitungen zum Flashen einer alternativen Software vorgesehen (über serielle Schnittstelle via FTDI-Modul). Mit einer alternativen Software wie ESPEasy ist eine direkte Ankopplung des &#039;&#039;&#039;sonoff&#039;&#039;&#039; an FHEM somit ein leicht durchführbarer Vorgang.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_3.jpg|thumb|left|alt=sonoff Switch von hinten]]&lt;br /&gt;
Die stromführenden Leitungen wurden mit Lötzinn vom Hersteller verstärkt um die angegebenen Stromstärken mit geringer Hitzeentwicklung zu transportieren.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung: Bitte vor den Arbeiten kontrollieren, das an der Platine keine Netzspannung angeschlossen ist, LEBENSGEFAHR!&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Model: IM160712005: TH 10A/16A ===&lt;br /&gt;
[https://www.itead.cc/sonoff-th.html Sonoff TH 10A/16A WiFi Smart Switch]&lt;br /&gt;
&lt;br /&gt;
====TH10 / TH16 weitere GPIO zugänglich machen====&lt;br /&gt;
[[Datei:Sonoff_TH_10A-16A_kleiner.jpg|thumb|left|alt=TH10 / TH16 weitere GPIO zugänglich machen]]&lt;br /&gt;
Der Hersteller hat zwar schon Platine für eine weitere Stiftleiste vorbereitet, jedoch muss diese noch bestückt werden. Die nicht beschalteten Stifte können dann genutzt werden um die &amp;quot;verdeckten&amp;quot; GPIO zugänglich zu machen. Die Verdrahtung kann dem Bild entnommen werden.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Achtung: Bitte vor den Arbeiten kontrollieren, das an der Platine keine Netzspannung angeschlossen ist, LEBENSGEFAHR!&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Model: IM160811001: Sonoff Dual ===&lt;br /&gt;
[https://www.itead.cc/sonoff-dual.html Sonoff Dual WiFi Wireless Smart Swtich]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Model: IM160810001: Sonoff Pow ===&lt;br /&gt;
[https://www.itead.cc/sonoff-pow.html Sonoff POW WiFi Switch with Power Consumption Measurement]&lt;br /&gt;
[[Datei:sonoff_sw_30.jpg|thumb|left|alt=SONOFF POW]]Ein sehr interessantes und kostengünstiges Modul zur Messung der aktuellen Leistung. Das Modul kann via MQTT in FHEM angebunden werden.&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel zur Einbindung ist [http://www.fhemwiki.de/wiki/Sonoff#Sonoff_POW_einrichten hier unten] im Wiki beschrieben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===Model: weitere Modelle===&lt;br /&gt;
[https://www.itead.cc/search/result/?cat=&amp;amp;q=sonoff Sonoff Weitere Modelle finden sich auf der Homepage des Hersstellers]&lt;br /&gt;
&lt;br /&gt;
==Vorbereitungen zum Flashen==&lt;br /&gt;
[[Datei:sonoff_sw_2.jpg|thumb|left|alt=serielle Schnittstelle]]&lt;br /&gt;
&lt;br /&gt;
Hier auf der Platine sind die benötigten Signale für ein FTDI Modul schon vorhanden. Der quadratische Pin gleich über dem Taster ist die Spannungsversorgung zum Flashen vom FDTI von 3.3V Es muss daher unbedingt ein FTDI Modul genommen werden, dass nicht nur einen Jumper für 3.3V besitzt sondern auch die Spannung auf 3.3V herab setzt. Ist dies nicht der Fall, läuft man Gefahr das Modul unbrauchbar zu machen. Es ist daher zu empfehlen einen Spannungsteiler mit 2 Widerständen oder einen Pegelwandler zwischenschalten.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Signale der Schnittstelle==&lt;br /&gt;
von oben nach unten auf der Steckerleiste des sonoff U4 (Model: IM151116002).&lt;br /&gt;
&lt;br /&gt;
 Pin5 = vorbereitet für GPIO&lt;br /&gt;
 Pin4 = Masse&lt;br /&gt;
 Pin3 = TxD&lt;br /&gt;
 Pin2 = RxD&lt;br /&gt;
 Pin1 = 3.3V&lt;br /&gt;
&lt;br /&gt;
Siehe dazu auch den [https://forum.fhem.de/index.php/topic,55036.0.html Link aus dem Forum]:&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Platine mit Stiftleiste bestücken==&lt;br /&gt;
[[Datei:sonoff_sw_4.jpg|thumb|left|alt=Platine mit Stiftleiste bestücken]]&lt;br /&gt;
Der Hersteller hat zwar schon die Platine vorbereitet, jedoch muss sie noch mit einer Stiftleiste bestückt werden um das FTDI Modul bequem verbinden zu können. Nachdem einmal ESPEasy geflasht worden ist, kann es in Zukunft via WEB (OTA) geflasht werden und die Stiftleiste ist dann nicht mehr erforderlich. Aufgrund der geringen Kosten fällt dies jedoch nicht ins Gewicht.&amp;lt;br&amp;gt;&lt;br /&gt;
Für die Module TH10/TH16 sind die Lötpunkte für die Stiftleiste schon beschriftet. Die Stiftleiste selber muss allerdings auch nachgerüstet werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Achtung&#039;&#039;&#039;: Bitte vor den Arbeiten kontrollieren, das an der Platine keine Netzspannung angeschlossen ist, LEBENSGEFAHR!&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Software=&lt;br /&gt;
==MQTT und TASMOTA==&lt;br /&gt;
Der Autor Arends hat die Version Sonoff-MQTT-OTA-Arduino nun eingestellt und die Version 3.2.13 (Ende Jänner 2017)dürfte wohl die letzte dieser Generation gewesen sein. Mit der Einstellung dieser Version wurde zwar der Nachfolger &#039;&#039;&#039;TASMOTA&#039;&#039;&#039; erschaffen, aber leider nun auf das &#039;&#039;&#039;Messageformat LEGACY&#039;&#039;&#039; gänzlich verzichtet was bei der Auswertung der Messdaten in Fhem doch einige Probleme mit sich bringt, da der verwendete JSON String nun zusätzlich gefiltert werden muss.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Es gibt aber bereits sehr gute Lösungswege um dieses Problem zu beheben und somit spricht dem neuen Ausgabeformat nichts dagegen!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://forum.fhem.de/index.php/topic,66761.0.html in diesem Thread] wurde ein &#039;&#039;&#039;JSON to Reading Modul&#039;&#039;&#039; vorgestellt, dass den JSON String analysiert und alle darin enthaltenen Daten in Readings kopiert. Die Readings werden dabei in FHEM automatisch angelegt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Link: [https://github.com/arendst/Sonoff-Tasmota Tasmota]&lt;br /&gt;
&lt;br /&gt;
Link alte Software: [https://github.com/arendst/Sonoff-MQTT-OTA-Arduino Sonoff-MQTT-OTA-Arduino]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Alle hier im Wiki verwendeten Beispiele und deren Beschreibung sind nun für die neue Tasmota Version ausgelegt. Da in Tasmota fast alles im WEBIF konfiguriert werden kann, entfallen daher sinngemäß einige hier im Wiki erklärten Definitionen, speziell in der &amp;quot;user_config.h&amp;quot;.&lt;br /&gt;
Trotz diesem Komfort müssen die Einstellungen aber nun im WEBIF vorgenommen werden, die wohl wichtigste ist die Auswahl der verwendeten Hardware (Sonoff POW etc.).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ESPEasy flashen==&lt;br /&gt;
[[Datei:sonoff_sw_6.jpg|thumb|left|alt=sonoff mit angestecktem FDTI Adapter]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier geht es ausschließlich um die Software ESPEasy an den sonoff Modulen! }}&lt;br /&gt;
Die Spannungsversorgung des Sonoff Moduls wird hier vom FTDI Konverter mit 3.3V über die Verbindungskabel zum Pfostenstecker durchgeführt. &lt;br /&gt;
&lt;br /&gt;
Der FTDI Adapter wird dann mit der USB Schnittstelle mit dem Computer verbunden.&lt;br /&gt;
&lt;br /&gt;
Zum compilieren wird in der Arduino Umgebung auch die ArduinoJson Library 5.6.4+ benötigt. Eine genaue Anleitung kann [https://forum.fhem.de/index.php/topic,55728.msg473220.html#msg473220 hier] nachgelesen werden. Es sollte stest die aktuelle Version der Arduino Umgebung verwendet werden, bzw. die Librarys auf Letztstand gehalten werden. &lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===mit Arduino compilieren===&lt;br /&gt;
[[Datei:sonoff_sw_10.jpg|thumb|left|alt=Einstellung Arduino IDE]]&lt;br /&gt;
Wer selber mit der Arduino IDE compilieren will bitte folgende Einstellungen beachten. Die anschließenden Arbeiten sind dann gleich wie bei Abschnitt &#039;&#039;&#039;fertige Binary&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Unbedingt die neueste [https://github.com/bblanchon/ArduinoJson Arduino Json Library] benutzen (siehe oben)! Es gibt zwar keine Compilerfehler, aber es kommt anschließend zu Fehlfunktionen in der ESP Bridge!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 Generic ESP8266 Module&lt;br /&gt;
 Flash Mode: QIO&lt;br /&gt;
 Flash Frequency: 40 MHz&lt;br /&gt;
 CPU Frequency: 80 MHz&lt;br /&gt;
 Flash Size: 1M (64K SPIFFS)&lt;br /&gt;
 Debug Port: disabled&lt;br /&gt;
 Debug Level: none&lt;br /&gt;
 Reset Mode: ck&lt;br /&gt;
 Upload Speed: 115200&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===fertige Binary flashen===&lt;br /&gt;
[[Datei:sonoff_sw_7.jpg|thumb|left|alt=NodeMCU Firmware Flasher]]&lt;br /&gt;
Es empfiehlt sich eine fertige Binary von ESPEasy aufzuspielen. In diesem Wiki wurde R140 verwendet.&lt;br /&gt;
&lt;br /&gt;
Siehe dazu auch den [http://www.esp8266.nu/index.php/Main_Page Link von ESPEasy] und das [https://learn.adafruit.com/building-and-running-micropython-on-the-esp8266/flash-firmware Handbuch] für den Flasher.&lt;br /&gt;
&lt;br /&gt;
In manchen Versionen von ESPEasy (zB.R120) ist auch ein Flasher beigelegt, welcher zwar keine grafische Oberfläche hat aber hervorragend funktioniert. Wenn andere versagen, geht es mit diesem Flasher immer noch, einfach probieren!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 Netzspannung darf &#039;NICHT&#039; angeschlossen sein!!!&lt;br /&gt;
 Taster am Sonoff gedrückt halten&lt;br /&gt;
 FTDI Adapter verbinden&lt;br /&gt;
 Taster am Sonoff los lassen&lt;br /&gt;
 Sketch übertragen&lt;br /&gt;
 Sonoff vom FTDI trennen&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Wenn einmal die Firmware auf das sonoff Modul geflasht worden ist, kann in Zukunft ESPEasy direkt unter Tools via HTTP dies durchführen. Es muss dazu kein FTDI Konverter mehr verwendet werden.&lt;br /&gt;
&lt;br /&gt;
==ESPEasy==&lt;br /&gt;
[[Datei:sonoff_sw_11.jpg|thumb|left|alt=ESPEasy Devices]]&lt;br /&gt;
Wenn das Modul fertig geflasht ist und die Verbindung zum Modul hergestellt ist, können die Einstellungen in ESPEasy durchgeführt werden.&lt;br /&gt;
Dazu am Webinterface anmelden und zunächst die zwei Devices definieren.&lt;br /&gt;
&lt;br /&gt;
Der Hersteller hat für das &#039;&#039;&#039;Relaise GPIO 12&#039;&#039;&#039; und für die &#039;&#039;&#039;grüne Led GPIO 13&#039;&#039;&#039; vorgesehen. Der &#039;&#039;&#039;Taster ist an GPIO 0&#039;&#039;&#039; angeschlossen.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Device Schalter===&lt;br /&gt;
[[Datei:sonoff_sw_12.jpg|thumb|left|alt=Device Relais]]&lt;br /&gt;
Bei den Devices sollten die hier dargestellte Einstellungen beachtet werden. Der Switch (PUMP) sollte auf Input gestellt werden, sodass die anschließenden und benötigten Rules aktiviert werden können.&lt;br /&gt;
&lt;br /&gt;
Da beide Devicenamen gleich benannt wurden (PUMP) wird in FHEM nur ein Device angelegt! Die dazugehörenden Valuenames sind unterschiedlich (Relay, Key).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Device Taster===&lt;br /&gt;
[[Datei:sonoff_sw_13.jpg|thumb|left|alt=Device Key]]&lt;br /&gt;
Der Taste muss natürlich nur konfiguriert werden, wenn auch händisch am Modul geschaltet werden soll. Wird dies nicht benötigt, können auch die Rules geändert bzw. angepasst werden. Doch alleine zu Testzwecken ist es eine nützliche Sache.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Rules===&lt;br /&gt;
[[Datei:sonoff_sw_14.jpg|thumb|left|alt=Rules]]&lt;br /&gt;
Da das sonoff Modul auch einen eingebauten Taster hat und somit auch lokal bedient werden kann, sollte man zunächst unter &#039;&#039;&#039;Tools / Advanced das Häckchen Rules&#039;&#039;&#039; aktivieren, erst dann wird der Tab sichtbar und es können Rules erstellt werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 on PUMP#Key do&lt;br /&gt;
  if [PUMP#Relay]=1&lt;br /&gt;
    gpio,12,0&lt;br /&gt;
  else&lt;br /&gt;
    gpio,12,1&lt;br /&gt;
  endif&lt;br /&gt;
 endon&lt;br /&gt;
 on PUMP#Relay do&lt;br /&gt;
  if [PUMP#Relay]=1 &lt;br /&gt;
    gpio,13,0&lt;br /&gt;
  else&lt;br /&gt;
    gpio,13,1&lt;br /&gt;
  endif&lt;br /&gt;
 endon&lt;br /&gt;
Diese Rules ermöglichen, das bei lokaler Bedienung durch den Taster auch die &#039;&#039;&#039;Led&#039;&#039;&#039; richtig geschaltet wird.&lt;br /&gt;
Mit &#039;on PUMP#Key do&#039; wird geprüft ob die Taste gedrückt ist und schaltet dann entsprechend die Led. Mit den Rules können auch Timer oder sonstige Spielereien realisiert werden. Siehe dazu das [http://www.esp8266.nu/index.php/Tutorial_Rules Tutorial] von ESPeasy.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ESPEasy in FHEM einrichten==&lt;br /&gt;
[[Datei:sonoff_sw_9.jpg|thumb|left|alt=FHEM Konfiguration]]&lt;br /&gt;
Dies ist eine einfache Darstellung wie FHEM automatisch den Device erstellt.&lt;br /&gt;
&lt;br /&gt;
Damit FHEM mit ESPEasy und dem sonoff Modul kommunizieren kann, muss in der fhem.cfg vorerst nur die espBridge mit dem hier dargestellten Eintrag aktiviert werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 define espBridge ESPEasy bridge 8383&lt;br /&gt;
Dies ist eigentlich die einzige Zeile die in fhem.cfg angelegt werden muss. Die restliche Konfiguration wird von FHEM automatisch generiert. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 ##########################################&lt;br /&gt;
 ###             ESPEASY               ####&lt;br /&gt;
 ##########################################&lt;br /&gt;
 &lt;br /&gt;
 define ESPEasy_sonoff_1_PUMP ESPEasy 10.0.0.37 80 espBridge sonoff_1_PUMP&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP IODev espBridge&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP devStateIcon on:rc_GREEN:off off:rc_RED:on absent:rc_BLUE:off gpio:rc_YELLOW:off&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP eventMap /gpio 12 on:on/gpio 12 off:off/gpio 12 gpio:off/gpio 12 output:off/&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP group ESPEasy Device&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP icon hue_filled_outlet&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP room ESPEasy&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP setState 0&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP stateFormat {ReadingsVal($name,&amp;quot;presence&amp;quot;,&amp;quot;&amp;quot;) eq &amp;quot;absent&amp;quot; ? &amp;quot;absent&amp;quot; : ReadingsVal($name,&amp;quot;Relay&amp;quot;,&amp;quot;&amp;quot;)}&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP webCmd :&lt;br /&gt;
&lt;br /&gt;
hier ein Beispiel wie es auch manuell leicht modifiziert werden kann.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_8.jpg|thumb|left|alt=sonoff Readings]]&lt;br /&gt;
&lt;br /&gt;
Die Readings werden durch die Bridge (Modul ESPEasy) automatisch angelegt.&lt;br /&gt;
&lt;br /&gt;
Es besteht hier noch genug Spielraum um zB. auch noch Temperatursensoren an das Modul anzuschließen und ebenfalls in FHEM darzustellen.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==MQTT Server einrichten==&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier geht es ausschließlich um den Sketch von Arends und MQTT an den sonoff Modulen! }}&lt;br /&gt;
Es bleibt jedem Anwender die freie Wahl ob die Kommunikation über die ESPEasy-Bridge oder MQTT erfolgen soll. MQTT ist bei der Einrichtung etwas komplexer, da hier auch auf dem Server der Broker installiert werden muss.&lt;br /&gt;
&lt;br /&gt;
Im wesentlichen beschränkt sich die Installation eines MQTT Servers aber auf wenige Arbeitsschritte und ist wie folgt beschrieben durchzuführen. Wer schon einen &#039;&#039;&#039;mosquitto&#039;&#039;&#039; auf dem Server installiert hat, kann diesen Schritt überspringen.&lt;br /&gt;
&lt;br /&gt;
Dieses Kapitel ist insofern interessant, da mit dem Sketch von Theo Arends auch die Einbindung der neuen sonoff Pow Module bereits möglich ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # aus dem mosquitto Repo installieren:&lt;br /&gt;
 wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key&lt;br /&gt;
 sudo apt-key add mosquitto-repo.gpg.key&lt;br /&gt;
 cd /etc/apt/sources.list.d/&lt;br /&gt;
 sudo wget http://repo.mosquitto.org/debian/mosquitto-wheezy.list&lt;br /&gt;
 # oder für jessie&lt;br /&gt;
 sudo wget http://repo.mosquitto.org/debian/mosquitto-jessie.list&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 # mosquitto installieren, sowie client Befehl mosquito_sub (gehört nicht zum Server, wird aber weiter unten benötigt)&lt;br /&gt;
 sudo apt-get install mosquitto mosquitto-clients&lt;br /&gt;
 &lt;br /&gt;
 # MQTT Server Test&lt;br /&gt;
 sudo service mosquitto status&lt;br /&gt;
&lt;br /&gt;
 # Start / Stop des Servers&lt;br /&gt;
 sudo service mosquitto stop&lt;br /&gt;
 sudo service mosquitto start&lt;br /&gt;
 &lt;br /&gt;
 # Perl Version ausgeben&lt;br /&gt;
 perl -v&lt;br /&gt;
 # Perl MQTT Module nachinstallieren (läuft ein paar Minuten)&lt;br /&gt;
 sudo cpan install Net::MQTT:Simple&lt;br /&gt;
 sudo cpan install Net::MQTT:Constants&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Software Arends Sketch===&lt;br /&gt;
[[Datei:sonoff_sw_22.jpg|thumb|left|alt=Arends Menü]]&lt;br /&gt;
&lt;br /&gt;
Ebenso bietet sich die Möglichkeit eine andere alternative Software auf den unterschiedlichen Sonoff Modellen aufzuspielen.&lt;br /&gt;
Speziell für diese Module zugeschnittene Software stammt vom Autor Theo Arends. Alle hier gezeigten Bildschirmfotos und Beispiele beziehen sich auf Basis der Version Tasmota (Stand 22.02.2017).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Links zu Theo Arend Github&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/arendst/Sonoff-Tasmota.git Donwload Tasmota]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/arendst/Sonoff-Tasmota Arends Tasmota Github]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; sollten Probleme mit dem ersten Login im Webinterface auftreten, hat der Autor vorgesorgt und mit speziellem wiederholten Tastendruck können verschiedene Modi aufgerufen werden: zB: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3 x Taste kurz drücken&#039;&#039;&#039; und eine Smartconfig wird gestartet und die &#039;&#039;&#039;SSID&#039;&#039;&#039; und das &#039;&#039;&#039;Passwort&#039;&#039;&#039; kann über diese [https://play.google.com/store/apps/details?id=com.cmmakerclub.iot.esptouch Android App] eingegeben werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4 x Taste kurz drücken&#039;&#039;&#039; und man bringt den Device in den &#039;&#039;&#039;Access Point Mode&#039;&#039;&#039; mit der IP-Adresse &#039;&#039;&#039;192.168.4.1&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bis zu 7 verschiedene Modi sind möglich, mehr dazu in Arends Wiki.&lt;br /&gt;
&lt;br /&gt;
[https://github.com/arendst/Sonoff-MQTT-OTA-Arduino/wiki/Button-usage Link zum Wiki Arends, Button]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_bv_01.jpg|thumb|left|alt=Arduino Boardverwalter]]&lt;br /&gt;
In der Arduino IDE unter Datei / Voreinstellungen im Feld &amp;quot;Zusätzliche Boardverwalter-URLs:&amp;quot; den Link: http://arduino.esp8266.com/stable/package_esp8266com_index.json einfügen. &lt;br /&gt;
&lt;br /&gt;
Dann unter &#039;&#039;&#039;Werkzeuge / Board / Boardverwalter&#039;&#039;&#039; ganz am Ende der Liste die Librarys für &amp;quot;esp8266 by ESP8266 Community&amp;quot; die letzte Version zu installieren. [https://forum.fhem.de/index.php/topic,46205.msg534707.html#msg534707 Link zum Board].&lt;br /&gt;
Im Tasmota Verzeichnis \lib werden auch die zum kompilieren benötigten Librarys zur Verfügung gestellt.&lt;br /&gt;
&lt;br /&gt;
Das gesamte Sonoff Verzeichnis aus [https://github.com/arendst/Sonoff-Tasmota/archive/master.zip Arendts Sketch] entpacken (ist wie hier verlinkt ein Zipfile) und dann aus diesem Verzeichnis die sonoff.ino öffnen. Es können dann alle zu dem Sketch zugehörigen Dateien angesehen/editiert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Anschließend sollte noch die Datei &#039;&#039;&#039;user_config.h&#039;&#039;&#039; (im Unterverzeichnis &amp;quot;sonoff&amp;quot;) editiert werden. Die Abschnitte          &lt;br /&gt;
&lt;br /&gt;
 // Wifi&lt;br /&gt;
 // Syslog&lt;br /&gt;
 // Ota&lt;br /&gt;
 // MQTT&lt;br /&gt;
&lt;br /&gt;
müssen mit der eigenen &amp;quot;&#039;&#039;&#039;Ip-Adresse-Server&#039;&#039;&#039;&amp;quot;, &amp;quot;&#039;&#039;&#039;SSID&#039;&#039;&#039;&amp;quot; und &amp;quot;&#039;&#039;&#039;password&#039;&#039;&#039;&amp;quot; angepasst werden, das erleichtert den ersten Connect mit dem Modul. Seit der Version 2.1.2 können die WIFI Einstellungen 2-fach angegeben werden, somit wechselt das Device automatisch auf den 2. Wifi Hotspot wenn der erste nicht erreicht wird.&lt;br /&gt;
&lt;br /&gt;
 #define STA_SSID               &amp;quot;SSID&amp;quot;      // Wifi SSID&lt;br /&gt;
 #define STA_PASS               &amp;quot;password&amp;quot;  // Wifi password&lt;br /&gt;
 #define WIFI_HOSTNAME          &amp;quot;%s-%04d&amp;quot;         // Expands to &amp;lt;MQTT_TOPIC&amp;gt;-&amp;lt;last 4 decimal chars of MAC address&amp;gt;&lt;br /&gt;
 #define WIFI_CONFIG_TOOL       WIFI_WPSCONFIG    // Default tool if wifi fails to connect (WIFI_SMARTCONFIG, WIFI_MANAGER or WIFI_WPSCONFIG)&lt;br /&gt;
&lt;br /&gt;
 // Syslog&lt;br /&gt;
 #define SYS_LOG_HOST           &amp;quot;Ip-Adresse-Server&amp;quot;&lt;br /&gt;
 #define SYS_LOG_PORT           514&lt;br /&gt;
 #define SYS_LOG_LEVEL          LOG_LEVEL_NONE&lt;br /&gt;
 #define SERIAL_LOG_LEVEL       LOG_LEVEL_INFO&lt;br /&gt;
 #define WEB_LOG_LEVEL          LOG_LEVEL_INFO&lt;br /&gt;
&lt;br /&gt;
 // Ota&lt;br /&gt;
 #if (ARDUINO &amp;gt;= 168)&lt;br /&gt;
  #define OTA_URL              &amp;quot;http://Ip-Adresse-Server:80/api/arduino/&amp;quot; PROJECT &amp;quot;.ino.bin&amp;quot;&lt;br /&gt;
 #else&lt;br /&gt;
  #define OTA_URL              &amp;quot;http://Ip-Adresse-Server:80/api/arduino/&amp;quot; PROJECT &amp;quot;.cpp.bin&amp;quot;&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
 // MQTT&lt;br /&gt;
 #define MQTT_HOST              &amp;quot;Ip-Adresse-Server&amp;quot;&lt;br /&gt;
 #define MQTT_PORT              1883&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wichtig:&#039;&#039;&#039; Im Userprofile des Arduino Kompilers (%userprofile%\Documents\Arduino\libraries\pubsubclient\src\PubSubClient.h) die Max Packet Size auf 400 erhöht werden!&lt;br /&gt;
&lt;br /&gt;
  #define MQTT_MAX_PACKET_SIZE 400&lt;br /&gt;
  #define MQTT_KEEPALIVE 120&lt;br /&gt;
Anpassung der max. Packet Size auf 400 und das Keepalive auf 120&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Anschluß wird der Sketch mit der Arduino IDE (getestet mit 1.6.12) compiliert und die Binary dann exportiert (Sketch / Kompilierte Binärdatei exportieren). Die erzeugte .bin Datei dann mit dem Tool &amp;quot;ESP8266Flasher.exe&amp;quot; flashen, so wie auch bei ESPEasy. Sehr gut funktioniert aud das Esptool. Wer nicht compilieren will, kann auch im Unterverzeichnis ./api/arduino/ die fertige Binary ( sonoff.ino ) benutzen, aber dann ohne Voreinstellung der lokalen IPs.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===MQTT testen===&lt;br /&gt;
[[Datei:sonoff_sw_20.jpg|thumb|left|alt=Arends Menü]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nach erfolgtem Flash des Modules kann das Webinterface des Moduls zum ersten Mal aufgerufen werden (im Router nach der IP des Moduls suchen).&lt;br /&gt;
&lt;br /&gt;
Es bieten sich hier mehrere Möglichkeiten die die weitere Einrichtung des Moduls unterstützen. Einfach die Menüpunkte durchprobieren, sie erklären sich von selbst. Für erste Tests empfiehlt sich die lokale Konsole um die Ereignisse aus Sicht des Modules mit verfolgen zu können. Alles was hier gesendet wird, sollte ebenfalls am Server mitgeloggt werden können. Wenn bis hierher alles funktioniert, kann dann mir der Konfiguration in FHEM beginnen.&lt;br /&gt;
&lt;br /&gt;
Der Name des Moduls kann unter &amp;quot;Configuration&amp;quot; -&amp;gt; &amp;quot;Configure MQTT&amp;quot; -&amp;gt; &amp;quot;Topic (sonoff)&amp;quot; nachgeschaut und geändert werden. In FHEM wird beim definieren des Moduls dieser Name in den subscribeReadings bzw. publishSets eingegeben um die Verbindung zum Modul herzustellen.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Am Server jetzt eine Konsole öffnen und folgende Topic (alle) einstellen.&lt;br /&gt;
&lt;br /&gt;
 mosquitto_sub -d -v -t \# &lt;br /&gt;
Mit dieser Einstellung werden alle Topics geloggt! &lt;br /&gt;
&lt;br /&gt;
 pi@raspberry ~ $ mosquitto_sub -d -v -t \#&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff_dht/DHT/TEMPERATURE&#039;, ... (6 bytes))&lt;br /&gt;
 tele/sonoff_dht/DHT/TEMPERATURE 21.8 C&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff_dht/DHT/HUMIDITY&#039;, ... (6 bytes))&lt;br /&gt;
 tele/sonoff_dht/DHT/HUMIDITY 41.7 %&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff_dht/TIME&#039;, ... (19 bytes))&lt;br /&gt;
 tele/sonoff_dht/TIME 2017-02-22T16:05:43&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow3/STATE&#039;, ... (104 bytes))&lt;br /&gt;
 tele/sonoffpow3/STATE {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:05:44&amp;quot;, &amp;quot;Uptime&amp;quot;:100, &amp;quot;LIGHT&amp;quot;:&amp;quot;ON&amp;quot;, &amp;quot;Wifi&amp;quot;:{&amp;quot;AP&amp;quot;:2, &amp;quot;SSID&amp;quot;:&amp;quot;Pergola&amp;quot;, &amp;quot;RSSI&amp;quot;:96}}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow3/ENERGY&#039;, ... (134 bytes))&lt;br /&gt;
 tele/sonoffpow3/ENERGY {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:05:44&amp;quot;, &amp;quot;Yesterday&amp;quot;:0.083, &amp;quot;Today&amp;quot;:0.055, &amp;quot;Period&amp;quot;:0, &amp;quot;Power&amp;quot;:0, &amp;quot;Factor&amp;quot;:0.00, &amp;quot;Voltage&amp;quot;:229, &amp;quot;Current&amp;quot;:0.000}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;stat/TestSwitch/RESULT&#039;, ... (14 bytes))&lt;br /&gt;
 stat/TestSwitch/RESULT {&amp;quot;POWER&amp;quot;:&amp;quot;ON&amp;quot;}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;stat/TestSwitch/POWER&#039;, ... (2 bytes))&lt;br /&gt;
 stat/TestSwitch/POWER ON&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow3/STATE&#039;, ... (104 bytes))&lt;br /&gt;
 tele/sonoffpow3/STATE {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:07:14&amp;quot;, &amp;quot;Uptime&amp;quot;:100, &amp;quot;LIGHT&amp;quot;:&amp;quot;ON&amp;quot;, &amp;quot;Wifi&amp;quot;:{&amp;quot;AP&amp;quot;:2, &amp;quot;SSID&amp;quot;:&amp;quot;Pergola&amp;quot;, &amp;quot;RSSI&amp;quot;:96}}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow3/ENERGY&#039;, ... (134 bytes))&lt;br /&gt;
 tele/sonoffpow3/ENERGY {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:07:14&amp;quot;, &amp;quot;Yesterday&amp;quot;:0.083, &amp;quot;Today&amp;quot;:0.055, &amp;quot;Period&amp;quot;:0, &amp;quot;Power&amp;quot;:3, &amp;quot;Factor&amp;quot;:0.20, &amp;quot;Voltage&amp;quot;:227, &amp;quot;Current&amp;quot;:0.072}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;stat/TestSwitch/RESULT&#039;, ... (15 bytes))&lt;br /&gt;
 stat/TestSwitch/RESULT {&amp;quot;POWER&amp;quot;:&amp;quot;OFF&amp;quot;}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;stat/TestSwitch/POWER&#039;, ... (3 bytes))&lt;br /&gt;
 stat/TestSwitch/POWER OFF&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Interessant sind für uns nun diese Einträge &amp;quot;stat/TestSwitch/POWER ON&amp;quot; , dazu am Taster des Sonoff manuell umschalten. Dies entspricht genau der Syntax wie sie im Anschluss in FHEM dann zu verwenden ist.&lt;br /&gt;
&lt;br /&gt;
Mit diesen Einstellungen können dann entweder nach Telemetriedaten oder nach Statusmeldungen gefiltert werden. Dies ist jedoch nur notwendig wenn bereits andere MQTT Devices am Broker hängen und es sonst zu unübersichtlich wird.&lt;br /&gt;
 mosquitto_sub -h localhost -t tele/sonoff/#    = Telemetriedaten&lt;br /&gt;
 mosquitto_sub -h localhost -t stat/sonoff/#    = Statusmeldungen&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_21.jpg|thumb|left|alt=Arends Log]]&lt;br /&gt;
Sehr nützlich das lokale Log zur Fehlersuche und Inbetriebnahme.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==MQTT in FHEM einrichten==&lt;br /&gt;
[[Datei:sonoff_sw_24.jpg|thumb|left|alt=FHEM sonoff Schalter]]&lt;br /&gt;
Dieser einfache Schalter kommuniziert bidirektional mit dem sonoff Device.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_25.jpg|thumb|left|alt=FHEM sonoff Schalter]]&lt;br /&gt;
Die Readings in diesem verwendeten Beispiel zeigen sich wie in FHEM gewohnt.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Einrichtung in FHEM wird von den Modulen 00_MQTT.pm, 10_MQTT_BRIDGE und 10_MQTT_DEVICE.pm unterstützt.&lt;br /&gt;
Ebenso wird das Modul 98_expandJSON.pm benötigt um den [https://forum.fhem.de/index.php/topic,66761.0.html JSON String zu filtern].&lt;br /&gt;
&lt;br /&gt;
[https://forum.fhem.de/index.php?topic=27532.0 Link zum Forum: MQTT FHEM Einrichtung]&lt;br /&gt;
&lt;br /&gt;
 ### 1. Broker anlegen ###&lt;br /&gt;
 define myBroker MQTT 10.0.0.5:1883&lt;br /&gt;
&lt;br /&gt;
 ### 2. FHEM Device mit MQTT verbinden ###&lt;br /&gt;
 define Sonoff_Switch MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Switch IODev myBroker&lt;br /&gt;
 attr Sonoff_Switch devStateIcon ON:rc_GREEN:OFF OFF:rc_RED:ON&lt;br /&gt;
 attr Sonoff_Switch icon hue_filled_br30&lt;br /&gt;
 attr Sonoff_Switch publishSet ON OFF cmnd/TestSwitch/POWER/set&lt;br /&gt;
 attr Sonoff_Switch room MQTT&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_Licht stat/Sonoff_Switch/POWER&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_Sensor tele/Sonoff_Switch/SENSOR&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_Status stat/Sonoff_Switch/STATUS&lt;br /&gt;
 attr Sonoff_Switch webCmd ON:OFF&lt;br /&gt;
Der hier dargestellte Beispielcode realisiert die Kommunikation zwischen FHEM und dem sonoff Modul via MQTT Broker. Zu beachten ist hier, dass &#039;&#039;&#039;subscribeReading_Licht&#039;&#039;&#039; und &#039;&#039;&#039;subscribeReading_state&#039;&#039;&#039; unterschiedliche Syntax des Topic Strings haben!&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff POW einrichten==&lt;br /&gt;
[[Datei:sonoff_sw_31.jpg|thumb|left|alt=Sonoff POW]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier geht es ausschließlich um das Modul Sonoff POW!}}&lt;br /&gt;
Das Modul kommt in gewohnter Itead Qualität und eine derart kostengünstige Energiemessung wird bei Smart Home Anwendern gerne eingesetzt. Die Originalsoftware habe ich nicht einmal getestet, da damit eine Anbindung an FHEM leider nicht möglich ist.&lt;br /&gt;
&lt;br /&gt;
Ebenso möchte kaum jemand an eine nicht dokumentierte chinesische Cloud die Steuerbefehle seiner Schalter senden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_sw_33.jpg|thumb|left|alt=Sonoff POW]]&lt;br /&gt;
Bitte auf keinen Fall das Modul während der Arbeiten an die Netzspannung anschießen. Zum Flashen genügt (und nur diese) die Versorgungspannung des USB-TTL Konverters. Wie auf dem Foto gut erkennbar, wurde dieses Modul ohne einlöten einer Pfostensteckerleiste geflasht. Die Steckverbindung wird einfach in die Lötaugen gesteckt und mit einem Gummiring fixiert, da ja spätere Flashvorgänge im Webif des Models funktionieren und so die Arbeit eingespart werden kann. Es steht jedoch nichts im Wege die Pfostensteckerleiste einzulöten.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Die Anschlüsse am Modul sind wie folgt belegt.&lt;br /&gt;
 o GND&lt;br /&gt;
 o TxD&lt;br /&gt;
 o RxD&lt;br /&gt;
 o VDD&lt;br /&gt;
&lt;br /&gt;
Für den Flashvorgang gelten die selben Regeln wie schon beim sonoff Switch oben erwähnt (3,3V!).&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Sonoff POW Software===&lt;br /&gt;
[[Datei:sonoff_sw_35.jpg|thumb|left|alt=Sonoff POW FHEM]]&lt;br /&gt;
Als Software steht im Augenblick nur der Sketch von Arends zur Verfügung, liefert aber alles was das Herz begehrt und ist ist einfach zu handhaben. Hier eine eine einfache Darstellung mit der aktuellen Leistung und dem Tagesverbrauch. Zusätzlich besteht auch noch die Möglichkeit den angeschlossenen Verbraucher Ein- oder Auszuschalten. &lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_pow_02.jpg|thumb|left|alt=Sonoff POW Webif]]&lt;br /&gt;
Seit Version 2.0.19a ist auch die Leistungsanzeige im WEBIF wie im Bild links integriert. Auch der Energieverbrauch des Vortages wird mit angezeigt. Alle hier angezeigten Daten werden auch zyklisch im MQTT String an FHEM übergeben.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich kann im Sketch auch das Feature &amp;quot;&#039;&#039;&#039;Power_Limit&#039;&#039;&#039;&amp;quot; aktiviert werden. Mit dem Power_Limit wird eine zusätzliche Nachricht erzeugt, wenn ein bestimmter einstellbarer Grenzwert über- oder unterschritten wird. &lt;br /&gt;
&lt;br /&gt;
Es lassen sich dadurch Meldungen wie &amp;quot;Waschmaschine fertig&amp;quot; oder ähnliches ohne weitere Schwellwert Überwachungen in FHEM ableiten. Die Meldungen kommen in MQTT mit &amp;quot;&#039;&#039;&#039;POWER_LOW ON&#039;&#039;&#039;&amp;quot; bzw. &amp;quot;&#039;&#039;&#039;POWER_LOW OFF&#039;&#039;&#039;&amp;quot;.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei erstmaligen Start des Modules muss der Typ des Modules von &amp;quot;SONOFF&amp;quot; auf &amp;quot;&#039;&#039;&#039;SONOFF_Pow&#039;&#039;&#039;&amp;quot; geändert werden, damit die Software weiß mit welchem Modul es zu tun hat und kann dann die entsprechenden Berechnungen durchführen. Die Leistungsdaten kommen ja in Form einer Frequenz aus dem Baustein und müssen im Sketch (xsns_hlw8102.ino) umgerechnet werden.&lt;br /&gt;
                                            &lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_sw_36.jpg|thumb|left|alt=Sonoff POW Attribute]]&lt;br /&gt;
Dieses Bild zeigt die Attribute die vom Modul via MQTT an FHEM geliefert werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
aktuell gelieferter JSON String vom Sketch der alle Messdaten beinhaltet.&lt;br /&gt;
 {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:38:47&amp;quot;, &amp;quot;Yesterday&amp;quot;:&amp;quot;2.286&amp;quot;, &amp;quot;Today&amp;quot;:&amp;quot;1.593&amp;quot;, &amp;quot;Period&amp;quot;:9, &amp;quot;Power&amp;quot;:231, &amp;quot;Factor&amp;quot;:&amp;quot;1.00&amp;quot;, &amp;quot;Voltage&amp;quot;:231, &amp;quot;Current&amp;quot;:&amp;quot;0.866&amp;quot;}&lt;br /&gt;
und hier das zugehörige Reading.&lt;br /&gt;
 tele/sonoffpow/ENERGY    &lt;br /&gt;
       &lt;br /&gt;
&lt;br /&gt;
Hier ein Mittschnitt des Datenverkehrs zum Broker zwecks Kontrolle der korrekten Funktion der Module und der Software.&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/STATE&#039;, ... (103 bytes))&lt;br /&gt;
 tele/sonoffpow/STATE {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:39:15&amp;quot;, &amp;quot;Uptime&amp;quot;:79, &amp;quot;LIGHT&amp;quot;:&amp;quot;OFF&amp;quot;, &amp;quot;Wifi&amp;quot;:{&amp;quot;AP&amp;quot;:2, &amp;quot;SSID&amp;quot;:&amp;quot;Liwest&amp;quot;, &amp;quot;RSSI&amp;quot;:54}}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/ENERGY&#039;, ... (140 bytes))&lt;br /&gt;
 tele/sonoffpow/ENERGY {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:39:15&amp;quot;, &amp;quot;Yesterday&amp;quot;:&amp;quot;1.391&amp;quot;, &amp;quot;Today&amp;quot;:&amp;quot;1.191&amp;quot;, &amp;quot;Period&amp;quot;:0, &amp;quot;Power&amp;quot;:0, &amp;quot;Factor&amp;quot;:&amp;quot;0.00&amp;quot;, &amp;quot;Voltage&amp;quot;:0, &amp;quot;Current&amp;quot;:&amp;quot;0.000&amp;quot;}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff_wall1/STATE&#039;, ... (105 bytes))&lt;br /&gt;
 tele/sonoff_wall1/STATE {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:39:15&amp;quot;, &amp;quot;Uptime&amp;quot;:96, &amp;quot;POWER&amp;quot;:&amp;quot;OFF&amp;quot;, &amp;quot;Wifi&amp;quot;:{&amp;quot;AP&amp;quot;:2, &amp;quot;SSID&amp;quot;:&amp;quot;Pergola&amp;quot;, &amp;quot;RSSI&amp;quot;:100}}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow3/STATE&#039;, ... (104 bytes))&lt;br /&gt;
 tele/sonoffpow3/STATE {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:39:20&amp;quot;, &amp;quot;Uptime&amp;quot;:100, &amp;quot;LIGHT&amp;quot;:&amp;quot;ON&amp;quot;, &amp;quot;Wifi&amp;quot;:{&amp;quot;AP&amp;quot;:2, &amp;quot;SSID&amp;quot;:&amp;quot;Pergola&amp;quot;, &amp;quot;RSSI&amp;quot;:96}}&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow3/ENERGY&#039;, ... (134 bytes))&lt;br /&gt;
 tele/sonoffpow3/ENERGY {&amp;quot;Time&amp;quot;:&amp;quot;2017-02-22T16:39:20&amp;quot;, &amp;quot;Yesterday&amp;quot;:0.083, &amp;quot;Today&amp;quot;:0.057, &amp;quot;Period&amp;quot;:0, &amp;quot;Power&amp;quot;:0, &amp;quot;Factor&amp;quot;:0.00, &amp;quot;Voltage&amp;quot;:230, &amp;quot;Current&amp;quot;:0.000}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Einstellungen können mit folgender Syntax angefordert werden (zwei Terminalfenster öffnen, eines zum protokollieren und eines zum Seden der Befehle).&lt;br /&gt;
 mosquitto_sub -d -v -t \#  MQTT Datenverkehr protokolieren&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/status/set -m &amp;quot;8&amp;quot;      = SonoffPOW Status jetzt auslesen&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/TelePeriod/set -m &amp;quot;60&amp;quot; = Timer setzen, alle 60 Sekunden Daten senden &lt;br /&gt;
Die Kommandos können direkt am Broker (Terminalfenster Putty etc.) abgesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sonoff POW Kalibrieren ===&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier wird beschrieben, wie der &#039;&#039;Sonoff POW kalibriert&#039;&#039; werden kann. }}&lt;br /&gt;
Ab Version 2.0.11 kann nun auch der POW kalibriert werden.&lt;br /&gt;
Dazu kann man 2 Konsolenfenster öffnen, im ersten aktiviert man das Protokoll für den Datenverkehr&lt;br /&gt;
 mosquitto_sub -d -v -t \#  MQTT Datenverkehr protokollieren&lt;br /&gt;
&lt;br /&gt;
Dann kann mit folgenden Befehlen die HLW Referenz Pulsfrequenz gesetzt werden.&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/HLWUCAL/set -m &amp;quot;2100&amp;quot;     default = 1950&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/HLWICAL/set -m &amp;quot;2450&amp;quot;     default = 3500&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/HLWPCAL/set -m &amp;quot;13500&amp;quot;    default = 12345 &lt;br /&gt;
Entweder man hat eine definierte Last zur Verfügung oder besser man misst mit einem Leistungsmesser nach. Die Spannung kann man mit einem Multimeter nachmessen (sollte 230 V sein) und der Strom wird errechnet (bei 100 Watt I = P / U ) = 100/230 = 0,4347.&lt;br /&gt;
Die Referenzwerte solange geringfügig ändern bis die Ausgabe passt. Für die Ausgabe wird einfach eine Statusabfrage durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/status/set -m &amp;quot;8&amp;quot;&lt;br /&gt;
Befehl für die Statusabfrage&lt;br /&gt;
&lt;br /&gt;
 cmnd/sonoffpow/status/set 8&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;stat/sonoffpow/STATUS&#039;, ... (103 bytes))&lt;br /&gt;
 stat/sonoffpow/STATUS PWR: Voltage 225 V, Current 0.427 A, Current Power 98 W, Total Power Today 0.080 kWh, Power Factor 1.00&lt;br /&gt;
Ergebnis der Statusabfrage mit Spannung, Strom und Leistung.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sonoff POW FHEM Anbindung===&lt;br /&gt;
Ein Beispiel einer einfachen Anbindung via JSON an FHEM. MQTT von Arends ist insofern notwendig, da in der Software ESPEasy und der Bridge noch keine Implementierung der Frequenzumrechnung enthalten ist.&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Pow MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Pow IODev myBroker&lt;br /&gt;
 attr Sonoff_Pow icon measure_power&lt;br /&gt;
 attr Sonoff_Pow publishSet ON OFF cmnd/sonoffpow/LIGHT/&lt;br /&gt;
 attr Sonoff_Pow stateFormat {sprintf(&amp;quot;aktuell: %.1f W Tag: %.2f Kw/h&amp;quot;, ReadingsVal($name,&amp;quot;Power&amp;quot;,undef), ReadingsVal($name,&amp;quot;Today&amp;quot;,undef))}&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_ENERGY tele/sonoffpow/ENERGY&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_LIGHT stat/sonoffpow/LIGHT&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_state cmnd/sonoffpow/LIGHT&lt;br /&gt;
 attr Sonoff_Pow webCmd ON:OFF&lt;br /&gt;
Zusätzlich kann hier noch das Relais mit &amp;quot;on&amp;quot; und &amp;quot;off&amp;quot; ein- ausgeschaltet werden.&lt;br /&gt;
&lt;br /&gt;
Ebenso notwendig ist das setzen der Regexp für den JSON Konverter.&lt;br /&gt;
 define ej3 expandJSON Sonoff.*:.*:.{.*}&lt;br /&gt;
hier wird alles was mit dem Namen Sonoff beginnt gefiltert und automatisch alle darin enthaltenen Readings erstellt.&lt;br /&gt;
&lt;br /&gt;
 define ej3 expandJSON Sonoff.*:ENERGY.*:.{.*} (Power|Yesterday|Today)&lt;br /&gt;
oder so, da werden nur die Readings Power, Yesterday und Today erstellt.&lt;br /&gt;
Somit ist auch kalr, das in FHEM auch JSON installiert sein muss. Ebenso können die verschiedenen Regexp im [https://github.com/ddtlabs/expandJSON Wiki] nachgelesen werden.&lt;br /&gt;
&lt;br /&gt;
[https://forum.fhem.de/index.php/topic,66761.15.html Link zum Diskussionsthread].&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Source Reading:&#039;&#039;&#039;&lt;br /&gt;
 device:reading:.{.*} &lt;br /&gt;
 .*WifiIOT.*:sensor.*:.{.*} &lt;br /&gt;
 sonoff_.*:.*:.{.*} &lt;br /&gt;
 dev.*:(sensor1|sensor2|teleme.*):.{.*} &lt;br /&gt;
 (dev.*|[Dd]evice.*):json:.{.*} &lt;br /&gt;
 (devX:jsonX:.{.*}|devY.*:jsonY:.{.*Wifi.*{.*SSID.*}.*}) &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Target Reading:&#039;&#039;&#039;&lt;br /&gt;
 .*power.* &lt;br /&gt;
 (Current|Voltage|Wifi.*)  &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Komplette Definition des Filters:&#039;&#039;&#039;&lt;br /&gt;
 define ej1 expandJSON device:sourceReading:.{.*} targetReading &lt;br /&gt;
 define ej3 expandJSON .*\.SEN\..*:.*:.{.*} &lt;br /&gt;
 define ej3 expandJSON sonoff_.*:sensor.*:.{.*} (power.*|current|voltage)&lt;br /&gt;
&lt;br /&gt;
===Sonoff POW Netz-Anschluß===&lt;br /&gt;
[[Datei:sonoff_sw_34.jpg|thumb|left|alt=Sonoff POW Netzanschluß]]&lt;br /&gt;
Erst wenn alle Arbeiten an der Hard- und Software abgeschlossen sind, kann man das Modul an die Netzspannung anschließen. Wer es sich einfach machen will, nimmt eine Industriell gefertigte 230 V Verlängerung  (zwischen 1,5 - 3 Meter) und schneidet sie in der Mitte durch. Nach dem abisolieren der flexiblen Drähte sollte diese &#039;&#039;&#039;verlötet oder mit Aderendhülsen&#039;&#039;&#039; versehen werden (müssen aber exakt passen, da hier kaum Platz in den Klemmen ist). &lt;br /&gt;
Mit einem kleinen Schraubendreher kann man die Feder der Klemmen niederdrücken und das verzinnte Drahtende tief ich die Öffnung stecken. Es dürfen keine Drahtlitzen aus den Öffnungen sichtbar sein, Kurzschlußgefahr! Ebenso sollte eine Zugprobe durchgeführt werden ob die Klemme auch richtig eingerastet ist.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ACHTUNG:&#039;&#039;&#039; diese Arbeiten müssen von einem ausgebildeten Fachpersonal (Elektriker) durchgeführt werden, Lebensgefahr!&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sonoff POW Design===&lt;br /&gt;
&lt;br /&gt;
====ReadingsGroup mit Schaltmöglichkeit====&lt;br /&gt;
[[Datei:sonoff_pow_03.jpg|thumb|left|alt=readingsGroup mit Schalter]]&lt;br /&gt;
Die ReadingsGroup kann auch gleich mit einem Schalter versehen werden um den POW Ein- oder Aus schalten zu können. Dazu ist aber eine andere Einstellung im Sketch erforderlich.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der &amp;quot;&#039;&#039;&#039;user_config.h&#039;&#039;&#039;&amp;quot; muss an dieser Stelle auch die &amp;quot;&#039;&#039;&#039;PUB_PREFIX&#039;&#039;&#039;&amp;quot; auf die gleiche Topic wie &amp;quot;PUB_PREFIX2&amp;quot; eingestellt werden. Durch diese Maßnahme wird erreicht, dass sofort nach dem Knopfdruck auch der Status mit der Topic &amp;quot;tele&amp;quot; übertragen wird. Würde der weiterhin mit &amp;quot;stat&amp;quot; übertragen, kann er in der Readingsgroup nur sehr umständlich weiter behandelt werden. Dadurch wird erreicht, dass der Schalter sofort nach dem Schaltvorgang und der Rückmeldung (Status) auch seine Farbe ändert. Wird dieser Eintrag vergessen, ändert der Schalter erst nach Eintreffen der nächsten zyklischen Abfrage seinen Status/Farbe.&lt;br /&gt;
&lt;br /&gt;
 #define SUB_PREFIX             &amp;quot;cmnd&amp;quot;       // Sonoff devices subscribe to:- SUB_PREFIX/MQTT_TOPIC and SUB_PREFIX/MQTT_GRPTOPIC&lt;br /&gt;
 #define PUB_PREFIX             &amp;quot;tele&amp;quot;       // Sonoff devices publish to:- PUB_PREFIX/MQTT_TOPIC&lt;br /&gt;
 #define PUB_PREFIX2            &amp;quot;tele&amp;quot;       // Sonoff devices publish telemetry data to:- PUB_PREFIX2/MQTT_TOPIC/UPTIME, POWER/LIGHT and TIME&lt;br /&gt;
hier die PUB_PREFIX mit der geänderten Topic &amp;quot;tele&amp;quot; anstatt &amp;quot;stat&amp;quot; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 define SonoffPows readingsGroup &amp;lt;%measure_power&amp;gt;,&amp;lt;aktuell&amp;gt;,&amp;lt;Tag&amp;gt;,&amp;lt;Gestern&amp;gt;,&amp;lt;Strom&amp;gt;,&amp;lt;Durchschnitt&amp;gt;,&amp;lt;max.P&amp;gt;,&amp;lt;Zyklus&amp;gt;,&amp;lt;Faktor&amp;gt;,&amp;lt;Status&amp;gt;,&amp;lt; hr &amp;gt; .*(Sonoff_Pow|Sonoff_Pow2|Sonoff_Pow3|Sonoff_Pow4):Power,Today,Yesterday,Current,Power_avg_day,Power_max_day,Period,Factor,LIGHT&lt;br /&gt;
 attr SonoffPows commands {&#039;LIGHT.ON&#039; =&amp;gt; &#039;set $DEVICE OFF&#039;,&#039;LIGHT.OFF&#039; =&amp;gt; &#039;set $DEVICE ON&#039;}&lt;br /&gt;
 attr SonoffPows mapping %ALIAS&lt;br /&gt;
 attr SonoffPows nameStyle style=&amp;quot;color:yellow&amp;quot;&lt;br /&gt;
 attr SonoffPows room Energie,MQTT&lt;br /&gt;
 attr SonoffPows valueFormat {&#039;Power&#039; =&amp;gt;&amp;quot;%.0f W&amp;quot;, &#039;Today&#039; =&amp;gt;&amp;quot;%.2f Kw&amp;quot;,&#039;Yesterday&#039; =&amp;gt;&amp;quot;%.2f Kw&amp;quot;, &#039;CURRENT&#039; =&amp;gt;&amp;quot;%.2f A&amp;quot;,&#039;Power_max_day&#039; =&amp;gt; &amp;quot;%.0f W&amp;quot;,&#039;Power_avg_day&#039; =&amp;gt; &amp;quot;%.2f W&amp;quot;,&#039;Power&#039;=&amp;gt;&amp;quot;%.0f W&amp;quot;,&#039;Factor&#039; =&amp;gt; &amp;quot;%.2f &amp;quot;}&lt;br /&gt;
 attr SonoffPows valueIcon {&#039;LIGHT.ON&#039; =&amp;gt; &#039;rc_GREEN@green&#039;, &#039;LIGHT.OFF&#039; =&amp;gt; &#039;rc_RED@red&#039;}&lt;br /&gt;
 attr SonoffPows valueStyle { if($READING eq &amp;quot;Power&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 0 &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Today&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 4.8){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Today&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 2.5){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Today&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 2.5 &amp;amp;&amp;amp; $VALUE &amp;lt; 4.8 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Yesterday&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 2.5){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Yesterday&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 2.5 &amp;amp;&amp;amp; $VALUE &amp;lt; 4.8 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Yesterday&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 4.8){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Current&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 0.45){&#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039;}elsif( $READING eq &amp;quot;Current&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 0.45 &amp;amp;&amp;amp; $VALUE &amp;lt; 0.87 ){&#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Current&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 0.87){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Period&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 10){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Period&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 10 &amp;amp;&amp;amp; $VALUE &amp;lt; 15 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Period&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 15){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039;}}&lt;br /&gt;
Dieses Beispiel ist für &#039;&#039;&#039;Tasmota mit JSON&#039;&#039;&#039; ausgelegt und benötigt ebenso wie oben die Erweiterung &amp;quot;average&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Pow_CURRENT_POWER average Sonoff_Pow:Power.*&lt;br /&gt;
damit werden der Durchschnitt und min max für Tasmota mit JSON erzeugt.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====POW mit FTUI anzeigen====&lt;br /&gt;
[[Datei:sonoff_pow_energy.JPG|thumb|left|alt=Tablett FTUI]]&lt;br /&gt;
Wer möchte kann die Energieanzeigen auch mit der [https://forum.fhem.de/index.php/topic,34233.0.html Tablett UI] für eine Tablet Ansicht gestalten. Mit dieser stehen viele Möglichkeiten zu einer attraktiven Darstellung zur Verfügung.&lt;br /&gt;
Hier ein Beispiel welches mit den Widget &amp;quot;[http://www.fhemwiki.de/wiki/FHEM_Tablet_UI#Widget_THERMOSTAT thermostat]&amp;quot; dargestellt ist.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Slampher Flashen==&lt;br /&gt;
[[Datei:sonoff_sl_53.jpg|thumb|left|alt=Sonoff SLAMPHER]]&lt;br /&gt;
Dieses Modul ist eine Besonderheit was das Flashen betrifft, denn mit Hilfe des Tasters kann der ESP8266 NICHT in den Flashmode gebracht werden. Der Taster ist intern anderwärtig verdrahtet und somit für diesen Zweck nicht zu gebrauchen.&lt;br /&gt;
&lt;br /&gt;
Wie hier links im Bild zu sehen ist, muss der rechte Pin des R20 (oben im Bild) während dem Einstecken des USB Steckers auf Masse gelegt werden. Die beste Möglichkeit ist ein Stücken Draht anzulöten und diesen dann beim einstecken auf den Masse Pin des USB-Konverters zu legen.&lt;br /&gt;
&lt;br /&gt;
Pinbelegung des Steckers von oben nach unten:&lt;br /&gt;
 o - GND&lt;br /&gt;
 o - TxD&lt;br /&gt;
 o - RxD&lt;br /&gt;
 &#039;&#039;&#039;o&#039;&#039;&#039; - Vdd&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sl_51.jpg|thumb|left|alt=Sonoff SLAMPHER R20]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier ist genau ersichtlich, wo der R20 auf der Platine platziert ist. }}&lt;br /&gt;
Hier nocheinmal schön zu sehen wo der R20 (der ist nicht eingelötet sondern leer) exakt auf der Platine liegt, gemeint ist der rechte Pin. Hier kann auch leicht gelötet werden, da keine empfindlichen Bauteile in der Nähe sind und auch genug Platz vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_sl_50.jpg|thumb|left|alt=Sonoff SLAMPHER R20]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier ist genau ersichtlich, wo der Draht am R20 aufgelötet wurde }}&lt;br /&gt;
Hier ist ein kleines Stück Schaltdraht auf den Pin bereist aufgelötet und bereit zum Flashen!&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel wurde keine Pfostensteckerleiste auf die Platine aufgelötet, sondern nur durchgesteckt und mit einem Gummiring  zum Relais fixiert, das erspart den Lötvorgang, weil in Zukunft dann ohnehin OTA geflasht werden kann.&lt;br /&gt;
&lt;br /&gt;
Also Pin20 auf Masse legen und USB-Konverter an den PC einstecken, dann den Draht von der Masse entfernen. Der ESP8266 sollte jetzt im Flashmodus bereit stehen und kann wie bereits oben beschrieben geflasht werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sonoff Slampher Software===&lt;br /&gt;
[[Datei:sonoff_sl_54.jpg|thumb|left|alt=Sonoff SLAMPHER FHEM]]&lt;br /&gt;
&lt;br /&gt;
Als Software wird Arends Sketch installiert (Kommunikation über MQTT), da zum derzeitigen Zeitpunkt ESPEasy das Modul noch nicht integriert hat und somit auch nicht ansteuern kann.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_SL MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_SL IODev myBroker&lt;br /&gt;
 attr Sonoff_SL devStateIcon ON:rc_GREEN:OFF OFF:rc_RED:ON&lt;br /&gt;
 attr Sonoff_SL icon hue_filled_br30&lt;br /&gt;
 attr Sonoff_SL publishSet ON OFF cmnd/sonoffsl/POWER/set&lt;br /&gt;
 attr Sonoff_SL room Bewegung,_Sonoff&lt;br /&gt;
 attr Sonoff_SL stateFormat Licht&lt;br /&gt;
 attr Sonoff_SL subscribeReading_Licht tele/sonoffsl/POWER&lt;br /&gt;
 attr Sonoff_SL subscribeReading_state cmnd/sonoffsl/POWER/set&lt;br /&gt;
 attr Sonoff_SL webCmd ON:OFF&lt;br /&gt;
&lt;br /&gt;
Hier ein Beispiel wie in FHEM der Slampher eingebunden werden kann. In diesem Beispiel wird davon ausgegangen, das im Modul die Topic &amp;quot;sonoffsl&amp;quot; benannt wurde. Wer einen anderen Namen haben möchte, muss dies dann auch in FHEM entsprechend anpassen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Th10/16 FHEM==&lt;br /&gt;
[[Datei:sonoff_th_01.jpg|thumb|left|alt=Sonoff TH10]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Temperatur Modul TH10 / 16! }}&lt;br /&gt;
Das Modul kann durch drücken des Tasters während dem Einstecken des USB-Konverters in den Flashmodus gebracht werden.&lt;br /&gt;
Der Th10/16 kann mit zwei unterschiedlichen Typen von Sensoren bestückt werden, hier im Beispiel mit dem externen Temperaturfühler DS18B20.&lt;br /&gt;
&lt;br /&gt;
Wie im Bild klar zu sehen ist, kann das Webif auch zur Darstellung via Mobile verwendet werden. Mit &amp;quot;Toggle&amp;quot; wird Ein- oder Aus geschaltet und  darunter ist die aktuelle Temperatur ersichtlich. Für diese Ansicht muss keine MQTT Verbindung eingerichtet werden, da die Kommunikation hier rein über HTTP erfolgt.&lt;br /&gt;
&lt;br /&gt;
Die unten dargestellten Beispiele für FHEM beziehen sich auf Arends Sketch, also über MQTT. Dieses Modul kann aber genauso leicht über ESPEasy und der ESPEasy-Bridge eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Pinbelegung des Steckers von oben nach unten:&lt;br /&gt;
 o - GND&lt;br /&gt;
 o - TxD&lt;br /&gt;
 o - RxD&lt;br /&gt;
 &#039;&#039;&#039;o&#039;&#039;&#039; - Vdd&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_th_02.jpg|thumb|left|alt=Sonoff TH10]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Einbindung in FHEM via MQTT! }}&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ### Temperatur und Luftfeuchte vom Sonoff Switch ###&lt;br /&gt;
 define Sonoff_Temp MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Temp IODev myBroker&lt;br /&gt;
 attr Sonoff_Temp alias Pool Wasser&lt;br /&gt;
 attr Sonoff_Temp eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_Temp icon temperature_humidity&lt;br /&gt;
 attr Sonoff_Temp publishSet ON OFF cmnd/sonoffth/POWER/set&lt;br /&gt;
 attr Sonoff_Temp room _Sonoff&lt;br /&gt;
 attr Sonoff_Temp stateFormat {sprintf(&amp;quot;Temperatur: %.1f Grad&amp;quot;, ReadingsVal($name,&amp;quot;temperature&amp;quot;,0))}&lt;br /&gt;
 attr Sonoff_Temp subscribeReading_SENSOR tele/sonoffth/SENSOR&lt;br /&gt;
 attr Sonoff_Temp subscribeReading_state cmnd/sonoffth/POWER/set&lt;br /&gt;
Beispiel für FHEM mit Temperaturanzeige mit DS18B20&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Switch MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Switch IODev myBroker&lt;br /&gt;
 attr Sonoff_Switch alias Pool Licht&lt;br /&gt;
 attr Sonoff_Switch devStateIcon on:rc_GREEN:off off:rc_RED:on&lt;br /&gt;
 attr Sonoff_Switch eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_Switch icon light_ceiling&lt;br /&gt;
 attr Sonoff_Switch publishSet ON OFF cmnd/sonoffth/POWER/set&lt;br /&gt;
 attr Sonoff_Switch room _Sonoff&lt;br /&gt;
 attr Sonoff_Switch stateFormat Licht&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_Licht tele/sonoffth/POWER&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_state cmnd/sonoffth/POWER/set&lt;br /&gt;
 attr Sonoff_Switch webCmd ON:OFF&lt;br /&gt;
Der Schalter nochmals seperat dargestellt, je nach Geschmack.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff 4CH 4-Kanal Schaltmodul==&lt;br /&gt;
[[Datei:sonoff_ch4_1.jpg|thumb|left|alt=Sonoff CH4]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Achtung andere Einstellungen der Arduino IDE: Select Board &amp;quot;Generic ESP8285 Module&amp;quot; (=Flash Mode &amp;quot;DOUT&amp;quot;) and Flash Size &amp;quot;1M (64K SPIFFS)&amp;quot;n! }}&lt;br /&gt;
&lt;br /&gt;
Der Sonoff 4CH ist mit seinen 4 Kanälen ein sehr preiswertes Modul im Gehäuse und für Hutschinenmontage. Anstatt des üblichen ESP8266 besitzt dieses Modul schon den moderneren &#039;&#039;&#039;ESP8285&#039;&#039;&#039;. Es müssen daher in der Arduino IDE andere Einstellungen vorgenommen werden. Unter Board wird hier das &amp;quot;&#039;&#039;&#039;Generic 8285 Module&#039;&#039;&#039;&amp;quot; mit &#039;&#039;&#039;1M und 64K Spiffs&#039;&#039;&#039; angewählt. Der Flashmode &amp;quot;&#039;&#039;&#039;DOUT&#039;&#039;&#039;&amp;quot; wird dann automatisch eingestellt, bzw. ausgeblendet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Es ist daher unbedingt notwendig den Sketch mit den geänderten Einstellungen selbst zu kompilieren, ansonsten stürzt das Modul nach Auswahl des Typs ab  und wird nicht mehr rebooten können!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das Modul ist etwas größer als die anderen Sonoff Produkte und besitzt mit 14,5 x 9 cm schon beachtliche Einbau Maße.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_ch4_2.jpg|thumb|left|alt=Sonoff 4CH FDTI]]&lt;br /&gt;
Als weitere Besonderheit sei hier erwähnt, das die Signale &#039;&#039;&#039;RxD auf RxD und TxD auf TxD&#039;&#039;&#039; des FTDI Konverters zu verbinden sind. Wie bei allen Sonoff Modulen darf man &#039;&#039;&#039;zum flashen keine Netzspannung anschließen&#039;&#039;&#039;, sondern nur über die Versorgungsspannung des FDTI Konverters mit 3,3 V versorgen (Jumper richtig setzen). Die Stiftleiste für den FTDI Anschluß ist hier schon eingelötet.&lt;br /&gt;
&lt;br /&gt;
In den Flashmodus gelangt man durch drücken der &#039;&#039;&#039;Taste FW/IO0&#039;&#039;&#039; während des einstecken des USB Anschlusses.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_ch4_3.jpg|thumb|left|alt=Sonoff 4CH Arends]]&lt;br /&gt;
Hier die Ansicht des Webinterface des Arends Sketches!&lt;br /&gt;
Bei der Software sei erwähnt, das die getestete Version 3.1.16 nur bei Kanal 1 den Modus &amp;quot;PulseTime&amp;quot; beherrscht. Wer also gepulste Ausgänge (zB: elektrische Garage/Toröffner) benötigt muss diese per Software nachbilden oder mit dem Kanal 1 auskommen. Eine &amp;quot;Pulsetime 10&amp;quot; ist ein guter Wert dafür (etwa 1 Sekunde). &lt;br /&gt;
&lt;br /&gt;
Als Alternative kann mit dieser HTML Seite des Webservers am Modul des CH4 schon mit jedem Browser fähigem Handy (Android, iPhone, Windows) aufgerufen werden und somit alle Funktionen gesteuert werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_ch4_4.jpg|thumb|left|alt=Sonoff CH4 Software APP]]&lt;br /&gt;
Hier dargestellt die Original Software die Sonoff zum Modul liefert (EWeLink) und über ihre Cloud verbindet. Leider kann hier keine gepulste Ausgabe erfolgen. Mit einem Countdown kann zwar der Ausgang wieder abgeschaltet werden, die kleinste Zeiteinheit ist aber 1 Minute und somit für einen Impuls leider nicht zu gebrauchen. Ebenso kann mit dieser Software keine Einbindung in FHEM erfolgen, obwohl es eine nette anschauliche Darstellung ist.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sonoff 4CH 4-Kanal Anbindung FHEM===&lt;br /&gt;
Beispiel zur Anbindung in FHEM für den 4CH, hier werden einfach 4 einzelne Schalter definiert!&lt;br /&gt;
 define Sonoff_ch1 MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_ch1 IODev myBroker&lt;br /&gt;
 attr Sonoff_ch1 alias Sonoff CH1&lt;br /&gt;
 attr Sonoff_ch1 devStateIcon on:rc_GREEN:off off:rc_RED:on&lt;br /&gt;
 attr Sonoff_ch1 eventMap ON:on OFF:off ON:Ein OFF:Aus&lt;br /&gt;
 attr Sonoff_ch1 group Toröffner&lt;br /&gt;
 attr Sonoff_ch1 icon light_ceiling&lt;br /&gt;
 attr Sonoff_ch1 publishSet ON OFF cmnd/sonoffch4/POWER1/set&lt;br /&gt;
 attr Sonoff_ch1 stateFormat Power&lt;br /&gt;
 attr Sonoff_ch1 subscribeReading_Power tele/sonoffch4/POWER1&lt;br /&gt;
 attr Sonoff_ch1 subscribeReading_state cmnd/sonoffch4/POWER1/set&lt;br /&gt;
 attr Sonoff_ch1 webCmd Ein:Aus&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_ch2 MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_ch2 IODev myBroker&lt;br /&gt;
 attr Sonoff_ch2 alias Sonoff CH2&lt;br /&gt;
 attr Sonoff_ch2 devStateIcon on:rc_GREEN:off off:rc_RED:on&lt;br /&gt;
 attr Sonoff_ch2 eventMap ON:on OFF:off ON:Ein OFF:Aus&lt;br /&gt;
 attr Sonoff_ch2 group Toröffner&lt;br /&gt;
 attr Sonoff_ch2 icon light_ceiling&lt;br /&gt;
 attr Sonoff_ch2 publishSet ON OFF cmnd/sonoffch4/POWER2/set&lt;br /&gt;
 attr Sonoff_ch2 stateFormat Power&lt;br /&gt;
 attr Sonoff_ch2 subscribeReading_Power tele/sonoffch4/POWER2&lt;br /&gt;
 attr Sonoff_ch2 subscribeReading_state cmnd/sonoffch4/POWER2/set&lt;br /&gt;
 attr Sonoff_ch2 webCmd Ein:Aus&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_ch3 MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_ch3 IODev myBroker&lt;br /&gt;
 attr Sonoff_ch3 alias Sonoff CH3&lt;br /&gt;
 attr Sonoff_ch3 devStateIcon on:rc_GREEN:off off:rc_RED:on&lt;br /&gt;
 attr Sonoff_ch3 eventMap ON:on OFF:off ON:Ein OFF:Aus&lt;br /&gt;
 attr Sonoff_ch3 group Toröffner&lt;br /&gt;
 attr Sonoff_ch3 icon light_ceiling&lt;br /&gt;
 attr Sonoff_ch3 publishSet ON OFF cmnd/sonoffch4/POWER3/set&lt;br /&gt;
 attr Sonoff_ch3 stateFormat Power&lt;br /&gt;
 attr Sonoff_ch3 subscribeReading_Power tele/sonoffch4/POWER3&lt;br /&gt;
 attr Sonoff_ch3 subscribeReading_state cmnd/sonoffch4/POWER3/set&lt;br /&gt;
 attr Sonoff_ch3 webCmd Ein:Aus&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_ch4 MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_ch4 IODev myBroker&lt;br /&gt;
 attr Sonoff_ch4 alias Sonoff CH4&lt;br /&gt;
 attr Sonoff_ch4 devStateIcon on:rc_GREEN:off off:rc_RED:on&lt;br /&gt;
 attr Sonoff_ch4 eventMap ON:on OFF:off ON:Ein OFF:Aus&lt;br /&gt;
 attr Sonoff_ch4 group Toröffner&lt;br /&gt;
 attr Sonoff_ch4 icon light_ceiling&lt;br /&gt;
 attr Sonoff_ch4 publishSet on off cmnd/sonoffch4/POWER4/set&lt;br /&gt;
 attr Sonoff_ch4 stateFormat Power&lt;br /&gt;
 attr Sonoff_ch4 subscribeReading_Power tele/sonoffch4/POWER4&lt;br /&gt;
 attr Sonoff_ch4 subscribeReading_state cmnd/sonoffch4/POWER4/set&lt;br /&gt;
 attr Sonoff_ch4 webCmd Ein:Aus&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Erweiterungen=&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sonoff Switch mit Temperatur + Luftfeuchte== &lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier geht es um nützliche Hardware Erweiterungen an den Originalmodulen!}}&lt;br /&gt;
Wozu überhaupt den Switch erweitern wenn es auch die Modelle TH10 und TH16 gibt?&lt;br /&gt;
&lt;br /&gt;
Manche Personen können dadurch dem Basteltrieb nachkommen, aber das wesentliche ist der Preis, da die Switches doch fast um die Hälfte billiger sind. Die Sensoren kosten ebenfalls kaum nennenswerte Beträge.&lt;br /&gt;
&lt;br /&gt;
Oder es hat schon jemand Switches im Einsatz und möchte jetzt zusätzlich die Temperatur erfassen!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hardware erweitern mit DHT22 ===&lt;br /&gt;
[[Datei:sonoff_sw_4.PNG|thumb|left|alt=Sonoff Switch Pinleiste mit Temperatur]]&lt;br /&gt;
Am Sonoff Switch wurde ja schon eine Stiftleiste zum Flashen eingelötet. Diese Stiftleiste bietet schon alle Anschlüsse welche für die Temperatur- und Luftfeuchtemessung benötigt werden. Am 5. Anschluß der Stifftleiste ist das Signal &amp;quot;SCL&amp;quot; (GPIO14) herausgeführt, welches für den DHT22 zur Erfassung der Messdaten benötigt wird. Der Sonsor wird mit einem einem 3-poligen Kabel (zB: ein Steckkabel für ein Breadboard oder direkt anlöten) verbunden. Damit der DHT22 korrekt funktioniert, wird ein Widerstand mit 4,7 K Ohm zwischen Vdd und Data am DHT22 zusätzlich benötigt. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_45.jpg|thumb|left|alt=AM2302 / DHT22]]&lt;br /&gt;
&lt;br /&gt;
Ansicht des DHT22 (AM2302) mit den aufgesteckten Verbindungskabeln. Von links nach rechts sind das&lt;br /&gt;
&lt;br /&gt;
 1 = VCC 3,3 V&lt;br /&gt;
 2 = Data&lt;br /&gt;
 3 = nc (nicht belegt)&lt;br /&gt;
 4 = GND&lt;br /&gt;
&lt;br /&gt;
Pin1 (VCC) des DHT22 muss also auf Pin1 der Stiftleiste, Pin2 (Data) auf Pin5 und Pin4 (GND) auf Pin4. &lt;br /&gt;
Pin2 und Pin1 soll hier noch der Widerstand aufgelötet werden.&lt;br /&gt;
&lt;br /&gt;
 1 ------- 1 (VDD)&lt;br /&gt;
 2 ------- 5 (GPIO14)&lt;br /&gt;
 3&lt;br /&gt;
 4 ------- 4 (GND)&lt;br /&gt;
 DHT22  Stiftleiste&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_44.jpg|thumb|left|alt=umgebautes Modul]]&lt;br /&gt;
Diese Darstellung zeigt das umgebaute und bereits verschlossene Modul. Auf der Seite des Tasters (bitte nur hier, da auf der anderen Seite die 230 V verlaufen und neben der Lebensgefahr auch den Sensor beeinflussen) ist hier einfach mit einer Eisensäge ein Schlitz eingesägt, der dient in diesem Falle als Kabeldurchführung. Ein Schlitz ist besser als ein Loch, da der Oberteil des Gehäuses sich leichter aufsetzen läßt. Wer ein längeres Kabel benötigt, kann natürlich auch ein 3-poliges Telefonkabel (oder Mikrokabel oder sonstiges) verwenden. Der Sensor sollte etwas Abstand zum Gehäuse haben, da dieses auch eine Eigenerwärmung hat. Wer es ganz originalgetreu lösen will, kann auch eine 3-polige Mini Buchse für Klinckenstecker (3,5mm) einbauen so wie sie am TH10/16 vorhanden ist.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Software anpassen am Beispiel MQTT ===&lt;br /&gt;
[[Datei:sonoff_sw_40.jpg|thumb|left|alt=Sonoff MQTT]]&lt;br /&gt;
&lt;br /&gt;
Die richtige Auswahl des Sensors und des verwendeten GPIO erfolgt im WEBIF des Modules und wird seit Tasmota nur mehr dort eingestellt. Eventuell sollte das aktuell verwendete [https://github.com/ddtlabs/expandJSON/ JSON Filter] geändert/erweitert werde (siehe beim Modul POW).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Software Anpassung DHT22 in FHEM ===&lt;br /&gt;
[[Datei:sonoff_sw_41.jpg|thumb|left|alt=umgebautes Modul]]&lt;br /&gt;
&lt;br /&gt;
Links in der Hardcopy sind die Readings die nach der Anpassung von FHEM (Broker) befüllt werden sollten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ### Temperatur und Luftfeuchte vom Sonoff Switch ###&lt;br /&gt;
 define Sonoff_Temp MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Temp IODev myBroker&lt;br /&gt;
 attr Sonoff_Temp icon temperature_humidity&lt;br /&gt;
 attr Sonoff_Temp room MQTT&lt;br /&gt;
 attr Sonoff_Temp stateFormat {sprintf(&amp;quot;Temperatur: %.1f Grad Feuchte: %.1f &amp;quot;, ReadingsVal($name,&amp;quot;temperature&amp;quot;,0), ReadingsVal($name,&amp;quot;humidity&amp;quot;,0))}&lt;br /&gt;
 attr Sonoff_Temp subscribeReading_Sensor tele/sonoff/SENSOR&lt;br /&gt;
Hier die zusätzliche Erweiterung um die Temperatur und die Luftfeuchte in FHEM. Der in der Topic verwendete Name &amp;quot;sonoff&amp;quot; muss natürlich der Einstellung in der Software am Switch entsprechen. Bei Verwendung mehrerer Switches muss natürlich auch der Name bei jedem geändert werden.&lt;br /&gt;
&lt;br /&gt;
Als Regexp für JSON kann dieser Filter eingesezt werden.&lt;br /&gt;
 define ej3 expandJSON .*\.SEN\..*:.*:.{.*} &lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Logfile für die Temperatur ===&lt;br /&gt;
 define SVG_FileLog_Sonoff_Temp SVG myDbLog:SVG_FileLog_Sonoff_Temp:HISTORY&lt;br /&gt;
 attr SVG_FileLog_Sonoff_Temp room MQTT&lt;br /&gt;
&lt;br /&gt;
Und schließlich fehlt noch das Logfile, damit der Temperaturverlauf auch in schönen Plots dargestellt werden kann.&lt;br /&gt;
Das hier verwendete Beispiel funktioniert nur mit einer DbLog.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Switch als Thermostat verwenden mit MQTT== &lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_55.jpg|thumb|left|alt=Thermostat]]&lt;br /&gt;
Mit diesem einfachen Beispiel wird ein Pelett Ofen mit einem externen Thermostat (sonoff Switch oder TH10/16) gesteuert. Zum besseren Überblick wird die Steuerung in einzelne Module getrennt, es könnte aber auch einiges zu einer einzigen Definition zusammen gefasst werden. Der Thermostat könnte auch als Frostwächter benutzt werden und ein anderes Heizgerät steuern.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 ###################################&lt;br /&gt;
 ### Sonoff Thermostat Regelung ####&lt;br /&gt;
 ###################################&lt;br /&gt;
 define Sonoff_dht MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_dht IODev myBroker&lt;br /&gt;
 attr Sonoff_dht alias Raumtemperatur&lt;br /&gt;
 attr Sonoff_dht group Thermostat&lt;br /&gt;
 attr Sonoff_dht icon temperature_humidity&lt;br /&gt;
 attr Sonoff_dht publishSet ON OFF cmnd/sonoff_dht/POWER/set&lt;br /&gt;
 attr Sonoff_dht room _Sonoff&lt;br /&gt;
 attr Sonoff_dht stateFormat {sprintf(&amp;quot;Temperatur: %.1f Grad Feuchte: %.1f &amp;quot;, ReadingsVal($name,&amp;quot;temperature&amp;quot;,0),  ReadingsVal($name,&amp;quot;humidity&amp;quot;,0))}&lt;br /&gt;
 attr Sonoff_dht subscribeReading_Sensor tele/sonoff_dht/SENSOR&lt;br /&gt;
 attr Sonoff_dht subscribeReading_state cmnd/sonoff_dht/POWER/set&lt;br /&gt;
FHEM Definition zur Erfassung der Temperatur und der Luftfeuchte. Damit dieses Beispiel funktioniert, ist am Sonoff Modul die Topic &amp;quot;&#039;&#039;&#039;sonoff_dht&#039;&#039;&#039;&amp;quot; zu setzen. Dieser Temperaturwert dient dem Thermostat als ISTWert.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Sw MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Sw IODev myBroker&lt;br /&gt;
 attr Sonoff_Sw alias Pellets Ofen&lt;br /&gt;
 attr Sonoff_Sw devStateIcon on:rc_GREEN:off off:rc_RED:on&lt;br /&gt;
 attr Sonoff_Sw eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_Sw group Thermostat&lt;br /&gt;
 attr Sonoff_Sw icon sani_boiler_temp&lt;br /&gt;
 attr Sonoff_Sw publishSet ON OFF cmnd/sonoff_dht/POWER/set&lt;br /&gt;
 attr Sonoff_Sw room _Sonoff&lt;br /&gt;
 attr Sonoff_Sw stateFormat Licht&lt;br /&gt;
 attr Sonoff_Sw subscribeReading_Licht tele/sonoff_dht/POWER&lt;br /&gt;
 attr Sonoff_Sw subscribeReading_state cmnd/sonoff_dht/POWER/set&lt;br /&gt;
 attr Sonoff_Sw webCmd ON:OFF&lt;br /&gt;
FHEM Definition zum Absetzen der Befehle für das Relais (Thermostat) Ein- / Aus. Wenn das zu steuernde Geräte einen potentialfreien Thermostatanschluß benötigt (in den meisten Fällen), muss noch ein Relais dazwischen geschaltet werden um die Trennung der Netzspannung zu gewährleisten.&lt;br /&gt;
&lt;br /&gt;
 define ThermostatPellets dummy&lt;br /&gt;
 attr ThermostatPellets alias Pellets Ofen Sollwert&lt;br /&gt;
 attr ThermostatPellets group Thermostat&lt;br /&gt;
 attr ThermostatPellets icon temp_control&lt;br /&gt;
 attr ThermostatPellets room _Sonoff&lt;br /&gt;
 attr ThermostatPellets setList state:0,5,10,12,13,14,15,16,17,17.5,18,18.5,19,19.5,20,20.5,21,21.5,22,23,24,25,26,27&lt;br /&gt;
 attr ThermostatPellets webCmd state&lt;br /&gt;
Die Sollwertvorgabe für das Thermostat durch einen Dummy, damit können die gewünschten Temperaturen eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
 ### sofort ausführen wenn neuer Sollwert eingestellt wird ###&lt;br /&gt;
 define Thermostat_on_notify notify ThermostatPellets IF (ReadingsVal(&amp;quot;Sonoff_Sw&amp;quot;,&amp;quot;state&amp;quot;,0) eq &amp;quot;OFF&amp;quot; &amp;amp;&amp;amp; (ReadingsVal(&amp;quot;Sonoff_dht&amp;quot;,&amp;quot;temperature&amp;quot;,0) &amp;lt;= Value(&amp;quot;ThermostatPellets&amp;quot;))) (set Sonoff_Sw ON)&lt;br /&gt;
 define Thermostat_off_notify notify ThermostatPellets IF (ReadingsVal(&amp;quot;Sonoff_Sw&amp;quot;,&amp;quot;state&amp;quot;,0) eq &amp;quot;ON&amp;quot; &amp;amp;&amp;amp; (ReadingsVal(&amp;quot;Sonoff_dht&amp;quot;,&amp;quot;temperature&amp;quot;,0) &amp;gt; Value(&amp;quot;ThermostatPellets&amp;quot;))) (set Sonoff_Sw OFF)&lt;br /&gt;
Mit einem notify wird die manuelle Änderung des Sollwertes überwacht und sofort reagiert.&lt;br /&gt;
&lt;br /&gt;
 ## zyklisch prüfen ob Sollwert erreicht wurde ###&lt;br /&gt;
 define Thermostat_on at +*00:15:00 IF (ReadingsVal(&amp;quot;Sonoff_Sw&amp;quot;,&amp;quot;Licht&amp;quot;,0) eq &amp;quot;OFF&amp;quot; &amp;amp;&amp;amp; (ReadingsVal(&amp;quot;Sonoff_dht&amp;quot;,&amp;quot;temperature&amp;quot;,0) &amp;lt;= Value(&amp;quot;ThermostatPellets&amp;quot;))) (set Sonoff_Sw ON)&lt;br /&gt;
 define Thermostat_off at +*00:15:00 IF (Value(&amp;quot;Sonoff_Sw&amp;quot;) eq &amp;quot;ON&amp;quot; &amp;amp;&amp;amp; (ReadingsVal(&amp;quot;Sonoff_dht&amp;quot;,&amp;quot;temperature&amp;quot;,0) &amp;gt; Value(&amp;quot;ThermostatPellets&amp;quot;))) (set Sonoff_Sw OFF)&lt;br /&gt;
Hier noch die Soll- Ist Wertvergleiche zur Steuerung. Es wird alle 15 Minuten überprüft ob die Temperatur erreicht ist. Bei einer trägen Heizung sollten 15 Minuten ausreichend sein, wer will kann dies aber auch alle 5 oder 10 Minuten prüfen.&lt;br /&gt;
Da des öfteren die Bezeichnungen der Readings im Sketch geändert werden ( zB:temperature ), bitte die richtige Schreibweise ( Groß/Klein ) in den Readings kontrollieren und gegebenenfalls hier anpassen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Switch mit Bewegungsmelder HC-SR501== &lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_pir_1.jpg|thumb|left|alt=Bewegungsmelder]]&lt;br /&gt;
Basierend auf dem Wall Switch MQTT Sketch von Arends wurde hier ein Sonoff BASIC + PIR HC-SR501 in eine größere Verteilerdose eingebaut, der Sonoff wurde dabei etwas gekürzt. Die Bewegungsmelder sind ab etwa 70 Cent erhältlich.&lt;br /&gt;
&lt;br /&gt;
Der Sketch kann auch den Blink Modus. Damit kann man im Alarmfall z.B. Alle Strahler rings ums Haus blinken lassen.&lt;br /&gt;
&lt;br /&gt;
Mehr dazu kann hier im [https://forum.fhem.de/index.php/topic,63824.0.html Forum]im Diskussionsthread nachgelesen werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_pir_2.jpg|thumb|left|alt=Bewegungsmelder]]&lt;br /&gt;
Ein Beispiel wir der Bewegungsmelder in der Feuchtraumdose montiert werden kann. Wird der Bewegungsmelder abgesetzt vom Switch montiert, ist darauf zu achten das die Kabel nicht zu lange werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
===Spannungsversorgung des HC-SR501===&lt;br /&gt;
[[Datei:sonoff_pir_4.jpg|thumb|left|alt=5V für Bewegungsmelder]]&lt;br /&gt;
Der HC-SR501 wird vom Sonoff versorgt, wobei hier die 3,3 V nicht immer ausreichen. Es ist deshalb am HC-SR501 eine Diode zu überbrücken, dann reichen die 3,3V vom Sonoff. Es können aber auch am Sonoff die 5V angezapft werden. Hier im Bild dargestellt wo die 5V angezapft werden können.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_pir_5.jpg|thumb|left|alt=3,3V für Bewegungsmelder]]&lt;br /&gt;
Hier eine kleine Übersicht der wichtigsten Teile und deren Platzierung am HC-SR501. &lt;br /&gt;
Den PIR kann man auch mit 3,3V betreiben wenn man die Diode am Eingang nach Vcc überbrückt, dann reicht die Spannung für einen reibungslosen Betrieb völlig aus. Dies gilt für den HC-SR501, wird ein anderer PIR verwendet muss man nachschauen ob das auch möglich ist, ansonsten die 5V Variante wählen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===Einbindung des HC-SR501 in FHEM===&lt;br /&gt;
 # ------------- Sonoff_pir mit Bewegungsmelder ---------------&lt;br /&gt;
 define Sonoff_pir MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_pir IODev myBroker&lt;br /&gt;
 attr Sonoff_pir eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_pir group Sonoff&lt;br /&gt;
 attr Sonoff_pir icon hue_filled_br30&lt;br /&gt;
 attr Sonoff_pir publishSet ON OFF cmnd/sonoff_pir/POWER/set&lt;br /&gt;
 attr Sonoff_pir room MQTT&lt;br /&gt;
 attr Sonoff_pir stateFormat Licht&lt;br /&gt;
 attr Sonoff_pir subscribeReading_Licht stat/sonoff_pir/POWER&lt;br /&gt;
 attr Sonoff_pir subscribeReading_state cmnd/sonoff_pir/POWER/set&lt;br /&gt;
 attr Sonoff_pir webCmd :&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel wie der Sonoff Switch in FHEM eingebunden wird. Wenn im Sketch der Prefix von stat auf tele geändert wurde, ist dies auch hier durchzuführen ( subscribeReading_Licht tele/sonoff_pir/POWER ), ansonsten bleibt es so wie im Beispiel. Getestet wurde dieses Beispiel mit Version 3.1.6. Die Topic sollte auf den Namen &amp;quot;sonoff_pir&amp;quot; eingestellt werden. Bei anderen Namen ist dies entsprechend in FHEM anzupassen. &lt;br /&gt;
&lt;br /&gt;
Mit dem Kommando &#039;&#039;&#039;BUTTONTOPIC Alarm_SO2&#039;&#039;&#039; ( direkt im Webinterface des Sonoff ) wird der Wall Switch GPIO14 vom Sonoff entkoppelt und somit sendet der Bewegungsmelder direkt an FHEM --&amp;gt; Motion_pir MQTT_DEVICE&lt;br /&gt;
&lt;br /&gt;
Es sollte auch unbedingt kontrolliert werden, wie die Ausgabe des Alarmes in der Console erfolgt. Erscheint hier die Meldung &amp;quot;cmnd/Alarm_SO2/POWER = TOGGLE&amp;quot; dann muss mit dem Kommando &amp;quot;&#039;&#039;&#039;switchmode 1&#039;&#039;&#039;&amp;quot; das Ausgabeformat umgeschaltet werden, erst dann kommt das gewünschte Format &amp;quot;On&amp;quot; und &amp;quot;OFF&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 # ------------------ Motion_pir MQTT_DEVICE -----------------&lt;br /&gt;
 define Motion_pir MQTT_DEVICE&lt;br /&gt;
 attr Motion_pir IODev myBroker&lt;br /&gt;
 attr Motion_pir devStateIcon on:on-for-timer off:off&lt;br /&gt;
 attr Motion_pir eventMap ON:on OFF:off&lt;br /&gt;
 attr Motion_pir group Sonoff&lt;br /&gt;
 attr Motion_pir icon people_sensor&lt;br /&gt;
 attr Motion_pir room MQTT&lt;br /&gt;
 attr Motion_pir stateFormat Alarm&lt;br /&gt;
 attr Motion_pir subscribeReading_Alarm cmnd/Alarm_SO2/POWER&lt;br /&gt;
Die Motion_pir dient nun zur eigentlichen Einschaltung des Lichtes und sendet das Kommando &#039;&#039;&#039;cmnd/Alarm_SO2/POWER&#039;&#039;&#039; an den entkopellten GPIO 14 des Switch.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # ------------------ DoIf zur Motion Abfrage -----------------&lt;br /&gt;
 define di_Sonoff_pir_Alarm DOIF ([Motion_pir:&amp;quot;on&amp;quot;] and [Tag_Nacht:twilight_weather] &amp;lt; 35) (set Sonoff_pir on) DOELSEIF ([Motion_pir:&amp;quot;off&amp;quot;] and [Tag_Nacht:twilight_weather] &amp;lt; 35) (set Sonoff_pir off)&lt;br /&gt;
 attr di_Sonoff_pir_Alarm comment Abhängig von Helligkeitssensor wird nachts,bei Bewegung das Licht eingeschaltet!&lt;br /&gt;
 attr di_Sonoff_pir_Alarm group Sonoff&lt;br /&gt;
 attr di_Sonoff_pir_Alarm room MQTT&lt;br /&gt;
Zusätzlich kann nun mit einem &#039;&#039;&#039;Doif&#039;&#039;&#039; verknüpft werden um das Ganze mit Tag_Nacht:twilight_weather dann in Abhängigkeit der Helligkeit zu schalten. Selbstverständlich kann jede andere Quelle mit einem Helligkeitswert verwendet werden.&lt;br /&gt;
&lt;br /&gt;
===Alarmausgabe über Grouptopic===&lt;br /&gt;
 # ------------------------ Sonoffs Group ----------------------&lt;br /&gt;
 define Sonoffs MQTT_DEVICE&lt;br /&gt;
 attr Sonoffs IODev myBroker&lt;br /&gt;
 attr Sonoffs eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoffs group Sonoff&lt;br /&gt;
 attr Sonoffs icon hue_filled_br30&lt;br /&gt;
 attr Sonoffs publishSet ON OFF cmnd/sonoffs/POWER/set&lt;br /&gt;
 attr Sonoffs room MQTT&lt;br /&gt;
 attr Sonoffs stateFormat state&lt;br /&gt;
 attr Sonoffs subscribeReading_Licht stat/sonoffs/POWER&lt;br /&gt;
 attr Sonoffs subscribeReading_state cmnd/sonoffs/POWER/set&lt;br /&gt;
Wer möchte kann auch mit der Group Topic mehrere Switches mit Bewegungsmelder zusammenfassen und alle Lampen im Alarmfall gemeinsam in den Blinkmodus schalten. cmnd/sonoffs ist das Kommando für die Group Topic, sofern diese vom User nicht verändert wurde.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:IP Components]]&lt;br /&gt;
--[[Benutzer:Reinhart|Reinhart]] ([[Benutzer Diskussion:Reinhart|Diskussion]]) 20:54, 5. Jan. 2017 (CET)&lt;/div&gt;</summary>
		<author><name>Reinhart</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:Sonoff_sw_36.jpg&amp;diff=20173</id>
		<title>Datei:Sonoff sw 36.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:Sonoff_sw_36.jpg&amp;diff=20173"/>
		<updated>2017-02-22T16:48:33Z</updated>

		<summary type="html">&lt;p&gt;Reinhart: Reinhart lud eine neue Version von Datei:Sonoff sw 36.jpg hoch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sonoff Pow Readings&lt;/div&gt;</summary>
		<author><name>Reinhart</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:Sonoff_sw_25.jpg&amp;diff=20172</id>
		<title>Datei:Sonoff sw 25.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:Sonoff_sw_25.jpg&amp;diff=20172"/>
		<updated>2017-02-22T16:47:53Z</updated>

		<summary type="html">&lt;p&gt;Reinhart: Reinhart lud eine neue Version von Datei:Sonoff sw 25.jpg hoch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Reinhart</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:Sonoff_sw_24.jpg&amp;diff=20171</id>
		<title>Datei:Sonoff sw 24.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:Sonoff_sw_24.jpg&amp;diff=20171"/>
		<updated>2017-02-22T16:47:15Z</updated>

		<summary type="html">&lt;p&gt;Reinhart: Reinhart lud eine neue Version von Datei:Sonoff sw 24.jpg hoch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Reinhart</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Sonoff&amp;diff=19911</id>
		<title>Sonoff</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Sonoff&amp;diff=19911"/>
		<updated>2017-02-14T14:18:24Z</updated>

		<summary type="html">&lt;p&gt;Reinhart: /* ReadingsGroup mit Schaltmöglichkeit */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;sonoff, dieser Artikel beschreibt die Ankopplung der kostengünstigen sonoff Module an FHEM mit ESPEasy oder MQTT.&#039;&#039;&#039;&lt;br /&gt;
{{Randnotiz|RNTyp=Fehl|RNText=Achtung: Arbeiten mit Netzspannung kann lebensgefährlich sein und darf nur von autorisiertem Fachpersonal durchgeführt werden!}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Seit einiger Zeit werden von der [https://www.itead.cc/sonoff-wifi-wireless-switch.html Fa. Itead] kostengünstige &amp;quot;sonoff&amp;quot; Produkte angeboten die glücklicherweise den [http://dl.itead.cc/IM151116002/0A-ESP8266_Specifications_v4.1.pdf ESP8266 Chip] On Board haben und somit die ideale Grundlage für [http://www.esp8266.nu/index.php/Main_Page ESPEasy] und für [https://forum.fhem.de/index.php/board,46.0.html FHEM] darstellen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nützliche Links zum Hersteller:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://www.itead.cc/blog/user-guide-for-sonoff-slampher User Manual von Itead]&lt;br /&gt;
&lt;br /&gt;
[https://www.itead.cc/wiki/images/6/6b/Sonoff_schmatic.pdf Sonoff Schaltplan]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Hardware=&lt;br /&gt;
&#039;&#039;&#039;Bitte unbedingt die elektrotechnischen Sicherheitsrichtlinien beachten und einhalten!&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_sw_15.jpg|thumb|left|alt=Warnung Netzspannung]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Achtung: An dem Modul liegt Netzspannung an die lebensgefährlich ist. Es dürfen nur entsprechend ausgebildete Personen dieses Modul in Betrieb nehmen. Zum Umbau und zur Softwareaktualisierung darf keine Netzspannung angeschlossen sein&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Wie gefährlich das hantieren mit Netzspannung sein kann, wird hier am Beispiel eines [http://mysku.ru/blog/china-stores/45762.html russischen Anwenders] gezeigt, der hat beim Flashen die Netzspannung am Modul gelassen und somit über die Verbindung mit dem Netzteil des Laptop lebensgefährliche Spannung auf die FTDI Schnittstelle gebracht. Das Modul ist dabei abgeraucht!&lt;br /&gt;
&lt;br /&gt;
==Modelle==&lt;br /&gt;
&lt;br /&gt;
===Produktübersichtsliste sonoff===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:right&amp;quot;&lt;br /&gt;
! Produkt Name !! Beschreibung !! Spannungsversorgung !!  Imax !! Pmax !! Frequenz !! Schaltplan !! Link&lt;br /&gt;
|-&lt;br /&gt;
| Sonoff || Wireless control switch || 90~250V AC || 10A || 2200W || 2.4Ghz || [http://wiki.iteadstudio.com/Sonoff Plan] || [https://www.itead.cc/smart-home/sonoff-wifi-wireless-switch.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| Sonoff RF || 433 RF remote || 90~250V AC || 10A || 2200W || 2.4Ghz || [http://wiki.iteadstudio.com/Sonoff_RF Plan] || [https://www.itead.cc/smart-home/im151116003.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| Sonoff SV || Low voltage Input || 5~24V DC || 10A || 240W DC || 2.4Ghz || [http://wiki.iteadstudio.com/Sonoff_SV Plan] || [https://www.itead.cc/smart-home/sonoff-sv.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| Sonoff TH10/TH16 || Monitor and set Temp.&amp;amp;Hum. ||  90~250V AC || 10A/16A || 2200W(10A)/3500W(16A)	 || 2.4Ghz || [http://wiki.iteadstudio.com/Sonoff_TH_10/16 Plan] || [https://www.itead.cc/smart-home/sonoff-th.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Sonoff Dual || Remote control 2 devices ||  90~250V AC || 16A || 3500W || 2.4Ghz || [https://www.itead.cc/wiki/Sonoff_Dual Plan] || [https://www.itead.cc/sonoff-dual.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Sonoff Pow || Report power &amp;amp;power usage ||  90~250V AC || 16A || 3500W || 2.4Ghz || [https://www.itead.cc/wiki/Sonoff_Pow Plan] || [https://www.itead.cc/sonoff-pow.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Sonoff LED || WiFi Control Dimming LED ||  180~265V AC || 0.3-0.6A || 42W || 2.4Ghz ||  kein || [https://www.itead.cc/sonoff-led.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Sonoff Touch || WiFi wall touch switch ||  90~250V AC || 2A || 400W || 2.4Ghz || kein || [https://www.itead.cc/sonoff-touch.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Slampher || Wireless control light holder ||  90~250V AC || 2A || 200W || 2.4Ghz || [http://wiki.iteadstudio.com/Slampher Plan] || [https://www.itead.cc/smart-home/slampher-wifi-wireless-light-holder.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  S20 Smart Socket || Smart socket || 	90~250V AC || 10A || 2000W || 2.4Ghz || kein || [https://www.itead.cc/smart-home/smart-socket-eu.html EU-Stecker] &lt;br /&gt;
|-&lt;br /&gt;
|  iFan || Smart fan ||  185~264V AC ||﹤1A || 60W || 2.4Ghz || kein || [https://www.itead.cc/smart-home/smart-socket-eu.html EU-Stecker] &lt;br /&gt;
|-&lt;br /&gt;
| Motor/Pump Control Switch || clockwise/anticlockwise running ||  5V/7~32V DC || 10A || 50~320W || 2.4Ghz || kein || [https://www.itead.cc/smart-home/motor-reversing-wifi-wireless-switch.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| 1 Chnl Inching/self-locking Switch || Access control ||  	5V/12V DC || 10A || 50/120W || 2.4Ghz || kein || [https://www.itead.cc/smart-home/inching-self-locking-wifi-wireless-switch.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  4 Chnl Inching/self-locking/inter-locking Switch || Access control, rolling door control ||  5V/5~32V DC/90~250V AC || 10A || 50~320W/2500W || 2.4Ghz || kein || [https://www.itead.cc/ifan.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Eine Übersichtliste der verschiedenen Produkte mit technischen Kurzangaben.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Model: IM151116002: Erstes Modell===&lt;br /&gt;
[https://www.itead.cc/sonoff-wifi-wireless-switch.html Sonoff WiFi Wireless Smart Switch for MQTT COAP Smart Home]&lt;br /&gt;
[[Datei:sonoff_sw_0.jpg|thumb|left|alt=sonoff Switch]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Das sonoff Modul ist in einem zweckmäßigen und gefälligem Gehäuse verbaut!&lt;br /&gt;
&lt;br /&gt;
====Platine====&lt;br /&gt;
[[Datei:sonoff_sw_1.jpg|thumb|left|alt=sonoff Switch von vorne]]&lt;br /&gt;
&lt;br /&gt;
Die Platine ist sehr übersichtlich aufgebaut und der Hersteller hat auch alle Vorbereitungen zum Flashen einer alternativen Software vorgesehen (über serielle Schnittstelle via FTDI-Modul). Mit einer alternativen Software wie ESPEasy ist eine direkte Ankopplung des &#039;&#039;&#039;sonoff&#039;&#039;&#039; an FHEM somit ein leicht durchführbarer Vorgang.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_3.jpg|thumb|left|alt=sonoff Switch von hinten]]&lt;br /&gt;
Die stromführenden Leitungen wurden mit Lötzinn vom Hersteller verstärkt um die angegebenen Stromstärken mit geringer Hitzeentwicklung zu transportieren.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung: Bitte vor den Arbeiten kontrollieren, das an der Platine keine Netzspannung angeschlossen ist, LEBENSGEFAHR!&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Model: IM160712005: TH 10A/16A ===&lt;br /&gt;
[https://www.itead.cc/sonoff-th.html Sonoff TH 10A/16A WiFi Smart Switch]&lt;br /&gt;
&lt;br /&gt;
====TH10 / TH16 weitere GPIO zugänglich machen====&lt;br /&gt;
[[Datei:Sonoff_TH_10A-16A_kleiner.jpg|thumb|left|alt=TH10 / TH16 weitere GPIO zugänglich machen]]&lt;br /&gt;
Der Hersteller hat zwar schon Platine für eine weitere Stiftleiste vorbereitet, jedoch muss diese noch bestückt werden. Die nicht beschalteten Stifte können dann genutzt werden um die &amp;quot;verdeckten&amp;quot; GPIO zugänglich zu machen. Die Verdrahtung kann dem Bild entnommen werden.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Achtung: Bitte vor den Arbeiten kontrollieren, das an der Platine keine Netzspannung angeschlossen ist, LEBENSGEFAHR!&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Model: IM160811001: Sonoff Dual ===&lt;br /&gt;
[https://www.itead.cc/sonoff-dual.html Sonoff Dual WiFi Wireless Smart Swtich]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Model: IM160810001: Sonoff Pow ===&lt;br /&gt;
[https://www.itead.cc/sonoff-pow.html Sonoff POW WiFi Switch with Power Consumption Measurement]&lt;br /&gt;
[[Datei:sonoff_sw_30.jpg|thumb|left|alt=SONOFF POW]]Ein sehr interessantes und kostengünstiges Modul zur Messung der aktuellen Leistung. Das Modul kann via MQTT in FHEM angebunden werden.&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel zur Einbindung ist [http://www.fhemwiki.de/wiki/Sonoff#Sonoff_POW_einrichten hier unten] im Wiki beschrieben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===Model: weitere Modelle===&lt;br /&gt;
[https://www.itead.cc/search/result/?cat=&amp;amp;q=sonoff Sonoff Weitere Modelle finden sich auf der Homepage des Hersstellers]&lt;br /&gt;
&lt;br /&gt;
==Vorbereitungen zum Flashen==&lt;br /&gt;
[[Datei:sonoff_sw_2.jpg|thumb|left|alt=serielle Schnittstelle]]&lt;br /&gt;
&lt;br /&gt;
Hier auf der Platine sind die benötigten Signale für ein FTDI Modul schon vorhanden. Der quadratische Pin gleich über dem Taster ist die Spannungsversorgung zum Flashen vom FDTI von 3.3V Es muss daher unbedingt ein FTDI Modul genommen werden, dass nicht nur einen Jumper für 3.3V besitzt sondern auch die Spannung auf 3.3V herab setzt. Ist dies nicht der Fall, läuft man Gefahr das Modul unbrauchbar zu machen. Es ist daher zu empfehlen einen Spannungsteiler mit 2 Widerständen oder einen Pegelwandler zwischenschalten.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Signale der Schnittstelle==&lt;br /&gt;
von oben nach unten auf der Steckerleiste des sonoff U4 (Model: IM151116002).&lt;br /&gt;
&lt;br /&gt;
 Pin5 = vorbereitet für GPIO&lt;br /&gt;
 Pin4 = Masse&lt;br /&gt;
 Pin3 = TxD&lt;br /&gt;
 Pin2 = RxD&lt;br /&gt;
 Pin1 = 3.3V&lt;br /&gt;
&lt;br /&gt;
Siehe dazu auch den [https://forum.fhem.de/index.php/topic,55036.0.html Link aus dem Forum]:&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Platine mit Stiftleiste bestücken==&lt;br /&gt;
[[Datei:sonoff_sw_4.jpg|thumb|left|alt=Platine mit Stiftleiste bestücken]]&lt;br /&gt;
Der Hersteller hat zwar schon die Platine vorbereitet, jedoch muss sie noch mit einer Stiftleiste bestückt werden um das FTDI Modul bequem verbinden zu können. Nachdem einmal ESPEasy geflasht worden ist, kann es in Zukunft via WEB (OTA) geflasht werden und die Stiftleiste ist dann nicht mehr erforderlich. Aufgrund der geringen Kosten fällt dies jedoch nicht ins Gewicht.&amp;lt;br&amp;gt;&lt;br /&gt;
Für die Module TH10/TH16 sind die Lötpunkte für die Stiftleiste schon beschriftet. Die Stiftleiste selber muss allerdings auch nachgerüstet werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Achtung&#039;&#039;&#039;: Bitte vor den Arbeiten kontrollieren, das an der Platine keine Netzspannung angeschlossen ist, LEBENSGEFAHR!&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Software=&lt;br /&gt;
==MQTT und TASMOTA==&lt;br /&gt;
Der Autor Arends hat die Version Sonoff-MQTT-OTA-Arduino nun eingestellt und die Version 3.2.13 dürfte wohl die letzte dieser Generation gewesen sein. Mit der Einstellung dieser Version wurde zwar der Nachfolger &#039;&#039;&#039;TASMOTA&#039;&#039;&#039; erschaffen, aber leider nun auf das &#039;&#039;&#039;Messageformat LEGACY&#039;&#039;&#039; gänzlich verzichtet was bei der Auswertung der Messdaten in Fhem doch einige Probleme mit sich bringt, da der verwendete JSON String nun zusätzlich gefiltert werden muss.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Es gibt aber bereits drei Lösungswege um dieses Problem zu beheben!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 1. [https://forum.fhem.de/index.php/topic,66714.msg580251.html#msg580251 in diesem Thread] gibt es eine gepatchte Version von Tasmota mit LEGACY Ausgabe. Damit verhält sich Tasmota so wie früher die MQTT Version mit LEGACY und es sind keine weiteren Einstellungen notwendig. LEGACY wurde einfach wieder hinzugefügt.&lt;br /&gt;
&lt;br /&gt;
 2. [https://forum.fhem.de/index.php/topic,66761.0.html in diesem Thread] wurde ein &#039;&#039;&#039;JSON to Reading Modul&#039;&#039;&#039; vorgestellt, dass mit Hilfe eines &amp;quot;notify&amp;quot; den JSON String analysiert und alle darin enthaltenen Daten in Readings kopiert. Die Readings werden dabei automatisch angelegt.&lt;br /&gt;
&lt;br /&gt;
 3. [https://forum.fhem.de/index.php/topic,32528.msg581327.html#msg581327 in diesem Thread] gibt es eine gepatchte Version des Moduls &#039;&#039;&#039;MQTT_DEVICE&#039;&#039;&#039;, in der der JSON String analysiert und alle darin enthaltenen Daten in Readings kopiert werden. Die Readings werden dabei automatisch angelegt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Link: [https://github.com/arendst/Sonoff-Tasmota Tasmota]&lt;br /&gt;
&lt;br /&gt;
Link: [https://github.com/arendst/Sonoff-MQTT-OTA-Arduino Sonoff-MQTT-OTA-Arduino]&lt;br /&gt;
&lt;br /&gt;
Alle hier im Wiki verwendeten Beispiele und deren Beschreibung gilt für die MQTT Version (alte Version). Da in Tasmota fast alles im WEBIF konfiguriert werden kann, entfallen daher sinngemäß einige hier im Wiki erklärten Definitionen, speziell in der &amp;quot;user_config.h&amp;quot;.&lt;br /&gt;
Trotz diesem Komfort müssen die Einstellungen aber nun im WEBIF vorgenommen werden, die wohl wichtigste ist die Auswahl der verwendeten Hardware (Sonoff POW etc.).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ESPEasy flashen==&lt;br /&gt;
[[Datei:sonoff_sw_6.jpg|thumb|left|alt=sonoff mit angestecktem FDTI Adapter]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier geht es ausschließlich um die Software ESPEasy an den sonoff Modulen! }}&lt;br /&gt;
Die Spannungsversorgung des Sonoff Moduls wird hier vom FTDI Konverter mit 3.3V über die Verbindungskabel zum Pfostenstecker durchgeführt. &lt;br /&gt;
&lt;br /&gt;
Der FTDI Adapter wird dann mit der USB Schnittstelle mit dem Computer verbunden.&lt;br /&gt;
&lt;br /&gt;
Zum compilieren wird in der Arduino Umgebung auch die ArduinoJson Library 5.6.4+ benötigt. Eine genaue Anleitung kann [https://forum.fhem.de/index.php/topic,55728.msg473220.html#msg473220 hier] nachgelesen werden. Es sollte stest die aktuelle Version der Arduino Umgebung verwendet werden, bzw. die Librarys auf Letztstand gehalten werden. &lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===mit Arduino compilieren===&lt;br /&gt;
[[Datei:sonoff_sw_10.jpg|thumb|left|alt=Einstellung Arduino IDE]]&lt;br /&gt;
Wer selber mit der Arduino IDE compilieren will bitte folgende Einstellungen beachten. Die anschließenden Arbeiten sind dann gleich wie bei Abschnitt &#039;&#039;&#039;fertige Binary&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Unbedingt die neueste [https://github.com/bblanchon/ArduinoJson Arduino Json Library] benutzen (siehe oben)! Es gibt zwar keine Compilerfehler, aber es kommt anschließend zu Fehlfunktionen in der ESP Bridge!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 Generic ESP8266 Module&lt;br /&gt;
 Flash Mode: QIO&lt;br /&gt;
 Flash Frequency: 40 MHz&lt;br /&gt;
 CPU Frequency: 80 MHz&lt;br /&gt;
 Flash Size: 1M (64K SPIFFS)&lt;br /&gt;
 Debug Port: disabled&lt;br /&gt;
 Debug Level: none&lt;br /&gt;
 Reset Mode: ck&lt;br /&gt;
 Upload Speed: 115200&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===fertige Binary flashen===&lt;br /&gt;
[[Datei:sonoff_sw_7.jpg|thumb|left|alt=NodeMCU Firmware Flasher]]&lt;br /&gt;
Es empfiehlt sich eine fertige Binary von ESPEasy aufzuspielen. In diesem Wiki wurde R140 verwendet.&lt;br /&gt;
&lt;br /&gt;
Siehe dazu auch den [http://www.esp8266.nu/index.php/Main_Page Link von ESPEasy] und das [https://learn.adafruit.com/building-and-running-micropython-on-the-esp8266/flash-firmware Handbuch] für den Flasher.&lt;br /&gt;
&lt;br /&gt;
In manchen Versionen von ESPEasy (zB.R120) ist auch ein Flasher beigelegt, welcher zwar keine grafische Oberfläche hat aber hervorragend funktioniert. Wenn andere versagen, geht es mit diesem Flasher immer noch, einfach probieren!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 Netzspannung darf &#039;NICHT&#039; angeschlossen sein!!!&lt;br /&gt;
 Taster am Sonoff gedrückt halten&lt;br /&gt;
 FTDI Adapter verbinden&lt;br /&gt;
 Taster am Sonoff los lassen&lt;br /&gt;
 Sketch übertragen&lt;br /&gt;
 Sonoff vom FTDI trennen&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Wenn einmal die Firmware auf das sonoff Modul geflasht worden ist, kann in Zukunft ESPEasy direkt unter Tools via HTTP dies durchführen. Es muss dazu kein FTDI Konverter mehr verwendet werden.&lt;br /&gt;
&lt;br /&gt;
==ESPEasy==&lt;br /&gt;
[[Datei:sonoff_sw_11.jpg|thumb|left|alt=ESPEasy Devices]]&lt;br /&gt;
Wenn das Modul fertig geflasht ist und die Verbindung zum Modul hergestellt ist, können die Einstellungen in ESPEasy durchgeführt werden.&lt;br /&gt;
Dazu am Webinterface anmelden und zunächst die zwei Devices definieren.&lt;br /&gt;
&lt;br /&gt;
Der Hersteller hat für das &#039;&#039;&#039;Relaise GPIO 12&#039;&#039;&#039; und für die &#039;&#039;&#039;grüne Led GPIO 13&#039;&#039;&#039; vorgesehen. Der &#039;&#039;&#039;Taster ist an GPIO 0&#039;&#039;&#039; angeschlossen.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Device Schalter===&lt;br /&gt;
[[Datei:sonoff_sw_12.jpg|thumb|left|alt=Device Relais]]&lt;br /&gt;
Bei den Devices sollten die hier dargestellte Einstellungen beachtet werden. Der Switch (PUMP) sollte auf Input gestellt werden, sodass die anschließenden und benötigten Rules aktiviert werden können.&lt;br /&gt;
&lt;br /&gt;
Da beide Devicenamen gleich benannt wurden (PUMP) wird in FHEM nur ein Device angelegt! Die dazugehörenden Valuenames sind unterschiedlich (Relay, Key).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Device Taster===&lt;br /&gt;
[[Datei:sonoff_sw_13.jpg|thumb|left|alt=Device Key]]&lt;br /&gt;
Der Taste muss natürlich nur konfiguriert werden, wenn auch händisch am Modul geschaltet werden soll. Wird dies nicht benötigt, können auch die Rules geändert bzw. angepasst werden. Doch alleine zu Testzwecken ist es eine nützliche Sache.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Rules===&lt;br /&gt;
[[Datei:sonoff_sw_14.jpg|thumb|left|alt=Rules]]&lt;br /&gt;
Da das sonoff Modul auch einen eingebauten Taster hat und somit auch lokal bedient werden kann, sollte man zunächst unter &#039;&#039;&#039;Tools / Advanced das Häckchen Rules&#039;&#039;&#039; aktivieren, erst dann wird der Tab sichtbar und es können Rules erstellt werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 on PUMP#Key do&lt;br /&gt;
  if [PUMP#Relay]=1&lt;br /&gt;
    gpio,12,0&lt;br /&gt;
  else&lt;br /&gt;
    gpio,12,1&lt;br /&gt;
  endif&lt;br /&gt;
 endon&lt;br /&gt;
 on PUMP#Relay do&lt;br /&gt;
  if [PUMP#Relay]=1 &lt;br /&gt;
    gpio,13,0&lt;br /&gt;
  else&lt;br /&gt;
    gpio,13,1&lt;br /&gt;
  endif&lt;br /&gt;
 endon&lt;br /&gt;
Diese Rules ermöglichen, das bei lokaler Bedienung durch den Taster auch die &#039;&#039;&#039;Led&#039;&#039;&#039; richtig geschaltet wird.&lt;br /&gt;
Mit &#039;on PUMP#Key do&#039; wird geprüft ob die Taste gedrückt ist und schaltet dann entsprechend die Led. Mit den Rules können auch Timer oder sonstige Spielereien realisiert werden. Siehe dazu das [http://www.esp8266.nu/index.php/Tutorial_Rules Tutorial] von ESPeasy.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ESPEasy in FHEM einrichten==&lt;br /&gt;
[[Datei:sonoff_sw_9.jpg|thumb|left|alt=FHEM Konfiguration]]&lt;br /&gt;
Dies ist eine einfache Darstellung wie FHEM automatisch den Device erstellt.&lt;br /&gt;
&lt;br /&gt;
Damit FHEM mit ESPEasy und dem sonoff Modul kommunizieren kann, muss in der fhem.cfg vorerst nur die espBridge mit dem hier dargestellten Eintrag aktiviert werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 define espBridge ESPEasy bridge 8383&lt;br /&gt;
Dies ist eigentlich die einzige Zeile die in fhem.cfg angelegt werden muss. Die restliche Konfiguration wird von FHEM automatisch generiert. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 ##########################################&lt;br /&gt;
 ###             ESPEASY               ####&lt;br /&gt;
 ##########################################&lt;br /&gt;
 &lt;br /&gt;
 define ESPEasy_sonoff_1_PUMP ESPEasy 10.0.0.37 80 espBridge sonoff_1_PUMP&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP IODev espBridge&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP devStateIcon on:rc_GREEN:off off:rc_RED:on absent:rc_BLUE:off gpio:rc_YELLOW:off&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP eventMap /gpio 12 on:on/gpio 12 off:off/gpio 12 gpio:off/gpio 12 output:off/&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP group ESPEasy Device&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP icon hue_filled_outlet&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP room ESPEasy&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP setState 0&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP stateFormat {ReadingsVal($name,&amp;quot;presence&amp;quot;,&amp;quot;&amp;quot;) eq &amp;quot;absent&amp;quot; ? &amp;quot;absent&amp;quot; : ReadingsVal($name,&amp;quot;Relay&amp;quot;,&amp;quot;&amp;quot;)}&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP webCmd :&lt;br /&gt;
&lt;br /&gt;
hier ein Beispiel wie es auch manuell leicht modifiziert werden kann.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_8.jpg|thumb|left|alt=sonoff Readings]]&lt;br /&gt;
&lt;br /&gt;
Die Readings werden durch die Bridge (Modul ESPEasy) automatisch angelegt.&lt;br /&gt;
&lt;br /&gt;
Es besteht hier noch genug Spielraum um zB. auch noch Temperatursensoren an das Modul anzuschließen und ebenfalls in FHEM darzustellen.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==MQTT Server einrichten==&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier geht es ausschließlich um den Sketch von Arends und MQTT an den sonoff Modulen! }}&lt;br /&gt;
Es bleibt jedem Anwender die freie Wahl ob die Kommunikation über die ESPEasy-Bridge oder MQTT erfolgen soll. MQTT ist bei der Einrichtung etwas komplexer, da hier auch auf dem Server der Broker installiert werden muss.&lt;br /&gt;
&lt;br /&gt;
Im wesentlichen beschränkt sich die Installation eines MQTT Servers aber auf wenige Arbeitsschritte und ist wie folgt beschrieben durchzuführen. Wer schon einen &#039;&#039;&#039;mosquitto&#039;&#039;&#039; auf dem Server installiert hat, kann diesen Schritt überspringen.&lt;br /&gt;
&lt;br /&gt;
Dieses Kapitel ist insofern interessant, da mit dem Sketch von Theo Arends auch die Einbindung der neuen sonoff Pow Module bereits möglich ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # aus dem mosquitto Repo installieren:&lt;br /&gt;
 wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key&lt;br /&gt;
 sudo apt-key add mosquitto-repo.gpg.key&lt;br /&gt;
 cd /etc/apt/sources.list.d/&lt;br /&gt;
 sudo wget http://repo.mosquitto.org/debian/mosquitto-wheezy.list&lt;br /&gt;
 # oder für jessie&lt;br /&gt;
 sudo wget http://repo.mosquitto.org/debian/mosquitto-jessie.list&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 # mosquitto installieren, sowie client Befehl mosquito_sub (gehört nicht zum Server, wird aber weiter unten benötigt)&lt;br /&gt;
 sudo apt-get install mosquitto mosquitto-clients&lt;br /&gt;
 &lt;br /&gt;
 # MQTT Server Test&lt;br /&gt;
 sudo service mosquitto status&lt;br /&gt;
&lt;br /&gt;
 # Start / Stop des Servers&lt;br /&gt;
 sudo service mosquitto stop&lt;br /&gt;
 sudo service mosquitto start&lt;br /&gt;
 &lt;br /&gt;
 # Perl Version ausgeben&lt;br /&gt;
 perl -v&lt;br /&gt;
 # Perl MQTT Module nachinstallieren (läuft ein paar Minuten)&lt;br /&gt;
 sudo cpan install Net::MQTT:Simple&lt;br /&gt;
 sudo cpan install Net::MQTT:Constants&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Software Arends Sketch===&lt;br /&gt;
[[Datei:sonoff_sw_22.jpg|thumb|left|alt=Arends Menü]]&lt;br /&gt;
&lt;br /&gt;
Ebenso bietet sich die Möglichkeit eine andere alternative Software auf den unterschiedlichen Sonoff Modellen aufzuspielen.&lt;br /&gt;
Speziell für diese Module zugeschnittene Software stammt vom Autor Theo Arends. Alle hier gezeigten Bildschirmfotos und Beispiele beziehen sich auf Basis der Version 2.0.11 (Stand 11.11.2016).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wichtig:&#039;&#039;&#039; erst &#039;&#039;&#039;ab Version 2.0.9&#039;&#039;&#039; sind die Berechnungsfehler und die Referenzfrequenzen für die Umrechnung der Leistungsdaten gefixt worden! Es wird daher angeraten immer die aktuellste Version zu verwenden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Links zu Theo Arend Github&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/arendst/Sonoff-MQTT-OTA-Arduino Arend GitHub]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/arendst/Sonoff-MQTT-OTA-Arduino/wiki Wiki]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/arendst/Sonoff-Tasmota.git Donwload Tasmota]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/arendst/Sonoff-Tasmota Arends Tasmota Github]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; sollten Probleme mit dem ersten Login im Webinterface auftreten, hat der Autor vorgesorgt und mit speziellem wiederholten Tastendruck können verschiedene Modi aufgerufen werden: zB: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3 x Taste kurz drücken&#039;&#039;&#039; und eine Smartconfig wird gestartet und die &#039;&#039;&#039;SSID&#039;&#039;&#039; und das &#039;&#039;&#039;Passwort&#039;&#039;&#039; kann über diese [https://play.google.com/store/apps/details?id=com.cmmakerclub.iot.esptouch Android App] eingegeben werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4 x Taste kurz drücken&#039;&#039;&#039; und man bringt den Device in den &#039;&#039;&#039;Access Point Mode&#039;&#039;&#039; mit der IP-Adresse &#039;&#039;&#039;192.168.4.1&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bis zu 7 verschiedene Modi sind möglich, mehr dazu in Arends Wiki.&lt;br /&gt;
&lt;br /&gt;
[https://github.com/arendst/Sonoff-MQTT-OTA-Arduino/wiki/Button-usage Link zum Wiki Arends, Button]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_bv_01.jpg|thumb|left|alt=Arduino Boardverwalter]]&lt;br /&gt;
In der Arduino IDE unter Datei / Voreinstellungen im Feld &amp;quot;Zusätzliche Boardverwalter-URLs:&amp;quot; den Link: http://arduino.esp8266.com/stable/package_esp8266com_index.json einfügen. &lt;br /&gt;
&lt;br /&gt;
Dann unter &#039;&#039;&#039;Werkzeuge / Board / Boardverwalter&#039;&#039;&#039; ganz am Ende der Liste die Librarys für &amp;quot;esp8266 by ESP8266 Community&amp;quot; die letzte Version 2.3.0 installieren. [https://forum.fhem.de/index.php/topic,46205.msg534707.html#msg534707 Link zum Board].&lt;br /&gt;
&lt;br /&gt;
Das gesamte sonoff Verzeichnis aus [https://github.com/arendst/Sonoff-MQTT-OTA-Arduino/archive/master.zip Arendts Sketch] entpacken (ist wie hier verlinkt ein Zipfile) und dann aus diesem Verzeichnis die sonoff.ino öffnen. Es können dann alle zu dem Sketch zugehörigen Dateien angesehen/editiert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Anschließend muss noch die Datei &#039;&#039;&#039;user_config.h&#039;&#039;&#039; (im Unterverzeichnis &amp;quot;sonoff&amp;quot;) editiert werden. Die Abschnitte          &lt;br /&gt;
&lt;br /&gt;
 // Wifi&lt;br /&gt;
 // Syslog&lt;br /&gt;
 // Ota&lt;br /&gt;
 // MQTT&lt;br /&gt;
&lt;br /&gt;
müssen mit der eigenen &amp;quot;&#039;&#039;&#039;Ip-Adresse-Server&#039;&#039;&#039;&amp;quot;, &amp;quot;&#039;&#039;&#039;SSID&#039;&#039;&#039;&amp;quot; und &amp;quot;&#039;&#039;&#039;password&#039;&#039;&#039;&amp;quot; angepasst werden, das erleichtert den ersten Connect mit dem Modul. Seit der Version 2.1.2 können die WIFI Einstellungen 2-fach angegeben werden, somit wechselt das Device automatisch auf den 2. Wifi Hotspot wenn der erste nicht erreicht wird.&lt;br /&gt;
&lt;br /&gt;
 #define STA_SSID               &amp;quot;SSID&amp;quot;      // Wifi SSID&lt;br /&gt;
 #define STA_PASS               &amp;quot;password&amp;quot;  // Wifi password&lt;br /&gt;
 #define WIFI_HOSTNAME          &amp;quot;%s-%04d&amp;quot;         // Expands to &amp;lt;MQTT_TOPIC&amp;gt;-&amp;lt;last 4 decimal chars of MAC address&amp;gt;&lt;br /&gt;
 #define WIFI_CONFIG_TOOL       WIFI_WPSCONFIG    // Default tool if wifi fails to connect (WIFI_SMARTCONFIG, WIFI_MANAGER or WIFI_WPSCONFIG)&lt;br /&gt;
&lt;br /&gt;
 // Syslog&lt;br /&gt;
 #define SYS_LOG_HOST           &amp;quot;Ip-Adresse-Server&amp;quot;&lt;br /&gt;
 #define SYS_LOG_PORT           514&lt;br /&gt;
 #define SYS_LOG_LEVEL          LOG_LEVEL_NONE&lt;br /&gt;
 #define SERIAL_LOG_LEVEL       LOG_LEVEL_INFO&lt;br /&gt;
 #define WEB_LOG_LEVEL          LOG_LEVEL_INFO&lt;br /&gt;
&lt;br /&gt;
 // Ota&lt;br /&gt;
 #if (ARDUINO &amp;gt;= 168)&lt;br /&gt;
  #define OTA_URL              &amp;quot;http://Ip-Adresse-Server:80/api/arduino/&amp;quot; PROJECT &amp;quot;.ino.bin&amp;quot;&lt;br /&gt;
 #else&lt;br /&gt;
  #define OTA_URL              &amp;quot;http://Ip-Adresse-Server:80/api/arduino/&amp;quot; PROJECT &amp;quot;.cpp.bin&amp;quot;&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
 // MQTT&lt;br /&gt;
 #define MQTT_HOST              &amp;quot;Ip-Adresse-Server&amp;quot;&lt;br /&gt;
 #define MQTT_PORT              1883&lt;br /&gt;
&lt;br /&gt;
 #define MESSAGE_FORMAT         JSON         // [MessageFormat] MQTT Message Format (LEGACY or JSON)&lt;br /&gt;
 #define MQTT_STATUS_OFF        &amp;quot;OFF&amp;quot;        // Command or Status result when turned off (needs to be a string like &amp;quot;0&amp;quot; or &amp;quot;Off&amp;quot;)&lt;br /&gt;
 #define MQTT_STATUS_ON         &amp;quot;ON&amp;quot;         // Command or Status result when turned on (needs to be a string like &amp;quot;1&amp;quot; or &amp;quot;On&amp;quot;)&lt;br /&gt;
 #define MQTT_CMND_TOGGLE       &amp;quot;TOGGLE&amp;quot;     // Command to send when toggling (needs to be a string like &amp;quot;2&amp;quot; or &amp;quot;Toggle&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
In neueren Versionen (ab 3.2.8) wurde auch das Ausgabeformat von LEGACY auf JSON geändert. Gegebenenfalls ist auch hier auf LEGACY zu ändern, da alle Beispiele nur mit &amp;quot;LEGACY&amp;quot; funktionieren.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wichtig:&#039;&#039;&#039; Bei Verwendung des &#039;&#039;&#039;sonoff_POW&#039;&#039;&#039; muss dies ebenfalls in der user_config.h eingestellt werden, also das &amp;quot;SONOFF&amp;quot; sperren und das &amp;quot;&#039;&#039;&#039;SONOFF_POW&#039;&#039;&#039;&amp;quot; aktivieren (// setzen/entfernen). Wir dies nicht durchgeführt, werden auch keine Leistungsdaten via MQTT übertragen!!! (gilt nicht für Tasmota).&lt;br /&gt;
Ebenso muss in (%userprofile%\Documents\Arduino\libraries\pubsubclient\src\PubSubClient.h) die Max Packet Size auf 400 erhöht werden!&lt;br /&gt;
&lt;br /&gt;
  #define MQTT_MAX_PACKET_SIZE 400&lt;br /&gt;
  #define MQTT_KEEPALIVE 120&lt;br /&gt;
Anpassung der max. Packet Size auf 400 und das Keepalive auf 120&lt;br /&gt;
&lt;br /&gt;
 // Enable only one out of three MODULE defines below&lt;br /&gt;
 //#define MODULE                 SONOFF            // Sonoff, Sonoff SV, Sonoff Dual, Sonoff TH 10A/16A, S20 Smart Socket, 4 Channel&lt;br /&gt;
 #define MODULE                 SONOFF_POW        // Sonoff Pow&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Anschluß wird der Sketch mit der Arduino IDE (getestet mit 1.6.12) compiliert und die Binary dann exportiert (Sketch / Kompilierte Binärdatei exportieren). Die erzeugte .bin Datei dann mit dem Tool &amp;quot;ESP8266Flasher.exe&amp;quot; flashen, so wie auch bei ESPEasy. Wer nicht compilieren will, kann auch im Unterverzeichnis ./api/arduino/ die fertige Binary ( sonoff.ino ) benutzen, aber dann ohne Voreinstellung der lokalen IPs.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===MQTT testen===&lt;br /&gt;
[[Datei:sonoff_sw_20.jpg|thumb|left|alt=Arends Menü]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nach erfolgtem Flash des Modules kann das Webinterface des Moduls zum ersten Mal aufgerufen werden (im Router nach der IP des Moduls suchen).&lt;br /&gt;
&lt;br /&gt;
Es bieten sich hier mehrere Möglichkeiten die die weitere Einrichtung des Moduls unterstützen. Einfach die Menüpunkte durchprobieren, sie erklären sich von selbst. Für erste Tests empfiehlt sich die lokale Konsole um die Ereignisse aus Sicht des Modules mit verfolgen zu können. Alles was hier gesendet wird, sollte ebenfalls am Server mitgeloggt werden können. Wenn bis hierher alles funktioniert, kann dann mir der Konfiguration in FHEM beginnen.&lt;br /&gt;
&lt;br /&gt;
Der Name des Moduls kann unter &amp;quot;Configuration&amp;quot; -&amp;gt; &amp;quot;Configure MQTT&amp;quot; -&amp;gt; &amp;quot;Topic (sonoff)&amp;quot; nachgeschaut und geändert werden. In FHEM wird beim definieren des Moduls dieser Name in den subscribeReadings bzw. publishSets eingegeben um die Verbindung zum Modul herzustellen.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Am Server jetzt eine Konsole öffnen und folgende Topic (alle) einstellen.&lt;br /&gt;
&lt;br /&gt;
 mosquitto_sub -d -v -t \# &lt;br /&gt;
Mit dieser Einstellung werden alle Topics geloggt! &lt;br /&gt;
&lt;br /&gt;
 pi@raspberry ~ $ mosquitto_sub -d -v -t \#&lt;br /&gt;
 Received CONNACK&lt;br /&gt;
 Received SUBACK&lt;br /&gt;
 Subscribed (mid: 1): 0&lt;br /&gt;
 Received PUBLISH (d0, q0, r1, m0, &#039;/sonoff/36/temperature&#039;, ... (5 bytes))&lt;br /&gt;
 /sonoff/36/temperature 14.06&lt;br /&gt;
 Received PUBLISH (d0, q0, r1, m0, &#039;/sonoff/35/Count&#039;, ... (3 bytes))&lt;br /&gt;
 /sonoff/35/Count 0.0&lt;br /&gt;
 Received PUBLISH (d0, q0, r1, m0, &#039;/sonoff/35/Total&#039;, ... (3 bytes))&lt;br /&gt;
 /sonoff/35/Total 0.0&lt;br /&gt;
 Received PUBLISH (d0, q0, r1, m0, &#039;/sonoff/35/Time&#039;, ... (1 bytes))&lt;br /&gt;
 /sonoff/35/Time 0&lt;br /&gt;
 Received PUBLISH (d0, q0, r1, m0, &#039;/sonoff/temperature&#039;, ... (5 bytes))&lt;br /&gt;
 /sonoff/temperature 14.00&lt;br /&gt;
 Received PUBLISH (d0, q0, r1, m0, &#039;/sonoff/Count&#039;, ... (3 bytes))&lt;br /&gt;
 /sonoff/Count 0.0&lt;br /&gt;
 Received PUBLISH (d0, q0, r1, m0, &#039;/sonoff/Total&#039;, ... (3 bytes))&lt;br /&gt;
 /sonoff/Total 0.0&lt;br /&gt;
 Received PUBLISH (d0, q0, r1, m0, &#039;/sonoff/Time&#039;, ... (1 bytes))&lt;br /&gt;
 /sonoff/Time 0&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;stat/sonoff/1/POWER&#039;, ... (2 bytes))&lt;br /&gt;
 stat/sonoff/1/POWER ON&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;stat/sonoff/1/POWER&#039;, ... (3 bytes))&lt;br /&gt;
 stat/sonoff/1/POWER OFF&lt;br /&gt;
&lt;br /&gt;
Interessant sind für uns nun diese Einträge &amp;quot;stat/sonoff/1/POWER ON&amp;quot; , dazu am Taster des sonoff manuell umschalten. Dies entspricht genau der Syntax wie sie im Anschluss in FHEM dann zu verwenden ist.&lt;br /&gt;
&lt;br /&gt;
Mit diesen Einstellungen können dann entweder nach Telemetriedaten oder nach Statusmeldungen gefiltert werden. Dies ist jedoch nur notwendig wenn bereits andere MQTT Devices am Broker hängen und es sonst zu unübersichtlich wird.&lt;br /&gt;
 mosquitto_sub -h localhost -t tele/sonoff/#    = Telemetriedaten&lt;br /&gt;
 mosquitto_sub -h localhost -t stat/sonoff/#    = Statusmeldungen&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_21.jpg|thumb|left|alt=Arends Log]]&lt;br /&gt;
Sehr nützlich das lokale Log zur Fehlersuche und Inbetriebnahme.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Als Besonderheit benutzt der Autor zum Senden und Empfangen unterschiedliche Syntax und unterscheidet dies durch vorangestellte Prefixe vor der eigentlichen Topic.&lt;br /&gt;
#define SUB_PREFIX       &amp;quot;cmnd&amp;quot;       Sonoff devices subscribe to:- cmnd/MQTT_TOPIC and cmnd/MQTT_GRPTOPIC&lt;br /&gt;
#define PUB_PREFIX       &amp;quot;stat&amp;quot;       Sonoff devices publish to:- stat/MQTT_TOPIC&lt;br /&gt;
#define PUB_PREFIX2      &amp;quot;tele&amp;quot;       Sonoff devices publish telemetry data to:- tele/MQTT_TOPIC/UPTIME, POWER/LIGHT and TIME&lt;br /&gt;
Bitte dies unbedingt in der FHEM Konfiguration dann beachten!&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==MQTT in FHEM einrichten==&lt;br /&gt;
[[Datei:sonoff_sw_24.jpg|thumb|left|alt=FHEM sonoff Schalter]]&lt;br /&gt;
Dieser einfache Schalter kommuniziert bidirektional mit dem sonoff Device.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_25.jpg|thumb|left|alt=FHEM sonoff Schalter]]&lt;br /&gt;
Die Readings in diesem verwendeten Beispiel zeigen sich wie in FHEM gewohnt.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Einrichtung in FHEM wird von den Modulen 00_MQTT.pm, 10_MQTT_BRIDGE und 10_MQTT_DEVICE.pm unterstützt.&lt;br /&gt;
&lt;br /&gt;
[https://forum.fhem.de/index.php?topic=27532.0 Link zum Forum: MQTT FHEM Einrichtung]&lt;br /&gt;
&lt;br /&gt;
 ### 1. Broker anlegen ###&lt;br /&gt;
 define myBroker MQTT 10.0.0.5:1883&lt;br /&gt;
&lt;br /&gt;
 ### 2. FHEM Device mit MQTT verbinden ###&lt;br /&gt;
 define Sonoff_Switch MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Switch IODev myBroker&lt;br /&gt;
 attr Sonoff_Switch eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_Switch icon hue_filled_br30&lt;br /&gt;
 attr Sonoff_Switch publishSet ON OFF cmnd/sonoff/1/POWER/set&lt;br /&gt;
 attr Sonoff_Switch room MQTT&lt;br /&gt;
 attr Sonoff_Switch stateFormat Licht&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_Licht stat/sonoff/POWER&lt;br /&gt;
 # oder mit tele, je nachdem was in der user_config.h eingestellt wurde!!!&lt;br /&gt;
 #attr Sonoff_Switch subscribeReading_Licht tele/sonoff/POWER &lt;br /&gt;
 attr Sonoff_Switch subscribeReading_state cmnd/sonoff/1/POWER/set&lt;br /&gt;
 attr Sonoff_Switch webCmd ON:OFF&lt;br /&gt;
Der hier dargestellte Beispielcode realisiert die Kommunikation zwischen FHEM und dem sonoff Modul via MQTT Broker. Zu beachten ist hier, dass &#039;&#039;&#039;subscribeReading_Licht&#039;&#039;&#039; und &#039;&#039;&#039;subscribeReading_state&#039;&#039;&#039; unterschiedliche Syntax des Topic Strings haben!&lt;br /&gt;
Das Beispiel gilt für das &#039;&#039;&#039;LEGACY Messageformat&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Switch MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Switch IODev myBroker&lt;br /&gt;
 attr Sonoff_Switch devStateIcon ON:rc_GREEN:OFF OFF:rc_RED:ON&lt;br /&gt;
 attr Sonoff_Switch icon hue_filled_br30&lt;br /&gt;
 attr Sonoff_Switch publishSet ON OFF cmnd/TestSwitch/POWER/set&lt;br /&gt;
 attr Sonoff_Switch room MQTT&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_Licht stat/Sonoff_Switch/POWER&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_Sensor tele/Sonoff_Switch/SENSOR&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_Status stat/Sonoff_Switch/STATUS&lt;br /&gt;
 attr Sonoff_Switch webCmd ON:OFF&lt;br /&gt;
und hier das gleiche für &#039;&#039;&#039;Tasmota&#039;&#039;&#039;, es sind nur geringfügige Modifikationen notwendig.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
==Sonoff POW einrichten==&lt;br /&gt;
[[Datei:sonoff_sw_31.jpg|thumb|left|alt=Sonoff POW]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier geht es ausschließlich um das Modul Sonoff POW!}}&lt;br /&gt;
Das Modul kommt in gewohnter Itead Qualität und eine derart kostengünstige Energiemessung wird bei Smart Home Anwendern gerne eingesetzt. Die Originalsoftware habe ich nicht einmal getestet, da damit eine Anbindung an FHEM leider nicht möglich ist.&lt;br /&gt;
&lt;br /&gt;
Ebenso möchte kaum jemand an eine nicht dokumentierte chinesische Cloud die Steuerbefehle seiner Schalter senden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_sw_33.jpg|thumb|left|alt=Sonoff POW]]&lt;br /&gt;
Bitte auf keinen Fall das Modul während der Arbeiten an die Netzspannung anschießen. Zum Flashen genügt (und nur diese) die Versorgungspannung des USB-TTL Konverters. Wie auf dem Foto gut erkennbar, wurde dieses Modul ohne einlöten einer Pfostensteckerleiste geflasht. Die Steckverbindung wird einfach in die Lötaugen gesteckt und mit einem Gummiring fixiert, da ja spätere Flashvorgänge im Webif des Models funktionieren und so die Arbeit eingespart werden kann. Es steht jedoch nichts im Wege die Pfostensteckerleiste einzulöten.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Die Anschlüsse am Modul sind wie folgt belegt.&lt;br /&gt;
 o GND&lt;br /&gt;
 o TxD&lt;br /&gt;
 o RxD&lt;br /&gt;
 o VDD&lt;br /&gt;
&lt;br /&gt;
Für den Flashvorgang gelten die selben Regeln wie schon beim sonoff Switch oben erwähnt (3,3V!).&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Sonoff POW Software===&lt;br /&gt;
[[Datei:sonoff_sw_35.jpg|thumb|left|alt=Sonoff POW FHEM]]&lt;br /&gt;
Als Software steht im Augenblick nur der Sketch von Arends zur Verfügung, liefert aber alles was das Herz begehrt und ist ist einfach zu handhaben. Hier eine eine einfache Darstellung mit der aktuellen Leistung und dem Tagesverbrauch. Zusätzlich besteht auch noch die Möglichkeit den angeschlossenen Verbraucher Ein- oder Auszuschalten. Getestet wurde hier mit der Version 2.06, 2.07 und 2.019a von Arends.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_pow_02.jpg|thumb|left|alt=Sonoff POW Webif]]&lt;br /&gt;
Seit Version 2.0.19a ist auch die Leistungsanzeige im WEBIF wie im Bild links integriert. Auch der Energieverbrauch des Vortages wird mit angezeigt. Alle hier angezeigten Daten werden auch zyklisch im MQTT String an FHEM übergeben.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich kann im Sketch auch das Feature &amp;quot;&#039;&#039;&#039;Power_Limit&#039;&#039;&#039;&amp;quot; aktiviert werden ( #define FEATURE_POWER_LIMIT in der sonoff.ino). Wenn dies gewünscht ist, dann vor dem compilieren die beiden // entfernen. Mit dem Power_Limit wird eine zusätzliche Nachricht erzeugt, wenn ein bestimmter einstellbarer Grenzwert über- oder unterschritten wird. &lt;br /&gt;
&lt;br /&gt;
Es lassen sich dadurch Meldungen wie &amp;quot;Waschmaschine fertig&amp;quot; oder ähnliches ohne weitere Schwellwert Überwachungen in FHEM ableiten. Die Meldungen kommen in MQTT mit &amp;quot;&#039;&#039;&#039;tele/sonoff/POWER_LOW ON&#039;&#039;&#039;&amp;quot; bzw. &amp;quot;&#039;&#039;&#039;tele/sonoff/POWER_LOW OFF&#039;&#039;&#039;&amp;quot;.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Bevor der Sketch compiliert wird, müssen neben den IP-Einstellungen noch in der user_config.h auch andere Einstellungen vorgenommen werden.&lt;br /&gt;
&lt;br /&gt;
 #define MODULE                 SONOFF_POW       // Hardware module type (SONOFF, SONOFF_POW or ELECTRO_DRAGON)&lt;br /&gt;
 #define PROJECT                &amp;quot;sonoffpow&amp;quot;     // PROJECT is used as the default topic delimiter and OTA file name                                            // As an IDE restriction it needs to be the same as the main .ino file&lt;br /&gt;
&lt;br /&gt;
Der Typ des Modules muss von &amp;quot;SONOFF&amp;quot; auf &amp;quot;&#039;&#039;&#039;SONOFF_Pow&#039;&#039;&#039;&amp;quot; geändert werden,. damit die Software weiß mit welchem Modul es zu tun hat und kann dann die entsprechenden Berechnungen durchführen. Die Leistungsdaten kommen ja in Form einer Frequenz aus dem Baustein und müssen im Sketch (xsns_hlw8102.ino) umgerechnet werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #elif MODULE == SONOFF_POW                  // programming header 1:3.3V 2:rx 3:tx 4:gnd&lt;br /&gt;
  #define APP_NAME             &amp;quot;Sonoff Pow module&amp;quot;&lt;br /&gt;
  #define USE_POWERMONITOR                  // Enable Power Monitoring&lt;br /&gt;
  #define USE_POWERCALIBRATION              // Enable setting Calibration parameters by user commands&lt;br /&gt;
&lt;br /&gt;
Bei Einsatz des POW Modules kann die externe Kalibrierung aktiviert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Definition aus der power.ino (2.0.9) für die korrekte Umrechnung der gelieferten Frequenzen für die Leistungsdaten.&lt;br /&gt;
 #define HLW_PREF            10000    // 1000.0W&lt;br /&gt;
 #define HLW_UREF             2200    // 220.0V&lt;br /&gt;
 #define HLW_IREF             4545    // 4.545A&lt;br /&gt;
&lt;br /&gt;
 #define HLW_PREF_PULSE       4975    // 4975us = 201Hz = 1000W&lt;br /&gt;
 #define HLW_UREF_PULSE       1666    // 1666us = 600Hz = 220V&lt;br /&gt;
 #define HLW_IREF_PULSE       1666    // 1666us = 600Hz = 4.545A&lt;br /&gt;
                                            &lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_sw_36.jpg|thumb|left|alt=Sonoff POW Attribute]]&lt;br /&gt;
Dieses Bild zeigt die Attribute die vom Modul via MQTT an FHEM geliefert werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
aktuell gelieferte Readings (Mqtt Strings) vom Sketch nach unten dargestellter Definition in FHEM.&lt;br /&gt;
 tele/sonoffpow/TODAY_ENERGY    &lt;br /&gt;
 tele/sonoffpow/PERIOD_ENERGY   &lt;br /&gt;
 tele/sonoffpow/POWER_FACTOR   &lt;br /&gt;
 tele/sonoffpow/CURRENT_POWER  &lt;br /&gt;
 tele/sonoffpow/VOLTAGE         &lt;br /&gt;
 tele/sonoffpow/CURRENT        &lt;br /&gt;
&lt;br /&gt;
Hier ein Mittschnitt des Datenverkehrs zum Broker zwecks Kontrolle der korrekten Funktion der Module und der Software.&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff/RSSI&#039;, ... (2 bytes))&lt;br /&gt;
 tele/sonoff/RSSI 82&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff/TEMPERATURE&#039;, ... (3 bytes))&lt;br /&gt;
 tele/sonoff/TEMPERATURE 1.9&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff/HUMIDITY&#039;, ... (4 bytes))&lt;br /&gt;
 tele/sonoff/HUMIDITY 97.9&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff/POWER&#039;, ... (3 bytes))&lt;br /&gt;
 tele/sonoff/POWER OFF&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff/TIME&#039;, ... (19 bytes))&lt;br /&gt;
 tele/sonoff/TIME 2016-11-12T10:36:13&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/UPTIME&#039;, ... (1 bytes))&lt;br /&gt;
 tele/sonoffpow/UPTIME 1&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/RSSI&#039;, ... (2 bytes))&lt;br /&gt;
 tele/sonoffpow/RSSI 34&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/TODAY_ENERGY&#039;, ... (5 bytes))&lt;br /&gt;
 tele/sonoffpow/TODAY_ENERGY 0.083&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/PERIOD_ENERGY&#039;, ... (1 bytes))&lt;br /&gt;
 tele/sonoffpow/PERIOD_ENERGY 8&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/CURRENT_POWER&#039;, ... (2 bytes))&lt;br /&gt;
 tele/sonoffpow/CURRENT_POWER 97&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/POWER_FACTOR&#039;, ... (4 bytes))&lt;br /&gt;
 tele/sonoffpow/POWER_FACTOR 1.00&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/VOLTAGE&#039;, ... (3 bytes))&lt;br /&gt;
 tele/sonoffpow/VOLTAGE 225&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/CURRENT&#039;, ... (5 bytes))&lt;br /&gt;
 tele/sonoffpow/CURRENT 0.426&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/POWER&#039;, ... (2 bytes))&lt;br /&gt;
 tele/sonoffpow/POWER ON&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/TIME&#039;, ... (19 bytes))&lt;br /&gt;
 tele/sonoffpow/TIME 2016-11-12T10:36:28&lt;br /&gt;
 Sending PINGREQ&lt;br /&gt;
 Received PINGRESP&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Einstellungen können mit folgender Syntax angefordert werden (zwei Terminalfenster öffnen, eines zum protokollieren und eines zum Seden der Befehle).&lt;br /&gt;
 mosquitto_sub -d -v -t \#  MQTT Datenverkehr protokolieren&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/1/status/set -m &amp;quot;8&amp;quot;      = SonoffPOW Status jetzt auslesen&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/1/TelePeriod/set -m &amp;quot;60&amp;quot; = Timer setzen, alle 60 Sekunden Daten senden &lt;br /&gt;
Die Kommandos können direkt am Broker (Terminalfenster Putty etc.) abgesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sonoff POW Kalibrieren ===&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier wird beschrieben, wie der &#039;&#039;Sonoff POW kalibriert&#039;&#039; werden kann. }}&lt;br /&gt;
Ab Version 2.0.11 kann nun auch der POW kalibriert werden.&lt;br /&gt;
Dazu kann man 2 Konsolenfenster öffnen, im ersten aktiviert man das Protokoll für den Datenverkehr&lt;br /&gt;
 mosquitto_sub -d -v -t \#  MQTT Datenverkehr protokollieren&lt;br /&gt;
&lt;br /&gt;
Dann kann mit folgenden Befehlen die HLW Referenz Pulsfrequenz gesetzt werden.&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/1/HLWUCAL/set -m &amp;quot;2100&amp;quot;     default = 1950&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/1/HLWICAL/set -m &amp;quot;2450&amp;quot;     default = 3500&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/1/HLWPCAL/set -m &amp;quot;13500&amp;quot;    default = 12345 &lt;br /&gt;
Entweder man hat eine definierte Last zur Verfügung oder besser man misst mit einem Leistungsmesser nach. Die Spannung kann man mit einem Multimeter nachmessen (sollte 230 V sein) und der Strom wird errechnet (bei 100 Watt I = P / U ) = 100/230 = 0,4347.&lt;br /&gt;
Die Referenzwerte solange geringfügig ändern bis die Ausgabe passt. Für die Ausgabe wird einfach eine Statusabfrage durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/1/status/set -m &amp;quot;8&amp;quot;&lt;br /&gt;
Befehl für die Statusabfrage&lt;br /&gt;
&lt;br /&gt;
 cmnd/sonoffpow/1/status/set 8&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;stat/sonoffpow/1/STATUS&#039;, ... (103 bytes))&lt;br /&gt;
 stat/sonoffpow/1/STATUS PWR: Voltage 225 V, Current 0.427 A, Current Power 98 W, Total Power Today 0.080 kWh, Power Factor 1.00&lt;br /&gt;
Ergebnis der Statusabfrage mit Spannung, Strom und Leistung.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sonoff POW FHEM Anbindung===&lt;br /&gt;
Ein Beispiel einer einfachen Anbindung via MQTT an FHEM. MQTT ist insofern notwendig, da in der Software ESPEasy und der Bridge noch keine Implementierung der Frequenzumrechnung enthalten ist.&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Pow MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Pow IODev myBroker&lt;br /&gt;
 attr Sonoff_Pow eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_Pow icon measure_power&lt;br /&gt;
 attr Sonoff_Pow publishSet ON OFF cmnd/sonoffpow/1/POWER/set&lt;br /&gt;
 attr Sonoff_Pow room MQTT&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_Power tele/sonoffpow/POWER&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_state cmnd/sonoffpow/1/POWER/set&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_TODAY_ENERGY tele/sonoffpow/TODAY_ENERGY&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_PERIOD_ENERGY tele/sonoffpow/PERIOD_ENERGY&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_CURRENT_POWER tele/sonoffpow/CURRENT_POWER&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_VOLTAGE tele/sonoffpow/VOLTAGE &lt;br /&gt;
 attr Sonoff_Pow subscribeReading_CURRENT tele/sonoffpow/CURRENT&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_AKTUELL stat/sonoffpow/1/STATUS&lt;br /&gt;
 attr Sonoff_Pow webCmd ON:OFF&lt;br /&gt;
 attr Sonoff_Pow stateFormat {sprintf(&amp;quot;akutelle Leistung: %.1f W Tagesverbrauch: %.2f Kw/h&amp;quot;, ReadingsVal($name,&amp;quot;CURRENT_POWER&amp;quot;,undef), ReadingsVal($name,&amp;quot;TODAY_ENERGY&amp;quot;,undef))}&lt;br /&gt;
Zusätzlich kann hier noch das Relais mit &amp;quot;on&amp;quot; und &amp;quot;off&amp;quot; ein- ausgeschaltet werden. Ab Version 2.0.15 wurden hier die ReadingsNamen auf TODAY_ENERGY und PERIOD_ENERGY (anstatt _POWER) geändert. &lt;br /&gt;
Dieses Beispiel gilt für das &#039;&#039;&#039;LEGACY Messageformat&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Pow MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Pow IODev myBroker&lt;br /&gt;
 attr Sonoff_Pow icon measure_power&lt;br /&gt;
 attr Sonoff_Pow publishSet ON OFF cmnd/sonoffpow/LIGHT/&lt;br /&gt;
 attr Sonoff_Pow stateFormat {sprintf(&amp;quot;aktuell: %.1f W Tag: %.2f Kw/h&amp;quot;, ReadingsVal($name,&amp;quot;Power&amp;quot;,undef), ReadingsVal($name,&amp;quot;Today&amp;quot;,undef))}&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_ENERGY tele/sonoffpow/ENERGY&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_LIGHT stat/sonoffpow/LIGHT&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_state cmnd/sonoffpow/LIGHT&lt;br /&gt;
 attr Sonoff_Pow webCmd ON:OFF&lt;br /&gt;
und das ist ein Beispiel für die Konfiguration für die &#039;&#039;&#039;Tasmota Software mit JSON&#039;&#039;&#039; und Einsatz des j2r Tools.&lt;br /&gt;
&lt;br /&gt;
===Sonoff POW Netz-Anschluß===&lt;br /&gt;
[[Datei:sonoff_sw_34.jpg|thumb|left|alt=Sonoff POW Netzanschluß]]&lt;br /&gt;
Erst wenn alle Arbeiten an der Hard- und Software abgeschlossen sind, kann man das Modul an die Netzspannung anschließen. Wer es sich einfach machen will, nimmt eine Industriell gefertigte 230 V Verlängerung  (zwischen 1,5 - 3 Meter) und schneidet sie in der Mitte durch. Nach dem abisolieren der flexiblen Drähte sollte diese &#039;&#039;&#039;verlötet oder mit Aderendhülsen&#039;&#039;&#039; versehen werden (müssen aber exakt passen, da hier kaum Platz in den Klemmen ist). &lt;br /&gt;
Mit einem kleinen Schraubendreher kann man die Feder der Klemmen niederdrücken und das verzinnte Drahtende tief ich die Öffnung stecken. Es dürfen keine Drahtlitzen aus den Öffnungen sichtbar sein, Kurzschlußgefahr! Ebenso sollte eine Zugprobe durchgeführt werden ob die Klemme auch richtig eingerastet ist.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ACHTUNG:&#039;&#039;&#039; diese Arbeiten müssen von einem ausgebildeten Fachpersonal (Elektriker) durchgeführt werden, Lebensgefahr!&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sonoff POW Design===&lt;br /&gt;
&lt;br /&gt;
====ReadingsGroup normal====&lt;br /&gt;
[[Datei:sonoff_sw_46.jpg|thumb|left|alt=Sonoff POW Design]]&lt;br /&gt;
Viele Benutzer wollen schönere und funktionelle Ausgaben am Bildschirm sehen. Die Möglichkeiten nach oben sind hier sehr vielfältig. Anhand von zwei einfachen aber mächtigen Funktionen hier ein kleines Beispiel wie hier im Bild dargestellt.&lt;br /&gt;
&lt;br /&gt;
Was das Design betrifft, sind hier mehrere Möglichkeiten gegeben und nach oben ist für findige Anwender alles offen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zunächst wird mit dem Hilfsmodul &amp;quot;&#039;&#039;&#039;average&#039;&#039;&#039;&amp;quot; eine Art Statistik (Durchschnittsberechnung, Min.,Max., etc.) hinzugefügt. Das beschränkt sich auf eine einzige Zeile. Es würde sich auch &#039;&#039;&#039;statistic&#039;&#039;&#039; dazu eignen.&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Pow_CURRENT_POWER average Sonoff_Pow:CURRENT_POWER.*&lt;br /&gt;
Die &amp;quot;average&amp;quot; Funktion wird in das Device &amp;quot;Sonof_Pow&amp;quot; auf das Reading &amp;quot;CURRENT_POWER&amp;quot; hinzugefügt.&lt;br /&gt;
&lt;br /&gt;
Der zweite Schritt wird eine &#039;&#039;&#039;readingsGroup&#039;&#039;&#039; mit den gewünschten und gefilterten Ausgabedaten. Durch die verschiedenen IF Abfragen der unterschiedlichen VALUE wird bei über- oder unterschreiten eines Wertes eine bestimmte Farbe angewandt. Weitere Beispiele dazu siehe im Wiki unter [http://www.fhemwiki.de/wiki/ReadingsGroup readingsGroup]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 define SonoffPows readingsGroup &amp;lt;%measure_power&amp;gt;,&amp;lt;aktuell&amp;gt;,&amp;lt;Tag&amp;gt;,&amp;lt;Strom&amp;gt;,&amp;lt;Durchschnitt&amp;gt;,&amp;lt;max.P&amp;gt;,&amp;lt;Schaltzyklen&amp;gt;,&amp;lt; hr &amp;gt; .*(Sonoff_Pow|Sonoff_Pow2):CURRENT_POWER,TODAY_ENERGY,CURRENT,CURRENT_POWER_avg_day,CURRENT_POWER_max_day,PERIOD_ENERGY&lt;br /&gt;
 attr SonoffPows mapping %ALIAS&lt;br /&gt;
 attr SonoffPows nameStyle style=&amp;quot;color:yellow&amp;quot;&lt;br /&gt;
 attr SonoffPows room MQTT&lt;br /&gt;
 attr SonoffPows valueFormat {&#039;CURRENT_POWER&#039; =&amp;gt;&amp;quot;%.0f W&amp;quot;, &#039;TODAY_ENERGY&#039; =&amp;gt;&amp;quot;%.2f Kw&amp;quot;, &#039;CURRENT&#039; =&amp;gt;&amp;quot;%.2f A&amp;quot;,&#039;CURRENT_POWER_max_day&#039; =&amp;gt; &amp;quot;%.0f W&amp;quot;,&#039;CURRENT_POWER_avg_day&#039; =&amp;gt; &amp;quot;%.2f W&amp;quot;,&#039;PERIOD_ENERGY&#039;=&amp;gt;&amp;quot;%.0f Zyklen&amp;quot;}&lt;br /&gt;
 attr SonoffPows valueStyle { if($READING eq &amp;quot;CURRENT_POWER&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 0 &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;TODAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 4.8){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;TODAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 2.5){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;TODAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 2.5 &amp;amp;&amp;amp; $VALUE &amp;lt; 4.8 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 0.45){&#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039;}elsif( $READING eq &amp;quot;CURRENT&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 0.45 &amp;amp;&amp;amp; $VALUE &amp;lt; 0.87 ){&#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 0.87){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;PERIOD_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 10){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;PERIOD_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 10 &amp;amp;&amp;amp; $VALUE &amp;lt; 15 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;PERIOD_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 15){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; } }&lt;br /&gt;
&lt;br /&gt;
Die readingsGroup sind etwas komplex zu lesen, aber nach etwas Einarbeitung klappt das schon. Die in diesem Beispiel verwendeten Readingsnamen beziehen sich auf die Beispielkonfigurationen hier im Wiki.&lt;br /&gt;
Das Beispiel ist für das LEGACY Messageformat ausgelegt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
====ReadingsGroup mit Schaltmöglichkeit====&lt;br /&gt;
[[Datei:sonoff_pow_03.jpg|thumb|left|alt=readingsGroup mit Schalter]]&lt;br /&gt;
Die vorher erwähnte ReadingsGroup kann auch gleich mit einem Schalter versehen werden um den POW Ein- oder Aus schalten zu können. Dazu ist aber eine andere Einstellung im Sketch erforderlich.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der &amp;quot;&#039;&#039;&#039;user_config.h&#039;&#039;&#039;&amp;quot; muss an dieser Stelle auch die &amp;quot;&#039;&#039;&#039;PUB_PREFIX&#039;&#039;&#039;&amp;quot; auf die gleiche Topic wie &amp;quot;PUB_PREFIX2&amp;quot; eingestellt werden. Durch diese Maßnahme wird erreicht, dass sofort nach dem Knopfdruck auch der Status mit der Topic &amp;quot;tele&amp;quot; übertragen wird. Würde der weiterhin mit &amp;quot;stat&amp;quot; übertragen, kann er in der Readingsgroup nur sehr umständlich weiter behandelt werden. Dadurch wird erreicht, dass der Schalter sofort nach dem Schaltvorgang und der Rückmeldung (Status) auch seine Farbe ändert. Wird dieser Eintrag vergessen, ändert der Schalter erst nach Eintreffen der nächsten zyklischen Abfrage seinen Status/Farbe.&lt;br /&gt;
&lt;br /&gt;
 #define SUB_PREFIX             &amp;quot;cmnd&amp;quot;       // Sonoff devices subscribe to:- SUB_PREFIX/MQTT_TOPIC and SUB_PREFIX/MQTT_GRPTOPIC&lt;br /&gt;
 #define PUB_PREFIX             &amp;quot;tele&amp;quot;       // Sonoff devices publish to:- PUB_PREFIX/MQTT_TOPIC&lt;br /&gt;
 #define PUB_PREFIX2            &amp;quot;tele&amp;quot;       // Sonoff devices publish telemetry data to:- PUB_PREFIX2/MQTT_TOPIC/UPTIME, POWER/LIGHT and TIME&lt;br /&gt;
hier die PUB_PREFIX mit der geänderten Topic &amp;quot;tele&amp;quot; anstatt &amp;quot;stat&amp;quot; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 define SonoffPows readingsGroup &amp;lt;%measure_power&amp;gt;,&amp;lt;aktuell&amp;gt;,&amp;lt;Tag&amp;gt;,&amp;lt;Gestern&amp;gt;,&amp;lt;Strom&amp;gt;,&amp;lt;Durchschnitt&amp;gt;,&amp;lt;max.P&amp;gt;,&amp;lt;Zyklus&amp;gt;,&amp;lt;Faktor&amp;gt;,&amp;lt;Status&amp;gt;,&amp;lt; hr &amp;gt; .*(Sonoff_Pow|Sonoff_Pow2|Sonoff_Pow3):CURRENT_POWER,TODAY_ENERGY,YESTERDAY_ENERGY,CURRENT,CURRENT_POWER_avg_day,CURRENT_POWER_max_day,PERIOD_ENERGY,POWER_FACTOR,LIGHT&lt;br /&gt;
 attr SonoffPows commands {&#039;LIGHT.ON&#039; =&amp;gt; &#039;set $DEVICE OFF&#039;,&#039;LIGHT.OFF&#039; =&amp;gt; &#039;set $DEVICE ON&#039;}&lt;br /&gt;
 attr SonoffPows mapping %ALIAS&lt;br /&gt;
 attr SonoffPows nameStyle style=&amp;quot;color:yellow&amp;quot;&lt;br /&gt;
 attr SonoffPows room Energie,MQTT&lt;br /&gt;
 attr SonoffPows valueFormat {&#039;CURRENT_POWER&#039; =&amp;gt;&amp;quot;%.0f W&amp;quot;, &#039;TODAY_ENERGY&#039; =&amp;gt;&amp;quot;%.2f Kw&amp;quot;,&#039;YESTERDAY_ENERGY&#039; =&amp;gt;&amp;quot;%.2f Kw&amp;quot;, &#039;CURRENT&#039; =&amp;gt;&amp;quot;%.2f A&amp;quot;,&#039;CURRENT_POWER_max_day&#039; =&amp;gt; &amp;quot;%.0f W&amp;quot;,&#039;CURRENT_POWER_avg_day&#039; =&amp;gt; &amp;quot;%.2f W&amp;quot;,&#039;CURRENT_POWER&#039;=&amp;gt;&amp;quot;%.0f W&amp;quot;,&#039;POWER_FACTOR&#039; =&amp;gt; &amp;quot;%.2f &amp;quot;}&lt;br /&gt;
 attr SonoffPows valueIcon {&#039;LIGHT.ON&#039; =&amp;gt; &#039;rc_GREEN@green&#039;, &#039;LIGHT.OFF&#039; =&amp;gt; &#039;rc_RED@red&#039;}&lt;br /&gt;
 attr SonoffPows valueStyle { if($READING eq &amp;quot;CURRENT_POWER&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 0 &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;TODAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 4.8){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;TODAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 2.5){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;TODAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 2.5 &amp;amp;&amp;amp; $VALUE &amp;lt; 4.8 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;YESTERDAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 2.5){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;YESTERDAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 2.5 &amp;amp;&amp;amp; $VALUE &amp;lt; 4.8 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;YESTERDAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 4.8){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 0.45){&#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039;}elsif( $READING eq &amp;quot;CURRENT&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 0.45 &amp;amp;&amp;amp; $VALUE &amp;lt; 0.87 ){&#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 0.87){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;PERIOD_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 10){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;PERIOD_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 10 &amp;amp;&amp;amp; $VALUE &amp;lt; 15 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;PERIOD_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 15){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; } }&lt;br /&gt;
hier die erweiterte ReadingsGroup mit dem Schalter. Bei Bedarf sind hier die Devicenamen anzupassen wenn andere Namen verwendet werden (Sonoff_Pow|Sonoff_Pow2|Sonoff_Pow3).&lt;br /&gt;
Das Beispiel gilt für das &#039;&#039;&#039;LEGACY Messageformat&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 define SonoffPows readingsGroup &amp;lt;%measure_power&amp;gt;,&amp;lt;aktuell&amp;gt;,&amp;lt;Tag&amp;gt;,&amp;lt;Gestern&amp;gt;,&amp;lt;Strom&amp;gt;,&amp;lt;Durchschnitt&amp;gt;,&amp;lt;max.P&amp;gt;,&amp;lt;Zyklus&amp;gt;,&amp;lt;Faktor&amp;gt;,&amp;lt;Status&amp;gt;,&amp;lt; hr &amp;gt; .*(Sonoff_Pow|Sonoff_Pow2|Sonoff_Pow3|Sonoff_Pow4):Power,Today,Yesterday,Current,Power_avg_day,Power_max_day,Period,Factor,LIGHT&lt;br /&gt;
 attr SonoffPows commands {&#039;LIGHT.ON&#039; =&amp;gt; &#039;set $DEVICE OFF&#039;,&#039;LIGHT.OFF&#039; =&amp;gt; &#039;set $DEVICE ON&#039;}&lt;br /&gt;
 attr SonoffPows mapping %ALIAS&lt;br /&gt;
 attr SonoffPows nameStyle style=&amp;quot;color:yellow&amp;quot;&lt;br /&gt;
 attr SonoffPows room Energie,MQTT&lt;br /&gt;
 attr SonoffPows valueFormat {&#039;Power&#039; =&amp;gt;&amp;quot;%.0f W&amp;quot;, &#039;Today&#039; =&amp;gt;&amp;quot;%.2f Kw&amp;quot;,&#039;Yesterday&#039; =&amp;gt;&amp;quot;%.2f Kw&amp;quot;, &#039;CURRENT&#039; =&amp;gt;&amp;quot;%.2f A&amp;quot;,&#039;Power_max_day&#039; =&amp;gt; &amp;quot;%.0f W&amp;quot;,&#039;Power_avg_day&#039; =&amp;gt; &amp;quot;%.2f W&amp;quot;,&#039;Power&#039;=&amp;gt;&amp;quot;%.0f W&amp;quot;,&#039;Factor&#039; =&amp;gt; &amp;quot;%.2f &amp;quot;}&lt;br /&gt;
 attr SonoffPows valueIcon {&#039;LIGHT.ON&#039; =&amp;gt; &#039;rc_GREEN@green&#039;, &#039;LIGHT.OFF&#039; =&amp;gt; &#039;rc_RED@red&#039;}&lt;br /&gt;
 attr SonoffPows valueStyle { if($READING eq &amp;quot;Power&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 0 &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Today&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 4.8){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Today&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 2.5){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Today&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 2.5 &amp;amp;&amp;amp; $VALUE &amp;lt; 4.8 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Yesterday&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 2.5){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Yesterday&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 2.5 &amp;amp;&amp;amp; $VALUE &amp;lt; 4.8 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Yesterday&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 4.8){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Current&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 0.45){&#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039;}elsif( $READING eq &amp;quot;Current&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 0.45 &amp;amp;&amp;amp; $VALUE &amp;lt; 0.87 ){&#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Current&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 0.87){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Period&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 10){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Period&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 10 &amp;amp;&amp;amp; $VALUE &amp;lt; 15 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Period&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 15){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039;}}&lt;br /&gt;
Dieses Beispiel ist für &#039;&#039;&#039;Tasmota mit JSON&#039;&#039;&#039; ausgelegt und benötigt ebenso wie oben die Erweiterung &amp;quot;average&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Pow_CURRENT_POWER average Sonoff_Pow:Power.*&lt;br /&gt;
damit werden der Durchschnitt und min max für Tasmota mit JSON erzeugt.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====POW mit FTUI anzeigen====&lt;br /&gt;
[[Datei:sonoff_pow_energy.JPG|thumb|left|alt=Tablett FTUI]]&lt;br /&gt;
Wer möchte kann die Energieanzeigen auch mit der [https://forum.fhem.de/index.php/topic,34233.0.html Tablett UI] für eine Tablet Ansicht gestalten. Mit dieser stehen viele Möglichkeiten zu einer attraktiven Darstellung zur Verfügung.&lt;br /&gt;
Hier ein Beispiel welches mit den Widget &amp;quot;[http://www.fhemwiki.de/wiki/FHEM_Tablet_UI#Widget_THERMOSTAT thermostat]&amp;quot; dargestellt ist.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Slampher Flashen==&lt;br /&gt;
[[Datei:sonoff_sl_53.jpg|thumb|left|alt=Sonoff SLAMPHER]]&lt;br /&gt;
Dieses Modul ist eine Besonderheit was das Flashen betrifft, denn mit Hilfe des Tasters kann der ESP8266 NICHT in den Flashmode gebracht werden. Der Taster ist intern anderwärtig verdrahtet und somit für diesen Zweck nicht zu gebrauchen.&lt;br /&gt;
&lt;br /&gt;
Wie hier links im Bild zu sehen ist, muss der rechte Pin des R20 (oben im Bild) während dem Einstecken des USB Steckers auf Masse gelegt werden. Die beste Möglichkeit ist ein Stücken Draht anzulöten und diesen dann beim einstecken auf den Masse Pin des USB-Konverters zu legen.&lt;br /&gt;
&lt;br /&gt;
Pinbelegung des Steckers von oben nach unten:&lt;br /&gt;
 o - GND&lt;br /&gt;
 o - TxD&lt;br /&gt;
 o - RxD&lt;br /&gt;
 &#039;&#039;&#039;o&#039;&#039;&#039; - Vdd&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sl_51.jpg|thumb|left|alt=Sonoff SLAMPHER R20]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier ist genau ersichtlich, wo der R20 auf der Platine platziert ist. }}&lt;br /&gt;
Hier nocheinmal schön zu sehen wo der R20 (der ist nicht eingelötet sondern leer) exakt auf der Platine liegt, gemeint ist der rechte Pin. Hier kann auch leicht gelötet werden, da keine empfindlichen Bauteile in der Nähe sind und auch genug Platz vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_sl_50.jpg|thumb|left|alt=Sonoff SLAMPHER R20]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier ist genau ersichtlich, wo der Draht am R20 aufgelötet wurde }}&lt;br /&gt;
Hier ist ein kleines Stück Schaltdraht auf den Pin bereist aufgelötet und bereit zum Flashen!&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel wurde keine Pfostensteckerleiste auf die Platine aufgelötet, sondern nur durchgesteckt und mit einem Gummiring  zum Relais fixiert, das erspart den Lötvorgang, weil in Zukunft dann ohnehin OTA geflasht werden kann.&lt;br /&gt;
&lt;br /&gt;
Also Pin20 auf Masse legen und USB-Konverter an den PC einstecken, dann den Draht von der Masse entfernen. Der ESP8266 sollte jetzt im Flashmodus bereit stehen und kann wie bereits oben beschrieben geflasht werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sonoff Slampher Software===&lt;br /&gt;
[[Datei:sonoff_sl_54.jpg|thumb|left|alt=Sonoff SLAMPHER FHEM]]&lt;br /&gt;
&lt;br /&gt;
Als Software wird Arends Sketch installiert (Kommunikation über MQTT), da zum derzeitigen Zeitpunkt ESPEasy das Modul noch nicht integriert hat und somit auch nicht ansteuern kann.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_SL MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_SL IODev myBroker&lt;br /&gt;
 attr Sonoff_SL devStateIcon ON:rc_GREEN:OFF OFF:rc_RED:ON&lt;br /&gt;
 attr Sonoff_SL icon hue_filled_br30&lt;br /&gt;
 attr Sonoff_SL publishSet ON OFF cmnd/sonoffsl/1/POWER/set&lt;br /&gt;
 attr Sonoff_SL room Bewegung,_Sonoff&lt;br /&gt;
 attr Sonoff_SL stateFormat Licht&lt;br /&gt;
 attr Sonoff_SL subscribeReading_Licht tele/sonoffsl/POWER&lt;br /&gt;
 attr Sonoff_SL subscribeReading_state cmnd/sonoffsl/1/POWER/set&lt;br /&gt;
 attr Sonoff_SL webCmd ON:OFF&lt;br /&gt;
&lt;br /&gt;
Hier ein Beispiel wie in FHEM der Slampher eingebunden werden kann. In diesem Beispiel wird davon ausgegangen, das das Modul &amp;quot;sonoffsl&amp;quot; unter Konfiguration am WEBIF (Configure MQTT bei Topic) so unbenannt wurde. Wer einen anderen Namen haben möchte, muss dies dann auch in FHEM entsprechend anpassen.&lt;br /&gt;
Das Beispiel gilt für das &#039;&#039;&#039;LEGACY Messageformat&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Th10/16 FHEM==&lt;br /&gt;
[[Datei:sonoff_th_01.jpg|thumb|left|alt=Sonoff TH10]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Temperatur Modul TH10 / 16! }}&lt;br /&gt;
Das Modul kann durch drücken des Tasters während dem Einstecken des USB-Konverters in den Flashmodus gebracht werden.&lt;br /&gt;
Der Th10/16 kann mit zwei unterschiedlichen Typen von Sensoren bestückt werden, hier im Beispiel mit dem externen Temperaturfühler DS18B20.&lt;br /&gt;
&lt;br /&gt;
Wie im Bild klar zu sehen ist, kann das Webif auch zur Darstellung via Mobile verwendet werden. Mit &amp;quot;Toggle&amp;quot; wird Ein- oder Aus geschaltet und  darunter ist die aktuelle Temperatur ersichtlich. Für diese Ansicht muss keine MQTT Verbindung eingerichtet werden, da die Kommunikation hier rein über HTTP erfolgt.&lt;br /&gt;
&lt;br /&gt;
Die unten dargestellten Beispiele für FHEM beziehen sich auf Arends Sketch, also über MQTT. Dieses Modul kann aber genauso leicht über ESPEasy und der ESPEasy-Bridge eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Pinbelegung des Steckers von oben nach unten:&lt;br /&gt;
 o - GND&lt;br /&gt;
 o - TxD&lt;br /&gt;
 o - RxD&lt;br /&gt;
 &#039;&#039;&#039;o&#039;&#039;&#039; - Vdd&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #define DSB_PIN              14           // GPIO 14 = DS18x20 (Sonoff_TH10A(16A), Sonoff SV)&lt;br /&gt;
 #define DSB_RESOLUTION       2            // Maximum number of decimals (0 - 3) showing Temperature&lt;br /&gt;
 // *** Option 1 - Single DS18B20 - Select either Option 1 OR Option 2&lt;br /&gt;
 #define SEND_TELEMETRY_DS18B20            // Enable sending single temperature telemetry&lt;br /&gt;
 // *** Option 2 - Multiple DS18B20 and/or DS18S20 (needs OneWire library!)&lt;br /&gt;
 //  #define SEND_TELEMETRY_DS18x20            // Enable sending multi temperature telemetry &lt;br /&gt;
In der user_config.h (Arends Sketch) muss hier die Option 1 aktiviert werden (entfernen der vorangestellten //) damit die Telemetriedaten auch gesendet werden. Es empfiehlt sich mindestens die Version &amp;gt;= V 2.0.16, weil hier die Sensoren erweitert wurden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #define DHT_PIN              14           // GPIO 14 = AM2301 (Sonoff_TH10A(16A), Sonoff SV)&lt;br /&gt;
 #define DHT_TYPE             AM2301       // DHT module type (DHT11, DHT21, DHT22, AM2301, AM2302 or AM2321)&lt;br /&gt;
 #define DHT_RESOLUTION       1            // Maximum number of decimals (0 - 3) showing Temperature&lt;br /&gt;
 #define SEND_TELEMETRY_DHT                // Enable sending temperature and humidity telemetry&lt;br /&gt;
Beispiel für den Sensor DHT22, Temperatur und Luftfeuchte. Es dürfen aber nicht beide Sensoren (DS18B20 + DHT22) gleichzeitig aktiviert werden, da ja beide an GPIO14 angehängt werden und es ansonsten zu Fehlfunktionen kommen würde.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_th_02.jpg|thumb|left|alt=Sonoff TH10]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Einbindung in FHEM via MQTT! }}&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ### Temperatur und Luftfeuchte vom Sonoff Switch ###&lt;br /&gt;
 define Sonoff_Temp MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Temp IODev myBroker&lt;br /&gt;
 attr Sonoff_Temp alias Pool Wasser&lt;br /&gt;
 attr Sonoff_Temp eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_Temp icon temperature_humidity&lt;br /&gt;
 attr Sonoff_Temp publishSet ON OFF cmnd/sonoffth/1/POWER/set&lt;br /&gt;
 attr Sonoff_Temp room _Sonoff&lt;br /&gt;
 attr Sonoff_Temp stateFormat {sprintf(&amp;quot;Temperatur: %.1f Grad&amp;quot;, ReadingsVal($name,&amp;quot;TEMPERATURE&amp;quot;,0))}&lt;br /&gt;
 attr Sonoff_Temp subscribeReading_TEMPERATURE tele/sonoffth/DS18B20/TEMPERATURE&lt;br /&gt;
 attr Sonoff_Temp subscribeReading_humidity tele/sonoffth/HUMIDITY&lt;br /&gt;
 attr Sonoff_Temp subscribeReading_state cmnd/sonoffth/1/POWER/set&lt;br /&gt;
Beispiel für FHEM mit Temperaturanzeige mit DS18B20&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Switch MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Switch IODev myBroker&lt;br /&gt;
 attr Sonoff_Switch alias Pool Licht&lt;br /&gt;
 attr Sonoff_Switch devStateIcon on:rc_GREEN:off off:rc_RED:on&lt;br /&gt;
 attr Sonoff_Switch eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_Switch icon light_ceiling&lt;br /&gt;
 attr Sonoff_Switch publishSet ON OFF cmnd/sonoffth/1/POWER/set&lt;br /&gt;
 attr Sonoff_Switch room _Sonoff&lt;br /&gt;
 attr Sonoff_Switch stateFormat Licht&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_Licht tele/sonoffth/POWER&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_state cmnd/sonoffth/1/POWER/set&lt;br /&gt;
 attr Sonoff_Switch webCmd ON:OFF&lt;br /&gt;
Der Schalter nochmals seperat dargestellt, je nach Geschmack.&lt;br /&gt;
Das Beispiel gilt für das &#039;&#039;&#039;LEGACY Messageformat&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff 4CH 4-Kanal Schaltmodul==&lt;br /&gt;
[[Datei:sonoff_ch4_1.jpg|thumb|left|alt=Sonoff CH4]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Achtung andere Einstellungen der Arduino IDE: Select Board &amp;quot;Generic ESP8285 Module&amp;quot; (=Flash Mode &amp;quot;DOUT&amp;quot;) and Flash Size &amp;quot;1M (64K SPIFFS)&amp;quot;n! }}&lt;br /&gt;
&lt;br /&gt;
Der Sonoff 4CH ist mit seinen 4 Kanälen ein sehr preiswertes Modul im Gehäuse und für Hutschinenmontage. Anstatt des üblichen ESP8266 besitzt dieses Modul schon den moderneren &#039;&#039;&#039;ESP8285&#039;&#039;&#039;. Es müssen daher in der Arduino IDE andere Einstellungen vorgenommen werden. Unter Board wird hier das &amp;quot;&#039;&#039;&#039;Generic 8285 Module&#039;&#039;&#039;&amp;quot; mit &#039;&#039;&#039;1M und 64K Spiffs&#039;&#039;&#039; angewählt. Der Flashmode &amp;quot;&#039;&#039;&#039;DOUT&#039;&#039;&#039;&amp;quot; wird dann automatisch eingestellt, bzw. ausgeblendet.&lt;br /&gt;
&lt;br /&gt;
Das Modul ist etwas größer als die anderen Sonoff Produkte und besitzt mit 14,5 x 9 cm schon beachtliche Einbau Maße.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_ch4_2.jpg|thumb|left|alt=Sonoff 4CH FDTI]]&lt;br /&gt;
Als weitere Besonderheit sei hier erwähnt, das die Signale &#039;&#039;&#039;RxD auf RxD und TxD auf TxD&#039;&#039;&#039; des FTDI Konverters zu verbinden sind. Wie bei allen Sonoff Modulen darf man &#039;&#039;&#039;zum flashen keine Netzspannung anschließen&#039;&#039;&#039;, sondern nur über die Versorgungsspannung des FDTI Konverters mit 3,3 V versorgen (Jumper richtig setzen). Die Stiftleiste für den FTDI Anschluß ist hier schon eingelötet.&lt;br /&gt;
&lt;br /&gt;
In den Flashmodus gelangt man durch drücken der &#039;&#039;&#039;Taste FW/IO0&#039;&#039;&#039; während des einstecken des USB Anschlusses.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_ch4_3.jpg|thumb|left|alt=Sonoff 4CH Arends]]&lt;br /&gt;
Hier die Ansicht des Webinterface des Arends Sketches!&lt;br /&gt;
Bei der Software sei erwähnt, das die getestete Version 3.1.16 nur bei Kanal 1 den Modus &amp;quot;PulseTime&amp;quot; beherrscht. Wer also gepulste Ausgänge (zB: elektrische Garage/Toröffner) benötigt muss diese per Software nachbilden oder mit dem Kanal 1 auskommen. Eine &amp;quot;Pulsetime 10&amp;quot; ist ein guter Wert dafür (etwa 1 Sekunde). &lt;br /&gt;
&lt;br /&gt;
Als Alternative kann mit dieser HTML Seite des Webservers am Modul des CH4 schon mit jedem Browser fähigem Handy (Android, iPhone, Windows) aufgerufen werden und somit alle Funktionen gesteuert werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_ch4_4.jpg|thumb|left|alt=Sonoff CH4 Software APP]]&lt;br /&gt;
Hier dargestellt die Original Software die Sonoff zum Modul liefert (EWeLink) und über ihre Cloud verbindet. Leider kann hier keine gepulste Ausgabe erfolgen. Mit einem Countdown kann zwar der Ausgang wieder abgeschaltet werden, die kleinste Zeiteinheit ist aber 1 Minute und somit für einen Impuls leider nicht zu gebrauchen. Ebenso kann mit dieser Software keine Einbindung in FHEM erfolgen, obwohl es eine nette anschauliche Darstellung ist.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Erweiterungen=&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sonoff Switch mit Temperatur + Luftfeuchte== &lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier geht es um nützliche Hardware Erweiterungen an den Originalmodulen!}}&lt;br /&gt;
Wozu überhaupt den Switch erweitern wenn es auch die Modelle TH10 und TH16 gibt?&lt;br /&gt;
&lt;br /&gt;
Manche Personen können dadurch dem Basteltrieb nachkommen, aber das wesentliche ist der Preis, da die Switches doch fast um die Hälfte billiger sind. Die Sensoren kosten ebenfalls kaum nennenswerte Beträge.&lt;br /&gt;
&lt;br /&gt;
Oder es hat schon jemand Switches im Einsatz und möchte jetzt zusätzlich die Temperatur erfassen!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hardware erweitern mit DHT22 ===&lt;br /&gt;
[[Datei:sonoff_sw_4.PNG|thumb|left|alt=Sonoff Switch Pinleiste mit Temperatur]]&lt;br /&gt;
Am Sonoff Switch wurde ja schon eine Stiftleiste zum Flashen eingelötet. Diese Stiftleiste bietet schon alle Anschlüsse welche für die Temperatur- und Luftfeuchtemessung benötigt werden. Am 5. Anschluß der Stifftleiste ist das Signal &amp;quot;SCL&amp;quot; (GPIO14) herausgeführt, welches für den DHT22 zur Erfassung der Messdaten benötigt wird. Der Sonsor wird mit einem einem 3-poligen Kabel (zB: ein Steckkabel für ein Breadboard oder direkt anlöten) verbunden. Damit der DHT22 korrekt funktioniert, wird ein Widerstand mit 4,7 K Ohm zwischen Vdd und Data am DHT22 zusätzlich benötigt. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_45.jpg|thumb|left|alt=AM2302 / DHT22]]&lt;br /&gt;
&lt;br /&gt;
Ansicht des DHT22 (AM2302) mit den aufgesteckten Verbindungskabeln. Von links nach rechts sind das&lt;br /&gt;
&lt;br /&gt;
 1 = VCC 3,3 V&lt;br /&gt;
 2 = Data&lt;br /&gt;
 3 = nc (nicht belegt)&lt;br /&gt;
 4 = GND&lt;br /&gt;
&lt;br /&gt;
Pin1 (VCC) des DHT22 muss also auf Pin1 der Stiftleiste, Pin2 (Data) auf Pin5 und Pin4 (GND) auf Pin4. &lt;br /&gt;
Pin2 und Pin1 soll hier noch der Widerstand aufgelötet werden.&lt;br /&gt;
&lt;br /&gt;
 1 ------- 1 (VDD)&lt;br /&gt;
 2 ------- 5 (GPIO14)&lt;br /&gt;
 3&lt;br /&gt;
 4 ------- 4 (GND)&lt;br /&gt;
 DHT22  Stiftleiste&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_44.jpg|thumb|left|alt=umgebautes Modul]]&lt;br /&gt;
Diese Darstellung zeigt das umgebaute und bereits verschlossene Modul. Auf der Seite des Tasters (bitte nur hier, da auf der anderen Seite die 230 V verlaufen und neben der Lebensgefahr auch den Sensor beeinflussen) ist hier einfach mit einer Eisensäge ein Schlitz eingesägt, der dient in diesem Falle als Kabeldurchführung. Ein Schlitz ist besser als ein Loch, da der Oberteil des Gehäuses sich leichter aufsetzen läßt. Wer ein längeres Kabel benötigt, kann natürlich auch ein 3-poliges Telefonkabel (oder Mikrokabel oder sonstiges) verwenden. Der Sensor sollte etwas Abstand zum Gehäuse haben, da dieses auch eine Eigenerwärmung hat. Wer es ganz originalgetreu lösen will, kann auch eine 3-polige Mini Buchse für Klinckenstecker (3,5mm) einbauen so wie sie am TH10/16 vorhanden ist.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Software anpassen am Beispiel MQTT ===&lt;br /&gt;
[[Datei:sonoff_sw_40.jpg|thumb|left|alt=Sonoff MQTT]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wer über MQTT kommuniziert und die Software von Theo Arends benutzt, muss folgende Dinge beachten. In der Datei &#039;&#039;&#039;user_config.h&#039;&#039;&#039; müssen im Abschnitt &#039;&#039;&#039;Module = SONOFF&#039;&#039;&#039; die Slashes so wie unten dargestellt entfernt werden, damit erstens die Interrupts abgefragt werden und zweitens die Telemetriedaten gesendet werden. Ebenso ist der verwendete Sensor bei &amp;quot;&#039;&#039;&#039;define DHT_TYPE&#039;&#039;&#039;&amp;quot; eingestellt werden. In dem hier gezeigten Beispiel also &amp;quot;&#039;&#039;&#039;DHT22&#039;&#039;&#039;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #if MODULE == SONOFF                        // programming header 1:3.3V 2:rx 3:tx 4:gnd&lt;br /&gt;
  #define APP_NAME             &amp;quot;Sonoff module&amp;quot;&lt;br /&gt;
  #define LED_PIN              13           // GPIO 13 = Green/Blue Led (0 = On, 1 = Off) - Sonoff&lt;br /&gt;
  #define LED_INVERTED         1            // 0 = (1 = On, 0 = Off), 1 = (0 = On, 1 = Off)&lt;br /&gt;
  #define REL_PIN              12           // GPIO 12 = Red Led and Relay (0 = Off, 1 = On)&lt;br /&gt;
  #define KEY_PIN              0            // GPIO 00 = Button&lt;br /&gt;
 /*-------------------------------------------------------------------------------------------*/&lt;br /&gt;
  #define DSB_PIN              4            // GPIO 14 = DS18B20 (Sonoff_TH10A(16A), Sonoff SV)&lt;br /&gt;
  #define SEND_TELEMETRY_DS18B20            // Enable sending temperature telemetry&lt;br /&gt;
 /*-------------------------------------------------------------------------------------------*/&lt;br /&gt;
  #define DHT_PIN              14           // GPIO 14 = AM2301 (Sonoff_TH10A(16A), Sonoff SV)&lt;br /&gt;
  #define DHT_TYPE             DHT22        // DHT module type (DHT11, DHT21, DHT22, AM2301, AM2302 or AM2321)&lt;br /&gt;
  #define SEND_TELEMETRY_DHT                // Enable sending temperature and humidity telemetry&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Software Anpassung DHT22 in FHEM ===&lt;br /&gt;
[[Datei:sonoff_sw_41.jpg|thumb|left|alt=umgebautes Modul]]&lt;br /&gt;
&lt;br /&gt;
Links in der Hardcopy sind die Readings die nach der Anpassung von FHEM (Broker) befüllt werden sollten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ### Temperatur und Luftfeuchte vom Sonoff Switch ###&lt;br /&gt;
 define Sonoff_Temp MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Temp IODev myBroker&lt;br /&gt;
 attr Sonoff_Temp icon temperature_humidity&lt;br /&gt;
 attr Sonoff_Temp room MQTT&lt;br /&gt;
 attr Sonoff_Temp stateFormat {sprintf(&amp;quot;Temperatur: %.1f Grad Feuchte: %.1f &amp;quot;, ReadingsVal($name,&amp;quot;temperature&amp;quot;,0), ReadingsVal($name,&amp;quot;humidity&amp;quot;,0))}&lt;br /&gt;
 attr Sonoff_Temp subscribeReading_humidity tele/sonoff/HUMIDITY&lt;br /&gt;
 attr Sonoff_Temp subscribeReading_temperature tele/sonoff/TEMPERATURE&lt;br /&gt;
Das Beispiel gilt für das &#039;&#039;&#039;LEGACY Messageformat&#039;&#039;&#039;.&lt;br /&gt;
Hier die zusätzliche Erweiterung um die Temperatur und die Luftfeuchte in FHEM. Der in der Topic verwendete Name &amp;quot;sonoff&amp;quot; muss natürlich der Einstellung in der Software am Switch entsprechen. Bei Verwendung mehrerer Switches muss natürlich auch der Name bei jedem geändert werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Logfile für die Temperatur ===&lt;br /&gt;
 define SVG_FileLog_Sonoff_Temp SVG myDbLog:SVG_FileLog_Sonoff_Temp:HISTORY&lt;br /&gt;
 attr SVG_FileLog_Sonoff_Temp room MQTT&lt;br /&gt;
&lt;br /&gt;
Und schließlich fehlt noch das Logfile, damit der Temperaturverlauf auch in schönen Plots dargestellt werden kann.&lt;br /&gt;
Das hier verwendete Beispiel funktioniert nur mit einer DbLog.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Switch als Thermostat verwenden mit MQTT== &lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_55.jpg|thumb|left|alt=Thermostat]]&lt;br /&gt;
Mit diesem einfachen Beispiel wird ein Pelett Ofen mit einem externen Thermostat (sonoff Switch oder TH10/16) gesteuert. Zum besseren Überblick wird die Steuerung in einzelne Module getrennt, es könnte aber auch einiges zu einer einzigen Definition zusammen gefasst werden. Der Thermostat könnte auch als Frostwächter benutzt werden und ein anderes Heizgerät steuern.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 ###################################&lt;br /&gt;
 ### Sonoff Thermostat Regelung ####&lt;br /&gt;
 ###################################&lt;br /&gt;
 define Sonoff_dht MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_dht IODev myBroker&lt;br /&gt;
 attr Sonoff_dht alias Raumtemperatur&lt;br /&gt;
 attr Sonoff_dht group Thermostat&lt;br /&gt;
 attr Sonoff_dht icon temperature_humidity&lt;br /&gt;
 attr Sonoff_dht publishSet ON OFF cmnd/sonoff_dht/1/POWER/set&lt;br /&gt;
 attr Sonoff_dht room _Sonoff&lt;br /&gt;
 attr Sonoff_dht stateFormat {sprintf(&amp;quot;Temperatur: %.1f Grad Feuchte: %.1f &amp;quot;, ReadingsVal($name,&amp;quot;TEMPERATURE&amp;quot;,0),  ReadingsVal($name,&amp;quot;HUMIDITY&amp;quot;,0))}&lt;br /&gt;
 attr Sonoff_dht subscribeReading_HUMIDITY tele/sonoff_dht/DHT/HUMIDITY&lt;br /&gt;
 attr Sonoff_dht subscribeReading_TEMPERATURE tele/sonoff_dht/DHT/TEMPERATURE&lt;br /&gt;
 attr Sonoff_dht subscribeReading_state cmnd/sonoff_dht/1/POWER/set&lt;br /&gt;
FHEM Definition zur Erfassung der Temperatur und der Luftfeuchte. Damit dieses Beispiel funktioniert, ist am Sonoff Modul die Topic &amp;quot;&#039;&#039;&#039;sonoff_dht&#039;&#039;&#039;&amp;quot; zu setzen. Dieser Temperaturwert dient dem Thermostat als ISTWert.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Sw MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Sw IODev myBroker&lt;br /&gt;
 attr Sonoff_Sw alias Pellets Ofen&lt;br /&gt;
 attr Sonoff_Sw devStateIcon on:rc_GREEN:off off:rc_RED:on&lt;br /&gt;
 attr Sonoff_Sw eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_Sw group Thermostat&lt;br /&gt;
 attr Sonoff_Sw icon sani_boiler_temp&lt;br /&gt;
 attr Sonoff_Sw publishSet ON OFF cmnd/sonoff_dht/1/POWER/set&lt;br /&gt;
 attr Sonoff_Sw room _Sonoff&lt;br /&gt;
 attr Sonoff_Sw stateFormat Licht&lt;br /&gt;
 attr Sonoff_Sw subscribeReading_Licht tele/sonoff_dht/POWER&lt;br /&gt;
 attr Sonoff_Sw subscribeReading_state cmnd/sonoff_dht/1/POWER/set&lt;br /&gt;
 attr Sonoff_Sw webCmd ON:OFF&lt;br /&gt;
FHEM Definition zum Absetzen der Befehle für das Relais (Thermostat) Ein- / Aus. Wenn das zu steuernde Geräte einen potentialfreien Thermostatanschluß benötigt (in den meisten Fällen), muss noch ein Relais dazwischen geschaltet werden um die Trennung der Netzspannung zu gewährleisten.&lt;br /&gt;
&lt;br /&gt;
 define ThermostatPellets dummy&lt;br /&gt;
 attr ThermostatPellets alias Pellets Ofen Sollwert&lt;br /&gt;
 attr ThermostatPellets group Thermostat&lt;br /&gt;
 attr ThermostatPellets icon temp_control&lt;br /&gt;
 attr ThermostatPellets room _Sonoff&lt;br /&gt;
 attr ThermostatPellets setList state:0,5,10,12,13,14,15,16,17,17.5,18,18.5,19,19.5,20,20.5,21,21.5,22,23,24,25,26,27&lt;br /&gt;
 attr ThermostatPellets webCmd state&lt;br /&gt;
Die Sollwertvorgabe für das Thermostat durch einen Dummy, damit können die gewünschten Temperaturen eingestellt werden.&lt;br /&gt;
Das Beispiel gilt für das &#039;&#039;&#039;LEGACY Messageformat&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 ### sofort ausführen wenn neuer Sollwert eingestellt wird ###&lt;br /&gt;
 define Thermostat_on_notify notify ThermostatPellets IF (ReadingsVal(&amp;quot;Sonoff_Sw&amp;quot;,&amp;quot;state&amp;quot;,0) eq &amp;quot;OFF&amp;quot; &amp;amp;&amp;amp; (ReadingsVal(&amp;quot;Sonoff_dht&amp;quot;,&amp;quot;TEMPERATURE&amp;quot;,0) &amp;lt;= Value(&amp;quot;ThermostatPellets&amp;quot;))) (set Sonoff_Sw ON)&lt;br /&gt;
 define Thermostat_off_notify notify ThermostatPellets IF (ReadingsVal(&amp;quot;Sonoff_Sw&amp;quot;,&amp;quot;state&amp;quot;,0) eq &amp;quot;ON&amp;quot; &amp;amp;&amp;amp; (ReadingsVal(&amp;quot;Sonoff_dht&amp;quot;,&amp;quot;TEMPERATURE&amp;quot;,0) &amp;gt; Value(&amp;quot;ThermostatPellets&amp;quot;))) (set Sonoff_Sw OFF)&lt;br /&gt;
Mit einem notify wird die manuelle Änderung des Sollwertes überwacht und sofort reagiert.&lt;br /&gt;
&lt;br /&gt;
 ## zyklisch prüfen ob Sollwert erreicht wurde ###&lt;br /&gt;
 define Thermostat_on at +*00:15:00 IF (ReadingsVal(&amp;quot;Sonoff_Sw&amp;quot;,&amp;quot;Licht&amp;quot;,0) eq &amp;quot;OFF&amp;quot; &amp;amp;&amp;amp; (ReadingsVal(&amp;quot;Sonoff_dht&amp;quot;,&amp;quot;TEMPERATURE&amp;quot;,0) &amp;lt;= Value(&amp;quot;ThermostatPellets&amp;quot;))) (set Sonoff_Sw ON)&lt;br /&gt;
 define Thermostat_off at +*00:15:00 IF (Value(&amp;quot;Sonoff_Sw&amp;quot;) eq &amp;quot;ON&amp;quot; &amp;amp;&amp;amp; (ReadingsVal(&amp;quot;Sonoff_dht&amp;quot;,&amp;quot;TEMPERATURE&amp;quot;,0) &amp;gt; Value(&amp;quot;ThermostatPellets&amp;quot;))) (set Sonoff_Sw OFF)&lt;br /&gt;
Hier noch die Soll- Ist Wertvergleiche zur Steuerung. Es wird alle 15 Minuten überprüft ob die Temperatur erreicht ist. Bei einer trägen Heizung sollten 15 Minuten ausreichend sein, wer will kann dies aber auch alle 5 oder 10 Minuten prüfen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Switch mit Bewegungsmelder HC-SR501== &lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_pir_1.jpg|thumb|left|alt=Bewegungsmelder]]&lt;br /&gt;
Basierend auf dem Wall Switch MQTT Sketch von Arends wurde hier ein Sonoff BASIC + PIR HC-SR501 in eine größere Verteilerdose eingebaut, der Sonoff wurde dabei etwas gekürzt. Die Bewegungsmelder sind ab etwa 70 Cent erhältlich.&lt;br /&gt;
&lt;br /&gt;
Der Sketch kann auch den Blink Modus. Damit kann man im Alarmfall z.B. Alle Strahler rings ums Haus blinken lassen.&lt;br /&gt;
&lt;br /&gt;
Mehr dazu kann hier im [https://forum.fhem.de/index.php/topic,63824.0.html Forum]im Diskussionsthread nachgelesen werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_pir_2.jpg|thumb|left|alt=Bewegungsmelder]]&lt;br /&gt;
Ein Beispiel wir der Bewegungsmelder in der Feuchtraumdose montiert werden kann. Wird der Bewegungsmelder abgesetzt vom Switch montiert, ist darauf zu achten das die Kabel nicht zu lange werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
===Spannungsversorgung des HC-SR501===&lt;br /&gt;
[[Datei:sonoff_pir_4.jpg|thumb|left|alt=5V für Bewegungsmelder]]&lt;br /&gt;
Der HC-SR501 wird vom Sonoff versorgt, wobei hier die 3,3 V nicht immer ausreichen. Es ist deshalb am HC-SR501 eine Diode zu überbrücken, dann reichen die 3,3V vom Sonoff. Es können aber auch am Sonoff die 5V angezapft werden. Hier im Bild dargestellt wo die 5V angezapft werden können.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_pir_5.jpg|thumb|left|alt=3,3V für Bewegungsmelder]]&lt;br /&gt;
Hier eine kleine Übersicht der wichtigsten Teile und deren Platzierung am HC-SR501. &lt;br /&gt;
Den PIR kann man auch mit 3,3V betreiben wenn man die Diode am Eingang nach Vcc überbrückt, dann reicht die Spannung für einen reibungslosen Betrieb völlig aus. Dies gilt für den HC-SR501, wird ein anderer PIR verwendet muss man nachschauen ob das auch möglich ist, ansonsten die 5V Variante wählen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===Anpassung des Sketches mit Wall Switch===&lt;br /&gt;
Zur Vorbereitung des Sketches sind zunächst einige Einstellungen in der &amp;quot;user_config.h&amp;quot; durchzuführen.&lt;br /&gt;
&lt;br /&gt;
 #if MODULE == SONOFF                        // programming header 1:3.3V 2:rx 3:tx 4:gnd&lt;br /&gt;
  #define APP_NAME             &amp;quot;Sonoff 8266 module&amp;quot;&lt;br /&gt;
  #define MQTT_GRPTOPIC        &amp;quot;sonoffs&amp;quot;    // [GroupTopic] MQTT Group topic&lt;br /&gt;
 /*-------------------------------------------------------------------------------------------*/&lt;br /&gt;
  #define LED_PIN              13           // GPIO 13 = Green/Blue Led (0 = On, 1 = Off) - Sonoff&lt;br /&gt;
  #define LED_INVERTED         1            // 0 = (1 = On, 0 = Off), 1 = (0 = On, 1 = Off)&lt;br /&gt;
  #define REL_PIN              12           // GPIO 12 = Red Led and Relay (0 = Off, 1 = On)&lt;br /&gt;
  #define KEY_PIN              0            // GPIO 00 = Button&lt;br /&gt;
 /*-------------------------------------------------------------------------------------------*\&lt;br /&gt;
 * Wall switch and HC-SR501&lt;br /&gt;
 \*-------------------------------------------------------------------------------------------*/&lt;br /&gt;
  #define SWITCH_PIN           14           // GPIO 14 = Standard wall switch to Gnd (Sonoff_TH10A(16A), Sonoff SV)&lt;br /&gt;
  #define SWITCH_MODE          &#039;&#039;&#039;PUSHBUTTON_INV&#039;&#039;&#039;      // [SwitchMode] TOGGLE, FOLLOW, FOLLOW_INV, PUSHBUTTON or PUSHBUTTON_INV (the wall switch state)&lt;br /&gt;
  &#039;&#039;&#039;#define USE_WALL_SWITCH&#039;&#039;&#039;                   // Enable the use of a standard wall switch to control the relay&lt;br /&gt;
Wichtig ist dabei die vorangestellten Slahes // bei &amp;quot;#define USE_WALL_SWITCH&amp;quot; zu entfernen auf &#039;&#039;&#039;PUSHBUTTON_INV&#039;&#039;&#039; zu stellen. Dann kann der Sonoff Switch compiliert und geflasht werden.&lt;br /&gt;
&lt;br /&gt;
===Einbindung des HC-SR501 in FHEM===&lt;br /&gt;
 # ------------- Sonoff_pir mit Bewegungsmelder ---------------&lt;br /&gt;
 define Sonoff_pir MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_pir IODev myBroker&lt;br /&gt;
 attr Sonoff_pir eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_pir group Sonoff&lt;br /&gt;
 attr Sonoff_pir icon hue_filled_br30&lt;br /&gt;
 attr Sonoff_pir publishSet ON OFF cmnd/sonoff_pir/1/POWER/set&lt;br /&gt;
 attr Sonoff_pir room MQTT&lt;br /&gt;
 attr Sonoff_pir stateFormat Licht&lt;br /&gt;
 attr Sonoff_pir subscribeReading_Licht stat/sonoff_pir/POWER&lt;br /&gt;
 attr Sonoff_pir subscribeReading_state cmnd/sonoff_pir/1/POWER/set&lt;br /&gt;
 attr Sonoff_pir webCmd :&lt;br /&gt;
Das Beispiel gilt für das &#039;&#039;&#039;LEGACY Messageformat&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel wie der Sonoff Switch in FHEM eingebunden wird. Wenn im Sketch der Prefix von stat auf tele geändert wurde, ist dies auch hier durchzuführen ( subscribeReading_Licht tele/sonoff_pir/POWER ), ansonsten bleibt es so wie im Beispiel. Getestet wurde dieses Beispiel mit Version 3.1.6. Die Topic sollte auf den Namen &amp;quot;sonoff_pir&amp;quot; eingestellt werden. Bei anderen Namen ist dies entsprechend in FHEM anzupassen. &lt;br /&gt;
&lt;br /&gt;
Mit dem Command &#039;&#039;&#039;BUTTONTOPIC Alarm_SO2&#039;&#039;&#039; ( direkt im Webinterface des Sonoff ) wird der Wall Switch GPIO14 vom Sonoff entkoppelt und somit sendet der Bewegungsmelder direkt an FHEM --&amp;gt; Motion_pir MQTT_DEVICE&lt;br /&gt;
&lt;br /&gt;
Es sollte auch unbedingt kontrolliert werden, wie die Ausgabe des Alarmes in der Console erfolgt. Erscheint hier die Meldung &amp;quot;cmnd/Alarm_SO2/POWER = TOGGLE&amp;quot; dann muss mit dem Kommando &amp;quot;&#039;&#039;&#039;switchmode 1&#039;&#039;&#039;&amp;quot; das Ausgabeformat umgeschaltet werden, erst dann kommt das gewünschte Format &amp;quot;On&amp;quot; und &amp;quot;OFF&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 # ------------------ Motion_pir MQTT_DEVICE -----------------&lt;br /&gt;
 define Motion_pir MQTT_DEVICE&lt;br /&gt;
 attr Motion_pir IODev myBroker&lt;br /&gt;
 attr Motion_pir devStateIcon on:on-for-timer off:off&lt;br /&gt;
 attr Motion_pir eventMap ON:on OFF:off&lt;br /&gt;
 attr Motion_pir group Sonoff&lt;br /&gt;
 attr Motion_pir icon people_sensor&lt;br /&gt;
 attr Motion_pir room MQTT&lt;br /&gt;
 attr Motion_pir stateFormat Alarm&lt;br /&gt;
 attr Motion_pir subscribeReading_Alarm cmnd/Alarm_SO2/POWER&lt;br /&gt;
Die Motion_pir dient nun zur eigentlichen Einschaltung des Lichtes und sendet das Kommando &#039;&#039;&#039;cmnd/Alarm_SO2/POWER&#039;&#039;&#039; an den entkopellten GPIO 14 des Switch.&lt;br /&gt;
Das Beispiel gilt für das &#039;&#039;&#039;LEGACY Messageformat&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # ------------------ DoIf zur Motion Abfrage -----------------&lt;br /&gt;
 define di_Sonoff_pir_Alarm DOIF ([Motion_pir:&amp;quot;on&amp;quot;] and [Tag_Nacht:twilight_weather] &amp;lt; 35) (set Sonoff_pir on) DOELSEIF ([Motion_pir:&amp;quot;off&amp;quot;] and [Tag_Nacht:twilight_weather] &amp;lt; 35) (set Sonoff_pir off)&lt;br /&gt;
 attr di_Sonoff_pir_Alarm comment Abhängig von Helligkeitssensor wird nachts,bei Bewegung das Licht eingeschaltet!&lt;br /&gt;
 attr di_Sonoff_pir_Alarm group Sonoff&lt;br /&gt;
 attr di_Sonoff_pir_Alarm room MQTT&lt;br /&gt;
Zusätzlich kann nun mit einem &#039;&#039;&#039;Doif&#039;&#039;&#039; verknüpft werden um das Ganze mit Tag_Nacht:twilight_weather dann in Abhängigkeit der Helligkeit zu schalten. Selbstverständlich kann jede andere Quelle mit einem Helligkeitswert verwendet werden.&lt;br /&gt;
&lt;br /&gt;
===Alarmausgabe über Grouptopic===&lt;br /&gt;
 # ------------------------ Sonoffs Group ----------------------&lt;br /&gt;
 define Sonoffs MQTT_DEVICE&lt;br /&gt;
 attr Sonoffs IODev myBroker&lt;br /&gt;
 attr Sonoffs eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoffs group Sonoff&lt;br /&gt;
 attr Sonoffs icon hue_filled_br30&lt;br /&gt;
 attr Sonoffs publishSet ON OFF cmnd/sonoffs/1/POWER/set&lt;br /&gt;
 attr Sonoffs room MQTT&lt;br /&gt;
 attr Sonoffs stateFormat state&lt;br /&gt;
 attr Sonoffs subscribeReading_Licht stat/sonoffs/1/POWER&lt;br /&gt;
 attr Sonoffs subscribeReading_state cmnd/sonoffs/1/POWER/set&lt;br /&gt;
Wer möchte kann auch mit der Group Topic mehrere Switches mit Bewegungsmelder zusammenfassen und alle Lampen im Alarmfall gemeinsam in den Blinkmodus schalten. cmnd/sonoffs ist das Kommando für die Group Topic, sofern diese vom User nicht verändert wurde.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:IP Components]]&lt;br /&gt;
--[[Benutzer:Reinhart|Reinhart]] ([[Benutzer Diskussion:Reinhart|Diskussion]]) 20:54, 5. Jan. 2017 (CET)&lt;/div&gt;</summary>
		<author><name>Reinhart</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Sonoff&amp;diff=19910</id>
		<title>Sonoff</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Sonoff&amp;diff=19910"/>
		<updated>2017-02-14T14:17:24Z</updated>

		<summary type="html">&lt;p&gt;Reinhart: Anpassungen für Tasmota&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;sonoff, dieser Artikel beschreibt die Ankopplung der kostengünstigen sonoff Module an FHEM mit ESPEasy oder MQTT.&#039;&#039;&#039;&lt;br /&gt;
{{Randnotiz|RNTyp=Fehl|RNText=Achtung: Arbeiten mit Netzspannung kann lebensgefährlich sein und darf nur von autorisiertem Fachpersonal durchgeführt werden!}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Seit einiger Zeit werden von der [https://www.itead.cc/sonoff-wifi-wireless-switch.html Fa. Itead] kostengünstige &amp;quot;sonoff&amp;quot; Produkte angeboten die glücklicherweise den [http://dl.itead.cc/IM151116002/0A-ESP8266_Specifications_v4.1.pdf ESP8266 Chip] On Board haben und somit die ideale Grundlage für [http://www.esp8266.nu/index.php/Main_Page ESPEasy] und für [https://forum.fhem.de/index.php/board,46.0.html FHEM] darstellen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nützliche Links zum Hersteller:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://www.itead.cc/blog/user-guide-for-sonoff-slampher User Manual von Itead]&lt;br /&gt;
&lt;br /&gt;
[https://www.itead.cc/wiki/images/6/6b/Sonoff_schmatic.pdf Sonoff Schaltplan]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Hardware=&lt;br /&gt;
&#039;&#039;&#039;Bitte unbedingt die elektrotechnischen Sicherheitsrichtlinien beachten und einhalten!&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_sw_15.jpg|thumb|left|alt=Warnung Netzspannung]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Achtung: An dem Modul liegt Netzspannung an die lebensgefährlich ist. Es dürfen nur entsprechend ausgebildete Personen dieses Modul in Betrieb nehmen. Zum Umbau und zur Softwareaktualisierung darf keine Netzspannung angeschlossen sein&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Wie gefährlich das hantieren mit Netzspannung sein kann, wird hier am Beispiel eines [http://mysku.ru/blog/china-stores/45762.html russischen Anwenders] gezeigt, der hat beim Flashen die Netzspannung am Modul gelassen und somit über die Verbindung mit dem Netzteil des Laptop lebensgefährliche Spannung auf die FTDI Schnittstelle gebracht. Das Modul ist dabei abgeraucht!&lt;br /&gt;
&lt;br /&gt;
==Modelle==&lt;br /&gt;
&lt;br /&gt;
===Produktübersichtsliste sonoff===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:right&amp;quot;&lt;br /&gt;
! Produkt Name !! Beschreibung !! Spannungsversorgung !!  Imax !! Pmax !! Frequenz !! Schaltplan !! Link&lt;br /&gt;
|-&lt;br /&gt;
| Sonoff || Wireless control switch || 90~250V AC || 10A || 2200W || 2.4Ghz || [http://wiki.iteadstudio.com/Sonoff Plan] || [https://www.itead.cc/smart-home/sonoff-wifi-wireless-switch.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| Sonoff RF || 433 RF remote || 90~250V AC || 10A || 2200W || 2.4Ghz || [http://wiki.iteadstudio.com/Sonoff_RF Plan] || [https://www.itead.cc/smart-home/im151116003.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| Sonoff SV || Low voltage Input || 5~24V DC || 10A || 240W DC || 2.4Ghz || [http://wiki.iteadstudio.com/Sonoff_SV Plan] || [https://www.itead.cc/smart-home/sonoff-sv.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| Sonoff TH10/TH16 || Monitor and set Temp.&amp;amp;Hum. ||  90~250V AC || 10A/16A || 2200W(10A)/3500W(16A)	 || 2.4Ghz || [http://wiki.iteadstudio.com/Sonoff_TH_10/16 Plan] || [https://www.itead.cc/smart-home/sonoff-th.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Sonoff Dual || Remote control 2 devices ||  90~250V AC || 16A || 3500W || 2.4Ghz || [https://www.itead.cc/wiki/Sonoff_Dual Plan] || [https://www.itead.cc/sonoff-dual.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Sonoff Pow || Report power &amp;amp;power usage ||  90~250V AC || 16A || 3500W || 2.4Ghz || [https://www.itead.cc/wiki/Sonoff_Pow Plan] || [https://www.itead.cc/sonoff-pow.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Sonoff LED || WiFi Control Dimming LED ||  180~265V AC || 0.3-0.6A || 42W || 2.4Ghz ||  kein || [https://www.itead.cc/sonoff-led.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Sonoff Touch || WiFi wall touch switch ||  90~250V AC || 2A || 400W || 2.4Ghz || kein || [https://www.itead.cc/sonoff-touch.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Slampher || Wireless control light holder ||  90~250V AC || 2A || 200W || 2.4Ghz || [http://wiki.iteadstudio.com/Slampher Plan] || [https://www.itead.cc/smart-home/slampher-wifi-wireless-light-holder.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  S20 Smart Socket || Smart socket || 	90~250V AC || 10A || 2000W || 2.4Ghz || kein || [https://www.itead.cc/smart-home/smart-socket-eu.html EU-Stecker] &lt;br /&gt;
|-&lt;br /&gt;
|  iFan || Smart fan ||  185~264V AC ||﹤1A || 60W || 2.4Ghz || kein || [https://www.itead.cc/smart-home/smart-socket-eu.html EU-Stecker] &lt;br /&gt;
|-&lt;br /&gt;
| Motor/Pump Control Switch || clockwise/anticlockwise running ||  5V/7~32V DC || 10A || 50~320W || 2.4Ghz || kein || [https://www.itead.cc/smart-home/motor-reversing-wifi-wireless-switch.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| 1 Chnl Inching/self-locking Switch || Access control ||  	5V/12V DC || 10A || 50/120W || 2.4Ghz || kein || [https://www.itead.cc/smart-home/inching-self-locking-wifi-wireless-switch.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  4 Chnl Inching/self-locking/inter-locking Switch || Access control, rolling door control ||  5V/5~32V DC/90~250V AC || 10A || 50~320W/2500W || 2.4Ghz || kein || [https://www.itead.cc/ifan.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Eine Übersichtliste der verschiedenen Produkte mit technischen Kurzangaben.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Model: IM151116002: Erstes Modell===&lt;br /&gt;
[https://www.itead.cc/sonoff-wifi-wireless-switch.html Sonoff WiFi Wireless Smart Switch for MQTT COAP Smart Home]&lt;br /&gt;
[[Datei:sonoff_sw_0.jpg|thumb|left|alt=sonoff Switch]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Das sonoff Modul ist in einem zweckmäßigen und gefälligem Gehäuse verbaut!&lt;br /&gt;
&lt;br /&gt;
====Platine====&lt;br /&gt;
[[Datei:sonoff_sw_1.jpg|thumb|left|alt=sonoff Switch von vorne]]&lt;br /&gt;
&lt;br /&gt;
Die Platine ist sehr übersichtlich aufgebaut und der Hersteller hat auch alle Vorbereitungen zum Flashen einer alternativen Software vorgesehen (über serielle Schnittstelle via FTDI-Modul). Mit einer alternativen Software wie ESPEasy ist eine direkte Ankopplung des &#039;&#039;&#039;sonoff&#039;&#039;&#039; an FHEM somit ein leicht durchführbarer Vorgang.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_3.jpg|thumb|left|alt=sonoff Switch von hinten]]&lt;br /&gt;
Die stromführenden Leitungen wurden mit Lötzinn vom Hersteller verstärkt um die angegebenen Stromstärken mit geringer Hitzeentwicklung zu transportieren.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung: Bitte vor den Arbeiten kontrollieren, das an der Platine keine Netzspannung angeschlossen ist, LEBENSGEFAHR!&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Model: IM160712005: TH 10A/16A ===&lt;br /&gt;
[https://www.itead.cc/sonoff-th.html Sonoff TH 10A/16A WiFi Smart Switch]&lt;br /&gt;
&lt;br /&gt;
====TH10 / TH16 weitere GPIO zugänglich machen====&lt;br /&gt;
[[Datei:Sonoff_TH_10A-16A_kleiner.jpg|thumb|left|alt=TH10 / TH16 weitere GPIO zugänglich machen]]&lt;br /&gt;
Der Hersteller hat zwar schon Platine für eine weitere Stiftleiste vorbereitet, jedoch muss diese noch bestückt werden. Die nicht beschalteten Stifte können dann genutzt werden um die &amp;quot;verdeckten&amp;quot; GPIO zugänglich zu machen. Die Verdrahtung kann dem Bild entnommen werden.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Achtung: Bitte vor den Arbeiten kontrollieren, das an der Platine keine Netzspannung angeschlossen ist, LEBENSGEFAHR!&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Model: IM160811001: Sonoff Dual ===&lt;br /&gt;
[https://www.itead.cc/sonoff-dual.html Sonoff Dual WiFi Wireless Smart Swtich]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Model: IM160810001: Sonoff Pow ===&lt;br /&gt;
[https://www.itead.cc/sonoff-pow.html Sonoff POW WiFi Switch with Power Consumption Measurement]&lt;br /&gt;
[[Datei:sonoff_sw_30.jpg|thumb|left|alt=SONOFF POW]]Ein sehr interessantes und kostengünstiges Modul zur Messung der aktuellen Leistung. Das Modul kann via MQTT in FHEM angebunden werden.&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel zur Einbindung ist [http://www.fhemwiki.de/wiki/Sonoff#Sonoff_POW_einrichten hier unten] im Wiki beschrieben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===Model: weitere Modelle===&lt;br /&gt;
[https://www.itead.cc/search/result/?cat=&amp;amp;q=sonoff Sonoff Weitere Modelle finden sich auf der Homepage des Hersstellers]&lt;br /&gt;
&lt;br /&gt;
==Vorbereitungen zum Flashen==&lt;br /&gt;
[[Datei:sonoff_sw_2.jpg|thumb|left|alt=serielle Schnittstelle]]&lt;br /&gt;
&lt;br /&gt;
Hier auf der Platine sind die benötigten Signale für ein FTDI Modul schon vorhanden. Der quadratische Pin gleich über dem Taster ist die Spannungsversorgung zum Flashen vom FDTI von 3.3V Es muss daher unbedingt ein FTDI Modul genommen werden, dass nicht nur einen Jumper für 3.3V besitzt sondern auch die Spannung auf 3.3V herab setzt. Ist dies nicht der Fall, läuft man Gefahr das Modul unbrauchbar zu machen. Es ist daher zu empfehlen einen Spannungsteiler mit 2 Widerständen oder einen Pegelwandler zwischenschalten.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Signale der Schnittstelle==&lt;br /&gt;
von oben nach unten auf der Steckerleiste des sonoff U4 (Model: IM151116002).&lt;br /&gt;
&lt;br /&gt;
 Pin5 = vorbereitet für GPIO&lt;br /&gt;
 Pin4 = Masse&lt;br /&gt;
 Pin3 = TxD&lt;br /&gt;
 Pin2 = RxD&lt;br /&gt;
 Pin1 = 3.3V&lt;br /&gt;
&lt;br /&gt;
Siehe dazu auch den [https://forum.fhem.de/index.php/topic,55036.0.html Link aus dem Forum]:&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Platine mit Stiftleiste bestücken==&lt;br /&gt;
[[Datei:sonoff_sw_4.jpg|thumb|left|alt=Platine mit Stiftleiste bestücken]]&lt;br /&gt;
Der Hersteller hat zwar schon die Platine vorbereitet, jedoch muss sie noch mit einer Stiftleiste bestückt werden um das FTDI Modul bequem verbinden zu können. Nachdem einmal ESPEasy geflasht worden ist, kann es in Zukunft via WEB (OTA) geflasht werden und die Stiftleiste ist dann nicht mehr erforderlich. Aufgrund der geringen Kosten fällt dies jedoch nicht ins Gewicht.&amp;lt;br&amp;gt;&lt;br /&gt;
Für die Module TH10/TH16 sind die Lötpunkte für die Stiftleiste schon beschriftet. Die Stiftleiste selber muss allerdings auch nachgerüstet werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Achtung&#039;&#039;&#039;: Bitte vor den Arbeiten kontrollieren, das an der Platine keine Netzspannung angeschlossen ist, LEBENSGEFAHR!&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Software=&lt;br /&gt;
==MQTT und TASMOTA==&lt;br /&gt;
Der Autor Arends hat die Version Sonoff-MQTT-OTA-Arduino nun eingestellt und die Version 3.2.13 dürfte wohl die letzte dieser Generation gewesen sein. Mit der Einstellung dieser Version wurde zwar der Nachfolger &#039;&#039;&#039;TASMOTA&#039;&#039;&#039; erschaffen, aber leider nun auf das &#039;&#039;&#039;Messageformat LEGACY&#039;&#039;&#039; gänzlich verzichtet was bei der Auswertung der Messdaten in Fhem doch einige Probleme mit sich bringt, da der verwendete JSON String nun zusätzlich gefiltert werden muss.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Es gibt aber bereits drei Lösungswege um dieses Problem zu beheben!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 1. [https://forum.fhem.de/index.php/topic,66714.msg580251.html#msg580251 in diesem Thread] gibt es eine gepatchte Version von Tasmota mit LEGACY Ausgabe. Damit verhält sich Tasmota so wie früher die MQTT Version mit LEGACY und es sind keine weiteren Einstellungen notwendig. LEGACY wurde einfach wieder hinzugefügt.&lt;br /&gt;
&lt;br /&gt;
 2. [https://forum.fhem.de/index.php/topic,66761.0.html in diesem Thread] wurde ein &#039;&#039;&#039;JSON to Reading Modul&#039;&#039;&#039; vorgestellt, dass mit Hilfe eines &amp;quot;notify&amp;quot; den JSON String analysiert und alle darin enthaltenen Daten in Readings kopiert. Die Readings werden dabei automatisch angelegt.&lt;br /&gt;
&lt;br /&gt;
 3. [https://forum.fhem.de/index.php/topic,32528.msg581327.html#msg581327 in diesem Thread] gibt es eine gepatchte Version des Moduls &#039;&#039;&#039;MQTT_DEVICE&#039;&#039;&#039;, in der der JSON String analysiert und alle darin enthaltenen Daten in Readings kopiert werden. Die Readings werden dabei automatisch angelegt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Link: [https://github.com/arendst/Sonoff-Tasmota Tasmota]&lt;br /&gt;
&lt;br /&gt;
Link: [https://github.com/arendst/Sonoff-MQTT-OTA-Arduino Sonoff-MQTT-OTA-Arduino]&lt;br /&gt;
&lt;br /&gt;
Alle hier im Wiki verwendeten Beispiele und deren Beschreibung gilt für die MQTT Version (alte Version). Da in Tasmota fast alles im WEBIF konfiguriert werden kann, entfallen daher sinngemäß einige hier im Wiki erklärten Definitionen, speziell in der &amp;quot;user_config.h&amp;quot;.&lt;br /&gt;
Trotz diesem Komfort müssen die Einstellungen aber nun im WEBIF vorgenommen werden, die wohl wichtigste ist die Auswahl der verwendeten Hardware (Sonoff POW etc.).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ESPEasy flashen==&lt;br /&gt;
[[Datei:sonoff_sw_6.jpg|thumb|left|alt=sonoff mit angestecktem FDTI Adapter]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier geht es ausschließlich um die Software ESPEasy an den sonoff Modulen! }}&lt;br /&gt;
Die Spannungsversorgung des Sonoff Moduls wird hier vom FTDI Konverter mit 3.3V über die Verbindungskabel zum Pfostenstecker durchgeführt. &lt;br /&gt;
&lt;br /&gt;
Der FTDI Adapter wird dann mit der USB Schnittstelle mit dem Computer verbunden.&lt;br /&gt;
&lt;br /&gt;
Zum compilieren wird in der Arduino Umgebung auch die ArduinoJson Library 5.6.4+ benötigt. Eine genaue Anleitung kann [https://forum.fhem.de/index.php/topic,55728.msg473220.html#msg473220 hier] nachgelesen werden. Es sollte stest die aktuelle Version der Arduino Umgebung verwendet werden, bzw. die Librarys auf Letztstand gehalten werden. &lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===mit Arduino compilieren===&lt;br /&gt;
[[Datei:sonoff_sw_10.jpg|thumb|left|alt=Einstellung Arduino IDE]]&lt;br /&gt;
Wer selber mit der Arduino IDE compilieren will bitte folgende Einstellungen beachten. Die anschließenden Arbeiten sind dann gleich wie bei Abschnitt &#039;&#039;&#039;fertige Binary&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Unbedingt die neueste [https://github.com/bblanchon/ArduinoJson Arduino Json Library] benutzen (siehe oben)! Es gibt zwar keine Compilerfehler, aber es kommt anschließend zu Fehlfunktionen in der ESP Bridge!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 Generic ESP8266 Module&lt;br /&gt;
 Flash Mode: QIO&lt;br /&gt;
 Flash Frequency: 40 MHz&lt;br /&gt;
 CPU Frequency: 80 MHz&lt;br /&gt;
 Flash Size: 1M (64K SPIFFS)&lt;br /&gt;
 Debug Port: disabled&lt;br /&gt;
 Debug Level: none&lt;br /&gt;
 Reset Mode: ck&lt;br /&gt;
 Upload Speed: 115200&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===fertige Binary flashen===&lt;br /&gt;
[[Datei:sonoff_sw_7.jpg|thumb|left|alt=NodeMCU Firmware Flasher]]&lt;br /&gt;
Es empfiehlt sich eine fertige Binary von ESPEasy aufzuspielen. In diesem Wiki wurde R140 verwendet.&lt;br /&gt;
&lt;br /&gt;
Siehe dazu auch den [http://www.esp8266.nu/index.php/Main_Page Link von ESPEasy] und das [https://learn.adafruit.com/building-and-running-micropython-on-the-esp8266/flash-firmware Handbuch] für den Flasher.&lt;br /&gt;
&lt;br /&gt;
In manchen Versionen von ESPEasy (zB.R120) ist auch ein Flasher beigelegt, welcher zwar keine grafische Oberfläche hat aber hervorragend funktioniert. Wenn andere versagen, geht es mit diesem Flasher immer noch, einfach probieren!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 Netzspannung darf &#039;NICHT&#039; angeschlossen sein!!!&lt;br /&gt;
 Taster am Sonoff gedrückt halten&lt;br /&gt;
 FTDI Adapter verbinden&lt;br /&gt;
 Taster am Sonoff los lassen&lt;br /&gt;
 Sketch übertragen&lt;br /&gt;
 Sonoff vom FTDI trennen&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Wenn einmal die Firmware auf das sonoff Modul geflasht worden ist, kann in Zukunft ESPEasy direkt unter Tools via HTTP dies durchführen. Es muss dazu kein FTDI Konverter mehr verwendet werden.&lt;br /&gt;
&lt;br /&gt;
==ESPEasy==&lt;br /&gt;
[[Datei:sonoff_sw_11.jpg|thumb|left|alt=ESPEasy Devices]]&lt;br /&gt;
Wenn das Modul fertig geflasht ist und die Verbindung zum Modul hergestellt ist, können die Einstellungen in ESPEasy durchgeführt werden.&lt;br /&gt;
Dazu am Webinterface anmelden und zunächst die zwei Devices definieren.&lt;br /&gt;
&lt;br /&gt;
Der Hersteller hat für das &#039;&#039;&#039;Relaise GPIO 12&#039;&#039;&#039; und für die &#039;&#039;&#039;grüne Led GPIO 13&#039;&#039;&#039; vorgesehen. Der &#039;&#039;&#039;Taster ist an GPIO 0&#039;&#039;&#039; angeschlossen.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Device Schalter===&lt;br /&gt;
[[Datei:sonoff_sw_12.jpg|thumb|left|alt=Device Relais]]&lt;br /&gt;
Bei den Devices sollten die hier dargestellte Einstellungen beachtet werden. Der Switch (PUMP) sollte auf Input gestellt werden, sodass die anschließenden und benötigten Rules aktiviert werden können.&lt;br /&gt;
&lt;br /&gt;
Da beide Devicenamen gleich benannt wurden (PUMP) wird in FHEM nur ein Device angelegt! Die dazugehörenden Valuenames sind unterschiedlich (Relay, Key).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Device Taster===&lt;br /&gt;
[[Datei:sonoff_sw_13.jpg|thumb|left|alt=Device Key]]&lt;br /&gt;
Der Taste muss natürlich nur konfiguriert werden, wenn auch händisch am Modul geschaltet werden soll. Wird dies nicht benötigt, können auch die Rules geändert bzw. angepasst werden. Doch alleine zu Testzwecken ist es eine nützliche Sache.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Rules===&lt;br /&gt;
[[Datei:sonoff_sw_14.jpg|thumb|left|alt=Rules]]&lt;br /&gt;
Da das sonoff Modul auch einen eingebauten Taster hat und somit auch lokal bedient werden kann, sollte man zunächst unter &#039;&#039;&#039;Tools / Advanced das Häckchen Rules&#039;&#039;&#039; aktivieren, erst dann wird der Tab sichtbar und es können Rules erstellt werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 on PUMP#Key do&lt;br /&gt;
  if [PUMP#Relay]=1&lt;br /&gt;
    gpio,12,0&lt;br /&gt;
  else&lt;br /&gt;
    gpio,12,1&lt;br /&gt;
  endif&lt;br /&gt;
 endon&lt;br /&gt;
 on PUMP#Relay do&lt;br /&gt;
  if [PUMP#Relay]=1 &lt;br /&gt;
    gpio,13,0&lt;br /&gt;
  else&lt;br /&gt;
    gpio,13,1&lt;br /&gt;
  endif&lt;br /&gt;
 endon&lt;br /&gt;
Diese Rules ermöglichen, das bei lokaler Bedienung durch den Taster auch die &#039;&#039;&#039;Led&#039;&#039;&#039; richtig geschaltet wird.&lt;br /&gt;
Mit &#039;on PUMP#Key do&#039; wird geprüft ob die Taste gedrückt ist und schaltet dann entsprechend die Led. Mit den Rules können auch Timer oder sonstige Spielereien realisiert werden. Siehe dazu das [http://www.esp8266.nu/index.php/Tutorial_Rules Tutorial] von ESPeasy.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ESPEasy in FHEM einrichten==&lt;br /&gt;
[[Datei:sonoff_sw_9.jpg|thumb|left|alt=FHEM Konfiguration]]&lt;br /&gt;
Dies ist eine einfache Darstellung wie FHEM automatisch den Device erstellt.&lt;br /&gt;
&lt;br /&gt;
Damit FHEM mit ESPEasy und dem sonoff Modul kommunizieren kann, muss in der fhem.cfg vorerst nur die espBridge mit dem hier dargestellten Eintrag aktiviert werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 define espBridge ESPEasy bridge 8383&lt;br /&gt;
Dies ist eigentlich die einzige Zeile die in fhem.cfg angelegt werden muss. Die restliche Konfiguration wird von FHEM automatisch generiert. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 ##########################################&lt;br /&gt;
 ###             ESPEASY               ####&lt;br /&gt;
 ##########################################&lt;br /&gt;
 &lt;br /&gt;
 define ESPEasy_sonoff_1_PUMP ESPEasy 10.0.0.37 80 espBridge sonoff_1_PUMP&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP IODev espBridge&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP devStateIcon on:rc_GREEN:off off:rc_RED:on absent:rc_BLUE:off gpio:rc_YELLOW:off&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP eventMap /gpio 12 on:on/gpio 12 off:off/gpio 12 gpio:off/gpio 12 output:off/&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP group ESPEasy Device&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP icon hue_filled_outlet&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP room ESPEasy&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP setState 0&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP stateFormat {ReadingsVal($name,&amp;quot;presence&amp;quot;,&amp;quot;&amp;quot;) eq &amp;quot;absent&amp;quot; ? &amp;quot;absent&amp;quot; : ReadingsVal($name,&amp;quot;Relay&amp;quot;,&amp;quot;&amp;quot;)}&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP webCmd :&lt;br /&gt;
&lt;br /&gt;
hier ein Beispiel wie es auch manuell leicht modifiziert werden kann.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_8.jpg|thumb|left|alt=sonoff Readings]]&lt;br /&gt;
&lt;br /&gt;
Die Readings werden durch die Bridge (Modul ESPEasy) automatisch angelegt.&lt;br /&gt;
&lt;br /&gt;
Es besteht hier noch genug Spielraum um zB. auch noch Temperatursensoren an das Modul anzuschließen und ebenfalls in FHEM darzustellen.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==MQTT Server einrichten==&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier geht es ausschließlich um den Sketch von Arends und MQTT an den sonoff Modulen! }}&lt;br /&gt;
Es bleibt jedem Anwender die freie Wahl ob die Kommunikation über die ESPEasy-Bridge oder MQTT erfolgen soll. MQTT ist bei der Einrichtung etwas komplexer, da hier auch auf dem Server der Broker installiert werden muss.&lt;br /&gt;
&lt;br /&gt;
Im wesentlichen beschränkt sich die Installation eines MQTT Servers aber auf wenige Arbeitsschritte und ist wie folgt beschrieben durchzuführen. Wer schon einen &#039;&#039;&#039;mosquitto&#039;&#039;&#039; auf dem Server installiert hat, kann diesen Schritt überspringen.&lt;br /&gt;
&lt;br /&gt;
Dieses Kapitel ist insofern interessant, da mit dem Sketch von Theo Arends auch die Einbindung der neuen sonoff Pow Module bereits möglich ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # aus dem mosquitto Repo installieren:&lt;br /&gt;
 wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key&lt;br /&gt;
 sudo apt-key add mosquitto-repo.gpg.key&lt;br /&gt;
 cd /etc/apt/sources.list.d/&lt;br /&gt;
 sudo wget http://repo.mosquitto.org/debian/mosquitto-wheezy.list&lt;br /&gt;
 # oder für jessie&lt;br /&gt;
 sudo wget http://repo.mosquitto.org/debian/mosquitto-jessie.list&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 # mosquitto installieren, sowie client Befehl mosquito_sub (gehört nicht zum Server, wird aber weiter unten benötigt)&lt;br /&gt;
 sudo apt-get install mosquitto mosquitto-clients&lt;br /&gt;
 &lt;br /&gt;
 # MQTT Server Test&lt;br /&gt;
 sudo service mosquitto status&lt;br /&gt;
&lt;br /&gt;
 # Start / Stop des Servers&lt;br /&gt;
 sudo service mosquitto stop&lt;br /&gt;
 sudo service mosquitto start&lt;br /&gt;
 &lt;br /&gt;
 # Perl Version ausgeben&lt;br /&gt;
 perl -v&lt;br /&gt;
 # Perl MQTT Module nachinstallieren (läuft ein paar Minuten)&lt;br /&gt;
 sudo cpan install Net::MQTT:Simple&lt;br /&gt;
 sudo cpan install Net::MQTT:Constants&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Software Arends Sketch===&lt;br /&gt;
[[Datei:sonoff_sw_22.jpg|thumb|left|alt=Arends Menü]]&lt;br /&gt;
&lt;br /&gt;
Ebenso bietet sich die Möglichkeit eine andere alternative Software auf den unterschiedlichen Sonoff Modellen aufzuspielen.&lt;br /&gt;
Speziell für diese Module zugeschnittene Software stammt vom Autor Theo Arends. Alle hier gezeigten Bildschirmfotos und Beispiele beziehen sich auf Basis der Version 2.0.11 (Stand 11.11.2016).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wichtig:&#039;&#039;&#039; erst &#039;&#039;&#039;ab Version 2.0.9&#039;&#039;&#039; sind die Berechnungsfehler und die Referenzfrequenzen für die Umrechnung der Leistungsdaten gefixt worden! Es wird daher angeraten immer die aktuellste Version zu verwenden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Links zu Theo Arend Github&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/arendst/Sonoff-MQTT-OTA-Arduino Arend GitHub]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/arendst/Sonoff-MQTT-OTA-Arduino/wiki Wiki]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/arendst/Sonoff-Tasmota.git Donwload Tasmota]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/arendst/Sonoff-Tasmota Arends Tasmota Github]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; sollten Probleme mit dem ersten Login im Webinterface auftreten, hat der Autor vorgesorgt und mit speziellem wiederholten Tastendruck können verschiedene Modi aufgerufen werden: zB: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3 x Taste kurz drücken&#039;&#039;&#039; und eine Smartconfig wird gestartet und die &#039;&#039;&#039;SSID&#039;&#039;&#039; und das &#039;&#039;&#039;Passwort&#039;&#039;&#039; kann über diese [https://play.google.com/store/apps/details?id=com.cmmakerclub.iot.esptouch Android App] eingegeben werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4 x Taste kurz drücken&#039;&#039;&#039; und man bringt den Device in den &#039;&#039;&#039;Access Point Mode&#039;&#039;&#039; mit der IP-Adresse &#039;&#039;&#039;192.168.4.1&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bis zu 7 verschiedene Modi sind möglich, mehr dazu in Arends Wiki.&lt;br /&gt;
&lt;br /&gt;
[https://github.com/arendst/Sonoff-MQTT-OTA-Arduino/wiki/Button-usage Link zum Wiki Arends, Button]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_bv_01.jpg|thumb|left|alt=Arduino Boardverwalter]]&lt;br /&gt;
In der Arduino IDE unter Datei / Voreinstellungen im Feld &amp;quot;Zusätzliche Boardverwalter-URLs:&amp;quot; den Link: http://arduino.esp8266.com/stable/package_esp8266com_index.json einfügen. &lt;br /&gt;
&lt;br /&gt;
Dann unter &#039;&#039;&#039;Werkzeuge / Board / Boardverwalter&#039;&#039;&#039; ganz am Ende der Liste die Librarys für &amp;quot;esp8266 by ESP8266 Community&amp;quot; die letzte Version 2.3.0 installieren. [https://forum.fhem.de/index.php/topic,46205.msg534707.html#msg534707 Link zum Board].&lt;br /&gt;
&lt;br /&gt;
Das gesamte sonoff Verzeichnis aus [https://github.com/arendst/Sonoff-MQTT-OTA-Arduino/archive/master.zip Arendts Sketch] entpacken (ist wie hier verlinkt ein Zipfile) und dann aus diesem Verzeichnis die sonoff.ino öffnen. Es können dann alle zu dem Sketch zugehörigen Dateien angesehen/editiert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Anschließend muss noch die Datei &#039;&#039;&#039;user_config.h&#039;&#039;&#039; (im Unterverzeichnis &amp;quot;sonoff&amp;quot;) editiert werden. Die Abschnitte          &lt;br /&gt;
&lt;br /&gt;
 // Wifi&lt;br /&gt;
 // Syslog&lt;br /&gt;
 // Ota&lt;br /&gt;
 // MQTT&lt;br /&gt;
&lt;br /&gt;
müssen mit der eigenen &amp;quot;&#039;&#039;&#039;Ip-Adresse-Server&#039;&#039;&#039;&amp;quot;, &amp;quot;&#039;&#039;&#039;SSID&#039;&#039;&#039;&amp;quot; und &amp;quot;&#039;&#039;&#039;password&#039;&#039;&#039;&amp;quot; angepasst werden, das erleichtert den ersten Connect mit dem Modul. Seit der Version 2.1.2 können die WIFI Einstellungen 2-fach angegeben werden, somit wechselt das Device automatisch auf den 2. Wifi Hotspot wenn der erste nicht erreicht wird.&lt;br /&gt;
&lt;br /&gt;
 #define STA_SSID               &amp;quot;SSID&amp;quot;      // Wifi SSID&lt;br /&gt;
 #define STA_PASS               &amp;quot;password&amp;quot;  // Wifi password&lt;br /&gt;
 #define WIFI_HOSTNAME          &amp;quot;%s-%04d&amp;quot;         // Expands to &amp;lt;MQTT_TOPIC&amp;gt;-&amp;lt;last 4 decimal chars of MAC address&amp;gt;&lt;br /&gt;
 #define WIFI_CONFIG_TOOL       WIFI_WPSCONFIG    // Default tool if wifi fails to connect (WIFI_SMARTCONFIG, WIFI_MANAGER or WIFI_WPSCONFIG)&lt;br /&gt;
&lt;br /&gt;
 // Syslog&lt;br /&gt;
 #define SYS_LOG_HOST           &amp;quot;Ip-Adresse-Server&amp;quot;&lt;br /&gt;
 #define SYS_LOG_PORT           514&lt;br /&gt;
 #define SYS_LOG_LEVEL          LOG_LEVEL_NONE&lt;br /&gt;
 #define SERIAL_LOG_LEVEL       LOG_LEVEL_INFO&lt;br /&gt;
 #define WEB_LOG_LEVEL          LOG_LEVEL_INFO&lt;br /&gt;
&lt;br /&gt;
 // Ota&lt;br /&gt;
 #if (ARDUINO &amp;gt;= 168)&lt;br /&gt;
  #define OTA_URL              &amp;quot;http://Ip-Adresse-Server:80/api/arduino/&amp;quot; PROJECT &amp;quot;.ino.bin&amp;quot;&lt;br /&gt;
 #else&lt;br /&gt;
  #define OTA_URL              &amp;quot;http://Ip-Adresse-Server:80/api/arduino/&amp;quot; PROJECT &amp;quot;.cpp.bin&amp;quot;&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
 // MQTT&lt;br /&gt;
 #define MQTT_HOST              &amp;quot;Ip-Adresse-Server&amp;quot;&lt;br /&gt;
 #define MQTT_PORT              1883&lt;br /&gt;
&lt;br /&gt;
 #define MESSAGE_FORMAT         JSON         // [MessageFormat] MQTT Message Format (LEGACY or JSON)&lt;br /&gt;
 #define MQTT_STATUS_OFF        &amp;quot;OFF&amp;quot;        // Command or Status result when turned off (needs to be a string like &amp;quot;0&amp;quot; or &amp;quot;Off&amp;quot;)&lt;br /&gt;
 #define MQTT_STATUS_ON         &amp;quot;ON&amp;quot;         // Command or Status result when turned on (needs to be a string like &amp;quot;1&amp;quot; or &amp;quot;On&amp;quot;)&lt;br /&gt;
 #define MQTT_CMND_TOGGLE       &amp;quot;TOGGLE&amp;quot;     // Command to send when toggling (needs to be a string like &amp;quot;2&amp;quot; or &amp;quot;Toggle&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
In neueren Versionen (ab 3.2.8) wurde auch das Ausgabeformat von LEGACY auf JSON geändert. Gegebenenfalls ist auch hier auf LEGACY zu ändern, da alle Beispiele nur mit &amp;quot;LEGACY&amp;quot; funktionieren.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wichtig:&#039;&#039;&#039; Bei Verwendung des &#039;&#039;&#039;sonoff_POW&#039;&#039;&#039; muss dies ebenfalls in der user_config.h eingestellt werden, also das &amp;quot;SONOFF&amp;quot; sperren und das &amp;quot;&#039;&#039;&#039;SONOFF_POW&#039;&#039;&#039;&amp;quot; aktivieren (// setzen/entfernen). Wir dies nicht durchgeführt, werden auch keine Leistungsdaten via MQTT übertragen!!! (gilt nicht für Tasmota).&lt;br /&gt;
Ebenso muss in (%userprofile%\Documents\Arduino\libraries\pubsubclient\src\PubSubClient.h) die Max Packet Size auf 400 erhöht werden!&lt;br /&gt;
&lt;br /&gt;
  #define MQTT_MAX_PACKET_SIZE 400&lt;br /&gt;
  #define MQTT_KEEPALIVE 120&lt;br /&gt;
Anpassung der max. Packet Size auf 400 und das Keepalive auf 120&lt;br /&gt;
&lt;br /&gt;
 // Enable only one out of three MODULE defines below&lt;br /&gt;
 //#define MODULE                 SONOFF            // Sonoff, Sonoff SV, Sonoff Dual, Sonoff TH 10A/16A, S20 Smart Socket, 4 Channel&lt;br /&gt;
 #define MODULE                 SONOFF_POW        // Sonoff Pow&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Anschluß wird der Sketch mit der Arduino IDE (getestet mit 1.6.12) compiliert und die Binary dann exportiert (Sketch / Kompilierte Binärdatei exportieren). Die erzeugte .bin Datei dann mit dem Tool &amp;quot;ESP8266Flasher.exe&amp;quot; flashen, so wie auch bei ESPEasy. Wer nicht compilieren will, kann auch im Unterverzeichnis ./api/arduino/ die fertige Binary ( sonoff.ino ) benutzen, aber dann ohne Voreinstellung der lokalen IPs.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===MQTT testen===&lt;br /&gt;
[[Datei:sonoff_sw_20.jpg|thumb|left|alt=Arends Menü]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nach erfolgtem Flash des Modules kann das Webinterface des Moduls zum ersten Mal aufgerufen werden (im Router nach der IP des Moduls suchen).&lt;br /&gt;
&lt;br /&gt;
Es bieten sich hier mehrere Möglichkeiten die die weitere Einrichtung des Moduls unterstützen. Einfach die Menüpunkte durchprobieren, sie erklären sich von selbst. Für erste Tests empfiehlt sich die lokale Konsole um die Ereignisse aus Sicht des Modules mit verfolgen zu können. Alles was hier gesendet wird, sollte ebenfalls am Server mitgeloggt werden können. Wenn bis hierher alles funktioniert, kann dann mir der Konfiguration in FHEM beginnen.&lt;br /&gt;
&lt;br /&gt;
Der Name des Moduls kann unter &amp;quot;Configuration&amp;quot; -&amp;gt; &amp;quot;Configure MQTT&amp;quot; -&amp;gt; &amp;quot;Topic (sonoff)&amp;quot; nachgeschaut und geändert werden. In FHEM wird beim definieren des Moduls dieser Name in den subscribeReadings bzw. publishSets eingegeben um die Verbindung zum Modul herzustellen.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Am Server jetzt eine Konsole öffnen und folgende Topic (alle) einstellen.&lt;br /&gt;
&lt;br /&gt;
 mosquitto_sub -d -v -t \# &lt;br /&gt;
Mit dieser Einstellung werden alle Topics geloggt! &lt;br /&gt;
&lt;br /&gt;
 pi@raspberry ~ $ mosquitto_sub -d -v -t \#&lt;br /&gt;
 Received CONNACK&lt;br /&gt;
 Received SUBACK&lt;br /&gt;
 Subscribed (mid: 1): 0&lt;br /&gt;
 Received PUBLISH (d0, q0, r1, m0, &#039;/sonoff/36/temperature&#039;, ... (5 bytes))&lt;br /&gt;
 /sonoff/36/temperature 14.06&lt;br /&gt;
 Received PUBLISH (d0, q0, r1, m0, &#039;/sonoff/35/Count&#039;, ... (3 bytes))&lt;br /&gt;
 /sonoff/35/Count 0.0&lt;br /&gt;
 Received PUBLISH (d0, q0, r1, m0, &#039;/sonoff/35/Total&#039;, ... (3 bytes))&lt;br /&gt;
 /sonoff/35/Total 0.0&lt;br /&gt;
 Received PUBLISH (d0, q0, r1, m0, &#039;/sonoff/35/Time&#039;, ... (1 bytes))&lt;br /&gt;
 /sonoff/35/Time 0&lt;br /&gt;
 Received PUBLISH (d0, q0, r1, m0, &#039;/sonoff/temperature&#039;, ... (5 bytes))&lt;br /&gt;
 /sonoff/temperature 14.00&lt;br /&gt;
 Received PUBLISH (d0, q0, r1, m0, &#039;/sonoff/Count&#039;, ... (3 bytes))&lt;br /&gt;
 /sonoff/Count 0.0&lt;br /&gt;
 Received PUBLISH (d0, q0, r1, m0, &#039;/sonoff/Total&#039;, ... (3 bytes))&lt;br /&gt;
 /sonoff/Total 0.0&lt;br /&gt;
 Received PUBLISH (d0, q0, r1, m0, &#039;/sonoff/Time&#039;, ... (1 bytes))&lt;br /&gt;
 /sonoff/Time 0&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;stat/sonoff/1/POWER&#039;, ... (2 bytes))&lt;br /&gt;
 stat/sonoff/1/POWER ON&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;stat/sonoff/1/POWER&#039;, ... (3 bytes))&lt;br /&gt;
 stat/sonoff/1/POWER OFF&lt;br /&gt;
&lt;br /&gt;
Interessant sind für uns nun diese Einträge &amp;quot;stat/sonoff/1/POWER ON&amp;quot; , dazu am Taster des sonoff manuell umschalten. Dies entspricht genau der Syntax wie sie im Anschluss in FHEM dann zu verwenden ist.&lt;br /&gt;
&lt;br /&gt;
Mit diesen Einstellungen können dann entweder nach Telemetriedaten oder nach Statusmeldungen gefiltert werden. Dies ist jedoch nur notwendig wenn bereits andere MQTT Devices am Broker hängen und es sonst zu unübersichtlich wird.&lt;br /&gt;
 mosquitto_sub -h localhost -t tele/sonoff/#    = Telemetriedaten&lt;br /&gt;
 mosquitto_sub -h localhost -t stat/sonoff/#    = Statusmeldungen&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_21.jpg|thumb|left|alt=Arends Log]]&lt;br /&gt;
Sehr nützlich das lokale Log zur Fehlersuche und Inbetriebnahme.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Als Besonderheit benutzt der Autor zum Senden und Empfangen unterschiedliche Syntax und unterscheidet dies durch vorangestellte Prefixe vor der eigentlichen Topic.&lt;br /&gt;
#define SUB_PREFIX       &amp;quot;cmnd&amp;quot;       Sonoff devices subscribe to:- cmnd/MQTT_TOPIC and cmnd/MQTT_GRPTOPIC&lt;br /&gt;
#define PUB_PREFIX       &amp;quot;stat&amp;quot;       Sonoff devices publish to:- stat/MQTT_TOPIC&lt;br /&gt;
#define PUB_PREFIX2      &amp;quot;tele&amp;quot;       Sonoff devices publish telemetry data to:- tele/MQTT_TOPIC/UPTIME, POWER/LIGHT and TIME&lt;br /&gt;
Bitte dies unbedingt in der FHEM Konfiguration dann beachten!&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==MQTT in FHEM einrichten==&lt;br /&gt;
[[Datei:sonoff_sw_24.jpg|thumb|left|alt=FHEM sonoff Schalter]]&lt;br /&gt;
Dieser einfache Schalter kommuniziert bidirektional mit dem sonoff Device.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_25.jpg|thumb|left|alt=FHEM sonoff Schalter]]&lt;br /&gt;
Die Readings in diesem verwendeten Beispiel zeigen sich wie in FHEM gewohnt.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Einrichtung in FHEM wird von den Modulen 00_MQTT.pm, 10_MQTT_BRIDGE und 10_MQTT_DEVICE.pm unterstützt.&lt;br /&gt;
&lt;br /&gt;
[https://forum.fhem.de/index.php?topic=27532.0 Link zum Forum: MQTT FHEM Einrichtung]&lt;br /&gt;
&lt;br /&gt;
 ### 1. Broker anlegen ###&lt;br /&gt;
 define myBroker MQTT 10.0.0.5:1883&lt;br /&gt;
&lt;br /&gt;
 ### 2. FHEM Device mit MQTT verbinden ###&lt;br /&gt;
 define Sonoff_Switch MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Switch IODev myBroker&lt;br /&gt;
 attr Sonoff_Switch eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_Switch icon hue_filled_br30&lt;br /&gt;
 attr Sonoff_Switch publishSet ON OFF cmnd/sonoff/1/POWER/set&lt;br /&gt;
 attr Sonoff_Switch room MQTT&lt;br /&gt;
 attr Sonoff_Switch stateFormat Licht&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_Licht stat/sonoff/POWER&lt;br /&gt;
 # oder mit tele, je nachdem was in der user_config.h eingestellt wurde!!!&lt;br /&gt;
 #attr Sonoff_Switch subscribeReading_Licht tele/sonoff/POWER &lt;br /&gt;
 attr Sonoff_Switch subscribeReading_state cmnd/sonoff/1/POWER/set&lt;br /&gt;
 attr Sonoff_Switch webCmd ON:OFF&lt;br /&gt;
Der hier dargestellte Beispielcode realisiert die Kommunikation zwischen FHEM und dem sonoff Modul via MQTT Broker. Zu beachten ist hier, dass &#039;&#039;&#039;subscribeReading_Licht&#039;&#039;&#039; und &#039;&#039;&#039;subscribeReading_state&#039;&#039;&#039; unterschiedliche Syntax des Topic Strings haben!&lt;br /&gt;
Das Beispiel gilt für das &#039;&#039;&#039;LEGACY Messageformat&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Switch MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Switch IODev myBroker&lt;br /&gt;
 attr Sonoff_Switch devStateIcon ON:rc_GREEN:OFF OFF:rc_RED:ON&lt;br /&gt;
 attr Sonoff_Switch icon hue_filled_br30&lt;br /&gt;
 attr Sonoff_Switch publishSet ON OFF cmnd/TestSwitch/POWER/set&lt;br /&gt;
 attr Sonoff_Switch room MQTT&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_Licht stat/Sonoff_Switch/POWER&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_Sensor tele/Sonoff_Switch/SENSOR&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_Status stat/Sonoff_Switch/STATUS&lt;br /&gt;
 attr Sonoff_Switch webCmd ON:OFF&lt;br /&gt;
und hier das gleiche für &#039;&#039;&#039;Tasmota&#039;&#039;&#039;, es sind nur geringfügige Modifikationen notwendig.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
==Sonoff POW einrichten==&lt;br /&gt;
[[Datei:sonoff_sw_31.jpg|thumb|left|alt=Sonoff POW]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier geht es ausschließlich um das Modul Sonoff POW!}}&lt;br /&gt;
Das Modul kommt in gewohnter Itead Qualität und eine derart kostengünstige Energiemessung wird bei Smart Home Anwendern gerne eingesetzt. Die Originalsoftware habe ich nicht einmal getestet, da damit eine Anbindung an FHEM leider nicht möglich ist.&lt;br /&gt;
&lt;br /&gt;
Ebenso möchte kaum jemand an eine nicht dokumentierte chinesische Cloud die Steuerbefehle seiner Schalter senden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_sw_33.jpg|thumb|left|alt=Sonoff POW]]&lt;br /&gt;
Bitte auf keinen Fall das Modul während der Arbeiten an die Netzspannung anschießen. Zum Flashen genügt (und nur diese) die Versorgungspannung des USB-TTL Konverters. Wie auf dem Foto gut erkennbar, wurde dieses Modul ohne einlöten einer Pfostensteckerleiste geflasht. Die Steckverbindung wird einfach in die Lötaugen gesteckt und mit einem Gummiring fixiert, da ja spätere Flashvorgänge im Webif des Models funktionieren und so die Arbeit eingespart werden kann. Es steht jedoch nichts im Wege die Pfostensteckerleiste einzulöten.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Die Anschlüsse am Modul sind wie folgt belegt.&lt;br /&gt;
 o GND&lt;br /&gt;
 o TxD&lt;br /&gt;
 o RxD&lt;br /&gt;
 o VDD&lt;br /&gt;
&lt;br /&gt;
Für den Flashvorgang gelten die selben Regeln wie schon beim sonoff Switch oben erwähnt (3,3V!).&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Sonoff POW Software===&lt;br /&gt;
[[Datei:sonoff_sw_35.jpg|thumb|left|alt=Sonoff POW FHEM]]&lt;br /&gt;
Als Software steht im Augenblick nur der Sketch von Arends zur Verfügung, liefert aber alles was das Herz begehrt und ist ist einfach zu handhaben. Hier eine eine einfache Darstellung mit der aktuellen Leistung und dem Tagesverbrauch. Zusätzlich besteht auch noch die Möglichkeit den angeschlossenen Verbraucher Ein- oder Auszuschalten. Getestet wurde hier mit der Version 2.06, 2.07 und 2.019a von Arends.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_pow_02.jpg|thumb|left|alt=Sonoff POW Webif]]&lt;br /&gt;
Seit Version 2.0.19a ist auch die Leistungsanzeige im WEBIF wie im Bild links integriert. Auch der Energieverbrauch des Vortages wird mit angezeigt. Alle hier angezeigten Daten werden auch zyklisch im MQTT String an FHEM übergeben.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich kann im Sketch auch das Feature &amp;quot;&#039;&#039;&#039;Power_Limit&#039;&#039;&#039;&amp;quot; aktiviert werden ( #define FEATURE_POWER_LIMIT in der sonoff.ino). Wenn dies gewünscht ist, dann vor dem compilieren die beiden // entfernen. Mit dem Power_Limit wird eine zusätzliche Nachricht erzeugt, wenn ein bestimmter einstellbarer Grenzwert über- oder unterschritten wird. &lt;br /&gt;
&lt;br /&gt;
Es lassen sich dadurch Meldungen wie &amp;quot;Waschmaschine fertig&amp;quot; oder ähnliches ohne weitere Schwellwert Überwachungen in FHEM ableiten. Die Meldungen kommen in MQTT mit &amp;quot;&#039;&#039;&#039;tele/sonoff/POWER_LOW ON&#039;&#039;&#039;&amp;quot; bzw. &amp;quot;&#039;&#039;&#039;tele/sonoff/POWER_LOW OFF&#039;&#039;&#039;&amp;quot;.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Bevor der Sketch compiliert wird, müssen neben den IP-Einstellungen noch in der user_config.h auch andere Einstellungen vorgenommen werden.&lt;br /&gt;
&lt;br /&gt;
 #define MODULE                 SONOFF_POW       // Hardware module type (SONOFF, SONOFF_POW or ELECTRO_DRAGON)&lt;br /&gt;
 #define PROJECT                &amp;quot;sonoffpow&amp;quot;     // PROJECT is used as the default topic delimiter and OTA file name                                            // As an IDE restriction it needs to be the same as the main .ino file&lt;br /&gt;
&lt;br /&gt;
Der Typ des Modules muss von &amp;quot;SONOFF&amp;quot; auf &amp;quot;&#039;&#039;&#039;SONOFF_Pow&#039;&#039;&#039;&amp;quot; geändert werden,. damit die Software weiß mit welchem Modul es zu tun hat und kann dann die entsprechenden Berechnungen durchführen. Die Leistungsdaten kommen ja in Form einer Frequenz aus dem Baustein und müssen im Sketch (xsns_hlw8102.ino) umgerechnet werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #elif MODULE == SONOFF_POW                  // programming header 1:3.3V 2:rx 3:tx 4:gnd&lt;br /&gt;
  #define APP_NAME             &amp;quot;Sonoff Pow module&amp;quot;&lt;br /&gt;
  #define USE_POWERMONITOR                  // Enable Power Monitoring&lt;br /&gt;
  #define USE_POWERCALIBRATION              // Enable setting Calibration parameters by user commands&lt;br /&gt;
&lt;br /&gt;
Bei Einsatz des POW Modules kann die externe Kalibrierung aktiviert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Definition aus der power.ino (2.0.9) für die korrekte Umrechnung der gelieferten Frequenzen für die Leistungsdaten.&lt;br /&gt;
 #define HLW_PREF            10000    // 1000.0W&lt;br /&gt;
 #define HLW_UREF             2200    // 220.0V&lt;br /&gt;
 #define HLW_IREF             4545    // 4.545A&lt;br /&gt;
&lt;br /&gt;
 #define HLW_PREF_PULSE       4975    // 4975us = 201Hz = 1000W&lt;br /&gt;
 #define HLW_UREF_PULSE       1666    // 1666us = 600Hz = 220V&lt;br /&gt;
 #define HLW_IREF_PULSE       1666    // 1666us = 600Hz = 4.545A&lt;br /&gt;
                                            &lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_sw_36.jpg|thumb|left|alt=Sonoff POW Attribute]]&lt;br /&gt;
Dieses Bild zeigt die Attribute die vom Modul via MQTT an FHEM geliefert werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
aktuell gelieferte Readings (Mqtt Strings) vom Sketch nach unten dargestellter Definition in FHEM.&lt;br /&gt;
 tele/sonoffpow/TODAY_ENERGY    &lt;br /&gt;
 tele/sonoffpow/PERIOD_ENERGY   &lt;br /&gt;
 tele/sonoffpow/POWER_FACTOR   &lt;br /&gt;
 tele/sonoffpow/CURRENT_POWER  &lt;br /&gt;
 tele/sonoffpow/VOLTAGE         &lt;br /&gt;
 tele/sonoffpow/CURRENT        &lt;br /&gt;
&lt;br /&gt;
Hier ein Mittschnitt des Datenverkehrs zum Broker zwecks Kontrolle der korrekten Funktion der Module und der Software.&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff/RSSI&#039;, ... (2 bytes))&lt;br /&gt;
 tele/sonoff/RSSI 82&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff/TEMPERATURE&#039;, ... (3 bytes))&lt;br /&gt;
 tele/sonoff/TEMPERATURE 1.9&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff/HUMIDITY&#039;, ... (4 bytes))&lt;br /&gt;
 tele/sonoff/HUMIDITY 97.9&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff/POWER&#039;, ... (3 bytes))&lt;br /&gt;
 tele/sonoff/POWER OFF&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff/TIME&#039;, ... (19 bytes))&lt;br /&gt;
 tele/sonoff/TIME 2016-11-12T10:36:13&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/UPTIME&#039;, ... (1 bytes))&lt;br /&gt;
 tele/sonoffpow/UPTIME 1&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/RSSI&#039;, ... (2 bytes))&lt;br /&gt;
 tele/sonoffpow/RSSI 34&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/TODAY_ENERGY&#039;, ... (5 bytes))&lt;br /&gt;
 tele/sonoffpow/TODAY_ENERGY 0.083&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/PERIOD_ENERGY&#039;, ... (1 bytes))&lt;br /&gt;
 tele/sonoffpow/PERIOD_ENERGY 8&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/CURRENT_POWER&#039;, ... (2 bytes))&lt;br /&gt;
 tele/sonoffpow/CURRENT_POWER 97&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/POWER_FACTOR&#039;, ... (4 bytes))&lt;br /&gt;
 tele/sonoffpow/POWER_FACTOR 1.00&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/VOLTAGE&#039;, ... (3 bytes))&lt;br /&gt;
 tele/sonoffpow/VOLTAGE 225&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/CURRENT&#039;, ... (5 bytes))&lt;br /&gt;
 tele/sonoffpow/CURRENT 0.426&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/POWER&#039;, ... (2 bytes))&lt;br /&gt;
 tele/sonoffpow/POWER ON&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/TIME&#039;, ... (19 bytes))&lt;br /&gt;
 tele/sonoffpow/TIME 2016-11-12T10:36:28&lt;br /&gt;
 Sending PINGREQ&lt;br /&gt;
 Received PINGRESP&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Einstellungen können mit folgender Syntax angefordert werden (zwei Terminalfenster öffnen, eines zum protokollieren und eines zum Seden der Befehle).&lt;br /&gt;
 mosquitto_sub -d -v -t \#  MQTT Datenverkehr protokolieren&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/1/status/set -m &amp;quot;8&amp;quot;      = SonoffPOW Status jetzt auslesen&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/1/TelePeriod/set -m &amp;quot;60&amp;quot; = Timer setzen, alle 60 Sekunden Daten senden &lt;br /&gt;
Die Kommandos können direkt am Broker (Terminalfenster Putty etc.) abgesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sonoff POW Kalibrieren ===&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier wird beschrieben, wie der &#039;&#039;Sonoff POW kalibriert&#039;&#039; werden kann. }}&lt;br /&gt;
Ab Version 2.0.11 kann nun auch der POW kalibriert werden.&lt;br /&gt;
Dazu kann man 2 Konsolenfenster öffnen, im ersten aktiviert man das Protokoll für den Datenverkehr&lt;br /&gt;
 mosquitto_sub -d -v -t \#  MQTT Datenverkehr protokollieren&lt;br /&gt;
&lt;br /&gt;
Dann kann mit folgenden Befehlen die HLW Referenz Pulsfrequenz gesetzt werden.&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/1/HLWUCAL/set -m &amp;quot;2100&amp;quot;     default = 1950&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/1/HLWICAL/set -m &amp;quot;2450&amp;quot;     default = 3500&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/1/HLWPCAL/set -m &amp;quot;13500&amp;quot;    default = 12345 &lt;br /&gt;
Entweder man hat eine definierte Last zur Verfügung oder besser man misst mit einem Leistungsmesser nach. Die Spannung kann man mit einem Multimeter nachmessen (sollte 230 V sein) und der Strom wird errechnet (bei 100 Watt I = P / U ) = 100/230 = 0,4347.&lt;br /&gt;
Die Referenzwerte solange geringfügig ändern bis die Ausgabe passt. Für die Ausgabe wird einfach eine Statusabfrage durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/1/status/set -m &amp;quot;8&amp;quot;&lt;br /&gt;
Befehl für die Statusabfrage&lt;br /&gt;
&lt;br /&gt;
 cmnd/sonoffpow/1/status/set 8&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;stat/sonoffpow/1/STATUS&#039;, ... (103 bytes))&lt;br /&gt;
 stat/sonoffpow/1/STATUS PWR: Voltage 225 V, Current 0.427 A, Current Power 98 W, Total Power Today 0.080 kWh, Power Factor 1.00&lt;br /&gt;
Ergebnis der Statusabfrage mit Spannung, Strom und Leistung.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sonoff POW FHEM Anbindung===&lt;br /&gt;
Ein Beispiel einer einfachen Anbindung via MQTT an FHEM. MQTT ist insofern notwendig, da in der Software ESPEasy und der Bridge noch keine Implementierung der Frequenzumrechnung enthalten ist.&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Pow MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Pow IODev myBroker&lt;br /&gt;
 attr Sonoff_Pow eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_Pow icon measure_power&lt;br /&gt;
 attr Sonoff_Pow publishSet ON OFF cmnd/sonoffpow/1/POWER/set&lt;br /&gt;
 attr Sonoff_Pow room MQTT&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_Power tele/sonoffpow/POWER&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_state cmnd/sonoffpow/1/POWER/set&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_TODAY_ENERGY tele/sonoffpow/TODAY_ENERGY&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_PERIOD_ENERGY tele/sonoffpow/PERIOD_ENERGY&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_CURRENT_POWER tele/sonoffpow/CURRENT_POWER&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_VOLTAGE tele/sonoffpow/VOLTAGE &lt;br /&gt;
 attr Sonoff_Pow subscribeReading_CURRENT tele/sonoffpow/CURRENT&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_AKTUELL stat/sonoffpow/1/STATUS&lt;br /&gt;
 attr Sonoff_Pow webCmd ON:OFF&lt;br /&gt;
 attr Sonoff_Pow stateFormat {sprintf(&amp;quot;akutelle Leistung: %.1f W Tagesverbrauch: %.2f Kw/h&amp;quot;, ReadingsVal($name,&amp;quot;CURRENT_POWER&amp;quot;,undef), ReadingsVal($name,&amp;quot;TODAY_ENERGY&amp;quot;,undef))}&lt;br /&gt;
Zusätzlich kann hier noch das Relais mit &amp;quot;on&amp;quot; und &amp;quot;off&amp;quot; ein- ausgeschaltet werden. Ab Version 2.0.15 wurden hier die ReadingsNamen auf TODAY_ENERGY und PERIOD_ENERGY (anstatt _POWER) geändert. &lt;br /&gt;
Dieses Beispiel gilt für das &#039;&#039;&#039;LEGACY Messageformat&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Pow MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Pow IODev myBroker&lt;br /&gt;
 attr Sonoff_Pow icon measure_power&lt;br /&gt;
 attr Sonoff_Pow publishSet ON OFF cmnd/sonoffpow/LIGHT/&lt;br /&gt;
 attr Sonoff_Pow stateFormat {sprintf(&amp;quot;aktuell: %.1f W Tag: %.2f Kw/h&amp;quot;, ReadingsVal($name,&amp;quot;Power&amp;quot;,undef), ReadingsVal($name,&amp;quot;Today&amp;quot;,undef))}&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_ENERGY tele/sonoffpow/ENERGY&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_LIGHT stat/sonoffpow/LIGHT&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_state cmnd/sonoffpow/LIGHT&lt;br /&gt;
 attr Sonoff_Pow webCmd ON:OFF&lt;br /&gt;
und das ist ein Beispiel für die Konfiguration für die &#039;&#039;&#039;Tasmota Software mit JSON&#039;&#039;&#039; und Einsatz des j2r Tools.&lt;br /&gt;
&lt;br /&gt;
===Sonoff POW Netz-Anschluß===&lt;br /&gt;
[[Datei:sonoff_sw_34.jpg|thumb|left|alt=Sonoff POW Netzanschluß]]&lt;br /&gt;
Erst wenn alle Arbeiten an der Hard- und Software abgeschlossen sind, kann man das Modul an die Netzspannung anschließen. Wer es sich einfach machen will, nimmt eine Industriell gefertigte 230 V Verlängerung  (zwischen 1,5 - 3 Meter) und schneidet sie in der Mitte durch. Nach dem abisolieren der flexiblen Drähte sollte diese &#039;&#039;&#039;verlötet oder mit Aderendhülsen&#039;&#039;&#039; versehen werden (müssen aber exakt passen, da hier kaum Platz in den Klemmen ist). &lt;br /&gt;
Mit einem kleinen Schraubendreher kann man die Feder der Klemmen niederdrücken und das verzinnte Drahtende tief ich die Öffnung stecken. Es dürfen keine Drahtlitzen aus den Öffnungen sichtbar sein, Kurzschlußgefahr! Ebenso sollte eine Zugprobe durchgeführt werden ob die Klemme auch richtig eingerastet ist.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ACHTUNG:&#039;&#039;&#039; diese Arbeiten müssen von einem ausgebildeten Fachpersonal (Elektriker) durchgeführt werden, Lebensgefahr!&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sonoff POW Design===&lt;br /&gt;
&lt;br /&gt;
====ReadingsGroup normal====&lt;br /&gt;
[[Datei:sonoff_sw_46.jpg|thumb|left|alt=Sonoff POW Design]]&lt;br /&gt;
Viele Benutzer wollen schönere und funktionelle Ausgaben am Bildschirm sehen. Die Möglichkeiten nach oben sind hier sehr vielfältig. Anhand von zwei einfachen aber mächtigen Funktionen hier ein kleines Beispiel wie hier im Bild dargestellt.&lt;br /&gt;
&lt;br /&gt;
Was das Design betrifft, sind hier mehrere Möglichkeiten gegeben und nach oben ist für findige Anwender alles offen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zunächst wird mit dem Hilfsmodul &amp;quot;&#039;&#039;&#039;average&#039;&#039;&#039;&amp;quot; eine Art Statistik (Durchschnittsberechnung, Min.,Max., etc.) hinzugefügt. Das beschränkt sich auf eine einzige Zeile. Es würde sich auch &#039;&#039;&#039;statistic&#039;&#039;&#039; dazu eignen.&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Pow_CURRENT_POWER average Sonoff_Pow:CURRENT_POWER.*&lt;br /&gt;
Die &amp;quot;average&amp;quot; Funktion wird in das Device &amp;quot;Sonof_Pow&amp;quot; auf das Reading &amp;quot;CURRENT_POWER&amp;quot; hinzugefügt.&lt;br /&gt;
&lt;br /&gt;
Der zweite Schritt wird eine &#039;&#039;&#039;readingsGroup&#039;&#039;&#039; mit den gewünschten und gefilterten Ausgabedaten. Durch die verschiedenen IF Abfragen der unterschiedlichen VALUE wird bei über- oder unterschreiten eines Wertes eine bestimmte Farbe angewandt. Weitere Beispiele dazu siehe im Wiki unter [http://www.fhemwiki.de/wiki/ReadingsGroup readingsGroup]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 define SonoffPows readingsGroup &amp;lt;%measure_power&amp;gt;,&amp;lt;aktuell&amp;gt;,&amp;lt;Tag&amp;gt;,&amp;lt;Strom&amp;gt;,&amp;lt;Durchschnitt&amp;gt;,&amp;lt;max.P&amp;gt;,&amp;lt;Schaltzyklen&amp;gt;,&amp;lt; hr &amp;gt; .*(Sonoff_Pow|Sonoff_Pow2):CURRENT_POWER,TODAY_ENERGY,CURRENT,CURRENT_POWER_avg_day,CURRENT_POWER_max_day,PERIOD_ENERGY&lt;br /&gt;
 attr SonoffPows mapping %ALIAS&lt;br /&gt;
 attr SonoffPows nameStyle style=&amp;quot;color:yellow&amp;quot;&lt;br /&gt;
 attr SonoffPows room MQTT&lt;br /&gt;
 attr SonoffPows valueFormat {&#039;CURRENT_POWER&#039; =&amp;gt;&amp;quot;%.0f W&amp;quot;, &#039;TODAY_ENERGY&#039; =&amp;gt;&amp;quot;%.2f Kw&amp;quot;, &#039;CURRENT&#039; =&amp;gt;&amp;quot;%.2f A&amp;quot;,&#039;CURRENT_POWER_max_day&#039; =&amp;gt; &amp;quot;%.0f W&amp;quot;,&#039;CURRENT_POWER_avg_day&#039; =&amp;gt; &amp;quot;%.2f W&amp;quot;,&#039;PERIOD_ENERGY&#039;=&amp;gt;&amp;quot;%.0f Zyklen&amp;quot;}&lt;br /&gt;
 attr SonoffPows valueStyle { if($READING eq &amp;quot;CURRENT_POWER&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 0 &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;TODAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 4.8){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;TODAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 2.5){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;TODAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 2.5 &amp;amp;&amp;amp; $VALUE &amp;lt; 4.8 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 0.45){&#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039;}elsif( $READING eq &amp;quot;CURRENT&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 0.45 &amp;amp;&amp;amp; $VALUE &amp;lt; 0.87 ){&#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 0.87){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;PERIOD_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 10){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;PERIOD_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 10 &amp;amp;&amp;amp; $VALUE &amp;lt; 15 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;PERIOD_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 15){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; } }&lt;br /&gt;
&lt;br /&gt;
Die readingsGroup sind etwas komplex zu lesen, aber nach etwas Einarbeitung klappt das schon. Die in diesem Beispiel verwendeten Readingsnamen beziehen sich auf die Beispielkonfigurationen hier im Wiki.&lt;br /&gt;
Das Beispiel ist für das LEGACY Messageformat ausgelegt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
====ReadingsGroup mit Schaltmöglichkeit====&lt;br /&gt;
[[Datei:sonoff_pow_03.jpg|thumb|left|alt=readingsGroup mit Schalter]]&lt;br /&gt;
Die vorher erwähnte ReadingsGroup kann auch gleich mit einem Schalter versehen werden um den POW Ein- oder Aus schalten zu können. Dazu ist aber eine andere Einstellung im Sketch erforderlich.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der &amp;quot;&#039;&#039;&#039;user_config.h&#039;&#039;&#039;&amp;quot; muss an dieser Stelle auch die &amp;quot;&#039;&#039;&#039;PUB_PREFIX&#039;&#039;&#039;&amp;quot; auf die gleiche Topic wie &amp;quot;PUB_PREFIX2&amp;quot; eingestellt werden. Durch diese Maßnahme wird erreicht, dass sofort nach dem Knopfdruck auch der Status mit der Topic &amp;quot;tele&amp;quot; übertragen wird. Würde der weiterhin mit &amp;quot;stat&amp;quot; übertragen, kann er in der Readingsgroup nur sehr umständlich weiter behandelt werden. Dadurch wird erreicht, dass der Schalter sofort nach dem Schaltvorgang und der Rückmeldung (Status) auch seine Farbe ändert. Wird dieser Eintrag vergessen, ändert der Schalter erst nach Eintreffen der nächsten zyklischen Abfrage seinen Status/Farbe.&lt;br /&gt;
&lt;br /&gt;
 #define SUB_PREFIX             &amp;quot;cmnd&amp;quot;       // Sonoff devices subscribe to:- SUB_PREFIX/MQTT_TOPIC and SUB_PREFIX/MQTT_GRPTOPIC&lt;br /&gt;
 #define PUB_PREFIX             &amp;quot;tele&amp;quot;       // Sonoff devices publish to:- PUB_PREFIX/MQTT_TOPIC&lt;br /&gt;
 #define PUB_PREFIX2            &amp;quot;tele&amp;quot;       // Sonoff devices publish telemetry data to:- PUB_PREFIX2/MQTT_TOPIC/UPTIME, POWER/LIGHT and TIME&lt;br /&gt;
hier die PUB_PREFIX mit der geänderten Topic &amp;quot;tele&amp;quot; anstatt &amp;quot;stat&amp;quot; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 define SonoffPows readingsGroup &amp;lt;%measure_power&amp;gt;,&amp;lt;aktuell&amp;gt;,&amp;lt;Tag&amp;gt;,&amp;lt;Gestern&amp;gt;,&amp;lt;Strom&amp;gt;,&amp;lt;Durchschnitt&amp;gt;,&amp;lt;max.P&amp;gt;,&amp;lt;Zyklus&amp;gt;,&amp;lt;Faktor&amp;gt;,&amp;lt;Status&amp;gt;,&amp;lt; hr &amp;gt; .*(Sonoff_Pow|Sonoff_Pow2|Sonoff_Pow3):CURRENT_POWER,TODAY_ENERGY,YESTERDAY_ENERGY,CURRENT,CURRENT_POWER_avg_day,CURRENT_POWER_max_day,PERIOD_ENERGY,POWER_FACTOR,LIGHT&lt;br /&gt;
 attr SonoffPows commands {&#039;LIGHT.ON&#039; =&amp;gt; &#039;set $DEVICE OFF&#039;,&#039;LIGHT.OFF&#039; =&amp;gt; &#039;set $DEVICE ON&#039;}&lt;br /&gt;
 attr SonoffPows mapping %ALIAS&lt;br /&gt;
 attr SonoffPows nameStyle style=&amp;quot;color:yellow&amp;quot;&lt;br /&gt;
 attr SonoffPows room Energie,MQTT&lt;br /&gt;
 attr SonoffPows valueFormat {&#039;CURRENT_POWER&#039; =&amp;gt;&amp;quot;%.0f W&amp;quot;, &#039;TODAY_ENERGY&#039; =&amp;gt;&amp;quot;%.2f Kw&amp;quot;,&#039;YESTERDAY_ENERGY&#039; =&amp;gt;&amp;quot;%.2f Kw&amp;quot;, &#039;CURRENT&#039; =&amp;gt;&amp;quot;%.2f A&amp;quot;,&#039;CURRENT_POWER_max_day&#039; =&amp;gt; &amp;quot;%.0f W&amp;quot;,&#039;CURRENT_POWER_avg_day&#039; =&amp;gt; &amp;quot;%.2f W&amp;quot;,&#039;CURRENT_POWER&#039;=&amp;gt;&amp;quot;%.0f W&amp;quot;,&#039;POWER_FACTOR&#039; =&amp;gt; &amp;quot;%.2f &amp;quot;}&lt;br /&gt;
 attr SonoffPows valueIcon {&#039;LIGHT.ON&#039; =&amp;gt; &#039;rc_GREEN@green&#039;, &#039;LIGHT.OFF&#039; =&amp;gt; &#039;rc_RED@red&#039;}&lt;br /&gt;
 attr SonoffPows valueStyle { if($READING eq &amp;quot;CURRENT_POWER&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 0 &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;TODAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 4.8){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;TODAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 2.5){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;TODAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 2.5 &amp;amp;&amp;amp; $VALUE &amp;lt; 4.8 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;YESTERDAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 2.5){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;YESTERDAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 2.5 &amp;amp;&amp;amp; $VALUE &amp;lt; 4.8 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;YESTERDAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 4.8){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 0.45){&#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039;}elsif( $READING eq &amp;quot;CURRENT&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 0.45 &amp;amp;&amp;amp; $VALUE &amp;lt; 0.87 ){&#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 0.87){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;PERIOD_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 10){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;PERIOD_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 10 &amp;amp;&amp;amp; $VALUE &amp;lt; 15 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;PERIOD_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 15){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; } }&lt;br /&gt;
hier die erweiterte ReadingsGroup mit dem Schalter. Bei Bedarf sind hier die Devicenamen anzupassen wenn andere Namen verwendet werden (Sonoff_Pow|Sonoff_Pow2|Sonoff_Pow3).&lt;br /&gt;
Das Beispiel gilt für das &#039;&#039;&#039;LEGACY Messageformat&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 define SonoffPows readingsGroup &amp;lt;%measure_power&amp;gt;,&amp;lt;aktuell&amp;gt;,&amp;lt;Tag&amp;gt;,&amp;lt;Gestern&amp;gt;,&amp;lt;Strom&amp;gt;,&amp;lt;Durchschnitt&amp;gt;,&amp;lt;max.P&amp;gt;,&amp;lt;Zyklus&amp;gt;,&amp;lt;Faktor&amp;gt;,&amp;lt;Status&amp;gt;,&amp;lt;hr&amp;gt; .*(Sonoff_Pow|Sonoff_Pow2|Sonoff_Pow3|Sonoff_Pow4):Power,Today,Yesterday,Current,Power_avg_day,Power_max_day,Period,Factor,LIGHT&lt;br /&gt;
 attr SonoffPows commands {&#039;LIGHT.ON&#039; =&amp;gt; &#039;set $DEVICE OFF&#039;,&#039;LIGHT.OFF&#039; =&amp;gt; &#039;set $DEVICE ON&#039;}&lt;br /&gt;
 attr SonoffPows mapping %ALIAS&lt;br /&gt;
 attr SonoffPows nameStyle style=&amp;quot;color:yellow&amp;quot;&lt;br /&gt;
 attr SonoffPows room Energie,MQTT&lt;br /&gt;
 attr SonoffPows valueFormat {&#039;Power&#039; =&amp;gt;&amp;quot;%.0f W&amp;quot;, &#039;Today&#039; =&amp;gt;&amp;quot;%.2f Kw&amp;quot;,&#039;Yesterday&#039; =&amp;gt;&amp;quot;%.2f Kw&amp;quot;, &#039;CURRENT&#039; =&amp;gt;&amp;quot;%.2f A&amp;quot;,&#039;Power_max_day&#039; =&amp;gt; &amp;quot;%.0f W&amp;quot;,&#039;Power_avg_day&#039; =&amp;gt; &amp;quot;%.2f W&amp;quot;,&#039;Power&#039;=&amp;gt;&amp;quot;%.0f W&amp;quot;,&#039;Factor&#039; =&amp;gt; &amp;quot;%.2f &amp;quot;}&lt;br /&gt;
 attr SonoffPows valueIcon {&#039;LIGHT.ON&#039; =&amp;gt; &#039;rc_GREEN@green&#039;, &#039;LIGHT.OFF&#039; =&amp;gt; &#039;rc_RED@red&#039;}&lt;br /&gt;
 attr SonoffPows valueStyle { if($READING eq &amp;quot;Power&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 0 &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Today&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 4.8){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Today&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 2.5){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Today&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 2.5 &amp;amp;&amp;amp; $VALUE &amp;lt; 4.8 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Yesterday&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 2.5){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Yesterday&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 2.5 &amp;amp;&amp;amp; $VALUE &amp;lt; 4.8 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Yesterday&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 4.8){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Current&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 0.45){&#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039;}elsif( $READING eq &amp;quot;Current&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 0.45 &amp;amp;&amp;amp; $VALUE &amp;lt; 0.87 ){&#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Current&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 0.87){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Period&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 10){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Period&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 10 &amp;amp;&amp;amp; $VALUE &amp;lt; 15 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Period&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 15){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;Power_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039;}}&lt;br /&gt;
Dieses Beispiel ist für &#039;&#039;&#039;Tasmota mit JSON&#039;&#039;&#039; ausgelegt und benötigt ebenso wie oben die Erweiterung &amp;quot;average&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Pow_CURRENT_POWER average Sonoff_Pow:Power.*&lt;br /&gt;
damit werden der Durchschnitt und min max für Tasmota mit JSON erzeugt.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====POW mit FTUI anzeigen====&lt;br /&gt;
[[Datei:sonoff_pow_energy.JPG|thumb|left|alt=Tablett FTUI]]&lt;br /&gt;
Wer möchte kann die Energieanzeigen auch mit der [https://forum.fhem.de/index.php/topic,34233.0.html Tablett UI] für eine Tablet Ansicht gestalten. Mit dieser stehen viele Möglichkeiten zu einer attraktiven Darstellung zur Verfügung.&lt;br /&gt;
Hier ein Beispiel welches mit den Widget &amp;quot;[http://www.fhemwiki.de/wiki/FHEM_Tablet_UI#Widget_THERMOSTAT thermostat]&amp;quot; dargestellt ist.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Slampher Flashen==&lt;br /&gt;
[[Datei:sonoff_sl_53.jpg|thumb|left|alt=Sonoff SLAMPHER]]&lt;br /&gt;
Dieses Modul ist eine Besonderheit was das Flashen betrifft, denn mit Hilfe des Tasters kann der ESP8266 NICHT in den Flashmode gebracht werden. Der Taster ist intern anderwärtig verdrahtet und somit für diesen Zweck nicht zu gebrauchen.&lt;br /&gt;
&lt;br /&gt;
Wie hier links im Bild zu sehen ist, muss der rechte Pin des R20 (oben im Bild) während dem Einstecken des USB Steckers auf Masse gelegt werden. Die beste Möglichkeit ist ein Stücken Draht anzulöten und diesen dann beim einstecken auf den Masse Pin des USB-Konverters zu legen.&lt;br /&gt;
&lt;br /&gt;
Pinbelegung des Steckers von oben nach unten:&lt;br /&gt;
 o - GND&lt;br /&gt;
 o - TxD&lt;br /&gt;
 o - RxD&lt;br /&gt;
 &#039;&#039;&#039;o&#039;&#039;&#039; - Vdd&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sl_51.jpg|thumb|left|alt=Sonoff SLAMPHER R20]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier ist genau ersichtlich, wo der R20 auf der Platine platziert ist. }}&lt;br /&gt;
Hier nocheinmal schön zu sehen wo der R20 (der ist nicht eingelötet sondern leer) exakt auf der Platine liegt, gemeint ist der rechte Pin. Hier kann auch leicht gelötet werden, da keine empfindlichen Bauteile in der Nähe sind und auch genug Platz vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_sl_50.jpg|thumb|left|alt=Sonoff SLAMPHER R20]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier ist genau ersichtlich, wo der Draht am R20 aufgelötet wurde }}&lt;br /&gt;
Hier ist ein kleines Stück Schaltdraht auf den Pin bereist aufgelötet und bereit zum Flashen!&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel wurde keine Pfostensteckerleiste auf die Platine aufgelötet, sondern nur durchgesteckt und mit einem Gummiring  zum Relais fixiert, das erspart den Lötvorgang, weil in Zukunft dann ohnehin OTA geflasht werden kann.&lt;br /&gt;
&lt;br /&gt;
Also Pin20 auf Masse legen und USB-Konverter an den PC einstecken, dann den Draht von der Masse entfernen. Der ESP8266 sollte jetzt im Flashmodus bereit stehen und kann wie bereits oben beschrieben geflasht werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sonoff Slampher Software===&lt;br /&gt;
[[Datei:sonoff_sl_54.jpg|thumb|left|alt=Sonoff SLAMPHER FHEM]]&lt;br /&gt;
&lt;br /&gt;
Als Software wird Arends Sketch installiert (Kommunikation über MQTT), da zum derzeitigen Zeitpunkt ESPEasy das Modul noch nicht integriert hat und somit auch nicht ansteuern kann.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_SL MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_SL IODev myBroker&lt;br /&gt;
 attr Sonoff_SL devStateIcon ON:rc_GREEN:OFF OFF:rc_RED:ON&lt;br /&gt;
 attr Sonoff_SL icon hue_filled_br30&lt;br /&gt;
 attr Sonoff_SL publishSet ON OFF cmnd/sonoffsl/1/POWER/set&lt;br /&gt;
 attr Sonoff_SL room Bewegung,_Sonoff&lt;br /&gt;
 attr Sonoff_SL stateFormat Licht&lt;br /&gt;
 attr Sonoff_SL subscribeReading_Licht tele/sonoffsl/POWER&lt;br /&gt;
 attr Sonoff_SL subscribeReading_state cmnd/sonoffsl/1/POWER/set&lt;br /&gt;
 attr Sonoff_SL webCmd ON:OFF&lt;br /&gt;
&lt;br /&gt;
Hier ein Beispiel wie in FHEM der Slampher eingebunden werden kann. In diesem Beispiel wird davon ausgegangen, das das Modul &amp;quot;sonoffsl&amp;quot; unter Konfiguration am WEBIF (Configure MQTT bei Topic) so unbenannt wurde. Wer einen anderen Namen haben möchte, muss dies dann auch in FHEM entsprechend anpassen.&lt;br /&gt;
Das Beispiel gilt für das &#039;&#039;&#039;LEGACY Messageformat&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Th10/16 FHEM==&lt;br /&gt;
[[Datei:sonoff_th_01.jpg|thumb|left|alt=Sonoff TH10]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Temperatur Modul TH10 / 16! }}&lt;br /&gt;
Das Modul kann durch drücken des Tasters während dem Einstecken des USB-Konverters in den Flashmodus gebracht werden.&lt;br /&gt;
Der Th10/16 kann mit zwei unterschiedlichen Typen von Sensoren bestückt werden, hier im Beispiel mit dem externen Temperaturfühler DS18B20.&lt;br /&gt;
&lt;br /&gt;
Wie im Bild klar zu sehen ist, kann das Webif auch zur Darstellung via Mobile verwendet werden. Mit &amp;quot;Toggle&amp;quot; wird Ein- oder Aus geschaltet und  darunter ist die aktuelle Temperatur ersichtlich. Für diese Ansicht muss keine MQTT Verbindung eingerichtet werden, da die Kommunikation hier rein über HTTP erfolgt.&lt;br /&gt;
&lt;br /&gt;
Die unten dargestellten Beispiele für FHEM beziehen sich auf Arends Sketch, also über MQTT. Dieses Modul kann aber genauso leicht über ESPEasy und der ESPEasy-Bridge eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Pinbelegung des Steckers von oben nach unten:&lt;br /&gt;
 o - GND&lt;br /&gt;
 o - TxD&lt;br /&gt;
 o - RxD&lt;br /&gt;
 &#039;&#039;&#039;o&#039;&#039;&#039; - Vdd&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #define DSB_PIN              14           // GPIO 14 = DS18x20 (Sonoff_TH10A(16A), Sonoff SV)&lt;br /&gt;
 #define DSB_RESOLUTION       2            // Maximum number of decimals (0 - 3) showing Temperature&lt;br /&gt;
 // *** Option 1 - Single DS18B20 - Select either Option 1 OR Option 2&lt;br /&gt;
 #define SEND_TELEMETRY_DS18B20            // Enable sending single temperature telemetry&lt;br /&gt;
 // *** Option 2 - Multiple DS18B20 and/or DS18S20 (needs OneWire library!)&lt;br /&gt;
 //  #define SEND_TELEMETRY_DS18x20            // Enable sending multi temperature telemetry &lt;br /&gt;
In der user_config.h (Arends Sketch) muss hier die Option 1 aktiviert werden (entfernen der vorangestellten //) damit die Telemetriedaten auch gesendet werden. Es empfiehlt sich mindestens die Version &amp;gt;= V 2.0.16, weil hier die Sensoren erweitert wurden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #define DHT_PIN              14           // GPIO 14 = AM2301 (Sonoff_TH10A(16A), Sonoff SV)&lt;br /&gt;
 #define DHT_TYPE             AM2301       // DHT module type (DHT11, DHT21, DHT22, AM2301, AM2302 or AM2321)&lt;br /&gt;
 #define DHT_RESOLUTION       1            // Maximum number of decimals (0 - 3) showing Temperature&lt;br /&gt;
 #define SEND_TELEMETRY_DHT                // Enable sending temperature and humidity telemetry&lt;br /&gt;
Beispiel für den Sensor DHT22, Temperatur und Luftfeuchte. Es dürfen aber nicht beide Sensoren (DS18B20 + DHT22) gleichzeitig aktiviert werden, da ja beide an GPIO14 angehängt werden und es ansonsten zu Fehlfunktionen kommen würde.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_th_02.jpg|thumb|left|alt=Sonoff TH10]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Einbindung in FHEM via MQTT! }}&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ### Temperatur und Luftfeuchte vom Sonoff Switch ###&lt;br /&gt;
 define Sonoff_Temp MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Temp IODev myBroker&lt;br /&gt;
 attr Sonoff_Temp alias Pool Wasser&lt;br /&gt;
 attr Sonoff_Temp eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_Temp icon temperature_humidity&lt;br /&gt;
 attr Sonoff_Temp publishSet ON OFF cmnd/sonoffth/1/POWER/set&lt;br /&gt;
 attr Sonoff_Temp room _Sonoff&lt;br /&gt;
 attr Sonoff_Temp stateFormat {sprintf(&amp;quot;Temperatur: %.1f Grad&amp;quot;, ReadingsVal($name,&amp;quot;TEMPERATURE&amp;quot;,0))}&lt;br /&gt;
 attr Sonoff_Temp subscribeReading_TEMPERATURE tele/sonoffth/DS18B20/TEMPERATURE&lt;br /&gt;
 attr Sonoff_Temp subscribeReading_humidity tele/sonoffth/HUMIDITY&lt;br /&gt;
 attr Sonoff_Temp subscribeReading_state cmnd/sonoffth/1/POWER/set&lt;br /&gt;
Beispiel für FHEM mit Temperaturanzeige mit DS18B20&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Switch MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Switch IODev myBroker&lt;br /&gt;
 attr Sonoff_Switch alias Pool Licht&lt;br /&gt;
 attr Sonoff_Switch devStateIcon on:rc_GREEN:off off:rc_RED:on&lt;br /&gt;
 attr Sonoff_Switch eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_Switch icon light_ceiling&lt;br /&gt;
 attr Sonoff_Switch publishSet ON OFF cmnd/sonoffth/1/POWER/set&lt;br /&gt;
 attr Sonoff_Switch room _Sonoff&lt;br /&gt;
 attr Sonoff_Switch stateFormat Licht&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_Licht tele/sonoffth/POWER&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_state cmnd/sonoffth/1/POWER/set&lt;br /&gt;
 attr Sonoff_Switch webCmd ON:OFF&lt;br /&gt;
Der Schalter nochmals seperat dargestellt, je nach Geschmack.&lt;br /&gt;
Das Beispiel gilt für das &#039;&#039;&#039;LEGACY Messageformat&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff 4CH 4-Kanal Schaltmodul==&lt;br /&gt;
[[Datei:sonoff_ch4_1.jpg|thumb|left|alt=Sonoff CH4]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Achtung andere Einstellungen der Arduino IDE: Select Board &amp;quot;Generic ESP8285 Module&amp;quot; (=Flash Mode &amp;quot;DOUT&amp;quot;) and Flash Size &amp;quot;1M (64K SPIFFS)&amp;quot;n! }}&lt;br /&gt;
&lt;br /&gt;
Der Sonoff 4CH ist mit seinen 4 Kanälen ein sehr preiswertes Modul im Gehäuse und für Hutschinenmontage. Anstatt des üblichen ESP8266 besitzt dieses Modul schon den moderneren &#039;&#039;&#039;ESP8285&#039;&#039;&#039;. Es müssen daher in der Arduino IDE andere Einstellungen vorgenommen werden. Unter Board wird hier das &amp;quot;&#039;&#039;&#039;Generic 8285 Module&#039;&#039;&#039;&amp;quot; mit &#039;&#039;&#039;1M und 64K Spiffs&#039;&#039;&#039; angewählt. Der Flashmode &amp;quot;&#039;&#039;&#039;DOUT&#039;&#039;&#039;&amp;quot; wird dann automatisch eingestellt, bzw. ausgeblendet.&lt;br /&gt;
&lt;br /&gt;
Das Modul ist etwas größer als die anderen Sonoff Produkte und besitzt mit 14,5 x 9 cm schon beachtliche Einbau Maße.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_ch4_2.jpg|thumb|left|alt=Sonoff 4CH FDTI]]&lt;br /&gt;
Als weitere Besonderheit sei hier erwähnt, das die Signale &#039;&#039;&#039;RxD auf RxD und TxD auf TxD&#039;&#039;&#039; des FTDI Konverters zu verbinden sind. Wie bei allen Sonoff Modulen darf man &#039;&#039;&#039;zum flashen keine Netzspannung anschließen&#039;&#039;&#039;, sondern nur über die Versorgungsspannung des FDTI Konverters mit 3,3 V versorgen (Jumper richtig setzen). Die Stiftleiste für den FTDI Anschluß ist hier schon eingelötet.&lt;br /&gt;
&lt;br /&gt;
In den Flashmodus gelangt man durch drücken der &#039;&#039;&#039;Taste FW/IO0&#039;&#039;&#039; während des einstecken des USB Anschlusses.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_ch4_3.jpg|thumb|left|alt=Sonoff 4CH Arends]]&lt;br /&gt;
Hier die Ansicht des Webinterface des Arends Sketches!&lt;br /&gt;
Bei der Software sei erwähnt, das die getestete Version 3.1.16 nur bei Kanal 1 den Modus &amp;quot;PulseTime&amp;quot; beherrscht. Wer also gepulste Ausgänge (zB: elektrische Garage/Toröffner) benötigt muss diese per Software nachbilden oder mit dem Kanal 1 auskommen. Eine &amp;quot;Pulsetime 10&amp;quot; ist ein guter Wert dafür (etwa 1 Sekunde). &lt;br /&gt;
&lt;br /&gt;
Als Alternative kann mit dieser HTML Seite des Webservers am Modul des CH4 schon mit jedem Browser fähigem Handy (Android, iPhone, Windows) aufgerufen werden und somit alle Funktionen gesteuert werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_ch4_4.jpg|thumb|left|alt=Sonoff CH4 Software APP]]&lt;br /&gt;
Hier dargestellt die Original Software die Sonoff zum Modul liefert (EWeLink) und über ihre Cloud verbindet. Leider kann hier keine gepulste Ausgabe erfolgen. Mit einem Countdown kann zwar der Ausgang wieder abgeschaltet werden, die kleinste Zeiteinheit ist aber 1 Minute und somit für einen Impuls leider nicht zu gebrauchen. Ebenso kann mit dieser Software keine Einbindung in FHEM erfolgen, obwohl es eine nette anschauliche Darstellung ist.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Erweiterungen=&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sonoff Switch mit Temperatur + Luftfeuchte== &lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier geht es um nützliche Hardware Erweiterungen an den Originalmodulen!}}&lt;br /&gt;
Wozu überhaupt den Switch erweitern wenn es auch die Modelle TH10 und TH16 gibt?&lt;br /&gt;
&lt;br /&gt;
Manche Personen können dadurch dem Basteltrieb nachkommen, aber das wesentliche ist der Preis, da die Switches doch fast um die Hälfte billiger sind. Die Sensoren kosten ebenfalls kaum nennenswerte Beträge.&lt;br /&gt;
&lt;br /&gt;
Oder es hat schon jemand Switches im Einsatz und möchte jetzt zusätzlich die Temperatur erfassen!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hardware erweitern mit DHT22 ===&lt;br /&gt;
[[Datei:sonoff_sw_4.PNG|thumb|left|alt=Sonoff Switch Pinleiste mit Temperatur]]&lt;br /&gt;
Am Sonoff Switch wurde ja schon eine Stiftleiste zum Flashen eingelötet. Diese Stiftleiste bietet schon alle Anschlüsse welche für die Temperatur- und Luftfeuchtemessung benötigt werden. Am 5. Anschluß der Stifftleiste ist das Signal &amp;quot;SCL&amp;quot; (GPIO14) herausgeführt, welches für den DHT22 zur Erfassung der Messdaten benötigt wird. Der Sonsor wird mit einem einem 3-poligen Kabel (zB: ein Steckkabel für ein Breadboard oder direkt anlöten) verbunden. Damit der DHT22 korrekt funktioniert, wird ein Widerstand mit 4,7 K Ohm zwischen Vdd und Data am DHT22 zusätzlich benötigt. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_45.jpg|thumb|left|alt=AM2302 / DHT22]]&lt;br /&gt;
&lt;br /&gt;
Ansicht des DHT22 (AM2302) mit den aufgesteckten Verbindungskabeln. Von links nach rechts sind das&lt;br /&gt;
&lt;br /&gt;
 1 = VCC 3,3 V&lt;br /&gt;
 2 = Data&lt;br /&gt;
 3 = nc (nicht belegt)&lt;br /&gt;
 4 = GND&lt;br /&gt;
&lt;br /&gt;
Pin1 (VCC) des DHT22 muss also auf Pin1 der Stiftleiste, Pin2 (Data) auf Pin5 und Pin4 (GND) auf Pin4. &lt;br /&gt;
Pin2 und Pin1 soll hier noch der Widerstand aufgelötet werden.&lt;br /&gt;
&lt;br /&gt;
 1 ------- 1 (VDD)&lt;br /&gt;
 2 ------- 5 (GPIO14)&lt;br /&gt;
 3&lt;br /&gt;
 4 ------- 4 (GND)&lt;br /&gt;
 DHT22  Stiftleiste&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_44.jpg|thumb|left|alt=umgebautes Modul]]&lt;br /&gt;
Diese Darstellung zeigt das umgebaute und bereits verschlossene Modul. Auf der Seite des Tasters (bitte nur hier, da auf der anderen Seite die 230 V verlaufen und neben der Lebensgefahr auch den Sensor beeinflussen) ist hier einfach mit einer Eisensäge ein Schlitz eingesägt, der dient in diesem Falle als Kabeldurchführung. Ein Schlitz ist besser als ein Loch, da der Oberteil des Gehäuses sich leichter aufsetzen läßt. Wer ein längeres Kabel benötigt, kann natürlich auch ein 3-poliges Telefonkabel (oder Mikrokabel oder sonstiges) verwenden. Der Sensor sollte etwas Abstand zum Gehäuse haben, da dieses auch eine Eigenerwärmung hat. Wer es ganz originalgetreu lösen will, kann auch eine 3-polige Mini Buchse für Klinckenstecker (3,5mm) einbauen so wie sie am TH10/16 vorhanden ist.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Software anpassen am Beispiel MQTT ===&lt;br /&gt;
[[Datei:sonoff_sw_40.jpg|thumb|left|alt=Sonoff MQTT]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wer über MQTT kommuniziert und die Software von Theo Arends benutzt, muss folgende Dinge beachten. In der Datei &#039;&#039;&#039;user_config.h&#039;&#039;&#039; müssen im Abschnitt &#039;&#039;&#039;Module = SONOFF&#039;&#039;&#039; die Slashes so wie unten dargestellt entfernt werden, damit erstens die Interrupts abgefragt werden und zweitens die Telemetriedaten gesendet werden. Ebenso ist der verwendete Sensor bei &amp;quot;&#039;&#039;&#039;define DHT_TYPE&#039;&#039;&#039;&amp;quot; eingestellt werden. In dem hier gezeigten Beispiel also &amp;quot;&#039;&#039;&#039;DHT22&#039;&#039;&#039;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #if MODULE == SONOFF                        // programming header 1:3.3V 2:rx 3:tx 4:gnd&lt;br /&gt;
  #define APP_NAME             &amp;quot;Sonoff module&amp;quot;&lt;br /&gt;
  #define LED_PIN              13           // GPIO 13 = Green/Blue Led (0 = On, 1 = Off) - Sonoff&lt;br /&gt;
  #define LED_INVERTED         1            // 0 = (1 = On, 0 = Off), 1 = (0 = On, 1 = Off)&lt;br /&gt;
  #define REL_PIN              12           // GPIO 12 = Red Led and Relay (0 = Off, 1 = On)&lt;br /&gt;
  #define KEY_PIN              0            // GPIO 00 = Button&lt;br /&gt;
 /*-------------------------------------------------------------------------------------------*/&lt;br /&gt;
  #define DSB_PIN              4            // GPIO 14 = DS18B20 (Sonoff_TH10A(16A), Sonoff SV)&lt;br /&gt;
  #define SEND_TELEMETRY_DS18B20            // Enable sending temperature telemetry&lt;br /&gt;
 /*-------------------------------------------------------------------------------------------*/&lt;br /&gt;
  #define DHT_PIN              14           // GPIO 14 = AM2301 (Sonoff_TH10A(16A), Sonoff SV)&lt;br /&gt;
  #define DHT_TYPE             DHT22        // DHT module type (DHT11, DHT21, DHT22, AM2301, AM2302 or AM2321)&lt;br /&gt;
  #define SEND_TELEMETRY_DHT                // Enable sending temperature and humidity telemetry&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Software Anpassung DHT22 in FHEM ===&lt;br /&gt;
[[Datei:sonoff_sw_41.jpg|thumb|left|alt=umgebautes Modul]]&lt;br /&gt;
&lt;br /&gt;
Links in der Hardcopy sind die Readings die nach der Anpassung von FHEM (Broker) befüllt werden sollten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ### Temperatur und Luftfeuchte vom Sonoff Switch ###&lt;br /&gt;
 define Sonoff_Temp MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Temp IODev myBroker&lt;br /&gt;
 attr Sonoff_Temp icon temperature_humidity&lt;br /&gt;
 attr Sonoff_Temp room MQTT&lt;br /&gt;
 attr Sonoff_Temp stateFormat {sprintf(&amp;quot;Temperatur: %.1f Grad Feuchte: %.1f &amp;quot;, ReadingsVal($name,&amp;quot;temperature&amp;quot;,0), ReadingsVal($name,&amp;quot;humidity&amp;quot;,0))}&lt;br /&gt;
 attr Sonoff_Temp subscribeReading_humidity tele/sonoff/HUMIDITY&lt;br /&gt;
 attr Sonoff_Temp subscribeReading_temperature tele/sonoff/TEMPERATURE&lt;br /&gt;
Das Beispiel gilt für das &#039;&#039;&#039;LEGACY Messageformat&#039;&#039;&#039;.&lt;br /&gt;
Hier die zusätzliche Erweiterung um die Temperatur und die Luftfeuchte in FHEM. Der in der Topic verwendete Name &amp;quot;sonoff&amp;quot; muss natürlich der Einstellung in der Software am Switch entsprechen. Bei Verwendung mehrerer Switches muss natürlich auch der Name bei jedem geändert werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Logfile für die Temperatur ===&lt;br /&gt;
 define SVG_FileLog_Sonoff_Temp SVG myDbLog:SVG_FileLog_Sonoff_Temp:HISTORY&lt;br /&gt;
 attr SVG_FileLog_Sonoff_Temp room MQTT&lt;br /&gt;
&lt;br /&gt;
Und schließlich fehlt noch das Logfile, damit der Temperaturverlauf auch in schönen Plots dargestellt werden kann.&lt;br /&gt;
Das hier verwendete Beispiel funktioniert nur mit einer DbLog.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Switch als Thermostat verwenden mit MQTT== &lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_55.jpg|thumb|left|alt=Thermostat]]&lt;br /&gt;
Mit diesem einfachen Beispiel wird ein Pelett Ofen mit einem externen Thermostat (sonoff Switch oder TH10/16) gesteuert. Zum besseren Überblick wird die Steuerung in einzelne Module getrennt, es könnte aber auch einiges zu einer einzigen Definition zusammen gefasst werden. Der Thermostat könnte auch als Frostwächter benutzt werden und ein anderes Heizgerät steuern.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 ###################################&lt;br /&gt;
 ### Sonoff Thermostat Regelung ####&lt;br /&gt;
 ###################################&lt;br /&gt;
 define Sonoff_dht MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_dht IODev myBroker&lt;br /&gt;
 attr Sonoff_dht alias Raumtemperatur&lt;br /&gt;
 attr Sonoff_dht group Thermostat&lt;br /&gt;
 attr Sonoff_dht icon temperature_humidity&lt;br /&gt;
 attr Sonoff_dht publishSet ON OFF cmnd/sonoff_dht/1/POWER/set&lt;br /&gt;
 attr Sonoff_dht room _Sonoff&lt;br /&gt;
 attr Sonoff_dht stateFormat {sprintf(&amp;quot;Temperatur: %.1f Grad Feuchte: %.1f &amp;quot;, ReadingsVal($name,&amp;quot;TEMPERATURE&amp;quot;,0),  ReadingsVal($name,&amp;quot;HUMIDITY&amp;quot;,0))}&lt;br /&gt;
 attr Sonoff_dht subscribeReading_HUMIDITY tele/sonoff_dht/DHT/HUMIDITY&lt;br /&gt;
 attr Sonoff_dht subscribeReading_TEMPERATURE tele/sonoff_dht/DHT/TEMPERATURE&lt;br /&gt;
 attr Sonoff_dht subscribeReading_state cmnd/sonoff_dht/1/POWER/set&lt;br /&gt;
FHEM Definition zur Erfassung der Temperatur und der Luftfeuchte. Damit dieses Beispiel funktioniert, ist am Sonoff Modul die Topic &amp;quot;&#039;&#039;&#039;sonoff_dht&#039;&#039;&#039;&amp;quot; zu setzen. Dieser Temperaturwert dient dem Thermostat als ISTWert.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Sw MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Sw IODev myBroker&lt;br /&gt;
 attr Sonoff_Sw alias Pellets Ofen&lt;br /&gt;
 attr Sonoff_Sw devStateIcon on:rc_GREEN:off off:rc_RED:on&lt;br /&gt;
 attr Sonoff_Sw eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_Sw group Thermostat&lt;br /&gt;
 attr Sonoff_Sw icon sani_boiler_temp&lt;br /&gt;
 attr Sonoff_Sw publishSet ON OFF cmnd/sonoff_dht/1/POWER/set&lt;br /&gt;
 attr Sonoff_Sw room _Sonoff&lt;br /&gt;
 attr Sonoff_Sw stateFormat Licht&lt;br /&gt;
 attr Sonoff_Sw subscribeReading_Licht tele/sonoff_dht/POWER&lt;br /&gt;
 attr Sonoff_Sw subscribeReading_state cmnd/sonoff_dht/1/POWER/set&lt;br /&gt;
 attr Sonoff_Sw webCmd ON:OFF&lt;br /&gt;
FHEM Definition zum Absetzen der Befehle für das Relais (Thermostat) Ein- / Aus. Wenn das zu steuernde Geräte einen potentialfreien Thermostatanschluß benötigt (in den meisten Fällen), muss noch ein Relais dazwischen geschaltet werden um die Trennung der Netzspannung zu gewährleisten.&lt;br /&gt;
&lt;br /&gt;
 define ThermostatPellets dummy&lt;br /&gt;
 attr ThermostatPellets alias Pellets Ofen Sollwert&lt;br /&gt;
 attr ThermostatPellets group Thermostat&lt;br /&gt;
 attr ThermostatPellets icon temp_control&lt;br /&gt;
 attr ThermostatPellets room _Sonoff&lt;br /&gt;
 attr ThermostatPellets setList state:0,5,10,12,13,14,15,16,17,17.5,18,18.5,19,19.5,20,20.5,21,21.5,22,23,24,25,26,27&lt;br /&gt;
 attr ThermostatPellets webCmd state&lt;br /&gt;
Die Sollwertvorgabe für das Thermostat durch einen Dummy, damit können die gewünschten Temperaturen eingestellt werden.&lt;br /&gt;
Das Beispiel gilt für das &#039;&#039;&#039;LEGACY Messageformat&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 ### sofort ausführen wenn neuer Sollwert eingestellt wird ###&lt;br /&gt;
 define Thermostat_on_notify notify ThermostatPellets IF (ReadingsVal(&amp;quot;Sonoff_Sw&amp;quot;,&amp;quot;state&amp;quot;,0) eq &amp;quot;OFF&amp;quot; &amp;amp;&amp;amp; (ReadingsVal(&amp;quot;Sonoff_dht&amp;quot;,&amp;quot;TEMPERATURE&amp;quot;,0) &amp;lt;= Value(&amp;quot;ThermostatPellets&amp;quot;))) (set Sonoff_Sw ON)&lt;br /&gt;
 define Thermostat_off_notify notify ThermostatPellets IF (ReadingsVal(&amp;quot;Sonoff_Sw&amp;quot;,&amp;quot;state&amp;quot;,0) eq &amp;quot;ON&amp;quot; &amp;amp;&amp;amp; (ReadingsVal(&amp;quot;Sonoff_dht&amp;quot;,&amp;quot;TEMPERATURE&amp;quot;,0) &amp;gt; Value(&amp;quot;ThermostatPellets&amp;quot;))) (set Sonoff_Sw OFF)&lt;br /&gt;
Mit einem notify wird die manuelle Änderung des Sollwertes überwacht und sofort reagiert.&lt;br /&gt;
&lt;br /&gt;
 ## zyklisch prüfen ob Sollwert erreicht wurde ###&lt;br /&gt;
 define Thermostat_on at +*00:15:00 IF (ReadingsVal(&amp;quot;Sonoff_Sw&amp;quot;,&amp;quot;Licht&amp;quot;,0) eq &amp;quot;OFF&amp;quot; &amp;amp;&amp;amp; (ReadingsVal(&amp;quot;Sonoff_dht&amp;quot;,&amp;quot;TEMPERATURE&amp;quot;,0) &amp;lt;= Value(&amp;quot;ThermostatPellets&amp;quot;))) (set Sonoff_Sw ON)&lt;br /&gt;
 define Thermostat_off at +*00:15:00 IF (Value(&amp;quot;Sonoff_Sw&amp;quot;) eq &amp;quot;ON&amp;quot; &amp;amp;&amp;amp; (ReadingsVal(&amp;quot;Sonoff_dht&amp;quot;,&amp;quot;TEMPERATURE&amp;quot;,0) &amp;gt; Value(&amp;quot;ThermostatPellets&amp;quot;))) (set Sonoff_Sw OFF)&lt;br /&gt;
Hier noch die Soll- Ist Wertvergleiche zur Steuerung. Es wird alle 15 Minuten überprüft ob die Temperatur erreicht ist. Bei einer trägen Heizung sollten 15 Minuten ausreichend sein, wer will kann dies aber auch alle 5 oder 10 Minuten prüfen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Switch mit Bewegungsmelder HC-SR501== &lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_pir_1.jpg|thumb|left|alt=Bewegungsmelder]]&lt;br /&gt;
Basierend auf dem Wall Switch MQTT Sketch von Arends wurde hier ein Sonoff BASIC + PIR HC-SR501 in eine größere Verteilerdose eingebaut, der Sonoff wurde dabei etwas gekürzt. Die Bewegungsmelder sind ab etwa 70 Cent erhältlich.&lt;br /&gt;
&lt;br /&gt;
Der Sketch kann auch den Blink Modus. Damit kann man im Alarmfall z.B. Alle Strahler rings ums Haus blinken lassen.&lt;br /&gt;
&lt;br /&gt;
Mehr dazu kann hier im [https://forum.fhem.de/index.php/topic,63824.0.html Forum]im Diskussionsthread nachgelesen werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_pir_2.jpg|thumb|left|alt=Bewegungsmelder]]&lt;br /&gt;
Ein Beispiel wir der Bewegungsmelder in der Feuchtraumdose montiert werden kann. Wird der Bewegungsmelder abgesetzt vom Switch montiert, ist darauf zu achten das die Kabel nicht zu lange werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
===Spannungsversorgung des HC-SR501===&lt;br /&gt;
[[Datei:sonoff_pir_4.jpg|thumb|left|alt=5V für Bewegungsmelder]]&lt;br /&gt;
Der HC-SR501 wird vom Sonoff versorgt, wobei hier die 3,3 V nicht immer ausreichen. Es ist deshalb am HC-SR501 eine Diode zu überbrücken, dann reichen die 3,3V vom Sonoff. Es können aber auch am Sonoff die 5V angezapft werden. Hier im Bild dargestellt wo die 5V angezapft werden können.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_pir_5.jpg|thumb|left|alt=3,3V für Bewegungsmelder]]&lt;br /&gt;
Hier eine kleine Übersicht der wichtigsten Teile und deren Platzierung am HC-SR501. &lt;br /&gt;
Den PIR kann man auch mit 3,3V betreiben wenn man die Diode am Eingang nach Vcc überbrückt, dann reicht die Spannung für einen reibungslosen Betrieb völlig aus. Dies gilt für den HC-SR501, wird ein anderer PIR verwendet muss man nachschauen ob das auch möglich ist, ansonsten die 5V Variante wählen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===Anpassung des Sketches mit Wall Switch===&lt;br /&gt;
Zur Vorbereitung des Sketches sind zunächst einige Einstellungen in der &amp;quot;user_config.h&amp;quot; durchzuführen.&lt;br /&gt;
&lt;br /&gt;
 #if MODULE == SONOFF                        // programming header 1:3.3V 2:rx 3:tx 4:gnd&lt;br /&gt;
  #define APP_NAME             &amp;quot;Sonoff 8266 module&amp;quot;&lt;br /&gt;
  #define MQTT_GRPTOPIC        &amp;quot;sonoffs&amp;quot;    // [GroupTopic] MQTT Group topic&lt;br /&gt;
 /*-------------------------------------------------------------------------------------------*/&lt;br /&gt;
  #define LED_PIN              13           // GPIO 13 = Green/Blue Led (0 = On, 1 = Off) - Sonoff&lt;br /&gt;
  #define LED_INVERTED         1            // 0 = (1 = On, 0 = Off), 1 = (0 = On, 1 = Off)&lt;br /&gt;
  #define REL_PIN              12           // GPIO 12 = Red Led and Relay (0 = Off, 1 = On)&lt;br /&gt;
  #define KEY_PIN              0            // GPIO 00 = Button&lt;br /&gt;
 /*-------------------------------------------------------------------------------------------*\&lt;br /&gt;
 * Wall switch and HC-SR501&lt;br /&gt;
 \*-------------------------------------------------------------------------------------------*/&lt;br /&gt;
  #define SWITCH_PIN           14           // GPIO 14 = Standard wall switch to Gnd (Sonoff_TH10A(16A), Sonoff SV)&lt;br /&gt;
  #define SWITCH_MODE          &#039;&#039;&#039;PUSHBUTTON_INV&#039;&#039;&#039;      // [SwitchMode] TOGGLE, FOLLOW, FOLLOW_INV, PUSHBUTTON or PUSHBUTTON_INV (the wall switch state)&lt;br /&gt;
  &#039;&#039;&#039;#define USE_WALL_SWITCH&#039;&#039;&#039;                   // Enable the use of a standard wall switch to control the relay&lt;br /&gt;
Wichtig ist dabei die vorangestellten Slahes // bei &amp;quot;#define USE_WALL_SWITCH&amp;quot; zu entfernen auf &#039;&#039;&#039;PUSHBUTTON_INV&#039;&#039;&#039; zu stellen. Dann kann der Sonoff Switch compiliert und geflasht werden.&lt;br /&gt;
&lt;br /&gt;
===Einbindung des HC-SR501 in FHEM===&lt;br /&gt;
 # ------------- Sonoff_pir mit Bewegungsmelder ---------------&lt;br /&gt;
 define Sonoff_pir MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_pir IODev myBroker&lt;br /&gt;
 attr Sonoff_pir eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_pir group Sonoff&lt;br /&gt;
 attr Sonoff_pir icon hue_filled_br30&lt;br /&gt;
 attr Sonoff_pir publishSet ON OFF cmnd/sonoff_pir/1/POWER/set&lt;br /&gt;
 attr Sonoff_pir room MQTT&lt;br /&gt;
 attr Sonoff_pir stateFormat Licht&lt;br /&gt;
 attr Sonoff_pir subscribeReading_Licht stat/sonoff_pir/POWER&lt;br /&gt;
 attr Sonoff_pir subscribeReading_state cmnd/sonoff_pir/1/POWER/set&lt;br /&gt;
 attr Sonoff_pir webCmd :&lt;br /&gt;
Das Beispiel gilt für das &#039;&#039;&#039;LEGACY Messageformat&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel wie der Sonoff Switch in FHEM eingebunden wird. Wenn im Sketch der Prefix von stat auf tele geändert wurde, ist dies auch hier durchzuführen ( subscribeReading_Licht tele/sonoff_pir/POWER ), ansonsten bleibt es so wie im Beispiel. Getestet wurde dieses Beispiel mit Version 3.1.6. Die Topic sollte auf den Namen &amp;quot;sonoff_pir&amp;quot; eingestellt werden. Bei anderen Namen ist dies entsprechend in FHEM anzupassen. &lt;br /&gt;
&lt;br /&gt;
Mit dem Command &#039;&#039;&#039;BUTTONTOPIC Alarm_SO2&#039;&#039;&#039; ( direkt im Webinterface des Sonoff ) wird der Wall Switch GPIO14 vom Sonoff entkoppelt und somit sendet der Bewegungsmelder direkt an FHEM --&amp;gt; Motion_pir MQTT_DEVICE&lt;br /&gt;
&lt;br /&gt;
Es sollte auch unbedingt kontrolliert werden, wie die Ausgabe des Alarmes in der Console erfolgt. Erscheint hier die Meldung &amp;quot;cmnd/Alarm_SO2/POWER = TOGGLE&amp;quot; dann muss mit dem Kommando &amp;quot;&#039;&#039;&#039;switchmode 1&#039;&#039;&#039;&amp;quot; das Ausgabeformat umgeschaltet werden, erst dann kommt das gewünschte Format &amp;quot;On&amp;quot; und &amp;quot;OFF&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 # ------------------ Motion_pir MQTT_DEVICE -----------------&lt;br /&gt;
 define Motion_pir MQTT_DEVICE&lt;br /&gt;
 attr Motion_pir IODev myBroker&lt;br /&gt;
 attr Motion_pir devStateIcon on:on-for-timer off:off&lt;br /&gt;
 attr Motion_pir eventMap ON:on OFF:off&lt;br /&gt;
 attr Motion_pir group Sonoff&lt;br /&gt;
 attr Motion_pir icon people_sensor&lt;br /&gt;
 attr Motion_pir room MQTT&lt;br /&gt;
 attr Motion_pir stateFormat Alarm&lt;br /&gt;
 attr Motion_pir subscribeReading_Alarm cmnd/Alarm_SO2/POWER&lt;br /&gt;
Die Motion_pir dient nun zur eigentlichen Einschaltung des Lichtes und sendet das Kommando &#039;&#039;&#039;cmnd/Alarm_SO2/POWER&#039;&#039;&#039; an den entkopellten GPIO 14 des Switch.&lt;br /&gt;
Das Beispiel gilt für das &#039;&#039;&#039;LEGACY Messageformat&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # ------------------ DoIf zur Motion Abfrage -----------------&lt;br /&gt;
 define di_Sonoff_pir_Alarm DOIF ([Motion_pir:&amp;quot;on&amp;quot;] and [Tag_Nacht:twilight_weather] &amp;lt; 35) (set Sonoff_pir on) DOELSEIF ([Motion_pir:&amp;quot;off&amp;quot;] and [Tag_Nacht:twilight_weather] &amp;lt; 35) (set Sonoff_pir off)&lt;br /&gt;
 attr di_Sonoff_pir_Alarm comment Abhängig von Helligkeitssensor wird nachts,bei Bewegung das Licht eingeschaltet!&lt;br /&gt;
 attr di_Sonoff_pir_Alarm group Sonoff&lt;br /&gt;
 attr di_Sonoff_pir_Alarm room MQTT&lt;br /&gt;
Zusätzlich kann nun mit einem &#039;&#039;&#039;Doif&#039;&#039;&#039; verknüpft werden um das Ganze mit Tag_Nacht:twilight_weather dann in Abhängigkeit der Helligkeit zu schalten. Selbstverständlich kann jede andere Quelle mit einem Helligkeitswert verwendet werden.&lt;br /&gt;
&lt;br /&gt;
===Alarmausgabe über Grouptopic===&lt;br /&gt;
 # ------------------------ Sonoffs Group ----------------------&lt;br /&gt;
 define Sonoffs MQTT_DEVICE&lt;br /&gt;
 attr Sonoffs IODev myBroker&lt;br /&gt;
 attr Sonoffs eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoffs group Sonoff&lt;br /&gt;
 attr Sonoffs icon hue_filled_br30&lt;br /&gt;
 attr Sonoffs publishSet ON OFF cmnd/sonoffs/1/POWER/set&lt;br /&gt;
 attr Sonoffs room MQTT&lt;br /&gt;
 attr Sonoffs stateFormat state&lt;br /&gt;
 attr Sonoffs subscribeReading_Licht stat/sonoffs/1/POWER&lt;br /&gt;
 attr Sonoffs subscribeReading_state cmnd/sonoffs/1/POWER/set&lt;br /&gt;
Wer möchte kann auch mit der Group Topic mehrere Switches mit Bewegungsmelder zusammenfassen und alle Lampen im Alarmfall gemeinsam in den Blinkmodus schalten. cmnd/sonoffs ist das Kommando für die Group Topic, sofern diese vom User nicht verändert wurde.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:IP Components]]&lt;br /&gt;
--[[Benutzer:Reinhart|Reinhart]] ([[Benutzer Diskussion:Reinhart|Diskussion]]) 20:54, 5. Jan. 2017 (CET)&lt;/div&gt;</summary>
		<author><name>Reinhart</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Sonoff&amp;diff=19907</id>
		<title>Sonoff</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Sonoff&amp;diff=19907"/>
		<updated>2017-02-14T13:46:12Z</updated>

		<summary type="html">&lt;p&gt;Reinhart: /* Sonoff POW FHEM Anbindung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;sonoff, dieser Artikel beschreibt die Ankopplung der kostengünstigen sonoff Module an FHEM mit ESPEasy oder MQTT.&#039;&#039;&#039;&lt;br /&gt;
{{Randnotiz|RNTyp=Fehl|RNText=Achtung: Arbeiten mit Netzspannung kann lebensgefährlich sein und darf nur von autorisiertem Fachpersonal durchgeführt werden!}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Seit einiger Zeit werden von der [https://www.itead.cc/sonoff-wifi-wireless-switch.html Fa. Itead] kostengünstige &amp;quot;sonoff&amp;quot; Produkte angeboten die glücklicherweise den [http://dl.itead.cc/IM151116002/0A-ESP8266_Specifications_v4.1.pdf ESP8266 Chip] On Board haben und somit die ideale Grundlage für [http://www.esp8266.nu/index.php/Main_Page ESPEasy] und für [https://forum.fhem.de/index.php/board,46.0.html FHEM] darstellen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nützliche Links zum Hersteller:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://www.itead.cc/blog/user-guide-for-sonoff-slampher User Manual von Itead]&lt;br /&gt;
&lt;br /&gt;
[https://www.itead.cc/wiki/images/6/6b/Sonoff_schmatic.pdf Sonoff Schaltplan]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Hardware=&lt;br /&gt;
&#039;&#039;&#039;Bitte unbedingt die elektrotechnischen Sicherheitsrichtlinien beachten und einhalten!&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_sw_15.jpg|thumb|left|alt=Warnung Netzspannung]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Achtung: An dem Modul liegt Netzspannung an die lebensgefährlich ist. Es dürfen nur entsprechend ausgebildete Personen dieses Modul in Betrieb nehmen. Zum Umbau und zur Softwareaktualisierung darf keine Netzspannung angeschlossen sein&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Wie gefährlich das hantieren mit Netzspannung sein kann, wird hier am Beispiel eines [http://mysku.ru/blog/china-stores/45762.html russischen Anwenders] gezeigt, der hat beim Flashen die Netzspannung am Modul gelassen und somit über die Verbindung mit dem Netzteil des Laptop lebensgefährliche Spannung auf die FTDI Schnittstelle gebracht. Das Modul ist dabei abgeraucht!&lt;br /&gt;
&lt;br /&gt;
==Modelle==&lt;br /&gt;
&lt;br /&gt;
===Produktübersichtsliste sonoff===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:right&amp;quot;&lt;br /&gt;
! Produkt Name !! Beschreibung !! Spannungsversorgung !!  Imax !! Pmax !! Frequenz !! Schaltplan !! Link&lt;br /&gt;
|-&lt;br /&gt;
| Sonoff || Wireless control switch || 90~250V AC || 10A || 2200W || 2.4Ghz || [http://wiki.iteadstudio.com/Sonoff Plan] || [https://www.itead.cc/smart-home/sonoff-wifi-wireless-switch.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| Sonoff RF || 433 RF remote || 90~250V AC || 10A || 2200W || 2.4Ghz || [http://wiki.iteadstudio.com/Sonoff_RF Plan] || [https://www.itead.cc/smart-home/im151116003.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| Sonoff SV || Low voltage Input || 5~24V DC || 10A || 240W DC || 2.4Ghz || [http://wiki.iteadstudio.com/Sonoff_SV Plan] || [https://www.itead.cc/smart-home/sonoff-sv.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| Sonoff TH10/TH16 || Monitor and set Temp.&amp;amp;Hum. ||  90~250V AC || 10A/16A || 2200W(10A)/3500W(16A)	 || 2.4Ghz || [http://wiki.iteadstudio.com/Sonoff_TH_10/16 Plan] || [https://www.itead.cc/smart-home/sonoff-th.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Sonoff Dual || Remote control 2 devices ||  90~250V AC || 16A || 3500W || 2.4Ghz || [https://www.itead.cc/wiki/Sonoff_Dual Plan] || [https://www.itead.cc/sonoff-dual.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Sonoff Pow || Report power &amp;amp;power usage ||  90~250V AC || 16A || 3500W || 2.4Ghz || [https://www.itead.cc/wiki/Sonoff_Pow Plan] || [https://www.itead.cc/sonoff-pow.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Sonoff LED || WiFi Control Dimming LED ||  180~265V AC || 0.3-0.6A || 42W || 2.4Ghz ||  kein || [https://www.itead.cc/sonoff-led.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Sonoff Touch || WiFi wall touch switch ||  90~250V AC || 2A || 400W || 2.4Ghz || kein || [https://www.itead.cc/sonoff-touch.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Slampher || Wireless control light holder ||  90~250V AC || 2A || 200W || 2.4Ghz || [http://wiki.iteadstudio.com/Slampher Plan] || [https://www.itead.cc/smart-home/slampher-wifi-wireless-light-holder.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  S20 Smart Socket || Smart socket || 	90~250V AC || 10A || 2000W || 2.4Ghz || kein || [https://www.itead.cc/smart-home/smart-socket-eu.html EU-Stecker] &lt;br /&gt;
|-&lt;br /&gt;
|  iFan || Smart fan ||  185~264V AC ||﹤1A || 60W || 2.4Ghz || kein || [https://www.itead.cc/smart-home/smart-socket-eu.html EU-Stecker] &lt;br /&gt;
|-&lt;br /&gt;
| Motor/Pump Control Switch || clockwise/anticlockwise running ||  5V/7~32V DC || 10A || 50~320W || 2.4Ghz || kein || [https://www.itead.cc/smart-home/motor-reversing-wifi-wireless-switch.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| 1 Chnl Inching/self-locking Switch || Access control ||  	5V/12V DC || 10A || 50/120W || 2.4Ghz || kein || [https://www.itead.cc/smart-home/inching-self-locking-wifi-wireless-switch.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  4 Chnl Inching/self-locking/inter-locking Switch || Access control, rolling door control ||  5V/5~32V DC/90~250V AC || 10A || 50~320W/2500W || 2.4Ghz || kein || [https://www.itead.cc/ifan.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Eine Übersichtliste der verschiedenen Produkte mit technischen Kurzangaben.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Model: IM151116002: Erstes Modell===&lt;br /&gt;
[https://www.itead.cc/sonoff-wifi-wireless-switch.html Sonoff WiFi Wireless Smart Switch for MQTT COAP Smart Home]&lt;br /&gt;
[[Datei:sonoff_sw_0.jpg|thumb|left|alt=sonoff Switch]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Das sonoff Modul ist in einem zweckmäßigen und gefälligem Gehäuse verbaut!&lt;br /&gt;
&lt;br /&gt;
====Platine====&lt;br /&gt;
[[Datei:sonoff_sw_1.jpg|thumb|left|alt=sonoff Switch von vorne]]&lt;br /&gt;
&lt;br /&gt;
Die Platine ist sehr übersichtlich aufgebaut und der Hersteller hat auch alle Vorbereitungen zum Flashen einer alternativen Software vorgesehen (über serielle Schnittstelle via FTDI-Modul). Mit einer alternativen Software wie ESPEasy ist eine direkte Ankopplung des &#039;&#039;&#039;sonoff&#039;&#039;&#039; an FHEM somit ein leicht durchführbarer Vorgang.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_3.jpg|thumb|left|alt=sonoff Switch von hinten]]&lt;br /&gt;
Die stromführenden Leitungen wurden mit Lötzinn vom Hersteller verstärkt um die angegebenen Stromstärken mit geringer Hitzeentwicklung zu transportieren.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung: Bitte vor den Arbeiten kontrollieren, das an der Platine keine Netzspannung angeschlossen ist, LEBENSGEFAHR!&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Model: IM160712005: TH 10A/16A ===&lt;br /&gt;
[https://www.itead.cc/sonoff-th.html Sonoff TH 10A/16A WiFi Smart Switch]&lt;br /&gt;
&lt;br /&gt;
====TH10 / TH16 weitere GPIO zugänglich machen====&lt;br /&gt;
[[Datei:Sonoff_TH_10A-16A_kleiner.jpg|thumb|left|alt=TH10 / TH16 weitere GPIO zugänglich machen]]&lt;br /&gt;
Der Hersteller hat zwar schon Platine für eine weitere Stiftleiste vorbereitet, jedoch muss diese noch bestückt werden. Die nicht beschalteten Stifte können dann genutzt werden um die &amp;quot;verdeckten&amp;quot; GPIO zugänglich zu machen. Die Verdrahtung kann dem Bild entnommen werden.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Achtung: Bitte vor den Arbeiten kontrollieren, das an der Platine keine Netzspannung angeschlossen ist, LEBENSGEFAHR!&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Model: IM160811001: Sonoff Dual ===&lt;br /&gt;
[https://www.itead.cc/sonoff-dual.html Sonoff Dual WiFi Wireless Smart Swtich]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Model: IM160810001: Sonoff Pow ===&lt;br /&gt;
[https://www.itead.cc/sonoff-pow.html Sonoff POW WiFi Switch with Power Consumption Measurement]&lt;br /&gt;
[[Datei:sonoff_sw_30.jpg|thumb|left|alt=SONOFF POW]]Ein sehr interessantes und kostengünstiges Modul zur Messung der aktuellen Leistung. Das Modul kann via MQTT in FHEM angebunden werden.&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel zur Einbindung ist [http://www.fhemwiki.de/wiki/Sonoff#Sonoff_POW_einrichten hier unten] im Wiki beschrieben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===Model: weitere Modelle===&lt;br /&gt;
[https://www.itead.cc/search/result/?cat=&amp;amp;q=sonoff Sonoff Weitere Modelle finden sich auf der Homepage des Hersstellers]&lt;br /&gt;
&lt;br /&gt;
==Vorbereitungen zum Flashen==&lt;br /&gt;
[[Datei:sonoff_sw_2.jpg|thumb|left|alt=serielle Schnittstelle]]&lt;br /&gt;
&lt;br /&gt;
Hier auf der Platine sind die benötigten Signale für ein FTDI Modul schon vorhanden. Der quadratische Pin gleich über dem Taster ist die Spannungsversorgung zum Flashen vom FDTI von 3.3V Es muss daher unbedingt ein FTDI Modul genommen werden, dass nicht nur einen Jumper für 3.3V besitzt sondern auch die Spannung auf 3.3V herab setzt. Ist dies nicht der Fall, läuft man Gefahr das Modul unbrauchbar zu machen. Es ist daher zu empfehlen einen Spannungsteiler mit 2 Widerständen oder einen Pegelwandler zwischenschalten.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Signale der Schnittstelle==&lt;br /&gt;
von oben nach unten auf der Steckerleiste des sonoff U4 (Model: IM151116002).&lt;br /&gt;
&lt;br /&gt;
 Pin5 = vorbereitet für GPIO&lt;br /&gt;
 Pin4 = Masse&lt;br /&gt;
 Pin3 = TxD&lt;br /&gt;
 Pin2 = RxD&lt;br /&gt;
 Pin1 = 3.3V&lt;br /&gt;
&lt;br /&gt;
Siehe dazu auch den [https://forum.fhem.de/index.php/topic,55036.0.html Link aus dem Forum]:&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Platine mit Stiftleiste bestücken==&lt;br /&gt;
[[Datei:sonoff_sw_4.jpg|thumb|left|alt=Platine mit Stiftleiste bestücken]]&lt;br /&gt;
Der Hersteller hat zwar schon die Platine vorbereitet, jedoch muss sie noch mit einer Stiftleiste bestückt werden um das FTDI Modul bequem verbinden zu können. Nachdem einmal ESPEasy geflasht worden ist, kann es in Zukunft via WEB (OTA) geflasht werden und die Stiftleiste ist dann nicht mehr erforderlich. Aufgrund der geringen Kosten fällt dies jedoch nicht ins Gewicht.&amp;lt;br&amp;gt;&lt;br /&gt;
Für die Module TH10/TH16 sind die Lötpunkte für die Stiftleiste schon beschriftet. Die Stiftleiste selber muss allerdings auch nachgerüstet werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Achtung&#039;&#039;&#039;: Bitte vor den Arbeiten kontrollieren, das an der Platine keine Netzspannung angeschlossen ist, LEBENSGEFAHR!&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Software=&lt;br /&gt;
==MQTT und TASMOTA==&lt;br /&gt;
Der Autor Arends hat die Version Sonoff-MQTT-OTA-Arduino nun eingestellt und die Version 3.2.13 dürfte wohl die letzte dieser Generation gewesen sein. Mit der Einstellung dieser Version wurde zwar der Nachfolger &#039;&#039;&#039;TASMOTA&#039;&#039;&#039; erschaffen, aber leider nun auf das &#039;&#039;&#039;Messageformat LEGACY&#039;&#039;&#039; gänzlich verzichtet was bei der Auswertung der Messdaten in Fhem doch einige Probleme mit sich bringt, da der verwendete JSON String nun zusätzlich gefiltert werden muss.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Es gibt aber bereits drei Lösungswege um dieses Problem zu beheben!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 1. [https://forum.fhem.de/index.php/topic,66714.msg580251.html#msg580251 in diesem Thread] gibt es eine gepatchte Version von Tasmota mit LEGACY Ausgabe. Damit verhält sich Tasmota so wie früher die MQTT Version mit LEGACY und es sind keine weiteren Einstellungen notwendig. LEGACY wurde einfach wieder hinzugefügt.&lt;br /&gt;
&lt;br /&gt;
 2. [https://forum.fhem.de/index.php/topic,66761.0.html in diesem Thread] wurde ein &#039;&#039;&#039;JSON to Reading Modul&#039;&#039;&#039; vorgestellt, dass mit Hilfe eines &amp;quot;notify&amp;quot; den JSON String analysiert und alle darin enthaltenen Daten in Readings kopiert. Die Readings werden dabei automatisch angelegt.&lt;br /&gt;
&lt;br /&gt;
 3. [https://forum.fhem.de/index.php/topic,32528.msg581327.html#msg581327 in diesem Thread] gibt es eine gepatchte Version des Moduls &#039;&#039;&#039;MQTT_DEVICE&#039;&#039;&#039;, in der der JSON String analysiert und alle darin enthaltenen Daten in Readings kopiert werden. Die Readings werden dabei automatisch angelegt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Link: [https://github.com/arendst/Sonoff-Tasmota Tasmota]&lt;br /&gt;
&lt;br /&gt;
Link: [https://github.com/arendst/Sonoff-MQTT-OTA-Arduino Sonoff-MQTT-OTA-Arduino]&lt;br /&gt;
&lt;br /&gt;
Alle hier im Wiki verwendeten Beispiele und deren Beschreibung gilt für die MQTT Version (alte Version). Da in Tasmota fast alles im WEBIF konfiguriert werden kann, entfallen daher sinngemäß einige hier im Wiki erklärten Definitionen, speziell in der &amp;quot;user_config.h&amp;quot;.&lt;br /&gt;
Trotz diesem Komfort müssen die Einstellungen aber nun im WEBIF vorgenommen werden, die wohl wichtigste ist die Auswahl der verwendeten Hardware (Sonoff POW etc.).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ESPEasy flashen==&lt;br /&gt;
[[Datei:sonoff_sw_6.jpg|thumb|left|alt=sonoff mit angestecktem FDTI Adapter]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier geht es ausschließlich um die Software ESPEasy an den sonoff Modulen! }}&lt;br /&gt;
Die Spannungsversorgung des Sonoff Moduls wird hier vom FTDI Konverter mit 3.3V über die Verbindungskabel zum Pfostenstecker durchgeführt. &lt;br /&gt;
&lt;br /&gt;
Der FTDI Adapter wird dann mit der USB Schnittstelle mit dem Computer verbunden.&lt;br /&gt;
&lt;br /&gt;
Zum compilieren wird in der Arduino Umgebung auch die ArduinoJson Library 5.6.4+ benötigt. Eine genaue Anleitung kann [https://forum.fhem.de/index.php/topic,55728.msg473220.html#msg473220 hier] nachgelesen werden. Es sollte stest die aktuelle Version der Arduino Umgebung verwendet werden, bzw. die Librarys auf Letztstand gehalten werden. &lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===mit Arduino compilieren===&lt;br /&gt;
[[Datei:sonoff_sw_10.jpg|thumb|left|alt=Einstellung Arduino IDE]]&lt;br /&gt;
Wer selber mit der Arduino IDE compilieren will bitte folgende Einstellungen beachten. Die anschließenden Arbeiten sind dann gleich wie bei Abschnitt &#039;&#039;&#039;fertige Binary&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Unbedingt die neueste [https://github.com/bblanchon/ArduinoJson Arduino Json Library] benutzen (siehe oben)! Es gibt zwar keine Compilerfehler, aber es kommt anschließend zu Fehlfunktionen in der ESP Bridge!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 Generic ESP8266 Module&lt;br /&gt;
 Flash Mode: QIO&lt;br /&gt;
 Flash Frequency: 40 MHz&lt;br /&gt;
 CPU Frequency: 80 MHz&lt;br /&gt;
 Flash Size: 1M (64K SPIFFS)&lt;br /&gt;
 Debug Port: disabled&lt;br /&gt;
 Debug Level: none&lt;br /&gt;
 Reset Mode: ck&lt;br /&gt;
 Upload Speed: 115200&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===fertige Binary flashen===&lt;br /&gt;
[[Datei:sonoff_sw_7.jpg|thumb|left|alt=NodeMCU Firmware Flasher]]&lt;br /&gt;
Es empfiehlt sich eine fertige Binary von ESPEasy aufzuspielen. In diesem Wiki wurde R140 verwendet.&lt;br /&gt;
&lt;br /&gt;
Siehe dazu auch den [http://www.esp8266.nu/index.php/Main_Page Link von ESPEasy] und das [https://learn.adafruit.com/building-and-running-micropython-on-the-esp8266/flash-firmware Handbuch] für den Flasher.&lt;br /&gt;
&lt;br /&gt;
In manchen Versionen von ESPEasy (zB.R120) ist auch ein Flasher beigelegt, welcher zwar keine grafische Oberfläche hat aber hervorragend funktioniert. Wenn andere versagen, geht es mit diesem Flasher immer noch, einfach probieren!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 Netzspannung darf &#039;NICHT&#039; angeschlossen sein!!!&lt;br /&gt;
 Taster am Sonoff gedrückt halten&lt;br /&gt;
 FTDI Adapter verbinden&lt;br /&gt;
 Taster am Sonoff los lassen&lt;br /&gt;
 Sketch übertragen&lt;br /&gt;
 Sonoff vom FTDI trennen&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Wenn einmal die Firmware auf das sonoff Modul geflasht worden ist, kann in Zukunft ESPEasy direkt unter Tools via HTTP dies durchführen. Es muss dazu kein FTDI Konverter mehr verwendet werden.&lt;br /&gt;
&lt;br /&gt;
==ESPEasy==&lt;br /&gt;
[[Datei:sonoff_sw_11.jpg|thumb|left|alt=ESPEasy Devices]]&lt;br /&gt;
Wenn das Modul fertig geflasht ist und die Verbindung zum Modul hergestellt ist, können die Einstellungen in ESPEasy durchgeführt werden.&lt;br /&gt;
Dazu am Webinterface anmelden und zunächst die zwei Devices definieren.&lt;br /&gt;
&lt;br /&gt;
Der Hersteller hat für das &#039;&#039;&#039;Relaise GPIO 12&#039;&#039;&#039; und für die &#039;&#039;&#039;grüne Led GPIO 13&#039;&#039;&#039; vorgesehen. Der &#039;&#039;&#039;Taster ist an GPIO 0&#039;&#039;&#039; angeschlossen.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Device Schalter===&lt;br /&gt;
[[Datei:sonoff_sw_12.jpg|thumb|left|alt=Device Relais]]&lt;br /&gt;
Bei den Devices sollten die hier dargestellte Einstellungen beachtet werden. Der Switch (PUMP) sollte auf Input gestellt werden, sodass die anschließenden und benötigten Rules aktiviert werden können.&lt;br /&gt;
&lt;br /&gt;
Da beide Devicenamen gleich benannt wurden (PUMP) wird in FHEM nur ein Device angelegt! Die dazugehörenden Valuenames sind unterschiedlich (Relay, Key).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Device Taster===&lt;br /&gt;
[[Datei:sonoff_sw_13.jpg|thumb|left|alt=Device Key]]&lt;br /&gt;
Der Taste muss natürlich nur konfiguriert werden, wenn auch händisch am Modul geschaltet werden soll. Wird dies nicht benötigt, können auch die Rules geändert bzw. angepasst werden. Doch alleine zu Testzwecken ist es eine nützliche Sache.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Rules===&lt;br /&gt;
[[Datei:sonoff_sw_14.jpg|thumb|left|alt=Rules]]&lt;br /&gt;
Da das sonoff Modul auch einen eingebauten Taster hat und somit auch lokal bedient werden kann, sollte man zunächst unter &#039;&#039;&#039;Tools / Advanced das Häckchen Rules&#039;&#039;&#039; aktivieren, erst dann wird der Tab sichtbar und es können Rules erstellt werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 on PUMP#Key do&lt;br /&gt;
  if [PUMP#Relay]=1&lt;br /&gt;
    gpio,12,0&lt;br /&gt;
  else&lt;br /&gt;
    gpio,12,1&lt;br /&gt;
  endif&lt;br /&gt;
 endon&lt;br /&gt;
 on PUMP#Relay do&lt;br /&gt;
  if [PUMP#Relay]=1 &lt;br /&gt;
    gpio,13,0&lt;br /&gt;
  else&lt;br /&gt;
    gpio,13,1&lt;br /&gt;
  endif&lt;br /&gt;
 endon&lt;br /&gt;
Diese Rules ermöglichen, das bei lokaler Bedienung durch den Taster auch die &#039;&#039;&#039;Led&#039;&#039;&#039; richtig geschaltet wird.&lt;br /&gt;
Mit &#039;on PUMP#Key do&#039; wird geprüft ob die Taste gedrückt ist und schaltet dann entsprechend die Led. Mit den Rules können auch Timer oder sonstige Spielereien realisiert werden. Siehe dazu das [http://www.esp8266.nu/index.php/Tutorial_Rules Tutorial] von ESPeasy.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ESPEasy in FHEM einrichten==&lt;br /&gt;
[[Datei:sonoff_sw_9.jpg|thumb|left|alt=FHEM Konfiguration]]&lt;br /&gt;
Dies ist eine einfache Darstellung wie FHEM automatisch den Device erstellt.&lt;br /&gt;
&lt;br /&gt;
Damit FHEM mit ESPEasy und dem sonoff Modul kommunizieren kann, muss in der fhem.cfg vorerst nur die espBridge mit dem hier dargestellten Eintrag aktiviert werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 define espBridge ESPEasy bridge 8383&lt;br /&gt;
Dies ist eigentlich die einzige Zeile die in fhem.cfg angelegt werden muss. Die restliche Konfiguration wird von FHEM automatisch generiert. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 ##########################################&lt;br /&gt;
 ###             ESPEASY               ####&lt;br /&gt;
 ##########################################&lt;br /&gt;
 &lt;br /&gt;
 define ESPEasy_sonoff_1_PUMP ESPEasy 10.0.0.37 80 espBridge sonoff_1_PUMP&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP IODev espBridge&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP devStateIcon on:rc_GREEN:off off:rc_RED:on absent:rc_BLUE:off gpio:rc_YELLOW:off&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP eventMap /gpio 12 on:on/gpio 12 off:off/gpio 12 gpio:off/gpio 12 output:off/&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP group ESPEasy Device&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP icon hue_filled_outlet&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP room ESPEasy&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP setState 0&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP stateFormat {ReadingsVal($name,&amp;quot;presence&amp;quot;,&amp;quot;&amp;quot;) eq &amp;quot;absent&amp;quot; ? &amp;quot;absent&amp;quot; : ReadingsVal($name,&amp;quot;Relay&amp;quot;,&amp;quot;&amp;quot;)}&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP webCmd :&lt;br /&gt;
&lt;br /&gt;
hier ein Beispiel wie es auch manuell leicht modifiziert werden kann.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_8.jpg|thumb|left|alt=sonoff Readings]]&lt;br /&gt;
&lt;br /&gt;
Die Readings werden durch die Bridge (Modul ESPEasy) automatisch angelegt.&lt;br /&gt;
&lt;br /&gt;
Es besteht hier noch genug Spielraum um zB. auch noch Temperatursensoren an das Modul anzuschließen und ebenfalls in FHEM darzustellen.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==MQTT Server einrichten==&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier geht es ausschließlich um den Sketch von Arends und MQTT an den sonoff Modulen! }}&lt;br /&gt;
Es bleibt jedem Anwender die freie Wahl ob die Kommunikation über die ESPEasy-Bridge oder MQTT erfolgen soll. MQTT ist bei der Einrichtung etwas komplexer, da hier auch auf dem Server der Broker installiert werden muss.&lt;br /&gt;
&lt;br /&gt;
Im wesentlichen beschränkt sich die Installation eines MQTT Servers aber auf wenige Arbeitsschritte und ist wie folgt beschrieben durchzuführen. Wer schon einen &#039;&#039;&#039;mosquitto&#039;&#039;&#039; auf dem Server installiert hat, kann diesen Schritt überspringen.&lt;br /&gt;
&lt;br /&gt;
Dieses Kapitel ist insofern interessant, da mit dem Sketch von Theo Arends auch die Einbindung der neuen sonoff Pow Module bereits möglich ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # aus dem mosquitto Repo installieren:&lt;br /&gt;
 wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key&lt;br /&gt;
 sudo apt-key add mosquitto-repo.gpg.key&lt;br /&gt;
 cd /etc/apt/sources.list.d/&lt;br /&gt;
 sudo wget http://repo.mosquitto.org/debian/mosquitto-wheezy.list&lt;br /&gt;
 # oder für jessie&lt;br /&gt;
 sudo wget http://repo.mosquitto.org/debian/mosquitto-jessie.list&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 # mosquitto installieren, sowie client Befehl mosquito_sub (gehört nicht zum Server, wird aber weiter unten benötigt)&lt;br /&gt;
 sudo apt-get install mosquitto mosquitto-clients&lt;br /&gt;
 &lt;br /&gt;
 # MQTT Server Test&lt;br /&gt;
 sudo service mosquitto status&lt;br /&gt;
&lt;br /&gt;
 # Start / Stop des Servers&lt;br /&gt;
 sudo service mosquitto stop&lt;br /&gt;
 sudo service mosquitto start&lt;br /&gt;
 &lt;br /&gt;
 # Perl Version ausgeben&lt;br /&gt;
 perl -v&lt;br /&gt;
 # Perl MQTT Module nachinstallieren (läuft ein paar Minuten)&lt;br /&gt;
 sudo cpan install Net::MQTT:Simple&lt;br /&gt;
 sudo cpan install Net::MQTT:Constants&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Software Arends Sketch===&lt;br /&gt;
[[Datei:sonoff_sw_22.jpg|thumb|left|alt=Arends Menü]]&lt;br /&gt;
&lt;br /&gt;
Ebenso bietet sich die Möglichkeit eine andere alternative Software auf den unterschiedlichen Sonoff Modellen aufzuspielen.&lt;br /&gt;
Speziell für diese Module zugeschnittene Software stammt vom Autor Theo Arends. Alle hier gezeigten Bildschirmfotos und Beispiele beziehen sich auf Basis der Version 2.0.11 (Stand 11.11.2016).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wichtig:&#039;&#039;&#039; erst &#039;&#039;&#039;ab Version 2.0.9&#039;&#039;&#039; sind die Berechnungsfehler und die Referenzfrequenzen für die Umrechnung der Leistungsdaten gefixt worden! Es wird daher angeraten immer die aktuellste Version zu verwenden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Links zu Theo Arend Github&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/arendst/Sonoff-MQTT-OTA-Arduino Download MQTT Sketch]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/arendst/Sonoff-MQTT-OTA-Arduino Arend GitHub]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/arendst/Sonoff-MQTT-OTA-Arduino/wiki Wiki]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; sollten Probleme mit dem ersten Login im Webinterface auftreten, hat der Autor vorgesorgt und mit speziellem wiederholten Tastendruck können verschiedene Modi aufgerufen werden: zB: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3 x Taste kurz drücken&#039;&#039;&#039; und eine Smartconfig wird gestartet und die &#039;&#039;&#039;SSID&#039;&#039;&#039; und das &#039;&#039;&#039;Passwort&#039;&#039;&#039; kann über diese [https://play.google.com/store/apps/details?id=com.cmmakerclub.iot.esptouch Android App] eingegeben werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4 x Taste kurz drücken&#039;&#039;&#039; und man bringt den Device in den &#039;&#039;&#039;Access Point Mode&#039;&#039;&#039; mit der IP-Adresse &#039;&#039;&#039;192.168.4.1&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bis zu 7 verschiedene Modi sind möglich, mehr dazu in Arends Wiki.&lt;br /&gt;
&lt;br /&gt;
[https://github.com/arendst/Sonoff-MQTT-OTA-Arduino/wiki/Button-usage Link zum Wiki Arends, Button]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_bv_01.jpg|thumb|left|alt=Arduino Boardverwalter]]&lt;br /&gt;
In der Arduino IDE unter Datei / Voreinstellungen im Feld &amp;quot;Zusätzliche Boardverwalter-URLs:&amp;quot; den Link: http://arduino.esp8266.com/stable/package_esp8266com_index.json einfügen. &lt;br /&gt;
&lt;br /&gt;
Dann unter &#039;&#039;&#039;Werkzeuge / Board / Boardverwalter&#039;&#039;&#039; ganz am Ende der Liste die Librarys für &amp;quot;esp8266 by ESP8266 Community&amp;quot; die letzte Version 2.3.0 installieren. [https://forum.fhem.de/index.php/topic,46205.msg534707.html#msg534707 Link zum Board].&lt;br /&gt;
&lt;br /&gt;
Das gesamte sonoff Verzeichnis aus [https://github.com/arendst/Sonoff-MQTT-OTA-Arduino/archive/master.zip Arendts Sketch] entpacken (ist wie hier verlinkt ein Zipfile) und dann aus diesem Verzeichnis die sonoff.ino öffnen. Es können dann alle zu dem Sketch zugehörigen Dateien angesehen/editiert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Anschließend muss noch die Datei &#039;&#039;&#039;user_config.h&#039;&#039;&#039; (im Unterverzeichnis &amp;quot;sonoff&amp;quot;) editiert werden. Die Abschnitte          &lt;br /&gt;
&lt;br /&gt;
 // Wifi&lt;br /&gt;
 // Syslog&lt;br /&gt;
 // Ota&lt;br /&gt;
 // MQTT&lt;br /&gt;
&lt;br /&gt;
müssen mit der eigenen &amp;quot;&#039;&#039;&#039;Ip-Adresse-Server&#039;&#039;&#039;&amp;quot;, &amp;quot;&#039;&#039;&#039;SSID&#039;&#039;&#039;&amp;quot; und &amp;quot;&#039;&#039;&#039;password&#039;&#039;&#039;&amp;quot; angepasst werden, das erleichtert den ersten Connect mit dem Modul. Seit der Version 2.1.2 können die WIFI Einstellungen 2-fach angegeben werden, somit wechselt das Device automatisch auf den 2. Wifi Hotspot wenn der erste nicht erreicht wird.&lt;br /&gt;
&lt;br /&gt;
 #define STA_SSID               &amp;quot;SSID&amp;quot;      // Wifi SSID&lt;br /&gt;
 #define STA_PASS               &amp;quot;password&amp;quot;  // Wifi password&lt;br /&gt;
 #define WIFI_HOSTNAME          &amp;quot;%s-%04d&amp;quot;         // Expands to &amp;lt;MQTT_TOPIC&amp;gt;-&amp;lt;last 4 decimal chars of MAC address&amp;gt;&lt;br /&gt;
 #define WIFI_CONFIG_TOOL       WIFI_WPSCONFIG    // Default tool if wifi fails to connect (WIFI_SMARTCONFIG, WIFI_MANAGER or WIFI_WPSCONFIG)&lt;br /&gt;
&lt;br /&gt;
 // Syslog&lt;br /&gt;
 #define SYS_LOG_HOST           &amp;quot;Ip-Adresse-Server&amp;quot;&lt;br /&gt;
 #define SYS_LOG_PORT           514&lt;br /&gt;
 #define SYS_LOG_LEVEL          LOG_LEVEL_NONE&lt;br /&gt;
 #define SERIAL_LOG_LEVEL       LOG_LEVEL_INFO&lt;br /&gt;
 #define WEB_LOG_LEVEL          LOG_LEVEL_INFO&lt;br /&gt;
&lt;br /&gt;
 // Ota&lt;br /&gt;
 #if (ARDUINO &amp;gt;= 168)&lt;br /&gt;
  #define OTA_URL              &amp;quot;http://Ip-Adresse-Server:80/api/arduino/&amp;quot; PROJECT &amp;quot;.ino.bin&amp;quot;&lt;br /&gt;
 #else&lt;br /&gt;
  #define OTA_URL              &amp;quot;http://Ip-Adresse-Server:80/api/arduino/&amp;quot; PROJECT &amp;quot;.cpp.bin&amp;quot;&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
 // MQTT&lt;br /&gt;
 #define MQTT_HOST              &amp;quot;Ip-Adresse-Server&amp;quot;&lt;br /&gt;
 #define MQTT_PORT              1883&lt;br /&gt;
&lt;br /&gt;
 #define MESSAGE_FORMAT         JSON         // [MessageFormat] MQTT Message Format (LEGACY or JSON)&lt;br /&gt;
 #define MQTT_STATUS_OFF        &amp;quot;OFF&amp;quot;        // Command or Status result when turned off (needs to be a string like &amp;quot;0&amp;quot; or &amp;quot;Off&amp;quot;)&lt;br /&gt;
 #define MQTT_STATUS_ON         &amp;quot;ON&amp;quot;         // Command or Status result when turned on (needs to be a string like &amp;quot;1&amp;quot; or &amp;quot;On&amp;quot;)&lt;br /&gt;
 #define MQTT_CMND_TOGGLE       &amp;quot;TOGGLE&amp;quot;     // Command to send when toggling (needs to be a string like &amp;quot;2&amp;quot; or &amp;quot;Toggle&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
In neueren Versionen (ab 3.2.8) wurde auch das Ausgabeformat von LEGACY auf JSON geändert. Gegebenenfalls ist auch hier auf LEGACY zu ändern, da alle Beispiele nur mit &amp;quot;LEGACY&amp;quot; funktionieren.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wichtig:&#039;&#039;&#039; Bei Verwendung des &#039;&#039;&#039;sonoff_POW&#039;&#039;&#039; muss dies ebenfalls in der user_config.h eingestellt werden, also das &amp;quot;SONOFF&amp;quot; sperren und das &amp;quot;&#039;&#039;&#039;SONOFF_POW&#039;&#039;&#039;&amp;quot; aktivieren (// setzen/entfernen). Wir dies nicht durchgeführt, werden auch keine Leistungsdaten via MQTT übertragen!!!&lt;br /&gt;
Ebenso muss in (%userprofile%\Documents\Arduino\libraries\pubsubclient\src\PubSubClient.h) die Max Packet Size auf 400 erhöht werden!&lt;br /&gt;
&lt;br /&gt;
  #define MQTT_MAX_PACKET_SIZE 400&lt;br /&gt;
  #define MQTT_KEEPALIVE 120&lt;br /&gt;
Anpassung der max. Packet Size auf 400 und das Keepalive auf 120&lt;br /&gt;
&lt;br /&gt;
 // Enable only one out of three MODULE defines below&lt;br /&gt;
 //#define MODULE                 SONOFF            // Sonoff, Sonoff SV, Sonoff Dual, Sonoff TH 10A/16A, S20 Smart Socket, 4 Channel&lt;br /&gt;
 #define MODULE                 SONOFF_POW        // Sonoff Pow&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Anschluß wird der Sketch mit der Arduino IDE (getestet mit 1.6.12) compiliert und die Binary dann exportiert (Sketch / Kompilierte Binärdatei exportieren). Die erzeugte .bin Datei dann mit dem Tool &amp;quot;ESP8266Flasher.exe&amp;quot; flashen, so wie auch bei ESPEasy. Wer nicht compilieren will, kann auch im Unterverzeichnis ./api/arduino/ die fertige Binary ( sonoff.ino ) benutzen, aber dann ohne Voreinstellung der lokalen IPs.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===MQTT testen===&lt;br /&gt;
[[Datei:sonoff_sw_20.jpg|thumb|left|alt=Arends Menü]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nach erfolgtem Flash des Modules kann das Webinterface des Moduls zum ersten Mal aufgerufen werden (im Router nach der IP des Moduls suchen).&lt;br /&gt;
&lt;br /&gt;
Es bieten sich hier mehrere Möglichkeiten die die weitere Einrichtung des Moduls unterstützen. Einfach die Menüpunkte durchprobieren, sie erklären sich von selbst. Für erste Tests empfiehlt sich die lokale Konsole um die Ereignisse aus Sicht des Modules mit verfolgen zu können. Alles was hier gesendet wird, sollte ebenfalls am Server mitgeloggt werden können. Wenn bis hierher alles funktioniert, kann dann mir der Konfiguration in FHEM beginnen.&lt;br /&gt;
&lt;br /&gt;
Der Name des Moduls kann unter &amp;quot;Configuration&amp;quot; -&amp;gt; &amp;quot;Configure MQTT&amp;quot; -&amp;gt; &amp;quot;Topic (sonoff)&amp;quot; nachgeschaut und geändert werden. In FHEM wird beim definieren des Moduls dieser Name in den subscribeReadings bzw. publishSets eingegeben um die Verbindung zum Modul herzustellen.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Am Server jetzt eine Konsole öffnen und folgende Topic (alle) einstellen.&lt;br /&gt;
&lt;br /&gt;
 mosquitto_sub -d -v -t \# &lt;br /&gt;
Mit dieser Einstellung werden alle Topics geloggt! &lt;br /&gt;
&lt;br /&gt;
 pi@raspberry ~ $ mosquitto_sub -d -v -t \#&lt;br /&gt;
 Received CONNACK&lt;br /&gt;
 Received SUBACK&lt;br /&gt;
 Subscribed (mid: 1): 0&lt;br /&gt;
 Received PUBLISH (d0, q0, r1, m0, &#039;/sonoff/36/temperature&#039;, ... (5 bytes))&lt;br /&gt;
 /sonoff/36/temperature 14.06&lt;br /&gt;
 Received PUBLISH (d0, q0, r1, m0, &#039;/sonoff/35/Count&#039;, ... (3 bytes))&lt;br /&gt;
 /sonoff/35/Count 0.0&lt;br /&gt;
 Received PUBLISH (d0, q0, r1, m0, &#039;/sonoff/35/Total&#039;, ... (3 bytes))&lt;br /&gt;
 /sonoff/35/Total 0.0&lt;br /&gt;
 Received PUBLISH (d0, q0, r1, m0, &#039;/sonoff/35/Time&#039;, ... (1 bytes))&lt;br /&gt;
 /sonoff/35/Time 0&lt;br /&gt;
 Received PUBLISH (d0, q0, r1, m0, &#039;/sonoff/temperature&#039;, ... (5 bytes))&lt;br /&gt;
 /sonoff/temperature 14.00&lt;br /&gt;
 Received PUBLISH (d0, q0, r1, m0, &#039;/sonoff/Count&#039;, ... (3 bytes))&lt;br /&gt;
 /sonoff/Count 0.0&lt;br /&gt;
 Received PUBLISH (d0, q0, r1, m0, &#039;/sonoff/Total&#039;, ... (3 bytes))&lt;br /&gt;
 /sonoff/Total 0.0&lt;br /&gt;
 Received PUBLISH (d0, q0, r1, m0, &#039;/sonoff/Time&#039;, ... (1 bytes))&lt;br /&gt;
 /sonoff/Time 0&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;stat/sonoff/1/POWER&#039;, ... (2 bytes))&lt;br /&gt;
 stat/sonoff/1/POWER ON&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;stat/sonoff/1/POWER&#039;, ... (3 bytes))&lt;br /&gt;
 stat/sonoff/1/POWER OFF&lt;br /&gt;
&lt;br /&gt;
Interessant sind für uns nun diese Einträge &amp;quot;stat/sonoff/1/POWER ON&amp;quot; , dazu am Taster des sonoff manuell umschalten. Dies entspricht genau der Syntax wie sie im Anschluss in FHEM dann zu verwenden ist.&lt;br /&gt;
&lt;br /&gt;
Mit diesen Einstellungen können dann entweder nach Telemetriedaten oder nach Statusmeldungen gefiltert werden. Dies ist jedoch nur notwendig wenn bereits andere MQTT Devices am Broker hängen und es sonst zu unübersichtlich wird.&lt;br /&gt;
 mosquitto_sub -h localhost -t tele/sonoff/#    = Telemetriedaten&lt;br /&gt;
 mosquitto_sub -h localhost -t stat/sonoff/#    = Statusmeldungen&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_21.jpg|thumb|left|alt=Arends Log]]&lt;br /&gt;
Sehr nützlich das lokale Log zur Fehlersuche und Inbetriebnahme.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Als Besonderheit benutzt der Autor zum Senden und Empfangen unterschiedliche Syntax und unterscheidet dies durch vorangestellte Prefixe vor der eigentlichen Topic.&lt;br /&gt;
#define SUB_PREFIX       &amp;quot;cmnd&amp;quot;       Sonoff devices subscribe to:- cmnd/MQTT_TOPIC and cmnd/MQTT_GRPTOPIC&lt;br /&gt;
#define PUB_PREFIX       &amp;quot;stat&amp;quot;       Sonoff devices publish to:- stat/MQTT_TOPIC&lt;br /&gt;
#define PUB_PREFIX2      &amp;quot;tele&amp;quot;       Sonoff devices publish telemetry data to:- tele/MQTT_TOPIC/UPTIME, POWER/LIGHT and TIME&lt;br /&gt;
Bitte dies unbedingt in der FHEM Konfiguration dann beachten!&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==MQTT in FHEM einrichten==&lt;br /&gt;
[[Datei:sonoff_sw_24.jpg|thumb|left|alt=FHEM sonoff Schalter]]&lt;br /&gt;
Dieser einfache Schalter kommuniziert bidirektional mit dem sonoff Device.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_25.jpg|thumb|left|alt=FHEM sonoff Schalter]]&lt;br /&gt;
Die Readings in diesem verwendeten Beispiel zeigen sich wie in FHEM gewohnt.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Einrichtung in FHEM wird von den Modulen 00_MQTT.pm, 10_MQTT_BRIDGE und 10_MQTT_DEVICE.pm unterstützt.&lt;br /&gt;
&lt;br /&gt;
[https://forum.fhem.de/index.php?topic=27532.0 Link zum Forum: MQTT FHEM Einrichtung]&lt;br /&gt;
&lt;br /&gt;
 ### 1. Broker anlegen ###&lt;br /&gt;
 define myBroker MQTT 10.0.0.5:1883&lt;br /&gt;
&lt;br /&gt;
 ### 2. FHEM Device mit MQTT verbinden ###&lt;br /&gt;
 define Sonoff_Switch MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Switch IODev myBroker&lt;br /&gt;
 attr Sonoff_Switch eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_Switch icon hue_filled_br30&lt;br /&gt;
 attr Sonoff_Switch publishSet ON OFF cmnd/sonoff/1/POWER/set&lt;br /&gt;
 attr Sonoff_Switch room MQTT&lt;br /&gt;
 attr Sonoff_Switch stateFormat Licht&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_Licht stat/sonoff/POWER&lt;br /&gt;
 # oder mit tele, je nachdem was in der user_config.h eingestellt wurde!!!&lt;br /&gt;
 #attr Sonoff_Switch subscribeReading_Licht tele/sonoff/POWER &lt;br /&gt;
 attr Sonoff_Switch subscribeReading_state cmnd/sonoff/1/POWER/set&lt;br /&gt;
 attr Sonoff_Switch webCmd ON:OFF&lt;br /&gt;
Der hier dargestellte Beispielcode realisiert die Kommunikation zwischen FHEM und dem sonoff Modul via MQTT Broker. Zu beachten ist hier, dass &#039;&#039;&#039;subscribeReading_Licht&#039;&#039;&#039; und &#039;&#039;&#039;subscribeReading_state&#039;&#039;&#039; unterschiedliche Syntax des Topic Strings haben!&lt;br /&gt;
&lt;br /&gt;
==Sonoff POW einrichten==&lt;br /&gt;
[[Datei:sonoff_sw_31.jpg|thumb|left|alt=Sonoff POW]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier geht es ausschließlich um das Modul Sonoff POW!}}&lt;br /&gt;
Das Modul kommt in gewohnter Itead Qualität und eine derart kostengünstige Energiemessung wird bei Smart Home Anwendern gerne eingesetzt. Die Originalsoftware habe ich nicht einmal getestet, da damit eine Anbindung an FHEM leider nicht möglich ist.&lt;br /&gt;
&lt;br /&gt;
Ebenso möchte kaum jemand an eine nicht dokumentierte chinesische Cloud die Steuerbefehle seiner Schalter senden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_sw_33.jpg|thumb|left|alt=Sonoff POW]]&lt;br /&gt;
Bitte auf keinen Fall das Modul während der Arbeiten an die Netzspannung anschießen. Zum Flashen genügt (und nur diese) die Versorgungspannung des USB-TTL Konverters. Wie auf dem Foto gut erkennbar, wurde dieses Modul ohne einlöten einer Pfostensteckerleiste geflasht. Die Steckverbindung wird einfach in die Lötaugen gesteckt und mit einem Gummiring fixiert, da ja spätere Flashvorgänge im Webif des Models funktionieren und so die Arbeit eingespart werden kann. Es steht jedoch nichts im Wege die Pfostensteckerleiste einzulöten.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Die Anschlüsse am Modul sind wie folgt belegt.&lt;br /&gt;
 o GND&lt;br /&gt;
 o TxD&lt;br /&gt;
 o RxD&lt;br /&gt;
 o VDD&lt;br /&gt;
&lt;br /&gt;
Für den Flashvorgang gelten die selben Regeln wie schon beim sonoff Switch oben erwähnt (3,3V!).&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Sonoff POW Software===&lt;br /&gt;
[[Datei:sonoff_sw_35.jpg|thumb|left|alt=Sonoff POW FHEM]]&lt;br /&gt;
Als Software steht im Augenblick nur der Sketch von Arends zur Verfügung, liefert aber alles was das Herz begehrt und ist ist einfach zu handhaben. Hier eine eine einfache Darstellung mit der aktuellen Leistung und dem Tagesverbrauch. Zusätzlich besteht auch noch die Möglichkeit den angeschlossenen Verbraucher Ein- oder Auszuschalten. Getestet wurde hier mit der Version 2.06, 2.07 und 2.019a von Arends.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_pow_02.jpg|thumb|left|alt=Sonoff POW Webif]]&lt;br /&gt;
Seit Version 2.0.19a ist auch die Leistungsanzeige im WEBIF wie im Bild links integriert. Auch der Energieverbrauch des Vortages wird mit angezeigt. Alle hier angezeigten Daten werden auch zyklisch im MQTT String an FHEM übergeben.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich kann im Sketch auch das Feature &amp;quot;&#039;&#039;&#039;Power_Limit&#039;&#039;&#039;&amp;quot; aktiviert werden ( #define FEATURE_POWER_LIMIT in der sonoff.ino). Wenn dies gewünscht ist, dann vor dem compilieren die beiden // entfernen. Mit dem Power_Limit wird eine zusätzliche Nachricht erzeugt, wenn ein bestimmter einstellbarer Grenzwert über- oder unterschritten wird. &lt;br /&gt;
&lt;br /&gt;
Es lassen sich dadurch Meldungen wie &amp;quot;Waschmaschine fertig&amp;quot; oder ähnliches ohne weitere Schwellwert Überwachungen in FHEM ableiten. Die Meldungen kommen in MQTT mit &amp;quot;&#039;&#039;&#039;tele/sonoff/POWER_LOW ON&#039;&#039;&#039;&amp;quot; bzw. &amp;quot;&#039;&#039;&#039;tele/sonoff/POWER_LOW OFF&#039;&#039;&#039;&amp;quot;.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Bevor der Sketch compiliert wird, müssen neben den IP-Einstellungen noch in der user_config.h auch andere Einstellungen vorgenommen werden.&lt;br /&gt;
&lt;br /&gt;
 #define MODULE                 SONOFF_POW       // Hardware module type (SONOFF, SONOFF_POW or ELECTRO_DRAGON)&lt;br /&gt;
 #define PROJECT                &amp;quot;sonoffpow&amp;quot;     // PROJECT is used as the default topic delimiter and OTA file name                                            // As an IDE restriction it needs to be the same as the main .ino file&lt;br /&gt;
&lt;br /&gt;
Der Typ des Modules muss von &amp;quot;SONOFF&amp;quot; auf &amp;quot;&#039;&#039;&#039;SONOFF_Pow&#039;&#039;&#039;&amp;quot; geändert werden,. damit die Software weiß mit welchem Modul es zu tun hat und kann dann die entsprechenden Berechnungen durchführen. Die Leistungsdaten kommen ja in Form einer Frequenz aus dem Baustein und müssen im Sketch (xsns_hlw8102.ino) umgerechnet werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #elif MODULE == SONOFF_POW                  // programming header 1:3.3V 2:rx 3:tx 4:gnd&lt;br /&gt;
  #define APP_NAME             &amp;quot;Sonoff Pow module&amp;quot;&lt;br /&gt;
  #define USE_POWERMONITOR                  // Enable Power Monitoring&lt;br /&gt;
  #define USE_POWERCALIBRATION              // Enable setting Calibration parameters by user commands&lt;br /&gt;
&lt;br /&gt;
Bei Einsatz des POW Modules kann die externe Kalibrierung aktiviert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Definition aus der power.ino (2.0.9) für die korrekte Umrechnung der gelieferten Frequenzen für die Leistungsdaten.&lt;br /&gt;
 #define HLW_PREF            10000    // 1000.0W&lt;br /&gt;
 #define HLW_UREF             2200    // 220.0V&lt;br /&gt;
 #define HLW_IREF             4545    // 4.545A&lt;br /&gt;
&lt;br /&gt;
 #define HLW_PREF_PULSE       4975    // 4975us = 201Hz = 1000W&lt;br /&gt;
 #define HLW_UREF_PULSE       1666    // 1666us = 600Hz = 220V&lt;br /&gt;
 #define HLW_IREF_PULSE       1666    // 1666us = 600Hz = 4.545A&lt;br /&gt;
                                            &lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_sw_36.jpg|thumb|left|alt=Sonoff POW Attribute]]&lt;br /&gt;
Dieses Bild zeigt die Attribute die vom Modul via MQTT an FHEM geliefert werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
aktuell gelieferte Readings (Mqtt Strings) vom Sketch nach unten dargestellter Definition in FHEM.&lt;br /&gt;
 tele/sonoffpow/TODAY_ENERGY    &lt;br /&gt;
 tele/sonoffpow/PERIOD_ENERGY   &lt;br /&gt;
 tele/sonoffpow/POWER_FACTOR   &lt;br /&gt;
 tele/sonoffpow/CURRENT_POWER  &lt;br /&gt;
 tele/sonoffpow/VOLTAGE         &lt;br /&gt;
 tele/sonoffpow/CURRENT        &lt;br /&gt;
&lt;br /&gt;
Hier ein Mittschnitt des Datenverkehrs zum Broker zwecks Kontrolle der korrekten Funktion der Module und der Software.&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff/RSSI&#039;, ... (2 bytes))&lt;br /&gt;
 tele/sonoff/RSSI 82&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff/TEMPERATURE&#039;, ... (3 bytes))&lt;br /&gt;
 tele/sonoff/TEMPERATURE 1.9&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff/HUMIDITY&#039;, ... (4 bytes))&lt;br /&gt;
 tele/sonoff/HUMIDITY 97.9&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff/POWER&#039;, ... (3 bytes))&lt;br /&gt;
 tele/sonoff/POWER OFF&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff/TIME&#039;, ... (19 bytes))&lt;br /&gt;
 tele/sonoff/TIME 2016-11-12T10:36:13&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/UPTIME&#039;, ... (1 bytes))&lt;br /&gt;
 tele/sonoffpow/UPTIME 1&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/RSSI&#039;, ... (2 bytes))&lt;br /&gt;
 tele/sonoffpow/RSSI 34&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/TODAY_ENERGY&#039;, ... (5 bytes))&lt;br /&gt;
 tele/sonoffpow/TODAY_ENERGY 0.083&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/PERIOD_ENERGY&#039;, ... (1 bytes))&lt;br /&gt;
 tele/sonoffpow/PERIOD_ENERGY 8&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/CURRENT_POWER&#039;, ... (2 bytes))&lt;br /&gt;
 tele/sonoffpow/CURRENT_POWER 97&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/POWER_FACTOR&#039;, ... (4 bytes))&lt;br /&gt;
 tele/sonoffpow/POWER_FACTOR 1.00&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/VOLTAGE&#039;, ... (3 bytes))&lt;br /&gt;
 tele/sonoffpow/VOLTAGE 225&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/CURRENT&#039;, ... (5 bytes))&lt;br /&gt;
 tele/sonoffpow/CURRENT 0.426&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/POWER&#039;, ... (2 bytes))&lt;br /&gt;
 tele/sonoffpow/POWER ON&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/TIME&#039;, ... (19 bytes))&lt;br /&gt;
 tele/sonoffpow/TIME 2016-11-12T10:36:28&lt;br /&gt;
 Sending PINGREQ&lt;br /&gt;
 Received PINGRESP&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Einstellungen können mit folgender Syntax angefordert werden (zwei Terminalfenster öffnen, eines zum protokollieren und eines zum Seden der Befehle).&lt;br /&gt;
 mosquitto_sub -d -v -t \#  MQTT Datenverkehr protokolieren&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/1/status/set -m &amp;quot;8&amp;quot;      = SonoffPOW Status jetzt auslesen&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/1/TelePeriod/set -m &amp;quot;60&amp;quot; = Timer setzen, alle 60 Sekunden Daten senden &lt;br /&gt;
Die Kommandos können direkt am Broker (Terminalfenster Putty etc.) abgesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sonoff POW Kalibrieren ===&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier wird beschrieben, wie der &#039;&#039;Sonoff POW kalibriert&#039;&#039; werden kann. }}&lt;br /&gt;
Ab Version 2.0.11 kann nun auch der POW kalibriert werden.&lt;br /&gt;
Dazu kann man 2 Konsolenfenster öffnen, im ersten aktiviert man das Protokoll für den Datenverkehr&lt;br /&gt;
 mosquitto_sub -d -v -t \#  MQTT Datenverkehr protokollieren&lt;br /&gt;
&lt;br /&gt;
Dann kann mit folgenden Befehlen die HLW Referenz Pulsfrequenz gesetzt werden.&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/1/HLWUCAL/set -m &amp;quot;2100&amp;quot;     default = 1950&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/1/HLWICAL/set -m &amp;quot;2450&amp;quot;     default = 3500&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/1/HLWPCAL/set -m &amp;quot;13500&amp;quot;    default = 12345 &lt;br /&gt;
Entweder man hat eine definierte Last zur Verfügung oder besser man misst mit einem Leistungsmesser nach. Die Spannung kann man mit einem Multimeter nachmessen (sollte 230 V sein) und der Strom wird errechnet (bei 100 Watt I = P / U ) = 100/230 = 0,4347.&lt;br /&gt;
Die Referenzwerte solange geringfügig ändern bis die Ausgabe passt. Für die Ausgabe wird einfach eine Statusabfrage durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/1/status/set -m &amp;quot;8&amp;quot;&lt;br /&gt;
Befehl für die Statusabfrage&lt;br /&gt;
&lt;br /&gt;
 cmnd/sonoffpow/1/status/set 8&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;stat/sonoffpow/1/STATUS&#039;, ... (103 bytes))&lt;br /&gt;
 stat/sonoffpow/1/STATUS PWR: Voltage 225 V, Current 0.427 A, Current Power 98 W, Total Power Today 0.080 kWh, Power Factor 1.00&lt;br /&gt;
Ergebnis der Statusabfrage mit Spannung, Strom und Leistung.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sonoff POW FHEM Anbindung===&lt;br /&gt;
Ein Beispiel einer einfachen Anbindung via MQTT an FHEM. MQTT ist insofern notwendig, da in der Software ESPEasy und der Bridge noch keine Implementierung der Frequenzumrechnung enthalten ist.&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Pow MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Pow IODev myBroker&lt;br /&gt;
 attr Sonoff_Pow eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_Pow icon measure_power&lt;br /&gt;
 attr Sonoff_Pow publishSet ON OFF cmnd/sonoffpow/1/POWER/set&lt;br /&gt;
 attr Sonoff_Pow room MQTT&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_Power tele/sonoffpow/POWER&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_state cmnd/sonoffpow/1/POWER/set&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_TODAY_ENERGY tele/sonoffpow/TODAY_ENERGY&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_PERIOD_ENERGY tele/sonoffpow/PERIOD_ENERGY&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_CURRENT_POWER tele/sonoffpow/CURRENT_POWER&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_VOLTAGE tele/sonoffpow/VOLTAGE &lt;br /&gt;
 attr Sonoff_Pow subscribeReading_CURRENT tele/sonoffpow/CURRENT&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_AKTUELL stat/sonoffpow/1/STATUS&lt;br /&gt;
 attr Sonoff_Pow webCmd ON:OFF&lt;br /&gt;
 attr Sonoff_Pow stateFormat {sprintf(&amp;quot;akutelle Leistung: %.1f W Tagesverbrauch: %.2f Kw/h&amp;quot;, ReadingsVal($name,&amp;quot;CURRENT_POWER&amp;quot;,undef), ReadingsVal($name,&amp;quot;TODAY_ENERGY&amp;quot;,undef))}&lt;br /&gt;
Zusätzlich kann hier noch das Relais mit &amp;quot;on&amp;quot; und &amp;quot;off&amp;quot; ein- ausgeschaltet werden. Ab Version 2.0.15 wurden hier die ReadingsNamen auf TODAY_ENERGY und PERIOD_ENERGY (anstatt _POWER) geändert. Dieses Beispiel gilt für das LEGACY Messageformat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Pow MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Pow IODev myBroker&lt;br /&gt;
 attr Sonoff_Pow icon measure_power&lt;br /&gt;
 attr Sonoff_Pow publishSet ON OFF cmnd/sonoffpow/LIGHT/&lt;br /&gt;
 attr Sonoff_Pow stateFormat {sprintf(&amp;quot;aktuell: %.1f W Tag: %.2f Kw/h&amp;quot;, ReadingsVal($name,&amp;quot;Power&amp;quot;,undef), ReadingsVal($name,&amp;quot;Today&amp;quot;,undef))}&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_ENERGY tele/sonoffpow/ENERGY&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_LIGHT stat/sonoffpow/LIGHT&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_state cmnd/sonoffpow/LIGHT&lt;br /&gt;
 attr Sonoff_Pow webCmd ON:OFF&lt;br /&gt;
und das ist ein Beispiel für die Konfiguration für die Tasmota Software und Einsatz des j2r Tools.&lt;br /&gt;
&lt;br /&gt;
===Sonoff POW Netz-Anschluß===&lt;br /&gt;
[[Datei:sonoff_sw_34.jpg|thumb|left|alt=Sonoff POW Netzanschluß]]&lt;br /&gt;
Erst wenn alle Arbeiten an der Hard- und Software abgeschlossen sind, kann man das Modul an die Netzspannung anschließen. Wer es sich einfach machen will, nimmt eine Industriell gefertigte 230 V Verlängerung  (zwischen 1,5 - 3 Meter) und schneidet sie in der Mitte durch. Nach dem abisolieren der flexiblen Drähte sollte diese &#039;&#039;&#039;verlötet oder mit Aderendhülsen&#039;&#039;&#039; versehen werden (müssen aber exakt passen, da hier kaum Platz in den Klemmen ist). &lt;br /&gt;
Mit einem kleinen Schraubendreher kann man die Feder der Klemmen niederdrücken und das verzinnte Drahtende tief ich die Öffnung stecken. Es dürfen keine Drahtlitzen aus den Öffnungen sichtbar sein, Kurzschlußgefahr! Ebenso sollte eine Zugprobe durchgeführt werden ob die Klemme auch richtig eingerastet ist.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ACHTUNG:&#039;&#039;&#039; diese Arbeiten müssen von einem ausgebildeten Fachpersonal (Elektriker) durchgeführt werden, Lebensgefahr!&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sonoff POW Design===&lt;br /&gt;
&lt;br /&gt;
====ReadingsGroup normal====&lt;br /&gt;
[[Datei:sonoff_sw_46.jpg|thumb|left|alt=Sonoff POW Design]]&lt;br /&gt;
Viele Benutzer wollen schönere und funktionelle Ausgaben am Bildschirm sehen. Die Möglichkeiten nach oben sind hier sehr vielfältig. Anhand von zwei einfachen aber mächtigen Funktionen hier ein kleines Beispiel wie hier im Bild dargestellt.&lt;br /&gt;
&lt;br /&gt;
Was das Design betrifft, sind hier mehrere Möglichkeiten gegeben und nach oben ist für findige Anwender alles offen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zunächst wird mit dem Hilfsmodul &amp;quot;&#039;&#039;&#039;average&#039;&#039;&#039;&amp;quot; eine Art Statistik (Durchschnittsberechnung, Min.,Max., etc.) hinzugefügt. Das beschränkt sich auf eine einzige Zeile. Es würde sich auch &#039;&#039;&#039;statistic&#039;&#039;&#039; dazu eignen.&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Pow_CURRENT_POWER average Sonoff_Pow:CURRENT_POWER.*&lt;br /&gt;
Die &amp;quot;average&amp;quot; Funktion wird in das Device &amp;quot;Sonof_Pow&amp;quot; auf das Reading &amp;quot;CURRENT_POWER&amp;quot; hinzugefügt.&lt;br /&gt;
&lt;br /&gt;
Der zweite Schritt wird eine &#039;&#039;&#039;readingsGroup&#039;&#039;&#039; mit den gewünschten und gefilterten Ausgabedaten. Durch die verschiedenen IF Abfragen der unterschiedlichen VALUE wird bei über- oder unterschreiten eines Wertes eine bestimmte Farbe angewandt. Weitere Beispiele dazu siehe im Wiki unter [http://www.fhemwiki.de/wiki/ReadingsGroup readingsGroup]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 define SonoffPows readingsGroup &amp;lt;%measure_power&amp;gt;,&amp;lt;aktuell&amp;gt;,&amp;lt;Tag&amp;gt;,&amp;lt;Strom&amp;gt;,&amp;lt;Durchschnitt&amp;gt;,&amp;lt;max.P&amp;gt;,&amp;lt;Schaltzyklen&amp;gt;,&amp;lt; hr &amp;gt; .*(Sonoff_Pow|Sonoff_Pow2):CURRENT_POWER,TODAY_ENERGY,CURRENT,CURRENT_POWER_avg_day,CURRENT_POWER_max_day,PERIOD_ENERGY&lt;br /&gt;
 attr SonoffPows mapping %ALIAS&lt;br /&gt;
 attr SonoffPows nameStyle style=&amp;quot;color:yellow&amp;quot;&lt;br /&gt;
 attr SonoffPows room MQTT&lt;br /&gt;
 attr SonoffPows valueFormat {&#039;CURRENT_POWER&#039; =&amp;gt;&amp;quot;%.0f W&amp;quot;, &#039;TODAY_ENERGY&#039; =&amp;gt;&amp;quot;%.2f Kw&amp;quot;, &#039;CURRENT&#039; =&amp;gt;&amp;quot;%.2f A&amp;quot;,&#039;CURRENT_POWER_max_day&#039; =&amp;gt; &amp;quot;%.0f W&amp;quot;,&#039;CURRENT_POWER_avg_day&#039; =&amp;gt; &amp;quot;%.2f W&amp;quot;,&#039;PERIOD_ENERGY&#039;=&amp;gt;&amp;quot;%.0f Zyklen&amp;quot;}&lt;br /&gt;
 attr SonoffPows valueStyle { if($READING eq &amp;quot;CURRENT_POWER&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 0 &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;TODAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 4.8){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;TODAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 2.5){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;TODAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 2.5 &amp;amp;&amp;amp; $VALUE &amp;lt; 4.8 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 0.45){&#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039;}elsif( $READING eq &amp;quot;CURRENT&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 0.45 &amp;amp;&amp;amp; $VALUE &amp;lt; 0.87 ){&#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 0.87){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;PERIOD_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 10){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;PERIOD_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 10 &amp;amp;&amp;amp; $VALUE &amp;lt; 15 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;PERIOD_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 15){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; } }&lt;br /&gt;
&lt;br /&gt;
Die readingsGroup sind etwas komplex zu lesen, aber nach etwas Einarbeitung klappt das schon. Die in diesem Beispiel verwendeten Readingsnamen beziehen sich auf die Beispielkonfigurationen hier im Wiki.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
====ReadingsGroup mit Schaltmöglichkeit====&lt;br /&gt;
[[Datei:sonoff_pow_03.jpg|thumb|left|alt=readingsGroup mit Schalter]]&lt;br /&gt;
Die vorher erwähnte ReadingsGroup kann auch gleich mit einem Schalter versehen werden um den POW Ein- oder Aus schalten zu können. Dazu ist aber eine andere Einstellung im Sketch erforderlich.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der &amp;quot;&#039;&#039;&#039;user_config.h&#039;&#039;&#039;&amp;quot; muss an dieser Stelle auch die &amp;quot;&#039;&#039;&#039;PUB_PREFIX&#039;&#039;&#039;&amp;quot; auf die gleiche Topic wie &amp;quot;PUB_PREFIX2&amp;quot; eingestellt werden. Durch diese Maßnahme wird erreicht, dass sofort nach dem Knopfdruck auch der Status mit der Topic &amp;quot;tele&amp;quot; übertragen wird. Würde der weiterhin mit &amp;quot;stat&amp;quot; übertragen, kann er in der Readingsgroup nur sehr umständlich weiter behandelt werden. Dadurch wird erreicht, dass der Schalter sofort nach dem Schaltvorgang und der Rückmeldung (Status) auch seine Farbe ändert. Wird dieser Eintrag vergessen, ändert der Schalter erst nach Eintreffen der nächsten zyklischen Abfrage seinen Status/Farbe.&lt;br /&gt;
&lt;br /&gt;
 #define SUB_PREFIX             &amp;quot;cmnd&amp;quot;       // Sonoff devices subscribe to:- SUB_PREFIX/MQTT_TOPIC and SUB_PREFIX/MQTT_GRPTOPIC&lt;br /&gt;
 #define PUB_PREFIX             &amp;quot;tele&amp;quot;       // Sonoff devices publish to:- PUB_PREFIX/MQTT_TOPIC&lt;br /&gt;
 #define PUB_PREFIX2            &amp;quot;tele&amp;quot;       // Sonoff devices publish telemetry data to:- PUB_PREFIX2/MQTT_TOPIC/UPTIME, POWER/LIGHT and TIME&lt;br /&gt;
hier die PUB_PREFIX mit der geänderten Topic &amp;quot;tele&amp;quot; anstatt &amp;quot;stat&amp;quot; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 define SonoffPows readingsGroup &amp;lt;%measure_power&amp;gt;,&amp;lt;aktuell&amp;gt;,&amp;lt;Tag&amp;gt;,&amp;lt;Gestern&amp;gt;,&amp;lt;Strom&amp;gt;,&amp;lt;Durchschnitt&amp;gt;,&amp;lt;max.P&amp;gt;,&amp;lt;Zyklus&amp;gt;,&amp;lt;Faktor&amp;gt;,&amp;lt;Status&amp;gt;,&amp;lt; hr &amp;gt; .*(Sonoff_Pow|Sonoff_Pow2|Sonoff_Pow3):CURRENT_POWER,TODAY_ENERGY,YESTERDAY_ENERGY,CURRENT,CURRENT_POWER_avg_day,CURRENT_POWER_max_day,PERIOD_ENERGY,POWER_FACTOR,LIGHT&lt;br /&gt;
 attr SonoffPows commands {&#039;LIGHT.ON&#039; =&amp;gt; &#039;set $DEVICE OFF&#039;,&#039;LIGHT.OFF&#039; =&amp;gt; &#039;set $DEVICE ON&#039;}&lt;br /&gt;
 attr SonoffPows mapping %ALIAS&lt;br /&gt;
 attr SonoffPows nameStyle style=&amp;quot;color:yellow&amp;quot;&lt;br /&gt;
 attr SonoffPows room Energie,MQTT&lt;br /&gt;
 attr SonoffPows valueFormat {&#039;CURRENT_POWER&#039; =&amp;gt;&amp;quot;%.0f W&amp;quot;, &#039;TODAY_ENERGY&#039; =&amp;gt;&amp;quot;%.2f Kw&amp;quot;,&#039;YESTERDAY_ENERGY&#039; =&amp;gt;&amp;quot;%.2f Kw&amp;quot;, &#039;CURRENT&#039; =&amp;gt;&amp;quot;%.2f A&amp;quot;,&#039;CURRENT_POWER_max_day&#039; =&amp;gt; &amp;quot;%.0f W&amp;quot;,&#039;CURRENT_POWER_avg_day&#039; =&amp;gt; &amp;quot;%.2f W&amp;quot;,&#039;CURRENT_POWER&#039;=&amp;gt;&amp;quot;%.0f W&amp;quot;,&#039;POWER_FACTOR&#039; =&amp;gt; &amp;quot;%.2f &amp;quot;}&lt;br /&gt;
 attr SonoffPows valueIcon {&#039;LIGHT.ON&#039; =&amp;gt; &#039;rc_GREEN@green&#039;, &#039;LIGHT.OFF&#039; =&amp;gt; &#039;rc_RED@red&#039;}&lt;br /&gt;
 attr SonoffPows valueStyle { if($READING eq &amp;quot;CURRENT_POWER&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 0 &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;TODAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 4.8){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;TODAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 2.5){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;TODAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 2.5 &amp;amp;&amp;amp; $VALUE &amp;lt; 4.8 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;YESTERDAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 2.5){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;YESTERDAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 2.5 &amp;amp;&amp;amp; $VALUE &amp;lt; 4.8 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;YESTERDAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 4.8){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 0.45){&#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039;}elsif( $READING eq &amp;quot;CURRENT&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 0.45 &amp;amp;&amp;amp; $VALUE &amp;lt; 0.87 ){&#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 0.87){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;PERIOD_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 10){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;PERIOD_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 10 &amp;amp;&amp;amp; $VALUE &amp;lt; 15 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;PERIOD_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 15){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; } }&lt;br /&gt;
hier die erweiterte ReadingsGroup mit dem Schalter. Bei Bedarf sind hier die Devicenamen anzupassen wenn andere Namen verwendet werden (Sonoff_Pow|Sonoff_Pow2|Sonoff_Pow3).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====POW mit FTUI anzeigen====&lt;br /&gt;
[[Datei:sonoff_pow_energy.JPG|thumb|left|alt=Tablett FTUI]]&lt;br /&gt;
Wer möchte kann die Energieanzeigen auch mit der [https://forum.fhem.de/index.php/topic,34233.0.html Tablett UI] für eine Tablet Ansicht gestalten. Mit dieser stehen viele Möglichkeiten zu einer attraktiven Darstellung zur Verfügung.&lt;br /&gt;
Hier ein Beispiel welches mit den Widget &amp;quot;[http://www.fhemwiki.de/wiki/FHEM_Tablet_UI#Widget_THERMOSTAT thermostat]&amp;quot; dargestellt ist.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Slampher Flashen==&lt;br /&gt;
[[Datei:sonoff_sl_53.jpg|thumb|left|alt=Sonoff SLAMPHER]]&lt;br /&gt;
Dieses Modul ist eine Besonderheit was das Flashen betrifft, denn mit Hilfe des Tasters kann der ESP8266 NICHT in den Flashmode gebracht werden. Der Taster ist intern anderwärtig verdrahtet und somit für diesen Zweck nicht zu gebrauchen.&lt;br /&gt;
&lt;br /&gt;
Wie hier links im Bild zu sehen ist, muss der rechte Pin des R20 (oben im Bild) während dem Einstecken des USB Steckers auf Masse gelegt werden. Die beste Möglichkeit ist ein Stücken Draht anzulöten und diesen dann beim einstecken auf den Masse Pin des USB-Konverters zu legen.&lt;br /&gt;
&lt;br /&gt;
Pinbelegung des Steckers von oben nach unten:&lt;br /&gt;
 o - GND&lt;br /&gt;
 o - TxD&lt;br /&gt;
 o - RxD&lt;br /&gt;
 &#039;&#039;&#039;o&#039;&#039;&#039; - Vdd&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sl_51.jpg|thumb|left|alt=Sonoff SLAMPHER R20]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier ist genau ersichtlich, wo der R20 auf der Platine platziert ist. }}&lt;br /&gt;
Hier nocheinmal schön zu sehen wo der R20 (der ist nicht eingelötet sondern leer) exakt auf der Platine liegt, gemeint ist der rechte Pin. Hier kann auch leicht gelötet werden, da keine empfindlichen Bauteile in der Nähe sind und auch genug Platz vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_sl_50.jpg|thumb|left|alt=Sonoff SLAMPHER R20]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier ist genau ersichtlich, wo der Draht am R20 aufgelötet wurde }}&lt;br /&gt;
Hier ist ein kleines Stück Schaltdraht auf den Pin bereist aufgelötet und bereit zum Flashen!&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel wurde keine Pfostensteckerleiste auf die Platine aufgelötet, sondern nur durchgesteckt und mit einem Gummiring  zum Relais fixiert, das erspart den Lötvorgang, weil in Zukunft dann ohnehin OTA geflasht werden kann.&lt;br /&gt;
&lt;br /&gt;
Also Pin20 auf Masse legen und USB-Konverter an den PC einstecken, dann den Draht von der Masse entfernen. Der ESP8266 sollte jetzt im Flashmodus bereit stehen und kann wie bereits oben beschrieben geflasht werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sonoff Slampher Software===&lt;br /&gt;
[[Datei:sonoff_sl_54.jpg|thumb|left|alt=Sonoff SLAMPHER FHEM]]&lt;br /&gt;
&lt;br /&gt;
Als Software wird Arends Sketch installiert (Kommunikation über MQTT), da zum derzeitigen Zeitpunkt ESPEasy das Modul noch nicht integriert hat und somit auch nicht ansteuern kann.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_SL MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_SL IODev myBroker&lt;br /&gt;
 attr Sonoff_SL devStateIcon ON:rc_GREEN:OFF OFF:rc_RED:ON&lt;br /&gt;
 attr Sonoff_SL icon hue_filled_br30&lt;br /&gt;
 attr Sonoff_SL publishSet ON OFF cmnd/sonoffsl/1/POWER/set&lt;br /&gt;
 attr Sonoff_SL room Bewegung,_Sonoff&lt;br /&gt;
 attr Sonoff_SL stateFormat Licht&lt;br /&gt;
 attr Sonoff_SL subscribeReading_Licht tele/sonoffsl/POWER&lt;br /&gt;
 attr Sonoff_SL subscribeReading_state cmnd/sonoffsl/1/POWER/set&lt;br /&gt;
 attr Sonoff_SL webCmd ON:OFF&lt;br /&gt;
&lt;br /&gt;
Hier ein Beispiel wie in FHEM der Slampher eingebunden werden kann. In diesem Beispiel wird davon ausgegangen, das das Modul &amp;quot;sonoffsl&amp;quot; unter Konfiguration am WEBIF (Configure MQTT bei Topic) so unbenannt wurde. Wer einen anderen Namen haben möchte, muss dies dann auch in FHEM entsprechend anpassen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Th10/16 FHEM==&lt;br /&gt;
[[Datei:sonoff_th_01.jpg|thumb|left|alt=Sonoff TH10]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Temperatur Modul TH10 / 16! }}&lt;br /&gt;
Das Modul kann durch drücken des Tasters während dem Einstecken des USB-Konverters in den Flashmodus gebracht werden.&lt;br /&gt;
Der Th10/16 kann mit zwei unterschiedlichen Typen von Sensoren bestückt werden, hier im Beispiel mit dem externen Temperaturfühler DS18B20.&lt;br /&gt;
&lt;br /&gt;
Wie im Bild klar zu sehen ist, kann das Webif auch zur Darstellung via Mobile verwendet werden. Mit &amp;quot;Toggle&amp;quot; wird Ein- oder Aus geschaltet und  darunter ist die aktuelle Temperatur ersichtlich. Für diese Ansicht muss keine MQTT Verbindung eingerichtet werden, da die Kommunikation hier rein über HTTP erfolgt.&lt;br /&gt;
&lt;br /&gt;
Die unten dargestellten Beispiele für FHEM beziehen sich auf Arends Sketch, also über MQTT. Dieses Modul kann aber genauso leicht über ESPEasy und der ESPEasy-Bridge eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Pinbelegung des Steckers von oben nach unten:&lt;br /&gt;
 o - GND&lt;br /&gt;
 o - TxD&lt;br /&gt;
 o - RxD&lt;br /&gt;
 &#039;&#039;&#039;o&#039;&#039;&#039; - Vdd&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #define DSB_PIN              14           // GPIO 14 = DS18x20 (Sonoff_TH10A(16A), Sonoff SV)&lt;br /&gt;
 #define DSB_RESOLUTION       2            // Maximum number of decimals (0 - 3) showing Temperature&lt;br /&gt;
 // *** Option 1 - Single DS18B20 - Select either Option 1 OR Option 2&lt;br /&gt;
 #define SEND_TELEMETRY_DS18B20            // Enable sending single temperature telemetry&lt;br /&gt;
 // *** Option 2 - Multiple DS18B20 and/or DS18S20 (needs OneWire library!)&lt;br /&gt;
 //  #define SEND_TELEMETRY_DS18x20            // Enable sending multi temperature telemetry &lt;br /&gt;
In der user_config.h (Arends Sketch) muss hier die Option 1 aktiviert werden (entfernen der vorangestellten //) damit die Telemetriedaten auch gesendet werden. Es empfiehlt sich mindestens die Version &amp;gt;= V 2.0.16, weil hier die Sensoren erweitert wurden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #define DHT_PIN              14           // GPIO 14 = AM2301 (Sonoff_TH10A(16A), Sonoff SV)&lt;br /&gt;
 #define DHT_TYPE             AM2301       // DHT module type (DHT11, DHT21, DHT22, AM2301, AM2302 or AM2321)&lt;br /&gt;
 #define DHT_RESOLUTION       1            // Maximum number of decimals (0 - 3) showing Temperature&lt;br /&gt;
 #define SEND_TELEMETRY_DHT                // Enable sending temperature and humidity telemetry&lt;br /&gt;
Beispiel für den Sensor DHT22, Temperatur und Luftfeuchte. Es dürfen aber nicht beide Sensoren (DS18B20 + DHT22) gleichzeitig aktiviert werden, da ja beide an GPIO14 angehängt werden und es ansonsten zu Fehlfunktionen kommen würde.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_th_02.jpg|thumb|left|alt=Sonoff TH10]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Einbindung in FHEM via MQTT! }}&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ### Temperatur und Luftfeuchte vom Sonoff Switch ###&lt;br /&gt;
 define Sonoff_Temp MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Temp IODev myBroker&lt;br /&gt;
 attr Sonoff_Temp alias Pool Wasser&lt;br /&gt;
 attr Sonoff_Temp eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_Temp icon temperature_humidity&lt;br /&gt;
 attr Sonoff_Temp publishSet ON OFF cmnd/sonoffth/1/POWER/set&lt;br /&gt;
 attr Sonoff_Temp room _Sonoff&lt;br /&gt;
 attr Sonoff_Temp stateFormat {sprintf(&amp;quot;Temperatur: %.1f Grad&amp;quot;, ReadingsVal($name,&amp;quot;TEMPERATURE&amp;quot;,0))}&lt;br /&gt;
 attr Sonoff_Temp subscribeReading_TEMPERATURE tele/sonoffth/DS18B20/TEMPERATURE&lt;br /&gt;
 attr Sonoff_Temp subscribeReading_humidity tele/sonoffth/HUMIDITY&lt;br /&gt;
 attr Sonoff_Temp subscribeReading_state cmnd/sonoffth/1/POWER/set&lt;br /&gt;
Beispiel für FHEM mit Temperaturanzeige mit DS18B20&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Switch MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Switch IODev myBroker&lt;br /&gt;
 attr Sonoff_Switch alias Pool Licht&lt;br /&gt;
 attr Sonoff_Switch devStateIcon on:rc_GREEN:off off:rc_RED:on&lt;br /&gt;
 attr Sonoff_Switch eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_Switch icon light_ceiling&lt;br /&gt;
 attr Sonoff_Switch publishSet ON OFF cmnd/sonoffth/1/POWER/set&lt;br /&gt;
 attr Sonoff_Switch room _Sonoff&lt;br /&gt;
 attr Sonoff_Switch stateFormat Licht&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_Licht tele/sonoffth/POWER&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_state cmnd/sonoffth/1/POWER/set&lt;br /&gt;
 attr Sonoff_Switch webCmd ON:OFF&lt;br /&gt;
Der Schalter nochmals seperat dargestellt, je nach Geschmack.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff CH4 4-Kanal Schaltmodul==&lt;br /&gt;
[[Datei:sonoff_ch4_1.jpg|thumb|left|alt=Sonoff CH4]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Achtung andere Einstellungen der Arduino IDE: Select Board &amp;quot;Generic ESP8285 Module&amp;quot; (=Flash Mode &amp;quot;DOUT&amp;quot;) and Flash Size &amp;quot;1M (64K SPIFFS)&amp;quot;n! }}&lt;br /&gt;
&lt;br /&gt;
Der Sonoff CH4 ist mit seinen 4 Kanälen ein sehr preiswertes Modul im Gehäuse und für Hutschinenmontage. Anstatt des üblichen ESP8266 besitzt dieses Modul schon den moderneren &#039;&#039;&#039;ESP8285&#039;&#039;&#039;. Es müssen daher in der Arduino IDE andere Einstellungen vorgenommen werden. Unter Board wird hier das &amp;quot;&#039;&#039;&#039;Generic 8285 Module&#039;&#039;&#039;&amp;quot; mit &#039;&#039;&#039;1M und 64K Spiffs&#039;&#039;&#039; angewählt. Der Flashmode &amp;quot;&#039;&#039;&#039;DOUT&#039;&#039;&#039;&amp;quot; wird dann automatisch eingestellt, bzw. ausgeblendet.&lt;br /&gt;
&lt;br /&gt;
Das Modul ist etwas größer als die anderen Sonoff Produkte und besitzt mit 14,5 x 9 cm schon beachtliche Einbau Maße.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_ch4_2.jpg|thumb|left|alt=Sonoff CH4 FDTI]]&lt;br /&gt;
Als weitere Besonderheit sei hier erwähnt, das die Signale &#039;&#039;&#039;RxD auf RxD und TxD auf TxD&#039;&#039;&#039; des FTDI Konverters zu verbinden sind. Wie bei allen Sonoff Modulen darf man &#039;&#039;&#039;zum flashen keine Netzspannung anschließen&#039;&#039;&#039;, sondern nur über die Versorgungsspannung des FDTI Konverters mit 3,3 V versorgen (Jumper richtig setzen). Die Stiftleiste für den FTDI Anschluß ist hier schon eingelötet.&lt;br /&gt;
&lt;br /&gt;
In den Flashmodus gelangt man durch drücken der &#039;&#039;&#039;Taste FW/IO0&#039;&#039;&#039; während des einstecken des USB Anschlusses.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_ch4_3.jpg|thumb|left|alt=Sonoff CH4 Arends]]&lt;br /&gt;
Hier die Ansicht des Webinterface des Arends Sketches!&lt;br /&gt;
Bei der Software sei erwähnt, das die getestete Version 3.1.16 nur bei Kanal 1 den Modus &amp;quot;PulseTime&amp;quot; beherrscht. Wer also gepulste Ausgänge (zB: elektrische Garage/Toröffner) benötigt muss diese per Software nachbilden oder mit dem Kanal 1 auskommen. Eine &amp;quot;Pulsetime 10&amp;quot; ist ein guter Wert dafür (etwa 1 Sekunde). &lt;br /&gt;
&lt;br /&gt;
Als Alternative kann mit dieser HTML Seite des Webservers am Modul des CH4 schon mit jedem Browser fähigem Handy (Android, iPhone, Windows) aufgerufen werden und somit alle Funktionen gesteuert werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_ch4_4.jpg|thumb|left|alt=Sonoff CH4 Software APP]]&lt;br /&gt;
Hier dargestellt die Original Software die Sonoff zum Modul liefert (EWeLink) und über ihre Cloud verbindet. Leider kann hier keine gepulste Ausgabe erfolgen. Mit einem Countdown kann zwar der Ausgang wieder abgeschaltet werden, die kleinste Zeiteinheit ist aber 1 Minute und somit für einen Impuls leider nicht zu gebrauchen. Ebenso kann mit dieser Software keine Einbindung in FHEM erfolgen, obwohl es eine nette anschauliche Darstellung ist.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Erweiterungen=&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sonoff Switch mit Temperatur + Luftfeuchte== &lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier geht es um nützliche Hardware Erweiterungen an den Originalmodulen!}}&lt;br /&gt;
Wozu überhaupt den Switch erweitern wenn es auch die Modelle TH10 und TH16 gibt?&lt;br /&gt;
&lt;br /&gt;
Manche Personen können dadurch dem Basteltrieb nachkommen, aber das wesentliche ist der Preis, da die Switches doch fast um die Hälfte billiger sind. Die Sensoren kosten ebenfalls kaum nennenswerte Beträge.&lt;br /&gt;
&lt;br /&gt;
Oder es hat schon jemand Switches im Einsatz und möchte jetzt zusätzlich die Temperatur erfassen!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hardware erweitern mit DHT22 ===&lt;br /&gt;
[[Datei:sonoff_sw_4.PNG|thumb|left|alt=Sonoff Switch Pinleiste mit Temperatur]]&lt;br /&gt;
Am Sonoff Switch wurde ja schon eine Stiftleiste zum Flashen eingelötet. Diese Stiftleiste bietet schon alle Anschlüsse welche für die Temperatur- und Luftfeuchtemessung benötigt werden. Am 5. Anschluß der Stifftleiste ist das Signal &amp;quot;SCL&amp;quot; (GPIO14) herausgeführt, welches für den DHT22 zur Erfassung der Messdaten benötigt wird. Der Sonsor wird mit einem einem 3-poligen Kabel (zB: ein Steckkabel für ein Breadboard oder direkt anlöten) verbunden. Damit der DHT22 korrekt funktioniert, wird ein Widerstand mit 4,7 K Ohm zwischen Vdd und Data am DHT22 zusätzlich benötigt. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_45.jpg|thumb|left|alt=AM2302 / DHT22]]&lt;br /&gt;
&lt;br /&gt;
Ansicht des DHT22 (AM2302) mit den aufgesteckten Verbindungskabeln. Von links nach rechts sind das&lt;br /&gt;
&lt;br /&gt;
 1 = VCC 3,3 V&lt;br /&gt;
 2 = Data&lt;br /&gt;
 3 = nc (nicht belegt)&lt;br /&gt;
 4 = GND&lt;br /&gt;
&lt;br /&gt;
Pin1 (VCC) des DHT22 muss also auf Pin1 der Stiftleiste, Pin2 (Data) auf Pin5 und Pin4 (GND) auf Pin4. &lt;br /&gt;
Pin2 und Pin1 soll hier noch der Widerstand aufgelötet werden.&lt;br /&gt;
&lt;br /&gt;
 1 ------- 1 (VDD)&lt;br /&gt;
 2 ------- 5 (GPIO14)&lt;br /&gt;
 3&lt;br /&gt;
 4 ------- 4 (GND)&lt;br /&gt;
 DHT22  Stiftleiste&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_44.jpg|thumb|left|alt=umgebautes Modul]]&lt;br /&gt;
Diese Darstellung zeigt das umgebaute und bereits verschlossene Modul. Auf der Seite des Tasters (bitte nur hier, da auf der anderen Seite die 230 V verlaufen und neben der Lebensgefahr auch den Sensor beeinflussen) ist hier einfach mit einer Eisensäge ein Schlitz eingesägt, der dient in diesem Falle als Kabeldurchführung. Ein Schlitz ist besser als ein Loch, da der Oberteil des Gehäuses sich leichter aufsetzen läßt. Wer ein längeres Kabel benötigt, kann natürlich auch ein 3-poliges Telefonkabel (oder Mikrokabel oder sonstiges) verwenden. Der Sensor sollte etwas Abstand zum Gehäuse haben, da dieses auch eine Eigenerwärmung hat. Wer es ganz originalgetreu lösen will, kann auch eine 3-polige Mini Buchse für Klinckenstecker (3,5mm) einbauen so wie sie am TH10/16 vorhanden ist.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Software anpassen am Beispiel MQTT ===&lt;br /&gt;
[[Datei:sonoff_sw_40.jpg|thumb|left|alt=Sonoff MQTT]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wer über MQTT kommuniziert und die Software von Theo Arends benutzt, muss folgende Dinge beachten. In der Datei &#039;&#039;&#039;user_config.h&#039;&#039;&#039; müssen im Abschnitt &#039;&#039;&#039;Module = SONOFF&#039;&#039;&#039; die Slashes so wie unten dargestellt entfernt werden, damit erstens die Interrupts abgefragt werden und zweitens die Telemetriedaten gesendet werden. Ebenso ist der verwendete Sensor bei &amp;quot;&#039;&#039;&#039;define DHT_TYPE&#039;&#039;&#039;&amp;quot; eingestellt werden. In dem hier gezeigten Beispiel also &amp;quot;&#039;&#039;&#039;DHT22&#039;&#039;&#039;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #if MODULE == SONOFF                        // programming header 1:3.3V 2:rx 3:tx 4:gnd&lt;br /&gt;
  #define APP_NAME             &amp;quot;Sonoff module&amp;quot;&lt;br /&gt;
  #define LED_PIN              13           // GPIO 13 = Green/Blue Led (0 = On, 1 = Off) - Sonoff&lt;br /&gt;
  #define LED_INVERTED         1            // 0 = (1 = On, 0 = Off), 1 = (0 = On, 1 = Off)&lt;br /&gt;
  #define REL_PIN              12           // GPIO 12 = Red Led and Relay (0 = Off, 1 = On)&lt;br /&gt;
  #define KEY_PIN              0            // GPIO 00 = Button&lt;br /&gt;
 /*-------------------------------------------------------------------------------------------*/&lt;br /&gt;
  #define DSB_PIN              4            // GPIO 14 = DS18B20 (Sonoff_TH10A(16A), Sonoff SV)&lt;br /&gt;
  #define SEND_TELEMETRY_DS18B20            // Enable sending temperature telemetry&lt;br /&gt;
 /*-------------------------------------------------------------------------------------------*/&lt;br /&gt;
  #define DHT_PIN              14           // GPIO 14 = AM2301 (Sonoff_TH10A(16A), Sonoff SV)&lt;br /&gt;
  #define DHT_TYPE             DHT22        // DHT module type (DHT11, DHT21, DHT22, AM2301, AM2302 or AM2321)&lt;br /&gt;
  #define SEND_TELEMETRY_DHT                // Enable sending temperature and humidity telemetry&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Software Anpassung DHT22 in FHEM ===&lt;br /&gt;
[[Datei:sonoff_sw_41.jpg|thumb|left|alt=umgebautes Modul]]&lt;br /&gt;
&lt;br /&gt;
Links in der Hardcopy sind die Readings die nach der Anpassung von FHEM (Broker) befüllt werden sollten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ### Temperatur und Luftfeuchte vom Sonoff Switch ###&lt;br /&gt;
 define Sonoff_Temp MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Temp IODev myBroker&lt;br /&gt;
 attr Sonoff_Temp icon temperature_humidity&lt;br /&gt;
 attr Sonoff_Temp room MQTT&lt;br /&gt;
 attr Sonoff_Temp stateFormat {sprintf(&amp;quot;Temperatur: %.1f Grad Feuchte: %.1f &amp;quot;, ReadingsVal($name,&amp;quot;temperature&amp;quot;,0), ReadingsVal($name,&amp;quot;humidity&amp;quot;,0))}&lt;br /&gt;
 attr Sonoff_Temp subscribeReading_humidity tele/sonoff/HUMIDITY&lt;br /&gt;
 attr Sonoff_Temp subscribeReading_temperature tele/sonoff/TEMPERATURE&lt;br /&gt;
Als Beispiel die zusätzliche Erweiterung um die Temperatur und die Luftfeuchte in FHEM. Der in der Topic verwendete Name &amp;quot;sonoff&amp;quot; muss natürlich der Einstellung in der Software am Switch entsprechen. Bei Verwendung mehrerer Switches muss natürlich auch der Name bei jedem geändert werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Logfile für die Temperatur ===&lt;br /&gt;
 define SVG_FileLog_Sonoff_Temp SVG myDbLog:SVG_FileLog_Sonoff_Temp:HISTORY&lt;br /&gt;
 attr SVG_FileLog_Sonoff_Temp room MQTT&lt;br /&gt;
&lt;br /&gt;
Und schließlich fehlt noch das Logfile, damit der Temperaturverlauf auch in schönen Plots dargestellt werden kann.&lt;br /&gt;
Das hier verwendete Beispiel funktioniert nur mit einer DbLog.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Switch als Thermostat verwenden mit MQTT== &lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_55.jpg|thumb|left|alt=Thermostat]]&lt;br /&gt;
Mit diesem einfachen Beispiel wird ein Pelett Ofen mit einem externen Thermostat (sonoff Switch oder TH10/16) gesteuert. Zum besseren Überblick wird die Steuerung in einzelne Module getrennt, es könnte aber auch einiges zu einer einzigen Definition zusammen gefasst werden. Der Thermostat könnte auch als Frostwächter benutzt werden und ein anderes Heizgerät steuern.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 ###################################&lt;br /&gt;
 ### Sonoff Thermostat Regelung ####&lt;br /&gt;
 ###################################&lt;br /&gt;
 define Sonoff_dht MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_dht IODev myBroker&lt;br /&gt;
 attr Sonoff_dht alias Raumtemperatur&lt;br /&gt;
 attr Sonoff_dht group Thermostat&lt;br /&gt;
 attr Sonoff_dht icon temperature_humidity&lt;br /&gt;
 attr Sonoff_dht publishSet ON OFF cmnd/sonoff_dht/1/POWER/set&lt;br /&gt;
 attr Sonoff_dht room _Sonoff&lt;br /&gt;
 attr Sonoff_dht stateFormat {sprintf(&amp;quot;Temperatur: %.1f Grad Feuchte: %.1f &amp;quot;, ReadingsVal($name,&amp;quot;TEMPERATURE&amp;quot;,0),  ReadingsVal($name,&amp;quot;HUMIDITY&amp;quot;,0))}&lt;br /&gt;
 attr Sonoff_dht subscribeReading_HUMIDITY tele/sonoff_dht/DHT/HUMIDITY&lt;br /&gt;
 attr Sonoff_dht subscribeReading_TEMPERATURE tele/sonoff_dht/DHT/TEMPERATURE&lt;br /&gt;
 attr Sonoff_dht subscribeReading_state cmnd/sonoff_dht/1/POWER/set&lt;br /&gt;
FHEM Definition zur Erfassung der Temperatur und der Luftfeuchte. Damit dieses Beispiel funktioniert, ist am Sonoff Modul die Topic &amp;quot;&#039;&#039;&#039;sonoff_dht&#039;&#039;&#039;&amp;quot; zu setzen. Dieser Temperaturwert dient dem Thermostat als ISTWert.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Sw MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Sw IODev myBroker&lt;br /&gt;
 attr Sonoff_Sw alias Pellets Ofen&lt;br /&gt;
 attr Sonoff_Sw devStateIcon on:rc_GREEN:off off:rc_RED:on&lt;br /&gt;
 attr Sonoff_Sw eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_Sw group Thermostat&lt;br /&gt;
 attr Sonoff_Sw icon sani_boiler_temp&lt;br /&gt;
 attr Sonoff_Sw publishSet ON OFF cmnd/sonoff_dht/1/POWER/set&lt;br /&gt;
 attr Sonoff_Sw room _Sonoff&lt;br /&gt;
 attr Sonoff_Sw stateFormat Licht&lt;br /&gt;
 attr Sonoff_Sw subscribeReading_Licht tele/sonoff_dht/POWER&lt;br /&gt;
 attr Sonoff_Sw subscribeReading_state cmnd/sonoff_dht/1/POWER/set&lt;br /&gt;
 attr Sonoff_Sw webCmd ON:OFF&lt;br /&gt;
FHEM Definition zum Absetzen der Befehle für das Relais (Thermostat) Ein- / Aus. Wenn das zu steuernde Geräte einen potentialfreien Thermostatanschluß benötigt (in den meisten Fällen), muss noch ein Relais dazwischen geschaltet werden um die Trennung der Netzspannung zu gewährleisten.&lt;br /&gt;
&lt;br /&gt;
 define ThermostatPellets dummy&lt;br /&gt;
 attr ThermostatPellets alias Pellets Ofen Sollwert&lt;br /&gt;
 attr ThermostatPellets group Thermostat&lt;br /&gt;
 attr ThermostatPellets icon temp_control&lt;br /&gt;
 attr ThermostatPellets room _Sonoff&lt;br /&gt;
 attr ThermostatPellets setList state:0,5,10,12,13,14,15,16,17,17.5,18,18.5,19,19.5,20,20.5,21,21.5,22,23,24,25,26,27&lt;br /&gt;
 attr ThermostatPellets webCmd state&lt;br /&gt;
Die Sollwertvorgabe für das Thermostat durch einen Dummy, damit können die gewünschten Temperaturen eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
 ### sofort ausführen wenn neuer Sollwert eingestellt wird ###&lt;br /&gt;
 define Thermostat_on_notify notify ThermostatPellets IF (ReadingsVal(&amp;quot;Sonoff_Sw&amp;quot;,&amp;quot;state&amp;quot;,0) eq &amp;quot;OFF&amp;quot; &amp;amp;&amp;amp; (ReadingsVal(&amp;quot;Sonoff_dht&amp;quot;,&amp;quot;TEMPERATURE&amp;quot;,0) &amp;lt;= Value(&amp;quot;ThermostatPellets&amp;quot;))) (set Sonoff_Sw ON)&lt;br /&gt;
 define Thermostat_off_notify notify ThermostatPellets IF (ReadingsVal(&amp;quot;Sonoff_Sw&amp;quot;,&amp;quot;state&amp;quot;,0) eq &amp;quot;ON&amp;quot; &amp;amp;&amp;amp; (ReadingsVal(&amp;quot;Sonoff_dht&amp;quot;,&amp;quot;TEMPERATURE&amp;quot;,0) &amp;gt; Value(&amp;quot;ThermostatPellets&amp;quot;))) (set Sonoff_Sw OFF)&lt;br /&gt;
Mit einem notify wird die manuelle Änderung des Sollwertes überwacht und sofort reagiert.&lt;br /&gt;
&lt;br /&gt;
 ## zyklisch prüfen ob Sollwert erreicht wurde ###&lt;br /&gt;
 define Thermostat_on at +*00:15:00 IF (ReadingsVal(&amp;quot;Sonoff_Sw&amp;quot;,&amp;quot;Licht&amp;quot;,0) eq &amp;quot;OFF&amp;quot; &amp;amp;&amp;amp; (ReadingsVal(&amp;quot;Sonoff_dht&amp;quot;,&amp;quot;TEMPERATURE&amp;quot;,0) &amp;lt;= Value(&amp;quot;ThermostatPellets&amp;quot;))) (set Sonoff_Sw ON)&lt;br /&gt;
 define Thermostat_off at +*00:15:00 IF (Value(&amp;quot;Sonoff_Sw&amp;quot;) eq &amp;quot;ON&amp;quot; &amp;amp;&amp;amp; (ReadingsVal(&amp;quot;Sonoff_dht&amp;quot;,&amp;quot;TEMPERATURE&amp;quot;,0) &amp;gt; Value(&amp;quot;ThermostatPellets&amp;quot;))) (set Sonoff_Sw OFF)&lt;br /&gt;
Hier noch die Soll- Ist Wertvergleiche zur Steuerung. Es wird alle 15 Minuten überprüft ob die Temperatur erreicht ist. Bei einer trägen Heizung sollten 15 Minuten ausreichend sein, wer will kann dies aber auch alle 5 oder 10 Minuten prüfen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Switch mit Bewegungsmelder HC-SR501== &lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_pir_1.jpg|thumb|left|alt=Bewegungsmelder]]&lt;br /&gt;
Basierend auf dem Wall Switch MQTT Sketch von Arends wurde hier ein Sonoff BASIC + PIR HC-SR501 in eine größere Verteilerdose eingebaut, der Sonoff wurde dabei etwas gekürzt. Die Bewegungsmelder sind ab etwa 70 Cent erhältlich.&lt;br /&gt;
&lt;br /&gt;
Der Sketch kann auch den Blink Modus. Damit kann man im Alarmfall z.B. Alle Strahler rings ums Haus blinken lassen.&lt;br /&gt;
&lt;br /&gt;
Mehr dazu kann hier im [https://forum.fhem.de/index.php/topic,63824.0.html Forum]im Diskussionsthread nachgelesen werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_pir_2.jpg|thumb|left|alt=Bewegungsmelder]]&lt;br /&gt;
Ein Beispiel wir der Bewegungsmelder in der Feuchtraumdose montiert werden kann. Wird der Bewegungsmelder abgesetzt vom Switch montiert, ist darauf zu achten das die Kabel nicht zu lange werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
===Spannungsversorgung des HC-SR501===&lt;br /&gt;
[[Datei:sonoff_pir_4.jpg|thumb|left|alt=5V für Bewegungsmelder]]&lt;br /&gt;
Der HC-SR501 wird vom Sonoff versorgt, wobei hier die 3,3 V nicht immer ausreichen. Es ist deshalb am HC-SR501 eine Diode zu überbrücken, dann reichen die 3,3V vom Sonoff. Es können aber auch am Sonoff die 5V angezapft werden. Hier im Bild dargestellt wo die 5V angezapft werden können.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_pir_5.jpg|thumb|left|alt=3,3V für Bewegungsmelder]]&lt;br /&gt;
Hier eine kleine Übersicht der wichtigsten Teile und deren Platzierung am HC-SR501. &lt;br /&gt;
Den PIR kann man auch mit 3,3V betreiben wenn man die Diode am Eingang nach Vcc überbrückt, dann reicht die Spannung für einen reibungslosen Betrieb völlig aus. Dies gilt für den HC-SR501, wird ein anderer PIR verwendet muss man nachschauen ob das auch möglich ist, ansonsten die 5V Variante wählen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===Anpassung des Sketches mit Wall Switch===&lt;br /&gt;
Zur Vorbereitung des Sketches sind zunächst einige Einstellungen in der &amp;quot;user_config.h&amp;quot; durchzuführen.&lt;br /&gt;
&lt;br /&gt;
 #if MODULE == SONOFF                        // programming header 1:3.3V 2:rx 3:tx 4:gnd&lt;br /&gt;
  #define APP_NAME             &amp;quot;Sonoff 8266 module&amp;quot;&lt;br /&gt;
  #define MQTT_GRPTOPIC        &amp;quot;sonoffs&amp;quot;    // [GroupTopic] MQTT Group topic&lt;br /&gt;
 /*-------------------------------------------------------------------------------------------*/&lt;br /&gt;
  #define LED_PIN              13           // GPIO 13 = Green/Blue Led (0 = On, 1 = Off) - Sonoff&lt;br /&gt;
  #define LED_INVERTED         1            // 0 = (1 = On, 0 = Off), 1 = (0 = On, 1 = Off)&lt;br /&gt;
  #define REL_PIN              12           // GPIO 12 = Red Led and Relay (0 = Off, 1 = On)&lt;br /&gt;
  #define KEY_PIN              0            // GPIO 00 = Button&lt;br /&gt;
 /*-------------------------------------------------------------------------------------------*\&lt;br /&gt;
 * Wall switch and HC-SR501&lt;br /&gt;
 \*-------------------------------------------------------------------------------------------*/&lt;br /&gt;
  #define SWITCH_PIN           14           // GPIO 14 = Standard wall switch to Gnd (Sonoff_TH10A(16A), Sonoff SV)&lt;br /&gt;
  #define SWITCH_MODE          &#039;&#039;&#039;PUSHBUTTON_INV&#039;&#039;&#039;      // [SwitchMode] TOGGLE, FOLLOW, FOLLOW_INV, PUSHBUTTON or PUSHBUTTON_INV (the wall switch state)&lt;br /&gt;
  &#039;&#039;&#039;#define USE_WALL_SWITCH&#039;&#039;&#039;                   // Enable the use of a standard wall switch to control the relay&lt;br /&gt;
Wichtig ist dabei die vorangestellten Slahes // bei &amp;quot;#define USE_WALL_SWITCH&amp;quot; zu entfernen auf &#039;&#039;&#039;PUSHBUTTON_INV&#039;&#039;&#039; zu stellen. Dann kann der Sonoff Switch compiliert und geflasht werden.&lt;br /&gt;
&lt;br /&gt;
===Einbindung des HC-SR501 in FHEM===&lt;br /&gt;
 # ------------- Sonoff_pir mit Bewegungsmelder ---------------&lt;br /&gt;
 define Sonoff_pir MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_pir IODev myBroker&lt;br /&gt;
 attr Sonoff_pir eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_pir group Sonoff&lt;br /&gt;
 attr Sonoff_pir icon hue_filled_br30&lt;br /&gt;
 attr Sonoff_pir publishSet ON OFF cmnd/sonoff_pir/1/POWER/set&lt;br /&gt;
 attr Sonoff_pir room MQTT&lt;br /&gt;
 attr Sonoff_pir stateFormat Licht&lt;br /&gt;
 attr Sonoff_pir subscribeReading_Licht stat/sonoff_pir/POWER&lt;br /&gt;
 attr Sonoff_pir subscribeReading_state cmnd/sonoff_pir/1/POWER/set&lt;br /&gt;
 attr Sonoff_pir webCmd :&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel wie der Sonoff Switch in FHEM eingebunden wird. Wenn im Sketch der Prefix von stat auf tele geändert wurde, ist dies auch hier durchzuführen ( subscribeReading_Licht tele/sonoff_pir/POWER ), ansonsten bleibt es so wie im Beispiel. Getestet wurde dieses Beispiel mit Version 3.1.6. Die Topic sollte auf den Namen &amp;quot;sonoff_pir&amp;quot; eingestellt werden. Bei anderen Namen ist dies entsprechend in FHEM anzupassen. &lt;br /&gt;
&lt;br /&gt;
Mit dem Command &#039;&#039;&#039;BUTTONTOPIC Alarm_SO2&#039;&#039;&#039; ( direkt im Webinterface des Sonoff ) wird der Wall Switch GPIO14 vom Sonoff entkoppelt und somit sendet der Bewegungsmelder direkt an FHEM --&amp;gt; Motion_pir MQTT_DEVICE&lt;br /&gt;
&lt;br /&gt;
Es sollte auch unbedingt kontrolliert werden, wie die Ausgabe des Alarmes in der Console erfolgt. Erscheint hier die Meldung &amp;quot;cmnd/Alarm_SO2/POWER = TOGGLE&amp;quot; dann muss mit dem Kommando &amp;quot;&#039;&#039;&#039;switchmode 1&#039;&#039;&#039;&amp;quot; das Ausgabeformat umgeschaltet werden, erst dann kommt das gewünschte Format &amp;quot;On&amp;quot; und &amp;quot;OFF&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 # ------------------ Motion_pir MQTT_DEVICE -----------------&lt;br /&gt;
 define Motion_pir MQTT_DEVICE&lt;br /&gt;
 attr Motion_pir IODev myBroker&lt;br /&gt;
 attr Motion_pir devStateIcon on:on-for-timer off:off&lt;br /&gt;
 attr Motion_pir eventMap ON:on OFF:off&lt;br /&gt;
 attr Motion_pir group Sonoff&lt;br /&gt;
 attr Motion_pir icon people_sensor&lt;br /&gt;
 attr Motion_pir room MQTT&lt;br /&gt;
 attr Motion_pir stateFormat Alarm&lt;br /&gt;
 attr Motion_pir subscribeReading_Alarm cmnd/Alarm_SO2/POWER&lt;br /&gt;
Die Motion_pir dient nun zur eigentlichen Einschaltung des Lichtes und sendet das Kommando &#039;&#039;&#039;cmnd/Alarm_SO2/POWER&#039;&#039;&#039; an den entkopellten GPIO 14 des Switch.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # ------------------ DoIf zur Motion Abfrage -----------------&lt;br /&gt;
 define di_Sonoff_pir_Alarm DOIF ([Motion_pir:&amp;quot;on&amp;quot;] and [Tag_Nacht:twilight_weather] &amp;lt; 35) (set Sonoff_pir on) DOELSEIF ([Motion_pir:&amp;quot;off&amp;quot;] and [Tag_Nacht:twilight_weather] &amp;lt; 35) (set Sonoff_pir off)&lt;br /&gt;
 attr di_Sonoff_pir_Alarm comment Abhängig von Helligkeitssensor wird nachts,bei Bewegung das Licht eingeschaltet!&lt;br /&gt;
 attr di_Sonoff_pir_Alarm group Sonoff&lt;br /&gt;
 attr di_Sonoff_pir_Alarm room MQTT&lt;br /&gt;
Zusätzlich kann nun mit einem &#039;&#039;&#039;Doif&#039;&#039;&#039; verknüpft werden um das Ganze mit Tag_Nacht:twilight_weather dann in Abhängigkeit der Helligkeit zu schalten. Selbstverständlich kann jede andere Quelle mit einem Helligkeitswert verwendet werden.&lt;br /&gt;
&lt;br /&gt;
===Alarmausgabe über Grouptopic===&lt;br /&gt;
 # ------------------------ Sonoffs Group ----------------------&lt;br /&gt;
 define Sonoffs MQTT_DEVICE&lt;br /&gt;
 attr Sonoffs IODev myBroker&lt;br /&gt;
 attr Sonoffs eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoffs group Sonoff&lt;br /&gt;
 attr Sonoffs icon hue_filled_br30&lt;br /&gt;
 attr Sonoffs publishSet ON OFF cmnd/sonoffs/1/POWER/set&lt;br /&gt;
 attr Sonoffs room MQTT&lt;br /&gt;
 attr Sonoffs stateFormat state&lt;br /&gt;
 attr Sonoffs subscribeReading_Licht stat/sonoffs/1/POWER&lt;br /&gt;
 attr Sonoffs subscribeReading_state cmnd/sonoffs/1/POWER/set&lt;br /&gt;
Wer möchte kann auch mit der Group Topic mehrere Switches mit Bewegungsmelder zusammenfassen und alle Lampen im Alarmfall gemeinsam in den Blinkmodus schalten. cmnd/sonoffs ist das Kommando für die Group Topic, sofern diese vom User nicht verändert wurde.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:IP Components]]&lt;br /&gt;
--[[Benutzer:Reinhart|Reinhart]] ([[Benutzer Diskussion:Reinhart|Diskussion]]) 20:54, 5. Jan. 2017 (CET)&lt;/div&gt;</summary>
		<author><name>Reinhart</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Sonoff&amp;diff=19784</id>
		<title>Sonoff</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Sonoff&amp;diff=19784"/>
		<updated>2017-02-12T17:04:11Z</updated>

		<summary type="html">&lt;p&gt;Reinhart: /* MQTT und TASMOTA */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;sonoff, dieser Artikel beschreibt die Ankopplung der kostengünstigen sonoff Module an FHEM mit ESPEasy oder MQTT.&#039;&#039;&#039;&lt;br /&gt;
{{Randnotiz|RNTyp=Fehl|RNText=Achtung: Arbeiten mit Netzspannung kann lebensgefährlich sein und darf nur von autorisiertem Fachpersonal durchgeführt werden!}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Seit einiger Zeit werden von der [https://www.itead.cc/sonoff-wifi-wireless-switch.html Fa. Itead] kostengünstige &amp;quot;sonoff&amp;quot; Produkte angeboten die glücklicherweise den [http://dl.itead.cc/IM151116002/0A-ESP8266_Specifications_v4.1.pdf ESP8266 Chip] On Board haben und somit die ideale Grundlage für [http://www.esp8266.nu/index.php/Main_Page ESPEasy] und für [https://forum.fhem.de/index.php/board,46.0.html FHEM] darstellen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nützliche Links zum Hersteller:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://www.itead.cc/blog/user-guide-for-sonoff-slampher User Manual von Itead]&lt;br /&gt;
&lt;br /&gt;
[https://www.itead.cc/wiki/images/6/6b/Sonoff_schmatic.pdf Sonoff Schaltplan]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Hardware=&lt;br /&gt;
&#039;&#039;&#039;Bitte unbedingt die elektrotechnischen Sicherheitsrichtlinien beachten und einhalten!&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_sw_15.jpg|thumb|left|alt=Warnung Netzspannung]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Achtung: An dem Modul liegt Netzspannung an die lebensgefährlich ist. Es dürfen nur entsprechend ausgebildete Personen dieses Modul in Betrieb nehmen. Zum Umbau und zur Softwareaktualisierung darf keine Netzspannung angeschlossen sein&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Wie gefährlich das hantieren mit Netzspannung sein kann, wird hier am Beispiel eines [http://mysku.ru/blog/china-stores/45762.html russischen Anwenders] gezeigt, der hat beim Flashen die Netzspannung am Modul gelassen und somit über die Verbindung mit dem Netzteil des Laptop lebensgefährliche Spannung auf die FTDI Schnittstelle gebracht. Das Modul ist dabei abgeraucht!&lt;br /&gt;
&lt;br /&gt;
==Modelle==&lt;br /&gt;
&lt;br /&gt;
===Produktübersichtsliste sonoff===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:right&amp;quot;&lt;br /&gt;
! Produkt Name !! Beschreibung !! Spannungsversorgung !!  Imax !! Pmax !! Frequenz !! Schaltplan !! Link&lt;br /&gt;
|-&lt;br /&gt;
| Sonoff || Wireless control switch || 90~250V AC || 10A || 2200W || 2.4Ghz || [http://wiki.iteadstudio.com/Sonoff Plan] || [https://www.itead.cc/smart-home/sonoff-wifi-wireless-switch.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| Sonoff RF || 433 RF remote || 90~250V AC || 10A || 2200W || 2.4Ghz || [http://wiki.iteadstudio.com/Sonoff_RF Plan] || [https://www.itead.cc/smart-home/im151116003.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| Sonoff SV || Low voltage Input || 5~24V DC || 10A || 240W DC || 2.4Ghz || [http://wiki.iteadstudio.com/Sonoff_SV Plan] || [https://www.itead.cc/smart-home/sonoff-sv.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| Sonoff TH10/TH16 || Monitor and set Temp.&amp;amp;Hum. ||  90~250V AC || 10A/16A || 2200W(10A)/3500W(16A)	 || 2.4Ghz || [http://wiki.iteadstudio.com/Sonoff_TH_10/16 Plan] || [https://www.itead.cc/smart-home/sonoff-th.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Sonoff Dual || Remote control 2 devices ||  90~250V AC || 16A || 3500W || 2.4Ghz || [https://www.itead.cc/wiki/Sonoff_Dual Plan] || [https://www.itead.cc/sonoff-dual.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Sonoff Pow || Report power &amp;amp;power usage ||  90~250V AC || 16A || 3500W || 2.4Ghz || [https://www.itead.cc/wiki/Sonoff_Pow Plan] || [https://www.itead.cc/sonoff-pow.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Sonoff LED || WiFi Control Dimming LED ||  180~265V AC || 0.3-0.6A || 42W || 2.4Ghz ||  kein || [https://www.itead.cc/sonoff-led.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Sonoff Touch || WiFi wall touch switch ||  90~250V AC || 2A || 400W || 2.4Ghz || kein || [https://www.itead.cc/sonoff-touch.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Slampher || Wireless control light holder ||  90~250V AC || 2A || 200W || 2.4Ghz || [http://wiki.iteadstudio.com/Slampher Plan] || [https://www.itead.cc/smart-home/slampher-wifi-wireless-light-holder.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  S20 Smart Socket || Smart socket || 	90~250V AC || 10A || 2000W || 2.4Ghz || kein || [https://www.itead.cc/smart-home/smart-socket-eu.html EU-Stecker] &lt;br /&gt;
|-&lt;br /&gt;
|  iFan || Smart fan ||  185~264V AC ||﹤1A || 60W || 2.4Ghz || kein || [https://www.itead.cc/smart-home/smart-socket-eu.html EU-Stecker] &lt;br /&gt;
|-&lt;br /&gt;
| Motor/Pump Control Switch || clockwise/anticlockwise running ||  5V/7~32V DC || 10A || 50~320W || 2.4Ghz || kein || [https://www.itead.cc/smart-home/motor-reversing-wifi-wireless-switch.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| 1 Chnl Inching/self-locking Switch || Access control ||  	5V/12V DC || 10A || 50/120W || 2.4Ghz || kein || [https://www.itead.cc/smart-home/inching-self-locking-wifi-wireless-switch.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  4 Chnl Inching/self-locking/inter-locking Switch || Access control, rolling door control ||  5V/5~32V DC/90~250V AC || 10A || 50~320W/2500W || 2.4Ghz || kein || [https://www.itead.cc/ifan.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Eine Übersichtliste der verschiedenen Produkte mit technischen Kurzangaben.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Model: IM151116002: Erstes Modell===&lt;br /&gt;
[https://www.itead.cc/sonoff-wifi-wireless-switch.html Sonoff WiFi Wireless Smart Switch for MQTT COAP Smart Home]&lt;br /&gt;
[[Datei:sonoff_sw_0.jpg|thumb|left|alt=sonoff Switch]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Das sonoff Modul ist in einem zweckmäßigen und gefälligem Gehäuse verbaut!&lt;br /&gt;
&lt;br /&gt;
====Platine====&lt;br /&gt;
[[Datei:sonoff_sw_1.jpg|thumb|left|alt=sonoff Switch von vorne]]&lt;br /&gt;
&lt;br /&gt;
Die Platine ist sehr übersichtlich aufgebaut und der Hersteller hat auch alle Vorbereitungen zum Flashen einer alternativen Software vorgesehen (über serielle Schnittstelle via FTDI-Modul). Mit einer alternativen Software wie ESPEasy ist eine direkte Ankopplung des &#039;&#039;&#039;sonoff&#039;&#039;&#039; an FHEM somit ein leicht durchführbarer Vorgang.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_3.jpg|thumb|left|alt=sonoff Switch von hinten]]&lt;br /&gt;
Die stromführenden Leitungen wurden mit Lötzinn vom Hersteller verstärkt um die angegebenen Stromstärken mit geringer Hitzeentwicklung zu transportieren.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung: Bitte vor den Arbeiten kontrollieren, das an der Platine keine Netzspannung angeschlossen ist, LEBENSGEFAHR!&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Model: IM160712005: TH 10A/16A ===&lt;br /&gt;
[https://www.itead.cc/sonoff-th.html Sonoff TH 10A/16A WiFi Smart Switch]&lt;br /&gt;
&lt;br /&gt;
====TH10 / TH16 weitere GPIO zugänglich machen====&lt;br /&gt;
[[Datei:Sonoff_TH_10A-16A_kleiner.jpg|thumb|left|alt=TH10 / TH16 weitere GPIO zugänglich machen]]&lt;br /&gt;
Der Hersteller hat zwar schon Platine für eine weitere Stiftleiste vorbereitet, jedoch muss diese noch bestückt werden. Die nicht beschalteten Stifte können dann genutzt werden um die &amp;quot;verdeckten&amp;quot; GPIO zugänglich zu machen. Die Verdrahtung kann dem Bild entnommen werden.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Achtung: Bitte vor den Arbeiten kontrollieren, das an der Platine keine Netzspannung angeschlossen ist, LEBENSGEFAHR!&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Model: IM160811001: Sonoff Dual ===&lt;br /&gt;
[https://www.itead.cc/sonoff-dual.html Sonoff Dual WiFi Wireless Smart Swtich]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Model: IM160810001: Sonoff Pow ===&lt;br /&gt;
[https://www.itead.cc/sonoff-pow.html Sonoff POW WiFi Switch with Power Consumption Measurement]&lt;br /&gt;
[[Datei:sonoff_sw_30.jpg|thumb|left|alt=SONOFF POW]]Ein sehr interessantes und kostengünstiges Modul zur Messung der aktuellen Leistung. Das Modul kann via MQTT in FHEM angebunden werden.&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel zur Einbindung ist [http://www.fhemwiki.de/wiki/Sonoff#Sonoff_POW_einrichten hier unten] im Wiki beschrieben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===Model: weitere Modelle===&lt;br /&gt;
[https://www.itead.cc/search/result/?cat=&amp;amp;q=sonoff Sonoff Weitere Modelle finden sich auf der Homepage des Hersstellers]&lt;br /&gt;
&lt;br /&gt;
==Vorbereitungen zum Flashen==&lt;br /&gt;
[[Datei:sonoff_sw_2.jpg|thumb|left|alt=serielle Schnittstelle]]&lt;br /&gt;
&lt;br /&gt;
Hier auf der Platine sind die benötigten Signale für ein FTDI Modul schon vorhanden. Der quadratische Pin gleich über dem Taster ist die Spannungsversorgung zum Flashen vom FDTI von 3.3V Es muss daher unbedingt ein FTDI Modul genommen werden, dass nicht nur einen Jumper für 3.3V besitzt sondern auch die Spannung auf 3.3V herab setzt. Ist dies nicht der Fall, läuft man Gefahr das Modul unbrauchbar zu machen. Es ist daher zu empfehlen einen Spannungsteiler mit 2 Widerständen oder einen Pegelwandler zwischenschalten.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Signale der Schnittstelle==&lt;br /&gt;
von oben nach unten auf der Steckerleiste des sonoff U4 (Model: IM151116002).&lt;br /&gt;
&lt;br /&gt;
 Pin5 = vorbereitet für GPIO&lt;br /&gt;
 Pin4 = Masse&lt;br /&gt;
 Pin3 = TxD&lt;br /&gt;
 Pin2 = RxD&lt;br /&gt;
 Pin1 = 3.3V&lt;br /&gt;
&lt;br /&gt;
Siehe dazu auch den [https://forum.fhem.de/index.php/topic,55036.0.html Link aus dem Forum]:&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Platine mit Stiftleiste bestücken==&lt;br /&gt;
[[Datei:sonoff_sw_4.jpg|thumb|left|alt=Platine mit Stiftleiste bestücken]]&lt;br /&gt;
Der Hersteller hat zwar schon die Platine vorbereitet, jedoch muss sie noch mit einer Stiftleiste bestückt werden um das FTDI Modul bequem verbinden zu können. Nachdem einmal ESPEasy geflasht worden ist, kann es in Zukunft via WEB (OTA) geflasht werden und die Stiftleiste ist dann nicht mehr erforderlich. Aufgrund der geringen Kosten fällt dies jedoch nicht ins Gewicht.&amp;lt;br&amp;gt;&lt;br /&gt;
Für die Module TH10/TH16 sind die Lötpunkte für die Stiftleiste schon beschriftet. Die Stiftleiste selber muss allerdings auch nachgerüstet werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Achtung&#039;&#039;&#039;: Bitte vor den Arbeiten kontrollieren, das an der Platine keine Netzspannung angeschlossen ist, LEBENSGEFAHR!&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Software=&lt;br /&gt;
==MQTT und TASMOTA==&lt;br /&gt;
Der Autor Arends hat die Version Sonoff-MQTT-OTA-Arduino nun eingestellt und die Version 3.2.13 dürfte wohl die letzte dieser Generation gewesen sein. Mit der Einstellung dieser Version wurde zwar der Nachfolger &#039;&#039;&#039;TASMOTA&#039;&#039;&#039; erschaffen, aber leider nun auf das &#039;&#039;&#039;Messageformat LEGACY&#039;&#039;&#039; gänzlich verzichtet was bei der Auswertung der Messdaten in Fhem doch einige Probleme mit sich bringt, da der verwendete JSON String nun zusätzlich gefiltert werden muss.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Es gibt aber bereits zwei Lösungswege um dieses Problem zu beheben!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 1. [https://forum.fhem.de/index.php/topic,66714.msg580251.html#msg580251 in diesem Thread] gibt es eine gepatchte Version von Tasmota mit LEGACY Ausgabe. Damit verhält sich Tasmota so wie früher die MQTT Version mit LEGACY und es sind keine weiteren Einstellungen notwendig. LEGACY wurde einfach wieder hinzugefügt.&lt;br /&gt;
&lt;br /&gt;
 2. [https://forum.fhem.de/index.php/topic,66761.0.html in diesem Thread] wurde ein &#039;&#039;&#039;JSON to Reading Modul&#039;&#039;&#039; vorgestellt, dass mit Hilfe eines &amp;quot;notify&amp;quot; den JSON String analysiert und alle darin enthaltenen Daten in Readings kopiert. Die Readings werden dabei automatisch angelegt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Link: [https://github.com/arendst/Sonoff-Tasmota Tasmota]&lt;br /&gt;
&lt;br /&gt;
Link: [https://github.com/arendst/Sonoff-MQTT-OTA-Arduino Sonoff-MQTT-OTA-Arduino]&lt;br /&gt;
&lt;br /&gt;
Alle hier im Wiki verwendeten Beispiele und deren Beschreibung gilt für die MQTT Version (alte Version). Da in Tasmota fast alles im WEBIF konfiguriert werden kann, entfallen daher sinngemäß einige hier im Wiki erklärten Definitionen, speziell in der &amp;quot;user_config.h&amp;quot;.&lt;br /&gt;
Trotz diesem Komfort müssen die Einstellungen aber nun im WEBIF vorgenommen werden, die wohl wichtigste ist die Auswahl der verwendeten Hardware (Sonoff POW etc.).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ESPEasy flashen==&lt;br /&gt;
[[Datei:sonoff_sw_6.jpg|thumb|left|alt=sonoff mit angestecktem FDTI Adapter]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier geht es ausschließlich um die Software ESPEasy an den sonoff Modulen! }}&lt;br /&gt;
Die Spannungsversorgung des Sonoff Moduls wird hier vom FTDI Konverter mit 3.3V über die Verbindungskabel zum Pfostenstecker durchgeführt. &lt;br /&gt;
&lt;br /&gt;
Der FTDI Adapter wird dann mit der USB Schnittstelle mit dem Computer verbunden.&lt;br /&gt;
&lt;br /&gt;
Zum compilieren wird in der Arduino Umgebung auch die ArduinoJson Library 5.6.4+ benötigt. Eine genaue Anleitung kann [https://forum.fhem.de/index.php/topic,55728.msg473220.html#msg473220 hier] nachgelesen werden. Es sollte stest die aktuelle Version der Arduino Umgebung verwendet werden, bzw. die Librarys auf Letztstand gehalten werden. &lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===mit Arduino compilieren===&lt;br /&gt;
[[Datei:sonoff_sw_10.jpg|thumb|left|alt=Einstellung Arduino IDE]]&lt;br /&gt;
Wer selber mit der Arduino IDE compilieren will bitte folgende Einstellungen beachten. Die anschließenden Arbeiten sind dann gleich wie bei Abschnitt &#039;&#039;&#039;fertige Binary&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Unbedingt die neueste [https://github.com/bblanchon/ArduinoJson Arduino Json Library] benutzen (siehe oben)! Es gibt zwar keine Compilerfehler, aber es kommt anschließend zu Fehlfunktionen in der ESP Bridge!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 Generic ESP8266 Module&lt;br /&gt;
 Flash Mode: QIO&lt;br /&gt;
 Flash Frequency: 40 MHz&lt;br /&gt;
 CPU Frequency: 80 MHz&lt;br /&gt;
 Flash Size: 1M (64K SPIFFS)&lt;br /&gt;
 Debug Port: disabled&lt;br /&gt;
 Debug Level: none&lt;br /&gt;
 Reset Mode: ck&lt;br /&gt;
 Upload Speed: 115200&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===fertige Binary flashen===&lt;br /&gt;
[[Datei:sonoff_sw_7.jpg|thumb|left|alt=NodeMCU Firmware Flasher]]&lt;br /&gt;
Es empfiehlt sich eine fertige Binary von ESPEasy aufzuspielen. In diesem Wiki wurde R140 verwendet.&lt;br /&gt;
&lt;br /&gt;
Siehe dazu auch den [http://www.esp8266.nu/index.php/Main_Page Link von ESPEasy] und das [https://learn.adafruit.com/building-and-running-micropython-on-the-esp8266/flash-firmware Handbuch] für den Flasher.&lt;br /&gt;
&lt;br /&gt;
In manchen Versionen von ESPEasy (zB.R120) ist auch ein Flasher beigelegt, welcher zwar keine grafische Oberfläche hat aber hervorragend funktioniert. Wenn andere versagen, geht es mit diesem Flasher immer noch, einfach probieren!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 Netzspannung darf &#039;NICHT&#039; angeschlossen sein!!!&lt;br /&gt;
 Taster am Sonoff gedrückt halten&lt;br /&gt;
 FTDI Adapter verbinden&lt;br /&gt;
 Taster am Sonoff los lassen&lt;br /&gt;
 Sketch übertragen&lt;br /&gt;
 Sonoff vom FTDI trennen&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Wenn einmal die Firmware auf das sonoff Modul geflasht worden ist, kann in Zukunft ESPEasy direkt unter Tools via HTTP dies durchführen. Es muss dazu kein FTDI Konverter mehr verwendet werden.&lt;br /&gt;
&lt;br /&gt;
==ESPEasy==&lt;br /&gt;
[[Datei:sonoff_sw_11.jpg|thumb|left|alt=ESPEasy Devices]]&lt;br /&gt;
Wenn das Modul fertig geflasht ist und die Verbindung zum Modul hergestellt ist, können die Einstellungen in ESPEasy durchgeführt werden.&lt;br /&gt;
Dazu am Webinterface anmelden und zunächst die zwei Devices definieren.&lt;br /&gt;
&lt;br /&gt;
Der Hersteller hat für das &#039;&#039;&#039;Relaise GPIO 12&#039;&#039;&#039; und für die &#039;&#039;&#039;grüne Led GPIO 13&#039;&#039;&#039; vorgesehen. Der &#039;&#039;&#039;Taster ist an GPIO 0&#039;&#039;&#039; angeschlossen.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Device Schalter===&lt;br /&gt;
[[Datei:sonoff_sw_12.jpg|thumb|left|alt=Device Relais]]&lt;br /&gt;
Bei den Devices sollten die hier dargestellte Einstellungen beachtet werden. Der Switch (PUMP) sollte auf Input gestellt werden, sodass die anschließenden und benötigten Rules aktiviert werden können.&lt;br /&gt;
&lt;br /&gt;
Da beide Devicenamen gleich benannt wurden (PUMP) wird in FHEM nur ein Device angelegt! Die dazugehörenden Valuenames sind unterschiedlich (Relay, Key).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Device Taster===&lt;br /&gt;
[[Datei:sonoff_sw_13.jpg|thumb|left|alt=Device Key]]&lt;br /&gt;
Der Taste muss natürlich nur konfiguriert werden, wenn auch händisch am Modul geschaltet werden soll. Wird dies nicht benötigt, können auch die Rules geändert bzw. angepasst werden. Doch alleine zu Testzwecken ist es eine nützliche Sache.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Rules===&lt;br /&gt;
[[Datei:sonoff_sw_14.jpg|thumb|left|alt=Rules]]&lt;br /&gt;
Da das sonoff Modul auch einen eingebauten Taster hat und somit auch lokal bedient werden kann, sollte man zunächst unter &#039;&#039;&#039;Tools / Advanced das Häckchen Rules&#039;&#039;&#039; aktivieren, erst dann wird der Tab sichtbar und es können Rules erstellt werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 on PUMP#Key do&lt;br /&gt;
  if [PUMP#Relay]=1&lt;br /&gt;
    gpio,12,0&lt;br /&gt;
  else&lt;br /&gt;
    gpio,12,1&lt;br /&gt;
  endif&lt;br /&gt;
 endon&lt;br /&gt;
 on PUMP#Relay do&lt;br /&gt;
  if [PUMP#Relay]=1 &lt;br /&gt;
    gpio,13,0&lt;br /&gt;
  else&lt;br /&gt;
    gpio,13,1&lt;br /&gt;
  endif&lt;br /&gt;
 endon&lt;br /&gt;
Diese Rules ermöglichen, das bei lokaler Bedienung durch den Taster auch die &#039;&#039;&#039;Led&#039;&#039;&#039; richtig geschaltet wird.&lt;br /&gt;
Mit &#039;on PUMP#Key do&#039; wird geprüft ob die Taste gedrückt ist und schaltet dann entsprechend die Led. Mit den Rules können auch Timer oder sonstige Spielereien realisiert werden. Siehe dazu das [http://www.esp8266.nu/index.php/Tutorial_Rules Tutorial] von ESPeasy.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ESPEasy in FHEM einrichten==&lt;br /&gt;
[[Datei:sonoff_sw_9.jpg|thumb|left|alt=FHEM Konfiguration]]&lt;br /&gt;
Dies ist eine einfache Darstellung wie FHEM automatisch den Device erstellt.&lt;br /&gt;
&lt;br /&gt;
Damit FHEM mit ESPEasy und dem sonoff Modul kommunizieren kann, muss in der fhem.cfg vorerst nur die espBridge mit dem hier dargestellten Eintrag aktiviert werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 define espBridge ESPEasy bridge 8383&lt;br /&gt;
Dies ist eigentlich die einzige Zeile die in fhem.cfg angelegt werden muss. Die restliche Konfiguration wird von FHEM automatisch generiert. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 ##########################################&lt;br /&gt;
 ###             ESPEASY               ####&lt;br /&gt;
 ##########################################&lt;br /&gt;
 &lt;br /&gt;
 define ESPEasy_sonoff_1_PUMP ESPEasy 10.0.0.37 80 espBridge sonoff_1_PUMP&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP IODev espBridge&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP devStateIcon on:rc_GREEN:off off:rc_RED:on absent:rc_BLUE:off gpio:rc_YELLOW:off&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP eventMap /gpio 12 on:on/gpio 12 off:off/gpio 12 gpio:off/gpio 12 output:off/&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP group ESPEasy Device&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP icon hue_filled_outlet&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP room ESPEasy&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP setState 0&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP stateFormat {ReadingsVal($name,&amp;quot;presence&amp;quot;,&amp;quot;&amp;quot;) eq &amp;quot;absent&amp;quot; ? &amp;quot;absent&amp;quot; : ReadingsVal($name,&amp;quot;Relay&amp;quot;,&amp;quot;&amp;quot;)}&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP webCmd :&lt;br /&gt;
&lt;br /&gt;
hier ein Beispiel wie es auch manuell leicht modifiziert werden kann.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_8.jpg|thumb|left|alt=sonoff Readings]]&lt;br /&gt;
&lt;br /&gt;
Die Readings werden durch die Bridge (Modul ESPEasy) automatisch angelegt.&lt;br /&gt;
&lt;br /&gt;
Es besteht hier noch genug Spielraum um zB. auch noch Temperatursensoren an das Modul anzuschließen und ebenfalls in FHEM darzustellen.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==MQTT Server einrichten==&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier geht es ausschließlich um den Sketch von Arends und MQTT an den sonoff Modulen! }}&lt;br /&gt;
Es bleibt jedem Anwender die freie Wahl ob die Kommunikation über die ESPEasy-Bridge oder MQTT erfolgen soll. MQTT ist bei der Einrichtung etwas komplexer, da hier auch auf dem Server der Broker installiert werden muss.&lt;br /&gt;
&lt;br /&gt;
Im wesentlichen beschränkt sich die Installation eines MQTT Servers aber auf wenige Arbeitsschritte und ist wie folgt beschrieben durchzuführen. Wer schon einen &#039;&#039;&#039;mosquitto&#039;&#039;&#039; auf dem Server installiert hat, kann diesen Schritt überspringen.&lt;br /&gt;
&lt;br /&gt;
Dieses Kapitel ist insofern interessant, da mit dem Sketch von Theo Arends auch die Einbindung der neuen sonoff Pow Module bereits möglich ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # aus dem mosquitto Repo installieren:&lt;br /&gt;
 wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key&lt;br /&gt;
 sudo apt-key add mosquitto-repo.gpg.key&lt;br /&gt;
 cd /etc/apt/sources.list.d/&lt;br /&gt;
 sudo wget http://repo.mosquitto.org/debian/mosquitto-wheezy.list&lt;br /&gt;
 # oder für jessie&lt;br /&gt;
 sudo wget http://repo.mosquitto.org/debian/mosquitto-jessie.list&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 # mosquitto installieren, sowie client Befehl mosquito_sub (gehört nicht zum Server, wird aber weiter unten benötigt)&lt;br /&gt;
 sudo apt-get install mosquitto mosquitto-clients&lt;br /&gt;
 &lt;br /&gt;
 # MQTT Server Test&lt;br /&gt;
 sudo service mosquitto status&lt;br /&gt;
&lt;br /&gt;
 # Start / Stop des Servers&lt;br /&gt;
 sudo service mosquitto stop&lt;br /&gt;
 sudo service mosquitto start&lt;br /&gt;
 &lt;br /&gt;
 # Perl Version ausgeben&lt;br /&gt;
 perl -v&lt;br /&gt;
 # Perl MQTT Module nachinstallieren (läuft ein paar Minuten)&lt;br /&gt;
 sudo cpan install Net::MQTT:Simple&lt;br /&gt;
 sudo cpan install Net::MQTT:Constants&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Software Arends Sketch===&lt;br /&gt;
[[Datei:sonoff_sw_22.jpg|thumb|left|alt=Arends Menü]]&lt;br /&gt;
&lt;br /&gt;
Ebenso bietet sich die Möglichkeit eine andere alternative Software auf den unterschiedlichen Sonoff Modellen aufzuspielen.&lt;br /&gt;
Speziell für diese Module zugeschnittene Software stammt vom Autor Theo Arends. Alle hier gezeigten Bildschirmfotos und Beispiele beziehen sich auf Basis der Version 2.0.11 (Stand 11.11.2016).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wichtig:&#039;&#039;&#039; erst &#039;&#039;&#039;ab Version 2.0.9&#039;&#039;&#039; sind die Berechnungsfehler und die Referenzfrequenzen für die Umrechnung der Leistungsdaten gefixt worden! Es wird daher angeraten immer die aktuellste Version zu verwenden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Links zu Theo Arend Github&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/arendst/Sonoff-MQTT-OTA-Arduino Download MQTT Sketch]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/arendst/Sonoff-MQTT-OTA-Arduino Arend GitHub]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/arendst/Sonoff-MQTT-OTA-Arduino/wiki Wiki]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; sollten Probleme mit dem ersten Login im Webinterface auftreten, hat der Autor vorgesorgt und mit speziellem wiederholten Tastendruck können verschiedene Modi aufgerufen werden: zB: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3 x Taste kurz drücken&#039;&#039;&#039; und eine Smartconfig wird gestartet und die &#039;&#039;&#039;SSID&#039;&#039;&#039; und das &#039;&#039;&#039;Passwort&#039;&#039;&#039; kann über diese [https://play.google.com/store/apps/details?id=com.cmmakerclub.iot.esptouch Android App] eingegeben werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4 x Taste kurz drücken&#039;&#039;&#039; und man bringt den Device in den &#039;&#039;&#039;Access Point Mode&#039;&#039;&#039; mit der IP-Adresse &#039;&#039;&#039;192.168.4.1&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bis zu 7 verschiedene Modi sind möglich, mehr dazu in Arends Wiki.&lt;br /&gt;
&lt;br /&gt;
[https://github.com/arendst/Sonoff-MQTT-OTA-Arduino/wiki/Button-usage Link zum Wiki Arends, Button]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_bv_01.jpg|thumb|left|alt=Arduino Boardverwalter]]&lt;br /&gt;
In der Arduino IDE unter Datei / Voreinstellungen im Feld &amp;quot;Zusätzliche Boardverwalter-URLs:&amp;quot; den Link: http://arduino.esp8266.com/stable/package_esp8266com_index.json einfügen. &lt;br /&gt;
&lt;br /&gt;
Dann unter &#039;&#039;&#039;Werkzeuge / Board / Boardverwalter&#039;&#039;&#039; ganz am Ende der Liste die Librarys für &amp;quot;esp8266 by ESP8266 Community&amp;quot; die letzte Version 2.3.0 installieren. [https://forum.fhem.de/index.php/topic,46205.msg534707.html#msg534707 Link zum Board].&lt;br /&gt;
&lt;br /&gt;
Das gesamte sonoff Verzeichnis aus [https://github.com/arendst/Sonoff-MQTT-OTA-Arduino/archive/master.zip Arendts Sketch] entpacken (ist wie hier verlinkt ein Zipfile) und dann aus diesem Verzeichnis die sonoff.ino öffnen. Es können dann alle zu dem Sketch zugehörigen Dateien angesehen/editiert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Anschließend muss noch die Datei &#039;&#039;&#039;user_config.h&#039;&#039;&#039; (im Unterverzeichnis &amp;quot;sonoff&amp;quot;) editiert werden. Die Abschnitte          &lt;br /&gt;
&lt;br /&gt;
 // Wifi&lt;br /&gt;
 // Syslog&lt;br /&gt;
 // Ota&lt;br /&gt;
 // MQTT&lt;br /&gt;
&lt;br /&gt;
müssen mit der eigenen &amp;quot;&#039;&#039;&#039;Ip-Adresse-Server&#039;&#039;&#039;&amp;quot;, &amp;quot;&#039;&#039;&#039;SSID&#039;&#039;&#039;&amp;quot; und &amp;quot;&#039;&#039;&#039;password&#039;&#039;&#039;&amp;quot; angepasst werden, das erleichtert den ersten Connect mit dem Modul. Seit der Version 2.1.2 können die WIFI Einstellungen 2-fach angegeben werden, somit wechselt das Device automatisch auf den 2. Wifi Hotspot wenn der erste nicht erreicht wird.&lt;br /&gt;
&lt;br /&gt;
 #define STA_SSID               &amp;quot;SSID&amp;quot;      // Wifi SSID&lt;br /&gt;
 #define STA_PASS               &amp;quot;password&amp;quot;  // Wifi password&lt;br /&gt;
 #define WIFI_HOSTNAME          &amp;quot;%s-%04d&amp;quot;         // Expands to &amp;lt;MQTT_TOPIC&amp;gt;-&amp;lt;last 4 decimal chars of MAC address&amp;gt;&lt;br /&gt;
 #define WIFI_CONFIG_TOOL       WIFI_WPSCONFIG    // Default tool if wifi fails to connect (WIFI_SMARTCONFIG, WIFI_MANAGER or WIFI_WPSCONFIG)&lt;br /&gt;
&lt;br /&gt;
 // Syslog&lt;br /&gt;
 #define SYS_LOG_HOST           &amp;quot;Ip-Adresse-Server&amp;quot;&lt;br /&gt;
 #define SYS_LOG_PORT           514&lt;br /&gt;
 #define SYS_LOG_LEVEL          LOG_LEVEL_NONE&lt;br /&gt;
 #define SERIAL_LOG_LEVEL       LOG_LEVEL_INFO&lt;br /&gt;
 #define WEB_LOG_LEVEL          LOG_LEVEL_INFO&lt;br /&gt;
&lt;br /&gt;
 // Ota&lt;br /&gt;
 #if (ARDUINO &amp;gt;= 168)&lt;br /&gt;
  #define OTA_URL              &amp;quot;http://Ip-Adresse-Server:80/api/arduino/&amp;quot; PROJECT &amp;quot;.ino.bin&amp;quot;&lt;br /&gt;
 #else&lt;br /&gt;
  #define OTA_URL              &amp;quot;http://Ip-Adresse-Server:80/api/arduino/&amp;quot; PROJECT &amp;quot;.cpp.bin&amp;quot;&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
 // MQTT&lt;br /&gt;
 #define MQTT_HOST              &amp;quot;Ip-Adresse-Server&amp;quot;&lt;br /&gt;
 #define MQTT_PORT              1883&lt;br /&gt;
&lt;br /&gt;
 #define MESSAGE_FORMAT         JSON         // [MessageFormat] MQTT Message Format (LEGACY or JSON)&lt;br /&gt;
 #define MQTT_STATUS_OFF        &amp;quot;OFF&amp;quot;        // Command or Status result when turned off (needs to be a string like &amp;quot;0&amp;quot; or &amp;quot;Off&amp;quot;)&lt;br /&gt;
 #define MQTT_STATUS_ON         &amp;quot;ON&amp;quot;         // Command or Status result when turned on (needs to be a string like &amp;quot;1&amp;quot; or &amp;quot;On&amp;quot;)&lt;br /&gt;
 #define MQTT_CMND_TOGGLE       &amp;quot;TOGGLE&amp;quot;     // Command to send when toggling (needs to be a string like &amp;quot;2&amp;quot; or &amp;quot;Toggle&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
In neueren Versionen (ab 3.2.8) wurde auch das Ausgabeformat von LEGACY auf JSON geändert. Gegebenenfalls ist auch hier auf LEGACY zu ändern, da alle Beispiele nur mit &amp;quot;LEGACY&amp;quot; funktionieren.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wichtig:&#039;&#039;&#039; Bei Verwendung des &#039;&#039;&#039;sonoff_POW&#039;&#039;&#039; muss dies ebenfalls in der user_config.h eingestellt werden, also das &amp;quot;SONOFF&amp;quot; sperren und das &amp;quot;&#039;&#039;&#039;SONOFF_POW&#039;&#039;&#039;&amp;quot; aktivieren (// setzen/entfernen). Wir dies nicht durchgeführt, werden auch keine Leistungsdaten via MQTT übertragen!!!&lt;br /&gt;
Ebenso muss in (%userprofile%\Documents\Arduino\libraries\pubsubclient\src\PubSubClient.h) die Max Packet Size auf 400 erhöht werden!&lt;br /&gt;
&lt;br /&gt;
  #define MQTT_MAX_PACKET_SIZE 400&lt;br /&gt;
  #define MQTT_KEEPALIVE 120&lt;br /&gt;
Anpassung der max. Packet Size auf 400 und das Keepalive auf 120&lt;br /&gt;
&lt;br /&gt;
 // Enable only one out of three MODULE defines below&lt;br /&gt;
 //#define MODULE                 SONOFF            // Sonoff, Sonoff SV, Sonoff Dual, Sonoff TH 10A/16A, S20 Smart Socket, 4 Channel&lt;br /&gt;
 #define MODULE                 SONOFF_POW        // Sonoff Pow&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Anschluß wird der Sketch mit der Arduino IDE (getestet mit 1.6.12) compiliert und die Binary dann exportiert (Sketch / Kompilierte Binärdatei exportieren). Die erzeugte .bin Datei dann mit dem Tool &amp;quot;ESP8266Flasher.exe&amp;quot; flashen, so wie auch bei ESPEasy. Wer nicht compilieren will, kann auch im Unterverzeichnis ./api/arduino/ die fertige Binary ( sonoff.ino ) benutzen, aber dann ohne Voreinstellung der lokalen IPs.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===MQTT testen===&lt;br /&gt;
[[Datei:sonoff_sw_20.jpg|thumb|left|alt=Arends Menü]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nach erfolgtem Flash des Modules kann das Webinterface des Moduls zum ersten Mal aufgerufen werden (im Router nach der IP des Moduls suchen).&lt;br /&gt;
&lt;br /&gt;
Es bieten sich hier mehrere Möglichkeiten die die weitere Einrichtung des Moduls unterstützen. Einfach die Menüpunkte durchprobieren, sie erklären sich von selbst. Für erste Tests empfiehlt sich die lokale Konsole um die Ereignisse aus Sicht des Modules mit verfolgen zu können. Alles was hier gesendet wird, sollte ebenfalls am Server mitgeloggt werden können. Wenn bis hierher alles funktioniert, kann dann mir der Konfiguration in FHEM beginnen.&lt;br /&gt;
&lt;br /&gt;
Der Name des Moduls kann unter &amp;quot;Configuration&amp;quot; -&amp;gt; &amp;quot;Configure MQTT&amp;quot; -&amp;gt; &amp;quot;Topic (sonoff)&amp;quot; nachgeschaut und geändert werden. In FHEM wird beim definieren des Moduls dieser Name in den subscribeReadings bzw. publishSets eingegeben um die Verbindung zum Modul herzustellen.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Am Server jetzt eine Konsole öffnen und folgende Topic (alle) einstellen.&lt;br /&gt;
&lt;br /&gt;
 mosquitto_sub -d -v -t \# &lt;br /&gt;
Mit dieser Einstellung werden alle Topics geloggt! &lt;br /&gt;
&lt;br /&gt;
 pi@raspberry ~ $ mosquitto_sub -d -v -t \#&lt;br /&gt;
 Received CONNACK&lt;br /&gt;
 Received SUBACK&lt;br /&gt;
 Subscribed (mid: 1): 0&lt;br /&gt;
 Received PUBLISH (d0, q0, r1, m0, &#039;/sonoff/36/temperature&#039;, ... (5 bytes))&lt;br /&gt;
 /sonoff/36/temperature 14.06&lt;br /&gt;
 Received PUBLISH (d0, q0, r1, m0, &#039;/sonoff/35/Count&#039;, ... (3 bytes))&lt;br /&gt;
 /sonoff/35/Count 0.0&lt;br /&gt;
 Received PUBLISH (d0, q0, r1, m0, &#039;/sonoff/35/Total&#039;, ... (3 bytes))&lt;br /&gt;
 /sonoff/35/Total 0.0&lt;br /&gt;
 Received PUBLISH (d0, q0, r1, m0, &#039;/sonoff/35/Time&#039;, ... (1 bytes))&lt;br /&gt;
 /sonoff/35/Time 0&lt;br /&gt;
 Received PUBLISH (d0, q0, r1, m0, &#039;/sonoff/temperature&#039;, ... (5 bytes))&lt;br /&gt;
 /sonoff/temperature 14.00&lt;br /&gt;
 Received PUBLISH (d0, q0, r1, m0, &#039;/sonoff/Count&#039;, ... (3 bytes))&lt;br /&gt;
 /sonoff/Count 0.0&lt;br /&gt;
 Received PUBLISH (d0, q0, r1, m0, &#039;/sonoff/Total&#039;, ... (3 bytes))&lt;br /&gt;
 /sonoff/Total 0.0&lt;br /&gt;
 Received PUBLISH (d0, q0, r1, m0, &#039;/sonoff/Time&#039;, ... (1 bytes))&lt;br /&gt;
 /sonoff/Time 0&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;stat/sonoff/1/POWER&#039;, ... (2 bytes))&lt;br /&gt;
 stat/sonoff/1/POWER ON&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;stat/sonoff/1/POWER&#039;, ... (3 bytes))&lt;br /&gt;
 stat/sonoff/1/POWER OFF&lt;br /&gt;
&lt;br /&gt;
Interessant sind für uns nun diese Einträge &amp;quot;stat/sonoff/1/POWER ON&amp;quot; , dazu am Taster des sonoff manuell umschalten. Dies entspricht genau der Syntax wie sie im Anschluss in FHEM dann zu verwenden ist.&lt;br /&gt;
&lt;br /&gt;
Mit diesen Einstellungen können dann entweder nach Telemetriedaten oder nach Statusmeldungen gefiltert werden. Dies ist jedoch nur notwendig wenn bereits andere MQTT Devices am Broker hängen und es sonst zu unübersichtlich wird.&lt;br /&gt;
 mosquitto_sub -h localhost -t tele/sonoff/#    = Telemetriedaten&lt;br /&gt;
 mosquitto_sub -h localhost -t stat/sonoff/#    = Statusmeldungen&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_21.jpg|thumb|left|alt=Arends Log]]&lt;br /&gt;
Sehr nützlich das lokale Log zur Fehlersuche und Inbetriebnahme.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Als Besonderheit benutzt der Autor zum Senden und Empfangen unterschiedliche Syntax und unterscheidet dies durch vorangestellte Prefixe vor der eigentlichen Topic.&lt;br /&gt;
#define SUB_PREFIX       &amp;quot;cmnd&amp;quot;       Sonoff devices subscribe to:- cmnd/MQTT_TOPIC and cmnd/MQTT_GRPTOPIC&lt;br /&gt;
#define PUB_PREFIX       &amp;quot;stat&amp;quot;       Sonoff devices publish to:- stat/MQTT_TOPIC&lt;br /&gt;
#define PUB_PREFIX2      &amp;quot;tele&amp;quot;       Sonoff devices publish telemetry data to:- tele/MQTT_TOPIC/UPTIME, POWER/LIGHT and TIME&lt;br /&gt;
Bitte dies unbedingt in der FHEM Konfiguration dann beachten!&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==MQTT in FHEM einrichten==&lt;br /&gt;
[[Datei:sonoff_sw_24.jpg|thumb|left|alt=FHEM sonoff Schalter]]&lt;br /&gt;
Dieser einfache Schalter kommuniziert bidirektional mit dem sonoff Device.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_25.jpg|thumb|left|alt=FHEM sonoff Schalter]]&lt;br /&gt;
Die Readings in diesem verwendeten Beispiel zeigen sich wie in FHEM gewohnt.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Einrichtung in FHEM wird von den Modulen 00_MQTT.pm, 10_MQTT_BRIDGE und 10_MQTT_DEVICE.pm unterstützt.&lt;br /&gt;
&lt;br /&gt;
[https://forum.fhem.de/index.php?topic=27532.0 Link zum Forum: MQTT FHEM Einrichtung]&lt;br /&gt;
&lt;br /&gt;
 ### 1. Broker anlegen ###&lt;br /&gt;
 define myBroker MQTT 10.0.0.5:1883&lt;br /&gt;
&lt;br /&gt;
 ### 2. FHEM Device mit MQTT verbinden ###&lt;br /&gt;
 define Sonoff_Switch MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Switch IODev myBroker&lt;br /&gt;
 attr Sonoff_Switch eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_Switch icon hue_filled_br30&lt;br /&gt;
 attr Sonoff_Switch publishSet ON OFF cmnd/sonoff/1/POWER/set&lt;br /&gt;
 attr Sonoff_Switch room MQTT&lt;br /&gt;
 attr Sonoff_Switch stateFormat Licht&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_Licht stat/sonoff/POWER&lt;br /&gt;
 # oder mit tele, je nachdem was in der user_config.h eingestellt wurde!!!&lt;br /&gt;
 #attr Sonoff_Switch subscribeReading_Licht tele/sonoff/POWER &lt;br /&gt;
 attr Sonoff_Switch subscribeReading_state cmnd/sonoff/1/POWER/set&lt;br /&gt;
 attr Sonoff_Switch webCmd ON:OFF&lt;br /&gt;
Der hier dargestellte Beispielcode realisiert die Kommunikation zwischen FHEM und dem sonoff Modul via MQTT Broker. Zu beachten ist hier, dass &#039;&#039;&#039;subscribeReading_Licht&#039;&#039;&#039; und &#039;&#039;&#039;subscribeReading_state&#039;&#039;&#039; unterschiedliche Syntax des Topic Strings haben!&lt;br /&gt;
&lt;br /&gt;
==Sonoff POW einrichten==&lt;br /&gt;
[[Datei:sonoff_sw_31.jpg|thumb|left|alt=Sonoff POW]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier geht es ausschließlich um das Modul Sonoff POW!}}&lt;br /&gt;
Das Modul kommt in gewohnter Itead Qualität und eine derart kostengünstige Energiemessung wird bei Smart Home Anwendern gerne eingesetzt. Die Originalsoftware habe ich nicht einmal getestet, da damit eine Anbindung an FHEM leider nicht möglich ist.&lt;br /&gt;
&lt;br /&gt;
Ebenso möchte kaum jemand an eine nicht dokumentierte chinesische Cloud die Steuerbefehle seiner Schalter senden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_sw_33.jpg|thumb|left|alt=Sonoff POW]]&lt;br /&gt;
Bitte auf keinen Fall das Modul während der Arbeiten an die Netzspannung anschießen. Zum Flashen genügt (und nur diese) die Versorgungspannung des USB-TTL Konverters. Wie auf dem Foto gut erkennbar, wurde dieses Modul ohne einlöten einer Pfostensteckerleiste geflasht. Die Steckverbindung wird einfach in die Lötaugen gesteckt und mit einem Gummiring fixiert, da ja spätere Flashvorgänge im Webif des Models funktionieren und so die Arbeit eingespart werden kann. Es steht jedoch nichts im Wege die Pfostensteckerleiste einzulöten.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Die Anschlüsse am Modul sind wie folgt belegt.&lt;br /&gt;
 o GND&lt;br /&gt;
 o TxD&lt;br /&gt;
 o RxD&lt;br /&gt;
 o VDD&lt;br /&gt;
&lt;br /&gt;
Für den Flashvorgang gelten die selben Regeln wie schon beim sonoff Switch oben erwähnt (3,3V!).&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Sonoff POW Software===&lt;br /&gt;
[[Datei:sonoff_sw_35.jpg|thumb|left|alt=Sonoff POW FHEM]]&lt;br /&gt;
Als Software steht im Augenblick nur der Sketch von Arends zur Verfügung, liefert aber alles was das Herz begehrt und ist ist einfach zu handhaben. Hier eine eine einfache Darstellung mit der aktuellen Leistung und dem Tagesverbrauch. Zusätzlich besteht auch noch die Möglichkeit den angeschlossenen Verbraucher Ein- oder Auszuschalten. Getestet wurde hier mit der Version 2.06, 2.07 und 2.019a von Arends.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_pow_02.jpg|thumb|left|alt=Sonoff POW Webif]]&lt;br /&gt;
Seit Version 2.0.19a ist auch die Leistungsanzeige im WEBIF wie im Bild links integriert. Auch der Energieverbrauch des Vortages wird mit angezeigt. Alle hier angezeigten Daten werden auch zyklisch im MQTT String an FHEM übergeben.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich kann im Sketch auch das Feature &amp;quot;&#039;&#039;&#039;Power_Limit&#039;&#039;&#039;&amp;quot; aktiviert werden ( #define FEATURE_POWER_LIMIT in der sonoff.ino). Wenn dies gewünscht ist, dann vor dem compilieren die beiden // entfernen. Mit dem Power_Limit wird eine zusätzliche Nachricht erzeugt, wenn ein bestimmter einstellbarer Grenzwert über- oder unterschritten wird. &lt;br /&gt;
&lt;br /&gt;
Es lassen sich dadurch Meldungen wie &amp;quot;Waschmaschine fertig&amp;quot; oder ähnliches ohne weitere Schwellwert Überwachungen in FHEM ableiten. Die Meldungen kommen in MQTT mit &amp;quot;&#039;&#039;&#039;tele/sonoff/POWER_LOW ON&#039;&#039;&#039;&amp;quot; bzw. &amp;quot;&#039;&#039;&#039;tele/sonoff/POWER_LOW OFF&#039;&#039;&#039;&amp;quot;.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Bevor der Sketch compiliert wird, müssen neben den IP-Einstellungen noch in der user_config.h auch andere Einstellungen vorgenommen werden.&lt;br /&gt;
&lt;br /&gt;
 #define MODULE                 SONOFF_POW       // Hardware module type (SONOFF, SONOFF_POW or ELECTRO_DRAGON)&lt;br /&gt;
 #define PROJECT                &amp;quot;sonoffpow&amp;quot;     // PROJECT is used as the default topic delimiter and OTA file name                                            // As an IDE restriction it needs to be the same as the main .ino file&lt;br /&gt;
&lt;br /&gt;
Der Typ des Modules muss von &amp;quot;SONOFF&amp;quot; auf &amp;quot;&#039;&#039;&#039;SONOFF_Pow&#039;&#039;&#039;&amp;quot; geändert werden,. damit die Software weiß mit welchem Modul es zu tun hat und kann dann die entsprechenden Berechnungen durchführen. Die Leistungsdaten kommen ja in Form einer Frequenz aus dem Baustein und müssen im Sketch (xsns_hlw8102.ino) umgerechnet werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #elif MODULE == SONOFF_POW                  // programming header 1:3.3V 2:rx 3:tx 4:gnd&lt;br /&gt;
  #define APP_NAME             &amp;quot;Sonoff Pow module&amp;quot;&lt;br /&gt;
  #define USE_POWERMONITOR                  // Enable Power Monitoring&lt;br /&gt;
  #define USE_POWERCALIBRATION              // Enable setting Calibration parameters by user commands&lt;br /&gt;
&lt;br /&gt;
Bei Einsatz des POW Modules kann die externe Kalibrierung aktiviert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Definition aus der power.ino (2.0.9) für die korrekte Umrechnung der gelieferten Frequenzen für die Leistungsdaten.&lt;br /&gt;
 #define HLW_PREF            10000    // 1000.0W&lt;br /&gt;
 #define HLW_UREF             2200    // 220.0V&lt;br /&gt;
 #define HLW_IREF             4545    // 4.545A&lt;br /&gt;
&lt;br /&gt;
 #define HLW_PREF_PULSE       4975    // 4975us = 201Hz = 1000W&lt;br /&gt;
 #define HLW_UREF_PULSE       1666    // 1666us = 600Hz = 220V&lt;br /&gt;
 #define HLW_IREF_PULSE       1666    // 1666us = 600Hz = 4.545A&lt;br /&gt;
                                            &lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_sw_36.jpg|thumb|left|alt=Sonoff POW Attribute]]&lt;br /&gt;
Dieses Bild zeigt die Attribute die vom Modul via MQTT an FHEM geliefert werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
aktuell gelieferte Readings (Mqtt Strings) vom Sketch nach unten dargestellter Definition in FHEM.&lt;br /&gt;
 tele/sonoffpow/TODAY_ENERGY    &lt;br /&gt;
 tele/sonoffpow/PERIOD_ENERGY   &lt;br /&gt;
 tele/sonoffpow/POWER_FACTOR   &lt;br /&gt;
 tele/sonoffpow/CURRENT_POWER  &lt;br /&gt;
 tele/sonoffpow/VOLTAGE         &lt;br /&gt;
 tele/sonoffpow/CURRENT        &lt;br /&gt;
&lt;br /&gt;
Hier ein Mittschnitt des Datenverkehrs zum Broker zwecks Kontrolle der korrekten Funktion der Module und der Software.&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff/RSSI&#039;, ... (2 bytes))&lt;br /&gt;
 tele/sonoff/RSSI 82&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff/TEMPERATURE&#039;, ... (3 bytes))&lt;br /&gt;
 tele/sonoff/TEMPERATURE 1.9&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff/HUMIDITY&#039;, ... (4 bytes))&lt;br /&gt;
 tele/sonoff/HUMIDITY 97.9&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff/POWER&#039;, ... (3 bytes))&lt;br /&gt;
 tele/sonoff/POWER OFF&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff/TIME&#039;, ... (19 bytes))&lt;br /&gt;
 tele/sonoff/TIME 2016-11-12T10:36:13&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/UPTIME&#039;, ... (1 bytes))&lt;br /&gt;
 tele/sonoffpow/UPTIME 1&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/RSSI&#039;, ... (2 bytes))&lt;br /&gt;
 tele/sonoffpow/RSSI 34&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/TODAY_ENERGY&#039;, ... (5 bytes))&lt;br /&gt;
 tele/sonoffpow/TODAY_ENERGY 0.083&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/PERIOD_ENERGY&#039;, ... (1 bytes))&lt;br /&gt;
 tele/sonoffpow/PERIOD_ENERGY 8&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/CURRENT_POWER&#039;, ... (2 bytes))&lt;br /&gt;
 tele/sonoffpow/CURRENT_POWER 97&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/POWER_FACTOR&#039;, ... (4 bytes))&lt;br /&gt;
 tele/sonoffpow/POWER_FACTOR 1.00&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/VOLTAGE&#039;, ... (3 bytes))&lt;br /&gt;
 tele/sonoffpow/VOLTAGE 225&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/CURRENT&#039;, ... (5 bytes))&lt;br /&gt;
 tele/sonoffpow/CURRENT 0.426&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/POWER&#039;, ... (2 bytes))&lt;br /&gt;
 tele/sonoffpow/POWER ON&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/TIME&#039;, ... (19 bytes))&lt;br /&gt;
 tele/sonoffpow/TIME 2016-11-12T10:36:28&lt;br /&gt;
 Sending PINGREQ&lt;br /&gt;
 Received PINGRESP&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Einstellungen können mit folgender Syntax angefordert werden (zwei Terminalfenster öffnen, eines zum protokollieren und eines zum Seden der Befehle).&lt;br /&gt;
 mosquitto_sub -d -v -t \#  MQTT Datenverkehr protokolieren&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/1/status/set -m &amp;quot;8&amp;quot;      = SonoffPOW Status jetzt auslesen&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/1/TelePeriod/set -m &amp;quot;60&amp;quot; = Timer setzen, alle 60 Sekunden Daten senden &lt;br /&gt;
Die Kommandos können direkt am Broker (Terminalfenster Putty etc.) abgesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sonoff POW Kalibrieren ===&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier wird beschrieben, wie der &#039;&#039;Sonoff POW kalibriert&#039;&#039; werden kann. }}&lt;br /&gt;
Ab Version 2.0.11 kann nun auch der POW kalibriert werden.&lt;br /&gt;
Dazu kann man 2 Konsolenfenster öffnen, im ersten aktiviert man das Protokoll für den Datenverkehr&lt;br /&gt;
 mosquitto_sub -d -v -t \#  MQTT Datenverkehr protokollieren&lt;br /&gt;
&lt;br /&gt;
Dann kann mit folgenden Befehlen die HLW Referenz Pulsfrequenz gesetzt werden.&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/1/HLWUCAL/set -m &amp;quot;2100&amp;quot;     default = 1950&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/1/HLWICAL/set -m &amp;quot;2450&amp;quot;     default = 3500&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/1/HLWPCAL/set -m &amp;quot;13500&amp;quot;    default = 12345 &lt;br /&gt;
Entweder man hat eine definierte Last zur Verfügung oder besser man misst mit einem Leistungsmesser nach. Die Spannung kann man mit einem Multimeter nachmessen (sollte 230 V sein) und der Strom wird errechnet (bei 100 Watt I = P / U ) = 100/230 = 0,4347.&lt;br /&gt;
Die Referenzwerte solange geringfügig ändern bis die Ausgabe passt. Für die Ausgabe wird einfach eine Statusabfrage durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/1/status/set -m &amp;quot;8&amp;quot;&lt;br /&gt;
Befehl für die Statusabfrage&lt;br /&gt;
&lt;br /&gt;
 cmnd/sonoffpow/1/status/set 8&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;stat/sonoffpow/1/STATUS&#039;, ... (103 bytes))&lt;br /&gt;
 stat/sonoffpow/1/STATUS PWR: Voltage 225 V, Current 0.427 A, Current Power 98 W, Total Power Today 0.080 kWh, Power Factor 1.00&lt;br /&gt;
Ergebnis der Statusabfrage mit Spannung, Strom und Leistung.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sonoff POW FHEM Anbindung===&lt;br /&gt;
Ein Beispiel einer einfachen Anbindung via MQTT an FHEM. MQTT ist insofern notwendig, da in der Software ESPEasy und der Bridge noch keine Implementierung der Frequenzumrechnung enthalten ist.&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Pow MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Pow IODev myBroker&lt;br /&gt;
 attr Sonoff_Pow eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_Pow icon measure_power&lt;br /&gt;
 attr Sonoff_Pow publishSet ON OFF cmnd/sonoffpow/1/POWER/set&lt;br /&gt;
 attr Sonoff_Pow room MQTT&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_Power tele/sonoffpow/POWER&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_state cmnd/sonoffpow/1/POWER/set&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_TODAY_ENERGY tele/sonoffpow/TODAY_ENERGY&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_PERIOD_ENERGY tele/sonoffpow/PERIOD_ENERGY&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_CURRENT_POWER tele/sonoffpow/CURRENT_POWER&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_VOLTAGE tele/sonoffpow/VOLTAGE &lt;br /&gt;
 attr Sonoff_Pow subscribeReading_CURRENT tele/sonoffpow/CURRENT&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_AKTUELL stat/sonoffpow/1/STATUS&lt;br /&gt;
 attr Sonoff_Pow webCmd ON:OFF&lt;br /&gt;
 attr Sonoff_Pow stateFormat {sprintf(&amp;quot;akutelle Leistung: %.1f W Tagesverbrauch: %.2f Kw/h&amp;quot;, ReadingsVal($name,&amp;quot;CURRENT_POWER&amp;quot;,undef), ReadingsVal($name,&amp;quot;TODAY_ENERGY&amp;quot;,undef))}&lt;br /&gt;
Zusätzlich kann hier noch das Relais mit &amp;quot;on&amp;quot; und &amp;quot;off&amp;quot; ein- ausgeschaltet werden. Ab Version 2.0.15 wurden hier die ReadingsNamen auf TODAY_ENERGY und PERIOD_ENERGY (anstatt _POWER) geändert.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Sonoff POW Netz-Anschluß===&lt;br /&gt;
[[Datei:sonoff_sw_34.jpg|thumb|left|alt=Sonoff POW Netzanschluß]]&lt;br /&gt;
Erst wenn alle Arbeiten an der Hard- und Software abgeschlossen sind, kann man das Modul an die Netzspannung anschließen. Wer es sich einfach machen will, nimmt eine Industriell gefertigte 230 V Verlängerung  (zwischen 1,5 - 3 Meter) und schneidet sie in der Mitte durch. Nach dem abisolieren der flexiblen Drähte sollte diese &#039;&#039;&#039;verlötet oder mit Aderendhülsen&#039;&#039;&#039; versehen werden (müssen aber exakt passen, da hier kaum Platz in den Klemmen ist). &lt;br /&gt;
Mit einem kleinen Schraubendreher kann man die Feder der Klemmen niederdrücken und das verzinnte Drahtende tief ich die Öffnung stecken. Es dürfen keine Drahtlitzen aus den Öffnungen sichtbar sein, Kurzschlußgefahr! Ebenso sollte eine Zugprobe durchgeführt werden ob die Klemme auch richtig eingerastet ist.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ACHTUNG:&#039;&#039;&#039; diese Arbeiten müssen von einem ausgebildeten Fachpersonal (Elektriker) durchgeführt werden, Lebensgefahr!&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sonoff POW Design===&lt;br /&gt;
&lt;br /&gt;
====ReadingsGroup normal====&lt;br /&gt;
[[Datei:sonoff_sw_46.jpg|thumb|left|alt=Sonoff POW Design]]&lt;br /&gt;
Viele Benutzer wollen schönere und funktionelle Ausgaben am Bildschirm sehen. Die Möglichkeiten nach oben sind hier sehr vielfältig. Anhand von zwei einfachen aber mächtigen Funktionen hier ein kleines Beispiel wie hier im Bild dargestellt.&lt;br /&gt;
&lt;br /&gt;
Was das Design betrifft, sind hier mehrere Möglichkeiten gegeben und nach oben ist für findige Anwender alles offen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zunächst wird mit dem Hilfsmodul &amp;quot;&#039;&#039;&#039;average&#039;&#039;&#039;&amp;quot; eine Art Statistik (Durchschnittsberechnung, Min.,Max., etc.) hinzugefügt. Das beschränkt sich auf eine einzige Zeile. Es würde sich auch &#039;&#039;&#039;statistic&#039;&#039;&#039; dazu eignen.&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Pow_CURRENT_POWER average Sonoff_Pow:CURRENT_POWER.*&lt;br /&gt;
Die &amp;quot;average&amp;quot; Funktion wird in das Device &amp;quot;Sonof_Pow&amp;quot; auf das Reading &amp;quot;CURRENT_POWER&amp;quot; hinzugefügt.&lt;br /&gt;
&lt;br /&gt;
Der zweite Schritt wird eine &#039;&#039;&#039;readingsGroup&#039;&#039;&#039; mit den gewünschten und gefilterten Ausgabedaten. Durch die verschiedenen IF Abfragen der unterschiedlichen VALUE wird bei über- oder unterschreiten eines Wertes eine bestimmte Farbe angewandt. Weitere Beispiele dazu siehe im Wiki unter [http://www.fhemwiki.de/wiki/ReadingsGroup readingsGroup]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 define SonoffPows readingsGroup &amp;lt;%measure_power&amp;gt;,&amp;lt;aktuell&amp;gt;,&amp;lt;Tag&amp;gt;,&amp;lt;Strom&amp;gt;,&amp;lt;Durchschnitt&amp;gt;,&amp;lt;max.P&amp;gt;,&amp;lt;Schaltzyklen&amp;gt;,&amp;lt; hr &amp;gt; .*(Sonoff_Pow|Sonoff_Pow2):CURRENT_POWER,TODAY_ENERGY,CURRENT,CURRENT_POWER_avg_day,CURRENT_POWER_max_day,PERIOD_ENERGY&lt;br /&gt;
 attr SonoffPows mapping %ALIAS&lt;br /&gt;
 attr SonoffPows nameStyle style=&amp;quot;color:yellow&amp;quot;&lt;br /&gt;
 attr SonoffPows room MQTT&lt;br /&gt;
 attr SonoffPows valueFormat {&#039;CURRENT_POWER&#039; =&amp;gt;&amp;quot;%.0f W&amp;quot;, &#039;TODAY_ENERGY&#039; =&amp;gt;&amp;quot;%.2f Kw&amp;quot;, &#039;CURRENT&#039; =&amp;gt;&amp;quot;%.2f A&amp;quot;,&#039;CURRENT_POWER_max_day&#039; =&amp;gt; &amp;quot;%.0f W&amp;quot;,&#039;CURRENT_POWER_avg_day&#039; =&amp;gt; &amp;quot;%.2f W&amp;quot;,&#039;PERIOD_ENERGY&#039;=&amp;gt;&amp;quot;%.0f Zyklen&amp;quot;}&lt;br /&gt;
 attr SonoffPows valueStyle { if($READING eq &amp;quot;CURRENT_POWER&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 0 &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;TODAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 4.8){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;TODAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 2.5){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;TODAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 2.5 &amp;amp;&amp;amp; $VALUE &amp;lt; 4.8 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 0.45){&#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039;}elsif( $READING eq &amp;quot;CURRENT&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 0.45 &amp;amp;&amp;amp; $VALUE &amp;lt; 0.87 ){&#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 0.87){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;PERIOD_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 10){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;PERIOD_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 10 &amp;amp;&amp;amp; $VALUE &amp;lt; 15 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;PERIOD_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 15){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; } }&lt;br /&gt;
&lt;br /&gt;
Die readingsGroup sind etwas komplex zu lesen, aber nach etwas Einarbeitung klappt das schon. Die in diesem Beispiel verwendeten Readingsnamen beziehen sich auf die Beispielkonfigurationen hier im Wiki.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
====ReadingsGroup mit Schaltmöglichkeit====&lt;br /&gt;
[[Datei:sonoff_pow_03.jpg|thumb|left|alt=readingsGroup mit Schalter]]&lt;br /&gt;
Die vorher erwähnte ReadingsGroup kann auch gleich mit einem Schalter versehen werden um den POW Ein- oder Aus schalten zu können. Dazu ist aber eine andere Einstellung im Sketch erforderlich.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der &amp;quot;&#039;&#039;&#039;user_config.h&#039;&#039;&#039;&amp;quot; muss an dieser Stelle auch die &amp;quot;&#039;&#039;&#039;PUB_PREFIX&#039;&#039;&#039;&amp;quot; auf die gleiche Topic wie &amp;quot;PUB_PREFIX2&amp;quot; eingestellt werden. Durch diese Maßnahme wird erreicht, dass sofort nach dem Knopfdruck auch der Status mit der Topic &amp;quot;tele&amp;quot; übertragen wird. Würde der weiterhin mit &amp;quot;stat&amp;quot; übertragen, kann er in der Readingsgroup nur sehr umständlich weiter behandelt werden. Dadurch wird erreicht, dass der Schalter sofort nach dem Schaltvorgang und der Rückmeldung (Status) auch seine Farbe ändert. Wird dieser Eintrag vergessen, ändert der Schalter erst nach Eintreffen der nächsten zyklischen Abfrage seinen Status/Farbe.&lt;br /&gt;
&lt;br /&gt;
 #define SUB_PREFIX             &amp;quot;cmnd&amp;quot;       // Sonoff devices subscribe to:- SUB_PREFIX/MQTT_TOPIC and SUB_PREFIX/MQTT_GRPTOPIC&lt;br /&gt;
 #define PUB_PREFIX             &amp;quot;tele&amp;quot;       // Sonoff devices publish to:- PUB_PREFIX/MQTT_TOPIC&lt;br /&gt;
 #define PUB_PREFIX2            &amp;quot;tele&amp;quot;       // Sonoff devices publish telemetry data to:- PUB_PREFIX2/MQTT_TOPIC/UPTIME, POWER/LIGHT and TIME&lt;br /&gt;
hier die PUB_PREFIX mit der geänderten Topic &amp;quot;tele&amp;quot; anstatt &amp;quot;stat&amp;quot; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 define SonoffPows readingsGroup &amp;lt;%measure_power&amp;gt;,&amp;lt;aktuell&amp;gt;,&amp;lt;Tag&amp;gt;,&amp;lt;Gestern&amp;gt;,&amp;lt;Strom&amp;gt;,&amp;lt;Durchschnitt&amp;gt;,&amp;lt;max.P&amp;gt;,&amp;lt;Zyklus&amp;gt;,&amp;lt;Faktor&amp;gt;,&amp;lt;Status&amp;gt;,&amp;lt; hr &amp;gt; .*(Sonoff_Pow|Sonoff_Pow2|Sonoff_Pow3):CURRENT_POWER,TODAY_ENERGY,YESTERDAY_ENERGY,CURRENT,CURRENT_POWER_avg_day,CURRENT_POWER_max_day,PERIOD_ENERGY,POWER_FACTOR,LIGHT&lt;br /&gt;
 attr SonoffPows commands {&#039;LIGHT.ON&#039; =&amp;gt; &#039;set $DEVICE OFF&#039;,&#039;LIGHT.OFF&#039; =&amp;gt; &#039;set $DEVICE ON&#039;}&lt;br /&gt;
 attr SonoffPows mapping %ALIAS&lt;br /&gt;
 attr SonoffPows nameStyle style=&amp;quot;color:yellow&amp;quot;&lt;br /&gt;
 attr SonoffPows room Energie,MQTT&lt;br /&gt;
 attr SonoffPows valueFormat {&#039;CURRENT_POWER&#039; =&amp;gt;&amp;quot;%.0f W&amp;quot;, &#039;TODAY_ENERGY&#039; =&amp;gt;&amp;quot;%.2f Kw&amp;quot;,&#039;YESTERDAY_ENERGY&#039; =&amp;gt;&amp;quot;%.2f Kw&amp;quot;, &#039;CURRENT&#039; =&amp;gt;&amp;quot;%.2f A&amp;quot;,&#039;CURRENT_POWER_max_day&#039; =&amp;gt; &amp;quot;%.0f W&amp;quot;,&#039;CURRENT_POWER_avg_day&#039; =&amp;gt; &amp;quot;%.2f W&amp;quot;,&#039;CURRENT_POWER&#039;=&amp;gt;&amp;quot;%.0f W&amp;quot;,&#039;POWER_FACTOR&#039; =&amp;gt; &amp;quot;%.2f &amp;quot;}&lt;br /&gt;
 attr SonoffPows valueIcon {&#039;LIGHT.ON&#039; =&amp;gt; &#039;rc_GREEN@green&#039;, &#039;LIGHT.OFF&#039; =&amp;gt; &#039;rc_RED@red&#039;}&lt;br /&gt;
 attr SonoffPows valueStyle { if($READING eq &amp;quot;CURRENT_POWER&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 0 &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;TODAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 4.8){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;TODAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 2.5){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;TODAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 2.5 &amp;amp;&amp;amp; $VALUE &amp;lt; 4.8 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;YESTERDAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 2.5){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;YESTERDAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 2.5 &amp;amp;&amp;amp; $VALUE &amp;lt; 4.8 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;YESTERDAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 4.8){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 0.45){&#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039;}elsif( $READING eq &amp;quot;CURRENT&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 0.45 &amp;amp;&amp;amp; $VALUE &amp;lt; 0.87 ){&#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 0.87){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;PERIOD_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 10){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;PERIOD_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 10 &amp;amp;&amp;amp; $VALUE &amp;lt; 15 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;PERIOD_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 15){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; } }&lt;br /&gt;
hier die erweiterte ReadingsGroup mit dem Schalter. Bei Bedarf sind hier die Devicenamen anzupassen wenn andere Namen verwendet werden (Sonoff_Pow|Sonoff_Pow2|Sonoff_Pow3).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====POW mit FTUI anzeigen====&lt;br /&gt;
[[Datei:sonoff_pow_energy.JPG|thumb|left|alt=Tablett FTUI]]&lt;br /&gt;
Wer möchte kann die Energieanzeigen auch mit der [https://forum.fhem.de/index.php/topic,34233.0.html Tablett UI] für eine Tablet Ansicht gestalten. Mit dieser stehen viele Möglichkeiten zu einer attraktiven Darstellung zur Verfügung.&lt;br /&gt;
Hier ein Beispiel welches mit den Widget &amp;quot;[http://www.fhemwiki.de/wiki/FHEM_Tablet_UI#Widget_THERMOSTAT thermostat]&amp;quot; dargestellt ist.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Slampher Flashen==&lt;br /&gt;
[[Datei:sonoff_sl_53.jpg|thumb|left|alt=Sonoff SLAMPHER]]&lt;br /&gt;
Dieses Modul ist eine Besonderheit was das Flashen betrifft, denn mit Hilfe des Tasters kann der ESP8266 NICHT in den Flashmode gebracht werden. Der Taster ist intern anderwärtig verdrahtet und somit für diesen Zweck nicht zu gebrauchen.&lt;br /&gt;
&lt;br /&gt;
Wie hier links im Bild zu sehen ist, muss der rechte Pin des R20 (oben im Bild) während dem Einstecken des USB Steckers auf Masse gelegt werden. Die beste Möglichkeit ist ein Stücken Draht anzulöten und diesen dann beim einstecken auf den Masse Pin des USB-Konverters zu legen.&lt;br /&gt;
&lt;br /&gt;
Pinbelegung des Steckers von oben nach unten:&lt;br /&gt;
 o - GND&lt;br /&gt;
 o - TxD&lt;br /&gt;
 o - RxD&lt;br /&gt;
 &#039;&#039;&#039;o&#039;&#039;&#039; - Vdd&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sl_51.jpg|thumb|left|alt=Sonoff SLAMPHER R20]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier ist genau ersichtlich, wo der R20 auf der Platine platziert ist. }}&lt;br /&gt;
Hier nocheinmal schön zu sehen wo der R20 (der ist nicht eingelötet sondern leer) exakt auf der Platine liegt, gemeint ist der rechte Pin. Hier kann auch leicht gelötet werden, da keine empfindlichen Bauteile in der Nähe sind und auch genug Platz vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_sl_50.jpg|thumb|left|alt=Sonoff SLAMPHER R20]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier ist genau ersichtlich, wo der Draht am R20 aufgelötet wurde }}&lt;br /&gt;
Hier ist ein kleines Stück Schaltdraht auf den Pin bereist aufgelötet und bereit zum Flashen!&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel wurde keine Pfostensteckerleiste auf die Platine aufgelötet, sondern nur durchgesteckt und mit einem Gummiring  zum Relais fixiert, das erspart den Lötvorgang, weil in Zukunft dann ohnehin OTA geflasht werden kann.&lt;br /&gt;
&lt;br /&gt;
Also Pin20 auf Masse legen und USB-Konverter an den PC einstecken, dann den Draht von der Masse entfernen. Der ESP8266 sollte jetzt im Flashmodus bereit stehen und kann wie bereits oben beschrieben geflasht werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sonoff Slampher Software===&lt;br /&gt;
[[Datei:sonoff_sl_54.jpg|thumb|left|alt=Sonoff SLAMPHER FHEM]]&lt;br /&gt;
&lt;br /&gt;
Als Software wird Arends Sketch installiert (Kommunikation über MQTT), da zum derzeitigen Zeitpunkt ESPEasy das Modul noch nicht integriert hat und somit auch nicht ansteuern kann.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_SL MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_SL IODev myBroker&lt;br /&gt;
 attr Sonoff_SL devStateIcon ON:rc_GREEN:OFF OFF:rc_RED:ON&lt;br /&gt;
 attr Sonoff_SL icon hue_filled_br30&lt;br /&gt;
 attr Sonoff_SL publishSet ON OFF cmnd/sonoffsl/1/POWER/set&lt;br /&gt;
 attr Sonoff_SL room Bewegung,_Sonoff&lt;br /&gt;
 attr Sonoff_SL stateFormat Licht&lt;br /&gt;
 attr Sonoff_SL subscribeReading_Licht tele/sonoffsl/POWER&lt;br /&gt;
 attr Sonoff_SL subscribeReading_state cmnd/sonoffsl/1/POWER/set&lt;br /&gt;
 attr Sonoff_SL webCmd ON:OFF&lt;br /&gt;
&lt;br /&gt;
Hier ein Beispiel wie in FHEM der Slampher eingebunden werden kann. In diesem Beispiel wird davon ausgegangen, das das Modul &amp;quot;sonoffsl&amp;quot; unter Konfiguration am WEBIF (Configure MQTT bei Topic) so unbenannt wurde. Wer einen anderen Namen haben möchte, muss dies dann auch in FHEM entsprechend anpassen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Th10/16 FHEM==&lt;br /&gt;
[[Datei:sonoff_th_01.jpg|thumb|left|alt=Sonoff TH10]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Temperatur Modul TH10 / 16! }}&lt;br /&gt;
Das Modul kann durch drücken des Tasters während dem Einstecken des USB-Konverters in den Flashmodus gebracht werden.&lt;br /&gt;
Der Th10/16 kann mit zwei unterschiedlichen Typen von Sensoren bestückt werden, hier im Beispiel mit dem externen Temperaturfühler DS18B20.&lt;br /&gt;
&lt;br /&gt;
Wie im Bild klar zu sehen ist, kann das Webif auch zur Darstellung via Mobile verwendet werden. Mit &amp;quot;Toggle&amp;quot; wird Ein- oder Aus geschaltet und  darunter ist die aktuelle Temperatur ersichtlich. Für diese Ansicht muss keine MQTT Verbindung eingerichtet werden, da die Kommunikation hier rein über HTTP erfolgt.&lt;br /&gt;
&lt;br /&gt;
Die unten dargestellten Beispiele für FHEM beziehen sich auf Arends Sketch, also über MQTT. Dieses Modul kann aber genauso leicht über ESPEasy und der ESPEasy-Bridge eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Pinbelegung des Steckers von oben nach unten:&lt;br /&gt;
 o - GND&lt;br /&gt;
 o - TxD&lt;br /&gt;
 o - RxD&lt;br /&gt;
 &#039;&#039;&#039;o&#039;&#039;&#039; - Vdd&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #define DSB_PIN              14           // GPIO 14 = DS18x20 (Sonoff_TH10A(16A), Sonoff SV)&lt;br /&gt;
 #define DSB_RESOLUTION       2            // Maximum number of decimals (0 - 3) showing Temperature&lt;br /&gt;
 // *** Option 1 - Single DS18B20 - Select either Option 1 OR Option 2&lt;br /&gt;
 #define SEND_TELEMETRY_DS18B20            // Enable sending single temperature telemetry&lt;br /&gt;
 // *** Option 2 - Multiple DS18B20 and/or DS18S20 (needs OneWire library!)&lt;br /&gt;
 //  #define SEND_TELEMETRY_DS18x20            // Enable sending multi temperature telemetry &lt;br /&gt;
In der user_config.h (Arends Sketch) muss hier die Option 1 aktiviert werden (entfernen der vorangestellten //) damit die Telemetriedaten auch gesendet werden. Es empfiehlt sich mindestens die Version &amp;gt;= V 2.0.16, weil hier die Sensoren erweitert wurden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #define DHT_PIN              14           // GPIO 14 = AM2301 (Sonoff_TH10A(16A), Sonoff SV)&lt;br /&gt;
 #define DHT_TYPE             AM2301       // DHT module type (DHT11, DHT21, DHT22, AM2301, AM2302 or AM2321)&lt;br /&gt;
 #define DHT_RESOLUTION       1            // Maximum number of decimals (0 - 3) showing Temperature&lt;br /&gt;
 #define SEND_TELEMETRY_DHT                // Enable sending temperature and humidity telemetry&lt;br /&gt;
Beispiel für den Sensor DHT22, Temperatur und Luftfeuchte. Es dürfen aber nicht beide Sensoren (DS18B20 + DHT22) gleichzeitig aktiviert werden, da ja beide an GPIO14 angehängt werden und es ansonsten zu Fehlfunktionen kommen würde.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_th_02.jpg|thumb|left|alt=Sonoff TH10]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Einbindung in FHEM via MQTT! }}&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ### Temperatur und Luftfeuchte vom Sonoff Switch ###&lt;br /&gt;
 define Sonoff_Temp MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Temp IODev myBroker&lt;br /&gt;
 attr Sonoff_Temp alias Pool Wasser&lt;br /&gt;
 attr Sonoff_Temp eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_Temp icon temperature_humidity&lt;br /&gt;
 attr Sonoff_Temp publishSet ON OFF cmnd/sonoffth/1/POWER/set&lt;br /&gt;
 attr Sonoff_Temp room _Sonoff&lt;br /&gt;
 attr Sonoff_Temp stateFormat {sprintf(&amp;quot;Temperatur: %.1f Grad&amp;quot;, ReadingsVal($name,&amp;quot;TEMPERATURE&amp;quot;,0))}&lt;br /&gt;
 attr Sonoff_Temp subscribeReading_TEMPERATURE tele/sonoffth/DS18B20/TEMPERATURE&lt;br /&gt;
 attr Sonoff_Temp subscribeReading_humidity tele/sonoffth/HUMIDITY&lt;br /&gt;
 attr Sonoff_Temp subscribeReading_state cmnd/sonoffth/1/POWER/set&lt;br /&gt;
Beispiel für FHEM mit Temperaturanzeige mit DS18B20&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Switch MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Switch IODev myBroker&lt;br /&gt;
 attr Sonoff_Switch alias Pool Licht&lt;br /&gt;
 attr Sonoff_Switch devStateIcon on:rc_GREEN:off off:rc_RED:on&lt;br /&gt;
 attr Sonoff_Switch eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_Switch icon light_ceiling&lt;br /&gt;
 attr Sonoff_Switch publishSet ON OFF cmnd/sonoffth/1/POWER/set&lt;br /&gt;
 attr Sonoff_Switch room _Sonoff&lt;br /&gt;
 attr Sonoff_Switch stateFormat Licht&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_Licht tele/sonoffth/POWER&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_state cmnd/sonoffth/1/POWER/set&lt;br /&gt;
 attr Sonoff_Switch webCmd ON:OFF&lt;br /&gt;
Der Schalter nochmals seperat dargestellt, je nach Geschmack.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff CH4 4-Kanal Schaltmodul==&lt;br /&gt;
[[Datei:sonoff_ch4_1.jpg|thumb|left|alt=Sonoff CH4]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Achtung andere Einstellungen der Arduino IDE: Select Board &amp;quot;Generic ESP8285 Module&amp;quot; (=Flash Mode &amp;quot;DOUT&amp;quot;) and Flash Size &amp;quot;1M (64K SPIFFS)&amp;quot;n! }}&lt;br /&gt;
&lt;br /&gt;
Der Sonoff CH4 ist mit seinen 4 Kanälen ein sehr preiswertes Modul im Gehäuse und für Hutschinenmontage. Anstatt des üblichen ESP8266 besitzt dieses Modul schon den moderneren &#039;&#039;&#039;ESP8285&#039;&#039;&#039;. Es müssen daher in der Arduino IDE andere Einstellungen vorgenommen werden. Unter Board wird hier das &amp;quot;&#039;&#039;&#039;Generic 8285 Module&#039;&#039;&#039;&amp;quot; mit &#039;&#039;&#039;1M und 64K Spiffs&#039;&#039;&#039; angewählt. Der Flashmode &amp;quot;&#039;&#039;&#039;DOUT&#039;&#039;&#039;&amp;quot; wird dann automatisch eingestellt, bzw. ausgeblendet.&lt;br /&gt;
&lt;br /&gt;
Das Modul ist etwas größer als die anderen Sonoff Produkte und besitzt mit 14,5 x 9 cm schon beachtliche Einbau Maße.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_ch4_2.jpg|thumb|left|alt=Sonoff CH4 FDTI]]&lt;br /&gt;
Als weitere Besonderheit sei hier erwähnt, das die Signale &#039;&#039;&#039;RxD auf RxD und TxD auf TxD&#039;&#039;&#039; des FTDI Konverters zu verbinden sind. Wie bei allen Sonoff Modulen darf man &#039;&#039;&#039;zum flashen keine Netzspannung anschließen&#039;&#039;&#039;, sondern nur über die Versorgungsspannung des FDTI Konverters mit 3,3 V versorgen (Jumper richtig setzen). Die Stiftleiste für den FTDI Anschluß ist hier schon eingelötet.&lt;br /&gt;
&lt;br /&gt;
In den Flashmodus gelangt man durch drücken der &#039;&#039;&#039;Taste FW/IO0&#039;&#039;&#039; während des einstecken des USB Anschlusses.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_ch4_3.jpg|thumb|left|alt=Sonoff CH4 Arends]]&lt;br /&gt;
Hier die Ansicht des Webinterface des Arends Sketches!&lt;br /&gt;
Bei der Software sei erwähnt, das die getestete Version 3.1.16 nur bei Kanal 1 den Modus &amp;quot;PulseTime&amp;quot; beherrscht. Wer also gepulste Ausgänge (zB: elektrische Garage/Toröffner) benötigt muss diese per Software nachbilden oder mit dem Kanal 1 auskommen. Eine &amp;quot;Pulsetime 10&amp;quot; ist ein guter Wert dafür (etwa 1 Sekunde). &lt;br /&gt;
&lt;br /&gt;
Als Alternative kann mit dieser HTML Seite des Webservers am Modul des CH4 schon mit jedem Browser fähigem Handy (Android, iPhone, Windows) aufgerufen werden und somit alle Funktionen gesteuert werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_ch4_4.jpg|thumb|left|alt=Sonoff CH4 Software APP]]&lt;br /&gt;
Hier dargestellt die Original Software die Sonoff zum Modul liefert (EWeLink) und über ihre Cloud verbindet. Leider kann hier keine gepulste Ausgabe erfolgen. Mit einem Countdown kann zwar der Ausgang wieder abgeschaltet werden, die kleinste Zeiteinheit ist aber 1 Minute und somit für einen Impuls leider nicht zu gebrauchen. Ebenso kann mit dieser Software keine Einbindung in FHEM erfolgen, obwohl es eine nette anschauliche Darstellung ist.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Erweiterungen=&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sonoff Switch mit Temperatur + Luftfeuchte== &lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier geht es um nützliche Hardware Erweiterungen an den Originalmodulen!}}&lt;br /&gt;
Wozu überhaupt den Switch erweitern wenn es auch die Modelle TH10 und TH16 gibt?&lt;br /&gt;
&lt;br /&gt;
Manche Personen können dadurch dem Basteltrieb nachkommen, aber das wesentliche ist der Preis, da die Switches doch fast um die Hälfte billiger sind. Die Sensoren kosten ebenfalls kaum nennenswerte Beträge.&lt;br /&gt;
&lt;br /&gt;
Oder es hat schon jemand Switches im Einsatz und möchte jetzt zusätzlich die Temperatur erfassen!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hardware erweitern mit DHT22 ===&lt;br /&gt;
[[Datei:sonoff_sw_4.PNG|thumb|left|alt=Sonoff Switch Pinleiste mit Temperatur]]&lt;br /&gt;
Am Sonoff Switch wurde ja schon eine Stiftleiste zum Flashen eingelötet. Diese Stiftleiste bietet schon alle Anschlüsse welche für die Temperatur- und Luftfeuchtemessung benötigt werden. Am 5. Anschluß der Stifftleiste ist das Signal &amp;quot;SCL&amp;quot; (GPIO14) herausgeführt, welches für den DHT22 zur Erfassung der Messdaten benötigt wird. Der Sonsor wird mit einem einem 3-poligen Kabel (zB: ein Steckkabel für ein Breadboard oder direkt anlöten) verbunden. Damit der DHT22 korrekt funktioniert, wird ein Widerstand mit 4,7 K Ohm zwischen Vdd und Data am DHT22 zusätzlich benötigt. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_45.jpg|thumb|left|alt=AM2302 / DHT22]]&lt;br /&gt;
&lt;br /&gt;
Ansicht des DHT22 (AM2302) mit den aufgesteckten Verbindungskabeln. Von links nach rechts sind das&lt;br /&gt;
&lt;br /&gt;
 1 = VCC 3,3 V&lt;br /&gt;
 2 = Data&lt;br /&gt;
 3 = nc (nicht belegt)&lt;br /&gt;
 4 = GND&lt;br /&gt;
&lt;br /&gt;
Pin1 (VCC) des DHT22 muss also auf Pin1 der Stiftleiste, Pin2 (Data) auf Pin5 und Pin4 (GND) auf Pin4. &lt;br /&gt;
Pin2 und Pin1 soll hier noch der Widerstand aufgelötet werden.&lt;br /&gt;
&lt;br /&gt;
 1 ------- 1 (VDD)&lt;br /&gt;
 2 ------- 5 (GPIO14)&lt;br /&gt;
 3&lt;br /&gt;
 4 ------- 4 (GND)&lt;br /&gt;
 DHT22  Stiftleiste&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_44.jpg|thumb|left|alt=umgebautes Modul]]&lt;br /&gt;
Diese Darstellung zeigt das umgebaute und bereits verschlossene Modul. Auf der Seite des Tasters (bitte nur hier, da auf der anderen Seite die 230 V verlaufen und neben der Lebensgefahr auch den Sensor beeinflussen) ist hier einfach mit einer Eisensäge ein Schlitz eingesägt, der dient in diesem Falle als Kabeldurchführung. Ein Schlitz ist besser als ein Loch, da der Oberteil des Gehäuses sich leichter aufsetzen läßt. Wer ein längeres Kabel benötigt, kann natürlich auch ein 3-poliges Telefonkabel (oder Mikrokabel oder sonstiges) verwenden. Der Sensor sollte etwas Abstand zum Gehäuse haben, da dieses auch eine Eigenerwärmung hat. Wer es ganz originalgetreu lösen will, kann auch eine 3-polige Mini Buchse für Klinckenstecker (3,5mm) einbauen so wie sie am TH10/16 vorhanden ist.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Software anpassen am Beispiel MQTT ===&lt;br /&gt;
[[Datei:sonoff_sw_40.jpg|thumb|left|alt=Sonoff MQTT]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wer über MQTT kommuniziert und die Software von Theo Arends benutzt, muss folgende Dinge beachten. In der Datei &#039;&#039;&#039;user_config.h&#039;&#039;&#039; müssen im Abschnitt &#039;&#039;&#039;Module = SONOFF&#039;&#039;&#039; die Slashes so wie unten dargestellt entfernt werden, damit erstens die Interrupts abgefragt werden und zweitens die Telemetriedaten gesendet werden. Ebenso ist der verwendete Sensor bei &amp;quot;&#039;&#039;&#039;define DHT_TYPE&#039;&#039;&#039;&amp;quot; eingestellt werden. In dem hier gezeigten Beispiel also &amp;quot;&#039;&#039;&#039;DHT22&#039;&#039;&#039;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #if MODULE == SONOFF                        // programming header 1:3.3V 2:rx 3:tx 4:gnd&lt;br /&gt;
  #define APP_NAME             &amp;quot;Sonoff module&amp;quot;&lt;br /&gt;
  #define LED_PIN              13           // GPIO 13 = Green/Blue Led (0 = On, 1 = Off) - Sonoff&lt;br /&gt;
  #define LED_INVERTED         1            // 0 = (1 = On, 0 = Off), 1 = (0 = On, 1 = Off)&lt;br /&gt;
  #define REL_PIN              12           // GPIO 12 = Red Led and Relay (0 = Off, 1 = On)&lt;br /&gt;
  #define KEY_PIN              0            // GPIO 00 = Button&lt;br /&gt;
 /*-------------------------------------------------------------------------------------------*/&lt;br /&gt;
  #define DSB_PIN              4            // GPIO 14 = DS18B20 (Sonoff_TH10A(16A), Sonoff SV)&lt;br /&gt;
  #define SEND_TELEMETRY_DS18B20            // Enable sending temperature telemetry&lt;br /&gt;
 /*-------------------------------------------------------------------------------------------*/&lt;br /&gt;
  #define DHT_PIN              14           // GPIO 14 = AM2301 (Sonoff_TH10A(16A), Sonoff SV)&lt;br /&gt;
  #define DHT_TYPE             DHT22        // DHT module type (DHT11, DHT21, DHT22, AM2301, AM2302 or AM2321)&lt;br /&gt;
  #define SEND_TELEMETRY_DHT                // Enable sending temperature and humidity telemetry&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Software Anpassung DHT22 in FHEM ===&lt;br /&gt;
[[Datei:sonoff_sw_41.jpg|thumb|left|alt=umgebautes Modul]]&lt;br /&gt;
&lt;br /&gt;
Links in der Hardcopy sind die Readings die nach der Anpassung von FHEM (Broker) befüllt werden sollten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ### Temperatur und Luftfeuchte vom Sonoff Switch ###&lt;br /&gt;
 define Sonoff_Temp MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Temp IODev myBroker&lt;br /&gt;
 attr Sonoff_Temp icon temperature_humidity&lt;br /&gt;
 attr Sonoff_Temp room MQTT&lt;br /&gt;
 attr Sonoff_Temp stateFormat {sprintf(&amp;quot;Temperatur: %.1f Grad Feuchte: %.1f &amp;quot;, ReadingsVal($name,&amp;quot;temperature&amp;quot;,0), ReadingsVal($name,&amp;quot;humidity&amp;quot;,0))}&lt;br /&gt;
 attr Sonoff_Temp subscribeReading_humidity tele/sonoff/HUMIDITY&lt;br /&gt;
 attr Sonoff_Temp subscribeReading_temperature tele/sonoff/TEMPERATURE&lt;br /&gt;
Als Beispiel die zusätzliche Erweiterung um die Temperatur und die Luftfeuchte in FHEM. Der in der Topic verwendete Name &amp;quot;sonoff&amp;quot; muss natürlich der Einstellung in der Software am Switch entsprechen. Bei Verwendung mehrerer Switches muss natürlich auch der Name bei jedem geändert werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Logfile für die Temperatur ===&lt;br /&gt;
 define SVG_FileLog_Sonoff_Temp SVG myDbLog:SVG_FileLog_Sonoff_Temp:HISTORY&lt;br /&gt;
 attr SVG_FileLog_Sonoff_Temp room MQTT&lt;br /&gt;
&lt;br /&gt;
Und schließlich fehlt noch das Logfile, damit der Temperaturverlauf auch in schönen Plots dargestellt werden kann.&lt;br /&gt;
Das hier verwendete Beispiel funktioniert nur mit einer DbLog.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Switch als Thermostat verwenden mit MQTT== &lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_55.jpg|thumb|left|alt=Thermostat]]&lt;br /&gt;
Mit diesem einfachen Beispiel wird ein Pelett Ofen mit einem externen Thermostat (sonoff Switch oder TH10/16) gesteuert. Zum besseren Überblick wird die Steuerung in einzelne Module getrennt, es könnte aber auch einiges zu einer einzigen Definition zusammen gefasst werden. Der Thermostat könnte auch als Frostwächter benutzt werden und ein anderes Heizgerät steuern.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 ###################################&lt;br /&gt;
 ### Sonoff Thermostat Regelung ####&lt;br /&gt;
 ###################################&lt;br /&gt;
 define Sonoff_dht MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_dht IODev myBroker&lt;br /&gt;
 attr Sonoff_dht alias Raumtemperatur&lt;br /&gt;
 attr Sonoff_dht group Thermostat&lt;br /&gt;
 attr Sonoff_dht icon temperature_humidity&lt;br /&gt;
 attr Sonoff_dht publishSet ON OFF cmnd/sonoff_dht/1/POWER/set&lt;br /&gt;
 attr Sonoff_dht room _Sonoff&lt;br /&gt;
 attr Sonoff_dht stateFormat {sprintf(&amp;quot;Temperatur: %.1f Grad Feuchte: %.1f &amp;quot;, ReadingsVal($name,&amp;quot;TEMPERATURE&amp;quot;,0),  ReadingsVal($name,&amp;quot;HUMIDITY&amp;quot;,0))}&lt;br /&gt;
 attr Sonoff_dht subscribeReading_HUMIDITY tele/sonoff_dht/DHT/HUMIDITY&lt;br /&gt;
 attr Sonoff_dht subscribeReading_TEMPERATURE tele/sonoff_dht/DHT/TEMPERATURE&lt;br /&gt;
 attr Sonoff_dht subscribeReading_state cmnd/sonoff_dht/1/POWER/set&lt;br /&gt;
FHEM Definition zur Erfassung der Temperatur und der Luftfeuchte. Damit dieses Beispiel funktioniert, ist am Sonoff Modul die Topic &amp;quot;&#039;&#039;&#039;sonoff_dht&#039;&#039;&#039;&amp;quot; zu setzen. Dieser Temperaturwert dient dem Thermostat als ISTWert.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Sw MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Sw IODev myBroker&lt;br /&gt;
 attr Sonoff_Sw alias Pellets Ofen&lt;br /&gt;
 attr Sonoff_Sw devStateIcon on:rc_GREEN:off off:rc_RED:on&lt;br /&gt;
 attr Sonoff_Sw eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_Sw group Thermostat&lt;br /&gt;
 attr Sonoff_Sw icon sani_boiler_temp&lt;br /&gt;
 attr Sonoff_Sw publishSet ON OFF cmnd/sonoff_dht/1/POWER/set&lt;br /&gt;
 attr Sonoff_Sw room _Sonoff&lt;br /&gt;
 attr Sonoff_Sw stateFormat Licht&lt;br /&gt;
 attr Sonoff_Sw subscribeReading_Licht tele/sonoff_dht/POWER&lt;br /&gt;
 attr Sonoff_Sw subscribeReading_state cmnd/sonoff_dht/1/POWER/set&lt;br /&gt;
 attr Sonoff_Sw webCmd ON:OFF&lt;br /&gt;
FHEM Definition zum Absetzen der Befehle für das Relais (Thermostat) Ein- / Aus. Wenn das zu steuernde Geräte einen potentialfreien Thermostatanschluß benötigt (in den meisten Fällen), muss noch ein Relais dazwischen geschaltet werden um die Trennung der Netzspannung zu gewährleisten.&lt;br /&gt;
&lt;br /&gt;
 define ThermostatPellets dummy&lt;br /&gt;
 attr ThermostatPellets alias Pellets Ofen Sollwert&lt;br /&gt;
 attr ThermostatPellets group Thermostat&lt;br /&gt;
 attr ThermostatPellets icon temp_control&lt;br /&gt;
 attr ThermostatPellets room _Sonoff&lt;br /&gt;
 attr ThermostatPellets setList state:0,5,10,12,13,14,15,16,17,17.5,18,18.5,19,19.5,20,20.5,21,21.5,22,23,24,25,26,27&lt;br /&gt;
 attr ThermostatPellets webCmd state&lt;br /&gt;
Die Sollwertvorgabe für das Thermostat durch einen Dummy, damit können die gewünschten Temperaturen eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
 ### sofort ausführen wenn neuer Sollwert eingestellt wird ###&lt;br /&gt;
 define Thermostat_on_notify notify ThermostatPellets IF (ReadingsVal(&amp;quot;Sonoff_Sw&amp;quot;,&amp;quot;state&amp;quot;,0) eq &amp;quot;OFF&amp;quot; &amp;amp;&amp;amp; (ReadingsVal(&amp;quot;Sonoff_dht&amp;quot;,&amp;quot;TEMPERATURE&amp;quot;,0) &amp;lt;= Value(&amp;quot;ThermostatPellets&amp;quot;))) (set Sonoff_Sw ON)&lt;br /&gt;
 define Thermostat_off_notify notify ThermostatPellets IF (ReadingsVal(&amp;quot;Sonoff_Sw&amp;quot;,&amp;quot;state&amp;quot;,0) eq &amp;quot;ON&amp;quot; &amp;amp;&amp;amp; (ReadingsVal(&amp;quot;Sonoff_dht&amp;quot;,&amp;quot;TEMPERATURE&amp;quot;,0) &amp;gt; Value(&amp;quot;ThermostatPellets&amp;quot;))) (set Sonoff_Sw OFF)&lt;br /&gt;
Mit einem notify wird die manuelle Änderung des Sollwertes überwacht und sofort reagiert.&lt;br /&gt;
&lt;br /&gt;
 ## zyklisch prüfen ob Sollwert erreicht wurde ###&lt;br /&gt;
 define Thermostat_on at +*00:15:00 IF (ReadingsVal(&amp;quot;Sonoff_Sw&amp;quot;,&amp;quot;Licht&amp;quot;,0) eq &amp;quot;OFF&amp;quot; &amp;amp;&amp;amp; (ReadingsVal(&amp;quot;Sonoff_dht&amp;quot;,&amp;quot;TEMPERATURE&amp;quot;,0) &amp;lt;= Value(&amp;quot;ThermostatPellets&amp;quot;))) (set Sonoff_Sw ON)&lt;br /&gt;
 define Thermostat_off at +*00:15:00 IF (Value(&amp;quot;Sonoff_Sw&amp;quot;) eq &amp;quot;ON&amp;quot; &amp;amp;&amp;amp; (ReadingsVal(&amp;quot;Sonoff_dht&amp;quot;,&amp;quot;TEMPERATURE&amp;quot;,0) &amp;gt; Value(&amp;quot;ThermostatPellets&amp;quot;))) (set Sonoff_Sw OFF)&lt;br /&gt;
Hier noch die Soll- Ist Wertvergleiche zur Steuerung. Es wird alle 15 Minuten überprüft ob die Temperatur erreicht ist. Bei einer trägen Heizung sollten 15 Minuten ausreichend sein, wer will kann dies aber auch alle 5 oder 10 Minuten prüfen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Switch mit Bewegungsmelder HC-SR501== &lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_pir_1.jpg|thumb|left|alt=Bewegungsmelder]]&lt;br /&gt;
Basierend auf dem Wall Switch MQTT Sketch von Arends wurde hier ein Sonoff BASIC + PIR HC-SR501 in eine größere Verteilerdose eingebaut, der Sonoff wurde dabei etwas gekürzt. Die Bewegungsmelder sind ab etwa 70 Cent erhältlich.&lt;br /&gt;
&lt;br /&gt;
Der Sketch kann auch den Blink Modus. Damit kann man im Alarmfall z.B. Alle Strahler rings ums Haus blinken lassen.&lt;br /&gt;
&lt;br /&gt;
Mehr dazu kann hier im [https://forum.fhem.de/index.php/topic,63824.0.html Forum]im Diskussionsthread nachgelesen werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_pir_2.jpg|thumb|left|alt=Bewegungsmelder]]&lt;br /&gt;
Ein Beispiel wir der Bewegungsmelder in der Feuchtraumdose montiert werden kann. Wird der Bewegungsmelder abgesetzt vom Switch montiert, ist darauf zu achten das die Kabel nicht zu lange werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
===Spannungsversorgung des HC-SR501===&lt;br /&gt;
[[Datei:sonoff_pir_4.jpg|thumb|left|alt=5V für Bewegungsmelder]]&lt;br /&gt;
Der HC-SR501 wird vom Sonoff versorgt, wobei hier die 3,3 V nicht immer ausreichen. Es ist deshalb am HC-SR501 eine Diode zu überbrücken, dann reichen die 3,3V vom Sonoff. Es können aber auch am Sonoff die 5V angezapft werden. Hier im Bild dargestellt wo die 5V angezapft werden können.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_pir_5.jpg|thumb|left|alt=3,3V für Bewegungsmelder]]&lt;br /&gt;
Hier eine kleine Übersicht der wichtigsten Teile und deren Platzierung am HC-SR501. &lt;br /&gt;
Den PIR kann man auch mit 3,3V betreiben wenn man die Diode am Eingang nach Vcc überbrückt, dann reicht die Spannung für einen reibungslosen Betrieb völlig aus. Dies gilt für den HC-SR501, wird ein anderer PIR verwendet muss man nachschauen ob das auch möglich ist, ansonsten die 5V Variante wählen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===Anpassung des Sketches mit Wall Switch===&lt;br /&gt;
Zur Vorbereitung des Sketches sind zunächst einige Einstellungen in der &amp;quot;user_config.h&amp;quot; durchzuführen.&lt;br /&gt;
&lt;br /&gt;
 #if MODULE == SONOFF                        // programming header 1:3.3V 2:rx 3:tx 4:gnd&lt;br /&gt;
  #define APP_NAME             &amp;quot;Sonoff 8266 module&amp;quot;&lt;br /&gt;
  #define MQTT_GRPTOPIC        &amp;quot;sonoffs&amp;quot;    // [GroupTopic] MQTT Group topic&lt;br /&gt;
 /*-------------------------------------------------------------------------------------------*/&lt;br /&gt;
  #define LED_PIN              13           // GPIO 13 = Green/Blue Led (0 = On, 1 = Off) - Sonoff&lt;br /&gt;
  #define LED_INVERTED         1            // 0 = (1 = On, 0 = Off), 1 = (0 = On, 1 = Off)&lt;br /&gt;
  #define REL_PIN              12           // GPIO 12 = Red Led and Relay (0 = Off, 1 = On)&lt;br /&gt;
  #define KEY_PIN              0            // GPIO 00 = Button&lt;br /&gt;
 /*-------------------------------------------------------------------------------------------*\&lt;br /&gt;
 * Wall switch and HC-SR501&lt;br /&gt;
 \*-------------------------------------------------------------------------------------------*/&lt;br /&gt;
  #define SWITCH_PIN           14           // GPIO 14 = Standard wall switch to Gnd (Sonoff_TH10A(16A), Sonoff SV)&lt;br /&gt;
  #define SWITCH_MODE          &#039;&#039;&#039;PUSHBUTTON_INV&#039;&#039;&#039;      // [SwitchMode] TOGGLE, FOLLOW, FOLLOW_INV, PUSHBUTTON or PUSHBUTTON_INV (the wall switch state)&lt;br /&gt;
  &#039;&#039;&#039;#define USE_WALL_SWITCH&#039;&#039;&#039;                   // Enable the use of a standard wall switch to control the relay&lt;br /&gt;
Wichtig ist dabei die vorangestellten Slahes // bei &amp;quot;#define USE_WALL_SWITCH&amp;quot; zu entfernen auf &#039;&#039;&#039;PUSHBUTTON_INV&#039;&#039;&#039; zu stellen. Dann kann der Sonoff Switch compiliert und geflasht werden.&lt;br /&gt;
&lt;br /&gt;
===Einbindung des HC-SR501 in FHEM===&lt;br /&gt;
 # ------------- Sonoff_pir mit Bewegungsmelder ---------------&lt;br /&gt;
 define Sonoff_pir MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_pir IODev myBroker&lt;br /&gt;
 attr Sonoff_pir eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_pir group Sonoff&lt;br /&gt;
 attr Sonoff_pir icon hue_filled_br30&lt;br /&gt;
 attr Sonoff_pir publishSet ON OFF cmnd/sonoff_pir/1/POWER/set&lt;br /&gt;
 attr Sonoff_pir room MQTT&lt;br /&gt;
 attr Sonoff_pir stateFormat Licht&lt;br /&gt;
 attr Sonoff_pir subscribeReading_Licht stat/sonoff_pir/POWER&lt;br /&gt;
 attr Sonoff_pir subscribeReading_state cmnd/sonoff_pir/1/POWER/set&lt;br /&gt;
 attr Sonoff_pir webCmd :&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel wie der Sonoff Switch in FHEM eingebunden wird. Wenn im Sketch der Prefix von stat auf tele geändert wurde, ist dies auch hier durchzuführen ( subscribeReading_Licht tele/sonoff_pir/POWER ), ansonsten bleibt es so wie im Beispiel. Getestet wurde dieses Beispiel mit Version 3.1.6. Die Topic sollte auf den Namen &amp;quot;sonoff_pir&amp;quot; eingestellt werden. Bei anderen Namen ist dies entsprechend in FHEM anzupassen. &lt;br /&gt;
&lt;br /&gt;
Mit dem Command &#039;&#039;&#039;BUTTONTOPIC Alarm_SO2&#039;&#039;&#039; ( direkt im Webinterface des Sonoff ) wird der Wall Switch GPIO14 vom Sonoff entkoppelt und somit sendet der Bewegungsmelder direkt an FHEM --&amp;gt; Motion_pir MQTT_DEVICE&lt;br /&gt;
&lt;br /&gt;
Es sollte auch unbedingt kontrolliert werden, wie die Ausgabe des Alarmes in der Console erfolgt. Erscheint hier die Meldung &amp;quot;cmnd/Alarm_SO2/POWER = TOGGLE&amp;quot; dann muss mit dem Kommando &amp;quot;&#039;&#039;&#039;switchmode 1&#039;&#039;&#039;&amp;quot; das Ausgabeformat umgeschaltet werden, erst dann kommt das gewünschte Format &amp;quot;On&amp;quot; und &amp;quot;OFF&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 # ------------------ Motion_pir MQTT_DEVICE -----------------&lt;br /&gt;
 define Motion_pir MQTT_DEVICE&lt;br /&gt;
 attr Motion_pir IODev myBroker&lt;br /&gt;
 attr Motion_pir devStateIcon on:on-for-timer off:off&lt;br /&gt;
 attr Motion_pir eventMap ON:on OFF:off&lt;br /&gt;
 attr Motion_pir group Sonoff&lt;br /&gt;
 attr Motion_pir icon people_sensor&lt;br /&gt;
 attr Motion_pir room MQTT&lt;br /&gt;
 attr Motion_pir stateFormat Alarm&lt;br /&gt;
 attr Motion_pir subscribeReading_Alarm cmnd/Alarm_SO2/POWER&lt;br /&gt;
Die Motion_pir dient nun zur eigentlichen Einschaltung des Lichtes und sendet das Kommando &#039;&#039;&#039;cmnd/Alarm_SO2/POWER&#039;&#039;&#039; an den entkopellten GPIO 14 des Switch.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # ------------------ DoIf zur Motion Abfrage -----------------&lt;br /&gt;
 define di_Sonoff_pir_Alarm DOIF ([Motion_pir:&amp;quot;on&amp;quot;] and [Tag_Nacht:twilight_weather] &amp;lt; 35) (set Sonoff_pir on) DOELSEIF ([Motion_pir:&amp;quot;off&amp;quot;] and [Tag_Nacht:twilight_weather] &amp;lt; 35) (set Sonoff_pir off)&lt;br /&gt;
 attr di_Sonoff_pir_Alarm comment Abhängig von Helligkeitssensor wird nachts,bei Bewegung das Licht eingeschaltet!&lt;br /&gt;
 attr di_Sonoff_pir_Alarm group Sonoff&lt;br /&gt;
 attr di_Sonoff_pir_Alarm room MQTT&lt;br /&gt;
Zusätzlich kann nun mit einem &#039;&#039;&#039;Doif&#039;&#039;&#039; verknüpft werden um das Ganze mit Tag_Nacht:twilight_weather dann in Abhängigkeit der Helligkeit zu schalten. Selbstverständlich kann jede andere Quelle mit einem Helligkeitswert verwendet werden.&lt;br /&gt;
&lt;br /&gt;
===Alarmausgabe über Grouptopic===&lt;br /&gt;
 # ------------------------ Sonoffs Group ----------------------&lt;br /&gt;
 define Sonoffs MQTT_DEVICE&lt;br /&gt;
 attr Sonoffs IODev myBroker&lt;br /&gt;
 attr Sonoffs eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoffs group Sonoff&lt;br /&gt;
 attr Sonoffs icon hue_filled_br30&lt;br /&gt;
 attr Sonoffs publishSet ON OFF cmnd/sonoffs/1/POWER/set&lt;br /&gt;
 attr Sonoffs room MQTT&lt;br /&gt;
 attr Sonoffs stateFormat state&lt;br /&gt;
 attr Sonoffs subscribeReading_Licht stat/sonoffs/1/POWER&lt;br /&gt;
 attr Sonoffs subscribeReading_state cmnd/sonoffs/1/POWER/set&lt;br /&gt;
Wer möchte kann auch mit der Group Topic mehrere Switches mit Bewegungsmelder zusammenfassen und alle Lampen im Alarmfall gemeinsam in den Blinkmodus schalten. cmnd/sonoffs ist das Kommando für die Group Topic, sofern diese vom User nicht verändert wurde.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:IP Components]]&lt;br /&gt;
--[[Benutzer:Reinhart|Reinhart]] ([[Benutzer Diskussion:Reinhart|Diskussion]]) 20:54, 5. Jan. 2017 (CET)&lt;/div&gt;</summary>
		<author><name>Reinhart</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Sonoff&amp;diff=19783</id>
		<title>Sonoff</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Sonoff&amp;diff=19783"/>
		<updated>2017-02-12T16:59:26Z</updated>

		<summary type="html">&lt;p&gt;Reinhart: Tasmota hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;sonoff, dieser Artikel beschreibt die Ankopplung der kostengünstigen sonoff Module an FHEM mit ESPEasy oder MQTT.&#039;&#039;&#039;&lt;br /&gt;
{{Randnotiz|RNTyp=Fehl|RNText=Achtung: Arbeiten mit Netzspannung kann lebensgefährlich sein und darf nur von autorisiertem Fachpersonal durchgeführt werden!}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Seit einiger Zeit werden von der [https://www.itead.cc/sonoff-wifi-wireless-switch.html Fa. Itead] kostengünstige &amp;quot;sonoff&amp;quot; Produkte angeboten die glücklicherweise den [http://dl.itead.cc/IM151116002/0A-ESP8266_Specifications_v4.1.pdf ESP8266 Chip] On Board haben und somit die ideale Grundlage für [http://www.esp8266.nu/index.php/Main_Page ESPEasy] und für [https://forum.fhem.de/index.php/board,46.0.html FHEM] darstellen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nützliche Links zum Hersteller:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://www.itead.cc/blog/user-guide-for-sonoff-slampher User Manual von Itead]&lt;br /&gt;
&lt;br /&gt;
[https://www.itead.cc/wiki/images/6/6b/Sonoff_schmatic.pdf Sonoff Schaltplan]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Hardware=&lt;br /&gt;
&#039;&#039;&#039;Bitte unbedingt die elektrotechnischen Sicherheitsrichtlinien beachten und einhalten!&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_sw_15.jpg|thumb|left|alt=Warnung Netzspannung]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Achtung: An dem Modul liegt Netzspannung an die lebensgefährlich ist. Es dürfen nur entsprechend ausgebildete Personen dieses Modul in Betrieb nehmen. Zum Umbau und zur Softwareaktualisierung darf keine Netzspannung angeschlossen sein&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Wie gefährlich das hantieren mit Netzspannung sein kann, wird hier am Beispiel eines [http://mysku.ru/blog/china-stores/45762.html russischen Anwenders] gezeigt, der hat beim Flashen die Netzspannung am Modul gelassen und somit über die Verbindung mit dem Netzteil des Laptop lebensgefährliche Spannung auf die FTDI Schnittstelle gebracht. Das Modul ist dabei abgeraucht!&lt;br /&gt;
&lt;br /&gt;
==Modelle==&lt;br /&gt;
&lt;br /&gt;
===Produktübersichtsliste sonoff===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:right&amp;quot;&lt;br /&gt;
! Produkt Name !! Beschreibung !! Spannungsversorgung !!  Imax !! Pmax !! Frequenz !! Schaltplan !! Link&lt;br /&gt;
|-&lt;br /&gt;
| Sonoff || Wireless control switch || 90~250V AC || 10A || 2200W || 2.4Ghz || [http://wiki.iteadstudio.com/Sonoff Plan] || [https://www.itead.cc/smart-home/sonoff-wifi-wireless-switch.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| Sonoff RF || 433 RF remote || 90~250V AC || 10A || 2200W || 2.4Ghz || [http://wiki.iteadstudio.com/Sonoff_RF Plan] || [https://www.itead.cc/smart-home/im151116003.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| Sonoff SV || Low voltage Input || 5~24V DC || 10A || 240W DC || 2.4Ghz || [http://wiki.iteadstudio.com/Sonoff_SV Plan] || [https://www.itead.cc/smart-home/sonoff-sv.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| Sonoff TH10/TH16 || Monitor and set Temp.&amp;amp;Hum. ||  90~250V AC || 10A/16A || 2200W(10A)/3500W(16A)	 || 2.4Ghz || [http://wiki.iteadstudio.com/Sonoff_TH_10/16 Plan] || [https://www.itead.cc/smart-home/sonoff-th.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Sonoff Dual || Remote control 2 devices ||  90~250V AC || 16A || 3500W || 2.4Ghz || [https://www.itead.cc/wiki/Sonoff_Dual Plan] || [https://www.itead.cc/sonoff-dual.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Sonoff Pow || Report power &amp;amp;power usage ||  90~250V AC || 16A || 3500W || 2.4Ghz || [https://www.itead.cc/wiki/Sonoff_Pow Plan] || [https://www.itead.cc/sonoff-pow.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Sonoff LED || WiFi Control Dimming LED ||  180~265V AC || 0.3-0.6A || 42W || 2.4Ghz ||  kein || [https://www.itead.cc/sonoff-led.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Sonoff Touch || WiFi wall touch switch ||  90~250V AC || 2A || 400W || 2.4Ghz || kein || [https://www.itead.cc/sonoff-touch.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Slampher || Wireless control light holder ||  90~250V AC || 2A || 200W || 2.4Ghz || [http://wiki.iteadstudio.com/Slampher Plan] || [https://www.itead.cc/smart-home/slampher-wifi-wireless-light-holder.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  S20 Smart Socket || Smart socket || 	90~250V AC || 10A || 2000W || 2.4Ghz || kein || [https://www.itead.cc/smart-home/smart-socket-eu.html EU-Stecker] &lt;br /&gt;
|-&lt;br /&gt;
|  iFan || Smart fan ||  185~264V AC ||﹤1A || 60W || 2.4Ghz || kein || [https://www.itead.cc/smart-home/smart-socket-eu.html EU-Stecker] &lt;br /&gt;
|-&lt;br /&gt;
| Motor/Pump Control Switch || clockwise/anticlockwise running ||  5V/7~32V DC || 10A || 50~320W || 2.4Ghz || kein || [https://www.itead.cc/smart-home/motor-reversing-wifi-wireless-switch.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| 1 Chnl Inching/self-locking Switch || Access control ||  	5V/12V DC || 10A || 50/120W || 2.4Ghz || kein || [https://www.itead.cc/smart-home/inching-self-locking-wifi-wireless-switch.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  4 Chnl Inching/self-locking/inter-locking Switch || Access control, rolling door control ||  5V/5~32V DC/90~250V AC || 10A || 50~320W/2500W || 2.4Ghz || kein || [https://www.itead.cc/ifan.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Eine Übersichtliste der verschiedenen Produkte mit technischen Kurzangaben.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Model: IM151116002: Erstes Modell===&lt;br /&gt;
[https://www.itead.cc/sonoff-wifi-wireless-switch.html Sonoff WiFi Wireless Smart Switch for MQTT COAP Smart Home]&lt;br /&gt;
[[Datei:sonoff_sw_0.jpg|thumb|left|alt=sonoff Switch]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Das sonoff Modul ist in einem zweckmäßigen und gefälligem Gehäuse verbaut!&lt;br /&gt;
&lt;br /&gt;
====Platine====&lt;br /&gt;
[[Datei:sonoff_sw_1.jpg|thumb|left|alt=sonoff Switch von vorne]]&lt;br /&gt;
&lt;br /&gt;
Die Platine ist sehr übersichtlich aufgebaut und der Hersteller hat auch alle Vorbereitungen zum Flashen einer alternativen Software vorgesehen (über serielle Schnittstelle via FTDI-Modul). Mit einer alternativen Software wie ESPEasy ist eine direkte Ankopplung des &#039;&#039;&#039;sonoff&#039;&#039;&#039; an FHEM somit ein leicht durchführbarer Vorgang.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_3.jpg|thumb|left|alt=sonoff Switch von hinten]]&lt;br /&gt;
Die stromführenden Leitungen wurden mit Lötzinn vom Hersteller verstärkt um die angegebenen Stromstärken mit geringer Hitzeentwicklung zu transportieren.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung: Bitte vor den Arbeiten kontrollieren, das an der Platine keine Netzspannung angeschlossen ist, LEBENSGEFAHR!&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Model: IM160712005: TH 10A/16A ===&lt;br /&gt;
[https://www.itead.cc/sonoff-th.html Sonoff TH 10A/16A WiFi Smart Switch]&lt;br /&gt;
&lt;br /&gt;
====TH10 / TH16 weitere GPIO zugänglich machen====&lt;br /&gt;
[[Datei:Sonoff_TH_10A-16A_kleiner.jpg|thumb|left|alt=TH10 / TH16 weitere GPIO zugänglich machen]]&lt;br /&gt;
Der Hersteller hat zwar schon Platine für eine weitere Stiftleiste vorbereitet, jedoch muss diese noch bestückt werden. Die nicht beschalteten Stifte können dann genutzt werden um die &amp;quot;verdeckten&amp;quot; GPIO zugänglich zu machen. Die Verdrahtung kann dem Bild entnommen werden.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Achtung: Bitte vor den Arbeiten kontrollieren, das an der Platine keine Netzspannung angeschlossen ist, LEBENSGEFAHR!&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Model: IM160811001: Sonoff Dual ===&lt;br /&gt;
[https://www.itead.cc/sonoff-dual.html Sonoff Dual WiFi Wireless Smart Swtich]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Model: IM160810001: Sonoff Pow ===&lt;br /&gt;
[https://www.itead.cc/sonoff-pow.html Sonoff POW WiFi Switch with Power Consumption Measurement]&lt;br /&gt;
[[Datei:sonoff_sw_30.jpg|thumb|left|alt=SONOFF POW]]Ein sehr interessantes und kostengünstiges Modul zur Messung der aktuellen Leistung. Das Modul kann via MQTT in FHEM angebunden werden.&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel zur Einbindung ist [http://www.fhemwiki.de/wiki/Sonoff#Sonoff_POW_einrichten hier unten] im Wiki beschrieben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===Model: weitere Modelle===&lt;br /&gt;
[https://www.itead.cc/search/result/?cat=&amp;amp;q=sonoff Sonoff Weitere Modelle finden sich auf der Homepage des Hersstellers]&lt;br /&gt;
&lt;br /&gt;
==Vorbereitungen zum Flashen==&lt;br /&gt;
[[Datei:sonoff_sw_2.jpg|thumb|left|alt=serielle Schnittstelle]]&lt;br /&gt;
&lt;br /&gt;
Hier auf der Platine sind die benötigten Signale für ein FTDI Modul schon vorhanden. Der quadratische Pin gleich über dem Taster ist die Spannungsversorgung zum Flashen vom FDTI von 3.3V Es muss daher unbedingt ein FTDI Modul genommen werden, dass nicht nur einen Jumper für 3.3V besitzt sondern auch die Spannung auf 3.3V herab setzt. Ist dies nicht der Fall, läuft man Gefahr das Modul unbrauchbar zu machen. Es ist daher zu empfehlen einen Spannungsteiler mit 2 Widerständen oder einen Pegelwandler zwischenschalten.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Signale der Schnittstelle==&lt;br /&gt;
von oben nach unten auf der Steckerleiste des sonoff U4 (Model: IM151116002).&lt;br /&gt;
&lt;br /&gt;
 Pin5 = vorbereitet für GPIO&lt;br /&gt;
 Pin4 = Masse&lt;br /&gt;
 Pin3 = TxD&lt;br /&gt;
 Pin2 = RxD&lt;br /&gt;
 Pin1 = 3.3V&lt;br /&gt;
&lt;br /&gt;
Siehe dazu auch den [https://forum.fhem.de/index.php/topic,55036.0.html Link aus dem Forum]:&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Platine mit Stiftleiste bestücken==&lt;br /&gt;
[[Datei:sonoff_sw_4.jpg|thumb|left|alt=Platine mit Stiftleiste bestücken]]&lt;br /&gt;
Der Hersteller hat zwar schon die Platine vorbereitet, jedoch muss sie noch mit einer Stiftleiste bestückt werden um das FTDI Modul bequem verbinden zu können. Nachdem einmal ESPEasy geflasht worden ist, kann es in Zukunft via WEB (OTA) geflasht werden und die Stiftleiste ist dann nicht mehr erforderlich. Aufgrund der geringen Kosten fällt dies jedoch nicht ins Gewicht.&amp;lt;br&amp;gt;&lt;br /&gt;
Für die Module TH10/TH16 sind die Lötpunkte für die Stiftleiste schon beschriftet. Die Stiftleiste selber muss allerdings auch nachgerüstet werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Achtung&#039;&#039;&#039;: Bitte vor den Arbeiten kontrollieren, das an der Platine keine Netzspannung angeschlossen ist, LEBENSGEFAHR!&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Software=&lt;br /&gt;
==MQTT und TASMOTA==&lt;br /&gt;
Der Autor Arends hat die Version Sonoff-MQTT-OTA-Arduino nun eingestellt und die Version 3.2.13 dürfte wohl die letzte dieser Generation gewesen sein. Mit der Einstellung dieser Version wurde zwar der Nachfolger &#039;&#039;&#039;TASMOTA&#039;&#039;&#039; erschaffen, aber leider nun auf das &#039;&#039;&#039;Messageformat LEGACY&#039;&#039;&#039; gänzlich verzichtet was bei der Auswertung der Messdaten in Fhem doch einige Probleme mit sich bringt, da der verwendete JSON String nun zusätzlich gefiltert werden muss.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Es gibt aber bereits zwei Lösungswege um dieses Problem zu beheben!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 1. [https://forum.fhem.de/index.php/topic,66714.msg580251.html#msg580251 in diesem Thread] gibt es eine gepatchte Version von Tasmota mit LEGACY Ausgabe. Damit verhält sich Tasmota so wie früher die MQTT Version mit LEGACY und es sind keine weiteren Einstellungen notwendig. LEGACY wurde einfach wieder hinzugefügt.&lt;br /&gt;
&lt;br /&gt;
 2. [https://forum.fhem.de/index.php/topic,66761.0.html in diesem Thread] wurde ein &#039;&#039;&#039;JSON to Reading Modul&#039;&#039;&#039; vorgestellt, dass mit Hilfe eines &amp;quot;notify&amp;quot; den JSON String analysiert und alle darin enthaltenen Daten in Readings kopiert. Die Readings werden dabei automatisch angelegt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Link: [https://forum.fhem.de/index.php/topic,66714.msg580251.html#msg580251 Tasmota]&lt;br /&gt;
&lt;br /&gt;
Link: [https://github.com/arendst/Sonoff-MQTT-OTA-Arduino Sonoff-MQTT-OTA-Arduino]&lt;br /&gt;
&lt;br /&gt;
Alle hier im Wiki verwendeten Beispiele und deren Beschreibung gilt für die MQTT Version (alte Version). Da in Tasmota fast alles im WEBIF konfiguriert werden kann, entfallen daher sinngemäß einige hier im Wiki erklärten Definitionen, speziell in der &amp;quot;user_config.h&amp;quot;.&lt;br /&gt;
Trotz diesem Komfort müssen die Einstellungen aber nun im WEBIF vorgenommen werden, die wohl wichtigste ist die Auswahl der verwendeten Hardware (Sonoff POW etc.).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ESPEasy flashen==&lt;br /&gt;
[[Datei:sonoff_sw_6.jpg|thumb|left|alt=sonoff mit angestecktem FDTI Adapter]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier geht es ausschließlich um die Software ESPEasy an den sonoff Modulen! }}&lt;br /&gt;
Die Spannungsversorgung des Sonoff Moduls wird hier vom FTDI Konverter mit 3.3V über die Verbindungskabel zum Pfostenstecker durchgeführt. &lt;br /&gt;
&lt;br /&gt;
Der FTDI Adapter wird dann mit der USB Schnittstelle mit dem Computer verbunden.&lt;br /&gt;
&lt;br /&gt;
Zum compilieren wird in der Arduino Umgebung auch die ArduinoJson Library 5.6.4+ benötigt. Eine genaue Anleitung kann [https://forum.fhem.de/index.php/topic,55728.msg473220.html#msg473220 hier] nachgelesen werden. Es sollte stest die aktuelle Version der Arduino Umgebung verwendet werden, bzw. die Librarys auf Letztstand gehalten werden. &lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===mit Arduino compilieren===&lt;br /&gt;
[[Datei:sonoff_sw_10.jpg|thumb|left|alt=Einstellung Arduino IDE]]&lt;br /&gt;
Wer selber mit der Arduino IDE compilieren will bitte folgende Einstellungen beachten. Die anschließenden Arbeiten sind dann gleich wie bei Abschnitt &#039;&#039;&#039;fertige Binary&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Unbedingt die neueste [https://github.com/bblanchon/ArduinoJson Arduino Json Library] benutzen (siehe oben)! Es gibt zwar keine Compilerfehler, aber es kommt anschließend zu Fehlfunktionen in der ESP Bridge!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 Generic ESP8266 Module&lt;br /&gt;
 Flash Mode: QIO&lt;br /&gt;
 Flash Frequency: 40 MHz&lt;br /&gt;
 CPU Frequency: 80 MHz&lt;br /&gt;
 Flash Size: 1M (64K SPIFFS)&lt;br /&gt;
 Debug Port: disabled&lt;br /&gt;
 Debug Level: none&lt;br /&gt;
 Reset Mode: ck&lt;br /&gt;
 Upload Speed: 115200&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===fertige Binary flashen===&lt;br /&gt;
[[Datei:sonoff_sw_7.jpg|thumb|left|alt=NodeMCU Firmware Flasher]]&lt;br /&gt;
Es empfiehlt sich eine fertige Binary von ESPEasy aufzuspielen. In diesem Wiki wurde R140 verwendet.&lt;br /&gt;
&lt;br /&gt;
Siehe dazu auch den [http://www.esp8266.nu/index.php/Main_Page Link von ESPEasy] und das [https://learn.adafruit.com/building-and-running-micropython-on-the-esp8266/flash-firmware Handbuch] für den Flasher.&lt;br /&gt;
&lt;br /&gt;
In manchen Versionen von ESPEasy (zB.R120) ist auch ein Flasher beigelegt, welcher zwar keine grafische Oberfläche hat aber hervorragend funktioniert. Wenn andere versagen, geht es mit diesem Flasher immer noch, einfach probieren!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 Netzspannung darf &#039;NICHT&#039; angeschlossen sein!!!&lt;br /&gt;
 Taster am Sonoff gedrückt halten&lt;br /&gt;
 FTDI Adapter verbinden&lt;br /&gt;
 Taster am Sonoff los lassen&lt;br /&gt;
 Sketch übertragen&lt;br /&gt;
 Sonoff vom FTDI trennen&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Wenn einmal die Firmware auf das sonoff Modul geflasht worden ist, kann in Zukunft ESPEasy direkt unter Tools via HTTP dies durchführen. Es muss dazu kein FTDI Konverter mehr verwendet werden.&lt;br /&gt;
&lt;br /&gt;
==ESPEasy==&lt;br /&gt;
[[Datei:sonoff_sw_11.jpg|thumb|left|alt=ESPEasy Devices]]&lt;br /&gt;
Wenn das Modul fertig geflasht ist und die Verbindung zum Modul hergestellt ist, können die Einstellungen in ESPEasy durchgeführt werden.&lt;br /&gt;
Dazu am Webinterface anmelden und zunächst die zwei Devices definieren.&lt;br /&gt;
&lt;br /&gt;
Der Hersteller hat für das &#039;&#039;&#039;Relaise GPIO 12&#039;&#039;&#039; und für die &#039;&#039;&#039;grüne Led GPIO 13&#039;&#039;&#039; vorgesehen. Der &#039;&#039;&#039;Taster ist an GPIO 0&#039;&#039;&#039; angeschlossen.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Device Schalter===&lt;br /&gt;
[[Datei:sonoff_sw_12.jpg|thumb|left|alt=Device Relais]]&lt;br /&gt;
Bei den Devices sollten die hier dargestellte Einstellungen beachtet werden. Der Switch (PUMP) sollte auf Input gestellt werden, sodass die anschließenden und benötigten Rules aktiviert werden können.&lt;br /&gt;
&lt;br /&gt;
Da beide Devicenamen gleich benannt wurden (PUMP) wird in FHEM nur ein Device angelegt! Die dazugehörenden Valuenames sind unterschiedlich (Relay, Key).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Device Taster===&lt;br /&gt;
[[Datei:sonoff_sw_13.jpg|thumb|left|alt=Device Key]]&lt;br /&gt;
Der Taste muss natürlich nur konfiguriert werden, wenn auch händisch am Modul geschaltet werden soll. Wird dies nicht benötigt, können auch die Rules geändert bzw. angepasst werden. Doch alleine zu Testzwecken ist es eine nützliche Sache.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Rules===&lt;br /&gt;
[[Datei:sonoff_sw_14.jpg|thumb|left|alt=Rules]]&lt;br /&gt;
Da das sonoff Modul auch einen eingebauten Taster hat und somit auch lokal bedient werden kann, sollte man zunächst unter &#039;&#039;&#039;Tools / Advanced das Häckchen Rules&#039;&#039;&#039; aktivieren, erst dann wird der Tab sichtbar und es können Rules erstellt werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 on PUMP#Key do&lt;br /&gt;
  if [PUMP#Relay]=1&lt;br /&gt;
    gpio,12,0&lt;br /&gt;
  else&lt;br /&gt;
    gpio,12,1&lt;br /&gt;
  endif&lt;br /&gt;
 endon&lt;br /&gt;
 on PUMP#Relay do&lt;br /&gt;
  if [PUMP#Relay]=1 &lt;br /&gt;
    gpio,13,0&lt;br /&gt;
  else&lt;br /&gt;
    gpio,13,1&lt;br /&gt;
  endif&lt;br /&gt;
 endon&lt;br /&gt;
Diese Rules ermöglichen, das bei lokaler Bedienung durch den Taster auch die &#039;&#039;&#039;Led&#039;&#039;&#039; richtig geschaltet wird.&lt;br /&gt;
Mit &#039;on PUMP#Key do&#039; wird geprüft ob die Taste gedrückt ist und schaltet dann entsprechend die Led. Mit den Rules können auch Timer oder sonstige Spielereien realisiert werden. Siehe dazu das [http://www.esp8266.nu/index.php/Tutorial_Rules Tutorial] von ESPeasy.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ESPEasy in FHEM einrichten==&lt;br /&gt;
[[Datei:sonoff_sw_9.jpg|thumb|left|alt=FHEM Konfiguration]]&lt;br /&gt;
Dies ist eine einfache Darstellung wie FHEM automatisch den Device erstellt.&lt;br /&gt;
&lt;br /&gt;
Damit FHEM mit ESPEasy und dem sonoff Modul kommunizieren kann, muss in der fhem.cfg vorerst nur die espBridge mit dem hier dargestellten Eintrag aktiviert werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 define espBridge ESPEasy bridge 8383&lt;br /&gt;
Dies ist eigentlich die einzige Zeile die in fhem.cfg angelegt werden muss. Die restliche Konfiguration wird von FHEM automatisch generiert. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 ##########################################&lt;br /&gt;
 ###             ESPEASY               ####&lt;br /&gt;
 ##########################################&lt;br /&gt;
 &lt;br /&gt;
 define ESPEasy_sonoff_1_PUMP ESPEasy 10.0.0.37 80 espBridge sonoff_1_PUMP&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP IODev espBridge&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP devStateIcon on:rc_GREEN:off off:rc_RED:on absent:rc_BLUE:off gpio:rc_YELLOW:off&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP eventMap /gpio 12 on:on/gpio 12 off:off/gpio 12 gpio:off/gpio 12 output:off/&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP group ESPEasy Device&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP icon hue_filled_outlet&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP room ESPEasy&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP setState 0&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP stateFormat {ReadingsVal($name,&amp;quot;presence&amp;quot;,&amp;quot;&amp;quot;) eq &amp;quot;absent&amp;quot; ? &amp;quot;absent&amp;quot; : ReadingsVal($name,&amp;quot;Relay&amp;quot;,&amp;quot;&amp;quot;)}&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP webCmd :&lt;br /&gt;
&lt;br /&gt;
hier ein Beispiel wie es auch manuell leicht modifiziert werden kann.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_8.jpg|thumb|left|alt=sonoff Readings]]&lt;br /&gt;
&lt;br /&gt;
Die Readings werden durch die Bridge (Modul ESPEasy) automatisch angelegt.&lt;br /&gt;
&lt;br /&gt;
Es besteht hier noch genug Spielraum um zB. auch noch Temperatursensoren an das Modul anzuschließen und ebenfalls in FHEM darzustellen.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==MQTT Server einrichten==&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier geht es ausschließlich um den Sketch von Arends und MQTT an den sonoff Modulen! }}&lt;br /&gt;
Es bleibt jedem Anwender die freie Wahl ob die Kommunikation über die ESPEasy-Bridge oder MQTT erfolgen soll. MQTT ist bei der Einrichtung etwas komplexer, da hier auch auf dem Server der Broker installiert werden muss.&lt;br /&gt;
&lt;br /&gt;
Im wesentlichen beschränkt sich die Installation eines MQTT Servers aber auf wenige Arbeitsschritte und ist wie folgt beschrieben durchzuführen. Wer schon einen &#039;&#039;&#039;mosquitto&#039;&#039;&#039; auf dem Server installiert hat, kann diesen Schritt überspringen.&lt;br /&gt;
&lt;br /&gt;
Dieses Kapitel ist insofern interessant, da mit dem Sketch von Theo Arends auch die Einbindung der neuen sonoff Pow Module bereits möglich ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # aus dem mosquitto Repo installieren:&lt;br /&gt;
 wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key&lt;br /&gt;
 sudo apt-key add mosquitto-repo.gpg.key&lt;br /&gt;
 cd /etc/apt/sources.list.d/&lt;br /&gt;
 sudo wget http://repo.mosquitto.org/debian/mosquitto-wheezy.list&lt;br /&gt;
 # oder für jessie&lt;br /&gt;
 sudo wget http://repo.mosquitto.org/debian/mosquitto-jessie.list&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 # mosquitto installieren, sowie client Befehl mosquito_sub (gehört nicht zum Server, wird aber weiter unten benötigt)&lt;br /&gt;
 sudo apt-get install mosquitto mosquitto-clients&lt;br /&gt;
 &lt;br /&gt;
 # MQTT Server Test&lt;br /&gt;
 sudo service mosquitto status&lt;br /&gt;
&lt;br /&gt;
 # Start / Stop des Servers&lt;br /&gt;
 sudo service mosquitto stop&lt;br /&gt;
 sudo service mosquitto start&lt;br /&gt;
 &lt;br /&gt;
 # Perl Version ausgeben&lt;br /&gt;
 perl -v&lt;br /&gt;
 # Perl MQTT Module nachinstallieren (läuft ein paar Minuten)&lt;br /&gt;
 sudo cpan install Net::MQTT:Simple&lt;br /&gt;
 sudo cpan install Net::MQTT:Constants&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Software Arends Sketch===&lt;br /&gt;
[[Datei:sonoff_sw_22.jpg|thumb|left|alt=Arends Menü]]&lt;br /&gt;
&lt;br /&gt;
Ebenso bietet sich die Möglichkeit eine andere alternative Software auf den unterschiedlichen Sonoff Modellen aufzuspielen.&lt;br /&gt;
Speziell für diese Module zugeschnittene Software stammt vom Autor Theo Arends. Alle hier gezeigten Bildschirmfotos und Beispiele beziehen sich auf Basis der Version 2.0.11 (Stand 11.11.2016).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wichtig:&#039;&#039;&#039; erst &#039;&#039;&#039;ab Version 2.0.9&#039;&#039;&#039; sind die Berechnungsfehler und die Referenzfrequenzen für die Umrechnung der Leistungsdaten gefixt worden! Es wird daher angeraten immer die aktuellste Version zu verwenden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Links zu Theo Arend Github&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/arendst/Sonoff-MQTT-OTA-Arduino Download MQTT Sketch]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/arendst/Sonoff-MQTT-OTA-Arduino Arend GitHub]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/arendst/Sonoff-MQTT-OTA-Arduino/wiki Wiki]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; sollten Probleme mit dem ersten Login im Webinterface auftreten, hat der Autor vorgesorgt und mit speziellem wiederholten Tastendruck können verschiedene Modi aufgerufen werden: zB: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3 x Taste kurz drücken&#039;&#039;&#039; und eine Smartconfig wird gestartet und die &#039;&#039;&#039;SSID&#039;&#039;&#039; und das &#039;&#039;&#039;Passwort&#039;&#039;&#039; kann über diese [https://play.google.com/store/apps/details?id=com.cmmakerclub.iot.esptouch Android App] eingegeben werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4 x Taste kurz drücken&#039;&#039;&#039; und man bringt den Device in den &#039;&#039;&#039;Access Point Mode&#039;&#039;&#039; mit der IP-Adresse &#039;&#039;&#039;192.168.4.1&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bis zu 7 verschiedene Modi sind möglich, mehr dazu in Arends Wiki.&lt;br /&gt;
&lt;br /&gt;
[https://github.com/arendst/Sonoff-MQTT-OTA-Arduino/wiki/Button-usage Link zum Wiki Arends, Button]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_bv_01.jpg|thumb|left|alt=Arduino Boardverwalter]]&lt;br /&gt;
In der Arduino IDE unter Datei / Voreinstellungen im Feld &amp;quot;Zusätzliche Boardverwalter-URLs:&amp;quot; den Link: http://arduino.esp8266.com/stable/package_esp8266com_index.json einfügen. &lt;br /&gt;
&lt;br /&gt;
Dann unter &#039;&#039;&#039;Werkzeuge / Board / Boardverwalter&#039;&#039;&#039; ganz am Ende der Liste die Librarys für &amp;quot;esp8266 by ESP8266 Community&amp;quot; die letzte Version 2.3.0 installieren. [https://forum.fhem.de/index.php/topic,46205.msg534707.html#msg534707 Link zum Board].&lt;br /&gt;
&lt;br /&gt;
Das gesamte sonoff Verzeichnis aus [https://github.com/arendst/Sonoff-MQTT-OTA-Arduino/archive/master.zip Arendts Sketch] entpacken (ist wie hier verlinkt ein Zipfile) und dann aus diesem Verzeichnis die sonoff.ino öffnen. Es können dann alle zu dem Sketch zugehörigen Dateien angesehen/editiert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Anschließend muss noch die Datei &#039;&#039;&#039;user_config.h&#039;&#039;&#039; (im Unterverzeichnis &amp;quot;sonoff&amp;quot;) editiert werden. Die Abschnitte          &lt;br /&gt;
&lt;br /&gt;
 // Wifi&lt;br /&gt;
 // Syslog&lt;br /&gt;
 // Ota&lt;br /&gt;
 // MQTT&lt;br /&gt;
&lt;br /&gt;
müssen mit der eigenen &amp;quot;&#039;&#039;&#039;Ip-Adresse-Server&#039;&#039;&#039;&amp;quot;, &amp;quot;&#039;&#039;&#039;SSID&#039;&#039;&#039;&amp;quot; und &amp;quot;&#039;&#039;&#039;password&#039;&#039;&#039;&amp;quot; angepasst werden, das erleichtert den ersten Connect mit dem Modul. Seit der Version 2.1.2 können die WIFI Einstellungen 2-fach angegeben werden, somit wechselt das Device automatisch auf den 2. Wifi Hotspot wenn der erste nicht erreicht wird.&lt;br /&gt;
&lt;br /&gt;
 #define STA_SSID               &amp;quot;SSID&amp;quot;      // Wifi SSID&lt;br /&gt;
 #define STA_PASS               &amp;quot;password&amp;quot;  // Wifi password&lt;br /&gt;
 #define WIFI_HOSTNAME          &amp;quot;%s-%04d&amp;quot;         // Expands to &amp;lt;MQTT_TOPIC&amp;gt;-&amp;lt;last 4 decimal chars of MAC address&amp;gt;&lt;br /&gt;
 #define WIFI_CONFIG_TOOL       WIFI_WPSCONFIG    // Default tool if wifi fails to connect (WIFI_SMARTCONFIG, WIFI_MANAGER or WIFI_WPSCONFIG)&lt;br /&gt;
&lt;br /&gt;
 // Syslog&lt;br /&gt;
 #define SYS_LOG_HOST           &amp;quot;Ip-Adresse-Server&amp;quot;&lt;br /&gt;
 #define SYS_LOG_PORT           514&lt;br /&gt;
 #define SYS_LOG_LEVEL          LOG_LEVEL_NONE&lt;br /&gt;
 #define SERIAL_LOG_LEVEL       LOG_LEVEL_INFO&lt;br /&gt;
 #define WEB_LOG_LEVEL          LOG_LEVEL_INFO&lt;br /&gt;
&lt;br /&gt;
 // Ota&lt;br /&gt;
 #if (ARDUINO &amp;gt;= 168)&lt;br /&gt;
  #define OTA_URL              &amp;quot;http://Ip-Adresse-Server:80/api/arduino/&amp;quot; PROJECT &amp;quot;.ino.bin&amp;quot;&lt;br /&gt;
 #else&lt;br /&gt;
  #define OTA_URL              &amp;quot;http://Ip-Adresse-Server:80/api/arduino/&amp;quot; PROJECT &amp;quot;.cpp.bin&amp;quot;&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
 // MQTT&lt;br /&gt;
 #define MQTT_HOST              &amp;quot;Ip-Adresse-Server&amp;quot;&lt;br /&gt;
 #define MQTT_PORT              1883&lt;br /&gt;
&lt;br /&gt;
 #define MESSAGE_FORMAT         JSON         // [MessageFormat] MQTT Message Format (LEGACY or JSON)&lt;br /&gt;
 #define MQTT_STATUS_OFF        &amp;quot;OFF&amp;quot;        // Command or Status result when turned off (needs to be a string like &amp;quot;0&amp;quot; or &amp;quot;Off&amp;quot;)&lt;br /&gt;
 #define MQTT_STATUS_ON         &amp;quot;ON&amp;quot;         // Command or Status result when turned on (needs to be a string like &amp;quot;1&amp;quot; or &amp;quot;On&amp;quot;)&lt;br /&gt;
 #define MQTT_CMND_TOGGLE       &amp;quot;TOGGLE&amp;quot;     // Command to send when toggling (needs to be a string like &amp;quot;2&amp;quot; or &amp;quot;Toggle&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
In neueren Versionen (ab 3.2.8) wurde auch das Ausgabeformat von LEGACY auf JSON geändert. Gegebenenfalls ist auch hier auf LEGACY zu ändern, da alle Beispiele nur mit &amp;quot;LEGACY&amp;quot; funktionieren.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wichtig:&#039;&#039;&#039; Bei Verwendung des &#039;&#039;&#039;sonoff_POW&#039;&#039;&#039; muss dies ebenfalls in der user_config.h eingestellt werden, also das &amp;quot;SONOFF&amp;quot; sperren und das &amp;quot;&#039;&#039;&#039;SONOFF_POW&#039;&#039;&#039;&amp;quot; aktivieren (// setzen/entfernen). Wir dies nicht durchgeführt, werden auch keine Leistungsdaten via MQTT übertragen!!!&lt;br /&gt;
Ebenso muss in (%userprofile%\Documents\Arduino\libraries\pubsubclient\src\PubSubClient.h) die Max Packet Size auf 400 erhöht werden!&lt;br /&gt;
&lt;br /&gt;
  #define MQTT_MAX_PACKET_SIZE 400&lt;br /&gt;
  #define MQTT_KEEPALIVE 120&lt;br /&gt;
Anpassung der max. Packet Size auf 400 und das Keepalive auf 120&lt;br /&gt;
&lt;br /&gt;
 // Enable only one out of three MODULE defines below&lt;br /&gt;
 //#define MODULE                 SONOFF            // Sonoff, Sonoff SV, Sonoff Dual, Sonoff TH 10A/16A, S20 Smart Socket, 4 Channel&lt;br /&gt;
 #define MODULE                 SONOFF_POW        // Sonoff Pow&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Anschluß wird der Sketch mit der Arduino IDE (getestet mit 1.6.12) compiliert und die Binary dann exportiert (Sketch / Kompilierte Binärdatei exportieren). Die erzeugte .bin Datei dann mit dem Tool &amp;quot;ESP8266Flasher.exe&amp;quot; flashen, so wie auch bei ESPEasy. Wer nicht compilieren will, kann auch im Unterverzeichnis ./api/arduino/ die fertige Binary ( sonoff.ino ) benutzen, aber dann ohne Voreinstellung der lokalen IPs.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===MQTT testen===&lt;br /&gt;
[[Datei:sonoff_sw_20.jpg|thumb|left|alt=Arends Menü]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nach erfolgtem Flash des Modules kann das Webinterface des Moduls zum ersten Mal aufgerufen werden (im Router nach der IP des Moduls suchen).&lt;br /&gt;
&lt;br /&gt;
Es bieten sich hier mehrere Möglichkeiten die die weitere Einrichtung des Moduls unterstützen. Einfach die Menüpunkte durchprobieren, sie erklären sich von selbst. Für erste Tests empfiehlt sich die lokale Konsole um die Ereignisse aus Sicht des Modules mit verfolgen zu können. Alles was hier gesendet wird, sollte ebenfalls am Server mitgeloggt werden können. Wenn bis hierher alles funktioniert, kann dann mir der Konfiguration in FHEM beginnen.&lt;br /&gt;
&lt;br /&gt;
Der Name des Moduls kann unter &amp;quot;Configuration&amp;quot; -&amp;gt; &amp;quot;Configure MQTT&amp;quot; -&amp;gt; &amp;quot;Topic (sonoff)&amp;quot; nachgeschaut und geändert werden. In FHEM wird beim definieren des Moduls dieser Name in den subscribeReadings bzw. publishSets eingegeben um die Verbindung zum Modul herzustellen.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Am Server jetzt eine Konsole öffnen und folgende Topic (alle) einstellen.&lt;br /&gt;
&lt;br /&gt;
 mosquitto_sub -d -v -t \# &lt;br /&gt;
Mit dieser Einstellung werden alle Topics geloggt! &lt;br /&gt;
&lt;br /&gt;
 pi@raspberry ~ $ mosquitto_sub -d -v -t \#&lt;br /&gt;
 Received CONNACK&lt;br /&gt;
 Received SUBACK&lt;br /&gt;
 Subscribed (mid: 1): 0&lt;br /&gt;
 Received PUBLISH (d0, q0, r1, m0, &#039;/sonoff/36/temperature&#039;, ... (5 bytes))&lt;br /&gt;
 /sonoff/36/temperature 14.06&lt;br /&gt;
 Received PUBLISH (d0, q0, r1, m0, &#039;/sonoff/35/Count&#039;, ... (3 bytes))&lt;br /&gt;
 /sonoff/35/Count 0.0&lt;br /&gt;
 Received PUBLISH (d0, q0, r1, m0, &#039;/sonoff/35/Total&#039;, ... (3 bytes))&lt;br /&gt;
 /sonoff/35/Total 0.0&lt;br /&gt;
 Received PUBLISH (d0, q0, r1, m0, &#039;/sonoff/35/Time&#039;, ... (1 bytes))&lt;br /&gt;
 /sonoff/35/Time 0&lt;br /&gt;
 Received PUBLISH (d0, q0, r1, m0, &#039;/sonoff/temperature&#039;, ... (5 bytes))&lt;br /&gt;
 /sonoff/temperature 14.00&lt;br /&gt;
 Received PUBLISH (d0, q0, r1, m0, &#039;/sonoff/Count&#039;, ... (3 bytes))&lt;br /&gt;
 /sonoff/Count 0.0&lt;br /&gt;
 Received PUBLISH (d0, q0, r1, m0, &#039;/sonoff/Total&#039;, ... (3 bytes))&lt;br /&gt;
 /sonoff/Total 0.0&lt;br /&gt;
 Received PUBLISH (d0, q0, r1, m0, &#039;/sonoff/Time&#039;, ... (1 bytes))&lt;br /&gt;
 /sonoff/Time 0&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;stat/sonoff/1/POWER&#039;, ... (2 bytes))&lt;br /&gt;
 stat/sonoff/1/POWER ON&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;stat/sonoff/1/POWER&#039;, ... (3 bytes))&lt;br /&gt;
 stat/sonoff/1/POWER OFF&lt;br /&gt;
&lt;br /&gt;
Interessant sind für uns nun diese Einträge &amp;quot;stat/sonoff/1/POWER ON&amp;quot; , dazu am Taster des sonoff manuell umschalten. Dies entspricht genau der Syntax wie sie im Anschluss in FHEM dann zu verwenden ist.&lt;br /&gt;
&lt;br /&gt;
Mit diesen Einstellungen können dann entweder nach Telemetriedaten oder nach Statusmeldungen gefiltert werden. Dies ist jedoch nur notwendig wenn bereits andere MQTT Devices am Broker hängen und es sonst zu unübersichtlich wird.&lt;br /&gt;
 mosquitto_sub -h localhost -t tele/sonoff/#    = Telemetriedaten&lt;br /&gt;
 mosquitto_sub -h localhost -t stat/sonoff/#    = Statusmeldungen&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_21.jpg|thumb|left|alt=Arends Log]]&lt;br /&gt;
Sehr nützlich das lokale Log zur Fehlersuche und Inbetriebnahme.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Als Besonderheit benutzt der Autor zum Senden und Empfangen unterschiedliche Syntax und unterscheidet dies durch vorangestellte Prefixe vor der eigentlichen Topic.&lt;br /&gt;
#define SUB_PREFIX       &amp;quot;cmnd&amp;quot;       Sonoff devices subscribe to:- cmnd/MQTT_TOPIC and cmnd/MQTT_GRPTOPIC&lt;br /&gt;
#define PUB_PREFIX       &amp;quot;stat&amp;quot;       Sonoff devices publish to:- stat/MQTT_TOPIC&lt;br /&gt;
#define PUB_PREFIX2      &amp;quot;tele&amp;quot;       Sonoff devices publish telemetry data to:- tele/MQTT_TOPIC/UPTIME, POWER/LIGHT and TIME&lt;br /&gt;
Bitte dies unbedingt in der FHEM Konfiguration dann beachten!&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==MQTT in FHEM einrichten==&lt;br /&gt;
[[Datei:sonoff_sw_24.jpg|thumb|left|alt=FHEM sonoff Schalter]]&lt;br /&gt;
Dieser einfache Schalter kommuniziert bidirektional mit dem sonoff Device.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_25.jpg|thumb|left|alt=FHEM sonoff Schalter]]&lt;br /&gt;
Die Readings in diesem verwendeten Beispiel zeigen sich wie in FHEM gewohnt.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Einrichtung in FHEM wird von den Modulen 00_MQTT.pm, 10_MQTT_BRIDGE und 10_MQTT_DEVICE.pm unterstützt.&lt;br /&gt;
&lt;br /&gt;
[https://forum.fhem.de/index.php?topic=27532.0 Link zum Forum: MQTT FHEM Einrichtung]&lt;br /&gt;
&lt;br /&gt;
 ### 1. Broker anlegen ###&lt;br /&gt;
 define myBroker MQTT 10.0.0.5:1883&lt;br /&gt;
&lt;br /&gt;
 ### 2. FHEM Device mit MQTT verbinden ###&lt;br /&gt;
 define Sonoff_Switch MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Switch IODev myBroker&lt;br /&gt;
 attr Sonoff_Switch eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_Switch icon hue_filled_br30&lt;br /&gt;
 attr Sonoff_Switch publishSet ON OFF cmnd/sonoff/1/POWER/set&lt;br /&gt;
 attr Sonoff_Switch room MQTT&lt;br /&gt;
 attr Sonoff_Switch stateFormat Licht&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_Licht stat/sonoff/POWER&lt;br /&gt;
 # oder mit tele, je nachdem was in der user_config.h eingestellt wurde!!!&lt;br /&gt;
 #attr Sonoff_Switch subscribeReading_Licht tele/sonoff/POWER &lt;br /&gt;
 attr Sonoff_Switch subscribeReading_state cmnd/sonoff/1/POWER/set&lt;br /&gt;
 attr Sonoff_Switch webCmd ON:OFF&lt;br /&gt;
Der hier dargestellte Beispielcode realisiert die Kommunikation zwischen FHEM und dem sonoff Modul via MQTT Broker. Zu beachten ist hier, dass &#039;&#039;&#039;subscribeReading_Licht&#039;&#039;&#039; und &#039;&#039;&#039;subscribeReading_state&#039;&#039;&#039; unterschiedliche Syntax des Topic Strings haben!&lt;br /&gt;
&lt;br /&gt;
==Sonoff POW einrichten==&lt;br /&gt;
[[Datei:sonoff_sw_31.jpg|thumb|left|alt=Sonoff POW]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier geht es ausschließlich um das Modul Sonoff POW!}}&lt;br /&gt;
Das Modul kommt in gewohnter Itead Qualität und eine derart kostengünstige Energiemessung wird bei Smart Home Anwendern gerne eingesetzt. Die Originalsoftware habe ich nicht einmal getestet, da damit eine Anbindung an FHEM leider nicht möglich ist.&lt;br /&gt;
&lt;br /&gt;
Ebenso möchte kaum jemand an eine nicht dokumentierte chinesische Cloud die Steuerbefehle seiner Schalter senden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_sw_33.jpg|thumb|left|alt=Sonoff POW]]&lt;br /&gt;
Bitte auf keinen Fall das Modul während der Arbeiten an die Netzspannung anschießen. Zum Flashen genügt (und nur diese) die Versorgungspannung des USB-TTL Konverters. Wie auf dem Foto gut erkennbar, wurde dieses Modul ohne einlöten einer Pfostensteckerleiste geflasht. Die Steckverbindung wird einfach in die Lötaugen gesteckt und mit einem Gummiring fixiert, da ja spätere Flashvorgänge im Webif des Models funktionieren und so die Arbeit eingespart werden kann. Es steht jedoch nichts im Wege die Pfostensteckerleiste einzulöten.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Die Anschlüsse am Modul sind wie folgt belegt.&lt;br /&gt;
 o GND&lt;br /&gt;
 o TxD&lt;br /&gt;
 o RxD&lt;br /&gt;
 o VDD&lt;br /&gt;
&lt;br /&gt;
Für den Flashvorgang gelten die selben Regeln wie schon beim sonoff Switch oben erwähnt (3,3V!).&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Sonoff POW Software===&lt;br /&gt;
[[Datei:sonoff_sw_35.jpg|thumb|left|alt=Sonoff POW FHEM]]&lt;br /&gt;
Als Software steht im Augenblick nur der Sketch von Arends zur Verfügung, liefert aber alles was das Herz begehrt und ist ist einfach zu handhaben. Hier eine eine einfache Darstellung mit der aktuellen Leistung und dem Tagesverbrauch. Zusätzlich besteht auch noch die Möglichkeit den angeschlossenen Verbraucher Ein- oder Auszuschalten. Getestet wurde hier mit der Version 2.06, 2.07 und 2.019a von Arends.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_pow_02.jpg|thumb|left|alt=Sonoff POW Webif]]&lt;br /&gt;
Seit Version 2.0.19a ist auch die Leistungsanzeige im WEBIF wie im Bild links integriert. Auch der Energieverbrauch des Vortages wird mit angezeigt. Alle hier angezeigten Daten werden auch zyklisch im MQTT String an FHEM übergeben.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich kann im Sketch auch das Feature &amp;quot;&#039;&#039;&#039;Power_Limit&#039;&#039;&#039;&amp;quot; aktiviert werden ( #define FEATURE_POWER_LIMIT in der sonoff.ino). Wenn dies gewünscht ist, dann vor dem compilieren die beiden // entfernen. Mit dem Power_Limit wird eine zusätzliche Nachricht erzeugt, wenn ein bestimmter einstellbarer Grenzwert über- oder unterschritten wird. &lt;br /&gt;
&lt;br /&gt;
Es lassen sich dadurch Meldungen wie &amp;quot;Waschmaschine fertig&amp;quot; oder ähnliches ohne weitere Schwellwert Überwachungen in FHEM ableiten. Die Meldungen kommen in MQTT mit &amp;quot;&#039;&#039;&#039;tele/sonoff/POWER_LOW ON&#039;&#039;&#039;&amp;quot; bzw. &amp;quot;&#039;&#039;&#039;tele/sonoff/POWER_LOW OFF&#039;&#039;&#039;&amp;quot;.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Bevor der Sketch compiliert wird, müssen neben den IP-Einstellungen noch in der user_config.h auch andere Einstellungen vorgenommen werden.&lt;br /&gt;
&lt;br /&gt;
 #define MODULE                 SONOFF_POW       // Hardware module type (SONOFF, SONOFF_POW or ELECTRO_DRAGON)&lt;br /&gt;
 #define PROJECT                &amp;quot;sonoffpow&amp;quot;     // PROJECT is used as the default topic delimiter and OTA file name                                            // As an IDE restriction it needs to be the same as the main .ino file&lt;br /&gt;
&lt;br /&gt;
Der Typ des Modules muss von &amp;quot;SONOFF&amp;quot; auf &amp;quot;&#039;&#039;&#039;SONOFF_Pow&#039;&#039;&#039;&amp;quot; geändert werden,. damit die Software weiß mit welchem Modul es zu tun hat und kann dann die entsprechenden Berechnungen durchführen. Die Leistungsdaten kommen ja in Form einer Frequenz aus dem Baustein und müssen im Sketch (xsns_hlw8102.ino) umgerechnet werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #elif MODULE == SONOFF_POW                  // programming header 1:3.3V 2:rx 3:tx 4:gnd&lt;br /&gt;
  #define APP_NAME             &amp;quot;Sonoff Pow module&amp;quot;&lt;br /&gt;
  #define USE_POWERMONITOR                  // Enable Power Monitoring&lt;br /&gt;
  #define USE_POWERCALIBRATION              // Enable setting Calibration parameters by user commands&lt;br /&gt;
&lt;br /&gt;
Bei Einsatz des POW Modules kann die externe Kalibrierung aktiviert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Definition aus der power.ino (2.0.9) für die korrekte Umrechnung der gelieferten Frequenzen für die Leistungsdaten.&lt;br /&gt;
 #define HLW_PREF            10000    // 1000.0W&lt;br /&gt;
 #define HLW_UREF             2200    // 220.0V&lt;br /&gt;
 #define HLW_IREF             4545    // 4.545A&lt;br /&gt;
&lt;br /&gt;
 #define HLW_PREF_PULSE       4975    // 4975us = 201Hz = 1000W&lt;br /&gt;
 #define HLW_UREF_PULSE       1666    // 1666us = 600Hz = 220V&lt;br /&gt;
 #define HLW_IREF_PULSE       1666    // 1666us = 600Hz = 4.545A&lt;br /&gt;
                                            &lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_sw_36.jpg|thumb|left|alt=Sonoff POW Attribute]]&lt;br /&gt;
Dieses Bild zeigt die Attribute die vom Modul via MQTT an FHEM geliefert werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
aktuell gelieferte Readings (Mqtt Strings) vom Sketch nach unten dargestellter Definition in FHEM.&lt;br /&gt;
 tele/sonoffpow/TODAY_ENERGY    &lt;br /&gt;
 tele/sonoffpow/PERIOD_ENERGY   &lt;br /&gt;
 tele/sonoffpow/POWER_FACTOR   &lt;br /&gt;
 tele/sonoffpow/CURRENT_POWER  &lt;br /&gt;
 tele/sonoffpow/VOLTAGE         &lt;br /&gt;
 tele/sonoffpow/CURRENT        &lt;br /&gt;
&lt;br /&gt;
Hier ein Mittschnitt des Datenverkehrs zum Broker zwecks Kontrolle der korrekten Funktion der Module und der Software.&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff/RSSI&#039;, ... (2 bytes))&lt;br /&gt;
 tele/sonoff/RSSI 82&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff/TEMPERATURE&#039;, ... (3 bytes))&lt;br /&gt;
 tele/sonoff/TEMPERATURE 1.9&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff/HUMIDITY&#039;, ... (4 bytes))&lt;br /&gt;
 tele/sonoff/HUMIDITY 97.9&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff/POWER&#039;, ... (3 bytes))&lt;br /&gt;
 tele/sonoff/POWER OFF&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff/TIME&#039;, ... (19 bytes))&lt;br /&gt;
 tele/sonoff/TIME 2016-11-12T10:36:13&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/UPTIME&#039;, ... (1 bytes))&lt;br /&gt;
 tele/sonoffpow/UPTIME 1&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/RSSI&#039;, ... (2 bytes))&lt;br /&gt;
 tele/sonoffpow/RSSI 34&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/TODAY_ENERGY&#039;, ... (5 bytes))&lt;br /&gt;
 tele/sonoffpow/TODAY_ENERGY 0.083&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/PERIOD_ENERGY&#039;, ... (1 bytes))&lt;br /&gt;
 tele/sonoffpow/PERIOD_ENERGY 8&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/CURRENT_POWER&#039;, ... (2 bytes))&lt;br /&gt;
 tele/sonoffpow/CURRENT_POWER 97&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/POWER_FACTOR&#039;, ... (4 bytes))&lt;br /&gt;
 tele/sonoffpow/POWER_FACTOR 1.00&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/VOLTAGE&#039;, ... (3 bytes))&lt;br /&gt;
 tele/sonoffpow/VOLTAGE 225&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/CURRENT&#039;, ... (5 bytes))&lt;br /&gt;
 tele/sonoffpow/CURRENT 0.426&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/POWER&#039;, ... (2 bytes))&lt;br /&gt;
 tele/sonoffpow/POWER ON&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/TIME&#039;, ... (19 bytes))&lt;br /&gt;
 tele/sonoffpow/TIME 2016-11-12T10:36:28&lt;br /&gt;
 Sending PINGREQ&lt;br /&gt;
 Received PINGRESP&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Einstellungen können mit folgender Syntax angefordert werden (zwei Terminalfenster öffnen, eines zum protokollieren und eines zum Seden der Befehle).&lt;br /&gt;
 mosquitto_sub -d -v -t \#  MQTT Datenverkehr protokolieren&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/1/status/set -m &amp;quot;8&amp;quot;      = SonoffPOW Status jetzt auslesen&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/1/TelePeriod/set -m &amp;quot;60&amp;quot; = Timer setzen, alle 60 Sekunden Daten senden &lt;br /&gt;
Die Kommandos können direkt am Broker (Terminalfenster Putty etc.) abgesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sonoff POW Kalibrieren ===&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier wird beschrieben, wie der &#039;&#039;Sonoff POW kalibriert&#039;&#039; werden kann. }}&lt;br /&gt;
Ab Version 2.0.11 kann nun auch der POW kalibriert werden.&lt;br /&gt;
Dazu kann man 2 Konsolenfenster öffnen, im ersten aktiviert man das Protokoll für den Datenverkehr&lt;br /&gt;
 mosquitto_sub -d -v -t \#  MQTT Datenverkehr protokollieren&lt;br /&gt;
&lt;br /&gt;
Dann kann mit folgenden Befehlen die HLW Referenz Pulsfrequenz gesetzt werden.&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/1/HLWUCAL/set -m &amp;quot;2100&amp;quot;     default = 1950&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/1/HLWICAL/set -m &amp;quot;2450&amp;quot;     default = 3500&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/1/HLWPCAL/set -m &amp;quot;13500&amp;quot;    default = 12345 &lt;br /&gt;
Entweder man hat eine definierte Last zur Verfügung oder besser man misst mit einem Leistungsmesser nach. Die Spannung kann man mit einem Multimeter nachmessen (sollte 230 V sein) und der Strom wird errechnet (bei 100 Watt I = P / U ) = 100/230 = 0,4347.&lt;br /&gt;
Die Referenzwerte solange geringfügig ändern bis die Ausgabe passt. Für die Ausgabe wird einfach eine Statusabfrage durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/1/status/set -m &amp;quot;8&amp;quot;&lt;br /&gt;
Befehl für die Statusabfrage&lt;br /&gt;
&lt;br /&gt;
 cmnd/sonoffpow/1/status/set 8&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;stat/sonoffpow/1/STATUS&#039;, ... (103 bytes))&lt;br /&gt;
 stat/sonoffpow/1/STATUS PWR: Voltage 225 V, Current 0.427 A, Current Power 98 W, Total Power Today 0.080 kWh, Power Factor 1.00&lt;br /&gt;
Ergebnis der Statusabfrage mit Spannung, Strom und Leistung.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sonoff POW FHEM Anbindung===&lt;br /&gt;
Ein Beispiel einer einfachen Anbindung via MQTT an FHEM. MQTT ist insofern notwendig, da in der Software ESPEasy und der Bridge noch keine Implementierung der Frequenzumrechnung enthalten ist.&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Pow MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Pow IODev myBroker&lt;br /&gt;
 attr Sonoff_Pow eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_Pow icon measure_power&lt;br /&gt;
 attr Sonoff_Pow publishSet ON OFF cmnd/sonoffpow/1/POWER/set&lt;br /&gt;
 attr Sonoff_Pow room MQTT&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_Power tele/sonoffpow/POWER&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_state cmnd/sonoffpow/1/POWER/set&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_TODAY_ENERGY tele/sonoffpow/TODAY_ENERGY&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_PERIOD_ENERGY tele/sonoffpow/PERIOD_ENERGY&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_CURRENT_POWER tele/sonoffpow/CURRENT_POWER&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_VOLTAGE tele/sonoffpow/VOLTAGE &lt;br /&gt;
 attr Sonoff_Pow subscribeReading_CURRENT tele/sonoffpow/CURRENT&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_AKTUELL stat/sonoffpow/1/STATUS&lt;br /&gt;
 attr Sonoff_Pow webCmd ON:OFF&lt;br /&gt;
 attr Sonoff_Pow stateFormat {sprintf(&amp;quot;akutelle Leistung: %.1f W Tagesverbrauch: %.2f Kw/h&amp;quot;, ReadingsVal($name,&amp;quot;CURRENT_POWER&amp;quot;,undef), ReadingsVal($name,&amp;quot;TODAY_ENERGY&amp;quot;,undef))}&lt;br /&gt;
Zusätzlich kann hier noch das Relais mit &amp;quot;on&amp;quot; und &amp;quot;off&amp;quot; ein- ausgeschaltet werden. Ab Version 2.0.15 wurden hier die ReadingsNamen auf TODAY_ENERGY und PERIOD_ENERGY (anstatt _POWER) geändert.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Sonoff POW Netz-Anschluß===&lt;br /&gt;
[[Datei:sonoff_sw_34.jpg|thumb|left|alt=Sonoff POW Netzanschluß]]&lt;br /&gt;
Erst wenn alle Arbeiten an der Hard- und Software abgeschlossen sind, kann man das Modul an die Netzspannung anschließen. Wer es sich einfach machen will, nimmt eine Industriell gefertigte 230 V Verlängerung  (zwischen 1,5 - 3 Meter) und schneidet sie in der Mitte durch. Nach dem abisolieren der flexiblen Drähte sollte diese &#039;&#039;&#039;verlötet oder mit Aderendhülsen&#039;&#039;&#039; versehen werden (müssen aber exakt passen, da hier kaum Platz in den Klemmen ist). &lt;br /&gt;
Mit einem kleinen Schraubendreher kann man die Feder der Klemmen niederdrücken und das verzinnte Drahtende tief ich die Öffnung stecken. Es dürfen keine Drahtlitzen aus den Öffnungen sichtbar sein, Kurzschlußgefahr! Ebenso sollte eine Zugprobe durchgeführt werden ob die Klemme auch richtig eingerastet ist.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ACHTUNG:&#039;&#039;&#039; diese Arbeiten müssen von einem ausgebildeten Fachpersonal (Elektriker) durchgeführt werden, Lebensgefahr!&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sonoff POW Design===&lt;br /&gt;
&lt;br /&gt;
====ReadingsGroup normal====&lt;br /&gt;
[[Datei:sonoff_sw_46.jpg|thumb|left|alt=Sonoff POW Design]]&lt;br /&gt;
Viele Benutzer wollen schönere und funktionelle Ausgaben am Bildschirm sehen. Die Möglichkeiten nach oben sind hier sehr vielfältig. Anhand von zwei einfachen aber mächtigen Funktionen hier ein kleines Beispiel wie hier im Bild dargestellt.&lt;br /&gt;
&lt;br /&gt;
Was das Design betrifft, sind hier mehrere Möglichkeiten gegeben und nach oben ist für findige Anwender alles offen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zunächst wird mit dem Hilfsmodul &amp;quot;&#039;&#039;&#039;average&#039;&#039;&#039;&amp;quot; eine Art Statistik (Durchschnittsberechnung, Min.,Max., etc.) hinzugefügt. Das beschränkt sich auf eine einzige Zeile. Es würde sich auch &#039;&#039;&#039;statistic&#039;&#039;&#039; dazu eignen.&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Pow_CURRENT_POWER average Sonoff_Pow:CURRENT_POWER.*&lt;br /&gt;
Die &amp;quot;average&amp;quot; Funktion wird in das Device &amp;quot;Sonof_Pow&amp;quot; auf das Reading &amp;quot;CURRENT_POWER&amp;quot; hinzugefügt.&lt;br /&gt;
&lt;br /&gt;
Der zweite Schritt wird eine &#039;&#039;&#039;readingsGroup&#039;&#039;&#039; mit den gewünschten und gefilterten Ausgabedaten. Durch die verschiedenen IF Abfragen der unterschiedlichen VALUE wird bei über- oder unterschreiten eines Wertes eine bestimmte Farbe angewandt. Weitere Beispiele dazu siehe im Wiki unter [http://www.fhemwiki.de/wiki/ReadingsGroup readingsGroup]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 define SonoffPows readingsGroup &amp;lt;%measure_power&amp;gt;,&amp;lt;aktuell&amp;gt;,&amp;lt;Tag&amp;gt;,&amp;lt;Strom&amp;gt;,&amp;lt;Durchschnitt&amp;gt;,&amp;lt;max.P&amp;gt;,&amp;lt;Schaltzyklen&amp;gt;,&amp;lt; hr &amp;gt; .*(Sonoff_Pow|Sonoff_Pow2):CURRENT_POWER,TODAY_ENERGY,CURRENT,CURRENT_POWER_avg_day,CURRENT_POWER_max_day,PERIOD_ENERGY&lt;br /&gt;
 attr SonoffPows mapping %ALIAS&lt;br /&gt;
 attr SonoffPows nameStyle style=&amp;quot;color:yellow&amp;quot;&lt;br /&gt;
 attr SonoffPows room MQTT&lt;br /&gt;
 attr SonoffPows valueFormat {&#039;CURRENT_POWER&#039; =&amp;gt;&amp;quot;%.0f W&amp;quot;, &#039;TODAY_ENERGY&#039; =&amp;gt;&amp;quot;%.2f Kw&amp;quot;, &#039;CURRENT&#039; =&amp;gt;&amp;quot;%.2f A&amp;quot;,&#039;CURRENT_POWER_max_day&#039; =&amp;gt; &amp;quot;%.0f W&amp;quot;,&#039;CURRENT_POWER_avg_day&#039; =&amp;gt; &amp;quot;%.2f W&amp;quot;,&#039;PERIOD_ENERGY&#039;=&amp;gt;&amp;quot;%.0f Zyklen&amp;quot;}&lt;br /&gt;
 attr SonoffPows valueStyle { if($READING eq &amp;quot;CURRENT_POWER&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 0 &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;TODAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 4.8){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;TODAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 2.5){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;TODAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 2.5 &amp;amp;&amp;amp; $VALUE &amp;lt; 4.8 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 0.45){&#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039;}elsif( $READING eq &amp;quot;CURRENT&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 0.45 &amp;amp;&amp;amp; $VALUE &amp;lt; 0.87 ){&#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 0.87){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;PERIOD_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 10){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;PERIOD_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 10 &amp;amp;&amp;amp; $VALUE &amp;lt; 15 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;PERIOD_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 15){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; } }&lt;br /&gt;
&lt;br /&gt;
Die readingsGroup sind etwas komplex zu lesen, aber nach etwas Einarbeitung klappt das schon. Die in diesem Beispiel verwendeten Readingsnamen beziehen sich auf die Beispielkonfigurationen hier im Wiki.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
====ReadingsGroup mit Schaltmöglichkeit====&lt;br /&gt;
[[Datei:sonoff_pow_03.jpg|thumb|left|alt=readingsGroup mit Schalter]]&lt;br /&gt;
Die vorher erwähnte ReadingsGroup kann auch gleich mit einem Schalter versehen werden um den POW Ein- oder Aus schalten zu können. Dazu ist aber eine andere Einstellung im Sketch erforderlich.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der &amp;quot;&#039;&#039;&#039;user_config.h&#039;&#039;&#039;&amp;quot; muss an dieser Stelle auch die &amp;quot;&#039;&#039;&#039;PUB_PREFIX&#039;&#039;&#039;&amp;quot; auf die gleiche Topic wie &amp;quot;PUB_PREFIX2&amp;quot; eingestellt werden. Durch diese Maßnahme wird erreicht, dass sofort nach dem Knopfdruck auch der Status mit der Topic &amp;quot;tele&amp;quot; übertragen wird. Würde der weiterhin mit &amp;quot;stat&amp;quot; übertragen, kann er in der Readingsgroup nur sehr umständlich weiter behandelt werden. Dadurch wird erreicht, dass der Schalter sofort nach dem Schaltvorgang und der Rückmeldung (Status) auch seine Farbe ändert. Wird dieser Eintrag vergessen, ändert der Schalter erst nach Eintreffen der nächsten zyklischen Abfrage seinen Status/Farbe.&lt;br /&gt;
&lt;br /&gt;
 #define SUB_PREFIX             &amp;quot;cmnd&amp;quot;       // Sonoff devices subscribe to:- SUB_PREFIX/MQTT_TOPIC and SUB_PREFIX/MQTT_GRPTOPIC&lt;br /&gt;
 #define PUB_PREFIX             &amp;quot;tele&amp;quot;       // Sonoff devices publish to:- PUB_PREFIX/MQTT_TOPIC&lt;br /&gt;
 #define PUB_PREFIX2            &amp;quot;tele&amp;quot;       // Sonoff devices publish telemetry data to:- PUB_PREFIX2/MQTT_TOPIC/UPTIME, POWER/LIGHT and TIME&lt;br /&gt;
hier die PUB_PREFIX mit der geänderten Topic &amp;quot;tele&amp;quot; anstatt &amp;quot;stat&amp;quot; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 define SonoffPows readingsGroup &amp;lt;%measure_power&amp;gt;,&amp;lt;aktuell&amp;gt;,&amp;lt;Tag&amp;gt;,&amp;lt;Gestern&amp;gt;,&amp;lt;Strom&amp;gt;,&amp;lt;Durchschnitt&amp;gt;,&amp;lt;max.P&amp;gt;,&amp;lt;Zyklus&amp;gt;,&amp;lt;Faktor&amp;gt;,&amp;lt;Status&amp;gt;,&amp;lt; hr &amp;gt; .*(Sonoff_Pow|Sonoff_Pow2|Sonoff_Pow3):CURRENT_POWER,TODAY_ENERGY,YESTERDAY_ENERGY,CURRENT,CURRENT_POWER_avg_day,CURRENT_POWER_max_day,PERIOD_ENERGY,POWER_FACTOR,LIGHT&lt;br /&gt;
 attr SonoffPows commands {&#039;LIGHT.ON&#039; =&amp;gt; &#039;set $DEVICE OFF&#039;,&#039;LIGHT.OFF&#039; =&amp;gt; &#039;set $DEVICE ON&#039;}&lt;br /&gt;
 attr SonoffPows mapping %ALIAS&lt;br /&gt;
 attr SonoffPows nameStyle style=&amp;quot;color:yellow&amp;quot;&lt;br /&gt;
 attr SonoffPows room Energie,MQTT&lt;br /&gt;
 attr SonoffPows valueFormat {&#039;CURRENT_POWER&#039; =&amp;gt;&amp;quot;%.0f W&amp;quot;, &#039;TODAY_ENERGY&#039; =&amp;gt;&amp;quot;%.2f Kw&amp;quot;,&#039;YESTERDAY_ENERGY&#039; =&amp;gt;&amp;quot;%.2f Kw&amp;quot;, &#039;CURRENT&#039; =&amp;gt;&amp;quot;%.2f A&amp;quot;,&#039;CURRENT_POWER_max_day&#039; =&amp;gt; &amp;quot;%.0f W&amp;quot;,&#039;CURRENT_POWER_avg_day&#039; =&amp;gt; &amp;quot;%.2f W&amp;quot;,&#039;CURRENT_POWER&#039;=&amp;gt;&amp;quot;%.0f W&amp;quot;,&#039;POWER_FACTOR&#039; =&amp;gt; &amp;quot;%.2f &amp;quot;}&lt;br /&gt;
 attr SonoffPows valueIcon {&#039;LIGHT.ON&#039; =&amp;gt; &#039;rc_GREEN@green&#039;, &#039;LIGHT.OFF&#039; =&amp;gt; &#039;rc_RED@red&#039;}&lt;br /&gt;
 attr SonoffPows valueStyle { if($READING eq &amp;quot;CURRENT_POWER&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 0 &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;TODAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 4.8){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;TODAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 2.5){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;TODAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 2.5 &amp;amp;&amp;amp; $VALUE &amp;lt; 4.8 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;YESTERDAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 2.5){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;YESTERDAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 2.5 &amp;amp;&amp;amp; $VALUE &amp;lt; 4.8 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;YESTERDAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 4.8){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 0.45){&#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039;}elsif( $READING eq &amp;quot;CURRENT&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 0.45 &amp;amp;&amp;amp; $VALUE &amp;lt; 0.87 ){&#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 0.87){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;PERIOD_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 10){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;PERIOD_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 10 &amp;amp;&amp;amp; $VALUE &amp;lt; 15 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;PERIOD_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 15){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; } }&lt;br /&gt;
hier die erweiterte ReadingsGroup mit dem Schalter. Bei Bedarf sind hier die Devicenamen anzupassen wenn andere Namen verwendet werden (Sonoff_Pow|Sonoff_Pow2|Sonoff_Pow3).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====POW mit FTUI anzeigen====&lt;br /&gt;
[[Datei:sonoff_pow_energy.JPG|thumb|left|alt=Tablett FTUI]]&lt;br /&gt;
Wer möchte kann die Energieanzeigen auch mit der [https://forum.fhem.de/index.php/topic,34233.0.html Tablett UI] für eine Tablet Ansicht gestalten. Mit dieser stehen viele Möglichkeiten zu einer attraktiven Darstellung zur Verfügung.&lt;br /&gt;
Hier ein Beispiel welches mit den Widget &amp;quot;[http://www.fhemwiki.de/wiki/FHEM_Tablet_UI#Widget_THERMOSTAT thermostat]&amp;quot; dargestellt ist.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Slampher Flashen==&lt;br /&gt;
[[Datei:sonoff_sl_53.jpg|thumb|left|alt=Sonoff SLAMPHER]]&lt;br /&gt;
Dieses Modul ist eine Besonderheit was das Flashen betrifft, denn mit Hilfe des Tasters kann der ESP8266 NICHT in den Flashmode gebracht werden. Der Taster ist intern anderwärtig verdrahtet und somit für diesen Zweck nicht zu gebrauchen.&lt;br /&gt;
&lt;br /&gt;
Wie hier links im Bild zu sehen ist, muss der rechte Pin des R20 (oben im Bild) während dem Einstecken des USB Steckers auf Masse gelegt werden. Die beste Möglichkeit ist ein Stücken Draht anzulöten und diesen dann beim einstecken auf den Masse Pin des USB-Konverters zu legen.&lt;br /&gt;
&lt;br /&gt;
Pinbelegung des Steckers von oben nach unten:&lt;br /&gt;
 o - GND&lt;br /&gt;
 o - TxD&lt;br /&gt;
 o - RxD&lt;br /&gt;
 &#039;&#039;&#039;o&#039;&#039;&#039; - Vdd&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sl_51.jpg|thumb|left|alt=Sonoff SLAMPHER R20]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier ist genau ersichtlich, wo der R20 auf der Platine platziert ist. }}&lt;br /&gt;
Hier nocheinmal schön zu sehen wo der R20 (der ist nicht eingelötet sondern leer) exakt auf der Platine liegt, gemeint ist der rechte Pin. Hier kann auch leicht gelötet werden, da keine empfindlichen Bauteile in der Nähe sind und auch genug Platz vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_sl_50.jpg|thumb|left|alt=Sonoff SLAMPHER R20]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier ist genau ersichtlich, wo der Draht am R20 aufgelötet wurde }}&lt;br /&gt;
Hier ist ein kleines Stück Schaltdraht auf den Pin bereist aufgelötet und bereit zum Flashen!&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel wurde keine Pfostensteckerleiste auf die Platine aufgelötet, sondern nur durchgesteckt und mit einem Gummiring  zum Relais fixiert, das erspart den Lötvorgang, weil in Zukunft dann ohnehin OTA geflasht werden kann.&lt;br /&gt;
&lt;br /&gt;
Also Pin20 auf Masse legen und USB-Konverter an den PC einstecken, dann den Draht von der Masse entfernen. Der ESP8266 sollte jetzt im Flashmodus bereit stehen und kann wie bereits oben beschrieben geflasht werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sonoff Slampher Software===&lt;br /&gt;
[[Datei:sonoff_sl_54.jpg|thumb|left|alt=Sonoff SLAMPHER FHEM]]&lt;br /&gt;
&lt;br /&gt;
Als Software wird Arends Sketch installiert (Kommunikation über MQTT), da zum derzeitigen Zeitpunkt ESPEasy das Modul noch nicht integriert hat und somit auch nicht ansteuern kann.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_SL MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_SL IODev myBroker&lt;br /&gt;
 attr Sonoff_SL devStateIcon ON:rc_GREEN:OFF OFF:rc_RED:ON&lt;br /&gt;
 attr Sonoff_SL icon hue_filled_br30&lt;br /&gt;
 attr Sonoff_SL publishSet ON OFF cmnd/sonoffsl/1/POWER/set&lt;br /&gt;
 attr Sonoff_SL room Bewegung,_Sonoff&lt;br /&gt;
 attr Sonoff_SL stateFormat Licht&lt;br /&gt;
 attr Sonoff_SL subscribeReading_Licht tele/sonoffsl/POWER&lt;br /&gt;
 attr Sonoff_SL subscribeReading_state cmnd/sonoffsl/1/POWER/set&lt;br /&gt;
 attr Sonoff_SL webCmd ON:OFF&lt;br /&gt;
&lt;br /&gt;
Hier ein Beispiel wie in FHEM der Slampher eingebunden werden kann. In diesem Beispiel wird davon ausgegangen, das das Modul &amp;quot;sonoffsl&amp;quot; unter Konfiguration am WEBIF (Configure MQTT bei Topic) so unbenannt wurde. Wer einen anderen Namen haben möchte, muss dies dann auch in FHEM entsprechend anpassen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Th10/16 FHEM==&lt;br /&gt;
[[Datei:sonoff_th_01.jpg|thumb|left|alt=Sonoff TH10]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Temperatur Modul TH10 / 16! }}&lt;br /&gt;
Das Modul kann durch drücken des Tasters während dem Einstecken des USB-Konverters in den Flashmodus gebracht werden.&lt;br /&gt;
Der Th10/16 kann mit zwei unterschiedlichen Typen von Sensoren bestückt werden, hier im Beispiel mit dem externen Temperaturfühler DS18B20.&lt;br /&gt;
&lt;br /&gt;
Wie im Bild klar zu sehen ist, kann das Webif auch zur Darstellung via Mobile verwendet werden. Mit &amp;quot;Toggle&amp;quot; wird Ein- oder Aus geschaltet und  darunter ist die aktuelle Temperatur ersichtlich. Für diese Ansicht muss keine MQTT Verbindung eingerichtet werden, da die Kommunikation hier rein über HTTP erfolgt.&lt;br /&gt;
&lt;br /&gt;
Die unten dargestellten Beispiele für FHEM beziehen sich auf Arends Sketch, also über MQTT. Dieses Modul kann aber genauso leicht über ESPEasy und der ESPEasy-Bridge eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Pinbelegung des Steckers von oben nach unten:&lt;br /&gt;
 o - GND&lt;br /&gt;
 o - TxD&lt;br /&gt;
 o - RxD&lt;br /&gt;
 &#039;&#039;&#039;o&#039;&#039;&#039; - Vdd&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #define DSB_PIN              14           // GPIO 14 = DS18x20 (Sonoff_TH10A(16A), Sonoff SV)&lt;br /&gt;
 #define DSB_RESOLUTION       2            // Maximum number of decimals (0 - 3) showing Temperature&lt;br /&gt;
 // *** Option 1 - Single DS18B20 - Select either Option 1 OR Option 2&lt;br /&gt;
 #define SEND_TELEMETRY_DS18B20            // Enable sending single temperature telemetry&lt;br /&gt;
 // *** Option 2 - Multiple DS18B20 and/or DS18S20 (needs OneWire library!)&lt;br /&gt;
 //  #define SEND_TELEMETRY_DS18x20            // Enable sending multi temperature telemetry &lt;br /&gt;
In der user_config.h (Arends Sketch) muss hier die Option 1 aktiviert werden (entfernen der vorangestellten //) damit die Telemetriedaten auch gesendet werden. Es empfiehlt sich mindestens die Version &amp;gt;= V 2.0.16, weil hier die Sensoren erweitert wurden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #define DHT_PIN              14           // GPIO 14 = AM2301 (Sonoff_TH10A(16A), Sonoff SV)&lt;br /&gt;
 #define DHT_TYPE             AM2301       // DHT module type (DHT11, DHT21, DHT22, AM2301, AM2302 or AM2321)&lt;br /&gt;
 #define DHT_RESOLUTION       1            // Maximum number of decimals (0 - 3) showing Temperature&lt;br /&gt;
 #define SEND_TELEMETRY_DHT                // Enable sending temperature and humidity telemetry&lt;br /&gt;
Beispiel für den Sensor DHT22, Temperatur und Luftfeuchte. Es dürfen aber nicht beide Sensoren (DS18B20 + DHT22) gleichzeitig aktiviert werden, da ja beide an GPIO14 angehängt werden und es ansonsten zu Fehlfunktionen kommen würde.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_th_02.jpg|thumb|left|alt=Sonoff TH10]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Einbindung in FHEM via MQTT! }}&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ### Temperatur und Luftfeuchte vom Sonoff Switch ###&lt;br /&gt;
 define Sonoff_Temp MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Temp IODev myBroker&lt;br /&gt;
 attr Sonoff_Temp alias Pool Wasser&lt;br /&gt;
 attr Sonoff_Temp eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_Temp icon temperature_humidity&lt;br /&gt;
 attr Sonoff_Temp publishSet ON OFF cmnd/sonoffth/1/POWER/set&lt;br /&gt;
 attr Sonoff_Temp room _Sonoff&lt;br /&gt;
 attr Sonoff_Temp stateFormat {sprintf(&amp;quot;Temperatur: %.1f Grad&amp;quot;, ReadingsVal($name,&amp;quot;TEMPERATURE&amp;quot;,0))}&lt;br /&gt;
 attr Sonoff_Temp subscribeReading_TEMPERATURE tele/sonoffth/DS18B20/TEMPERATURE&lt;br /&gt;
 attr Sonoff_Temp subscribeReading_humidity tele/sonoffth/HUMIDITY&lt;br /&gt;
 attr Sonoff_Temp subscribeReading_state cmnd/sonoffth/1/POWER/set&lt;br /&gt;
Beispiel für FHEM mit Temperaturanzeige mit DS18B20&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Switch MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Switch IODev myBroker&lt;br /&gt;
 attr Sonoff_Switch alias Pool Licht&lt;br /&gt;
 attr Sonoff_Switch devStateIcon on:rc_GREEN:off off:rc_RED:on&lt;br /&gt;
 attr Sonoff_Switch eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_Switch icon light_ceiling&lt;br /&gt;
 attr Sonoff_Switch publishSet ON OFF cmnd/sonoffth/1/POWER/set&lt;br /&gt;
 attr Sonoff_Switch room _Sonoff&lt;br /&gt;
 attr Sonoff_Switch stateFormat Licht&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_Licht tele/sonoffth/POWER&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_state cmnd/sonoffth/1/POWER/set&lt;br /&gt;
 attr Sonoff_Switch webCmd ON:OFF&lt;br /&gt;
Der Schalter nochmals seperat dargestellt, je nach Geschmack.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff CH4 4-Kanal Schaltmodul==&lt;br /&gt;
[[Datei:sonoff_ch4_1.jpg|thumb|left|alt=Sonoff CH4]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Achtung andere Einstellungen der Arduino IDE: Select Board &amp;quot;Generic ESP8285 Module&amp;quot; (=Flash Mode &amp;quot;DOUT&amp;quot;) and Flash Size &amp;quot;1M (64K SPIFFS)&amp;quot;n! }}&lt;br /&gt;
&lt;br /&gt;
Der Sonoff CH4 ist mit seinen 4 Kanälen ein sehr preiswertes Modul im Gehäuse und für Hutschinenmontage. Anstatt des üblichen ESP8266 besitzt dieses Modul schon den moderneren &#039;&#039;&#039;ESP8285&#039;&#039;&#039;. Es müssen daher in der Arduino IDE andere Einstellungen vorgenommen werden. Unter Board wird hier das &amp;quot;&#039;&#039;&#039;Generic 8285 Module&#039;&#039;&#039;&amp;quot; mit &#039;&#039;&#039;1M und 64K Spiffs&#039;&#039;&#039; angewählt. Der Flashmode &amp;quot;&#039;&#039;&#039;DOUT&#039;&#039;&#039;&amp;quot; wird dann automatisch eingestellt, bzw. ausgeblendet.&lt;br /&gt;
&lt;br /&gt;
Das Modul ist etwas größer als die anderen Sonoff Produkte und besitzt mit 14,5 x 9 cm schon beachtliche Einbau Maße.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_ch4_2.jpg|thumb|left|alt=Sonoff CH4 FDTI]]&lt;br /&gt;
Als weitere Besonderheit sei hier erwähnt, das die Signale &#039;&#039;&#039;RxD auf RxD und TxD auf TxD&#039;&#039;&#039; des FTDI Konverters zu verbinden sind. Wie bei allen Sonoff Modulen darf man &#039;&#039;&#039;zum flashen keine Netzspannung anschließen&#039;&#039;&#039;, sondern nur über die Versorgungsspannung des FDTI Konverters mit 3,3 V versorgen (Jumper richtig setzen). Die Stiftleiste für den FTDI Anschluß ist hier schon eingelötet.&lt;br /&gt;
&lt;br /&gt;
In den Flashmodus gelangt man durch drücken der &#039;&#039;&#039;Taste FW/IO0&#039;&#039;&#039; während des einstecken des USB Anschlusses.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_ch4_3.jpg|thumb|left|alt=Sonoff CH4 Arends]]&lt;br /&gt;
Hier die Ansicht des Webinterface des Arends Sketches!&lt;br /&gt;
Bei der Software sei erwähnt, das die getestete Version 3.1.16 nur bei Kanal 1 den Modus &amp;quot;PulseTime&amp;quot; beherrscht. Wer also gepulste Ausgänge (zB: elektrische Garage/Toröffner) benötigt muss diese per Software nachbilden oder mit dem Kanal 1 auskommen. Eine &amp;quot;Pulsetime 10&amp;quot; ist ein guter Wert dafür (etwa 1 Sekunde). &lt;br /&gt;
&lt;br /&gt;
Als Alternative kann mit dieser HTML Seite des Webservers am Modul des CH4 schon mit jedem Browser fähigem Handy (Android, iPhone, Windows) aufgerufen werden und somit alle Funktionen gesteuert werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_ch4_4.jpg|thumb|left|alt=Sonoff CH4 Software APP]]&lt;br /&gt;
Hier dargestellt die Original Software die Sonoff zum Modul liefert (EWeLink) und über ihre Cloud verbindet. Leider kann hier keine gepulste Ausgabe erfolgen. Mit einem Countdown kann zwar der Ausgang wieder abgeschaltet werden, die kleinste Zeiteinheit ist aber 1 Minute und somit für einen Impuls leider nicht zu gebrauchen. Ebenso kann mit dieser Software keine Einbindung in FHEM erfolgen, obwohl es eine nette anschauliche Darstellung ist.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Erweiterungen=&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sonoff Switch mit Temperatur + Luftfeuchte== &lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier geht es um nützliche Hardware Erweiterungen an den Originalmodulen!}}&lt;br /&gt;
Wozu überhaupt den Switch erweitern wenn es auch die Modelle TH10 und TH16 gibt?&lt;br /&gt;
&lt;br /&gt;
Manche Personen können dadurch dem Basteltrieb nachkommen, aber das wesentliche ist der Preis, da die Switches doch fast um die Hälfte billiger sind. Die Sensoren kosten ebenfalls kaum nennenswerte Beträge.&lt;br /&gt;
&lt;br /&gt;
Oder es hat schon jemand Switches im Einsatz und möchte jetzt zusätzlich die Temperatur erfassen!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hardware erweitern mit DHT22 ===&lt;br /&gt;
[[Datei:sonoff_sw_4.PNG|thumb|left|alt=Sonoff Switch Pinleiste mit Temperatur]]&lt;br /&gt;
Am Sonoff Switch wurde ja schon eine Stiftleiste zum Flashen eingelötet. Diese Stiftleiste bietet schon alle Anschlüsse welche für die Temperatur- und Luftfeuchtemessung benötigt werden. Am 5. Anschluß der Stifftleiste ist das Signal &amp;quot;SCL&amp;quot; (GPIO14) herausgeführt, welches für den DHT22 zur Erfassung der Messdaten benötigt wird. Der Sonsor wird mit einem einem 3-poligen Kabel (zB: ein Steckkabel für ein Breadboard oder direkt anlöten) verbunden. Damit der DHT22 korrekt funktioniert, wird ein Widerstand mit 4,7 K Ohm zwischen Vdd und Data am DHT22 zusätzlich benötigt. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_45.jpg|thumb|left|alt=AM2302 / DHT22]]&lt;br /&gt;
&lt;br /&gt;
Ansicht des DHT22 (AM2302) mit den aufgesteckten Verbindungskabeln. Von links nach rechts sind das&lt;br /&gt;
&lt;br /&gt;
 1 = VCC 3,3 V&lt;br /&gt;
 2 = Data&lt;br /&gt;
 3 = nc (nicht belegt)&lt;br /&gt;
 4 = GND&lt;br /&gt;
&lt;br /&gt;
Pin1 (VCC) des DHT22 muss also auf Pin1 der Stiftleiste, Pin2 (Data) auf Pin5 und Pin4 (GND) auf Pin4. &lt;br /&gt;
Pin2 und Pin1 soll hier noch der Widerstand aufgelötet werden.&lt;br /&gt;
&lt;br /&gt;
 1 ------- 1 (VDD)&lt;br /&gt;
 2 ------- 5 (GPIO14)&lt;br /&gt;
 3&lt;br /&gt;
 4 ------- 4 (GND)&lt;br /&gt;
 DHT22  Stiftleiste&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_44.jpg|thumb|left|alt=umgebautes Modul]]&lt;br /&gt;
Diese Darstellung zeigt das umgebaute und bereits verschlossene Modul. Auf der Seite des Tasters (bitte nur hier, da auf der anderen Seite die 230 V verlaufen und neben der Lebensgefahr auch den Sensor beeinflussen) ist hier einfach mit einer Eisensäge ein Schlitz eingesägt, der dient in diesem Falle als Kabeldurchführung. Ein Schlitz ist besser als ein Loch, da der Oberteil des Gehäuses sich leichter aufsetzen läßt. Wer ein längeres Kabel benötigt, kann natürlich auch ein 3-poliges Telefonkabel (oder Mikrokabel oder sonstiges) verwenden. Der Sensor sollte etwas Abstand zum Gehäuse haben, da dieses auch eine Eigenerwärmung hat. Wer es ganz originalgetreu lösen will, kann auch eine 3-polige Mini Buchse für Klinckenstecker (3,5mm) einbauen so wie sie am TH10/16 vorhanden ist.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Software anpassen am Beispiel MQTT ===&lt;br /&gt;
[[Datei:sonoff_sw_40.jpg|thumb|left|alt=Sonoff MQTT]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wer über MQTT kommuniziert und die Software von Theo Arends benutzt, muss folgende Dinge beachten. In der Datei &#039;&#039;&#039;user_config.h&#039;&#039;&#039; müssen im Abschnitt &#039;&#039;&#039;Module = SONOFF&#039;&#039;&#039; die Slashes so wie unten dargestellt entfernt werden, damit erstens die Interrupts abgefragt werden und zweitens die Telemetriedaten gesendet werden. Ebenso ist der verwendete Sensor bei &amp;quot;&#039;&#039;&#039;define DHT_TYPE&#039;&#039;&#039;&amp;quot; eingestellt werden. In dem hier gezeigten Beispiel also &amp;quot;&#039;&#039;&#039;DHT22&#039;&#039;&#039;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #if MODULE == SONOFF                        // programming header 1:3.3V 2:rx 3:tx 4:gnd&lt;br /&gt;
  #define APP_NAME             &amp;quot;Sonoff module&amp;quot;&lt;br /&gt;
  #define LED_PIN              13           // GPIO 13 = Green/Blue Led (0 = On, 1 = Off) - Sonoff&lt;br /&gt;
  #define LED_INVERTED         1            // 0 = (1 = On, 0 = Off), 1 = (0 = On, 1 = Off)&lt;br /&gt;
  #define REL_PIN              12           // GPIO 12 = Red Led and Relay (0 = Off, 1 = On)&lt;br /&gt;
  #define KEY_PIN              0            // GPIO 00 = Button&lt;br /&gt;
 /*-------------------------------------------------------------------------------------------*/&lt;br /&gt;
  #define DSB_PIN              4            // GPIO 14 = DS18B20 (Sonoff_TH10A(16A), Sonoff SV)&lt;br /&gt;
  #define SEND_TELEMETRY_DS18B20            // Enable sending temperature telemetry&lt;br /&gt;
 /*-------------------------------------------------------------------------------------------*/&lt;br /&gt;
  #define DHT_PIN              14           // GPIO 14 = AM2301 (Sonoff_TH10A(16A), Sonoff SV)&lt;br /&gt;
  #define DHT_TYPE             DHT22        // DHT module type (DHT11, DHT21, DHT22, AM2301, AM2302 or AM2321)&lt;br /&gt;
  #define SEND_TELEMETRY_DHT                // Enable sending temperature and humidity telemetry&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Software Anpassung DHT22 in FHEM ===&lt;br /&gt;
[[Datei:sonoff_sw_41.jpg|thumb|left|alt=umgebautes Modul]]&lt;br /&gt;
&lt;br /&gt;
Links in der Hardcopy sind die Readings die nach der Anpassung von FHEM (Broker) befüllt werden sollten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ### Temperatur und Luftfeuchte vom Sonoff Switch ###&lt;br /&gt;
 define Sonoff_Temp MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Temp IODev myBroker&lt;br /&gt;
 attr Sonoff_Temp icon temperature_humidity&lt;br /&gt;
 attr Sonoff_Temp room MQTT&lt;br /&gt;
 attr Sonoff_Temp stateFormat {sprintf(&amp;quot;Temperatur: %.1f Grad Feuchte: %.1f &amp;quot;, ReadingsVal($name,&amp;quot;temperature&amp;quot;,0), ReadingsVal($name,&amp;quot;humidity&amp;quot;,0))}&lt;br /&gt;
 attr Sonoff_Temp subscribeReading_humidity tele/sonoff/HUMIDITY&lt;br /&gt;
 attr Sonoff_Temp subscribeReading_temperature tele/sonoff/TEMPERATURE&lt;br /&gt;
Als Beispiel die zusätzliche Erweiterung um die Temperatur und die Luftfeuchte in FHEM. Der in der Topic verwendete Name &amp;quot;sonoff&amp;quot; muss natürlich der Einstellung in der Software am Switch entsprechen. Bei Verwendung mehrerer Switches muss natürlich auch der Name bei jedem geändert werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Logfile für die Temperatur ===&lt;br /&gt;
 define SVG_FileLog_Sonoff_Temp SVG myDbLog:SVG_FileLog_Sonoff_Temp:HISTORY&lt;br /&gt;
 attr SVG_FileLog_Sonoff_Temp room MQTT&lt;br /&gt;
&lt;br /&gt;
Und schließlich fehlt noch das Logfile, damit der Temperaturverlauf auch in schönen Plots dargestellt werden kann.&lt;br /&gt;
Das hier verwendete Beispiel funktioniert nur mit einer DbLog.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Switch als Thermostat verwenden mit MQTT== &lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_55.jpg|thumb|left|alt=Thermostat]]&lt;br /&gt;
Mit diesem einfachen Beispiel wird ein Pelett Ofen mit einem externen Thermostat (sonoff Switch oder TH10/16) gesteuert. Zum besseren Überblick wird die Steuerung in einzelne Module getrennt, es könnte aber auch einiges zu einer einzigen Definition zusammen gefasst werden. Der Thermostat könnte auch als Frostwächter benutzt werden und ein anderes Heizgerät steuern.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 ###################################&lt;br /&gt;
 ### Sonoff Thermostat Regelung ####&lt;br /&gt;
 ###################################&lt;br /&gt;
 define Sonoff_dht MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_dht IODev myBroker&lt;br /&gt;
 attr Sonoff_dht alias Raumtemperatur&lt;br /&gt;
 attr Sonoff_dht group Thermostat&lt;br /&gt;
 attr Sonoff_dht icon temperature_humidity&lt;br /&gt;
 attr Sonoff_dht publishSet ON OFF cmnd/sonoff_dht/1/POWER/set&lt;br /&gt;
 attr Sonoff_dht room _Sonoff&lt;br /&gt;
 attr Sonoff_dht stateFormat {sprintf(&amp;quot;Temperatur: %.1f Grad Feuchte: %.1f &amp;quot;, ReadingsVal($name,&amp;quot;TEMPERATURE&amp;quot;,0),  ReadingsVal($name,&amp;quot;HUMIDITY&amp;quot;,0))}&lt;br /&gt;
 attr Sonoff_dht subscribeReading_HUMIDITY tele/sonoff_dht/DHT/HUMIDITY&lt;br /&gt;
 attr Sonoff_dht subscribeReading_TEMPERATURE tele/sonoff_dht/DHT/TEMPERATURE&lt;br /&gt;
 attr Sonoff_dht subscribeReading_state cmnd/sonoff_dht/1/POWER/set&lt;br /&gt;
FHEM Definition zur Erfassung der Temperatur und der Luftfeuchte. Damit dieses Beispiel funktioniert, ist am Sonoff Modul die Topic &amp;quot;&#039;&#039;&#039;sonoff_dht&#039;&#039;&#039;&amp;quot; zu setzen. Dieser Temperaturwert dient dem Thermostat als ISTWert.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Sw MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Sw IODev myBroker&lt;br /&gt;
 attr Sonoff_Sw alias Pellets Ofen&lt;br /&gt;
 attr Sonoff_Sw devStateIcon on:rc_GREEN:off off:rc_RED:on&lt;br /&gt;
 attr Sonoff_Sw eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_Sw group Thermostat&lt;br /&gt;
 attr Sonoff_Sw icon sani_boiler_temp&lt;br /&gt;
 attr Sonoff_Sw publishSet ON OFF cmnd/sonoff_dht/1/POWER/set&lt;br /&gt;
 attr Sonoff_Sw room _Sonoff&lt;br /&gt;
 attr Sonoff_Sw stateFormat Licht&lt;br /&gt;
 attr Sonoff_Sw subscribeReading_Licht tele/sonoff_dht/POWER&lt;br /&gt;
 attr Sonoff_Sw subscribeReading_state cmnd/sonoff_dht/1/POWER/set&lt;br /&gt;
 attr Sonoff_Sw webCmd ON:OFF&lt;br /&gt;
FHEM Definition zum Absetzen der Befehle für das Relais (Thermostat) Ein- / Aus. Wenn das zu steuernde Geräte einen potentialfreien Thermostatanschluß benötigt (in den meisten Fällen), muss noch ein Relais dazwischen geschaltet werden um die Trennung der Netzspannung zu gewährleisten.&lt;br /&gt;
&lt;br /&gt;
 define ThermostatPellets dummy&lt;br /&gt;
 attr ThermostatPellets alias Pellets Ofen Sollwert&lt;br /&gt;
 attr ThermostatPellets group Thermostat&lt;br /&gt;
 attr ThermostatPellets icon temp_control&lt;br /&gt;
 attr ThermostatPellets room _Sonoff&lt;br /&gt;
 attr ThermostatPellets setList state:0,5,10,12,13,14,15,16,17,17.5,18,18.5,19,19.5,20,20.5,21,21.5,22,23,24,25,26,27&lt;br /&gt;
 attr ThermostatPellets webCmd state&lt;br /&gt;
Die Sollwertvorgabe für das Thermostat durch einen Dummy, damit können die gewünschten Temperaturen eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
 ### sofort ausführen wenn neuer Sollwert eingestellt wird ###&lt;br /&gt;
 define Thermostat_on_notify notify ThermostatPellets IF (ReadingsVal(&amp;quot;Sonoff_Sw&amp;quot;,&amp;quot;state&amp;quot;,0) eq &amp;quot;OFF&amp;quot; &amp;amp;&amp;amp; (ReadingsVal(&amp;quot;Sonoff_dht&amp;quot;,&amp;quot;TEMPERATURE&amp;quot;,0) &amp;lt;= Value(&amp;quot;ThermostatPellets&amp;quot;))) (set Sonoff_Sw ON)&lt;br /&gt;
 define Thermostat_off_notify notify ThermostatPellets IF (ReadingsVal(&amp;quot;Sonoff_Sw&amp;quot;,&amp;quot;state&amp;quot;,0) eq &amp;quot;ON&amp;quot; &amp;amp;&amp;amp; (ReadingsVal(&amp;quot;Sonoff_dht&amp;quot;,&amp;quot;TEMPERATURE&amp;quot;,0) &amp;gt; Value(&amp;quot;ThermostatPellets&amp;quot;))) (set Sonoff_Sw OFF)&lt;br /&gt;
Mit einem notify wird die manuelle Änderung des Sollwertes überwacht und sofort reagiert.&lt;br /&gt;
&lt;br /&gt;
 ## zyklisch prüfen ob Sollwert erreicht wurde ###&lt;br /&gt;
 define Thermostat_on at +*00:15:00 IF (ReadingsVal(&amp;quot;Sonoff_Sw&amp;quot;,&amp;quot;Licht&amp;quot;,0) eq &amp;quot;OFF&amp;quot; &amp;amp;&amp;amp; (ReadingsVal(&amp;quot;Sonoff_dht&amp;quot;,&amp;quot;TEMPERATURE&amp;quot;,0) &amp;lt;= Value(&amp;quot;ThermostatPellets&amp;quot;))) (set Sonoff_Sw ON)&lt;br /&gt;
 define Thermostat_off at +*00:15:00 IF (Value(&amp;quot;Sonoff_Sw&amp;quot;) eq &amp;quot;ON&amp;quot; &amp;amp;&amp;amp; (ReadingsVal(&amp;quot;Sonoff_dht&amp;quot;,&amp;quot;TEMPERATURE&amp;quot;,0) &amp;gt; Value(&amp;quot;ThermostatPellets&amp;quot;))) (set Sonoff_Sw OFF)&lt;br /&gt;
Hier noch die Soll- Ist Wertvergleiche zur Steuerung. Es wird alle 15 Minuten überprüft ob die Temperatur erreicht ist. Bei einer trägen Heizung sollten 15 Minuten ausreichend sein, wer will kann dies aber auch alle 5 oder 10 Minuten prüfen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Switch mit Bewegungsmelder HC-SR501== &lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_pir_1.jpg|thumb|left|alt=Bewegungsmelder]]&lt;br /&gt;
Basierend auf dem Wall Switch MQTT Sketch von Arends wurde hier ein Sonoff BASIC + PIR HC-SR501 in eine größere Verteilerdose eingebaut, der Sonoff wurde dabei etwas gekürzt. Die Bewegungsmelder sind ab etwa 70 Cent erhältlich.&lt;br /&gt;
&lt;br /&gt;
Der Sketch kann auch den Blink Modus. Damit kann man im Alarmfall z.B. Alle Strahler rings ums Haus blinken lassen.&lt;br /&gt;
&lt;br /&gt;
Mehr dazu kann hier im [https://forum.fhem.de/index.php/topic,63824.0.html Forum]im Diskussionsthread nachgelesen werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_pir_2.jpg|thumb|left|alt=Bewegungsmelder]]&lt;br /&gt;
Ein Beispiel wir der Bewegungsmelder in der Feuchtraumdose montiert werden kann. Wird der Bewegungsmelder abgesetzt vom Switch montiert, ist darauf zu achten das die Kabel nicht zu lange werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
===Spannungsversorgung des HC-SR501===&lt;br /&gt;
[[Datei:sonoff_pir_4.jpg|thumb|left|alt=5V für Bewegungsmelder]]&lt;br /&gt;
Der HC-SR501 wird vom Sonoff versorgt, wobei hier die 3,3 V nicht immer ausreichen. Es ist deshalb am HC-SR501 eine Diode zu überbrücken, dann reichen die 3,3V vom Sonoff. Es können aber auch am Sonoff die 5V angezapft werden. Hier im Bild dargestellt wo die 5V angezapft werden können.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_pir_5.jpg|thumb|left|alt=3,3V für Bewegungsmelder]]&lt;br /&gt;
Hier eine kleine Übersicht der wichtigsten Teile und deren Platzierung am HC-SR501. &lt;br /&gt;
Den PIR kann man auch mit 3,3V betreiben wenn man die Diode am Eingang nach Vcc überbrückt, dann reicht die Spannung für einen reibungslosen Betrieb völlig aus. Dies gilt für den HC-SR501, wird ein anderer PIR verwendet muss man nachschauen ob das auch möglich ist, ansonsten die 5V Variante wählen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===Anpassung des Sketches mit Wall Switch===&lt;br /&gt;
Zur Vorbereitung des Sketches sind zunächst einige Einstellungen in der &amp;quot;user_config.h&amp;quot; durchzuführen.&lt;br /&gt;
&lt;br /&gt;
 #if MODULE == SONOFF                        // programming header 1:3.3V 2:rx 3:tx 4:gnd&lt;br /&gt;
  #define APP_NAME             &amp;quot;Sonoff 8266 module&amp;quot;&lt;br /&gt;
  #define MQTT_GRPTOPIC        &amp;quot;sonoffs&amp;quot;    // [GroupTopic] MQTT Group topic&lt;br /&gt;
 /*-------------------------------------------------------------------------------------------*/&lt;br /&gt;
  #define LED_PIN              13           // GPIO 13 = Green/Blue Led (0 = On, 1 = Off) - Sonoff&lt;br /&gt;
  #define LED_INVERTED         1            // 0 = (1 = On, 0 = Off), 1 = (0 = On, 1 = Off)&lt;br /&gt;
  #define REL_PIN              12           // GPIO 12 = Red Led and Relay (0 = Off, 1 = On)&lt;br /&gt;
  #define KEY_PIN              0            // GPIO 00 = Button&lt;br /&gt;
 /*-------------------------------------------------------------------------------------------*\&lt;br /&gt;
 * Wall switch and HC-SR501&lt;br /&gt;
 \*-------------------------------------------------------------------------------------------*/&lt;br /&gt;
  #define SWITCH_PIN           14           // GPIO 14 = Standard wall switch to Gnd (Sonoff_TH10A(16A), Sonoff SV)&lt;br /&gt;
  #define SWITCH_MODE          &#039;&#039;&#039;PUSHBUTTON_INV&#039;&#039;&#039;      // [SwitchMode] TOGGLE, FOLLOW, FOLLOW_INV, PUSHBUTTON or PUSHBUTTON_INV (the wall switch state)&lt;br /&gt;
  &#039;&#039;&#039;#define USE_WALL_SWITCH&#039;&#039;&#039;                   // Enable the use of a standard wall switch to control the relay&lt;br /&gt;
Wichtig ist dabei die vorangestellten Slahes // bei &amp;quot;#define USE_WALL_SWITCH&amp;quot; zu entfernen auf &#039;&#039;&#039;PUSHBUTTON_INV&#039;&#039;&#039; zu stellen. Dann kann der Sonoff Switch compiliert und geflasht werden.&lt;br /&gt;
&lt;br /&gt;
===Einbindung des HC-SR501 in FHEM===&lt;br /&gt;
 # ------------- Sonoff_pir mit Bewegungsmelder ---------------&lt;br /&gt;
 define Sonoff_pir MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_pir IODev myBroker&lt;br /&gt;
 attr Sonoff_pir eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_pir group Sonoff&lt;br /&gt;
 attr Sonoff_pir icon hue_filled_br30&lt;br /&gt;
 attr Sonoff_pir publishSet ON OFF cmnd/sonoff_pir/1/POWER/set&lt;br /&gt;
 attr Sonoff_pir room MQTT&lt;br /&gt;
 attr Sonoff_pir stateFormat Licht&lt;br /&gt;
 attr Sonoff_pir subscribeReading_Licht stat/sonoff_pir/POWER&lt;br /&gt;
 attr Sonoff_pir subscribeReading_state cmnd/sonoff_pir/1/POWER/set&lt;br /&gt;
 attr Sonoff_pir webCmd :&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel wie der Sonoff Switch in FHEM eingebunden wird. Wenn im Sketch der Prefix von stat auf tele geändert wurde, ist dies auch hier durchzuführen ( subscribeReading_Licht tele/sonoff_pir/POWER ), ansonsten bleibt es so wie im Beispiel. Getestet wurde dieses Beispiel mit Version 3.1.6. Die Topic sollte auf den Namen &amp;quot;sonoff_pir&amp;quot; eingestellt werden. Bei anderen Namen ist dies entsprechend in FHEM anzupassen. &lt;br /&gt;
&lt;br /&gt;
Mit dem Command &#039;&#039;&#039;BUTTONTOPIC Alarm_SO2&#039;&#039;&#039; ( direkt im Webinterface des Sonoff ) wird der Wall Switch GPIO14 vom Sonoff entkoppelt und somit sendet der Bewegungsmelder direkt an FHEM --&amp;gt; Motion_pir MQTT_DEVICE&lt;br /&gt;
&lt;br /&gt;
Es sollte auch unbedingt kontrolliert werden, wie die Ausgabe des Alarmes in der Console erfolgt. Erscheint hier die Meldung &amp;quot;cmnd/Alarm_SO2/POWER = TOGGLE&amp;quot; dann muss mit dem Kommando &amp;quot;&#039;&#039;&#039;switchmode 1&#039;&#039;&#039;&amp;quot; das Ausgabeformat umgeschaltet werden, erst dann kommt das gewünschte Format &amp;quot;On&amp;quot; und &amp;quot;OFF&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 # ------------------ Motion_pir MQTT_DEVICE -----------------&lt;br /&gt;
 define Motion_pir MQTT_DEVICE&lt;br /&gt;
 attr Motion_pir IODev myBroker&lt;br /&gt;
 attr Motion_pir devStateIcon on:on-for-timer off:off&lt;br /&gt;
 attr Motion_pir eventMap ON:on OFF:off&lt;br /&gt;
 attr Motion_pir group Sonoff&lt;br /&gt;
 attr Motion_pir icon people_sensor&lt;br /&gt;
 attr Motion_pir room MQTT&lt;br /&gt;
 attr Motion_pir stateFormat Alarm&lt;br /&gt;
 attr Motion_pir subscribeReading_Alarm cmnd/Alarm_SO2/POWER&lt;br /&gt;
Die Motion_pir dient nun zur eigentlichen Einschaltung des Lichtes und sendet das Kommando &#039;&#039;&#039;cmnd/Alarm_SO2/POWER&#039;&#039;&#039; an den entkopellten GPIO 14 des Switch.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # ------------------ DoIf zur Motion Abfrage -----------------&lt;br /&gt;
 define di_Sonoff_pir_Alarm DOIF ([Motion_pir:&amp;quot;on&amp;quot;] and [Tag_Nacht:twilight_weather] &amp;lt; 35) (set Sonoff_pir on) DOELSEIF ([Motion_pir:&amp;quot;off&amp;quot;] and [Tag_Nacht:twilight_weather] &amp;lt; 35) (set Sonoff_pir off)&lt;br /&gt;
 attr di_Sonoff_pir_Alarm comment Abhängig von Helligkeitssensor wird nachts,bei Bewegung das Licht eingeschaltet!&lt;br /&gt;
 attr di_Sonoff_pir_Alarm group Sonoff&lt;br /&gt;
 attr di_Sonoff_pir_Alarm room MQTT&lt;br /&gt;
Zusätzlich kann nun mit einem &#039;&#039;&#039;Doif&#039;&#039;&#039; verknüpft werden um das Ganze mit Tag_Nacht:twilight_weather dann in Abhängigkeit der Helligkeit zu schalten. Selbstverständlich kann jede andere Quelle mit einem Helligkeitswert verwendet werden.&lt;br /&gt;
&lt;br /&gt;
===Alarmausgabe über Grouptopic===&lt;br /&gt;
 # ------------------------ Sonoffs Group ----------------------&lt;br /&gt;
 define Sonoffs MQTT_DEVICE&lt;br /&gt;
 attr Sonoffs IODev myBroker&lt;br /&gt;
 attr Sonoffs eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoffs group Sonoff&lt;br /&gt;
 attr Sonoffs icon hue_filled_br30&lt;br /&gt;
 attr Sonoffs publishSet ON OFF cmnd/sonoffs/1/POWER/set&lt;br /&gt;
 attr Sonoffs room MQTT&lt;br /&gt;
 attr Sonoffs stateFormat state&lt;br /&gt;
 attr Sonoffs subscribeReading_Licht stat/sonoffs/1/POWER&lt;br /&gt;
 attr Sonoffs subscribeReading_state cmnd/sonoffs/1/POWER/set&lt;br /&gt;
Wer möchte kann auch mit der Group Topic mehrere Switches mit Bewegungsmelder zusammenfassen und alle Lampen im Alarmfall gemeinsam in den Blinkmodus schalten. cmnd/sonoffs ist das Kommando für die Group Topic, sofern diese vom User nicht verändert wurde.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:IP Components]]&lt;br /&gt;
--[[Benutzer:Reinhart|Reinhart]] ([[Benutzer Diskussion:Reinhart|Diskussion]]) 20:54, 5. Jan. 2017 (CET)&lt;/div&gt;</summary>
		<author><name>Reinhart</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Sonoff&amp;diff=19448</id>
		<title>Sonoff</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Sonoff&amp;diff=19448"/>
		<updated>2017-02-05T11:08:29Z</updated>

		<summary type="html">&lt;p&gt;Reinhart: Anpassung Syntax für HC-SR501&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;sonoff, dieser Artikel beschreibt die Ankopplung der kostengünstigen sonoff Module an FHEM mit ESPEasy oder MQTT.&#039;&#039;&#039;&lt;br /&gt;
{{Randnotiz|RNTyp=Fehl|RNText=Achtung: Arbeiten mit Netzspannung kann lebensgefährlich sein und darf nur von autorisiertem Fachpersonal durchgeführt werden!}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Seit einiger Zeit werden von der [https://www.itead.cc/sonoff-wifi-wireless-switch.html Fa. Itead] kostengünstige &amp;quot;sonoff&amp;quot; Produkte angeboten die glücklicherweise den [http://dl.itead.cc/IM151116002/0A-ESP8266_Specifications_v4.1.pdf ESP8266 Chip] On Board haben und somit die ideale Grundlage für [http://www.esp8266.nu/index.php/Main_Page ESPEasy] und für [https://forum.fhem.de/index.php/board,46.0.html FHEM] darstellen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nützliche Links zum Hersteller:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://www.itead.cc/blog/user-guide-for-sonoff-slampher User Manual von Itead]&lt;br /&gt;
&lt;br /&gt;
[https://www.itead.cc/wiki/images/6/6b/Sonoff_schmatic.pdf Sonoff Schaltplan]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Hardware=&lt;br /&gt;
&#039;&#039;&#039;Bitte unbedingt die elektrotechnischen Sicherheitsrichtlinien beachten und einhalten!&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_sw_15.jpg|thumb|left|alt=Warnung Netzspannung]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Achtung: An dem Modul liegt Netzspannung an die lebensgefährlich ist. Es dürfen nur entsprechend ausgebildete Personen dieses Modul in Betrieb nehmen. Zum Umbau und zur Softwareaktualisierung darf keine Netzspannung angeschlossen sein&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Wie gefährlich das hantieren mit Netzspannung sein kann, wird hier am Beispiel eines [http://mysku.ru/blog/china-stores/45762.html russischen Anwenders] gezeigt, der hat beim Flashen die Netzspannung am Modul gelassen und somit über die Verbindung mit dem Netzteil des Laptop lebensgefährliche Spannung auf die FTDI Schnittstelle gebracht. Das Modul ist dabei abgeraucht!&lt;br /&gt;
&lt;br /&gt;
==Modelle==&lt;br /&gt;
&lt;br /&gt;
===Produktübersichtsliste sonoff===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:right&amp;quot;&lt;br /&gt;
! Produkt Name !! Beschreibung !! Spannungsversorgung !!  Imax !! Pmax !! Frequenz !! Schaltplan !! Link&lt;br /&gt;
|-&lt;br /&gt;
| Sonoff || Wireless control switch || 90~250V AC || 10A || 2200W || 2.4Ghz || [http://wiki.iteadstudio.com/Sonoff Plan] || [https://www.itead.cc/smart-home/sonoff-wifi-wireless-switch.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| Sonoff RF || 433 RF remote || 90~250V AC || 10A || 2200W || 2.4Ghz || [http://wiki.iteadstudio.com/Sonoff_RF Plan] || [https://www.itead.cc/smart-home/im151116003.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| Sonoff SV || Low voltage Input || 5~24V DC || 10A || 240W DC || 2.4Ghz || [http://wiki.iteadstudio.com/Sonoff_SV Plan] || [https://www.itead.cc/smart-home/sonoff-sv.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| Sonoff TH10/TH16 || Monitor and set Temp.&amp;amp;Hum. ||  90~250V AC || 10A/16A || 2200W(10A)/3500W(16A)	 || 2.4Ghz || [http://wiki.iteadstudio.com/Sonoff_TH_10/16 Plan] || [https://www.itead.cc/smart-home/sonoff-th.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Sonoff Dual || Remote control 2 devices ||  90~250V AC || 16A || 3500W || 2.4Ghz || [https://www.itead.cc/wiki/Sonoff_Dual Plan] || [https://www.itead.cc/sonoff-dual.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Sonoff Pow || Report power &amp;amp;power usage ||  90~250V AC || 16A || 3500W || 2.4Ghz || [https://www.itead.cc/wiki/Sonoff_Pow Plan] || [https://www.itead.cc/sonoff-pow.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Sonoff LED || WiFi Control Dimming LED ||  180~265V AC || 0.3-0.6A || 42W || 2.4Ghz ||  kein || [https://www.itead.cc/sonoff-led.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Sonoff Touch || WiFi wall touch switch ||  90~250V AC || 2A || 400W || 2.4Ghz || kein || [https://www.itead.cc/sonoff-touch.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Slampher || Wireless control light holder ||  90~250V AC || 2A || 200W || 2.4Ghz || [http://wiki.iteadstudio.com/Slampher Plan] || [https://www.itead.cc/smart-home/slampher-wifi-wireless-light-holder.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  S20 Smart Socket || Smart socket || 	90~250V AC || 10A || 2000W || 2.4Ghz || kein || [https://www.itead.cc/smart-home/smart-socket-eu.html EU-Stecker] &lt;br /&gt;
|-&lt;br /&gt;
|  iFan || Smart fan ||  185~264V AC ||﹤1A || 60W || 2.4Ghz || kein || [https://www.itead.cc/smart-home/smart-socket-eu.html EU-Stecker] &lt;br /&gt;
|-&lt;br /&gt;
| Motor/Pump Control Switch || clockwise/anticlockwise running ||  5V/7~32V DC || 10A || 50~320W || 2.4Ghz || kein || [https://www.itead.cc/smart-home/motor-reversing-wifi-wireless-switch.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| 1 Chnl Inching/self-locking Switch || Access control ||  	5V/12V DC || 10A || 50/120W || 2.4Ghz || kein || [https://www.itead.cc/smart-home/inching-self-locking-wifi-wireless-switch.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  4 Chnl Inching/self-locking/inter-locking Switch || Access control, rolling door control ||  5V/5~32V DC/90~250V AC || 10A || 50~320W/2500W || 2.4Ghz || kein || [https://www.itead.cc/ifan.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Eine Übersichtliste der verschiedenen Produkte mit technischen Kurzangaben.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Model: IM151116002: Erstes Modell===&lt;br /&gt;
[https://www.itead.cc/sonoff-wifi-wireless-switch.html Sonoff WiFi Wireless Smart Switch for MQTT COAP Smart Home]&lt;br /&gt;
[[Datei:sonoff_sw_0.jpg|thumb|left|alt=sonoff Switch]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Das sonoff Modul ist in einem zweckmäßigen und gefälligem Gehäuse verbaut!&lt;br /&gt;
&lt;br /&gt;
====Platine====&lt;br /&gt;
[[Datei:sonoff_sw_1.jpg|thumb|left|alt=sonoff Switch von vorne]]&lt;br /&gt;
&lt;br /&gt;
Die Platine ist sehr übersichtlich aufgebaut und der Hersteller hat auch alle Vorbereitungen zum Flashen einer alternativen Software vorgesehen (über serielle Schnittstelle via FTDI-Modul). Mit einer alternativen Software wie ESPEasy ist eine direkte Ankopplung des &#039;&#039;&#039;sonoff&#039;&#039;&#039; an FHEM somit ein leicht durchführbarer Vorgang.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_3.jpg|thumb|left|alt=sonoff Switch von hinten]]&lt;br /&gt;
Die stromführenden Leitungen wurden mit Lötzinn vom Hersteller verstärkt um die angegebenen Stromstärken mit geringer Hitzeentwicklung zu transportieren.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung: Bitte vor den Arbeiten kontrollieren, das an der Platine keine Netzspannung angeschlossen ist, LEBENSGEFAHR!&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Model: IM160712005: TH 10A/16A ===&lt;br /&gt;
[https://www.itead.cc/sonoff-th.html Sonoff TH 10A/16A WiFi Smart Switch]&lt;br /&gt;
&lt;br /&gt;
====TH10 / TH16 weitere GPIO zugänglich machen====&lt;br /&gt;
[[Datei:Sonoff_TH_10A-16A_kleiner.jpg|thumb|left|alt=TH10 / TH16 weitere GPIO zugänglich machen]]&lt;br /&gt;
Der Hersteller hat zwar schon Platine für eine weitere Stiftleiste vorbereitet, jedoch muss diese noch bestückt werden. Die nicht beschalteten Stifte können dann genutzt werden um die &amp;quot;verdeckten&amp;quot; GPIO zugänglich zu machen. Die Verdrahtung kann dem Bild entnommen werden.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Achtung: Bitte vor den Arbeiten kontrollieren, das an der Platine keine Netzspannung angeschlossen ist, LEBENSGEFAHR!&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Model: IM160811001: Sonoff Dual ===&lt;br /&gt;
[https://www.itead.cc/sonoff-dual.html Sonoff Dual WiFi Wireless Smart Swtich]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Model: IM160810001: Sonoff Pow ===&lt;br /&gt;
[https://www.itead.cc/sonoff-pow.html Sonoff POW WiFi Switch with Power Consumption Measurement]&lt;br /&gt;
[[Datei:sonoff_sw_30.jpg|thumb|left|alt=SONOFF POW]]Ein sehr interessantes und kostengünstiges Modul zur Messung der aktuellen Leistung. Das Modul kann via MQTT in FHEM angebunden werden.&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel zur Einbindung ist [http://www.fhemwiki.de/wiki/Sonoff#Sonoff_POW_einrichten hier unten] im Wiki beschrieben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===Model: weitere Modelle===&lt;br /&gt;
[https://www.itead.cc/search/result/?cat=&amp;amp;q=sonoff Sonoff Weitere Modelle finden sich auf der Homepage des Hersstellers]&lt;br /&gt;
&lt;br /&gt;
==Vorbereitungen zum Flashen==&lt;br /&gt;
[[Datei:sonoff_sw_2.jpg|thumb|left|alt=serielle Schnittstelle]]&lt;br /&gt;
&lt;br /&gt;
Hier auf der Platine sind die benötigten Signale für ein FTDI Modul schon vorhanden. Der quadratische Pin gleich über dem Taster ist die Spannungsversorgung zum Flashen vom FDTI von 3.3V Es muss daher unbedingt ein FTDI Modul genommen werden, dass nicht nur einen Jumper für 3.3V besitzt sondern auch die Spannung auf 3.3V herab setzt. Ist dies nicht der Fall, läuft man Gefahr das Modul unbrauchbar zu machen. Es ist daher zu empfehlen einen Spannungsteiler mit 2 Widerständen oder einen Pegelwandler zwischenschalten.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Signale der Schnittstelle==&lt;br /&gt;
von oben nach unten auf der Steckerleiste des sonoff U4 (Model: IM151116002).&lt;br /&gt;
&lt;br /&gt;
 Pin5 = vorbereitet für GPIO&lt;br /&gt;
 Pin4 = Masse&lt;br /&gt;
 Pin3 = TxD&lt;br /&gt;
 Pin2 = RxD&lt;br /&gt;
 Pin1 = 3.3V&lt;br /&gt;
&lt;br /&gt;
Siehe dazu auch den [https://forum.fhem.de/index.php/topic,55036.0.html Link aus dem Forum]:&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Platine mit Stiftleiste bestücken==&lt;br /&gt;
[[Datei:sonoff_sw_4.jpg|thumb|left|alt=Platine mit Stiftleiste bestücken]]&lt;br /&gt;
Der Hersteller hat zwar schon die Platine vorbereitet, jedoch muss sie noch mit einer Stiftleiste bestückt werden um das FTDI Modul bequem verbinden zu können. Nachdem einmal ESPEasy geflasht worden ist, kann es in Zukunft via WEB (OTA) geflasht werden und die Stiftleiste ist dann nicht mehr erforderlich. Aufgrund der geringen Kosten fällt dies jedoch nicht ins Gewicht.&amp;lt;br&amp;gt;&lt;br /&gt;
Für die Module TH10/TH16 sind die Lötpunkte für die Stiftleiste schon beschriftet. Die Stiftleiste selber muss allerdings auch nachgerüstet werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Achtung&#039;&#039;&#039;: Bitte vor den Arbeiten kontrollieren, das an der Platine keine Netzspannung angeschlossen ist, LEBENSGEFAHR!&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Software=&lt;br /&gt;
==ESPEasy flashen==&lt;br /&gt;
[[Datei:sonoff_sw_6.jpg|thumb|left|alt=sonoff mit angestecktem FDTI Adapter]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier geht es ausschließlich um die Software ESPEasy an den sonoff Modulen! }}&lt;br /&gt;
Die Spannungsversorgung des sonoff Moduls wird hier vom FTDI Konverter mit 3.3V über die Verbindungskabel zum Pfostenstecker durchgeführt. &lt;br /&gt;
&lt;br /&gt;
Der FTDI Adapter wird dann mit der USB Schnittstelle mit dem Computer verbunden.&lt;br /&gt;
&lt;br /&gt;
Zum compilieren wird in der Arduino Umgebung auch die ArduinoJson library 5.6.4+ benötigt. Eine genaue Anleitung kann [https://forum.fhem.de/index.php/topic,55728.msg473220.html#msg473220 hier] nachgelesen werden. Im Gegensatz zu Arends Sketch für die MQTT Umgebung genügt hier die Arduino IDE 1.6.9. Für die Sketches von Arends empfiehlt sich Arduino IDE &amp;gt;=1.6.12&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===mit Arduino compilieren===&lt;br /&gt;
[[Datei:sonoff_sw_10.jpg|thumb|left|alt=Einstellung Arduino IDE]]&lt;br /&gt;
Wer selber mit der Arduino IDE compilieren will bitte folgende Einstellungen beachten. Die anschließenden Arbeiten sind dann gleich wie bei Abschnitt &#039;&#039;&#039;fertige Binary&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Unbedingt die neueste [https://github.com/bblanchon/ArduinoJson Arduino Json Library] benutzen (siehe oben)! Es gibt zwar keine Compilerfehler, aber es kommt anschließend zu Fehlfunktionen in der ESP Bridge!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 Generic ESP8266 Module&lt;br /&gt;
 Flash Mode: QIO&lt;br /&gt;
 Flash Frequency: 40 MHz&lt;br /&gt;
 CPU Frequency: 80 MHz&lt;br /&gt;
 Flash Size: 1M (64K SPIFFS)&lt;br /&gt;
 Debug Port: disabled&lt;br /&gt;
 Debug Level: none&lt;br /&gt;
 Reset Mode: ck&lt;br /&gt;
 Upload Speed: 115200&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===fertige Binary flashen===&lt;br /&gt;
[[Datei:sonoff_sw_7.jpg|thumb|left|alt=NodeMCU Firmware Flasher]]&lt;br /&gt;
Es empfiehlt sich eine fertige Binary von ESPEasy aufzuspielen. In diesem Wiki wurde R140 verwendet.&lt;br /&gt;
&lt;br /&gt;
Siehe dazu auch den [http://www.esp8266.nu/index.php/Main_Page Link von ESPEasy] und das [https://learn.adafruit.com/building-and-running-micropython-on-the-esp8266/flash-firmware Handbuch] für den Flasher.&lt;br /&gt;
&lt;br /&gt;
In manchen Versionen von ESPEasy (zB.R120) ist auch ein Flasher beigelegt, welcher zwar keine grafische Oberfläche hat aber hervorragend funktioniert. Wenn andere versagen, geht es mit diesem Flasher immer noch, einfach probieren!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 Netzspannung darf &#039;NICHT&#039; angeschlossen sein!!!&lt;br /&gt;
 Taster am Sonoff gedrückt halten&lt;br /&gt;
 FTDI Adapter verbinden&lt;br /&gt;
 Taster am Sonoff los lassen&lt;br /&gt;
 Sketch übertragen&lt;br /&gt;
 Sonoff vom FTDI trennen&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Wenn einmal die Firmware auf das sonoff Modul geflasht worden ist, kann in Zukunft ESPEasy direkt unter Tools via HTTP dies durchführen. Es muss dazu kein FTDI Konverter mehr verwendet werden.&lt;br /&gt;
&lt;br /&gt;
==ESPEasy==&lt;br /&gt;
[[Datei:sonoff_sw_11.jpg|thumb|left|alt=ESPEasy Devices]]&lt;br /&gt;
Wenn das Modul fertig geflasht ist und die Verbindung zum Modul hergestellt ist, können die Einstellungen in ESPEasy durchgeführt werden.&lt;br /&gt;
Dazu am Webinterface anmelden und zunächst die zwei Devices definieren.&lt;br /&gt;
&lt;br /&gt;
Der Hersteller hat für das &#039;&#039;&#039;Relaise GPIO 12&#039;&#039;&#039; und für die &#039;&#039;&#039;grüne Led GPIO 13&#039;&#039;&#039; vorgesehen. Der &#039;&#039;&#039;Taster ist an GPIO 0&#039;&#039;&#039; angeschlossen.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Device Schalter===&lt;br /&gt;
[[Datei:sonoff_sw_12.jpg|thumb|left|alt=Device Relais]]&lt;br /&gt;
Bei den Devices sollten die hier dargestellte Einstellungen beachtet werden. Der Switch (PUMP) sollte auf Input gestellt werden, sodass die anschließenden und benötigten Rules aktiviert werden können.&lt;br /&gt;
&lt;br /&gt;
Da beide Devicenamen gleich benannt wurden (PUMP) wird in FHEM nur ein Device angelegt! Die dazugehörenden Valuenames sind unterschiedlich (Relay, Key).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Device Taster===&lt;br /&gt;
[[Datei:sonoff_sw_13.jpg|thumb|left|alt=Device Key]]&lt;br /&gt;
Der Taste muss natürlich nur konfiguriert werden, wenn auch händisch am Modul geschaltet werden soll. Wird dies nicht benötigt, können auch die Rules geändert bzw. angepasst werden. Doch alleine zu Testzwecken ist es eine nützliche Sache.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Rules===&lt;br /&gt;
[[Datei:sonoff_sw_14.jpg|thumb|left|alt=Rules]]&lt;br /&gt;
Da das sonoff Modul auch einen eingebauten Taster hat und somit auch lokal bedient werden kann, sollte man zunächst unter &#039;&#039;&#039;Tools / Advanced das Häckchen Rules&#039;&#039;&#039; aktivieren, erst dann wird der Tab sichtbar und es können Rules erstellt werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 on PUMP#Key do&lt;br /&gt;
  if [PUMP#Relay]=1&lt;br /&gt;
    gpio,12,0&lt;br /&gt;
  else&lt;br /&gt;
    gpio,12,1&lt;br /&gt;
  endif&lt;br /&gt;
 endon&lt;br /&gt;
 on PUMP#Relay do&lt;br /&gt;
  if [PUMP#Relay]=1 &lt;br /&gt;
    gpio,13,0&lt;br /&gt;
  else&lt;br /&gt;
    gpio,13,1&lt;br /&gt;
  endif&lt;br /&gt;
 endon&lt;br /&gt;
Diese Rules ermöglichen, das bei lokaler Bedienung durch den Taster auch die &#039;&#039;&#039;Led&#039;&#039;&#039; richtig geschaltet wird.&lt;br /&gt;
Mit &#039;on PUMP#Key do&#039; wird geprüft ob die Taste gedrückt ist und schaltet dann entsprechend die Led. Mit den Rules können auch Timer oder sonstige Spielereien realisiert werden. Siehe dazu das [http://www.esp8266.nu/index.php/Tutorial_Rules Tutorial] von ESPeasy.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ESPEasy in FHEM einrichten==&lt;br /&gt;
[[Datei:sonoff_sw_9.jpg|thumb|left|alt=FHEM Konfiguration]]&lt;br /&gt;
Dies ist eine einfache Darstellung wie FHEM automatisch den Device erstellt.&lt;br /&gt;
&lt;br /&gt;
Damit FHEM mit ESPEasy und dem sonoff Modul kommunizieren kann, muss in der fhem.cfg vorerst nur die espBridge mit dem hier dargestellten Eintrag aktiviert werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 define espBridge ESPEasy bridge 8383&lt;br /&gt;
Dies ist eigentlich die einzige Zeile die in fhem.cfg angelegt werden muss. Die restliche Konfiguration wird von FHEM automatisch generiert. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 ##########################################&lt;br /&gt;
 ###             ESPEASY               ####&lt;br /&gt;
 ##########################################&lt;br /&gt;
 &lt;br /&gt;
 define ESPEasy_sonoff_1_PUMP ESPEasy 10.0.0.37 80 espBridge sonoff_1_PUMP&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP IODev espBridge&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP devStateIcon on:rc_GREEN:off off:rc_RED:on absent:rc_BLUE:off gpio:rc_YELLOW:off&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP eventMap /gpio 12 on:on/gpio 12 off:off/gpio 12 gpio:off/gpio 12 output:off/&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP group ESPEasy Device&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP icon hue_filled_outlet&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP room ESPEasy&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP setState 0&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP stateFormat {ReadingsVal($name,&amp;quot;presence&amp;quot;,&amp;quot;&amp;quot;) eq &amp;quot;absent&amp;quot; ? &amp;quot;absent&amp;quot; : ReadingsVal($name,&amp;quot;Relay&amp;quot;,&amp;quot;&amp;quot;)}&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP webCmd :&lt;br /&gt;
&lt;br /&gt;
hier ein Beispiel wie es auch manuell leicht modifiziert werden kann.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_8.jpg|thumb|left|alt=sonoff Readings]]&lt;br /&gt;
&lt;br /&gt;
Die Readings werden durch die Bridge (Modul ESPEasy) automatisch angelegt.&lt;br /&gt;
&lt;br /&gt;
Es besteht hier noch genug Spielraum um zB. auch noch Temperatursensoren an das Modul anzuschließen und ebenfalls in FHEM darzustellen.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==MQTT Server einrichten==&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier geht es ausschließlich um den Sketch von Arends und MQTT an den sonoff Modulen! }}&lt;br /&gt;
Es bleibt jedem Anwender die freie Wahl ob die Kommunikation über die ESPEasy-Bridge oder MQTT erfolgen soll. MQTT ist bei der Einrichtung etwas komplexer, da hier auch auf dem Server der Broker installiert werden muss.&lt;br /&gt;
&lt;br /&gt;
Im wesentlichen beschränkt sich die Installation eines MQTT Servers aber auf wenige Arbeitsschritte und ist wie folgt beschrieben durchzuführen. Wer schon einen &#039;&#039;&#039;mosquitto&#039;&#039;&#039; auf dem Server installiert hat, kann diesen Schritt überspringen.&lt;br /&gt;
&lt;br /&gt;
Dieses Kapitel ist insofern interessant, da mit dem Sketch von Theo Arends auch die Einbindung der neuen sonoff Pow Module bereits möglich ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # aus dem mosquitto Repo installieren:&lt;br /&gt;
 wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key&lt;br /&gt;
 sudo apt-key add mosquitto-repo.gpg.key&lt;br /&gt;
 cd /etc/apt/sources.list.d/&lt;br /&gt;
 sudo wget http://repo.mosquitto.org/debian/mosquitto-wheezy.list&lt;br /&gt;
 # oder für jessie&lt;br /&gt;
 sudo wget http://repo.mosquitto.org/debian/mosquitto-jessie.list&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 # mosquitto installieren, sowie client Befehl mosquito_sub (gehört nicht zum Server, wird aber weiter unten benötigt)&lt;br /&gt;
 sudo apt-get install mosquitto mosquitto-clients&lt;br /&gt;
 &lt;br /&gt;
 # MQTT Server Test&lt;br /&gt;
 sudo service mosquitto status&lt;br /&gt;
&lt;br /&gt;
 # Start / Stop des Servers&lt;br /&gt;
 sudo service mosquitto stop&lt;br /&gt;
 sudo service mosquitto start&lt;br /&gt;
 &lt;br /&gt;
 # Perl Version ausgeben&lt;br /&gt;
 perl -v&lt;br /&gt;
 # Perl MQTT Module nachinstallieren (läuft ein paar Minuten)&lt;br /&gt;
 sudo cpan install Net::MQTT:Simple&lt;br /&gt;
 sudo cpan install Net::MQTT:Constants&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Software Arends Sketch===&lt;br /&gt;
[[Datei:sonoff_sw_22.jpg|thumb|left|alt=Arends Menü]]&lt;br /&gt;
&lt;br /&gt;
Ebenso bietet sich die Möglichkeit eine andere alternative Software auf den unterschiedlichen Sonoff Modellen aufzuspielen.&lt;br /&gt;
Speziell für diese Module zugeschnittene Software stammt vom Autor Theo Arends. Alle hier gezeigten Bildschirmfotos und Beispiele beziehen sich auf Basis der Version 2.0.11 (Stand 11.11.2016).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wichtig:&#039;&#039;&#039; erst &#039;&#039;&#039;ab Version 2.0.9&#039;&#039;&#039; sind die Berechnungsfehler und die Referenzfrequenzen für die Umrechnung der Leistungsdaten gefixt worden! Es wird daher angeraten immer die aktuellste Version zu verwenden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Links zu Theo Arend Github&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/arendst/Sonoff-MQTT-OTA-Arduino Download MQTT Sketch]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/arendst/Sonoff-MQTT-OTA-Arduino Arend GitHub]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/arendst/Sonoff-MQTT-OTA-Arduino/wiki Wiki]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; sollten Probleme mit dem ersten Login im Webinterface auftreten, hat der Autor vorgesorgt und mit speziellem wiederholten Tastendruck können verschiedene Modi aufgerufen werden: zB: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3 x Taste kurz drücken&#039;&#039;&#039; und eine Smartconfig wird gestartet und die &#039;&#039;&#039;SSID&#039;&#039;&#039; und das &#039;&#039;&#039;Passwort&#039;&#039;&#039; kann über diese [https://play.google.com/store/apps/details?id=com.cmmakerclub.iot.esptouch Android App] eingegeben werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4 x Taste kurz drücken&#039;&#039;&#039; und man bringt den Device in den &#039;&#039;&#039;Access Point Mode&#039;&#039;&#039; mit der IP-Adresse &#039;&#039;&#039;192.168.4.1&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bis zu 7 verschiedene Modi sind möglich, mehr dazu in Arends Wiki.&lt;br /&gt;
&lt;br /&gt;
[https://github.com/arendst/Sonoff-MQTT-OTA-Arduino/wiki/Button-usage Link zum Wiki Arends, Button]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_bv_01.jpg|thumb|left|alt=Arduino Boardverwalter]]&lt;br /&gt;
In der Arduino IDE unter Datei / Voreinstellungen im Feld &amp;quot;Zusätzliche Boardverwalter-URLs:&amp;quot; den Link: http://arduino.esp8266.com/stable/package_esp8266com_index.json einfügen. &lt;br /&gt;
&lt;br /&gt;
Dann unter &#039;&#039;&#039;Werkzeuge / Board / Boardverwalter&#039;&#039;&#039; ganz am Ende der Liste die Librarys für &amp;quot;esp8266 by ESP8266 Community&amp;quot; die letzte Version 2.3.0 installieren. [https://forum.fhem.de/index.php/topic,46205.msg534707.html#msg534707 Link zum Board].&lt;br /&gt;
&lt;br /&gt;
Das gesamte sonoff Verzeichnis aus [https://github.com/arendst/Sonoff-MQTT-OTA-Arduino/archive/master.zip Arendts Sketch] entpacken (ist wie hier verlinkt ein Zipfile) und dann aus diesem Verzeichnis die sonoff.ino öffnen. Es können dann alle zu dem Sketch zugehörigen Dateien angesehen/editiert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Anschließend muss noch die Datei &#039;&#039;&#039;user_config.h&#039;&#039;&#039; (im Unterverzeichnis &amp;quot;sonoff&amp;quot;) editiert werden. Die Abschnitte          &lt;br /&gt;
&lt;br /&gt;
 // Wifi&lt;br /&gt;
 // Syslog&lt;br /&gt;
 // Ota&lt;br /&gt;
 // MQTT&lt;br /&gt;
&lt;br /&gt;
müssen mit der eigenen &amp;quot;&#039;&#039;&#039;Ip-Adresse-Server&#039;&#039;&#039;&amp;quot;, &amp;quot;&#039;&#039;&#039;SSID&#039;&#039;&#039;&amp;quot; und &amp;quot;&#039;&#039;&#039;password&#039;&#039;&#039;&amp;quot; angepasst werden, das erleichtert den ersten Connect mit dem Modul. Seit der Version 2.1.2 können die WIFI Einstellungen 2-fach angegeben werden, somit wechselt das Device automatisch auf den 2. Wifi Hotspot wenn der erste nicht erreicht wird.&lt;br /&gt;
&lt;br /&gt;
 #define STA_SSID               &amp;quot;SSID&amp;quot;      // Wifi SSID&lt;br /&gt;
 #define STA_PASS               &amp;quot;password&amp;quot;  // Wifi password&lt;br /&gt;
 #define WIFI_HOSTNAME          &amp;quot;%s-%04d&amp;quot;         // Expands to &amp;lt;MQTT_TOPIC&amp;gt;-&amp;lt;last 4 decimal chars of MAC address&amp;gt;&lt;br /&gt;
 #define WIFI_CONFIG_TOOL       WIFI_WPSCONFIG    // Default tool if wifi fails to connect (WIFI_SMARTCONFIG, WIFI_MANAGER or WIFI_WPSCONFIG)&lt;br /&gt;
&lt;br /&gt;
 // Syslog&lt;br /&gt;
 #define SYS_LOG_HOST           &amp;quot;Ip-Adresse-Server&amp;quot;&lt;br /&gt;
 #define SYS_LOG_PORT           514&lt;br /&gt;
 #define SYS_LOG_LEVEL          LOG_LEVEL_NONE&lt;br /&gt;
 #define SERIAL_LOG_LEVEL       LOG_LEVEL_INFO&lt;br /&gt;
 #define WEB_LOG_LEVEL          LOG_LEVEL_INFO&lt;br /&gt;
&lt;br /&gt;
 // Ota&lt;br /&gt;
 #if (ARDUINO &amp;gt;= 168)&lt;br /&gt;
  #define OTA_URL              &amp;quot;http://Ip-Adresse-Server:80/api/arduino/&amp;quot; PROJECT &amp;quot;.ino.bin&amp;quot;&lt;br /&gt;
 #else&lt;br /&gt;
  #define OTA_URL              &amp;quot;http://Ip-Adresse-Server:80/api/arduino/&amp;quot; PROJECT &amp;quot;.cpp.bin&amp;quot;&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
 // MQTT&lt;br /&gt;
 #define MQTT_HOST              &amp;quot;Ip-Adresse-Server&amp;quot;&lt;br /&gt;
 #define MQTT_PORT              1883&lt;br /&gt;
&lt;br /&gt;
 #define MESSAGE_FORMAT         JSON         // [MessageFormat] MQTT Message Format (LEGACY or JSON)&lt;br /&gt;
 #define MQTT_STATUS_OFF        &amp;quot;OFF&amp;quot;        // Command or Status result when turned off (needs to be a string like &amp;quot;0&amp;quot; or &amp;quot;Off&amp;quot;)&lt;br /&gt;
 #define MQTT_STATUS_ON         &amp;quot;ON&amp;quot;         // Command or Status result when turned on (needs to be a string like &amp;quot;1&amp;quot; or &amp;quot;On&amp;quot;)&lt;br /&gt;
 #define MQTT_CMND_TOGGLE       &amp;quot;TOGGLE&amp;quot;     // Command to send when toggling (needs to be a string like &amp;quot;2&amp;quot; or &amp;quot;Toggle&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
In neueren Versionen (ab 3.2.8) wurde auch das Ausgabeformat von LEGACY auf JSON geändert. Gegebenenfalls ist auch hier auf LEGACY zu ändern, da alle Beispiele nur mit &amp;quot;LEGACY&amp;quot; funktionieren.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wichtig:&#039;&#039;&#039; Bei Verwendung des &#039;&#039;&#039;sonoff_POW&#039;&#039;&#039; muss dies ebenfalls in der user_config.h eingestellt werden, also das &amp;quot;SONOFF&amp;quot; sperren und das &amp;quot;&#039;&#039;&#039;SONOFF_POW&#039;&#039;&#039;&amp;quot; aktivieren (// setzen/entfernen). Wir dies nicht durchgeführt, werden auch keine Leistungsdaten via MQTT übertragen!!!&lt;br /&gt;
Ebenso muss in (%userprofile%\Documents\Arduino\libraries\pubsubclient\src\PubSubClient.h) die Max Packet Size auf 400 erhöht werden!&lt;br /&gt;
&lt;br /&gt;
  #define MQTT_MAX_PACKET_SIZE 400&lt;br /&gt;
  #define MQTT_KEEPALIVE 120&lt;br /&gt;
Anpassung der max. Packet Size auf 400 und das Keepalive auf 120&lt;br /&gt;
&lt;br /&gt;
 // Enable only one out of three MODULE defines below&lt;br /&gt;
 //#define MODULE                 SONOFF            // Sonoff, Sonoff SV, Sonoff Dual, Sonoff TH 10A/16A, S20 Smart Socket, 4 Channel&lt;br /&gt;
 #define MODULE                 SONOFF_POW        // Sonoff Pow&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Anschluß wird der Sketch mit der Arduino IDE (getestet mit 1.6.12) compiliert und die Binary dann exportiert (Sketch / Kompilierte Binärdatei exportieren). Die erzeugte .bin Datei dann mit dem Tool &amp;quot;ESP8266Flasher.exe&amp;quot; flashen, so wie auch bei ESPEasy. Wer nicht compilieren will, kann auch im Unterverzeichnis ./api/arduino/ die fertige Binary ( sonoff.ino ) benutzen, aber dann ohne Voreinstellung der lokalen IPs.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===MQTT testen===&lt;br /&gt;
[[Datei:sonoff_sw_20.jpg|thumb|left|alt=Arends Menü]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nach erfolgtem Flash des Modules kann das Webinterface des Moduls zum ersten Mal aufgerufen werden (im Router nach der IP des Moduls suchen).&lt;br /&gt;
&lt;br /&gt;
Es bieten sich hier mehrere Möglichkeiten die die weitere Einrichtung des Moduls unterstützen. Einfach die Menüpunkte durchprobieren, sie erklären sich von selbst. Für erste Tests empfiehlt sich die lokale Konsole um die Ereignisse aus Sicht des Modules mit verfolgen zu können. Alles was hier gesendet wird, sollte ebenfalls am Server mitgeloggt werden können. Wenn bis hierher alles funktioniert, kann dann mir der Konfiguration in FHEM beginnen.&lt;br /&gt;
&lt;br /&gt;
Der Name des Moduls kann unter &amp;quot;Configuration&amp;quot; -&amp;gt; &amp;quot;Configure MQTT&amp;quot; -&amp;gt; &amp;quot;Topic (sonoff)&amp;quot; nachgeschaut und geändert werden. In FHEM wird beim definieren des Moduls dieser Name in den subscribeReadings bzw. publishSets eingegeben um die Verbindung zum Modul herzustellen.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Am Server jetzt eine Konsole öffnen und folgende Topic (alle) einstellen.&lt;br /&gt;
&lt;br /&gt;
 mosquitto_sub -d -v -t \# &lt;br /&gt;
Mit dieser Einstellung werden alle Topics geloggt! &lt;br /&gt;
&lt;br /&gt;
 pi@raspberry ~ $ mosquitto_sub -d -v -t \#&lt;br /&gt;
 Received CONNACK&lt;br /&gt;
 Received SUBACK&lt;br /&gt;
 Subscribed (mid: 1): 0&lt;br /&gt;
 Received PUBLISH (d0, q0, r1, m0, &#039;/sonoff/36/temperature&#039;, ... (5 bytes))&lt;br /&gt;
 /sonoff/36/temperature 14.06&lt;br /&gt;
 Received PUBLISH (d0, q0, r1, m0, &#039;/sonoff/35/Count&#039;, ... (3 bytes))&lt;br /&gt;
 /sonoff/35/Count 0.0&lt;br /&gt;
 Received PUBLISH (d0, q0, r1, m0, &#039;/sonoff/35/Total&#039;, ... (3 bytes))&lt;br /&gt;
 /sonoff/35/Total 0.0&lt;br /&gt;
 Received PUBLISH (d0, q0, r1, m0, &#039;/sonoff/35/Time&#039;, ... (1 bytes))&lt;br /&gt;
 /sonoff/35/Time 0&lt;br /&gt;
 Received PUBLISH (d0, q0, r1, m0, &#039;/sonoff/temperature&#039;, ... (5 bytes))&lt;br /&gt;
 /sonoff/temperature 14.00&lt;br /&gt;
 Received PUBLISH (d0, q0, r1, m0, &#039;/sonoff/Count&#039;, ... (3 bytes))&lt;br /&gt;
 /sonoff/Count 0.0&lt;br /&gt;
 Received PUBLISH (d0, q0, r1, m0, &#039;/sonoff/Total&#039;, ... (3 bytes))&lt;br /&gt;
 /sonoff/Total 0.0&lt;br /&gt;
 Received PUBLISH (d0, q0, r1, m0, &#039;/sonoff/Time&#039;, ... (1 bytes))&lt;br /&gt;
 /sonoff/Time 0&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;stat/sonoff/1/POWER&#039;, ... (2 bytes))&lt;br /&gt;
 stat/sonoff/1/POWER ON&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;stat/sonoff/1/POWER&#039;, ... (3 bytes))&lt;br /&gt;
 stat/sonoff/1/POWER OFF&lt;br /&gt;
&lt;br /&gt;
Interessant sind für uns nun diese Einträge &amp;quot;stat/sonoff/1/POWER ON&amp;quot; , dazu am Taster des sonoff manuell umschalten. Dies entspricht genau der Syntax wie sie im Anschluss in FHEM dann zu verwenden ist.&lt;br /&gt;
&lt;br /&gt;
Mit diesen Einstellungen können dann entweder nach Telemetriedaten oder nach Statusmeldungen gefiltert werden. Dies ist jedoch nur notwendig wenn bereits andere MQTT Devices am Broker hängen und es sonst zu unübersichtlich wird.&lt;br /&gt;
 mosquitto_sub -h localhost -t tele/sonoff/#    = Telemetriedaten&lt;br /&gt;
 mosquitto_sub -h localhost -t stat/sonoff/#    = Statusmeldungen&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_21.jpg|thumb|left|alt=Arends Log]]&lt;br /&gt;
Sehr nützlich das lokale Log zur Fehlersuche und Inbetriebnahme.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Als Besonderheit benutzt der Autor zum Senden und Empfangen unterschiedliche Syntax und unterscheidet dies durch vorangestellte Prefixe vor der eigentlichen Topic.&lt;br /&gt;
#define SUB_PREFIX       &amp;quot;cmnd&amp;quot;       Sonoff devices subscribe to:- cmnd/MQTT_TOPIC and cmnd/MQTT_GRPTOPIC&lt;br /&gt;
#define PUB_PREFIX       &amp;quot;stat&amp;quot;       Sonoff devices publish to:- stat/MQTT_TOPIC&lt;br /&gt;
#define PUB_PREFIX2      &amp;quot;tele&amp;quot;       Sonoff devices publish telemetry data to:- tele/MQTT_TOPIC/UPTIME, POWER/LIGHT and TIME&lt;br /&gt;
Bitte dies unbedingt in der FHEM Konfiguration dann beachten!&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==MQTT in FHEM einrichten==&lt;br /&gt;
[[Datei:sonoff_sw_24.jpg|thumb|left|alt=FHEM sonoff Schalter]]&lt;br /&gt;
Dieser einfache Schalter kommuniziert bidirektional mit dem sonoff Device.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_25.jpg|thumb|left|alt=FHEM sonoff Schalter]]&lt;br /&gt;
Die Readings in diesem verwendeten Beispiel zeigen sich wie in FHEM gewohnt.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Einrichtung in FHEM wird von den Modulen 00_MQTT.pm, 10_MQTT_BRIDGE und 10_MQTT_DEVICE.pm unterstützt.&lt;br /&gt;
&lt;br /&gt;
[https://forum.fhem.de/index.php?topic=27532.0 Link zum Forum: MQTT FHEM Einrichtung]&lt;br /&gt;
&lt;br /&gt;
 ### 1. Broker anlegen ###&lt;br /&gt;
 define myBroker MQTT 10.0.0.5:1883&lt;br /&gt;
&lt;br /&gt;
 ### 2. FHEM Device mit MQTT verbinden ###&lt;br /&gt;
 define Sonoff_Switch MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Switch IODev myBroker&lt;br /&gt;
 attr Sonoff_Switch eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_Switch icon hue_filled_br30&lt;br /&gt;
 attr Sonoff_Switch publishSet ON OFF cmnd/sonoff/1/POWER/set&lt;br /&gt;
 attr Sonoff_Switch room MQTT&lt;br /&gt;
 attr Sonoff_Switch stateFormat Licht&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_Licht stat/sonoff/POWER&lt;br /&gt;
 # oder mit tele, je nachdem was in der user_config.h eingestellt wurde!!!&lt;br /&gt;
 #attr Sonoff_Switch subscribeReading_Licht tele/sonoff/POWER &lt;br /&gt;
 attr Sonoff_Switch subscribeReading_state cmnd/sonoff/1/POWER/set&lt;br /&gt;
 attr Sonoff_Switch webCmd ON:OFF&lt;br /&gt;
Der hier dargestellte Beispielcode realisiert die Kommunikation zwischen FHEM und dem sonoff Modul via MQTT Broker. Zu beachten ist hier, dass &#039;&#039;&#039;subscribeReading_Licht&#039;&#039;&#039; und &#039;&#039;&#039;subscribeReading_state&#039;&#039;&#039; unterschiedliche Syntax des Topic Strings haben!&lt;br /&gt;
&lt;br /&gt;
==Sonoff POW einrichten==&lt;br /&gt;
[[Datei:sonoff_sw_31.jpg|thumb|left|alt=Sonoff POW]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier geht es ausschließlich um das Modul Sonoff POW!}}&lt;br /&gt;
Das Modul kommt in gewohnter Itead Qualität und eine derart kostengünstige Energiemessung wird bei Smart Home Anwendern gerne eingesetzt. Die Originalsoftware habe ich nicht einmal getestet, da damit eine Anbindung an FHEM leider nicht möglich ist.&lt;br /&gt;
&lt;br /&gt;
Ebenso möchte kaum jemand an eine nicht dokumentierte chinesische Cloud die Steuerbefehle seiner Schalter senden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_sw_33.jpg|thumb|left|alt=Sonoff POW]]&lt;br /&gt;
Bitte auf keinen Fall das Modul während der Arbeiten an die Netzspannung anschießen. Zum Flashen genügt (und nur diese) die Versorgungspannung des USB-TTL Konverters. Wie auf dem Foto gut erkennbar, wurde dieses Modul ohne einlöten einer Pfostensteckerleiste geflasht. Die Steckverbindung wird einfach in die Lötaugen gesteckt und mit einem Gummiring fixiert, da ja spätere Flashvorgänge im Webif des Models funktionieren und so die Arbeit eingespart werden kann. Es steht jedoch nichts im Wege die Pfostensteckerleiste einzulöten.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Die Anschlüsse am Modul sind wie folgt belegt.&lt;br /&gt;
 o GND&lt;br /&gt;
 o TxD&lt;br /&gt;
 o RxD&lt;br /&gt;
 o VDD&lt;br /&gt;
&lt;br /&gt;
Für den Flashvorgang gelten die selben Regeln wie schon beim sonoff Switch oben erwähnt (3,3V!).&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Sonoff POW Software===&lt;br /&gt;
[[Datei:sonoff_sw_35.jpg|thumb|left|alt=Sonoff POW FHEM]]&lt;br /&gt;
Als Software steht im Augenblick nur der Sketch von Arends zur Verfügung, liefert aber alles was das Herz begehrt und ist ist einfach zu handhaben. Hier eine eine einfache Darstellung mit der aktuellen Leistung und dem Tagesverbrauch. Zusätzlich besteht auch noch die Möglichkeit den angeschlossenen Verbraucher Ein- oder Auszuschalten. Getestet wurde hier mit der Version 2.06, 2.07 und 2.019a von Arends.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_pow_02.jpg|thumb|left|alt=Sonoff POW Webif]]&lt;br /&gt;
Seit Version 2.0.19a ist auch die Leistungsanzeige im WEBIF wie im Bild links integriert. Auch der Energieverbrauch des Vortages wird mit angezeigt. Alle hier angezeigten Daten werden auch zyklisch im MQTT String an FHEM übergeben.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich kann im Sketch auch das Feature &amp;quot;&#039;&#039;&#039;Power_Limit&#039;&#039;&#039;&amp;quot; aktiviert werden ( #define FEATURE_POWER_LIMIT in der sonoff.ino). Wenn dies gewünscht ist, dann vor dem compilieren die beiden // entfernen. Mit dem Power_Limit wird eine zusätzliche Nachricht erzeugt, wenn ein bestimmter einstellbarer Grenzwert über- oder unterschritten wird. &lt;br /&gt;
&lt;br /&gt;
Es lassen sich dadurch Meldungen wie &amp;quot;Waschmaschine fertig&amp;quot; oder ähnliches ohne weitere Schwellwert Überwachungen in FHEM ableiten. Die Meldungen kommen in MQTT mit &amp;quot;&#039;&#039;&#039;tele/sonoff/POWER_LOW ON&#039;&#039;&#039;&amp;quot; bzw. &amp;quot;&#039;&#039;&#039;tele/sonoff/POWER_LOW OFF&#039;&#039;&#039;&amp;quot;.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Bevor der Sketch compiliert wird, müssen neben den IP-Einstellungen noch in der user_config.h auch andere Einstellungen vorgenommen werden.&lt;br /&gt;
&lt;br /&gt;
 #define MODULE                 SONOFF_POW       // Hardware module type (SONOFF, SONOFF_POW or ELECTRO_DRAGON)&lt;br /&gt;
 #define PROJECT                &amp;quot;sonoffpow&amp;quot;     // PROJECT is used as the default topic delimiter and OTA file name                                            // As an IDE restriction it needs to be the same as the main .ino file&lt;br /&gt;
&lt;br /&gt;
Der Typ des Modules muss von &amp;quot;SONOFF&amp;quot; auf &amp;quot;&#039;&#039;&#039;SONOFF_Pow&#039;&#039;&#039;&amp;quot; geändert werden,. damit die Software weiß mit welchem Modul es zu tun hat und kann dann die entsprechenden Berechnungen durchführen. Die Leistungsdaten kommen ja in Form einer Frequenz aus dem Baustein und müssen im Sketch (xsns_hlw8102.ino) umgerechnet werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #elif MODULE == SONOFF_POW                  // programming header 1:3.3V 2:rx 3:tx 4:gnd&lt;br /&gt;
  #define APP_NAME             &amp;quot;Sonoff Pow module&amp;quot;&lt;br /&gt;
  #define USE_POWERMONITOR                  // Enable Power Monitoring&lt;br /&gt;
  #define USE_POWERCALIBRATION              // Enable setting Calibration parameters by user commands&lt;br /&gt;
&lt;br /&gt;
Bei Einsatz des POW Modules kann die externe Kalibrierung aktiviert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Definition aus der power.ino (2.0.9) für die korrekte Umrechnung der gelieferten Frequenzen für die Leistungsdaten.&lt;br /&gt;
 #define HLW_PREF            10000    // 1000.0W&lt;br /&gt;
 #define HLW_UREF             2200    // 220.0V&lt;br /&gt;
 #define HLW_IREF             4545    // 4.545A&lt;br /&gt;
&lt;br /&gt;
 #define HLW_PREF_PULSE       4975    // 4975us = 201Hz = 1000W&lt;br /&gt;
 #define HLW_UREF_PULSE       1666    // 1666us = 600Hz = 220V&lt;br /&gt;
 #define HLW_IREF_PULSE       1666    // 1666us = 600Hz = 4.545A&lt;br /&gt;
                                            &lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_sw_36.jpg|thumb|left|alt=Sonoff POW Attribute]]&lt;br /&gt;
Dieses Bild zeigt die Attribute die vom Modul via MQTT an FHEM geliefert werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
aktuell gelieferte Readings (Mqtt Strings) vom Sketch nach unten dargestellter Definition in FHEM.&lt;br /&gt;
 tele/sonoffpow/TODAY_ENERGY    &lt;br /&gt;
 tele/sonoffpow/PERIOD_ENERGY   &lt;br /&gt;
 tele/sonoffpow/POWER_FACTOR   &lt;br /&gt;
 tele/sonoffpow/CURRENT_POWER  &lt;br /&gt;
 tele/sonoffpow/VOLTAGE         &lt;br /&gt;
 tele/sonoffpow/CURRENT        &lt;br /&gt;
&lt;br /&gt;
Hier ein Mittschnitt des Datenverkehrs zum Broker zwecks Kontrolle der korrekten Funktion der Module und der Software.&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff/RSSI&#039;, ... (2 bytes))&lt;br /&gt;
 tele/sonoff/RSSI 82&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff/TEMPERATURE&#039;, ... (3 bytes))&lt;br /&gt;
 tele/sonoff/TEMPERATURE 1.9&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff/HUMIDITY&#039;, ... (4 bytes))&lt;br /&gt;
 tele/sonoff/HUMIDITY 97.9&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff/POWER&#039;, ... (3 bytes))&lt;br /&gt;
 tele/sonoff/POWER OFF&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff/TIME&#039;, ... (19 bytes))&lt;br /&gt;
 tele/sonoff/TIME 2016-11-12T10:36:13&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/UPTIME&#039;, ... (1 bytes))&lt;br /&gt;
 tele/sonoffpow/UPTIME 1&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/RSSI&#039;, ... (2 bytes))&lt;br /&gt;
 tele/sonoffpow/RSSI 34&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/TODAY_ENERGY&#039;, ... (5 bytes))&lt;br /&gt;
 tele/sonoffpow/TODAY_ENERGY 0.083&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/PERIOD_ENERGY&#039;, ... (1 bytes))&lt;br /&gt;
 tele/sonoffpow/PERIOD_ENERGY 8&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/CURRENT_POWER&#039;, ... (2 bytes))&lt;br /&gt;
 tele/sonoffpow/CURRENT_POWER 97&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/POWER_FACTOR&#039;, ... (4 bytes))&lt;br /&gt;
 tele/sonoffpow/POWER_FACTOR 1.00&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/VOLTAGE&#039;, ... (3 bytes))&lt;br /&gt;
 tele/sonoffpow/VOLTAGE 225&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/CURRENT&#039;, ... (5 bytes))&lt;br /&gt;
 tele/sonoffpow/CURRENT 0.426&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/POWER&#039;, ... (2 bytes))&lt;br /&gt;
 tele/sonoffpow/POWER ON&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/TIME&#039;, ... (19 bytes))&lt;br /&gt;
 tele/sonoffpow/TIME 2016-11-12T10:36:28&lt;br /&gt;
 Sending PINGREQ&lt;br /&gt;
 Received PINGRESP&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Einstellungen können mit folgender Syntax angefordert werden (zwei Terminalfenster öffnen, eines zum protokollieren und eines zum Seden der Befehle).&lt;br /&gt;
 mosquitto_sub -d -v -t \#  MQTT Datenverkehr protokolieren&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/1/status/set -m &amp;quot;8&amp;quot;      = SonoffPOW Status jetzt auslesen&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/1/TelePeriod/set -m &amp;quot;60&amp;quot; = Timer setzen, alle 60 Sekunden Daten senden &lt;br /&gt;
Die Kommandos können direkt am Broker (Terminalfenster Putty etc.) abgesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sonoff POW Kalibrieren ===&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier wird beschrieben, wie der &#039;&#039;Sonoff POW kalibriert&#039;&#039; werden kann. }}&lt;br /&gt;
Ab Version 2.0.11 kann nun auch der POW kalibriert werden.&lt;br /&gt;
Dazu kann man 2 Konsolenfenster öffnen, im ersten aktiviert man das Protokoll für den Datenverkehr&lt;br /&gt;
 mosquitto_sub -d -v -t \#  MQTT Datenverkehr protokollieren&lt;br /&gt;
&lt;br /&gt;
Dann kann mit folgenden Befehlen die HLW Referenz Pulsfrequenz gesetzt werden.&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/1/HLWUCAL/set -m &amp;quot;2100&amp;quot;     default = 1950&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/1/HLWICAL/set -m &amp;quot;2450&amp;quot;     default = 3500&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/1/HLWPCAL/set -m &amp;quot;13500&amp;quot;    default = 12345 &lt;br /&gt;
Entweder man hat eine definierte Last zur Verfügung oder besser man misst mit einem Leistungsmesser nach. Die Spannung kann man mit einem Multimeter nachmessen (sollte 230 V sein) und der Strom wird errechnet (bei 100 Watt I = P / U ) = 100/230 = 0,4347.&lt;br /&gt;
Die Referenzwerte solange geringfügig ändern bis die Ausgabe passt. Für die Ausgabe wird einfach eine Statusabfrage durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/1/status/set -m &amp;quot;8&amp;quot;&lt;br /&gt;
Befehl für die Statusabfrage&lt;br /&gt;
&lt;br /&gt;
 cmnd/sonoffpow/1/status/set 8&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;stat/sonoffpow/1/STATUS&#039;, ... (103 bytes))&lt;br /&gt;
 stat/sonoffpow/1/STATUS PWR: Voltage 225 V, Current 0.427 A, Current Power 98 W, Total Power Today 0.080 kWh, Power Factor 1.00&lt;br /&gt;
Ergebnis der Statusabfrage mit Spannung, Strom und Leistung.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sonoff POW FHEM Anbindung===&lt;br /&gt;
Ein Beispiel einer einfachen Anbindung via MQTT an FHEM. MQTT ist insofern notwendig, da in der Software ESPEasy und der Bridge noch keine Implementierung der Frequenzumrechnung enthalten ist.&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Pow MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Pow IODev myBroker&lt;br /&gt;
 attr Sonoff_Pow eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_Pow icon measure_power&lt;br /&gt;
 attr Sonoff_Pow publishSet ON OFF cmnd/sonoffpow/1/POWER/set&lt;br /&gt;
 attr Sonoff_Pow room MQTT&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_Power tele/sonoffpow/POWER&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_state cmnd/sonoffpow/1/POWER/set&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_TODAY_ENERGY tele/sonoffpow/TODAY_ENERGY&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_PERIOD_ENERGY tele/sonoffpow/PERIOD_ENERGY&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_CURRENT_POWER tele/sonoffpow/CURRENT_POWER&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_VOLTAGE tele/sonoffpow/VOLTAGE &lt;br /&gt;
 attr Sonoff_Pow subscribeReading_CURRENT tele/sonoffpow/CURRENT&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_AKTUELL stat/sonoffpow/1/STATUS&lt;br /&gt;
 attr Sonoff_Pow webCmd ON:OFF&lt;br /&gt;
 attr Sonoff_Pow stateFormat {sprintf(&amp;quot;akutelle Leistung: %.1f W Tagesverbrauch: %.2f Kw/h&amp;quot;, ReadingsVal($name,&amp;quot;CURRENT_POWER&amp;quot;,undef), ReadingsVal($name,&amp;quot;TODAY_ENERGY&amp;quot;,undef))}&lt;br /&gt;
Zusätzlich kann hier noch das Relais mit &amp;quot;on&amp;quot; und &amp;quot;off&amp;quot; ein- ausgeschaltet werden. Ab Version 2.0.15 wurden hier die ReadingsNamen auf TODAY_ENERGY und PERIOD_ENERGY (anstatt _POWER) geändert.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Sonoff POW Netz-Anschluß===&lt;br /&gt;
[[Datei:sonoff_sw_34.jpg|thumb|left|alt=Sonoff POW Netzanschluß]]&lt;br /&gt;
Erst wenn alle Arbeiten an der Hard- und Software abgeschlossen sind, kann man das Modul an die Netzspannung anschließen. Wer es sich einfach machen will, nimmt eine Industriell gefertigte 230 V Verlängerung  (zwischen 1,5 - 3 Meter) und schneidet sie in der Mitte durch. Nach dem abisolieren der flexiblen Drähte sollte diese &#039;&#039;&#039;verlötet oder mit Aderendhülsen&#039;&#039;&#039; versehen werden (müssen aber exakt passen, da hier kaum Platz in den Klemmen ist). &lt;br /&gt;
Mit einem kleinen Schraubendreher kann man die Feder der Klemmen niederdrücken und das verzinnte Drahtende tief ich die Öffnung stecken. Es dürfen keine Drahtlitzen aus den Öffnungen sichtbar sein, Kurzschlußgefahr! Ebenso sollte eine Zugprobe durchgeführt werden ob die Klemme auch richtig eingerastet ist.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ACHTUNG:&#039;&#039;&#039; diese Arbeiten müssen von einem ausgebildeten Fachpersonal (Elektriker) durchgeführt werden, Lebensgefahr!&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sonoff POW Design===&lt;br /&gt;
&lt;br /&gt;
====ReadingsGroup normal====&lt;br /&gt;
[[Datei:sonoff_sw_46.jpg|thumb|left|alt=Sonoff POW Design]]&lt;br /&gt;
Viele Benutzer wollen schönere und funktionelle Ausgaben am Bildschirm sehen. Die Möglichkeiten nach oben sind hier sehr vielfältig. Anhand von zwei einfachen aber mächtigen Funktionen hier ein kleines Beispiel wie hier im Bild dargestellt.&lt;br /&gt;
&lt;br /&gt;
Was das Design betrifft, sind hier mehrere Möglichkeiten gegeben und nach oben ist für findige Anwender alles offen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zunächst wird mit dem Hilfsmodul &amp;quot;&#039;&#039;&#039;average&#039;&#039;&#039;&amp;quot; eine Art Statistik (Durchschnittsberechnung, Min.,Max., etc.) hinzugefügt. Das beschränkt sich auf eine einzige Zeile. Es würde sich auch &#039;&#039;&#039;statistic&#039;&#039;&#039; dazu eignen.&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Pow_CURRENT_POWER average Sonoff_Pow:CURRENT_POWER.*&lt;br /&gt;
Die &amp;quot;average&amp;quot; Funktion wird in das Device &amp;quot;Sonof_Pow&amp;quot; auf das Reading &amp;quot;CURRENT_POWER&amp;quot; hinzugefügt.&lt;br /&gt;
&lt;br /&gt;
Der zweite Schritt wird eine &#039;&#039;&#039;readingsGroup&#039;&#039;&#039; mit den gewünschten und gefilterten Ausgabedaten. Durch die verschiedenen IF Abfragen der unterschiedlichen VALUE wird bei über- oder unterschreiten eines Wertes eine bestimmte Farbe angewandt. Weitere Beispiele dazu siehe im Wiki unter [http://www.fhemwiki.de/wiki/ReadingsGroup readingsGroup]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 define SonoffPows readingsGroup &amp;lt;%measure_power&amp;gt;,&amp;lt;aktuell&amp;gt;,&amp;lt;Tag&amp;gt;,&amp;lt;Strom&amp;gt;,&amp;lt;Durchschnitt&amp;gt;,&amp;lt;max.P&amp;gt;,&amp;lt;Schaltzyklen&amp;gt;,&amp;lt; hr &amp;gt; .*(Sonoff_Pow|Sonoff_Pow2):CURRENT_POWER,TODAY_ENERGY,CURRENT,CURRENT_POWER_avg_day,CURRENT_POWER_max_day,PERIOD_ENERGY&lt;br /&gt;
 attr SonoffPows mapping %ALIAS&lt;br /&gt;
 attr SonoffPows nameStyle style=&amp;quot;color:yellow&amp;quot;&lt;br /&gt;
 attr SonoffPows room MQTT&lt;br /&gt;
 attr SonoffPows valueFormat {&#039;CURRENT_POWER&#039; =&amp;gt;&amp;quot;%.0f W&amp;quot;, &#039;TODAY_ENERGY&#039; =&amp;gt;&amp;quot;%.2f Kw&amp;quot;, &#039;CURRENT&#039; =&amp;gt;&amp;quot;%.2f A&amp;quot;,&#039;CURRENT_POWER_max_day&#039; =&amp;gt; &amp;quot;%.0f W&amp;quot;,&#039;CURRENT_POWER_avg_day&#039; =&amp;gt; &amp;quot;%.2f W&amp;quot;,&#039;PERIOD_ENERGY&#039;=&amp;gt;&amp;quot;%.0f Zyklen&amp;quot;}&lt;br /&gt;
 attr SonoffPows valueStyle { if($READING eq &amp;quot;CURRENT_POWER&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 0 &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;TODAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 4.8){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;TODAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 2.5){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;TODAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 2.5 &amp;amp;&amp;amp; $VALUE &amp;lt; 4.8 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 0.45){&#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039;}elsif( $READING eq &amp;quot;CURRENT&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 0.45 &amp;amp;&amp;amp; $VALUE &amp;lt; 0.87 ){&#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 0.87){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;PERIOD_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 10){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;PERIOD_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 10 &amp;amp;&amp;amp; $VALUE &amp;lt; 15 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;PERIOD_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 15){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; } }&lt;br /&gt;
&lt;br /&gt;
Die readingsGroup sind etwas komplex zu lesen, aber nach etwas Einarbeitung klappt das schon. Die in diesem Beispiel verwendeten Readingsnamen beziehen sich auf die Beispielkonfigurationen hier im Wiki.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
====ReadingsGroup mit Schaltmöglichkeit====&lt;br /&gt;
[[Datei:sonoff_pow_03.jpg|thumb|left|alt=readingsGroup mit Schalter]]&lt;br /&gt;
Die vorher erwähnte ReadingsGroup kann auch gleich mit einem Schalter versehen werden um den POW Ein- oder Aus schalten zu können. Dazu ist aber eine andere Einstellung im Sketch erforderlich.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der &amp;quot;&#039;&#039;&#039;user_config.h&#039;&#039;&#039;&amp;quot; muss an dieser Stelle auch die &amp;quot;&#039;&#039;&#039;PUB_PREFIX&#039;&#039;&#039;&amp;quot; auf die gleiche Topic wie &amp;quot;PUB_PREFIX2&amp;quot; eingestellt werden. Durch diese Maßnahme wird erreicht, dass sofort nach dem Knopfdruck auch der Status mit der Topic &amp;quot;tele&amp;quot; übertragen wird. Würde der weiterhin mit &amp;quot;stat&amp;quot; übertragen, kann er in der Readingsgroup nur sehr umständlich weiter behandelt werden. Dadurch wird erreicht, dass der Schalter sofort nach dem Schaltvorgang und der Rückmeldung (Status) auch seine Farbe ändert. Wird dieser Eintrag vergessen, ändert der Schalter erst nach Eintreffen der nächsten zyklischen Abfrage seinen Status/Farbe.&lt;br /&gt;
&lt;br /&gt;
 #define SUB_PREFIX             &amp;quot;cmnd&amp;quot;       // Sonoff devices subscribe to:- SUB_PREFIX/MQTT_TOPIC and SUB_PREFIX/MQTT_GRPTOPIC&lt;br /&gt;
 #define PUB_PREFIX             &amp;quot;tele&amp;quot;       // Sonoff devices publish to:- PUB_PREFIX/MQTT_TOPIC&lt;br /&gt;
 #define PUB_PREFIX2            &amp;quot;tele&amp;quot;       // Sonoff devices publish telemetry data to:- PUB_PREFIX2/MQTT_TOPIC/UPTIME, POWER/LIGHT and TIME&lt;br /&gt;
hier die PUB_PREFIX mit der geänderten Topic &amp;quot;tele&amp;quot; anstatt &amp;quot;stat&amp;quot; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 define SonoffPows readingsGroup &amp;lt;%measure_power&amp;gt;,&amp;lt;aktuell&amp;gt;,&amp;lt;Tag&amp;gt;,&amp;lt;Gestern&amp;gt;,&amp;lt;Strom&amp;gt;,&amp;lt;Durchschnitt&amp;gt;,&amp;lt;max.P&amp;gt;,&amp;lt;Zyklus&amp;gt;,&amp;lt;Faktor&amp;gt;,&amp;lt;Status&amp;gt;,&amp;lt; hr &amp;gt; .*(Sonoff_Pow|Sonoff_Pow2|Sonoff_Pow3):CURRENT_POWER,TODAY_ENERGY,YESTERDAY_ENERGY,CURRENT,CURRENT_POWER_avg_day,CURRENT_POWER_max_day,PERIOD_ENERGY,POWER_FACTOR,LIGHT&lt;br /&gt;
 attr SonoffPows commands {&#039;LIGHT.ON&#039; =&amp;gt; &#039;set $DEVICE OFF&#039;,&#039;LIGHT.OFF&#039; =&amp;gt; &#039;set $DEVICE ON&#039;}&lt;br /&gt;
 attr SonoffPows mapping %ALIAS&lt;br /&gt;
 attr SonoffPows nameStyle style=&amp;quot;color:yellow&amp;quot;&lt;br /&gt;
 attr SonoffPows room Energie,MQTT&lt;br /&gt;
 attr SonoffPows valueFormat {&#039;CURRENT_POWER&#039; =&amp;gt;&amp;quot;%.0f W&amp;quot;, &#039;TODAY_ENERGY&#039; =&amp;gt;&amp;quot;%.2f Kw&amp;quot;,&#039;YESTERDAY_ENERGY&#039; =&amp;gt;&amp;quot;%.2f Kw&amp;quot;, &#039;CURRENT&#039; =&amp;gt;&amp;quot;%.2f A&amp;quot;,&#039;CURRENT_POWER_max_day&#039; =&amp;gt; &amp;quot;%.0f W&amp;quot;,&#039;CURRENT_POWER_avg_day&#039; =&amp;gt; &amp;quot;%.2f W&amp;quot;,&#039;CURRENT_POWER&#039;=&amp;gt;&amp;quot;%.0f W&amp;quot;,&#039;POWER_FACTOR&#039; =&amp;gt; &amp;quot;%.2f &amp;quot;}&lt;br /&gt;
 attr SonoffPows valueIcon {&#039;LIGHT.ON&#039; =&amp;gt; &#039;rc_GREEN@green&#039;, &#039;LIGHT.OFF&#039; =&amp;gt; &#039;rc_RED@red&#039;}&lt;br /&gt;
 attr SonoffPows valueStyle { if($READING eq &amp;quot;CURRENT_POWER&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 0 &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;TODAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 4.8){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;TODAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 2.5){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;TODAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 2.5 &amp;amp;&amp;amp; $VALUE &amp;lt; 4.8 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;YESTERDAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 2.5){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;YESTERDAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 2.5 &amp;amp;&amp;amp; $VALUE &amp;lt; 4.8 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;YESTERDAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 4.8){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 0.45){&#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039;}elsif( $READING eq &amp;quot;CURRENT&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 0.45 &amp;amp;&amp;amp; $VALUE &amp;lt; 0.87 ){&#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 0.87){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;PERIOD_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 10){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;PERIOD_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 10 &amp;amp;&amp;amp; $VALUE &amp;lt; 15 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;PERIOD_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 15){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; } }&lt;br /&gt;
hier die erweiterte ReadingsGroup mit dem Schalter. Bei Bedarf sind hier die Devicenamen anzupassen wenn andere Namen verwendet werden (Sonoff_Pow|Sonoff_Pow2|Sonoff_Pow3).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====POW mit FTUI anzeigen====&lt;br /&gt;
[[Datei:sonoff_pow_energy.JPG|thumb|left|alt=Tablett FTUI]]&lt;br /&gt;
Wer möchte kann die Energieanzeigen auch mit der [https://forum.fhem.de/index.php/topic,34233.0.html Tablett UI] für eine Tablet Ansicht gestalten. Mit dieser stehen viele Möglichkeiten zu einer attraktiven Darstellung zur Verfügung.&lt;br /&gt;
Hier ein Beispiel welches mit den Widget &amp;quot;[http://www.fhemwiki.de/wiki/FHEM_Tablet_UI#Widget_THERMOSTAT thermostat]&amp;quot; dargestellt ist.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Slampher Flashen==&lt;br /&gt;
[[Datei:sonoff_sl_53.jpg|thumb|left|alt=Sonoff SLAMPHER]]&lt;br /&gt;
Dieses Modul ist eine Besonderheit was das Flashen betrifft, denn mit Hilfe des Tasters kann der ESP8266 NICHT in den Flashmode gebracht werden. Der Taster ist intern anderwärtig verdrahtet und somit für diesen Zweck nicht zu gebrauchen.&lt;br /&gt;
&lt;br /&gt;
Wie hier links im Bild zu sehen ist, muss der rechte Pin des R20 (oben im Bild) während dem Einstecken des USB Steckers auf Masse gelegt werden. Die beste Möglichkeit ist ein Stücken Draht anzulöten und diesen dann beim einstecken auf den Masse Pin des USB-Konverters zu legen.&lt;br /&gt;
&lt;br /&gt;
Pinbelegung des Steckers von oben nach unten:&lt;br /&gt;
 o - GND&lt;br /&gt;
 o - TxD&lt;br /&gt;
 o - RxD&lt;br /&gt;
 &#039;&#039;&#039;o&#039;&#039;&#039; - Vdd&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sl_51.jpg|thumb|left|alt=Sonoff SLAMPHER R20]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier ist genau ersichtlich, wo der R20 auf der Platine platziert ist. }}&lt;br /&gt;
Hier nocheinmal schön zu sehen wo der R20 (der ist nicht eingelötet sondern leer) exakt auf der Platine liegt, gemeint ist der rechte Pin. Hier kann auch leicht gelötet werden, da keine empfindlichen Bauteile in der Nähe sind und auch genug Platz vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_sl_50.jpg|thumb|left|alt=Sonoff SLAMPHER R20]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier ist genau ersichtlich, wo der Draht am R20 aufgelötet wurde }}&lt;br /&gt;
Hier ist ein kleines Stück Schaltdraht auf den Pin bereist aufgelötet und bereit zum Flashen!&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel wurde keine Pfostensteckerleiste auf die Platine aufgelötet, sondern nur durchgesteckt und mit einem Gummiring  zum Relais fixiert, das erspart den Lötvorgang, weil in Zukunft dann ohnehin OTA geflasht werden kann.&lt;br /&gt;
&lt;br /&gt;
Also Pin20 auf Masse legen und USB-Konverter an den PC einstecken, dann den Draht von der Masse entfernen. Der ESP8266 sollte jetzt im Flashmodus bereit stehen und kann wie bereits oben beschrieben geflasht werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sonoff Slampher Software===&lt;br /&gt;
[[Datei:sonoff_sl_54.jpg|thumb|left|alt=Sonoff SLAMPHER FHEM]]&lt;br /&gt;
&lt;br /&gt;
Als Software wird Arends Sketch installiert (Kommunikation über MQTT), da zum derzeitigen Zeitpunkt ESPEasy das Modul noch nicht integriert hat und somit auch nicht ansteuern kann.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_SL MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_SL IODev myBroker&lt;br /&gt;
 attr Sonoff_SL devStateIcon ON:rc_GREEN:OFF OFF:rc_RED:ON&lt;br /&gt;
 attr Sonoff_SL icon hue_filled_br30&lt;br /&gt;
 attr Sonoff_SL publishSet ON OFF cmnd/sonoffsl/1/POWER/set&lt;br /&gt;
 attr Sonoff_SL room Bewegung,_Sonoff&lt;br /&gt;
 attr Sonoff_SL stateFormat Licht&lt;br /&gt;
 attr Sonoff_SL subscribeReading_Licht tele/sonoffsl/POWER&lt;br /&gt;
 attr Sonoff_SL subscribeReading_state cmnd/sonoffsl/1/POWER/set&lt;br /&gt;
 attr Sonoff_SL webCmd ON:OFF&lt;br /&gt;
&lt;br /&gt;
Hier ein Beispiel wie in FHEM der Slampher eingebunden werden kann. In diesem Beispiel wird davon ausgegangen, das das Modul &amp;quot;sonoffsl&amp;quot; unter Konfiguration am WEBIF (Configure MQTT bei Topic) so unbenannt wurde. Wer einen anderen Namen haben möchte, muss dies dann auch in FHEM entsprechend anpassen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Th10/16 FHEM==&lt;br /&gt;
[[Datei:sonoff_th_01.jpg|thumb|left|alt=Sonoff TH10]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Temperatur Modul TH10 / 16! }}&lt;br /&gt;
Das Modul kann durch drücken des Tasters während dem Einstecken des USB-Konverters in den Flashmodus gebracht werden.&lt;br /&gt;
Der Th10/16 kann mit zwei unterschiedlichen Typen von Sensoren bestückt werden, hier im Beispiel mit dem externen Temperaturfühler DS18B20.&lt;br /&gt;
&lt;br /&gt;
Wie im Bild klar zu sehen ist, kann das Webif auch zur Darstellung via Mobile verwendet werden. Mit &amp;quot;Toggle&amp;quot; wird Ein- oder Aus geschaltet und  darunter ist die aktuelle Temperatur ersichtlich. Für diese Ansicht muss keine MQTT Verbindung eingerichtet werden, da die Kommunikation hier rein über HTTP erfolgt.&lt;br /&gt;
&lt;br /&gt;
Die unten dargestellten Beispiele für FHEM beziehen sich auf Arends Sketch, also über MQTT. Dieses Modul kann aber genauso leicht über ESPEasy und der ESPEasy-Bridge eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Pinbelegung des Steckers von oben nach unten:&lt;br /&gt;
 o - GND&lt;br /&gt;
 o - TxD&lt;br /&gt;
 o - RxD&lt;br /&gt;
 &#039;&#039;&#039;o&#039;&#039;&#039; - Vdd&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #define DSB_PIN              14           // GPIO 14 = DS18x20 (Sonoff_TH10A(16A), Sonoff SV)&lt;br /&gt;
 #define DSB_RESOLUTION       2            // Maximum number of decimals (0 - 3) showing Temperature&lt;br /&gt;
 // *** Option 1 - Single DS18B20 - Select either Option 1 OR Option 2&lt;br /&gt;
 #define SEND_TELEMETRY_DS18B20            // Enable sending single temperature telemetry&lt;br /&gt;
 // *** Option 2 - Multiple DS18B20 and/or DS18S20 (needs OneWire library!)&lt;br /&gt;
 //  #define SEND_TELEMETRY_DS18x20            // Enable sending multi temperature telemetry &lt;br /&gt;
In der user_config.h (Arends Sketch) muss hier die Option 1 aktiviert werden (entfernen der vorangestellten //) damit die Telemetriedaten auch gesendet werden. Es empfiehlt sich mindestens die Version &amp;gt;= V 2.0.16, weil hier die Sensoren erweitert wurden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #define DHT_PIN              14           // GPIO 14 = AM2301 (Sonoff_TH10A(16A), Sonoff SV)&lt;br /&gt;
 #define DHT_TYPE             AM2301       // DHT module type (DHT11, DHT21, DHT22, AM2301, AM2302 or AM2321)&lt;br /&gt;
 #define DHT_RESOLUTION       1            // Maximum number of decimals (0 - 3) showing Temperature&lt;br /&gt;
 #define SEND_TELEMETRY_DHT                // Enable sending temperature and humidity telemetry&lt;br /&gt;
Beispiel für den Sensor DHT22, Temperatur und Luftfeuchte. Es dürfen aber nicht beide Sensoren (DS18B20 + DHT22) gleichzeitig aktiviert werden, da ja beide an GPIO14 angehängt werden und es ansonsten zu Fehlfunktionen kommen würde.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_th_02.jpg|thumb|left|alt=Sonoff TH10]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Einbindung in FHEM via MQTT! }}&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ### Temperatur und Luftfeuchte vom Sonoff Switch ###&lt;br /&gt;
 define Sonoff_Temp MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Temp IODev myBroker&lt;br /&gt;
 attr Sonoff_Temp alias Pool Wasser&lt;br /&gt;
 attr Sonoff_Temp eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_Temp icon temperature_humidity&lt;br /&gt;
 attr Sonoff_Temp publishSet ON OFF cmnd/sonoffth/1/POWER/set&lt;br /&gt;
 attr Sonoff_Temp room _Sonoff&lt;br /&gt;
 attr Sonoff_Temp stateFormat {sprintf(&amp;quot;Temperatur: %.1f Grad&amp;quot;, ReadingsVal($name,&amp;quot;TEMPERATURE&amp;quot;,0))}&lt;br /&gt;
 attr Sonoff_Temp subscribeReading_TEMPERATURE tele/sonoffth/DS18B20/TEMPERATURE&lt;br /&gt;
 attr Sonoff_Temp subscribeReading_humidity tele/sonoffth/HUMIDITY&lt;br /&gt;
 attr Sonoff_Temp subscribeReading_state cmnd/sonoffth/1/POWER/set&lt;br /&gt;
Beispiel für FHEM mit Temperaturanzeige mit DS18B20&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Switch MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Switch IODev myBroker&lt;br /&gt;
 attr Sonoff_Switch alias Pool Licht&lt;br /&gt;
 attr Sonoff_Switch devStateIcon on:rc_GREEN:off off:rc_RED:on&lt;br /&gt;
 attr Sonoff_Switch eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_Switch icon light_ceiling&lt;br /&gt;
 attr Sonoff_Switch publishSet ON OFF cmnd/sonoffth/1/POWER/set&lt;br /&gt;
 attr Sonoff_Switch room _Sonoff&lt;br /&gt;
 attr Sonoff_Switch stateFormat Licht&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_Licht tele/sonoffth/POWER&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_state cmnd/sonoffth/1/POWER/set&lt;br /&gt;
 attr Sonoff_Switch webCmd ON:OFF&lt;br /&gt;
Der Schalter nochmals seperat dargestellt, je nach Geschmack.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff CH4 4-Kanal Schaltmodul==&lt;br /&gt;
[[Datei:sonoff_ch4_1.jpg|thumb|left|alt=Sonoff CH4]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Achtung andere Einstellungen der Arduino IDE: Select Board &amp;quot;Generic ESP8285 Module&amp;quot; (=Flash Mode &amp;quot;DOUT&amp;quot;) and Flash Size &amp;quot;1M (64K SPIFFS)&amp;quot;n! }}&lt;br /&gt;
&lt;br /&gt;
Der Sonoff CH4 ist mit seinen 4 Kanälen ein sehr preiswertes Modul im Gehäuse und für Hutschinenmontage. Anstatt des üblichen ESP8266 besitzt dieses Modul schon den moderneren &#039;&#039;&#039;ESP8285&#039;&#039;&#039;. Es müssen daher in der Arduino IDE andere Einstellungen vorgenommen werden. Unter Board wird hier das &amp;quot;&#039;&#039;&#039;Generic 8285 Module&#039;&#039;&#039;&amp;quot; mit &#039;&#039;&#039;1M und 64K Spiffs&#039;&#039;&#039; angewählt. Der Flashmode &amp;quot;&#039;&#039;&#039;DOUT&#039;&#039;&#039;&amp;quot; wird dann automatisch eingestellt, bzw. ausgeblendet.&lt;br /&gt;
&lt;br /&gt;
Das Modul ist etwas größer als die anderen Sonoff Produkte und besitzt mit 14,5 x 9 cm schon beachtliche Einbau Maße.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_ch4_2.jpg|thumb|left|alt=Sonoff CH4 FDTI]]&lt;br /&gt;
Als weitere Besonderheit sei hier erwähnt, das die Signale &#039;&#039;&#039;RxD auf RxD und TxD auf TxD&#039;&#039;&#039; des FTDI Konverters zu verbinden sind. Wie bei allen Sonoff Modulen darf man &#039;&#039;&#039;zum flashen keine Netzspannung anschließen&#039;&#039;&#039;, sondern nur über die Versorgungsspannung des FDTI Konverters mit 3,3 V versorgen (Jumper richtig setzen). Die Stiftleiste für den FTDI Anschluß ist hier schon eingelötet.&lt;br /&gt;
&lt;br /&gt;
In den Flashmodus gelangt man durch drücken der &#039;&#039;&#039;Taste FW/IO0&#039;&#039;&#039; während des einstecken des USB Anschlusses.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_ch4_3.jpg|thumb|left|alt=Sonoff CH4 Arends]]&lt;br /&gt;
Hier die Ansicht des Webinterface des Arends Sketches!&lt;br /&gt;
Bei der Software sei erwähnt, das die getestete Version 3.1.16 nur bei Kanal 1 den Modus &amp;quot;PulseTime&amp;quot; beherrscht. Wer also gepulste Ausgänge (zB: elektrische Garage/Toröffner) benötigt muss diese per Software nachbilden oder mit dem Kanal 1 auskommen. Eine &amp;quot;Pulsetime 10&amp;quot; ist ein guter Wert dafür (etwa 1 Sekunde). &lt;br /&gt;
&lt;br /&gt;
Als Alternative kann mit dieser HTML Seite des Webservers am Modul des CH4 schon mit jedem Browser fähigem Handy (Android, iPhone, Windows) aufgerufen werden und somit alle Funktionen gesteuert werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_ch4_4.jpg|thumb|left|alt=Sonoff CH4 Software APP]]&lt;br /&gt;
Hier dargestellt die Original Software die Sonoff zum Modul liefert (EWeLink) und über ihre Cloud verbindet. Leider kann hier keine gepulste Ausgabe erfolgen. Mit einem Countdown kann zwar der Ausgang wieder abgeschaltet werden, die kleinste Zeiteinheit ist aber 1 Minute und somit für einen Impuls leider nicht zu gebrauchen. Ebenso kann mit dieser Software keine Einbindung in FHEM erfolgen, obwohl es eine nette anschauliche Darstellung ist.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Erweiterungen=&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sonoff Switch mit Temperatur + Luftfeuchte== &lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier geht es um nützliche Hardware Erweiterungen an den Originalmodulen!}}&lt;br /&gt;
Wozu überhaupt den Switch erweitern wenn es auch die Modelle TH10 und TH16 gibt?&lt;br /&gt;
&lt;br /&gt;
Manche Personen können dadurch dem Basteltrieb nachkommen, aber das wesentliche ist der Preis, da die Switches doch fast um die Hälfte billiger sind. Die Sensoren kosten ebenfalls kaum nennenswerte Beträge.&lt;br /&gt;
&lt;br /&gt;
Oder es hat schon jemand Switches im Einsatz und möchte jetzt zusätzlich die Temperatur erfassen!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hardware erweitern mit DHT22 ===&lt;br /&gt;
[[Datei:sonoff_sw_4.PNG|thumb|left|alt=Sonoff Switch Pinleiste mit Temperatur]]&lt;br /&gt;
Am Sonoff Switch wurde ja schon eine Stiftleiste zum Flashen eingelötet. Diese Stiftleiste bietet schon alle Anschlüsse welche für die Temperatur- und Luftfeuchtemessung benötigt werden. Am 5. Anschluß der Stifftleiste ist das Signal &amp;quot;SCL&amp;quot; (GPIO14) herausgeführt, welches für den DHT22 zur Erfassung der Messdaten benötigt wird. Der Sonsor wird mit einem einem 3-poligen Kabel (zB: ein Steckkabel für ein Breadboard oder direkt anlöten) verbunden. Damit der DHT22 korrekt funktioniert, wird ein Widerstand mit 4,7 K Ohm zwischen Vdd und Data am DHT22 zusätzlich benötigt. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_45.jpg|thumb|left|alt=AM2302 / DHT22]]&lt;br /&gt;
&lt;br /&gt;
Ansicht des DHT22 (AM2302) mit den aufgesteckten Verbindungskabeln. Von links nach rechts sind das&lt;br /&gt;
&lt;br /&gt;
 1 = VCC 3,3 V&lt;br /&gt;
 2 = Data&lt;br /&gt;
 3 = nc (nicht belegt)&lt;br /&gt;
 4 = GND&lt;br /&gt;
&lt;br /&gt;
Pin1 (VCC) des DHT22 muss also auf Pin1 der Stiftleiste, Pin2 (Data) auf Pin5 und Pin4 (GND) auf Pin4. &lt;br /&gt;
Pin2 und Pin1 soll hier noch der Widerstand aufgelötet werden.&lt;br /&gt;
&lt;br /&gt;
 1 ------- 1 (VDD)&lt;br /&gt;
 2 ------- 5 (GPIO14)&lt;br /&gt;
 3&lt;br /&gt;
 4 ------- 4 (GND)&lt;br /&gt;
 DHT22  Stiftleiste&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_44.jpg|thumb|left|alt=umgebautes Modul]]&lt;br /&gt;
Diese Darstellung zeigt das umgebaute und bereits verschlossene Modul. Auf der Seite des Tasters (bitte nur hier, da auf der anderen Seite die 230 V verlaufen und neben der Lebensgefahr auch den Sensor beeinflussen) ist hier einfach mit einer Eisensäge ein Schlitz eingesägt, der dient in diesem Falle als Kabeldurchführung. Ein Schlitz ist besser als ein Loch, da der Oberteil des Gehäuses sich leichter aufsetzen läßt. Wer ein längeres Kabel benötigt, kann natürlich auch ein 3-poliges Telefonkabel (oder Mikrokabel oder sonstiges) verwenden. Der Sensor sollte etwas Abstand zum Gehäuse haben, da dieses auch eine Eigenerwärmung hat. Wer es ganz originalgetreu lösen will, kann auch eine 3-polige Mini Buchse für Klinckenstecker (3,5mm) einbauen so wie sie am TH10/16 vorhanden ist.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Software anpassen am Beispiel MQTT ===&lt;br /&gt;
[[Datei:sonoff_sw_40.jpg|thumb|left|alt=Sonoff MQTT]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wer über MQTT kommuniziert und die Software von Theo Arends benutzt, muss folgende Dinge beachten. In der Datei &#039;&#039;&#039;user_config.h&#039;&#039;&#039; müssen im Abschnitt &#039;&#039;&#039;Module = SONOFF&#039;&#039;&#039; die Slashes so wie unten dargestellt entfernt werden, damit erstens die Interrupts abgefragt werden und zweitens die Telemetriedaten gesendet werden. Ebenso ist der verwendete Sensor bei &amp;quot;&#039;&#039;&#039;define DHT_TYPE&#039;&#039;&#039;&amp;quot; eingestellt werden. In dem hier gezeigten Beispiel also &amp;quot;&#039;&#039;&#039;DHT22&#039;&#039;&#039;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #if MODULE == SONOFF                        // programming header 1:3.3V 2:rx 3:tx 4:gnd&lt;br /&gt;
  #define APP_NAME             &amp;quot;Sonoff module&amp;quot;&lt;br /&gt;
  #define LED_PIN              13           // GPIO 13 = Green/Blue Led (0 = On, 1 = Off) - Sonoff&lt;br /&gt;
  #define LED_INVERTED         1            // 0 = (1 = On, 0 = Off), 1 = (0 = On, 1 = Off)&lt;br /&gt;
  #define REL_PIN              12           // GPIO 12 = Red Led and Relay (0 = Off, 1 = On)&lt;br /&gt;
  #define KEY_PIN              0            // GPIO 00 = Button&lt;br /&gt;
 /*-------------------------------------------------------------------------------------------*/&lt;br /&gt;
  #define DSB_PIN              4            // GPIO 14 = DS18B20 (Sonoff_TH10A(16A), Sonoff SV)&lt;br /&gt;
  #define SEND_TELEMETRY_DS18B20            // Enable sending temperature telemetry&lt;br /&gt;
 /*-------------------------------------------------------------------------------------------*/&lt;br /&gt;
  #define DHT_PIN              14           // GPIO 14 = AM2301 (Sonoff_TH10A(16A), Sonoff SV)&lt;br /&gt;
  #define DHT_TYPE             DHT22        // DHT module type (DHT11, DHT21, DHT22, AM2301, AM2302 or AM2321)&lt;br /&gt;
  #define SEND_TELEMETRY_DHT                // Enable sending temperature and humidity telemetry&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Software Anpassung DHT22 in FHEM ===&lt;br /&gt;
[[Datei:sonoff_sw_41.jpg|thumb|left|alt=umgebautes Modul]]&lt;br /&gt;
&lt;br /&gt;
Links in der Hardcopy sind die Readings die nach der Anpassung von FHEM (Broker) befüllt werden sollten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ### Temperatur und Luftfeuchte vom Sonoff Switch ###&lt;br /&gt;
 define Sonoff_Temp MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Temp IODev myBroker&lt;br /&gt;
 attr Sonoff_Temp icon temperature_humidity&lt;br /&gt;
 attr Sonoff_Temp room MQTT&lt;br /&gt;
 attr Sonoff_Temp stateFormat {sprintf(&amp;quot;Temperatur: %.1f Grad Feuchte: %.1f &amp;quot;, ReadingsVal($name,&amp;quot;temperature&amp;quot;,0), ReadingsVal($name,&amp;quot;humidity&amp;quot;,0))}&lt;br /&gt;
 attr Sonoff_Temp subscribeReading_humidity tele/sonoff/HUMIDITY&lt;br /&gt;
 attr Sonoff_Temp subscribeReading_temperature tele/sonoff/TEMPERATURE&lt;br /&gt;
Als Beispiel die zusätzliche Erweiterung um die Temperatur und die Luftfeuchte in FHEM. Der in der Topic verwendete Name &amp;quot;sonoff&amp;quot; muss natürlich der Einstellung in der Software am Switch entsprechen. Bei Verwendung mehrerer Switches muss natürlich auch der Name bei jedem geändert werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Logfile für die Temperatur ===&lt;br /&gt;
 define SVG_FileLog_Sonoff_Temp SVG myDbLog:SVG_FileLog_Sonoff_Temp:HISTORY&lt;br /&gt;
 attr SVG_FileLog_Sonoff_Temp room MQTT&lt;br /&gt;
&lt;br /&gt;
Und schließlich fehlt noch das Logfile, damit der Temperaturverlauf auch in schönen Plots dargestellt werden kann.&lt;br /&gt;
Das hier verwendete Beispiel funktioniert nur mit einer DbLog.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Switch als Thermostat verwenden mit MQTT== &lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_55.jpg|thumb|left|alt=Thermostat]]&lt;br /&gt;
Mit diesem einfachen Beispiel wird ein Pelett Ofen mit einem externen Thermostat (sonoff Switch oder TH10/16) gesteuert. Zum besseren Überblick wird die Steuerung in einzelne Module getrennt, es könnte aber auch einiges zu einer einzigen Definition zusammen gefasst werden. Der Thermostat könnte auch als Frostwächter benutzt werden und ein anderes Heizgerät steuern.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 ###################################&lt;br /&gt;
 ### Sonoff Thermostat Regelung ####&lt;br /&gt;
 ###################################&lt;br /&gt;
 define Sonoff_dht MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_dht IODev myBroker&lt;br /&gt;
 attr Sonoff_dht alias Raumtemperatur&lt;br /&gt;
 attr Sonoff_dht group Thermostat&lt;br /&gt;
 attr Sonoff_dht icon temperature_humidity&lt;br /&gt;
 attr Sonoff_dht publishSet ON OFF cmnd/sonoff_dht/1/POWER/set&lt;br /&gt;
 attr Sonoff_dht room _Sonoff&lt;br /&gt;
 attr Sonoff_dht stateFormat {sprintf(&amp;quot;Temperatur: %.1f Grad Feuchte: %.1f &amp;quot;, ReadingsVal($name,&amp;quot;TEMPERATURE&amp;quot;,0),  ReadingsVal($name,&amp;quot;HUMIDITY&amp;quot;,0))}&lt;br /&gt;
 attr Sonoff_dht subscribeReading_HUMIDITY tele/sonoff_dht/DHT/HUMIDITY&lt;br /&gt;
 attr Sonoff_dht subscribeReading_TEMPERATURE tele/sonoff_dht/DHT/TEMPERATURE&lt;br /&gt;
 attr Sonoff_dht subscribeReading_state cmnd/sonoff_dht/1/POWER/set&lt;br /&gt;
FHEM Definition zur Erfassung der Temperatur und der Luftfeuchte. Damit dieses Beispiel funktioniert, ist am Sonoff Modul die Topic &amp;quot;&#039;&#039;&#039;sonoff_dht&#039;&#039;&#039;&amp;quot; zu setzen. Dieser Temperaturwert dient dem Thermostat als ISTWert.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Sw MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Sw IODev myBroker&lt;br /&gt;
 attr Sonoff_Sw alias Pellets Ofen&lt;br /&gt;
 attr Sonoff_Sw devStateIcon on:rc_GREEN:off off:rc_RED:on&lt;br /&gt;
 attr Sonoff_Sw eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_Sw group Thermostat&lt;br /&gt;
 attr Sonoff_Sw icon sani_boiler_temp&lt;br /&gt;
 attr Sonoff_Sw publishSet ON OFF cmnd/sonoff_dht/1/POWER/set&lt;br /&gt;
 attr Sonoff_Sw room _Sonoff&lt;br /&gt;
 attr Sonoff_Sw stateFormat Licht&lt;br /&gt;
 attr Sonoff_Sw subscribeReading_Licht tele/sonoff_dht/POWER&lt;br /&gt;
 attr Sonoff_Sw subscribeReading_state cmnd/sonoff_dht/1/POWER/set&lt;br /&gt;
 attr Sonoff_Sw webCmd ON:OFF&lt;br /&gt;
FHEM Definition zum Absetzen der Befehle für das Relais (Thermostat) Ein- / Aus. Wenn das zu steuernde Geräte einen potentialfreien Thermostatanschluß benötigt (in den meisten Fällen), muss noch ein Relais dazwischen geschaltet werden um die Trennung der Netzspannung zu gewährleisten.&lt;br /&gt;
&lt;br /&gt;
 define ThermostatPellets dummy&lt;br /&gt;
 attr ThermostatPellets alias Pellets Ofen Sollwert&lt;br /&gt;
 attr ThermostatPellets group Thermostat&lt;br /&gt;
 attr ThermostatPellets icon temp_control&lt;br /&gt;
 attr ThermostatPellets room _Sonoff&lt;br /&gt;
 attr ThermostatPellets setList state:0,5,10,12,13,14,15,16,17,17.5,18,18.5,19,19.5,20,20.5,21,21.5,22,23,24,25,26,27&lt;br /&gt;
 attr ThermostatPellets webCmd state&lt;br /&gt;
Die Sollwertvorgabe für das Thermostat durch einen Dummy, damit können die gewünschten Temperaturen eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
 ### sofort ausführen wenn neuer Sollwert eingestellt wird ###&lt;br /&gt;
 define Thermostat_on_notify notify ThermostatPellets IF (ReadingsVal(&amp;quot;Sonoff_Sw&amp;quot;,&amp;quot;state&amp;quot;,0) eq &amp;quot;OFF&amp;quot; &amp;amp;&amp;amp; (ReadingsVal(&amp;quot;Sonoff_dht&amp;quot;,&amp;quot;TEMPERATURE&amp;quot;,0) &amp;lt;= Value(&amp;quot;ThermostatPellets&amp;quot;))) (set Sonoff_Sw ON)&lt;br /&gt;
 define Thermostat_off_notify notify ThermostatPellets IF (ReadingsVal(&amp;quot;Sonoff_Sw&amp;quot;,&amp;quot;state&amp;quot;,0) eq &amp;quot;ON&amp;quot; &amp;amp;&amp;amp; (ReadingsVal(&amp;quot;Sonoff_dht&amp;quot;,&amp;quot;TEMPERATURE&amp;quot;,0) &amp;gt; Value(&amp;quot;ThermostatPellets&amp;quot;))) (set Sonoff_Sw OFF)&lt;br /&gt;
Mit einem notify wird die manuelle Änderung des Sollwertes überwacht und sofort reagiert.&lt;br /&gt;
&lt;br /&gt;
 ## zyklisch prüfen ob Sollwert erreicht wurde ###&lt;br /&gt;
 define Thermostat_on at +*00:15:00 IF (ReadingsVal(&amp;quot;Sonoff_Sw&amp;quot;,&amp;quot;Licht&amp;quot;,0) eq &amp;quot;OFF&amp;quot; &amp;amp;&amp;amp; (ReadingsVal(&amp;quot;Sonoff_dht&amp;quot;,&amp;quot;TEMPERATURE&amp;quot;,0) &amp;lt;= Value(&amp;quot;ThermostatPellets&amp;quot;))) (set Sonoff_Sw ON)&lt;br /&gt;
 define Thermostat_off at +*00:15:00 IF (Value(&amp;quot;Sonoff_Sw&amp;quot;) eq &amp;quot;ON&amp;quot; &amp;amp;&amp;amp; (ReadingsVal(&amp;quot;Sonoff_dht&amp;quot;,&amp;quot;TEMPERATURE&amp;quot;,0) &amp;gt; Value(&amp;quot;ThermostatPellets&amp;quot;))) (set Sonoff_Sw OFF)&lt;br /&gt;
Hier noch die Soll- Ist Wertvergleiche zur Steuerung. Es wird alle 15 Minuten überprüft ob die Temperatur erreicht ist. Bei einer trägen Heizung sollten 15 Minuten ausreichend sein, wer will kann dies aber auch alle 5 oder 10 Minuten prüfen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Switch mit Bewegungsmelder HC-SR501== &lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_pir_1.jpg|thumb|left|alt=Bewegungsmelder]]&lt;br /&gt;
Basierend auf dem Wall Switch MQTT Sketch von Arends wurde hier ein Sonoff BASIC + PIR HC-SR501 in eine größere Verteilerdose eingebaut, der Sonoff wurde dabei etwas gekürzt. Die Bewegungsmelder sind ab etwa 70 Cent erhältlich.&lt;br /&gt;
&lt;br /&gt;
Der Sketch kann auch den Blink Modus. Damit kann man im Alarmfall z.B. Alle Strahler rings ums Haus blinken lassen.&lt;br /&gt;
&lt;br /&gt;
Mehr dazu kann hier im [https://forum.fhem.de/index.php/topic,63824.0.html Forum]im Diskussionsthread nachgelesen werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_pir_2.jpg|thumb|left|alt=Bewegungsmelder]]&lt;br /&gt;
Ein Beispiel wir der Bewegungsmelder in der Feuchtraumdose montiert werden kann. Wird der Bewegungsmelder abgesetzt vom Switch montiert, ist darauf zu achten das die Kabel nicht zu lange werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
===Spannungsversorgung des HC-SR501===&lt;br /&gt;
[[Datei:sonoff_pir_4.jpg|thumb|left|alt=5V für Bewegungsmelder]]&lt;br /&gt;
Der HC-SR501 wird vom Sonoff versorgt, wobei hier die 3,3 V nicht immer ausreichen. Es ist deshalb am HC-SR501 eine Diode zu überbrücken, dann reichen die 3,3V vom Sonoff. Es können aber auch am Sonoff die 5V angezapft werden. Hier im Bild dargestellt wo die 5V angezapft werden können.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_pir_5.jpg|thumb|left|alt=3,3V für Bewegungsmelder]]&lt;br /&gt;
Hier eine kleine Übersicht der wichtigsten Teile und deren Platzierung am HC-SR501. &lt;br /&gt;
Den PIR kann man auch mit 3,3V betreiben wenn man die Diode am Eingang nach Vcc überbrückt, dann reicht die Spannung für einen reibungslosen Betrieb völlig aus. Dies gilt für den HC-SR501, wird ein anderer PIR verwendet muss man nachschauen ob das auch möglich ist, ansonsten die 5V Variante wählen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===Anpassung des Sketches mit Wall Switch===&lt;br /&gt;
Zur Vorbereitung des Sketches sind zunächst einige Einstellungen in der &amp;quot;user_config.h&amp;quot; durchzuführen.&lt;br /&gt;
&lt;br /&gt;
 #if MODULE == SONOFF                        // programming header 1:3.3V 2:rx 3:tx 4:gnd&lt;br /&gt;
  #define APP_NAME             &amp;quot;Sonoff 8266 module&amp;quot;&lt;br /&gt;
  #define MQTT_GRPTOPIC        &amp;quot;sonoffs&amp;quot;    // [GroupTopic] MQTT Group topic&lt;br /&gt;
 /*-------------------------------------------------------------------------------------------*/&lt;br /&gt;
  #define LED_PIN              13           // GPIO 13 = Green/Blue Led (0 = On, 1 = Off) - Sonoff&lt;br /&gt;
  #define LED_INVERTED         1            // 0 = (1 = On, 0 = Off), 1 = (0 = On, 1 = Off)&lt;br /&gt;
  #define REL_PIN              12           // GPIO 12 = Red Led and Relay (0 = Off, 1 = On)&lt;br /&gt;
  #define KEY_PIN              0            // GPIO 00 = Button&lt;br /&gt;
 /*-------------------------------------------------------------------------------------------*\&lt;br /&gt;
 * Wall switch and HC-SR501&lt;br /&gt;
 \*-------------------------------------------------------------------------------------------*/&lt;br /&gt;
  #define SWITCH_PIN           14           // GPIO 14 = Standard wall switch to Gnd (Sonoff_TH10A(16A), Sonoff SV)&lt;br /&gt;
  #define SWITCH_MODE          &#039;&#039;&#039;PUSHBUTTON_INV&#039;&#039;&#039;      // [SwitchMode] TOGGLE, FOLLOW, FOLLOW_INV, PUSHBUTTON or PUSHBUTTON_INV (the wall switch state)&lt;br /&gt;
  &#039;&#039;&#039;#define USE_WALL_SWITCH&#039;&#039;&#039;                   // Enable the use of a standard wall switch to control the relay&lt;br /&gt;
Wichtig ist dabei die vorangestellten Slahes // bei &amp;quot;#define USE_WALL_SWITCH&amp;quot; zu entfernen auf &#039;&#039;&#039;PUSHBUTTON_INV&#039;&#039;&#039; zu stellen. Dann kann der Sonoff Switch compiliert und geflasht werden.&lt;br /&gt;
&lt;br /&gt;
===Einbindung des HC-SR501 in FHEM===&lt;br /&gt;
 # ------------- Sonoff_pir mit Bewegungsmelder ---------------&lt;br /&gt;
 define Sonoff_pir MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_pir IODev myBroker&lt;br /&gt;
 attr Sonoff_pir eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_pir group Sonoff&lt;br /&gt;
 attr Sonoff_pir icon hue_filled_br30&lt;br /&gt;
 attr Sonoff_pir publishSet ON OFF cmnd/sonoff_pir/1/POWER/set&lt;br /&gt;
 attr Sonoff_pir room MQTT&lt;br /&gt;
 attr Sonoff_pir stateFormat Licht&lt;br /&gt;
 attr Sonoff_pir subscribeReading_Licht stat/sonoff_pir/POWER&lt;br /&gt;
 attr Sonoff_pir subscribeReading_state cmnd/sonoff_pir/1/POWER/set&lt;br /&gt;
 attr Sonoff_pir webCmd :&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel wie der Sonoff Switch in FHEM eingebunden wird. Wenn im Sketch der Prefix von stat auf tele geändert wurde, ist dies auch hier durchzuführen ( subscribeReading_Licht tele/sonoff_pir/POWER ), ansonsten bleibt es so wie im Beispiel. Getestet wurde dieses Beispiel mit Version 3.1.6. Die Topic sollte auf den Namen &amp;quot;sonoff_pir&amp;quot; eingestellt werden. Bei anderen Namen ist dies entsprechend in FHEM anzupassen. &lt;br /&gt;
&lt;br /&gt;
Mit dem Command &#039;&#039;&#039;BUTTONTOPIC Alarm_SO2&#039;&#039;&#039; ( direkt im Webinterface des Sonoff ) wird der Wall Switch GPIO14 vom Sonoff entkoppelt und somit sendet der Bewegungsmelder direkt an FHEM --&amp;gt; Motion_pir MQTT_DEVICE&lt;br /&gt;
&lt;br /&gt;
Es sollte auch unbedingt kontrolliert werden, wie die Ausgabe des Alarmes in der Console erfolgt. Erscheint hier die Meldung &amp;quot;cmnd/Alarm_SO2/POWER = TOGGLE&amp;quot; dann muss mit dem Kommando &amp;quot;&#039;&#039;&#039;switchmode 1&#039;&#039;&#039;&amp;quot; das Ausgabeformat umgeschaltet werden, erst dann kommt das gewünschte Format &amp;quot;On&amp;quot; und &amp;quot;OFF&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 # ------------------ Motion_pir MQTT_DEVICE -----------------&lt;br /&gt;
 define Motion_pir MQTT_DEVICE&lt;br /&gt;
 attr Motion_pir IODev myBroker&lt;br /&gt;
 attr Motion_pir devStateIcon on:on-for-timer off:off&lt;br /&gt;
 attr Motion_pir eventMap ON:on OFF:off&lt;br /&gt;
 attr Motion_pir group Sonoff&lt;br /&gt;
 attr Motion_pir icon people_sensor&lt;br /&gt;
 attr Motion_pir room MQTT&lt;br /&gt;
 attr Motion_pir stateFormat Alarm&lt;br /&gt;
 attr Motion_pir subscribeReading_Alarm cmnd/Alarm_SO2/POWER&lt;br /&gt;
Die Motion_pir dient nun zur eigentlichen Einschaltung des Lichtes und sendet das Kommando &#039;&#039;&#039;cmnd/Alarm_SO2/POWER&#039;&#039;&#039; an den entkopellten GPIO 14 des Switch.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # ------------------ DoIf zur Motion Abfrage -----------------&lt;br /&gt;
 define di_Sonoff_pir_Alarm DOIF ([Motion_pir:&amp;quot;on&amp;quot;] and [Tag_Nacht:twilight_weather] &amp;lt; 35) (set Sonoff_pir on) DOELSEIF ([Motion_pir:&amp;quot;off&amp;quot;] and [Tag_Nacht:twilight_weather] &amp;lt; 35) (set Sonoff_pir off)&lt;br /&gt;
 attr di_Sonoff_pir_Alarm comment Abhängig von Helligkeitssensor wird nachts,bei Bewegung das Licht eingeschaltet!&lt;br /&gt;
 attr di_Sonoff_pir_Alarm group Sonoff&lt;br /&gt;
 attr di_Sonoff_pir_Alarm room MQTT&lt;br /&gt;
Zusätzlich kann nun mit einem &#039;&#039;&#039;Doif&#039;&#039;&#039; verknüpft werden um das Ganze mit Tag_Nacht:twilight_weather dann in Abhängigkeit der Helligkeit zu schalten. Selbstverständlich kann jede andere Quelle mit einem Helligkeitswert verwendet werden.&lt;br /&gt;
&lt;br /&gt;
===Alarmausgabe über Grouptopic===&lt;br /&gt;
 # ------------------------ Sonoffs Group ----------------------&lt;br /&gt;
 define Sonoffs MQTT_DEVICE&lt;br /&gt;
 attr Sonoffs IODev myBroker&lt;br /&gt;
 attr Sonoffs eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoffs group Sonoff&lt;br /&gt;
 attr Sonoffs icon hue_filled_br30&lt;br /&gt;
 attr Sonoffs publishSet ON OFF cmnd/sonoffs/1/POWER/set&lt;br /&gt;
 attr Sonoffs room MQTT&lt;br /&gt;
 attr Sonoffs stateFormat state&lt;br /&gt;
 attr Sonoffs subscribeReading_Licht stat/sonoffs/1/POWER&lt;br /&gt;
 attr Sonoffs subscribeReading_state cmnd/sonoffs/1/POWER/set&lt;br /&gt;
Wer möchte kann auch mit der Group Topic mehrere Switches mit Bewegungsmelder zusammenfassen und alle Lampen im Alarmfall gemeinsam in den Blinkmodus schalten. cmnd/sonoffs ist das Kommando für die Group Topic, sofern diese vom User nicht verändert wurde.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:IP Components]]&lt;br /&gt;
--[[Benutzer:Reinhart|Reinhart]] ([[Benutzer Diskussion:Reinhart|Diskussion]]) 20:54, 5. Jan. 2017 (CET)&lt;/div&gt;</summary>
		<author><name>Reinhart</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Sonoff&amp;diff=19081</id>
		<title>Sonoff</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Sonoff&amp;diff=19081"/>
		<updated>2017-01-26T16:33:57Z</updated>

		<summary type="html">&lt;p&gt;Reinhart: Hinweis auf LEGACY Format wegen Default Format Umstellung.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;sonoff, dieser Artikel beschreibt die Ankopplung der kostengünstigen sonoff Module an FHEM mit ESPEasy oder MQTT.&#039;&#039;&#039;&lt;br /&gt;
{{Randnotiz|RNTyp=Fehl|RNText=Achtung: Arbeiten mit Netzspannung kann lebensgefährlich sein und darf nur von autorisiertem Fachpersonal durchgeführt werden!}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Seit einiger Zeit werden von der [https://www.itead.cc/sonoff-wifi-wireless-switch.html Fa. Itead] kostengünstige &amp;quot;sonoff&amp;quot; Produkte angeboten die glücklicherweise den [http://dl.itead.cc/IM151116002/0A-ESP8266_Specifications_v4.1.pdf ESP8266 Chip] On Board haben und somit die ideale Grundlage für [http://www.esp8266.nu/index.php/Main_Page ESPEasy] und für [https://forum.fhem.de/index.php/board,46.0.html FHEM] darstellen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nützliche Links zum Hersteller:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://www.itead.cc/blog/user-guide-for-sonoff-slampher User Manual von Itead]&lt;br /&gt;
&lt;br /&gt;
[https://www.itead.cc/wiki/images/6/6b/Sonoff_schmatic.pdf Sonoff Schaltplan]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Hardware=&lt;br /&gt;
&#039;&#039;&#039;Bitte unbedingt die elektrotechnischen Sicherheitsrichtlinien beachten und einhalten!&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_sw_15.jpg|thumb|left|alt=Warnung Netzspannung]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Achtung: An dem Modul liegt Netzspannung an die lebensgefährlich ist. Es dürfen nur entsprechend ausgebildete Personen dieses Modul in Betrieb nehmen. Zum Umbau und zur Softwareaktualisierung darf keine Netzspannung angeschlossen sein&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Wie gefährlich das hantieren mit Netzspannung sein kann, wird hier am Beispiel eines [http://mysku.ru/blog/china-stores/45762.html russischen Anwenders] gezeigt, der hat beim Flashen die Netzspannung am Modul gelassen und somit über die Verbindung mit dem Netzteil des Laptop lebensgefährliche Spannung auf die FTDI Schnittstelle gebracht. Das Modul ist dabei abgeraucht!&lt;br /&gt;
&lt;br /&gt;
==Modelle==&lt;br /&gt;
&lt;br /&gt;
===Produktübersichtsliste sonoff===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:right&amp;quot;&lt;br /&gt;
! Produkt Name !! Beschreibung !! Spannungsversorgung !!  Imax !! Pmax !! Frequenz !! Schaltplan !! Link&lt;br /&gt;
|-&lt;br /&gt;
| Sonoff || Wireless control switch || 90~250V AC || 10A || 2200W || 2.4Ghz || [http://wiki.iteadstudio.com/Sonoff Plan] || [https://www.itead.cc/smart-home/sonoff-wifi-wireless-switch.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| Sonoff RF || 433 RF remote || 90~250V AC || 10A || 2200W || 2.4Ghz || [http://wiki.iteadstudio.com/Sonoff_RF Plan] || [https://www.itead.cc/smart-home/im151116003.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| Sonoff SV || Low voltage Input || 5~24V DC || 10A || 240W DC || 2.4Ghz || [http://wiki.iteadstudio.com/Sonoff_SV Plan] || [https://www.itead.cc/smart-home/sonoff-sv.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| Sonoff TH10/TH16 || Monitor and set Temp.&amp;amp;Hum. ||  90~250V AC || 10A/16A || 2200W(10A)/3500W(16A)	 || 2.4Ghz || [http://wiki.iteadstudio.com/Sonoff_TH_10/16 Plan] || [https://www.itead.cc/smart-home/sonoff-th.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Sonoff Dual || Remote control 2 devices ||  90~250V AC || 16A || 3500W || 2.4Ghz || [https://www.itead.cc/wiki/Sonoff_Dual Plan] || [https://www.itead.cc/sonoff-dual.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Sonoff Pow || Report power &amp;amp;power usage ||  90~250V AC || 16A || 3500W || 2.4Ghz || [https://www.itead.cc/wiki/Sonoff_Pow Plan] || [https://www.itead.cc/sonoff-pow.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Sonoff LED || WiFi Control Dimming LED ||  180~265V AC || 0.3-0.6A || 42W || 2.4Ghz ||  kein || [https://www.itead.cc/sonoff-led.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Sonoff Touch || WiFi wall touch switch ||  90~250V AC || 2A || 400W || 2.4Ghz || kein || [https://www.itead.cc/sonoff-touch.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  Slampher || Wireless control light holder ||  90~250V AC || 2A || 200W || 2.4Ghz || [http://wiki.iteadstudio.com/Slampher Plan] || [https://www.itead.cc/smart-home/slampher-wifi-wireless-light-holder.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  S20 Smart Socket || Smart socket || 	90~250V AC || 10A || 2000W || 2.4Ghz || kein || [https://www.itead.cc/smart-home/smart-socket-eu.html EU-Stecker] &lt;br /&gt;
|-&lt;br /&gt;
|  iFan || Smart fan ||  185~264V AC ||﹤1A || 60W || 2.4Ghz || kein || [https://www.itead.cc/smart-home/smart-socket-eu.html EU-Stecker] &lt;br /&gt;
|-&lt;br /&gt;
| Motor/Pump Control Switch || clockwise/anticlockwise running ||  5V/7~32V DC || 10A || 50~320W || 2.4Ghz || kein || [https://www.itead.cc/smart-home/motor-reversing-wifi-wireless-switch.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| 1 Chnl Inching/self-locking Switch || Access control ||  	5V/12V DC || 10A || 50/120W || 2.4Ghz || kein || [https://www.itead.cc/smart-home/inching-self-locking-wifi-wireless-switch.html Link] &lt;br /&gt;
|-&lt;br /&gt;
|  4 Chnl Inching/self-locking/inter-locking Switch || Access control, rolling door control ||  5V/5~32V DC/90~250V AC || 10A || 50~320W/2500W || 2.4Ghz || kein || [https://www.itead.cc/ifan.html Link] &lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Eine Übersichtliste der verschiedenen Produkte mit technischen Kurzangaben.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Model: IM151116002: Erstes Modell===&lt;br /&gt;
[https://www.itead.cc/sonoff-wifi-wireless-switch.html Sonoff WiFi Wireless Smart Switch for MQTT COAP Smart Home]&lt;br /&gt;
[[Datei:sonoff_sw_0.jpg|thumb|left|alt=sonoff Switch]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Das sonoff Modul ist in einem zweckmäßigen und gefälligem Gehäuse verbaut!&lt;br /&gt;
&lt;br /&gt;
====Platine====&lt;br /&gt;
[[Datei:sonoff_sw_1.jpg|thumb|left|alt=sonoff Switch von vorne]]&lt;br /&gt;
&lt;br /&gt;
Die Platine ist sehr übersichtlich aufgebaut und der Hersteller hat auch alle Vorbereitungen zum Flashen einer alternativen Software vorgesehen (über serielle Schnittstelle via FTDI-Modul). Mit einer alternativen Software wie ESPEasy ist eine direkte Ankopplung des &#039;&#039;&#039;sonoff&#039;&#039;&#039; an FHEM somit ein leicht durchführbarer Vorgang.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_3.jpg|thumb|left|alt=sonoff Switch von hinten]]&lt;br /&gt;
Die stromführenden Leitungen wurden mit Lötzinn vom Hersteller verstärkt um die angegebenen Stromstärken mit geringer Hitzeentwicklung zu transportieren.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung: Bitte vor den Arbeiten kontrollieren, das an der Platine keine Netzspannung angeschlossen ist, LEBENSGEFAHR!&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Model: IM160712005: TH 10A/16A ===&lt;br /&gt;
[https://www.itead.cc/sonoff-th.html Sonoff TH 10A/16A WiFi Smart Switch]&lt;br /&gt;
&lt;br /&gt;
====TH10 / TH16 weitere GPIO zugänglich machen====&lt;br /&gt;
[[Datei:Sonoff_TH_10A-16A_kleiner.jpg|thumb|left|alt=TH10 / TH16 weitere GPIO zugänglich machen]]&lt;br /&gt;
Der Hersteller hat zwar schon Platine für eine weitere Stiftleiste vorbereitet, jedoch muss diese noch bestückt werden. Die nicht beschalteten Stifte können dann genutzt werden um die &amp;quot;verdeckten&amp;quot; GPIO zugänglich zu machen. Die Verdrahtung kann dem Bild entnommen werden.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Achtung: Bitte vor den Arbeiten kontrollieren, das an der Platine keine Netzspannung angeschlossen ist, LEBENSGEFAHR!&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Model: IM160811001: Sonoff Dual ===&lt;br /&gt;
[https://www.itead.cc/sonoff-dual.html Sonoff Dual WiFi Wireless Smart Swtich]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Model: IM160810001: Sonoff Pow ===&lt;br /&gt;
[https://www.itead.cc/sonoff-pow.html Sonoff POW WiFi Switch with Power Consumption Measurement]&lt;br /&gt;
[[Datei:sonoff_sw_30.jpg|thumb|left|alt=SONOFF POW]]Ein sehr interessantes und kostengünstiges Modul zur Messung der aktuellen Leistung. Das Modul kann via MQTT in FHEM angebunden werden.&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel zur Einbindung ist [http://www.fhemwiki.de/wiki/Sonoff#Sonoff_POW_einrichten hier unten] im Wiki beschrieben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===Model: weitere Modelle===&lt;br /&gt;
[https://www.itead.cc/search/result/?cat=&amp;amp;q=sonoff Sonoff Weitere Modelle finden sich auf der Homepage des Hersstellers]&lt;br /&gt;
&lt;br /&gt;
==Vorbereitungen zum Flashen==&lt;br /&gt;
[[Datei:sonoff_sw_2.jpg|thumb|left|alt=serielle Schnittstelle]]&lt;br /&gt;
&lt;br /&gt;
Hier auf der Platine sind die benötigten Signale für ein FTDI Modul schon vorhanden. Der quadratische Pin gleich über dem Taster ist die Spannungsversorgung zum Flashen vom FDTI von 3.3V Es muss daher unbedingt ein FTDI Modul genommen werden, dass nicht nur einen Jumper für 3.3V besitzt sondern auch die Spannung auf 3.3V herab setzt. Ist dies nicht der Fall, läuft man Gefahr das Modul unbrauchbar zu machen. Es ist daher zu empfehlen einen Spannungsteiler mit 2 Widerständen oder einen Pegelwandler zwischenschalten.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Signale der Schnittstelle==&lt;br /&gt;
von oben nach unten auf der Steckerleiste des sonoff U4 (Model: IM151116002).&lt;br /&gt;
&lt;br /&gt;
 Pin5 = vorbereitet für GPIO&lt;br /&gt;
 Pin4 = Masse&lt;br /&gt;
 Pin3 = TxD&lt;br /&gt;
 Pin2 = RxD&lt;br /&gt;
 Pin1 = 3.3V&lt;br /&gt;
&lt;br /&gt;
Siehe dazu auch den [https://forum.fhem.de/index.php/topic,55036.0.html Link aus dem Forum]:&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Platine mit Stiftleiste bestücken==&lt;br /&gt;
[[Datei:sonoff_sw_4.jpg|thumb|left|alt=Platine mit Stiftleiste bestücken]]&lt;br /&gt;
Der Hersteller hat zwar schon die Platine vorbereitet, jedoch muss sie noch mit einer Stiftleiste bestückt werden um das FTDI Modul bequem verbinden zu können. Nachdem einmal ESPEasy geflasht worden ist, kann es in Zukunft via WEB (OTA) geflasht werden und die Stiftleiste ist dann nicht mehr erforderlich. Aufgrund der geringen Kosten fällt dies jedoch nicht ins Gewicht.&amp;lt;br&amp;gt;&lt;br /&gt;
Für die Module TH10/TH16 sind die Lötpunkte für die Stiftleiste schon beschriftet. Die Stiftleiste selber muss allerdings auch nachgerüstet werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Achtung&#039;&#039;&#039;: Bitte vor den Arbeiten kontrollieren, das an der Platine keine Netzspannung angeschlossen ist, LEBENSGEFAHR!&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Software=&lt;br /&gt;
==ESPEasy flashen==&lt;br /&gt;
[[Datei:sonoff_sw_6.jpg|thumb|left|alt=sonoff mit angestecktem FDTI Adapter]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier geht es ausschließlich um die Software ESPEasy an den sonoff Modulen! }}&lt;br /&gt;
Die Spannungsversorgung des sonoff Moduls wird hier vom FTDI Konverter mit 3.3V über die Verbindungskabel zum Pfostenstecker durchgeführt. &lt;br /&gt;
&lt;br /&gt;
Der FTDI Adapter wird dann mit der USB Schnittstelle mit dem Computer verbunden.&lt;br /&gt;
&lt;br /&gt;
Zum compilieren wird in der Arduino Umgebung auch die ArduinoJson library 5.6.4+ benötigt. Eine genaue Anleitung kann [https://forum.fhem.de/index.php/topic,55728.msg473220.html#msg473220 hier] nachgelesen werden. Im Gegensatz zu Arends Sketch für die MQTT Umgebung genügt hier die Arduino IDE 1.6.9. Für die Sketches von Arends empfiehlt sich Arduino IDE &amp;gt;=1.6.12&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===mit Arduino compilieren===&lt;br /&gt;
[[Datei:sonoff_sw_10.jpg|thumb|left|alt=Einstellung Arduino IDE]]&lt;br /&gt;
Wer selber mit der Arduino IDE compilieren will bitte folgende Einstellungen beachten. Die anschließenden Arbeiten sind dann gleich wie bei Abschnitt &#039;&#039;&#039;fertige Binary&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Unbedingt die neueste [https://github.com/bblanchon/ArduinoJson Arduino Json Library] benutzen (siehe oben)! Es gibt zwar keine Compilerfehler, aber es kommt anschließend zu Fehlfunktionen in der ESP Bridge!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 Generic ESP8266 Module&lt;br /&gt;
 Flash Mode: QIO&lt;br /&gt;
 Flash Frequency: 40 MHz&lt;br /&gt;
 CPU Frequency: 80 MHz&lt;br /&gt;
 Flash Size: 1M (64K SPIFFS)&lt;br /&gt;
 Debug Port: disabled&lt;br /&gt;
 Debug Level: none&lt;br /&gt;
 Reset Mode: ck&lt;br /&gt;
 Upload Speed: 115200&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===fertige Binary flashen===&lt;br /&gt;
[[Datei:sonoff_sw_7.jpg|thumb|left|alt=NodeMCU Firmware Flasher]]&lt;br /&gt;
Es empfiehlt sich eine fertige Binary von ESPEasy aufzuspielen. In diesem Wiki wurde R140 verwendet.&lt;br /&gt;
&lt;br /&gt;
Siehe dazu auch den [http://www.esp8266.nu/index.php/Main_Page Link von ESPEasy] und das [https://learn.adafruit.com/building-and-running-micropython-on-the-esp8266/flash-firmware Handbuch] für den Flasher.&lt;br /&gt;
&lt;br /&gt;
In manchen Versionen von ESPEasy (zB.R120) ist auch ein Flasher beigelegt, welcher zwar keine grafische Oberfläche hat aber hervorragend funktioniert. Wenn andere versagen, geht es mit diesem Flasher immer noch, einfach probieren!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 Netzspannung darf &#039;NICHT&#039; angeschlossen sein!!!&lt;br /&gt;
 Taster am Sonoff gedrückt halten&lt;br /&gt;
 FTDI Adapter verbinden&lt;br /&gt;
 Taster am Sonoff los lassen&lt;br /&gt;
 Sketch übertragen&lt;br /&gt;
 Sonoff vom FTDI trennen&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Wenn einmal die Firmware auf das sonoff Modul geflasht worden ist, kann in Zukunft ESPEasy direkt unter Tools via HTTP dies durchführen. Es muss dazu kein FTDI Konverter mehr verwendet werden.&lt;br /&gt;
&lt;br /&gt;
==ESPEasy==&lt;br /&gt;
[[Datei:sonoff_sw_11.jpg|thumb|left|alt=ESPEasy Devices]]&lt;br /&gt;
Wenn das Modul fertig geflasht ist und die Verbindung zum Modul hergestellt ist, können die Einstellungen in ESPEasy durchgeführt werden.&lt;br /&gt;
Dazu am Webinterface anmelden und zunächst die zwei Devices definieren.&lt;br /&gt;
&lt;br /&gt;
Der Hersteller hat für das &#039;&#039;&#039;Relaise GPIO 12&#039;&#039;&#039; und für die &#039;&#039;&#039;grüne Led GPIO 13&#039;&#039;&#039; vorgesehen. Der &#039;&#039;&#039;Taster ist an GPIO 0&#039;&#039;&#039; angeschlossen.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Device Schalter===&lt;br /&gt;
[[Datei:sonoff_sw_12.jpg|thumb|left|alt=Device Relais]]&lt;br /&gt;
Bei den Devices sollten die hier dargestellte Einstellungen beachtet werden. Der Switch (PUMP) sollte auf Input gestellt werden, sodass die anschließenden und benötigten Rules aktiviert werden können.&lt;br /&gt;
&lt;br /&gt;
Da beide Devicenamen gleich benannt wurden (PUMP) wird in FHEM nur ein Device angelegt! Die dazugehörenden Valuenames sind unterschiedlich (Relay, Key).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Device Taster===&lt;br /&gt;
[[Datei:sonoff_sw_13.jpg|thumb|left|alt=Device Key]]&lt;br /&gt;
Der Taste muss natürlich nur konfiguriert werden, wenn auch händisch am Modul geschaltet werden soll. Wird dies nicht benötigt, können auch die Rules geändert bzw. angepasst werden. Doch alleine zu Testzwecken ist es eine nützliche Sache.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Rules===&lt;br /&gt;
[[Datei:sonoff_sw_14.jpg|thumb|left|alt=Rules]]&lt;br /&gt;
Da das sonoff Modul auch einen eingebauten Taster hat und somit auch lokal bedient werden kann, sollte man zunächst unter &#039;&#039;&#039;Tools / Advanced das Häckchen Rules&#039;&#039;&#039; aktivieren, erst dann wird der Tab sichtbar und es können Rules erstellt werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 on PUMP#Key do&lt;br /&gt;
  if [PUMP#Relay]=1&lt;br /&gt;
    gpio,12,0&lt;br /&gt;
  else&lt;br /&gt;
    gpio,12,1&lt;br /&gt;
  endif&lt;br /&gt;
 endon&lt;br /&gt;
 on PUMP#Relay do&lt;br /&gt;
  if [PUMP#Relay]=1 &lt;br /&gt;
    gpio,13,0&lt;br /&gt;
  else&lt;br /&gt;
    gpio,13,1&lt;br /&gt;
  endif&lt;br /&gt;
 endon&lt;br /&gt;
Diese Rules ermöglichen, das bei lokaler Bedienung durch den Taster auch die &#039;&#039;&#039;Led&#039;&#039;&#039; richtig geschaltet wird.&lt;br /&gt;
Mit &#039;on PUMP#Key do&#039; wird geprüft ob die Taste gedrückt ist und schaltet dann entsprechend die Led. Mit den Rules können auch Timer oder sonstige Spielereien realisiert werden. Siehe dazu das [http://www.esp8266.nu/index.php/Tutorial_Rules Tutorial] von ESPeasy.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ESPEasy in FHEM einrichten==&lt;br /&gt;
[[Datei:sonoff_sw_9.jpg|thumb|left|alt=FHEM Konfiguration]]&lt;br /&gt;
Dies ist eine einfache Darstellung wie FHEM automatisch den Device erstellt.&lt;br /&gt;
&lt;br /&gt;
Damit FHEM mit ESPEasy und dem sonoff Modul kommunizieren kann, muss in der fhem.cfg vorerst nur die espBridge mit dem hier dargestellten Eintrag aktiviert werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 define espBridge ESPEasy bridge 8383&lt;br /&gt;
Dies ist eigentlich die einzige Zeile die in fhem.cfg angelegt werden muss. Die restliche Konfiguration wird von FHEM automatisch generiert. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 ##########################################&lt;br /&gt;
 ###             ESPEASY               ####&lt;br /&gt;
 ##########################################&lt;br /&gt;
 &lt;br /&gt;
 define ESPEasy_sonoff_1_PUMP ESPEasy 10.0.0.37 80 espBridge sonoff_1_PUMP&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP IODev espBridge&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP devStateIcon on:rc_GREEN:off off:rc_RED:on absent:rc_BLUE:off gpio:rc_YELLOW:off&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP eventMap /gpio 12 on:on/gpio 12 off:off/gpio 12 gpio:off/gpio 12 output:off/&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP group ESPEasy Device&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP icon hue_filled_outlet&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP room ESPEasy&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP setState 0&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP stateFormat {ReadingsVal($name,&amp;quot;presence&amp;quot;,&amp;quot;&amp;quot;) eq &amp;quot;absent&amp;quot; ? &amp;quot;absent&amp;quot; : ReadingsVal($name,&amp;quot;Relay&amp;quot;,&amp;quot;&amp;quot;)}&lt;br /&gt;
 attr ESPEasy_sonoff_1_PUMP webCmd :&lt;br /&gt;
&lt;br /&gt;
hier ein Beispiel wie es auch manuell leicht modifiziert werden kann.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_8.jpg|thumb|left|alt=sonoff Readings]]&lt;br /&gt;
&lt;br /&gt;
Die Readings werden durch die Bridge (Modul ESPEasy) automatisch angelegt.&lt;br /&gt;
&lt;br /&gt;
Es besteht hier noch genug Spielraum um zB. auch noch Temperatursensoren an das Modul anzuschließen und ebenfalls in FHEM darzustellen.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==MQTT Server einrichten==&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier geht es ausschließlich um den Sketch von Arends und MQTT an den sonoff Modulen! }}&lt;br /&gt;
Es bleibt jedem Anwender die freie Wahl ob die Kommunikation über die ESPEasy-Bridge oder MQTT erfolgen soll. MQTT ist bei der Einrichtung etwas komplexer, da hier auch auf dem Server der Broker installiert werden muss.&lt;br /&gt;
&lt;br /&gt;
Im wesentlichen beschränkt sich die Installation eines MQTT Servers aber auf wenige Arbeitsschritte und ist wie folgt beschrieben durchzuführen. Wer schon einen &#039;&#039;&#039;mosquitto&#039;&#039;&#039; auf dem Server installiert hat, kann diesen Schritt überspringen.&lt;br /&gt;
&lt;br /&gt;
Dieses Kapitel ist insofern interessant, da mit dem Sketch von Theo Arends auch die Einbindung der neuen sonoff Pow Module bereits möglich ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # aus dem mosquitto Repo installieren:&lt;br /&gt;
 wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key&lt;br /&gt;
 sudo apt-key add mosquitto-repo.gpg.key&lt;br /&gt;
 cd /etc/apt/sources.list.d/&lt;br /&gt;
 sudo wget http://repo.mosquitto.org/debian/mosquitto-wheezy.list&lt;br /&gt;
 # oder für jessie&lt;br /&gt;
 sudo wget http://repo.mosquitto.org/debian/mosquitto-jessie.list&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 # mosquitto installieren, sowie client Befehl mosquito_sub (gehört nicht zum Server, wird aber weiter unten benötigt)&lt;br /&gt;
 sudo apt-get install mosquitto mosquitto-clients&lt;br /&gt;
 &lt;br /&gt;
 # MQTT Server Test&lt;br /&gt;
 sudo service mosquitto status&lt;br /&gt;
&lt;br /&gt;
 # Start / Stop des Servers&lt;br /&gt;
 sudo service mosquitto stop&lt;br /&gt;
 sudo service mosquitto start&lt;br /&gt;
 &lt;br /&gt;
 # Perl Version ausgeben&lt;br /&gt;
 perl -v&lt;br /&gt;
 # Perl MQTT Module nachinstallieren (läuft ein paar Minuten)&lt;br /&gt;
 sudo cpan install Net::MQTT:Simple&lt;br /&gt;
 sudo cpan install Net::MQTT:Constants&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Software Arends Sketch===&lt;br /&gt;
[[Datei:sonoff_sw_22.jpg|thumb|left|alt=Arends Menü]]&lt;br /&gt;
&lt;br /&gt;
Ebenso bietet sich die Möglichkeit eine andere alternative Software auf den unterschiedlichen Sonoff Modellen aufzuspielen.&lt;br /&gt;
Speziell für diese Module zugeschnittene Software stammt vom Autor Theo Arends. Alle hier gezeigten Bildschirmfotos und Beispiele beziehen sich auf Basis der Version 2.0.11 (Stand 11.11.2016).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wichtig:&#039;&#039;&#039; erst &#039;&#039;&#039;ab Version 2.0.9&#039;&#039;&#039; sind die Berechnungsfehler und die Referenzfrequenzen für die Umrechnung der Leistungsdaten gefixt worden! Es wird daher angeraten immer die aktuellste Version zu verwenden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Links zu Theo Arend Github&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/arendst/Sonoff-MQTT-OTA-Arduino Download MQTT Sketch]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/arendst/Sonoff-MQTT-OTA-Arduino Arend GitHub]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/arendst/Sonoff-MQTT-OTA-Arduino/wiki Wiki]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; sollten Probleme mit dem ersten Login im Webinterface auftreten, hat der Autor vorgesorgt und mit speziellem wiederholten Tastendruck können verschiedene Modi aufgerufen werden: zB: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3 x Taste kurz drücken&#039;&#039;&#039; und eine Smartconfig wird gestartet und die &#039;&#039;&#039;SSID&#039;&#039;&#039; und das &#039;&#039;&#039;Passwort&#039;&#039;&#039; kann über diese [https://play.google.com/store/apps/details?id=com.cmmakerclub.iot.esptouch Android App] eingegeben werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4 x Taste kurz drücken&#039;&#039;&#039; und man bringt den Device in den &#039;&#039;&#039;Access Point Mode&#039;&#039;&#039; mit der IP-Adresse &#039;&#039;&#039;192.168.4.1&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bis zu 7 verschiedene Modi sind möglich, mehr dazu in Arends Wiki.&lt;br /&gt;
&lt;br /&gt;
[https://github.com/arendst/Sonoff-MQTT-OTA-Arduino/wiki/Button-usage Link zum Wiki Arends, Button]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_bv_01.jpg|thumb|left|alt=Arduino Boardverwalter]]&lt;br /&gt;
In der Arduino IDE unter Datei / Voreinstellungen im Feld &amp;quot;Zusätzliche Boardverwalter-URLs:&amp;quot; den Link: http://arduino.esp8266.com/stable/package_esp8266com_index.json einfügen. &lt;br /&gt;
&lt;br /&gt;
Dann unter &#039;&#039;&#039;Werkzeuge / Board / Boardverwalter&#039;&#039;&#039; ganz am Ende der Liste die Librarys für &amp;quot;esp8266 by ESP8266 Community&amp;quot; die letzte Version 2.3.0 installieren. [https://forum.fhem.de/index.php/topic,46205.msg534707.html#msg534707 Link zum Board].&lt;br /&gt;
&lt;br /&gt;
Das gesamte sonoff Verzeichnis aus [https://github.com/arendst/Sonoff-MQTT-OTA-Arduino/archive/master.zip Arendts Sketch] entpacken (ist wie hier verlinkt ein Zipfile) und dann aus diesem Verzeichnis die sonoff.ino öffnen. Es können dann alle zu dem Sketch zugehörigen Dateien angesehen/editiert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Anschließend muss noch die Datei &#039;&#039;&#039;user_config.h&#039;&#039;&#039; (im Unterverzeichnis &amp;quot;sonoff&amp;quot;) editiert werden. Die Abschnitte          &lt;br /&gt;
&lt;br /&gt;
 // Wifi&lt;br /&gt;
 // Syslog&lt;br /&gt;
 // Ota&lt;br /&gt;
 // MQTT&lt;br /&gt;
&lt;br /&gt;
müssen mit der eigenen &amp;quot;&#039;&#039;&#039;Ip-Adresse-Server&#039;&#039;&#039;&amp;quot;, &amp;quot;&#039;&#039;&#039;SSID&#039;&#039;&#039;&amp;quot; und &amp;quot;&#039;&#039;&#039;password&#039;&#039;&#039;&amp;quot; angepasst werden, das erleichtert den ersten Connect mit dem Modul. Seit der Version 2.1.2 können die WIFI Einstellungen 2-fach angegeben werden, somit wechselt das Device automatisch auf den 2. Wifi Hotspot wenn der erste nicht erreicht wird.&lt;br /&gt;
&lt;br /&gt;
 #define STA_SSID               &amp;quot;SSID&amp;quot;      // Wifi SSID&lt;br /&gt;
 #define STA_PASS               &amp;quot;password&amp;quot;  // Wifi password&lt;br /&gt;
 #define WIFI_HOSTNAME          &amp;quot;%s-%04d&amp;quot;         // Expands to &amp;lt;MQTT_TOPIC&amp;gt;-&amp;lt;last 4 decimal chars of MAC address&amp;gt;&lt;br /&gt;
 #define WIFI_CONFIG_TOOL       WIFI_WPSCONFIG    // Default tool if wifi fails to connect (WIFI_SMARTCONFIG, WIFI_MANAGER or WIFI_WPSCONFIG)&lt;br /&gt;
&lt;br /&gt;
 // Syslog&lt;br /&gt;
 #define SYS_LOG_HOST           &amp;quot;Ip-Adresse-Server&amp;quot;&lt;br /&gt;
 #define SYS_LOG_PORT           514&lt;br /&gt;
 #define SYS_LOG_LEVEL          LOG_LEVEL_NONE&lt;br /&gt;
 #define SERIAL_LOG_LEVEL       LOG_LEVEL_INFO&lt;br /&gt;
 #define WEB_LOG_LEVEL          LOG_LEVEL_INFO&lt;br /&gt;
&lt;br /&gt;
 // Ota&lt;br /&gt;
 #if (ARDUINO &amp;gt;= 168)&lt;br /&gt;
  #define OTA_URL              &amp;quot;http://Ip-Adresse-Server:80/api/arduino/&amp;quot; PROJECT &amp;quot;.ino.bin&amp;quot;&lt;br /&gt;
 #else&lt;br /&gt;
  #define OTA_URL              &amp;quot;http://Ip-Adresse-Server:80/api/arduino/&amp;quot; PROJECT &amp;quot;.cpp.bin&amp;quot;&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
 // MQTT&lt;br /&gt;
 #define MQTT_HOST              &amp;quot;Ip-Adresse-Server&amp;quot;&lt;br /&gt;
 #define MQTT_PORT              1883&lt;br /&gt;
&lt;br /&gt;
 #define MESSAGE_FORMAT         JSON         // [MessageFormat] MQTT Message Format (LEGACY or JSON)&lt;br /&gt;
 #define MQTT_STATUS_OFF        &amp;quot;OFF&amp;quot;        // Command or Status result when turned off (needs to be a string like &amp;quot;0&amp;quot; or &amp;quot;Off&amp;quot;)&lt;br /&gt;
 #define MQTT_STATUS_ON         &amp;quot;ON&amp;quot;         // Command or Status result when turned on (needs to be a string like &amp;quot;1&amp;quot; or &amp;quot;On&amp;quot;)&lt;br /&gt;
 #define MQTT_CMND_TOGGLE       &amp;quot;TOGGLE&amp;quot;     // Command to send when toggling (needs to be a string like &amp;quot;2&amp;quot; or &amp;quot;Toggle&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
In neueren Versionen (ab 3.2.8) wurde auch das Ausgabeformat von LEGACY auf JSON geändert. Gegebenenfalls ist auch hier auf LEGACY zu ändern, da alle Beispiele nur mit &amp;quot;LEGACY&amp;quot; funktionieren.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wichtig:&#039;&#039;&#039; Bei Verwendung des &#039;&#039;&#039;sonoff_POW&#039;&#039;&#039; muss dies ebenfalls in der user_config.h eingestellt werden, also das &amp;quot;SONOFF&amp;quot; sperren und das &amp;quot;&#039;&#039;&#039;SONOFF_POW&#039;&#039;&#039;&amp;quot; aktivieren (// setzen/entfernen). Wir dies nicht durchgeführt, werden auch keine Leistungsdaten via MQTT übertragen!!!&lt;br /&gt;
Ebenso muss in (%userprofile%\Documents\Arduino\libraries\pubsubclient\src\PubSubClient.h) die Max Packet Size auf 400 erhöht werden!&lt;br /&gt;
&lt;br /&gt;
  #define MQTT_MAX_PACKET_SIZE 400&lt;br /&gt;
  #define MQTT_KEEPALIVE 120&lt;br /&gt;
Anpassung der max. Packet Size auf 400 und das Keepalive auf 120&lt;br /&gt;
&lt;br /&gt;
 // Enable only one out of three MODULE defines below&lt;br /&gt;
 //#define MODULE                 SONOFF            // Sonoff, Sonoff SV, Sonoff Dual, Sonoff TH 10A/16A, S20 Smart Socket, 4 Channel&lt;br /&gt;
 #define MODULE                 SONOFF_POW        // Sonoff Pow&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Anschluß wird der Sketch mit der Arduino IDE (getestet mit 1.6.12) compiliert und die Binary dann exportiert (Sketch / Kompilierte Binärdatei exportieren). Die erzeugte .bin Datei dann mit dem Tool &amp;quot;ESP8266Flasher.exe&amp;quot; flashen, so wie auch bei ESPEasy. Wer nicht compilieren will, kann auch im Unterverzeichnis ./api/arduino/ die fertige Binary ( sonoff.ino ) benutzen, aber dann ohne Voreinstellung der lokalen IPs.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===MQTT testen===&lt;br /&gt;
[[Datei:sonoff_sw_20.jpg|thumb|left|alt=Arends Menü]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nach erfolgtem Flash des Modules kann das Webinterface des Moduls zum ersten Mal aufgerufen werden (im Router nach der IP des Moduls suchen).&lt;br /&gt;
&lt;br /&gt;
Es bieten sich hier mehrere Möglichkeiten die die weitere Einrichtung des Moduls unterstützen. Einfach die Menüpunkte durchprobieren, sie erklären sich von selbst. Für erste Tests empfiehlt sich die lokale Konsole um die Ereignisse aus Sicht des Modules mit verfolgen zu können. Alles was hier gesendet wird, sollte ebenfalls am Server mitgeloggt werden können. Wenn bis hierher alles funktioniert, kann dann mir der Konfiguration in FHEM beginnen.&lt;br /&gt;
&lt;br /&gt;
Der Name des Moduls kann unter &amp;quot;Configuration&amp;quot; -&amp;gt; &amp;quot;Configure MQTT&amp;quot; -&amp;gt; &amp;quot;Topic (sonoff)&amp;quot; nachgeschaut und geändert werden. In FHEM wird beim definieren des Moduls dieser Name in den subscribeReadings bzw. publishSets eingegeben um die Verbindung zum Modul herzustellen.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Am Server jetzt eine Konsole öffnen und folgende Topic (alle) einstellen.&lt;br /&gt;
&lt;br /&gt;
 mosquitto_sub -d -v -t \# &lt;br /&gt;
Mit dieser Einstellung werden alle Topics geloggt! &lt;br /&gt;
&lt;br /&gt;
 pi@raspberry ~ $ mosquitto_sub -d -v -t \#&lt;br /&gt;
 Received CONNACK&lt;br /&gt;
 Received SUBACK&lt;br /&gt;
 Subscribed (mid: 1): 0&lt;br /&gt;
 Received PUBLISH (d0, q0, r1, m0, &#039;/sonoff/36/temperature&#039;, ... (5 bytes))&lt;br /&gt;
 /sonoff/36/temperature 14.06&lt;br /&gt;
 Received PUBLISH (d0, q0, r1, m0, &#039;/sonoff/35/Count&#039;, ... (3 bytes))&lt;br /&gt;
 /sonoff/35/Count 0.0&lt;br /&gt;
 Received PUBLISH (d0, q0, r1, m0, &#039;/sonoff/35/Total&#039;, ... (3 bytes))&lt;br /&gt;
 /sonoff/35/Total 0.0&lt;br /&gt;
 Received PUBLISH (d0, q0, r1, m0, &#039;/sonoff/35/Time&#039;, ... (1 bytes))&lt;br /&gt;
 /sonoff/35/Time 0&lt;br /&gt;
 Received PUBLISH (d0, q0, r1, m0, &#039;/sonoff/temperature&#039;, ... (5 bytes))&lt;br /&gt;
 /sonoff/temperature 14.00&lt;br /&gt;
 Received PUBLISH (d0, q0, r1, m0, &#039;/sonoff/Count&#039;, ... (3 bytes))&lt;br /&gt;
 /sonoff/Count 0.0&lt;br /&gt;
 Received PUBLISH (d0, q0, r1, m0, &#039;/sonoff/Total&#039;, ... (3 bytes))&lt;br /&gt;
 /sonoff/Total 0.0&lt;br /&gt;
 Received PUBLISH (d0, q0, r1, m0, &#039;/sonoff/Time&#039;, ... (1 bytes))&lt;br /&gt;
 /sonoff/Time 0&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;stat/sonoff/1/POWER&#039;, ... (2 bytes))&lt;br /&gt;
 stat/sonoff/1/POWER ON&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;stat/sonoff/1/POWER&#039;, ... (3 bytes))&lt;br /&gt;
 stat/sonoff/1/POWER OFF&lt;br /&gt;
&lt;br /&gt;
Interessant sind für uns nun diese Einträge &amp;quot;stat/sonoff/1/POWER ON&amp;quot; , dazu am Taster des sonoff manuell umschalten. Dies entspricht genau der Syntax wie sie im Anschluss in FHEM dann zu verwenden ist.&lt;br /&gt;
&lt;br /&gt;
Mit diesen Einstellungen können dann entweder nach Telemetriedaten oder nach Statusmeldungen gefiltert werden. Dies ist jedoch nur notwendig wenn bereits andere MQTT Devices am Broker hängen und es sonst zu unübersichtlich wird.&lt;br /&gt;
 mosquitto_sub -h localhost -t tele/sonoff/#    = Telemetriedaten&lt;br /&gt;
 mosquitto_sub -h localhost -t stat/sonoff/#    = Statusmeldungen&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_21.jpg|thumb|left|alt=Arends Log]]&lt;br /&gt;
Sehr nützlich das lokale Log zur Fehlersuche und Inbetriebnahme.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Als Besonderheit benutzt der Autor zum Senden und Empfangen unterschiedliche Syntax und unterscheidet dies durch vorangestellte Prefixe vor der eigentlichen Topic.&lt;br /&gt;
#define SUB_PREFIX       &amp;quot;cmnd&amp;quot;       Sonoff devices subscribe to:- cmnd/MQTT_TOPIC and cmnd/MQTT_GRPTOPIC&lt;br /&gt;
#define PUB_PREFIX       &amp;quot;stat&amp;quot;       Sonoff devices publish to:- stat/MQTT_TOPIC&lt;br /&gt;
#define PUB_PREFIX2      &amp;quot;tele&amp;quot;       Sonoff devices publish telemetry data to:- tele/MQTT_TOPIC/UPTIME, POWER/LIGHT and TIME&lt;br /&gt;
Bitte dies unbedingt in der FHEM Konfiguration dann beachten!&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==MQTT in FHEM einrichten==&lt;br /&gt;
[[Datei:sonoff_sw_24.jpg|thumb|left|alt=FHEM sonoff Schalter]]&lt;br /&gt;
Dieser einfache Schalter kommuniziert bidirektional mit dem sonoff Device.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_25.jpg|thumb|left|alt=FHEM sonoff Schalter]]&lt;br /&gt;
Die Readings in diesem verwendeten Beispiel zeigen sich wie in FHEM gewohnt.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Einrichtung in FHEM wird von den Modulen 00_MQTT.pm, 10_MQTT_BRIDGE und 10_MQTT_DEVICE.pm unterstützt.&lt;br /&gt;
&lt;br /&gt;
[https://forum.fhem.de/index.php?topic=27532.0 Link zum Forum: MQTT FHEM Einrichtung]&lt;br /&gt;
&lt;br /&gt;
 ### 1. Broker anlegen ###&lt;br /&gt;
 define myBroker MQTT 10.0.0.5:1883&lt;br /&gt;
&lt;br /&gt;
 ### 2. FHEM Device mit MQTT verbinden ###&lt;br /&gt;
 define Sonoff_Switch MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Switch IODev myBroker&lt;br /&gt;
 attr Sonoff_Switch eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_Switch icon hue_filled_br30&lt;br /&gt;
 attr Sonoff_Switch publishSet ON OFF cmnd/sonoff/1/POWER/set&lt;br /&gt;
 attr Sonoff_Switch room MQTT&lt;br /&gt;
 attr Sonoff_Switch stateFormat Licht&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_Licht stat/sonoff/POWER&lt;br /&gt;
 # oder mit tele, je nachdem was in der user_config.h eingestellt wurde!!!&lt;br /&gt;
 #attr Sonoff_Switch subscribeReading_Licht tele/sonoff/POWER &lt;br /&gt;
 attr Sonoff_Switch subscribeReading_state cmnd/sonoff/1/POWER/set&lt;br /&gt;
 attr Sonoff_Switch webCmd ON:OFF&lt;br /&gt;
Der hier dargestellte Beispielcode realisiert die Kommunikation zwischen FHEM und dem sonoff Modul via MQTT Broker. Zu beachten ist hier, dass &#039;&#039;&#039;subscribeReading_Licht&#039;&#039;&#039; und &#039;&#039;&#039;subscribeReading_state&#039;&#039;&#039; unterschiedliche Syntax des Topic Strings haben!&lt;br /&gt;
&lt;br /&gt;
==Sonoff POW einrichten==&lt;br /&gt;
[[Datei:sonoff_sw_31.jpg|thumb|left|alt=Sonoff POW]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier geht es ausschließlich um das Modul Sonoff POW!}}&lt;br /&gt;
Das Modul kommt in gewohnter Itead Qualität und eine derart kostengünstige Energiemessung wird bei Smart Home Anwendern gerne eingesetzt. Die Originalsoftware habe ich nicht einmal getestet, da damit eine Anbindung an FHEM leider nicht möglich ist.&lt;br /&gt;
&lt;br /&gt;
Ebenso möchte kaum jemand an eine nicht dokumentierte chinesische Cloud die Steuerbefehle seiner Schalter senden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_sw_33.jpg|thumb|left|alt=Sonoff POW]]&lt;br /&gt;
Bitte auf keinen Fall das Modul während der Arbeiten an die Netzspannung anschießen. Zum Flashen genügt (und nur diese) die Versorgungspannung des USB-TTL Konverters. Wie auf dem Foto gut erkennbar, wurde dieses Modul ohne einlöten einer Pfostensteckerleiste geflasht. Die Steckverbindung wird einfach in die Lötaugen gesteckt und mit einem Gummiring fixiert, da ja spätere Flashvorgänge im Webif des Models funktionieren und so die Arbeit eingespart werden kann. Es steht jedoch nichts im Wege die Pfostensteckerleiste einzulöten.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Die Anschlüsse am Modul sind wie folgt belegt.&lt;br /&gt;
 o GND&lt;br /&gt;
 o TxD&lt;br /&gt;
 o RxD&lt;br /&gt;
 o VDD&lt;br /&gt;
&lt;br /&gt;
Für den Flashvorgang gelten die selben Regeln wie schon beim sonoff Switch oben erwähnt (3,3V!).&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Sonoff POW Software===&lt;br /&gt;
[[Datei:sonoff_sw_35.jpg|thumb|left|alt=Sonoff POW FHEM]]&lt;br /&gt;
Als Software steht im Augenblick nur der Sketch von Arends zur Verfügung, liefert aber alles was das Herz begehrt und ist ist einfach zu handhaben. Hier eine eine einfache Darstellung mit der aktuellen Leistung und dem Tagesverbrauch. Zusätzlich besteht auch noch die Möglichkeit den angeschlossenen Verbraucher Ein- oder Auszuschalten. Getestet wurde hier mit der Version 2.06, 2.07 und 2.019a von Arends.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_pow_02.jpg|thumb|left|alt=Sonoff POW Webif]]&lt;br /&gt;
Seit Version 2.0.19a ist auch die Leistungsanzeige im WEBIF wie im Bild links integriert. Auch der Energieverbrauch des Vortages wird mit angezeigt. Alle hier angezeigten Daten werden auch zyklisch im MQTT String an FHEM übergeben.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich kann im Sketch auch das Feature &amp;quot;&#039;&#039;&#039;Power_Limit&#039;&#039;&#039;&amp;quot; aktiviert werden ( #define FEATURE_POWER_LIMIT in der sonoff.ino). Wenn dies gewünscht ist, dann vor dem compilieren die beiden // entfernen. Mit dem Power_Limit wird eine zusätzliche Nachricht erzeugt, wenn ein bestimmter einstellbarer Grenzwert über- oder unterschritten wird. &lt;br /&gt;
&lt;br /&gt;
Es lassen sich dadurch Meldungen wie &amp;quot;Waschmaschine fertig&amp;quot; oder ähnliches ohne weitere Schwellwert Überwachungen in FHEM ableiten. Die Meldungen kommen in MQTT mit &amp;quot;&#039;&#039;&#039;tele/sonoff/POWER_LOW ON&#039;&#039;&#039;&amp;quot; bzw. &amp;quot;&#039;&#039;&#039;tele/sonoff/POWER_LOW OFF&#039;&#039;&#039;&amp;quot;.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Bevor der Sketch compiliert wird, müssen neben den IP-Einstellungen noch in der user_config.h auch andere Einstellungen vorgenommen werden.&lt;br /&gt;
&lt;br /&gt;
 #define MODULE                 SONOFF_POW       // Hardware module type (SONOFF, SONOFF_POW or ELECTRO_DRAGON)&lt;br /&gt;
 #define PROJECT                &amp;quot;sonoffpow&amp;quot;     // PROJECT is used as the default topic delimiter and OTA file name                                            // As an IDE restriction it needs to be the same as the main .ino file&lt;br /&gt;
&lt;br /&gt;
Der Typ des Modules muss von &amp;quot;SONOFF&amp;quot; auf &amp;quot;&#039;&#039;&#039;SONOFF_Pow&#039;&#039;&#039;&amp;quot; geändert werden,. damit die Software weiß mit welchem Modul es zu tun hat und kann dann die entsprechenden Berechnungen durchführen. Die Leistungsdaten kommen ja in Form einer Frequenz aus dem Baustein und müssen im Sketch (xsns_hlw8102.ino) umgerechnet werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #elif MODULE == SONOFF_POW                  // programming header 1:3.3V 2:rx 3:tx 4:gnd&lt;br /&gt;
  #define APP_NAME             &amp;quot;Sonoff Pow module&amp;quot;&lt;br /&gt;
  #define USE_POWERMONITOR                  // Enable Power Monitoring&lt;br /&gt;
  #define USE_POWERCALIBRATION              // Enable setting Calibration parameters by user commands&lt;br /&gt;
&lt;br /&gt;
Bei Einsatz des POW Modules kann die externe Kalibrierung aktiviert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Definition aus der power.ino (2.0.9) für die korrekte Umrechnung der gelieferten Frequenzen für die Leistungsdaten.&lt;br /&gt;
 #define HLW_PREF            10000    // 1000.0W&lt;br /&gt;
 #define HLW_UREF             2200    // 220.0V&lt;br /&gt;
 #define HLW_IREF             4545    // 4.545A&lt;br /&gt;
&lt;br /&gt;
 #define HLW_PREF_PULSE       4975    // 4975us = 201Hz = 1000W&lt;br /&gt;
 #define HLW_UREF_PULSE       1666    // 1666us = 600Hz = 220V&lt;br /&gt;
 #define HLW_IREF_PULSE       1666    // 1666us = 600Hz = 4.545A&lt;br /&gt;
                                            &lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_sw_36.jpg|thumb|left|alt=Sonoff POW Attribute]]&lt;br /&gt;
Dieses Bild zeigt die Attribute die vom Modul via MQTT an FHEM geliefert werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
aktuell gelieferte Readings (Mqtt Strings) vom Sketch nach unten dargestellter Definition in FHEM.&lt;br /&gt;
 tele/sonoffpow/TODAY_ENERGY    &lt;br /&gt;
 tele/sonoffpow/PERIOD_ENERGY   &lt;br /&gt;
 tele/sonoffpow/POWER_FACTOR   &lt;br /&gt;
 tele/sonoffpow/CURRENT_POWER  &lt;br /&gt;
 tele/sonoffpow/VOLTAGE         &lt;br /&gt;
 tele/sonoffpow/CURRENT        &lt;br /&gt;
&lt;br /&gt;
Hier ein Mittschnitt des Datenverkehrs zum Broker zwecks Kontrolle der korrekten Funktion der Module und der Software.&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff/RSSI&#039;, ... (2 bytes))&lt;br /&gt;
 tele/sonoff/RSSI 82&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff/TEMPERATURE&#039;, ... (3 bytes))&lt;br /&gt;
 tele/sonoff/TEMPERATURE 1.9&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff/HUMIDITY&#039;, ... (4 bytes))&lt;br /&gt;
 tele/sonoff/HUMIDITY 97.9&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff/POWER&#039;, ... (3 bytes))&lt;br /&gt;
 tele/sonoff/POWER OFF&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoff/TIME&#039;, ... (19 bytes))&lt;br /&gt;
 tele/sonoff/TIME 2016-11-12T10:36:13&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/UPTIME&#039;, ... (1 bytes))&lt;br /&gt;
 tele/sonoffpow/UPTIME 1&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/RSSI&#039;, ... (2 bytes))&lt;br /&gt;
 tele/sonoffpow/RSSI 34&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/TODAY_ENERGY&#039;, ... (5 bytes))&lt;br /&gt;
 tele/sonoffpow/TODAY_ENERGY 0.083&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/PERIOD_ENERGY&#039;, ... (1 bytes))&lt;br /&gt;
 tele/sonoffpow/PERIOD_ENERGY 8&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/CURRENT_POWER&#039;, ... (2 bytes))&lt;br /&gt;
 tele/sonoffpow/CURRENT_POWER 97&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/POWER_FACTOR&#039;, ... (4 bytes))&lt;br /&gt;
 tele/sonoffpow/POWER_FACTOR 1.00&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/VOLTAGE&#039;, ... (3 bytes))&lt;br /&gt;
 tele/sonoffpow/VOLTAGE 225&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/CURRENT&#039;, ... (5 bytes))&lt;br /&gt;
 tele/sonoffpow/CURRENT 0.426&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/POWER&#039;, ... (2 bytes))&lt;br /&gt;
 tele/sonoffpow/POWER ON&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;tele/sonoffpow/TIME&#039;, ... (19 bytes))&lt;br /&gt;
 tele/sonoffpow/TIME 2016-11-12T10:36:28&lt;br /&gt;
 Sending PINGREQ&lt;br /&gt;
 Received PINGRESP&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Einstellungen können mit folgender Syntax angefordert werden (zwei Terminalfenster öffnen, eines zum protokollieren und eines zum Seden der Befehle).&lt;br /&gt;
 mosquitto_sub -d -v -t \#  MQTT Datenverkehr protokolieren&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/1/status/set -m &amp;quot;8&amp;quot;      = SonoffPOW Status jetzt auslesen&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/1/TelePeriod/set -m &amp;quot;60&amp;quot; = Timer setzen, alle 60 Sekunden Daten senden &lt;br /&gt;
Die Kommandos können direkt am Broker (Terminalfenster Putty etc.) abgesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sonoff POW Kalibrieren ===&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier wird beschrieben, wie der &#039;&#039;Sonoff POW kalibriert&#039;&#039; werden kann. }}&lt;br /&gt;
Ab Version 2.0.11 kann nun auch der POW kalibriert werden.&lt;br /&gt;
Dazu kann man 2 Konsolenfenster öffnen, im ersten aktiviert man das Protokoll für den Datenverkehr&lt;br /&gt;
 mosquitto_sub -d -v -t \#  MQTT Datenverkehr protokollieren&lt;br /&gt;
&lt;br /&gt;
Dann kann mit folgenden Befehlen die HLW Referenz Pulsfrequenz gesetzt werden.&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/1/HLWUCAL/set -m &amp;quot;2100&amp;quot;     default = 1950&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/1/HLWICAL/set -m &amp;quot;2450&amp;quot;     default = 3500&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/1/HLWPCAL/set -m &amp;quot;13500&amp;quot;    default = 12345 &lt;br /&gt;
Entweder man hat eine definierte Last zur Verfügung oder besser man misst mit einem Leistungsmesser nach. Die Spannung kann man mit einem Multimeter nachmessen (sollte 230 V sein) und der Strom wird errechnet (bei 100 Watt I = P / U ) = 100/230 = 0,4347.&lt;br /&gt;
Die Referenzwerte solange geringfügig ändern bis die Ausgabe passt. Für die Ausgabe wird einfach eine Statusabfrage durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 mosquitto_pub -q 2 -t cmnd/sonoffpow/1/status/set -m &amp;quot;8&amp;quot;&lt;br /&gt;
Befehl für die Statusabfrage&lt;br /&gt;
&lt;br /&gt;
 cmnd/sonoffpow/1/status/set 8&lt;br /&gt;
 Received PUBLISH (d0, q0, r0, m0, &#039;stat/sonoffpow/1/STATUS&#039;, ... (103 bytes))&lt;br /&gt;
 stat/sonoffpow/1/STATUS PWR: Voltage 225 V, Current 0.427 A, Current Power 98 W, Total Power Today 0.080 kWh, Power Factor 1.00&lt;br /&gt;
Ergebnis der Statusabfrage mit Spannung, Strom und Leistung.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sonoff POW FHEM Anbindung===&lt;br /&gt;
Ein Beispiel einer einfachen Anbindung via MQTT an FHEM. MQTT ist insofern notwendig, da in der Software ESPEasy und der Bridge noch keine Implementierung der Frequenzumrechnung enthalten ist.&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Pow MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Pow IODev myBroker&lt;br /&gt;
 attr Sonoff_Pow eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_Pow icon measure_power&lt;br /&gt;
 attr Sonoff_Pow publishSet ON OFF cmnd/sonoffpow/1/POWER/set&lt;br /&gt;
 attr Sonoff_Pow room MQTT&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_Power tele/sonoffpow/POWER&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_state cmnd/sonoffpow/1/POWER/set&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_TODAY_ENERGY tele/sonoffpow/TODAY_ENERGY&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_PERIOD_ENERGY tele/sonoffpow/PERIOD_ENERGY&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_CURRENT_POWER tele/sonoffpow/CURRENT_POWER&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_VOLTAGE tele/sonoffpow/VOLTAGE &lt;br /&gt;
 attr Sonoff_Pow subscribeReading_CURRENT tele/sonoffpow/CURRENT&lt;br /&gt;
 attr Sonoff_Pow subscribeReading_AKTUELL stat/sonoffpow/1/STATUS&lt;br /&gt;
 attr Sonoff_Pow webCmd ON:OFF&lt;br /&gt;
 attr Sonoff_Pow stateFormat {sprintf(&amp;quot;akutelle Leistung: %.1f W Tagesverbrauch: %.2f Kw/h&amp;quot;, ReadingsVal($name,&amp;quot;CURRENT_POWER&amp;quot;,undef), ReadingsVal($name,&amp;quot;TODAY_ENERGY&amp;quot;,undef))}&lt;br /&gt;
Zusätzlich kann hier noch das Relais mit &amp;quot;on&amp;quot; und &amp;quot;off&amp;quot; ein- ausgeschaltet werden. Ab Version 2.0.15 wurden hier die ReadingsNamen auf TODAY_ENERGY und PERIOD_ENERGY (anstatt _POWER) geändert.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Sonoff POW Netz-Anschluß===&lt;br /&gt;
[[Datei:sonoff_sw_34.jpg|thumb|left|alt=Sonoff POW Netzanschluß]]&lt;br /&gt;
Erst wenn alle Arbeiten an der Hard- und Software abgeschlossen sind, kann man das Modul an die Netzspannung anschließen. Wer es sich einfach machen will, nimmt eine Industriell gefertigte 230 V Verlängerung  (zwischen 1,5 - 3 Meter) und schneidet sie in der Mitte durch. Nach dem abisolieren der flexiblen Drähte sollte diese &#039;&#039;&#039;verlötet oder mit Aderendhülsen&#039;&#039;&#039; versehen werden (müssen aber exakt passen, da hier kaum Platz in den Klemmen ist). &lt;br /&gt;
Mit einem kleinen Schraubendreher kann man die Feder der Klemmen niederdrücken und das verzinnte Drahtende tief ich die Öffnung stecken. Es dürfen keine Drahtlitzen aus den Öffnungen sichtbar sein, Kurzschlußgefahr! Ebenso sollte eine Zugprobe durchgeführt werden ob die Klemme auch richtig eingerastet ist.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ACHTUNG:&#039;&#039;&#039; diese Arbeiten müssen von einem ausgebildeten Fachpersonal (Elektriker) durchgeführt werden, Lebensgefahr!&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sonoff POW Design===&lt;br /&gt;
&lt;br /&gt;
====ReadingsGroup normal====&lt;br /&gt;
[[Datei:sonoff_sw_46.jpg|thumb|left|alt=Sonoff POW Design]]&lt;br /&gt;
Viele Benutzer wollen schönere und funktionelle Ausgaben am Bildschirm sehen. Die Möglichkeiten nach oben sind hier sehr vielfältig. Anhand von zwei einfachen aber mächtigen Funktionen hier ein kleines Beispiel wie hier im Bild dargestellt.&lt;br /&gt;
&lt;br /&gt;
Was das Design betrifft, sind hier mehrere Möglichkeiten gegeben und nach oben ist für findige Anwender alles offen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zunächst wird mit dem Hilfsmodul &amp;quot;&#039;&#039;&#039;average&#039;&#039;&#039;&amp;quot; eine Art Statistik (Durchschnittsberechnung, Min.,Max., etc.) hinzugefügt. Das beschränkt sich auf eine einzige Zeile. Es würde sich auch &#039;&#039;&#039;statistic&#039;&#039;&#039; dazu eignen.&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Pow_CURRENT_POWER average Sonoff_Pow:CURRENT_POWER.*&lt;br /&gt;
Die &amp;quot;average&amp;quot; Funktion wird in das Device &amp;quot;Sonof_Pow&amp;quot; auf das Reading &amp;quot;CURRENT_POWER&amp;quot; hinzugefügt.&lt;br /&gt;
&lt;br /&gt;
Der zweite Schritt wird eine &#039;&#039;&#039;readingsGroup&#039;&#039;&#039; mit den gewünschten und gefilterten Ausgabedaten. Durch die verschiedenen IF Abfragen der unterschiedlichen VALUE wird bei über- oder unterschreiten eines Wertes eine bestimmte Farbe angewandt. Weitere Beispiele dazu siehe im Wiki unter [http://www.fhemwiki.de/wiki/ReadingsGroup readingsGroup]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 define SonoffPows readingsGroup &amp;lt;%measure_power&amp;gt;,&amp;lt;aktuell&amp;gt;,&amp;lt;Tag&amp;gt;,&amp;lt;Strom&amp;gt;,&amp;lt;Durchschnitt&amp;gt;,&amp;lt;max.P&amp;gt;,&amp;lt;Schaltzyklen&amp;gt;,&amp;lt; hr &amp;gt; .*(Sonoff_Pow|Sonoff_Pow2):CURRENT_POWER,TODAY_ENERGY,CURRENT,CURRENT_POWER_avg_day,CURRENT_POWER_max_day,PERIOD_ENERGY&lt;br /&gt;
 attr SonoffPows mapping %ALIAS&lt;br /&gt;
 attr SonoffPows nameStyle style=&amp;quot;color:yellow&amp;quot;&lt;br /&gt;
 attr SonoffPows room MQTT&lt;br /&gt;
 attr SonoffPows valueFormat {&#039;CURRENT_POWER&#039; =&amp;gt;&amp;quot;%.0f W&amp;quot;, &#039;TODAY_ENERGY&#039; =&amp;gt;&amp;quot;%.2f Kw&amp;quot;, &#039;CURRENT&#039; =&amp;gt;&amp;quot;%.2f A&amp;quot;,&#039;CURRENT_POWER_max_day&#039; =&amp;gt; &amp;quot;%.0f W&amp;quot;,&#039;CURRENT_POWER_avg_day&#039; =&amp;gt; &amp;quot;%.2f W&amp;quot;,&#039;PERIOD_ENERGY&#039;=&amp;gt;&amp;quot;%.0f Zyklen&amp;quot;}&lt;br /&gt;
 attr SonoffPows valueStyle { if($READING eq &amp;quot;CURRENT_POWER&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 0 &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;TODAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 4.8){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;TODAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 2.5){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;TODAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 2.5 &amp;amp;&amp;amp; $VALUE &amp;lt; 4.8 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 0.45){&#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039;}elsif( $READING eq &amp;quot;CURRENT&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 0.45 &amp;amp;&amp;amp; $VALUE &amp;lt; 0.87 ){&#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 0.87){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;PERIOD_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 10){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;PERIOD_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 10 &amp;amp;&amp;amp; $VALUE &amp;lt; 15 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;PERIOD_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 15){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; } }&lt;br /&gt;
&lt;br /&gt;
Die readingsGroup sind etwas komplex zu lesen, aber nach etwas Einarbeitung klappt das schon. Die in diesem Beispiel verwendeten Readingsnamen beziehen sich auf die Beispielkonfigurationen hier im Wiki.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
====ReadingsGroup mit Schaltmöglichkeit====&lt;br /&gt;
[[Datei:sonoff_pow_03.jpg|thumb|left|alt=readingsGroup mit Schalter]]&lt;br /&gt;
Die vorher erwähnte ReadingsGroup kann auch gleich mit einem Schalter versehen werden um den POW Ein- oder Aus schalten zu können. Dazu ist aber eine andere Einstellung im Sketch erforderlich.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der &amp;quot;&#039;&#039;&#039;user_config.h&#039;&#039;&#039;&amp;quot; muss an dieser Stelle auch die &amp;quot;&#039;&#039;&#039;PUB_PREFIX&#039;&#039;&#039;&amp;quot; auf die gleiche Topic wie &amp;quot;PUB_PREFIX2&amp;quot; eingestellt werden. Durch diese Maßnahme wird erreicht, dass sofort nach dem Knopfdruck auch der Status mit der Topic &amp;quot;tele&amp;quot; übertragen wird. Würde der weiterhin mit &amp;quot;stat&amp;quot; übertragen, kann er in der Readingsgroup nur sehr umständlich weiter behandelt werden. Dadurch wird erreicht, dass der Schalter sofort nach dem Schaltvorgang und der Rückmeldung (Status) auch seine Farbe ändert. Wird dieser Eintrag vergessen, ändert der Schalter erst nach Eintreffen der nächsten zyklischen Abfrage seinen Status/Farbe.&lt;br /&gt;
&lt;br /&gt;
 #define SUB_PREFIX             &amp;quot;cmnd&amp;quot;       // Sonoff devices subscribe to:- SUB_PREFIX/MQTT_TOPIC and SUB_PREFIX/MQTT_GRPTOPIC&lt;br /&gt;
 #define PUB_PREFIX             &amp;quot;tele&amp;quot;       // Sonoff devices publish to:- PUB_PREFIX/MQTT_TOPIC&lt;br /&gt;
 #define PUB_PREFIX2            &amp;quot;tele&amp;quot;       // Sonoff devices publish telemetry data to:- PUB_PREFIX2/MQTT_TOPIC/UPTIME, POWER/LIGHT and TIME&lt;br /&gt;
hier die PUB_PREFIX mit der geänderten Topic &amp;quot;tele&amp;quot; anstatt &amp;quot;stat&amp;quot; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 define SonoffPows readingsGroup &amp;lt;%measure_power&amp;gt;,&amp;lt;aktuell&amp;gt;,&amp;lt;Tag&amp;gt;,&amp;lt;Gestern&amp;gt;,&amp;lt;Strom&amp;gt;,&amp;lt;Durchschnitt&amp;gt;,&amp;lt;max.P&amp;gt;,&amp;lt;Zyklus&amp;gt;,&amp;lt;Faktor&amp;gt;,&amp;lt;Status&amp;gt;,&amp;lt; hr &amp;gt; .*(Sonoff_Pow|Sonoff_Pow2|Sonoff_Pow3):CURRENT_POWER,TODAY_ENERGY,YESTERDAY_ENERGY,CURRENT,CURRENT_POWER_avg_day,CURRENT_POWER_max_day,PERIOD_ENERGY,POWER_FACTOR,LIGHT&lt;br /&gt;
 attr SonoffPows commands {&#039;LIGHT.ON&#039; =&amp;gt; &#039;set $DEVICE OFF&#039;,&#039;LIGHT.OFF&#039; =&amp;gt; &#039;set $DEVICE ON&#039;}&lt;br /&gt;
 attr SonoffPows mapping %ALIAS&lt;br /&gt;
 attr SonoffPows nameStyle style=&amp;quot;color:yellow&amp;quot;&lt;br /&gt;
 attr SonoffPows room Energie,MQTT&lt;br /&gt;
 attr SonoffPows valueFormat {&#039;CURRENT_POWER&#039; =&amp;gt;&amp;quot;%.0f W&amp;quot;, &#039;TODAY_ENERGY&#039; =&amp;gt;&amp;quot;%.2f Kw&amp;quot;,&#039;YESTERDAY_ENERGY&#039; =&amp;gt;&amp;quot;%.2f Kw&amp;quot;, &#039;CURRENT&#039; =&amp;gt;&amp;quot;%.2f A&amp;quot;,&#039;CURRENT_POWER_max_day&#039; =&amp;gt; &amp;quot;%.0f W&amp;quot;,&#039;CURRENT_POWER_avg_day&#039; =&amp;gt; &amp;quot;%.2f W&amp;quot;,&#039;CURRENT_POWER&#039;=&amp;gt;&amp;quot;%.0f W&amp;quot;,&#039;POWER_FACTOR&#039; =&amp;gt; &amp;quot;%.2f &amp;quot;}&lt;br /&gt;
 attr SonoffPows valueIcon {&#039;LIGHT.ON&#039; =&amp;gt; &#039;rc_GREEN@green&#039;, &#039;LIGHT.OFF&#039; =&amp;gt; &#039;rc_RED@red&#039;}&lt;br /&gt;
 attr SonoffPows valueStyle { if($READING eq &amp;quot;CURRENT_POWER&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 0 &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;TODAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 4.8){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;TODAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 2.5){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;TODAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 2.5 &amp;amp;&amp;amp; $VALUE &amp;lt; 4.8 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;YESTERDAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 2.5){ &#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;YESTERDAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 2.5 &amp;amp;&amp;amp; $VALUE &amp;lt; 4.8 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;YESTERDAY_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 4.8){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 0.45){&#039;style=&amp;quot;color:green;;text-align:right&amp;quot;&#039;}elsif( $READING eq &amp;quot;CURRENT&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 0.45 &amp;amp;&amp;amp; $VALUE &amp;lt; 0.87 ){&#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 0.87){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_avg_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;PERIOD_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 10){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;PERIOD_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 10 &amp;amp;&amp;amp; $VALUE &amp;lt; 15 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;PERIOD_ENERGY&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 15){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;lt;= 100){ &#039;style=&amp;quot;color:lightgreen;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt; 100 &amp;amp;&amp;amp; $VALUE &amp;lt; 200 ){ &#039;style=&amp;quot;color:orange;;text-align:right&amp;quot;&#039; }elsif( $READING eq &amp;quot;CURRENT_POWER_max_day&amp;quot; &amp;amp;&amp;amp; $VALUE &amp;gt;= 200){ &#039;style=&amp;quot;color:red;;text-align:right&amp;quot;&#039; } }&lt;br /&gt;
hier die erweiterte ReadingsGroup mit dem Schalter. Bei Bedarf sind hier die Devicenamen anzupassen wenn andere Namen verwendet werden (Sonoff_Pow|Sonoff_Pow2|Sonoff_Pow3).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====POW mit FTUI anzeigen====&lt;br /&gt;
[[Datei:sonoff_pow_energy.JPG|thumb|left|alt=Tablett FTUI]]&lt;br /&gt;
Wer möchte kann die Energieanzeigen auch mit der [https://forum.fhem.de/index.php/topic,34233.0.html Tablett UI] für eine Tablet Ansicht gestalten. Mit dieser stehen viele Möglichkeiten zu einer attraktiven Darstellung zur Verfügung.&lt;br /&gt;
Hier ein Beispiel welches mit den Widget &amp;quot;[http://www.fhemwiki.de/wiki/FHEM_Tablet_UI#Widget_THERMOSTAT thermostat]&amp;quot; dargestellt ist.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Slampher Flashen==&lt;br /&gt;
[[Datei:sonoff_sl_53.jpg|thumb|left|alt=Sonoff SLAMPHER]]&lt;br /&gt;
Dieses Modul ist eine Besonderheit was das Flashen betrifft, denn mit Hilfe des Tasters kann der ESP8266 NICHT in den Flashmode gebracht werden. Der Taster ist intern anderwärtig verdrahtet und somit für diesen Zweck nicht zu gebrauchen.&lt;br /&gt;
&lt;br /&gt;
Wie hier links im Bild zu sehen ist, muss der rechte Pin des R20 (oben im Bild) während dem Einstecken des USB Steckers auf Masse gelegt werden. Die beste Möglichkeit ist ein Stücken Draht anzulöten und diesen dann beim einstecken auf den Masse Pin des USB-Konverters zu legen.&lt;br /&gt;
&lt;br /&gt;
Pinbelegung des Steckers von oben nach unten:&lt;br /&gt;
 o - GND&lt;br /&gt;
 o - TxD&lt;br /&gt;
 o - RxD&lt;br /&gt;
 &#039;&#039;&#039;o&#039;&#039;&#039; - Vdd&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sl_51.jpg|thumb|left|alt=Sonoff SLAMPHER R20]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier ist genau ersichtlich, wo der R20 auf der Platine platziert ist. }}&lt;br /&gt;
Hier nocheinmal schön zu sehen wo der R20 (der ist nicht eingelötet sondern leer) exakt auf der Platine liegt, gemeint ist der rechte Pin. Hier kann auch leicht gelötet werden, da keine empfindlichen Bauteile in der Nähe sind und auch genug Platz vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_sl_50.jpg|thumb|left|alt=Sonoff SLAMPHER R20]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier ist genau ersichtlich, wo der Draht am R20 aufgelötet wurde }}&lt;br /&gt;
Hier ist ein kleines Stück Schaltdraht auf den Pin bereist aufgelötet und bereit zum Flashen!&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel wurde keine Pfostensteckerleiste auf die Platine aufgelötet, sondern nur durchgesteckt und mit einem Gummiring  zum Relais fixiert, das erspart den Lötvorgang, weil in Zukunft dann ohnehin OTA geflasht werden kann.&lt;br /&gt;
&lt;br /&gt;
Also Pin20 auf Masse legen und USB-Konverter an den PC einstecken, dann den Draht von der Masse entfernen. Der ESP8266 sollte jetzt im Flashmodus bereit stehen und kann wie bereits oben beschrieben geflasht werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sonoff Slampher Software===&lt;br /&gt;
[[Datei:sonoff_sl_54.jpg|thumb|left|alt=Sonoff SLAMPHER FHEM]]&lt;br /&gt;
&lt;br /&gt;
Als Software wird Arends Sketch installiert (Kommunikation über MQTT), da zum derzeitigen Zeitpunkt ESPEasy das Modul noch nicht integriert hat und somit auch nicht ansteuern kann.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_SL MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_SL IODev myBroker&lt;br /&gt;
 attr Sonoff_SL devStateIcon ON:rc_GREEN:OFF OFF:rc_RED:ON&lt;br /&gt;
 attr Sonoff_SL icon hue_filled_br30&lt;br /&gt;
 attr Sonoff_SL publishSet ON OFF cmnd/sonoffsl/1/POWER/set&lt;br /&gt;
 attr Sonoff_SL room Bewegung,_Sonoff&lt;br /&gt;
 attr Sonoff_SL stateFormat Licht&lt;br /&gt;
 attr Sonoff_SL subscribeReading_Licht tele/sonoffsl/POWER&lt;br /&gt;
 attr Sonoff_SL subscribeReading_state cmnd/sonoffsl/1/POWER/set&lt;br /&gt;
 attr Sonoff_SL webCmd ON:OFF&lt;br /&gt;
&lt;br /&gt;
Hier ein Beispiel wie in FHEM der Slampher eingebunden werden kann. In diesem Beispiel wird davon ausgegangen, das das Modul &amp;quot;sonoffsl&amp;quot; unter Konfiguration am WEBIF (Configure MQTT bei Topic) so unbenannt wurde. Wer einen anderen Namen haben möchte, muss dies dann auch in FHEM entsprechend anpassen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Th10/16 FHEM==&lt;br /&gt;
[[Datei:sonoff_th_01.jpg|thumb|left|alt=Sonoff TH10]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Temperatur Modul TH10 / 16! }}&lt;br /&gt;
Das Modul kann durch drücken des Tasters während dem Einstecken des USB-Konverters in den Flashmodus gebracht werden.&lt;br /&gt;
Der Th10/16 kann mit zwei unterschiedlichen Typen von Sensoren bestückt werden, hier im Beispiel mit dem externen Temperaturfühler DS18B20.&lt;br /&gt;
&lt;br /&gt;
Wie im Bild klar zu sehen ist, kann das Webif auch zur Darstellung via Mobile verwendet werden. Mit &amp;quot;Toggle&amp;quot; wird Ein- oder Aus geschaltet und  darunter ist die aktuelle Temperatur ersichtlich. Für diese Ansicht muss keine MQTT Verbindung eingerichtet werden, da die Kommunikation hier rein über HTTP erfolgt.&lt;br /&gt;
&lt;br /&gt;
Die unten dargestellten Beispiele für FHEM beziehen sich auf Arends Sketch, also über MQTT. Dieses Modul kann aber genauso leicht über ESPEasy und der ESPEasy-Bridge eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Pinbelegung des Steckers von oben nach unten:&lt;br /&gt;
 o - GND&lt;br /&gt;
 o - TxD&lt;br /&gt;
 o - RxD&lt;br /&gt;
 &#039;&#039;&#039;o&#039;&#039;&#039; - Vdd&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #define DSB_PIN              14           // GPIO 14 = DS18x20 (Sonoff_TH10A(16A), Sonoff SV)&lt;br /&gt;
 #define DSB_RESOLUTION       2            // Maximum number of decimals (0 - 3) showing Temperature&lt;br /&gt;
 // *** Option 1 - Single DS18B20 - Select either Option 1 OR Option 2&lt;br /&gt;
 #define SEND_TELEMETRY_DS18B20            // Enable sending single temperature telemetry&lt;br /&gt;
 // *** Option 2 - Multiple DS18B20 and/or DS18S20 (needs OneWire library!)&lt;br /&gt;
 //  #define SEND_TELEMETRY_DS18x20            // Enable sending multi temperature telemetry &lt;br /&gt;
In der user_config.h (Arends Sketch) muss hier die Option 1 aktiviert werden (entfernen der vorangestellten //) damit die Telemetriedaten auch gesendet werden. Es empfiehlt sich mindestens die Version &amp;gt;= V 2.0.16, weil hier die Sensoren erweitert wurden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #define DHT_PIN              14           // GPIO 14 = AM2301 (Sonoff_TH10A(16A), Sonoff SV)&lt;br /&gt;
 #define DHT_TYPE             AM2301       // DHT module type (DHT11, DHT21, DHT22, AM2301, AM2302 or AM2321)&lt;br /&gt;
 #define DHT_RESOLUTION       1            // Maximum number of decimals (0 - 3) showing Temperature&lt;br /&gt;
 #define SEND_TELEMETRY_DHT                // Enable sending temperature and humidity telemetry&lt;br /&gt;
Beispiel für den Sensor DHT22, Temperatur und Luftfeuchte. Es dürfen aber nicht beide Sensoren (DS18B20 + DHT22) gleichzeitig aktiviert werden, da ja beide an GPIO14 angehängt werden und es ansonsten zu Fehlfunktionen kommen würde.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_th_02.jpg|thumb|left|alt=Sonoff TH10]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Einbindung in FHEM via MQTT! }}&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ### Temperatur und Luftfeuchte vom Sonoff Switch ###&lt;br /&gt;
 define Sonoff_Temp MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Temp IODev myBroker&lt;br /&gt;
 attr Sonoff_Temp alias Pool Wasser&lt;br /&gt;
 attr Sonoff_Temp eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_Temp icon temperature_humidity&lt;br /&gt;
 attr Sonoff_Temp publishSet ON OFF cmnd/sonoffth/1/POWER/set&lt;br /&gt;
 attr Sonoff_Temp room _Sonoff&lt;br /&gt;
 attr Sonoff_Temp stateFormat {sprintf(&amp;quot;Temperatur: %.1f Grad&amp;quot;, ReadingsVal($name,&amp;quot;TEMPERATURE&amp;quot;,0))}&lt;br /&gt;
 attr Sonoff_Temp subscribeReading_TEMPERATURE tele/sonoffth/DS18B20/TEMPERATURE&lt;br /&gt;
 attr Sonoff_Temp subscribeReading_humidity tele/sonoffth/HUMIDITY&lt;br /&gt;
 attr Sonoff_Temp subscribeReading_state cmnd/sonoffth/1/POWER/set&lt;br /&gt;
Beispiel für FHEM mit Temperaturanzeige mit DS18B20&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Switch MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Switch IODev myBroker&lt;br /&gt;
 attr Sonoff_Switch alias Pool Licht&lt;br /&gt;
 attr Sonoff_Switch devStateIcon on:rc_GREEN:off off:rc_RED:on&lt;br /&gt;
 attr Sonoff_Switch eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_Switch icon light_ceiling&lt;br /&gt;
 attr Sonoff_Switch publishSet ON OFF cmnd/sonoffth/1/POWER/set&lt;br /&gt;
 attr Sonoff_Switch room _Sonoff&lt;br /&gt;
 attr Sonoff_Switch stateFormat Licht&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_Licht tele/sonoffth/POWER&lt;br /&gt;
 attr Sonoff_Switch subscribeReading_state cmnd/sonoffth/1/POWER/set&lt;br /&gt;
 attr Sonoff_Switch webCmd ON:OFF&lt;br /&gt;
Der Schalter nochmals seperat dargestellt, je nach Geschmack.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff CH4 4-Kanal Schaltmodul==&lt;br /&gt;
[[Datei:sonoff_ch4_1.jpg|thumb|left|alt=Sonoff CH4]]&lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Achtung andere Einstellungen der Arduino IDE: Select Board &amp;quot;Generic ESP8285 Module&amp;quot; (=Flash Mode &amp;quot;DOUT&amp;quot;) and Flash Size &amp;quot;1M (64K SPIFFS)&amp;quot;n! }}&lt;br /&gt;
&lt;br /&gt;
Der Sonoff CH4 ist mit seinen 4 Kanälen ein sehr preiswertes Modul im Gehäuse und für Hutschinenmontage. Anstatt des üblichen ESP8266 besitzt dieses Modul schon den moderneren &#039;&#039;&#039;ESP8285&#039;&#039;&#039;. Es müssen daher in der Arduino IDE andere Einstellungen vorgenommen werden. Unter Board wird hier das &amp;quot;&#039;&#039;&#039;Generic 8285 Module&#039;&#039;&#039;&amp;quot; mit &#039;&#039;&#039;1M und 64K Spiffs&#039;&#039;&#039; angewählt. Der Flashmode &amp;quot;&#039;&#039;&#039;DOUT&#039;&#039;&#039;&amp;quot; wird dann automatisch eingestellt, bzw. ausgeblendet.&lt;br /&gt;
&lt;br /&gt;
Das Modul ist etwas größer als die anderen Sonoff Produkte und besitzt mit 14,5 x 9 cm schon beachtliche Einbau Maße.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_ch4_2.jpg|thumb|left|alt=Sonoff CH4 FDTI]]&lt;br /&gt;
Als weitere Besonderheit sei hier erwähnt, das die Signale &#039;&#039;&#039;RxD auf RxD und TxD auf TxD&#039;&#039;&#039; des FTDI Konverters zu verbinden sind. Wie bei allen Sonoff Modulen darf man &#039;&#039;&#039;zum flashen keine Netzspannung anschließen&#039;&#039;&#039;, sondern nur über die Versorgungsspannung des FDTI Konverters mit 3,3 V versorgen (Jumper richtig setzen). Die Stiftleiste für den FTDI Anschluß ist hier schon eingelötet.&lt;br /&gt;
&lt;br /&gt;
In den Flashmodus gelangt man durch drücken der &#039;&#039;&#039;Taste FW/IO0&#039;&#039;&#039; während des einstecken des USB Anschlusses.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_ch4_3.jpg|thumb|left|alt=Sonoff CH4 Arends]]&lt;br /&gt;
Hier die Ansicht des Webinterface des Arends Sketches!&lt;br /&gt;
Bei der Software sei erwähnt, das die getestete Version 3.1.16 nur bei Kanal 1 den Modus &amp;quot;PulseTime&amp;quot; beherrscht. Wer also gepulste Ausgänge (zB: elektrische Garage/Toröffner) benötigt muss diese per Software nachbilden oder mit dem Kanal 1 auskommen. Eine &amp;quot;Pulsetime 10&amp;quot; ist ein guter Wert dafür (etwa 1 Sekunde). &lt;br /&gt;
&lt;br /&gt;
Als Alternative kann mit dieser HTML Seite des Webservers am Modul des CH4 schon mit jedem Browser fähigem Handy (Android, iPhone, Windows) aufgerufen werden und somit alle Funktionen gesteuert werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Datei:sonoff_ch4_4.jpg|thumb|left|alt=Sonoff CH4 Software APP]]&lt;br /&gt;
Hier dargestellt die Original Software die Sonoff zum Modul liefert (EWeLink) und über ihre Cloud verbindet. Leider kann hier keine gepulste Ausgabe erfolgen. Mit einem Countdown kann zwar der Ausgang wieder abgeschaltet werden, die kleinste Zeiteinheit ist aber 1 Minute und somit für einen Impuls leider nicht zu gebrauchen. Ebenso kann mit dieser Software keine Einbindung in FHEM erfolgen, obwohl es eine nette anschauliche Darstellung ist.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Erweiterungen=&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sonoff Switch mit Temperatur + Luftfeuchte== &lt;br /&gt;
{{Randnotiz|RNTyp=[g|Info]|RNText=Hier geht es um nützliche Hardware Erweiterungen an den Originalmodulen!}}&lt;br /&gt;
Wozu überhaupt den Switch erweitern wenn es auch die Modelle TH10 und TH16 gibt?&lt;br /&gt;
&lt;br /&gt;
Manche Personen können dadurch dem Basteltrieb nachkommen, aber das wesentliche ist der Preis, da die Switches doch fast um die Hälfte billiger sind. Die Sensoren kosten ebenfalls kaum nennenswerte Beträge.&lt;br /&gt;
&lt;br /&gt;
Oder es hat schon jemand Switches im Einsatz und möchte jetzt zusätzlich die Temperatur erfassen!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hardware erweitern mit DHT22 ===&lt;br /&gt;
[[Datei:sonoff_sw_4.PNG|thumb|left|alt=Sonoff Switch Pinleiste mit Temperatur]]&lt;br /&gt;
Am Sonoff Switch wurde ja schon eine Stiftleiste zum Flashen eingelötet. Diese Stiftleiste bietet schon alle Anschlüsse welche für die Temperatur- und Luftfeuchtemessung benötigt werden. Am 5. Anschluß der Stifftleiste ist das Signal &amp;quot;SCL&amp;quot; (GPIO14) herausgeführt, welches für den DHT22 zur Erfassung der Messdaten benötigt wird. Der Sonsor wird mit einem einem 3-poligen Kabel (zB: ein Steckkabel für ein Breadboard oder direkt anlöten) verbunden. Damit der DHT22 korrekt funktioniert, wird ein Widerstand mit 4,7 K Ohm zwischen Vdd und Data am DHT22 zusätzlich benötigt. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_45.jpg|thumb|left|alt=AM2302 / DHT22]]&lt;br /&gt;
&lt;br /&gt;
Ansicht des DHT22 (AM2302) mit den aufgesteckten Verbindungskabeln. Von links nach rechts sind das&lt;br /&gt;
&lt;br /&gt;
 1 = VCC 3,3 V&lt;br /&gt;
 2 = Data&lt;br /&gt;
 3 = nc (nicht belegt)&lt;br /&gt;
 4 = GND&lt;br /&gt;
&lt;br /&gt;
Pin1 (VCC) des DHT22 muss also auf Pin1 der Stiftleiste, Pin2 (Data) auf Pin5 und Pin4 (GND) auf Pin4. &lt;br /&gt;
Pin2 und Pin1 soll hier noch der Widerstand aufgelötet werden.&lt;br /&gt;
&lt;br /&gt;
 1 ------- 1 (VDD)&lt;br /&gt;
 2 ------- 5 (GPIO14)&lt;br /&gt;
 3&lt;br /&gt;
 4 ------- 4 (GND)&lt;br /&gt;
 DHT22  Stiftleiste&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_44.jpg|thumb|left|alt=umgebautes Modul]]&lt;br /&gt;
Diese Darstellung zeigt das umgebaute und bereits verschlossene Modul. Auf der Seite des Tasters (bitte nur hier, da auf der anderen Seite die 230 V verlaufen und neben der Lebensgefahr auch den Sensor beeinflussen) ist hier einfach mit einer Eisensäge ein Schlitz eingesägt, der dient in diesem Falle als Kabeldurchführung. Ein Schlitz ist besser als ein Loch, da der Oberteil des Gehäuses sich leichter aufsetzen läßt. Wer ein längeres Kabel benötigt, kann natürlich auch ein 3-poliges Telefonkabel (oder Mikrokabel oder sonstiges) verwenden. Der Sensor sollte etwas Abstand zum Gehäuse haben, da dieses auch eine Eigenerwärmung hat. Wer es ganz originalgetreu lösen will, kann auch eine 3-polige Mini Buchse für Klinckenstecker (3,5mm) einbauen so wie sie am TH10/16 vorhanden ist.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Software anpassen am Beispiel MQTT ===&lt;br /&gt;
[[Datei:sonoff_sw_40.jpg|thumb|left|alt=Sonoff MQTT]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wer über MQTT kommuniziert und die Software von Theo Arends benutzt, muss folgende Dinge beachten. In der Datei &#039;&#039;&#039;user_config.h&#039;&#039;&#039; müssen im Abschnitt &#039;&#039;&#039;Module = SONOFF&#039;&#039;&#039; die Slashes so wie unten dargestellt entfernt werden, damit erstens die Interrupts abgefragt werden und zweitens die Telemetriedaten gesendet werden. Ebenso ist der verwendete Sensor bei &amp;quot;&#039;&#039;&#039;define DHT_TYPE&#039;&#039;&#039;&amp;quot; eingestellt werden. In dem hier gezeigten Beispiel also &amp;quot;&#039;&#039;&#039;DHT22&#039;&#039;&#039;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #if MODULE == SONOFF                        // programming header 1:3.3V 2:rx 3:tx 4:gnd&lt;br /&gt;
  #define APP_NAME             &amp;quot;Sonoff module&amp;quot;&lt;br /&gt;
  #define LED_PIN              13           // GPIO 13 = Green/Blue Led (0 = On, 1 = Off) - Sonoff&lt;br /&gt;
  #define LED_INVERTED         1            // 0 = (1 = On, 0 = Off), 1 = (0 = On, 1 = Off)&lt;br /&gt;
  #define REL_PIN              12           // GPIO 12 = Red Led and Relay (0 = Off, 1 = On)&lt;br /&gt;
  #define KEY_PIN              0            // GPIO 00 = Button&lt;br /&gt;
 /*-------------------------------------------------------------------------------------------*/&lt;br /&gt;
  #define DSB_PIN              4            // GPIO 14 = DS18B20 (Sonoff_TH10A(16A), Sonoff SV)&lt;br /&gt;
  #define SEND_TELEMETRY_DS18B20            // Enable sending temperature telemetry&lt;br /&gt;
 /*-------------------------------------------------------------------------------------------*/&lt;br /&gt;
  #define DHT_PIN              14           // GPIO 14 = AM2301 (Sonoff_TH10A(16A), Sonoff SV)&lt;br /&gt;
  #define DHT_TYPE             DHT22        // DHT module type (DHT11, DHT21, DHT22, AM2301, AM2302 or AM2321)&lt;br /&gt;
  #define SEND_TELEMETRY_DHT                // Enable sending temperature and humidity telemetry&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Software Anpassung DHT22 in FHEM ===&lt;br /&gt;
[[Datei:sonoff_sw_41.jpg|thumb|left|alt=umgebautes Modul]]&lt;br /&gt;
&lt;br /&gt;
Links in der Hardcopy sind die Readings die nach der Anpassung von FHEM (Broker) befüllt werden sollten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ### Temperatur und Luftfeuchte vom Sonoff Switch ###&lt;br /&gt;
 define Sonoff_Temp MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Temp IODev myBroker&lt;br /&gt;
 attr Sonoff_Temp icon temperature_humidity&lt;br /&gt;
 attr Sonoff_Temp room MQTT&lt;br /&gt;
 attr Sonoff_Temp stateFormat {sprintf(&amp;quot;Temperatur: %.1f Grad Feuchte: %.1f &amp;quot;, ReadingsVal($name,&amp;quot;temperature&amp;quot;,0), ReadingsVal($name,&amp;quot;humidity&amp;quot;,0))}&lt;br /&gt;
 attr Sonoff_Temp subscribeReading_humidity tele/sonoff/HUMIDITY&lt;br /&gt;
 attr Sonoff_Temp subscribeReading_temperature tele/sonoff/TEMPERATURE&lt;br /&gt;
Als Beispiel die zusätzliche Erweiterung um die Temperatur und die Luftfeuchte in FHEM. Der in der Topic verwendete Name &amp;quot;sonoff&amp;quot; muss natürlich der Einstellung in der Software am Switch entsprechen. Bei Verwendung mehrerer Switches muss natürlich auch der Name bei jedem geändert werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Logfile für die Temperatur ===&lt;br /&gt;
 define SVG_FileLog_Sonoff_Temp SVG myDbLog:SVG_FileLog_Sonoff_Temp:HISTORY&lt;br /&gt;
 attr SVG_FileLog_Sonoff_Temp room MQTT&lt;br /&gt;
&lt;br /&gt;
Und schließlich fehlt noch das Logfile, damit der Temperaturverlauf auch in schönen Plots dargestellt werden kann.&lt;br /&gt;
Das hier verwendete Beispiel funktioniert nur mit einer DbLog.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Switch als Thermostat verwenden mit MQTT== &lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_sw_55.jpg|thumb|left|alt=Thermostat]]&lt;br /&gt;
Mit diesem einfachen Beispiel wird ein Pelett Ofen mit einem externen Thermostat (sonoff Switch oder TH10/16) gesteuert. Zum besseren Überblick wird die Steuerung in einzelne Module getrennt, es könnte aber auch einiges zu einer einzigen Definition zusammen gefasst werden. Der Thermostat könnte auch als Frostwächter benutzt werden und ein anderes Heizgerät steuern.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 ###################################&lt;br /&gt;
 ### Sonoff Thermostat Regelung ####&lt;br /&gt;
 ###################################&lt;br /&gt;
 define Sonoff_dht MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_dht IODev myBroker&lt;br /&gt;
 attr Sonoff_dht alias Raumtemperatur&lt;br /&gt;
 attr Sonoff_dht group Thermostat&lt;br /&gt;
 attr Sonoff_dht icon temperature_humidity&lt;br /&gt;
 attr Sonoff_dht publishSet ON OFF cmnd/sonoff_dht/1/POWER/set&lt;br /&gt;
 attr Sonoff_dht room _Sonoff&lt;br /&gt;
 attr Sonoff_dht stateFormat {sprintf(&amp;quot;Temperatur: %.1f Grad Feuchte: %.1f &amp;quot;, ReadingsVal($name,&amp;quot;TEMPERATURE&amp;quot;,0),  ReadingsVal($name,&amp;quot;HUMIDITY&amp;quot;,0))}&lt;br /&gt;
 attr Sonoff_dht subscribeReading_HUMIDITY tele/sonoff_dht/DHT/HUMIDITY&lt;br /&gt;
 attr Sonoff_dht subscribeReading_TEMPERATURE tele/sonoff_dht/DHT/TEMPERATURE&lt;br /&gt;
 attr Sonoff_dht subscribeReading_state cmnd/sonoff_dht/1/POWER/set&lt;br /&gt;
FHEM Definition zur Erfassung der Temperatur und der Luftfeuchte. Damit dieses Beispiel funktioniert, ist am Sonoff Modul die Topic &amp;quot;&#039;&#039;&#039;sonoff_dht&#039;&#039;&#039;&amp;quot; zu setzen. Dieser Temperaturwert dient dem Thermostat als ISTWert.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 define Sonoff_Sw MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_Sw IODev myBroker&lt;br /&gt;
 attr Sonoff_Sw alias Pellets Ofen&lt;br /&gt;
 attr Sonoff_Sw devStateIcon on:rc_GREEN:off off:rc_RED:on&lt;br /&gt;
 attr Sonoff_Sw eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_Sw group Thermostat&lt;br /&gt;
 attr Sonoff_Sw icon sani_boiler_temp&lt;br /&gt;
 attr Sonoff_Sw publishSet ON OFF cmnd/sonoff_dht/1/POWER/set&lt;br /&gt;
 attr Sonoff_Sw room _Sonoff&lt;br /&gt;
 attr Sonoff_Sw stateFormat Licht&lt;br /&gt;
 attr Sonoff_Sw subscribeReading_Licht tele/sonoff_dht/POWER&lt;br /&gt;
 attr Sonoff_Sw subscribeReading_state cmnd/sonoff_dht/1/POWER/set&lt;br /&gt;
 attr Sonoff_Sw webCmd ON:OFF&lt;br /&gt;
FHEM Definition zum Absetzen der Befehle für das Relais (Thermostat) Ein- / Aus. Wenn das zu steuernde Geräte einen potentialfreien Thermostatanschluß benötigt (in den meisten Fällen), muss noch ein Relais dazwischen geschaltet werden um die Trennung der Netzspannung zu gewährleisten.&lt;br /&gt;
&lt;br /&gt;
 define ThermostatPellets dummy&lt;br /&gt;
 attr ThermostatPellets alias Pellets Ofen Sollwert&lt;br /&gt;
 attr ThermostatPellets group Thermostat&lt;br /&gt;
 attr ThermostatPellets icon temp_control&lt;br /&gt;
 attr ThermostatPellets room _Sonoff&lt;br /&gt;
 attr ThermostatPellets setList state:0,5,10,12,13,14,15,16,17,17.5,18,18.5,19,19.5,20,20.5,21,21.5,22,23,24,25,26,27&lt;br /&gt;
 attr ThermostatPellets webCmd state&lt;br /&gt;
Die Sollwertvorgabe für das Thermostat durch einen Dummy, damit können die gewünschten Temperaturen eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
 ### sofort ausführen wenn neuer Sollwert eingestellt wird ###&lt;br /&gt;
 define Thermostat_on_notify notify ThermostatPellets IF (ReadingsVal(&amp;quot;Sonoff_Sw&amp;quot;,&amp;quot;state&amp;quot;,0) eq &amp;quot;OFF&amp;quot; &amp;amp;&amp;amp; (ReadingsVal(&amp;quot;Sonoff_dht&amp;quot;,&amp;quot;TEMPERATURE&amp;quot;,0) &amp;lt;= Value(&amp;quot;ThermostatPellets&amp;quot;))) (set Sonoff_Sw ON)&lt;br /&gt;
 define Thermostat_off_notify notify ThermostatPellets IF (ReadingsVal(&amp;quot;Sonoff_Sw&amp;quot;,&amp;quot;state&amp;quot;,0) eq &amp;quot;ON&amp;quot; &amp;amp;&amp;amp; (ReadingsVal(&amp;quot;Sonoff_dht&amp;quot;,&amp;quot;TEMPERATURE&amp;quot;,0) &amp;gt; Value(&amp;quot;ThermostatPellets&amp;quot;))) (set Sonoff_Sw OFF)&lt;br /&gt;
Mit einem notify wird die manuelle Änderung des Sollwertes überwacht und sofort reagiert.&lt;br /&gt;
&lt;br /&gt;
 ## zyklisch prüfen ob Sollwert erreicht wurde ###&lt;br /&gt;
 define Thermostat_on at +*00:15:00 IF (ReadingsVal(&amp;quot;Sonoff_Sw&amp;quot;,&amp;quot;Licht&amp;quot;,0) eq &amp;quot;OFF&amp;quot; &amp;amp;&amp;amp; (ReadingsVal(&amp;quot;Sonoff_dht&amp;quot;,&amp;quot;TEMPERATURE&amp;quot;,0) &amp;lt;= Value(&amp;quot;ThermostatPellets&amp;quot;))) (set Sonoff_Sw ON)&lt;br /&gt;
 define Thermostat_off at +*00:15:00 IF (Value(&amp;quot;Sonoff_Sw&amp;quot;) eq &amp;quot;ON&amp;quot; &amp;amp;&amp;amp; (ReadingsVal(&amp;quot;Sonoff_dht&amp;quot;,&amp;quot;TEMPERATURE&amp;quot;,0) &amp;gt; Value(&amp;quot;ThermostatPellets&amp;quot;))) (set Sonoff_Sw OFF)&lt;br /&gt;
Hier noch die Soll- Ist Wertvergleiche zur Steuerung. Es wird alle 15 Minuten überprüft ob die Temperatur erreicht ist. Bei einer trägen Heizung sollten 15 Minuten ausreichend sein, wer will kann dies aber auch alle 5 oder 10 Minuten prüfen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sonoff Switch mit Bewegungsmelder HC-SR501== &lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_pir_1.jpg|thumb|left|alt=Bewegungsmelder]]&lt;br /&gt;
Basierend auf dem Wall Switch MQTT Sketch von Arends wurde hier ein Sonoff BASIC + PIR HC-SR501 in eine größere Verteilerdose eingebaut, der Sonoff wurde dabei etwas gekürzt. Die Bewegungsmelder sind ab etwa 70 Cent erhältlich.&lt;br /&gt;
&lt;br /&gt;
Der Sketch kann auch den Blink Modus. Damit kann man im Alarmfall z.B. Alle Strahler rings ums Haus blinken lassen.&lt;br /&gt;
&lt;br /&gt;
Mehr dazu kann hier im [https://forum.fhem.de/index.php/topic,63824.0.html Forum]im Diskussionsthread nachgelesen werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_pir_2.jpg|thumb|left|alt=Bewegungsmelder]]&lt;br /&gt;
Ein Beispiel wir der Bewegungsmelder in der Feuchtraumdose montiert werden kann. Wird der Bewegungsmelder abgesetzt vom Switch montiert, ist darauf zu achten das die Kabel nicht zu lange werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
===Spannungsversorgung des HC-SR501===&lt;br /&gt;
[[Datei:sonoff_pir_4.jpg|thumb|left|alt=5V für Bewegungsmelder]]&lt;br /&gt;
Der HC-SR501 wird vom Sonoff versorgt, wobei hier die 3,3 V nicht immer ausreichen. Es ist deshalb am HC-SR501 eine Diode zu überbrücken, dann reichen die 3,3V vom Sonoff. Es können aber auch am Sonoff die 5V angezapft werden. Hier im Bild dargestellt wo die 5V angezapft werden können.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Datei:sonoff_pir_5.jpg|thumb|left|alt=3,3V für Bewegungsmelder]]&lt;br /&gt;
Hier eine kleine Übersicht der wichtigsten Teile und deren Platzierung am HC-SR501. &lt;br /&gt;
Den PIR kann man auch mit 3,3V betreiben wenn man die Diode am Eingang nach Vcc überbrückt, dann reicht die Spannung für einen reibungslosen Betrieb völlig aus. Dies gilt für den HC-SR501, wird ein anderer PIR verwendet muss man nachschauen ob das auch möglich ist, ansonsten die 5V Variante wählen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===Anpassung des Sketches mit Wall Switch===&lt;br /&gt;
Zur Vorbereitung des Sketches sind zunächst einige Einstellungen in der &amp;quot;user_config.h&amp;quot; durchzuführen.&lt;br /&gt;
&lt;br /&gt;
 #if MODULE == SONOFF                        // programming header 1:3.3V 2:rx 3:tx 4:gnd&lt;br /&gt;
  #define APP_NAME             &amp;quot;Sonoff 8266 module&amp;quot;&lt;br /&gt;
  #define MQTT_GRPTOPIC        &amp;quot;sonoffs&amp;quot;    // [GroupTopic] MQTT Group topic&lt;br /&gt;
 /*-------------------------------------------------------------------------------------------*/&lt;br /&gt;
  #define LED_PIN              13           // GPIO 13 = Green/Blue Led (0 = On, 1 = Off) - Sonoff&lt;br /&gt;
  #define LED_INVERTED         1            // 0 = (1 = On, 0 = Off), 1 = (0 = On, 1 = Off)&lt;br /&gt;
  #define REL_PIN              12           // GPIO 12 = Red Led and Relay (0 = Off, 1 = On)&lt;br /&gt;
  #define KEY_PIN              0            // GPIO 00 = Button&lt;br /&gt;
 /*-------------------------------------------------------------------------------------------*\&lt;br /&gt;
 * Wall switch and HC-SR501&lt;br /&gt;
 \*-------------------------------------------------------------------------------------------*/&lt;br /&gt;
  #define SWITCH_PIN           14           // GPIO 14 = Standard wall switch to Gnd (Sonoff_TH10A(16A), Sonoff SV)&lt;br /&gt;
  #define SWITCH_MODE          &#039;&#039;&#039;PUSHBUTTON_INV&#039;&#039;&#039;      // [SwitchMode] TOGGLE, FOLLOW, FOLLOW_INV, PUSHBUTTON or PUSHBUTTON_INV (the wall switch state)&lt;br /&gt;
  &#039;&#039;&#039;#define USE_WALL_SWITCH&#039;&#039;&#039;                   // Enable the use of a standard wall switch to control the relay&lt;br /&gt;
Wichtig ist dabei die vorangestellten Slahes // bei &amp;quot;#define USE_WALL_SWITCH&amp;quot; zu entfernen auf &#039;&#039;&#039;PUSHBUTTON_INV&#039;&#039;&#039; zu stellen. Dann kann der Sonoff Switch compiliert und geflasht werden.&lt;br /&gt;
&lt;br /&gt;
===Einbindung des HC-SR501 in FHEM===&lt;br /&gt;
 # ------------- Sonoff_pir mit Bewegungsmelder ---------------&lt;br /&gt;
 define Sonoff_pir MQTT_DEVICE&lt;br /&gt;
 attr Sonoff_pir IODev myBroker&lt;br /&gt;
 attr Sonoff_pir eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoff_pir group Sonoff&lt;br /&gt;
 attr Sonoff_pir icon hue_filled_br30&lt;br /&gt;
 attr Sonoff_pir publishSet ON OFF cmnd/sonoff_pir/1/POWER/set&lt;br /&gt;
 attr Sonoff_pir room MQTT&lt;br /&gt;
 attr Sonoff_pir stateFormat Licht&lt;br /&gt;
 attr Sonoff_pir subscribeReading_Licht stat/sonoff_pir/POWER&lt;br /&gt;
 attr Sonoff_pir subscribeReading_state cmnd/sonoff_pir/1/POWER/set&lt;br /&gt;
 attr Sonoff_pir webCmd :&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel wie der Sonoff Switch in FHEM eingebunden wird. Wenn im Sketch der Prefix von stat auf tele geändert wurde, ist dies auch hier durchzuführen ( subscribeReading_Licht tele/sonoff_pir/POWER ), ansonsten bleibt es so wie im Beispiel. Getestet wurde dieses Beispiel mit Version 3.1.6. Die Topic sollte auf den Namen &amp;quot;sonoff_pir&amp;quot; eingestellt werden. Bei anderen Namen ist dies entsprechend in FHEM anzupassen. &lt;br /&gt;
&lt;br /&gt;
Mit dem Command &#039;&#039;&#039;BUTTONTOPIC = Alarm_SO2&#039;&#039;&#039; ( direkt im Webinterface des Sonoff ) wird der Wall Switch GPIO14 vom Sonoff entkoppelt und somit sendet der Bewegungsmelder direkt an FHEM --&amp;gt; Motion_pir MQTT_DEVICE&lt;br /&gt;
&lt;br /&gt;
Es sollte auch unbedingt kontrolliert werden, wie die Ausgabe des Alarmes in der Console erfolgt. Erscheint hier die Meldung &amp;quot;cmnd/Alarm_SO2/POWER = TOGGLE&amp;quot; dann muss mit dem Kommando &amp;quot;&#039;&#039;&#039;switchmode 1&#039;&#039;&#039;&amp;quot; das Ausgabeformat umgeschaltet werden, erst dann kommt das gewünschte Format &amp;quot;On&amp;quot; und &amp;quot;OFF&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 # ------------------ Motion_pir MQTT_DEVICE -----------------&lt;br /&gt;
 define Motion_pir MQTT_DEVICE&lt;br /&gt;
 attr Motion_pir IODev myBroker&lt;br /&gt;
 attr Motion_pir devStateIcon on:on-for-timer off:off&lt;br /&gt;
 attr Motion_pir eventMap ON:on OFF:off&lt;br /&gt;
 attr Motion_pir group Sonoff&lt;br /&gt;
 attr Motion_pir icon people_sensor&lt;br /&gt;
 attr Motion_pir room MQTT&lt;br /&gt;
 attr Motion_pir stateFormat Alarm&lt;br /&gt;
 attr Motion_pir subscribeReading_Alarm cmnd/Alarm_SO2/POWER&lt;br /&gt;
Die Motion_pir dient nun zur eigentlichen Einschaltung des Lichtes und sendet das Kommando &#039;&#039;&#039;cmnd/Alarm_SO2/POWER&#039;&#039;&#039; an den entkopellten GPIO 14 des Switch.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # ------------------ DoIf zur Motion Abfrage -----------------&lt;br /&gt;
 define di_Sonoff_pir_Alarm DOIF ([Motion_pir:&amp;quot;on&amp;quot;] and [Tag_Nacht:twilight_weather] &amp;lt; 35) (set Sonoff_pir on) DOELSEIF ([Motion_pir:&amp;quot;off&amp;quot;] and [Tag_Nacht:twilight_weather] &amp;lt; 35) (set Sonoff_pir off)&lt;br /&gt;
 attr di_Sonoff_pir_Alarm comment Abhängig von Helligkeitssensor wird nachts,bei Bewegung das Licht eingeschaltet!&lt;br /&gt;
 attr di_Sonoff_pir_Alarm group Sonoff&lt;br /&gt;
 attr di_Sonoff_pir_Alarm room MQTT&lt;br /&gt;
Zusätzlich kann nun mit einem &#039;&#039;&#039;Doif&#039;&#039;&#039; verknüpft werden um das Ganze mit Tag_Nacht:twilight_weather dann in Abhängigkeit der Helligkeit zu schalten. Selbstverständlich kann jede andere Quelle mit einem Helligkeitswert verwendet werden.&lt;br /&gt;
&lt;br /&gt;
===Alarmausgabe über Grouptopic===&lt;br /&gt;
 # ------------------------ Sonoffs Group ----------------------&lt;br /&gt;
 define Sonoffs MQTT_DEVICE&lt;br /&gt;
 attr Sonoffs IODev myBroker&lt;br /&gt;
 attr Sonoffs eventMap ON:on OFF:off&lt;br /&gt;
 attr Sonoffs group Sonoff&lt;br /&gt;
 attr Sonoffs icon hue_filled_br30&lt;br /&gt;
 attr Sonoffs publishSet ON OFF cmnd/sonoffs/1/POWER/set&lt;br /&gt;
 attr Sonoffs room MQTT&lt;br /&gt;
 attr Sonoffs stateFormat state&lt;br /&gt;
 attr Sonoffs subscribeReading_Licht stat/sonoffs/1/POWER&lt;br /&gt;
 attr Sonoffs subscribeReading_state cmnd/sonoffs/1/POWER/set&lt;br /&gt;
Wer möchte kann auch mit der Group Topic mehrere Switches mit Bewegungsmelder zusammenfassen und alle Lampen im Alarmfall gemeinsam in den Blinkmodus schalten. cmnd/sonoffs ist das Kommando für die Group Topic, sofern diese vom User nicht verändert wurde.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:IP Components]]&lt;br /&gt;
--[[Benutzer:Reinhart|Reinhart]] ([[Benutzer Diskussion:Reinhart|Diskussion]]) 20:54, 5. Jan. 2017 (CET)&lt;/div&gt;</summary>
		<author><name>Reinhart</name></author>
	</entry>
</feed>