D0 Zähler SML auslesen mit Tasmota

  • Power_curr, also bei dem Momentanverbrauch wird leider nur eine Null ausgegeben.

    Dieser Wert ist mir eigentlich der wichtigste.

    Hat diesbezüglich hier schon jemand Erfahrung mit dem EMH ED300L Zähler.

    Mit dem Screenshot kann man so nichts anfangen. Du müsstest da schon vorher sensor53 d1 eingeben damit die Rohdaten ausgegeben werden.

    Ich vermute, dass du evtl, nach diesem String suchen wirst:

    1,770701000f0700ff@1

    Wenn du den Dump in der Console empfängst, kopiere ein großes Stück davon raus in eine Textdatei und vergleiche die angezeigten Werte mit diesen hier z.B. Hier wird der Code für deinen Zähler etwas weiter unten offenbar aufgeschlüsselt. LINK

  • 01:21:15 CMD: sensor53 d1

    01:21:15 MQT: stat/tasmota/RESULT = {"Time":"2019-12-10T01:21:15","SML":{"CMD":"dump: 1"}}

    01:21:16 : 1b 1b 1b 1b 01 01 01 01 76 07 00 0e 00 a6 4e 02 62 00 62 00 72 63

    01:21:16 : 01 01 76 01 01 07 00 0e 00 2c 6f 56 0b 09 01 45 4d 48 00 00 85 b6 33 01 01 63 82 e6 00 76 07 00 0e 00 a6 4e 03 62 00 62 00 72 63 07 01

    01:21:16 : 77 01 0b 09 01 45 4d 48 00 00 85 b6 33 07 01 00 62 0a ff ff 72 62 01 65 00 2c 7e 30 7d

    01:21:16 : 77 07 81 81 c7 82 03 ff 01 01 01 01 04 45 4d 48 01

    01:21:16 : 77 07 01 00 00 00 09 ff 01 01 01 01 0b 09 01 45 4d 48 00 00 85 b6 33 01

    01:21:16 : 77 07 01 00 01 08 00 ff 64 01 01 82 01 62 1e 52 ff 56 00 00 19 17 ad 01

    01:21:16 : 77 07 01 00 02 08 00 ff 64 01 01 82 01 62 1e 52 ff 56 00 00 03 40 a4 01

    01:21:17 : 77 07 01 00 01 08 01 ff 01 01 62 1e 52 ff 56 00 00 19 17 ad 01

    01:21:17 : 77 07 01 00 02 08 01 ff 01 01 62 1e 52 ff 56 00 00 03 40 a4 01

    01:21:17 : 77 07 01 00 01 08 02 ff 01 01 62 1e 52 ff 56 00 00 00 00 00 01

    01:21:17 : 77 07 01 00 02 08 02 ff 01 01 62 1e 52 ff 56 00 00 00 00 00 01

    01:21:17 : 77 07 01 00 10 07 00 ff 01 01 62 1b 52 ff 55 00 00 05 57 01

    01:21:17 : 77 07 01 00 24 07 00 ff 01 01 62 1b 52 ff 55 00 00 00 92 01

    01:21:17 : 77 07 01 00 38 07 00 ff 01 01 62 1b 52 ff 55 00 00 03 63 01

    01:21:17 : 77 07 01 00 4c 07 00 ff 01 01 62 1b 52 ff 55 00 00 01 62 01

    01:21:17 : 77 07 81 81 c7 82 05 ff 01 01 01 01 83 02 42 6d 72 40 7c 2c fc 42 92 23 b1 e7 6f 52 db cd 0c 8d 51 ca c8 fa 40 b6 df b5 e2 89 6e bb a6 f5 95 2c 84 df 2d bc a6 14 4b f4 3f 10 88 19 68 7c 01 01 01 63 ec 29 00 76 07 00 0e 00 a6 4e 08 62 00 62 00 72 63 02 01 71 01 63 ee 7f 00 1b 1b 1b 1b 1a 00 df 9a

    01:21:19 : 1b 1b 1b 1b 01 01 01 01 76 07 00 0e 00 a6 4e 0b 62 00 62 00 72 63 01 01 76 01 01 07 00 0e 00 2c 6f 59

    01:21:19 : 0b 09 01 45 4d 48 00 00 85 b6 33 01 01 63 27 ad 00 76 07 00 0e 00 a6 4e 0c 62 00 62 00 72 63 07 01

    01:21:19 : 77 01 0b 09 01 45 4d 48 00 00 85 b6 33 07 01 00 62 0a ff ff 72 62 01 65 00 2c 7e 33 7d

    01:21:19 : 77 07 81 81 c7 82 03 ff 01 01 01 01 04 45 4d 48 01

    01:21:19 : 77 07 01 00 00 00 09 ff 01 01 01 01 0b 09 01 45 4d 48 00 00 85 b6 33 01

    01:21:19 : 77 07 01 00 01 08 00 ff 64 01 01 82 01 62 1e 52 ff 56 00 00 19 17 ae 01

    01:21:19 : 77 07 01 00 02 08 00 ff 64 01 01 82 01 62 1e 52 ff 56 00 00 03 40 a4 01

    01:21:19 : 77 07 01 00 01 08 01 ff 01 01 62 1e 52 ff 56 00 00 19 17 ae 01

    01:21:19 : 77 07 01 00 02 08 01 ff 01 01 62 1e 52 ff 56 00 00 03 40 a4 01

    01:21:19 : 77 07 01 00 01 08 02 ff 01 01 62 1e 52 ff 56 00 00 00 00 00 01

    01:21:19 : 77 07 01 00 02 08 02 ff 01 01 62 1e 52 ff 56 00 00 00 00 00 01

    01:21:19 : 77 07 01 00 10 07 00 ff 01 01 62 1b 52 ff 55 00 00 05 50 01

    01:21:19 : 77 07 01 00 24 07 00 ff 01 01 62 1b 52 ff 55 00 00 00 94 01

    01:21:19 : 77 07 01 00 38 07 00 ff 01 01 62 1b 52 ff 55 00 00 03 63 01

    01:21:20 : 77 07 01 00 4c 07 00 ff 01 01 62 1b 52 ff 55 00 00 01 59 01

    01:21:20 : 77 07 81 81 c7 82 05 ff 01 01 01 01 83 02 42 6d 72 40 7c 2c fc 42 92 23 b1 e7 6f 52 db cd 0c 8d 51 ca c8 fa 40 b6 df b5 e2 89 6e bb a6 f5 95 2c 84 df 2d bc a6 14 4b f4 3f 10 88 19 68 7c 01 01 01 63 36 f9 00 76 07 00 0e 00 a6 4e 11 62 00 62 00 72 63 02 01 71 01 63 90 e7 00 1b 1b 1b 1b 1a 00 be 32

    01:21:27 : 77 07 01 00 02 08 01 ff 01 01 62 1e 52 ff 56 00 00 03 40 a4 01

    01:21:27 : 77 07 01 00 01 08 02 ff 01 01 62 1e 52 ff 56 00 00 00 00 00 01

    01:21:27 : 77 07 01 00 02 08 02 ff 01 01 62 1e 52 ff 56 00 00 00 00 00 01

    01:21:27 : 77 07 01 00 10 07 00 ff 01 01 62 1b 52 ff 55 00 00 05 58 01

    01:21:27 : 77 07 01 00 24 07 00 ff 01 01 62 1b 52 ff 55 00 00 00 91 01

    01:21:27 : 77 07 01 00 38 07 00 ff 01 01 62 1b 52 ff 55 00 00 03 6b 01

    01:21:27 : 77 07 01 00 4c 07 00 ff 01 01 62 1b 52 ff 55 00 00 01 5c 01

    01:21:27 : 77 07 81 81 c7 82 05 ff 01 01 01 01 83 02 42 6d 72 40 7c 2c fc 42 92 23 b1 e7 6f 52 db cd 0c 8d 51 ca c8 fa 40 b6 df b5 e2 89 6e bb a6 f5 95 2c 84 df 2d bc a6 14 4b f4 3f 10 88 19 68 7c 01 01 01 63 16 a7 00 76 07 00 0e 00 a6 4e 2c 62 00 62 00 72 63 02 01 71 01 63 31 c3 00 1b 1b 1b 1b 1a 00 fb de

    01:21:29 : 1b 1b 1b 1b 01 01 01 01 76 07 00 0e 00 a6 4e 2f 62 00 62 00 72 63

    01:21:29 : 01 01 76 01 01 07 00 0e 00 2c 6f 65 0b 09 01 45 4d 48 00 00 85 b6 33 01 01 63 a2 8b 00 76 07 00 0e 00 a6 4e 30 62 00 62 00 72 63 07 01

    01:21:29 : 77 01 0b 09 01 45 4d 48 00 00 85 b6 33 07 01 00 62 0a ff ff 72 62 01 65 00 2c 7e 3d 7d

    01:21:29 : 77 07 81 81 c7 82 03 ff 01 01 01 01 04 45 4d 48 01

    01:21:29 : 77 07 01 00 00 00 09 ff 01 01 01 01 0b 09 01 45 4d 48 00 00 85 b6 33 01

    01:21:29 : 77 07 01 00 01 08 00 ff 64 01 01 82 01 62 1e 52 ff 56 00 00 19 17 b2 01

    01:21:30 : 77 07 01 00 02 08 00 ff 64 01 01 82 01 62 1e 52 ff 56 00 00 03 40 a4 01

    01:21:30 : 77 07 01 00 01 08 01 ff 01 01 62 1e 52 ff 56 00 00 19 17 b2 01

    01:21:30 : 77 07 01 00 02 08 01 ff 01 01 62 1e 52 ff 56 00 00 03 40 a4 01

    01:21:30 : 77 07 01 00 01 08 02 ff 01 01 62 1e 52 ff 56 00 00 00 00 00 01

    01:21:30 : 77 07 01 00 02 08 02 ff 01 01 62 1e 52 ff 56 00 00 00 00 00 01

    01:21:30 : 77 07 01 00 10 07 00 ff 01 01 62 1b 52 ff 55 00 00 05 66 01

    01:21:30 : 77 07 01 00 24 07 00 ff 01 01 62 1b 52 ff 55 00 00 00 94 01

    01:21:30 : 77 07 01 00 38 07 00 ff 01 01 62 1b 52 ff 55 00 00 03 69 01

    01:21:30 : 77 07 01 00 4c 07 00 ff 01 01 62 1b 52 ff 55 00 00 01 69 01

    01:21:30 : 77 07 81 81 c7 82 05 ff 01 01 01 01 83 02 42 6d 72 40 7c 2c fc 42 92 23 b1 e7 6f 52 db cd 0c 8d 51 ca c8 fa 40 b6 df b5 e2 89 6e bb a6 f5 95 2c 84 df 2d bc a6 14 4b f4 3f 10 88 19 68 7c 01 01 01 63 55 0e 00 76 07 00 0e 00 a6 4e 35 62 00 62 00 72 63 02 01 71 01 63 4f 5b 00 1b 1b 1b 1b 1a 00 26 c6

    01:21:32 : 1b 1b

    01:21:32 : 1b 1b 01 01 01 01 76 07 00 0e 00 a6 4e 38 62 00 62 00 72 63 01 01 76 01 01 07 00 0e 00 2c 6f 68 0b 09 01 45 4d 48 00 00 85 b6 33 01 01 63 fa eb

    01:21:32 : 00 76 07 00 0e 00 a6 4e 39 62 00 62 00 72 63 07 01

    01:21:32 : 77 01 0b 09 01 45 4d 48 00 00 85 b6 33 07 01 00 62 0a ff ff 72 62 01 65 00 2c 7e 40 7d

    01:21:32 : 77 07 81 81 c7 82 03 ff 01 01 01 01 04 45 4d 48 01

    01:21:32 : 77 07 01 00 00 00 09 ff 01 01 01 01 0b 09 01 45 4d 48 00 00 85 b6 33 01

    01:21:32 : 77 07 01 00 01 08 00 ff 64 01 01 82 01 62 1e 52 ff 56 00 00 19 17 b3 01

    01:21:32 : 77 07 01 00 02 08 00 ff 64 01 01 82 01 62 1e 52 ff 56 00 00 03 40 a4 01

    01:21:32 : 77 07 01 00 01 08 01 ff 01 01 62 1e 52 ff 56 00 00 19 17 b3 01

    01:21:32 : 77 07 01 00 02 08 01 ff 01 01 62 1e 52 ff 56 00 00 03 40 a4 01

    01:21:32 : 77 07 01 00 01 08 02 ff 01 01 62 1e 52 ff 56 00 00 00 00 00 01

    01:21:32 : 77 07 01 00 02 08 02 ff 01 01 62 1e 52 ff 56 00 00 00 00 00 01

    01:21:32 : 77 07 01 00 10 07 00 ff 01 01 62 1b 52 ff 55 00 00 05 62 01

    01:21:32 : 77 07 01 00 24 07 00 ff 01 01 62 1b 52 ff 55 00 00 00 92 01

    01:21:33 : 77 07 01 00 38 07 00 ff 01 01 62 1b 52 ff 55 00 00 03 67 01

    01:21:33 : 77 07 01 00 4c 07 00 ff 01 01 62 1b 52 ff 55 00 00 01 69 01

    01:21:33 : 77 07 81 81 c7 82 05 ff 01 01 01 01 83 02 42 6d 72 40 7c 2c fc 42 92 23 b1 e7 6f 52 db cd 0c 8d 51 ca c8 fa 40 b6 df b5 e2 89 6e bb a6 f5 95 2c 84 df 2d bc a6 14 4b f4 3f 10 88 19 68 7c 01 01 01 63 a2 e7 00 76 07 00 0e 00 a6 4e 3e 62 00 62 00 72 63 02 01 71 01 63 56 19 00 1b 1b 1b 1b 1a 00 de a4

    01:21:35 : 1b 1b 1b 1b 01 01 01 01 76 07 00 0e 00

    01:21:35 : a6 4e 41 62 00 62 00 72 63 01 01 76 01 01 07 00 0e 00 2c 6f 6b 0b 09 01 45 4d 48 00 00 85 b6 33 01 01 63 31 5f 00 76 07 00 0e 00 a6 4e 42 62 00

    01:21:35 : 62 00 72 63 07 01

    01:21:35 : 77 01 0b 09 01 45 4d 48 00 00 85 b6 33 07 01 00 62 0a ff ff 72 62 01 65 00 2c 7e 42 7d

    01:21:35 : 77 07 81 81 c7 82 03 ff 01 01 01 01 04 45 4d 48 01

    01:21:35 : 77 07 01 00 00 00 09 ff 01 01 01 01 0b 09 01 45 4d 48 00 00 85 b6 33 01

    01:21:35 : 77 07 01 00 01 08 00 ff 64 01 01 82 01 62 1e 52 ff 56 00 00 19 17 b4 01

    01:21:35 : 77 07 01 00 02 08 00 ff 64 01 01 82 01 62 1e 52 ff 56 00 00 03 40 a4 01

    01:21:35 : 77 07 01 00 01 08 01 ff 01 01 62 1e 52 ff 56 00 00 19 17 b4 01

    01:21:35 : 77 07 01 00 02 08 01 ff 01 01 62 1e 52 ff 56 00 00 03 40 a4 01

    01:21:35 : 77 07 01 00 01 08 02 ff 01 01 62 1e 52 ff 56 00 00 00 00 00 01

    01:21:35 : 77 07 01 00 02 08 02 ff 01 01 62 1e 52 ff 56 00 00 00 00 00 01

    01:21:35 : 77 07 01 00 10 07 00 ff 01 01 62 1b 52 ff 55 00 00 05 57 01

    01:21:35 : 77 07 01 00 24 07 00 ff 01 01 62 1b 52 ff 55 00 00 00 90 01

    01:21:35 : 77 07 01 00 38 07 00 ff 01 01 62 1b 52 ff 55 00 00 03 65 01

    01:21:35 : 77 07 01 00 4c 07 00 ff 01 01 62 1b 52 ff 55 00 00 01 62 01

    01:21:35 : 77 07 81 81 c7 82 05 ff 01 01 01 01 83 02 42 6d 72 40 7c 2c fc 42 92 23 b1 e7 6f 52 db cd 0c 8d 51 ca c8 fa 40 b6 df b5 e2 89 6e bb a6 f5 95 2c 84 df 2d bc a6 14 4b f4 3f 10 88 19 68 7c 01 01 01 63 37 21 00 76 07 00 0e 00 a6 4e 47 62 00 62 00 72 63 02 01 71 01 63 a7 ae 00 1b 1b 1b 1b 1a 00 07 06

    Ähm ja, das kommt dabei heraus.

  • Ja, ist ja auch korrekt! Jetzt mal den Link lesen den ich in meinem vorherigen Post anfügte und dann wird es was!

    Siehe vor allem Beispiel 1 in dem Link!

    Ein bisschen Eigeninitivative ist hier schon gefragt. ;) Sich mal mit dem Thema beschäftigen, Die letzten 10-20 Seiten hier im Thread lesen/überfliegen. Da sind viele Informationen wie man startet schon 20 mal erwähnt worden. Zum Beispiel das Dokument von meierchen006. SuFu benutzen. Google benutzen. Und nicht vergessen, um später das Ergebnis auch in der GUI wieder sehen zu können, musst du den Dumplog via sensor53 d0 ausschalten. Ansonsten ändern sich in der GUI keine Werte.

  • Hallo Leute, ich hab es jetzt Dank der Unterstützung hier im Forum hinbekommen! Vielen Dank nochmal dafür! Also falls jemand Probleme beim auslesen dieses Zählers hier hat, dann kann ich gern helfen.:)

  • Da dieses Projekt nun zuende ist, kann ich mich nun den folgenden Zählern widmen.

    Kann mir hierbei jemand vorab schon mal einen Tipp geben welche Auslese Methode und Hardware für diesen Braun Heizöl Zähler und den Wasserzähler sich am besten eignet?

  • Da dieses Projekt nun zuende ist, kann ich mich nun den folgenden Zählern widmen.

    Kann mir hierbei jemand vorab schon mal einen Tipp geben welche Auslese Methode und Hardware für diesen Braun Heizöl Zähler und den Wasserzähler sich am besten eignet?

    Den Heizölzähler würde ich mal versuchen mit einem TCRT5000 probieren zu erfassen. Der Hintergrund ist schön Hell und der Zeiger schwarz, das könnte klappen. Falls der Zeiger aus Metall ist, könntest du es auch mit einem induktivenSensor probieren.

    Bei deiner Wasseruhr wird es komplizierter. Aber auch dazu findet man einiges im Internet. Als Beispiel: Link

    Viel Erfolg!

  • Ich habe Strom und Gaszählern am laufen.

    Kann ich den Wert des Gaszählers auch mit der Uhr abgleichen, der startet ja bei Null und die Gasuhr ist schon etwas weiter, also einen Startwert setzten?

  • Ich habe leider keine weitere Bezeichnung vergeben, nur so wie oben.

    Laut Doku soll es so gehen:

    Code
    • Also nehmen wir an wie oben schonmal gezeigt
    struct METER_DESC const meter_desc[METERS_USED]={
    Wasserzähler c1 [0]={5,'c',0,10,"H20",-1,1,0},
    Gaszähler c2 [1]={4,'c',0,50,"GAS",-1,1,0},
    Stromzähler SML [2]={3,'s',0,SML_BAUDRATE,"SML",-1,1,0}};
    • Dann die Eingabe:
    o Wasserzähler Zählerstand 495.126 m³
    sensor53 c1 495126
  • Hallo an alle,

    nachdem ich nun eine Weile hier mitgelesen habe, habe ich mich an die Einbindung zweier MODBUS-Zähler gewagt.

    Das Studium dieses Blogs ist mittlerweile zu einer Herausforderung geworden, es werden hier die verschiedensten Zählertypen diskutiert und der Treiber entwickelt sich auch immer noch stürmisch weiter. So hat es bei mir eine Weile gedauert erfolgreich zu sein. Falls also jemand das Gleiche mal vorhat, hier ein paar Anregungen/ Hilfestellungen, speziell auf MODBUS bezogen. MODBUS, in diesem Falle als RTU unidirektional (also einfache Zweidrahtleitung) ist übrigens ein verbreiteter Standart für die Gerätekommunikation in der Steuer- und Regelungstechnik. Mit dem SML-Treiber bekommt TASMOTA einen einfachen Zugang dazu.

    Alle Links auf Produkte verstehen sich sebstverständlich nur als Beispiele, ich bin da nirgends dran beteiligt..

    Ich habe zwei Saia PCD ALE3D5F D10C3A07 Zähler, davon gibt es übrigens derzeit eine Menge bei eBay. Aufpassen, die haben verschiedenen Busse, MBus ist übrigens nicht gleich MODBUS. Die beiden kommen bei mir hinter die beiden Zähler vom Versorger, die Preise machen es möglich. In meinem Falle sind es keine Zweirichtungszähler.

    Um von der Seriellen auf den MODBUS des Zählers zu kommen braucht man einen RS232<>RS485 Wandler. Auch hier aufpassen: ein reiner TTL-Wandler wie dieser hier funktioniert erstmal nicht in beide Richtungen. Dazu kam bei mir ein ESP01 als kleinster Vertreter der ESP828x Gattung. Für zwei Zähler, mit allen Spannungen, Strömen usw. reicht der Scriptspeicher nicht aus. Mit einem Zähler klappt es gerade so, beschränkt man sich auf wenige Messwerte (kWh, Leistung) geht es auch mit zweien. So braucht man in diesem Falle also noch einen I2C EEPROM. Neben Tx und Rx benötigt man so noch zwei freie GPIO's und das bekommt man am ESP01 geboten.

    Mit dem gegebenen Script bleiben dann noch ca. 1330 Zeichen frei, genug für noch ein paar Berechnungen.

    Der RS232<>485 Wandler kommt bei mir an den Hardware TX/RX des ESP01, hierbei die Leitungen nicht kreuzen (jedenfalls für diesen Adapter). Tx an Tx und Rx an Rx. Das wird nicht im Gerätekonfigmenue eingetragen! Den I2C-Speicher habe ich mit je einem 3,3k Pull Up an GPIO0 (SCL) und GPIO2 (SDA) angeschlossen, dieser wird eingetragen (siehe Bild unten). Beide GPIO's müssen beim Start auf High liegen, auch deswegen die Pull Up's. Klappt vorzüglich, der ESP bootet anstandslos.

    Das Ganze ist auf einer Uni-Platine verlötet und auf einen (SONOFF)-Hutschienenadapter montiert. Siehe Bild unten. Ein Elko in der Nähe des ESP01 sorgt für stabile Spannungsverhältnisse.

    Die Saia-Zähler haben die MODBUS-Anschlüsse D und /D, der D ist dem B- und der /D dem A+ gleichzusetzen. Nicht vergessen: ein Modbus muss an den Enden mit jeweils 120Ohm abgeschlossen werden (siehe im Bild die Widerstände an den Zählern). Zum MODBUS wird man hier fündig.

    Für die Inbetriebnahme und Fehlersuche kann man übrigens gut den RS232 Wandler (siehe oben) zusammen mit dem USB-Programmieradapter verwenden, um mittels eines Terminalprogrammes (was HEX darstellen kann, wie z.B. CoolTerm auf dem Mac) sehr schön zu sehen, was passiert. Es gibt natürlich auch gleich fertige Adapter (hier auf Basis C340), die letztendlich nix anderes sind.

    Man kann auch mit QModMaster (das ist nun leider mal für Windows ;) ) per Auswahl Register beschreiben und lesen. Das war für mich alles ganz hilfreich um herauszufinden das die Saia's 8E1 als serielles Hardwareprotokoll nutzen.

    Man braucht das hier also nur, wenn man in TASMOTA nach Eingabe von sensor53 d1 nichts zu sehen bekommt.

    TASMOTA muss für diesen Einsatzfall bekannterweise selbst kompiliert werden. Dazu sind einige Compilerschalter zwingend notwendig. Wie das alles grundsätzlich geht findet man wirklich oft genug hier in den Foren beschrieben. Die folgenden, notwendigen Schalter packt man am besten in die user_config_override:

    #undef USE_RULES // Add support for rules (+8k code)

    #define USE_SCRIPT // Add support for script (+17k code)

    #define USE_SCRIPT_WEB_DISPLAY

    #define USE_24C256 //EEPROM zur Scriptspeichererweiterung, kann übrigens auch ohne drin bleiben

    #ifndef USE_SML_M

    #define USE_SML_M

    #endif

    #define SML_MAX_VARS 50

    #define METER_DEF_SIZE 3000

    Die beiden letzten Parameter sind brandneu, von heute, und werden erst benötigt, wenn es zwei Zähler mit der Folge dieser Anzahl an Decoderzeilen (38) werden. SML_MAX_VARS hieß früher MAX_VARS (nicht zu verwechseln mit MAXVARS aus dem Script selbst). METER_DEF_SIZE (Standart = 2000) ist nun auch über die user_config_override erreichbar, ab ca. 27 Decodern erhöht man das. Sollten diese Parameter zu klein sein, merkt man dass daran, das auf dem WEB-Interface OBIS angezeigt wird, der Trigger >M im Scripter also nicht startet

    Bei mir laufen die Zähler auf den MODBUS-Adressen 01 und 03 (wie gleich im Script zu sehen sein wird). Man muss beachten, das der ganze Modbus aus Sicht TASMOTA's als ein Zähler gilt, die beiden Saia's werden über ihre MODBUS-Geräteadressen unterschieden. Also >M 1.

    Was mich auch noch Zeit gekostet hat: Bei der Definition des MODBUS-Zählers selbst ist "m" und "M" ein Klein was Anderes: 8N1 oder 8E1 als serielles Hardwareprotokoll. Steht nun auch in der Doku.

    Für das Script habe ich auf die Vorarbeit von sunburst hier aus dem Blog zurückgegriffen, bei dem ich mich herzlich bedanke.

    Und auch an dieser Stelle nochmal Danke an den Theo Arends, der dieses herrliche Tasmota erfunden hat und an GEMU, der mit seinem Script und nun mit diesem SML-Treiber (und noch anderen Dingen) ganz tolle Erweiterungen geschaffen hat und diese in bemerkenswerter Geschwindigkeit weiterentwickelt. Ich kann Script wirklich nur jedem ans Herz legen.

    So nun das Script (es sind übrigens nicht alle möglichen Werte des Zählers enthalten):

    >D

    >B

    =>sensor53 r

    >M 1

    +1,3,M,1,9600,Meter,1,1,01030023,01030028,0103002d,01030025,0103002a,0103002f,01030032,01030027,0103002c,01030031,0103001B,0103001d,03030023,03030028,0303002d,03030025,0303002a,0303002f,03030032,03030027,0303002c,03030031,0303001B,0303001d

    1,=h Domestic Electricity:

    1,010304UUuuUUuuxxxx@i10:100,1 Tariff 1 total,kWh,M1_T1_total,2

    1,010304UUuuUUuuxxxx@i11:100,1 Tariff 1 partial,kWh,M1_T1_par,2

    1,=h Readings:

    1,010304UUuuxxxxxxxx@i0:1,1 Voltage L1,V,M1_Voltage_L1,0

    1,010304UUuuxxxxxxxx@i1:1,1 Voltage L2,V,M1_Voltage_L2,0

    1,010304UUuuxxxxxxxx@i2:1,1 Voltage L3,V,M1_Voltage_L3,0

    1,010304xxxxUUuuxxxx@i0:10,1 Current L1,A,M1_Current_L1,2

    1,010304xxxxUUuuxxxx@i1:10,1 Current L2,A,M1_Current_L2,2

    1,010304xxxxUUuuxxxx@i2:10,1 Current L3,A,M1_Current_L3,2

    1,010304UUuuxxxxxxxx@i3:100,1 Active Power L1,kW,M1_PRMS_L1,3

    1,010304UUuuxxxxxxxx@i4:100,1 Active Power L2,kW,M1_PRMS_L2,3

    1,010304UUuuxxxxxxxx@i5:100,1 Active Power L3,kW,M1_PRMS_L3,3

    1,010304UUuuxxxxxxxx@i6:100,1 Active Power total,kW,M1_PRMS_total,3

    1,010304xxxxSSssxxxx@i3:100,1 Reactive Power L1,kVAr,M1_QRMS_L1,3

    1,010304xxxxSSssxxxx@i4:100,1 Reactive Power L2,kVAr,M1_QRMS_L2,3

    1,010304xxxxSSssxxxx@i5:100,1 Reactive Power L3,kVAr,M1_QRMS_L3,3

    1,010304xxxxSSssxxxx@i6:100,1 Reactive Power total,kVAr,M1_QRMS_total,3

    1,010304UUuuxxxxxxxx@i7:100,1 CosPhi L1,,M1_CosPhi_L1,2

    1,010304UUuuxxxxxxxx@i8:100,1 CosPhi L2,,M1_CosPhi_L2,2

    1,010304UUuuxxxxxxxx@i9:100,1 CosPhi L3,,M1_CosPhi_L3,2

    1,=h________________________________________________

    ; meter 2 +12 offset

    1,=h Heat Pump

    1,030304UUuuUUuuxxxx@i22:100,2 Tariff 1 total,kWh,M2_T1_total,2

    1,030304UUuuUUuuxxxx@i23:100,2 Tariff 1 partial,kWh,M2_T1_par,2

    1,=h Readings:

    1,030304UUuuxxxxxxxx@i12:1,2 Voltage L1,V,M2_Voltage_L1,0

    1,030304UUuuxxxxxxxx@i13:1,2 Voltage L2,V,M2_Voltage_L2,0

    1,030304UUuuxxxxxxxx@i14:1,2 Voltage L3,V,M2_Voltage_L3,0

    1,030304xxxxUUuuxxxx@i12:10,2 Current L1,A,M2_Current_L1,2

    1,030304xxxxUUuuxxxx@i13:10,2 Current L2,A,M2_Current_L2,2

    1,030304xxxxUUuuxxxx@i14:10,2 Current L3,A,M2_Current_L3,2

    1,030304UUuuxxxxxxxx@i15:100,2 Active Power L1,kW,M2_PRMS_L1,3

    1,030304UUuuxxxxxxxx@i16:100,2 Active Power L2,kW,M2_PRMS_L2,3

    1,030304UUuuxxxxxxxx@i17:100,2 Active Power L3,kW,M2_PRMS_L3,3

    1,030304UUuuxxxxxxxx@i18:100,2 Active Power total,kW,M2_PRMS_total,3

    1,030304xxxxSSssxxxx@i15:100,2 Reactive Power L1,kVAr,M2_QRMS_L1,3

    1,030304xxxxSSssxxxx@i16:100,2 Reactive Power L2,kVAr,M2_QRMS_L2,3

    1,030304xxxxSSssxxxx@i16:100,2 Reactive Power L3,kVAr,M2_QRMS_L3,3

    1,030304xxxxSSssxxxx@i18:100,2 Reactive Power total,kVAr,M2_QRMS_total,3

    1,030304UUuuxxxxxxxx@i19:100,2 CosPhi L1,,M2_CosPhi_L1,2

    1,030304UUuuxxxxxxxx@i20:100,2 CosPhi L2,,M2_CosPhi_L2,2

    1,030304UUuuxxxxxxxx@i21:100,2 CosPhi L3,,M2_CosPhi_L3,2

    #

    Was dabei rauskommt sieht man im angehängten Bild.

    Hoffe es hilft dem Einen oder Anderen.

    Viele Grüße

    Ekkehard.

  • eth

    Ja, habe den gleichen Zähler günstig bei ebay geschossen. Es war ein Kampf ihm ein paar Daten zu entlocken. Schaffte es zu Anfang nur über ein anderes Projekt für ein RaspberryPi dem Zähler die Daten zu entlocken.

    Mithilfe von gemu2015 ,der sein Projekt dann für diesen Zähler erweiterte, war es dann auch möglich ihn via Tasmota auszulesen.

    Wenn man mit dem Zähler völlig am Anfang steht, kann man mit den Bezeichnungen am Zähler /D und D nicht wirklich etwas anfangen. Vor allem nicht wenn er so oder andersherum keine Daten ausspuckt. Diese 8E1 -Geschichte hat mir viel Zeit gekostet.

    Allerdings habe ich doch starke Abweichungen beim Verbrauch. Mein via IR Transistor ausgelesener Q3B hat über 24h fast 1kW mehr Verbrauch auf der Uhr als es der SBC hat.

    Im Allgemeinen würde ich sagen, dass die Janiza oder auch SDM Geräte genauer auflösen.

    Wie sind deine Erfahrungen damit?

    Viele Grüße

  • sunburstc

    Mit dem Zähler habe ich noch keine Langzeiterfahrungen. Ich werde das jetzt beobachten, der Erste ist jetzt in der Verteilung eingebaut. Habe ja den Zähler vom Versorger zum Vergleich.

    Ich hatte vorher einen mit S0 drin, das war mir zu viel Gefrickel. Hatte den am einem Sonoff 4CH, der hat sich nur verzählt. War direkt S0, also ohne LED usw.. Würde ich künftig immer vermeiden wenns geht.

    Ich wollte den Zähler auch schon für defekt erklären, hab dann einen zweiten bekommen mit dem gleichen frustrierenden Ergebnis. Der Knackpunkt war das 8E1. Deswegen habe ich auch den Abschnitt mit dem Stick drin, das hat mir dann letztendlich echt geholfen. Wenn man es mal verstanden hat ist es eigentlich doch gar nicht so schwer..

    Es ist letztendlich wie immer: Step by Step, kleine Schritte machen...

    Wie auch immer: den Zweiten muss ich heute noch in meiner WP unterbringen und die 8V vom Klingeltrafo zu 3,3V machen. Dann habe ich zwei Vergleiche. Ich lass dann was von mir hören..

  • Servus. Ich habe endlich einen neuen Zähler bekommen und habe das Projekt wieder aufgetaut. Momentan habe ich auch die ersten Erfolge zu verzeichen. Der Volkszähler Lesekopf funktioniert an meinem ESP8266 und zeigt auch Daten auf der Weboberfläche an. Mein Script ist aktuell noch in der Minimalkonfiguration um lauffähig zu sein:

    Code
    >D
    >B
    ->sensor53 r
    tper=10
    >M
    +1,13,s,1,9600,SML
    1,77070100010800ff@1000,Verbrauch,KWh,DJ_TPWRIN,4
    1,77070100020800ff@1000,Einspeisung,KWh,DJ_TPWROUT,4
    1,77070100100700ff@1000,Aktueller Verbrauch,W,DJ_TPWRCURR,4
    #

    Ich habe vor die Daten per MQTT an ioBroker zu senden. Die Verbindung steht auch, jedoch kommen die drei Werte nicht an. Kann mir jemand sagen was ich dazu noch anpassen muss?

    Gruß Jaschkopf

  • jaschkopf Schau mal in die webkonsole welche Sachen alle übertragen werden. Evtl. Teleperiod 10 in die Konsole schreiben, dann wird alle 10 sek. Statt nur alle 5 min eine Mitteilung übertragen.
    falls dort die Werte mitgesendet werden liegt es an iobroker. Dort mal im sonoff Adapter Einstellungen häckchen bei separate datenpunkte für Sensor State Tele erstellen. Müssten 3 Kästchen sein.
    Adapter neu starten. Und nachschauen.

    Einmal editiert, zuletzt von sunburstc (21. Dezember 2019 um 21:39)

  • Hallo alle zusammen, ich bin neu hier im Forum, muss mich allerdings erst einmal für die tollen Beiträge bedanken. Ich habe hierdurch zwei Wemos D1 mini, Vers. 3.0 zur Wasser und Gaszählung in Betrieb genommen. Das funktioniert schon seit 14 Tagen sehr gut, dazu schreibe ich aber noch einmal zur Wasserzählung, da ich eine Halterung gebaut habe, die bestimmt für einige recht interessant ist, da sie einfach nachzubauen ist, günstig und stabil ist.

    Aber nun zu meinem Problem, wo ich Hilfe benötige und um Unterstützung bitte:

    Mein Zähler ist ein L+G ZMR120AReS2R2sfCS. Das ist auch ein Zähler, der zum Senden mit dem Syntax: /?! CR LF mit 300 Baud angeregt werden muss. Das funktioniert mit folgendem Script auch:

    >D

    >B

    =>sensor53 r

    >M 1

    +1,5,o,0,300,Strom,16,50,2F3F210D0A,063030300D0A

    1,1-0:1.8.0*255(@1,Verbrauch,KWh,Total_in,20

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

    #

    Das Ergebnis ist in der Dump Datei zu sehen. Ich hatte erhebliche Schwierigkeiten, die Datenübertragung sauber hinzubekommen, da der Empfang beim Senden immer gestört wurde, da die Sendediode BPW40 so hell gesendet hat, dass der TEKT 5400S dabei heruntergezogen wurde. Jetzt habe ich einen NPN Transistor mit 100 Ohm Kollektorwiderstand im Einsatz. Die Daten kommen regelmäßig, aber der Verbrauch (ich habe jetzt erstmal nur einen Wert abgefragt zum probieren, wird nicht angezeigt.

    Was für mich dabei ein völliges Rätsel ist, wofür habt Ihr alle die 1-0:1.8.0*255(@1 drin. Bei mir kommt der Hauptwert nur mit : 1.8.0(015354.810*kWh)
    (@1 (siehe Dateianhang).

    Außerdem kann mein Zähler nach dem Start auf 9600 baud umgestellt werden.....wie mache ich das??

    Über eine Antwort würde ich mich sehr freuen und wünsche schon mal allen ein fröhliches Weihnachtsfest

    Gruß Kludi2019

  • Servus. Hab mein Script so weit fertig und scheint auch zu funktionieren. Aber nach einem Reboot setzt er mir jedes mal den Wert für Jahresanfang auf den aktuellen Zählerstand. Habe das Skript aus der PDF Anleitung aus dem Thread übernommen und nur leicht angepasst. Vielleicht kann mal jemand drüber gucken und findet den Fehler. Ich stehe irgendwie aufem Schlauch:

  • jaschkopf

    p Variablen lassen sich nicht im Script beim initialisieren beschreiben.

    Versuche sie mal über die Webconsole mit:

    Code
    script>sya=DEINWERT;sma=EINANDERERWERT;svars

    zu füllen. Dann sollte es eigentlich funktionieren.


    Kludi2019

    Ich selbst habe bisher keinen Obis Zähler gehabt.

    Generell würde ich versuchen die Hardware Serial dazu zu benutzen. Also GPIO 3(RX) und GPIO1(TX).

    Setze die Baudrate direkt auf 9600.

    Link Vielleicht ist das eine gute Starthilfe. Weiter oben stehen viele Sachen erklärt.

    Also die Obis Kennziffern die du in deinem Dump siehst, kannst du im Decoderbereich genauso eintragen um dann den entsprechenden Wert auszulesen, der dort hinterlegt ist.

    Code
    Zum Beispiel: 1,1-0:32.7.0*255(@1,Voltage_L1,V,Volt_L1,0
  • Habe nun endlich auch einen neuen Zähler und versuche mal hier noch durchzublicken. Einige links sind ja schon nicht mehr gültig.

    Den Versuch an die Quelldatei zu kommen z.B. Die Quelldatei Universal8 hat nach Änderung in der User config aber keine SML Sensoren.

    Welche Queldatei benutzt ihr ?

    Geht inzwischen auch die 7.2.0 ?

    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