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 MT174, MT175, MT631, 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. ESP32 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)
    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) --

  • ESP32 z.B. D1 mini ESP32[eBay Werbung] oder noch kleiner 
  • M5Stamp (oder Stack) pico [eBay Werbung]
  • oder die älteren (nicht empfehlenswert, da die ESP32 gleich viel kosten) ESP8266 (z.B. Wemos D1 mini[eBay Werbung] / NodeMCU ~5€) oder
  • ESP01s[eBay Werbung] das ist der kleinste ESP8266 mit 1M Flash Speicher
  • 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). Oder ihr sucht euch einen ESP Board mit extern anschließbarer Antenne. Die könnt ihr dann rausführen.

 

A) WiFi / WLAN - Lesekopf mit integriertem ESP

Welchen ESP soll ich nehmen?

 

Da die Preise für ESP32 Module stark gesunken sind und deshalb die Leseköpfe mit ESP32 fast genau soviel kosten wie die mit ESP8266, würde ich definitiv die ESP32-Leseköpfe empfehlen. Ich habe die ESP8266 Leseköpfe aber trotzdem noch auf meiner Seite gelassen. Bei der Stromaufnahme ist der ESP8266 allerdings deutlich genügsamer als der ESP32., das könnte für einige auch ein Entscheidungskriterium sein.

 

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)

 

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

Der kleine ESP8266 Hichi (weiter unten) mit seinem ESP01s reicht eigentlich für alles aus (auch für das Google Chart Script). Allerdings würde ich bei dem fast gleichen Preis 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

 

 

 

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

 

 

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

Hichi bietet bei eBay komplett fertige WiFi Leseköpfe an. Diese beinhalten 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

 

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. -Aktuell (12.2024) nicht mehr verfügbar- Selbstbaulösung siehe unten.

 

 

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:

  • WT32-ETH01 ~14€

    manche Versionen basieren auf dem ESP32 WT32-S1 (SingleCore) - S1solo Image
    andere Versionen basieren auf dem ESP32-WROOM (DualCore) - Normales ESP32 Image
    Je nachdem welches Modell ihr habt, müsst ihr das Image wählen.
    ihr braucht hier auch einen USB-TTL Adapter
    eBay Link[eBay Werbung]
    Tasmota Seite
    Flashanleitung
    Tasmota Setup Anleitung
    Achtung: Auf den neueren Modulen (ESP32-D0WD v1.1 laut Tasmota Info) ist ein ESP32-S1 Single Core verbaut! Da benötigt ihr das Image tasmota32solo1.bin / tasmota32solo1.factory.bin.

oder mit PoE (Power over Ethernet) ~18€

  • WARNUNG: Nicht geeignet ist der Shelly 1 Pro / Pro 3EM / 3EM
    Das Problem bei diesen Shellys ist, dass die TX, RX, GND, 3.3V Schnittstelle an der Seite, die man für den Lesekopf ja bräuchte, nicht galvanisch vom Netz getrennt ist. Falls man dort dann seinen Lesekopf anschließen würde, liegt die volle 230 V Netzspannung an. Bei Berührung kann dies tödlich enden!

 

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. Externer Link zu Google Drive.

 

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. Trotzdem biete ich speziell angepasste Images zusätzlich an. Ich habe diese in extra Ordner gepackt. Wenn euch etwas fehlen sollte, dann könnt ihr euch eine eigene Version bauen (siehe Punkt 6). Oder fragt in den Kommentaren.

ältere

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

ESP32 (S1, S2, S3, C3 ):

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 (+PV Script) mit Anzeige der Netzeinspeisung (Monatsansicht). Dabei handelt es sich um ein großes Tasmota Skript, das ihr noch zusätzlich via TasmotaScriptEditor (oder ohne Kommentare in den Web Script Editor einfügen) 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.

- Im Skript sind optionale Inhalte deaktiviert (auskommentiert mit ";" am Anfang der Zeile). Zum Aktivieren das Semikolon entfernen. Es gibt folgende Optionen:

  > Werte (Leistung) im 4h/24h-Diagramm begrenzen. Optional auch über ein Schieberegler. Sucht im Skript nach "vn" um die Stellen zu finden, die aktiviert werden müssen.

  > Seite automatisch aktualisieren. Sucht nach "Auto reload" im Skript.

  > Schalte einen 2. ESP (Verbraucher) bei Netzeinspeisung. Suche nach "swesp" im Skript.

  > Tages, Monats, Jahreswerte via MQTT übertragen. Suche nach "publish" im Skript.

  > Einfacher Säulenchart darstellen. Suche nach "Saeulenchart" im Skript.

  • Tasmota Script Google Chart SML (01.01.2025) github
    Hinweis: Wenn ihr mein Script bearbeitet um eure SML Descriptor Zeilen einzufügen, denkt an die korrekte Reihenfolge: Die Zeile 1. ist die Leistung (sml[1]), 2. Energie vom Netz (sml[2]), 3. Energie ins Netz (sml[3]). Folgende weitere Scripte findet ihr hinter dem Link:
    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 SML Script + Chart für 1-Richtungszähler und PV (
    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.

 


 

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):
     →  → 
    ESP32 und Develop wählen. Factory Image auswählen, Haken setzen, 0x0 ins Kästchen eintippen, 4. bis 6. sollte bereits so eingestellt sein, COM Port wählen, zuerst auf ERASE drücken (zur Sicherheit um alles zu löschen inkl. config) und dann auf START. In einer Konsole sollte nun der Fortschritt zu sehen sein. Im Fenster Detected Info seht ihr euren ESP. Hat alles geklappt sollte im schwarzen Konsolenfenster "is stub and send flash finish" stehen.

Tasmota ist nun auf eurem ESP. USB-Kabel vom PC und ESP trennen und weiter zum nächsten Schritt.

 

4. USB-Ladegerät/Netzteil mit dem ESP verbinden ... ESP8266/32 müsste nun starten und evtl. blinken

5. via Handy auf den vom ESP erstellten Tasmota Hotspot verbinden und dort das WLAN einrichten

6. Nun über einen Webbrowser auf den ESP zugreifen, der sich ja nun in eurem WLAN Netz. befinden sollte. Die IP könnt ihr über euren Router herausbekommen. Z.b. bei der FritzBox unter Mesh oder Netzwerkübersicht müsste der ESP mit den Namen Tasmota-xxxx auftauchen. Adresse könnte also lauten http://192.168.178.31.

7. Habt ihr das geschafft, klickt ihr als nächstes auf Configuration -> Configure Module und wählt ein Modul aus. Beim ESP8266 "Generic (0)". Bei den verschiedenen ESP32 Boards je nachdem welches ihr habt euer Modul z.B. ESP32C3. Findet ihr nicht euren ESP in der Liste, dann einfach Generic (0).

8. Jetzt wechselt ihr zur Hauptseite und dann Consoles -> Edit Script und setzt den Haken bei "Script enable".

9. Stromversorgung des ESPs trennen und den IR-Lesekopf mit dem ESP verdrahten, falls ihr keinen All-In Lesekopf gekauft habt (welchen GPIO? Siehe ESP8266ESP32Hier gibt es noch eine Infoseite). Den Schritt könnt ihr aber auch später machen, nachdem ihr das Script übertragen habt. Ich würde aber nun alles verbinden und den Lesekopf an den Zähler anbringen. Habt ihr den fertigen Hichi Lesekopf, dann braucht ihr diesen ja nur an den Zähler heften, mit Strom versorgen und das Script (das sind die nächsten Schritte) übertragen/eingeben. Später im Script müsst ihr die verwendeten GPIOs eingeben. Siehe Kapitel 4d zur Erklärung welche GPIO Pins ihr nehmen könnt/dürft.

 

Falls ihr kein kompliziertes Smart Home System wie Home Assistant habt/braucht bzw. ihr einfach nur die Stromzähler Werte (+Liniendiagramme/Graphen) lokal auf eurem ESP abrufen wollt, dann springt weiter zum Tasmota Script!

 

(4b) Tasmota Einstellungen für euer Smart Home System (z.B. Home Assistant)

Configuration -> Configure MQTT (die Tasmota HA Integration nutzt auch MQTT!):

  • Host = Die IP eures Smart Home Systems, auf dem der MQTT Broker laufen wird
  • Port = 1883
  • User = mqtt (Benutzername des extra für mqtt angelegten Nutzers)
  • Passwort = mqtt1 (Passwort des Benutzers "mqtt")
  • Topic = MT175 (oder wählt selbst einen Namen)
  • Full Topic = %prefix%/%topic%/

