D0 Zähler SML auslesen mit Tasmota

  • Hi,


    das hat leider auch nicht geholfen.

    Anbei die Infos die ich aus dem fhem Forum zusammengestellt, mit dem die Implementierung vorgenommen wurde.


    Problemstellung:

    Lösung:


    Quelle: https://forum.fhem.de/index.php?topic=51948.1308


    Vielen Dank für deine Hilfe

  • kannst du einen dump mit verbrauch und Einspeisung machen damit man den Unterschied sehen kann.

    weis nicht wo das Bit 11 sein soll, also von wo aus die bits zählen sollen.

    also obis code 010800 und dann nach der 65 die nächsten 4 bytes

  • Hi,


    nach meinem Verständnis sollte sich die Richtung mit in dem aktuellen Zählerstand befinden (die Bytes laut Holley sind grün markiert:


    14:39:28.972 : 77 07 01 00 01 08 00 ff 65 00 1d 19 04 72 62 01 65 00 12 5e 91 62 1e 52 ff 65 00 0c 2b 7f 01


    Zusätzlich noch der aktuelle Verbrauch:


    14:39:28.855 : 77 07 01 00 10 07 00 ff 01 01 62 1b 52 00 53 01 f6 01 01 01 63 ce 3c 00 76 04 00 00 03 62 00 62 00 72 65 00 00 02 01 71


    Zum Zeitpunkt des Dump sollte der Wert negativ sein, sprich es wurden knapp 500W mehr produziert als verbraucht. Der Zähler hat A- angezeigt


  • nein der code 65 ist ein Status Flag mit 32 bit im obis code 010800


    der Zählerwert selbst kommt dann später in der Zeile


    der aktuelle Verbrauch wird dann in Abhängigkeit dieses einen Stausbits in Zukunft invertiert, also negativ angezeigt wie es 95 Prozent der Zähler auch von selbst machen.


    trotzdem weis ich nicht welches innerhalb der grünen Hex Zahlen das Export bit ist.


    deshalb einfach einen Dump vom Obis Code 010800 einmal beim Import und einmal beim Export


    dann kann man sehen in welchem der 4 Byte das Bit umspringt.


    bit 11 muss in jedem Fall in einem der mittleren Bytes liegen also in 1d 19


    bei anderen Zählern springt aber auch noch die Status Code Kennung um also z.B. von 62 auf 63


    da ich die 65 abfrage muss ich sicher sein dass die bei Import und Export auf 65 bleibt.











  • Ich hoffe ich habe dich richtig verstanden, so sieht der dump aus wenn der Wert Positiv ist


    18:27:39.610 : 77 07 01 00 01 08 00 ff 65 00 1c 01 04 72 62 01 65 00 12 94 0c 62 1e 52 ff 65 00 0c 4c fc 01


    Im Vergleich dazu der dump von heute Mittag als der Wert negativ sein sollte,


    14:39:28.972 : 77 07 01 00 01 08 00 ff 65 00 1d 19 04 72 62 01 65 00 12 5e 91 62 1e 52 ff 65 00 0c 2b 7f 01

  • Beitrag von gemu2015 ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: obsolete ().
  • Hi apos


    Freut mich das jetzt geht. Da es jetzt schon mehrere Zähler sind die diese merkwürdige Eigenschaft haben habe ich das jetzt so gelöst dass man keine individuelle Compileroption mehr braucht.

    du gibts einmal USE_SML_SPECOPT als define an nicht dein DTZ541


    dann kannst du im descriptor diese spezielle Zeile einbauen (special option 1)


    1,=so1,00010800,65,11,65,11,00100700


    als erstes der obis code der das Richtungsbit mitbringt

    danach das Hex byte das das Flag enthält, bei dir 65 bei anderen mal 62 oder 63

    du musst das einfach 2 mal angeben da es bei dir beide mal die 65 ist

    danach die Bit Nummer des Richtungsbits.

    und zuletzt der Obiscode der invertiert werden soll, ist auch bei anderen Zählern ein anderer.


    da ich keinen solchen Zähler habe wäre es nett wenn du es mal testen könntest.


    Gruß


    Gerhard


    xsns_53_sml.ino.zip

  • Hi Gerhard,


    klar gerne, ich habe versucht mit der neuen xsns_53_sml.ino mit folgender


    user_config_override


    zu bauen, erhalte aber folgenden Fehler:


    Wenn ich ohne:

    Code
    #ifndef USE_SML_M
    #define USE_SML_M
    #endif


    baue läuft es zwar durch, aber es fehlt dann die Standard SML Funktionalität.


    Der Descriptor würde dann wie folgt aussehen: 1,=so1,00010800,65,11,65,11,00100700,Leistung,W,Power_curr,0, korrekt?


    Viele Grüße

    Anton

  • ok, konnte mit folgenden Parametern bauen:



    Allerdings erhalte ich bei dem Wert bei dem ich die Special Option vorstelle keinen Wert zurück bzw. eine 0. Script sieht wie folgt aus, die Ausgabe für Leistung ist in dem Fall ist 0 wenn ich die Special Option nach 1,77070100100700ff@1,Leistung,W,Power_curr,0 setze, hat die Special Option keinen Effekt und der Wert wird positiv dargestellt obwohl er negativ sein sollte.


  • Hi Gerhard,


    die neue Version funktioniert und lässt sich sauber bauen mit folgenden Parametern:


    Im Script muss die Special Option nach dem auslesen des Wertes eingefügt werden, sonst hat die Special Option keinen Effekt, Script sieht in meinem Fall dann so aus:

    Vielen Dank nochmal

    Anton