Tomcat42 / pylontech-python

Functions to communicate to Pylontech Batteries using RS-485 serial communication
MIT License
11 stars 7 forks source link

Verständnisfrage #2

Closed danielschramm closed 2 years ago

danielschramm commented 2 years ago

Hallo Bernd,

ich nerve noch einmal. Deine Lib läuft echt super Timeout-Handling habe ich etwas angepasst, um ein schnelleres Timeout zu bekommen, beim Testen der Batteriezahl und die Baudrate als Parameter bis ganz oben durchgereicht.

Ansonsten setze ich gerade die Ebene darüber, die Befehle zu Codieren und die Antworten in Dicts zu zerlegen, was auch ganz gut klappt. Allerdings kämpfe ich mit der Protokollbeschreibung und Deinen Beispielen, die nicht immer zusammen zu passen scheinen, was wohl durchaus an der schlechten Doku liegen kann.

Hast Du eine Systematik zwischen den Begriffen "Command", "ADR", "Pack" und "Battery" erkennen können, oder nutzen die das rein zufällig.

z.B. folgender Fall: "get module SN number" Im Protokoll steht LenID=2, damit klappt nichts. In Deinem Beispiel hast Du 4 und entsprechend 2 Byte INFO worauf die Akkus antworten. Dazu kommt die Unstimmigkeit, dass die 1. Batterie im Stapel ADD=2 hat, im Command aber 1 und in der Kombi als erstes Byte in INFO auch keine Antwort kommt. Aktuell sende ich folgendes:

  1. Batt: ADD=2, INFO[0]=2, INFO[1]=1
  2. Batt: ADD=3, INFO[0]=3, INFO[1]=2

Ob das so korrekt ist, ist ein reines Stochern im Nebel, auf jeden Fall antwortet mir die korrekte Zahl an Batterien und ich sehe unterschiedliche Seriennummern.

Wenn Du Ideen hast, die man die Protokoll-Doku entschlüsselt, dann wäre ich sehr dankbar. Das Coden geht flott, das Raten dauert ewig....

Ein 3. Layer soll nachher noch auf das Codieren und Decodieren der Botschaften drauf, mit dem man eine schlanke API für den ganzen Stack bekommt und sich nicht mehr um die einzelnen Befehle kümmern muss. Zwischenergebnisse findest Du in einem Branch im Fork von Deinem Projekt. Pull request kommt, wenn es anwendbar wird.

Danke,

Daniel

Tomcat42 commented 2 years ago

"Schreib etwas, was sich von selbst versteht - beim Ersten mal - und du bist unsterblich..." schwer verständliche Doku - ja... ich kann bei mir mitschneiden, wenn ein paar Beispiele helfen - das kann ich in der Doku als Anmerkung unterbringen... Hilft das?

danielschramm commented 2 years ago

Hallo Bernd,

vielleicht hast Du ja mal Lust einen Blick in den aktuellen Zwischenstand zu werfen und zu schauen, ob die Codierung der Adressen passen kann. https://github.com/danielschramm/pylontech-python/tree/decoder

Ich habe im example/main.py Deine Einträge der direkten Kommunikation auskommentiert und durch meinen Encoder ersetzt. - Das will ich vor dem Pull-Request auch noch hübscher machen, dass beide Layer eigene Dateien als Beispiel bekommen. Aktuell war das so für mich praktisch, zwischen beiden Varianten hin und her wechseln zu können.

Aktuell habe ich die weiteren Feinarbeiten aber zurück gestellt und versuche die HomeAssistant API für ein Plugin zu verstehen.

Danke, Daniel