# 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 |
# Rule Actions
Certain Keba models support setting the text on the built-in display.
The text can be set via a rule action setDisplay. It comes in two variants:
rule "Set Display Text"
when
System reached start level 100
then
val keContactActions = getActions("keba", "keba:kecontact:1")
// Default duration
keContactActions.setDisplay("TEXT$1")
// Explicit duration set
keContactActions.setDisplay("TEXT$2", 5, 10)
end
| Parameter | Description |
|---|---|
| text | Text shown on the display. Maximum 23 ASCII characters can be used. ~ == Σ, $ == blank, , == comma |
| durationMin (optional) | Defines the duration in seconds how long the text will displayed before another display command will be processed (internal MID metering relevant information may overrule this) |
| durationMax (optional) | Defines the duration in seconds how long the text will displayed if no additional display command follows. |
# 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-Sw10x20Bit is set (enable at leastDEBUGlog-level for the binding)
# Supported stations
- KeContact P20 charging station with network connection (LSA+ socket)
- Product code:
KC-P20-xxxxxx2x-xxxorKC-P20-xxxxxx3x-xxx - Firmware version: 2.5 or higher
- Product code:
- KeContact P30 charging station (c- or x-series) or BMW wallbox
- Firmware version 3.05 or higher
← Kaleidescape KM200 →