Datenspeicherung auf Memorycard über Tasmota, Smartmeter-werte

Hallo,
ich lese mein Smartmeter über den Volkszähler Lesekopf problemlos aus.
Es werden die Werte über den Browser immer aktuell angezeigt.
Diese Werte möchte ich nun auf eine SD-Karte speichern.
Eine SD-Karte habe ich auch erfolgreich eingebunden, diese kann über ein kopiertes Script Temperatur- und Feuchtigkeitswerte alle 60sec speichern.
Ich habe bereits die Script-Language für Tasmota durchgearbeitet komme aber nicht dorthin wo ich will:
Ich hätte gerne die Werte vom Smartmeter, die mir ja im Browser gezeigt werden, auf die SD-Karte gespeichert mit Datum und Zeitangabe (Minutenrhythmus)
Kann mir jemand die entsprechende Lösung oder Lösungsansatz für die Binärdatei geben?
Vielen Dank

Hallo,

nun habe ich nach vielem Ausprobieren und Lesen der Tasmota Dokumentation eine Lösung für mich gefunden:

Wichtig ist dass

die Binärdatei die notwendigen Definitionen beinhaltet und

die Memorycard, bzw das Modul richtig angeschlossen ist und in Tasmota konfiguriert wird, bei mir :

am D1 Mini (=ESP8266):

D2 GPIO04 SD Card CS

D6 GPIO12 SPI MISO

D7 GPIO13 SPI MOSI

D5 GPIO14 SPI CLK

und

das so im Tasmota Menü so angegeben wird.

Wichtige Ergänzungen in die Standard- Tasmota-Binärdatei, bei mir folgende:

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

#define SDCARD_DIR

#define USE_SCRIPT_FATFS_EXT

#define USE_SCRIPT_FATFS

#define USE_UFILESYS

#define USE_SDCARD

#define SDCARD_CS_PIN 4

#define USE_FEXTRACT

#define USE_SPI

#endif

Diese Funktionen sind in den meisten vorkompilierten Binärdateien nicht enthalten (Es gibt spezielle Binärdateien für Smartmeter, welche sie schon haben?)

Diese defs werden in die user_config_override.h z.B. `` über das Programm Visual Studio code eingebracht und kompiliert , wie das geht wird z.B. in mehreren Videos auf Youtube gezeigt.

USE_SCRIPT ist wichtig um ein Script zu schreiben und zu speichern

USE_SML ist wichtig zum Einlesen eines Smartmeters ... etc etc ...,

ob alle ergänzten defs notwendig sind, kann ich nicht sagen, aber mit diesen Erweiterungen funktionierts bei mir.

Wie Tasmota dann aufgerufen wird setze ich als bekannt voraus oder muß wieder über youtube gefunden werden.

In der Tasmotaoberfäche muss nun unter Configuration —> Configure Module Generic(0) ausgewählt werden, damit nach dem Neustart alle GPIOS gesteuert werden können.

Also nach Neustart und Configure Module kann man die GPIOs wie folgt besetzen:

![|453x739](file:///tmp/lu1870zjo24w.tmp/lu1870zjo280_tmp_923c4c17889dedf8.png)

(Anmerkung: einen eigenen Namen für den Tasmota Sensor kann man unter Configuration — Configure other – vergeben.)

Wenn alles passt und der Sensor restartet wurde müßte nach Aufruf von Tasmota folgendes Menü auftauchen:

![|490x336](file:///tmp/lu1870zjo24w.tmp/lu1870zjo280_tmp_3c9499d1563e223e.png)

Nun können über Tools Aufruf folgende Punkte aufgerufen werden ------>

![|459x395](file:///tmp/lu1870zjo24w.tmp/lu1870zjo280_tmp_449179103065408.png)

über Console können direkte Befehle eingegeben werden,

Edit Script öffnet das Script Menü ---->

![|582x411](file:///tmp/lu1870zjo24w.tmp/lu1870zjo280_tmp_fbd3aa3bb5617079.png)

in welches man das unten angegebene Script eingeben kann, bzw angepasst für den jeweiligen Smartmeter (passende Scripte findet man im Github für Tasmota)

mein Script ohne Gewähr (mein Smartmeter ist ein eHZM, Zweirichtungszähler!

D 32

;Variablendefinitionen und Anfangswertsetzung 0

ener=0

verb=0

eing=0

fr=0

res=0

cnt=0

Ende=0

; Variablen alle 60 sec

ener=0 60

verb=0 60

eing=0 60

str=„“

B

;Smartmeteraufruf nach Booten

->sensor53 r

M 1

; M1 Deklaration Meter 1, M2=Meter2 etc

+1,3,s,0,9600,SM01

;= 1=SM1, 3=RX an GPIO3, s bedeutet smartmeter, 0=Flag, 9600 Baud Übertragungsrate,

;SM01 Smartmetername kann frei gewählt oder weggelassen werden

1,77070100600100FF@#,Zaehlernummer, ,serialnr ,16

1,77070100010800FF@1000,Gesamtverbrauch,kWh,pos_wirk_tariflos,1

1,77070100100700FF@1,Momentanverbrauch,W,momentanwirkleistung,0

1,77070100020800FF@1000,eingespeiste Energie,kWh,neg_wirk_tariflos,1

1,77070100020802FF@1,Momentaneinspeisung,W,momentanwirkleistung,0

1,7707010001080061@1000,Wochenwert,kWh,pos_wirk_week_tariflos,1

; Festlegen des Namens der Speicherdatei

fl2(„SMeter121.txt“)

; zeigt alle Dateien im Ursprungsverzeichnis nach Aufruf (Manage file system)

fr=fo(„/“ 0)

for cnt 1 100 1

res=fr(str fr)

if res>0

then

print %cnt% : %str%

else

break

endif

next

fc(fr)

T

; Benennen und Sammeln der Werte

ener=SM01#pos_wirk_tariflos

verb=SM01#momentanwirkleistung

eing=SM01#neg_wirk_tariflos

S

; alle 60 sec

if upsecs%60==0

then

; Datei öffnen zum schreiben

fr=fo(„SMeter121.txt“ 2)

; Zusammenstellung des Strings

str=s(time)+„\t“+s(ener)+„\t“+s(verb)+„\t“+s(eing)+„\t“+„\n“

; welcher an das Ende der Datei geschrieben wird

res=fw(str fr)

; Datei wird geschlossen

fc(fr)

endif

; löscht file wenn sie nicht mehr gebraucht wird. hierfür muss ; entfernt werden

;fd(„test.txt“)

Wenn das Script über Edit Script eingegeben wurde, oben das Häckchen bei – enable script — aktiviert wurde, dann auf save gedrückt wurde, am besten restart system betätigen im Main Menu.

Übrigens dauert es , wenn man auf manage file system drückt ca 10-20sec! bis das Untermenü mit den Dateien auftaucht!

Im Main Menu werden -wenn das Script enabled und gespeichert wurde- sekundenweise die aktuellen Daten des Smartmeters angezeigt.

Wenn man im Dateien-Menü eine Datei anklickt wird die Speicherung im Downloadverzeichnis angeboten. Es ist eine Textdatei mit erster Zahl für die Zeit, entspricht Minuten nach Mitternacht (600=10 Uhr, keine Sommerzeit!), die 2.Zahl ist der Gesamtverbrauch, die 3. Zahl der Momentanverbrauch, die 4. Zahl die eingespeiste Energie. Wegen Balkonkraftwerk bei mir kommen negative Zahlen bei Momentanverbrauch vor.

Beispiel:

660.00 1611.90 -943.00 126.00

661.00 1611.90 -907.00 126.00

662.00 1611.90 -961.00 126.00

663.00 1611.90 -962.00 126.00

664.00 1611.90 -953.00 126.00

665.00 1611.90 -948.00 126.00

666.00 1611.90 -947.00 126.00

667.00 1611.90 -942.00 126.10

668.00 1611.90 -950.00 126.10

669.00 1611.90 -963.00 126.10

---->660 = 11Stunden nach Mitternacht = 11 Uhr=12 Sommerzeit

—>1611.90 = Gesamtverbrauch in kWh (Zählerstand)

---->-943 = Momentanverbrauch in Watt, negativ ist Einspeisung (Balkonkraftwerk)

—>126.10 = eingespeiste Energie in kWh (aus Balkonkraftwerk)

Vielleicht kanns jemand brauchen.

Viel Erfolg damit