Main Menu -> Console:

  • Wenn ihr Home Assistant habt und die Tasmota Home Assistant Integration nutzen wollt müsst nicht nichts ändern, da SetOption19 bereits auf 0 eingestellt ist
  • Habt ihr ein anderes System oder wollt die Integration nicht nutzen, dann müsst ihr in die Console "SetOption19 1" eintippen (ohne "). Dadurch verwendet ihr ganz normal MQTT.

 

(4c) Tasmota SML Script Beispiele (ohne Google Charts usw)

Jetzt müsst ihr das SML Skript zum Auslesen eures Zählers auf den ESP übertragen. Dazu geht ihr auf Consoles -> Edit Script. Zuvor habt ihr ja das Skript bereits aktiviert. Jetzt kopiert euch eins der folgenden Skripte und fügt es einfach in dem Fenster ein. Zuvor alles aus dem Fenster löschen! Klickt nun erstmal auf Save. Weiter unten geht's weiter!

  • Wenn ihr mehr wollt, also richtige Verbrauchsdiagramme, dann müsst ihr zum Punkt (4f) springen. Das Skript müsst ihr aber dann trotzdem anpassen (4d.

 

Für alle anderen Zähler geht auf diese Seite und scrollt nach unten. Dort findet ihr SML Beispiele für euren Zähler. Wenn ihr mein Google Chart Skript verwenden solltet, dann achtet bitte auf die Reihenfolge der Zeilen mit 1,77.. beginnend. Jede Zeile mit 1,77... erzeugt eine neue Variable im Skript "sml[x]", x = 1-n. z.B. sml[1] ist in meinem Skript die Leistung in W. sml[2] der Verbrauch in kWh. Wenn ihr die Reihenfolge anders habt, dann kommen die Diagramme durcheinander (nur wenn ihr mein Google Chart Script verwendet).

 

 

Eine detaillierte Beschreibung der einzelnen Zeilen findet ihr unter den Scriptbeispielen (scrollt etwas runter)!

 

 

 

Um das Skript an euren Zähler und an eure ESP Hardware anzupassen müsst ihr i.d.R. nur die Zeile +1,14,s,16,9600,MT175 anpassen. Dazu scrollt weiter runter zu (4d).

 

Hier in den Beispielen bekommt ihr anschließend 3 Werte aus dem Stromzähler (falls das euer Zähler unterstützt):

  • momentane "Leistung" W (Power_curr), alle 3 Phasen zusammen
  • Verbrauchte Leistung "elektrische Arbeit/Energie" kWh (Total_in)
  • ins Netz eingespeiste "elektrische Arbeit/Energie" kWh (Total_out)

Wenn ihr noch mehr Werte haben möchtet, dann schaut hier nach. Dort steht z.B. bei MT175 - Leistung (Momentan) = 1-0:16.7.0*255. Jede Zahl müsst ihr nun in Hex Code umwandeln (am besten mit dem Windows Taschenrechner im Programmierermodus). Aus der Zahl von eben wird dann 01 00 10 07 00 FF (Striche, Punkte und * weglassen). Davor kommt nun die 77 07. Hinter dem FF ein @1 (Skalierung) usw. Für eine genaue Beschreibung des Scriptes siehe Hilfeseite Tasmota SML.

 

Wenn ihr nur erstmal testen möchtet ob der Lesekopf korrekt arbeitet und Daten ankommen, dann fügt das Skript wie bereits beschrieben ein, speichert und aktiviert ist. Aber die Zeile(n) mit 1,SML-Code@xxx weglassen. Nun scrollt ihr etwas runter zu (4e). Denkt daran den korrekten GPIO Pin anzugeben!

 

(4d) SML Scripterklärung (Descriptor)

>D = a valid script must start with >D in the first line

>B = Declare >B (boot) section to inform the interface to read the meter descriptor sensor53

=>sensor53 r

>M 1 = Declare >M section with the number of connected meters, in this case only 1

 

+1,3,s,16,9600,MT175,1

= 1. Zähler (Smartmeter) Meter Definition

3 = GPIO 3 . Hier könnt ihr den Pin ändern, an dem ihr das RX Signal des Lesekopfes angeschlossen habt. Generell sollte man einen echten Hardware RX-Pin verwenden, da es bei einem anderen Probleme geben könnte (z.B. wird dann nur noch 8N1 Serial Format unterstützt). Siehe Hinweis (1) zu Software Serial Support. Dann müsst ihr nachschauen, welche Pins bei eurem ESP Modul heraus geführt werden: ESP8266, ESP32Hier gibt es noch eine Infoseite. Wenn euer ESP Modul nicht dabei ist, googelt einfach nach "ESP-xxxx + pinout". Generell solltet ihr die Finger von GPIO0, 2 und 15 lassen, da sie zum Booten des ESPs wichtig sind. Wenn ihr auch den TX Pin benötigt, um euren Stromzähler z.B. vorher aufzuwecken, dann solltet ihr echte TX/RX Pins verwenden. Unter Tasmota -> Configuration -> Configure Module muss dann der GPIO None eingestellt sein (ist Standard). Wenn ihr die Pins ändert, müsst ihr ggf. neustarten. Ihr dürft alle GPIOs verwenden, die euer ESP Board anbietet.

s = SML binary coding

16 = 16 = Werte werden Median gefiltert = geglättet. Könnt ihr auch auf 0 ändern

9600 = Baudrate eures Stromzählers. Beim MT175 ist dieser auf 9600baud eingestellt

MT175 = Name des Stromzählers. Wird später in HA angezeigt (nur 6 Zeichen!)

1 = GPIO 1 - Sendediode, wenn ihr eine habt. Wenn nicht kann ",1" entfallen. ! Wenn euer Lesekopf eine hat und diese an ein Pin geht, solltet ihr den GPIO angeben (siehe Kapitel 2). Verwendet hier auch generell nur Hardware TX-Pins. Siehe Hinweis (1).

# = Put at the end to terminate M section of the script

; = Use to comment lines in the script

 

(1) Falls ihr keine Hardware RX/TX-Pins auf eurem ESP32 zur Verfügung habt, dann könnt ihr auch andere GPIOs verwenden. Dazu muss die Firmware aber mit "USE_ESP32_SW_SERIAL" kompiliert werden und vor dem Pin muss ein "-" (siehe auch tasmota SML Seite). Meine erstellten Firmwares hier haben ich ohne kompiliert. Ich werde aber in Zukunft immer mit SW_SERIAL Support kompilieren.

 

Meter Definition:

+<M>,<rxGPIO>,<type>,<flag>,<parameter>,<jsonPrefix>{,<txGPIO>,<txPeriod>,<cmdTelegram>}

 

Meter Metrics:

<M>,<decoder>@<scale><offs>,<label>,<UoM>,<var>,<precision>
<precision> = number of decimal places. Add 16 to transmit the data immediately. Otherwise it is transmitted on TelePeriod only.

 

Mit Hilfe dieser sehr nützlichen Seite könnt ihr das SML Skript (Desriptor) an euren Zähler anpassen!

  

(4e) Wichtig! TESTEN OB DATEN ANKOMMEN

In der console "sensor53 d1" eingeben. Wenn alles richtig einstellt und verdrahtet wurde erscheint jetzt viel Hex Code und ihr könnt weitermachen. Wenn nicht müsst ihr evtl. eure Verdrahtung prüfen, den Auslesekopf drehen usw. An welchen GPIO Pin des ESP habt ihr euren Lesekopf angeschlossen (z.B. TX Lesekopf -> RX Pin ESP. Gilt nicht beim Lesekopf von Hichi. Dort muss TX an TX Pin).

Nach dem Testen "sensor53 d0" eingeben. Den empfangenen Code könnt ihr nützlicherweise auf dieser Seite entschlüsseln (Seite erstellt von dem creationx Forum User ixs).

 

(4f) Tasmota Google Chart Script (Liniendiagramm/Graph)

Siehe Download oben! Wenn ihr ein ESP8266 verwendet, dann könnt ihr dieses Skript nicht einfach wie oben über "Consoles -> Edit Script" einfügen und speichern, da der 8266 zu wenig RAM hat. Dafür braucht ihr ein externes selbstgeschriebenes Tool namens Tasmota ScriptEditor (Wichtig: Vorher müsst ihr in Windows "Erweiterungen bei bekannte Dateitypen ausblenden" deaktivieren). Dieser entfernt auch automatisch alle Kommentare und Leerzeichen, sonst würde das Skript nicht in den Speicher passen. Es ist auch zu beachten, dass ihr die korrekte Tasmota Firmware haben müsst, die ein großes Skript mit 6200 (8192 V12.4) Zeichen erlaubt! Die passende Firmware findet ihr oben bei den Downloads. Es ist immer für den Standard ESP8266 mit 1 MByte Speicher (oder 4MB) kompiliert.

 

Kurzanleitung Script mit dem Editor übertragen:

  • Geht auf die Tasmota Weboberfläche eures ESPs und aktiviert jetzt schonmal die Script Funktion: Consoles -> Edit Script -> Haken setzen bei "Enable Script"
  • Ladet euch den Editor herunter und entpackt diesen irgendwo hin (z.B. Desktop)
  • öffnet den ScriptEditor (ScriptEditor.app\Contents\Windows\ScriptEditor.exe) und ladet das Script über File -> Open (z.B. Tasmota SML Script + Chart + PV.txt)
  • Nun öffnet sich ein neues Fenster mit dem Script
  • Ändert die IP oben auf die IP eures ESPs z.B. IP=192.168.178.31
  • Scrollt runter zu ;-- SML -- bzw. >M 1
  • Passt den SML Descriptor an euren Stromzähler an (siehe Kapitel 4d)
  • File -> Save
  • Nun könnt ihr das Script an euren ESP mit Tasmota übertragen: Window -> Run
  • Es sollte ein Fenster mit einer Bestätigung erscheinen, andernfalls versucht es nochmal
  • Nun ist das Script auf eurem ESP und sollte auch sofort ausgeführt werden

Wenn ihr das Skript übertragen habt, könnt ihr nicht mehr über "Consoles -> Edit Script" an das Skript kommen oder editieren, da wie gesagt der RAM zu klein ist um das Skript darzustellen. Für Änderungen oder Updates müsst ihr immer über den Tasmota ScriptEditor gehen. Ich habe durch Zufall rausgefunden, dass man nun das Script doch über den internen Script Editor nachträglich bearbeiten kann! Wurde wohl irgendwann mit Tasmota 13.4.0 geändert. Mit 13.3.0 gehts jedenfalls noch nicht.

 

Sehr wichtig: Ihr müsst vorher die Skriptfunktion unter "Consoles -> Edit Script -> script enable" aktivieren, ansonsten könnt ihr nach dem Übertragen des Skriptes nichts sehen. Falls ihr strikt diese Anleitung befolgt, sollte das aber bereits geschehen sein! Falls ihr es doch vergessen habt könnt ihr über die Console das Skript via "script 1" ebenfalls aktivieren. Außerdem müsst ihr das Skript vorher auf euren Zähler und euren verwendeten RX Eingang anpassen, siehe Punkt (4d).

  • Verwendet ihr ein ESP32, dann könnt ihr theoretisch das Skript 1:1 über "Consoles -> Edit Script" einfügen. Allerdings müsst ihr einmal die ganzen Kommentare zu Beginn des Scriptes entfernen. Ansonsten passt es nicht rein. Dafür könnt ihr aber auch wieder den ScriptEditor verwenden. Dazu das heruntergeladene Script mit dem Editor öffnen und auf Window -> Export to documents folder. Dann findet ihr das bereinigte Script hier: C:\Users\<benutzer>\Documents\compressed_script.txt. Habt ihr das gemacht, dann kopiert und fügt das Script ein. Schaut ob ganz unten auch wirklich alles eingefügt wurde. Ganz unten muss ; -- END SCRIPT --; stehen!! Allerdings gab es nun einige User, bei dem das Script (vor allem das für den 1-Richtungszähler) dann nicht korrekt funktioniert. Nachdem sie das Script über den externen Tasmota ScriptEditor übertragen hatten, funktionierte alles. Ich schätz mal der interne WebEditor hat Probleme bei zu vielen Leerzeichen. D.h. ihr müsstet alle Leerzeichen vor den Befehlen entfernen, um wirklich sicher zu gehen. Näheres dazu im FAQ 4.

Im Script müsst ihr an der Stelle mit ;-- SML -- den SML Descriptor für euren Zähler anpassen. Folgt dazu der Anleitung weiter oben. Beim Google Chart Script es es aber wichtig, dass ihr die Reihenfolge nicht ändert. In der ersten Zeile muss die Leistung, in der zweiten der Netzbezug und in der dritten die Netzeinspeisung (nur beim +PV Script) eingegeben werden. Also so z.B.:

>M 1 

+1,14,s,16,9600,SML

1,77070100100700ff@1,Leistung,W,Power_curr,0

1,77070100010800ff@1000,Verbrauch,KWh,Total_in,2

1,77070100020800ff@1000,Netzeinspeisung,KWh,Total_out,2 (nur beim +PV Script)

 

Auch wichtig: Damit der Tagesverbrauch und die Diagramme auch die korrekten Werte anzeigen muss nach dem Start (Auf eurer Tasmota Seite oben muss der korrekte Zählerstand dargestellt werden) folgendes hintereinander in der Console eingegeben werden:

 

Script mit (PV):

backlog script >dval=EnFrGrid; script >dval2=EnToGrid; script >dcon={0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}; script >dprod={0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0};
backlog script >mval=EnFrGrid; script >mval2=EnToGrid; script >mcon={0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0};
script >=#sday
script >svars

 

Script ohne (PV):

backlog script >dval=EnFrGrid; script >dcon={0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0};
backlog script >mval=EnFrGrid; script >mcon={0 0 0 0 0 0 0 0 0 0 0 0};
script >=#sday
script >svars

  

Dadurch werden die korrekten Werte gesetzt und die Diagramme auf 0 zurück gesetzt. Nach kurzer Zeit (wenn wieder Daten ankommen) werden auch die Diagramme korrekt dargestellt. Eure Zeitzone und die Zeit sollte natürlich auch korrekt eingestellt sein (siehe Kapitel 4g-11). 

(4g) Tasmota Einstellungen - Sende- und Abrufintervall, Zeitzone und Home Assistant

1. Configure other (Configuration -> Configure Other):

  • MQTT = enabled
  • Device Name = MT175 (oder wählt einen anderen Namen)

2. Sende/Abruf Intervall einstellen (Configuration -> Configure Logging)

  • Telemetry period
    (Wie oft soll der Wert an HA geschickt werden z.B. 60s)

4. Main Menu -> Console:

  • Wenn ihr die Tasmota Home Assistant Integration nutzen wollt müsst nicht nichts ändern, da SetOption19 bereits auf 0 eingestellt ist
  • Wenn ihr verhindern wollt, dass Tasmota rebootet wenn euer WLAN Router mal nicht verfügbar ist dann folgendes eintippen: WifiConfig 5
    (wait until selected AP is available again without rebooting)
  • Falls ihr Probleme mit der Uhrzeit/Zeitumstellung habt, folgendes eingeben:
    • Backlog0 Timezone 99; TimeStd 0,0,10,1,3,60; TimeDst 0,0,3,1,2,120
    • oder lasst euch den Befehl generieren: https://tasmotatimezone.com
  • Skript bezogene Einstellungen findet ihr direkt im Skript ganz oben erklärt (englisch)

 

(4h) Home Assistant Einstellungen (und Energy Dashboard) für Tasmota

-- Ihr braucht für die Tasmota Integration auch immer den MQTT broker! --

1. Für MQTT einen neuen User hinzufügen: Configuration -> People -> Users -> Add User: user = mqtt, password = mqtt (oder wählt einen anderen) 

2. Mosquitto broker Addon hinzufügen. Danach die Mosquitto broker Integration hinzufügen.

3. Tasmota Integration hinzufügen

4. Nun müsste automatisch ein neues Device unter der Integration auftauchen, unter dem Namen, den ihr in Tasmota vergeben habt. Bei mir MT175. (siehe Bilder unten)

5. Jetzt habt ihr ein neues Device und die Entities! Unter der Integration Tasmota.

6. Allerdings sind die Werte alle Einheitenlos und ohne richtiges Icon. Das könnt ihr manuell über ein paar Einträge in der configuration.yaml machen. Ausführliche Anleitung hier: HomeAssistant - Customizing entities . Hier müsst ihr eure Entities hinzufügen und ein paar wichtige Sachen vorgeben. Nutzt dazu das Addon FileEditor! Die Entity Namen müsst ihr ggf. noch anpassen, je nachdem wie ihr die Namen im Tasmota Script unter SML (>M) vergeben habt. Den Neustart danach nicht vergessen! Wichtig: Achtet auf auf die richtige Einrückung (2 Leerzeichen)

 

#configuration.yaml
homeassistant:
customize:
sensor.tasmota_mt175_power_curr:
device_class: power
unit_of_measurement: 'W'
sensor.tasmota_mt175_total_in:
device_class: energy
unit_of_measurement: 'kWh'
state_class: total_increasing
sensor.tasmota_mt175_total_out:
device_class: energy
unit_of_measurement: 'kWh'
state_class: total_increasing

 

Oder wenn ihr dies in eine ausgelagerte customize.yaml einfügen wollt:

#configuration.yaml
homeassistant:
customize: !include customize.yaml
#customize.yaml
sensor.tasmota_mt175_power_curr:
device_class: power
unit_of_measurement: 'W'
sensor.tasmota_mt175_total_in:
device_class: energy
unit_of_measurement: 'kWh'
state_class: total_increasing
sensor.tasmota_mt175_total_out:
device_class: energy
unit_of_measurement: 'kWh'
state_class: total_increasing

  

Diese Angaben sind wichtig, da ihr sonst diese Entities nicht im Energy Dashboard (Settings -> Dashboards -> Energy) auswählen könnt (siehe auch nächstes Kapitel):

 

 

Wenn ihr eueren Stromzähler-Wert (kWh) da immer noch nicht auswählen könnt, dann müsst ihr einmal die bisherige Aufzeichnung des Wertes (Rekorder) löschen/purgen, da HA diesen Wert eine zeitlang "einheitenlos" aufgezeichnet hat und das Energy Panel damit Probleme hat. Dazu geht ihr auf Developer Tools -> Statistics -> sucht den Wert. Da sollte dann schon ein Hinweis/Problem stehen. Klickt auf Problem lösen und setzt die Statistik zurück. Danach könnt ihr den Wert im Energy Dashboard auswählen

 

Danach habt ihr solch eine schöne Anzeige (ich habe auch eine PV-Anlage):

 

 

Optional: Wenn ihr eine extra Tages, Wochen, Monats, Jahresverbrauchsanzeige benötigt (und das nicht über das Energy Panel ablesen wollt):

utility_meter:
mt175_daily_energy:
source: sensor.mt175_mt175_total_in
cycle: daily
mt175_weekly_energy:
source: sensor.mt175_mt175_total_in
cycle: weekly
mt175_monthly_energy:
source: sensor.mt175_mt175_total_in
cycle: monthly
mt175_yearly_energy:
source: sensor.mt175_mt175_total_in
cycle: yearly

 

(5) Zugriff auf Tasmota von Außen / Extern via Handy - VPN/WireGuard

Externe Anleitung von AVM (FRITZ!Box). Habt ihr den VPN Zugang auf dem Router und auf eurem Handy eingerichtet, müsst ihr nur noch die lokale IP-Adresse von Tasmota (eurem Lesekopf bzw. dem ESP) eingeben.

 

(6) Tasmota Firmware selbst erstellen (TasmoCompiler/GitPod)

1. Geht auf https://github.com/benzino77/tasmocompiler#how-to-start-using-tasmocompiler oder direkt auf https://gitpod.io/#https://github.com/benzino77/tasmocompiler (Github Account notwendig).

 

Für etwas erfahrene User empfehle ich GitPod zu verwenden. Ihr müsst euch dann einfach nur noch für eine Version entscheiden und auf den Link klicken und dann zu Punkt 4. springen. In der Datei user_config_override.h im Ordner tasmota ein dann die Zeilen aus den Kästen unter Punkt 4 eingeben.

 

Development Branch: https://gitpod.io#https://github.com/arendst/Tasmota/tree/development

Master Release: https://gitpod.io#https://github.com/arendst/Tasmota/tree/master

 

2. Es sollte sich nach dem Login und Zugriff erlauben zwei neue Tabs öffnen. Öffnet den TasmotaCompiler Tab und geht die Punkte 1-2 durch. Wer will kann bei Punkt 2. bereits seine WLAN SSID vorgeben. Ansonsten erstellt Tasmota ein Hotspot auf den ihr euch verbinden und dann die SSID einstellen könnt.

3a. Bei Punkt 3. "Features" wählt folgende Optionen aus (andere deaktivieren)

  • Home Assistant
  • Script
  • Web interface

Oben wählt ihr euren ESP aus. ESP8266 Generic habe ich gewählt (Standard China Teile).

 

3b. Wenn ihr einen ESP32 habt dann müsst zusätzlich das folgendes aktivieren (Standardmäßig bereits aktiviert):

  • Berry-Skripte
  • Ethernet (optional, falls ihr euren ESP via LAN-Kabel verbinden wollt)

Oben wählt ihr euren ESP aus, z.B. ESP32 Generic beim D1 mini

 

4. Folgende Zeilen bei "Custom Parameters" einfügen (für Gitpod Benutzer die Zeilen in der user_config_override.h eingeben):

#ifndef USE_SML_M
#define USE_SML_M
#endif

Mit diesen #defines (Treiber/Features) kompiliere ich via Gitpod die hier angebotenen Images:

 

Wenn ihr nicht den TasmoCompiler verwendet, sondern GitPod (oben bei 1. erwähnt), dann müssen die #defines in die user_config_override.h. Dann könnt ihr im Terminal Fenster den Befehl platformio run -e tasmota (ESP8266) bzw. platformio run -e tasmota32 (ESP32) eingeben, um das Image erstellen zu lassen. Wenn ihr ein ESP8266 mit 4M+ Speicher habt, dann müsst ihr noch in der Datei platformio_override.ini bei folgenden Zeilen das ; entfernen:

 

;board = esp8266_4M2M

;board_build.f_cpu = 160000000L

;board_build.f_flash = 40000000L

 

Im Ordner build_output\firmware\ findet ihr dann die Images.

 

TasmoCompiler:

5. Wählt die Sprache und die Version (nicht Development) aus

6. Compile! 

 

(7) Tasmota Firmware Flashen/Updaten (Firmware Upgrade)

Vor einem Update (Upgrade) solltet ihr unbedingt die Daten aus den Diagrammen sichern (falls ihr das Google Chart Script verwendet). Folgt dazu der Anleitung im FAQ. Falls die Daten dann nach einem Update weg sein sollten könnt ihr sie wieder herstellen. Ist dies geschehen lädt ihr euch einfach das neuste Image herunter (nicht entpacken). Dann geht ihr auf "Firmware Upgrade" -> "Upgrade by file upload" und wählt die eben heruntergeladene Datei aus. Nachdem Übertragen startet Tasmota neu. Es kann nun passieren, dass euer Script nun weg ist (aber eigentlich nicht). Das müsst ihr dann einfach wieder mit dem ScriptEditor übertragen.

 

(8) Platzhalter

 

 

(9) Bei PV-Stromüberschuss Verbraucher einschalten (via WLAN Tasmota Steckdose)

Wenn man ein Balkonkraftwerk (BKW) oder eine PV-Anlage hat und so wenig wie möglich ins Netz einspeisen möchte (weil es dafür z.B. kein Geld gibt), dann gibt es mit Tasmota Script die Möglichkeit, eine (oder mehr) WLAN-Steckdose (ebenfalls mit Tasmota) zu steuern und somit eine Last zuzuschalten (z.B. Poolpumpe).

 

Was wird dafür alles benötigt?

  • ESP mit Tasmota zum Auslesen eures Zählers (also das, was in den vorherigen Kapiteln beschrieben wird)
  • WLAN-Steckdose (mit oder ohne Strommessung) auf der Tasmota installiert ist / werden kann (Tasmota Steckdose [eBay Werbung]). Bei amazon gibt es z.B. GHome EP2-A Tasmota tauglich!
    WICHTIG: Manche Steckdosen lassen sich leider nicht mit Tasmota flashen. Am besten vorher den Händler fragen. In meinem Fall habe ich nämlich die GHome EP2 Steckdose auf Amazon gekauft. Nach dem extrem schwierigen Öffnen der Steckdose kam kein ESP sondern ein Realtek Chip zum Vorschein! Auf diesem kann kein Tasmota installiert werden!
  • Tasmota auf der Steckdose installieren (falls nicht bereits vorinstalliert) via Tuya Convert. Ich habe einfach mein RPi4 genommen, Raspberry Pi OS Legacy 32Bit auf eine neue SD Karte übertragen lassen und dann der Anleitung gefolgt. Wichtig ist, dass der RPi via LAN mit eurem Netzwerk verbunden ist (dann noch das WLAN Land auf DE einstellen: raspi-config). Via SSH müsst ihr eigentlich nur die folgenden Befehle eingeben:
    git clone https://github.com/ct-Open-Source/tuya-convert
    cd tuya-convert
    ./install_prereq.sh
    ./start_flash.sh
    Am Ende fragt euch das Script ob Tasmota Lite installiert werden soll. Das tut ihr, danach könnt ihr via Firmware Upgrade auf die neuste Version updaten. Ihr braucht nicht mein Image von dieser Seite!
    Dann noch die korrekte Konfiguration (Template) einstellen. Bei der EP2-A (GHome) Steckdose z.B. das hier.
  • Tasmota Image (ESP8266 1M/4M oder ESP32) für den ESP mit IR-Lesekopf, der an eurem Stromzähler hängt
  • ein passendes Tasmota Script auf dem ESP mit IR-Lesekopf, der an eurem Stromzähler hängt

Wenn ihr mein Google Chart Script für den ESP mit IR-Auslesekopf verwendet, dann ist die Funktion bereits inkludiert, muss aber noch von euch angepasst werden! Wenn ihr den kleinen ESP8266 (ESP01s) verwendet, müsst ihr dazu leider das Script auf dem PC bearbeiten und wieder neu auf den ESP übertragen (siehe Anleitung Kapitel 4f). 

Ob ihr nun mein Script bereits verwendet oder nicht, die Funktion sollte dann so bei euch aussehen bzw. müsst ihr so einfügen:

 

Tasmota Script (ESP im IR-Lesekopf am Stromzähler) - Beispiel - Ich arbeite noch dran

 

Anpassungen im Script:

  • In meinem Google Chart Script sind einige Stellen mit ";" auskommentiert. Das ";" muss entfernt werden damit es funktioniert.
  • Dann müsst ihr euren Stromzähler SML Descriptor korrekt eingeben (siehe separate Anleitung hier auf der Seite.
  • Die IP eurer WLAN-Steckdose anpassen (192.168.0.50).
  • Leistungsschwellwerte anpassen. Momentan wird die Steckdose bei einer Netzeinspeisung von mehr als 300 W (Leistung = -300) eingeschaltet und bei einem Netzbezug von über 100 W wieder ausgeschaltet. Die vorgegebenen Werte könnte man z.B. für eine kleine Poolpumpe verwenden.

Funktion testen:

Die ext. Steckdose kann man über die Tasmota Console (ESP im Lesekopf) über folgenden Befehl schalten:

  • websend [192.168.0.50] power 1
  • websend [192.168.0.50] power 0

 

(10) Tasmota Script Variable (z.B. Tageseinspeisung) an Home Assistant senden

Mein Google Chart Script zeigt nicht nur hübsche Graphen an, sondern errechnet ja auch den Tages- und Monatsverbrauch sowie die Tages- und Monatseinspeisung. Standardmäßig sendet Tasmota aber nur die direkt via SML empfangenen Stromzählerwerte. In meinem Fall (MT175) also nur Leistung, Verbrauch und Einspeisung. Wenn man nun noch mehr in Home Assistant anzeigen lassen möchte, muss man folgendes tun. Wenn ihr mein Google Chart Script verwendet, dann müsst ihr nur nach publish suchen und das Kommentar Zeichen ";" entfernen. Das Script dann neu hochladen und dann werden die Werte an HA gesendet. Danach muss man die Werte noch in HA einbinden. Das kann man entweder in der configuration.yaml machen oder einfach ein "MQTT config topic" an euren MQTT Broker senden. Dafür nimmt man das Addon MQTT Explorer in HA. Ich beschreibe jetzt erstmal kurz wie man ein Wert in Tasmota an HA sendet und am Ende folgt die Anleitung zum Einfügen des Sensors in HA:

  1. Im Tasmota Script in der Sektion >S (oder >T) folgendes einfügen (Beispiel aus meinem Script):
    =>publish stat/%topic%/script/consday %2(dcon[day])%
    Tagesverbrauch = frei wählbarer MQTT Name des Sensors 
    dcon[day] = Tasmota Script Variable, in diesem Fall ein Array
    %2(   )%  = nur 2 Dezimalstellen ausgeben
  2. Nun wird jede Sekunde der Tagesverbrauchswert an den MQTT Broker in HA gesendet. Das kann man natürlich auch noch nach Belieben anpassen.
  3. MQTT Explorer Addon installieren und starten. Mit eurem Broker verbinden. Nun sollte links eine Liste mit allen Topics sein. Dort sucht ihr nach stat -> tasmota_xyz -> script: consday = xxx
    Wenn nicht, dann habt ihr im Script was falsch gemacht. Oder wartet 60s (bei mir im Script wird der Wert alle 60s übertragen).
  4. Der Wert wird aber noch nicht in eurem Tasmota Device angezeigt. Dafür wird noch ein config Topic benötigt. Das könnt ihr entweder von Tasmota aus senden (lassen) oder einfach im MQTT Explorer. Dazu klickt auf das Topic homeassistant -> sensor. Rechts unter Publish ist der Pfad, den ändert ihr nun in:
    homeassistant/sensor/mt175/consday/config            mt175 = frei wählbarer Name z.b. Stromzähler,   consday = Abkürzung für "Consumption Day", frei wählbar
  5. Darunter in das Feld fügt ihr nun die Sensor Config ein. Beispiel:
  6.                 {
      "name": "Stromzähler Tagesverbrauch",
      "uniq_id": "mt175_dayconsumption",
      "dev_cla": "energy",
      "stat_t": "stat/tasmota_1AFAD3/script/consday",
      "unit_of_meas": "kWh",
      "sug_dsp_prc": "2",
      "dev": {
        "connections": [
          [
            "mac",
            "A02xxxxAFAD3"
          ]
        ]
      }
    }
  7. Das alles sind MQTT Configuration Variables (ich habe Abkürzungen verwendet, weil ich das ganze eig ins Tasmota Script bauen wollte). Ihr könnt hier nach belieben weitere einfügen, die euren Sensor noch besser beschreiben können. Folgende Variablen müsst ihr noch ändern:
    name = So wird in HA euer Sensor heißen + Device Prefix. Bei mir wäre das also sensor.mt175_stromzahler_tagesverbrauch
    A02xxxxAFAD3 = Tasmota MAC-Adresse
    tasmota_1AFAD3 = Tasmota Topic (letzter Teil der MAC)
    uniq_id = in HA verwendete eindeutige ID (z.B. mt175_dayconsumption)
    usw
  8. Nun noch wichtig, das Haken setzen bei retain ! Sonst ist die config nach einem Neustart weg.
  9. Publish drücken und schon findet ihr den neuen Wert unter eurem Tasmota Device!
  10. Wollt ihr das Entity wieder löschen, dann einfach die Sensorconfig via MQTT Explorer löschen.

Hier findet ihr nochmal alles etwas detaillierter und in Englisch.

(11) Nützliche Sachen für Home Assistant

(11aZweirichtung Leistungssensor [W] (positiv/negativ) in zwei Sensoren aufteilen (from_grid, to_grid):

Hier wird eine Methode beschrieben um aus einem einfachen Leistungssensor zwei Sensoren für Home Assistant zu erstellen. Ein Sensor (Entity) nur für negative (ins Netz eingespeist) Leistung und der andere für positive (aus dem Netz bezogen). Habt ihr einen von folgenden Fällen, dann könnt ihr die Methode einfach umsetzen:

  • ihr habt keinen digitalen Stromzähler und nutzt deshalb irgendein anderes Leistungsmessgerät, das ein Leistungssensor (Entity [W]) in HA bereitstellt
  • ihr habt einen Stromzähler, der aber nur die aktuelle Leistung [W] (positiv oder negativ) an euch sendet

Wenn euer Zähler die Energie vom Netz und ins Netz an euch senden kann, dann braucht ihr das natürlich auch nicht! Die Sensoren könnt ihr dann direkt ins HA Energiesystem einbinden.

 

1. Erstellt in eurer configuration.yaml (oder in eurer sensor.yaml falls vorhanden) via dem HA Addon FileEditor folgende Zeilen. Den Namen "sensor.powersensor" müsst ihr gegen euren Leistungssensor tauschen, der in beide Richtungen (positiv/negativ) messen kann. Den Namen "mynewsensor_xx" könnt ihr natürlich frei wählen.

 

 

2. HA neustarten! Nun hat man zwei neue Sensoren/Entities "mynewsensor_positive" und "mynewsensor_negative". Der eine zeigt nur etwas an, wenn die Leistung vom Sensor "sensor.powersensor" positiv ist. Der andere wenn die Leistung negativ ist. Aus den beiden Sensoren kann man nun via "Rieman Sum Integration" zwei Energiezähler Sensoren/Entities machen (wieder configuration.yaml, direkt darunter):

 

 

3. Nun hat man man wieder zwei neue Sensoren/Entites. Sie zählen die verbrauchte bzw. erzeugte Energie/Arbeit [kWh]. Bevor man sie aber in das HA Energiesystem einbinden kann muss noch etwas in der customize.yaml eingefügt werden. Siehe dazu Punkt 4h) Punkt 17 ! Nach einem Neustart könnt ihr die Sensoren in das Energiesystem einbinden.

 

 

(11bLeistungssensor Werte glätten (Peaks unterdrücken)

Falls man einen Leistungssensor hat, der leider ab und zu kleine Peaks erzeugt (z.B. Sonoff mit Tasmota) dann kann man diese filtern/glätten. Es wird ein neuer Sensor/Entity erstellt.

 

(12) Tasmota ohne WLAN sondern über LAN/Ethernet (ESP32)

Was kann man eigentlich machen, wenn kein oder nur sehr schlechtes WLAN in der Nähe des Stromzählers verfügbar ist? Alle ESP8266 benötigen ja zwingend ein funktionierendes WLAN, sonst könnt ihr eure Daten ja nicht abrufen. Auch dafür gibt es eine Lösung und zwar ein ESP32 mit einer LAN-Buchse und die passende Tasmota Firmware + korrekte Einstellungen. Eins vorweg, ich habe es selbst noch nicht getestet!

 

Was benötigen wir? Zuerst natürlich die passende Hardware. Es gibt eine kleine Auswahl an ESP32 Boards mit einer LAN Buchse. Es gibt erstmal generell eine Liste von unterstützten Boards direkt auf der Tasmota Seite. Dort einfach nach einem Board mit LAN Buchse suchen. Ich habe mal zwei passende herausgesucht.

 

12a) Hardware

 

Siehe Kapitel 1. C) !

 

12b) ESP32 Firmware

Habt ihr eure Hardware ausgesucht, müsst ihr die passende ESP32 Tasmota Firmware (natürlich wieder mit SML Support) flashen. Das Image findet ihr im ESP32 Downloadbereich. Eine Anleitung wie ihr das WT32-ETH01 Modul korrekt mit eurem Programmer verbindet findet ihr z.B. hier. Habt ihr alles verbunden könnt ihr der Anleitung im Kapitel 4a) 3. folgen und das Offline Flasher Tool "ESP_Flasher (von Jason2866)" nutzen. Danach den Jumper entfernen und die Stromversorgung des ESPs neu verbinden. Dann normal über den Tasmota Hotspot verbinden und dann mit eurem WLAN verbinden lassen.

