D0 Zähler SML auslesen mit Tasmota

  • Und? Wie macht er sich bisher?

    Ganz ok - aber nicht perfekt.

    An den kalten Tagen, an denen wir einen starken Durchlauf hatten, da wurden ca. 0,5 m³/Tag zu viel erfasst. An den normalen Tagen funktioniert es allerdings ganz gut. Es ist auf jeden Fall wesentlich besser als der einfache Zähler vorher.

  • Als IRs habe ich den BPW 78 und TEKT5400 erfolgreich im Einsatz. Die lassen sich auf Grund ihrer Bauform auch schöner ankleben :)

    Schön zu sehen, wie es (über die paar Millimeter) auch ohne viel Schmitt-Trigger-&Transistoren-Geraffel funktionieren kann. :thumbup:

    Welche flachen seitlich strahlenden LEDs (die der ESP8266 idealerweise auch direkt treiben kann) welcher Wellenlänge beschaltest Du wie, in ebenso passender Bauform?

    So könnte man das dann ja an einen einzigen Controller für alle Zähler im Schrank (vgl. community.simon42.com/t/anbindung-eines-zweiten-ir-lesekopf-von-volkszaehler-an-einen-vorhandenen-mit-esp-01/8515/5) leicht und flexibel verkabeln, mit durchsichtigem doppelseitigem Band ankleben, WLAN-Antenne rausführen (mangels Buchse auf den meisten Boards und in dieser störungsreichen Umgebung ggf. eine Kunst für sich) und dessen Tür dann jahrelang zulassen... :)

    5 Mal editiert, zuletzt von TEN (26. Februar 2024 um 12:18)

  • Hallo zusammen,

    Hardware:

    • Siemens UH50 (Wärmezähler)
    • Hichis Wifi-Lesekopf (Tasmota Version 13.1.0)

    ich bin relativ neu in dem Thema und versuche seit Tagen die Daten des Zählers auszulesen, leider erfolglos. ich habe diverse Skripten aus dem Thread hier ausprobiert. Das angehängte Skript gibt mir der "Durchlauf_year" aber alle andere Werten sind leer. Muss der Zähler mit einem PIN erstmal "freigeschaltet" werden ? Ich bin für jeden Tipp dankbar.

    Thanks


    Skript:


    Logs:

  • Hier die Debug Logs


  • Pin? wenn die Werte am Display ablesbar sind sollte es reichen, aber

    ;set sml driver to 300 baud and send /?! as HEX to trigger the Meter res=sml(1 0 300) print "Anfrage wird gesendet" res=sml(1 1 "0000000000000000000000000000000000000000") res=sml(1 1 "0000000000000000000000000000000000000000") res=sml(1 1 "2F3F210D0A") res=sml(1 0 2400)

    diese Konstellation ist eine Trickanfrage die sicherlich mit der CPU-Frequenz, dem Chip und der sleep-Einstellung des System harmonieren muss -viel Glück beim probieren - oder Noschvie hat noch eine Idee.


    Das System ist schwer überlastet und wird schon überhitzen !

    aus WEBLOG 11:13:19.985 MQT: sml/tasmota/waerme/STATE = {"Time":"2024-03-07T11:13:19","Uptime":"0T00:01:55","UptimeSec":115,"Heap":12,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":332, und kann die Daten nicht mehr sicher abarbeiten (System-CPU zu schwach ?). Ein Versuch mit Sleep 250 wird nicht ausreichen !

    >Status 2 in der Console zeigt uns das verwendete System.

    kritischer Script - nur 1 Uhr und und !!

    ;Tagesverbrauch
    hr=hours
    if chg[hr]>0
    and hr==1
    and v2>0
    then

    für Test ersetzen durch:

    ;Tagesverbrauch (jede Minute)
    hr=minutes
    if chg[hr]>0
    then

    Einmal editiert, zuletzt von karoCB (7. März 2024 um 13:40)

  • 14:07:32.679 var not found: minutes
    14:07:33.665 var not found: minutes
    14:07:34.666 var not found: minutes

  • 1.) ok - bei Minuten ist hier nur mins ausreichend um die Tasmota -Syntax zu befriedigen !

    2.) Tasmota Befehl sensor53 d1 in der Konsole eingeben, damit die empfangenen SML Daten ausgegeben werden anstelle interpretiert zu werden.
    Beispielhaft enthält die Tasmota Konsole anschließend Zeilen wie diese:

    3.) Tasmota Befehl sensor53 d0 in der Konsole eingeben um den "Dump" Modus zu beenden.

    Mal sehen ob bei der Idee von Noschvie was raus kommt.

    4.) Entlasten der >F Session (100ms) schaffen das nicht bei einem 8266 !

    d.h. >F Zeile löschen und gegen >S ersetzen und die alte >S Zeile löschen

    Einmal editiert, zuletzt von karoCB (7. März 2024 um 16:56)

  • ich bin etwas weiter, ein paar Daten werden doch ausgelesen...

    2 Mal editiert, zuletzt von guyyann (7. März 2024 um 22:34)

  • guyyann

    Dein Zähler gibt zwar Obis Codes aus, hat aber kein LF am Ende jeden Codes.

    Das kann nur mit "Pattern Compare shift mode" dekodiert werden und nicht im "Line Mode".

    Line Mode ist aber default. Du musst also auf Pattern Compare umschalten.

    Dazu diese Zeile in den Deskriptor einfügen:

    1,=so2,0

  • Danke für den Tip. Also so etwas ?

    Code
    1,=so2,0,6.8(@1,Wärmemenge gesamt,kWh,6.8,0