D0 Zähler SML auslesen mit Tasmota

  • Hallo,

    bin hier der neue :)

    verfolge schon länger diese Seite

    habe schon erfolgreich einen ESP8266 und einen Hichti TTL IR Lesekopf an unserem Stromzähler ((EMH ED300L)(SML))

    schon mind. genauso Lange spiele ich mit de Gedanken im Keller unseren Wärmemengenzähler auszulesen, ein Allmess ultramaxx mit einer M-Bus-Schnittstelle.


    Hat einer von euch das schon erfolgreich gelöst??

  • Ich wollte mal den Wemos D1 auch an meinen Q3D von Easymeter anschließen. Im Tasmota Guide wird jedoch folgendes erwähnt, was ich nicht ganz verstanden habe:

    Apply following patch to src/TasmotaSerial.cpp:

    Diff
    --- a/lib/default/TasmotaSerial-3.2.0/src/TasmotaSerial.cpp
    +++ b/lib/default/TasmotaSerial-3.2.0/src/TasmotaSerial.cpp
    @@ -117,7 +117,7 @@ bool TasmotaSerial::begin(long speed, int stop_bits) {     if (2 == m_stop_bits) {       Serial.begin(speed, SERIAL_8N2);     } else {
    -      Serial.begin(speed, SERIAL_8N1);
    +      Serial.begin(speed, SERIAL_7E1);     }     
    if (m_hardswap) {       
    Serial.swap();
    }

    Soll man den "Patch" zur Umstellung der seriellen Schnittstelle in der Konsole der laufenden Tasmota-Installation ausführen oder beim Kompilieren des Builds? Sorry für die blöde Frage, stehe da aber irgendwie wie vor einer Wand und weiß nicht weiter.

  • Hallo und frohes neues Jahr zusammen!

    Ich habe bereits vor 2 Jahren einen Easymeter Q3B mit einem Wemos D1 Mini so mit diesem Thread konfiguriert das er mir den Zähler ausließt.

    Das ganze lief bis gestern, dann hat ein MA der Stadtwerke den Zähler gegen einen Q3A getauscht hat.

    Ich habe die Schnittstelle mit einem PIN wieder freischalten lassen. Wenn ich die Rohdaten auslese bekomme ich auch Werte wie

    1B 1B 1B 1B 01 01 01 01 76 0B 45 53 59 41 8F 04 00 04 6D A1 62 00 62 00.......

    Grundsätzlich funktioniert es also.

    Ich habe mir dann schon mehrmals Firmware erstellt und geflasht mit folgendem vorgehen

    • Aktuelle Tasmota universal gezogen
    • myuserconfig mit den Wlan Daten und #define USE_SML_M angepasst

    Bereits mit folgenden Zählern in der xsns_53_sml.ino

    • Q3B_V1, Q3C, EDL300, Q3B

    Nach dem flashen auf generic Modul gestellt.

    Leider kommen hier keine Werte mehr rein.

    Hat da jemand eine Idee, habe mich sehr an den Luxus gewöhnt mir im Openhab die Werte der Kleinsolaranlage und des aktuellen Verbrauchs zu verschneiden.

    Wer Klasse wenn jemand einen Tipp hätte.

    Gruß, Sven

  • Alles klar, das ganze geht jetzt komfortabler über die Scripte.

    Habe das Script von Sunburst genommen der ja ebenfalls einen Q3A hat.

    Script von Sunburst

    Leider kein Erfolg,

    Verkabelung ist so wie vorher. Diode an GND und RX.

    Wie gesagt mit einem TTL-USB kommen auch Werte an.

    Mir fehlen so langsam die Ideen,

  • Nächstes Update

    Komplett eingelesen in HOWTO

    Alles neu aufgesetzt und kompiliert.

    Ich habe irgendeine Fotodiode dran die mit dem letzten Zähler ja problemlos lief.

    Trotzdem kommt im log nichts an wenn ich sensor53 d1 einschalte. Klemme ich die Diode mit rx und gnd an den usb-ttl an und lese den Port Seriel aus kommen sofort die erwarteten Werte 1B1B.... etc.

    Wie kann das sein?

  • Ich würde gerne meinen Gaszähler, nach Stromausfall, auf den zuletzt im ioBroker gespeicherten Wert setzen.

    Ich schicke dazu folgenden Request an den Zähler: http://192.168.1.127/cm?cmnd=sensor53%20C1%20123456

    C1 ist die Nummer des Zählers, 123456 ist der angenommene Wert des Zählers.

    Leider funktioniert das nicht, ich erhalte folgende Ausgabe auf der Console:

    00:05:05.333 MQT: stat/testcounter/RESULT = {"Command":"Error"}

    Kann jemand sagen was ich falsch mache ?

    Einmal editiert, zuletzt von Old_Engineer (1. Februar 2022 um 00:19)

  • Moin in die Runde,

    bin neu hier und seit zwei Tagen am verzweifeln...

    Ich dachte ich hätte schon genug Erfahrung mit ESP und Tasmota und wollte nun mittels Hichi IR wifi (ESP01s) unseren Landis Gyr E320 auslesen.
    Ich habe schon herausgefunden, dass er gleich auszulesen sein soll wie der E350 und in der Anleitung steht 9600 Baud.

    Somit habe ich mittels VisualStudioCode folgende Zeilen in die user_config_override.h eingefügt:

    Dann alles kompiliert und hochgeladen.

    Anschließend habe ich aus diesem Beitrag den Code in mein "Script-Fenster" des Tasmota kopiert und wie folgt angepasst:

    Wenn ich nun sensor53 d1 in der Console eingebe erhalte ich aber nur wirre Zeichen:

    Kann mir jemand hier behilflich sein?

    Vielen Dank vorab!!!

    Habe es nun per SML versucht

    und bekomme nun wenigstens Daten

    Code
    20:21:19.393 CMD: sensor53 d1
    20:21:19.400 MQT: tele/tasmota_C1412C/SENSOR = {"Time":"2022-02-01T20:21:19","SML":{"DJ_TPWRIN":12656.0000,"DJ_TPWROUT":0.000,"DJ_TPWRCURR":0}}
    20:21:19.633 : 77 07 01 00 01 08 00 ff 65 00 1c 81 04 72 62 01 65 04 ca 97 52 62 1e 52 03 69 00 00 00 00 00 00 31 70 01 01 01 63 94 f9 
    20:21:19.668 : 77 07 ff ff ff ff ff ff 0b 0a 01 4c 47 5a 00 03 2c 3d 0e 07 01 00 62 0a ff ff 72 62 01 65 04 ca 97 53 73 
    20:21:19.687 : 77 07 01 00 60 32 01 01 01 01 01 01 04 4c 47 5a 01 
    20:21:19.712 : 77 07 01 00 60 01 00 ff 01 01 01 01 0b 0a 01 4c 47 5a 00 03 2c 3d 0e 01 
    20:21:20.884 : 77 07 01 00 01 08 00 ff 65 00 1c 81 04 72 62 01 65 04 ca 97 53 62 1e 52 03 69 00 00 00 00 00 00 31 70 01 01 01 63 56 7d 
    20:21:20.886 : 77 07 ff ff ff ff ff ff 0b 0a 01 4c 47 5a 00 03 2c 3d 0e 07 01 00 62 0a ff ff 72 62 01 65 04 ca 97 54 73 
    20:21:20.889 : 77 07 01 00 60 32 01 01 01 01 01 01 04 4c 47 5a 01 
    20:21:20.891 : 77 07 01 00 60 01 00 ff 01 01 01 01 0b 0a 01 4c 47 5a 00 03 2c 3d 0e 01 

    Ich gehe jetzt davon aus, alles ist in ordnung (kein Defekt, Sensor verkehrt herum, Firmware flasch geflashed...)
    Das müssten die einfachen Werte sein, welche jede Sekunde vom Zähler gesendet werden (würde mir ja schon reichen nur hätte ich gern den momentanen Verbrauch noch gern und ich würde gern wissen, warum ich den Zähler nicht per OBIS ansprechen kann)

    Einmal editiert, zuletzt von Doubarry (1. Februar 2022 um 20:24)

  • Hallo.

    den Zählerstand an der Konsole des esp eingeben:

    sensor53 c1 123456

    Ja, das weiß ich, aber ich möchte gerne den Sprung in meinen Verbrauchsaufzeichnungen vermeiden.

    Den Stromausfall erkenne ich, wenn der Zähler einen Wert kleiner dem gespeicherten liefert, in diesem Fall würde ich Zählerstand C1 auf gespeicherten Zählerstand + den aktuell gelesenen setzen. Also ein automatisches Nachführen des Zählerstandes nach Stromausfall.

    Aktuell suche ich die Lösung für den Gaszähler, es sollen aber noch 3 s0-Stromzähler und evtl. noch Wasser angeschlossen werden. Natürlich könnte ich das im ioBroker lösen. Aber eleganter wäre es, wenn Tasmota, den gleichen, richtigen Zählerstand im Web-Interface aufweist.

    Ich könnte auch mit Kondensator puffern, den Stromausfall erkennen und mit svars die Werte retten, aber warum der Aufwand, wenn ich mit cmnd den werte setzen könnte ?

    Ich bin doch sicher nicht der erste, der sich mit dem Thema Stromausfall bei Impulszählern beschäftigt ?

    2 Mal editiert, zuletzt von Old_Engineer (1. Februar 2022 um 18:30)

  • Den Stromausfall erkenne ich, wenn der Zähler einen Wert kleiner dem gespeicherten liefert, in diesem Fall würde ich Zählerstand C1 auf gespeicherten Zählerstand + den aktuell gelesenen setzen. Also ein automatisches Nachführen des Zählerstandes nach Stromausfall.

    Hallo Old_Engineer

    das klingt interessant, wie machst Du das?

    Für mein Verständnis, der ESP nimmt die Gaszähler impulse auf rechnet sie in qm um und sendet sie.
    nun ist Stromausfall und Gas wird weiter verbraucht( was unwahrscheinlich ist, da auch die Heizung ohne Strom nicht läuft.
    wie kann denn der ESP erfassen, wie viel verbraucht wurde?
    Und wenn wie kann der neue gesendete Wert kleiner sein als der vorherige und der aktuell gelesene ist ja nicht vorhanden,
    da der ESP es nicht mitbekommt, er zählt ja nur impulse...

    Bei Strom geht es, was aber ebenfalls quatsch ist, da Du bei Stromausfall keinen Strom verbrauchst und wenn der Strom wieder da ist,
    den aktuellen wert direkt bekommst über die s0 schnittstelle...

    Trotzdem interessant zu wissen wie Du das löst, ich werde das mal verfolgen.
    Danke
    Gruß Jens

  • Normalerweise ist nach einem Stromausfall der Wert auch nicht weg. Zumindest bei mir nicht.

    Bzgl. deiner Eingabe via URL: Hast du denn versucht ob du irgendwelche anderen Werte via "URL" an die Konsole senden kannst? Vielleicht baust du die Sache eins nach dem anderen auf.

  • Ist es denn wirklich sicher, dass es sich um einen OBIS Zähler handelt? Weil das sieht ja schon fast eher nach SML aus.

  • Ist es denn wirklich sicher, dass es sich um einen OBIS Zähler handelt? Weil das sieht ja schon fast eher nach SML aus.

    Moin,

    also in der Anleitung steht:

    Zitat

    Inbetriebnahme und Funktionsprüfung

    Den installierten Zähler wie folgt überprüfen und in Betrieb nehmen:

    1. Vor der Installation entfernte Hauptsicherungen einsetzen. Der Zähler ist eingeschaltet.

    2. Nach 2 Sekunden leuchtet die Anzeige mit dem Displaytest auf. Es zeigt alle Segmente der oberen und unteren Zeile für jeweils 2 Sekunden an. Diese Sequenz wird dreimal wiederholt.

    3. In der oberen Zeile steht der OBIS‐Code 0.2.0 für die Firmwareversion, in der unteren Zeile die Firmwareversion.

    Daher bin ich jetzt fest von OBIS ausgegangen... :/

    Kann mir auch nicht vorstellen, dass der 350er OBIS hat und der 320er nicht.. ?

    Die oben angegebenen Daten kommen ja zyklisch jede Sekunde, kann es sein, dass der Zähler diese als SML schickt, aber die eigentliche Abfrage per OBIS geschieht?

    Einmal editiert, zuletzt von Doubarry (2. Februar 2022 um 10:14)

  • Normalerweise ist nach einem Stromausfall der Wert auch nicht weg. Zumindest bei mir nicht.

    Bzgl. deiner Eingabe via URL: Hast du denn versucht ob du irgendwelche anderen Werte via "URL" an die Konsole senden kannst? Vielleicht baust du die Sache eins nach dem anderen auf.

  • Wenn ich einen Schalter konfiguriere, kann ich den per HTTP-Request schalten. Also prinzipiell funktioniert das. So wie es aussieht, kann das Kommando Sensor53 nicht per HTTP-Request gesendet werden.

    Das Deine Werte nach Stromauswahl nicht weg sind kann ich mir nicht vorstellen. Wichtig: ich spreche hier über Impulszähler, also keine Stromzähler die seriell gelesen werden. Falls Deine Impulszähler den Wert behalten, dann speicherst Du irgendwo im Script mit Stars den Zustand der Variablen im Flash-Speicher. Dieser Flash hat allerdings nur eine begrenzte Lebensdauer, daher wollte ich auf svar verzichten.

  • mit dem HTTP-Request, könnte sein, dass man darüber den C1 wert nicht schreiben kann.

    Was das Speichern angeht, ist es meines Wissens im Sensor53 bereits implementiert, dass der Wert gespeichert wird.
    das einzige was ich im Script zusätzlich habe, ist den Tageswert mit svars zu speichern

    Da könnte Gemu mehr zu sagen, ob und wohin gespeichert wird.

    Ich habe zumindest bei Gas auch noch keinen abweichenden Wert gehabt durch Stromausfall.

  • mit dem HTTP-Request, könnte sein, dass man darüber den C1 wert nicht schreiben kann.

    Ich habe auch noch einen s0-Zähler auf C2 definiert, den kann ich auch nicht schreiben.

    >M 3

    +1,13,s,16,9600,Haus

    +2,2,c,1,50,Gas

    +3,0,c,1,50,Praxis

    1,=h==============

    1,77070100010800ff@1000,Zählerstand,KWh,DJ_TPWRIN,3

    1,77070100100700ff@1,akt. Verbrauch,W,DJ_TPWRCURR,0

    2,=h==============

    2,1-0:1.8.0*255(@100,Zählerstand,m³,DJ_GASIN,2

    3,=h==============

    3,1-0:1.8.0*255(@100,Zählerstand,KWh,DJ_PPWRIN,3

    #

  • Hallo

    Ich versuch ein DRT428M-2 mit einem ESP 8266 01 und tasmota zu verbinden.

    Hardware mäßig ist alles soweit OK.

    Leider bekomme ich , wenn ich das Register aufrufe keine Rückgabewerte.

    >D

    >B

    ->sensor53 r

    >M 1

    +1,3,M,0,9600,DRT,1,5,0103000e,01030010,01030012

    Laut Beschreibung des Stromzählers beutzt er 8E1 Protokoll.

    Mit dem Tool (PCsoft_DRXserie) und einem USB TTL Wandler kann ich wenn ich ein RS485 Wandler dazwischen schalte alle Daten abrufen.

    Nur mit dem ESP 8266 01 empfange ich keine Daten.

    Ich hoffe das mir jemand weiter helfen könnte.


    Grüße

    André

  • OK, ich habe neu kompiliert und auf Version 10.1.0.3 aktualisiert.

    Ich kann zwar immer noch keinen Wert per HTTP-Request setzen, aber der Zähler behält die letzten Werte auch nach Stromausfall.

    Sehr merkwürdig, denn am Script habe ich nichts geändert.