KACO Wechselrichter verbinden

Prima, 1000 Dank.
Dann wäre meine Zusammenfassung, dass das, was ich mir wünsche, mit openEMS wohl nicht oder nur schwer klappen wird - dumm, dass ich schon auf Version 8 bin :sob:. Ich schaue mir den code dennoch an, dümmer werde ich davon sicher nicht.
Ich schaue einfach, ob und wie ich eine ähnliche oder gleiche COM zwischen der Win-Applikation und meinem WR emulieren kann. Ich muss es ja nur für meinen eigenen WR schaffen und nicht für die Allgemeinheit. Im Notfall lasse ich irgendwo die Win-Applikation laufen und sniffe die COM, die Ordnung des TCP/IP-Payloads und die wenigen Werte, die mich interessieren, kenne ich ja bereits.
Danke noch mal für die Hilfe.

1 Like

FYI: Hab’s jetzt, den WR ohne fremden code und Partner ID anzusprechen und Daten auszulesen.


Jetzt muss ich “nur” noch meinen Python-Code in SmarthomeNG integrieren …

1 Like

Hallo @Ebse ,
Da ich genau das gleiche Problem habe. Würde es mich jetzt brennend interessieren wie du bis zu diesem Punkt gekommen bist. Leider hatte ich bisher keinen Erfolg.
Danke schonmal im Voraus.

Hi @MichaISP , freut mich, wenn ich helfen kann. Gleichwohl habe ich gelernt, dass das Forum hier eisern an OpenEMS hängt und meine Lösung ja quasi dem entgegen spricht. Ich bin da wohl eher ein Fremdkörper :wink:
Egal. Mein Vorgehen:

  1. Mit Wireshark die IP des WR mit dem Port 9760 aufgezeichnet. Das habe ich für mich in 3 Phasen geordnet. Start der Win-APP ohne den gefundenen WR anzuklicken, nach dem Klicken auf den gefundenen WR und dann beim Schließen der Win-APP. Daraus konnte ich dann auch den erforderlichen TCP/IP-Handshake “ablesen”
  2. Dann habe ich mir die Daten des Wireshark-Mitschnitts angeschaut und auf Basis der Anfragen der Win-APP die Antworten versucht zu “lesen”. Das ist mir zu einem gewissen Teil gelungen. Offen sind noch die Energiewerte. Die Leistungswerte, PV, und Bat-Daten habe ich.
  3. mit den gewonnenen Erkenntnissen habe ich angefangen mir ein python-script zu schreiben, um die COM zum WR “zu emulieren” und Daten auszulesen. Da ich vorher kein Python konnte, war das eine willkommene Aufgabe, um mir wenigstens ein paar grundlegende Programmierkenntnisse beizubringen. Dabei musste ich auch noch ein paar ordentliche Wissenslücken zum TCP/IP-Protokoll und dem Hanshake schließen.
  4. Mein Script läuft bei mir, offnet die COM, liest die Daten und schließt die COM auch wieder. Da das Ganze nur mit meiner WR-Seriennummer und MAC-Adresse funktioniert, nehme ich an, dass wir das für Deinen WR anpassen müssen. Einen Versuch sollte es aber wert sein. Am Wochenende komme ich wieder zum programmieren, dann ertüchtige ich mal mein Script, so dass wir es damit versuchen können, dass Du in den Parametern einfach Deine Daten einträgst und es bei Dir mal ausprobierst. Was meinst Du?

das hört sich super an! lass uns mal direkt Daten austauschen da wir hier keine privaten Nachrichten schreiben können.

Hallo Ihr 2 !

Ihr könnt sehr wohl Private Nachrichten Schreiben ! :slight_smile:
Grüße !

Hi Ebse,
Ein OpenEMS Forum, das “eisern an OpenEMS” hängt, ja komisch sowas :).
Ja wir sind an Lösungen für alle Interessiert. Da die wenigsten leute Skripte etc. bedienen können oder das als dauerhafte Lösung ansehen ;).

