mirror of
https://github.com/openhab/openhab-addons.git
synced 2025-01-10 23:22:02 +01:00
a9bddff5ad
Signed-off-by: Michael Weger <weger.michael@gmx.net> * - worked in review findings - introduced QuantityTypes - removed redundant pwmpilotcurrent (duplicate of maxpilotcurrent) - added maxpilotcurrentdutycyle
151 lines
8.8 KiB
Markdown
151 lines
8.8 KiB
Markdown
# Keba Binding
|
|
|
|
This binding integrates the [Keba KeContact EV Charging Stations](https://www.keba.com).
|
|
|
|
## 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
|