
The KEBA KeContact P20 is an AC Mode 3 EV wallbox (10–32 A, single-phase or three-phase) manufactured between 2012 and 2016. Its UDP-based “SmartHome Interface” is supported on the c-series and c-series+PLC hardware variants (product codes KC-P20-xxxxxx2x-xxx and KC-P20-xxxxxx3x-xxx) with firmware 2.5 or higher. The e-series and b-series do not implement this interface.
TapHome communicates with the wallbox over UDP on port 7090 using the native KEBA protocol. On each poll cycle (default 10 s) TapHome sends the text command report 2 to the wallbox and parses the returned JSON payload into a writable enable switch, three plug/lock reed contacts, a multi-value charging state and a writable user-current limit. Control commands (ena, curr) are sent back over the same UDP channel.
This template exposes state and control. For electrical measurements (per-phase voltages, currents, active power and session/lifetime energy) import the sibling KEBA KeContact P20 Power Monitoring template against the same wallbox — the two templates use different reports (
report 2vs.report 3) and can safely run in parallel for a complete monitoring + control integration.
Requirements
- KEBA KeContact P20 c-series or c-series+PLC (electronics digit
2or3in the product code on the type plate) - Firmware ≥ 2.5 (earlier firmware does not implement the UDP
report 2command) - Wallbox connected to the same LAN as the TapHome Core via Ethernet (LSA+ terminals X4 or RJ45 socket X3)
- UDP port 7090 not blocked by any firewall between the Core and the wallbox
- The Modbus TCP interface must be disabled — the UDP and Modbus TCP interfaces are mutually exclusive on the P20
Hardware connection
Wiring and Ethernet connection are identical to the sibling Power Monitoring template — the same physical device is addressed by both templates over the same UDP channel. See KEBA KeContact P20 Power Monitoring → Hardware connection for Cat 5e/STP cabling, LSA+ (X4) vs. RJ45 (X3) selection and the warning about compensation currents through Ethernet shielding.
Configuration
Enabling the UDP SmartHome interface
The UDP interface is activated by a single DIP switch on the wallbox PCB, located under the connector-panel cover. DSW1.3 = ON is mandatory — without it the wallbox will not reply to any report command on port 7090. DIP-switch changes only take effect after a Service-button press (~1 s) or a power cycle.

