Tasmota auf ESP8266 ESP01s – Hichi IR Lesekopf für Smartmeter Stromzähler flashen

1. Einleitung

Die smarten Stromzähler (Smartmeter) bieten die Möglichkeit, eine Reihe von Daten über eine Infrarot Schnittstelle auszulesen. Neben einigen kommerziellen Geräten, die die Software zum Auslesen der Daten gleich mitliefern, gibt es auch die Möglichkeit, einen Lesekopf selbst zu bauen oder bereits fertig zu kaufen und diesen dann mit Tasmota zu flashen und so die Daten auf dem Handy angezeigt zu bekommen, oder in Home Assistant angezeigt zu bekommen.

2. IR Lese-Schreib Kopf

Ein guter IR Lese-Schreibkopf wird von Hicham Belmadani vertrieben. Er bietet seine Geräte auf eBay an. Auch für den Selbstbau existieren einige Anleitungen im Internet.

Mir schien es besonders praktisch, einen Schreib IR Lese-Schreibkopf zu wählen, der die gesammelten Daten über WLAN zur Verfügung stellt. Denn der IR Lese-Schreibkopf wird im Zählerschrank auf dem Smartmeter magnetische befestigt und würde dann eine Kabelverbindung zum RaspberryPi benötigen. Aus diesem Grund habe ich mich für eine Version entschieden, bei der die Daten über einen ESP01s und Tasmota verarbeitet werden. Auf diese Weise sind die Werte des Smartmeter überall abrufbar.

3. Tasmota flashen um einen Smartmeter auszulesen

Das Flashen von Tasmota ist im Internet an vielen Stellen erklärt. Da wir Tasmota aber dazu benutzen möchten, um einen Smartmeter auszulesen, können das Standard Image nicht benutzen. Wir müssen uns unsere eigenes Tasmota kompilieren, damit der notwendige Funktionsumfang vorhanden ist.

Aus diesem Grund können wir bei einem Installierten Tasmota auch nicht die Funktion benutzen, mit der man direkt aus dem WebUserInterface (UI) ein Firmware Update vornehmen kann. Das führt dazu, dass wieder das „normale“ Image aufgespielt wird. Die besonderen Funktionen, die wir benötigen, um einen Smartmeter auszulesen, sind dann nicht mehr vorhanden.

4. Flashen mit Gitpod

Am einfachsten ist es, mit Gitpod zu flashen. Es handelt sich um ein webbasierten Service, der in der ausreichenden Free Version kostenlos ist. Vorteil: ihr müsst auf eurem Rechner nichts installieren. Nach dem Anlegen eines Accounts kann es losgehen.

Auf der Tasmota Seite findet ihr einen Link, um für Euren Chrome oder Firefox Browser ein spezieller Plugin zu installieren.

Fast ganz unten auf der Gitpod Seite findet ihr einen Link, um die Erweiterung für Chrome und Firefox zu laden.

Als nächstes geht ihr auf die GitHub Tasmota Seite. Dort erscheint jetzt, wenn ihr die Extension erfolgreich installiert habt, eine grüne Gitpod Taste.

Es erscheint nun das Gitpod Logo und es dauert etwa eine Minute, bis alle notwendigen Dateien temporär in eure Extension heruntergeladen sind.

Jetzt könnt ihr die notwendigen Änderungen in der Datei user_config_override.h vornehmen. Ihr findet die Datei im Unterordner Tasmota. Dort löscht ihr alle Einträge und fügt den nachfolgenden Code ein.

#ifndef _USER_CONFIG_OVERRIDE_H_
#define _USER_CONFIG_OVERRIDE_H_

#ifndef USE_SCRIPT
#define USE_SCRIPT
#endif
#ifndef USE_SML_M
#define USE_SML_M
#endif
#ifdef USE_RULES
#undef USE_RULES
#endif

#endif  // _USER_CONFIG_OVERRIDE_H_

Nun wechselt ihr ganz nach unten in das Terminalfenster und gebt dort den folgenden Befehl ein:

platformio run -e tasmota

Es Dauer nun wieder eine Minute während der Compiler arbeitet. Am Ende erhaltet ihr eine Erfolgsmeldung und dann steht die fertige Firmware im Ordner build_output im Unterordner firmware bereit. Von dort ladet ihr Euch die beiden Dateien tasmota.bin und tasmota bin.gz per Rechtsklick herunter. So sollte es aussehen:

5. Firmware ota hochladen

NICHT VERGESSEN! Bevor ihr allerdings Eure Tasmota Firmware flshed, solltet ihr Eure Konfiguration sichern. Normalerweise geht sie nicht verloren, aber man kann ja nie wissen ;-).

