This page is part of archived documentation for openHAB 3.2. Go to the current stable version

# 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) 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
enabled Switch no activation state of the wallbox
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"} 
String 						KebaState  				"Operating State [%s]"						{channel="keba:kecontact:1:state"}
Switch 						KebaSwitch  			"Enabled"									{channel="keba:kecontact:1:enabled"}
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 Wh]"	{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=KebaSwitch
		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