Achtung: Auf den neueren Modulen (ESP32-D0WD v1.1 laut Tasmota Info) ist ein ESP32-S1 Single Core verbaut! Da benötigt ihr das Image tasmota32solo1.bin / tasmota32solo1.factory.bin, das ihr ebenfalls im ESP32 Download Ordner findet (erst ab 14.3.0). Habt ihr den ESP32-WROOM könnt ihr das normale ESP32 Image verwenden.

 

12c) Template

Falls ihr mein fertiges ESP32 Image nimmt und den ET32-ETH01 verwendet, dann braucht ihr nur noch das korrekte Modul auswählen unter "Configuration-> Configure Module". Nach einem Reboot ist der ESP32 automatisch mit eurem LAN und WLAN verbunden. 

Habt ihr andere Hardware, dann müsst ihr diese erstmal korrekt via Template einstellen. "Configuration-> Configure Other" ganz oben im Feld dann die Konfiguration für eure Hardware, die ihr auf der Tasmota Seite von eurem ESP32 Board findet, eingeben. Es ist ein langer String mit Zahlen usw. Nach dem Einfügen, Activate anhaken und dann auf Save klicken. Folgt einfach der Anleitung. Ihr könnt dann das eben importierte Template für eure Hardware unter "Configure Modules" auswählen.

 