Die von Euch kompilierte Firmware ist sehr wahrscheinlich in Kombination mit der auf dem ESP8266 ESP01s vorhandenen Firmware zu groß, um ota zu flashen. Ihr müsst also zunächst eine möglichst kleine Firmware flashen und erst danach die von Euch kompilierte Firmware. Unter http://ota.tasmota.com/tasmota/release/ findet ihr die gepackte Minimal-Firmware tasmota-minimal.bin.gz. Die könnte ihr direkt im Tasmota Menü over the air flashen.

Jetzt könnt ihr Eure selbst kompilierte Firmware ota (over the air) flashen. Nach etwa einer Minute sollte alles fertig sein und dann etwa so aussehen:

9 Antworten

  1. Hallo, ich benutze nachfolgenden Code, um Daten von meinen Siemens TD-351 anzuzeigen. Nur leider bekomme ich immer wieder Null-Werte angezeigt. Das betrifft aber nur für folgende Werte zu:
    1,1.8.0(@1),Wirk Bezug ET,kWh,Total_in,16
    1,1.8.1(@1),wktgs. 6-22°° Uhr,kWh,HT_Total_in,16
    1,1.8.2(@1),ab Sa13°°-Mo6°° Uhr,kWh,NT_Total_in,16

    1,2.8.0(@1),Wirk Lieferung ET,kWh,Out,16
    1,2.8.1(@1),Wirk Lieferung T1,kWh,Out_HT,16
    1,2.8.2(@1),Wirk Lieferung T2,kWh,Out_NT,16

    Der Verwendete Code:
    >D
    ;Die Kommentare im Code müssen immer am Zeilenanfang stehen und nie hinter einer Funktion.
    scnt=0
    res=0
    pcurr=0
    xTotal_in=0
    xHT_in=0
    xNT_in=0
    xTotal_out=0
    xHT_out=0
    xNT_out=0
    ;IP der S20 Steckdose
    url=“[192.168.178.45]“
    >T
    ; positv ist einfacher
    curr=#Total_in
    pcurr=0-#Power_curr
    xTotal_in=#Total_in
    xHT_in=#HT_in
    xNT_in=#NT_in
    xTotal_out=#Total_out
    xHT_out=#HT_out
    xNT_out=#NT_out
    >S
    ;curr=curr*(-1)
    ;print pcurr %pcurr%
    if xTotal_in!=0
    then
    print Total_in %xTotal_in%
    endif
    if xNT_in!=0
    then
    print NT_in %xNT_in%
    endif
    if xHT_in!=0
    then
    print HT_in %xHT_in%
    endif
    if xTotal_out!=0
    then
    print Total_out %xTotal_out%
    endif
    if xHT_out!=0
    then
    print HT_out %xHT_out%
    endif
    if xNT_out!=0
    then
    print NT_out %xNT_out%
    endif
    if upsecs%tper==0
    then
    if pcurr>260
    then
    ;=>WebSend %url% POWER1 ON
    endif
    if pcurrWebSend %url% POWER1 OFF
    endif
    endif
    >B
    ->sensor53 r
    tper=10
    >F
    scnt+=1
    switch scnt
    case 10
    scnt=0
    ends
    ; Json-Nutzlast \> per Anzeige senden
    >J
    ,“Strom_Vb_IN“:%xTotal_in%
    ,“HT_Strom_Vb_IN“:%xHT_in%
    ,“NT_Strom_Vb_IN“:%xNT_in%
    ,“Strom_Vb_OUT“:%xTotal_out%
    ,“HT_Strom_Vb_OUT“:%xHT_out%
    ,“NT_Strom_Vb_OUT“:%xNT_out%
    ;>W
    ;—–Webdisplay
    ;Wirk Bezug ET: {m} %3xTotal_in% kWh
    ;wktgs. 6°°-22°° Uhr: {m} %3xHT_in% kWh
    ;ab Sa 13°°-Mo 6°° Uhr: {m} %3xNT_in% kWh
    >M 1
    +1,3,o,0,300,,1,30,2F3F210D0A,063030300D0A
    ;1,0.9.1(@#),Zeitstempel,Uhr,time-stamp,0
    ;1,0.0.0(@1),Meter No./:,,Meter_number,0
    ;1,0.1.0(@1),Rückstellz.,,RSZ,0
    1,=h —— Strom ——
    1,1.8.0(@1),Wirk Bezug ET,kWh,Total_in,16
    1,1.8.1(@1),wktgs. 6-22°° Uhr,kWh,HT_Total_in,16
    1,1.8.2(@1),ab Sa13°°-Mo6°° Uhr,kWh,NT_Total_in,16
    ;1,=h ——- Bezug ——
    1,1.6.0(@1),Aktuelles Max IN,A+,Max_latest_in,4
    1,1.7.0(@1),Aktueller Verbrauch,W,Power_curr,3
    1,=h —— PV-Modul ——
    1,2.6.0(@1),Wirk Lieferung Max,kW,Max_latest_out,3
    1,2.8.0(@1),Wirk Lieferung ET,kWh,Out,16
    1,2.8.1(@1),Wirk Lieferung T1,kWh,Out_HT,16
    1,2.8.2(@1),Wirk Lieferung T2,kWh,Out_NT,16
    ;1,=h —— PV-Modul ————
    1,2.7.0(@1),Überschusseinspeisung,W,P_out,3
    ;1,=h —– Blind Leistung T1 ——
    ;1,3.8.1(@1),Bezug,kvarh,R_in,3
    ;1,4.8.1(@1),PV-Modul,kvarh,R_out,3
    1,=h —— Ampere ——
    1,91.7(@1),Stromwert N.,A,I_N,2
    1,31.7(@1),Stromwert L1,A,I_L1,2
    1,51.7(@1),Stromwert L2,A,I_L2,2
    1,71.7(@1),Stromwert L3,A,I_L3,2
    1,=h —— Voltage ——-
    1,32.7(@1),Voltage level L1,V,V_L1,2
    1,52.7(@1),Voltage level L2,V,V_L2,2
    1,72.7(@1),Voltage level L3,V,V_L3,2
    1,=h —– Blind Leistung T1 ——
    1,3.8.1(@1),Bezug,kvarh,R_in,3
    1,4.8.1(@1),PV-Modul,kvarh,R_out,3
    1,=h —— Frequenz ——
    1,14.7(@1),Hz,Hz,Hz,2
    1,=h —– Leistung ——-
    1,36.7.0(@1,Power_L1,kW,kW_L1,2
    1,56.7.0(@1,Power_L2,kW,kW_L2,2
    1,76.7.0(@1,Power_L3,kW,kW_L3,2
    1,16.7.0(@1,Σ_L1+L2+L3,kW,kW_L1+L2+L3,2
    ;1,=h —— Gas——
    ;1,1.8.7(@1),Meter No./:,,Meter_number,0
    ;1,C.60.4.8(@1),Bezug ,m³,D_GasIN,16
    ;1,=h —— kum ——
    1,1.2.0(@1),Kum. Max,A+,Kum_in,2
    1,2.2.0(@1),Kum. Max,A-,Kum_out,2
    1,1.4.0(@1),lauf. Max,A+,Lauf_in,2
    1,2.4.0(@1),lauf. Max,A-,Lauf_out,2
    1,3.7.0(@1),reactive power Q+,kvar,Q_in,3
    1,4.7.0(@1),reactive power Q-,kvar,Q_out,3
    #

  2. In der aktuellen Version gibt es keine Datei „user_config_override.h“. Wie kann ich eine solche erzeugen? Bei direktem Compilieren werden die Daten meines Smart-Meters eBZ DD3 nicht übertragen. Wie muß ich vorgehen, damit das Compilieren über Gitpod funktioniert?

  3. Hallo,
    ich habe ein Fehler bei erstellen der Firmware. Kiege immer folgenden Fehler
    ** [.pio/build/tasmota/src/tasmota.ino.cpp.o] Error 1
    Kann mir da einer Helfen?

    Liebe Grüße

  4. Hallo kann mir jemand helfen mit meinem Landis Gar ZMD120AP ich finde leider nirgends ein Skript und selber habe ich keine Ahnung wie man eins erstellt

    Danke
    D

  5. Hi, ich habe meinen ESP zerschossen und wollte ein neues Image auf einen neuen ESP aufspielen. Kann mir jemand ein aktuelles Image erstellen oder zur Verfügung stellen? Meine Bemühungen sind bis jetzt gescheitert, da ich nach dem Aufspielen des Images keine Verbindung zum ESP erhalte.

        1. Hi, tut mir leid, dass ich so spät antworte, ich hoffe ich kann dir helfen:
          Schau mal da: https://www.tasmota.info/geraete-retten/
          Eine Kurzanleitung habe ich hier:
          Du musst den ESP ausbauen, und zum neu flashen einen Breadboard Aufbau machen nach:
          https://edistechlab.com/esp8266-01-einfach-erklaert/?v=3a52f3c22ed6
          Flashen mit Tasmotizer: „tasmota_wiederherstellung.bin“
          -> finde ich grade nicht im Netz, die .bin du hier herunterladen:
          https://drive.google.com/open?id=1Fqzbvkof2gOqE8oWIKIX99i51UGZsXUb&usp=drive_fs
          mit Handy WLan Netz tasmotaxxxx anmelden
          http://192.168.4.1/
          dann Firmware tasmota-minimal.bin.gz flashen
          jetzt kannst du den ESP wieder ins Interface einbauen und nach der obigen Anleitung vorgehen.
          Gib mir bitte Bescheid, obs geklappt hat, dann kann ich den Google Drive Ordner wieder löschen 😉
          Für Fragen stehe ich gerne zur Verfügung.
          Viel Erfolg.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert