KEBA Binding - Does not refresh


i have installed the Keba Binding for My Keba P30x, but I didn´t get any Values.
It seems that the refresh Interval does work. I have started a tcpdump, but I cannot see a communication between openhab and the Charging-Station.
If a send manuallyon the console echo "report 1" > /dev/udp/<Box IP>/7090, I can see that the Wallbox is answering on Destination Port 7090.

I also cannot see, via netstat, that there is a Binding on udp

The openhab.log ist reporting this:

2018-10-21 11:56:02.137 [INFO ] [ng.keba.handler.KeContactTransceiver] - Listening for incoming data on /

This my Thing-File:

Thing keba:kecontact:1 "Wallbox" @ "Hofeinfahrt"  [ ipAddress="", refreshInterval=30 ]

This is my items file:

Dimmer KebaCurrentRange "Keba % Strom" (Wallbox) {channel="keba:kecontact:1:maxpresetcurrentrange", autoupdate="false"}
Number KebaCurrent  "Keba Maximaler Strom" (Wallbox,Wallbox_MaxCurrent) {channel="keba:kecontact:1:maxpresetcurrent"}
Number KebaSystemCurrent  "Keba Maximaler Systemstrom" (Wallbox,Wallbox_MaxCurrent) {channel="keba:kecontact:1:maxsystemcurrent"}
Number KebaFailSafeCurrent "Keba Failsafe" (Wallbox) {channel="keba:kecontact:1:failsafecurrent"}
String KebaState  "Keba Status" (Wallbox,Wallbox_States) {channel="keba:kecontact:1:state"}
Switch KebaSwitch "Keba Hauptschalter" (Wallbox,Wallbox_Switches) {channel="keba:kecontact:1:enabled"}
Switch KebaWallboxPlugged "Keba Stecker in Ladesäule verriegelt" (Wallbox,Wallbox_States) {channel="keba:kecontact:1:wallbox"}
Switch KebaVehiclePlugged "Keba Stecker in Fahrzeug verreigelt" (Wallbox,Wallbox_States) {channel="keba:kecontact:1:vehicle"}
Switch KebaPlugLocked  (Wallbox,Wallbox_States) {channel="keba:kecontact:1:locked"}
DateTime KebaUptime "Zeit Online [%1$tY Y, %1$tm M, %1$td D,  %1$tT]" (Wallbox) {channel="keba:kecontact:1:uptime", autoupdate="false"}
Number KebaI1 "Strom L1" (Wallbox,Wallbox_Current) {channel="keba:kecontact:1:I1"}
Number KebaI2 "Strom L2"(Wallbox,Wallbox_Current) {channel="keba:kecontact:1:I2"}
Number KebaI3 "Strom L3" (Wallbox,Wallbox_Current) {channel="keba:kecontact:1:I3"}
Number KebaU1 "Spannung L1" (Wallbox,Wallbox_Voltage) {channel="keba:kecontact:1:U1"}
Number KebaU2 "Spannung L2" (Wallbox,Wallbox_Voltage) {channel="keba:kecontact:1:U2"}
Number KebaU3 "Spannung L3" (Wallbox,Wallbox_Voltage) {channel="keba:kecontact:1:U3"}
Number KebaPower (Wallbox,Wallbox_Energy) {channel="keba:kecontact:1:power"}
Number KebaSessionEnergy "kWh letzte Ladung"(Wallbox,Wallbox_Energy) {channel="keba:kecontact:1:sessionconsumption"}
Number KebaTotalEnergy "kWh Summe" (Wallbox,Wallbox_MaxEnergy) {channel="keba:kecontact:1:totalconsumption"}
Switch KebaInputSwitch (Wallbox,Wallbox_Switches) {channel="keba:kecontact:1:input"}
Switch KebaOutputSwitch (Wallbox,Wallbox_Switches) {channel="keba:kecontact:1:output"}
Number KebaPowerFactor (Wallbox) {channel="keba:kecontact:1:powerfactor"}

Is there anything I have forgotten to configure?


Might still be this;

Hi Micael,

thank for your reply. I use the debian packages for installing, and have now switched to the actual snapshot. The binding is now 2.4.0-snapshot and is still not working.


