SONOFF – Funkschalter auf ESP8266-Basis

NachtragDiese Anleitung wurde am 27.01.2017 von mir überarbeitet und aktuallisiert. Sie sollte nun wieder reibungslos funktionieren. Bei Fragen einfach ein Kommentar hinterlassen ?

Der Markt mit Smart-Home-Devices wächst immer weiter. Anfangs waren die diversen Geräte noch recht teuer in der Anschaffung. Aber mit dem Wachstum stieg auch die Konkurrenz und die Preise fielen. Durch einen Hinweis vom Blogleser Jörg kam ich auf den Hersteller „ITEAD“ (Amazon Affiliate). Dieser bietet mit seiner SONOFF-Reihe eine breite Auswahl an Smart-Home-Geräten zu recht günstigen Preisen.

Die SONOFF-Geräte bauen auf den ESP8266-Chip auf und lassen sich somit drahtlos ins heimische drahtlose 2,4 GHz Netzwerk einbinden. Steuern lassen sich die Geräte über die offizielle App, welche sich aus dem Google PlayStore oder dem Apple App Store laden lassen.

‎eWeLink-Smart Home
Preis: Kostenlos
eWeLink - Smart Home
Preis: Kostenlos

Zusätzlich zu der Steuerung über die offizielle App des Herstellers lassen sich die SONOFF-Geräte auch über Googles Nest oder Amazons Alexa steuern. Vorausgesetzt natürlich ihr lässt die originale Firmware auf den Geräte, was wiederrum das Einbinden in FHEM unmöglich macht.

Aber das Beste kommt nun, dank des ESP-Chips lässt sich eine alternative Firmware auf die Geräte flashen. Mit dieser kann man dann die SONOFF-Geräte in FHEM einbinden. Aber wie schon erwähnt lassen sich die Geräte dann nicht mehr der App oder über Nest bzw. Alexa steuern. Aber dafür kann man dann ja FHEM-Apps verwenden und das SONOFF-Gerät in seine Homebridge einbinden bzw. FHEM für Amazons Echo-Geräte konfigurieren. So hat man trotz keiner originaler Firmware die Möglichkeit die Geräte über Apps, Apples Siri oder Amazons Alexa steuern zu können.

In diesem Beitrag werde ich näher auf die SONOFF-Geräte eingehen und testen, was die günstigen Geräte aus Fern-Ost taugen. Des Weiteren werde ich euch erklären, wie ihr die Geräte in FHEM einbindet.

Die SONOFF-Reihe

Wie oben schon erwähnt, ist die Auswahl an SONOFF-Geräte sehr vielfaltig. Sie beginnt bei einfachen Schaltern, geht über Verbrauchsmesser bis hin zu fertigen Geräte wie Ventilator oder Geräte zur Raumklimaüberwachung. Im folgenden werde ich euch eine kleine Auswahl an Sonor-Geräten auflisten, welche im Zusammenhang mit FHEM interessant sind und welche ich besitze und bereits in FHEM eingebunden habe. Eine komplette Liste findet ihr im FHEM-Wiki oder auf der Herstellerseite. Werde ich mir weitere Geräte zulegen, werde ich diese selbstverständlich auch hier vorstellen.

SONOFF – Wireless Control Switch

Herstellerseite

Der SONOFF Wireless Control Switch ist das Einsteigergerät der SONOFF-Reihe. Er ist vergleichbar mit einem Schalter. Er wird in der Zuleitung eines Gerätes zwischen geschaltet und ermöglicht somit das einfache An- oder Ausschalten des Gerätes über ein Smartphone bzw. über FHEM.

Die Installation ist im vergleich zu einfachen Zwischensteckern etwas kompliziert und erfordert entsprechendes Fachwissen. Er sollte deswegen nur von Fachpersonal installiert werden. ?

Erlaubt ist ein maximaler Strom von 10A. Bei einer Netzspannung von 230V macht dies theoretisch eine maximal erlaubte Leistung von 2300W. Der Hersteller gibt die maximale Leistung jedoch mit 2200W an.

SONOFF – Pow WiFi Switch With Power Consumption Measurement

Herstellerseite

Der Pow WiFi Switch ist eine Erweiterung des normalen Switch. Zusätzlich zum einfachen An- und Ausschalten kann der Pow auch die Leistung des angeschlossenen Gerätes messen.

Auch hier ist die Installation wieder mit etwas Aufwand verbunden und erfordert ebenfalls Fachkenntnis und sollte deswegen nur von Fachpersonal durchgeführt werden.

Im Vergleich zum einfachen Switch kann der Pow etwas mehr Leistung schalten. Laut Hersteller kann der Pow 16A schalten bei einer maximalen Leistung von 3500W. Damit sollten man so gut wie alle Geräte verwenden könne, da die maximal Leistung einer Sicherung in der Regel sowieso bei 3680W liegt.

Verfügbarkeit und Bezugsquellen

Erhältlich sind die Geräte unter anderem bei Amazon. Hier kann die Verfügbarkeit jedoch leider etwas mau sein.

Am besten bekommt man sie über AliExpress oder direkt über die Herstellerseite. Hier muss jedoch mit einer langen Wartezeit gerechnet werden. Dafür jedoch um einiges günstiger.

INFO: Wer noch ein paar Bedenken hat, bezüglich Einkaufen bei AliExpress, dem empfehle ich den Bericht von Chinavergleich.de. Dort wurde das Online-Portal aus Fern-Ost näher unter die Lupe genommen. Des Weiteren befindet sich dort auch ein Erfahrungsbericht mit dem Onlineriesen.

Ab und zu findet man auch SONOFF-Geräte bei eBay. Aber auch hier sind die günstigen Geräte, welche aus dem Ausland versendet werden. Ich persönlich wurde ebenfalls bei eBay fündig und habe mir je zwei Geräte vom „SONOFF Pow 16A WIFI Smart Remote Control“ und vom „SONOFF WiFi Wireless Smart Switch Module“ gekauft.

TASMOTA – Alternative Firmware

Damit die SONOFF-Geräte später auch in FHEM eingebunden werden können, muss die originale Firmware durch eine alternative Firmware ersetzt werden. Man kann zum Beispiel ESP Easy verwenden. Der Funktionsumfang von ESP Easy ist jedoch riesig und für die SONOFF-Geräten etwas zu überdimensioniert. Zusätzliche Sensoren kann man ja eh nicht aufgrund der Bauweise anschließen.

Der Autor „Arends“ hat eine grandiose Firmware für die SONOFF-Geräte geschrieben. Sie unterstützt bereits eine große Anzahl an SONOFF-Geräten und konzentriert sich dabei auf das Wesentliche. Des Weiteren bietet die Firmware eine Weboberfläche an um das Gerät notfalls auch über den Browser steuern zu können.

Vorbereitung

Damit TASMOTA später auch mit FHEM kommunizieren kann sind ein paar Vorbereitungen notwendig.

MQTT

TASMOTA kommuniziert später mittels MQTT mit FHEM. Es ist deswegen notwendig, dass auf dem Raspberry ein MQTT-Server eingerichtet wird. Wie dies geht, erfahrt ihr auf meinem Blogbeitrag, hier erfahrt hier ebenfalls wie die Einrichtung in FHEM funktioniert. Die weiteren Schritte in diesem Beitrag gehen davon aus, dass die MQTT-Bridge mit dem Namen „Mosquitto“ eingerichtet wurde.

Arduini IDE und die passende Board-Treiber

Für das spätere Flashen wird die Arduino IDE verwendet. Achtet darauf, dass ihr die neuste Version besitzt. Des Weiteren wird der Board-Treiber benötigt. Wie ihr diese installiert, erfahrt ihr in meinem Blog-Beitrag dazu. Achtet auch hier, dass ihr die neuste Version des Treibers installiert.

Die eigentliche Firmware

Zum Schluss wird dann noch die eigentliche Firmware benötigt. Diese könnt ihr hier auf GitHub herunterladen. Ich persönlich habe einfach den Ordner „Sonoff-Tasmota-master“ in meinen Arduino-Sketch-Ordner kopiert. Den Ordner „lib“ im heruntergeladenen Ordner könnt ihr löschen, da ihr die aktuellen Versionen dieser Bibliotheken bereits selbst installiert habt. Info: Versichert euch vorher jedoch noch, ob ihr alle Bibliotheken, welche sich im Ordner „lib“ befinden installiert habt. Ist dies nicht der Fall, dann installiert die fehlenden Bibliotheken nach. Euer Sketch-Ordner sollte dann in etwas so aussehen:

Bibliotheken

Die benötigten Bibliotheken befinden im Tasmota-Ordner im Ordner „lib“. Den Inhalt dieses Ordners verschiebt ihr nun eine Ebene höher in den Ordner „libraries“.

diverse Bibliotheksanpassungen

Damit das Kompilieren später auch problemlos funktioniert müsst ihr die maximale MQTT- Packetgröße anpassen. Dies könnt ihr in der folgenden Datei innerhalb eures Sketch-Ordners anpassen: „Arduino/libraries/PubSubClient-2.6.09/src/PubSubClient.h“. Hier müsst ihr den Eintrag „MQTT_MAX_PACKET_SIZE“ auf 1024 setzen.

Des Weiteren solltet ihr den MQTT_KEEPALIVE auf 120 setzen.

#define MQTT_KEEPALIVE 120

Konfigurationsdatei für die Flash-Größe

Zum Schluss ist es nun noch notwendig, eine benötigte Konfigurationsdatei für die Flash-Größe in den Hardware-Ordner von Arduino zu kopieren. Die zu verschieben Datei „esp8266.flash.1m0.ld“ findet ihr im TASMOTA-Ordner.

Diese müsst ihr in einen Unterordner von „Arduiono15“ kopieren. Unter Windows findet ihr den Ordner unter „C:/Users/(username)/AppData/Local/Arduino15“ und unter Mac OS unter „/Users/(username)/Library/Arduino15„. Im Ordner „Arduino15“ findet sich nun der Order „…/Arduino15/packages/esp8266/hardware/esp8266/2.4.0/tools/sdk„. Hierhin kopiert ihr die oben genannte Datei.

