Easee Home and Wallbox Pulsar KNX Integration via OCPP 1.6J Gateway
Connecting Easee Home and Wallbox Pulsar Plus EV chargers to KNX via an OCPP 1.6J central system allows the building automation layer to control charge current, monitor session energy, trigger RFID authorization from a KNX scene, and implement PV self-consumption charging — all coordinated through standard KNX group addresses.
OCPP 1.6J overview and local mode setup
OCPP (Open Charge Point Protocol) 1.6J is a WebSocket-based protocol that separates the charge point (EV charger hardware) from the charge point management system (CPMS, also called the central system). Both Easee Home and Wallbox Pulsar Plus implement OCPP 1.6J natively, allowing any compliant central system — cloud-hosted or local — to control and monitor them.
For KNX integration, the most reliable approach uses a local OCPP central system rather than the manufacturer cloud, eliminating cloud dependency and providing sub-second latency for control commands. Home Assistant with the OCPP integration add-on or IP-Symcon with the OCPP module are the two practical local central system options that also expose group address bridges to KNX.
Easee Home — enabling local OCPP mode
1. Open Easee app → select charger → Settings → Advanced Scroll to OCPP — select "Custom OCPP server" 2. Enter local OCPP WebSocket URL: ws://<home-assistant-ip>:9000/Easee01 (port 9000 is HA OCPP add-on default; /Easee01 = charger ID) 3. OCPP version: OCPP 1.6J (select from dropdown) Authentication: leave blank for local unauthenticated setup or set a shared secret if HA OCPP requires it 4. Save — charger will attempt WebSocket connection within 30s HA OCPP add-on log: "New charge point connected: Easee01" Note: Easee also supports cloud OCPP via api.easee.cloud Use local mode for KNX integration — removes cloud dependency
Wallbox Pulsar Plus — enabling local OCPP mode
1. Open myWallbox app → charger settings → Smart charging
Select OCPP → Custom OCPP server
2. OCPP URL: ws://<home-assistant-ip>:9000/WallboxPulsar01
OCPP version: OCPP 1.6J
Charge point ID: WallboxPulsar01
3. Alternatively via Wallbox local REST API:
POST http://<wallbox-ip>/api/2/ocpp/setConfig
{"ocppServer": "ws://<ha-ip>:9000/WallboxPulsar01"}
4. Verify: HA OCPP logs confirm "WallboxPulsar01 connected"
Status should show: Available (no EV plugged in)KNX group address scheme for EV charger control
The KNX group address layout bridges OCPP parameters to KNX data types. The HA KNX integration (XKNX library) reads and writes these GAs, translating between KNX DPT values and OCPP protocol messages. Each charger in a multi-charger installation gets its own GA set in a dedicated sub-group.
| Group Address | Description | DPT | Direction |
|---|---|---|---|
| 10/0/0 | Charge current setpoint 0–32A | DPT 5.001 (1-byte %) | KNX → OCPP (write) |
| 10/0/1 | Charger active / enable | DPT 1.001 (1-bit) | KNX → OCPP (write) |
| 10/0/2 | Charged energy session kWh | DPT 13.013 (4-byte signed kWh) | OCPP → KNX (read) |
| 10/0/3 | Plug connected status | DPT 1.001 (1-bit) | OCPP → KNX (read) |
| 10/0/4 | Charger status (0=avail, 1=charging, 2=faulted) | DPT 5.010 (1-byte enum) | OCPP → KNX (read) |
| 10/0/5 | RFID authorize trigger | DPT 1.001 (1-bit, rising edge) | KNX → OCPP (write) |
DPT 5.001 for charge current: the 1-byte percentage DPT encodes 0–100% as 0–255. A value of 50% (128) maps to 16A on a 32A charger. For Easee Home (max 16A), map 0–100% to 0–16A in the HA automation. For Wallbox Pulsar Plus 3-phase (max 32A), map 0–100% to 0–32A. Alternatively use DPT 5.010 unsigned byte and map 0–32 directly to amperes.
Home Assistant OCPP to KNX bridge configuration
Home Assistant acts as the OCPP central system and simultaneously as the KNX IP interface gateway. The HA OCPP integration add-on creates entities for each charger, and HA automations translate KNX GA writes into OCPP commands and vice versa.
HA configuration.yaml — KNX entities for EV charger
# configuration.yaml
knx:
sensor:
- name: "EV Charger 1 Current Setpoint"
state_address: "10/0/0"
type: "percent" # DPT 5.001
binary_sensor:
- name: "EV Charger 1 Enable"
state_address: "10/0/1"
- name: "EV Charger 1 Plug Connected"
state_address: "10/0/3"
number:
- name: "EV Charger 1 Current Control"
address: "10/0/0"
min: 0
max: 100
type: "percent"
switch:
- name: "EV Charger 1 Active"
address: "10/0/1"
state_address: "10/0/1"
# automation.yaml — KNX GA write → OCPP SetChargingProfile
automation:
- alias: "EV Charger 1 — KNX current setpoint to OCPP"
trigger:
- platform: state
entity_id: sensor.ev_charger_1_current_setpoint
action:
- service: ocpp.set_max_charge_rate_amps
data:
charge_point_id: "Easee01"
charge_rate: >
{{ (trigger.to_state.state | float) * 0.16 | round(0) }}HA automation — PV surplus → OCPP SetChargingProfile
# Triggered when KNX solar surplus GA (9/0/1) updates
automation:
- alias: "EV Solar Self-Consumption — Surplus to Charge Current"
trigger:
- platform: state
entity_id: sensor.knx_solar_surplus_w
condition:
- condition: state
entity_id: binary_sensor.ev_charger_1_plug_connected
state: "on"
action:
- choose:
- conditions:
- condition: numeric_state
entity_id: sensor.knx_solar_surplus_w
above: 2500
sequence:
- service: ocpp.set_max_charge_rate_amps
data:
charge_point_id: "Easee01"
charge_rate: >
{{ [[(states('sensor.knx_solar_surplus_w')|float / 230)|round(0), 6]|max, 16]|min }}
- conditions:
- condition: numeric_state
entity_id: sensor.knx_solar_surplus_w
below: 1400
sequence:
- service: ocpp.stop_transaction
data:
charge_point_id: "Easee01"IP-Symcon OCPP module as alternative central system
IP-Symcon (IPS) is a Windows/Linux home automation platform with native KNX support and an OCPP module available from the IPS marketplace. For installations where IP-Symcon already serves as the KNX logic and visualisation platform, the IPS OCPP module avoids introducing a separate Home Assistant server.
IP-Symcon OCPP + KNX configuration
1. Install IPS OCPP module from marketplace
Create OCPP Central System instance:
Port: 9000 (WebSocket server, IPS listens)
Charge Point ID: Easee01
2. IPS OCPP variables auto-created per charger:
MaxChargingCurrent (0–32A integer)
ChargerStatus (string: Available/Charging/Faulted)
SessionEnergyWh (float)
PlugConnected (boolean)
3. Link IPS OCPP variables to KNX via IPS KNX module:
KNX device → Group Address 10/0/0 → link to MaxChargingCurrent
KNX device → GA 10/0/2 → link to SessionEnergyWh (send on change)
4. IPS script for solar surplus → charge current:
$surplus = GetValue(12345); // KNX GA 9/0/1 variable ID
$current = max(6, min(16, round($surplus / 230)));
if ($surplus > 2500) {
SetValue(OCPP_MaxCurrent_ID, $current);
} elseif ($surplus < 1400) {
OCPP_StopTransaction("Easee01");
}PV self-consumption charging sequence
The self-consumption charging sequence describes the full control loop from KNX solar surplus detection to OCPP current adjustment — including the hysteresis logic that prevents rapid cycling when solar generation fluctuates around the minimum threshold.
PV self-consumption charging sequence
1. KNX GA 9/0/1 (Grid Power, signed W) published by
Intesis IN701KNX gateway reading Fronius Modbus register 40225
Poll interval: 10 seconds
2. KNX logic (MDT Logic Module or HA automation) evaluates:
IF Grid Power < −2500W (exporting > 2.5 kW):
→ Calculate OCPP current: surplus_W ÷ 230V
→ Clamp: max(6, min(16, calculated_A)) for Easee Home
→ Write clamped value to GA 10/0/0 (charge current)
→ HA/IPS translates GA write → OCPP SetChargingProfile
3. OCPP SetChargingProfile message:
{
"connectorId": 1,
"csChargingProfiles": {
"chargingProfileKind": "TxProfile",
"chargingSchedule": {
"chargingRateUnit": "A",
"chargingSchedulePeriod": [{"startPeriod": 0, "limit": <amps>}]
}
}
}
4. Charger applies new limit within 5–10 seconds
KNX GA 10/0/2 (Session Energy kWh) updates every 60s
5. IF Grid Power > −1400W (surplus dropped below 1.4 kW):
→ Wait 120 seconds (hysteresis — solar cloud pass-through)
→ IF still < 1400W → OCPP StopTransaction
→ Charger status: Suspended / AvailableRFID authorization trigger from KNX scene
Standard OCPP charging requires the driver to present an RFID card or use an app to authorize a session. For residential KNX installations where the occupant wants to start charging from a wall-mounted KNX push button or time-based schedule, a KNX-triggered RFID authorization can start a session without physical card presentation.
KNX scene → RFID authorize OCPP sequence
KNX push button (Scene 5 = "EV Start Charging"):
→ GA 10/0/5 (RFID authorize trigger) → DPT 1.001 value 1
HA automation triggered by GA 10/0/5:
- service: ocpp.authorize
data:
charge_point_id: "Easee01"
id_tag: "HOME_RESIDENT_01" # pre-authorized RFID tag
OCPP Authorize.req sends idTag to Central System (HA OCPP)
HA OCPP returns: Authorize.conf { "idTagInfo": { "status": "Accepted" }}
Charger begins transaction: StartTransaction.req sent to HA
KNX scene "EV Stop Charging":
→ GA 10/0/1 (charger active) → DPT 1.001 value 0
→ HA automation: ocpp.stop_transaction charge_point_id=Easee01
Use case: time-of-use tariff schedule — IPS script runs at
23:00 → writes 1 to GA 10/0/5 → starts cheap overnight charge
07:00 → writes 0 to GA 10/0/1 → stops transaction before peakSecurity note: the pre-authorized idTag approach bypasses physical RFID authentication. Only use this in residential or private-access settings where the building owner controls both the KNX system and the charger. For commercial multi-user installations, maintain physical RFID card presentation for each session to preserve audit trail and billing accuracy.
Commissioning test with ETS6 Group Monitor
The commissioning sequence verifies the complete path from EV plug connection through OCPP central system to KNX group address update, confirming that self-consumption logic and current control work end-to-end before the installation is handed over.
Commissioning test sequence
Step 1 — OCPP connectivity verification: Open HA OCPP add-on log Confirm: "Easee01 connected via OCPP 1.6J WebSocket" Charger LED: solid green (available, not charging) Step 2 — Plug connected status KNX update: Plug test EV cable into Easee Home socket ETS6 Group Monitor → watch GA 10/0/3 Expected: value changes to 1 (true) within 5 seconds Charger status GA 10/0/4 → should read 1 (charging prep) Step 3 — Manual current setpoint test: ETS6 Group Monitor → write value 50 to GA 10/0/0 (50% = 8A) Verify: HA log shows OCPP SetChargingProfile 8A sent Verify: Easee app shows "Charging at 8A" Write 100 to GA 10/0/0 → confirm Easee shows 16A Step 4 — PV surplus simulation: ETS6 Group Monitor → write −4000 to GA 9/0/1 (simulate 4kW export) Confirm: HA automation fires → OCPP current = 4000÷230 = 17A → clamped to 16A GA 10/0/0 should update to reflect new current Step 5 — Session energy readback: After 2 minutes of active charging GA 10/0/2 should show non-zero kWh value Compare with Easee app session energy reading Step 6 — RFID trigger from KNX: ETS6 → write 1 to GA 10/0/5 Confirm: HA log "Authorize.req idTag HOME_RESIDENT_01 → Accepted" Charger starts transaction
WebSocket reconnection behaviour
If the HA server restarts, Easee reconnects to the OCPP central system automatically within 30 seconds. During the reconnection window, the charger continues charging at the last OCPP-set current limit — it does not drop to minimum. Verify reconnection recovery by restarting HA and confirming the charger status entity updates within 60 seconds.
Wallbox Pulsar Plus differences
The Wallbox Pulsar Plus uses identical OCPP 1.6J commands but the charger ID format in the WebSocket URL uses the serial number suffix by default. Confirm the charger ID in the myWallbox app settings before configuring HA OCPP. Wallbox OCPP minimum current acceptance is 6A on single-phase and 8A on 3-phase variants.
Need an EV charging panel with KNX OCPP integration built to spec?
We design low-voltage panels with Easee or Wallbox OCPP integration, HA KNX gateway configuration, solar self-consumption logic and full commissioning documentation — delivered tested and verified to your site.
Request a quote →