Keba Wallbox welches Modell

aha, da muss ich mal nachhaken.

@paresy: ist das etwas, was in eine Modul auch sinnvollerweise berücksichtigt werden sollte? Hat das eine Änderung in der Kommunikation mit dem ModBus-Partner zur Folge oder dient das mehr zur Reduzierung der Last innerhalb vom IPS?

Hallo demel,

jetzt wo du es geschrieben hast mit den 1000ms habe ich es auch gesehen. :see_no_evil:
Danke für den Hinweis.

Das mit den drei Gruppen gefällt mir auch sehr gut :+1:

Gruß Stephan

Ein Zwischenstand:
ich habe ein zusätzliche Modul gemacht, nun auf Basis von UDP, Grund:

  1. das UDP-Interface bietet laut Doku mehr Funktionen und Informationen
  2. die kontinuierliche Abfrage des Status kann unterbleiben, weil die WallBox Broadcasts schicken soll
    „schicken soll“ ist genau ich das, was ich mangels Stromer noch nicht testen kann

Von daher wäre es nicht schlecht, wenn das jemand installieren würde und z.B. mal etwas lädt.
Bitte vor dem Laden den Instanz-Debug aktivieren, Limitierung auf deutlich hoch setzen und so oder so, gerne mir den Debug schicken.
Wenn es funktionier sollten sich die Stati (Lade- und Kabel-Status) automatisch ändern und ChargedEnergy sollte ebenfalls automatisch aktualisiert werden.
Im Debuglog sollte so etwas wie „broadcast message“ erscheinen.
Das Abfrage-Intervall im Moduls selbst habe ich erstmal recht hoch (60 min) gesetzt, weil ich nach keine Ahnung habe, ob / wie häufig man das doch aktualisieren sollte.

Wenn das funktioniert würde ich die ModBus-Variante nicht weiter entwicklen und demzufolge wieder löschen.

demel

Wie erstelle ich die UDP-Instanz? Bei mir wird da immer ein ModBus-Instanz erstellt. Finde keine Option eine UDP-Instanz anzulegen.

wenn du bei Erstellen der Instanz nach Keba suchst, werden eigenloch uwei Einträge angezeigt, KeConnectP30 und KeConnectP30udp

demel

… mist, hatte nicht comittet, moment … ok. ist jetzt im Modulstore /beta … sorry

Wann sollten da sich die Variablen aktualisieren? Auch wenn ich die Funktion KebaConnect_UpdateData ausführe aktualisiert sich noch nichts.
Instanz:

TXT: 22.11.2021, 20:48:54 |          CheckAction | action=Array<LF>(<LF>    [creation] => 1637610355<LF>    [cmd] => report 2<LF>    [exec_ts] => 1637610474<LF>)<LF>
HEX: 22.11.2021, 20:48:54 |          CheckAction | 61 63 74 69 6F 6E 3D 41 72 72 61 79 0A 28 0A 20 20 20 20 5B 63 72 65 61 74 69 6F 6E 5D 20 3D 3E 20 31 36 33 37 36 31 30 33 35 35 0A 20 20 20 20 5B 63 6D 64 5D 20 3D 3E 20 72 65 70 6F 72 74 20 32 0A 20 20 20 20 5B 65 78 65 63 5F 74 73 5D 20 3D 3E 20 31 36 33 37 36 31 30 34 37 34 0A 29 0A 
TXT: 22.11.2021, 20:48:54 |          CheckAction | new_actions#5
HEX: 22.11.2021, 20:48:54 |          CheckAction | 6E 65 77 5F 61 63 74 69 6F 6E 73 23 35 
TXT: 22.11.2021, 20:49:54 |          CheckAction | action=Array<LF>(<LF>    [creation] => 1637610355<LF>    [cmd] => report 2<LF>    [exec_ts] => 1637610474<LF>)<LF>
HEX: 22.11.2021, 20:49:54 |          CheckAction | 61 63 74 69 6F 6E 3D 41 72 72 61 79 0A 28 0A 20 20 20 20 5B 63 72 65 61 74 69 6F 6E 5D 20 3D 3E 20 31 36 33 37 36 31 30 33 35 35 0A 20 20 20 20 5B 63 6D 64 5D 20 3D 3E 20 72 65 70 6F 72 74 20 32 0A 20 20 20 20 5B 65 78 65 63 5F 74 73 5D 20 3D 3E 20 31 36 33 37 36 31 30 34 37 34 0A 29 0A 
TXT: 22.11.2021, 20:49:54 |          CheckAction | no answer to command "report 2" started 2021-11-22 20:47:54
HEX: 22.11.2021, 20:49:54 |          CheckAction | 6E 6F 20 61 6E 73 77 65 72 20 74 6F 20 63 6F 6D 6D 61 6E 64 20 22 72 65 70 6F 72 74 20 32 22 20 73 74 61 72 74 65 64 20 32 30 32 31 2D 31 31 2D 32 32 20 32 30 3A 34 37 3A 35 34 
TXT: 22.11.2021, 20:49:54 |          CheckAction | new_actions#4
HEX: 22.11.2021, 20:49:54 |          CheckAction | 6E 65 77 5F 61 63 74 69 6F 6E 73 23 34 
TXT: 22.11.2021, 20:50:30 |            AddAction | cmd=report 1
HEX: 22.11.2021, 20:50:30 |            AddAction | 63 6D 64 3D 72 65 70 6F 72 74 20 31 
TXT: 22.11.2021, 20:50:30 |            AddAction | cmd=report 2
HEX: 22.11.2021, 20:50:30 |            AddAction | 63 6D 64 3D 72 65 70 6F 72 74 20 32 
TXT: 22.11.2021, 20:50:30 |            AddAction | cmd=report 3
HEX: 22.11.2021, 20:50:30 |            AddAction | 63 6D 64 3D 72 65 70 6F 72 74 20 33 
TXT: 22.11.2021, 20:50:30 |          CheckAction | action=Array<LF>(<LF>    [creation] => 1637610355<LF>    [cmd] => report 3<LF>    [exec_ts] => 0<LF>)<LF>
HEX: 22.11.2021, 20:50:30 |          CheckAction | 61 63 74 69 6F 6E 3D 41 72 72 61 79 0A 28 0A 20 20 20 20 5B 63 72 65 61 74 69 6F 6E 5D 20 3D 3E 20 31 36 33 37 36 31 30 33 35 35 0A 20 20 20 20 5B 63 6D 64 5D 20 3D 3E 20 72 65 70 6F 72 74 20 33 0A 20 20 20 20 5B 65 78 65 63 5F 74 73 5D 20 3D 3E 20 30 0A 29 0A 
TXT: 22.11.2021, 20:50:30 |             SendData | request data {"DataID":"{8E4D9B23-E0F2-1E05-41D8-C21EA53B8706}","Buffer":"report 3","ClientIP":" XXX.XXX.XXX.XXX","ClientPort":7090,"Broadcast":false}
HEX: 22.11.2021, 20:50:30 |             SendData | 72 65 71 75 65 73 74 20 64 61 74 61 20 7B 22 44 61 74 61 49 44 22 3A 22 7B 38 45 34 44 39 42 32 33 2D 45 30 46 32 2D 31 45 30 35 2D 34 31 44 38 2D 43 32 31 45 41 35 33 42 38 37 30 36 7D 22 2C 22 42 75 66 66 65 72 22 3A 22 72 65 70 6F 72 74 20 33 22 2C 22 43 6C 69 65 6E 74 49 50 22 3A 22 20 31 30 2E 32 31 2E 32 30 2E 32 38 22 2C 22 43 6C 69 65 6E 74 50 6F 72 74 22 3A 37 30 39 30 2C 22 42 72 6F 61 64 63 61 73 74 22 3A 66 61 6C 73 65 7D 
TXT: 22.11.2021, 20:50:30 |          CheckAction | new_actions#7
HEX: 22.11.2021, 20:50:30 |          CheckAction | 6E 65 77 5F 61 63 74 69 6F 6E 73 23 37 
TXT: 22.11.2021, 20:51:30 |          CheckAction | action=Array<LF>(<LF>    [creation] => 1637610355<LF>    [cmd] => report 3<LF>    [exec_ts] => 1637610630<LF>)<LF>
HEX: 22.11.2021, 20:51:30 |          CheckAction | 61 63 74 69 6F 6E 3D 41 72 72 61 79 0A 28 0A 20 20 20 20 5B 63 72 65 61 74 69 6F 6E 5D 20 3D 3E 20 31 36 33 37 36 31 30 33 35 35 0A 20 20 20 20 5B 63 6D 64 5D 20 3D 3E 20 72 65 70 6F 72 74 20 33 0A 20 20 20 20 5B 65 78 65 63 5F 74 73 5D 20 3D 3E 20 31 36 33 37 36 31 30 36 33 30 0A 29 0A 
TXT: 22.11.2021, 20:51:30 |          CheckAction | new_actions#7
HEX: 22.11.2021, 20:51:30 |          CheckAction | 6E 65 77 5F 61 63 74 69 6F 6E 73 23 37 
TXT: 22.11.2021, 20:52:30 |          CheckAction | action=Array<LF>(<LF>    [creation] => 1637610355<LF>    [cmd] => report 3<LF>    [exec_ts] => 1637610630<LF>)<LF>
HEX: 22.11.2021, 20:52:30 |          CheckAction | 61 63 74 69 6F 6E 3D 41 72 72 61 79 0A 28 0A 20 20 20 20 5B 63 72 65 61 74 69 6F 6E 5D 20 3D 3E 20 31 36 33 37 36 31 30 33 35 35 0A 20 20 20 20 5B 63 6D 64 5D 20 3D 3E 20 72 65 70 6F 72 74 20 33 0A 20 20 20 20 5B 65 78 65 63 5F 74 73 5D 20 3D 3E 20 31 36 33 37 36 31 30 36 33 30 0A 29 0A 
TXT: 22.11.2021, 20:52:30 |          CheckAction | no answer to command "report 3" started 2021-11-22 20:50:30
HEX: 22.11.2021, 20:52:30 |          CheckAction | 6E 6F 20 61 6E 73 77 65 72 20 74 6F 20 63 6F 6D 6D 61 6E 64 20 22 72 65 70 6F 72 74 20 33 22 20 73 74 61 72 74 65 64 20 32 30 32 31 2D 31 31 2D 32 32 20 32 30 3A 35 30 3A 33 30 
TXT: 22.11.2021, 20:52:30 |          CheckAction | new_actions#6
HEX: 22.11.2021, 20:52:30 |          CheckAction | 6E 65 77 5F 61 63 74 69 6F 6E 73 23 36 
TXT: 22.11.2021, 20:53:30 |          CheckAction | action=Array<LF>(<LF>    [creation] => 1637610474<LF>    [cmd] => report 1<LF>    [exec_ts] => 0<LF>)<LF>
HEX: 22.11.2021, 20:53:30 |          CheckAction | 61 63 74 69 6F 6E 3D 41 72 72 61 79 0A 28 0A 20 20 20 20 5B 63 72 65 61 74 69 6F 6E 5D 20 3D 3E 20 31 36 33 37 36 31 30 34 37 34 0A 20 20 20 20 5B 63 6D 64 5D 20 3D 3E 20 72 65 70 6F 72 74 20 31 0A 20 20 20 20 5B 65 78 65 63 5F 74 73 5D 20 3D 3E 20 30 0A 29 0A 
TXT: 22.11.2021, 20:53:30 |             SendData | request data {"DataID":"{8E4D9B23-E0F2-1E05-41D8-C21EA53B8706}","Buffer":"report 1","ClientIP":" XXX.XXX.XXX.XXX","ClientPort":7090,"Broadcast":false}
HEX: 22.11.2021, 20:53:30 |             SendData | 72 65 71 75 65 73 74 20 64 61 74 61 20 7B 22 44 61 74 61 49 44 22 3A 22 7B 38 45 34 44 39 42 32 33 2D 45 30 46 32 2D 31 45 30 35 2D 34 31 44 38 2D 43 32 31 45 41 35 33 42 38 37 30 36 7D 22 2C 22 42 75 66 66 65 72 22 3A 22 72 65 70 6F 72 74 20 31 22 2C 22 43 6C 69 65 6E 74 49 50 22 3A 22 20 31 30 2E 32 31 2E 32 30 2E 32 38 22 2C 22 43 6C 69 65 6E 74 50 6F 72 74 22 3A 37 30 39 30 2C 22 42 72 6F 61 64 63 61 73 74 22 3A 66 61 6C 73 65 7D 
TXT: 22.11.2021, 20:53:30 |          CheckAction | new_actions#6
HEX: 22.11.2021, 20:53:30 |          CheckAction | 6E 65 77 5F 61 63 74 69 6F 6E 73 23 36 