Des Weiteren kopiert ihr die Datei „boards.txt“ in den Ordner „…/Arduino15/packages/esp8266/hardware/esp8266/2.4.0„. Diese befindet sich ebenfalls im Tasmato-Ordner im Unterordner „…/arduino/Version 2.4.0/board.txt“. Die Versionsnummer ist abhängig von der verwendeten Versionsnummer des ESP-Treibers.

Das Kopieren dieser beiden Dateien ermöglicht nun, das Auswählen der Flash-Size „1M (no SPIFFS)“ in der Arduino IDE. Mehr dazu im nächsten Kapitel.

diverse Konfigurationen vornehmen

Nun könnt ihr mit der Arduino IDE die Datei „sonoff.ino“ öffnen, welche sich im Tasmota-Ordner im Unterordner „sonoff“ befindet. Es öffnen sich nun auch alle dazugehörigen Dateien in der Arduino IDE.

Hier solltet ihr nun bereits ein paar Konfigurationen in der Datei „user_config.h“ durchführen. Zum einen das aktiveren des benötigten Moduls. Abhängig vom verwendeten SONOFF-Device müsst ihr das entsprechende Modul aktivieren. Für den SONOFF-POW ist das zum Beispiel das Module „SONOFF_POW“.

INFO: Das Aktivieren des Moduls ist in neueren Version nicht mehr notwendig. Tasmota erkennt automatisch, welches Modul verwendet wird.

Des Weiteren solltet ihr dem Gerät bereits einen eindeutigen Namen vergeben.

Zum Schluss dann noch die Infos für den MQTT-Server eintragen. Wichtig sind hie die unteren Einträge. Hier müsst ihr die IP-Adresse des Raspberrys eingeben auf dem der MQTT-Server läuft. In meinem Fall also 192.168.2.125.

Um später den Umweg über den eigenständigen Accesspoint des Sonoff-Gerätes zu ersparen, kann man nun noch im Config-File die WLAN-Daten seines Netzwerkes eingeben:

Alle Vorbereitungen sind nun abgeschlossen und es kann mit dem Flashen begonnen werden.

Flashen der SONOFF-Geräte

Anders als zum Beispiel bei den WeMos-Bausteinen besitzen die SONOFF-Geräte leider keinen USB-Port. Dies erschwert ein bisschen das Programmieren der Software.

Damit das Flashen dennoch klappt, ist der Einsatz eines TTL-USB-Konverters notwendig. Dieser lässt sich mit der Platine des SONOFF-Gerätes verbinden und ermöglicht somit das Flashen.

Um an die Programmierschnittstelle zu kommen ist es notwendig das Gehäuse zu öffnen. ?ACHTUNG: Hier ist es wichtig, dass ihr vorher alle Netzleitungen vom Gerät trennt. Des Weiteren sollte euch bewusst sein, dass durch die Öffnung des Gerätes und das Flashen einer alternativen Firmware die Garantie erlischt. Was jedoch bei einem Gerät für unter 10€ nicht allzu schlimm ist. Die Vorteile überwiegen.

Habt ihr das Gerät geöffnet, kommt die Programmierschnittstelle zum Vorschein. Bei den neueren Version der SONOFF-Geräte befindet sich keine Stiftleiste mehr auf der Platine. Ihr könnt also entweder Leitungen direkt auf die Platine löten oder einfach selber eine Stifleiste auf die Platine löten. Diese Schnittstelle wird nur einmal zum erstmaligen Programmieren benötigt. Spätere Updates können direkt über die Weboberfläche durchgeführt werden.

Beim SONOFF-Pow sieht der USB-TTL-Anschluss wie auf dem Bild aus:?

Die PIN-Belegung ist wie folgt, von Innen nach Außen: GND – TxD – RxD – VDD (3,3V)

Bei den normalen Switch-Geräten befindet sich der TTL-Anschluss in der Mitte des Boards.

Hier ist die PIN-Belegung wie folgt, vom Taster aus: VDD (3,3V) – RxD – TxD – GND – GPI0

Achtet dadrauf, dass ihr mit 3,3V arbeitet und verwendet dementsprechend den 3,3V-Anschluss vom USB-TTL-Konverter.

Info: RxD vom TTL-USB-Konverter muss an TxD vom Sonoff und der TxD vom TTL-USB-Konverter an RxD vom Sonoff.

Habt ihr den TTL-USB-Konverter wie beschrieben angeschlossen, könnt ihr mit dem eigentlichen flashen beginnen.

Dazu drückt ihr auf dem SONOFF-Gerät den Button auf der Oberseite und verbindet bei gedrücktem Button das SONOFF-Gerät mit Hilfe des USB-TTL-Adapters mit dem Computer. Den Button könnt ihr dann loslassen.

Bevor ihr nun das Flaschen startet, solltet ihr unter „Werkzeuge“ die benötigten Board-Einstellungen einstellen. Achtet dadrauf, dass ihr unter Port euren USB-TTL-Konverter auswählt.

Über den kleinen Pfeil in der oben linieren Ecke könnt ihr nun das Flashen starten.

Nach dem Flashen sollte sich nach einem Neustart das Sonoff-Gerät automatisch mit eurem Netzwerk verbinden. Sollte dies nicht der Fall sein, so kann alternativ auch die manuelle Einrichtung aktiviert werden. Dazu viermal kurz den Taster des Sonoff-Moduls drücken. Weitere Funktionen des Buttons könnt ihr hier nachlesen.

Es wird nun ein Access-Point vom Sonoff-Gerät aufgebaut mit dem man sich verbinden kann.

Nachdem man sich verbunden hat, öffnet sich die Weboberfläche. Alternativ kann diese über die IP-Adresse 192.168.4.1 aufgerufen werden. Hier kann man nun die WiFi-Einstellungen eingeben.

Nach einem Neustart sollte sich das Gerät nun mit eurem heimischen WLAN verbinden. Am besten lässt sich dies über die Konfigurations-Oberfläche eures Routers feststellen.

Nicht wundern, dass sich das Sonoff-Gerät über LAN verbunden hat. In meinem Fall hat er sich über einen Repeater verbunden, welcher an LAN 1 angeschlossen ist. Wichtig ist die IP-Adresse. Über diese kann man sich nun mit der Konfigurations-Oberfläche des Tonoff-Geräts verbinden. Aber dazu später mehr. Nun wird erstmal das Sonoff-Gerät richtig angeschlossen.

Anschluss der SONOFF-Geräte

Die SONOFF-Geräte haben eine eine Anschlussklemme. Mit dieser lässt sich das Gerät zwischen jedes 230V-Gerät schalten. Achtet dadrauf, dass ihr zuvor alles Stromlos schaltet und ggf. die Sicherungen rausnimmt.

ACHTUNG: Der Anschluss erfolgt an das 230V-Stromnetz und sollte deswegen nur von Fachpersonal durchgeführt werden. ?LEBENSGEFAHR!

Die Anschlussklemme ist mit L(Input), NN, EE und L(Output) beschriftet. An L(Input) wird die ankommende Phase (blau,schwarz,braun) angeschlossen. An L(Output) dann die Phase, welche Richtung des zu steuernden Gerätes führt. An die beiden Klemmen NN kommen die beiden Neutralleitern (blau) und an EE die Schutzleiter (PE – gelb/grün).

SONOFF-Geräte konfigurieren und in FHEM einbinden

Im folgenden werde ich euch erklären, wie ihr die Firmware TASMOTA abhängig vom SONOFF-Gerät konfiguriert und in FHEM einbindet.

Um auf die Konfigurationsoberfläche zu kommen müsst ihr einfach die IP-Adresse des SONOFF-Gerätes in eure Browserzeile eingeben. In meinem Fall zum Beispiel 192.168.2.129.

Bevor ihr nun weiter mit der Konfiguration fortfahrt, solltet ihr unter „Configuration/Configure Other“ einen eindeutigen Namen vergeben. Da ich mit dem SONOFF-POW meine Waschmaschine messen möchte, habe ich den Namen entsprechend gesetzt.

Allgemeine MQTT-Konfiguration

Die MQTT-Konfiguration wurde bereits vor dem Flashen eingetragen. Solltet ihr Änderungen vornehmen wollen könnt ihr dies über die Weboberfläche machen. Dazu klickt ihr auf „Configuration“ und dann auf „Configure MQTT“. Im Configurations-Menü könnt ihr zudem noch weitere Einstellungen vornehmen, welche aber für den Betrieb mit FHEM nicht notwendig sind.

Wichtig für das Definieren in FHEM ist eine korrekte Einstellungen der MQTT-Einstellung des Sonoff-Devices. Bevor ihr also mit der Definition in FHEM beginnt, kontrolliert die MQTT-Einstellungen unter „Configuration / Configure MQTT“.?

Wichtig ist vor allem der Eintrag „Topic“. Dieser wird später für die Einrichtung in FHEM benötigt.

SONOFF – Wireless Control Switch

Der SONOFF-Switch lässt sich in FHEM mit folgenden Befehlen einbinden. Hier wurde „WZ_Deckenlicht“ als Topic verwendet.

define WZ_Deckenlicht MQTT_DEVICE;
attr WZ_Deckenlicht IODev Mosquitto;
attr WZ_Deckenlicht icon light_pendant_light;
attr WZ_Deckenlicht stateFormat state;
attr WZ_Deckenlicht devStateIcon OFF:FS20.off:ON ON:FS20.on:OFF;
attr WZ_Deckenlicht publishSet ON OFF cmnd/WZ_Deckenlicht/POWER;
attr WZ_Deckenlicht room Wohnzimmer;
attr WZ_Deckenlicht subscribeReading_state stat/WZ_Deckenlicht/POWER;
attr WZ_Deckenlicht webCmd ON:OFF;
attr WZ_Deckenlicht alias Deckenlicht

Den Namen und die Attribute icon, devStateIcon, alias und room können natürlich angepasst werden. Des Weiteren muss das Attribut „subscribeReading_state“ entsprechend mit eurem Topic angepasst werden.

