Pylontech US2000 mit tasmota auslesen

  • Gerade mal mit den Infos aus Beitrag 1 kompiliert. Habe dort auch für alle eine aktuelle bin abgelegt.

    In deinem Screenshot sieht man die Information "Lade" und "Entlade".

    Wäre das die Information ob er gerade ge- oder entladen wird? Oder wenn beide auf 0 sind passiert nichts?

    Und ich vermisse diese Angaben im Skript aus dem ersten Post.

    Danke!

  • Guten Morgen opferwurst,

    erstmal vielen vielen Dank für diesen "recht" einfachen Weg den Akku mit Tasmota auszulesen.

    Mein Akku sagt zwar er wär Online aber zu meinem Bedauern werden mir keine Werte angezeigt.

    Weißt du an was das liegen könnte?

    PS:hab die Tasmotaversion 12.4.0.2 wie beschrieben. DIP-Schalter sind alle auf 0.

    Beste Grüße Lexton

    Einmal editiert, zuletzt von Lexton90 (19. Mai 2023 um 10:20)

  • Hallo Lexton90

    Kannst Du einen Fehler in der Verkabelung ausschliessen? Bei mir war dies immer der Fehler für keine Daten. Vielleicht mal RX un TX am Pylontech/RS232 tauschen.

    Weiterhin sind im Script noch diverse print-Befehle aus kommentiert, diese eventuell von oben nach unten mal probeweise aus kommentieren und in der Konsole schauen was dann ausgegeben wird.

    Gruss ow

    Einmal editiert, zuletzt von opferwurst (24. Mai 2023 um 07:07)

  • Software:

    Die Firmware muss mit dem Development branch von tasmota kompiliert werden! Ich denke, die meisten "Power-User" werden wissen was zu tun ist.

    Ich bekomme das Projekt über die fertige Bin mit dem Einfügen nicht zum Erfolg. :(
    Das Tasmota mit dem Script EInbinden scheint alles normal. Aber der RX Eingang am ESP8266-Board (Wemos D1 Mini) scheint nicht als wenn er als Eingang arbeitet? Bei mir ist auf RX am WEMOS dauerhaft 3.3 Volt So als wäre es ein Ausgang?
    Welchen Modul Type muss ich den im Tasmota einstellen, das Auslesen des Pylontech US 5000 über die RX funktioniert?
    Oder geht das mit den US 5000 noch nicht?

    An bei ein Bild

    Einmal editiert, zuletzt von schraubi (3. August 2023 um 13:28)

  • Hallo Schraubi

    Der RX-Pin wird im Script definiert, musst also in der WebConfig nichts einstellen (None).

    Welches bin und welches Script hast Du benutzt?

    Und ich habe hier nur den 2000er. Ob der 5000er die gleiche seriellen Daten bereitstellt kann ich nicht sagen.

  • @opferwurst:

    Ich nutze die Firmware aus Beitrag #1.

    -> fimware (12.4.0.2) aus #1
    -> Script. >UPDATE 27.02.2022 - Fix Stromanzeige aus #1
    -> Hardware: ESP 8266 (D1 MINI) und den D1 Mini Pro probiert.
    -> Pins siehe Bild unten. Also die wo RX und TX dran steht wurden benutzt.

    -> Code

    >D 64

    ;variablen für berechnungen

    res=0

    rstr=""

    label=""

    lraw=""

    val=0

    volt=0

    curr=0

    temp=0

    coul=0

    tag=0

    ;ggf. anpassen:

    ladepin=4 ;gpio pin für Lade-Relais

    entladepin=5 ;gpio pin für Entlade-Relais

    socmax=98 ; maximale Ladeschwelle

    socmin=20 ; minimale Entladeschwelle

    >B

    res=0

    res=so(3 1 115200 8N1 1024)

    ;print open %res%

    spinm(ladepin O) ; set GPIO to mode output

    spin(ladepin 0) ; Switch off relais on boot

    spinm(entladepin O) ; set GPIO to mode output

    spin(entladepin 0) ; Switch off relais on boot


    >F

    res=sa()

    if res>0

    then

    ;print res=%res%

    rstr=sr(10)

    rstr=sb(rstr 1 sl(rstr))

    ;print read %rstr%

    label=sb(rstr 0 7)

    lraw=sb(rstr 0 10)

    val=st(rstr : 2)

    switch label

    case "Voltage"

    volt=val/1000

    case "Current"

    if lraw=="Current "

    then

    curr=val

    endif

    case "Tempera"

    temp=val/1000

    case "Coulomb"

    coul=val

    ends

    endif


    >S

    if upsecs%5==0

    then

    res=sw("pwr 1\n")

    ;print write cmd

    endif

    ;print %volt% %curr% %temp% %coul%


    ;tagberechnung

    if time>sunrise

    and time<sunset

    then

    tag=1

    else

    tag=0

    endif


    ;ladebedingung

    if tag==1

    and

    coul<socmax

    then

    spin(ladepin 1)

    spin(entladepin 0)

    else

    spin(ladepin 0)

    endif


    ;entladebedingung

    if tag!=1

    and

    coul>socmin

    then

    spin(entladepin 1)

    spin(ladepin 0)

    else

    spin(entladepin 0)

    endif


    ;print lade %0pin[ladepin]%

    ;print entlade %0pin[entladepin]%

    >T

    ; sende mqqt-Einzeltopis zusätzlich/anstatt json wie unter ">J)

    =>publish iot/%topic%/Voltage %4volt%

    =>publish iot/%topic%/Current %0curr%

    =>publish iot/%topic%/Coulomb %0coul%

    =>publish iot/%topic%/Tag %0tag%

    >W

    Spannung{m}%4volt% V

    Strom{m}%0curr% mA

    Temperatur{m}%3temp% C

    Ladung{m}%0coul% %%

    Lade {m}%0pin[ladepin]%

    Entlade {m}%0pin[entladepin]%

    >J

    ,"pylon":{"Voltage":%4volt%,"Current":%0curr%,"Coulomb":%0coul%,"Temperature":%3temp%}

    #

    2 Mal editiert, zuletzt von schraubi (4. August 2023 um 10:56)

  • Also Pin 3 für RX und Pin 1 für TX sollte passen.

    Ich gehe aber nach dem hier davon aus, dass die Ausgabe der seriellen Schnittstelle im US5000 nicht kompatibel ist. Die Abfrage für den Pylontech stammt quasi von hier ab und dort wird leider auch nur der US2000 und der US3000 genannt.

  • Ich hab noch mal auf Github geschaut.
    Aus Beitrag #1 wurde das ältere Projekt für das Tasmota benutzt. :/


    alt: aus Beitrag Tasmota #1:

    GitHub - irekzielinski/Pylontech-Battery-Monitoring: Adding WiFi monitoring to US2000B and US2000C batteries.
    Adding WiFi monitoring to US2000B and US2000C batteries. - GitHub - irekzielinski/Pylontech-Battery-Monitoring: Adding WiFi monitoring to US2000B and US2000C…
    github.com

    neuer hier: 8)

    GitHub - hidaba/PylontechMonitoring: Adding WiFi monitoring to US2000B , US2000C , US5000 batteries.
    Adding WiFi monitoring to US2000B , US2000C , US5000 batteries. - GitHub - hidaba/PylontechMonitoring: Adding WiFi monitoring to US2000B , US2000C , US5000…
    github.com

    Ich bin nun nicht so fit mit dem Integrieren von Libs ins Tasmota.
    Es müsste nur jemand die neuere Lib vom Github da in Tasmota 12 rein machen.

    Dann würden die Pylontech US 5000 auch gehen. :) :)

  • Ich denke, libs müssen da keine "rein".

    Du kannst mal von oben nach unten im Script die print Befehle auskommentieren (das Semikolon davor löschen) und die Ausgabe(n) mal posten. Da sieht man eventuell ob der Pylontech antwortet. Bitte aber vorher bitte genau die Verkabelung durchgehen, da liegt oftmals der Fehler.

  • Ja, Lustig :) es geht nun!

    Meine 3x Pylontech US 5000 funktionieren mit dem aus Beitrag #1 Tasmota V12.4.x nun doch :thumbup:
    Der Fehler war kein Verdrahtungsfehler von mir mit RX TX oder so. Und die Tasmota ist auch OK.

    An dem ganzen Problem ist nur der verwendete, bei Ebay gekaufte, RS232toTTL (MAX3232) Converter schuld. :evil: :evil: :evil:
    Bild des Problem Converters:



    Hab in meiner Bastel - Wühlkiste noch einen 15 Jahre alten Diskret aufgebauten MAX3232 Converter gefunden,

    mit dem das ganze sofort ging. 8)

  • Freut mich das es funktioniert! Ich hatte im 1.Betrag ja schon geschrieben, dass die "billigen" RS232 oft einen Layoutfehler haben und deshalb nicht funktionieren.

    Und gut zu wissen, dass sich auch der 5000er auslesen lässt.

  • Danke Opferwurst, noch mal für deine Unterstützung :thumbup:  
    Möchte gar nicht erst wissen wieviel der faulen China MAX3232 hier bereits in DE die Leute zur Verzweiflung gebracht haben.


    Von den Auslesewerten aus dem Pylontech per Tasmota benötige ich eigentlich nur den Füllstand der Akkus.
    Diesen möchte ich gerne per HTTP an meinen Volkszäher Rasp in die Datenbank schreiben.

    Bisher mache ich das für andere Sensoren mit ESPEASY und damit dem HTTP String: http://middleware.php/data/%valname%.json?operation=add&value=%value%

    Kann ich den Tasmota irgendwie dazu bewegen den Füllstand per HTTP in den Volkszähler zu senden? :/


    EDIT: Habs hinbekommen das die Daten aus Tasmota auch in der Volkszähler Datenbank per http ankommen. :) :thumbup:

    Im Script unten folgendes ergänzt:
    ws="WebSend [IP vom VZ]"
    =>%ws% /http://middleware.php/data/%valname%.json?operation=add&value=%0coul%

    2 Mal editiert, zuletzt von schraubi (6. August 2023 um 16:38)

  • Hat jemand das System am laufen mit dem MAX3232 und einen Poylontech 5000 ?

    bekommen keine Daten.

    habe den Memos geflasht der WEMOS läuft aber leider bekomme ich keine Daten.

    Leitungen geprüft finde leider keinen Fehler.

    Fehler gefunden RX und TX war vertauscht

    Einmal editiert, zuletzt von Lucky51179 (12. Oktober 2023 um 17:40)

  • Hi,

    vielleicht hat jemand noch eine Idee,

    die ausgelesene Werte aus dem Pylontech US für die Temperatur haben mindestens 2 eher 3 Grad Abweichung.
    Daher war ich auf die Idee gekommen an das Gehäuse der Pylontech einen GPIO1 am ESP 8266 einen DS18X20 zu erweitern.
    Und damit die Gehäusetemperatur zu messen.

    Messen tut der nun damit bestens. :)

    Aber nun hätte ich gerne den Temperaturwert per WEBsend noch gerne in der Datenbank.
    Hat jemand eine Idee wie ein entsprechender Befehl im Script aussehen könnte, damit ich den Wert des DS18X20 per WEBsend versenden kann? :/

    Wenn ich das Webinterface des Tasmota aufrufe wird der WERT vom DS18X20 sogar schon angezeigt.
    Es fehlt nur noch der WEBsend zum Controller Datenbank.
    Mein verwendetes Script im Tasmota, ist das aus dem Thread #30.

  • Hallo und vielen Dank für das tolle Projekt.

    Nach leichten Starschwierigkeiten (Verkabelungsfehler) hat`s auch bei mir mit der .bin und Skript geklappt. DANKESCHÖN!!!

    Eine kurze Frage ... ich nutze (2) Pylontech US2000C in Verbinung mit dem Aufbau+BIN aus #1. Von Tasmota und der Programmierung hab ich leider wenig Ahnung. Kann mir jmd sagen, ob es in Tasmota und dieser Kombination auch irgendwie möglich ist, die Zellspannungen anzeigen zu lassen, bzw notfalls aus Platzgründen einfach die niedrigste, höchste Zelle und die größte Differenz dazwischen?... Und falls ja, wie der Befehl dazu aussehen müsste und wo ich ihn im Skript ergänzt werden muss. (wie im Beispielbild in rot eingefügt)

    Danke.