The full DIP-switch table (DSW1 and DSW2 addressing) is documented under the sibling template — see KEBA KeContact P20 Power Monitoring → Configuration. The setup is identical because the same physical wallbox is involved.
The UDP interface and the Modbus TCP interface cannot be active at the same time. If Modbus TCP was previously enabled on this station, disable it before relying on the TapHome UDP template.
TapHome import parameters
When importing the template, provide:
- IP Address — the wallbox IP on the local network (placeholder
192.168.0.1) - Port —
7090(fixed by the KEBA protocol) - Internal poll interval —
10000ms by default; the KEBA protocol tolerates shorter intervals but recommends at least 5 s between repetitions of the same command
If the wallbox uses DHCP, assign a static DHCP reservation in the router so the IP does not change after a power outage. TapHome stores the IP as an import parameter and does not auto-discover the device.
Device capabilities
All values are derived from the report 2 JSON payload. Writes use the ena and curr UDP text commands; every write is followed by an immediate report 2 poll to refresh the template state.
Charging control
- Charging Enabled — writable on/off switch. Sends
ena 1to enable orena 0to disable the station. Mirrors theEnable userflag fromreport 2. Writing OFF permanently pauses charging until re-enabled or the station reboots; KEBA specifies a mandatory 2-second pause afterena 0before the next command is accepted. - User Charging Current — writable maximum charging current in amperes. Sends the
currcommand in milliamperes (internally multiplied by 1000 by the template). Valid range is 6–63 A; the wallbox clamps the effective value by the hardware limit (DIP switches, cable coding, thermal derating) and the new setting propagates to the control-pilot PWM after 6–7 seconds.
curris a permanent setting — it persists until the nextcurrwrite or until the station reboots. KEBA recommends the non-permanentcurrtimevariant for regular use because it resets on plug-out. This template exposes onlycurr; for scheduled charging or automatic reset semantics, drive the User Charging Current from a TapHome Smart Rule that writes the target value just before a session starts and resets it to the desired idle value after plug-out.
Plug and lock status
Three independent reed contacts, each derived from a separate bit of the Plug bitmask in report 2:
| Device | Plug bit | Mask | Meaning |
|---|---|---|---|
| Plugged into Wallbox | 0 | 0x01 | Cable is plugged into the wallbox socket (for non-permanently-attached cables) |
| Cable Locked | 1 | 0x02 | Cable is mechanically locked in the wallbox socket |
| Plugged into Vehicle | 2 | 0x04 | Cable is plugged into the EV |
Charging requires all three bits set (Plug = 7). The individual devices let you distinguish whether a user has disconnected the car, the wallbox or both.
Charging state
- Charging State — multi-value device exposing the wallbox operating mode, mapped from the raw
Statefield ofreport 2:
Raw State | Protocol meaning (UDP Programmers Guide V 2.03) | Template display |
|---|---|---|
| 0 | Startup | Starting |
| 1 | Not ready for charging (not connected, locked or blocked) | Not Ready |
| 2 | Ready for charging, waiting for vehicle | Ready |
| 3 | Charging | Charging |
| 4 | Error is present | Error |
| 5 | Charging temporarily interrupted | Not Authorized |
The template displays raw
State = 5as Not Authorized, but the KEBA UDP Programmers Guide V 2.03 (§3.2.3) documents this value as “Charging temporarily interrupted” (for example because of over-temperature or a denied voter). If the Charging State shows “Not Authorized” without an RFID session in progress, treat it as a temporary interruption rather than an authorization failure. The raw value can be cross-checked by readingStatedirectly from areport 2query against the wallbox on UDP port 7090.
Troubleshooting
TapHome shows no data from the wallbox
- Verify the wallbox product code on the type plate. Only
KC-P20-xxxxxx2x-xxx(c-series) andKC-P20-xxxxxx3x-xxx(c-series+PLC) support UDP - Confirm the firmware version is ≥ 2.5. Firmware updates are available in the download area at keba.com/emobility
- Confirm DSW1.3 = ON — the most common setup issue. The DIP switches sit under the connector-panel cover and are easy to miss during commissioning. After toggling, press the Service button for 1 second or cycle the breaker
- Ensure UDP port 7090 is open between the TapHome Core and the wallbox (no VLAN / firewall blocking)
- Confirm the Modbus TCP interface on the wallbox is not active — UDP and Modbus TCP are mutually exclusive
Writing the Charging Enabled switch has no effect
Some station configurations override Enable user via the external enable input X1 or via an active failsafe event. If ena 1 does not bring the station out of a disabled state:
- Check whether DSW1.1 is ON (external enable input in use). If so, verify the X1 contact is closed.
- Observe
Enable sysin the rawreport 2payload — ifEnable sys = 0the station is refusing to enable regardless ofEnable user(typically due to a failsafe timeout or a thermal limit). The template does not exposeEnable sys; confirm via the wallbox LED status or a direct UDP query.
User Charging Current change does not propagate
After writing a new current the station takes 6–7 seconds to apply the change internally. If the new value never appears in the readback:
- Verify the target is within the valid range 6000–63000 mA (6–63 A). Values outside this range are silently rejected by the wallbox.
- Confirm no active failsafe event — when triggered,
Max curr = Curr FSoverridesCurr useruntil the failsafe is reset. - Remember that
curris a permanent setting. If a previouscurrtimecommand is still running (issued via another client),curris ignored until thecurrtimetimer expires orcurrtime 0 0nullifies it.
Charging State is stuck on Error or Not Authorized
Error (raw State = 4) indicates a station-reported error condition. The Error1 and Error2 fields in report 2 carry the numeric error code but are not exposed by the template — query the wallbox directly over UDP port 7090 with report 2 to read them, or consult the station status LED.
Not Authorized is the template’s display label for raw State = 5, which KEBA documents as “Charging temporarily interrupted”. Common causes include over-temperature, an active voter denial, or a deliberate interruption in the KEBA control flow. Power-cycling the wallbox or waiting for the interruption condition to clear usually restores the Charging state. This template does not expose an RFID authorization flow — RFID whitelisting remains managed through the KEBA app and physical master cards.
