D0 Zähler SML auslesen mit Tasmota

  • Hi.
    Ich wollte die Daten vom Stromzähler jetzt im IoBroker auswerten und visualisieren.

    Die Daten (aktueller Stromverbrauch, Gesamtverbrauch) werden aber leider anscheinend nur 1x an IoBoker übertragen und dann nicht mehr aktualisiert.

    Weiß jemand ob man das so einstellen kann, dass die Daten alle paar Sekunden gesendet werden?


  • Hi, ja Danke habe es hinbekommen. Es war irgendwas verbuggt bei den MQTT-Datenpunkten von meinem Stromlogger.

    Ich habe die MQTT Instanz gestoppt, alle MQTT-Datenpunkte gelöscht und dann MQTT Instanz neu gestartet.

    Dann wurden alle Datenpunkte neu erzeugt und dann hat es funktioniert, dann wurden die Werte auch aktualisiert.

    Irgendwas war das verbuggt.
    Danke!

  • Servus. Ich habe mein Script nach der Anleitung von meierchen006 angepasst und mir so einige Werte errechnet, wie z.B. Tages-, Monats-, und Jahresverbrauch. Ist es möglich die Werte auch per MQTT an iobroker zu übertragen, falls ja, was muss ich dazu anpassen?


    Gruß Jaschkopf

  • Hallo jaschkopf , @all


    ja das senden zum ioBroker MQTT ist möglich dazu muss im Script die Sektion


    Section >J


    aufgerufen werden, dann wird alle "Teleperiod-Zeit" einmal gesendet.


    Dazu muss vorher auch beim kompilieren der Firmware z.B. in der user_config_override folgendes eingefügt werden:


    // -- WEB_Display zu MQTT-------------------------

    #define USE_SCRIPT_JSON_EXPORT


    >J Beispiel für Script

    ,power_day:%s_d% Beispiel für Script



    Man kann auch einen zweiten Weg gehen, das mache ich:


    >D 48

    s1=" SmartHome/Energie"


    ;alle 30 Sekunden


    >S

    if upsecs%30==0

    then

    =>Publish %s1%/%topic%/tele/Sensor-Gas %3v1%

    =>Publish %s1%/%topic%/tele/Sensor-Strom %3v2%

    =>Publish %s1%/%topic%/tele/Sensor-H2O %3v3%

    =>Publish %s1%/%topic%/tele/Sensor-Power %3v4%

    endif


    oder auch so:


    ; alle 5 Minuten zur Uhrzeit: Beispiel: 05:00 Uhr > 05:05 Uhr > 05:10 Uhr usw.


    min=int(time/5)

    if chg[min]>0

    then

    =>Publish %s1%/%topic%/tele/Sensor-Gas %3v1%

    =>Publish %s1%/%topic%/tele/Sensor-Strom %3v2%

    =>Publish %s1%/%topic%/tele/Sensor-H2O %3v3%

    =>Publish %s1%/%topic%/tele/Sensor-Power %3v4%

    endif


    so hat man jeden Wert (Zählerstand einzeln)


    Und natürlich müssen im Zähler die MQTT Daten eingegeben werden:


  • hallo,


    ich habe im Keller einen Landis&Gyr UH550 Zähler für die Fernwärme im Keller hängen. Der Zähler hat eine optische Schnittstelle (EN IEC 62056-21 Mode B), die ich mit einem Lesekopf (volkszähler) erfolgreich auslesen kann. Man muss eine Initialisierungssequenz mit 300 Baud 7E1 zum Zähler schicken, auf die Antwort warten, auf 2400 Baud umschalten und auf die Übermittlung der Messdaten warten.

    In Python ist das mit einem kurzen Skript gemacht.

    Da ich im gleichen Raum auch einen Stromzähler mit MODBUS Schnittstelle habe, die ich mit Tasmota auslese, würde ich gerne mit dem gleichen Tasmota-Modul auch den Wärmezähler auslesen. In den Beschreibungen zu den den Skripten für das SML-Modul von Tasmota habe ich aber nichts gefunden, wie man diese Initialisierung und den Baud-Wechsel hinbekommt. Geht das überhaupt?

    Vielen Dank


    im Anhang ist das Python-Skript und das Ergebnis, das so ähnlich wie OBIS ist....

  • Aktuell geht der Baudraten wechsel nicht. Du kannst jedoch eine feste Baudrate einstellen.

    Allerdings könntest du im Github von Tasmota ein Issue mit einer Feature - Anfrage stellen, damit sich u.U. darum gekümmert wird.

    Teile auch gerne deinen Code für den Modbus Zähler und auch deinen IR Zähler mit der Crew von Tasmota, damit dieser, falls er noch nicht vorhanden ist, ins Wiki aufgenommen wird. Danke!

    Viel Erfolg.

  • Hallo Leute,


    nachdem ich es mit eurer Hilfe geschafft habe meinen itron hz1-c50d-r1-z (baugleich zu Hager EHZ361) auszulesen, habe ich mich tatsächlich gewagt alle bisher 49 Seiten durchzulesen.


    Leute, ich bin begeistert! Ich habe noch niemals einen Thread gelesen, in dem über einen so langen Zeitraum so konsequent an ein und demselben Thema gearbeitet wurde. Außerdem werden alle Fragen (auch wenn Sie zum 20ten Mal gestellt werden) mit Geduld und Respekt beantwortet. Das kenne ich aus anderen Themen und Foren ganz anders! Mit welcher Hingabe gemu2015 seinen Treiber weiter Entwickelt wurde schon viel gelobt und ist wirklich fantastisch! meierchen006 muss ich hier natürlich auch erwähnen für die Mühe, die er sich mit seiner Doku gemacht hat. Weitere Namen spare ich mir bewusst, weil wirklich viele sehr hilfreich gewesen sind und ich möchte nicht einen vergessen.


    gemu2015 besonders von Dir würde ich mir an geeigneter Stelle einen Donate-Button wünschen. Du steckst unendlich viel Zeit und Mühe darein, anderen zu helfen. Ich und viele Andere werden niemals die Möglichkeit haben uns dafür zu revanchieren. Ich würde mich viel besser fühlen, wenn ich Dir zum Dank ein paar €€ rüberschubsen könnte. Mir ist schon klar, dass Du das hier nicht für Geld machst, weh würde es Dir sicherlich auch nicht tun.


    Ich freue mich schon, wenn es ein neues spannendes Projekt gibt, bei dem ich wieder dabei sein darf!


    EDIT: Das HowTo von sunburstc in #960 hatte ich ganz übersehen. Natürlich muss diese übersichtliche Sammlung an Wissen hier auch erwähnt werden!

  • Nun möchte ich aber auch noch mein Skript posten, für alle, die vielleicht auch einen itron hz1-c50d-r1-z (baugleich zu Hager EHZ361) auslesen möchten.


    Das Datenblatt von Hager ist leider fehlerhaft, weshalb ich die OBIS-Codes selbst herausfinden musste. Vielleicht hilft das ja jemandem.


    Der Zähler gibt die Wirkleistung leider nur für die einzelnen Phasen aus. Deshalb wird die gesamte Wirkleistung in der letzten Zeile summiert. In den Zeilen für den Bezug und die Einspeisung steht am Ende die 20, obwohl es nur 4 stellen nach dem Komma gibt, damit die Werte augenblicklich per MQTT versendet werden dasselbe gilt für die 16 in der letzten Zeile. Weil ich immer wieder einzelne sehr große Peaks hatte, habe ich in der 5. Zeile +1,3,o,16,9600,OBIS die "16" stehen. Die 16 aktiviert den "median filter". Seitdem gibt es keine Peaks mehr.


    Als Hardware kommt bei mir eine NodeMCU zusammen mit einer tekt5400s zum Einsatz. Mit den Pullup-Widerständen bin ich noch nicht ganz klar gekommen. Ich bekomme nach wie vor eine recht unsaubere Ausgabe, wenn ich dumpen lasse. Ich habe 1k, 10k, 100k, und gar keinen Widerstand ausprobiert und es hat sich komischerweise gar nichts geändert. Ohne Widerstand habe ich in der "Meter Declaration" auch mal eine 0 benutzt. Ich werde es noch einmal an einem anderen GPIO und mit 4,7k versuchen. Vielleicht kommen daher auch meine Peaks. Möglicherweise liegt es auch daran, dass ich das ganze noch auf einem Breadboard zusammengesteckt habe.


    EDIT:

    Ich habe es gerade doch noch einmal mit einem 4,7k Widerstand an dem D7 probiert. Das Dumpout sieht noch immer nicht schön aus:


    Kann mir jemand sagen, ob das so sein soll? Soll ich noch einmal andere Widerstände ausprobieren?

  • Und noch ein Post:


    Hat jemand hier schon einen ORNO OR-WE-516 oder OR-WE-517 im Einsatz und erfolgreich ausgelesen? Die gbits für rund 60€ bei amazon und ich habe mir gerade einen bestellt. Die Zähler können per Modbus via klemmen oder IR-LED ausgelesen werden. <-- ist das hier eigentlich unerlaubte Werbung? Ich habe jedenfalls keine Beziehung zu denen und war nur auf der Suche nach günstigen Stromzählern, die man gut auslesen kann. Wenn ich hier etwas falsch mache, bitte ich um Entschuldigung.


    Das Datenblatt habe ich per E-Mail auf Deutsch bekommen und euch angehängt.


    Hintergrund, warum ich einen günstigen Stromzähler brauche ist, dass ich einen Jahresverbrauch von rund 12.500 kWh habe. Es handelt sich um mehrere alte Gebäude zusammen. Jedenfalls will ich für jeden einzelnen Stromabgang in meinem Keller einen eigenen Zähler haben, um ein Verständnis dafür zu bekommen, was hier eigentlich so passiert. Im ersten Schritt bräuchte ich also gleich 6 Zähler.


    Wenn schon jemand diesen Zähler nutzt und mir sein Skript posten könnte würde mir das natürlich viel Mühe ersparen. Vielleicht gibt es aber auch einen anderen Vorschlag für einen ähnlich günstigen Zähler, der sich gut auslesen lässt.


    Wo wir schon dabei sind: vielleicht hat sich jemand schon an einen RLM Zähler gewagt, in meinem Fall wäre das ein Elster A1500?



  • Den Modbuszähler kenne ich nicht. Soweit ich weiß gibt es hier im Forum und im Wiki keine Einträge dazu.

    Bzgl. des Modbus Themas, kannst du ja gerne mal hier rein schauen: Howto.


    Der ElsterA1500 scheint ähnlich wie alle anderen OBIS Zähler auszulesen zu sein. Schau mal hier, vielleicht läuft es bei dem A1500 ähnlich. Zumindest wäre es ein Startpunkt.


    Viele Grüße!

  • Ich danke Dir! In Deinem HowTo steht ja schon einiges über Modbuszähler. Meiner ist heute angekommen. Wann ich dazu komme in installieren zu "lassen", kann ich noch nicht genau sagen. Ich werde natürlich berichten. Vielleicht bekomme ich von dem Hersteller noch mehr Dokumentationen bzgl. der Codierung.


    An den ElsterA1500 werde ich bei Gelegenheit einfach mal meine tekt5400s dranhängen und sehen, was passiert....

  • Abend,

    Ich habe die Orno Zähler mit Modbus, aber als 1 Phasenzähler für die Insel Solar und Balkon Anlage, lese diese über nen Wemos D1 mini mit passender RS485 Platine aus, geflasht sind die ESP mit ESP Link, die wiederrum kann man dann über Wlan mit dem Modbus Adapter im Iobroker koppeln, hab mir für die Wemos und RS 485 Platine die passenden hutschienen gehäuse gedruckt und das ganze wird dann über ein 5V hutschienennetzteil Versorgt


    MFG

    Sascha

  • Und noch ein Post:


    Hat jemand hier schon einen ORNO OR-WE-516 oder OR-WE-517 im Einsatz und erfolgreich ausgelesen? Die gbits für rund 60€ bei amazon und ich habe mir gerade einen bestellt. Die Zähler können per Modbus via klemmen oder IR-LED ausgelesen werden. <-- ist das hier eigentlich unerlaubte Werbung? Ich habe jedenfalls keine Beziehung zu denen und war nur auf der Suche nach günstigen Stromzählern, die man gut auslesen kann. Wenn ich hier etwas falsch mache, bitte ich um Entschuldigung.

    Schau mal hier, die Zähler bekommst Du günstiger und massenweise beim eBay (wenn Du noch welche brauchst), frag einfach bei dem Verkäufer dort nach. Musst Du nur noch nachbauen. Um Deinen was zu entlocken brauchst Du sicher ein paar Tools. Steht auch was dazu drin. MODBUS ist ja ideal für Dich, wenn Du mehrere Zähler brauchst! Viel Erfolg!

    Ekkehard.

  • Guten Abend,


    ich habe ein EasyMeter das ich auch erfolgreich auslese. Hin und wieder habe ich aber Werte die total nach oben abdriften. Ich weiß nun nicht ob das die Position der Photodiode ist, oder ein anderern Fehler?!


    Hier mein Script:




  • Moin! Das kann verschiedene Ursachen haben.
    sleep time von Tasmota verändert? Fototransistor nicht gut vor der Diode? Fremdlicht Einstrahlung? Falscher pullup Widerstand....

    wenn das alles ausgeschlossen werden kann Wechsel mal zur Hardware Serial:
    Versuche mal deinen deinen GPIO auf Rx umzustellen. Also statt 13 eine 3 in deiner Meter Definition. Natürlich musst du dies auch Hardware technisch umstecken.
    sollte das keine Besserung bringen ersetze die 1 vor der 9600 in deiner Meter Definition durch eine 16.



    Viel Erfolg.

  • Umstieg von FHEM auf IoBroker.

    Keine Probleme hatte ich bei der Integration meines Strom (SML) Zähler von FHEM nach iobroker via Sonoff.0 Adapter (MQTT) alle Datenpunkte wurden erzeugt.


    Das gleiche habe ich mit meinem Gas/Wasser Zähler probiert . Leider ohne Erfolg genau die relevanten Datenpunkte werden nicht erzeugt und fehlen. (Count)

    (In FHEM funktioniert es super.)

    Obwohl man im Debugmodus des Sonoff.0 Adapter sieht das die Daten Ankommen?

    Was mache ich falsch ? Was ist anders als beim Stromzähler Modul.

  • Hast du den Adapter mal neugestartet in IOBroker? Danach dann deinen Gas/Wasserzähler? Manchmal werden nicht alle Datenpunkte erstellt. Eventuell auch die "Objekt" Seite neu laden. Im ioBroker Sonoff Adapter selbst hast du die 3 Häckchen gesetzt bei "Automatisches generieren von Zuständen"?


    Ansonsten mal in die Konsole deines Gas/Wasserzählers gehen und schauen wie die Tele Message aussieht. Ob die Daten überhaupt übertragen werden.

  • Guten Abend,


    ich war schon etwas länger nicht mehr hier aber ich finde es toll das ihr immer noch Aktiv dabei seid.



    Leider blicke ich nicht mehr so ganz durch :D

    Wie müssten die Einstellungen für einen Wasserzähler sein, wenn er pro 0,25l einen Impuls ausgibt?


    Mein Eintrag sah bisher so aus und es müsste doch die Stelle hinter dem @ sein

    Code
    1. #if METER==WATER
    2. #define METERS_USED 1
    3. struct METER_DESC const meter_desc[METERS_USED]={
    4. [0]={4,'c',0,40,"H20"}}; // GPIO4 Wasser Zähler
    5. const uint8_t meter[]=
    6. //----------------------------Wasserzähler--sensor95 c1------------------------------------
    7. //"1,=h==================|"
    8. "1,1-0:1.8.0*255(@1000," D_H2oIN ",cbm," DJ_COUNTER ",3"; // 1
    9. //"1,=h--------------------------------";
    10. #endif