UDP Socket

TXT: 22.11.2021, 20:50:30 | TRANSMIT [ XXX.XXX.XXX.XXX:7090] | report 3
HEX: 22.11.2021, 20:50:30 | TRANSMIT [ XXX.XXX.XXX.XXX:7090] | 72 65 70 6F 72 74 20 33 
TXT: 22.11.2021, 20:50:30 |               QUEUED | Backlog: 2
HEX: 22.11.2021, 20:50:30 |               QUEUED | 42 61 63 6B 6C 6F 67 3A 20 32 
TXT: 22.11.2021, 20:53:30 | TRANSMIT [ XXX.XXX.XXX.XXX:7090] | report 1
HEX: 22.11.2021, 20:53:30 | TRANSMIT [ XXX.XXX.XXX.XXX:7090] | 72 65 70 6F 72 74 20 31 
TXT: 22.11.2021, 20:53:30 |               QUEUED | Backlog: 3
HEX: 22.11.2021, 20:53:30 |               QUEUED | 42 61 63 6B 6C 6F 67 3A 20 33 
TXT: 22.11.2021, 20:55:30 | TRANSMIT [ XXX.XXX.XXX.XXX:7090] | report 2
HEX: 22.11.2021, 20:55:30 | TRANSMIT [ XXX.XXX.XXX.XXX:7090] | 72 65 70 6F 72 74 20 32 
TXT: 22.11.2021, 20:55:30 |               QUEUED | Backlog: 4
HEX: 22.11.2021, 20:55:30 |               QUEUED | 42 61 63 6B 6C 6F 67 3A 20 34 

das ist wirklich komisch, wenn ich auf dem UDP-Socket zB „report 1“ schicke, bekomme ich einen Haufen Daten zurück.
Du hast doch auch ein P30-Modell?

Ah, was ist deine IPS-Version?
paresy hatte das was zu UDP und Broadcast gesagt … das funktionier ab 6.0?

demel

Jup (KC-P30-EC240122-E00)

Aktuelle 6er Version.

Muss morgen mal prüfen ob ich den UDP DIP-Switch noch umgelegt habe :slight_smile: Für Modbus musste man das glaube nicht.

ok, bin gespannt.
was steht eigentlich bei dir im udp-client?
IP-Symcon Verwaltungskonsole.pdf (39,3 KB)
also bei Sende-Host die Wallbox und bei Empf-Host dein IPS-rechner?

Jup. Die DIP-Switche sind ebenfalls richtig gesetzt. Kommt leider nichts an.

wirklich zu merkwürdig, das hat bei mir auf Anhieb funktioniert.

taucht im Meldungsfenster irgend was auf!
Du hast sonst auf dem IPS-Server (welches OS eigentlich?) nichts auf diesem Port laufen?
Vielleicht irgend eine Firewall-Regel?
grübel…
Wäre ein Reboot des IPS-Servers denkbar?
Du hast auch nur ein Rechner, der mit Keba kommuniziert?