SONOFF – Pow WiFi Switch With Power Consumption Measurement

Das SONOFF-POW Gerät lässt sich mit folgenden Befehlen in FHEM einbinden. Hier wurde „KU_Waschmaschine“ als Topic verwendet.

define KU_Waschmaschine MQTT_DEVICE;
attr KU_Waschmaschine IODev Mosquitto;
attr KU_Waschmaschine icon scene_clothes_dryer;
attr KU_Waschmaschine publishSet ON OFF cmnd/KU_Waschmaschine/LIGHT/;
attr KU_Waschmaschine room Küche;
attr KU_Waschmaschine subscribeReading_TELEMETRY tele/KU_Waschmaschine/TELEMETRY;
attr KU_Waschmaschine subscribeReading_LIGHT stat/KU_Waschmaschine/LIGHT;
attr KU_Waschmaschine subscribeReading_state /KU_Waschmaschine/LIGHT;
attr KU_Waschmaschine webCmd ON:OFF;
attr KU_Waschmaschine alias Waschmaschine;

Den Namen und die Attribute icon, alias und room könne natürlich angepasst werden. Des Weiteren müssen die Attribute „subscribeReading_x“ entsprechend mit eurem Topic angepasst werden.

Damit der empfangene Daten-Stream vom Reading „TELEMETRY“ in einzelnen Reading aufgeteilt wird, ist es notwendig ein „expandJSON“-Device zu definieren.

define ej3 expandJSON KU_Waschmaschine.*:.*:.{.*}

Es werden nun alle empfangenden Werte in entsprechende Reading gespeichert.

Wer noch möchte, der kann eine ReadingsGroup aus den ganzen Readings erstellen und somit alle Messwerte anschaulich darstellen.

Dafür ist es jedoch nötig noch ein weiteres Device zu erstellen, welches die Durchschnittswerte errechnet.

define KU_Waschmaschine_CURRENT_POWER average KU_Waschmaschine:Power.*

Anschließend kann dann die ReadingsGroup erstellt werden.

define KU_Waschmaschine_readingsGroup readingsGroup <%scene_clothes_dryer>,<aktuell>,<Tag>,<Gestern>,<Strom>,<Durchschnitt>,<max.P>,<Zyklus>,<Faktor>,<Status>,<hr> .*(KU_Waschmaschine):Energy_Power,Energy_Today,Energy_Yesterday,Energy_Current,Energy_Power_avg_day,Energy_Power_max_day,Energy_Period,Energy_Factor,LIGHT;
attr KU_Waschmaschine_readingsGroup commands {'LIGHT.ON' => 'set $DEVICE OFF','LIGHT.OFF' => 'set $DEVICE ON'};
attr KU_Waschmaschine_readingsGroup mapping %ALIAS;
attr KU_Waschmaschine_readingsGroup nameStyle style="color:yellow";
attr SonoffPows room Energie,MQTT;
attr KU_Waschmaschine_readingsGroup valueFormat {'Power' =>"%.0f W", 'Today' =>"%.2f Kw",'Yesterday' =>"%.2f Kw", 'CURRENT' =>"%.2f A",'Power_max_day' => "%.0f W",'Power_avg_day' => "%.2f W",'Power'=>"%.0f W",'Factor' => "%.2f "};attr KU_Waschmaschine_readingsGroup valueIcon {'LIGHT.ON' => 'rc_GREEN@green', 'LIGHT.OFF' => 'rc_RED@red'};attr KU_Waschmaschine_readingsGroup valueStyle { if($READING eq "Power" && $VALUE >= 0 && $VALUE <= 100){ 'style="color:green;;text-align:right"' }elsif( $READING eq "Power" && $VALUE > 100 && $VALUE < 200){ 'style="color:orange;;text-align:right"' }elsif( $READING eq "Power" && $VALUE >= 200){ 'style="color:red;;text-align:right"' }elsif( $READING eq "Today" && $VALUE >= 4.8){ 'style="color:red;;text-align:right"' }elsif( $READING eq "Today" && $VALUE <= 2.5){ 'style="color:green;;text-align:right"' }elsif( $READING eq "Today" && $VALUE > 2.5 && $VALUE < 4.8 ){ 'style="color:orange;;text-align:right"' }elsif( $READING eq "Yesterday" && $VALUE <= 2.5){ 'style="color:green;;text-align:right"' }elsif( $READING eq "Yesterday" && $VALUE > 2.5 && $VALUE < 4.8 ){ 'style="color:orange;;text-align:right"' }elsif( $READING eq "Yesterday" && $VALUE >= 4.8){ 'style="color:red;;text-align:right"' }elsif( $READING eq "Current" && $VALUE <= 0.45){'style="color:green;;text-align:right"'}elsif( $READING eq "Current" && $VALUE > 0.45 && $VALUE < 0.87 ){'style="color:orange;;text-align:right"' }elsif( $READING eq "Current" && $VALUE >= 0.87){ 'style="color:red;;text-align:right"' }elsif( $READING eq "Power_avg_day" && $VALUE <= 100){ 'style="color:lightgreen;;text-align:right"' }elsif( $READING eq "Power_avg_day" && $VALUE > 100 && $VALUE < 200 ){ 'style="color:orange;;text-align:right"' }elsif( $READING eq "Power_avg_day" && $VALUE >= 200){ 'style="color:red;;text-align:right"' }elsif( $READING eq "Period" && $VALUE <= 10){ 'style="color:lightgreen;;text-align:right"' }elsif( $READING eq "Period" && $VALUE > 10 && $VALUE < 15 ){ 'style="color:orange;;text-align:right"' }elsif( $READING eq "Period" && $VALUE >= 15){ 'style="color:red;;text-align:right"' }elsif( $READING eq "Power_max_day" && $VALUE <= 100){ 'style="color:lightgreen;;text-align:right"' }elsif( $READING eq "Power_max_day" && $VALUE > 100 && $VALUE < 200 ){ 'style="color:orange;;text-align:right"' }elsif( $READING eq "Power_max_day" && $VALUE >= 200){ 'style="color:red;;text-align:right"'}};attr KU_Waschmaschine_readingsGroup valueFormat {'Energy_Power' =>"%.0f W",'Energy_Today' =>"%.2f kWh",'Energy_Yesterday' =>"%.2f kWh",'Energy_Current' =>"%.2f A",'Energy_Power_max_day' => "%.0f W",'Energy_Power_avg_day' => "%.2f W",'Factor' => "%.2f "}

Den Namen der ReadingsGroup und die Grenzen für die Einfärbung der Werte kann natürlich angepasst werden. Wichtig ist, dass ihr den Namen eures eingerichteten Sonoff-Device richtig angibt.

…<Faktor>,<Status>,<hr> .*(KU_Waschmaschine):Energy_Power…

Wollt ihr mehrere SONOFF-Pow-Geräte in der Readingsgroup haben, könnt ihr diese einfach getrennt durch ein | angeben.

…<Faktor>,<Status>,<hr> .*(KU_Waschmaschine|Sonoff1|Sonoff2):Energy_Power…

Wer möchte kann dann natürlich auch anfangen und die Werte mit loggen und ein Diagramm erstellen. In meinem Fall mit der Waschmaschine kann man dann sehr gut den Verbrauch während eines Waschvorganges sehen.

SONOFF-Geräte in meiner FHEM Live-Demo

Um einen besseren Einblick in die Sonoff-Geräte zu bekommen, empfehle ich euch einen Besuch auf meiner FHEM Live-Demo. Dort habe ich für die Deckenlampe im Wohnzimmer einen Tonoff-Switch verwendet und für die Waschmaschine in der Küche einen Sonoff-POW.

Fazit

Ich persönlich bin von den SONOFF-Geräten begeistert. In Zusammenhang mit der alternativen Firmware und die Einbindung in FHEM lassen sich die SONOFF-Geräte perfekt ins smarte Zuhause eingliedern. Ohne auf Apps oder Gateways von Drittherstellern ausweichen zu müssen.

Die SONOFF-Geräte haben durch die Möglichkeit sie theoretisch zwischen jedes elektrische Gerät schalten zu können einen großen Vorteil gegenüber den bekannten Zwischensteckern von Intertechno oder ELV (PCA301). Somit lassen sich zum Beispiel auch relativ günstig Deckenlampen über FHEM steuern.

Diese Vorteile und der dazu sehr günstige Preis, lassen die Geräte der SONOFF-Reihe zur perfekten Erweiterung in FHEM werden.

Ich persönlich werde die SONOFF-Geräte weiter im Blick haben und mir bei Gelegenheit weitere Geräte der Reihe besorgen.

Ich halte auch auf dem Laufenden. ?

0 0 vote
Article Rating
Subscribe
Benachrichtige mich zu:
guest
64 Comments
älteste
neuste beste Bewertung
Inline Feedbacks
View all comments
Matthias
3 Jahre her

Echt cool! Gerade die ReadingsGroup hast Du sehr gut hinbekommen – sieht super übersichtlich aus 🙂 Das übernehme ich direkt mal so für meine Geräte 😀

Ich finde SONOFF auch super – allerdings muss ich mir noch überlegen ob ich die ganzen Geräte irgendwie von meinem „normalen“ trenne. Es wird immer mehr Zeug und langsam auch echt unübersichtlich – wie handhabst Du das? Hast Du alles im gleichen Netz?

Matthias
3 Jahre her
Reply to  Daniel

Mir geht dabei weniger um die WLAN-Zugangsdaten als um die Sicherheit. Wenn, dann möchte ich beiden Netze auch komplett voneinander trennen und das Routing dazwischen anpassen. Nur das macht es dann eben wieder etwas aufwändiger. Günstige Access-Points gibts ja jede Menge.

Die Namen in meiner Fritzbox sind auch sauber vergeben – obwohl ich schon überlegt habe mir nen Prefix für die Smart-Home-Sachen zu überlegen 😀

Und im Nachhinein alles umzustellen ist eben auch nicht so der Spaß :/

Sebastian K
Sebastian K
2 Jahre her
Reply to  Daniel

Bezüglich des Wifi:
Kauf dir einen gebrachten Aruba AP 105.
die gibt für um die 60€ Stk. Das Teil kann VLANs und ist viel „smarter“ als nee Fritzbox.
Damit meine ich dass der AP entscheidet wann der Client 2,4 oder 5 Ghz bekommt.
Das ganze IoT Zeug hat ein eigenes VLAN bekommen was nur mit dem FHEM Server sprechen darf.
Wenn das Netz dort kompromittiert wird hält sich der Schaden in Grenzen.
Da bin ich aber noch in der Umsetzung. Erst mal muss alle andere laufen. 🙂
Wenn du mit einem AP nichtauskommst, die Dinger können das was fritz.boxen nicht können, sauberes Roaming.

Sebastian
3 Jahre her

Hi Daniel,
Vielen Dank für diesen Tollen Beitrag. Ich wollte mich schon länger mal mit Sonoff beschäftigen und da kam mir dieser Beitrag gerade recht.
Weiter so!

Martin
Martin
3 Jahre her

Hi!

Zuerst: danke für die Zeit die du ganz offenbar in das Thema investierst! 🙂

Ich habe eine grundsätzlich Frage: es wird hier und anderswo stets von einer „Konstruktion“ Sonoff-Schalter, Tasmota-Fireware (flashen) und HomeBridge, samt RaspberryPI gesprochen, was ich Dich fragen möchte:

Was davon bzw welche Schritte sind nötig um den Sonoff in die originale Homekit-Umgebung auf einem ATV4 zu integrieren?

Ich haben gehofft, lediglich den Sonoff neu zu flashen und via Webinterface dann ein HomeKit-Gerät „zu verwandeln“ indem ich dem Sonoff sage das er nun ein TADO-Schalter ist (in einem YT-Video gesehen) und er anschließend in HomeKit auftaucht.

Ich habe einen MacMini im (W)LAN hängen. Muss ich den mit HomeBridge und dem ganzen Drumrum ausstatten damit ich Sonoff-Schalter im HK verwenden kann?

Wie gesagt bisher habe ich nur Kombinationen bzw. Setups gefunden, bei denen die HomeBridge zusätzlich auf einem RasPI aufgesetzt und konfiguriert wurde.

Martin
Martin
3 Jahre her

Sorry, Martin nochmal. Bei Klick auf „Kommentar veröffentlichen“ habe ich gesehen, das ich mich bei meiner Mailadresse vertippt habe. An diesem Post die korrekte… 😉

Danke!

Martin
Martin
3 Jahre her
Reply to  Daniel

Ok, danke!

Habe gestern das Sonoff bekommen. Mir fehlt nur noch das USB-Kabel. Dann werde ich wohl rumexperimentieren müssen.

Ist das hier der von dir bevorzugte Weg für Fragen?

Viele Grüße!

Stephan
Stephan
1 Jahr her
Reply to  Daniel

Hallo Daniel,
ich bin als Neuling in der FHEM Scene über diesen Artikel gestolpert, da ich verzweifelt auf der Suche nach einer Anleitung bin, wie ich mit meiner FS20 Fernbedienung (FS20S16) einen Sonoff Dual R2 (mit Tasmota geflasht) fernbedienen kann.
Direkt koppeln wie bei FS20 Geräten untereinander ist ja nicht möglich deshalb muss ich es über den Umweg FS20>>FHEM>>Sonoff
Irgendetwas mache ich falsch beim anlegen vom Dummy oder kann ich die beiden gleich beim define verknüpfen? Stehe echt auf dem Schlauch.
Die Fernbedienung und der Sonoff sind als Devices angelegt und funktionieren.
Ich würde mich freuen wenn Du Licht ins FHEM dunkel bringen könntest.
Leider kann ich keine Screenshots anhängen.
Gruß Stephan

Torben
Torben
3 Jahre her

Hallo Daniel,
auch von mir erst einmal ein dickes Lob! Wieder schön ausgearbeitet.
Jedes Mal denke ich mir, „das muss ich mir notieren und das auch und das….“ aber eigentlich reicht der Link auf deine Seite 😉

Ich habe mal eine Frage was die Ausfallsicherheit / den WAF angeht.

Wenn ich ein SONOFF Gerät irgendwo zwischen „baue“ zur Messung oder zum Schalten, dann kann ich doch nur noch darüber (WiFi) schalten, oder?
Es sei denn ich schließe es Parallel zum eig. Schalter an.

Ich denke nämlich gerade, dass ich meiner Frau nicht erklären kann, wie sie die Lampe bei W-Lan-Ausfall anbekommt, außer alles umzustecken / umzubauen etc.

Gruß Torben

Kim
Kim
3 Jahre her
Reply to  Torben

Hallo Torben,
Mann kann einen Schalter parallel zum Sonoff an klemmen, damit wird dann das Sonoff im Bedarfsfall überbrückt. Das Licht geht dann aber auch nur noch aus wenn beider Geräte auf „Aus“ stehen

Maik
Maik
3 Jahre her
Reply to  Daniel

Ich habe dazu mal folgendes Video auf YT gefunden…

Die haben das Problem gelöst…

Gruß, Maik.

Andreas
Andreas
3 Jahre her

Guten Tag und danke für die hilfreiche Seite. Ich bekomme mitten in der Installation (genauer: nach der Kopie ins arduino-Verzeichnis) die Fehlermeldung

Ungültige Bibliothek /Users/andreasloeffler/Documents/Arduino/libraries/Sonoff-Tasmota-development

Wie geht es jetzt weiter? Ich nutze die #define VERSION 0x05050202 // 5.5.2b

Andreas
Andreas
3 Jahre her

Inzwischen habe ich das lösen können (Neustart vom arduino schien das zu bewerkstelligen, leider haben sich auch einige der Dateinamen oben geändert – aber das kriegt man anhand der Fehlermeldungen gut heraus). Aber es gibt ein neues Problem:

Arduino: 1.8.1 (Mac OS X), Board: „Generic ESP8266 Module, Serial, 80 MHz, 40MHz, DIO, 115200, 512K (64K SPIFFS), ck, Disabled, None“

xdrv_ir_send:46: error: ‚IRsend‘ does not name a type
IRsend *irsend = NULL;
^
/Sonoff-Tasmota-development/sonoff/xdrv_ir_send.ino: In function ‚void ir_send_init()‘:
xdrv_ir_send:50: error: ‚irsend‘ was not declared in this scope
irsend = new IRsend(pin[GPIO_IRSEND]); // an IR led is at GPIO_IRSEND
^
xdrv_ir_send:50: error: expected type-specifier before ‚IRsend‘
irsend = new IRsend(pin[GPIO_IRSEND]); // an IR led is at GPIO_IRSEND
^
xdrv_ir_send:50: error: expected ‚;‘ before ‚IRsend‘
/Sonoff-Tasmota-development/sonoff/xdrv_ir_send.ino: In function ‚boolean ir_send_command(char*, uint16_t, char*, uint16_t, int16_t, char*, uint16_t)‘:
xdrv_ir_send:99: error: ‚irsend‘ was not declared in this scope
if (!strcmp_P(protocol,PSTR(„NEC“))) irsend->sendNEC(data, bits);
^
xdrv_ir_send:100: error: ‚irsend‘ was not declared in this scope
else if (!strcmp_P(protocol,PSTR(„SONY“))) irsend->sendSony(data, bits);
^
xdrv_ir_send:101: error: ‚irsend‘ was not declared in this scope
else if (!strcmp_P(protocol,PSTR(„RC5“))) irsend->sendRC5(data, bits);
^
xdrv_ir_send:102: error: ‚irsend‘ was not declared in this scope
else if (!strcmp_P(protocol,PSTR(„RC6“))) irsend->sendRC6(data, bits);
^
xdrv_ir_send:103: error: ‚irsend‘ was not declared in this scope
else if (!strcmp_P(protocol,PSTR(„DISH“))) irsend->sendDISH(data, bits);
^
xdrv_ir_send:104: error: ‚irsend‘ was not declared in this scope
else if (!strcmp_P(protocol,PSTR(„JVC“))) irsend->sendJVC(data, bits, 1);
^
xdrv_ir_send:105: error: ‚irsend‘ was not declared in this scope
else if (!strcmp_P(protocol,PSTR(„SAMSUNG“))) irsend->sendSAMSUNG(data, bits);
^
exit status 1
‚IRsend‘ does not name a type

Vorher war die Bibliothek IRremote als INKOMPATIBEL ausgezeichnet, das ist sie nun nicht mehr.

Kai
Kai
3 Jahre her
Reply to  Andreas

Exact dasselbe Problem. Weiß jemand Rat? Ich glaube, dass ich im April mal einen einfachen BASIC-Switch so geflasht habe, jetzt sind die DUAL angekommen, und ich hatte die Arduino-Libs aktualisiert.
Dann der komische ir-Fehler.

Weiß jemand Rat?

Dominik
3 Jahre her
Reply to  Kai

Ich habe in der Datei xdrv_ir_send.ino die Zeile „#include “ unter „#include “ hinzugefügt und das hat bei mir den Fehler behoben

Dominik
3 Jahre her
Reply to  Dominik

Also #include unter #include

Dominik
3 Jahre her
Reply to  Dominik

Ich habe einfach die „IRsend“ Bibliothek in die Datei „xdrv_ir_send.ino“ mit eingebunden

Kai
Kai
3 Jahre her
Reply to  Dominik

Volltreffer, vielen Dank.
Und zualleroberst natürlich vielen Dank an Daniel, für diesen spitzen Beitrag. Jetzt muss ich den DUAL nur noch irgendwie in den Flash-Mode bekommen, hoffe ich treffe den richtigen Pin, auf GND zu ziehen.

Martin Zobel-Helas
Martin Zobel-Helas
3 Jahre her
Reply to  Kai

https://github.com/arendst/Sonoff-Tasmota/wiki/Prerequisite sagt ganz klar:

If option USE_IR_REMOTE is enabled in user_config.h install the IRremoteESP8266 library version 1.0.2 via the library manager

