Stromzähler mit einem ESP8266 / ESP32 mit Tasmota auslesen und darstellen

  • Werte an eure Smart Home Steuerzentrale senden
    z.B. Home Assistant, ioBroker, openHAB, FHEM
  • Werte können direkt auf dem ESP8266 grafisch dargestellt werden (Smart Home Zentrale nicht notwendig)
  • ESP8266 oder ESP32 mit oder ohne LAN

Falls ihr, so wie ich, einen neuen digitalen Stromzähler (z.B. von Iskra) eingebaut bekommen habt und auch gerne den aktuellen Zählerwert [kWh] + Leistung [P] als schöne Kurve in eure Smart Home System (z.B. Home Assistant "kurz HA") angezeigt bekommen möchtet, dann seid ihr hier genau richtig! Hier beschreibe ich allerdings nur Home Assistant, da ich dieses System selbst im Einsatz habe. Wenn ihr ein anderes System habt, dann könnt ihr die Werte einfach via MQTT übertragen lassen.

Falls man nicht vor hat, ein Smart Home System einzurichten, sondern einfach nur gerne die Werte schön aufbereitet als Grafik (Liniendiagramm, Tagesverbrauch, Monatsverbräuche, Jahresansicht) anzeigen zu lassen, dann könnt ihr auch einfach nur den ESP mit dem Google Chart Skript nehmen. Tasmota unterstützt Google Chart und somit könnt ihr die Daten direkt auf der Tasmota Seite darstellen lassen! Tasmota mit Google Chart und ohne HA gibt es nun bei den Downloads!

 

 

 

 

Getestete Zähler (es funktionierten sicherlich auch andere):

  • Iskra MT175, MT681
  • EMH ED300L
  • Die Zähler DWS DVS 7420, 7412 (DZG DVS74 DWS74) haben einen Firmware Bug die negative Werte ausgeben, bei Leistungen unter 650W! Ab Tasmota 12.2.0.6 dev ist dieser Bug behoben! Weitere Details findet ihr unter (4c).
  • Logarex LK13BE (LK13BE606739)
  • Zähler die die Werte verschlüsselt (nach IEC 62056 / EN 62056-21) übertragen werden nun ab Tasmota 12.3.1.3 dev unterstützt! Skriptbeispiel unter (4c).Mehr Infos hier und hier.
Hauptseite vom Tasmota Device (ESP) - Google Chart Script ohne PV
Hauptseite vom Tasmota Device (ESP) - Google Chart Script ohne PV
Hauptseite vom Tasmota Device (ESP) - +Einspeisung Diagramme
Hauptseite vom Tasmota Device (ESP) - +Einspeisung Diagramme
Home Assistant Darstellung
Home Assistant Darstellung
Home Assistant Energy Seite
Home Assistant Energy Seite



(1) Was benötigt ihr
  • Digitaler Stromzähler. Hier in der Anleitung wird einer von Iskra Typ MT175 oder MT681 und EMD ED300L mit SML Protokoll verwendet (andere funktionieren ähnlich).
  • persönlichen 4-stelligen Code für den Stromzähler, damit ihr auch die momentane Leistung anzeigen + auslesen könnt (einfach per Mail beim Energieversorger nachfragen)
  • IR Auslesekopf für den Zähler. Empfehlung: Einen fertigen All-in-One WiFi Lesekopf inkl. ESP nehmen, siehe A). Wenn ihr selbst basteln wollt oder euer WLAN im Bereich des Zählers schlecht ist, dann könnt ihr einen Auslesekopf (TTL, nicht USB, Lesekopf Zähler [eBay Werbung]) und einen eigenen ESP verwenden oder schaut unter A) Variante ganz unten (fertige Kauflösung). Lesekopf + separater ESP32 mit LAN/Ethernet siehe B). (Alte Quelle photovoltaik Forum) - Schaltplan + Wiki

    (TTL)

  • Optional: Home Assistant System (z.B. auf einem Raspberry Pi 3+ oder 4)
    NEU: oder ihr nutzt nur den ESP8266 mit der integrierten Weboberfläche. Es gibt auch die Möglichkeit die Daten als Kurve (Google Charts) anzeigen zu lassen.

