D0 Zähler SML auslesen mit Tasmota

  • deine Änderung ist OK, 3 einzelne MQTT Messages warum? ist erst mal in Tasmota so nicht vorgesehen.


    Habe den Treiber jetzt so modifiziert, dass man am Anfang den Zähler vorgeben kann. Wenn jetzt jemand einen neuen Zähler anpasst dann kann man die Liste beliebig erweitern.



    User OLI weiter oben habe ich als "OLI" eingetragen da musste die Sequenz leicht geändert werden.

  • Und ist es möglich statt einer mqtt-Message, 3 einzelne auszugeben, also je eine für Total_in, Total_out und Power_curr ?

    Könnte man mit einer Regel aufdröseln, wenn unbedingt gebraucht:


    Rule1

    on tele-SML#Total_in do publish stat/energieSML/Gesamt_rein %value% endon

    on tele-SML#Total_out do ...

    on tele-SML#Power_curr do ...

  • Hallo gemu


    Vielen Dank für die Anpassungen.

    Wie bereits weiter oben beschrieben gibt mein Q3B keine Werte bei 1.8.0 und 2.8.0 aus, stattdessen 1.81. und 2.8.1. Ob das bei allen Q3B-Zählern so ist ?!? Ebenfalls ist m.M. in der 1.7.0 binär-seq ein Fehler. Ich habe daher die Sequenzen wie folgt geändert:




    Jetzt läuft es.

  • Hallo NoitaercX


    Vielen Dank für den Tipp. Hintergrund ist einfach, dass die "Weiterverwertung" dann einfacher ist.

    Ich bekomme normalerweise nur Zahlenwerte, bei dem String wie oben muss ich die Werte erst extrahieren.




    Zusatzfrage: Wäre es mit den Rules auch möglich einen Schaltzustand auszulösen, wenn die Leistung (Power_Curr) einen gewissen Minuswert erreicht ? (tritt dann ein, wenn die PV-Anlage mehr einspeist als im Haus verbraucht wird) So könnte man bei PV-Überschuss gewisse Verbraucher anschalten...


    Gruss ow

  • Wäre es mit den Rules auch möglich einen Schaltzustand auszulösen, wenn die Leistung (Power_Curr) einen gewissen Minuswert erreicht ?

    Hi, ja ist auch möglich z.B.


    Rule1 on SML#Power_curr<-30.5 do publish cmnd/Flurlicht/Power1 on endon

    Rule 5 // damit "Once":"ON"

    Rule1 on


    ob es so mit neg. Werten klappt, kann ich momentan nicht überprüfen,

    gehe aber davon aus.

  • Das läuft perfekt.


    Diese Regel (Rule1) muss ja im "Once state "OFF" laufen.

    Jetzt habe ich die "PV-Überschuss"-Regel in Rule2 gepackt. Wie kann ich (nur) dieser Regel den Once state "On" geben? Ich schaffe es nur das beide Rules entweder On oder Off sind.


    Und muss evtl. noch die Regel um einen "off"Befehl ergänzt werden:

    Rule1 on SML#Power_curr>-30.5 do publish cmnd/Flurlicht/Power1 off endon

    damit die Steckdose wieder ausgeht?!

  • damit die Steckdose wieder ausgeht?!

    Ja natürlich (evtl. etwas höheren Wert nehmen für Hysterese)


    mit

    Rule1 4 // für "Once":"OFF" bei Rule1

    Rule2 5 // für "Once":"ON" bei Rule2


    und z.B.

    Rule2

    on SML#Power_curr<-30.5 do publish Flurlicht/cmnd/Power1 on endon

    on SML#Power_curr>-5.43 do publish Flurlicht/cmnd/Power1 off endon


    Rule2 on

  • Hallo zusammen,


    ich habe mit Atom das ganze compiliert und auf ein Wemos gespielt alles ohne Fehler, bekomme das Geräte nicht ans Wlan (nach Anleitung von Gemu). Ich habe die Platformio und die user_config beigefügt. Könnte mir jemand seine funktionierende Firmware.bin zur Verfügung stellen

  • Hallo,
    ich versuche gerade einen DWS7412.1 einzubinden.
    Die Sequenzen muss ich Morgen versuchen zu ermitteln.
    Hat jemand zufällig den Zähler schon angebunden?

    Kann mir jemand sagen wofür das ist:
    #define SFAC1 1
    #define SFAC2 1

    Ich vermute das sind die Multiplikatoren für die Messwerte. Liege ich da richtig?

  • Hallo zusammen,


    ich habe mit Atom das ganze compiliert und auf ein Wemos gespielt alles ohne Fehler, bekomme das Geräte nicht ans Wlan (nach Anleitung von Gemu). Ich habe die Platformio und die user_config beigefügt. Könnte mir jemand seine funktionierende Firmware.bin zur Verfügung stellen


    da du selbst kompilieren kannst würde ich dir vorschlagen nicht mit einer Binärversion zu arbeiten. Es könnte ja auch sein dass du den Treiber anpassen musst und das must du ohnehin dann wieder neu kompilieren. Ausserdem hast du beim kompilieren schon deine Zugangsdaten dabei so dass sich Tasmota von selbst verbindet.


    Du must dazu eine Datei "user_config_overwrite.h" erzeugen in der du deine Zugangsdaten einträgst und den Treiber mit #define USE_SML einschaltest.


    Dazu nimmst du am besten die Datei user_config_overwrite_sample.h, modifizierst diese und benennst sie anschliessend um.


  • Ja das sind Multiplikatoren die du eventuell anpassen musst. Habe für deinen Zähler auf die Schnelle keine genaue Beschreibung gefunden, aber gesehen dass er ASCI (OBIS) ausgibt. Du kannst also die Einstellungen eines andern OBIS Zählers mal als Vorlage nehmen.


    Übrigens könnt ihr mir gerne für neue Zähler die funktionierenden Vorlagen schicken damit ich sie auf Github Einpflegen kann.

  • da du selbst kompilieren kannst würde ich dir vorschlagen nicht mit einer Binärversion zu arbeiten. Es könnte ja auch sein dass du den Treiber anpassen musst und das must du ohnehin dann wieder neu kompilieren. Ausserdem hast du beim kompilieren schon deine Zugangsdaten dabei so dass sich Tasmota von selbst verbindet.


    Du must dazu eine Datei "user_config_overwrite.h" erzeugen in der du deine Zugangsdaten einträgst und den Treiber mit #define USE_SML einschaltest.


    Dazu nimmst du am besten die Datei user_config_overwrite_sample.h, modifizierst diese und benennst sie anschliessend um.

    Hallo Gemu,


    OK vielen Dank für die Antwort, ich dachte die Angaben kommen in die user_config?


    Gruß

  • Hallo Gemu,


    OK vielen Dank für die Antwort, ich dachte die Angaben kommen in die user_config?


    Gruß


    ich würde die user_config nicht verändern. sie wird bei jedem update überschrieben und kann sich auch ändern. deine user_config_overwrite.h kann immer die gleiche bleiben


    du brauchst minimal nur 3 Einträge darin


    #ifdef STA_SSID1

    #undef STA_SSID1

    #endif

    #define STA_SSID1 "router id"


    #ifdef STA_PASS1

    #undef STA_PASS1

    #endif

    #define STA_PASS1 "your router password"


    #define USE_SML


    aber wenn du es ganz komfortabel willst gibst du auch deine MQTT etc. Einstellungen hier an.

    dann brauchst du im WEBUI nichts mehr einzustellen

  • Ja das sind Multiplikatoren die du eventuell anpassen musst. Habe für deinen Zähler auf die Schnelle keine genaue Beschreibung gefunden, aber gesehen dass er ASCI (OBIS) ausgibt. Du kannst also die Einstellungen eines andern OBIS Zählers mal als Vorlage nehmen.


    Übrigens könnt ihr mir gerne für neue Zähler die funktionierenden Vorlagen schicken damit ich sie auf Github Einpflegen kann.

    Hallo gemu2015
    Die Hotline des Herstellers hat mir folgendes geschrieben:
    "die am Zähler ausgegebenen Daten haben das Format SML (Smart Meter Language) 1.05."

    Ich habe mir mal die Daten über putty anzeigen lassen:

    1B 1B 1B 1B 01 01 01 01

    76 05 A2 7C E7 02 62 00 62 00 72 63 01 01 76 01 01 02 31 B A 01 44 5A 47 00 02 81 B3 F7 72 62 01 65 01 14 2C E8 62 02 63 BB D1 00 76 05 A3 7C E7 02 62 00 62 00 72 63 07 01 77 01 B A 01 44 5A 47 00 02 81 B3 F7 07 01 00 62 A FF FF 72 62 01 65 01 14 2C E8 74


    77 07 01 00 60 32 01 01 01 72 62 01 62 00 62 00 52 00 04 44 5A 47 01


    77 07 01 00 60 01 00 FF 01 72 62 01 62 00 62 00 52 00 B A 01 44 5A 47 00 02 81 B3 F7 01

    77 07 01 00 01 08 00 FF 64 1C 01 04 72 62 01 62 00 62 1E 52 FF 65 01 AC D6 7B 01

    77 07 01 00 10 07 00 FF 01 72 62 01 62 00 62 1B 52 FE 54 06 65 3A 01 01 01 63 6C EC 00 76 05


    A4 7C E7 02 62 00 62 00 72 63 02 01 71 01 63 94 84 00 0 00 0 00

    1B 1B 1B 1B 1A 04 C9 66

    die fett markierten "Marker" habe ich in die Konfiguration eingetragen:

    #if METER==DxS74

    #define USE_OBIS 0

    // 2 Richtungszähler EHZ SML 8 bit 9600 baud, binär

    // verbrauch total

    const unsigned char seq1[8]={0x77,0x07,0x01,0x00,0x60,0x01,0x00,0xff};

    // einspeisung total

    const unsigned char seq2[8]={0x77,0x07,0x01,0x00,0x01,0x08,0x00,0xff};

    // momentaner verbrauch bzw. einspeisung (negativ=einspeisung)

    const unsigned char seq3[8]={0x77,0x07,0x01,0x00,0x10,0x07,0x00,0xff};

    #define SFAC1 1000

    #define SFAC2 1

    #endif

    leider funktioniert das noch nicht. Für eine genaue Fehlersuche fehlt mir im Moment leider die Zeit. Hat noch einer eine Idee?

    VG
    Andre

  • Hi,


    habe leider die Zählerbezeichnung verwechselt

    laut deiner Anleitung hast du einen binären SML Zähler kompatibel mit EHZ363, habe den Dreher auf Github korrigiert.


    das sind deine 2 relevanten Register

    0100010800FF

    0100100700FF


    da du einen Einrichtungszähler hast, liefert die Einspeisung 0


    sollte jetzt direkt funktionieren wenn du EHZ363 wählst

  • Hallo Andre,


    sieht eigentlich richtig aus!


    sollte also gehen, kann übrigens manchmal etwas dauern bis die Werte angezeigt werden.


    Gruß

  • Hallo,


    man bin ich froh endlich einen aktuellen Beitrag gefunden zu haben der dieses Thema behandelt.


    demnächst soll auch ich einen neuen Stromzähler bekommen. Nach Gesprächen mit meinem Energieversorger wird es ein Iskra eHZ-EDL MT681 der auch bei Volkszähler.org genannt wird.


    MT 681 bei Volkszähler.org


    Was mich Irritiert ist das mein Energieversorger sagt der sendet in SML und bei Volkszähler steht OBIS?


    Cool würde ich finden, die Wirkleistungen der einzelnen Phasen L1/L2/L3 !!


    Wäre dies eine richtiger Auslesekopf für den genannten Zähler?

    op-340


    Kann man diesen Zähler hinzufügen?


    Vielen Dank schon mal im voraus. :D:thumbup:


    Arbeite mit der Arduino IDE 1.8.8 und Core 2.4.2 bekomme da einen Fehler beim kompilieren, aber nichts genaues :(



    Edit;


    auch mit Arduino IDE 1.8.5 eine Fehlermeldung:

    In beiden IDE fehlt mir beim kompilieren die renderer.h ??


    #include <renderer.h>