D0 Zähler SML auslesen mit Tasmota

  • Hallo Zusammen

    Ich bin gerade beim einrichten des Tasmota-Wifi Lesekopfes in Verbindung

    mit einem Stromzähler mit der Bezeichnung "Elster AS1440".

    Gefunden habe ich das Script für den Zähler im Tasmota Wiki:

    Smart Meter Interface - Tasmota

    Nach anfänglichen Problemen, habe ich dann die vorhandene Firmware durch eine geänderte Firmware ersetzt (mit sml - Support).

    Nun funktionerte auch das Skript ... aber leider nur "einigermaßen".

    In der Tasmota Konsole konnte ich folgendes sehen:

    Code
    19:17:32.951 : 1.9.0(0000053.5*kWh)
    19:17:33.050 : 1.9.0*12(0000295.8*kWh)
    19:17:33.155 : 1.9.0*11(0000207.1*kWh)
    19:17:33.259 : 1.9.0*10(0000172.3*kWh)
    19:17:35.624 : hDh@hDhDhDhDhDhDhDi~hwhDhDhDhDhDhDhDhDh@h@hDhDhwhjtdtd.4*kWh)
    19:17:35.694 : 2.8.1*08(0017764.4*kWh)
    19:17:35.765 : 2.8.1*07(0017188.4*kWh)
    19:17:35.833 : 2.8.1*06(0016502.3*kWh)
    19:17:35.899 : 2.8.1*05(0015800.9*kWh)
    19:17:35.966 : 2.8.1*04(0015031.6*kWh)

    Nun fehlen mir ein paar Daten, des Zählers. Zum Beispiel Obis 2.8.0/2.7.0.

    Ich habe auf volkszaehler (https://wiki.volkszaehler.org/hardware/chann…z/elster_as1440) dann auch lesen können

    dass der Zähler mit den Baudratesettings 7E1 kommuniziert, der Tasmota allerdings mit 8N1.

    Kann mein Problem damit zusammenhängen? Bzw. hat jemand einen andere Idee, was ich zur Problem Behebung unternehmen kann?

  • Hallo @Zappdiadappdi

    läuft das Auslesen des Ultraheat bei dir mittlerweile?

    Ich scheitere gerade dabei und bekomme keine Werte angezeigt.


    Danke vielmals!

  • Schaffe es nicht den Anfangszählerstand beim Gaszähler zu hinterlegen, kann mir jemand einen TIP geben.

    Zählen per sript mit

    >M 1

    +1,14,c,1,-25,GAS

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

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

    grüsse aus Heidelberg

    ca. 100 Tasmota Geräte teilweise mit SML Script.

    Alexa, Sonos, Pilot APP zur Steuerung, Domoticz und TasmoAdmin auf Raspberry mit Docker

  • Hallo

    da du ja nur ein Zähler hast in deinem Fall:

    sensor53 c1 123456

    ohne dezimalpunkt und auf keinen Fall ein komma, aber nur soviele stellen wie du auch hast.

    Also Zählerstand: 01234,56 >> 123456

    meierchen006

  • Hallo zusammen,

    ich habe jetzt schon alle 93 Seiten durch und bin mit meinem Script auch fast zufrieden, aber jetzt komme ich nicht weiter.

    Ich werte die Impulse meines Ferrariszähler mit einer TCRT5000 Reflexlichtschranke aus. Durch genaue Ausrichtung der Sende und Empfangsdiode und Tausch des verbauten 10k Trimmers gegen einen 10k 10 Gang Spindeltrimmer zur genaueren Einstellmöglichkeit, bekomme ich jetzt einer Woche auch endlich jeden Impuls mit.

    Das Signal wird nach ca. 10m Telefonleitung über einen 74HC14 Schmitttrigger invertiert, an einen ESP-01s übergeben.

    Mit Hilfe eines hier im Forum gefundenen Scripts und Anpassung an meine Zählerkonstante 75 Impulse / kWh bekomme ich den Zählerstand richtig angezeigt und berechne mir mit Hilfe der Zeit zwischen den letzten beiden Impulsen auch die Durchschnittliche Leistung für diesen Zeitraum..

    Jetzt möchte ich den Verbrauch (Zählerstand) und die berechnete Leistung per mqtt an Home Assistant übermitteln.

    Den Verbrauch bekomme ich als Sensor, aber ich schaffe es nicht die Leistung als Sensor mit in die mqtt Nachricht dazu zu bekommen.

    Hier brauche ich Eure Unterstützung.

    Hier mein Code:

    Danke Euch schon mal für die Unterstützung.

    Gruß

    Marcus

    PS: Mir ist bekannt, das GPIO2 ungeeignet ist, das wird noch geändert, wenn ich den fliegenden Aufbau gegen einen Platinenaufbau tausche.

    Einmal editiert, zuletzt von Sucram (19. Januar 2023 um 10:19)

  • Hallo

    Probiere es mal damit:

    ;========================================

    ; JSON Export für MQTT (Sonoff Adapter)

    ; alle Teleperiod

    ;----------------------------------------------------------------------

    ;

    >J

    ,"STROM-Total-In":%3var%

  • Hallo Meierchen,

    leider keine Änderung:

    11:08:45.407 MQT: tele/Ferraris/SENSOR = {"Time":"2023-01-19T11:08:45","Strom":{"Total":33064.413}}

    Hab jetzt auch mal das probiert:

    Damit bekomme ich zwar beide Argumente aber bei der Leistung nur eine 0.00. Hier klappt die Zuweisung von p nach current aber nicht.

    11:17:54.141 MQT: tele/Ferraris/SENSOR = {"Time":"2023-01-19T11:17:54","Strom":{"Total":33064.440,"current":0.00}}

  • Hallo gemu2015,

    das ist es leider auch noch nicht.

    Jetzt habe ich den Effekt, das er einen mir nicht nach vollziehbaren Wert für ca. 1-2 sek im Frontend (Tasmota Webseite) anzeigt und dann auf 0 geht, und im mqtt zwar beide Attribute anzeigt, aber bei der Leistung wieder 0,00 ausgibt. Auch meine Variable p wird kurz auf diesen Wert gesetzt und springt dann auf 0.00.

    Ich habe bisher noch nicht verstanden, wie der Zusammenhang zwischen der OBIS Zeile und deren Variable ist.

    Beispiel beim Verbrauch "Total": Ich setze den Zählerstand in der Console mit sensor53 c1 "Zählerstand x 75" (wegen 75Imp/kWh).

    Ich nehme an das dieser in der Variablen var abgespeichert wird. Zumindest bekomme mit script?var den aktuellen zählerstand angezeigt.

    Dann wird bei meinem Script var der Variablen Total zugewiesen und diese wird per mqtt ausgegeben.

    Bei der Leistung berechnet sich die Variable p durch die Zeit zwischen den Impulsen. Und diese weise ich der Variablen Total zu. Das klappt aber nicht. Die OBIS Zeile erzeugt irgendwas und weist dieses meiner Variablen p zu. Und das auch nur für einen kurzen Zeitraum.

    Hier nochmal mein aktuelles script:

    Oder sind die OBIS Codes im SML Treiber bestimmten vorgegeben Variablen zugewiesen? Wenn ja wo kann ich ich da nachsehen. Direkt im Quellcode des SML Treibers?

    Übrigens Danke and Dich und Meierchen, dass Ihr hier im Forum soviel Unterstützung leistet.

  • der Wert p wird vom SML Treiber als JSON ausgegeben und dann in >T vom Script eingelesen.

    in >S berechnest du nochmal p, das kommt sich ins Gehege.

    die Berechnungen in >S brauchst du gar nicht

    >W brauchst du auch nicht

    und damit kannst du auch >T weglassen

    >J brauchst du auch nicht, da der SML Treiber das selbst verschickt.

    also das sollte eigentlich reichen:

    Code
    >D
    
    >B
    ->sensor53 r
    
    >M
    +1,2,c,0,-30,Strom
    1,1-0:1.8.0*255(@75,Verbrauch:,kWh,Total,3
    1,1-0:1.7.0*255(@1,Leistung:,W,current,2
    #
  • Danke Dir.

    Ich war auch gerade auf der Spur.

    Das ist ja auch schon eingebaut. Und auch dokumentiert.

    Man muss nur wissen wo.

    https://tasmota.github.io/docs/Smart-Met…/#meter-metrics (Falls noch jemand auf der Suche ist)

    1,1-0:1.7.0*255(@0.01667, power,W,Power_actual,0) actual power from pulse rate (in pulses/min) of counter meter, scale for 1 pulse/Wh (1 pulse/min => 60W; 1/60(=0.01667) (pulses/min)/W)

    Das muss ich jetzt wohl nur noch auf meinen Fall umrechnen.

    Hier werden die Pulse pro Minute gezählt und ich ging den Ansatz Zeit zwischen Impulsen.

    Also scheint man die Variable gar nicht setzen zu können. Die wird nach der Beschreibung oben berechnet. und das scheint dann wohl im SML_M definiert zu sein.

    Ich werde mich morgen dran setzen. Bin jetzt unterwegs.

    Schon mal Danke, ich Melde mich (auch wenn ich es hin bekommen habe).

    Gruß

    Marcus

  • Hallo gemu,

    habe jetzt doch noch damit mal ein wenig gespielt.

    Damit klappt es leider auch nicht.

    1. Die errechnete Leistung wird nur kurz angezeigt und im Mqtt Datensatz fast immer 0.00. Ich habe eine Telemetry Period von 60 eingestellt. (über die Webseite).

    2. Bei meinen 75 Umdrehungen / kWh bekomme ich bei einer Leistung von 1000 Watt alle 48 Sek einen Impuls. Das würde bedeuten, dass ich bei dieser Leistung max. zwei Impulse in der Messminute bekomme. Daher ist das Ergebnis sehr ungenau.

    Bei einem Zähler mit 1000 oder 10000 Impulsen mag das klappen, bei mir ist das zu ungenau.

    Habe ich noch einen Gedankenfehler?

    Wenn nicht werde ich wohl auf die Leistung im Home Assistant verzichten und nur den Verbrauch übertragen.

    Gruß

    Marcus

  • Danke, das sieht schon besser aus.

    Ich muss mich scheinbar noch weiter einlesen und probieren.

    Bei einem ersten Test, wird zumindest ab und an ein Wert mitgegeben.

    Denke ich muss auf ein größeres Zeitinterwall umstellen, damit auch in diesem Interwall auch mindestens ein Impuls detektiert wird.

    Hab's aber auch noch nicht an meine Gegebenheiten angepasst.

    Gibt es eine Möglichkeit, die Mqtt Message mit dem in der Zeile angegeben Zeitinterwall zu synchronisieren?

    Muss jetzt weg, mache morgen weiter.

    Herzlichen Dank schon mal.

    Schönen Abend

    Gruß

    Marcus

  • Hallo zusammen,

    meine Problemstellung aus #1846 (Auslesen eines Ferraris Zählers mit einem TCRT5000, Verbrauch mitschreiben, errechnen der durchschnittlichen Leistung zwischen den beiden letzten Impulsen und übertragen beider Werte nach Home Assistant) konnte ich jetzt mit folgendem Script lösen.

    Die Daten werden immer dann übertragen, wenn ein Impuls detektiert wird.

    Der Verbrauch war direkt in der Tasmota Integration zu finden, für die Leistung hab ich in der configuration.yaml folgenden mqtt Sensor anlegen müssen:

    Code
      sensor:
        - name: Ferraris Power
          unique_id: "ferrpw"
          state_topic: "tele/Ferraris/SENSOR"
          json_attributes_topic: "tele/Ferraris/SENSOR"
          device_class: power
          unit_of_measurement: "W"
          value_template: "{{ value_json['Strom'].current }}"
          icon: "mdi:gauge"

    Vielleicht hilft es ja jemandem weiter.

    Herzlichen Dank an meicherchen006 und gemu2015 sowie ottelo dessen Tasmota Image ich verwendet habe.

    Ich bin echt erstaunt was mit Tasmota und Scripts alles geht.

    PS: Wenn jemand Daten an Thingspeak schicken will, in der oft verlinkten Doku SML-Treiber WGS Zähler findet man die entsprechenden Zeilen im Script.

    Gruß

    Marcus

  • Kann mir jemand eine Tipp geben, wegen des Gaszähler.

    Die Imulse kommen es wird wohl die vorletze Zahl (Impuls) übermittelt. Mit meine Einstellung zählt er aber viel zu langsam.

    Akuel im Script

    >M 1

    +1,14,c,1,-25,GAS

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

    wie kann ich das anpassen ?

    grüsse aus Heidelberg

    ca. 100 Tasmota Geräte teilweise mit SML Script.

    Alexa, Sonos, Pilot APP zur Steuerung, Domoticz und TasmoAdmin auf Raspberry mit Docker

    Einmal editiert, zuletzt von mafrei (21. Januar 2023 um 11:57)

  • wie kann ich das anpassen ?

    Vielleicht mal eine andere Firmware probieren.

    Ich habe mein ähnliches Problem gelöst mit der Firmware die Spencer hier gepostet hat

    [gelöst]Tasmota auf WEMOS Mini mit Reedkontakt - Probleme?
    Hallo Ich habe vor mir einen Wemos Mini liegen, auf welchem Tasmota ist (v9.2.0). An GND und GPIO 7 steckt ein Reedkontakt, welcher grundsätzlich auch…
    forum.iobroker.net

    ESP8266

    tasmota_12.02_smart_meter_web_display.bin

    ESP32

    tasmota32_12.02_smart_meter_web_display.bin

    Mein Skript stammt auch aus dem thread.

  • Hi,

    in deinem Beispiel läuft das über Counter, ich habe ja derzeit die Auswertung via Script. Da sollte es möglichg sein das ganze einfach z.B mit 10 zu multiplizieren.

    IO Brocker nutze ich auch nicht.

    Wenn ich bei Script keine Lösung finde werde ich Counter mal probieren, obwohl die Darstellung mit Script eleganter ist.

    Beim Strom läuft das ja seit 2 Jahren schon perfekt,

    grüsse aus Heidelberg

    ca. 100 Tasmota Geräte teilweise mit SML Script.

    Alexa, Sonos, Pilot APP zur Steuerung, Domoticz und TasmoAdmin auf Raspberry mit Docker