Signed-off-by: Michael Weger <weger.michael@gmx.net> * - worked in review findings - introduced QuantityTypes - removed redundant pwmpilotcurrent (duplicate of maxpilotcurrent) - added maxpilotcurrentdutycyle
8.8 KiB
Keba Binding
This binding integrates the Keba KeContact EV Charging Stations.
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 leastDEBUG
log-level for the binding)
Supported stations
- KeContact P20 charging station with network connection (LSA+ socket)
- Product code:
KC-P20-xxxxxx2x-xxx
orKC-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