-- Wenn ihr einen All-in-One Lesekopf (z.B. den von Hichi oder bitshake) verwenden wollt, dann scrollt weiter zu A) bzw. B) --

  • ESP8266 (am besten einen mit USB Anschluss z.B. Wemos D1 mini[eBay Werbung] / NodeMCU ~5€) oder
  • ESP01s[eBay Werbung] das ist der kleinste ESP8266 mit 1M Flash Speicher
  • oder besser noch einen ESP32 (mehr Performance) z.B. D1 mini ESP32[eBay Werbung] oder noch kleiner 
  • M5Stamp (oder Stack) pico [eBay Werbung]

  • Lötkolben + Lötzinn + 3- oder 4-adriges Kabel für den IR Auslesekopf (wenn ihr nur den Bausatz kauft)
  • wenn ihr ein ESP ohne USB Anschluss habt, dann braucht ihr noch ein USB-zu-TTL Adapter. Ein passenden (ESP einfach aufsteckbar) für den ESP01s findet ihr hier[eBay Werbung]. Für alle anderen hier[eBay Werbung].

Hier biete ich euch ein paar Möglichkeiten an, wie ihr die Hardware umsetzen könnt. Am einfachsten und besten ist Variante A). Wenn euer Zähler aber in einem Sicherungskasten aus Metall eingebaut ist, dann könnte das WLAN des ESPs stark abgeschirmt werden. In dem Fall müsst ihr mal schauen wie gut der Empfang im Kasten ist, z.B. einfach mal euer Handy reinlegen, Tür schließen, warten und wieder öffnen und schauen wieviel WLAN Balken noch zu sehen sind. Wenn der Empfang sehr schlecht ist rate ich dazu ein WLAN Repeater zu setzen oder einen TTL Auslesekopf zu kaufen und dann den ESP irgendwo außerhalb des Sicherungskasten in ein extra Gehäuse zu setzen, dafür gibt es bereits etwas Fertiges siehe B). Es gibt aber auch die Möglichkeit das ganze über LAN zu machen, siehe C).

 

A) WiFi / WLAN - Lesekopf mit integriertem ESP

Welchen ESP soll ich nehmen?

 

1) Wenn man relativ günstig an ein ESP8266 Lesekopf kommt und in Zukunft nicht mehr an Tasmota rumfummeln will und einem das alles so aktuell reicht, dann würde ich den ESP8266 nehmen. 

2) Wenn man sehr gerne mit der Technik rumspielt, ab und zu mal ein Update einspielen will, obwohl alles sauber läuft und zuhause auch noch ein Smart Home System hat (z.B. Home Assistant), dann würde ich unbedingt zum ESP32 Lesekopf raten.

 

Ich habe mal die Leistungsaufnahme gemessen:

Hichi Lesekopf v1 mit ESP8266 (ESP01s) = 0,05W (Idle), 0,25-0,35W (Stromzähler sendet Daten)

 

Hichi Lesekopf v2 mit ESP32 C3 mini = 0,4W (Idle), 0,4W (Stromzähler sendet Daten)

 

All-in-One WiFi Lesekopf von Hichi (ESP01s) [eBay Werbung]

Hichi bietet bei ebay komplett fertige WiFi Leseköpfe an. Dieser beinhaltet bereits den ESP8266 (ESP01s Modul) und muss nur über die Mikro USB Buchse mit 5V versorgt werden. Mit einem USB-Netzteil/Ladegerät[eBay Werbung] oder ihr baut euch ein 5V Hutschienen Netzteil[eBay Werbung] ein. Allerdings müsst ihr dafür guten WLAN Empfang in eurem Sicherungskasten haben, der aus Metall ist. Aber dies ist wirklich eine sehr einfache Lösung und kostet weniger als 40€. Auf dem ESP ist bereits Tasmota "vorinstalliert". Deshalb könnt ihr direkt mein fertiges Image via WLAN übertragen ohne TTL Adapter.