. Dann gibt es den oben genannten Fehler auch nicht.

Jörg
Jörg
3 Jahre her

Hallo,

ich finde die Anleitung auch super. Leider bekomme ich noch folgende Meldungen:

In file included from /home/joerghildering/Arduino/libraries/NeoPixelBus_by_Makuna/src/NeoPixelBus.h:50:0,
from /home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/sonoff.ino:175:
/home/joerghildering/Arduino/libraries/NeoPixelBus_by_Makuna/src/internal/Layouts.h:60:21: warning: unused parameter 'height' [-Wunused-parameter]
static uint16_t Map(uint16_t width, uint16_t height, uint16_t x, uint16_t y)
^
/home/joerghildering/Arduino/libraries/NeoPixelBus_by_Makuna/src/internal/Layouts.h:105:21: warning: unused parameter 'width' [-Wunused-parameter]
static uint16_t Map(uint16_t width, uint16_t height, uint16_t x, uint16_t y)
^
/home/joerghildering/Arduino/libraries/NeoPixelBus_by_Makuna/src/internal/Layouts.h:139:21: warning: unused parameter 'width' [-Wunused-parameter]
static uint16_t Map(uint16_t width, uint16_t height, uint16_t x, uint16_t y)
^
/home/joerghildering/Arduino/libraries/NeoPixelBus_by_Makuna/src/internal/Layouts.h:154:21: warning: unused parameter 'height' [-Wunused-parameter]
static uint16_t Map(uint16_t width, uint16_t height, uint16_t x, uint16_t y)
^
/home/joerghildering/Arduino/libraries/NeoPixelBus_by_Makuna/src/internal/Layouts.h:216:21: warning: unused parameter 'height' [-Wunused-parameter]
static uint16_t Map(uint16_t width, uint16_t height, uint16_t x, uint16_t y)
^
/home/joerghildering/Arduino/libraries/NeoPixelBus_by_Makuna/src/internal/Layouts.h:293:21: warning: unused parameter 'width' [-Wunused-parameter]
static uint16_t Map(uint16_t width, uint16_t height, uint16_t x, uint16_t y)
^
/home/joerghildering/Arduino/libraries/NeoPixelBus_by_Makuna/src/internal/Layouts.h:335:21: warning: unused parameter 'width' [-Wunused-parameter]
static uint16_t Map(uint16_t width, uint16_t height, uint16_t x, uint16_t y)
^
/home/joerghildering/Arduino/libraries/NeoPixelBus_by_Makuna/src/internal/Layouts.h:360:21: warning: unused parameter 'height' [-Wunused-parameter]
static uint16_t Map(uint16_t width, uint16_t height, uint16_t x, uint16_t y)
^
In file included from /home/joerghildering/Arduino/libraries/NeoPixelBus_by_Makuna/src/NeoPixelBus.h:67:0,
from /home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/sonoff.ino:175:
/home/joerghildering/Arduino/libraries/NeoPixelBus_by_Makuna/src/internal/NeoEsp8266DmaMethod.h:293:58: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
volatile static void ICACHE_RAM_ATTR i2s_slc_isr(void)
^
In file included from /home/joerghildering/.arduino15/packages/esp8266/hardware/esp8266/2.3.0/libraries/ESP8266WebServer/src/ESP8266WebServer.h:56:0,
from /home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/sonoff.ino:177:
/home/joerghildering/.arduino15/packages/esp8266/hardware/esp8266/2.3.0/libraries/ESP8266WebServer/src/detail/RequestHandler.h:7:18: warning: unused parameter 'method' [-Wunused-parameter]
virtual bool canHandle(HTTPMethod method, String uri) { return false; }
^
/home/joerghildering/.arduino15/packages/esp8266/hardware/esp8266/2.3.0/libraries/ESP8266WebServer/src/detail/RequestHandler.h:7:18: warning: unused parameter 'uri' [-Wunused-parameter]
/home/joerghildering/.arduino15/packages/esp8266/hardware/esp8266/2.3.0/libraries/ESP8266WebServer/src/detail/RequestHandler.h:8:18: warning: unused parameter 'uri' [-Wunused-parameter]
virtual bool canUpload(String uri) { return false; }
^
/home/joerghildering/.arduino15/packages/esp8266/hardware/esp8266/2.3.0/libraries/ESP8266WebServer/src/detail/RequestHandler.h:9:18: warning: unused parameter 'server' [-Wunused-parameter]
virtual bool handle(ESP8266WebServer& server, HTTPMethod requestMethod, String requestUri) { return false; }
^
/home/joerghildering/.arduino15/packages/esp8266/hardware/esp8266/2.3.0/libraries/ESP8266WebServer/src/detail/RequestHandler.h:9:18: warning: unused parameter 'requestMethod' [-Wunused-parameter]
/home/joerghildering/.arduino15/packages/esp8266/hardware/esp8266/2.3.0/libraries/ESP8266WebServer/src/detail/RequestHandler.h:9:18: warning: unused parameter 'requestUri' [-Wunused-parameter]
/home/joerghildering/.arduino15/packages/esp8266/hardware/esp8266/2.3.0/libraries/ESP8266WebServer/src/detail/RequestHandler.h:10:18: warning: unused parameter 'server' [-Wunused-parameter]
virtual void upload(ESP8266WebServer& server, String requestUri, HTTPUpload& upload) {}
^
/home/joerghildering/.arduino15/packages/esp8266/hardware/esp8266/2.3.0/libraries/ESP8266WebServer/src/detail/RequestHandler.h:10:18: warning: unused parameter 'requestUri' [-Wunused-parameter]
/home/joerghildering/.arduino15/packages/esp8266/hardware/esp8266/2.3.0/libraries/ESP8266WebServer/src/detail/RequestHandler.h:10:18: warning: unused parameter 'upload' [-Wunused-parameter]
In file included from /home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/sonoff.ino:181:0:
/home/joerghildering/.arduino15/packages/esp8266/hardware/esp8266/2.3.0/libraries/ESP8266mDNS/ESP8266mDNS.h:66:8: warning: unused parameter 'ip' [-Wunused-parameter]
bool begin(const char* hostName, IPAddress ip, uint32_t ttl=120){
^
/home/joerghildering/.arduino15/packages/esp8266/hardware/esp8266/2.3.0/libraries/ESP8266mDNS/ESP8266mDNS.h:66:8: warning: unused parameter 'ttl' [-Wunused-parameter]
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/sonoff.ino: In function 'void mqttDataCb(char*, byte*, unsigned int)':
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/sonoff.ino:1086:62: warning: comparison is always true due to limited range of data type [-Wtype-limits]
else if (!strcmp_P(type,PSTR("SETOPTION")) && ((index >= 0) && (index <= 14)) || ((index > 31) && (index <= P_MAX_PARAM8 +31))) {
^
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/sonoff.ino:1086:48: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
else if (!strcmp_P(type,PSTR("SETOPTION")) && ((index >= 0) && (index <= 14)) || ((index > 31) && (index <= P_MAX_PARAM8 +31))) {
^
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/sonoff.ino:896:9: warning: unused variable 'mtopic' [-Wunused-variable]
char *mtopic = NULL;
^
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/sonoff.ino:898:8: warning: unused variable 'otype' [-Wunused-variable]
byte otype = 0;
^
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/sonoff.ino: In function 'void stateloop()':
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/sonoff.ino:2268:8: warning: unused variable 'log' [-Wunused-variable]
char log[LOGSZ];
^
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/sonoff.ino: In function 'void serial()':
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/sonoff.ino:2570:93: warning: enumeral and non-enumeral type in conditional expression [enabled by default]
seriallog_level = (sysCfg.seriallog_level < LOG_LEVEL_INFO) ? LOG_LEVEL_INFO : sysCfg.seriallog_level;
^
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/sonoff.ino: In function 'void GPIO_init()':
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/sonoff.ino:2585:8: warning: unused variable 'log' [-Wunused-variable]
char log[LOGSZ];
^
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/sonoff.ino: In function 'void setup()':
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/sonoff.ino:2840:30: warning: suggest parentheses around arithmetic in operand of '^' [-Wparentheses]
power = sysCfg.power & ((1 << Maxdevice) -1) ^ 0xFF;
^
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xdrv_domoticz.ino: In function 'boolean domoticz_mqttData(char*, uint16_t, char*, uint16_t)':
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xdrv_domoticz.ino:141:8: warning: unused variable 'scommand' [-Wunused-variable]
char scommand[10];
^
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xdrv_domoticz.ino: At global scope:
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xdrv_domoticz.ino:208:9: warning: unused parameter 'dataBuf' [-Wunused-parameter]
boolean domoticz_command(const char *type, uint16_t index, char *dataBuf, uint16_t data_len, int16_t payload, char *svalue, uint16_t ssvalue)
^
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xdrv_domoticz.ino:208:9: warning: unused parameter 'data_len' [-Wunused-parameter]
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xdrv_ir_send.ino: In function 'boolean ir_send_command(char*, uint16_t, char*, uint16_t, int16_t, char*, uint16_t)':
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xdrv_ir_send.ino:79:15: warning: unused variable 'HVAC_Mode' [-Wunused-variable]
const char *HVAC_Mode;
^
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xdrv_ir_send.ino:80:15: warning: unused variable 'HVAC_FanMode' [-Wunused-variable]
const char *HVAC_FanMode;
^
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xdrv_ir_send.ino:81:15: warning: unused variable 'HVAC_Vendor' [-Wunused-variable]
const char *HVAC_Vendor;
^
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xdrv_ir_send.ino:82:7: warning: unused variable 'HVAC_Temp' [-Wunused-variable]
int HVAC_Temp = 21;
^
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xdrv_ir_send.ino:83:11: warning: unused variable 'HVAC_Power' [-Wunused-variable]
boolean HVAC_Power = true;
^
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xdrv_ir_send.ino: At global scope:
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xdrv_ir_send.ino:71:9: warning: unused parameter 'index' [-Wunused-parameter]
boolean ir_send_command(char *type, uint16_t index, char *dataBufUc, uint16_t data_len, int16_t payload, char *svalue, uint16_t ssvalue)
^
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xdrv_ir_send.ino:71:9: warning: unused parameter 'payload' [-Wunused-parameter]
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xdrv_snfled.ino: In function 'void sl_animate()':
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xdrv_snfled.ino:296:11: warning: unused variable 'fadeValue' [-Wunused-variable]
uint8_t fadeValue;
^
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xdrv_snfled.ino: At global scope:
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xdrv_snfled.ino:474:9: warning: unused parameter 'index' [-Wunused-parameter]
boolean sl_command(char *type, uint16_t index, char *dataBufUc, uint16_t data_len, int16_t payload, char *svalue, uint16_t ssvalue)
^
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xdrv_snfsc.ino: In function 'String sc_webPresent()':
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xdrv_snfsc.ino:139:68: warning: unknown conversion type character '<' in format [-Wformat=]
snprintf_P(sensor, sizeof(sensor), HTTP_SNS_HUM, scstype, stemp);
^
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xdrv_snfsc.ino:141:76: warning: unknown conversion type character '<' in format [-Wformat=]
snprintf_P(sensor, sizeof(sensor), HTTP_SNS_LIGHT, scstype, sc_value[2]);
^
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xdrv_snfsc.ino:143:76: warning: unknown conversion type character '<' in format [-Wformat=]
snprintf_P(sensor, sizeof(sensor), HTTP_SNS_NOISE, scstype, sc_value[3]);
^
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xdrv_snfsc.ino:145:75: warning: unknown conversion type character '<' in format [-Wformat=]
snprintf_P(sensor, sizeof(sensor), HTTP_SNS_DUST, scstype, sc_value[4]);
^
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xdrv_wemohue.ino: At global scope:
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xdrv_wemohue.ino:466:6: warning: unused parameter 'path' [-Wunused-parameter]
void hue_config(String *path)
^
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xdrv_wemohue.ino:516:6: warning: unused parameter 'path' [-Wunused-parameter]
void hue_auth(String *path)
^
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xdrv_wemohue.ino: In function 'void hue_lights(String*)':
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xdrv_wemohue.ino:532:11: warning: unused variable 'pos' [-Wunused-variable]
int16_t pos = 0;
^
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xdrv_wemohue.ino:540:8: warning: unused variable 'id' [-Wunused-variable]
char id[4];
^
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xdrv_ws2812.ino: In function 'void ws2812_setColor(uint16_t, char*)':
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xdrv_ws2812.ino:110:8: warning: unused variable 'log' [-Wunused-variable]
char log[LOGSZ];
^
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xdrv_ws2812.ino: In function 'void ws2812_animate()':
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xdrv_ws2812.ino:345:8: warning: unused variable 'log' [-Wunused-variable]
char log[LOGSZ];
^
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xdrv_ws2812.ino:346:11: warning: unused variable 'fadeValue' [-Wunused-variable]
uint8_t fadeValue;
^
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xsns_bmp.ino: In function 'boolean bmp180_calibration()':
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xsns_bmp.ino:95:19: warning: comparison is always false due to limited range of data type [-Wtype-limits]
if ((cal_ac1 == 0xFFFF)|
^
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xsns_bmp.ino:96:19: warning: comparison is always false due to limited range of data type [-Wtype-limits]
(cal_ac2 == 0xFFFF)|
^
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xsns_bmp.ino:97:19: warning: comparison is always false due to limited range of data type [-Wtype-limits]
(cal_ac3 == 0xFFFF)|
^
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xsns_bmp.ino:101:18: warning: comparison is always false due to limited range of data type [-Wtype-limits]
(cal_b1 == 0xFFFF)|
^
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xsns_bmp.ino:102:18: warning: comparison is always false due to limited range of data type [-Wtype-limits]
(cal_b2 == 0xFFFF)|
^
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xsns_bmp.ino:103:18: warning: comparison is always false due to limited range of data type [-Wtype-limits]
(cal_mc == 0xFFFF)|
^
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xsns_bmp.ino:104:18: warning: comparison is always false due to limited range of data type [-Wtype-limits]
(cal_md == 0xFFFF)) {
^
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xsns_bmp.ino: In function 'double bmp180_readPressure()':
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xsns_bmp.ino:126:11: warning: unused variable 'msb' [-Wunused-variable]
uint8_t msb;
^
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xsns_bmp.ino:127:11: warning: unused variable 'lsb' [-Wunused-variable]
uint8_t lsb;
^
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xsns_bmp.ino:128:11: warning: unused variable 'xlsb' [-Wunused-variable]
uint8_t xlsb;
^
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xsns_bmp.ino: In function 'String bmp_webPresent()':
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xsns_bmp.ino:478:71: warning: unknown conversion type character '<' in format [-Wformat=]
snprintf_P(sensor, sizeof(sensor), HTTP_SNS_HUM, bmpstype, stemp);
^
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xsns_dht.ino: In function 'String dht_webPresent()':
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xsns_dht.ino:261:75: warning: unknown conversion type character '<' in format [-Wformat=]
snprintf_P(sensor, sizeof(sensor), HTTP_SNS_HUM, dht[i].stype, stemp);
^
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xsns_hlw8012.ino: At global scope:
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xsns_hlw8012.ino:299:6: warning: unused parameter 'value' [-Wunused-parameter]
void hlw_setPowerSteadyCounter(byte value)
^
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xsns_hlw8012.ino: In function 'void hlw_margin_chk()':
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xsns_hlw8012.ino:306:8: warning: unused variable 'log' [-Wunused-variable]
char log[LOGSZ];
^
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xsns_hlw8012.ino: At global scope:
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xsns_hlw8012.ino:437:9: warning: unused parameter 'index' [-Wunused-parameter]
boolean hlw_command(char *type, uint16_t index, char *dataBuf, uint16_t data_len, int16_t payload, char *svalue, uint16_t ssvalue)
^
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xsns_hlw8012.ino:437:9: warning: unused parameter 'dataBuf' [-Wunused-parameter]
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xsns_hlw8012.ino:437:9: warning: unused parameter 'data_len' [-Wunused-parameter]
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xsns_htu21.ino: In function 'String htu_webPresent()':
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xsns_htu21.ino:295:69: warning: unknown conversion type character '<' in format [-Wformat=]
snprintf_P(sensor, sizeof(sensor), HTTP_SNS_HUM, htustype, stemp);
^
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xsns_sht1x.ino: In function 'String sht_webPresent()':
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xsns_sht1x.ino:228:69: warning: unknown conversion type character '<' in format [-Wformat=]
snprintf_P(sensor, sizeof(sensor), HTTP_SNS_HUM, "SHT1X", shum);
^
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xsns_htu21.ino: In function 'float htu21_compensatedHumidity(float, float)':
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xsns_htu21.ino:206:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/support.ino: In function 'String getBuildDateTime()':
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/support.ino:781:84: warning: 'year' may be used uninitialized in this function [-Wmaybe-uninitialized]
snprintf_P(bdt, sizeof(bdt), PSTR("%d-%02d-%02dT%s"), year, month, day, __TIME__);
^
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/support.ino:781:84: warning: 'day' may be used uninitialized in this function [-Wmaybe-uninitialized]
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/support.ino:780:37: warning: 'smonth' may be used uninitialized in this function [-Wmaybe-uninitialized]
month = (strstr(monthNames, smonth) -monthNames) /3 +1;
^
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xsns_hlw8012.ino: In function 'void hlw_readEnergy(byte, float&, float&, uint16_t&, uint16_t&, float&, float&, float&)':
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xsns_hlw8012.ino:233:13: warning: 'hlw_i' may be used uninitialized in this function [-Wmaybe-uninitialized]
if (hlw_i && hlw_u && hlw_w && w) {
^
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xsns_hlw8012.ino:233:13: warning: 'hlw_u' may be used uninitialized in this function [-Wmaybe-uninitialized]
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xsns_hlw8012.ino:234:23: warning: 'hlw_w' may be used uninitialized in this function [-Wmaybe-uninitialized]
hlw_temp = (hlw_w * 100) / ((hlw_u * hlw_i) / 1000);
^
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xsns_ds18b20.ino: In function 'boolean dsb_readTemp(float&)':
/home/joerghildering/Arduino/libraries/Sonoff-Tasmota-master/sonoff/xsns_ds18b20.ino:152:25: warning: 'crc' may be used uninitialized in this function [-Wmaybe-uninitialized]
crc = dsb_crc(lsb, crc);
^

Wie kann ich hier vorgehen? Das flashen funktioniert zwar aber der Sonoff Basic verbindet sich nicht mit dem W-LAN

Gruß

Jörg

Jörg
Jörg
3 Jahre her
Reply to  Daniel

Mit meinem Sonoff Pow hat das jetzt wie beschrieben funktioniert. Mit dem Basic leider nicht. Eine Frage noch: Kann es sein das nach der oberen Beschreibung das Releis nicht geschaltet wird wenn man über FHEM ON oder OFF trigert?

Hubert
Hubert
3 Jahre her

SONOFF – Wireless Control Switch

Deine Beschreibung hat mir sehr gefallen und ich habe sie auch gleich umgesetzt.

Mir ist ein kleiner Fehler aufgefallen, es kann auch sein, dass es an meiner Installation liegt. Wenn ich folgendes Attribut einsetze, wird ein schalten am Sonoff direkt am Gerät bzw. an in der Webseite nicht in Fhem erkannt.
— attr WZ_Deckenlicht subscribeReading_state cmnd/WZ_Deckenlicht/POWER;

Nach einer Änderung auf:
— attr WZ_Deckenlicht subscribeReading_state stat/WZ_Deckenlicht/POWER;
erkennt Fhem den richtigen Schaltzustand egal wo ich schalte.

Gruß
Hubert

Dirk
Dirk
3 Jahre her

Hallo, Super Arbeit 🙂
Ich habe allerdings das Problem, dass ich den Eintrag den Sonow_pow in user_config.h nicht finde.
Auch auf GitHub ist dieser Eintrag nicht findbar. Ich kann zwar flashen, aber es findet keine Anmeldung im Netzwerk statt 🙁
Gibt es eine ältere Version wo das Sonoff Device noch auswählbar ist?
HILFE!!!!

Dirk
Dirk
3 Jahre her
Reply to  Dirk

Hallo. Hat sich erledigt. Unglaublich aber meine Arduino Version war zu alt.
Neueste Version drauf und alles ist i,O, 🙂

tom
tom
2 Jahre her

Hi Daniel, tolle und ausführlich Beschreibung. Hast Du einen Tipp wo ich den Ordner Arduino15 finden könnte ….Unter C:/Users/(username)/AppDataLocal/Arduino15 ist zumindest nichts.
PS: Kleine Korrektur eines Schreibfehlers: NeoPixelBux by Makuna – statt Bux Bus.
LG Tom

Jochen
Jochen
2 Jahre her
Reply to  tom

Hi in der Anleitung ist ein Tippfehler. Du findest den Ordner Arduino15 unter: C:\Users\Jochen\AppData\Local\Arduino15. Also zwischen AppData und Local ein „\“ 😉
Grüße Jochen

tom
tom
2 Jahre her

Kurze Frage (da ich nun seit sehr vielen Stunden es nicht schaffe, die ino Dateien zu kompilieren. Ich habe im Log die Fehlermeldung:
Fehler beim Kompilieren für das Board Generic ESP8266 Module.
Ungültige Bibliothek C:\Users\Schroeder\Documents\Arduino\libraries\Sonoff-Tasmota-master in C:\Users\Schroeder\Documents\Arduino\libraries\Sonoff-Tasmota-master gefunden
Weiter oben steht:
C:\Users\Schroeder\Documents\Arduino\libraries\Sonoff-Tasmota-master\sonoff\xdrv_03_energy.ino:253:27: fatal error: TasmotaSerial.h: No such file or directory
#include
Was mache ich falsch?

bla
bla
2 Jahre her
Reply to  tom

Hallo
Ich habe genau das gleiche Problem.

Björn
Björn
2 Jahre her
Reply to  bla

Hatte das Problem mit der ArduinoCC auch gehabt. Bin dann auf Atom mit der PlatformIO umgestiegen und dort ging es dann ohne Probleme zu flashen.

bla
bla
2 Jahre her
Reply to  Björn

Danke Dir Björn.
Ich musste mich etwas einfuchsen, da ich Atom und PlatformIO nicht kannte, aber nach kurzer Zeit und mit etwas Hilfe von Youtube habe ich es hinbekommen.
Danke nochmals.

tom
tom
2 Jahre her
Reply to  Daniel

Hallo Daniel, hat nun funktioniert. Vielen Dank dafür 😉

Volker
Volker
2 Jahre her

Erstmal auch von meiner Seite ein ganz dickes Danke an Daniel für die super Beschreibung.

Frage: Hat jemand das in letzter Zeit mal durchgespielt? Bin über verschiedene Hürden weggekommen, aber hänge jetzt im File: file eagle.flash.1m0.ld an der letzten Zeile: INCLUDE „../ld/eagle.app.v6.common.ld“- die es da nicht gibt, und auch Umbelennen des Pfades hilft nix.
Tipps sind natürlich hochwillkommen

und noch eine Frage: hab ein kleines Sonoff Programm selber geschrieben, läuft auch auf einem D1-Mini tadellos. Um es auf den Sonoff S20 zu portieren, sollte doch die Änderung des Boards auf „Generic8266“ – „1M-no SPIFFS“ reichen, oder braucht es da ein paar weitere Kniffe?

übrigens, MQTT läuft bei mir mit mehreren 8266 bereits wunderbar unter OPENHAB2 auf einem Raspi. Super Sache – und noch besser, sobald der S20 auch noch mitspielt…

Volker
Volker
2 Jahre her
Reply to  Daniel

Vielen Dank – probier ich mal…

Tim
Tim
2 Jahre her

Hallo,
brauche ich neben dem (verlinkten) USB-TTL Konverter und einem PC noch weitere Hardware?

Ich habe hier ein paar S20, die leider schon die neue Firmware 1.6 ab Werk installiert haben, daher ist OTA nicht möglich 🙁

Tim

sascha E
sascha E
2 Jahre her
Reply to  Daniel

naja ein bissel Verbindungsleitung wären nicht schädlich
um später vernünftig mit dem sonoff zu spielen würde ich eine Stiftleiste dazu bestellen

erni2708
erni2708
2 Jahre her

Hallo, wo finde ich die Datei
„eagle.flash.1m0.ld“ ??
Wie oben im Text beschrieben.
Oder ist damit die
esp8266.flash.1m0.ld gemeint ???

Mfg
erni

Daniel Rubio Hernandez
Daniel Rubio Hernandez
2 Jahre her

Hallo super Bericht hast du evtl Ahnung wie ich an meine Verbrauchsdaten komme…er zeigt nur noch sie letzten 3 Monate an.

Beste Grüße

Micha
Micha
2 Jahre her

Hallo Daniel,

deine Anleitung ist super gut geschrieben nur gehts bei mir noch nicht.

ich hab mehrere POW die nich nutzen möchte, nur hänge ich immernoch beim ersten. Er mag nich über FHEM schalten. Wenn ich das Webinterfache nehme oder den Taster am POW dann kann ich ihn Ein/Ausschalten, im Fehm blinkt nur die blaue LED aber die rote geht nicht an und ich höre kein Relais anziehen. Allerdings wird der Status richtig angezeigt im FHEM.

fehlt was?

Dawid
2 Jahre her

Bekomme folgende Fehlermeldung. Jemand eine Idee?

exec: „make“: executable file not found in %PATH%
Fehler beim Kompilieren für das Board Generic ESP8266 Module.

Sebastian K
Sebastian K
2 Jahre her

Könnte mir jemand einen Tip geben:
Bis dato hatte ich nur Sonoff Switche mit EspEasy an meinem Fehm Server angebunden.
Der Pow wurde mit Tasmato geflasht, und auf dem Pi (Fehm Server wurde das Mosquitto Modul nach deiner Anleitung installiert.
Daten kommen dort auch an:

pi@ZERO:/opt/fhem $ mosquitto_sub -d -v -t \#
Client mosqsub|1944-ZERO sending CONNECT
Client mosqsub|1944-ZERO received CONNACK
Client mosqsub|1944-ZERO sending SUBSCRIBE (Mid: 1, Topic: #, QoS: 0)
Client mosqsub|1944-ZERO received SUBACK
Subscribed (mid: 1): 0
Client mosqsub|1944-ZERO received PUBLISH (d0, q0, r1, m0, ‚tele/POW_Keller/LWT‘, … (6 bytes))
tele/POW_Keller/LWT online
Client mosqsub|1944-ZERO received PUBLISH (d0, q0, r0, m0, ‚tele/POW_Keller/STATE‘, … (150 bytes))
tele/POW_Keller/STATE {„Time“:“2018.04.11 11:03:28″,“Uptime“:“0 15:25:21″,“Vcc“:3.205,“POWER“:“OFF“,“Wifi“:{„AP“:2,“SSId“:“dungeon“,“RSSI“:100,“APMac“:“30:D3:2D:39:40:F4″}}
Client mosqsub|1944-ZERO received PUBLISH (d0, q0, r0, m0, ‚tele/POW_Keller/SENSOR‘, … (150 bytes))
tele/POW_Keller/SENSOR {„Time“:“2018.04.11 11:03:28″,“ENERGY“:{„Total“:0.448,“Yesterday“:0.447,“Today“:0.000,“Period“:0,“Power“:0,“Factor“:0.00,“Voltage“:0,“Current“:0.000}}
Client mosqsub|1944-ZERO received PUBLISH (d0, q0, r0, m0, ‚cmnd/POW_Keller/LIGHT/‘, … (2 bytes))
cmnd/POW_Keller/LIGHT/ ON
Client mosqsub|1944-ZERO received PUBLISH (d0, q0, r0, m0, ’stat/POW_Keller/RESULT‘, … (21 bytes))
stat/POW_Keller/RESULT {„Command“:“Unknown“}

Die Schaltbefehle werden vom mosqub registriert aber irgendwie nicht weiter gegeben.
Ich hab mich an deine Anleitung gehalten und nur den Namen des Device und Raum angepasst, allerdings kommen keine Daten bei FHEM an:

define Mosquitto MQTT 127.0.0.1:1883
define POW_Keller MQTT_DEVICE
attr POW_Keller IODev Mosquitto
attr POW_Keller icon scene_clothes_dryer
attr POW_Keller publishSet ON OFF cmnd/POW_Keller/LIGHT/
attr POW_Keller room Keller
attr POW_Keller subscribeReading_TELEMETRY tele/POW_Keller/TELEMETRY
attr POW_Keller subscribeReading_LIGHT stat/POW_Keller/LIGHT
attr POW_Keller subscribeReading_state /POW_Keller/LIGHT
attr POW_Keller webCmd ON:OFF
attr POW_Keller alias Keller-POW

Ich hab mal folgendes probiert:

pi@ZERO:/etc/mosquitto $ mosquitto_pub -h localhost -t cmnd/POW-Keller/power -m 1
Der Befehlt wird registriert aber scheinbar nicht weiter gegeben.
mosquitto_sub -d -v -t \#
Client mosqsub|2359-ZERO sending CONNECT
Client mosqsub|2359-ZERO received CONNACK
Client mosqsub|2359-ZERO sending SUBSCRIBE (Mid: 1, Topic: #, QoS: 0)
Client mosqsub|2359-ZERO received SUBACK
Subscribed (mid: 1): 0
Client mosqsub|2359-ZERO received PUBLISH (d0, q0, r1, m0, ‚POW_Keller/LWT‘, … (6 bytes))

Hat vielleicht eine Idee wo der Fehler stecken könnte?

Dirk
Dirk
2 Jahre her

Bei mir stoppt es leider damit

Arduino: 1.8.3 (Windows 7), Board: „Generic ESP8266 Module, Serial, 80 MHz, ck, 26 MHz, 40MHz, QIO, 1M (no SPIFFS), v2 Prebuilt (MSS=536), Disabled, None, 115200“

Archiving built core (caching) in: C:\Users\DSTEIN~1\AppData\Local\Temp\arduino_cache_763434\core\core_esp8266_esp8266_generic_UploadTool_esptool,CpuFrequency_80,ResetMethod_ck,CrystalFreq_26,FlashFreq_40,FlashMode_qio,FlashSize_1M0,LwIPVariant_v2mss536,Debug_Disabled,DebugLevel_None____,UploadSpeed_115200_8e6f51d24a480648185d85fb84246950.a
Der Sketch verwendet 560241 Bytes (54%) des Programmspeicherplatzes. Das Maximum sind 1023984 Bytes.
Globale Variablen verwenden 55804 Bytes (68%) des dynamischen Speichers, 26116 Bytes für lokale Variablen verbleiben. Das Maximum sind 81920 Bytes.
error: Invalid argument or value after {upload.erase_cmd} (argument #8)
error: Invalid argument or value after {upload.erase_cmd} (argument #8)

Kann da jemand helfen?

Uwe H.
Uwe H.
2 Jahre her
Reply to  Dirk

Ich ungehe alle Beschäftigung mit Arduino IDE und C++ durch die Verwendung fertiger binaries.
Einziger Nachteil bisher: ich kann keinen Temperatursensor im POW verbauen, weil Theo nicht verantworten will das sich irgend ein Unwissender selber grillt.
Netzspannung ist WIRKLICH GEFÄHRLICH wenn man nicht weiss was man tut.
Ich würde am Pow auch keinen Sensor aus dem Gehäuse herausführen.

Uwe H.
Uwe H.
2 Jahre her

Das war damals ein guter Einstieg in die FHEM Einbindung meiner Tasmota Sonoffs.
Da mein TTL-USB Adapter sich weigerte 3,3V für den Sonoff zu liefern, verwende ich seither meinen Test WemosD1 der sowieso auf einer Steckplatte jederzeit greifbar ist. Einfach den D1 per Drahtbrücke im Reset halten und TXD und RXD NICHT kreuzen.
Fertig ist der nebenberufliche Programmieradapter für alle ESPs.

Uwe H.
Uwe H.
2 Jahre her

Achtung! Geänderte Topics beim Pow seit Tasmota 6!

Bisher war das Topic für die Messwerte des Pow ENERGY.
Neuerdings ist ENERGY ein Untertopic bei SENSORS.
Ein Blick auf die Console wirkt erhellend 😉
Jetzt muss ich diverse Dinge in FHEM umstricken.

tom
tom
2 Jahre her

Kurze Frage: Ich hatte schon mal MQTT installiert und auch einen Sonoff S20 Stecker damit gesteuert. Jetzt bei einer Neuinstallation stehe ich schon seit Stunden auf dem Schlauch. Die IP, die ich in FHEM eintrage muss die gleiche sein, die ich auch als Host-Adresse in der MQTT Konfiguration des Sonoff Basic Module eintrage?
Bei mir gibt es zwar eine Verbindung zum Broker (State open; connection active), ich bekomme allerdings den S 20 Stecker nicht darüber geschaltet … ich bin sehr ratlos.

state ON
transmission-state outgoing publish sent

Es tut sich nichts.

Jonas
1 Jahr her

Moin 🙂

Vorab ein riesen Kompliment für diesen tollen Beitrag. Leider erhalte ich beim Hochladen auf meinen SonOff Basic immer folgenden Fehler. Kann mir da jemand weiterhelfen?

Arduino: 1.8.7 (Windows 10), Board: „Generic ESP8266 Module, 80 MHz, ck, 26 MHz, 40MHz, DOUT, 1M (no SPIFFS), v2 Prebuilt (MSS=536), Disabled, None, 115200“

Der Sketch verwendet 544991 Bytes (53%) des Programmspeicherplatzes. Das Maximum sind 1023984 Bytes.
Globale Variablen verwenden 58728 Bytes (71%) des dynamischen Speichers, 23192 Bytes für lokale Variablen verbleiben. Das Maximum sind 81920 Bytes.
C:\Users\jonas\AppData\Local\Arduino15\packages\esp8266\tools\esptool\0.4.12/esptool.exe -vv -cd ck -cb 115200 -cp COM3 -ca 0x00000 -cf C:\Users\jonas\AppData\Local\Temp\arduino_build_285112/sonoff.ino.bin
esptool v0.4.12 – (c) 2014 Ch. Klippel
setting board to ck
setting baudrate from 115200 to 115200
setting port from to COM3
setting address from 0x00000000 to 0x00000000
espcomm_upload_file
espcomm_upload_mem
setting serial port timeouts to 1000 ms
opening bootloader
resetting board
trying to connect
flush start
setting serial port timeouts to 1 ms
setting serial port timeouts to 1000 ms
flush complete
espcomm_send_command: sending command header
espcomm_send_command: sending command payload
serialport_receive_C0: 2E instead of C0
trying to connect
flush start
setting serial port timeouts to 1 ms
setting serial port timeouts to 1000 ms
flush complete
espcomm_send_command: sending command header
espcomm_send_command: sending command payload
serialport_receive_C0: 2E instead of C0
trying to connect
flush start
setting serial port timeouts to 1 ms
setting serial port timeouts to 1000 ms
flush complete
espcomm_send_command: sending command header
espcomm_send_command: sending command payload
serialport_receive_C0: 2E instead of C0
resetting board
trying to connect
flush start
setting serial port timeouts to 1 ms
setting serial port timeouts to 1000 ms
flush complete
espcomm_send_command: sending command header
espcomm_send_command: sending command payload
serialport_receive_C0: 2E instead of C0
trying to connect
flush start
setting serial port timeouts to 1 ms
setting serial port timeouts to 1000 ms
flush complete
espcomm_send_command: sending command header
espcomm_send_command: sending command payload
serialport_receive_C0: 2E instead of C0
trying to connect
flush start
setting serial port timeouts to 1 ms
setting serial port timeouts to 1000 ms
flush complete
espcomm_send_command: sending command header
espcomm_send_command: sending command payload
serialport_receive_C0: 2E instead of C0
resetting board
trying to connect
flush start
setting serial port timeouts to 1 ms
setting serial port timeouts to 1000 ms
flush complete
espcomm_send_command: sending command header
espcomm_send_command: sending command payload
serialport_receive_C0: 2E instead of C0
trying to connect
flush start
setting serial port timeouts to 1 ms
setting serial port timeouts to 1000 ms
flush complete
espcomm_send_command: sending command header
espcomm_send_command: sending command payload
serialport_receive_C0: 2E instead of C0
trying to connect
flush start
setting serial port timeouts to 1 ms
setting serial port timeouts to 1000 ms
flush complete
espcomm_send_command: sending command header
espcomm_send_command: sending command payload
serialport_receive_C0: 2E instead of C0
warning: espcomm_sync failed
error: espcomm_open failed
error: espcomm_upload_mem failed
error: espcomm_upload_mem failed

LG Jonas

Mala
Mala
1 Jahr her

Hallo Daniel, möchte einen zweiten Sonoff Pow (mit Tasmota) in Fhem einbinden. Ich „wurschtele“ mich irgendwie immer wieder durch, hab aber jetzt keine Idee wie es weiter gehen könnte. Um denn Daten-Stream (Telemetry) vom 2. Pow zu „entschlüsseln“ wollte ich ein zweites „expandJSON“-Device definieren. in meinem Fall define ej3 expandJSON Sonoff_Pow2.*:.*:.{.*}, . Es kommt dann aber eine Fehlermeldung “ ej3 already defined, delete it first „.
Es ist ja schon für meinen 1. POW ein „expandJSON“-Device definiert. Was kann ich tun ?
Gruß und Dank,
Markus

Timo
Timo
1 Jahr her

Servus Miteinander

Sieht alles seeehr interessant und nach ner Menge Arbeit aus. Geil gemacht, keine Frage! Will nun auch ein Projekt beginnen und ggf. auf FHEM schwenken. Vorher aber mal n paar Eckdaten wie folgt klären…

Hat jemand einen Schaltplan von die TH10/16 Boards, also die WIFI Smart Switches mit Thermometer? Ich würde diese nämlich gerne umbauen, so dass eine interne Spannungsversorgung mit 5V oder 3V (je nachdem) durch ein spezielles externes Netzteil (Trenntrafo) erfolgen kann. Warum macht man das? Weil ich mit dem Gerät eine Pool Temperatursteuerung mit Steuerrelais für einen elektrischen Kugelhahn bauen möchte. Dabei will ich aber keine 230V getriebenen Geräte verwenden, hänge nämlich an meinem Leben…

Klar, kann natürlich auch ne Runde messen, aber mit Schaltplan wärs mir lieber 🙂 Zudem schaut es auf dem ersten Blick so aus, als wenn die Platine sekundärseitig in zwei Bereiche mit unterschiedlichen Betriebsspannungen aufgebaut ist. Zum Einen einmal für das WLan und zum Anderen für die Mess und Schalttechnik.

Würde mich über Rückmeldung freuen,

VG, Timo

Stephan
Stephan
1 Jahr her

Hallo Daniel,
ich bin als Neuling in der FHEM Scene über diesen Artikel gestolpert, da ich verzweifelt auf der Suche nach einer Anleitung bin, wie ich mit meiner FS20 Fernbedienung (FS20S16) einen Sonoff Dual R2 (mit Tasmota geflasht) fernbedienen kann.
Direkt koppeln wie bei FS20 Geräten untereinander ist ja nicht möglich deshalb muss ich es über den Umweg FS20>>FHEM>>Sonoff
Irgendetwas mache ich falsch beim anlegen vom Dummy oder kann ich die beiden gleich beim define verknüpfen? Stehe echt auf dem Schlauch.
Die Fernbedienung und der Sonoff sind als Devices angelegt und funktionieren.
Wie in der von Dir beschriebenen Anleitung.
Gruß Stephan