D0 Zähler SML auslesen mit Tasmota

  • Hi meierchen006,

    ich meinte diese Ansicht, die in der PDF-Doku zu sehen ist:

    Dachte das wäre deine Liveansicht, aber die hast du wahrscheinlich nur für die Doku einfach dreigeteilt? Sprich bei dir in der WebUI stehen alle Werte auch untereinander, oder?

    Gruß und Danke

    Waldemar

  • Hallo zusammen,

    ich lese hier schon eine Weile mit, in der Hoffnung meinen eHZ auch auslesen zu können.

    Mein Setup ist ein ESP32 NodeMCU mit einem vz-Schreib/Lesekopf. Geflasht mit Tasmota (arendst). Der eHZ ist ein "APATOR 12EC3".

    Soweit so gut.

    Hier mein Skript...

    Spoiler anzeigen

    hab schon viel mit den Werten rumgespielt. Das war bisher die einzige Config, mit der ich auch Werte aus meinem Zähler rausbekommen haben.

    Und jetzt mein Problem. Die Werte laufen absolut nicht stabil. Hier mal ein paar Beispiele....

    Spoiler anzeigen

    Kann mir da jemand einen Tipp geben was ich falsch mache oder noch probieren kann. Wichtig wäre mir nur die 1.8.1 und 1.8.2 auslesen zu können...

  • Dane Hm. Die Baudrate ist natürlich sehr langsam bei dem Zähler. Hast du bereits mit der TX Interval Zeit gespielt> Länger oder kürzer??

    Manche Zähler erwarten das ACK innerhalb von einer bestimmten Zeit. Ist diese zu lang senden sie nicht mehr. Ansonsten kann ich mir nur äußere Umstände vorstellen. Evtl. Streulicht oder Linse nicht direkt auf Empfang/Sende Einheit? Evtl. verdreht um 180°? Kabelbruch?

    Keine Ahnung ob das funktioniert aber man könnte es mal ausprobieren. Allerdings müsstest du:

    Code
    #define USE_SML_SCRIPT_CMD

    noch zusätzlich beim kompilieren hinzufügen.


    Mehr Informationen hierzu findest du unter: https://tasmota.github.io/docs/Smart-Meter-Interface/

  • sunburstc Danke für die Tips. Das TX-Intervall hab ich schon verändert. Bringt aber nichts. Was aber seit heute früh was gebracht hat, ist eine leicht verdrehte Auflage vom IR-Kopf. Zumindest sind die Empfangsdaten jetzt stabiler. die Werte für 1.8.1, 1.8.2, 0.0.1, 0.0.0 und 0.2.0 krieg ich fast immer fehlerfrei. Ich will jetzt noch auf einen Wemos D1 mini pro wechseln (wegen ext. Antenne). Am WE werde ich umbauen und mit deinem Script mal testen...

  • Ich muss mein altes Gaszähler Projekt Neu Kombinieren bzw. Neue .bin erstellen da Gaszähler geändert hat. (Divisións Faktor)

    Leider existiert meine Arduino Umgebung nicht mehr und möchte dies Online erledigen.

    (xsns_95_sml.ino) noch vorhanden)

    Via: Tasmota Dev: https://gitpod.io#https://gith…-Tasmota/tree/development

    • Habe ich keine Ahnung wie das Online funktioniert. (Habe nicht mal rausgefunden, wie ich das Kompilierung starte)
    • Der Umbau auf die Skript Version (xsns_53_sml.ino ) ist auch total an mir vorbei gegangen da meine Zähler Projekte ja funktionierten. (Strom,Gas,Wasser,Regen)

    Wer kann mir helfen bzw. schritt für schritt Anleitungen einerseits zur Online Kompilierung : https://gitpod.io#https://gith…-Tasmota/tree/development und deren Konfiguration und umbau auf die Neuste Skript Version.

  • sunburstc Heute habe ich mal ein wenig umgebaut und auch auf einen ESP8266 gewechselt. Hab alles vernünftig verdrahtet / verlötet (zuvor hatte ich alles über ein Steckboard) und nochmal getestet und probiert. Ganz entscheidend war jetzt die Lager von meinem IR-Kopf. Da spielen schon kleine Änderungen eine große Rolle. Die schlechten Ergebnisse zuvor, schiebe ich auf das Steckboard und die schlechte Verbindungen.

    Für meinen Zähler "APATOR 12EC3" in Verbindung mit einem Wemos d1 mini und dem IR-Kopf von vz funktioniert es mit dieser Meter Declaration bei mir jetzt am besten. Die Werte sind jedesmal sauber zu lesen und laufen stabil.

    +1,13,o,0,300,STROM,15,32,2F3F210D0A,063030300D0A

    Evtl. kann mir einer noch den letzten Hex-Wert erklären, was der genau bedeutet und wie dieser zu verstehen ist. vor allem das 30 30 30.

    Danke

  • Dane

    Top! Viel Spaß damit!

    063030300D0A

    ist ein ACKnowledge. > Hex -> ASCII

    Die letzten 2 paare also 0d 0a ist ein LF CR.

    Also Zeilenumbruch.

    Kommt alles aus der Modem Kommunikation.

    Mit dem ersten HEX String weckst du deinen Zähler auf und sagst: Hey, gib mir deine Daten. Der Zähler antwortet: Ok, ich bin bereit, und du?, Und du antwortest wieder: Ja ich auch. Und dann sendet der Zähler seine Daten.

    :D

    Also das ist jetzt mal ganz vereinfacht dargestellt.

    Es gibt Zähler, die zusammen mit dem ACK noch eine Änderung der Baudrate zulassen. Dann findet die Kommunikation genauso statt, nur das du als Antwort sagst: "Ja, bin bereit, schick mir die Nachricht aber mit 9600Baud".

    Und der Zähler schickt sie dann statt mit 300 mit 9600.

    Die Anfrage vorher findet allerdings noch mit 300 Baud statt.


    Ein Beispiel hierfür ist dieser Zähler (siehe >F Sektion):

    https://tasmota.github.io/docs/Smart-Met…res2r2sfcs-obis

  • Wolfi

    Vielleicht hilft dir das weiter: HowTo

    So möchte mich nochmals bedanken für den Tipp!

    Super Anleitung mein Dank an die Macher!

    Konnte so schnell die Plattform (VS) installieren und mein altes Projekt Kombinieren!

    Und funktioniert.

    Was ich allerdings noch nicht rausgefunden habe.

    1.Scripting dauerhaft zu Speicher? (D1 mini NodeMcu mit Esp8266_12F 4MB)

    Kann der das nicht oder habe ich noch einen Fehler? (configuration Speicher?)

    2. Ausführliche wenn möglich deutsche Doku Scripting?


  • Danke! Habe es damals geschrieben, damit man nicht das halbe Forum durchsuchen muss, um zu verstehen wie es funktioniert.

    1. Wieso? Was heißt denn dauerhaft? Normalerweise ist das Script nach einem Neustart oder PowerOn weiterhin da wo es hingehört und aktiv.

    2. Leider gibt es bisher nur die Doku und Beispiele, die auf der tasmota Docs Seite zu finden sind. Allerdings bist du herzlich dazu eingeladen, die Doku zu übersetzen und zu erweitern. =)

  • Danke! Habe es damals geschrieben, damit man nicht das halbe Forum durchsuchen muss, um zu verstehen wie es funktioniert.

    1. Wieso? Was heißt denn dauerhaft? Normalerweise ist das Script nach einem Neustart oder PowerOn weiterhin da wo es hingehört und aktiv.

    Wenn ich das Script im Webinterface eingebe und speichere. (und x Skript aktivieren) ist es nach den Nächsten Neustart des Wemos verschwunden.


    Hat es was mit dem zu tun : ??

    HOW TO: TASMOTA SML

    Wer die nicht notwendigen 4MB Flashspeicher eines D1 Mini oder NodeMCU verwenden möchte, kann in der PlatformIO.ini oder noch besser in der PlatformIO_override.ini die Zeile: “ -Wl,-Teagle.flash.1m.ld ” suchen und diese mit einem “;” auskommentieren und durch: “-Wl,-Tesp8266.flash.4m1m.ld ” ersetzen.

    Die meisten Sonoff bzw. Shelly Hardware haben nur 1MB Flashspeicher. Deshalb ist Tasmota so programmiert, das alles auch mit 1MB funktioniert

    diese Zeile kann ich bei mir nicht finden!

  • Hallo,

    ich verfolge den Thread schon länger und konnte mit dessen Hilfe auch meinen alten Zähler auslesen.

    Vielen Dank an die Autoren!

    Jetzt habe ich einen neuen Zähler erhalten, einen EMH ED300L.

    Auch diesen kann ich mittlerweile auslesen, nur der Wert für den momentanen Verbrauch fehlt.

    Ich habe mir also die Pin schicken lassen und kann damit auch den momentanen Verbrauch anzeigen.

    Allerdings ist nach 2 min Schluss, die Anzeige fällt zurück in die wechselnde Anzeige Verbrauch/Einspeisung.

    Ich habe die Bedienungsanleitung gelesen und dort steht auch drin, dass "wenn keine weitere Eingabe erfolgt" über die Aufruftaste, dass dann wieder in den Normalbetrieb gewechselt wird. Was bei mir bedeutet, in der zweiten Zeile wird nichts angezeigt.

    Weiß jemand von euch, wie ich es bei diesem Zäher hin bekomme, dass dauerhaft in der zweiten Zeile der momentane Verbrauch angezeigt wird?

    Martin

  • Hat es was mit dem zu tun : ??

    HOW TO: TASMOTA SML

    Wer die nicht notwendigen 4MB Flashspeicher eines D1 Mini oder NodeMCU verwenden möchte, kann in der PlatformIO.ini oder noch besser in der PlatformIO_override.ini die Zeile: “ -Wl,-Teagle.flash.1m.ld ” suchen und diese mit einem “;” auskommentieren und durch: “-Wl,-Tesp8266.flash.4m1m.ld ” ersetzen.

    Die meisten Sonoff bzw. Shelly Hardware haben nur 1MB Flashspeicher. Deshalb ist Tasmota so programmiert, das alles auch mit 1MB funktioniert

    diese Zeile kann ich bei mir nicht finden!

    Ist inzw. nicht mehr nötig. Wenn ich Zeit habe, werde ich das mal ergänzen. Die Zeile würdest du in der PlatformIO.ini im Bereich common finden.

    Code
    board_build.ldscript = eagle.flash.1m.ld

    Ungetestet, kannst du probieren die 1 durch eine 4 zu ersetzen. Aber:

    Wenn du mehr Speicher für dein Skript benötigst, kannst du in deiner config_override.h auch einfach folgendes hinzufügen:

    Code
    #define USE_EEPROM
    #define EEP_SCRIPT_SIZE 4000

    Details zu den Defines findest du in der off. Tasmota Doc unter de Rubrik Scripting

  • Das Script wird geladen da ich sofort die Änderung im Haupmenu sehe. Benutze dazu einfach ein Beispiel script aus deiner Docu.

    Aber sofort nach dem Neustart ist wieder alles so wie in der sml_53 deviniert ist.

    ?

    sunburstc

    Habe ich hier einen fehler?

    #define MY_LANGUAGE de_DE // German in Germany
    #define APP_TIMEZONE 99

    #ifndef USE_SCRIPT
    #define USE_SCRIPT //# adds about 17k flash size, variable ram size
    #endif
    #ifdef USE_RULES
    #undef USE_RULES
    #endif

    #define USE_SML_M
    #define USE_EEPROM
    #define LITTLEFS_SCRIPT_SIZE 4000

    Einmal editiert, zuletzt von Wolfi (19. Juli 2020 um 12:50)

  • Wolfi

    Ja aktuell gibt es ein Problem mit der EEPROM definition.

    Wenn du einen Wemos d1 Mini oder nodeMCU mit 4mb hast, verwende statt:

    Code
    #define USE_EEPROM
    #define LITTLEFS_SCRIPT_SIZE 4000

    lieber:

    Code
    #define USE_SCRIPT_FATFS -1
    #define FAT_SCRIPT_SIZE 4096
    #define USE_SCRIPT_FATFS_EXT
    #define SDCARD_DIR

    in der Platformio_override.h fügst du in der Common Sektion:

    Code
    board_build.ldscript = eagle.flash.4m2m.ld

    hinzu.

    Viel Erfolg