BYD B-Box Premium HVS 7.7 + SMA SBS 2.5

  • So, das Protokoll zwischen App und BYD habe ich decodiert. Ich kann jetzt folgende Werte auch ohne die App auslesen:


    • SoC
    • Zellenspannung High
    • Zellenspannung Low
    • Strom
    • Spannung Batterie
    • Temperatur High
    • Temperatur Low
    • Spannung Ausgang
    • Seriennummer
    • BMU A Firmware Version
    • BMU B Firmware Version
    • BMS Firmware Version

    Und was ganz interessant ist, es gibt noch einen Wert der genau auf 100 steht. Ich denke das könnte der SoH sein, den die App selbst ja nicht ausspuckt. Jedenfalls habe ich den nirgendwo gesehen. Das wäre natürlich cool. 8)


    Ich werde mal die Tage versuchen, das Auslesen in ein Programm zu packen was dann regelmäßig die Werte ausliest,

    falls das gut funktioniert kann ich mal näheres dazu posten, natürlich nur falls Interesse besteht.


    Das Auslesen der Werte funktioniert dann übrigens auch über die LAN IP der Box. D.h. die Trickserei mit der Route kann man sich dann auch sparen.


    Wünsche allen eine autarke Nacht!


    Andi



  • Du kennst die hier?

    https://www.eft-systems.de/upl…onnect%20Plus-V1.2(1).zip

  • Nein, habe ich das erste Mal von gehört. Danke. Kann die mehr als die App, d.h. kann ich z.B. die IP der Box eintragen? Oder arbeitet das Tool letztlich genauso wie die App, d.h. ich muss auch im BYD eigenen WLAN sein? Konnte ich jetzt anhand der Doku auf den ersten Blick nicht herausfinden.


    Schaue mir das Tools heute abend mal an.

  • So ich habe mal ein Programm fertiggestellt, um die Werte alle direkt ohne App auszulesen.


    Hier sieht man den Netzwerktraffic, rot=Anfrage an BYD, blau = Antwort vom BYD.



    Sowohl die Anfragen als auch die Antworten beginnen immer mit \x0103, keine Ahnung was das

    zu bedeuten hat, vielleicht bedeutet das Turm 1 von 3 oder der chinesische Programmierer hatte einfach am ersten März Geburtstag. Die letzten beiden Bytes im Paket sind eine CRC16 Checksumme.

    Warum man nun also die Bytes \x00000013 und \x05000019 zum BYD schicken muss weiß der Teufel, zumindest antwortet er darauf mit Paketen die die von mir gewünschten Infos enthalten. Wer es weiß oder herausfindet kann es mir ja sagen.


    Im Antwortpaket (blau) kommt nach dem \x0103 erstmal ein Byte mit der Länge der Nutzdaten. Damit weiß der Empfänger wie viele Bytes er vom Netzwerkstream lesen muss. Danach kommen dann noch zusätzlich die 2 Bytes für den CRC.

    ACHTUNG: der CRC geht über die Nutzdaten PLUS das davorstehende Längenbyte.


    Das erste Antwortpaket hat demnach 0x26 (=38) Byte. Die ersten 19 Bytes sind die Seriennummer, schwarz gefärbt. Danach kommen 5 "x"e. Danach jeweils 2 Byte für die Versionsnummern von BMU-A, BMU-B und BMS. Den Inhalt der verbliebenen 8 Byte konnte ich nicht ermitteln.


    Das zweite Antwortpaket hat 0x32 (50 Bytes). Es besteht aus jeweils 2 Bytes für SoC, CellVoltageHigh + Low, SoH, Strom, Vbatt, TempHigh, TempLow und dann weiter hinten kommt nochmal Vout (in obigem Beispiel 0xa4a6). Die restlichen Bytes haben sich mir noch nicht erschlossen. Einige der Werte sind schon ok, andere müssen durch 100 geteilt werden , damit sich dann ein sinnvoller Wert mit Nachkommastellen ergibt, z.B: die Spannung. Der Wert für den Strom ist "signed", d.h. der kann beim Laden der Batterie negativ werden. Ob und wie das genau funktioniert sehe ich erst morgen wenn er wieder lädt.


    Wenn ich nun mein Programm laufen lasse, erhalte ich folgenden Output:

    BMS = 3.19

    BMU-A = 3.13

    BMU-B = 3.13

    CellTempHigh = 30

    CellTempLow = 27

    CellVhigh = 3.3

    CellVlow = 3.3

    Current = 6.7

    SerialNo = P030TXXXXXXXXXXXXXX

    SoC = 90

    SoH = 100

    Vbatt = 422.5

    Vout = 419.9


    Ich werde das Programm nun alle 5 Minuten laufen lassen und die Werte wegschreiben. Interessant wird dann die Gegenüberstellung von SoC SBS und SoC BYD sein.


    Der im BYD eingebaute "Server" kann immer nur eine Connection auf Port 8080/tcp gleichzeitig handlen. Sprich wenn man die App gestartet hat, kann man die Werte nicht gleichzeitig per Skript auslesen. Ich persönlich brauche die App aber nun nicht mehr, d.h. sie fliegt runter. Wenn man wirklich mal einen FW Upgrade machen muss, kann man dafür ja dann auch die App für Windows benutzen und kurzzeitig mal das WLAN der Box wieder aktivieren. Sollte ja nicht so oft vorkommen. Die Netzwerkroute werde ich auch wieder entfernen, sie hat keinen wirklichen Nährwert mehr für mich.

  • So hier nochmal ein paar Gedanken zu der Be Connect Plus App für den PC.


    1) Thema IP 192.168.16.254


    Diese IP ist fest in dem Programm hinterlegt, wie auch schon unter Android vermutet. Wer mit einem Hexeditor umgehen kann, kann jedoch leicht in der .exe Datei die IP gegen seine eigene IP ersetzen, sofern diese nicht länger ist. Ich habe dort z.B. meine IP 192.168.23.244 eingetragen. Ergebnis: die .exe verbindet sich problemlos direkt über LAN mit dem BYD ohne Trickserei mit den Routen.

    Wie schon festgestellt blockiert auch diese App den einzigen Ausleseslot zum BYD, d.h. solange das Programm läuft keine weitere Auslesung per Skript möglich.


    2) Disconnect Button


    Der Button ist Müll. Wenn man den klickt, wird die Verbindung zum BYD zwar geschlossen, aber sofort wieder neu aufgebaut. Ist wohl ein Bug im Programm.


    3) Einzelzellen Info


    Wenn ich unter Diagnose die Zelleninfo anzeigen lassen, sind beim Modul 4 alle Temperaturen 0. Bei den anderen Modulen wird die Temperatur angezeigt und die Zellenspannung wird bei allen Modulen angezeigt.


    Hat jemand auch einen HVS 10.2 und ähnliche Effekte? Ist die Frage ob das ein Fehler vom Programm, vom Protokoll oder von meinen Speichermodul ist.


    4) History Daten und Event Log

    Das Programm kann auch das Event Log vom BYD auslesen. Allerdings ist dieses bei mir leer, so dass ich nicht so viel

    dazu sagen kann.

    Das History Log ist ganz interessant, da kann man u.a. sehen wann er gebalanced hat. Es wird noch nach BMS und BMU unterschieden.



    Ich werde mir da mal den Spass machen und die Fehler direkt an BYD melden. Mal sehen ob man da überhaupt eine Antwort bekommt.


    Viele Grüße

    Andi

  • Man kann doch nur eine einfache Adresse routen und nicht das ganze Netzwerk wie zuerst von mir vorgeschlagen.


    Würdest du dein Programm veröffentlichen forenandi73 ?

    Wenn du nur eine Adresse routen willst (=Hostroute) muss du aber bei der Subnetz Maske 255.255.255.255 eingeben. Mag sein dass das andere auch irgendwie funktioniert, aber es ist trotzdem nicht richtig.


    Das Programm habe ich mal angehängt. Es basiert auf perl und benötigt das Digest::CRC Modul für die Prüfsumme. Muss man ggfs nachinstallieren. Alternativ die Prüfung des CRC im Programm ausknipsen. Oder gleich auf python, .net o.ä. portieren.

    Dateien

    • readBYD.zip

      (1,73 kB, 153 Mal heruntergeladen, zuletzt: )
  • Hey, ich finde euch echt bewundernswert! Ihr seid echte Pros ??!


    Ich kann nur bescheiden aber freudig bekanntgeben, dass meine Kombi SMA SBS5 HM2.0, STP6 und BYD HVS7.7 nun komplett läuft. Auch bei mir wirds nun die Nacht und die Tage spannend. Leider scheint die Sonne wohl am WE nicht.


    Viel Spass noch beim Hacken!

    6.6kWp an STP6 + SBS5.0 + BYD HVS7.7