NEWS
[Frage] Realisierung Adapter UDP Keba Wallbox
-
@sneak-l8 sagte in [Frage] Realisierung Adapter UDP Keba Wallbox:
@gto Die Logik für die Batterie-Strategie 2 habe ich jetzt mal angepasst.
Hat hier gut funktioniert heute, genau wie es sein soll. Super Arbeit, danke!
-
@gto Danke für die Erläuterung.
Ich hab jetzt allerdings nicht ganz verstanden:
zu 1: mit Anlernen meinst Du, die Karte im x-Series-Webportal zu hinterlegen?
zu 2+3: wenn die Box immer 8 Bytes zum Starten will und die Box auch immer 8 Byte zurückgibt, die von der Box aber nicht verstanden werden, heißt das dann, dass man mit start keinen Ladevorgang starten kann? Ich dachte, Du hättest zuvor geschrieben, dass es geht, wenn man 00 anhängt?
zu 4: wenn dem so ist (zu 2+3), dann wäre der Workaround, beim anstecken, immer einen Ladevorgang für Zeitraum x (minimal, also möglichst 1phasig mit 6 A) zu starten (falls nicht sowieso ausreichend PV-Überschuss da ist), denn damit klappt dann auch das Laden, wenn erst einige Stunden später ausreichend PV-Überschuss da ist?Dann wäre das Fazit: rfid-Codes merken bringt nichts, Anforderung wäre jetzt, (nur) bei x-Series eine Option mit x Sekunden anzubieten, die bei PV-Automatik immer nach dem Anstecken geladen wird, richtig?
-
@sneak-l8
Bei allen Boxen (nicht nur P30x) können auch Karten mit kürzeren Codes (weniger als 8 Byte) durch Anlegen am RFID-Leser angelernt werden, bei diesen gibt die Box über UDP aber einen mit 0ern verlängerten Code zurück, diesen könntest du zwar speichern aber damit keinen START und STOPP ausführen, weil die Box eine andere Kartennummer gespeichert hat und diese bei einer P30c nicht modifizierbar ist.
Mit der P30x würde die Freigabe funktionieren, sofern man im WebUI diesen 8Byte Code speichert. Im Adapter sollte aber eine Universallösung für ALLE Boxen programmiert sein.Fazit: Ja, um bei ALLEN Boxen (nicht nur x-Serie) eine korrekte RFID-Funktionalität zu erhalten muss beim Anstecken des Autos UND aktivierter PV-Automatik einmalig eine Ladefreigabe für x Sekunden erfolgen.
-
@gto Ok, jetzt verstehe ich. Hatte sich Keba zu dem Problem geäußert? Das klingt mir einfach nach einem Bug. Geht es evtl. wenn man die Null vorne auffüllt? Oder am Ende bewusst Leerzeichen anstelle von nullen anhängt?
Aber dann würde ich mal diese Option einbauen. Es reicht ja ein Minutenwert, den man hinterlegen kann. Ist der auf 0, ist die Automatik aus. Sie würde auch nur greifen, wen authON = true ist. Einen separaten Schalter brauche ich dann nicht.
-
@sneak-l8 das ist die Antwort die ich vom Support erhalten habe - bringt uns nicht wirklich weiter..
[...]
Sehr geehrter Herr,
nach unseren Prüfungen und laut Handbuch werden 20 Zeichen verwendet:
"RFID tag
000000000000…
String (20 chars)
RFID Token ID if session started with RFID.
First character is the lowest nibble.
RFID class
000000000000…
String (20 chars)
If all digits are “0”, then no RFID card was
used to start the charging session (authorization is set to “OFF”)"
[...] -
@sneak-l8 Bitte nicht auf authON=true beschränken, dann müsste man immer erst das Auto anstecken.
Ich, und sicher viele andere auch, machen es umgekehrt. Wenn ich schon bei der Box stehe um das Ladekabel zu entnehmen, halte ich auch gleich die Karte vor und stecke erst danach das Auto an. In diesem Fall ist authON=false.Wenn du bei PV-Automatik=true und Änderung von PLUG auf Plug=7 für x Minuten die Ladung (1-phasig, 6A) freigibst ist jeder Ablauf, egal ob erst RFID (KFZ-Ladung startet beim Anstecken) oder Auto (Wallbox verlangt RFID), abgedeckt.
-
@gto @Sneak-L8
macht ihr das "einstellbar" (wenn man dieses verhalten möchte) oder kommt das dann automatisch?
derzeit habe ich mir nämlich manuell ein "Plug&Charge" dazuprogrammiert. Ich muß nur anstecken und er authentifiziert mich mit meiner rfid karte automatisch (d.h. ich muß jetzt keine karte mehr hinhalten). das funktioniert bei mir auch beim pv modus gut....auch wenn er erst später lädt wegen überschluss.... -
@tminimax
Nimmst du dafür mein Script? Wenn ja, dann ist ja darin die Funktion, die Sneak in den Adapter einbaut, enthalten und kann danach wieder entfernt werden.
Sollte Sneak das in der Weise wie ich beschrieben habe programmieren, dann funktioniert auch dein Plug&Charge, ebenso wie jede eingelernte Ladekarte, egal welche Codelänge die Karte enthält. -
@tminimax
Nimmst du dafür mein Script? Wenn ja, dann ist ja darin die Funktion, die Sneak in den Adapter einbaut, enthalten und kann danach wieder entfernt werden.
Sollte Sneak das in der Weise wie ich beschrieben habe programmieren, dann funktioniert auch dein Plug&Charge, ebenso wie jede eingelernte Ladekarte, egal welche Codelänge die Karte enthält. -
@gto nein - ich habe dir ja mein Codefragment gesendet - von dir nehme ich derzeit kein script
-
-
@gto sagte in [Frage] Realisierung Adapter UDP Keba Wallbox:
@sneak-l8 Bitte nicht auf authON=true beschränken, dann müsste man immer erst das Auto anstecken.
Ich, und sicher viele andere auch, machen es umgekehrt. Wenn ich schon bei der Box stehe um das Ladekabel zu entnehmen, halte ich auch gleich die Karte vor und stecke erst danach das Auto an. In diesem Fall ist authON=false.Wenn du bei PV-Automatik=true und Änderung von PLUG auf Plug=7 für x Minuten die Ladung (1-phasig, 6A) freigibst ist jeder Ablauf, egal ob erst RFID (KFZ-Ladung startet beim Anstecken) oder Auto (Wallbox verlangt RFID), abgedeckt.
Du meinst vermutlich "nicht authreq verwenden". authON bedeutet laut Doku nur, dass die WhiteList nicht leer ist und man sich zum Laden grundsätzlich autorisieren muss.
-
@sneak-l8 Sorry, hatte ich vertauscht, authON als Schalter ist natürlich korrekt.
-
@gto @minimax Ich habe gerade mal eine weitere Version erstellt, bei der die Funktion nun implementiert sein sollte. Da ich selbst nicht autorisieren muss, kann ich schlecht testen. Aber bitte mal probieren.
Sollte jetzt mit 6A auf einer Phase laden, wenn bei zu geringem PV-Überschuss das Auto angesteckt und der Ladevorgang autorisiert wurde (oder umgekehrt).
Die Dauer der Ladung könnt Ihr in der Konfiguration im 2. Abschnitt einstellen.
Ich hoffe, es funktioniert wie gewünscht. Im Debug-Log ist zu wehen, wie lange der Ladevorgang aufgrund der Regelung aktiv bleibt (danach greifen halt weitere Regeln wie z.B. "einmal begonnenen Ladevorgang für x Sekunden aufrecht erhalten). Daher sollte die voreingestellte Minute kein Problem darstellen. -
@sneak-l8 Ich erhalte beim Anstecken des Autos Fehlermeldungen, beim ersten Versuch wurde der Adapter beendet wegen eines erkannten Loops. Die Meldungen unten und das Log sind vom zweiten Versuch nach Adapterneustart.
host.raspberrypi 2025-04-01 19:18:57.850 error instance system.adapter.kecontact.0 terminated with code 6 (UNCAUGHT_EXCEPTION) host.raspberrypi 2025-04-01 19:18:57.850 error Caught by controller[1]: at Kecontact.handleJsonMessage (/opt/iobroker/node_modules/iobroker.kecontact/main.js:1191:22) host.raspberrypi 2025-04-01 19:18:57.850 error Caught by controller[1]: at Kecontact.checkWallboxPower (/opt/iobroker/node_modules/iobroker.kecontact/main.js:2252:51) host.raspberrypi 2025-04-01 19:18:57.850 error Caught by controller[1]: TypeError: authTimestamp.getTime is not a function host.raspberrypi 2025-04-01 19:18:57.849 error Caught by controller[0]: This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: kecontact.0 2025-04-01 19:18:57.303 warn Terminated (UNCAUGHT_EXCEPTION): Without reason kecontact.0 2025-04-01 19:18:57.291 error authTimestamp.getTime is not a function kecontact.0 2025-04-01 19:18:57.291 error TypeError: authTimestamp.getTime is not a function at Kecontact.checkWallboxPower (/opt/iobroker/node_modules/iobroker.kecontact/main.js:2252:51) at Kecontact.handleJsonMessage (/opt/iobroker/node_modules/iobroker.kecontact/main.js:1191:22) kecontact.0 2025-04-01 19:18:57.287 error unhandled promise rejection: authTimestamp.getTime is not a function kecontact.0 2025-04-01 19:18:57.287 error Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). kecontact.0 2025-04-01 19:18:54.094 warn Error handling received message: SyntaxError: Unexpected token 'C', "CAN error:"... is not valid JSON (CAN error: 0x1003000e)
Von der Funktionalität her scheint es aber zu funktionieren.
-
@gto Bitte noch mal aktualisieren, Fehler sollte behoben sein.
-
@sneak-l8 ```
Leider immer noch diese Fehler direkt nach dem Anstecken des KFZhost.raspberrypi 2025-04-02 12:48:53.291 error instance system.adapter.kecontact.0 terminated with code 6 (UNCAUGHT_EXCEPTION) host.raspberrypi 2025-04-02 12:48:53.291 error Caught by controller[1]: at Kecontact.handleJsonMessage (/opt/iobroker/node_modules/iobroker.kecontact/main.js:1191:22) host.raspberrypi 2025-04-02 12:48:53.291 error Caught by controller[1]: at Kecontact.checkWallboxPower (/opt/iobroker/node_modules/iobroker.kecontact/main.js:2252:51) host.raspberrypi 2025-04-02 12:48:53.291 error Caught by controller[1]: TypeError: authTimestamp.getTime is not a function host.raspberrypi 2025-04-02 12:48:53.290 error Caught by controller[0]: This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: kecontact.0 2025-04-02 12:48:52.730 warn Terminated (UNCAUGHT_EXCEPTION): Without reason kecontact.0 2025-04-02 12:48:52.719 error authTimestamp.getTime is not a function kecontact.0 2025-04-02 12:48:52.719 error TypeError: authTimestamp.getTime is not a function at Kecontact.checkWallboxPower (/opt/iobroker/node_modules/iobroker.kecontact/main.js:2252:51) at Kecontact.handleJsonMessage (/opt/iobroker/node_modules/iobroker.kecontact/main.js:1191:22) kecontact.0 2025-04-02 12:48:52.715 error unhandled promise rejection: authTimestamp.getTime is not a function kecontact.0 2025-04-02 12:48:52.715 error Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch().
-
@gto Das ist komisch. Ich hab jetzt mal einen weiteren Debug-Eintrag gemacht, um zu sehen, was in authTimestamp drinsteht. Kannst Du mal schauen, was bei statistics.authPlugTimestamp steht? Vermutlich aktuell nichts (null), aber wenn der Abbruch auftritt. Das wäre hilfreich für die weitere Analyse.
Also bitte mal mit der Version von git.P.S. In Deinem Log steht auch Deine Email-Adresse drin. Solltest du vielleicht aus-x-en ...
-
@sneak-l8 Ich habe nach nochmaliger Installation von git jetzt einen Versuch gemacht, es ist kein Fehler aufgetreten. Im statistics.authPlugTimestamp stehen Datum und Uhrzeit des Ansteckens. Die nächsten Tage teste ich weiter.
-
@gto Ok, danke. Dann hattest du evtl. doch noch nicht die korrigierte Version. Ich hab hauptsächlich das Log erweitert und nur neben "null" nun auch auf einen leeren String beim Auslesen vom state statistics.authPlugTimestamp abgefragt. Dann hätte er aber eigentlich schon beim auslesen abbrechen müssen.