---
title: "KEBA KeContact P20 Status"
description: "Steuern Sie die Ladefreigabe, überwachen Sie Steck-/Verriegelungsstatus und Ladezustand, setzen Sie das Stromlimit an der KEBA P20 über UDP."
url: "https://taphome.com/de/compatibility/keba-kecontact-p20-state/"
language: de
lastmod: 2026-04-24
generator: hugo
ai:
  topics: ["udp","wallbox","ev-charging","ethernet","packet-parser","charging-control"]
  questions: ["Wie integriere ich die KEBA KeContact P20 mit TapHome?","Was macht die Vorlage KEBA KeContact P20 State?","Wie aktiviere oder deaktiviere ich das Laden an der KEBA P20 über TapHome?","Wie stelle ich das Ladestromlimit an der KEBA P20 Wallbox ein?","Was bedeuten die Ladezustände (Startet, Bereit, Lädt, Fehler) an der KEBA P20?","Kann ich die KEBA P20 State- und Power-Monitoring-Vorlagen gleichzeitig auf derselben Wallbox importieren?"]
---

# KEBA KeContact P20 Status

Kommunikation: Packet Parser → UDP

- [KEBA e-Mobility (offizielle Seite)](https://www.keba.com/en/emobility/products/product-overview)

> Netzwerkadresse
> 
> TapHome erreicht dieses Gerät unter der beim Import eingegebenen Adresse. Geben Sie dem Gerät eine feste Adresse — eine IP-Reservierung im Router oder seinen mDNS-Namen, falls es einen unterstützt —, sonst funktioniert die Integration nicht mehr, sobald der Router die Adresse ändert.
> 
> [Netzwerkvorbereitung](https://taphome.com/de/docs/setup/network-preparation/)

## Integrationsanleitung

Die KEBA KeContact P20 ist eine AC Mode 3 EV-Wallbox (10–32 A, einphasig oder dreiphasig), die zwischen 2012 und 2016 hergestellt wurde. Ihr UDP-basiertes „SmartHome Interface" wird von den Hardware-Varianten **c-series** und **c-series+PLC** (Produktcodes `KC-P20-xxxxxx2x-xxx` und `KC-P20-xxxxxx3x-xxx`) mit Firmware **2.5 oder höher** unterstützt. Die e-series und b-series implementieren diese Schnittstelle nicht.

TapHome kommuniziert mit der Wallbox über **UDP auf Port 7090** mit dem nativen KEBA-Protokoll. In jedem Abfragezyklus (standardmäßig 10 s) sendet TapHome den Textbefehl `report 2` an die Wallbox und parst die zurückgegebene JSON-Nutzdaten in einen schreibbaren Freigabeschalter, drei Reedkontakte für Steck-/Verriegelungsstatus, einen Multi-Value-Ladezustand und ein schreibbares Benutzerstromlimit. Steuerbefehle (`ena`, `curr`) werden über denselben UDP-Kanal zurückgeschickt.

> [!NOTE]
> Diese Vorlage stellt **Zustand und Steuerung** bereit. Für elektrische Messungen (phasenspezifische Spannungen und Ströme, Wirkleistung sowie Sitzungs-/Gesamtenergie) importieren Sie die Schwester-Vorlage [KEBA KeContact P20 Leistungsüberwachung](https://taphome.com/de/compatibility/keba-kecontact-p20-power-monitoring/) gegen dieselbe Wallbox — beide Vorlagen nutzen unterschiedliche Reports (`report 2` vs. `report 3`) und können sicher parallel laufen für eine vollständige Überwachungs- und Steuerintegration.

## Anforderungen

- KEBA KeContact P20 **c-series** oder **c-series+PLC** (Elektronik-Ziffer `2` oder `3` im Produktcode auf dem Typenschild)
- Firmware **≥ 2.5** (ältere Firmware implementiert den UDP-Befehl `report 2` nicht)
- Wallbox im selben LAN wie der TapHome Core über Ethernet angeschlossen (LSA+-Klemmen X4 oder RJ45-Buchse X3)
- UDP-Port **7090** darf zwischen Core und Wallbox nicht durch eine Firewall blockiert sein
- Die Modbus-TCP-Schnittstelle muss **deaktiviert** sein — UDP und Modbus TCP schließen sich auf der P20 gegenseitig aus

## Hardwareanschluss

Verkabelung und Ethernet-Anschluss sind identisch mit der Schwester-Vorlage Leistungsüberwachung — dasselbe physische Gerät wird von beiden Vorlagen über denselben UDP-Kanal adressiert. Siehe [KEBA KeContact P20 Leistungsüberwachung → Hardwareanschluss](https://taphome.com/de/compatibility/keba-kecontact-p20-power-monitoring/#hardwareanschluss) für Cat 5e/STP-Verkabelung, Auswahl LSA+ (X4) vs. RJ45 (X3) und die Warnung zu Ausgleichsströmen über die Ethernet-Schirmung.

## Konfiguration

### Aktivierung der UDP SmartHome-Schnittstelle

Die UDP-Schnittstelle wird durch einen einzigen DIP-Schalter auf der Wallbox-PCB aktiviert, der unter der Abdeckung des Anschlussfeldes liegt. **DSW1.3 = ON** ist zwingend — ohne ihn antwortet die Wallbox auf keinen `report`-Befehl an Port 7090. DIP-Schalter-Änderungen werden erst nach einem Druck auf den Service-Knopf (~1 s) oder nach einem Netzausschalten wirksam.

![KEBA KeContact P20 DIP-Schalter-Layout zeigt die Einstellung DSW1.3 ON zur Aktivierung der UDP SmartHome-Schnittstelle](https://taphome.com/images/compatibility/keba-kecontact-p20-state/dip-switch-udp-activation_hu_56d2d7e4a149f687.jpg)

Die vollständige DIP-Schalter-Tabelle (DSW1- und DSW2-Adressierung) ist in der Schwester-Vorlage dokumentiert — siehe [KEBA KeContact P20 Leistungsüberwachung → Konfiguration](https://taphome.com/de/compatibility/keba-kecontact-p20-power-monitoring/#konfiguration). Die Einstellung ist identisch, da dieselbe physische Wallbox betroffen ist.

> [!WARNING]
> Die UDP-Schnittstelle und die Modbus-TCP-Schnittstelle können nicht gleichzeitig aktiv sein. Wenn Modbus TCP zuvor an dieser Station aktiviert war, deaktivieren Sie es, bevor Sie die TapHome-UDP-Vorlage verwenden.

### TapHome-Import-Parameter

Beim Importieren der Vorlage angeben:

- **IP Address** — IP-Adresse der Wallbox im lokalen Netzwerk (Platzhalter `192.168.0.1`)
- **Port** — `7090` (durch das KEBA-Protokoll festgelegt)
- **Internal poll interval** — standardmäßig `10000` ms; das KEBA-Protokoll toleriert kürzere Intervalle, empfiehlt jedoch mindestens 5 s zwischen Wiederholungen desselben Befehls

## Gerätefunktionen

Alle Werte werden aus der JSON-Nutzdaten von `report 2` abgeleitet. Schreibvorgänge verwenden die UDP-Textbefehle `ena` und `curr`; nach jedem Schreibvorgang folgt sofort eine `report 2`-Abfrage, um den Vorlagenzustand zu aktualisieren.

### Ladesteuerung

- **Laden aktiviert** — schreibbarer Ein/Aus-Schalter. Sendet `ena 1` zur Aktivierung oder `ena 0` zur Deaktivierung der Station. Spiegelt das Flag `Enable user` aus `report 2` wider. OFF-Schreibvorgang pausiert das Laden dauerhaft, bis es erneut aktiviert wird oder die Station neu startet; KEBA schreibt eine verpflichtende 2-Sekunden-Pause nach `ena 0` vor, bevor der nächste Befehl akzeptiert wird.
- **Benutzer-Ladestrom** — schreibbarer maximaler Ladestrom in Ampere. Sendet den `curr`-Befehl in Milliampere (Vorlage multipliziert intern mit 1000). Gültiger Bereich ist **6–63 A**; die Wallbox begrenzt den effektiven Wert durch den Hardware-Grenzwert (DIP-Schalter, Kabelkodierung, thermisches Derating) und die neue Einstellung wirkt sich nach 6–7 Sekunden auf das Control-Pilot-PWM aus.

> [!TIP]
> `curr` ist eine **dauerhafte** Einstellung — sie bleibt bestehen, bis `curr` erneut geschrieben wird oder die Station neu startet. KEBA empfiehlt die nicht-dauerhafte Variante `currtime` für den Regelbetrieb, da sie beim Ausstecken zurückgesetzt wird. Diese Vorlage stellt nur `curr` bereit; für geplantes Laden oder automatische Reset-Semantik steuern Sie den Benutzer-Ladestrom über eine TapHome Smart Rule, die den Zielwert kurz vor Beginn einer Sitzung schreibt und nach dem Ausstecken auf den gewünschten Ruhewert zurücksetzt.

### Steck- und Verriegelungsstatus

Drei unabhängige Reedkontakte, jeder aus einem separaten Bit der `Plug`-Bitmaske in `report 2` abgeleitet:

| Gerät | Plug-Bit | Maske | Bedeutung |
|-------|----------|-------|-----------|
| **An Wallbox eingesteckt** | 0 | `0x01` | Kabel ist in der Wallbox-Buchse eingesteckt (bei nicht fest angeschlossenen Kabeln) |
| **Kabel verriegelt** | 1 | `0x02` | Kabel ist mechanisch in der Wallbox-Buchse verriegelt |
| **Am Fahrzeug eingesteckt** | 2 | `0x04` | Kabel ist am EV eingesteckt |

Das Laden erfordert **alle drei Bits gesetzt** (`Plug = 7`). Die einzelnen Geräte erlauben zu unterscheiden, ob der Benutzer das Auto, die Wallbox oder beides getrennt hat.

### Ladezustand

- **Ladezustand** — Multi-Value-Gerät, das den Betriebsmodus der Wallbox zeigt, abgebildet aus dem Feld `State` von `report 2`:

| Raw `State` | Bedeutung im Protokoll (UDP Programmers Guide V 2.03) | Anzeige in der Vorlage |
|-------------|--------------------------------------------------------|------------------------|
| 0 | Startup | Startet |
| 1 | Nicht ladebereit (nicht angeschlossen, verriegelt oder blockiert) | Nicht bereit |
| 2 | Ladebereit, wartet auf Fahrzeug | Bereit |
| 3 | Lädt | Lädt |
| 4 | Fehler vorhanden | Fehler |
| 5 | Ladevorgang vorübergehend unterbrochen | Nicht autorisiert |

> [!WARNING]
> Die Vorlage zeigt raw `State = 5` als **Nicht autorisiert** an, der KEBA UDP Programmers Guide V 2.03 (§3.2.3) dokumentiert diesen Wert jedoch als „Ladevorgang vorübergehend unterbrochen" (z. B. wegen Übertemperatur oder Ablehnung durch einen Voter). Wenn der Ladezustand „Nicht autorisiert" ohne laufende RFID-Sitzung angezeigt wird, behandeln Sie ihn als vorübergehende Unterbrechung, nicht als Autorisierungsfehler. Der Rohwert kann durch direkte `report 2`-Abfrage der Wallbox auf UDP-Port 7090 überprüft werden.

## Fehlerbehebung

### TapHome zeigt keine Daten von der Wallbox an

1. Überprüfen Sie den Produktcode der Wallbox auf dem Typenschild. UDP wird nur von `KC-P20-xxxxxx2x-xxx` (c-series) und `KC-P20-xxxxxx3x-xxx` (c-series+PLC) unterstützt
2. Bestätigen Sie, dass die Firmware-Version **≥ 2.5** ist. Firmware-Updates sind im Download-Bereich auf keba.com/emobility verfügbar
3. Bestätigen Sie **DSW1.3 = ON** — das häufigste Setup-Problem. Die DIP-Schalter befinden sich unter der Abdeckung des Anschlussfeldes und werden bei der Inbetriebnahme leicht übersehen. Nach dem Umschalten Service-Knopf 1 Sekunde drücken oder Sicherung aus- und einschalten
4. Stellen Sie sicher, dass UDP-Port **7090** zwischen TapHome Core und Wallbox offen ist (keine VLAN-/Firewall-Blockierung)
5. Bestätigen Sie, dass die Modbus-TCP-Schnittstelle an der Wallbox nicht aktiv ist — UDP und Modbus TCP schließen sich gegenseitig aus

### Schreiben des Schalters Laden aktiviert wirkt nicht

Einige Stationskonfigurationen überschreiben `Enable user` über den externen Freigabeeingang X1 oder über ein aktives Failsafe-Ereignis. Wenn `ena 1` die Station nicht aus dem deaktivierten Zustand herausführt:

- Überprüfen Sie, ob DSW1.1 auf ON steht (externer Freigabeeingang wird verwendet). Falls ja, prüfen Sie, dass der Kontakt X1 geschlossen ist.
- Beobachten Sie `Enable sys` in der rohen `report 2`-Nutzdaten — wenn `Enable sys = 0` ist, verweigert die Station die Aktivierung unabhängig von `Enable user` (typisch wegen Failsafe-Timeout oder Temperaturgrenzwert). Die Vorlage stellt `Enable sys` nicht bereit; überprüfen Sie über die Status-LED der Wallbox oder eine direkte UDP-Abfrage.

### Änderung des Benutzer-Ladestroms wirkt nicht

Nach dem Schreiben eines neuen Stroms braucht die Station **6–7 Sekunden**, um die Änderung intern anzuwenden. Wenn der neue Wert im Readback nie erscheint:

- Überprüfen Sie, dass das Ziel im gültigen Bereich **6000–63000 mA** (6–63 A) liegt. Werte außerhalb dieses Bereichs werden von der Wallbox stillschweigend abgelehnt.
- Bestätigen Sie, dass kein Failsafe-Ereignis aktiv ist — bei Auslösung überschreibt `Max curr = Curr FS` den Wert `Curr user`, bis der Failsafe zurückgesetzt wird.
- Denken Sie daran, dass `curr` eine **dauerhafte** Einstellung ist. Wenn ein vorheriger `currtime`-Befehl noch läuft (von einem anderen Client abgesetzt), wird `curr` ignoriert, bis der `currtime`-Timer abläuft oder `currtime 0 0` ihn zurücksetzt.

### Ladezustand bleibt auf Fehler oder Nicht autorisiert hängen

**Fehler** (raw `State = 4`) weist auf einen von der Station gemeldeten Fehlerzustand hin. Die Felder `Error1` und `Error2` in `report 2` enthalten den numerischen Fehlercode, werden aber von der Vorlage nicht bereitgestellt — fragen Sie die Wallbox direkt über UDP-Port 7090 mit `report 2` ab, um sie zu lesen, oder schauen Sie auf die Status-LED der Station.

**Nicht autorisiert** ist die Anzeige der Vorlage für raw `State = 5`, den KEBA als „Ladevorgang vorübergehend unterbrochen" dokumentiert. Häufige Ursachen sind Übertemperatur, eine aktive Voter-Ablehnung oder eine bewusste Unterbrechung im KEBA-Steuerfluss. Ein Neustart der Wallbox oder das Abwarten, bis die Unterbrechungsbedingung verschwindet, stellt den Ladezustand normalerweise wieder her. Diese Vorlage bietet keinen RFID-Autorisierungsfluss — die RFID-Whitelist wird weiterhin über die KEBA-App und physische Master-Karten verwaltet.

## Verfügbare Geräte 6

Diese Geräte erscheinen nach dem Import in TapHome.

Keba KeContact P20 Status Modul

Benutzerdefinierte Variablen

Lesen (Modul)

```taphome
SENDDATA("report 2");
```

Listener

```taphome
VAR jsonString := TOSTRING(RECEIVEDBYTES);
VAR id := PARSEJSON(jsonString, "$.ID", 1);

IF(id = 2)
    report2 := jsonString;
END
```

Laden aktiviert Schalter Lesen und Schreiben

Schreibbarer Ein/Aus-Schalter — aktiviert oder deaktiviert das Laden über den UDP-Befehl \`ena\` (dauerhaft bis zum Neustart oder zur erneuten Aktivierung)

boolean json\_path

Werte / Zustände: ${general\_enabled} · ${general\_disabled}

Schaltzustand schreiben

```taphome
SENDDATA("ena " + St);
SENDDATA("report 2");
```

Listener

```taphome
St := PARSEJSON(report2, "$.['Enable user']", 1)
```

Kabel verriegelt Reed-Kontakt Nur lesen

Zeigt an, ob das Kabel mechanisch in der Wallbox-Buchse verriegelt ist (Plug-Bit 1)

boolean bitmask

Listener

```taphome
Rc := PARSEJSON(report2, "$.Plug", 1) & 0x02
```

Am Fahrzeug eingesteckt Reed-Kontakt Nur lesen

Zeigt an, ob das Ladekabel mit dem Elektrofahrzeug verbunden ist (Plug-Bit 2)

boolean bitmask

Listener

```taphome
Rc := PARSEJSON(report2, "$.Plug", 1) & 0x04
```

An Wallbox eingesteckt Reed-Kontakt Nur lesen

Zeigt an, ob ein Kabel in die Wallbox-Buchse eingesteckt ist (Plug-Bit 0)

boolean bitmask

Listener

```taphome
Rc := PARSEJSON(report2, "$.Plug", 1) & 0x01
```

Ladezustand Mehrwertschalter Nur lesen

Betriebszustand der Wallbox — Startet, Nicht bereit, Bereit, Lädt, Fehler oder Nicht autorisiert

numeric json\_path

Werte / Zustände: ${starting} · ${notReady} · ${ready} · ${charging} · ${error} · ${notAuthorized}

Listener

```taphome
VAR state := PARSEJSON(report2, "$.State");
Mu := SWITCH(State, 0, 1, 1, 2, 2, 3, 3, 5, 4, 8, 5, 9, 1)
```

Benutzer-Ladestrom Variable Lesen und Schreiben

Schreibbarer maximaler Ladestrom in Ampere (6–63 A) — über den UDP-Befehl \`curr\` in Milliampere an die Wallbox gesendet

numeric Einheit: A json\_path

Schreiben

```taphome
SENDDATA("curr " + Va*1000);
SENDDATA("report 2");
```

Listener

```taphome
Va := PARSEJSON(report2, "$.['Curr user']", 1) / 1000.0
```

**Verbindung:** Packet Parser → UDP

Mögliche Verbesserungen (24)

- Error Codes — Decimal error codes indicating the cause of an error state. Not exposed by the template — only the generic Error state is surfaced through the \`State\` device.
- RFID Authorization Flags — AuthON (authorization function enabled) and Authreq (RFID authorization pending). Useful only when the wallbox whitelist is in use; template has no RFID flow.
- System Enable — Separate enable flag managed by the station (distinct from \`Enable user\`). Goes to 0 when failsafe triggers or on thermal/hardware limits.
- Actual Charging Current Limit — Effective current offered to the vehicle via PWM (mA) and the duty cycle (0.1% units). Different from \`Curr user\` — this is the resolved minimum of user setting, hardware limit, failsafe, and thermal derating.
- Hardware Current Limit — Maximum current the hardware supports based on DIP switch amperage setting, cable coding, and temperature monitoring. Static upper bound.
- Failsafe Current / Timeout — Fallback current and communication timeout configured via the \`failsafe\` command. Exposes current safety configuration; template has no diagnostic device.
- Pending Current Setting (currtime) — Queued current value and remaining countdown from an active \`currtime\` command. Useful for scheduled charging but not surfaced.
- Session Energy Limit — Active energy limit for the current/next charging session (0.1 Wh units). Set via \`setenergy\` command — template does not read or write it.
- Aux Relay Output State — Last \`output\` command setting for the X2 auxiliary relay. Template does not mirror relay state.
- External Enable Input (X1) — Current state of the external enable input X1 (ripple control / time switch contact). Requires DIP DSW1.1 = ON. Could be exposed as an independent reed contact.
- Serial Number — Device serial (8 chars) present in \`report 2\` JSON. Not mapped to a service attribute by the template.
- System Uptime — System clock seconds since startup. Useful for reboot detection but not surfaced.
- Set Charging Current with Delay — Non-permanent, delayed current setting — the KEBA-recommended primary current control command (preferred over \`curr\`). Allows scheduled current adjustments and safe \`currtime 0 1\` stop.
- Set Energy Limit — Sets a per-session energy limit (0.1 Wh units). Charging stops automatically when the limit is reached.
- Auxiliary Relay Output (X2) — Control the auxiliary relay at terminal X2 (open/close/pulse). Requires DIP DSW1.2 = ON.
- RFID Start / Stop — Programmatic RFID authorization when AuthON = 1 and a whitelist is configured.
- Set Station Clock — Set the station clock via Unix epoch. Useful when NTP is unavailable.
- Show Display Text — P30 only — not functional on P20 (no display). Listed for reference.
- Unlock Socket — Unlocks the charging socket (requires charging to be stopped first). Useful after an interrupted session.
- Failsafe Configuration — Fallback current when communication is lost. Important safety feature — template does not expose it.
- Device Identification — Basic identification: Product name, Serial, Firmware, COM-module flag, Backend flag, timeQ. Template polls only \`report 2\`.
- Power Monitoring — Voltage (U1/U2/U3), current (I1/I2/I3), active power (P), power factor (PF), present/total energy. Covered by the sibling \`keba-kecontact-p20-power-monitoring\` template.
- Charging Session History — Last 30 charging sessions (Session ID, E start, E pres, start/end timestamps, termination reason, RFID tag). Not applicable to real-time state monitoring.
- Push Notifications on State Change — Station can push State, Plug, Input, Enable sys, Max curr and E pres changes to the last UDP sender without polling. Template uses polling only.

## Importparameter

Diese Werte geben Sie beim Import des XML ein.

| In der App abgefragt   | Standard      |
|------------------------|---------------|
| IP-Adresse             | `192.168.0.1` |
| Port                   | `7090`        |
| Internal poll interval | `10000`       |

## Quellen

- KeContact P20 / P30 UDP Programmers Guide V 2.03
  
  [sollis.de](https://sollis.de/wp-content/uploads/UDP-Programmieranleitung.pdf) 2026-04-23
- KeContact P20 / P30 Installation manual V 3.20
  
  [www.keba.com](https://www.keba.com/file/downloads/e-mobility/KeContact_KCP20_30_ih_en.pdf) 2026-04-23

Herstellerdokumente sind © ihrer jeweiligen Eigentümer. Sie werden so bereitgestellt, wie der Hersteller sie veröffentlicht hat, nur zur Information.

## Verwandte Dokumentation

- [Packet-Parser-Integration](https://taphome.com/de/compatibility/packet-parser-guide/)
- [Packet Parser (HTTP, TCP, UDP, FTP, MQTT)](https://taphome.com/de/docs/integration/packet-parser/)
- [Packet-Parser-Funktionen](https://taphome.com/de/docs/script/packet-parser/)
- [Parsing-Funktionen](https://taphome.com/de/docs/script/parsing-functions/)