12d) LAN Verbindung prüfen

Im Hauptmenü unter Information könnt ihr nun sehen, ob ihr korrekt verbunden seid. Wenn ihr das WLAN nicht mehr benötigt könnt ihr es abschalten via Wifi 0 über die Console.

 

 

12e) Optional: LAN Settings

Wenn ihr den ET32-ETH01 verwendet, müsst ihr nichts mehr tun und einfach mit meiner normalen Anleitung oben weitermachen (Kapitel 4).

Falls das LAN nicht funktioniert oder ihr ein anderes Modul habt dann müsst ihr evtl. noch das LAN Modul aktivieren. Tippt dazu folgenden Befehl in die Tasmota Console ein:

 

Ethernet 1

 

Es kann sein, dass ihr noch Wifi 0 eintippen müsst, damit LAN funktioniert. Dadurch schaltet sich WLAN ab und der ESP32 sollte über LAN erreichbar sein! Jetzt könnt ihr hier wieder nach oben scrollen und mit meiner normalen Anleitung weitermachen. Sucht euch einen freien GPIO Pin für den IR-Sensor, verdrahtet alles usw!

 

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

 

 

(13) FAQ und Problemlösungen

  1. Ich möchte ein Firmware Upgrade machen, bleibt das Skript und meine Einstellungen erhalten?
    Ich möchte die aufgezeichneten Daten sichern oder auf einen neuen ESP übertragen

    Beim ESP32 bleibt alles (außer das 4h Diagramm) nach einem Update erhalten. Beim ESP8266 kann es sein (je nach Upgrade), dass das Skript weg ist und neu übertragen werden muss. Ab Tasmota 12.4 klappt dies auch ohne Verlust des Skriptes. Die gespeicherten Verbrauchs/Produktionsdaten bleiben eigentlich immer erhalten. Man sollte sie sich aber lieber einmal manuell notieren in dem man sich in der console die arrays ausgeben lässt und sich die Ausgabe in eine Textdatei kopiert:

    script?var        var = Variable eintragen z.B. mcon für die Monate

    Welche Daten werden in welche Variablen gespeichert:
    Einfache Zähler/Variablen:
    mval (kWh Verbrauchswert am Anfang des aktuellen Monats, wichtig für "Monatsverbrauch")
    mval2 (wie mval aber Produktionswert der PV Anlage falls man eine hat und falls der Zähler dies unterstützt)
    dval (kWh Verbrauchswert am Anfang des aktuellen Tages, wichtig für "Tagesverbrauch")
    dval2 (wie dval aber Produktionswert der PV Anlage falls man eine hat und falls der Zähler dies unterstützt)
    Arrays (komplettes Array anzeigen lassen ohne [ ] z.B. via script?dcon):
    dcon[n] (Verbrauch Monatsdiagramm n=1-31 Tag im Monat)
    mcon[n] (Verbrauch Jahresdiagramm n=1..12 Jan bis Dez, Eingespeist n=13..24, nur bei PV Skript)
    dprod[n] (Eingespeist Monatsdiagramm n=1-31 Tag im Monat, nur bei PV Skript)
    Die Ausgabe ohne [ ] sieht dann so aus:
    {"script":{"mcon":[20,221.17,105.47,148.44,162.11,165.04,177.73,158.2,160.16,148.44,20,167.97]}}

    Ab Tasmota 12 kann man sich das ganze Array auf einmal anzeigen und setzen lassen. Einfach die Klammern [ ] weglassen!

    Wenn dann nach einem Upgrade etwas nicht stimmt kann man die Daten einfach schnell korrigieren: script >var[n]=xxx   z.B. script >mcon[1]=200 damit setzt man für für den Monat Januar 200kWh. Bei mir war es mal so, dass der erste Wert in den Arrays falsch war. Das kann man dann wie eben geschrieben schnell beheben. Falls man das gesamte Array setzen möchte, dann geht das wie folgt. Zuvor hat man sich die Ausgabe des Arrays in der Console in eine Textdatei kopiert. Dann markiert man alle Zahlen innerhalb der [ ] und öffnen dann Suchen&Ersetzen. Nun sucht man nach Komma "," und ersetzt es durch ein Leerzeichen " ". Dann kopiert man alle Zahlen in den Klammern und fügt sie in die console. Es folgt ein Beispiel:

    Kommas entfernen und die Zahlen in die untere Zeile einfügen (Beispiel Array mcon mit PV):
    {"script":{"mcon":[20,221.17,105.47,148.44,162.11,165.04,177.73,158.2,160.16,148.44,20,167.97]}}
    Diesen Befehl dann in die console einfügen (Beispiel Array mcon mit PV):
    backlog script >mcon={20 221.17 105.47 148.44 162.11 165.04 177.73 158.2 160.16 148.44 20 167.97};

    Backup erstellen / Daten auf neuen ESP übertragen, Vorgehensweise:
    Ich mache es immer so. Ich gehe in die Console auf den alten ESP mit den Daten, die ich sichern möchte. Dort gebe ich der Reihe nach folgendes ein und sichere mir die Ausgabe in einer Textdatei.
    script?dval
    script?dval2             (nur wenn ihr das +PV Script habt)
    script?mval
    script?mval2            (nur wenn ihr das +PV Script habt)
    script?yval
    script?yval2             (nur wenn ihr das +PV Script habt)
    script?dcon
    script?dprod            (nur wenn ihr das +PV Script habt)
    script?mcon

    Wie oben geschrieben müsst ihr die Ausgabe dann leicht anpassen (Kommas entfernen z.B. mit Suchen und entfernen via Notepad++) und danach der Reihe nach auf dem neuen ESP eingeben:
    backlog script >dval=22661.3; script >dval2=606.92;
    backlog script >mval=22270.55; script >mval2=606.38;
    backlog script >yval=19001; script >yval2=571;
    script >dcon={10.24 7.09 17.04 41.25 3.44 33.31 16.87 7.26 35.22 10.25 10.45 4.75 7.28 6.71 26.65 10.49 10.9 23.34 7.91 6.16 10.56 7.78 43.42 4.94 12.03 8.73 6.11 3.3 7.16 7.16 0}
    script >dprod={0 0.01 0.04 0.06 0.02 0.04 0.01 0.01 0.01 0 0.03 0.02 0.03 0.02 0.03 0.04 0.02 0.04 0.01 0.01 0.01 0.02 0.01 0.01 0.02 0.01 0 0 0.11 0.08 0}
    script >mcon={561.08 459.91 444.17 222.83 275.88 217.06 352.48 332.41 406.95 -22270.55 492.09 484.72 0.53 4.95 1.96 3.57 7.84 6.73 3.62 3.14 2.54 0 1.34 0.07}   (wenn ihr nicht das +PV Script habt, dann habt ihr hier nur 12 Zahlen).

    Am Ende unbedingt 'script >svars' eingeben!
  2. Es werden keine Werte mehr in meinem Smart Home System angezeigt, speziell die Sensoren (Leistung und Energie) oder im Energy Dashboard von HA
    Das Problem hatte ich einmal nach einem Upgrade und anschließendem Downgrade der Firmware. Bei mir war das Problem das Skript, dass ich dann einmal neu übertragen musste. Danach wurden die Sensoren wieder in der Tasmota Integration aufgeführt. Wenn das bei euch nicht der Fall ist, dann löscht die Einträge in der customize.yaml und geht danach zu den Developer Tools -> Services -> Recorder: Purge Entities und wählt die Sensoren von Tasmota aus. Danach ein Neustart vom System durchführen, Tasmota ebenfalls.
    Wenn eurer Netzbezug (und Einspeisung) nicht im Dashboard auswählbar ist, dann könnte euch diese Hilfe weiterhelfen. Beachtet auch Kapitel 5 meiner Seite!
  3. Die Werte in den Diagrammen werden nach einem Neustart oder Stromausfall nicht geladen
    Hinweis: Die Werte werden automatisch um Mitternacht gespeichert. Manuell kann das via script >svars über die Console gemacht werden. Das 4 Stunden Diagramm wird nicht gespeichert und ist nach jedem Neustart leer!
    Wenn ihr Tasmota erst frisch eingerichtet habt, könnte es helfen, das Skript erneut zu übertragen und die Diagramme einmal zu resetten. Nachdem ihr das Skript übertragen habt könnt ihr die Arrays löschen via Console (siehe weiter unten). Wenn Tasmota bei euch schon etwas länger läuft und bisher auch immer alles nach einem Neustart geladen wurde, könnte, wie oben erwähnt, ein erneutes Übertragen des Skriptes helfen. Hilft das nicht, dann lasst euch die Arrays (Werte der Diagramme) via Console ausgeben: script?dcon (Verbrauch Monatsdiagramm). Für die anderen Diagramme siehe FAQ 1. Jetzt könnt ihr kontrollieren, ob dort überhaupt was drin steht. Wenn nicht, dann hat Tasmota leider euren Speicher geleert. Wenn was drin steht, stimmt was mit dem Skript nicht.

    Diagramme resetten:
    Achtung, das löscht alle eure Daten in den Diagrammen!

    Script mit (PV):

    backlog script >dval=EnFrGrid; script >dval2=EnToGrid; script >dcon={0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}; script >dprod={0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0};
    backlog script >mval=EnFrGrid; script >mval2=EnToGrid; script >mcon={0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0};
    script >=#rst24h
    script >svars

     

    Script ohne (PV):

    backlog script >dval=EnFrGrid; script >dcon={0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0};
    backlog script >mval=EnFrGrid; script >mcon={0 0 0 0 0 0 0 0 0 0 0 0};
    script >=#rst24h
    script >svars

    Dann fügt testweise manuell etwas ins Array ein via Console: script >mcon[1]=200
    Im Jahresdiagramm sollte nun für Januar 200kWh erscheinen. Dann via Console: script >svars
    Und dann mal Stecker ziehen und schauen ob die Werte für Januar wieder geladen werden.
  4. Die Diagramme werden nicht korrekt angezeigt oder das Skript läuft nicht einwandfrei
    Entweder habt ihr dann nicht mein fertiges Image auf euren ESP geflasht oder falls ihr das Image selbst erstellt habt nicht die erforderlichen #includes hinzugefügt. Oder ihr habt etwas im Skript gelöscht oder geändert. Am besten einfach mein Image nehmen und dann das Skript mit dem externen Skript Editor übertragen ohne etwas zu ändern. Wenn dann die Diagramme korrekt angezeigt werden könnt ihr anfangen mit einem Notepad das Skript anzupassen und erneut zu übertragen. Denkt dran, ihr könnt mit dem ESP8266 das Skript nicht über die Tasmota Seite editieren, weil der ESP zu wenig RAM hat! Falls nur ein paar Werte in den Diagrammen nicht stimmen, dann könnt ihr diese in der Console korrigieren mit z.B. script >sday[n]=korrigierter Tageswert. Siehe dazu Punkt 1. der FAQ. Und wie gesagt, viele Fehler kommen dadurch, dass man das Skript per Hand mit Notepad bearbeitet (z.B. die Kommentare entfernt) und dann via Copy&Paste in den WebEditor einfügt. Der ext. Editor entfernt automatisch alle Kommentare und unnötige Leerzeichen (die ich z.B. für die Lesbarkeit eingefügt habe).
  5. Der aktuelle Tages- und Monatsverbrauchswert stimmt nicht (auch in den Diagrammen)
    Das Skript speichert sich immer um 00:00 Uhr den aktuellen Zählerstand um damit den Tagesverbrauch des nächsten Tages auszurechnen. Nach einem Monatswechsel wird der Wert zudem noch in eine weitere Variable geschrieben um den Monatsverbrauch zu errechnen. Die Variablen hierfür sind dval, dval2, mval und mval2, diese sind permanent und werden nach einem Neustart aus dem Flash Speicher geladen, so wie auch die restlichen Variablen aus Punkt 1. der FAQ. Nach einem Firmware oder Scriptupdate kann es passieren, dass diese Variablen falsche Werte haben. Oder wenn man das Script zum ersten Mal aufspielt, dann sind nämlich alle diese Variablen 0! Der aktuelle Tageswert (und Monatswert) errechnet sich aus aktuellem Zählerstand (der immer >0 ist!) und dem um Mitternacht gespeicherten Stand. So oder so würde dann etwas völlig falsches errechnet werden. Um alle Arrays/Variablen auf einen definierten Wert zu setzen siehe Punkt 3 der FAQ. Tritt das Problem nach einem Update auf, dann muss man die Variablen händisch korrigieren und den aktuellen Zählerstand oder falls man den Stand von Mitternacht hat via Console eingeben: "script >dval=Zählerstand", "script >mval=Zählerstand", "script >dval2=ZählerstandEingespeist" usw.
  6. Nach der Zeitumstellung (Sommer / Winterzeit) stimmt die Uhrzeit in Tasmota nicht mehr
    Folgt der Anleitung unter 4g).
  7. Mein Zähler zeigt keine, nur kurzzeitig oder eine negative Leistung an
    Wenn euer Zähler keine Leistung anzeigt oder sie nur für eine kurze Zeit ausgibt, dann könnte euch dieses Dokument weiterhelfen (falls der Link nicht mehr geht, Bescheid geben). Es kann auch sein, dass ihr einen Befehl regelmäßig zum Zähler senden müsst, das hatte ein User mal in den Kommentaren beschrieben (finde ich gerade nicht mehr, irgendwas mit Push-Pull).
    Wenn euer Zähler eine negative Leistung ausgibt, dann schaut euch im Kapitel 4c) das Beispiel SML Script an (DWS DVS 7420, 7412 (DZG DVS74 DWS74) inkl. "negative Leistung" Fix).
  8. Beim Updaten der Tasmota Firmare (OTA) erhalte ich eine rote Fehlermeldung "ungenügender Speicherplatz" oder "Not enough space"
    Das betrifft nur den ESP8266 mit 1M Flash. Kommt dieser Fehler, dann habt ihr noch eine ältere Tasmota Firmware von mir drauf, die noch nicht abgespeckt war oder eine Firmware von jemand anders. In diesem Fall müsst ihr erstmal die minimal Firmware via OTA (Upgrade by file upload) auf euren ESP übertragen. Das minimal Image findet ihr immer im Download Ordner für die entsprechende Version. In seltenen Fällen klappt aber nichtmal das, weil eure aktuelle Tasmota Version soviel Flash Speicher belegt, dass das minimal Image nicht in den Flash passt. Aber dafür gibt es auch eine Lösung in Form eines Minimal HTTP Updaters. Damit sollte es dann klappen. (Danke für den Hinweis @User Norbert).
  9. Kann ich mir die Zähler SML Werte auch im JSON via Web Request abrufen (anstatt via MQTT) z.B. für openDTU-onBattery?
    Ja! hiermit: http://-EURE-IP-/cm?cmnd=status%2010
    %20 = Leerzeichen
    10 = show connected sensor information (replaces 'Status 8')
    https://tasmota.github.io/docs/Commands/#status
    Antwort sieht dann bei mir so aus: {"StatusSNS":{"Time":"2023-12-18T09:18:12","MT175":{"Power_curr":240,"Total_in":18773.34,"Total_out":571.48}}}
    Falls ihr das für openDTU-onBattery verwenden wollt müsst ihr bei Einstellungen -> Stromzähler folgendes verwenden:
    Stromzählertyp: http(s) + json
    URL: http://192.168.178.31/cm?cmnd=status%2010
    optional Authorization Type: Basic mit username und password
    JSON-Pfad: StatusSNS/MT175/Power_curr    <- MT175 = Name Stromzähler im SML Script (Meter Definition), Power_curr = Name aktuelle Leistung SML Script (Meter Metrics)
    Einheit: W
  10. Fehlermeldung "Syntax Error Line 1" bei Verwendung des externen Script Editors
    Aktiviert im Windows Dateiexplorer unter Ansicht die Option "Dateinamenerweiterung" bzw. Haken bei Erweiterung bei bekannte Dateitypen ausblenden deaktivieren. Hinweis vom aus dem Gästebuch #900 von Andy.
  11. Google Chart Script auf den ESP32 kopieren (ohne ScriptEditor)
    Der ESP32 hat fast genug Speicher um mein ganzes Script inkl. den Kommentaren und Leerzeichen (Einrückungen) im internen Web Editor zu laden. Leider reicht es dann doch nicht ganz und ihr müsst per Hand einige Kommentare entfernen. Ist euch das aber auch zu aufwendig, dann könnt ihr den externen ScriptEditor nehmen und mein Script "entschlacken" lassen. Dazu ladet euch das Tool herunter (siehe Punkt 4f) und öffnet mein Script. Dann via "Window -> Export to documents folder" mein Script konvertieren lassen. Ihr findet das entschlackte Script dann unter C:\Users\xxx\Documents\.
  12. Komische Peaks im 4h / 24h Diagramm (z.B. 10000W) / ESP rebootet ab und zu oder häufig
    Einige meiner Leser hatten Probleme mit sporadischen Peaks in den Diagrammen. Z.B. ab und zu 10.000 W (oder mehr) im 4h und 24h Diagramm. Meistens hilft es dann, eure Meter Definition anzupassen. So ist der Aufbau der Meter Definition: +<M>,<rxGPIO>,<type>,<flag>,<parameter>,<jsonPrefix>{,<txGPIO>,<txPeriod>,<cmdTelegram>}. bei <flag> solltet ihr 16 eintragen. Mehr Infos auf der Tasmota SML Seite oder hier bei mir im Kapitel 4d. Am Script kann es nicht liegen. Es addiert die aktuelle Leistung alle 3s auf. Nach 30s wird diese Summe durch die Anzahl der Additionen dividiert und man erhält den Mittelwert der dann in den 4h Graphen eingetragen wird. Das gleiche passiert auch mit dem 24h Graphen, jedoch wird dort erst nach 60s der Mittelwert errechnet und eingetragen.
    Wenn das alles nichts hilft kann es noch folgende Ursachen haben:
    - schlechtes Netzteil (z.B. einfaches Handyladegerät -> ungeeignet)
    - ESP zu warm / Bauteile schlecht ... gealtert ... Spannungsversorgung dadurch nicht mehr sauber, siehe auch ersten Punkt.
    - Lesekopf verrutscht oder es kommt irgendwie Licht in dein Zählerschrank (Nachmittagssonne scheint drauf ...)
    - ESP hat schlechten WLAN Empfang und verbindet sich ab und zu neu (siehe WifiConfig) -> das hat dann ggf. irgendwelche Einflüsse
  13. Zu hohe Werte im 4h / 24h Diagramm. Ich möchte die Leistungen im Diagramm begrenzen.
    Wenn ihr ab und zu mal hohe Peaks im Diagramm habt (weil ihr z.B. eine große Last schaltet oder euer E-Auto lädt), dann können die Diagramme ziemlich schnell nutzlos sein, weil ihr nur noch den einen großen Peak seht. Ihr könnt die Y-Achse des Diagramms aber begrenzen. Optional auch über ein Schieberegler. Sucht in meinem neuen (ab 13.10.2024) Skript nach "vn" um die Stellen zu finden, die aktiviert werden müssen. Braucht ihr den Schieberegler nicht, dann einfach unten in der >W Sektion bei den Diagrammen nach vAxis suchen und mein Kommentar lesen.
  14. Die Zählerwerte / Daten sollen schneller als 10s (kleinster Bereich von TelePerio bzw. tper) via MQTT übertragen werden
    Dazu musst du im Skript, in der SML Sektion ">M" <precision> des Meter Metrics anpassen (siehe auch Kapitel 4d):
    <M>,<decoder>@<scale><offs>,<label>,<UoM>,<var>,<precision>
    <precision> = number of decimal places. Add 16 to transmit the data immediately. Otherwise it is transmitted on TelePeriod only.
  15. Tasmota Buttons (Config usw) ausblenden, damit man nicht ausversehen was verstellen kann
    Im Tasmota Script in der >W Sektion folgendes einfügen:
    <style>form button{display:none}</style>
    Damit man immernoch ins Menü kommt: http://tasmota-ip/mn?

 


