D0 Zähler SML auslesen mit Tasmota

  • Nur einer der Elster geht mit:

    >D

    scnt=0

    res=0

    >B

    =>sensor53 r

    >F

    ; count 100ms

    scnt+=1

    switch scnt

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

    case 3

    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: switch sml driver to 9600 baud

    case 23

    res=sml(1 0 9600)

    ;6000ms after start: Restart sequence

    case 60

    scnt=0

    ends

    >M 1

    +1,3,o,0,9600,A1350,1

    1,1.8.1(@1,Nachtkauf_181,kWh,Nachtkauf,16

    1,1.8.2(@1,Tagkauf_182,kWh,Tagkauf,16

    1,2.8.1(@1,Nachtverkauf_281,kWh,Nachtverkauf,16

    1,2.8.2(@1,Tagverkauf_282,kWh,Tagverkauf,16

    #

    Kann durchaus sein, dass die GPIOs das Problem sind.

    Ich hatte mich bei der Auswahl an folgende Liste gehalten:

    Gruß Gerhard

  • Danke für die Antwort.

    Soweit ich das aber sehe, sind die Angaben zu "TX" optional, d.h. für mich "entbehrlich". Oder sehe ich das falsch ?

    Zitat: "The GPIO pin number where meter command is transmitted (optional)."

    Das oben aufgelistete zweite Skript für den A 1350 läuft ja so und bringt Werte:

    Auch das erste Skript läuft, allerdings werden nur die Werte der "SML"-Zähler gelesen.

    Vielleicht müssen ja wirklich auch TX-Pins angegeben werden. Aber dann werden die GPIOs des WEMOS D1 mini knapp...

  • karoCB:

    die Definition für den 2. Elster sollte dann in etwa so aussehen ?:

    +4,14,o,0,9600,A1350,1,5,2F3F210D0A

    Wobei als TX-Pin der GPIO 1 angegeben wäre und wo nach 500 ms die Initialisierungssequenz käme ?? ...

  • Danke für Eure Antworten.

    Habe es jetzt mit Angabe des TX Pins versucht (auf 15) leider ohne Erfolg.

    Werde jetzt wohl 2 SML Zähler mit einem D1 mini abfragen und die beiden Elster mit je einem ESP01. Das müsste gehen.

    Danke nochmals an Alle !

    Gerhard

  • karoCB

    Ja, eigentlich hast Du recht. Ist von hinten durch die Brust ins Auge.

    Hinzu kommt, dass man in einem Schaltschrank mit Metalltüren (wo die Zähler hängen) keinen guten WLAN-Empfang hat. Also: Ethernet.

    Der WT32-ETH01 aber ist ein so störrisches Teil, bei dem es kaum möglich ist, das Ethernet zum Laufen zu bekommen und der auch schon beim Flashen sehr sperrig ist. Ansonsten wäre das Teil ideal. Aber auch hier bin ich mir bezüglich der in Frage kommenden GPIOs nicht sicher.

    In einigen Beschreibungen wird empfohlen, die GPIOs mit Widerständen zu versehen. Ich habe erstmal alle RX-Pins einfach an die GPIOs gehängt - wahrscheinlich war das falsch. Die SML-Zähler laufen so, vielleicht aber brauchen die OBIS-Zähler eine RX-TX Kommunikation (wegen der Initialisierung) und dazu müssen man auch die als "optional" angegebenen TX-Pins auch noch anschließen.

    Ich denke, ich werde mich mit dem Thema nochmals intensiv auseinandersetzen müssen.

    Wenn ich nicht weiterkomme, würde ich mich dann gerne nochmal melden - wenn ich darf.

    Grüße

    Gerhard :)

  • OK, die Kuh ist vom Eis !

    karoCB war auf dem richtigen Weg!

    IR-Leser, die von alleine ihre Werte ausgeben, brauchen nur per RX an einen GPIO angeschlossen zu werden und sie plappern los.

    IR-Leser aber, die erst per Initialisierungssequenz zur Übermittlung ihrer Daten "animiert" werden müssen, bedürfen einer bidirektionalen Kommunikation.

    Und dazu ist das Anschließen und Übergeben der entsprechenden GPIO-Nummern im Skript erforderlich. Und zwar für jeden der zu animierenden Leser.

    Somit benötigte ich in meinem Fall zum Anschluss von 4 Zählern 6 GPIOs. Nun läuft es.

    Danke nochmals für die Unterstützung !

    Grüße

    Gerhard

  • Nach 98 Seiten in diesem Thread ist es mir erfolgreich gelungen, meinen Siemens TD 3511 mit meinem Hichi/Tasmota mit 19200 baud auszulesen. (Deutscher Netzbetreiber, nicht in Österreich, wo der Zähler ja weiter verbreitet zu sein scheint).

    Vielen Dank an alle, die sich an diesem Thread beteiligt haben!

    Mein Skript ist aktuell wie folgt:

    In der Regel aktualisiert der Tasmota die beiden von mir benötigten Werte alle 10 Sekunden. Leider tut er das nicht zuverlässig. Oft dauert es 20, 30 oder mehr Sekunden. Teilweise bis zu 90 Sekunden.

    Hat jemand eine Idee, woran das liegen könnte bzw. wie man das Skript verbessern könnte?

    Ich selbst verfolge gerade zwei Ansätze, für die meine Tasmota-Kenntnisse leider nicht ausreichen. Kann mir jemand Tipps dazu geben?

    Ansatz 1: Baudrate auf 115200 erhöhren.

    Laut Datenblatt kann der Siemens TD 3511 auch 115200 baud, die man mit "063039300D0A" (9 statt 6 in der Mitte) anfordern können sollte. Wenn ich das Skript entsprechend anpasse und überall die 19200 durch 115200 ersetze, liefert der Tasmota leider gar keine Werte mehr. Meine Hoffnung wäre, mit einer schnelleren Baudrate schneller/häufiger/zuverlässiger Werte zu erhalten...

    Ansatz 2: Auf verkürzten Datensatz umstellen.

    Laut Datenblatt kann der Siemens TD 3511 auch verkürzte Datensätze liefern, statt immer alle möglichen Werte. Mit F009 sollte man z.B. einen Datensatz abrufen können, der nur die aktuellen Verbrauchswerte (darunter 1.7.0 und 2.7.0) liefert. Meine Hoffnung wäre, dass ich dadurch auch schneller/häufiger/zuverlässiger Werte erhalten könnte.

    Leider scheitere ich daran, den Befehl erfolgreich im Tasmota Skript abzusetzen. Laut Anleitung sollte das mit folgender Anforderung gehen:

    SOH R2 STX F009 (data) ETX BCC

    Kann mir jemand helfen, wie ich die Anforderung per Tasmota Skript an den Zähler senden kann? Details dazu findet man unter Punkt 5.2.9.3. in der Anleitung: https://wiki.volkszaehler.org/_media/hardwar…d-351x_bhbk.pdf

  • Ich sehe den Weg mit 300 Baud auszulesen wie es in der Tasmotabeschreibung vorgesehen ist für diesen Zähler


    +1,3,o,0,300,STROM,1,600,2F3F210D0A
    1,1.8.1(@1,Total Consumed,KWh,Total_in,3
    1,2.8.1(@1,Total Delivered,KWh,Total_out,3
    1,0.0.0(@#),Meter Number,,Meter_number,0
    #

  • karoCB Danke für die Antwort.

    Ich möchte den Tasmota für meine Solar-Überschusslade-Lösung nutzen. Dazu benötige ich mindestens alle 10 Sekunden den aktuellen Verbrauchs/Einspeisewert. Mit 300 baud erhalte ich den Wert allerdings nur ca. alle 5 Minuten. Das ist für meinen Anwendungsfall leider unbrauchbar.

    Mit 19200 baud erhalte ich teilweise alle 10 Sekunden einen neuen Wert, manchmal dauert es aber eben auch deutlich länger.

    Ich suche nun nach einer Möglichkeit, zuverlässig mindestens alle 10 Sekunden einen aktuellen Wert zu erhalten.

    Wenn ich mir mit sensor 53 d1 anschaue, was alles ausgelesen wird, kommt periodisch eine unglaublich lange Liste an Werten, die ich alle nicht benötige.

    Wenn es nun eine Möglichkeit gäbe, nur die wirklich benötigten Werte (oder das Set F009, das deutlich kürzer ist und meine beiden Werte enthält) abzufragen, würden mir die 300 baud evtl genügen bzw. sollte es mit 19200 baud locker klappen.

    ICh weiß nur leider nicht, wie man das tut bzw. ob das überhaupt geht. (Laut Anleitung scheint es im Normalmodus eigentlich zu gehen)

  • wenn die Zählernummer in der

    >M Section weggelassen wird sollten eigentlich nur 2 Werte empfangen werden. Dazu reicht sicherlich die Baudzahl ( klammert IR-Übertragungsprobleme aus) Ja wenn der Zähler selbstständig alles versendet müsste man das stoppen.