Vergiss deine ganzen Fragen :smiley:


Diese Meldung hat mich dazu gebracht, die Hostadresse nochmals zu prüfen. Es hat sich ein Leerzeichen vor dem ersten Oktett eingeschlichen. Kaum sichtbar. Vielleicht könntest du die IP-Adresse/Hostname besser verifizieren und eine Meldung schmeißen :slight_smile:

if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
    echo("$ip is a valid IP address");
} else {
    echo("$ip is not a valid IP address");
}

Aber jetzt kann ich mal testen und berichten :slight_smile:

1 „Gefällt mir“

cool, ist ja irre.
Die Überprüfung kann ich überlegen, wobei das ja eigentlich im UDP-Client erfasst wird. an die IP-Adresse auf dem UDP-Client komme ich über die ConnectID ran .
filter_var kannte ich gar nicht, bisher hatte ich solche Überprüfungen immer „von Hand“ per regexp programmiert… mal lernt nicht aus.

demel

Blöde Frage. Kann man nur einen UDP Socket mit dem gleichem Empf.-Host einrichten? Der Sende-Host ist natürlich ein anderer.
Folgender Fehler wenn ich die zweite KEBA einrichten möchte:

23.11.2021, 20:26:15 | Event Control        | Wiederverbinden [UDP Socket (KeConnectP30udp #28831)] fehlgeschlagen = Address already in use

nein, das geht nicht, weil der Port nur von einem benutzt werden kann.
theoretisch ist eine lösung denkbar, da müsste ich einen Keba-Splitter machen, der den einen UDP-Client anspricht und mit allen Keba-Keba-Geräteinstanzen spricht.
Die Zieladresse bei den Requests Richtung Keba setze ich sowieso in der Keba-Geräteinstanz nochmal separat. Hintergrund ist das Gemisch aus Broadcast (von Keba an IPS) und Unicast (von IPS an Keba).
Ob das wirklich funktionieren würde muss ich aber mal @paresy fragen.

Das wäre super! Sonst müsste ich eben bei der ModBus Variante bleiben.

Broadcasts von der KEBA zum UDP Splitter kommen keine an. Hab den Intervall auf 0 gesetzt und dann mal den Ladestecker ins Auto gesteckt. Leider kommt nichts im Debug an. Der IP-Symcon Server befindet sich in der gleichen Broadcastdomäne/VLAN wie die KEBA. Also keine Firewall oder Router dazwischen.

Könnte aber den KEBA Port mal am Switch als Mirror einrichten und mal mit dem Wireshark ran. Falls das was bringt.

das keine Broadcast kommen ist ja unschön. Ich habe bei ioBroker gelesen, das die den Broadcast auf Port 9080 erwarten …
richte doch einfach zum Test mal eine UDP-Client „standalone“ ein mit Port 9080, ansonsten wie der der auto. angelegte UDP-Client.
in Debug des 9080’er UDP-Client müsste man sehen, wenn was kommt, ist auch Klartext (json)

demel

Sofern ich das im andere Thema gelesen habe, ist das Problem Docker spezifisch und aktuell gelöst @7weazel7 ?

paresy

@paresy Jup, ich weiß ja jetzt, dass man bei UPD Broadcast die Empf. Host auf „Alle“ stellen muss. Die anderen Unicast Sockets (HomeKit, MQTTT, Denon, SolarLog, ETA, HomeMatic, usw.) funktionieren ja wenn ich die IP-Adresse auswähle.

@demel42 vielleicht solltest du ein neues Thema für dein KEBA Modul eröffnen. Hier geht es ja eigentlich darum welches Modell man wählen sollte :wink:

@7weazel7 hat natürlich recht, ich wollte den Thread nicht kapern :wink:

hier geht es weiter mit dem Modul: [Modul] KEBA KeConnect P30