[Modul] KEBA KeConnect P30

Moinsen, sendet jemand von euch Texte Richtung der Keba? Ich habe eine X und eine C und möchte gerne bestimmte Texte anzeigen lassen. Zum Beispiel „Lade Tesla“ oder „Standby“ etc…
Wie ich texte per Script sende ist mir klar, nur wenn ich ein Text sende, wir er mir nur kurz angezeigt und dann springt die Keba wieder auf Ihre Standardtexte zurück. Muss ich wirklich alle paar Sekunden mein Script ausführen, damit der Text dauerhaft angezeigt wird?

Grundsätzlich kann man wohl eine Zeit mitgeben (https://www.keba.com/download/x/4a925c4c61/kecontactp30udp_pgen.pdf, Punkt 3.2.12), aber das hatte ich bisher noch nicht vorgesehen.
Müsste ich implementieren, wird aber vermutlich aber etwas dauern.

Die min und max Zeiten für den Text wären super. Bitte einbauen :smiley:

Versuch mal die v1.16 (Modulstore/Beta), gibt zu der Funktion zwei weitere Argumente, dito in der Action und im Instanz-Test-Bereich

1 „Gefällt mir“

Danke für die schnelle Implementierung. :heart_eyes:Ich checke das und melde mich

So, habe das mit dem Text getestet aber so recht will es noch nicht oder Keba hat es „blöd“ umgesetzt.

Erster Test mit

KebaConnect_SendDisplayText($wbwerkstatt, "Test", 2, 600);

Hier hätte ich erwartet, das der Text mindestens 2sec angezeigt wird und maximal 600sec. Sobald ein neuer Text kommt, wird dieser nach $MinimumDuration überschrieben.
In diesem Testfall verschwindet nach 2sec mein Text, somit nicht das was ich erwartet habe :sweat_smile:

Anschließend habe ich folgendes getestet und habe gehofft, das der Text 600sec angezeigt wird, es sei denn ein neuer Text kommt.

KebaConnect_SendDisplayText($wbwerkstatt, "Test", 600, 600);

Ergebnis war, der Text wird 600sec angezeigt, allerdings wird der Text nicht durch einen neuen Überschrieben. Egal was ich zur WB schicke, der alte Text bleibt stumpf stehen.

:weary:

… es sei denn, es ist ein (wichtiger?) system-text (irgendwie so steht das in dem verlinkten pdf)

um sicher zu sein, das ich das richtig schicke, schick mir doch noch den Debug von dem Test.

sieht so aus, wie es laut Doku sein soll

Ok, dann ist das Text schicken von Keba doof umgesetzt oder ich bin zu blöd um es zu verstehen.

Vielleicht habt ihr eine Idee.

Ich möchte z. B. folgendes:

Kein Auto angesteckt:
Ein Beispieltext der per Symcon geschickt wird, soll bis ein neuer Text gesendet wird, angezeigt werden.

Auto angesteckt, es wird nicht geladen:
Text 2 wird durch Symcon angezeigt bis zur nächsten Statusänderung

Usw…

Hallo Keba Nutzer,
ich habe schon seit längerem eine KebaP30 und wollte diese nun mit diesem Modul einbinden. Grundsätzlich klappt das super, die Werte werden problemlos ausgelesen. Ich betreibe die Wallbox nur mit 3Phasen. Mein Problem ist aber, dass ich beim Steuern der Ladeleistung Probleme habe. Wir haben einen ZOE der bis zu 22 KW laden kann.

Eigentlich sollte man ja mit dem Befehl currtime die Werte von 6000 bis 63000 senden können.
Wenn ich jetzt 6000 sende, lädt meine Station den ZOE mit unter 100 Watt. Wenn ich 7000 sende, dann lädt er mit knapp 2 KW.

Wer hat Erfahrungen mit den gesendeten Werten und was dann tatsächlich geladen wird? Warum passt bei mir der Wert 6000 nicht damit zusammen, dass rechnerisch mit ca. 4 KW geladen werden sollte?

Wo könnte da das Problem liegen? Wer hat eine Idee. Vielen Dank
Helmut

ich bin etwas verwirrt, wenn Du das Modul nutzt, dann sendest du ja nicht selbst Befehle per UDP. dazu gibt es ja Variablen im Modul, die bei entsprechender Änderung dann die passenden Befehle verschicken.

Und woher siehst du, das das Auto mit 100 W läd?

Grundsätzlich wird mit currtime die Stromstärke in mA gesendet und als 2. Wert dann die Verzögerung, mit der die Anpassung der Stromstärke wirksam sein soll.

Vermutlich ist es am besten, wenn du ein Instanz-Debug erstellst und mit per PN schickst.

Unbedingt als erstes die Limitierung im Debug erheblich erhöhen (10000 oder größer), sonst gibt es nur einen minimalen Ausschnitt zu setzen.

Dann erstmal eine Statusabfrage auslösen (gibt ja in der Instanz eine Funktion).
Dann die Änderung der Stromstärken auslösen und die nächste, automatische, Statusabfrage der Keba abwarten.
Und dann das Auto laden lassen und den nächsten Status der WB abwarten.
Den Debug dann als Datei an mich per PN und dann schaue ich mir das mal an

@demel42 Erstmal vielen Dank für dieses umfangreiche und tolle Modul. Wirklich eine tolle Arbeit!

Ich betreibe meine beiden Kebas X und C damit schon eine ganze Weile, will aber jetzt auch das Thema Überschussladen und Ladepriorisierung angehen, da nun das zweite eAuto da ist. Hab dazu auch ne Weile mit EVCC rumgespielt und überlege, ob ich EVCC als „Dienst“ im Hintergrund nutze und alles per MQTT mit Symcon austausche.

Lieber wäre mir aber alles in Symcon zu machen.
Der neue Energie Manager in der Beta, geht ja schon in die richtige Richtung. Wobei ich den Unterschied zwischen Elektrofahrzeug und Wallbox noch nicht ganz verstanden habe, in dem Modul.
Symcon weiß ja nicht welches Fahrzeug an der Box hängt.

Wenn ich jetzt auch noch die SOCs der Autos in Symcon bekomme, dann wäre ich fast am Ziel.

Aber jetzt zu meiner Frage zu dem Keba Modul.
Das mit dem Überschussladen klappt erstmal. Phasenumschaltung muss ich noch einbauen.
Aber ich würde gerne auch so eine Option haben, wie in EVCC mit der Namen „Min + PV Überschuss“. Also das immer mit z.B. 4,1kW geladen wird, nur der restliche Überschuss, wenn er denn noch vorhanden dazu addiert wird. Gibt es gar keinen Überschuss, wird trotzdem immer mit 4,1kW oder einem festgelegten Wert geladen. So kann man sicher sein, das der Wagen immer genügend geladen wird. Außerdem wird dann nicht ständig die Ladung unterbrochen. Wenn man dann noch den SOC hätte auch bis zum Abfahrminwert.

Ist das eher mit dem Energie Manager + extra Vars und Scripts zu lösen und ich fülle dann immer nur die Überschussvariable des Keba-Moduls oder wäre sowas auch über das Keba-Modul denk- und machbar? Eine weitere 4. Option bei der Betriebsart und eine weitere Variable mit Minleistung die nur dann dazu addiert wird, wenn diese Betriebsart läuft? Oder denke ich zu kompliziert? Vielleicht ist es aber auch kontraproduktiv?

Für meine Frau wäre das Umschalten der Betriebsart beim Keba-Modul einfacher, bevor sie im Energiemanager was einstellen oder im Keba-Modul auf Manuell am Strom rumfummeln muss.

Die finale Lösung wäre, dass ich diese Auswahl mit einem vorhandenen KNX MDT Glastaster umschalten kann. Das lässt sich dann ja noch einfach dazubauen.

Danke für eine Rückmeldung Gruß Jambo

Dran denken, das Phasenumschaltung immer eine Unterbrechung und Neustart des Ladevorgangs bedeutet; Hintergrund ist, das die Anzahl der Ohasen nur bei der Initiierung des Ladevorgangs ausgehandelt wird. Zwischen Ab- und erneutem Einschalten des Ladebüvorgngs zügibt es auch eine Pause, weil manche PKW da allergisch drauf reagieren.
Bei Keba geht das nur all 5min; der Ablauf wird ja durch die WB eingehalten (wenn die Sicherungen mit dem Phasenumschalter von Keba angeschlossen sind)

Phasenumschaltung macht das Modul durch manuellen Eingriff (Variable Netzanschluss Phasenumschaltung , wenn man will, auch aufgrund der Variable Maximale Energie dür den Ladevorgang

Das sind alles Dinge, die ich nicht in dem Modul sondern übergeordnet in dem Energieoptimierer sehe.

Optimierung ist auf jeden Fall ein spannendes Thema und sehr komplexes Thema und da macht es keinen Sinn, d as für eine spezifische WB/Hersteller zu machen.

Und man muss bedenken, das (zumindestens bei BMW) die BMW-App meckert, wenn mehrfach der Ladevorgang abgebrochen wurde, egal ob aufgrund von Phasenwechsel oder weil die verfügbare Überschussleistung zu gering ist.

Das hängt ja grundsätzlich von dem Hersteller/Modell ab, ob man überhaupt den SoC bekommt und wie häufig man das abrufen kann. Eine einfach Rechnung aus Start- und Ziel-SoC den benötigten Strom zu berechnen istbgar nicht so einfach, weil die Ladeverluste etc eine Rolle spiele. Also kommt man m.E. nich drumherum, den SoC laufen zu überprüfen.

@demel42 Danke
Ja das mit der Phasenumschaltung ist mir bewusst, das kommt auch erst später dazu.
Habe mir jetzt erstmal selber ein Lastmanagement Script zusammengebaut, welches meine Spezialitäten berücksichtigt. Das funktioniert im Kern auch schon sehr gut und überwacht auch meinen Netzanschluss und steuert die drei Wallboxen.

Den Datentransport von und zu den Boxen mache ich über dein Modul. Den Überschussmodus habe ich aber deaktiviert im Modul und lasse das mein Script direkt machen. Allerdings sind mir noch ein paar Dinge aufgefallen.

  1. Wenn ich per Script einen Wert unter der 6A Grenze schicke, dann wird daraus „cmd currtime 0 1“ gemacht. Also alles von 0-6A wird zu 0A. Das ist erstmal logisch, weil unter 6A pro Phase der Onboardcharger im 3AC Betrieb nicht lädt.
    Leider wird dann auch der Ladeupdatetimer deaktiviert und es läuft nur noch der Standbyupdatetimer. Allerdings quitiiert die Box scheinbar den 0A Wert nach ca. 3 Sekunden intern mit der Variable „laden möglich“ = false.
    Diese Statusaktualisierung bekomme ich in der Visu und vom Keba Modul aber erst nachdem der Standbytimer abgelaufen ist. Außerdem zeigt das Modul dann nicht mehr wie sonst 63A an sondern das Hardwarelimit 16A (Hardwarelimt)Das musste ich erstmal begreifen :slight_smile:
    Ich muss also nach einem solchen Command erstmal selber ein Standbyupdate auslösen um das zeitnah zu bekommen.

  2. Wenn ich danach wieder einen Wert über 6A - 15A zur Box sende, setzt die Box oder das Modul „Laden möglich“ auf true und die Box fängt wieder an zu laden. Sende ich aber genau 16A was ja das vorher ausgelesen Hardwarelimit ist. Dann bleibt „Laden möglich“ auf false und nix passiert. Auch hier ist wieder der Timer ein Fallstrick. Scheinbar läuft nur der Ladetimer wenn der Ladevorgang aktiv ist. Ob das Kabel im Auto steckt ist egal. Auch das musste ich erstmal verstehen :slight_smile:

Ist das alles so gewollt? Dann baue ich mein Script passend umzu.

Ist etwas schwierig, die Frage pauschal zu beantworten.

Erstmal ein paar grundsätzliche Punkte, bevor ich auf die einzelnen Punkte eingehe

Basis für die Implementierung ist UDP Programmes Guide. Bei solchen Beschreibungen muss man aber immer in Hinterkopf halten, das die eine gewissen Vorstellung der Realität / der API beschreiben, die aber von Modell zu Modell, von Firmware-Version zu der nächsten und zum Teil je nach Installation abweicht. Man muss solche Beschreibungen daher als Richtschnur ansehen, nicht als „Bibel“.

Eine Modul ist ja eher dafür da, die Kommunikation mit dem Gerät zu realisieren und gewisse Zusatzfunktionen zu bieten. Nicht möglich aber ist es, sich irgend ein Verhalten auszudenken, wenn das Gerät das nicht im Prinzip genauso sieht / die API das bietet.
D.h. man muss bei Befehlen immer die Antwort des Gerätes abwarten, damit man die Änderung als gegeben annehmen kann - der dann mit dem nächsten StatusUpdate eventuell korrigiert wird.

Wlstimmte Wertefelder werden möglicherweise nicht nur von IPS geändert, da gibt es einerseits die Keba-App, andererseits gibt es ja das X-Modell, das als Master fungieren kann für weitere Boxen und insbesondere die Ladeleistung anpasst (damit nur eine maximale Leistung verbraucht wird, auch wenn zwei Boxen aktive wären).
Das ist also ein Grund, warum immer das zählt, was die Box schickt.

Die Kommunikation läuft per UDP über den Port 7090 als Unicast für die Abarbeitung von Anfragen (diverse Stati und einige Befehle). diese Abfragen werden, wie du schreibst, in zwei möglichen Intervallen durchgeführt, schnell, wenn die Wallbox den Status „lädt“; wird von der Wallbox in Feld „State“ gemeldet über den Status 3 - das Modul wertet hierfür nur diesen Status aus, keine eigenen Logik, da nur das Gerät wirklich entscheidet, ob es nun lädt oder nicht mehr.
Zusätzlich gibt es unaufgefordert bestimmte Statusmeldungen von der Wallbox (Punkt 3.4 der Doku), die kommen auch über Port 7090, früher bzw. mein manchen Modellen über den getrennten Port 7092. Diese Statusmeldungen sind schon wichtig für eine zügige Aktualisierung bestimmter Werte.

Ich kann bei mir kein AKtualisierungsproblem feststellen

Keba akzeptiert und die Werte von 6000 mA … 63000 mA (wobei ich diesem Wert von 63 A nicht nachvollziehen kann, da ja bei einem 22 kW Anschluss auch nur 32 kW zulässig wären) - aber das ist deren „NULL“-Wert.
Wenn ich einen Wert < 6A schicken würde, würde die API das mit einem Fehler ablehnen; daher korrigiert das Modul das vorab.
Die 6A-Grenze stammt lt. Keba aus der entsprechenden ISO-Norm.

currtime 0 1 hat den Nebeneffekt, das das Laden deaktiviert wird (kommt aus dem Feld „Enable user“), eine andere Möglichkeit, die Ladeleistung auf zu setzen gibt es nicht.
Hinweis: man kann auch mittels „curr“ die Ladeleistung setzen, wird aber an anderer Stelle von Keba nicht empfohlen, weil das das EEPROM der Box ändert.

Das kommt nun mal nicht als Status-Meldung (siehe oben) sondern muss abgerufen werden. Das Problem ist, das von dem Zeitpunkt des currtime 0 1 nicht nur 1s vergeht sondern 6-7 Sekunden - wie schnell ist nicht wirklich sicher definiert.
Den ChargingTimer weiter laufen zu lassen, bis die Meldung quittiert worden ist, wäre schon einiges an Aufwand, weil es ja jede einzelne Situation und Abfolge von Befehlen ausprogrammieren müsste. Das wäre eine never endig Story.

Kannst natürlich den StandbyTime auf ein kürzeres Intervall setzen; ob das Auswirkung auf die Stabilität hat, kann ich nicht sagen.

Bisschen schwer zu sagen, was da passiert, ist mir bisher bei mir nicht aufgefallen. Aber ich habe das auch nicht so akribisch überprüft.
Grundsätzlich wird die Maximale Stromstärke für den Ladevorgang aus dem Feld Curr user gewonnen, das Feld *Maximale unterstützte Stromstärke" kommt su Curr HW. Diese Felder unterliegen auch von der Box her einer gewissenen eigenen Logik.
Curr HW ist übrigens nicht das Limit der Box sondern das Limit, das nach der Aushandlung mit dem Auto festgelegt wird. Wenn kein Auto dran, nehmen die vermutlich den Standardwert, der als Maximum in der Box festgelegt ist.

Um das herauszubekommen müsste man konkret sehen, was sich im Debug der Instanz so tun (bei dem Debuglog IMMER die Limitierung erheblich erhöhen und ausreichen vorher und nachher mit protokollieren).
Das Feld der Maximale Stromstärke für den Ladevorgang hat eine Doppelfunktion, das ja einerseits den Status der Box abbildet und andererseits den gewünschten Zielwert, das durch die Variablen-Aktion gesetzt wird oder bei Dynamik über die Verfügbare Überschussleistung).

Bei mir funktioniert bei mir schon. Ob allerdings der Timer wirklich das Problem ist? Das Modul setzt nach einem Befehl den StandbyTime auf 1s, d.h. nach einer Sekunde wird der Status abgeholt.

Vielleicht hat deine Box ein anderes Timing als meine oder andere Firmware oder oder.

Auch da bräuchte ich ein Debug, um zu schaden, was das läuft.

Das größte Problem ist bei solchen diffizilen Abläufen ist schon, das man immer ziemlich davon abhängt, wie die Gerät denn dann im Detail funktioniert. Vieles davon ist unerwartet und unverständlich und dazu kommt, das das, was ein Anwender dann erwartet sich möglicherweise nicht deckt.

@demel42 Danke für das ausführliche Feedback, ich habe leider schon befürchtet, das die Wallbox auch in die Suppe spucken kann.

Ich glaube ich hole mir noch ein paar wichtige Daten zusätzlich auch über Modbus von der Wallbox, die kann ich dann ja für meine Ladetrigger verwenden zusammen mit den OOCP Backendvars.

Beim studieren der Modbusdoku ist mir auch noch die Möglichkeit des Modbus Failsafes aufgefallen.
Das ist ja eigentlich perfekt für Lastmanagement über Symcon. Wenn Symcon mal offline ist, oder das LAN ausfällt, dann wird die Ladung beendet bzw. auf meine Werte reduziert.

Allerdings muss ich dann innerhalb des Failsafes-Timouts auch immer einen SET Befehl schicken.
Ein Readbefehl reicht leider nicht. Aber ich kann ja immer den gleichen Stromwert senden, falls sich nichts ändert.

Leider bekommt man über Modbus nicht an alle Informationen…
Es fehlen z.B. Sart der letzten Ladung etc. Außerdem wird die RFID nur als Integer übermittelt.
Displaymeldungen senden, ist ebenfalls nicht möglich…
Also kommt echt nur eine Kombination für mich in Frage.

Eine Frage habe ich aber noch, obwohl ich ja ein OCCP Backend mit Symcon habe, was auch in der Box als online angezeigt wird. Ist die Variable bei mir in deinen Modul noch nie aktulisiert worden oder hat sich jemals verändert.

Hast Du eventuell noch ne Idee zu?

Danke und Gruß

Jambo

Die würde nur aktualisiert werden, wenn in den Daten das Feld „Backend“ enthalten wäre. Ist es vermutlich nicht.
Ich muss aber sagen, das ich weder weis, was das anzeigen soll noch habe ich das in den Übertragung meiner P30 C drin.
Ich hatte das vermutlich damals implementiert, weil es das Feld in der Doku gab.