Kommentare: 1477
  • #1477

    Marcus (Freitag, 10 Januar 2025 18:20)

    @ Andreas
    @Thomas
    Was ich gerade schrieben hatte, galt Thomas.
    Hab die Namen verwechselt. Sorry

    @ Thomas
    Trag in deinem Script für den ESP 01s in der Zeile unter
    =>sensor53 r
    noch die Zeile
    =>sensor53 l2
    ein.
    Das bewirkt, das die blaue LED aus geht, wenn am definierten RX (bei Dir Gpio3) das Signal detektiert wird. (Wenn der Pegel am RX soweit runtergezogen wird, dass der RX eine negative Flanke erkennt)
    Bei dem Spiegeltest, müsste die Blaue LED dann immer ausgehen, wenn der Hichi sein eigenes Signal empfängt.

  • #1476

    Marcus (Freitag, 10 Januar 2025 17:39)

    @ottelo
    Ist dir was bekannt, das der RX (Gpio3) beim ESP01s und der NodeMCU mit einem relativ kleinen Pullup versehen ist?
    gemu2015 beschreibt das für den Wemos D1 hier unter #1915
    https://forum.creationx.de/forum/index.php?thread/1095-d0-z%C3%A4hler-sml-auslesen-mit-tasmota/&postID=42203#post42203
    Ich bin jetzt nämlich auf das gleiche Problem wie Andreas mit seinem MT174 gestoßen.
    Wollte jetzt einen Q3D1024 auslesen mit einem Hichi TTL Lesekopf an einer NodeMCU am Gpio3.
    Ergebnis wie bei Andreas: Nix geht.
    Dann das Script von meinem Homezähler rein, an den Homezähler angeschlossen; funktioniert.
    Wieder an den Q3D1024, nix geht. Dann den Eintrag von gemu2015 gefunden und die folgenden Abschnitte gelesen. Photodiode, Widerstand und das ganze an Gpio 12; funktioniert am Q3D1024 einwandfrei.
    Zurück mit der gleichen Schaltung an Gpio 3; nix geht.
    Ich vermute das der Hichi den Gpio 3 nicht weit genug runterziehen kann, wenn die IR Sendediode vom Zähler recht schwach ist, was zumindest beim Q3D1024 öfter berichtet wird.

    @ Andreas, hast du mal ausprobiert, den Lesekopf mit deinem script ca. 3cm vor einen Spiegel zu halten und den Dump in der console mit sensor53 d1 beobachtet?
    Da müsstest du dann das sehen können, was du eigentlich zum Zähler schickst.
    Damit wüsstest du wenigstens, das der Lesekopf generell sendet und empfängt.

    Gruß
    Marcus

  • #1475

    Joachim (Montag, 06 Januar 2025 20:11)

    Ich konnte das Datenübertragungsproblem lösen. Mir ist unverständlich, warum nur das alte Script läuft.

  • #1474

    Joachim (Montag, 06 Januar 2025 14:08)

    Ich hatte gestern Tasmota 14.3 auf einen neuen WT32-ETH01 geflasht, und das aktuelle angepasste Google Script vom 1.1.2025 mit meinen SML-Daten von meinem vorherigen Script in die Scriptkonsole kopiert.
    Als Ergebnis bekam ich von meinen beiden Zählern 4 mal den Wert Null, und 2 weitere Werte waren negativ. Diese Kombination lief gar nicht. Dann kopierte ich mein vorheriges Script von "2023.02.28 (PV) ottelo<br>" in die Konsole und damit lief dann das System, mit einer Ausnahme: Ich kann nicht den aktuellen Leistungswert nach openDTU übertragen. Ich kann mir das Jasonfile anzeigen lassen, aber erst nach Eingabe User und Passwort. Da steht dann auch Power_curr drin, aber das war es dann auch. Power_curr benötige ich aber, um eine Nulleinspeisung zu realisieren.
    Kann irgendwie automatisch User und PW übergeben werden? Beim Test auf Funktion bekomme ich diese Fehlerausschrift: Value 1: Bad HTTP code: 401. Hier wird normalerweise die aktuell aus dem Stromnetz bezogene Leistung angezeigt.

  • #1473

    Volker (Montag, 06 Januar 2025 12:14)

    @huaak
    @Thomas Fu
    @ottelo

    Danke!
    Es hat alles funktioniert. :-)

  • #1472

    Joachim (Sonntag, 05 Januar 2025 11:17)

    Ein Update via OTA von Tasmota 14.2 auf 14.3 von dieser Seite hat nicht funktioniert und es ist kein Zugang mehr zur Oberfläche möglich. Ich las am sehr Ende kurz nur etwas von Safeboot, habe aber meinen WT32-ETH01 auch nach Anleitungen aus dem Netz (Strom an/aus, verschiedene Zeitabstände) nicht mehr beleben können. Was kann da schief gelaufen sein?
    Ich nahm einen neuen WT32-ETH01 und habe 14.3 mit der Factory geflasht. Nun habe ich im Home Assistant neue Entitäten, auch JSON in HA (für Balkonkraftwerk mit Nulleinspeisung) will nicht mehr.

  • #1471

    Jürgen T. (Freitag, 03 Januar 2025 16:21)

    Eine Super-Beschreibung, umfangreich und ungemein hilfreich - vielen Dank für diese Mühe!
    LG Jürgen

  • #1470

    Jens (Donnerstag, 02 Januar 2025 18:09)

    Ich habe einen Sonoff Mini R4 per USB-zu-TTL-serial mit Tasmota SML geflasht. Der Lesekopf kommt an RX, TX, GND. 3,3V ist auf der Unterseite der Platine zu finden. Die Anschlüsse sind sehr klein. ACHTUNG: der Anschluss L ist GND. !! Das heißt den Neutralleiter schließe ich auf L an und die Phase auf N !! Dadurch lege ich GND auf den Neutralleiter bei Festanschluss. Das hat zur Folge dass das Relay den N schaltet und ein Schalter auch gegen N sein müsste. Nur so ist gewährleistet das am Lesekopf keine Phase anliegt sondern Neutral. Also nur etwas für den Elektriker. Der Sonoff Mini R4 hat einen vollwertigen ESP32 mit 2 Kernen, 4 MB Flash und das nötige "Netzteil" eingebaut. Dazu ein Relay und einen eingebauten Taster.

  • #1469

    Thomas Fu (Mittwoch, 01 Januar 2025)

    @ottelo
    Danke für die schnelle Korrektur.
    Und DANKE auch für diese informative Seite und deine tolle Arbeit.

  • #1468

    ottelo (Mittwoch, 01 Januar 2025 18:08)

    @Thomas Fu
    Danke für die Anleitung.

    Ich habe den Fehler im Script eben korrigiert und bei github aktualisiert. Um das Script nachträglich bei euch zu ändern müsst ihr in eurem Script oben nach hour=0, yr=0 einfügen (neue Variable). Dann weiter unten, unter hour=hours, yr=year hinzufügen. Dann etwas weiter unten chg[year] in chg[yr] ändern. Die Änderung könnt ihr auch hier anschauen:

    https://github.com/ottelo9/tasmota-sml-script/commit/4c70c167db36aba7679dbd64ec56b4b4ca4d4016

  • #1467

    Thomas Fu (Mittwoch, 01 Januar 2025 15:54)

    Hallo Volker,
    um die beiden Werte für Jahresverbrauch und Jahreseinspeisung am Anfang des Jahres wieder auf "0" zu setzen, müssen von deinem Stromzähler die beiden Zählerstände für Verbrauch (1.8.0) und Einspeisung (2.8.0) zum Jahreswechsel entweder abgelesen oder ermittelt werden.
    Diese beiden Werte trägst Du dann wie folgt über die Console ein (Achtung: anstelle Komma muss Punkt eingegeben werden):
    backlog script >yval=Zählerstand Verbrauch zum Jahreswechsel (z.B. 2347.3)
    backlog script >yval2=Zählerstand Einspeisung zum Jahreswechsel

    Du kannst die beiden Werte auch ermitteln.
    Einfach den Wert von dem Monatsverbrauch vom aktuellen Wert des Stromzählers für den Verbrauch abziehen und mit
    backlog script >yval=ermittelter Wert (z.B. 2347.3)
    über die Console eingeben.
    Gleiche Vorgehensweise für die Einspeisung. Einfach den Wert von der Monatseinspeisung vom aktuellen Wert des Stromzählers für die Einspeisung abziehen und mit
    backlog script >yval2=ermittelter Wert (z.B. 2347.3)
    über die Console eingeben.

    Viele Erfolg.

  • #1466

    Volker (Mittwoch, 01 Januar 2025 15:16)

    Das sind meine Ausgaben in der Konsole:


    {"script":{"mval":4386.27}}

    {"mval2":1494.71}}


    {"script":{"dval":4386.27}}

    {"script":{"dval2 ":1494.71}}


    Müsste ich das eingeben, damit die Jahreswerte wieder auf "0" gehen?

    backlog script >yval=4386.27; script >yval2=1494.71;

  • #1465

    huaak (Mittwoch, 01 Januar 2025 13:14)

    Hatte beim Balkonkraftwerksscipt auch die Issues mit dem Jahreswechsel, konnte sie aber recht easy fixen:

    ich habe um zumindest den Jahresverbrauch anzupassen den Wert von mval oder dval (kommt heute am 1.1. gleich..) ausgelesen und per Backlog als Wert für yval eingetragen:

    backlog script<yval=1234.567

    ..bei der Jahreseinspeisung habe ich den yval2-Wert angepasst:

    backlog script >yval2=123.731

    nun stimmen die Zahlen wieder.. :)

  • #1464

    ottelo (Mittwoch, 01 Januar 2025 12:07)

    Frohes Neues.
    Das mit dem Jahresverbrauch scheint nicht zu klappen. Muss ich mir mal anschauen wieso.
    Die Balken im Jahresdiagramm werden erst überschrieben, wenn der Monat dran ist. Somit hat man noch ein Vergleich/Historie zum Vorjahr. Korrekt müsste im Titel dann 2024/2025 stehen.

  • #1463

    Volker (Mittwoch, 01 Januar 2025 12:02)

    Frohes neues Jahr euch allen. :-)

    Heute hat ein neues Jahr begonnen. Leider wird das bei mir nicht angezeigt. Es steht bei Jahresverbrauch noch genau der selbe wert wie bei Gesamtverbrauch.
    Und auf dem Diagramm "Verbräuche / Einspeisungen (Jahr 2025.00)" sind noch die Diagrammbalken der Monate von 2024 zu sehen.
    Wie kann man das ändern?

  • #1462

    volker (Dienstag, 31 Dezember 2024 14:29)

    Außer dem 4h Wert ist alles erhalten geblieben. Danke!
    Jetzt sind meine Sensoren wieder auf dem neusten Stand.

  • #1461

    ottelo (Dienstag, 31 Dezember 2024 12:45)

    Nicht unbedingt. Die Daten sollten erhalten bleiben. Kann aber trotzdem passieren. Deshalb Daten lieber sichern. Siehe FAQ 1

  • #1460

    Volker (Dienstag, 31 Dezember 2024 11:44)

    @ottelo
    Danke für die Info.
    Bei einem Wechsel des Scripts wären auch alle "alten" Daten weg. Oder?

  • #1459

    ottelo (Dienstag, 31 Dezember 2024 10:22)

    Das Changelog findest du hier
    https://drive.google.com/file/d/11ZFC4P3YXaHNX63vjtGe4Vh8-FMDjw3T/view?usp=drivesdk

    Brauchst nicht wechseln, ist nicht viel geändert wurden. Jetzt ist das Script auf GitHub und nicht mehr auf Google Drive.

  • #1458

    Volker (Dienstag, 31 Dezember 2024 08:40)

    Hallo,
    ich habe noch die Script Version 28.03.2024 auf meinem WiFi IR- Schreib-/Lesekopf mit ESP01S am laufen.
    Sollte man auf die neuste Script Version 11.11.2024 wechseln?
    Gibt es damit Vorteile?

  • #1457

    Marcus (Montag, 30 Dezember 2024 16:17)

    @Thomas,
    Ich würde auf die Antwort des Verkäufers warten. Es kann eigentlich nur eine defekte oder falsch eingelötete Diode sein.
    Ich hab jedenfalls keine andere Idee.
    Viel Erfolg.
    Berichte wenn du es gelöst hast.
    Viel Erfolg

  • #1456

    ottelo (Montag, 30 Dezember 2024 09:50)

    Ich glaub es wäre besser dein Problem nochmal in diesem Forum/Thread zu stellen. Das Gästebuch ist für sowas eher ungeeignet. Vielleicht hat dort noch jemand eine Idee was das Problem sein könnte.

    https://forum.creationx.de/forum/index.php?thread/1095-d0-z%C3%A4hler-sml-auslesen-mit-tasmota/

  • #1455

    Thomas (Montag, 30 Dezember 2024 08:33)

    So und jetzt meine hoffentlich letzte Frage. Ich habe jetzt meinen zweiten Lesekopf vom MT631 nochmals an den MT174 ran gebaut. Das Script natürlich geändert. Serialconfig 7e1 eingegeben und Kopf neu gebootet. Es kommen wie schon mehrmals getestet keine Werte vom Zähler. Dann wieder zurückgebaut an dem MT631. Script wieder angepasst und Kopf neu gebootet. Die Serialconfig steht nach dem Booten aber immer noch auf 7e1 und der Kopf sendet trotzdem Werte. ???? Wie kann das denn sein? Der MT631 benötigt doch 9600 Baud 8n1.
    Die baudrate wurde selbstständig nach dem Booten von 300 auf 9600 Baud geändert. Das kann ich mir noch erklären weil das ja in dem Script für den MT631 so drin steht aber die Parameter der seriellen Schnittstelle stehen da ja nirgends. Ich kann in der Konsole auch Serialconfig 6n2 eingeben und es kommen immer noch Werte vom Zähler. Das verstehe ich jetzt nicht.


  • #1454

    Thomas (Montag, 30 Dezember 2024 08:05)

    @Marcus Ein Oszilloskop besitze ich nicht. Ein Multimeter ist alles was ich habe. Bin nur normaler User. An der Diode selber ist messen schwierig. Ich sehe halt dass alle 10 sec. Die Spannung kurz auf 0 geht und dann wieder ansteigt aber nur im mV Bereich. Leuchten tut an meiner Sendediode gar nichts. Also entweder falsch herum eingelötet oder kaputt. Aber dann in beiden Leseköpfen. Eventuell die ganze Serie? Denke mal nicht dass die das selber löten. Leider habe ich immer noch keine Antwort von dem Verkäufer erhalten. Hab den ja schon mehrmals angeschrieben aber antwortet nicht.

  • #1453

    Marcus (Sonntag, 29 Dezember 2024 22:37)

    @Thomas,
    Direkt am ESP TX gegen GND Messe ich das gleiche. An der Diode auf meinem Hichi TTL Lesekopf ist es mit dem Multimeter kaum zu Messen.
    Auch nur bis ca. O,4 V. An ein Oszilloskop komme ich z.Zt. nicht dran.
    Aber mit meinem Samsung Smartphone sehe ich die Sendediode im 10 sek. Takt deutlich aufleuchten.

  • #1452

    Thomas (Sonntag, 29 Dezember 2024 20:17)

    @Marcus wenn ich an der ESP Platine an den Pins TX und Gnd messe sind da dauerhaft 3,29V, alle 10 Sekunden geht die Spannung dort kurz auf 0V und dann wieder auf 3,29V. Ändere ich den Wert 100 in dem Script auf 25 ändert sich der Wert entsprechend schneller alle 2,5 sec. Aber direkt an der Sendediode messe ich nur mV die alle 10 sec auf 0 geht.

  • #1451

    Marcus (Sonntag, 29 Dezember 2024 19:31)

    @Thomas,
    Ca. 2Volt, kommt auf die verwendete Diode an.
    Ich hätte aber vermutet, das du 0v misst und alle 10 sek. Die Spannung kurz steigt.
    Ich probiere später bzw. morgen mal wie das bei meinem Hichi TTL ist.

  • #1450

    Thomas (Sonntag, 29 Dezember 2024 18:56)

    @ottelo Auch das habe ich gemacht. 9600 und 8n1. Wenn ich jetzt messe geht die Spannung auf 280mV hoch und dann kurz auf 0 und steigt dann wieder an. Also direkt an der Sendediode gemessen.
    Config Module steht auf Generic alles auf none. Serial logging ist off

  • #1449

    Thomas (Sonntag, 29 Dezember 2024 18:47)

    @Marcus boah, jetzt wirds aber sehr eng. Wie soll ich denn da was messen. Direkt an der Sendediode? Musste erstmal in den Untiefen meines Kellers kleinen prüfspitzen suchen gehen damit ich da messen kann. Wieviel mV müsste ich denn da messen? alle 10sec. Geht die Anzeige auf 0 und steigt dann wieder an. Ist aber kein fester Wert.

  • #1448

    Marcus (Sonntag, 29 Dezember 2024 17:23)

    @Thomas,
    Hast du ein Messgerät und kannst mal messen ob die Sendediode alle 10 Sek. Spannung bekommt. Ich tippe mittlerweile auf einen Hardwaredefekt oder falsch rum reingelötete Sendediode.

  • #1447

    ottelo (Sonntag, 29 Dezember 2024 16:12)

    Interessant. Stell mal im Script auf 9600 Baud um. Und in der Console auf 8N1. Teste dann nochmal.

    Unter Configure Module steht alles auf None?
    Unter Logging ist Serial Log aus?

  • #1446

    Thomas (Sonntag, 29 Dezember 2024 15:45)

    @ottelo später ist jetzt. Hab die bessere Hälfte mit dem Hund alleine rausgeschickt. Hab auf einmal Rückenschmerzen bekommen. .-)
    Komm mir vor wie der letzte DAU. Aber deine Idee ist gut. Darauf wäre ich jetzt nicht gekommen. Habe ich gerade ausprobiert. Den USB Lesekopf an den Laptop ran und mit hterm 300, 7e1 eingestellt und connected und den anderen WLAN Lesekopf verdreht gegeneinander. Es kommt weder in hterm noch mit putty die zeichenfolge /?! an, also sendet der wLAN Kopf auf der Diode nichts.

  • #1445

    Thomas (Sonntag, 29 Dezember 2024 15:24)

    @Marcus Ja, das gibt’s nur eine blaue LED keine rote. Also, wenn ich dort eine 2 eintrage blinkt die blaue Diode. Wenn ich den Wert 100 auf 25 ändere blinkt sie schneller, also das funktioniert. Jetzt geht nur das senden nicht.
    @ottelo dein Vorschlag probiere ich später. Fortsetzung folgt.

  • #1444

    ottelo (Sonntag, 29 Dezember 2024 13:17)

    @Marcus
    Ja ist invertiert bzw Pullup. Das kann ich bei mir beim ESP32 Board auch feststellen.

    @Thomas
    Du kannst deinen USB Lesekopf zum Test auch an den ESP Lesekopf hängen (die durchsichtige Diode muss an die schwarze, also beide Köpfe um 180 Grad zueinander verdreht.

    Dann mit hterm (oder putty) mit den korrekten Einstellungen öffnen. Dann solltest du die Zeichenfolge alle 10s auf deinen PC sehen können.

  • #1443

    Marcus (Sonntag, 29 Dezember 2024 12:46)

    @Thomas
    Der ESP der auf dem Lesekopf Steckt ist eine ESP-01s (Hat nur eine Blaue LED)? Oder brennt wenn er Spannung hat auch eine Rote?
    Wenn er nur eine Blaue LED hat, dann trag doch mal testweise im Script in der Zeile +1,3,o,0,300,MT174,1,100,2F3F210D0A nach dem MT174 anstelle der 1 eine 2 ein. Dann sollte die Blaue LED im 10 Sekunden Takt blinken. Nur um sehen, ob das Script generell geht.
    @Ottelo
    Ist es richtig das der TX Pin invertiert ist ist? Ich habe eben mal einen ESP01s mit der 14.1.0 von Dir geflasht und mal den TX gegen GND gemessen. Mit +1,3,o,0,300,MT174,1,100,2F3F210D0A habe ich 3,3V die alle 10 sek auf 0V fallen.

  • #1442

    Thomas (Sonntag, 29 Dezember 2024 07:23)

    @ottelo Ich habe die Version 14.1.0 genommen. Was ist denn das +RS232+Globalvar im gleichen Ordner für ein Image?
    Den Lesekopf hier https://www.ebay.de/itm/205029304818 habe ich ja. Ich habe den Shop auch mal angeschrieben aber es kommt keine Antwort auf meine Frage. Keine Ahnung ob die Sendediode an GPIO1 geht. Bis vor ein paar Tagen wusste ich nicht mal was GPIO überhaupt ist. Das müsste dann aber ein generelles Problem mit diesem Teil sein weil der zweite Lesekopf an dem MT174 ja auch nicht funktioniert.
    Auf jeden Fall sieht die Platine genau so aus wie du sie oben unter ESP8266 abgebildet hast.
    Ich glaub ich bestell mir jetzt einfach nochmals nen anderen Lesekopf und hoffe das der einfach funktioniert. https://www.ebay.de/itm/315834669323
    Das ganze ist für einen alten Mann zu kompliziert.

  • #1441

    ottelo (Samstag, 28 Dezember 2024 22:46)

    Ja er sendet alle 100*100ms = 10s die Zeichenfolge. Das sollte man definitiv dann sehen können. Kann es sein, dass die Sendediode garnicht an GPIO1 ist? Laut dem eBay Link bzw. die Seite des Shops mit den vielen Beispielskripten sollte es aber so sein.

    So langsam gehen mir auch die Ideen aus. Welches Image hast du dir von meiner Seite geladen? Welche Tasmota Version?

  • #1440

    Thomas (Samstag, 28 Dezember 2024 22:40)

    @ottelo
    Also, ich habe jetzt mal den Lesekopf in seine Einzelteile zerlegt und das ganze ohne Gehäuse probiert ? Wenn ich den Lesekopf neu boote müsste doch die Sendediode kurz aufleuchten oder? Ich sehe aber auf dem Handydisplay nichts. Sendet er mit dieser Zeile im Script +1,3,o,0,300,MT174,1,100,2F3F210D0A. dieses 2F3F210D0A fortlaufend bis eine Antwort kommt oder nur einmal? So wie es aussieht sendet da nichts.
    Ich habe ja jetzt noch nen anderen Hichi Lesekopf ohne das WLAN Modul. Wenn ich mit dem in dem Terminalprogramm hterm die serielle Schnittstelle connecte und dort auf Autosend klicke und mehrmals eine Zeichenfolge schicke sehe ich auf dem Handydisplay wie die Sendediode leuchtet. Das sehe ich mit den anderen beiden Leseköpfen mit WLAN nie. Die Sendediode leuchtet da bei keinem.

  • #1439

    Thomas (Samstag, 28 Dezember 2024 20:00)

    Das mit der handykamera funktioniert schon. Zumindest mal mit meinem IPhone SE.
    @Markus ich habe das ganz normale Script drin das man von der Tasmotaseite kopieren kann. Ottelo hat dasselbe hier auf seiner Seite drin.
    @ottelo was soll denn dann bei mir anderes sein? Ich habe ja nichts besonderes. Beide Leseköpfe die ich habe funktionieren ja an dem MT631 aber beide gehen nicht an dem MT174. Eigentlich zähle ich mich nicht zu den DAU‘s und hab bisher noch alles hinbekommen das ich wollte, aber das schafft mich.

  • #1438

    ottelo (Samstag, 28 Dezember 2024 16:54)

    @Thomas
    Ich habe eben mal mit meinem Smartmeter Simulator eine Baudrate von 300 und 7E1 simuliert. Mit einem Hichi v1 Lesekopf (mit ESP01s) habe ich die Daten empfangen, dieser war auch auf 300 baud und 7E1 eingestellt. Es funktioniert! Wenn ich Serialconfig eingebe erscheint auch 7E1. Also das funktioniert wohl. Bei dir muss es wohl an was anderem liegen ...

  • #1437

    ottelo (Samstag, 28 Dezember 2024 15:17)

    Das mit der Handykamera wird nicht funktionieren, da diese ein IR Filter haben und man die Diode nicht leuchten sieht (oder evtl. klapps mit der Frontkamera?). Bei mir hats aber mit der Laptopkamera funktioniert.

  • #1436

    Marcus (Samstag, 28 Dezember 2024 15:15)

    @ Thomas,
    Das meine ich ja, müsste der ESP/Lesekopf nicht erst mal senden, damit der MT174 „antwortet“?
    Vielleicht liegt der Hund ja da begraben.
    Schau doch mal mit der Handykamera, ob dein USB Lesekopf auf seiner Sendediode was ausgibt, wenn du Sendesequenz sendest.
    Was hast Du denn im Script für den MT174 stehen?

  • #1435

    Thomas (Samstag, 28 Dezember 2024 07:15)

    @Markus guten Morgen, hm was soll,ich da denn sehen? An meinem MT631 sehe ich mit der handykamera dass der zähler fortlaufend sendet. Die rechte IR Diode am Zähler sendet. Am Lesekopf sehe ich da nichts.
    Aber der MT174 sendet ja nicht ständig. Der benötigt doch diese /?! Sequenz dass er sendet. Aber wenn ich mit der handykamera am Lesekopf schaue, sehe ich nicht dass eine IR Diode vom Lesekopf nach dem booten irgendwas macht.
    Der Lesekopf funktioniert aber sofort wenn ich den an den MT631 ranmache und das Script für den MT631 hinterlege.

  • #1434

    Marcus (Freitag, 27 Dezember 2024 17:30)

    @ Thomas,

    Hast du mal mit der Handykamera geschaut ob der ESP überhaupt was sendet nach dem Booten?
    Und das serial logging hast du aus!

  • #1433

    Thomas (Freitag, 27 Dezember 2024 12:32)

    So, ich habe es jetzt gewagt dein Download Script 14.1.0 zu nehmen. Hat wohl auch geklappt, aber ändert nichts an der Tatsache. Keine Werte vom Zähler weiterhin. Auch sensor53 d1 bringt ausser dieser Zeile hier nichts.
    stat/tasmota_20D1F7/RESULT = {"Time":"2024-12-27T12:31:22","SML":{"CMD":"dump: 1"}}

  • #1432

    Thomas (Freitag, 27 Dezember 2024 09:58)

    Hier mal die komplette Ausgabe aus der Konsole nach dem booten. WLAn habe ich mal ausgexxxxxxt. Bin leider noch kompletter Anfänger in dem Thema. Aber geht nicht gibt's nicht. Bestimmt ist das nur ne Kleinigkeit.
    00:00:00.002 HDW: ESP8266EX
    00:00:00.050 CFG: Loaded from flash at F8, Count 148
    00:00:00.055 SER: Set to 7E1 300 bit/s
    00:00:00.835 QPC: Count 1
    00:00:00.842 SCR: nv=0, tv=0, vns=0, vmem=16, smem=8192
    00:00:00.847 Project tasmota - Tasmota Version 13.1.0(tasmota)-2_7_4_9(2023-10-06T13:58:26)
    00:00:00.923 SNS: Hardware Serial
    00:00:00.923 meters: 1 , decode lines: 3, memory used: 1295 bytes
    00:00:00.925 RSL: RESULT = {"Time":"1970-01-01T00:00:00","SML":{"CMD":"restart"}}
    00:00:00.994 SNS: Hardware Serial
    00:00:00.994 meters: 1 , decode lines: 3, memory used: 1295 bytes
    00:00:00.633 WIF: Connecting to AP1 xxxxx Channel 11 BSSId 2C:91:AB:F7:03:44 in mode 11n as tasmota-20D1F7-4599...
    00:00:01.751 WIF: Connected
    00:00:02.004 HTP: Web server active on tasmota-20D1F7-4599 with IP address 192.168.13.91
    09:51:49.016 MQT: Attempting connection...
    09:51:49.032 MQT: Connected
    09:51:49.035 MQT: tele/tasmota_20D1F7/LWT = Online (retained)
    09:51:49.037 MQT: cmnd/tasmota_20D1F7/POWER =
    09:51:49.042 MQT: tele/tasmota_20D1F7/INFO1 = {"Info1":{"Module":"Generic","Version":"13.1.0(tasmota)","FallbackTopic":"cmnd/DVES_20D1F7_fb/","GroupTopic":"cmnd/tasmotas/"}}
    09:51:49.044 MQT: tele/tasmota_20D1F7/INFO2 = {"Info2":{"WebServerMode":"Admin","Hostname":"tasmota-20D1F7-4599","IPAddress":"192.168.13.91"}}
    09:51:49.046 MQT: tele/tasmota_20D1F7/INFO3 = {"Info3":{"RestartReason":"Software/System restart","BootCount":144}}
    09:51:50.123 MQT: stat/tasmota_20D1F7/STATUS1 = {"StatusPRM":{"Baudrate":300,"SerialConfig":"7E1","GroupTopic":"tasmotas","OtaUrl":"http://ota.tasmota.com/tasmota/release/tasmota.bin.gz","RestartReason":"Software/System restart","Uptime":"0T00:00:05","StartupUTC":"2024-12-27T08:51:45","Sleep":50,"CfgHolder":4617,"BootCount":143,"BCResetTime":"2024-12-06T18:50:38","SaveCount":148,"SaveAddress":"F8000"}}
    09:51:50.173 MQT: stat/tasmota_20D1F7/STATUS11 = {"StatusSTS":{"Time":"2024-12-27T09:51:50","Uptime":"0T00:00:05","UptimeSec":5,"Heap":21,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":20,"MqttCount":1,"Wifi":{"AP":1,"SSId":"ZengerHomeWLAN","BSSId":"2C:91:AB:F7:03:44","Channel":11,"Mode":"11n","RSSI":100,"Signal":-50,"LinkCount":1,"Downtime":"0T00:00:03"}}}
    09:51:50.221 MQT: stat/tasmota_20D1F7/STATUS10 = {"StatusSNS":{"Time":"2024-12-27T09:51:50","STROM":{"Total_in":0.000,"Total_out":0.000,"Meter_number":""}}}
    09:51:52.406 QPC: Reset
    09:51:53.383 MQT: tele/tasmota_20D1F7/STATE = {"Time":"2024-12-27T09:51:53","Uptime":"0T00:00:08","UptimeSec":8,"Heap":20,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":1,"Wifi":{"AP":1,"SSId":"XXX","BSSId":"2C:91:AB:F7:03:44","Channel":11,"Mode":"11n","RSSI":100,"Signal":-49,"LinkCount":1,"Downtime":"0T00:00:03"}}
    09:51:53.391 MQT: tele/tasmota_20D1F7/SENSOR = {"Time":"2024-12-27T09:51:53","STROM":{"Total_in":0.000,"Total_out":0.000,"Meter_number":""}}
    09:52:34.620 CMD: sensort53 d1
    09:52:34.626 MQT: stat/tasmota_20D1F7/RESULT = {"Command":"Unknown"}
    09:52:40.085 CMD: sensor53 d1
    09:52:40.092 MQT: stat/tasmota_20D1F7/RESULT = {"Time":"2024-12-27T09:52:40","SML":{"CMD":"dump: 1"}}

  • #1431

    Thomas (Freitag, 27 Dezember 2024 09:43)

    Hallo, also ich habe 2 dieser Leseköpfe hier. Die funktionieren beide an meinem Imsys Zähler MT631 einwandfrei, aber beide nicht an dem MT174. NTürlich mit dem entsprechenden Script von der Tasmotaseite.
    https://www.ebay.de/itm/205029304818
    Nach 2 Tagen probieren habe ich den Hersteller KDK angeschrieben. Der Support hat mir gesagt dass 7n1 und 300baud eingestellt werden muss und ein Defekt der Schnittstelle zu 95% unwahrscheinlich ist.
    Daraufhin habe ich mir noch diesen hier bestellt.
    https://www.ebay.de/itm/315022714074
    Den habe ich rangebaut und per USB mit meinem Laptop verbunden. Hterm runtergeladen und die Schnittstelle auf 7n1 und 300 baue eingestellt. Dann /?! und CR LF gesendet, nichts.
    Dann einfach mal testweise 7e1 eingestellt und siehe da auf einmal kamen Daten vom Zähler. Dann wieder den ersten WLAN Lesekopf angeschlossen. Weiterhin keine Daten von Zähler. Dann in der Konsole Serialconfig 7e1 eingegeben. Lesekopf neu gebootet. In der Konsole steht jetzt auch das hier
    stat/tasmota_20D1F7/STATUS1 = {"StatusPRM":{"Baudrate":300,"SerialConfig":"7E1","GroupTopic":"tasmotas","OtaUrl":"http://ota.tasmota.com/tasmota/release/tasmota

    Also 7e1, aber das scheint den Zähler nicht zu interessieren. Es kommen keine Daten.
    stat/tasmota_20D1F7/STATUS10 = {"StatusSNS":{"Time":"2024-12-27T09:39:34","STROM":{"Total_in":0.000,"Total_out":0.000,"Meter_number":""}}}
    09:39:36.478 QPC: Reset
    09:39:37.436 MQT: tele/tasmota_20D1F7/STATE = {"Time":"2024-12-27T09:39:37","Uptime":"0T00:00:09","UptimeSec":9,"Heap":19,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":32,"MqttCount":1,"POWER":"OFF","Wifi":{"AP":1,"SSId":"xxxxxxxxxxx","BSSId":"2C:91:AB:F7:03:44","Channel":11,"Mode":"11n","RSSI":100,"Signal":-49,"LinkCount":1,"Downtime":"0T00:00:03"}}
    09:39:37.444 MQT: tele/tasmota_20D1F7/SENSOR = {"Time":"2024-12-27T09:39:37","STROM":{"Total_in":0.000,"Total_out":0.000,"Meter_number":""}}

    Mit dem neuen Lesekopf ohne Tasmota kommen soft Werte wenn ich 7e1 eingebe. So, ich weiß das Problem sitzt zu 99% vor dem Bildschirm aber ich komm einfach nciht drauf.

  • #1430

    ottelo (Freitag, 27 Dezember 2024 08:47)

    @Thomas
    Du hast da wohl echt eine Zicke erwischt ;)
    Also fassen wir mal kurz alles zusammen:

    Du hast ein MT174 und ein Hichi V1? Lesekopf also mit ESP01s (ESP8266). D.h. Rx Pin = GPIO3, Tx Pin = GPIO1.
    Das sind echte Hardware RX/TX Pins, also sollte 7E1 oder 7N1 möglich sein. Verwendest du mein Image von dieser Seite? Welche Version?
    Du verwendest das Script von weiter unten? Ich habe es direkt mal in meine Scriptsammlung + Beschreibung eingefügt (Kapitel 4c)
    Du hast jetzt herausgefunden, dass es 7E1 sein muss und hast es via SerialConfig 7E1 eingestellt.
    Den ESP mal rebootet und mit sensor53 d1 kommen trotzdem weiterhin keine Werte?

    Unter Configuration -> Configure Modul sollte Generic stehen und alle Pins müssen auf None stehen! Configure Logging -> Serial log level = None.

  • #1429

    Thomas (Donnerstag, 26 Dezember 2024 11:01)

    Ich habe jetzt gerade mal den Lesekopf mit dem Script für den MT631 konfiguriert und den Kopf dann an den anderen Zähler hingebaut. Es kommen sofort Werte obwohl nach dem Booten des Kopfes weiterhin 7e1 in der Konsole zu lesen ist und das definitiv für den MT631 falsch ist. So wie ich das sehe nimmt er diese Einstellung für die serielle Konfig überhaupt nicht. Ich kann da auch 6n1 eintragen und es geht immer noch.
    Wie stelle ich denn die serielle Konfig auf 7e1 so dass mir Tasmota Lesekopf die Werte von dem MT174 ausgibt?

  • #1428

    Thomas (Donnerstag, 26 Dezember 2024 10:43)

    @ottelo. Erstmal noch schöne Weihnachten. Die Sache mit meinem MT174 lies mir keine Ruhe und ich habe mit jetzt noch einen anderen Lesekopf ohne WLAN bestellt. Per USB an mein Laptop angeschlossen und versucht per Hterm die Initilasierungssequenz /?! und CR LF an den Zähler zu senden. Nichts, es kommen weiterhin keine Werte.
    Dann habe ich mal testweise die Verbindung in hterm von 7n1 auf 7e1 umgestellt und siehe da der Zähler antwortet auf einmal. Super habe ich gedacht, Lösung gefunden. Pustekuchen. Dann wieder den Lesekopf mit Tasmota angeschlossen und in der Konsole Serialconfig 7e1 eingetragen. Lesekopf neu gestartet. 7e1 und 300baud kann ich jetzt in der Konsole lesen, das offizielle Tasmotascript ist auch hinterlegt und natürlich auch aktiv, aber es kommen weiterhin keine Werte vom Zähler. Was könnte denn jetzt noch falsch sein?
    Sorry, aber bin Anfänger in dem Thema. Dachte das wäre ganz einfach mit dem auslesen. Mach da jetzt schon Tage rum aber ich bekomme das wohl nicht hin.