D0 Zähler SML auslesen mit Tasmota

  • Wie sieht / sah denn euer Skript aus in Tasmota für den LJ12A3-4-Z/BX Inductive Proximity Sensor Switch NPN?

  • ja, es stimmt, dass ich GPIO 13 und 15 verwende, habe es aber auch schon auf 3 / 1 versucht. Mit Flag 16 und 0 habe ich auch schon rumgespielt. Pullup Widerstand vorhanden. Es wundert mich ja auch, dass ich nicht wie erwartet 77 07 01 bekomme sondern 77 7b 4a

    Da ich derzeit auch den Fehler zwischen Tasmota und Zähler vermute habe ich mal den IR Lesekopf vor eine reflektierende Oberfläche gehalten und in Python mit serial.write was auf Tx geschrieben und das ganze mit serial.read auf Rx wieder eingelesen. Es kam exakt das an, was ich gesendet habe.

    so, ich habe mal einen anderen Lesekopf drangehängt und BaBääm kamen die richtigen Werte an. Ich muss also nochmals an den ersten Lesekopf dran. Lötstation ist schon eingeschaltet ;)  

    Dann kann es ja weitergehen. Vielen Dank für die ganzen Rückmeldungen.

  • Hi alle

    Hier mal ein Beispiel für eine GoogleChart Grafik bei einem Zähler (nur Solar Einspeisung)

    Wochengrafik, Tagesgrafik, Tabelle für letzte Woche, sendet jede Woche eine Ertragstabelle per email.

    Die Grafiken zeigen die Werte bei Maus Over an.

    ...

    Hi gemu2015. Du hattest mir ja dein Google Chart Tasmota Beispiel auf Github geteilt, danke dafür :). Ich habe nun noch einen weiteren Chart erstellt, der mir die Leistung des Zählers für die letzten 4 Stunden (alle 15s = Array mit 960 Werten) anzeigt. Das funzt ansich auch schon gut. Allerdings komme ich mit der X-Achse nicht klar. Am besten wäre es, wenn dort der Timestamp angezeigt wird. Das bekomme ich nicht hin, habe auch mit cntN/x rumprobiert. Kann mir da jemand weiterhelfen? Die billigste Lösung wäre natürlich einfach "-4|-3|-2|-1|0".

  • Hallo,

    ich habe letzte Woche einen Norax 3D Stromzähler eingebaut bekommen und bin natürlich direkt mit einem Wemos D1 mini, einem IR Transistor (TL1838) und Tasmota an das gute Ding herangetreten.

    Ich bekomme allerdings nur Blödsinn ausgegeben wenn ich mir die raw sensor daten anschaue:

    Die IR Sensor Hardware scheint aber an sich vernünftig auszulesen, wenn ich mir das ganze mit einem Logic analyser anschaue, sehe ich folgendes (sieht für mich nicht nach rauschen aus)

    Das Tasmota Skript (für den Anfang ganz simpel):
    >D

    >B

    =>sensor53 r

    >M 1

    +1,3,s,0,9600,Haus

    #

    Der GPIO Pin stimmt und die Baudrate stimmt auch (laut Bedienungsanleitung des Stromzählers)

    Was habe ich übersehen, hat jemand eine Idee?

  • Hallo zusammen,

    ich habe einen tasmota mit und möchte meinen iskra MT681 auslesen.

    Ich bekomme auch folgende ausgabe:

    ich kann leider keine funktionierendes Script erstellen, ich denke, dass es an dem SML-Status 40 nach der ff liegt.

    Code
    >D
    >B
    =>sensor53 r
    >M 1
    +1,14,s,0,9600,MT681
    1,77070100010800ff@1000,Total Consumed,KWh,Total_in,3
    1,77070100100700ff@1,Current Consumption,W,Power_cur,0
    1,77070100000009ff@#,Service ID,,Meter_id,0|
    #
  • Hi,
    ich denke Du bekommst die Daten noch nicht sauber rein. So lange Du noch nicht die 8 Bytes (1b 1b 1b 1b 01 01 01 01) am Anfang des Telegramms rein bekommst brauchst Du nicht mit dem Script rumexperimentieren. Ich hatte anfangs auch solche Probleme. Schaum mal auf deinen IR Lesekopf. Was für einen benutzt du? hat der Pullup Widerstand, ist die Bauteile richtig ausgelegt und auch richtig verschaltet bzw. verlötet (das war damals mein Problem)

  • ich habe mir die Werte nochmals genauer angeschaut, so schlecht sehen die gar nicht aus. Da kommen Werte für 18.0 (gesamt) und 18.1, 18.2 ist null. beim aktuellen Verbrauch steht was drinnen. Also Kommando zurück,

  • Hi zusammen,

    ich kämpf seit gestern, beim Build von dem tasmota-image für sml

    vielleicht kann mir jemand auf die sprünge helfen.

    der fehler wird von

    Zitat

    #ifndef USE_SCRIPT
    #define USE_SCRIPT
    #endif

    verursacht aber ich kapier nicht was für ein

    Code
    undefined reference to `ScriptServeFile()

    gemeint ist bzw. wo ich des referenziere

    Code
    /Users/Andy/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld: .pio/build/tasmota/src/tasmota.ino.cpp.o:(.text._Z6Xdrv10h+0x4c): undefined reference to `ScriptServeFile()'
    collect2: error: ld returned 1 exit status
    *** [.pio/build/tasmota/firmware.elf] Error 1

    danke

  • erstmal danke für die Hilfe, ich hätte mir sonst noch ein wolf gesucht.

    so ein stück weiter, neue probleme.

    Ich habe den Volkszähler von Hichi an einem Wemos di mini (gpio 12 u 14) mit Tasmota SML an einem DWS7420.1.G2 zähler.

    Pin ist am zähler eingegeben und pinabfrage habe ich deaktiviert (hier ne zwischenfrage, kann man den pin via "schreib tx" senden? wenn ja wie? für den fall eines stromausfalls, damit man den nicht händisch eingeben muss). das ganze versuche ich dann später in meim Fhem via MQTT auszuwerten und zu visualisieren.

    dann zum eigentlichen problem:

    in tasmota wird mir nur der gesamtverbrauch angezeigt, aber keine laufenden werte, oder vergangenheit (7tage 1 monat usw)

    im zähler wird bei log starten einige werte angezeigt, sobald ich mit sensor53 d1 starte. das dürfe doch eigentlich mangelder sende konfiguration garnicht gehn. :/

    das script was bis jetzt etwas anzeigt (ergebnis sie screeshot)

    Code
    >D
    >B
    =>sensor53 r
    >M 1
    +1,12,s,0,9600,SML
    1,77070100010800ff@1000,Total Consumed,KWh,Total_in,3
    1,77070100100700ff@1,Current Consumption,W,Power_cur,0
    1,77070100020800ff@1000,Total Delivered,KWh,Total_out,3
    1,7707010060320101@#,Service ID,,Meter_id,0
    #

    Logausgabe

    was mir hier auffällt ist das bei zwei der aufeinander folgenden zeilen(

    Code
    77 01 0b 0a 01 44 5a 47 

    ) hex statt dual/binär angezeigt wird.

    Aber die anderen zeilen vermisse, oder bin zu blöd sie zu erkennen. ich geh mal davon aus ich habe noch einen grundlegenden fehler eingebaut. seh den aber nicht mehr, da mir jetzt bald der kopf schwirrt. viel input in kurzer zeit. ?(

    Ansonsten hut ab vor der hier geleistet entwickler arbeit. :thumbup:

    Riesen dank an euch alle ;)

    *************************lösung**************************

    bedienungsanleitung vom zähler lesen!

    in den einstellungen vom zähler gibt des den punkt "inf" für informationen.

    Inf on ist erweiterete informationen

    inf off ist für eine verkürzte Informationsausgabe

  • Haben sie für das Auslesen der ersten Zeile eine Lösung gefunden?

    Vielen Dank für die aktuelle Lösung.

  • Moin zusammen,

    bitte um Hilfe.

    Möchte gerne meine Zählerwerte ablesen und bekomme ich nur folgende Daten ins Tasmota:

    Der Zähler ist ein eHZ-PW (Datenblatt).

    Mein Script sieht wie folgt aus:

    Da sind aber keine Daten angezeigt...was mache ich da falsch?

  • Hallo einen Gruß und meinen Dank an all die hier ihre Infos und Tipps teilen!

    Vieles konnte ich somit besser verstehen und in meinem Projekt IR-Lesekopf, Tasmota, Home Assistant, zwei Richtungs-Stromzähler "elster AS1440" mit angeschlossenem Balkonkraftwerk, umsetzten. Einiges verstehe (Tasmota Dummy) ;) ich auch nicht... aber Ich bekomme viele brauchbare Daten, siehe Anhang WEB-UI und Script (Optimierungen gerne erwünscht), nur leider haben die über MQTT erstellten Sensoren keine Maßeinheiten... Was fehlt? Im Anhang "Ansicht Sensoren Home Assistant" sieht man was ich meine, z.b. bei "sensor.as1440_bk_einspeisung" (AS1440_BK_Einspeisung)

    fehlt in hier bei unit_of_measurement: k h. "nicht vollständig und bei anderen fehlen die Maßeinheiten ganz.

    Und, wie bekommt man im WEB UI die Trennzeichen in der Datums- oder Zeitanzeige hin, geht das überhaupt? und wenn ja wie??

    Was ich aber mit den vielen Tipps und Hinweisen herausfinden konnte, ist das mein BK an der falsche Phase angeschlossen ist und ich somit meinen erzeugten Sonnenstrom ins Netz einspeise.... Das muss ich in meiner Hausverkabelung noch ändern. Hierzu muss eine Leitung einmal quer durchs Haus verlegt werden, aber da bin ich dran, wollte eh in meiner Garage Drehstrom haben und somit bekomme ich dann alle drei Phasen zur freien Auswahl und Anpassung für die Einspeisung..

    Bedanke mich jetzt schonmal für eure Fragen, Kommentare, Tipps & Tricks und die Sachdienlichen Hinweise.... Danke

    Hier meine Script:

    (Tasmota Version 10.1.0)

    >D

    scnt=0

    res=0

    >B

    =>sensor53 r

    >F

    ; count 100ms

    scnt+=1

    switch scnt

    case 3

    ;set sml driver to 300 baud and send /?! as HEX to trigger the Meter

    res=sml(1 0 300)

    res=sml(1 1 "2F3F210D0A")

    ;1700ms later \> Ack and ask for switching to 9600 baud

    case 20

    res=sml(1 1 "063035300D0A")

    ;300ms later \> Switching sml driver to 9600 baud

    case 23

    res=sml(1 0 9600)

    ;Restart sequence after 55x100ms

    case 55

    ; 5500ms later \> restart sequence

    scnt=0

    ends

    >M 1

    +1,3,o,1,9600,,1,AS1440

    1-1:0.9.2(@1),Datum in JJMMTT,,date-stamp,0

    1-1:0.0.1(@1,Zähler-Nr.,,Geraete-ID,0

    1-1:0.0.0(@1,Serien-NR.,,Serial-ID,0

    1-1:1.8.0(@1,Σ-Zählerstand 1.8.0,kWh,HT_Total_in,3

    1-1:2.8.0(@1,Σ-Einspeisung 2.8.0,kWh,BK_Total_out,3

    1,=hAktueller Monat

    1-1:1.8.1*01(@1,Strom,KWh,HT_Total_in,3

    1,=hAktuelle Last pro Phase

    1-1:1.7.0(@1,Σ_Phasen_L1+L2+L3,kW,kW_L1+L2+L3,3

    1-1:21.7.0(@1,Phase_L1,kW,kW_L1,3

    1-1:41.7.0(@1,Phase_L2,kW,kW_L2,3

    1-1:61.7.0(@1,Phase_L3,kW,kW_L3,3

    1,=hHT-Verbrauch letzten 3 Monate

    1-1:1.8.0*06(@6,Verbrauch-1,kWh,Total_In,3

    1-1:1.8.0*05(@5,Verbrauch-2,kWh,Total_In,3

    1-1:1.8.0*04(@4,Verbrauch-3,kWh,Total_In,3

    1,=hBK-Einspeisung letzten 3 Monat

    1-1:2.8.0*01(@1,Monat-1_BK,kWh,Total_in,3

    1-1:2.8.0*02(@2,Monat-2_BK,kWh,Total_in,3

    1-1:2.8.0*03(@3,Monat-3_BK,kWh,Total_in,3

    #

  • Habe doch noch in der Console mit sensor53 d1 nachgeschaut und mir fällt folgendes auf:

    13:58:36.370 CMD: sensor53 d1

    13:58:36.377 MQT: stat/tasmota_0C2EDD/RESULT = {"Time":"2022-04-26T13:58:36","SML":{"CMD":"dump: 1"}}

    und liest diese Daten vom Zähler aus:

    14:00:07.770 : !

    14:00:11.746 : 0/ELS5\@V9.31

    14:00:12.785 : 1-1:F.F(00000000)

    14:00:12.819 : 1-1:0.0.0(03271094)

    14:00:12.852 : 1-1:0.0.1(00425772)

    14:00:12.882 : 1-1:0.0.2(00000444)

    14:00:12.915 : 1-1:0.9.1(140012)

    14:00:12.941 : 1-1:0.9.2(220426)

    usw.....

    14:00:15.953 : 1-1:1.8.7*06(0000000.000*kWh)

    14:00:15.000 : 1-1:1.8.7*05(0000000.000*kWh)

    und dann kommt diese Zeile:

    14:00:18.097 : 1-8"2?p0gq2_p0apxppr22:2?"?"2?"0wnb?h0yXb?j0whb_r1-1:2.8.3*06(0000000.000*kWh)

    14:00:18.145 : 1-1:2.8.3*05(0000000.000*kWh)

    läuft dann weiter und beginnt dann mit !

    14:00:18.757 : !

    14:00:22.743 : 3/ELS5\@V9.31

    und dann kommt diese Zeile erneut

    14:00:26.961 : 1-1:1.8.7*06(0000000.000*kWh)

    14:00:29.115 : 1-1:1.8.7*05(0000000.000*kW7t2?`"vZgtb_bbh0$pbb20b"X?p0 2oxbWv"ojHH/b2Hob2L_=_]x1-1:2.8.3*06(0000000.000*kWh)

    14:00:29.165 : 1-1:2.8.3*05(0000000.000*kWh)

    14:00:29.213 : 1-1:2.8.3*04(0000000.000*kWh)

    usw. usw.

    das läuft dann durch bis

    14:00:29.756 : 1-1:0.2.0(F9DB)

    14:00:29.767 : !

    14:00:33.740 : 9/ELS5\@V9.31

    14:01:13.820 : !

    14:01:17.752 : ?/ELS5\@V9.31

    14:01:24.768 : !

    14:01:28.743 : 0/ELS5\@V9.31

    in dieser Zeile gibt es immer nicht verständlich ausgäbe:

    1-1:1.8.7*05(0000000.000*kW7t2?`"vZgtb_bbh0$pbb20b"X?p0 2oxbWv"ojHH/b2Hob2L_=_]x1-1:2.8.3*06(0000000.000*kWh)

    wo liegt der Fehler??

    Freue mich auf jeden Tipp!!

  • Hallo zusammen,

    kann man einen Zähler mit 2 verschiedenen Pullsequenzen hintereinander auslesen, damit ich Zählerstände und aktuelle Leistung bekomme?

    Es ist ein EMH DMTZ-XC

    Mit dem Code lese alle Zählerstände aus

    Code
    +1,3,o,0,300,OBIS,1,30,2F3F210D0A,063030300D0A

    Mit diesem Code die aktuelle Leistung

    Code
    +1,3,o,0,300,OBIS,1,30,2F34210D0A,063030300D0A
  • Hallo zusammen,

    kann man einen Zähler mit 2 verschiedenen Pullsequenzen hintereinander auslesen, damit ich Zählerstände und aktuelle Leistung bekomme?

    Es ist ein EMH DMTZ-XC

    Mit dem Code lese alle Zählerstände aus

    Code
    +1,3,o,0,300,OBIS,1,30,2F3F210D0A,063030300D0A

    Mit diesem Code die aktuelle Leistung

    Code
    +1,3,o,0,300,OBIS,1,30,2F34210D0A,063030300D0A

    Moin,

    schau mal ob es so geht:

    Code
    +1,3,o,0,300,OBIS
    1,30,2F3F210D0A,063030300D0A
    1,30,2F34210D0A,063030300D0A
  • Hi, leider bekomme ich so garkeine Ausgabe


    Ich habe jetzt den unten stehenden Code um den Zähler auszulesen. Es wäre ja jetzt cool wenn das Skript jede Minute einfach zwischen

    Hin und her schalten würde.

    Code
    res=sml(1 1 "2F3F210D0A")
    ;res=sml(1 1 "2F34210D0A")