Rx = GPIO3, Tx = GPIO1. SML Deskriptor Beispiel: +1,3,s,0,9600,MT681,1

oder

 

Wifi v2 Lesekopf EHZ Volkszähler Hichi Smartmeter (ESP32-C3-Mini-1) [eBay Werbung]

Der kleine Hichi mit seinem ESP01s reicht eigentlich für alles aus (auch um das Google Chart Script auszuführen). Will man aber mehr oder für die Zukunft gerüstet sein, dann würde ich eher zu dem Größeren v2 (oder den von bitshake) greifen. Er hat einen starken ESP32 der wirklich alles bietet. Er ist nur etwas teurer als der kleine Hichi. Auf dem ESP ist bereits Tasmota mit SML "vorinstalliert". Wenn ihr aber mein Google Chart Script verwenden wollt, dann müsst ihr mein angepasstes ESP32 Image (ESP32-C3) via WLAN übertragen. Mit dem Hichi Lesekopf könnt ihr sogar noch weitere IR-Leseköpfe anschließen, wenn ihr mehrere Stromzähler auslesen möchtet. Mehr dazu findet ihr auf der Seite.

Rx = GPIO3, Tx = GPIO1. SML Deskriptor Beispiel +1,3,s,0,9600,MT681,1

 

oder

 

All-in-One WiFi Lesekopf von bitshake (ESP32-C3-Mini-1) [eBay Werbung]

Der Lesekopf von bitshake ist eine gute Alternative und bietet den gleichen Umfang wie der hichi. Auf dem ESP ist ebenfalls bereits Tasmota mit SML "vorinstalliert". Vorteil: Mit der Firmware könnt ihr auch direkt mein Google Chart Script verwenden ohne irgendwas zu flashen. Nachdem Kauf bekommt ihr einen Link zu einer sehr ausführlichen Beschreibungsseite.

Rx = GPIO5, Tx = GPIO4. SML Deskriptor Beispiel +1,5,s,0,9600,MT681,4


oder

 

Ready2Use Lesekopf + ESP außerhalb vom Sicherungskasten[eBay Werbung]

Es gibt noch eine andere Variante vom Verkäufer Steffen (eBay). Diese hat den Vorteil, dass der ESP nicht mit im Zählerkasten sitzt, sondern außen angebracht werden kann wo der WLAN Empfang besser ist. Zusätzlich können auch mehrere Leseköpfe angeschlossen werden. Der Lesekopf selbst sitzt natürlich im Zählerschrank am Zähler. Ist allerdings auch etwas teurer als der Hichi. Hier kommt der Wemos Di mini zum Einsatz.

 

 

B) Ethernet / LAN - Lesekopf (TTL, am Zähler) und separates ESP32 Modul mit LAN

Achtung! Bei Verwendung eines LAN-ESPs ist die Performance der Tasmota GUI sehr langsam, wenn man nur über LAN verbunden ist (wifi 0). Hier gibt es aber ein Workaround:

Befehl "EthClockMode 0" in die Console eingeben. Quelle https://github.com/arendst/Tasmota/discussions/19803

 

Optionen:

  • Shelly 1 Pro Hutschinenmodul ~55€
    ! Den IR Lesekopf müsste man an die Programmierschnittstelle (RX/TX/3V) an der Seite anschließen, allerdings ist die Spannungsversorgung nicht galvanisch getrennt. D.h. ich rate davon dringend ab, da ihr dann den Neutralleiter mit GND und somit dem Lesekopf verbunden habt! Im Fehlerfall kann auch die Phase am Lesekopf anliegen.
    Arbeiten an 230V sind nur für erfahrene Elektriker zulässig.

  • Shelly Homepage
    eBay Link[eBay Werbung]
    Tasmota Seite

 oder 

oder mit PoE (Power over Ethernet) ~18€

ESP Hutschienengehäuse

(2) ESP8266 mit IR-Lesekopf verbinden (altes Beispiel)

 

Unbenutzer TX-Pin (Sendediode)

Wichtig: Wird die Sendediode (TX) vom IR-Lesekopf nicht benötigt, dann müsst ihr den GPIO Pin in eurer Meter Definition im Script am Ende trotzdem angeben, ansonsten kann die Diode ungewollt flackern und euer Smart Meter verwirren. Das könnte z.B. so aussehen +1,3,s,0,9600,MT681,1

 

Eine andere Methode: Es ratsam diese fest auf 3,3V zu legen (mit 3,3V verbinden). Bei fertigen Leseköpfen inkl. ESP ist das natürlich schwierig. Den TX-Pin kann man da dann einfach in Tasmota (via Software) auf High-Pegel 3,3V legen. Configuration -> Configure Template und da den entsprechenden GPIO TX-Pin von User auf Output Hi setzen. Beim Ready2Use WiFi Lesekopf von Hichi ist es GPIO 1. (Rx ist GPIO 3).


Hintergrund: Wird die Sendediode (TX) nicht angeschlossen, dann hat sie keinen Spannungsbezug (nennt man floating pin). Vor der Diode ist noch ein Schmitt-Trigger vorgeschaltet. Wenn nun die TX-Ader nicht beschaltet ist, dann kann in die nicht angeschlossene Leitung Spannung induziert werden. Da diese nicht abgebaut werden kann wird irgendwann die Schwelle des Schmitt-Triggers erreicht und er schaltet kurz durch. Das kann nun öfters hintereinander passieren und euren Stromzähler zufällig Befehle zusenden. Den Fall hatte ich persönlich und mehrere Leser meines Blogs (siehe Kommentar #1021). Deshalb vorsichtshalber den Pin per Hand oder via Software auf HIGH-Pegel setzen (3,3V).

 

 

(3) Stromzähler direkt über einen Raspberry Pi auslesen (EDL21)

Falls ihr den Stromzähler direkt über einen Raspberry Pi, auf dem z.B. euer Home Assistant läuft, auslesen wollt, dann müsst ihr nur folgende Integration installieren. Dafür ist dann ein USB Auslesekabel notwendig. Ihr könnt aber auch direkt an die TX/RX Pins des Rpi gehen. Dann müsst ihr nur die config der Integration ändern (/dev/serial0). Weitere Infos.

https://www.home-assistant.io/integrations/edl21/

 

(4) Stromzähler vorbereiten, ESP flashen, Tasmota und HA einrichten

(4a) Stromzähler vorbereiten und ESP8266 flashen

1. Den Pin / Code, den ihr von euren Stadtwerken erhalten habt, an eurem Stromzähler eingeben und somit freischalten. Ansonsten könnt ihr nur den Gesamtverbrauch auslesen. Den Code könnt ihr meistens über eine Taste / Schalter oder in jedem Fall über eine Taschenlampe eingeben. Schaut einfach in die Anleitung eures Stromzählers. Wenn ihr den MT175 habt, die blaue Taste 2x drücken (es folgt ein Displaytest). Nun schnell die Pin mit der blauen Taste eingeben. Wenn ihr 3s wartet wird zur nächsten Stelle des Pins gesprungen. Anschließend sollte eure aktuelle Leistung unter dem Zählerstand angezeigt werden. Info: Beim DZG DWS74 muss nach der Eingabe Inf auf On und Pin auf Off gestellt werden.

2. Nun die ESP8266 Tasmota Firmware herunterladen (scrolle runter). Ihr könnt euch auch selbst ein Images erstellen. Siehe dazu Kapitel 6. Nachdem ihr euer Image heruntergeladen habt folgt das Flashen. Die Anleitung geht hinter den Downloads mit Schritt 3 weiter.


Downloads

-Tasmota Images & Scripte-

 

Angepasste Tasmota Images:

in Englisch mit SML, Home Assistant, Google Chart Support

 

ESP8266/8285 1M (z.B. ESP01s Hichi) / 4M+ Flash (z.B. D1 mini) / SonOff POW / Gosund EP-2:

Ich habe alle unnötigen Tasmota Features/Treiber aus dem Image entfernt, damit das Google Chart Skript richtig läuft und auch Firmwareupdates ohne den Umweg über die minimal möglich ist. Die deaktivierten Features findet ihr hier. Wenn ihr aber zusätzliche Sensoren nutzen wollt, dann müsst ihr euch eine eigene Version bauen (siehe Punkt 6).

ältere

----------------------------------------------

ESP32 (+ S3, C3, S2):

inkl. Berry-Skript, Ethernet (LAN), Modbus TCP, TCP-Server Support und allen Standard Features/Treibern

Hinweise: 

  • Tasmota Images für ESP8266 sind komprimiert "TasmotaXYZ.bin.gz" . Wenn ihr ein OTA Upgrade macht müsst ihr die .gz nicht entpacken!
  • ESP8266 mit nur 1 MByte Flash: Wenn ihr bereits eine Tasmota Version auf euren ESP geflasht habt und nun via OTA (load file) meine Version flashen wollt, dann müsst ihr vorher zwingend die minimal in der gleichen Version flashen (liegt mit im Download Ordner)! Beim ESP32 ist das nicht notwendig! Update: Ab 12.4.0 nicht mehr notwendig.
  • Wenn ihr kein Home Assistant habt oder benötigt, dann könnt ihr die Firmware trotzdem verwenden. Ist wird einfach nur HA und Google Charts unterstützt.

----------------------------------------------

 

Tasmota Google Chart Script:

Visuelle Anzeige eures Verbrauchs (Tages, Monats, Jahresansicht) via Google Charts und optional (anderes PV Script) mit Anzeige der Netzeinspeisung (Monatsansicht). Dabei handelt es sich um ein großes Tasmota Skript, das ihr noch zusätzlich via TasmotaScriptEditor auf euren ESP übertragen müsst! Anleitung und Beschreibung weiter unten (4f).

 

Features:

- Visuelle Anzeige des Verbrauchs (Tages, Monats, Jahresansicht)

- Visuelle Anzeige der Einspeisung (Tages, Monats, Jahresansicht) "+PV"

- Gefilterter Leistungswert z.B. für Regelung Nulleinspeisung (openDTU-onbattery). Vergleich Leistung gefiltert und ungefiltert siehe Bild unten.

  Abrufbar via http://eure-ip/cm?user=admin&password=joke&cmnd=script?power2

- Alle Daten können auch via MQTT übertragen werden! Siehe Kapitel 10.

  • Tasmota Script Google Chart SML (07.06.2024)
    Hinweis: Wenn ihr mein Script bearbeitet um eure SML Descripter Zeilen einzufügen, denkt an die korrekte Reihenfolge: Die 1te Zeile ist nun die Leistung (sml[1]), die 2te Energie vom Netz (sml[2]), die 3te Energie ins Netz (sml[3]).
    Tasmota SML Script + Chart + PV (mit visuelle Anzeige der Netzeinspeisung, falls ihr eine PV Anlage habt)
    Tasmota SML Script + Chart + PV - ohne 4h 24h Diagramm
     (ich habe beide Diagramme und deren Variablen entfernt, spart Speicher)
    Tasmota SML Script + Chart
  • Tasmota Script Google Chart SML für 1-Richtungszähler und PV (07.06.2024)
    Falls man ein BKW (Balkonkraftwerk) und einen rücklaufgesperrten Zähler hat, der aber die Leistung negativ anzeigt, wenn ins Netz gespeist wird. Anhand der aktuellen negativen Leistung wird die eingespeiste Energie errechnet, anstatt diesen Wert direkt vom Zähler zu bekommen. Man hat so einen virtuellen Einspeisezähler statt der Auslesung aus einem Zwei-Richtungszähler.

 

 

----------------------------------------------

 

Weitere nützliche Scripte:
Hier findet ihr weitere nützliche Google Chart Scripte die von meinen fleißigen Lesern des Blogs erstellt wurden. Falls ihr dafür ein angepasstes Tasmota Image benötigt steht das mit im Text.

 

  • Zusatzscript: Schalte 2. Tasmota Device bei Stromüberschuss um z.B. Strom sinnvoll zu nutzen
    Siehe Kapitel 9. Diese Funktion ist nun in meinem Script mit integriert (es müssen nur die Kommentare entfernt werden).
  • Google Chart Skript angepasst für den Sonoff Pow R2 / Elite 16A / Gosund EP-2 (nicht SML/Stromzähler!) vom Leser Dennis
    hierfür braucht ihr ein speziell angepasstes Image inkl. der Energy Monitor Treiber des SonOff! Das Image für "Gosund EP-2 (ESP8285 1MB)" oder "SonOff POW (R2)" findet ihr im Google Drive Download Ordner von Tasmota 12.4.0 bzw. 13.1.0. Für den "Sonoff POW Elite 16A" benötigt ihr das ESP32 Image, das ihr ebenfalls unter den Downloads findet.
  • Temperatur- und Luftfeuchtigkeitslogger mit Charts vom Leser Dennis
    erfordert ein speziell angepasstes Tasmota Image mit 6 Array Support
  • Fronius Gen24 Smart Meter Modbus TCP SunSpec Emulation mit ESP32 und Tasmota. Das Script emuliert ein Fronius Smart Meter TCP (Primary Power Meter), indem es per SML den Stromzähler ausliest und die drei Messwerte aktuelle Leistungtotal_WH_exp und total_Wh_Imp per Modbus TCP nach SunSpec Standard zur Verfügung stellt. Die Fronius MODBUS Register Referenz gibt es direkt bei Fronius zum Download. In dem .zip gibt es Smart_Meter_Register_Map_Float.xlsx, darin sind alle Register definiert. Die Reihenfolge und Gruppierung der Registerabfragen wurden nur für den Fronius Gen24 ermittelt und im Script emuliert, für andere Wechselrichter die auch den SunSpec Standard nutzen muss es wohl angepasst werden. Getestet mit einem Wechselrichter Fronius Gen24 mit aktueller Firmware 1.28.7-1. vom Leser CherAlban und gemu2015 (Tasmota Script Entwickler)

 

hier gehts mit der Anleitung weiter ;)

 

