# Keba Binding

This binding integrates the Keba KeContact EV Charging Stations (opens new window).

# Supported Things

The Keba KeContact P20 and P30 stations which are providing the UDP interface (P20 LSA+ socket, P30 c-series and x-series or BMW wallbox) are supported by this binding, the thing type id is kecontact.

# Thing Configuration

The Keba KeContact P20/30 requires the IP address as the configuration parameter ipAddress. Optionally, a refresh interval (in seconds) can be defined as parameter refreshInterval that defines the polling of values from the charging station.

# Channels

All devices support the following channels:

Channel ID Item Type Read-only Description
state Number yes current operational state of the wallbox
enabledsystem Switch yes activation state of the wallbox (System)
enableduser Switch no activation state of the wallbox (User)
maxpresetcurrent Number:ElectricCurrent no maximum current the charging station should deliver to the EV in A
maxpresetcurrentrange Number:Dimensionless no maximum current the charging station should deliver to the EV in %
power Number:Power yes active power delivered by the charging station
wallbox Switch yes plug state of wallbox
vehicle Switch yes plug state of vehicle
locked Switch yes lock state of plug at vehicle
I1/2/3 Number:ElectricCurrent yes current for the given phase
U1/2/3 Number:ElectricPotential yes voltage for the given phase
output Switch no state of the X1 relais
input Switch yes state of the X2 contact
display String no display text on wallbox
error1 String yes error code state 1, if in error (see the KeContact FAQ)
error2 String yes error code state 2, if in error (see the KeContact FAQ)
maxsystemcurrent Number:ElectricCurrent yes maximum current the wallbox can deliver
failsafecurrent Number:ElectricCurrent yes maximum current the wallbox can deliver, if network is lost
uptime Number:Time yes system uptime since the last reset of the wallbox
sessionconsumption Number:Energy yes energy delivered in current session
totalconsumption Number:Energy yes total energy delivered since the last reset of the wallbox
authreq Switch yes authentication required
authon Switch yes authentication enabled
sessionrfidtag String yes RFID tag used for the last charging session
sessionrfidclass String yes RFID tag class used for the last charging session
sessionid Number yes session ID of the last charging session
setenergylimit Number:Energy no set an energy limit for an already running or the next charging session
authenticate String no authenticate and start a session using RFID tag+RFID class
maxpilotcurrent Number:ElectricCurrent yes current offered to the vehicle via control pilot signalization
maxpilotcurrentdutycyle Number:Dimensionless yes duty cycle of the control pilot signal

# Example

demo.Things:

Thing keba:kecontact:1 [ipAddress="192.168.0.64", refreshInterval=30]

demo.items:

Number:Dimensionless      KebaCurrentRange      "Maximum supply current [%.1f %%]"        {channel="keba:kecontact:1:maxpresetcurrentrange"}
Number:ElectricCurrent    KebaCurrent           "Maximum supply current [%.3f A]"         {channel="keba:kecontact:1:maxpresetcurrent"}
Number:ElectricCurrent    KebaSystemCurrent     "Maximum system supply current [%.3f A]"  {channel="keba:kecontact:1:maxsystemcurrent"} 
Number:ElectricCurrent    KebaFailSafeCurrent   "Failsafe supply current [%.3f A]"        {channel="keba:kecontact:1:failsafecurrent"} 
Number                    KebaState             "Operating State [%s]"                    {channel="keba:kecontact:1:state"}
Switch                    KebaEnabledSystem     "Enabled (System)"                        {channel="keba:kecontact:1:enabledsystem"}
Switch                    KebaEnabledUser       "Enabled (User)"                          {channel="keba:kecontact:1:enableduser"}  
Switch                    KebaWallboxPlugged    "Plugged into wallbox"                    {channel="keba:kecontact:1:wallbox"}
Switch                    KebaVehiclePlugged    "Plugged into vehicle"                    {channel="keba:kecontact:1:vehicle"}
Switch                    KebaPlugLocked        "Plug locked"                             {channel="keba:kecontact:1:locked"}
DateTime                  KebaUptime            "Uptime [%s s]"                           {channel="keba:kecontact:1:uptime"}
Number:ElectricCurrent    KebaI1                                                          {channel="keba:kecontact:1:I1"}
Number:ElectricCurrent    KebaI2                                                          {channel="keba:kecontact:1:I2"}
Number:ElectricCurrent    KebaI3                                                          {channel="keba:kecontact:1:I3"}
Number:ElectricPotential  KebaU1                                                          {channel="keba:kecontact:1:U1"}
Number:ElectricPotential  KebaU2                                                          {channel="keba:kecontact:1:U2"}
Number:ElectricPotential  KebaU3                                                          {channel="keba:kecontact:1:U3"}
Number:Power              KebaPower             "Energy during current session [%.1f W]"  {channel="keba:kecontact:1:power"}
Number:Energy             KebaSessionEnergy                                               {channel="keba:kecontact:1:sessionconsumption"}
Number:Energy             KebaTotalEnergy       "Energy during all sessions [%.1f Wh]"    {channel="keba:kecontact:1:totalconsumption"}
Switch                    KebaInputSwitch                                                 {channel="keba:kecontact:1:input"}
Switch                    KebaOutputSwitch                                                {channel="keba:kecontact:1:output"}
Number:Energy             KebaSetEnergyLimit    "Set charge energy limit [%.1f Wh]"       {channel="keba:kecontact:1:setenergylimit"}

demo.sitemap:

sitemap demo label="Main Menu"
{
 Text label="Charging Station" {
  Text  item=KebaState
  Text  item=KebaUptime
  Switch  item=KebaEnabledSystem
  Switch  item=KebaEnabledUser
  Switch  item=KebaWallboxPlugged
  Switch  item=KebaVehiclePlugged
  Switch  item=KebaPlugLocked
  Slider  item=KebaCurrentRange
  Text  item=KebaCurrent
  Text  item=KebaSystemCurrent
  Text  item=KebaFailSafeCurrent
  Text  item=KebaSessionEnergy
  Text  item=KebaTotalEnergy
  Switch  item=KebaSetEnergyLimit
 }
}

# Troubleshooting

# Enable Verbose Logging

Enable DEBUG or TRACE (even more verbose) logging for the logger named:

org.openhab.binding.keba

If everything is working fine, you see the cyclic reception of report 1, 2 & 3 from the station. The frequency is according to the refreshInterval configuration.

# UDP Ports used

Send port = UDP 7090

The Keba station is the server

Receive port = UDP 7090

This binding is providing the server

UDP port 7090 needs to be available/free on the openHAB server.

In order to enable the UDP port 7090 on the Keba station with full functionality, DIP switch 1.3 must be ON. With DIP switch 1.3 OFF only ident-data can be read (i and report 1) but not the other reports as well as the commands needed for the write access. After setting the DIP switch, you need to power OFF and ON the station. SW-reset via WebGUI seems not to be sufficient in order to apply the new configuration.

The right configuration can be validated as follows:

  • WebGUI DSW Settings:
    • DIP 1.3 | ON | UDP interface (SmartHome)
  • UDP response of report 1:
    • DIP-Sw1 0x20 Bit is set (enable at least DEBUG log-level for the binding)

# Supported stations

  • KeContact P20 charging station with network connection (LSA+ socket)
    • Product code: KC-P20-xxxxxx2x-xxx or KC-P20-xxxxxx3x-xxx
    • Firmware version: 2.5 or higher
  • KeContact P30 charging station (c- or x-series) or BMW wallbox
    • Firmware version 3.05 or higher