Sonoff mit Software Tasmota

Begonnen von Reinhart, 08 Februar 2017, 19:02:23

Vorheriges Thema - Nächstes Thema

Reinhart

Hallo,

es gibt hier einige Anwender die auf den Sonoff Modulen gerne die Software Tasmota verwenden weil hier so ziemlich alles per Webif zu konfigurieren geht. Sogar der Modultyp kann hier eingestellt werden und das Handling mit den GPIOS ist auch einfacher. Ähnliche Konfigurationsmöglichkeiten wie bei ESPEasy.

Die meisten staunen nicht schlecht wenn die Messdaten des Moduls dann per MQTT im JSON Format eintreffen und dieses Message Format nicht mehr im Modul änderbar ist. Bei der reinen MQTT Version ist es ja wählbar, LEGACY oder JSON, aber hier wurde LEGACY offensichtlich aus Platzgründen wieder ausgebaut.

Ich bin daher den ganz einfachen Weg gegangen und habe in Tasmota bei einigen Sensoren LEGACY wieder hinzugefügt und die Readings können in FHEM wieder wie gewohnt mit den Messdaten befüllt werden. Bei bestehenden Sonoff FHEM Konfigurationen von der MQTT Version sollte die Topic überprüft und gegebenenfalls angepasst werden.

Wer sich also die Arbeit mit dem zerlegen des Strings ersparen will, kann diese Version benutzen.


11:13:52 MQTT: tele/TestSwitch/POWER = OFF
11:13:52 MQTT: tele/TestSwitch/UPTIME = 1
11:13:52 MQTT: tele/TestSwitch/AP = 2
11:13:52 MQTT: tele/TestSwitch/SSID = myssid
11:13:52 MQTT: tele/TestSwitch/RSSI = 100
11:13:52 MQTT: tele/TestSwitch/DHT/TEMPERATURE = 20.8
11:13:52 MQTT: tele/TestSwitch/DHT/HUMIDITY = 28.7

so sieht nun der MQTT String bei einem Sonoff mit DHT22 wieder aus.


11:12:23 MQTT: tele/sonoffpow3/LIGHT = ON
11:12:23 MQTT: tele/sonoffpow3/UPTIME = 2
11:12:23 MQTT: tele/sonoffpow3/AP = 1
11:12:23 MQTT: tele/sonoffpow3/SSID = myssid
11:12:23 MQTT: tele/sonoffpow3/RSSI = 96
11:12:23 MQTT: tele/sonoffpow3/YESTERDAY_ENERGY = 0.083
11:12:23 MQTT: tele/sonoffpow3/TODAY_ENERGY = 0.039
11:12:23 MQTT: tele/sonoffpow3/PERIOD_ENERGY = 0
11:12:23 MQTT: tele/sonoffpow3/CURRENT_POWER = 3
11:12:23 MQTT: tele/sonoffpow3/POWER_FACTOR = 0.17
11:12:23 MQTT: tele/sonoffpow3/VOLTAGE = 233
11:12:23 MQTT: tele/sonoffpow3/CURRENT = 0.079

und so bei einem Sonoff POW, auch die Statusmeldungen des Wifi sind nun in LEGACY


folgende Module sind gepatcht und kommen nun wieder im LEGACY Datenformat:

dht = Temp/Hum Sensor DHT22, Sonoff TH16 oder Eigenbau
ds18b20 = Temperaturfühler DS18b20 Sonoff TH16 oder Eigenbau
ds18x20 = Temperaturfühler
hlw8012 = Sonoff POW
BH1750 = Ambient Light Intensity
bmp = BMP085, BMP180, BMP280, BME280 - Pressure and Temperature and Humidy
htu21 = Temperature and Humidy

Im Anhang die gepatchte Tasmota Version 3.9.12 vom 08.02.2017.

Der Sketch verwendet 458792 Bytes (47%) des Programmspeicherplatzes. Das Maximum sind 958448 Bytes.
Globale Variablen verwenden 45816 Bytes (55%) des dynamischen Speichers, 36104 Bytes für lokale Variablen verbleiben. Das Maximum sind 81920 Bytes.

