EV Charging · Easee · Wallbox · OCPP 1.6J · KNX · 10 min read

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 AddressDescriptionDPTDirection
10/0/0Charge current setpoint 0–32ADPT 5.001 (1-byte %)KNX → OCPP (write)
10/0/1Charger active / enableDPT 1.001 (1-bit)KNX → OCPP (write)
10/0/2Charged energy session kWhDPT 13.013 (4-byte signed kWh)OCPP → KNX (read)
10/0/3Plug connected statusDPT 1.001 (1-bit)OCPP → KNX (read)
10/0/4Charger status (0=avail, 1=charging, 2=faulted)DPT 5.010 (1-byte enum)OCPP → KNX (read)
10/0/5RFID authorize triggerDPT 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 / Available

RFID 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 peak

Security 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 →
Loading...
Back to top