So you probably need the one from the repository; for some reason the working/updated binding never reaches the snapshots. Every now and then I have tested the snapshot versions, but always need to go back to the repo one. You need to find a ready built jar of it somewhere, or build it yourself.

First uninstall the binding in/from the main distribution/snapshot
Then you need to put the binding from the repo into your addons folder, and

Hi Micael,

building the jar File is beyond my knowledge.
I have just Setup the System from scratch. But now with the openhabian-config. This alone does not make it running. I had to deactivate IPv6 in the System, for what ever reason.
Now I have the Situation, that the Keba binding fires a Java Exeption that the Charing Stations firmware is not valid. This is a situation that I know from my last Installation, that crashes.
The binding is here also here stopping to send request to the Wallbox, but I send it manually via a Cronjob every minute.
The UDP-Answer from the Charging Station is then processed by the binding, so I get the right values in the Sitemap. Not nice, but works !

I would really hope that someone will fix this at sometime.

Thanks for your help.

Hi there,
i still have a similar problem!

  • Raspberry Pi B01

  • OpenHABian, openHAB 2.4.0-1

  • Binding.keba-2.4.0

  • Keba-Wallbox P30 v 3.08.4

  • Keba.things
    Thing keba:kecontact:1 [ ipAddress=“”, refreshInterval=30 ]

  • Keba.items
    Dimmer KebaCurrentRange {channel=“keba:kecontact:1:maxpresetcurrentrange”, autoupdate=“false”}
    Switch KebaSwitch {channel=“keba:kecontact:1:enabled”, autoupdate=“false”}
    Switch Fahrzeug_eingesteckt {channel=“keba:kecontact:1:vehicle”}
    Number KebaPower {channel=“keba:kecontact:1:power”}
    Number KebaSessionEnergy {channel=“keba:kecontact:1:sessionconsumption”}
    Number KebaTotalEnergy {channel=“keba:kecontact:1:totalconsumption”}

When i installed KEBA-Binding, all worked well! But one day later, i had no kontakt to the wallbox, log-file shows no error:
2019-03-25 19:36:22.578 [ome.event.ItemCommandEvent] - Item ‘KebaSwitch’ received command OFF

2019-03-25 19:37:57.736 [ome.event.ItemCommandEvent] - Item ‘KebaCurrentRange’ received command 37
The “KebaSwitch” and the Dimmer “KebaCurrentRange” dit not change anything. In Paper.Ui the KeContact EV Charging Station is shown as online. After disabling and enabling again this thing, the binding is working perfekt, but only for a wile!
2019-03-25 19:39:13.117 [hingStatusInfoChangedEvent] - ‘keba:kecontact:1’ changed from UNINITIALIZED (DISABLED) to INITIALIZING
2019-03-25 19:39:13.124 [INFO ] [nternal.handler.KeContactTransceiver] - Listening for incoming data on /0:0:0:0:0:0:0:0:7090
2019-03-25 19:39:13.150 [hingStatusInfoChangedEvent] - ‘keba:kecontact:1’ changed from INITIALIZING to ONLINE

2019-03-25 19:39:36.812 [ome.event.ItemCommandEvent] - Item ‘KebaSwitch’ received command OFF
2019-03-25 19:39:37.137 [vent.ItemStateChangedEvent] - KebaSwitch changed from ON to OFF

2019-03-25 19:41:19.922 [ome.event.ItemCommandEvent] - Item ‘KebaCurrentRange’ received command 39
2019-03-25 19:41:42.389 [vent.ItemStateChangedEvent] - KebaCurrentRange changed from 14 to 39

I have no idea how to fix this and would be thankfull for help

Hi AndiEi,
as I have a similar Problem like you, but no idea about programming anything; I want to ask you for help! How dit you make this cronjob? Can you give me an example?
Would be glad about help

Nobody out there to help???

I have just installed the KEBA binding 2.5 and get no response from the Wallbox at all.
I’ve successfully tried the TCP/UDP binding… the wallbox is responding correctly.
However, I have no idea whats wrong with the KEBA binding!?
Can anybody help to solve this problem?

Same here…

I have completely avoided the KEBA binding and communicate with the wallbox via TCO/UDP binding