Speicherbelegung

ACHTUNG: Der Sonoff 4CH und der Touch funktionieren nur wenn im Compiler der 8285 ausgewählt wurde! Also nicht die .bin verwenden!

Update:
12.02.2017 neue Version 3.9.14
10.02.2017 neue Version von Arends, geringfügige Änderungen
09.02.2017 weitere Sensoren zum LEGACY Format hinzugefügt, Statusmeldung nun auch in LEGACY

LG
FHEM auf Raspy4 mit Bullseye + SSD, Homematic, ESP8266, ESP32, Sonoff, eBus, NanoCUL, MapleCUL, , MQTT2, Alexa

Billy

Danke für deinen Patch. :)
Wäre es möglich nicht nur die bin, sonder auch den gepatchten
Sonoff-Tasmota/sonoff/ Pfad d.h. alle geänderten .ino und .h anzuhängen?

Gruß Billy
FHEM immer akt. auf 3 BeagleBoneBlack: 2xHMLAN 2xJeelink ;10x HM-CC-TC, 13x HM-CC-VD, 1x HM-ES-PMSw1-Pl, 3x HM-LC-SW1-PL2, viele ESP8266, Tasmota Scripting, Mqtt*

Reinhart

Hallo Billy!

habe es als zip oben angehängt. Wie ich gesehen habe, bleiben bei einem Update von Arends meist die Sensorfiles davon unberührt und es wird lediglich in der sonoff.ino erweitert. Wenn noch ein zusätzlicher Sensor benötigt wird ist das ja schnell zu machen.

Indem ich mit einem guten Editor (Pspad) vergleiche sehe ich die Änderungen sofort und füge die dann dem Patch hinzu, das ist meist der schnellste Weg und die Datei ist wieder auf neuestem Stand.

Ich habe mir bei dem Patch einfach die baugleiche MQTT Version angesehen und man kann meist die "void xxx_mqttPresent" komplett kopieren und dann mit einigen Anpassungen zum Laufen bringen. Beim dem jeweiligen Sensor findet auch immer die Ausgabe statt. In der Sonoff.ino müssen dann lediglich die richtigen Variablen übergeben werden, da ja zusätzlich die komplette Topic für Legacy benötigt wird ( stopic und sstopic ) .

Wenn du dir einen geänderten Sensor ansiehst und mit dem Original vergleichst wirst du sofort sehen das es relativ einfach ist. Ich hätte das sonst auch nicht gekonnt.

LG




FHEM auf Raspy4 mit Bullseye + SSD, Homematic, ESP8266, ESP32, Sonoff, eBus, NanoCUL, MapleCUL, , MQTT2, Alexa

Billy

#3
Hallo Reinhart!
Vielen Dank für die schnelle Erledigung und deine Erläuterungen.
Habe zur Zeit wenig Zeit und bin froh für deine Arbeit.
Ich bin mit meinen Sonoffs (Inzwischen 9) sehr zufrieden die Stabilität MQTT ist super.

Einer arbeitet als PIR auf Basis Wall switch and HC-SR501 in RENZ Briefkastenanlage.
d.h. in komplett geschirmter Umgebung bei RSSI = 32 ohne jeden Ausfall.
Nachts, bei geschlossenem Rolladen mit RSSI = 24!
Den PIR Sensor habe ich dazu ausgelötet und um ca. 20 cm mit geschirmtem Kabel verbaut.

Schönen Abend wünscht

Billy
FHEM immer akt. auf 3 BeagleBoneBlack: 2xHMLAN 2xJeelink ;10x HM-CC-TC, 13x HM-CC-VD, 1x HM-ES-PMSw1-Pl, 3x HM-LC-SW1-PL2, viele ESP8266, Tasmota Scripting, Mqtt*

Reinhart

neue Version 3.9.14 Legacy vorne angehängt!

