Treiber für KEBA P30 über Modbus/TCP — wie geht ihr so einen Fall an?

Hallo zusammen,

ich würde gerne einen Ladepunkt-Treiber für die KEBA KeContact P30 über Modbus/TCP
entwickeln und würde mich über einen Rat freuen, wie ich das am besten aufziehe.

edge/implement.adoc habe ich durchgearbeitet, das hat mir für den Einstieg sehr geholfen. Dort
geht es um ein neues Gerät; bei mir ist es eher eine zweite Protokollvariante eines Geräts, das
es schon gibt. Für den Fall bin ich mir bei ein paar Entscheidungen unsicher und würde lieber
einmal fragen, als in eine Richtung zu laufen, die euch nicht passt.

Ausgangslage

In io.openems.edge.evse.chargepoint.keba sehe ich zwei EVSE-Factories:

Factory Gerät Protokoll
Evse.ChargePoint.Keba.UDP P30 UDP
Evse.ChargePoint.Keba.Modbus P40 Modbus/TCP

Die P30 spricht ebenfalls Modbus/TCP, hat dabei aber eine andere Registerbelegung als die P40.

Frage 1: Wo würdet ihr so einen Treiber unterbringen?

Mir fallen drei Wege ein:

a. eine dritte Factory Evse.ChargePoint.Keba.P30Modbus im bestehenden keba-Bundle
b. ein eigenes Bundle, z. B. io.openems.edge.evse.chargepoint.keba.p30modbus
c. eine Gerätetyp-Option an der bestehenden Evse.ChargePoint.Keba.Modbus, die die
Registerkarte umschaltet

Ich habe keinen Überblick, welcher Weg zu euren Plänen für die EVSE-Bundles passt — gibt es da
eine Linie, an der ich mich orientieren kann?

Frage 2: Wie haltet ihr es mit dem gemeinsamen Code?

ProductTypeAndFeatures.from(Long) wertet eine Ziffernfolge aus. Die P30 codiert ihren
Produktschlüssel anders — andere Reihenfolge der Stellen, und Connector sowie DeviceCurrent
liegen auf anderen Ziffernwerten. Ich bräuchte also eine zweite Auswertung.

Wäre es in eurem Sinne, die in common daneben zu legen, etwa als fromP40() und fromP30()?
Oder soll common frei von produktspezifischem Wissen bleiben und so etwas ins jeweilige
Produkt-Package wandern?

Zum Schluss

Über eine Einschätzung würde ich mich freuen. Wenn sich daraus etwas ergibt, das ihr im Projekt
haben wollt, mache ich gerne einen PR daraus.

Viele Grüße
Martin

Hallo Martin,

die Ausgangslage ist:

  • KEBA P30 unterstützt UDP und ab einer späteren Firmwareversion auch Modbus/TCP
  • KEBA P40 unterstützt nur Modbus/TCP (und intern wohl auch HTTP/REST)

Wir haben uns deshalb bewusst dafür entschieden, dass wir die KEBA P30 nur via UDP unterstützen. Eine Umstellung auf Modbus/TCP würde dort nur Nachteile bringen (z. B. langsameres Empfangen der Daten).