The problem with me was that the binding was not updated after losing contact with the wallbox.
My Fritz box disconnects and connects the contact to the wall box, since the binding is not updated - no communication with the wall box.
I solved the problem with a rule, see: KEBA Binding Restart after connection-error

Did not work for me…

Will check it out when time allows.

Hi Pirx, I can’t get it work with the UDP binding. Could you post an example for one or two of your items, e.g. how to read the power consumption. i would appreciate it

Hi guys,

just got my keba P30 x-series today, connected via Wifi. Thing in PaperUi shows online status, but I do not receive any values. Any ideas?


Hi Herbert

have you looked at the log files? mine is also online but it seems that the binding cannot establish a connection to the box. I finde something like this in my logs

2020-10-19 02: 08: 20.056 [DEBUG] [ba.internal.handler.KeContactHandler] - Ping timed out after ‘3003’ milliseconds
2020-10-19 02: 08: 20.068 [TRACE] [nternal.handler.KeContactTransceiver] - There are now 0 KEBA KeContact handlers registered with the transceiver

For this reason I wanted to try using the TCP / UPD binding. So far without success.

Hi Oliver,

that’s in my logs (Level Trace)

2020-10-25 18:34:07.882 [DEBUG] [nternal.handler.KeContactTransceiver] - Starting the the KEBA KeContact transceiver

2020-10-25 18:34:07.883 [DEBUG] [nternal.handler.KeContactTransceiver] - Establishing the connection to the KEBA KeContact ‘keba:kecontact:b362ff1c’

2020-10-25 18:34:07.888 [hingStatusInfoChangedEvent] - ‘keba:kecontact:b362ff1c’ changed from INITIALIZING to ONLINE

2020-10-25 18:34:10.895 [DEBUG] [nternal.handler.KeContactTransceiver] - Stopping the the KEBA KeContact transceiver

2020-10-25 18:34:46.902 [TRACE] [nternal.handler.KeContactTransceiver] - There are now 0 KEBA KeContact handlers registered with the transceiver

Hi Oliver,

so far I managed to get some messages from the wallbox by using Hercules Setup Utility. I am trying to use the TCP/UDP binding, but no luck so far and I am a little bit lost.

Anyone any further ideas or a good tutorial for the udp binding?

@Pirx could you please share your configuration for the udp binding?


I’ll try to guide you through it.

First of all I use the tcp1-Binding. Create a tcp.cfg file with the following content:


Then create two items (“xxx” are the last digits of your KEBA ip address):

String fromUDPnode “fromUDPnode [%s]” {udp="<['REGEX((.))’]"}
String toUDPnode “toUDPnode” {udp=">[]"}

You can now i.e. send a request to KEBA every 5 second for “report 2” and then read the answer:

rule "ask Wallbox"
   Time cron "*/30 * * * * ?"	// check every 5 seconds
	toUDPnode.sendCommand("report 2")

rule "Receive messages from the KEBA Wallbox"
    Item fromUDPnode changed
    //  Messages, which starts with "TCH" anfangen will be skiped
    if (fromUDPnode.state.toString.substring(0,3) == "TCH" )

// requested reports always consists an "ID"

var String jvalue = transform("JSONPATH", "$.ID", fromUDPnode.state.toString)
if ( jvalue.substring(0,1) != "{" ) {
    WB_Message.postUpdate( jvalue )
     if (jvalue == "2") {                 // Report 2
        WB_Plug.postUpdate( transform("JSONPATH", "$.Plug", fromUDPnode.state.toString) )
        WB_Status.postUpdate( transform("JSONPATH", "$.State", fromUDPnode.state.toString) )
        WB_Error1.postUpdate( transform("JSONPATH", "$.Error1", fromUDPnode.state.toString) )
        WB_Error2.postUpdate( transform("JSONPATH", "$.Error2", fromUDPnode.state.toString) )
        WB_MaxCurr.postUpdate( Float.parseFloat(transform("JSONPATH", "$.['Max curr']", fromUDPnode.state.toString)) / 10000 )
        WB_X1Switch.postUpdate( transform("JSONPATH", "$.Input", fromUDPnode.state.toString) )
        WB_Sec.postUpdate( transform("JSONPATH", "$.Sec", fromUDPnode.state.toString) ) 
1 Like