LG
FHEM auf Raspy4 mit Bullseye + SSD, Homematic, ESP8266, ESP32, Sonoff, eBus, NanoCUL, MapleCUL, , MQTT2, Alexa

Reinhart

In der Zwischenzeit gibt es von dev0 ein Modul welches den von Tasmota gelieferten JSON String direkt in Readings umwandelt. Der Aufwand für den Anwender hält sich somit in Grenzen.

{"Time":"2017-02-22T09:48:45", "Yesterday":"2.286", "Today":"0.930", "Period":8, "Power":102, "Factor":"0.95", "Voltage":234, "Current":"0.458"}
hier ein JSON String von einem POW aus Tasmota

define ej3 expandJSON Sonoff.*:.*:.{.*}
und mit dieser Regexp werden alle aus dem JSON String enthaltenen Readings automatisch erzeugt und eingelesen. Alle Defines die mit "Sonoff" beginnen werden dabei automatisch erfasst.

Link zu Modul: https://forum.fhem.de/index.php/topic,66761.msg582951.html#msg582951

Auf das alte LEGACY Format kann somit gänzlich verzichtet werden.

LG
Reinhart
FHEM auf Raspy4 mit Bullseye + SSD, Homematic, ESP8266, ESP32, Sonoff, eBus, NanoCUL, MapleCUL, , MQTT2, Alexa

Reinhart

ACHTUNG:
Im Wiki wurden alle Beispiele auf das JSON Format umgestellt und die LEGACY Demos gänzlich entfernt!

LG
Reinhart
FHEM auf Raspy4 mit Bullseye + SSD, Homematic, ESP8266, ESP32, Sonoff, eBus, NanoCUL, MapleCUL, , MQTT2, Alexa

Billy

Zitat von: Reinhart am 27 Februar 2017, 10:29:06
ACHTUNG:
Im Wiki wurden alle Beispiele auf das JSON Format umgestellt und die LEGACY Demos gänzlich entfernt!

LG
Reinhart

Super und Danke! :D
Billy
FHEM immer akt. auf 3 BeagleBoneBlack: 2xHMLAN 2xJeelink ;10x HM-CC-TC, 13x HM-CC-VD, 1x HM-ES-PMSw1-Pl, 3x HM-LC-SW1-PL2, viele ESP8266, Tasmota Scripting, Mqtt*

bammes

Guten Tag!Ich habe die aktuell 4er Fimware auf meine Sonff Touch Schalter installiert.
Seitdem ist die Beleuchtung invertiert, d. h. wenn das Licht an ist, dann leuchtet der Schalter und wenn das Licht aus ist, dann leuchtet der Schalter nicht.
Kann mir von euch bitte jemand weiterhelfen, wie ich das korrigieren kann?

Reinhart

#9
Hallo,

ich kenne den Touch leider nicht, aber du meinst sicher die Positions Beleuchtung damit im Dunkeln der Taster leichter gefunden wird?

Wenn es sich dabei um die blaue Led handelt, dann könntest du in der sonoff_template.h den Zustand ändern. Dazu einfach GPIO_LED1_INV auf GPIO_LED1 ändern. Eigentlich wäre es hier richtig definiert, bei Aus leuchten und bei Ein nicht leuchten.

  { "Sonoff Touch",    // Sonoff Touch
     GPIO_KEY1,        // GPIO00 Button
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     GPIO_REL1,        // GPIO12 Red Led and Relay (0 = Off, 1 = On)
     GPIO_LED1_INV,    // GPIO13 Blue Led (0 = On, 1 = Off)
     0, 0, 0
  },


Versuche das einmal und berichte ob es zum gewünschten Ergebnis führt.

PS: und nicht vergessen in der Arduino IDE auf 8285 stellen!

LG
Reinhart
FHEM auf Raspy4 mit Bullseye + SSD, Homematic, ESP8266, ESP32, Sonoff, eBus, NanoCUL, MapleCUL, , MQTT2, Alexa

bammes

Hallo Reinhard,

das hat das Problem gelöst.

Vielen Dank!