FHEM Forum

FHEM => Sonstiges => Thema gestartet von: marcus42 am 29 November 2015, 12:38:12

Titel: Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: marcus42 am 29 November 2015, 12:38:12
Hallo zusammen,

leider habe ich im Board "Ankündigungen" keine Schreibrechte, daher erstelle ich ersteinmal hier einen neuen Thread.

Ich habe ein Modul erstellt, um die KEBA KeContact P20 Wallbox mit Ethernet-Option auslesen/steuern zu können.
Diese Wallbox dient dazu E-Autos aufzuladen.

Die Box sendet bei Statusänderungen UDP Broadcasts und kann auch über UDP gesteuert werden.
Desweiteren können mit dem Modul fast alle der zur Verfügung stehenden Parameter der Box ausgelesen werden.

Denkbar sind mit diesem Modul z.B. strompreisabhängige Ladevorgänge
oder (sobald Befehl 'curr' implementiert ist) die Steuerung des Ladestroms in Abhängigkeit von der aktuellen Leistung der Photovoltaik-Anlage um den Netzbezug zu minimieren.

Das Modul benötigt die Perl JSON Implementierung. Bitte prüft ob ihr die installiert habt.

Die Definition des Moduls erfolgt z.B. mit:

  define wallbox KEBA 192.168.2.43 7090 60

mit 7090 = Port für Verbindung und 60 = Refresh-Intervall in Sekunden

Aktueller Status der Implementierung (27.02.2020):

   Die Grundlegende Funktionen sind bereits implementiert

   - Empfangen der Broadcasts der Wallbox

   - Auslesen der Wallbox mit den GET Befehlen (jeweils ohne weitere Parameter)
   
     info
     update
   
   - Steuern der Wallbox mit den SET Befehlen
   
     enableState 1 - Laden ist enabled
     enableState 0 - Laden ist disabled
     current <value> - Setzen der Stromstaerke in mA (16000 = 16A)
    
Offene ToDos - wird erledigt wenn ich mal wieder Zeit & Lust habe :-) :

     Noch nicht implementierte Befehle: z.B. failsafe
   
    Klartextübersetzung der Statusmeldungen gemäß UDP Programmers Guide von Keba
   
    Hilfetext im Modul vervollständigen ;-)
   
Details zur Schnittstelle können der angehängten Schnittstellenbeschreibung von Keba entnommen werden.

Vielleicht gibt es ja noch jemanden, der etwas mit dem Modul anfangen kann.

Die jeweils aktuelle Version des Moduls habe ich hier abgelegt:
https://github.com/mschlappa/fhem

VG
Marcus
   
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: schussi am 10 Juli 2016, 10:23:46
Hallo, vielen Dank für dieses Modul!! Leider bekomme ich es nicht so recht zum laufen. Habe JSON installiert und die pm-Datei auf den Raspi kopiert. Beim Start kann dann aber das Modul nicht initallisiert werden. Diese Fehlermeldung kommt dann:

2016.07.10 10:13:18 1: reload: Error:Modul 70_KEBA deactivated:
Unrecognized character \xC2; marked by <-- HERE after appa/fhem <-- HERE near column 56 at ./FHEM/70_KEBA.pm line 27, <$fh> line 586.

2016.07.10 10:13:18 0: Unrecognized character \xC2; marked by <-- HERE after appa/fhem <-- HERE near column 56 at ./FHEM/70_KEBA.pm line 27, <$fh> line 586.

Kann hier jemand helfen?

vg
Stefan
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: pharmy am 29 September 2016, 08:55:06
Hallo zusammen,

auch von mir zuerst mal herzlichen Dank für das Moldul! Aber ich habe leider das
gleiche Problem! JSON-Perl ist die aktuellste Version. Bist Du mit dem Problem
schon weiter gekommen?


2016.09.29 08:51:49 4: WEBtablet_192.X.X.X_60404 POST /fhem&fw_id=451&cmd=define+wallbox+KEBA+192.X.X.X+7090; BUFLEN:0
2016.09.29 08:51:49 1: reload: Error:Modul 70_KEBA deactivated:
Unrecognized character \xC2; marked by <-- HERE after appa/fhem <-- HERE near column 56 at ./FHEM/70_KEBA.pm line 26.

2016.09.29 08:51:49 0: Unrecognized character \xC2; marked by <-- HERE after appa/fhem <-- HERE near column 56 at ./FHEM/70_KEBA.pm line 26.

2016.09.29 08:51:49 4: name: /fhem&fw_id=451&cmd=define+wallbox+KEBA+192.X.X.X+7090 / RL:1633 / text/html; charset=UTF-8 / Content-Encoding: gzip


Viele Grüße,
Heiko

Zitat von: schussi am 10 Juli 2016, 10:23:46
Diese Fehlermeldung kommt dann:

2016.07.10 10:13:18 1: reload: Error:Modul 70_KEBA deactivated:
Unrecognized character \xC2; marked by <-- HERE after appa/fhem <-- HERE near column 56 at ./FHEM/70_KEBA.pm line 27, <$fh> line 586.

2016.07.10 10:13:18 0: Unrecognized character \xC2; marked by <-- HERE after appa/fhem <-- HERE near column 56 at ./FHEM/70_KEBA.pm line 27, <$fh> line 586.

Titel: Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: marcus42 am 03 Oktober 2016, 15:38:10
Hallo,

hast Du das File mal angeschaut?

Kann es sein, dass es nicht sauber runtergeladen wurde?

In Zeile 27 sollen Zeichen a la "appa/fhem" zu finden sein. Das sieht nach dem Ende der URL vom runterladen aus.

Hast Du mal ein wget https://raw.githubusercontent.com/mschlappa/fhem/master/70_KEBA.pm

versucht?

VG Marcus
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: schussi am 06 Oktober 2016, 04:48:22
Hallo, genau das war das Problem. Nachdem ich die Datei richtig heruntergeladen habe hat es einwandfrei funktioniert. Danke für deine Hilfe!! Ich hatte schon damit begonnen mir eine eigene Software zur Steuerung und Visualisierung der Ladeleistung zu schreiben, aber die Integration in dem FHEM Server finde ich deutlich eleganter. Ist es ev. möglich den Verlauf der Ladeleistung in einem Graphen der letzten 24h darzustellen? Damit könnte man den Ladevorgang noch schöner überwachen.

Gruß
Stefan
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: Sneak-L8 am 22 November 2017, 21:58:35
Hallo zusammen,

wollte den Adapter auch mal für meine KeContact P30 installieren. Aber unter FHEM 5.8 erhalte ich folgenden Fehler:
Experimental keys on scalar is now forbidden at ./FHEM/70_KEBA.pm line 216.
Type of arg 1 to keys must be hash or array (not private variable) at ./FHEM/70_KEBA.pm line 216, near "$decoded)"


Ist das Module mit der aktuellen FHEM-Version nicht mehr kompatibel? Oder habe ich da was falsch gemacht?

Viele Grüße
Sneak-L8
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: Sneak-L8 am 27 November 2017, 21:47:41
So, ich glaub ich konnte es selbst fixen.
In Zeile 216 fehlt vor dem $decoded ein %-Zeichen, also
foreach my $key (keys %$decoded){
anstelle von
foreach my $key (keys $decoded){

Hätte auch das GIT-Repository aktualisiert, hab aber leider keinen Zugriff.
@marcus42 könnte ich (User Sneak-L8, auch bei git) Zugriff bekommen?

Viele Grüße
Sneak-L8
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: marcus42 am 06 Juli 2018, 17:56:05
Hallo Sneak-L8,

ich war längere Zeit nicht mehr online, daher habe ich Deinen Beitrag irgendwie nicht mitbekommen.

Sorry dafür.

Danke für den Tipp mit dem Fehler!

Möchtest Du noch Zugriff haben? Du bist aber schon auf ioBroker umgestiegen oder?

VG
Marcus
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: Sneak-L8 am 06 Juli 2018, 19:19:28
Hallo Marcus,

kein Problem. Ja, ich hab mich jetzt für ioBroker entschieden, weil ich Dir Pearl-Erweiterungen nicht installieren konnte, die für manche Adapter benötigt wurden.
Und zwischenzeitlich klappt das Laden in Abhängigkeit vom PV-Überschuss super damit.

Aber vielleicht kannst Du das Zeichen selbst im git ändern, damit andere nicht auch in die Falle tappen.

Viele Grüße
Sneak-L8
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: marcus42 am 06 Juli 2018, 20:52:48

schon passiert: https://github.com/mschlappa/fhem/commit/0978b7ba541643d405b8cba251d19b03510b56aa

Ich schau mir mal das ioBroker Modul an. Vielleicht kann ich mir da ja was abgucken  ;)
Ab September haben wir auch endlich eine PV Anlage und ich benötige ebenfalls die PV Überschuss-Steuerung.

VG
Marcus
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: Sneak-L8 am 06 Juli 2018, 23:25:53
Super, danke
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: pharmy am 19 Juli 2018, 13:22:51
Hallo zusammen,

seit dem heutigen (manuellen) Update der 70_KEBA.pm kommt immer die Fehlermeldung "Cannot load module KEBA". Habe jetzt lange mit einer älteren Version gearbeitet, jetzt läuft die Verbindung zur Box aber nicht mehr. Kann es vielleicht daran liegen, dass ich 2 Kebas im Netz habe?
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: CoolTux am 19 Juli 2018, 13:30:51
Da würde ich auch nicht laufen wollen als Modu
Zitat
+  foreach my $key (keys %$decoded){
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: CoolTux am 19 Juli 2018, 13:32:33
Und wenn dann bitte


foreach my $key (keys %{$decoded}){
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: pharmy am 19 Juli 2018, 15:00:24
Zitat von: CoolTux am 19 Juli 2018, 13:32:33
Und wenn dann bitte


foreach my $key (keys %{$decoded}){


Super, so klappt es zumindest wieder mit einer Box. Bei der Definition der 2. Box hängt fhem sich dann allerdings wieder auf.
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: CoolTux am 19 Juli 2018, 15:01:24
logausgabe?
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: pharmy am 19 Juli 2018, 17:34:18
wallbox will read from KEBA at 192.XXX.XXX.95:7090
listening for wallbox on 7090 (das ist die funktionierende Box)
wallbax_x will read from KEBA at 192.XXX.XXX.45:7090
socket could not be created (geht dementsprechend nicht)
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: CoolTux am 19 Juli 2018, 17:53:11
Damit kann man nix anfangen. Mach mal bitte ein list vom den 2 Device und bei dem wo es nicht geht ein verbose 5 Log.
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: TimoD am 11 Dezember 2018, 22:44:08
Sag mal wird dein Modul auch mit der neuen Generation  KEBA KeContact P30 gehen?
Hat das schon jemand am laufen?
Vielen Dank Gruß Timo
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: sido am 27 Dezember 2018, 14:53:55
@TimoD
Ich glaube, das Modul läuft auch mit der P30. Ich habe es hier mit einer BMW Wallbox Plus laufen, welche recht baugleich zur P30 ist.
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: Earny11 am 28 Dezember 2018, 00:08:34
Keba P30 x läuft!
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: sido am 13 Januar 2019, 13:10:50
Hallo zusammen,
ich habe in den letzten Tagen das KEBA-Modul ein ganzes Stück erweitert und fast alle bei Keba verfügbaren Kommandos hinzugefügt, z.B. setenergy und currtime und auch falls nötig die Authentifizierung mit RFID-Karten.
Es ist sicher noch nicht ganz fehlerfrei, läuft bei mir aber ohne Probleme. Es ist allerdings auch nicht mehr 100% kompatibel zu Marcus' Modul, weil ich mich dazu entschieden habe, die Modul-Kommandos 1:1 zu der offiziellen Keba-Dokumentation umzusetzen.
Zusätzlich habe ich in einem at-Timer ein Script erstellt, welches den PV-Überschussstrom unabhängig vom Wechselrichter für das E-Auto über entsprechende Keba-Kommandos nutzt.
Was wäre denn nun der richtige Weg, das Keba-Modul offiziell zu machen?
Hat jemand Interesse, hier zu unterstützen?

Gruß,
Sido
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: hankie am 10 März 2019, 13:17:54
@sido: hi mich würde deine Implementierung interessieren
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: zwehn am 15 Mai 2019, 07:53:05
@sido, bekomme auch ein p30 in den nächsten Tagen. würde dann auch gerne Dein überarbeitetes Modul nutzen. Wie ist denn der Status? Danke, zwehn


Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: hankie am 15 Mai 2019, 08:15:42
Zitat von: zwehn am 15 Mai 2019, 07:53:05
@sido, bekomme auch ein p30 in den nächsten Tagen. würde dann auch gerne Dein überarbeitetes Modul nutzen. Wie ist denn der Status? Danke, zwehn

Ich kann dir zuerst den App UDPCommander empfehlen. Der P30 kann DHCP und bekommt eine IP-Adresse von deinem Router. Im UDPCommander App muss du nur die Adresse und Port angeben (Siehe KEBA Dokumentation).
Die Befehle currtime 32000 5 startet mit 32 A in 5 Sec das Laden oder currtime 0 0 oder Rena 0 stop den Ladevorgang. Mit report 2 oder report 3 kannst du die wichgtisten Zahlen auslesen.
Ich umschreibe sido-s Modul für mich auch, wenn mal die Sonne etwas mehr scheint. Ist der Grundmodul von KEBA in fhem installiert, ist die Erweiterung nicht mehr so schwierig
Titel: Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: marcus42 am 15 Mai 2019, 08:18:48
Wäre nett, wenn ihr Eure Änderungen am Modul auch als Pullrequest in github hinterlegt.

https://github.com/mschlappa/fhem/blob/master/70_KEBA.pm

Weiterentwicklung schadet ja nicht ;-)

Marcus
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: hasenhirn am 08 Juni 2019, 07:52:42
Hallo,

erst mal vielen dank an Marcus42 für die Entwicklung des Moduls für die KEBA!!!

@sido 
Auch dir vielen Dank für deine Arbeit.
Dazu hätte ich aber noch ein paar Fragen:
wie komme ich an dein Modul? Hast Du es irgendwo hoch geladen? Sind die Erweiterungen eventuell schon in das Modul von Marcus eingeflossen?
Fragen über Fragen  ;)

LG

hasenhirn
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: hasenhirn am 08 Juni 2019, 17:29:49
Hallo,

ich schon wieder  ;D
Das Keba Modul aus dem Git habe ich installiert und meine KEBA P30 wurde wohl auch erkannt ( Firmwareversion wird richtig angezeigt )
Wenn ich jetzt einen Befehl eingebe z.B. "get KEBA info report 3" bekomme ich als Antwort "get KEBA" has no parameter.  :o
Kann mir jemand sagen was ich da falsch mache?

Im Log kommt die Meldung :

2019.06.08 17:12:24.831 4: WEB_192.168.1.33_35834 POST /fhem?detail=KEBA&dev.getKEBA=KEBA&cmd.getKEBA=get&arg.getKEBA=info&val.getKEBA=report%203&XHR=1&addLinks=1&fwcsrf=csrf_206522790748670&fw_id=1107; BUFLEN:0
2019.06.08 17:12:24.833 5: Cmd: >get KEBA info report 3<
2019.06.08 17:12:24.835 4: WEB: /fhem?detail=KEBA&dev.getKEBA=KEBA&cmd.getKEBA=get&arg.getKEBA=info&val.getKEBA=report%203&XHR=1&addLinks=1&fwcsrf=csrf_206522790748670&fw_id=1107 / RL:77 / text/plain; charset=UTF-8 / Content-Encoding: gzip
/ Cache-Control: no-cache, no-store, must-revalidate


Leider kann ich damit nichts anfangen  :-\

LG
hasenhirn

Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: zwehn am 04 Juli 2019, 18:36:59
Hallo Sido,
Hatte bisher die elvi box mit 22 kw.
Diese kann leider kein Lastmanagement und daher liegt jetzt die keba p30 x series mit rfid in der garage und soll naechste woche angeschlossen werden.
Grund fuer den austausch war auch die angestrebte loesung mit PV-Überschussstrom zu laden und nicht aus dem netz zuviel zu beziehen.
Wuerde daher gerne deine version testen. Kannst du diese zur verfueging stellen ? Danke zwehn
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: zwehn am 02 August 2019, 17:43:17
Zitat von: hasenhirn am 08 Juni 2019, 17:29:49
Hallo,

ich schon wieder  ;D
Das Keba Modul aus dem Git habe ich installiert und meine KEBA P30 wurde wohl auch erkannt ( Firmwareversion wird richtig angezeigt )
Wenn ich jetzt einen Befehl eingebe z.B. "get KEBA info report 3" bekomme ich als Antwort "get KEBA" has no parameter.  :o
Kann mir jemand sagen was ich da falsch mache?

Im Log kommt die Meldung :

2019.06.08 17:12:24.831 4: WEB_192.168.1.33_35834 POST /fhem?detail=KEBA&dev.getKEBA=KEBA&cmd.getKEBA=get&arg.getKEBA=info&val.getKEBA=report%203&XHR=1&addLinks=1&fwcsrf=csrf_206522790748670&fw_id=1107; BUFLEN:0
2019.06.08 17:12:24.833 5: Cmd: >get KEBA info report 3<
2019.06.08 17:12:24.835 4: WEB: /fhem?detail=KEBA&dev.getKEBA=KEBA&cmd.getKEBA=get&arg.getKEBA=info&val.getKEBA=report%203&XHR=1&addLinks=1&fwcsrf=csrf_206522790748670&fw_id=1107 / RL:77 / text/plain; charset=UTF-8 / Content-Encoding: gzip
/ Cache-Control: no-cache, no-store, must-revalidate


Leider kann ich damit nichts anfangen  :-\

LG
hasenhirn
.

Hallo Hasenhirn,
bei mir hat die keba P30 x series installation etwas gedauert, jetzt ist es soweit, sie läuft.
Das Keba modul habe ich auch installiert. Bei current befehl auf 6000 kommt auch etwas inkl der softwareversion der keba box. aber die info abfragen enden wie bei Dir:"get keba has no parameter"
Bist Du schon weiter gekommen?
danke und Gruss,
zwehn
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: hasenhirn am 02 August 2019, 17:58:29
Hallo Zwen,

leider noch nicht  :(
Im Moment habe ich auch keine Elektroauto mehr, erst ab 19.08. wieder und dann werde ich da noch mal weiter machen.
Bin aber immer noch für jeden Tipp dankbar  ;)

Gruß

hasenhirn
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: zwehn am 13 Oktober 2019, 20:32:39
Hallo,
habe jetzt seit einige Wochen das Modul im Einsatz mit der x-series.
Läuft jetzt auch soweit, auch die Events kommen an.

Leider habe ich beim Laden mit dem Smart EQ fourfour schon zweimal ein Problem gehabt und musste in die Werkstatt, um die Fehlermeldung zurücksetzten zu lassen. Ob es sich dabei um Probleme auf der Smart-Seite oder aber auf der Wallboxseite handelt, wissen wir noch nicht, da die Werkstatt intelligenterweise, die logs nicht gezogen hat, beim Zurücksetzen der Fehlermeldung.

Was mir bei der Modulumsetzung aufgefallen ist, ist dass "curr" zum sofortigen Setzen der Amperzahl verwendet wird.
Im Keba P30 UDP programmer guide wird auf Seite  33 oben gesagt, dass "curr" nicht recommended ist und man lieber currtime verwenden soll, der neben der Amperzahl auch die Sekunden bis zum Umstellen beinhaltet. zudem setzt curr dauerhaft. currtime stellt nur die Amperzahl fuer die jetzige Session.
@marcus, könntest Du den currtime Befehl mit integrieren unter die set commands?

Zudem noch eine Bitte. Kann jemand sein lastorientiertes Laden script mit uns/mir teilen?

Vielen Dank,
zwehn
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: hasenhirn am 15 Oktober 2019, 16:43:44
Hallo zwehn,

ich habe jetzt endlich meinen Wagen und konnte auch schon einen Erfolg verbuchen.
Nachdem ich die Anleitung der Keba zur UDP-Schnittstelle gelesen habe, ist mir klar geworden dass das Freischalten
mit "start" zwei Parameter benötigt.
Ich habe die Wallbox per RFID verriegelt und mit "set KEBA start 8dc5cede00000000 00000000000000000000"
übergebe die Werte einer angelernten RFID-Karte und die Wallbox wird freigeschaltet.

Jetzt muss ich daraus nur noch einen Button machen damit es vom Handy freischalten kann  ;D

Gruß
hasenhirn
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: zwehn am 15 Oktober 2019, 23:49:32
Hallo Hasenhirn,
Klingt sehr gut. Sollte man dann nur noch im Modul ergänzen.
Ich habe übrigens gestern per private mail auch das um weitere commands ergänzte Modul bekommen.
Ich vermute das es das einige Beiträge vorher erwähnte Modul von Sido ist.
Ich wuerde es gerne hier mit Euch teilen und habe um seine Freigabe gebeten, aber noch kein Feedback.
@sido ist das Teilen deines angepassten Moduls ok?
Danke,
Zwehn
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: hasenhirn am 16 Oktober 2019, 08:22:30
Moin zwehn,

das ist ja schon im Modul eingebaut.
Ich wusste nur leider nicht wie ich es anwenden muss. ::)
In der Hilfe hatte ich nichts gefunden.

Gruß
Hasenhirn
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: Matthias76 am 17 Oktober 2019, 14:46:48
Hi zusammen
Ab wann wird ein Modul wie dieses eigentlich in den FHEM Standard aufgenommen?
Es scheint doch ganz tauglich wie nützlich zu sein und sonstige Module gibt es viele.
Ich war ganz erstaunt, dass es nach vier Jahren noch manuell geladen und installiert werden muss. 😉

Gruß
Matthias
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: hasenhirn am 17 Oktober 2019, 15:30:55
Hallo Matthias,

so weit ich das weiß muss sich der Modulersteller darum bemühen und auch Support für das Modul leisten.
Das Modul muss auch gewisse Standards wie Dokumentation usw. erfüllen.
Wie gesagt, alles mein Wissensstand.
Der Entwickler wird daran wohl kein Interesse haben.
Ist aber toll dass jemand der etwas für sich entwickelt, dies mit uns teilt :)
Wenn sich jemand findet der den Support und die Weiterentwicklung leisten will, kann man ja mit dem Entwickler sprechen und wenn es für ihn ok ist das Modul übernehmen.

Gruß
Hasenhirn
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: hasenhirn am 20 Oktober 2019, 23:22:43
Hallo Jungs,

ich komme im Moment nicht weiter und vielleicht kann mir jemand von euch auf die Sprünge helfen oder hat das eventuell schon eingerichtet  ::)
Meine Box ist ja mit dem RFID-Leser ausgestattet und über diesen gesichert.
Wenn ich jetzt eine angelernte Karte davor halte wird die Wallbox für ca 1min freigeschaltet und ich kann Laden.
Jetzt wollte ich das ganze noch per Button über FHEM machen aber stelle mich zu doof an  >:(
Gebe ich einfach in der Befehlsleiste =>> set KEBA start 8dc5cede00000000 00000000000000000000 <<= ein wird die Wallbox freigeschaltet und das Reading Authreq wechselt von 1 -> verriegelt auf 0 -> freigeschaltet.

Folgende Attribute habe ich eingerichtet:

Attributes
devStateIcon    1:ios_off_fill@red:Wb_freischalten 0:ios_on_fill          deleteattr
icon            measure_battery_75                                        deleteattr
room            Wallbox                                                   deleteattr
stateFormat     Authreq                                                   deleteattr


dazu habe ich einen cmdalias angelegt mit " Wb_freischalten AS set Wallbox start 8dc5cdde00000000 00000000000000000000"
was auch nicht funktioniert hat. ich hatte auch schon probiert direkt im devStateIcon 1:ios_off_fill@red:start\s8dc5cede00000000\s00000000000000000000
oder 1:ios_off_fill@red:start.8dc5cede00000000.00000000000000000000 was aber alles nicht funktioniert.
Zum freischalten muss ich aber start die Parameter 8dc5cede00000000 und 00000000000000000000 übergeben.

An dem Problem habe ich jetzt schon Stunden verbraten und komme einfach nicht weiter  :-[
Ich bin für jeden Tipp dankbar.

Gruß

hasenhirn
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: hasenhirn am 25 Oktober 2019, 16:38:31
nach dem ich mich lange dämlich genug angestellt habe, bin ich dann doch noch dahinter gekommen ;D

Attributes
devStateIcon        1:ios_off_fill@red:freischalten 0:ios_on_fill                     deleteattr
eventMap            /start 8dc5cede00000000 00000000000000000000:freischalten/        deleteattr


so hat es dann doch funktioniert.

Gruß
hasenhirn
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: hasenhirn am 03 November 2019, 10:31:03
Hallo Zwehn,

gibt es da schon was neues?
Hast Du eine Antwort von sido bekommen?

Gruß

hasenhirn

Zitat von: zwehn am 15 Oktober 2019, 23:49:32
Hallo Hasenhirn,
Klingt sehr gut. Sollte man dann nur noch im Modul ergänzen.
Ich habe übrigens gestern per private mail auch das um weitere commands ergänzte Modul bekommen.
Ich vermute das es das einige Beiträge vorher erwähnte Modul von Sido ist.
Ich wuerde es gerne hier mit Euch teilen und habe um seine Freigabe gebeten, aber noch kein Feedback.
@sido ist das Teilen deines angepassten Moduls ok?
Danke,
Zwehn
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: hasenhirn am 03 November 2019, 11:19:29
Da habe ich gerade etwas für dich / uns gefunden bzgl. Ladescript.
Im Jan / Feb bekommen wird unsere Solaranlage montiert und dann brauchen wir auch so was  ::)

https://core.ac.uk/download/pdf/158611605.pdf (https://core.ac.uk/download/pdf/158611605.pdf)

Gruß

Hasenhirn

Zitat von: zwehn am 13 Oktober 2019, 20:32:39
Hallo,
habe jetzt seit einige Wochen das Modul im Einsatz mit der x-series.
Läuft jetzt auch soweit, auch die Events kommen an.

Leider habe ich beim Laden mit dem Smart EQ fourfour schon zweimal ein Problem gehabt und musste in die Werkstatt, um die Fehlermeldung zurücksetzten zu lassen. Ob es sich dabei um Probleme auf der Smart-Seite oder aber auf der Wallboxseite handelt, wissen wir noch nicht, da die Werkstatt intelligenterweise, die logs nicht gezogen hat, beim Zurücksetzen der Fehlermeldung.

Was mir bei der Modulumsetzung aufgefallen ist, ist dass "curr" zum sofortigen Setzen der Amperzahl verwendet wird.
Im Keba P30 UDP programmer guide wird auf Seite  33 oben gesagt, dass "curr" nicht recommended ist und man lieber currtime verwenden soll, der neben der Amperzahl auch die Sekunden bis zum Umstellen beinhaltet. zudem setzt curr dauerhaft. currtime stellt nur die Amperzahl fuer die jetzige Session.
@marcus, könntest Du den currtime Befehl mit integrieren unter die set commands?

Zudem noch eine Bitte. Kann jemand sein lastorientiertes Laden script mit uns/mir teilen?

Vielen Dank,
zwehn
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: Matthias76 am 23 November 2019, 16:33:12
Hallo zusammen
Hallo @sido

Wie sähe denn Dein Unterstützungswunsch aus? Etwas testen, berichten und weitertratschen kann ich. 😃
Naja, noch nicht ganz. Die Keba P30 ist in Betrieb und im Netz, aber noch auf 11kW limitiert und außerdem noch im Leerlauf, da erstens der Netzbetreiber nach 6 Wochen immer noch nichts zu meiner Zustimmungsanfrage ,,22kW-Betriebserlaubnis bitte" gesagt oder geschrieben hat und zweitens, die eigentlich Anfang Oktober gekaufte Zoe beim Händler festgehalten wird - die französischen Programmierer bei Renault scheinen etwas langsamer und schlechter zu sein, als die richtigen Cracks hier in dieser Community. 😏😃
Softwarefehler über Softwarefehler, oder sollte ich schreiben, Fehler in der Firmware von Modul A wurden gepatcht, dafür versagte dann B und C, nach deren Patches folgten noch mehr?!?
So ähnlich hat es mir Renault D berichtet.

Jedenfalls wollte ich mich mal mit dem Keba-Modul vertraut machen.
Wo gibt es die aktuellste Version zum Download?

Danke im Voraus und danke generell, für die Modulentwicklung.
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: Matthias76 am 24 November 2019, 10:58:19
P.S.: Ist es das bei Github (Link eine Seite vorher)?
Wenn ja, was ist denn das für ein Zeichen am Ende?
=cut￿
(daraus wird im joe-editor dann) =cuto??

Anscheinend scheint dieser letzte Parameter mit merkwürdigen Zeichen nichts zu machen.
Ansonsten ist es auf Seite 2 / Github noch die originale Version ohne Sido´s Erweiterungen und mit den Fehlern (""get KEBA" has no parameter").
Sido, könnte ich auch mal die überarbeitete Version bekommen?   ;)
Titel: Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: marcus42 am 25 November 2019, 09:29:16
Zitat von: Matthias76
Ansonsten ist es auf Seite 2 / Github noch die originale Version ohne Sido´s Erweiterungen und mit den Fehlern (""get KEBA" has no parameter").
/quote]

Hallo @Matthias76, was liefert ein

,,get <DeinKebaDeviceName> info"
,,get <DeinKebaDeviceName> update"

wenn Du keine Parameter angibst?

Marcus
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: Matthias76 am 25 November 2019, 19:57:29
get KebaWallboxC info
get KebaWallboxC update

Beides per Knopfdruck führt tatsächlich zu einer aktualisierten Info / Liste.
Als Befehl eingegeben, folgt noch ein leeres Fenster mit OK Knopf zum Bestätigen.

Also die beiden Abfragen sehen gut aus.

set KebaWallboxC curr 15000 scheint sie auch zu schlucken,
obwohl ich nun nicht weiß, wie ich dieses Softsetting wieder weg bekomme und wir ja wissen, dass wir lieber currtime verwenden sollen. 😉

Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: marcus42 am 25 November 2019, 23:13:55
Das Softsetting ist immer gesetzt. Der Wert kann auf bis zu 63000 gesetzt werden. In dem Fall übersteuert dann das Hardwaresetting das gesetzt wurde zB mit 32000.

currtime gibt es bei meiner P20 noch nicht.

In der Doku von Keba steht zu dem neuen Befehl folgendes:

,, The commands "currtime", "setenergy", "start" and "stop" are designed specifically for the use with apps when there is no permanent network connection."

Und:

,,With the command "currtime" it is possible to set a time delayed "curr" and / or "ena" command. This command will be disabled automatically after unplugging your vehicle. You can additionally define the immediate start value using the known commands "ena" and "curr".
This means you can start immediately with 16 amps by sending "curr 16000" and reduce the current to 10A in 2 hours by sending "currtime 10000 7200".
It is also possible to send "ena 0" followed by "currtime 32000 7200" to start charging with 32 amps in 2 hours."

currtime macht also m.E. nichts anderes als ein fhem ,,at" Kommando kombiniert mit dem Keba Befehl.

Ich verstehe noch nicht so ganz den Sinn von currtime in unserem Usecase. Es sei denn fhem ist mobil unterwegs ;-)

VG Marcus

Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: marcus42 am 25 November 2019, 23:25:02
Ich habe die Modul Syntax, die im allerersten Post beschrieben ist, auf den aktuellen Stand gebracht. Da war noch die Syntax aus der allerersten Version drin. Die Doku aus dem Modul korrigiere ich auch noch. Das führte wohl ( verständlicherweise )  zu Irritationen.

War mir bisher nicht aufgefallen.

Marcus
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: Matthias76 am 26 November 2019, 07:46:20
Vielen Dank Marcus, für Dein Refresh und Deine Info.

Zu den weiteren Befehlen und möglichen Notwendigkeiten:
Es gab mal eine Zeit, da musste man programmiertechnisch zwei for-next-Schleifen mit Funktionen cos() und sin() kombinieren, um einen Kreis zu zeichen,
dann aber irgendwann später reichte auch mal ein circle(x,y,z).
;) ;D

Naja, Du hast recht, es ist in FHEM überhaupt nicht notwendig und es gibt bereits genügend andere Mechanismen.
Es wäre vielleicht nur eine winzig kleine Abkürzung im Handling, falls überhaupt benötigt.
Jedenfalls danke für das Modul. Dieses wird bestimmt in Zukunft in der Bedeutung und Nachfrage steigen. ;-)

Weiß jemand, wie KEBA die Strom-Einstellungen behandelt?
Mir schrieb mal jemand aus einem Elektroautoforum, dass man die Autos nicht beliebig laden kann.
Wenn man dreiphasig (3* 230V * xA ) lädt, dann ist die kleinst-mögliche Stromeinstellung 6A.
Übliche andere sind dann 16A, 20A, 25A und 32A.
6A - das ergäben dann 4.14kW.

Wenn man mit weniger als 4kW laden wollte, müsste laut Beschreibung die Box auf 1-Phasen-Betrieb umschalten, weil die Autos nicht weniger als 6A bei 3 Phasen kennen.
Aber was müsste man z.B. für 2kW angeben? Bei einer Phase wären das ja mehr als 6A.

Und wie ist es überhaupt mit Zwischengrößen, falls jemand einer PV-Anlage genau folgen möchte.
Kann ich curr 4580 setzen und das läuft dann auch so, in der Box, im Auto?

"curr" setzt ja den Strom und keine Leistung, korrekt?

Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: Sneak-L8 am 26 November 2019, 08:08:51
Ja, minimal ist 6A. Abhängig von der Anzahl der Phasen ergibt sich dann die minimale Leistung. Von 6A bis 32A kann man Wert beliebige Werte angeben. Das kaputt prima, um z.B. meinen E-Golf mit PV-Überschuss zu laden.
Hab mich damals für ioBroker anstelle FHEM entschieden, das sollte aber keinen Unterschied machen
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: marcus42 am 26 November 2019, 08:13:24
Bei 6A mit einer Phase (230V) kommst Du auf 1380W (6A x 230V). Bei dieser niedrigen Leistung fängt meine Zoe aber nicht an zu laden.
Ich starte daher eher bei 7A - 10A für meine PV Überschussladung.  Die Regelung mit 'curr' ist quasi stufenlos nutzbar.

Für die Umschaltung von 1 auf 3 Phasen habe ich bei mir ein Relais vorgeschaltet,
welche ggf. die Phasen 2 und 3 VOR(!!) dem Einstöpseln des Autos zu oder abschaltet.
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: Matthias76 am 27 November 2019, 18:22:56
Ich wundere mich, wozu man OutputX2 setzen sollte. X2 ist eigentlich kein Setting, sondern ein Monitoring.
Was man (wenigstens @P30) setzen kann, ist X1.
X1 kann je nach DIP-Schalterposition zwischen AND und OR zur RFID-Auth umgeschaltet werden. Im OR -Modus ist das Gerät ,,erlaubt" bzw. bereit zu laden, wenn X1 geschlossen ist ODER eine RFID Authorisierung erfolgreich war. Damit könnte ich was anfangen.

Und wozu ist enableState?
Es scheint standardmäßig auf 1 zu sein, denn vor dem ersten setzen war die Box auf blau, gesperrt,
und bei gültigen rfid/nfc-Tag dann grün, ladebereit.
Ist ena=0 bleibt sie gesperrt, hilft also auch ein Tag nicht.
ENA=1, dann ist's wieder wie vorher mit Tag möglich (nur mit Tag für die paar Sekunden).

Wie ist das gedacht?
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: marcus42 am 29 November 2019, 22:17:30
Hallo Matthias,

vielleicht sind die Funktionen unserer Wallboxen hier unterschiedlich.

Ich habe im ersten Beitrag dieses Thread die Doku von Keba angehängt. Daraus stammt der folgende Text:


UDP command 'output'

[n] is output state of the relay terminal X2 under the connector panel cover of the wallbox (binary value).
0 = open 1 = closed
>=10 = Pulse output with the specified number of pulses (pulses / kWh) and is stored in the EEPROM; reasonably usable up to 150.


Wie das bei der P30 in Verbindung mit dem NFC-Tag funktioniert, weiss ich nicht.

>>Und wozu ist enableState?

enableState ist ein Alias für das command 'ena'. ena ist der Befehl von Keba, ich fand enableState sprechender.

Bei meiner P20 wird mit "ena 0" bzw. "enableState 0" die Wallbox gesperrt und damit die Laden dauerhaft unterbrochen.
Erst wenn ich wieder den Befehl "ena 1" bzw. genauer "set enableState 1" setze, wird das Laden fortgesetzt. Damit realisiere ich im Sommer die PV Überschussladung in Verbindung mit "curr" und im Winter die Nachtladung bei günstigeren Preisen.

Meine Optimierungen für das Laden im Winter habe ich hier mal zusammengeschrieben:

https://elektromobilitaet-duelmen.de/2019/11/22/winter-is-coming/ (https://elektromobilitaet-duelmen.de/2019/11/22/winter-is-coming/)

Hier noch ein Link (nicht von mir) zu der Umschaltung der Phasen mit Hilfe von outputX2.
Die dort beschriebene Schaltung habe ich bei mir so umgesetzt. Bisher aber erfolgt die Umschaltung der Phasen bei mir jedoch noch manuell und nicht softwaregesteuert über outputX2.

http://www.eb-systeme.de/?page_id=1265 (http://www.eb-systeme.de/?page_id=1265)

Marcus
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: GodiHSW am 24 April 2020, 13:05:37
Hallo zusammen,

ich bin neu im KEBA Game und würde meine P30c gerne in FHEM integrieren. Ich hab den Thread hier gelesen und würde mich freuen wenn die P30 user mir einmal sagen können, welches Modul (das von Marcus oder ein anderes von Sido) ihr nutzt. Wäre sehr hilfreich für mich, da ich leider nich so der FHEM Super-User bin.

Freue mich auf eine Rückmeldung.

Danke Jan
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: sido am 24 April 2020, 20:44:39
Hallo Jan,
ich steuere die Keba nicht mehr über FHEM sondern über OpenWB auf dem selben Raspberry. Finde ich deutlich komfortabler. Sorry, dass ich nicht weiterhelfen kann...
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: hasenhirn am 25 April 2020, 06:47:05
Hallo Jan,

ich hatte die ganze Zeit das Modul von Sido und habe vor 10min mal auf das Update von ( Version 1.3 ) von Marcus aus dem Github gewechselt.
Bei mir sieht das in FHEM so aus wie auf dem angehängten Bild.
Der Schalter mit "Ueberschussladen" hat noch keine Funktion.
Bei mir wurde gerade eine E3/DC ( Solaranlage mit Speicher ) eingebaut und da möchte ich das noch einbinden.

Gruß

Thomas

Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: GodiHSW am 26 April 2020, 10:17:57
Hallo,
vielen Dank euch für die schnellen Rückmeldungen. Ich hab auch das Modul von Marcus vom Github installiert, bekomme auch schon diverse Readings angezeigt, u.a. Firmware etc.
Hab grad aus Spaß mal ena0 gesendet passiert nix. Ist aber auch noch keine Rfid Karte konfiguriert und noch kein W über das Kabel geflossen.
Das sollte ich vllt alles erstmal machen, dann kann ich mir vllt auch sowas schickes basteln wie du hast Thomas. Gibts noch Startertipps? Muss ich noch was an der KEBA einstellen oder so? oder ist es ,,richtig" dass ich noch nichts ,,einstellen" kann?!

Danke euch!

Gruß Jan
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: hasenhirn am 26 April 2020, 20:12:16
Hallo Jan,

Hardwaremäßig müssen halt die DIP-Schalter nach deinen Bedingungen eingestellt werden.
Der Rest ist alles Software.

Gruß

Thomas
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: hasenhirn am 26 April 2020, 20:26:55
Hallo Marcus,

könntest Du das Modul noch um "Max curr = 0" ergänzen?
Im Moment geht nur 6000 - 32000 aber laut Doku ist:

Max curr uint16 Possible values: 0; 6000 - 32000 Current value in mA offered to the vehicle via
control pilot signalization. (Signal type: PWM)

So könnte ich das Laden unterbrechen ohne immer komplett abbrechen zu müssen ( wenn beim Überschussladen kein Überschuss da ist  ;) ;D )

Das Ganze müsste doch im Modul hier angepasst werden oder?

if ($opt eq "curr" && ($value < 6000 || $value > 63000)){
     return "The value for current must be between 6000 and 63000";

Gruß

Thomas
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: hasenhirn am 29 April 2020, 11:06:27
@Jan

ich habe im Handbuch noch etwas gefunden das für dich interresant sein könnte:

unter Punkt 7.4 ist der Freigabe-Eingang X1 beschrieben.
Da steht dass der Freigabe-Eingang X1 zur Verwendung mit einem potentialfreien Kontakt vorgesehen ist.
Mit dem Freigabe-Eingang ist es möglich, den Betrieb der Ladestation durch externe Komponenten zu steuern
(z.B. externer Schlüsselschalter, Haussteuerung, Photovoltaik-Anlage, Rundsteuerempfänger, ...).

Ist das nichts für dich?
Das ganze könnte man mit einem kleinen Relais vom RasPi steuern.
Ich gehe einfach mal davon aus dass Du FHEM auf einem RasPi laufen hast   ::)

Gruß

Thomas
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: GodiHSW am 29 April 2020, 11:11:54
Hallöchen,

nachdem ich den DIP Schalter für die UDP Kommunikation gem. Anleitung auch auf "on" gesetzt habe (sollten die Elektriker bei der Installation eigentlich machen), funktionert das locken mit dem cmd "ena" wunderbar. Ich mach mich jetzt mal selbst auf die Suche wie ich so ein schönes Dashboard bauen kann inkl. plugged Status und Überschussladung.
Finds super dass ihr bei dem Thema hier so schnell antwortet - vielen Dank!

Gruß Jan
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: hasenhirn am 29 April 2020, 11:23:48
Vielleicht kannst Du das als Inspiration oder so gebrauchen  ;)

defmod n_Ladeleistung notify Ladeleistung:LL:.* set KEBA current $EVTPART1;; get KEBA update
attr n_Ladeleistung userReadings Ladeleistung {ReadingsVal("Ladeleistung","LL", 0)}

setstate n_Ladeleistung 2020-04-29 11:14:43
setstate n_Ladeleistung 2020-04-25 06:25:53 Ladelei 7000
setstate n_Ladeleistung 2020-04-25 06:25:53 state active


defmod Ladeleistung dummy
attr Ladeleistung group KEBA
attr Ladeleistung room Wallbox
attr Ladeleistung setList state:6,7,8,9,10,11,12,13,14,15,16
attr Ladeleistung sortby 03
attr Ladeleistung stateFormat state A
attr Ladeleistung userReadings LL {ReadingsVal("Ladeleistung","state",0) *1000}
attr Ladeleistung webCmd state

setstate Ladeleistung 7 A
setstate Ladeleistung 2020-04-29 11:14:43 LL 7000
setstate Ladeleistung 2020-04-29 11:14:43 state 7


"plugged_on_wallbox_and_locked" habe ich im Modul angepasst da "plugged on wallbox and locked" durch die Leerzeichen Stress gemacht hat ( die anderen Meldungen natürlich ebenso ).
Ich habe jetzt aber gar nicht mehr überprüft ob es so auch geht  ???

defmod n_Verbindungsstatus notify KEBA:Enablesys:.*|KEBA:Plug:.* {if (ReadingsVal("KEBA","Plug","") eq "plugged_on_wallbox_and_locked") {fhem ("set Verbindungsstatus 0")} elsif (ReadingsVal("KEBA","Plug","") eq "plugged_on_wallbox_ev_and_locked" && ReadingsVal("KEBA","Enablesys","") eq "disabled" ) {fhem ("set Verbindungsstatus 1")} elsif (ReadingsVal("KEBA","Plug","") eq "plugged_on_wallbox_ev_and_locked" && ReadingsVal("KEBA","Enablesys","") eq "enabled" ) {fhem ("set Verbindungsstatus 2")}}

setstate n_Verbindungsstatus 2020-04-29 11:14:43
setstate n_Verbindungsstatus 2020-04-10 00:37:08 state active



defmod Verbindungsstatus dummy
attr Verbindungsstatus devStateIcon 0:Typ_2_Stecker@red 1:Typ_2_Stecker@blue 2:Typ_2_Stecker@green
attr Verbindungsstatus group KEBA
attr Verbindungsstatus room Wallbox
attr Verbindungsstatus sortby 01
attr Verbindungsstatus userReadings ReadingsVal("KEBA","state","")
attr Verbindungsstatus webCmd :

setstate Verbindungsstatus 0
setstate Verbindungsstatus 2020-04-29 11:14:43 state 0


Gruß

Thomas
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: glitschi am 14 Mai 2020, 18:24:41
Hallo zusammen,

Zuerst einmal besten Dank für das Modul, genau das was ich gesucht habe  :)

Leider habe ich jedoch ein Problem wenn zwei Wallboxen definiert sind.

define Wallbox_Garage KEBA 172.16.9.21 7090 180
setuuid Wallbox_Garage 5eb54895-f33f-21ca-e4ea-xxxx
attr Wallbox_Garage DbLogExclude A.*,B.*,DIP.*,F.*,I.*,P,PF,Product,Serial,Sec,T.*,U.*
attr Wallbox_Garage event-on-change-reading .*
attr Wallbox_Garage room Wallbox

define Wallbox_Aussen KEBA 172.16.9.22 7090 200
setuuid Wallbox_Aussen 5ebd6b3f-f33f-21ca-fe96-xxxx
attr Wallbox_Aussen DbLogExclude A.*,B.*,DIP.*,F.*,I.*,P,PF,Product,Serial,Sec,T.*,U.*
attr Wallbox_Aussen event-on-change-reading .*
attr Wallbox_Aussen room Wallbox

Wenn beide definiert sind, auf einer ein update ausgeführt wird, beendet sich FHEM.
(FHEM beendet sich auch, nach dem Automatischen refresh Intervall)

Jede für sich ist kein Problem, funktioniert ohne Probleme, nur zusammen definiert geht nicht.

Letzer Eintrag im fhemlog
2020.05.14 18:18:37 3: Wallbox_Aussen Sending command: report 1
Can't use an undefined value as a symbol reference at ./FHEM/70_KEBA.pm line 194.

Hat jemand eine Idee was ich versuchen könnte?

Gruss Romano

Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: heiko73 am 23 November 2020, 16:53:49
Hi!

Ich bin dabei, mir zwei KEBA P30 Wallboxen an die Wand zu schrauben und war begeistert, zu sehen dass es bereits eine FHEM Anbindung gibt. Leider ist das Thema hier seit ein paar Monaten inaktiv, könnte mir jemand ein Update geben, ob an dem Modul noch aktiv gearbeitet wird?

Danke und viele Grüße,
  Heiko
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: hasenhirn am 24 November 2020, 05:48:19
Moin Heiko,

die letzte Änderung im Git Repo ist 9 Monate alt wenn ich es richtig gesehen habe.
Ich habe mir das Modul wie oben beschrieben etwas angepasst.
Im Moment bin ich auch am überlegen mir noch eine 2te Box zu zulegen.
Mit der Integration in FHEM bin ich eigentlich zufrieden und es läuft sehr stabil.

Gruß
Thomas
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: hasenhirn am 24 November 2020, 05:52:07
@glitschi

Hallo Romano,

ich habe deinen Beitrag gerade erst gelesen ( die Benachrichtigung hatte ich wohl übersehen )
Bist du schon weiter gekommen? Ich bin am überlegen mir auch eine 2te Keba zu gönnen  :D

Gruß

Thomas
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: heiko73 am 24 November 2020, 11:44:16
 
Zitat von: hasenhirn am 24 November 2020, 05:48:19
Moin Heiko,

die letzte Änderung im Git Repo ist 9 Monate alt wenn ich es richtig gesehen habe.
Ich habe mir das Modul wie oben beschrieben etwas angepasst.
Im Moment bin ich auch am überlegen mir noch eine 2te Box zu zulegen.
Mit der Integration in FHEM bin ich eigentlich zufrieden und es läuft sehr stabil.

Gruß
Thomas

Super, werde dann berichten wenn ich die Boxen habe und erste Versuche starte, sie einzubinden!

Viele Grüße,
Heiko,
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: hasenhirn am 24 November 2020, 12:24:16
Na da bin ich mal gespannt  :)
Sind die Boxen schon bestellt?
Ich bin auch gerade am über legen mir eine 2te zu kaufen da meine Frau im Februar ihren i3 bekommt und der X3 verkauft wird.
Auf der anderen Seite sollte eine Wallbox eigentlich reichen da das Model3 LR ja nicht so oft geladen werden muss  ::)
Bin mal gespannt wie es bei dir läuft. Ich habe ja noch etwas Zeit.

Gruß

Thomas
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: heiko73 am 24 November 2020, 12:29:13
Boxen sind (noch) nicht bestellt, habe gerade eben erst den Antrag auf Förderung bei der KfW gestellt und muss jetzt warten, bis ich die Förderzusage habe. Da die Jungs bei der KfW heute etwas überlastet sind (Förderung von Wallboxen für Privatpersonen ist heute gestartet worden), kann das sicher noch ein paar Tage dauern ;-) ..

Falls Du sowieso planst, eine zusätzliche WB zu installlieren, ist jetzt die Zeit! Es gibt ein paar Sachen zu beachten (nicht alle WB sind erlaubt, nur am Erstwohnsitz, nur für Privat, WB muss per Konfiguration auf 11kW gedrosselt sein falls sie mehr kann), aber dann sind 900 Euro / Ladepunkt ganz nett!

Der Link für mehr Infos: 8)
https://www.kfw.de/inlandsfoerderung/Privatpersonen/Bestehende-Immobilie/Zuschussportal/Online-Antrag-Ladestationen-f%C3%BCr-Elektroautos/ (https://www.kfw.de/inlandsfoerderung/Privatpersonen/Bestehende-Immobilie/Zuschussportal/Online-Antrag-Ladestationen-f%C3%BCr-Elektroautos/)

Viele Grüße,
    Heiko
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: heiko73 am 15 Februar 2021, 14:58:05
OK, nach langer Wartezeit sind die beiden Boxen jetzt am Start. Eine x-series als Master, eine c-series als Slave.

Leider habe ich das gleiche Problem wie glitschi, wenn ich die zweite Box definiere, dann beendet sich FHEM...

Wenn ich Perl könnte, würde ich mich darum kümmern ... Gibt es eigentlich irgendwo eine aktuellere Version? Bin gar nicht sicher, wo ich meine herhabe (wahrscheinlich von github), aber es hat ja anscheinend schon ein paar Fixes/Erweiterungen gegeben?

Viele Grüße,
  Heiko
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: heiko73 am 15 Februar 2021, 16:58:14
OK, habe mich doch mal ein wenig mit Perl auseinandergesetzt und gesehen, dass beim Define der 2. Wallbox ein "socket not created" kam. Sobald er dann das erste Mal mit der Wallbox kommunizieren wollte, steigt FHEM wegen dem oben genannten Fehler aus.

Ich habe dann gesehen, dass der Socket für jede Wallbox gleich aufgesetzt wird und dass als Port immer der Port verwendet wird, der im Define angegeben wurde (bei mir 7090). Allerdings wird beim Erstellen des Socket der Quellport angegeben, so dass hier versucht wurde, die Kommunikation der 2. Wallbox mit dem gleichen Quellport aufzusetzen wie bei der 1. Wallbox. Daher kann der UDP Socket nicht aufgesetzt werden.

Es gibt hier also mindestens zwei Probleme:
a) es wird versucht, den UDP Socket wird bei jeder Wallbox mit dem gleichen Quellport zu erzeugen. Da jeder Port nur einmal verwendet werden kann, schlägt das bei der 2. Wallbox fehl
b) es wird anscheinend nicht geprüft, ob eine Wallbox korrekt angelegt werden konnte und wenn dann versucht wird, über den nicht vorhandenen socket zu senden, crasht FHEM

Ich konnte a) immerhin dadurch beheben, dass ich in der Zeile 139 den Code von

my $socket = IO::Socket::INET->new(Proto => 'udp', Localport => $port);


auf


my $socket = IO::Socket::INET->new(Proto => 'udp', ReusePort = 1, Localport => $port);



geändert habe. Jetzt crasht FHEM nicht mehr beim Versuch, auf die 2. Wallbox zuzugreifen und ich bekomme auch Werte angezeigt.

Schonmal gut, aber b) ist noch nicht gelöst und ob mein "Fix" auch zuverlässig funktioniert, weiß ich nicht. Die Kommunikation ist asynchron und ich kann mit meinen bescheidenen Kenntnissen nicht sehen, was die Read Routine antriggert und wie sie z.B. erkennt, von welcher wallbox die Daten gerade sind.

Da muss noch einiges an Arbeit reingesteckt werden, damit das robust funktioniert.
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: rudolfkoenig am 15 Februar 2021, 17:44:03
Zitatob mein "Fix" auch zuverlässig funktioniert, weiß ich nicht.
Wenn ich als Aussenstehender, nach 15 Minuten .pm und .pdf studieren was nicht uebersehen habe, dann kann das nicht richtig funktionieren.

Das Modul wertet nicht den Sender aus, und wenn mehrere Instanzen den gleichen UDP-Port verwenden, dann ist es Zufall, bei welcher FHEM-Instanz die Daten landen. Oder kein Zufall, aber dann landen alle Daten beim Letzten, was nicht wesentlich besser ist.

Um das Porblem "richtig" (im Sinne einer FHEM-Architektur) zu loesen, muesste man das Modul in zwei aufspalten (IO-Modul und "logisches" Modul).

Wenn man diese Arbeit sparen will (d.h. Pfusch ist auch ok), dann muss man beim Empfang der Daten anhand der Sender-IP erst die richtige FHEM-Instanz finden (z.Bsp. ueber eine Schleife aller FHEM-Geraete), und dann die readings*Update Funktionen mit dessen $hash aufrufen.

Wenn man fuer nachfolgende Programmierer Kopfschmerzen ersparen will, dann oeffnet nur der erste "define" ein Port, alle Nachfolgenden verwenden diese Instanz zum Schreiben. Dieser Schritt ist, wie erwaehnt, optional :)
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: heiko73 am 16 Februar 2021, 12:29:15
Hi Rudolf und danke fürs Reinschauen!

Ja, habe ich auch so festgestellt. Habe etwas Debug eingebaut und tatsächlich wird immer der Hash einer der beiden Wallboxen übergeben, egal von welcher IP die Antwort per UDP ankommt. Leider sind die Wallboxen auch nicht so schlau, bei einem eingehenden Request die Antwort an den Source Port des Requests zurück zu schicken, sondern sie nehmen immer den Port 7090. Ich habe bisher auch noch keine Möglichkeit gefunden, diesen Port auf den Wallboxen umzustellen, damit sie jeweils andere Ports verwenden - dann würde es wieder klappen. Allerdings ist dann trotzdem nicht der Fall abgedeckt, dass jemand zwei oder mehr Wallboxen mit gleichem Port verwendet.

Wenn das tatsächlich nicht geht (ich werde auf jeden Fall trotzdem beim Hersteller anfragen), dann bleibt nur die von Dir vorgeschlagene Vorgehensweise, d.h. die Read Funktion bekommt zwar einen Hash übergeben, den muss sie aber ignorieren und selbst ermitteln, für welches der definierten Wallbox Objekte die Antwort ist, eben über die IP Adresse des Absenders der Antwort.

Ich habe mal versucht, in anderen Modulen zu spicken, finde aber keins bei dem ich durchsteige, wie das gehen soll.

Gibt es eine "foreach" Schleife mit der ich durch alle Hashes gehen kann, die zu diesem Modul gehören? Oder muss ich durch *alle* Hashes aller Module gehen (wow, das wären bei mir ein paar)?

Nur einen Socket aufzumachen wäre sicher machbar, aber mit dem Reuse Port und individuellen Sockets ist das Senden meiner Meinung nach einfacher und vor allem wird damit der Fall abgedeckt, dass es tatsächlich mal unterschiedliche Ports geben kann. Dann braucht man nicht bei jedem Define checken, ob es für den angegebenen Port bereits einen Empfangs-Socket gibt oder nicht.

Eine Trennung in Kommunikation und Logik hört sich gut an, allerdings übersteigt das bei weitem meine Fähigkeiten und ich halte es für wahrscheinlicher, dass ich das mit dem "Auswerten der Antwort und herausfinden, zu welchem Objekt es gehört" hinbekomme.

Nochmals Danke!

Viele Grüße,
  Heiko


Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: heiko73 am 16 Februar 2021, 13:28:26
OK, ich glaube ich habs erstmal so hinbekommen.

Gehe doch durch alle Objekte/Hashes, machen die meisten anderen Module auch so, und checke dann als erstes auf den TYPE.

Jetzt werden die responses meiner beiden Wallboxen anscheinend korrekt zugeordnet.

Code:

  $socket->recv($response,512);
  my $peeraddress = $socket->peerhost();
  my $foundhash = 0;

  Log 3, "Message received from $peeraddress";
  Log 3, "Data: $response";

  my $ch = $hash;
foreach my $d(keys %defs) {
        $ch = $defs{$d};
        next if (!exists($ch->{TYPE}));
        next if ($ch->{TYPE} ne 'KEBA');
        Log 3,"  checking $ch->{Host} $ch->{NAME} ";
        $foundhash = 1;
        $hash = $ch;
        last if ($ch->{Host} eq $peeraddress);
        $foundhash = 0;
  }


  if ($foundhash eq '1') {
       Log 3," OK, message received from $hash->{Host} ";
  } else {
       Log 3," Unknown sender/could not find a matching object";
       return;
  }



Es gibt dann solche Log Einträge:


2021.02.16 13:24:34 3: wallbox1 Sending command: report 3
2021.02.16 13:24:34 3: wallbox1 Command was sent
2021.02.16 13:24:34 3: Message received from 192.168.0.111
2021.02.16 13:24:34 3: Data: {
"ID": "3",
"U1": 0,
"U2": 0,
"U3": 0,
"I1": 0,
"I2": 0,
"I3": 0,
"P": 0,
"PF": 0,
"E pres": 103263,
"E total": 1408408,
"Serial": "21328205",
"Sec": 936592
}

2021.02.16 13:24:34 3:   checking 192.168.0.111 wallbox1
2021.02.16 13:24:34 3:  OK, message received from 192.168.0.111
...
2021.02.16 13:24:53 3: wallbox2 Sending command: report 3
2021.02.16 13:24:53 3: wallbox2 Command was sent
2021.02.16 13:24:53 3: Message received from 192.168.0.112
2021.02.16 13:24:53 3: Data: {
"ID": "3",
"U1": 0,
"U2": 0,
"U3": 0,
"I1": 0,
"I2": 0,
"I3": 0,
"P": 0,
"PF": 0,
"E pres": 0,
"E total": 10804,
"Serial": "yyyyyyyy",
"Sec": 363890
}

2021.02.16 13:24:53 3:   checking 192.168.0.112 wallbox2
2021.02.16 13:24:53 3:  OK, message received from 192.168.0.112


Lasse das mal ne Weile laufen und hoffe, dass es hält.

Viele Grüße,
  Heiko
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: rudolfkoenig am 16 Februar 2021, 14:21:25
ZitatLeider sind die Wallboxen auch nicht so schlau, bei einem eingehenden Request die Antwort an den Source Port des Requests zurück zu schicken, sondern sie nehmen immer den Port 7090.
Das ist noch nicht sicher: Du setzt ja den Source Port (aka Localport) immer auf 7090, selbst dein Betriebsystem hielt diese Idee vor ReusePort=>1 fuer nicht so toll (Port already in use).
Laut KEBA-Doku gibt es Broadcasts, die an 7090 gehen, ich weiss nicht, ob diese in deinem Fall relevant sind. Wenn ja, dann ist 7090 Pflicht. Muss aber nicht mehr als einmal geoffnet werden.

ZitatLasse das mal ne Weile laufen und hoffe, dass es hält.
Deine Loesung sollte funktionieren.

Fuer den Fall, dass viele Nachrichten kommen und dein Rechner zu schwach fuer die staendigen Schleifen ist, kann man die IP->$hash Zuordnung in einem Modul-Eigenen hash merken. Erst wenn die IP nicht in diesem Hash ist, muss man die Schleife durchfuehren (und die IP merken).

Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: heiko73 am 16 Februar 2021, 14:51:21
Hi,

danke für die Hinweise, die Idee mit dem moduleigenen Hash hört sich gut an. Auf meinem FHEM Server ist das zwar kein Problem (Xeon CPU), aber für die Raspi-Fraktion etc. eventuell dann doch.

Ich schaue mal, ob ich einen einzigen "Sende-Socket" anlegen kann, der dann einen x-beliebigen (freien) UDP Port als Sourceport nutzt. Beim Empfangen kann ich nicht nur eine Socket nehmen, wenn man die Ports entweder auf den Wallboxen umkonfigurieren kann oder in Zukunft mal andere Modelle mit anderen Ports auf den Markt kommen (die aber ansonsten die gleiche Kommunikation per JSON ermöglichen).

Ich versuche mal, einen Socket pro vom Benutzer für die Wallboxen definierten Port aufzumachen.

Viele Grüße,
   Heiko
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: heiko73 am 16 Februar 2021, 22:09:45
OK, bin gescheitert beim Versuch zu prüfen, ob es schon einen socket für den angegebenen Port gibt, am Ende der Änderungen hing FHEM wenn er aus der read Funktion zurückkam.

Allerdings gibt das reuseport keinen "socket already exist" Fehler aus und es scheint erstmal zu klappen.

Ich habe auch mal spaßeshalber den "display" Befehl eingebaut, mit dem man etwas auf dem Display der Wallbox anzeigen lassen kann. Ich bekomme zumindest eine Bestätigung von der Wallbox, bin aber noch nicht rausgelaufen und habe es überprüft  ;)  ..

Noch zwei Kleinigkeiten: Es gab einen Fehler weil eins der Readings von der Box ein Prozentzeichen enthält, lasse das jetzt mit einem tr Befehl in ein großes P umwandeln. Außerdem habe ich bei allen Log Meldungen jetzt ein KEBA: vorangestellt, so dass man im Log auch weiß, von welchem Modul die Meldung kommt und habe die Log Einträge generell etwas aufgeräumt. Auch den "STATE" einer Wallbox setze ich jetzt auf den Statuswert, immer wenn er von der Box empfangen wurde. Also steht da jetzt nicht ewig "Listening" sondern z.B. "not ready for charging" etc...

Das Modul ist noch weit davon entfernt, dass man es guten Gewissens offiziell aufnehmen kann, würde ich mal sagen. Wenn sich jemand erbarmt, kann ich gern mit Tests und Infos weiterhelfen bzw. zuarbeiten. Ansonsten benutze ich es erstmal und wenn es jemand anderen gibt, der zwei KEBA Wallboxen betreibt und das ausprobieren möchte, kann ich gern meine angepasste Version per PM oder so verschicken.

Viele Grüße,
   Heiko



Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: heiko73 am 17 Februar 2021, 12:11:28
Nur der Vollständigkeit halber, hier die Antwort vom KEBA Support auf meine Frage, ob man den UDP Port für die "Smarthome-Schnittstelle" der Wallboxen irgendwie verändern kann:

Zitat
der Port 7090 für die UDP Kommunikation kann nicht umgeändert werden, da dieser hardcoded ist.

Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: rudolfkoenig am 17 Februar 2021, 12:14:25
Ich empfehle dem Hersteller die Implementierung einer MQTT Schnittstelle, aber bei dieser Antwort sehe ich wenig Chancen, dass es umgesetzt wird.
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: heiko73 am 17 Februar 2021, 12:31:04
Jupp, sehe ich auch so. Zucke generell bei "hardcoded" zusammen, vor allem wenn es um sowas geht. Auch das Verhalten, dass beim Senden einer Antwort nicht der Source Port der Anfrage als Destination Port verwendet wird, ist fragwürdig. Ist zwar laut RFC768 kein Muss, dass man eine Antwort an den Source Port der Anfrage schickt, aber naja ...

Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: maci am 09 April 2021, 12:43:52
Zitat von: heiko73 am 17 Februar 2021, 12:31:04
...Zucke generell bei "hardcoded" zusammen ...

Mag ich auch nicht, aber ich kenne schon viele Dinge die hardcoded sind.

Ich habe bei meiner Keba P30c das Problem, dass sie sich immer mit einer Standard IP meldet, obwohl DHCP eingeschaltet wäre.
Meine Box hat immer die IP 192.168.25.25
Bekomme sie nicht weg davon.

Weiß jemand einen Rat?
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: fritzhugo123 am 09 Mai 2021, 20:21:17
Hallo zusammen,

auch ich habe eine KEBA P30 in Betrieb genommen.
Leider scheint es so als würde die Kommunikation zwischen FHEM und der Wallbox nur einseitig funktionieren.
Ich bekomme alle Daten aus der Wallbox, aber weder das Setzen des enableState, noch von current wird von der Wallbox angenommen.
Ich habe eben noch einmal in die Anleitung geschaut. Möglicherweise liegt es daran, dass ich den DIP 1.3 nicht auf ON gestellt habe.
Das scheint für die Steuerung über das LAN Interface aber nötig zu sein.
Ich melde mich wieder, wenn ich erneut gestet habe.

Gruß, Matthias
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: hasenhirn am 10 Mai 2021, 17:46:25
Hallo Matthias,

so sieht meine Einstellung aus.
In der KEBA-Anleitung unter Punkt 1.4 Requirements steht auch : The UDP interface is enabled by switching the DIP switch DSW1.3 to "ON"

Gruß

Thomas
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: fritzhugo123 am 11 Mai 2021, 08:20:44
Hallo zusammen,

ich kann bestätigen, dass es an dem DIP Switch lag. Nachdem ich 1.3 auf on gesetzt habe, lässt sich die Wallbox wie erwartet steuern.

Gruß, Matthias
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: maci am 11 Mai 2021, 08:41:44
Hallo an alle,

Die DipSwitch Einstellungen werde ich bei mir auch noch kontrollieren. Danke für den Hinweis.

Weiters habe ich etwas entdeckt, was eigentlich störend ist.
Wobei sich das wahrscheinlich im FHEM Modul nicht ändern lässt
1) Das Userreading Epres liefert ja die aktuelle Leistungsaufnahme der Wallbox. Wenn ich aber das Laden abbreche bleibt der Wert stehen obwohl keine Leistung mehr aufgenommen wird.
2) Die Readings I1 bis I3 geben ja über die Stromaufnahme Auskunft. Doch diese Werte passen nicht, denn beim Laden wird bei mir 15.xx A bei I1 ausgegeben, bei I2 und I3 so Werte wie 0.01 usw.
Das glaube ich schon mal gar nicht. Meine Wallbox ist auf 16A eingestellt.

Das Problem das ich am 9. April geschildert habe, ist gelöst. Es lag an den DipSwitches. Diese waren nicht richtig gesetzt.
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: hasenhirn am 11 Mai 2021, 17:26:59
Hallo maci,

ich habe hinter dem Befehl zum Beenden der Ladung einfach ein "get KEBA report 3" eingefügt damit die Werte aktualisiert werden.

Gruß

Thomas
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: Humbs am 16 Mai 2021, 17:16:54
Hallo zusammen,

zunächst vielen Dank für das Modul.

Funktioniert mit einer Wallbox auch super.

So bald ich 2 Boxen definiere, hakelts bei einer also:

define Wallbox_Garage1 KEBA 192.168.10.26 7090 120
define Wallbox_Garage2 KEBA 192.168.10.27 7090 120

klappt leider nicht.

Habt ihr Ideen dazu?
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: hasenhirn am 16 Mai 2021, 20:00:24
Hallo Humbs,

wie äußert sich denn das "hakeln" ?
Ich habe vor einem Monat auch eine zweite KEBA bestellt.
Leider ist aus der Lieferzeit von 7-15Tagen die KW 29 geworden :-/
Würde mich freuen wenn wir das Problem bis dahin lösen könnten ;-)

LG
Thomas
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: maci am 21 Mai 2021, 09:56:22
Meine Vermutung ist, dass eine Box nicht die richtige IP hat.
Wenn sie keine Daten sendet, ist sie nicht im (richtigen) Netz

Keba Steuern:
Wie kann ich die Box steuern? Switch 1.3 ist auf on.
vielleicht kann ich die Anleitung dazu nicht richtig lesen oder ich sende die Befehle falsch ab.
Könnt ihr mir ein Beispiel geben?
Wie kann ich zB das Laden beenden, weil die PV zu wenig und gar keinen Strom liefert?
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: hasenhirn am 22 Mai 2021, 10:49:59
moin maci,

hat deine Box einen RFID-Leser?
Ich steuere es darüber. So kann ich Extern die Karte ran halten oder über FHEM die Box ein- / ausschalten.
set KEBA start 8dc5ceee00000000 00000000000000000000 und set KEBA stop 8dc5ceee00000000 wobei 8dc5ceee00000000 eine von mir angelernte RFID-Karte ist.

Gruß

Thomas
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: maci am 22 Mai 2021, 18:58:44
Hallo,

mein Box hat keine RFID Leser.

Wenn ich sie so nicht steuern kann, dann baue ich mir einen Wemos hin, der über X1 die Box ein und ausschalten kann.
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: hasenhirn am 22 Mai 2021, 19:09:22
Neee, das bekommen wir bestimmt hin ;-)
Funktioniert die Kommunikation grundsätzlich ?
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: hasenhirn am 22 Mai 2021, 19:25:22
wie ist den der Status / was steht im Reading von:

AuthON
Authreq
Enablesys
Enableuser
Plug
State
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: maci am 24 Mai 2021, 08:55:37
Die Kommunikation funktioniert.
In den Readings von:
AuthON: 0
Authreq: 0
Enablesys: enabled
Enableuser: enabled
Plug: plugged on wallbox, locked
State: not ready for charging

Derzeit ist die das Kabel nicht am Fahrzeug angeschlossen.
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: hasenhirn am 24 Mai 2021, 16:57:27
Den Stecker muss man auf jeden Fall einstecken, da bin ich mir ganz sicher  ;D ;D ;D

So sieht es bei mir aus wenn die Box auf 6A eingestellt ist, eingesteckt und über das stop-Kommando unterbrochen ist:

Zitat
AuthON         1   2021-05-24 16:27:01
Authreq         1   2021-05-24 16:27:01
Backend         0   2021-05-24 16:27:12
COM-module   0    2021-05-24 16:27:12
CurrFS         0   2021-05-24 16:27:01
CurrHW     32000   2021-05-24 16:27:01
Currtimer         0   2021-05-24 16:27:01
Curruser       6000   2021-05-24 16:27:01
DIP-Sw1       0x25   2021-05-24 16:27:12
DIP-Sw2       0x00   2021-05-24 16:27:12
Enablesys    disabled   2021-05-24 16:27:01
Enableuser  enabled   2021-05-24 16:27:01
Epres    106150   2021-05-24 16:27:01
Error1         0   2021-05-24 16:27:01
Error2         0   2021-05-24 16:27:01
Etotal       46307403   2021-05-24 16:27:01
Firmware   P30 v 3.10.27 (210105-174852)   2021-05-24 16:27:12
I1                 0   2021-05-24 16:27:01
I2                 0   2021-05-24 16:27:01
I3                 0   2021-05-24 16:27:01
ID                 1   2021-05-24 16:27:12
Input              0   2021-05-24 16:27:01
Maxcurr         0   2021-05-24 16:27:01
Maxcurr-Percent    1000   2021-05-24 16:27:01
Output       open   2021-05-24 16:27:01
P                 0   2021-05-24 16:27:01
PF                 0   2021-05-24 16:27:01
Plug    plugged_on_wallbox_ev_and_locked   2021-05-24 16:27:01
Product   KC-P30-EC240422-M0R   2021-05-24 16:27:12
Sec            4078138   2021-05-24 16:27:12
Serial    19257922   2021-05-24 16:27:12
Setenergy         0   2021-05-24 16:27:01
State    charging process temporarily interrupted   2021-05-24 16:27:01
TmoCT         0   2021-05-24 16:27:01
TmoFS         0   2021-05-24 16:27:01
U1                 0   2021-05-24 16:27:01
U2                 0   2021-05-24 16:27:01
U3                 0   2021-05-24 16:27:01
timeQ         2   2021-05-24 16:27:12

So sieht es bei mir aus wenn die Box auf 6A eingestellt ist, eingesteckt und über das start-Kommando am laden ist:

Zitat
AuthON           1   2021-05-24 16:35:43
Authreq           0   2021-05-24 16:35:43
Backend           0   2021-05-24 16:35:53
COM-module   0   2021-05-24 16:35:53
CurrFS           0   2021-05-24 16:35:43
CurrHW        32000   2021-05-24 16:35:43
Currtimer           0   2021-05-24 16:35:43
Curruser        6000   2021-05-24 16:35:43
DIP-Sw1        0x25   2021-05-24 16:35:53
DIP-Sw2       0x00   2021-05-24 16:35:53
Enablesys     enabled   2021-05-24 16:35:43
Enableuser  enabled   2021-05-24 16:35:43
Epres    106548   2021-05-24 16:36:22
Error1         0   2021-05-24 16:35:43
Error2         0   2021-05-24 16:35:43
Etotal   46307438   2021-05-24 16:35:48
Firmware   P30 v 3.10.27 (210105-174852)   2021-05-24 16:35:53
I1              4017   2021-05-24 16:35:48
I2              3959   2021-05-24 16:35:48
I3              5580   2021-05-24 16:35:48
ID                 1   2021-05-24 16:35:53
Input         0   2021-05-24 16:35:43
Maxcurr      6000   2021-05-24 16:35:43
Maxcurr-Percent   100   2021-05-24 16:35:43
Output    open   2021-05-24 16:35:43
P          3179132   2021-05-24 16:35:48
PF             986   2021-05-24 16:35:48
Plug    plugged_on_wallbox_ev_and_locked   2021-05-24 16:35:43
Product   KC-P30-EC240422-M0R   2021-05-24 16:35:53
Sec          4078658   2021-05-24 16:35:53
Serial   19257922   2021-05-24 16:35:53
Setenergy         0   2021-05-24 16:35:43
State   charging   2021-05-24 16:35:43
TmoCT         0   2021-05-24 16:35:43
TmoFS         0   2021-05-24 16:35:43
U1               235   2021-05-24 16:35:48
U2               234   2021-05-24 16:35:48
U3               234   2021-05-24 16:35:48
timeQ         2   2021-05-24 16:35:53


sorry dass die Werte hier etwas durcheinander angezeigt werden.
Ich habe hier 10min. in der Vorschau alles in eine Reihe gebracht und dann ist im Post doch alles zerschossen  >:( >:(
Ich hoffe mit den Werten kommst Du einen Schritt weiter.
Wenn nicht einfach noch mal melden ;-=

Gruß
Thomas
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: maci am 25 Mai 2021, 16:54:51
Hallo Thomas,

Jep funktioniert- Danke :)
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: hasenhirn am 28 Mai 2021, 18:06:02
Gerne  ;)
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: Humbs am 20 August 2021, 17:08:37
Zitat von: hasenhirn am 16 Mai 2021, 20:00:24
Hallo Humbs,

wie äußert sich denn das "hakeln" ?
Ich habe vor einem Monat auch eine zweite KEBA bestellt.
Leider ist aus der Lieferzeit von 7-15Tagen die KW 29 geworden :-/
Würde mich freuen wenn wir das Problem bis dahin lösen könnten ;-)

LG
Thomas

Hallo Thomas,

bist Du schon klüger in Sachen 2 KEBAs im Netzwerk?
An den IPs liegts sicher nicht, denn die Web GUIs funktionieren einwandfrei.

Wie äußert sich das Problem bei mir:
Der STATE der zweiten Wallbox bleibt auf drei Fragezeichen

Grüße
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: hasenhirn am 20 August 2021, 17:16:25
Danke für die Info.
Meine 2te Wallbox liegt noch im Keller und wartet auf ihren Anschluss :-)
Bin mal gespannt wie es läuft.  :o
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: hasenhirn am 18 Oktober 2021, 06:28:45
Moin,

die 2te Wallbox ist jetzt auch installiert und läuft bis auf die Anbindung an FHEM.
Hier habe ich natürlich das gleiche Problem wie alle mit dem Standartmodul für die Keba von Marcus42/sido.
Hat schon jemand das Modul von heiko73 oder ein selbst getuntes im Einsatz welches funktioniert?
Für eine Zusendung oder am besten Veröffentlichung wäre ich sehr dankbar.
Mit meinen bescheidenen Programmierkenntnissen würde ich vermutlich Wochen oder Monate für eine Anpassung benötigen  :(

LG

Thomas
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: Ralli am 21 November 2021, 16:56:21
Auch bei den Nachbarn ist das Thema mit mehreren Wallboxen bislang nicht gelöst:

https://github.com/iobroker-community-adapters/ioBroker.kecontact
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: hasenhirn am 21 November 2021, 18:03:29
Moin,

ich habe mal auf der Basis von marcus42 den Anpassungen von sido und der Erweiterung von heiko73 was zusammen genagelt.
Als Info vorab, ich bin gelernter Schlosser und kein Programmierer  :o 
Also alles ohne Gewähr und auf eigene Gefahr.
Die meiste Arbeit ist von den 3 Jungs, ich habe da nur etwas daran rumgemurkst  ::)
Seit ein paar Tagen habe ich das Modul im Einsatz und bis jetzt noch nicht alles getestet, aber das was ich so täglich brauche funktioniert schon mal  :D
Zur Zeit ist bei mir viel los und ich komme nicht so richtig dazu alles zu Testen.
Vor allem bei der Read/Write Funktion die von heiko73 angepasst wurde blicke ich noch nicht so ganz durch wie das funktioniert.
Vielleicht kann es ja so schon jemand gebrauchen oder es hat einer ein paar gute Tipps für mich und kann mir das erklären.
Im Moment lese ich mir die Developerseiten von FHEM durch und versuche das alles zu verstehen - schau ma mal was daraus wird  ;) 

LG

Thomas
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: Ralli am 24 November 2021, 12:23:04
ich habe jetzt nur einmal ein wenig recherchiert und gelesen. Das hier sind die aktuellen Dokumentationen:

https://www.keba.com/download/x/4a925c4c61/kecontactp30udp_pgen.pdf
https://www.keba.com/download/x/dea7ae6b84/kecontactp30modbustcp_pgen.pdf

Dementsprechend kann eine Kommunikation mit einer KEBA entweder über UDP oder über Modbus TCP erfolgen. In der UDP-Dokumentation steht mehr oder weniger klar drin, dass  eine Kommunikation über UDP nicht die präferierte Methode darstellt. Zusammen mit dem Broadcast-Thema, dem fest verdrahteten Port für das von Keba aus gesehene Ziel, sollte m.E. eine solche Wallbox eher über Modbus TCP angesprochen werden - vor allem dann, wenn man mehrere Wallboxen integrieren möchte.

Sollte es etwas geben, was nur über UDP und nicht über Modbus TCP abgefragt oder gesteuert werden kann, so wäre tatsächlich m.E. wie an anderer Stelle hier im Thread schon einmal geschrieben in ein IO-Device und die Wallbox(en) als Client-Device zu splitten, um eine saubere Auftrennung bei Nutzung mehrerer Wallboxen zu erreichen.
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: hasenhirn am 24 November 2021, 16:35:28
Hallo Ralli,

als meine zweite Wallbox kam hatte ich auch versucht die Probleme mit Modbus zu umschiffen.
Positiv ist bei Modbus dass man die Werte ganz einfach Formatieren kann.
Direkt im Device können die angezeigten Daten z.B. von mA ( so genau braucht es wohl keiner ) in A umformatiert und dem Ergebniss auch gleich die Einheit hinzugefügt werden.
Leider konnte ich die Box nicht zum Laden bewegen  :o
Ich hatte hier https://forum.fhem.de/index.php/topic,75638.msg1182211.html#msg1182211 (https://forum.fhem.de/index.php/topic,75638.msg1182211.html#msg1182211) mit dem Entwickler des Modbus-Moduls geschrieben der sehr hilfsbereit war aber auch keinen Fehler bei dem Modul feststellen konnte.
Eine Mail an den KEBA-Support blieb bis heute ohne Antwort  ???
Des weiteren kommen über Modbus auch viel weniger Daten als über UDP.
Daher habe ich das KEBA-UDP-Modul mit viel Arbeit ( da wenig Ahnung ) soweit angepasst dass es für meine Ansprüche im Moment funktioniert.
Vor allem die Möglichkeit einzustellen dass er z.B. nur 10kW zum Auto schickt und sich dann abschaltet gefällt mir richtig gut.
Der BMW kann das Ladelimit nicht einstellen und der Tesla geht erst bei 50% los.
So lade ich immer nur was ich brauche und wenn es mal Strom für umme gibt ist noch Platz im Akku  ;D ;D ;D ;D

LG

Thomas

Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: hasenhirn am 08 Januar 2022, 07:33:02
@Ralli

ich habe gerade mein Laptop aufgeräumt und noch etwas zu dem Thema Modbus gefunden.
Vielleicht kannst du ja etwas davon gebrauchen.

LG Thomas

defmod Keba_Stellplatz ModbusAttr 255 10 192.168.1.22:502 TCP
attr Keba_Stellplatz dev-h-defPoll 1
attr Keba_Stellplatz event-min-interval .*:60
attr Keba_Stellplatz event-on-change-reading .*
attr Keba_Stellplatz obj-h01000-len 2
attr Keba_Stellplatz obj-h01000-map 0:booting, 1:not ready for charging, 2:ready for chargin, 3:charging, 4:error, 5:charging process interrupted
attr Keba_Stellplatz obj-h01000-reading Chargingstate
attr Keba_Stellplatz obj-h01000-unpack N
attr Keba_Stellplatz obj-h01004-len 2
attr Keba_Stellplatz obj-h01004-map 0:no cable is plugged, 1:Cable is connected to charging station, 3:Cabel is connected to the charging station and locked, 5:Cable is connected to the charging station and the EV, 7:Cable is connected to the charging station and the EV an locked
attr Keba_Stellplatz obj-h01004-reading Cablestate
attr Keba_Stellplatz obj-h01004-unpack N
attr Keba_Stellplatz obj-h01006-len 2
attr Keba_Stellplatz obj-h01006-map 0:No error
attr Keba_Stellplatz obj-h01006-reading Error_code
attr Keba_Stellplatz obj-h01006-unpack N
attr Keba_Stellplatz obj-h01008-expr $val / 1000
attr Keba_Stellplatz obj-h01008-format %.3f A
attr Keba_Stellplatz obj-h01008-len 2
attr Keba_Stellplatz obj-h01008-reading Charging_current_phase_1
attr Keba_Stellplatz obj-h01008-unpack N
attr Keba_Stellplatz obj-h01010-expr $val / 1000
attr Keba_Stellplatz obj-h01010-format %.3f A
attr Keba_Stellplatz obj-h01010-len 2
attr Keba_Stellplatz obj-h01010-reading Charging_current_phase_2
attr Keba_Stellplatz obj-h01010-unpack N
attr Keba_Stellplatz obj-h01012-expr $val / 1000
attr Keba_Stellplatz obj-h01012-format %.3f A
attr Keba_Stellplatz obj-h01012-len 2
attr Keba_Stellplatz obj-h01012-reading Charging_current_phase_3
attr Keba_Stellplatz obj-h01012-unpack N
attr Keba_Stellplatz obj-h01014-len 2
attr Keba_Stellplatz obj-h01014-reading Serialnumber
attr Keba_Stellplatz obj-h01014-unpack N
attr Keba_Stellplatz obj-h01016-len 2
attr Keba_Stellplatz obj-h01016-reading Producttype
attr Keba_Stellplatz obj-h01016-unpack N
attr Keba_Stellplatz obj-h01018-len 2
attr Keba_Stellplatz obj-h01018-reading Firmwareversion
attr Keba_Stellplatz obj-h01018-unpack N
attr Keba_Stellplatz obj-h01020-expr $val / 1000000
attr Keba_Stellplatz obj-h01020-format %.3f kWh
attr Keba_Stellplatz obj-h01020-len 2
attr Keba_Stellplatz obj-h01020-reading Active_power
attr Keba_Stellplatz obj-h01020-unpack N
attr Keba_Stellplatz obj-h01036-expr $val / 10000
attr Keba_Stellplatz obj-h01036-format %.3f kWh
attr Keba_Stellplatz obj-h01036-len 2
attr Keba_Stellplatz obj-h01036-reading Total_energy
attr Keba_Stellplatz obj-h01036-unpack N
attr Keba_Stellplatz obj-h01040-format %.1f V
attr Keba_Stellplatz obj-h01040-len 2
attr Keba_Stellplatz obj-h01040-reading Voltage_phase_1
attr Keba_Stellplatz obj-h01040-unpack N
attr Keba_Stellplatz obj-h01042-format %.1f V
attr Keba_Stellplatz obj-h01042-len 2
attr Keba_Stellplatz obj-h01042-reading Voltage_phase_2
attr Keba_Stellplatz obj-h01042-unpack N
attr Keba_Stellplatz obj-h01044-format %.1f V
attr Keba_Stellplatz obj-h01044-len 2
attr Keba_Stellplatz obj-h01044-reading Voltage_phase_3
attr Keba_Stellplatz obj-h01044-unpack N
attr Keba_Stellplatz obj-h01046-expr $val / 10
attr Keba_Stellplatz obj-h01046-format %.1f %
attr Keba_Stellplatz obj-h01046-len 2
attr Keba_Stellplatz obj-h01046-reading Powerfactor
attr Keba_Stellplatz obj-h01046-unpack N
attr Keba_Stellplatz obj-h01100-expr $val / 1000
attr Keba_Stellplatz obj-h01100-format %d A
attr Keba_Stellplatz obj-h01100-len 2
attr Keba_Stellplatz obj-h01100-reading Max_charging_current
attr Keba_Stellplatz obj-h01100-unpack N
attr Keba_Stellplatz obj-h01110-expr $val / 1000
attr Keba_Stellplatz obj-h01110-format %d A
attr Keba_Stellplatz obj-h01110-len 2
attr Keba_Stellplatz obj-h01110-reading Max_supported_current
attr Keba_Stellplatz obj-h01110-unpack N
attr Keba_Stellplatz obj-h05004-expr $val / 1000
attr Keba_Stellplatz obj-h05004-format %d A
attr Keba_Stellplatz obj-h05004-max 63
attr Keba_Stellplatz obj-h05004-min 6
attr Keba_Stellplatz obj-h05004-reading Set_charging_current
attr Keba_Stellplatz obj-h05004-set 1
attr Keba_Stellplatz obj-h05004-setexpr $val * 1000
attr Keba_Stellplatz obj-h05010-reading Set_energy
attr Keba_Stellplatz obj-h05010-set 1
attr Keba_Stellplatz obj-h05010-unpack N
attr Keba_Stellplatz obj-h05012-reading Unlock_plug
attr Keba_Stellplatz obj-h05012-set 1
attr Keba_Stellplatz obj-h05014-reading Enable/Disable_charging_station
attr Keba_Stellplatz obj-h05014-set 1
attr Keba_Stellplatz verbose 5

setstate Keba_Stellplatz opened
setstate Keba_Stellplatz 2021-10-24 16:57:18 Active_power 4.242 kWh
setstate Keba_Stellplatz 2021-10-24 16:57:28 Cablestate Cable is connected to the charging station and the EV an locked
setstate Keba_Stellplatz 2021-10-24 16:57:28 Charging_current_phase_1 6.106 A
setstate Keba_Stellplatz 2021-10-24 16:57:28 Charging_current_phase_2 6.101 A
setstate Keba_Stellplatz 2021-10-24 16:57:18 Charging_current_phase_3 6.097 A
setstate Keba_Stellplatz 2021-10-24 16:57:28 Chargingstate charging
setstate Keba_Stellplatz 2021-10-24 15:52:50 Enable/Disable_charging_station 0
setstate Keba_Stellplatz 2021-10-24 16:57:28 Error_code No error
setstate Keba_Stellplatz 2021-10-24 16:57:18 Firmwareversion 50993920
setstate Keba_Stellplatz 2021-10-24 16:57:19 Max_charging_current 6 A
setstate Keba_Stellplatz 2021-10-24 16:57:19 Max_supported_current 16 A
setstate Keba_Stellplatz 2021-10-24 16:57:19 Powerfactor 99.7 %
setstate Keba_Stellplatz 2021-10-24 16:57:18 Producttype 314121
setstate Keba_Stellplatz 2021-10-24 16:57:18 Serialnumber 22218033
setstate Keba_Stellplatz 2021-10-24 16:56:48 Set_charging_current 6 A
setstate Keba_Stellplatz 2021-10-24 16:57:18 Total_energy 138.070 kWh
setstate Keba_Stellplatz 2021-10-24 16:57:18 Voltage_phase_1 231.0 V
setstate Keba_Stellplatz 2021-10-24 16:57:19 Voltage_phase_2 232.0 V
setstate Keba_Stellplatz 2021-10-24 16:57:19 Voltage_phase_3 232.0 V
setstate Keba_Stellplatz 2021-10-24 15:50:51 state opened
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: Hauswart am 04 November 2022, 12:17:34
Hallo, wird das Modul noch aktiv bewirtschaftet? Laut Github gab es in den letzten drei Jahren keine Anpassung mehr.

Da ich die Tage eine Keba P30 DE 440 installieren werde, schaue ich mir gerne dein Modul an und werde es eventuell überarbeiten/weiterführen.
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: hasenhirn am 04 November 2022, 17:20:08
Moin,

das Modul hat soweit mit einer Box funktioniert und lief problemlos.
Bei 2 Boxen gab es aber etwas Ärger - das sollte aber dann im Moment kein Problem bei dir sein.

Gruß

Tom
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: kman_solar am 04 November 2022, 18:36:56
Hallo hasenhirn,
habe beide Module (UDP und Modbus) in fhem integriert.
Verbindung steht, Werte auslesen geht, Stromstärke setzen geht.
Aber stop und start geht nicht.
Ich habe mehrere RFID eingelernt.
Beim UDP, also dem 70_Keba.pm muss ich wohl die RFID mitgeben. Das probiere ich morgen.
Bei dem Modbus Modul kann man aber keine Werte mitgeben bei set Keba_Wallbox_Name start

Muss ich da vorher noch was anderes freischalten.

Gruß
Thorsten
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: hasenhirn am 04 November 2022, 22:36:31
Hallo Thorsten,

hier hatte ich das Starten mal beschrieben. Du musst halt den Code deiner angelernten Karte einsetzen.

Gruß

Tom

Zitat von: hasenhirn am 22 Mai 2021, 10:49:59
moin maci,

hat deine Box einen RFID-Leser?
Ich steuere es darüber. So kann ich Extern die Karte ran halten oder über FHEM die Box ein- / ausschalten.
set KEBA start 8dc5ceee00000000 00000000000000000000 und set KEBA stop 8dc5ceee00000000 wobei 8dc5ceee00000000 eine von mir angelernte RFID-Karte ist.

Gruß

Thomas
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: kman_solar am 05 November 2022, 18:14:50
Hallo Thomas,

danke für den Hinweis. Meine Frau hat heute leider mein Test EV mitgenommen :-( Ich probiere daher erst morgen.
Ich glaube aber, dass der Befehl, den du maci genannt hattest für das UDP Modul ist.
Ich suche den start stop Befehl für das ModBus Modul. Da habe ich gesehen, gibt es enable und disable in den set Befehlen.
Damit probiere ich morgen mal.

Und ja, habe mehrere RFID hinterlegt.

Hab parallel noch eine Go-E am laufen. Die läuft automatisiert über eine Routine, die je nachHausbedarf, PV Leistung, Speicher-SoC, Auto-SoC selber bestimmt, wie und wie lange geladen wird. Klappt schon super. Sogar mit Phasensteuerung.

Was mich extrem an der KeBa stört, ist die fehlende Phasenumschaltung. Bei dem Preis, hätte man das schon einbauen können. Schade. So muss ich auf manuell auf eine Phase reduzieren.

Gruß
Thorsten
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: hasenhirn am 05 November 2022, 18:37:21
Hallo Thorsten,

nur mal so zur Info, ich bin zwischenzeitlich auf IoBroker umgestiegen da es für mich viel einfacher und übersichtlicher ist.

Vom Modbus bin ich damals nach einem Test gleich wieder zurück zu UDP da dort viel mehr Daten ankommen.

Bzgl: "Was mich extrem an der KeBa stört, ist die fehlende Phasenumschaltung."
Meine Meinung dazu ist, dass mein Wagen wenn er lädt aus den Standby aufwacht und dann ca.300W verbraucht.
Wenn ich also mit so wenig Leistung am Start bin ist für mich die Verlustleistung einfach zu hoch und es macht wenig Sinn.
Aber wie gesagt, ist nur meine Meinung ;-)

LG
Tom
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: kman_solar am 06 November 2022, 09:35:59
Hallo Thomas,

mit ioBroker hab ich mich noch nicht beschäftigt.
Habe fhem mit homematic Komponenten (nicht Homematic IP).
Außerdem zapfe ich mit json den Speicher und mit Modus den WR und die Wallbox an.
Das läuft seit Jahren ganz gut.
Allerdings hab ich mich auch schon mal mit dem Thema auseinandergesetzt, mal auf was moderneres umzusteigen.

Ich hab nen Twinge Z.E. Den lade ich fast ausschließlich mit PV Überschuss und daher ist das mit der Phasenumschaltung gut geeignet (im Sommer ;-)
Du hast einen i3, wenn ich das richtig irgendwo gelesen habe. Der Twingo kennt auch gar keinen Tiefschlaf ;-)

Unsere Erfahrung und Meinungsaustausche sind sehr gut. Wir sind hier im Ort ein paar PV / EV / Speicher / Optimierungsliebhaber und da sind wir froh über andere Meinungen und Ideen.

VG
Thorsten
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: kman_solar am 06 November 2022, 14:42:18
Hey Tom,

start mit RFID Tag (aber ohne class) klappt.
stoppen geht allerdings nicht mit dieser Syntax. Wenn ich aber enablestate auf off mache, pausiert er.

Ich probiere mal weiter...

Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: hasenhirn am 07 November 2022, 05:54:20
Moin,

super, freut mich wenn ich Dir wenigstens ein bisschen helfen konnte.
Aber wie gesagt, bei UDP hast du mehr Daten und das ist doch das was wir alle wollen ;-)

LG

Tom
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: maci am 08 Januar 2023, 20:27:36
Mir ist es erst dieser Tage aufgefallen als ich stacktrace auf 1 gesetzt habe.
Ich bekomme bei diesem Modul laufend diese Perl Warnung.
Zitat2023.01.08 11:37:40.170 1: PERL WARNING: Use of uninitialized value $commandStack in concatenation (.) or string at ./FHEM/70_KEBA.pm line 393.
2023.01.08 11:37:40.170 1: stacktrace:
2023.01.08 11:37:40.171 1:     main::__ANON__                      called by ./FHEM/70_KEBA.pm (393)
2023.01.08 11:37:40.171 1:     main::KEBA_GetUpdate                called by fhem.pl (3497)
2023.01.08 11:37:40.171 1:     main::HandleTimeout                 called by fhem.pl (703)

Habe ich da etwas falsch konfiguriert?

hier das List meiner Definition:
ZitatInternals:
   CONNECTS   1
   Command   
   DEF        192.168.25.20 7090 60
   FD         31
   FUUID      634410fe-f33f-0d7f-c30f-15b48a12f1bd16a4
   Host       192.168.25.20
   Interval   60
   LAST_CONNECT 2023-01-08 20:26:52
   LAST_MESSAGE TCH-OK :done

   NAME       wallbox
   NR         593
   Port       7090
   STATE      Status: not ready for charging <br>Spannung/Stromstärke Phase1: 0 Volt | 0.000 A || Phase2: 0 Volt | 0.000 A || Phase3: 0 Volt | 0.000 A <br>aktuelle LadeSession: 0.000 kWh | Ladekosten: 0.00 € <br>Gesamte Ladeleistung: 0.000 kWh | Gesamte Ladekosten: 1522.35 € <br>Uptime: 42 Tage - 6 Std : 47 Min. || Letzte_Aktualisierung: 2023-01-08 20:26:52
   TYPE       KEBA
   eventCount 95627
   Helper:
     DBLOG:
       Epres:
         DBLogging:
           TIME       1673206012.28765
           VALUE      58867
       Etotal:
         DBLogging:
           TIME       1673206012.28765
           VALUE      25414880
       Etotal_alt:
         DBLogging:
           TIME       1673132460.10793
           VALUE      25414880
   READINGS:
     2023-01-08 20:26:52   Ausgangsleistung 0
     2023-01-08 20:26:52   AuthON          0
     2023-01-08 20:26:52   Authreq         0
     2023-01-08 20:26:52   Backend         0
     2023-01-08 20:26:52   COM-module      0
     2023-01-08 20:26:52   CurrFS          0
     2023-01-08 20:26:52   CurrHW          16000
     2023-01-08 20:26:52   Currtimer       0
     2023-01-08 20:26:52   Curruser        63000
     2023-01-08 20:26:52   DIP-Sw1         0x22
     2023-01-08 20:26:52   DIP-Sw2         0x50
     2023-01-08 20:26:52   Enablesys       disabled
     2023-01-08 20:26:52   Enableuser      disabled
     2023-01-08 20:26:52   Epres           58867
     2023-01-08 20:26:52   Error1          0
     2023-01-08 20:26:52   Error2          0
     2023-01-08 20:26:52   Etotal          25414880
     2023-01-08 00:01:00   Etotal_alt      25414880
     2023-01-08 20:26:52   Firmware        P30 v 3.10.36 (211117-093932)
     2023-01-08 20:26:52   I1              0
     2023-01-08 20:26:52   I2              0
     2023-01-08 20:26:52   I3              0
     2023-01-08 20:26:52   ID              3
     2023-01-08 20:26:52   Input           0
     2023-01-08 00:01:00   Kosten_Tageswert 0
     2023-01-08 00:01:00   LadeKosten_Gesamt 1522.351312
     2023-01-06 12:01:53   LadeKosten_aktuell 0
     2023-01-06 12:01:53   LadeKosten_letzte_LadeSession 3.5206225
     2023-01-08 00:01:00   Leistung_Tageswert 0
     2023-01-06 12:01:53   Leistung_aktuell 0
     2023-01-06 12:01:53   Leistung_letzte_LadeSession 5.8775
     2023-01-08 20:26:52   Maxcurr         0
     2023-01-08 20:26:52   Maxcurr%        1000
     2023-01-08 20:26:52   Output          open
     2023-01-08 20:26:52   P               0
     2023-01-08 20:26:52   PF              0
     2023-01-08 20:26:52   Plug            plugged on wallbox, locked
     2023-01-08 20:26:52   Product         KC-P30-EC240122-E00
     2023-01-08 20:26:52   Sec             3653271
     2023-01-08 20:26:52   Serial          21293219
     2023-01-08 20:26:52   Setenergy       0
     2023-01-08 20:26:52   State           not ready for charging
     2023-01-08 20:26:52   Stromstaerke_1  0
     2023-01-08 20:26:52   Stromstaerke_2  0
     2023-01-08 20:26:52   Stromstaerke_3  0
     2023-01-08 20:26:52   TmoCT           0
     2023-01-08 20:26:52   TmoFS           0
     2023-01-08 20:26:52   U1              0
     2023-01-08 20:26:52   U2              0
     2023-01-08 20:26:52   U3              0
     2023-01-08 20:26:52   Uptime          42 Tage - 6 Std : 47 Min.
     2023-01-08 20:26:52   timeQ           3
Attributes:
   DbLogExclude .*
   DbLogInclude Epres,Etotal,Etotal_alt
   icon       electric_car_icon@green
   room       4.10_Garage
   stateFormat {sprintf("Status: %s <br>Spannung/Stromstärke Phase1: %.0f Volt | %.3f A || Phase2: %.0f Volt | %.3f A || Phase3: %.0f Volt | %.3f A <br>aktuelle LadeSession: %.3f kWh | Ladekosten: %.2f € <br>Gesamte Ladeleistung: %.3f kWh | Gesamte Ladekosten: %.2f € <br>Uptime: %s || Letzte_Aktualisierung: %s ",ReadingsVal($name,"State",0),ReadingsVal($name,"U1",0),ReadingsVal($name,"Stromstaerke_1",0),ReadingsVal($name,"U2",0),ReadingsVal($name,"Stromstaerke_2",0),ReadingsVal($name,"U3",0),ReadingsVal($name,"Stromstaerke_3",0),ReadingsVal($name,"Leistung_Aktuelle_LadeSession",0),ReadingsVal($name,"LadeKosten_Aktuelle_LadeSession",0),ReadingsVal($name,"Leistungsaufname_Gesamt",0),ReadingsVal($name,"LadeKosten_Gesamt",0),ReadingsVal($name,"Uptime",0),ReadingsTimestamp($name,"Sec",""))}
   userReadings Uptime:Sec.* {my $days=ReadingsVal($name,"Sec",0) / 86400; my $d=int($days); my $hours=($days - $d) * 24; my $h=int($hours); my $im=($hours - $h) * 60; my $m=int($im); "$d Tage - $h Std : $m Min.";}, Stromstaerke_1  { ReadingsVal($name,"I1",0) /1000 }, Stromstaerke_2  { ReadingsVal($name,"I2",0) /1000 }, Stromstaerke_3  { ReadingsVal($name,"I3",0) /1000 }, Ausgangsleistung { ReadingsVal($name,"P",0) /1000000 }
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: FHEM_newbie am 02 März 2023, 23:27:33
@maci: Habe mir gerade deine Konfiguration angeschaut. Wie funktioniert das mit den Ladekosten? Wo hast du den kWh Preis hinterlegt und wie holt sich das KEBA Moidul den?
Titel: Antw:Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: maci am 14 März 2023, 13:31:08
Das KEBA Modul hat nichts mit den Ladekosten zu tun.
Diese hole ich mir aus dem Dummy, wo ich diese Werte aktuell halte.
Ladekosten ist ja nichts anderes als Ladestrom x Strompreis (KWh x €/KWh)
Titel: Aw: Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: fritzhugo123 am 03 Juni 2024, 16:04:37
Hallo zusammen,
ich nutze das Modul auch für meine KEBA wallbox.
Leider stört mich eine Sache und ich habe keine Idee, wie ich sie lösen kann.

Das Modul müllt mein Logfile zu (also das fhem.log)
Es werden reports (1-3) geschickt, die ich aber nicht benötigt.
Wie kann ich diese Reports deaktivieren?

Titel: Aw: Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: maci am 27 März 2025, 17:35:03
Ich versuche es nochmals, vieleicht meldet sich der Entwickler mal.
Fehler im Log:
2025.03.27 17:18:43.689 1: PERL WARNING: Use of uninitialized value $commandStack in concatenation (.) or string at ./FHEM/70_KEBA.pm line 393.
2025.03.27 17:18:43.689 1: stacktrace:
2025.03.27 17:18:43.689 1:     main::__ANON__                      called by ./FHEM/70_KEBA.pm (393)
2025.03.27 17:18:43.689 1:     main::KEBA_GetUpdate                called by fhem.pl (3511)
2025.03.27 17:18:43.690 1:     main::HandleTimeout                 called by fhem.pl (710)
2025.03.27 17:19:43.691 1: PERL WARNING: Use of uninitialized value $commandStack in concatenation (.) or string at ./FHEM/70_KEBA.pm line 393.
2025.03.27 17:19:43.691 1: stacktrace:
2025.03.27 17:19:43.691 1:     main::__ANON__                      called by ./FHEM/70_KEBA.pm (393)
2025.03.27 17:19:43.691 1:     main::KEBA_GetUpdate                called by fhem.pl (3511)
2025.03.27 17:19:43.691 1:     main::HandleTimeout                 called by fhem.pl (710)
2025.03.27 17:20:43.692 1: PERL WARNING: Use of uninitialized value $commandStack in concatenation (.) or string at ./FHEM/70_KEBA.pm line 393.
2025.03.27 17:20:43.693 1: stacktrace:
2025.03.27 17:20:43.693 1:     main::__ANON__                      called by ./FHEM/70_KEBA.pm (393)
2025.03.27 17:20:43.693 1:     main::KEBA_GetUpdate                called by fhem.pl (3511)
2025.03.27 17:20:43.693 1:     main::HandleTimeout                 called by fhem.pl (710)
2025.03.27 17:21:43.693 1: PERL WARNING: Use of uninitialized value $commandStack in concatenation (.) or string at ./FHEM/70_KEBA.pm line 393.
2025.03.27 17:21:43.693 1: stacktrace:
2025.03.27 17:21:43.693 1:     main::__ANON__                      called by ./FHEM/70_KEBA.pm (393)
2025.03.27 17:21:43.693 1:     main::KEBA_GetUpdate                called by fhem.pl (3511)
2025.03.27 17:21:43.693 1:     main::HandleTimeout                 called by fhem.pl (710)
2025.03.27 17:22:43.694 1: PERL WARNING: Use of uninitialized value $commandStack in concatenation (.) or string at ./FHEM/70_KEBA.pm line 393.
2025.03.27 17:22:43.694 1: stacktrace:
2025.03.27 17:22:43.694 1:     main::__ANON__                      called by ./FHEM/70_KEBA.pm (393)
2025.03.27 17:22:43.694 1:     main::KEBA_GetUpdate                called by fhem.pl (3511)
2025.03.27 17:22:43.694 1:     main::HandleTimeout                 called by fhem.pl (710)
2025.03.27 17:23:43.695 1: PERL WARNING: Use of uninitialized value $commandStack in concatenation (.) or string at ./FHEM/70_KEBA.pm line 393.
2025.03.27 17:23:43.695 1: stacktrace:
2025.03.27 17:23:43.695 1:     main::__ANON__                      called by ./FHEM/70_KEBA.pm (393)
2025.03.27 17:23:43.695 1:     main::KEBA_GetUpdate                called by fhem.pl (3511)
2025.03.27 17:23:43.695 1:     main::HandleTimeout                 called by fhem.pl (710)
2025.03.27 17:24:43.697 1: PERL WARNING: Use of uninitialized value $commandStack in concatenation (.) or string at ./FHEM/70_KEBA.pm line 393.
2025.03.27 17:24:43.697 1: stacktrace:
2025.03.27 17:24:43.697 1:     main::__ANON__                      called by ./FHEM/70_KEBA.pm (393)
2025.03.27 17:24:43.697 1:     main::KEBA_GetUpdate                called by fhem.pl (3511)
2025.03.27 17:24:43.697 1:     main::HandleTimeout                 called by fhem.pl (710)
2025.03.27 17:25:43.697 1: PERL WARNING: Use of uninitialized value $commandStack in concatenation (.) or string at ./FHEM/70_KEBA.pm line 393.
2025.03.27 17:25:43.698 1: stacktrace:
2025.03.27 17:25:43.698 1:     main::__ANON__                      called by ./FHEM/70_KEBA.pm (393)
2025.03.27 17:25:43.698 1:     main::KEBA_GetUpdate                called by fhem.pl (3511)
2025.03.27 17:25:43.698 1:     main::HandleTimeout                 called by fhem.pl (710)
2025.03.27 17:26:43.698 1: PERL WARNING: Use of uninitialized value $commandStack in concatenation (.) or string at ./FHEM/70_KEBA.pm line 393.
2025.03.27 17:26:43.698 1: stacktrace:
2025.03.27 17:26:43.698 1:     main::__ANON__                      called by ./FHEM/70_KEBA.pm (393)
2025.03.27 17:26:43.698 1:     main::KEBA_GetUpdate                called by fhem.pl (3511)
2025.03.27 17:26:43.698 1:     main::HandleTimeout                 called by fhem.pl (710)
2025.03.27 17:27:43.699 1: PERL WARNING: Use of uninitialized value $commandStack in concatenation (.) or string at ./FHEM/70_KEBA.pm line 393.
2025.03.27 17:27:43.699 1: stacktrace:
2025.03.27 17:27:43.700 1:     main::__ANON__                      called by ./FHEM/70_KEBA.pm (393)
2025.03.27 17:27:43.700 1:     main::KEBA_GetUpdate                called by fhem.pl (3511)
2025.03.27 17:27:43.700 1:     main::HandleTimeout                 called by fhem.pl (710)

Das Log wird regelrecht zugemüllt.
Titel: Aw: Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: rudolfkoenig am 28 März 2025, 20:24:09
@maci: Welche Version des Moduls verwendet Du?
Die aus Beitrag #100 ist es wohl nicht, und die von dem im ersten Beitrag erwaehnten github Link kann ich nicht herunterladen: "@mschlappa's activity is private".
Kannst Du bitte deine Version hier anhaengen?
Titel: Aw: Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: galbatorix am 07 April 2025, 17:44:30
Hallo zusammen,

ich bin ebenfalls auf Suche nach der letzten Version des Moduls und da der Github Link wie erwähnt nicht mehr funktioniert, wäre es super, wenn mir jemand die letzte Version zur Verfügung stellen könnte?

Vielen Dank und viele Grüße!
Titel: Aw: Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: BirneDe am 19 Mai 2025, 11:33:24
Hallo zusammen,
ich nutze ebenfalls das Modul 70_KEBA.pm für meine KEBA KC-P30 Wallbox.
Auch mich stört, dass das Modul das Logfile (fhem.log) übermäßig füllt.
Wie können die Reports (1-3) deaktiviert, auf Report 1 beschränkt oder die Häufigkeit (aktuell jede Minute) auf ein größeres Intervall verändert werden?

Schon mal vielen Dank für hilfreiche Antworten.

Herzliche Grüße, Mario
Titel: Aw: Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: BirneDe am 10 Juli 2025, 16:51:18
Hallo zusammen,
die Häufigkeit der Reports wird bei der Definition der KEBA festgelegt.
define KEBA KEBA 192.168.xxx.xxx 7090 600
Der letzte Wert ist das Abfrageintervall.

Beste Grüße, Mario
Titel: Aw: Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: NewMatic am 20 Oktober 2025, 13:41:51
Hallo,

ich bin kurz vor dem Kauf einer Keba P30 c serie.
Diese sollte auch mit diesem Modul steuerbar sein? Hat hier jemand zufällig die P30 im Einsatz?


Danke,
Tobi
Titel: Aw: Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: msfox am 03 April 2026, 22:12:35
Ich habe mir von der KI (https://claude.ai) ein Modul generieren lassen.
##############################################################################
# $Id: 98_KebaP30.pm $
#
# 98_KebaP30.pm
#
# FHEM module to control a Keba KeContact P30 wallbox via Modbus TCP
#
# Prerequisites:
#   - FHEM ModbusTCP / ModbusAttr support (98_Modbus.pm, 98_ModbusAttr.pm)
#   - Keba P30 with Modbus TCP enabled (DIP switch DSW1.3 = ON)
#   - Network connectivity to the wallbox on TCP port 502
#
# Usage in FHEM:
#   define myKeba KebaP30 <IP-Address> [<Interval>]
#   Example: define myKeba KebaP30 192.168.1.50 30
#
#   set myKeba chargingCurrent 10000   (in mA, e.g. 10000 = 10A)
#   set myKeba enable 1                (1=enable, 0=disable)
#   set myKeba unlock 0                (0=unlock plug)
#   set myKeba setEnergy 5000          (in 0.1 Wh)
#   set myKeba failsafeCurrent 6000    (in mA)
#   set myKeba failsafeTimeout 60      (in seconds)
#   set myKeba failsafePersist 0       (0 or 1)
#
##############################################################################

package main;

use strict;
use warnings;
use IO::Socket::INET;
use DevIo;

# Modbus Function Codes
use constant FC_READ_HOLDING  => 0x03;
use constant FC_WRITE_SINGLE  => 0x06;

# Keba P30 Modbus Unit ID (must be 255)
use constant KEBA_UNIT_ID => 255;

# Modbus TCP Port
use constant KEBA_PORT => 502;

# Default polling interval in seconds
use constant DEFAULT_INTERVAL => 30;

# ============================================================================
#  Register-Definitionen (Keba P30 Modbus TCP Programmers Guide V1.04)
# ============================================================================

# Lesbare Register (Holding Registers, FC3, UINT32 = 2 Words)
my %readRegisters = (
    'chargingState'     => { addr => 1000, len => 2, type => 'uint32', unit => '',    desc => 'Ladezustand (0=Startup,1=NotReady,2=Ready,3=Charging,4=Error,5=Suspended)' },
    'cableState'        => { addr => 1004, len => 2, type => 'uint32', unit => '',    desc => 'Kabelzustand' },
    'errorCode'         => { addr => 1006, len => 2, type => 'uint32', unit => '',    desc => 'Fehlercode' },
    'currentL1'         => { addr => 1008, len => 2, type => 'uint32', unit => 'mA',  desc => 'Ladestrom Phase 1', factor => 1 },
    'currentL2'         => { addr => 1010, len => 2, type => 'uint32', unit => 'mA',  desc => 'Ladestrom Phase 2', factor => 1 },
    'currentL3'         => { addr => 1012, len => 2, type => 'uint32', unit => 'mA',  desc => 'Ladestrom Phase 3', factor => 1 },
    'serialNumber'      => { addr => 1014, len => 2, type => 'uint32', unit => '',    desc => 'Seriennummer' },
    'productType'       => { addr => 1016, len => 2, type => 'uint32', unit => '',    desc => 'Produkttyp und Features' },
    'firmwareVersion'   => { addr => 1018, len => 2, type => 'uint32', unit => '',    desc => 'Firmware-Version' },
    'activePower'       => { addr => 1020, len => 2, type => 'uint32', unit => 'mW',  desc => 'Aktive Leistung', factor => 1 },
    'totalEnergy'       => { addr => 1036, len => 2, type => 'uint32', unit => '0.1Wh', desc => 'Gesamtenergie', factor => 0.1 },
    'voltageL1'         => { addr => 1040, len => 2, type => 'uint32', unit => 'V',   desc => 'Spannung Phase 1', factor => 1 },
    'voltageL2'         => { addr => 1042, len => 2, type => 'uint32', unit => 'V',   desc => 'Spannung Phase 2', factor => 1 },
    'voltageL3'         => { addr => 1044, len => 2, type => 'uint32', unit => 'V',   desc => 'Spannung Phase 3', factor => 1 },
    'powerFactor'       => { addr => 1046, len => 2, type => 'uint32', unit => '0.1%', desc => 'Leistungsfaktor (cos phi)', factor => 0.1 },
    'maxChargingCurrent'=> { addr => 1100, len => 2, type => 'uint32', unit => 'mA',  desc => 'Max. Ladestrom der Station', factor => 1 },
    'maxSupportedCurr'  => { addr => 1110, len => 2, type => 'uint32', unit => 'mA',  desc => 'Max. unterstuetzter Ladestrom', factor => 1 },
    'rfidCard'          => { addr => 1500, len => 2, type => 'uint32', unit => '',    desc => 'RFID Karten UID' },
    'sessionEnergy'     => { addr => 1502, len => 2, type => 'uint32', unit => '0.1Wh', desc => 'Energie aktuelle Session', factor => 0.1 },
);

# Schreibbare Register (FC6, UINT16 = 1 Word)
my %writeRegisters = (
    'chargingCurrent'   => { addr => 5004, len => 1, type => 'uint16', unit => 'mA',  desc => 'Ladestrom setzen (0 oder 6000-63000 mA)', min => 0, max => 63000 },
    'setEnergy'         => { addr => 5010, len => 1, type => 'uint16', unit => '0.1Wh', desc => 'Energielimit setzen (0=kein Limit)', min => 0, max => 65535 },
    'unlock'            => { addr => 5012, len => 1, type => 'uint16', unit => '',    desc => 'Stecker entriegeln (0=unlock)', min => 0, max => 0 },
    'enable'            => { addr => 5014, len => 1, type => 'uint16', unit => '',    desc => 'Station ein/ausschalten (0=aus, 1=ein)', min => 0, max => 1 },
    'failsafeCurrent'   => { addr => 5016, len => 1, type => 'uint16', unit => 'mA',  desc => 'Failsafe Ladestrom (6000-32000 mA)', min => 6000, max => 32000 },
    'failsafeTimeout'   => { addr => 5018, len => 1, type => 'uint16', unit => 's',   desc => 'Failsafe Timeout (0=deaktiviert, 10-600 s)', min => 0, max => 600 },
    'failsafePersist'   => { addr => 5020, len => 1, type => 'uint16', unit => '',    desc => 'Failsafe persistent speichern (0 oder 1)', min => 0, max => 1 },
);

# ============================================================================
#  FHEM Interface Functions
# ============================================================================

sub KebaP30_Initialize($) {
    my ($hash) = @_;

    $hash->{DefFn}      = "KebaP30_Define";
    $hash->{UndefFn}    = "KebaP30_Undef";
    $hash->{SetFn}      = "KebaP30_Set";
    $hash->{GetFn}      = "KebaP30_Get";
    $hash->{AttrFn}     = "KebaP30_Attr";
    $hash->{NotifyFn}   = "KebaP30_Notify";

    $hash->{AttrList} = "disable:0,1 "
                       . "interval "
                       . "timeout "
                       . $readingFnAttributes;

    return undef;
}

# ----------------------------------------------------------------------------
#  Define: define myKeba KebaP30 <IP> [<Interval>]
# ----------------------------------------------------------------------------
sub KebaP30_Define($$) {
    my ($hash, $def) = @_;
    my @args = split("[ \t]+", $def);

    return "Usage: define <name> KebaP30 <IP-Address> [<Interval>]"
        if (@args < 3 || @args > 4);

    my $name     = $args[0];
    my $ip       = $args[2];
    my $interval = (@args > 3) ? int($args[3]) : DEFAULT_INTERVAL;

    $hash->{HOST}       = $ip;
    $hash->{PORT}       = KEBA_PORT;
    $hash->{UNIT_ID}    = KEBA_UNIT_ID;
    $hash->{INTERVAL}   = $interval;
    $hash->{TRANSID}    = 0;
    $hash->{STATE}      = "initialized";

    # Readings initialisieren
    readingsBeginUpdate($hash);
    readingsBulkUpdate($hash, "state", "initialized");
    readingsEndUpdate($hash, 1);

    # Timer fuer zyklisches Polling starten
    RemoveInternalTimer($hash);
    InternalTimer(gettimeofday() + 5, "KebaP30_Poll", $hash, 0);

    Log3 $name, 3, "KebaP30 ($name): defined with host=$ip interval=${interval}s";

    return undef;
}

# ----------------------------------------------------------------------------
#  Undef
# ----------------------------------------------------------------------------
sub KebaP30_Undef($$) {
    my ($hash, $name) = @_;
    RemoveInternalTimer($hash);
    KebaP30_Disconnect($hash);
    return undef;
}

# ----------------------------------------------------------------------------
#  Notify (z.B. bei INITIALIZED)
# ----------------------------------------------------------------------------
sub KebaP30_Notify($$) {
    my ($hash, $devHash) = @_;
    my $name = $hash->{NAME};

    return if (IsDisabled($name));

    my $events = deviceEvents($devHash, 1);
    return if (!$events);

    foreach my $event (@{$events}) {
        if ($event =~ /^INITIALIZED$/ || $event =~ /^REREADCFG$/) {
            KebaP30_Poll($hash);
        }
    }
    return undef;
}

# ----------------------------------------------------------------------------
#  Attr
# ----------------------------------------------------------------------------
sub KebaP30_Attr(@) {
    my ($cmd, $name, $attrName, $attrVal) = @_;
    my $hash = $defs{$name};

    if ($attrName eq "interval") {
        if ($cmd eq "set") {
            return "interval must be a positive integer" unless ($attrVal =~ /^\d+$/ && $attrVal > 0);
            $hash->{INTERVAL} = $attrVal;
        } else {
            $hash->{INTERVAL} = DEFAULT_INTERVAL;
        }
        RemoveInternalTimer($hash);
        InternalTimer(gettimeofday() + $hash->{INTERVAL}, "KebaP30_Poll", $hash, 0);
    }

    if ($attrName eq "disable") {
        if ($cmd eq "set" && $attrVal) {
            RemoveInternalTimer($hash);
            readingsSingleUpdate($hash, "state", "disabled", 1);
        } else {
            readingsSingleUpdate($hash, "state", "initialized", 1);
            InternalTimer(gettimeofday() + 2, "KebaP30_Poll", $hash, 0);
        }
    }

    return undef;
}

# ============================================================================
#  Set-Befehle
# ============================================================================
sub KebaP30_Set($@) {
    my ($hash, @a) = @_;
    my $name = shift @a;
    my $cmd  = shift @a;
    my $val  = shift @a;

    # Hilfe / Liste der Set-Befehle
    my @cmds = sort keys %writeRegisters;
    return "Unknown argument $cmd, choose one of " . join(" ", @cmds)
        if (!defined($writeRegisters{$cmd}));

    return "$cmd requires a numeric value" unless (defined($val) && $val =~ /^\d+$/);

    my $reg = $writeRegisters{$cmd};

    # Wertbereich pruefen (spezielle Behandlung fuer chargingCurrent: 0 oder 6000-63000)
    if ($cmd eq 'chargingCurrent') {
        return "$cmd: value must be 0 or between 6000 and 63000 mA"
            unless ($val == 0 || ($val >= 6000 && $val <= 63000));
    } elsif ($cmd eq 'failsafeTimeout') {
        return "$cmd: value must be 0 or between 10 and 600"
            unless ($val == 0 || ($val >= 10 && $val <= 600));
    } else {
        return "$cmd: value must be between $reg->{min} and $reg->{max}"
            if ($val < $reg->{min} || $val > $reg->{max});
    }

    # Modbus Write
    my $result = KebaP30_ModbusWrite($hash, $reg->{addr}, $val);

    if (defined($result)) {
        readingsSingleUpdate($hash, "last_set_$cmd", $val, 1);
        Log3 $name, 4, "KebaP30 ($name): set $cmd = $val";
        return undef;
    } else {
        return "KebaP30 ($name): Error writing register $reg->{addr} for $cmd";
    }
}

# ============================================================================
#  Get-Befehle
# ============================================================================
sub KebaP30_Get($@) {
    my ($hash, @a) = @_;
    my $name = shift @a;
    my $cmd  = shift @a;

    my @cmds = sort keys %readRegisters;
    push @cmds, "update";

    return "Unknown argument $cmd, choose one of " . join(" ", @cmds)
        if (!grep { $_ eq $cmd } @cmds);

    if ($cmd eq "update") {
        KebaP30_Poll($hash);
        return "Polling all registers...";
    }

    my $reg = $readRegisters{$cmd};
    my $val = KebaP30_ModbusRead($hash, $reg->{addr}, $reg->{len});

    if (defined($val)) {
        my $factor = $reg->{factor} // 1;
        my $display = ($factor != 1) ? sprintf("%.1f", $val * $factor) : $val;
        my $unit = $reg->{unit} || '';
        return "$cmd: $display $unit";
    } else {
        return "Error reading $cmd from register $reg->{addr}";
    }
}

# ============================================================================
#  Polling (Timer-basiert)
# ============================================================================
sub KebaP30_Poll($) {
    my ($hash) = @_;
    my $name = $hash->{NAME};

    RemoveInternalTimer($hash);

    return if (IsDisabled($name));

    Log3 $name, 5, "KebaP30 ($name): polling registers...";

    readingsBeginUpdate($hash);

    my $errorCount = 0;

    foreach my $reading (sort keys %readRegisters) {
        my $reg = $readRegisters{$reading};
        my $val = KebaP30_ModbusRead($hash, $reg->{addr}, $reg->{len});

        if (defined($val)) {
            my $factor = $reg->{factor} // 1;
            my $display = ($factor != 1) ? sprintf("%.1f", $val * $factor) : $val;
            readingsBulkUpdate($hash, $reading, $display);
        } else {
            $errorCount++;
            Log3 $name, 4, "KebaP30 ($name): Error reading $reading (register $reg->{addr})";
        }
    }

    # Abgeleitete Readings
    my $chargingState = ReadingsVal($name, "chargingState", "");
    my %stateMap = (
        0 => "startup",
        1 => "not_ready",
        2 => "ready",
        3 => "charging",
        4 => "error",
        5 => "suspended",
    );
    my $stateText = $stateMap{$chargingState} // "unknown ($chargingState)";
    readingsBulkUpdate($hash, "chargingStateText", $stateText);

    # Leistung in kW
    my $powerMw = ReadingsVal($name, "activePower", 0);
    if ($powerMw =~ /^\d+$/) {
        readingsBulkUpdate($hash, "activePower_kW", sprintf("%.3f", $powerMw / 1000000));
    }

    # Gesamtenergie in kWh
    my $totalE = ReadingsVal($name, "totalEnergy", 0);
    if ($totalE =~ /^[\d.]+$/) {
        readingsBulkUpdate($hash, "totalEnergy_kWh", sprintf("%.3f", $totalE / 1000));
    }

    # Session-Energie in kWh
    my $sessE = ReadingsVal($name, "sessionEnergy", 0);
    if ($sessE =~ /^[\d.]+$/) {
        readingsBulkUpdate($hash, "sessionEnergy_kWh", sprintf("%.3f", $sessE / 1000));
    }

    if ($errorCount == 0) {
        readingsBulkUpdate($hash, "state", "connected");
    } else {
        readingsBulkUpdate($hash, "state", "polling_errors: $errorCount");
    }

    readingsEndUpdate($hash, 1);

    # Naechsten Poll-Zyklus einplanen
    my $interval = $hash->{INTERVAL} || DEFAULT_INTERVAL;
    InternalTimer(gettimeofday() + $interval, "KebaP30_Poll", $hash, 0);

    return undef;
}

# ============================================================================
#  Modbus TCP Kommunikation
# ============================================================================

sub KebaP30_Connect($) {
    my ($hash) = @_;
    my $name = $hash->{NAME};
    my $host = $hash->{HOST};
    my $port = $hash->{PORT};
    my $timeout = AttrVal($name, "timeout", 3);

    my $sock = IO::Socket::INET->new(
        PeerAddr => $host,
        PeerPort => $port,
        Proto    => 'tcp',
        Timeout  => $timeout,
    );

    if (!$sock) {
        Log3 $name, 2, "KebaP30 ($name): Cannot connect to $host:$port - $!";
        return undef;
    }

    $sock->autoflush(1);
    Log3 $name, 4, "KebaP30 ($name): Connected to $host:$port";
    return $sock;
}

sub KebaP30_Disconnect($) {
    my ($hash) = @_;
    if ($hash->{SOCKET}) {
        close($hash->{SOCKET});
        delete $hash->{SOCKET};
    }
}

# Naechste Transaction-ID
sub KebaP30_NextTransId($) {
    my ($hash) = @_;
    $hash->{TRANSID} = ($hash->{TRANSID} + 1) & 0xFFFF;
    return $hash->{TRANSID};
}

# ----------------------------------------------------------------------------
#  Modbus Read (FC3) - Liest ein UINT32 (2 Register) oder UINT16 (1 Register)
# ----------------------------------------------------------------------------
sub KebaP30_ModbusRead($$$) {
    my ($hash, $addr, $len) = @_;
    my $name = $hash->{NAME};

    my $sock = KebaP30_Connect($hash);
    return undef unless $sock;

    my $transId = KebaP30_NextTransId($hash);
    my $unitId  = KEBA_UNIT_ID;

    # Modbus TCP ADU: TransID(2) + ProtocolID(2) + Length(2) + UnitID(1) + FC(1) + Addr(2) + Qty(2)
    my $request = pack("nnnCCnn",
        $transId,           # Transaction ID
        0,                  # Protocol ID (Modbus)
        6,                  # Length (UnitID + FC + Addr + Qty = 6 bytes)
        $unitId,            # Unit ID
        FC_READ_HOLDING,    # Function Code 3
        $addr,              # Starting Register Address
        $len                # Quantity of Registers
    );

    my $written = $sock->send($request);
    if (!$written) {
        Log3 $name, 2, "KebaP30 ($name): Send error for register $addr";
        close($sock);
        return undef;
    }

    # Antwort lesen (max. 256 Bytes, Timeout beachten)
    my $timeout = AttrVal($name, "timeout", 3);
    my $rin = '';
    vec($rin, fileno($sock), 1) = 1;
    my $nfound = select($rin, undef, undef, $timeout);

    if ($nfound <= 0) {
        Log3 $name, 2, "KebaP30 ($name): Timeout reading register $addr";
        close($sock);
        return undef;
    }

    my $response = '';
    $sock->recv($response, 256);
    close($sock);

    if (length($response) < 9) {
        Log3 $name, 2, "KebaP30 ($name): Short response for register $addr (" . length($response) . " bytes)";
        return undef;
    }

    # Antwort parsen
    my ($rTransId, $rProtoId, $rLen, $rUnitId, $rFC, $byteCount) = unpack("nnnCCC", $response);

    # Fehlercode pruefen (FC + 0x80)
    if ($rFC & 0x80) {
        my $exCode = unpack("C", substr($response, 8, 1));
        Log3 $name, 2, "KebaP30 ($name): Modbus exception $exCode for register $addr";
        return undef;
    }

    # Datenbytes extrahieren
    my $data = substr($response, 9);

    if ($len == 2 && length($data) >= 4) {
        # UINT32: Big-Endian, 2 Register = 4 Bytes
        return unpack("N", $data);
    } elsif ($len == 1 && length($data) >= 2) {
        # UINT16: Big-Endian, 1 Register = 2 Bytes
        return unpack("n", $data);
    }

    Log3 $name, 2, "KebaP30 ($name): Unexpected data length for register $addr";
    return undef;
}

# ----------------------------------------------------------------------------
#  Modbus Write Single Register (FC6) - Schreibt UINT16
# ----------------------------------------------------------------------------
sub KebaP30_ModbusWrite($$$) {
    my ($hash, $addr, $value) = @_;
    my $name = $hash->{NAME};

    my $sock = KebaP30_Connect($hash);
    return undef unless $sock;

    my $transId = KebaP30_NextTransId($hash);
    my $unitId  = KEBA_UNIT_ID;

    # Modbus TCP ADU: TransID(2) + ProtocolID(2) + Length(2) + UnitID(1) + FC(1) + Addr(2) + Value(2)
    my $request = pack("nnnCCnn",
        $transId,           # Transaction ID
        0,                  # Protocol ID
        6,                  # Length
        $unitId,            # Unit ID
        FC_WRITE_SINGLE,    # Function Code 6
        $addr,              # Register Address
        $value              # Value
    );

    my $written = $sock->send($request);
    if (!$written) {
        Log3 $name, 2, "KebaP30 ($name): Send error writing register $addr";
        close($sock);
        return undef;
    }

    # Antwort lesen
    my $timeout = AttrVal($name, "timeout", 3);
    my $rin = '';
    vec($rin, fileno($sock), 1) = 1;
    my $nfound = select($rin, undef, undef, $timeout);

    if ($nfound <= 0) {
        Log3 $name, 2, "KebaP30 ($name): Timeout writing register $addr";
        close($sock);
        return undef;
    }

    my $response = '';
    $sock->recv($response, 256);
    close($sock);

    if (length($response) < 12) {
        Log3 $name, 2, "KebaP30 ($name): Short write response for register $addr";
        return undef;
    }

    my ($rTransId, $rProtoId, $rLen, $rUnitId, $rFC) = unpack("nnnCC", $response);

    if ($rFC & 0x80) {
        my $exCode = unpack("C", substr($response, 8, 1));
        Log3 $name, 2, "KebaP30 ($name): Modbus write exception $exCode for register $addr";
        return undef;
    }

    Log3 $name, 4, "KebaP30 ($name): Wrote value $value to register $addr";
    return 1;
}

1;

# ============================================================================
#  Commandref-Dokumentation (fuer FHEM)
# ============================================================================

=pod

=item device
=item summary    Keba KeContact P30 Wallbox via Modbus TCP
=item summary_DE Keba KeContact P30 Wallbox ueber Modbus TCP steuern

=begin html

<a name="KebaP30"></a>
<h3>KebaP30</h3>
<ul>
  FHEM module to monitor and control a Keba KeContact P30 wallbox via Modbus TCP.<br>
  The wallbox must have Modbus TCP enabled (DIP switch DSW1.3 = ON).<br><br>

  <a name="KebaP30define"></a>
  <b>Define</b>
  <ul>
    <code>define &lt;name&gt; KebaP30 &lt;IP-Address&gt; [&lt;Interval&gt;]</code><br><br>
    Example: <code>define myKeba KebaP30 192.168.1.50 30</code><br>
    Interval is the polling interval in seconds (default: 30).
  </ul><br>

  <a name="KebaP30set"></a>
  <b>Set</b>
  <ul>
    <li><b>chargingCurrent</b> &lt;mA&gt; - Set charging current (0 or 6000-63000 mA)</li>
    <li><b>enable</b> &lt;0|1&gt; - Enable (1) or disable (0) charging station</li>
    <li><b>unlock</b> 0 - Unlock the charging plug</li>
    <li><b>setEnergy</b> &lt;0.1Wh&gt; - Set energy limit (0 = no limit)</li>
    <li><b>failsafeCurrent</b> &lt;mA&gt; - Failsafe current (6000-32000 mA)</li>
    <li><b>failsafeTimeout</b> &lt;s&gt; - Failsafe timeout (0=off, 10-600 s)</li>
    <li><b>failsafePersist</b> &lt;0|1&gt; - Persist failsafe settings</li>
  </ul><br>

  <a name="KebaP30get"></a>
  <b>Get</b>
  <ul>
    <li><b>update</b> - Force immediate polling of all registers</li>
    <li><b>chargingState</b> - Current charging state</li>
    <li><b>cableState</b> - Cable connection state</li>
    <li><b>errorCode</b> - Error code</li>
    <li><b>currentL1/L2/L3</b> - Charging current per phase (mA)</li>
    <li><b>voltageL1/L2/L3</b> - Voltage per phase (V)</li>
    <li><b>activePower</b> - Active power (mW)</li>
    <li><b>totalEnergy</b> - Total charged energy</li>
    <li><b>sessionEnergy</b> - Energy of current session</li>
    <li><b>powerFactor</b> - Power factor (cos phi)</li>
    <li><b>serialNumber</b> - Serial number</li>
    <li><b>firmwareVersion</b> - Firmware version</li>
    <li>... and more (see register definitions)</li>
  </ul><br>

  <a name="KebaP30readings"></a>
  <b>Readings</b>
  <ul>
    All readable registers are available as readings. Additional computed readings:
    <li><b>chargingStateText</b> - Human-readable charging state</li>
    <li><b>activePower_kW</b> - Active power in kW</li>
    <li><b>totalEnergy_kWh</b> - Total energy in kWh</li>
    <li><b>sessionEnergy_kWh</b> - Session energy in kWh</li>
  </ul><br>

  <a name="KebaP30attr"></a>
  <b>Attributes</b>
  <ul>
    <li><b>interval</b> - Polling interval in seconds (default: 30)</li>
    <li><b>timeout</b> - Connection timeout in seconds (default: 3)</li>
    <li><b>disable</b> - Disable the device (0|1)</li>
  </ul>
</ul>

=end html

=cut


Die Doku dazu:
ZitatInstallation & Nutzung:
Die Datei als 98_KebaP30.pm ins FHEM-Modulverzeichnis (üblicherweise /opt/fhem/FHEM/) legen, dann in FHEM:
reload 98_KebaP30.pm
define myKeba KebaP30 192.168.1.50 30
Einige Hinweise zur Keba P30:

Der TCP-Port 502 ist reserviert und die Unit ID muss auf 255 gesetzt sein Wallbox Center – das ist im Modul bereits korrekt konfiguriert.
Modbus TCP wird über den DIP-Schalter DSW1.3 auf der Platine aktiviert TapHome, danach muss die Wallbox neu gestartet werden.
Es ist nicht möglich, mehrere Register gleichzeitig zu lesen – die maximale Leselänge beträgt 2 Words Wallbox Center, weshalb das Modul jedes Register einzeln abfragt.
Das empfohlene Timing-Intervall zum Lesen beträgt mindestens 0,5 Sekunden Wallbox Center – das Modul hält dies durch sequenzielles Lesen automatisch ein.

Mein erster Test damit:
- Es verbindet sich mit meiner Wallbox und liest auch Werte aus.
- Ich konnte den Ladestrom auf 6A setzen.

Bevor ich jetzte weiter teste, kann mal jemand über das Coding schauen, ob das überhaupt Sinn macht?
Ich traue den KI's noch nicht. Zumindest in ABAP (SAP Coding) kommt da z.T. nur Mist raus. Hier scheint es aber funktioniert zu haben.
Titel: Aw: Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: rudolfkoenig am 04 April 2026, 13:09:34
Ich habe es mal ueberflogen.
Achtung: von dem verwendeten Protokoll habe ich keine Ahnung.

Zusammengefasst: das Modul funkioniert vermutlich im Normalfall.
Wenn das Geraet nicht erreichbar ist, dann wird FHEM fuer 19*3 Sekunden blockiert, nach 30 Sekunden dann wieder, usw.

Im Einzelnen:
- den Sinn der Funktion KebaP30_Notify habe ich nicht verstanden, ich wuerde es entfernen, samt den Hinweis darauf in KebaP30_Initialize
- KebaP30_Disconnect ist sicher sinnlos: $hash->{SOCKET} wird nie gesetzt.
- fuer die Abfrage wird IO::Socket::INET verwendet, was FHEM blockieren kann. Richtig waere DevIO_OpenDev im Define und ein ReadyFn, um bei Abbruch die Verbindung neu aufzumachen.
- die Verbindung wird fuer jeden Lese- oder Schreibvorgang neu aufgemacht, das sollte man cachen, wenn man schon kein DevIO_OpenDev haben will. Dann koennte auch KebaP30_Disconnect was Sinnvolles tun.
- der Hinweis auf "FHEM ModbusTCP" ist sinnlos, genauso wie das "use DevIo", beides wird nicht verwendet

Interessant zu sehen, dass:
- manchmal readingsBeginUpdate+BulkUpdate+EndUpdate verwendet wird, manchmal das einfacher lesbare readingsSingleUpdate.
- Variablen in $hash/%readRegisters gesetzt werden (interval , UNIT_ID, factor), um spaeter im Code doch die Konstanten zu verwenden.
- es dokumentiert jeden einzelnen Register in $readRegisters->desc, um es dann nicht zu verwenden.
Titel: Aw: Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: msfox am 04 April 2026, 19:55:01
Erst einmal VIELEN DANK für das Analysieren. Wie gesagt, ich kenne mich zwar in ABAP, Java aus, aber bei FHEM-Modulen hört es dann auch. Trotzdem brauche ich aber eine Funktion, für die Wallbox.
Das grobe Gerüst habe ich ja nun und werden versuchen, deine Anmerkungen einzupflegen - möglichst ohne die KI.
Einfacher wäre natürlich, wenn der TE oder wer auch immer den Code für das Modul hier aus dem Thread noch hätte.
--
Ich war ja nun hier wirklich Unerfahrener. Auf Kurz oder Lang soll aber die KI Coding übernehmen und die Firmen verzichten schon auf Juniorentwickler. In ABAP kann ich den Mist der KI kontrollieren und wie ich sehen, hat es auch hier nicht 100% geklappt, dass die KI was vernünftiges liefert. Was wird erst, wenn das keine mehr kontrolliert :(.

Titel: Aw: Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: msfox am 05 April 2026, 10:37:05
Da das mit der KI nicht so 100% funktioniert, habe ich mal das Module 98_Pluggit.pm genommen. Dies scheint ja auf den Beispielen https://wiki.fhem.de/wiki/Modbus zu basieren. Damit wäre es einheitlich zu anderen Modulen und nicht irgendwas KI-generiertes.
D.h. wenn ich mein 98_KebaP30.pm auf die Logik gemäß Anleitung umstelle, sollte ich ich die genannten Problem nicht haben?
Das Coding sieht auch deutlich kürzer aus, als das von der KI.
Der Aufbau der Verbindung zur Wallbox läuft dann sicher analog.
--
Entscheidend ist am Ende also das Mapping:
Beispiel
my %XYparseInfo = (
    "h256"  =>  {   reading => "Temp_Wasser_Ein",   # name of the reading for this value
                },
    "h258"  =>  {   reading => "Temp_Wasser_Aus",
                },

KI-Code
my %readRegisters = (
    'chargingState'     => { addr => 1000, len => 2, type => 'uint32', unit => '',    desc => 'Ladezustand (0=Startup,1=NotReady,2=Ready,3=Charging,4=Error,5=Suspended)' },
    'cableState'        => { addr => 1004, len => 2, type => 'uint32', unit => '',    desc => 'Kabelzustand' },
Code vom PlugIt-Modul
my %PluggitparseInfo = (
    "h472" =>  {  reading => "CurrentUnitMode",        # name of the reading for this value
                    name    => "prmCurrentBLState",               # internal name of this register in the hardware doc
                    min     => 0,                  # input validation for set: min value
                    max     => 4,                  # input validation for set: max value
                    len     => 2,


Wofür ist denn das "h472","h256", "h258"? Das sind noch nicht die Namen von der Hardware?
Bei Pluggit-Modul ist Name = "prmCurrentBLState", Muss ich bei der Keba dafür "1000" bzw. "1004" nehmen? Also ist das die Adresse vom Modbus?
Titel: Aw: Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: rudolfkoenig am 06 April 2026, 12:24:57
ZitatD.h. wenn ich mein 98_KebaP30.pm auf die Logik gemäß Anleitung umstelle, sollte ich ich die genannten Problem nicht haben?
Ich kenne das Modbus Modul nicht, aber ein erster Blick zeigt, dass es die "richtigen" Funktionen verwendet.
Weiterhin wird das Modbus Modul in FHEM Umfeld haeufig verwendet, das waere auch ein Argument dafuer.

Die Zeile
    require "$attr{global}{modpath}/FHEM/DevIo.pm";
ist im 98_Pluggit.pm ueberfluessig.
Titel: Aw: Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: msfox am 06 April 2026, 19:53:36
ZitatDie Zeile...ist im 98_Pluggit.pm ueberfluessig.
Das steht so im Wiki (https://wiki.fhem.de/wiki/Modbus)
Das war nur als Beispiel. Das Modul nutze ich nur...
--
Ich muss zugeben, ich habe mir die neue .pm-Datei auch wieder via KI generieren lassen. Der KI einfach die Anweisung gegeben, das Coding gemäß fhem-Wiki (URL) zu erstellen.
Ergebnis, was bei mir aktuell auch läuft:

(Irgendwie finde ich nicht, wie man Dateien hier im Forum hochladen kann)
##############################################################################
# $Id: 98_KebaP30.pm $
#
# 98_KebaP30.pm
#
# FHEM module to control a Keba KeContact P30 wallbox via Modbus TCP.
# Based on the 98_Modbus.pm library (parseInfo / deviceInfo structure).
#
# Prerequisites:
#   - 98_Modbus.pm must be present in the FHEM installation
#   - Keba P30 with Modbus TCP enabled (DIP switch DSW1.3 = ON)
#   - Network connectivity to the wallbox on TCP port 502
#
# Define (Modbus TCP):
#   define <name> KebaP30 <Interval> <IP>:502 TCP
#
# Example:
#   define myKeba KebaP30 30 192.168.1.50:502 TCP
#
# Notes:
#   - Keba P30 requires Unit ID 255 (set via attr <name> dev-h-defPoll 1)
#   - Supported Modbus function codes: FC3 (Read) and FC6 (Write)
#   - Registers cannot be read in bulk; combine is set to 1
#   - Recommended polling interval >= 0.5s per register
#
# Register reference:
#   Keba KeContact P30 Modbus TCP Programmers Guide V1.04
#
##############################################################################

package main;

use strict;
use warnings;

# ============================================================================
#  parseInfo: Mapping Modbus-Register -> FHEM Readings
#
#  Keba P30 uses Holding Registers (FC3 read, FC6 write)
#  - Readable registers: address 1000-1502, UINT32 (len=2)
#  - Writable registers: address 5004-5020, UINT16 (len=1)
#  - Unit ID must be 255
#  - Register address count starts at 0
# ============================================================================

my %KebaP30parseInfo = (

    # -----------------------------------------------------------------------
    #  Lesbare Register (UINT32, 2 Register = 4 Bytes, Big Endian)
    # -----------------------------------------------------------------------

    # 1000 - Charging state
    "h1000" => {
        reading     => "chargingState",
        name        => "State",
        len         => 2,
        unpack      => "N",             # UINT32 Big Endian
        poll        => 1,
        showget     => 1,
        map         => "0:startup, 1:not_ready, 2:ready, 3:charging, 4:error, 5:suspended",
    },

    # 1004 - Cable state
    "h1004" => {
        reading     => "cableState",
        name        => "Cable",
        len         => 2,
        unpack      => "N",
        poll        => 1,
        showget     => 1,
        map         => "0:no_cable, 1:cable_no_car, 3:cable_locked_no_car, 5:cable_locked_car, 7:cable_locked_car_ok",
    },

    # 1006 - Error code
    "h1006" => {
        reading     => "errorCode",
        name        => "Error",
        len         => 2,
        unpack      => "N",
        poll        => 1,
        showget     => 1,
    },

    # 1008 - Charging current phase 1 (mA)
    "h1008" => {
        reading     => "currentL1",
        name        => "CurrL1",
        len         => 2,
        unpack      => "N",
        expr        => '$val / 1000',       # mA -> A
        format      => '%.3f',
        poll        => 1,
        showget     => 1,
    },

    # 1010 - Charging current phase 2 (mA)
    "h1010" => {
        reading     => "currentL2",
        name        => "CurrL2",
        len         => 2,
        unpack      => "N",
        expr        => '$val / 1000',
        format      => '%.3f',
        poll        => 1,
        showget     => 1,
    },

    # 1012 - Charging current phase 3 (mA)
    "h1012" => {
        reading     => "currentL3",
        name        => "CurrL3",
        len         => 2,
        unpack      => "N",
        expr        => '$val / 1000',
        format      => '%.3f',
        poll        => 1,
        showget     => 1,
    },

    # 1014 - Serial number
    "h1014" => {
        reading     => "serialNumber",
        name        => "Serial",
        len         => 2,
        unpack      => "N",
        poll        => "once",
        showget     => 1,
    },

    # 1016 - Product type and features
    "h1016" => {
        reading     => "productType",
        name        => "ProdType",
        len         => 2,
        unpack      => "N",
        poll        => "once",
        showget     => 1,
    },

    # 1018 - Firmware version (decimal, convert to hex to read)
    "h1018" => {
        reading     => "firmwareVersion",
        name        => "FWVersion",
        len         => 2,
        unpack      => "N",
        expr        => 'sprintf("%x", $val)',   # Dezimal -> Hex-String
        poll        => "once",
        showget     => 1,
    },

    # 1020 - Active power (mW)
    "h1020" => {
        reading     => "activePower",
        name        => "Power",
        len         => 2,
        unpack      => "N",
        expr        => '$val / 1000000',        # mW -> kW
        format      => '%.3f',
        poll        => 1,
        showget     => 1,
    },

    # 1036 - Total energy (0.1 Wh)
    "h1036" => {
        reading     => "totalEnergy",
        name        => "TotalEnergy",
        len         => 2,
        unpack      => "N",
        expr        => '$val / 10000',           # 0.1Wh -> kWh
        format      => '%.3f',
        poll        => 1,
        showget     => 1,
    },

    # 1040 - Voltage phase 1 (V)
    "h1040" => {
        reading     => "voltageL1",
        name        => "VoltL1",
        len         => 2,
        unpack      => "N",
        poll        => 1,
        showget     => 1,
    },

    # 1042 - Voltage phase 2 (V)
    "h1042" => {
        reading     => "voltageL2",
        name        => "VoltL2",
        len         => 2,
        unpack      => "N",
        poll        => 1,
        showget     => 1,
    },

    # 1044 - Voltage phase 3 (V)
    "h1044" => {
        reading     => "voltageL3",
        name        => "VoltL3",
        len         => 2,
        unpack      => "N",
        poll        => 1,
        showget     => 1,
    },

    # 1046 - Power factor (cos phi, in 0.1%)
    "h1046" => {
        reading     => "powerFactor",
        name        => "CosPhi",
        len         => 2,
        unpack      => "N",
        expr        => '$val / 10',             # 0.1% -> %
        format      => '%.1f',
        poll        => 1,
        showget     => 1,
    },

    # 1100 - Max charging current of the station (mA)
    "h1100" => {
        reading     => "maxChargingCurrent",
        name        => "MaxCurr",
        len         => 2,
        unpack      => "N",
        expr        => '$val / 1000',           # mA -> A
        format      => '%.1f',
        poll        => "once",
        showget     => 1,
    },

    # 1110 - Max supported current (mA)
    "h1110" => {
        reading     => "maxSupportedCurrent",
        name        => "MaxSupCurr",
        len         => 2,
        unpack      => "N",
        expr        => '$val / 1000',
        format      => '%.1f',
        poll        => "once",
        showget     => 1,
    },

    # 1500 - RFID card UID
    "h1500" => {
        reading     => "rfidCard",
        name        => "RFID",
        len         => 2,
        unpack      => "N",
        expr        => 'sprintf("%08X", $val)',  # als Hex-String
        poll        => 1,
        showget     => 1,
    },

    # 1502 - Session energy (0.1 Wh)
    "h1502" => {
        reading     => "sessionEnergy",
        name        => "SessEnergy",
        len         => 2,
        unpack      => "N",
        expr        => '$val / 10000',           # 0.1Wh -> kWh
        format      => '%.3f',
        poll        => 1,
        showget     => 1,
    },

    # -----------------------------------------------------------------------
    #  Schreibbare Register (UINT16, 1 Register, FC6)
    # -----------------------------------------------------------------------

    # 5004 - Set charging current (mA, 0 or 6000-63000)
    "h5004" => {
        reading     => "setChargingCurrent",
        name        => "SetCurr",
        len         => 1,
        unpack      => "n",             # UINT16 Big Endian
        set         => 1,
        min         => 0,
        max         => 63000,
        hint        => "0,6000,8000,10000,13000,16000,20000,25000,32000",
        poll        => 0,
    },

    # 5010 - Set energy limit (0.1 Wh, 0 = no limit)
    "h5010" => {
        reading     => "setEnergy",
        name        => "SetEnergy",
        len         => 1,
        unpack      => "n",
        set         => 1,
        min         => 0,
        max         => 65535,
        poll        => 0,
    },

    # 5012 - Unlock plug (0 = unlock)
    "h5012" => {
        reading     => "unlock",
        name        => "Unlock",
        len         => 1,
        unpack      => "n",
        set         => 1,
        min         => 0,
        max         => 0,
        hint        => "0:unlock",
        poll        => 0,
    },

    # 5014 - Enable/Disable station (0 = disable, 1 = enable)
    "h5014" => {
        reading     => "enableStation",
        name        => "Enable",
        len         => 1,
        unpack      => "n",
        set         => 1,
        min         => 0,
        max         => 1,
        map         => "0:disable, 1:enable",
        poll        => 0,
    },

    # 5016 - Failsafe current (mA, 6000-32000)
    "h5016" => {
        reading     => "failsafeCurrent",
        name        => "FsCurr",
        len         => 1,
        unpack      => "n",
        set         => 1,
        min         => 6000,
        max         => 32000,
        poll        => 0,
    },

    # 5018 - Failsafe timeout (s, 0 = off, 10-600)
    "h5018" => {
        reading     => "failsafeTimeout",
        name        => "FsTimeout",
        len         => 1,
        unpack      => "n",
        set         => 1,
        min         => 0,
        max         => 600,
        poll        => 0,
    },

    # 5020 - Failsafe persist (0 or 1)
    "h5020" => {
        reading     => "failsafePersist",
        name        => "FsPersist",
        len         => 1,
        unpack      => "n",
        set         => 1,
        min         => 0,
        max         => 1,
        map         => "0:no, 1:yes",
        poll        => 0,
    },

    # 5050 - Phase switch toggle (0 = 1-phase, 1 = 3-phase)
    #        Requires external contactor (e.g. Keba S10) on X2 contact.
    #        Only available on x-series / firmware supporting V1.04+.
    "h5050" => {
        reading     => "phaseSwitchToggle",
        name        => "PhaseToggle",
        len         => 1,
        unpack      => "n",
        set         => 1,
        min         => 0,
        max         => 1,
        map         => "0:1-phase, 1:3-phase",
        poll        => 0,
    },

    # 5052 - Trigger phase switch
    #        Writing 1 triggers the actual phase switch.
    #        Charging must be stopped before switching.
    #        Requires external contactor on X2 contact.
    "h5052" => {
        reading     => "phaseSwitchTrigger",
        name        => "PhaseTrigger",
        len         => 1,
        unpack      => "n",
        set         => 1,
        min         => 1,
        max         => 1,
        hint        => "1:trigger",
        poll        => 0,
    },
);

# ============================================================================
#  deviceInfo: Geraete-Defaults und Timing
#
#  Keba P30 Besonderheiten:
#  - Unit ID = 255
#  - Nur Holding Registers (FC3 lesen, FC6 schreiben)
#  - Kein Bulk-Read moeglich (combine = 1)
#  - Min. 0.5s zwischen Lesevorgaengen
# ============================================================================

my %KebaP30deviceInfo = (
    "timing" => {
        timeout     => 3,           # 3 Sekunden Timeout
        commDelay   => 0.7,         # 0.7s Pause zwischen Kommunikation
        sendDelay   => 0.7,         # 0.7s Pause zwischen Sende-Vorgaengen
    },
    "h" => {                        # Holding Registers
        read        => 3,           # FC3 (Read Holding Registers)
        write       => 6,           # FC6 (Write Single Register)
        combine     => 1,           # Kein Bulk-Read, nur einzeln!
        defLen      => 2,           # Default: UINT32 = 2 Register
        defUnpack   => "N",         # Default: UINT32 Big Endian unsigned
        defPoll     => 1,           # Default: alle Register pollen
        defShowGet  => 1,           # Default: Get in FHEMWEB anzeigen
    },
);

# ============================================================================
#  Initialize: Modul bei FHEM registrieren
# ============================================================================

sub KebaP30_Initialize($) {
    my ($modHash) = @_;

    # Modbus-Basismodul laden
    LoadModule "Modbus";
    require "$attr{global}{modpath}/FHEM/DevIo.pm";

    # parseInfo und deviceInfo zuweisen
    $modHash->{parseInfo}  = \%KebaP30parseInfo;
    $modHash->{deviceInfo} = \%KebaP30deviceInfo;

    # Generische Modbus-Initialisierung (setzt DefFn, SetFn, GetFn, etc.)
    ModbusLD_Initialize($modHash);

    # Attribute: Standard + ObjAttr (pro Register) + DevAttr (Geraete-Defaults)
    $modHash->{AttrList} = $modHash->{AttrList} . " " .
        $modHash->{ObjAttrList} . " " .
        $modHash->{DevAttrList} . " " .
        "disable:0,1 ";
}

1;

# ============================================================================
#  Commandref-Dokumentation
# ============================================================================

=pod

=item device
=item summary    Keba KeContact P30 Wallbox via Modbus TCP
=item summary_DE Keba KeContact P30 Wallbox ueber Modbus TCP steuern

=begin html

<a id="KebaP30"></a>
<h3>KebaP30</h3>
<ul>
  FHEM module to monitor and control a Keba KeContact P30 wallbox
  via Modbus TCP. Uses the 98_Modbus.pm base module as a library.<br><br>

  The wallbox must have Modbus TCP enabled (DIP switch DSW1.3 = ON).<br>
  The Keba P30 requires Modbus Unit ID 255 and uses TCP port 502.<br><br>

  <a name="KebaP30define"></a>
  <b>Define</b>
  <ul>
    <code>define &lt;name&gt; KebaP30 255 &lt;Interval&gt; &lt;IP&gt;:502 TCP</code><br><br>
    <ul>
      <li>255 = Modbus Unit ID (required by Keba P30)</li>
      <li>Interval = polling interval in seconds (e.g. 30)</li>
      <li>IP:502 = IP address and Modbus TCP port</li>
      <li>TCP = Modbus TCP mode</li>
    </ul><br>
    Example:<br>
    <code>define myKeba KebaP30 255 30 192.168.1.50:502 TCP</code><br>
  </ul><br>

  <a name="KebaP30set"></a>
  <b>Set</b>
  <ul>
    <li><b>setChargingCurrent</b> &lt;mA&gt; - Charging current
        (0=stop or 6000-63000 mA)</li>
    <li><b>enableStation</b> enable|disable - Enable or disable station</li>
    <li><b>unlock</b> unlock - Unlock the charging plug</li>
    <li><b>setEnergy</b> &lt;0.1Wh&gt; - Energy limit (0=no limit)</li>
    <li><b>failsafeCurrent</b> &lt;mA&gt; - Failsafe current (6000-32000)</li>
    <li><b>failsafeTimeout</b> &lt;s&gt; - Failsafe timeout (0=off, 10-600)</li>
    <li><b>failsafePersist</b> no|yes - Persist failsafe settings</li>
    <li><b>phaseSwitchToggle</b> 1-phase|3-phase - Select phase mode
        (requires external contactor on X2)</li>
    <li><b>phaseSwitchTrigger</b> trigger - Execute the phase switch
        (charging must be stopped first)</li>
  </ul><br>

  <a name="KebaP30readings"></a>
  <b>Readings (active during polling)</b>
  <ul>
    <li><b>chargingState</b> - Charging state (startup/not_ready/ready/
        charging/error/suspended)</li>
    <li><b>cableState</b> - Cable connection state</li>
    <li><b>errorCode</b> - Error code (0 = no error)</li>
    <li><b>currentL1/L2/L3</b> - Charging current per phase (A)</li>
    <li><b>voltageL1/L2/L3</b> - Voltage per phase (V)</li>
    <li><b>activePower</b> - Active power (kW)</li>
    <li><b>totalEnergy</b> - Total charged energy (kWh)</li>
    <li><b>sessionEnergy</b> - Energy of current session (kWh)</li>
    <li><b>powerFactor</b> - Power factor / cos phi (%)</li>
    <li><b>maxChargingCurrent</b> - Max charging current (A)</li>
    <li><b>maxSupportedCurrent</b> - Max supported current (A)</li>
    <li><b>serialNumber</b> - Serial number (polled once)</li>
    <li><b>productType</b> - Product type (polled once)</li>
    <li><b>firmwareVersion</b> - Firmware version as hex (polled once)</li>
    <li><b>rfidCard</b> - Last RFID card UID</li>
  </ul><br>

  <a name="KebaP30attr"></a>
  <b>Attributes</b>
  <ul>
    Standard attributes from the Modbus base module are available.<br>
    Per-register overrides are possible via obj-hXXXX-* attributes.<br>
    Device defaults can be modified via dev-* attributes.<br><br>
    <li><b>disable</b> 0|1 - Disable the device</li>
  </ul><br>

  <b>Notes</b>
  <ul>
    <li>The Keba P30 does not support reading multiple registers at once
        (combine is set to 1).</li>
    <li>Static values (serial, firmware, product type, max currents) are
        polled only once to reduce bus load.</li>
    <li>Voltages may read 0 when no vehicle is connected/charging.</li>
    <li>The minimum charging current is 6A (6000 mA). Below 6A the Keba
        automatically switches from 3-phase to 1-phase.</li>
    <li>To stop charging, set setChargingCurrent to 0.</li>
  </ul>
</ul>

=end html

=begin html_DE

<a id="KebaP30"></a>
<h3>KebaP30</h3>
<ul>
  FHEM-Modul zur Ueberwachung und Steuerung einer Keba KeContact P30
  Wallbox ueber Modbus TCP. Nutzt das 98_Modbus.pm Basismodul.<br><br>

  Voraussetzungen:<br>
  <ul>
    <li>Modbus TCP an der Wallbox aktiviert (DIP-Schalter DSW1.3 = ON)</li>
    <li>Netzwerkverbindung zur Wallbox auf TCP Port 502</li>
  </ul><br>

  <a name="KebaP30define"></a>
  <b>Define</b>
  <ul>
    <code>define &lt;name&gt; KebaP30 255 &lt;Interval&gt; &lt;IP&gt;:502 TCP</code><br><br>
    Beispiel:<br>
    <code>define myKeba KebaP30 255 30 192.168.1.50:502 TCP</code><br>
  </ul><br>

  <a name="KebaP30set"></a>
  <b>Set-Befehle</b>
  <ul>
    <li><b>setChargingCurrent</b> - Ladestrom in mA (0 oder 6000-63000)</li>
    <li><b>enableStation</b> - Ladestation ein-/ausschalten</li>
    <li><b>unlock</b> - Ladestecker entriegeln</li>
    <li><b>setEnergy</b> - Energielimit in 0.1 Wh (0 = kein Limit)</li>
    <li><b>failsafeCurrent</b> - Failsafe-Strom in mA</li>
    <li><b>failsafeTimeout</b> - Failsafe-Timeout in Sekunden</li>
    <li><b>failsafePersist</b> - Failsafe-Einstellungen persistent speichern</li>
    <li><b>phaseSwitchToggle</b> - Phasenmodus waehlen: 1-phasig oder 3-phasig
        (benoetigt externen Schuetz am X2-Kontakt)</li>
    <li><b>phaseSwitchTrigger</b> - Phasenumschaltung ausfuehren
        (Ladevorgang muss vorher gestoppt sein)</li>
  </ul><br>

  <b>Readings</b>
  <ul>
    <li>chargingState - Ladezustand</li>
    <li>cableState - Kabelzustand</li>
    <li>errorCode - Fehlercode</li>
    <li>currentL1/L2/L3 - Ladestrom pro Phase (A)</li>
    <li>voltageL1/L2/L3 - Spannung pro Phase (V)</li>
    <li>activePower - Aktive Leistung (kW)</li>
    <li>totalEnergy - Gesamtenergie (kWh)</li>
    <li>sessionEnergy - Session-Energie (kWh)</li>
    <li>powerFactor - Leistungsfaktor cos phi (%)</li>
    <li>maxChargingCurrent - Max. Ladestrom (A)</li>
    <li>serialNumber - Seriennummer</li>
    <li>firmwareVersion - Firmware-Version (hex)</li>
    <li>rfidCard - Letzte RFID-Karten-UID</li>
  </ul>
</ul>

=end html_DE

=cut

Infos dazu:
- Die Register 5050 und 5052 sind nur nutzbar, wenn man einen Schütz verwendet (Steht auch in der CommandRef.)
- Leider wird die "Device specific help" bei mir nicht angezeigt: "No help found for module: kebap30"
- Die Zeile
require "$attr{global}{modpath}/FHEM/DevIo.pm";hat die KI auch mit generiert. Warum wird diese nicht benötigt? Macht das LoadModule "Modbus"; schon  mit?
- Bei der Pluggit.pm gibt es noch ein Methode, wo ich nicht weiß, wofür die ist.:
sub
Pluggit_Define($$)
{
    my ($hash, $def) = @_;
    my @a = split("[ \t]+", $def);
    my ($name, $module, $interval, $dest) = @a;
    my $ret = "";
    return "wrong syntax: define <name> $module [interval] [host]"
        if(@a < 2);

    return ModbusLD_Define ($hash, $name . " " . $module . " " . $id . " " . $interval . " " . $dest . ":" . $port . " " . $proto);
}
welche dann vermutlich hier dynamisch gerufen wird:
Pluggit_Initialize($)
{
[...]
ModbusLD_Initialize($modHash);                # Generic function of the Modbus module does the rest

$modHash->{DefFn}    = "Pluggit_Define"; #<----HIER-----

$modHash->{AttrList} = $modHash->{AttrList} . " " .     # Standard Attributes like IODEv etc

[...]
...da fehlen mir etwas die Kenntnisse in der Perl-Syntax :).
Titel: Aw: Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: rudolfkoenig am 07 April 2026, 10:15:56
Zitatrequire "$attr{global}{modpath}/FHEM/DevIo.pm";
hat die KI auch mit generiert. Warum wird diese nicht benötigt? Macht das
Wenn man keine DevIo Funktionen in diesem Modul aufruft, dann braucht man auch nicht die Definition dieser Funktionen.
98_Modbus.pm verwendet DevIo, das Modul bindet es auch ein. Ueber "use DevIo", weil require manchmal problematisch ist.

Zitat- Bei der Pluggit.pm gibt es noch ein Methode, wo ich nicht weiß, wofür die ist.:
Die Pluggit_Define Funktion wird bei define (oder defmod) aufgerufen, prueft Parameter und initialisiert die Verbindung, indem sie ModbusLD_Define mit dem richtigen Parameter aufruft.
Pluggit_Initialize wird beim Laden des Moduls aufgerufen, der Name ist fest vorgegeben (<ModulName>_Initialize).

Apropos Syntax:
    return ModbusLD_Define ($hash, $name . " " . $module . " " . $id . " " . $interval . " " . $dest . ":" . $port . " " . $proto);
wuerde ich als
    return ModbusLD_Define ($hash, "$name $module $id $interval $dest:$port $proto");
schreiben, ich finde es besser lesbar.
Titel: Aw: Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: jackyno.71986 am 08 April 2026, 10:14:18
Hallo Zusammen,

könnte mir bitte jemand das Modul 70_Keba.pm zur Verfügung stellen?

Schöne Grüße

Matthias
Titel: Aw: Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: msfox am 08 April 2026, 12:10:56
Zitat von: jackyno.71986 am 08 April 2026, 10:14:18könnte mir bitte jemand das Modul 70_Keba.pm zur Verfügung stellen?
Das hatte ich auch schon angefragt, aber leider keine Datei bekommen.
Darum habe ich das Modul 98_KebaP30.pm von der KI generieren lassen.
Für die KEBA P30 läuft dieses auch.
Titel: Aw: Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: PeterLustig am 09 April 2026, 11:10:38
Ich habe die Anfrage leider nicht mitbekommen, sonst hätte ich sie schon früher gepostet. Anbei eine 70_KEBA.pm
Sie läuft bei mir mit einer "Keba KeContact P30 DE440 Deutschland Edition". Leider kann die Wallbox selbst nicht viel, daher nutze ich nur ein/aus und das Einstellen des Ladestromes.
Titel: Aw: Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: msfox am 09 April 2026, 17:53:47
Zitat von: PeterLustig am 09 April 2026, 11:10:38Leider kann die Wallbox selbst nicht viel, daher nutze ich nur ein/aus und das Einstellen des Ladestromes.
Ich habe das Coding mal kurz überflogen. Aber wie stellst du da den Ladstrom ein.
Vermutlich irgendwie mit "KEBA_sets"...
--
Die P30 kann schon etwas mehr. KEBA ist also nicht gleich "KEBA".
Wer das Module verwendet - 70_KEBA.pm oder 98_KebaP30.pm sollte also Coding, mit den API-Spec für Modbus zu seiner Wallbox vergleichen. Die API-Spec gibt es bei Keba selbst.
Titel: Aw: Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: PeterLustig am 10 April 2026, 19:17:06
ZitatIch habe das Coding mal kurz überflogen. Aber wie stellst du da den Ladstrom ein.
Vermutlich irgendwie mit "KEBA_sets"...
Mit set <device> current 6000 setze ich die Ladeleistung auf etwa 4kW, mit set <device> current 16000
auf 11kW. Pausieren oder Starten der Ladung geht mit set <device> enableState 0 bzw. 1.
Mehr weiß ich auch nicht, da die Wallbox ja sonst (fast) nichts kann.

btw: Es gibt ja inzwischen einen Bereich "Wallboxen und E-Fahrzeuge". Ist dieses Thema dort nicht besser aufgehoben?
Titel: Aw: Neues Modul - 70_KEBA.pm zur Steuerung Keba KeContect P20
Beitrag von: msfox am 15 April 2026, 10:45:25
Ich bin aktuell noch am optimieren.
Allgemeine Frage in Verbindung mit dem Module oder ModBus_Modulen an sich in FHEM:

Durch die Verwendung des ModBus-Moduls kommen auch GET/SET von diesem selbst mit.
Macht es Sinn, dass speziell für das Gerät einen Präfix oder Suffix nutzen, um die Funktionen des Gerätes von den des ModBus zu unterscheiden?
Was wäre als Präfix sinnvoll/was ist üblich?:
- Einfach ein Unterstrich
- _P30, _KEBA, P30_, KEBA_
- Bei Pluggit-Modul sind die Namen einfach groß geschrieben. Damit stehen sie gleich am Anfang.