Firmware flashen 

3. Nun müsst ihr Tasmota auf euren ESP flashen. Hier gibt es zwei Wege:

  • Wenn ihr ein ESP habt, wo bereits Tasmota drauf ist (z.B. auf dem ESP01s des Hichi IR Lesekopfes), dann könnt ihr einfach zu Punkt 4. springen.
  • Habt ihr einen unbeschriebenen/neuen ESP (einzeln irgendwo gekauft), dann müsst ihr das Tasmota Image erstmalig über das USB-Kabel (wenn euer ESP ein USB Anschluss hat z.B. D1 mini) oder über ein USB-TTL-Adapter (wenn euer ESP kein USB Anschluss hat) flashen. Für mehr Infos bzgl. der Hardware schaut ins Kapitel 1. Wie ihr den Adapter anschließt findet ihr hier. In beiden Fällen habt ihr dann eine neue serielle Schnittstelle (COM Port, z.B. COM3) auf eurem PC. Diese findet ihr im Gerätemanager von Windows. Sieht dann z.B. so aus:

Jetzt braucht ihr noch das richtige Programm. Hier gibt es wieder zwei Wege:

 

Hinweis: Der ESP-Flasher.exe wird fälschlicherweise als Virus erkannt! Das könnt ihr ignorieren. Siehe auch: github issue

  • ESP8266 - da könnt ihr den ESP_Flasher (Jason2866) oder Tasmotizer verwenden um das Image "tasmota.bin" (vorher entpacken mit 7zip) zu flashen. Wählt den korrekten COM Port aus und drückt auf flashen.
  • ESP32 - da könnt ihr neuerdings auch den ESP_Flasher verwenden, da dieses Tool auch die Factory Images übertragen kann. Ansonsten könnt ihr das Tool vom Hersteller (Flash Download Tool) verwenden um das Factory Image zu flashen. Da das System beim ESP32 anders aufgebaut ist muss beim ersten Flashen das Factory Image verwendet werden. Fortan könnt ihr das normale Image verwenden. Das Factory Image findet ihr immer bei den ESP32 Downloads im gleichen Ordner. Es folgt nun eine bebilderte Anleitung (Flash Download Tool):
     →