Deshalb bauen wir Komponenten ;). Ich vermute mal ganz stark, dass du mit deinem Verfahren eine “Partner-ID” ausliest oder zumindest eine ID, die pro Wechselrichter gültig ist.
du kannst ja einfach mal versuchen, deine erwiresharkte ID in die Komponente einzutragen und schauen, ob damit Werte vom Wechselrichter kommen.

1 Like

Hi @p.wimmer, das ist natürlich ne super Idee und wenn man so engstirnig unterwegs ist wie ich, übersieht man das gerne mal.
Wenn ich mal soweit bin, dass das Eine zuverlässig funktioniert, probiere ich das gerne mal aus. Dann bin ich am Ende doch im richtigen Forum, wenn ich das via OpenEMS mal ausprobiere :wink:. Aber eins nach dem anderen - ich brauche halt recht lange für derlei, weil ich noch sehr unerfahren bin und nur am Wochenende dazu komme. Dennoch Danke für den guten Vorschlag

Ich denke eher, dass er den “RAW-TCP Payload” ausliest und daraus die Werte entnimmt…

Das wird dann wiederrum nicht funktionieren. Bin aktuell auch dran, das ganze mit Mikrowechselrichtern zu machen, um Sie ins OpenEMS zu bringen, indem ich die Keys der Wechselrichter (Hardcoded) rausfiltere und verwende um die TCP nachrichten zu entschlüsseln :smiley:

ne so wie ich ihn verstanden habe, hat er einen für seinen “WR” spezifischen Code gefunden und mit dem python script ruft er das jetzt ab :).
@Ebse, musst du bei jedem Request einen speziellen ‘Schlüssel’ mitschicken?
ich hab im code auf die schnelle gar nicht gefunden, was die Partner-id macht :slight_smile:

Hi @p.wimmer,
tatsächlich schicke ich keinen Schlüssel. Die Vermutung von @Sn0w3y ist korrekt - ich sniffe einfach die TCP/IP-com zwischen der Win-Applikation und dem WR. Sowohl was den Payload betrifft als auch die Art und Weise wie die Kommunikation aufgebaut und geschlossen wird.

Allerdings habe ich bislang keinen Fokus darauf gelegt, ob im Datenstrom ein „Schlüssel“ oder ähnliches ausgetauscht wird. Daher würde ich Deine Idee schon mal bei Gelegenheit aufgreifen wollen und schauen, ob ich da was finde und es irgendwie dann auch entsprechend nutzen.
Wie oben geschrieben, wäre das für mich aber „Projekt-Teil 2“ :wink:

Viele Grüße

DAS wäre aber SEHR interessant, da wir dann eventuell einen “Generalschlüssel” hätten (was zu prüfen wäre).

Grüße !

Siehe hier:

KacoBlueplanetHybrid10CoreImpl → openems/io.openems.edge.kaco.blueplanet.hybrid10/src/io/openems/edge/kaco/blueplanet/hybrid10/core/KacoBlueplanetHybrid10CoreImpl.java at develop · OpenEMS/openems · GitHub

und dann hier:

Client → openems/io.openems.edge.katek.edcom/src/com/ed/edcom/Client.java at develop · OpenEMS/openems · GitHub

Ich vermute auch, dass man aus diesem “RAW-TCP Payload” den Schlüssel relativ einfach extrahieren kann. Dieser muss ja in der Win-APP auch hinterlegt sein. Ab dann wäre der Weg über die bestehende OpenEMS-Komponente sicherlich am bequemsten, um nicht alles neu programmieren zu müssen.

1 Like

Das denke ich auch, aber dieser wird halt denke ich verschlüsselt vorliegen…
Ich Reverse aktuell einige “günstige” China Komponenten mit IoT Dongles (GoodWe, Sungrow, etc.) Goodwe nutzt z.B. einen HF-LPT100 und Sungrow einen ESP32 zur Übertragung :smiley:

Da könnte man ja eventuell auch mal beim Kostal schauen, welches Device da drin hängt, die Firmware dumpen und da drin mal kucken, was das Device da so macht :smiley: