TapHome

Alfen Eve Single Socket

Modbus TCP
Submitted by
Last updated: 03. 2026
Alfen Eve Single Socket

The Alfen Eve Single S-line and Pro-line (socket variant) are EV charging stations based on the NG9xx platform. TapHome connects directly to the wallbox via Modbus TCP over Ethernet — no additional gateway is required.

The template provides charging state detection, vehicle connection status, per-phase voltage and power metering, energy consumption tracking, and dynamic current limiting through the Max Current control register.

Network connection

The Eve Single has an Ethernet port on the main board. Connect it to the same local network as TapHome Core using a standard Ethernet cable.

  • Protocol: Modbus TCP
  • Port: 502
  • Byte order: Big-endian (network byte order)
  • Slave addressing: 1 for socket 1, 2 for socket 2 (dual socket stations), 200 for station-level registers

The TapHome template operates at socket level (slave ID 1 or 2). Each socket on a dual-socket station requires its own TapHome device instance. For single-socket models, use slave ID 1.

Configuration

Enabling Modbus communication

Modbus slave functionality requires an Active Load Balancing license purchased and activated on the charger. A Service Installer Application (SIA) account is also required — request one at https://support.alfen.com.

  1. Open the Service Installer Application and connect to the charger
  2. Navigate to Active balancing in the left menu
  3. Enable the Active Load Balancing checkbox
  4. Enable “Allow 1- and 3-phased charging” if phase switching control is needed
  5. Select “Energy Management System” as Data Source — this configures the station as a Modbus slave
  6. “TCP/IP EMS” appears in the left menu — Modbus TCP/IP is selected by default
  7. Choose the control mode:
    • Socket mode — control each socket individually (recommended for TapHome)
    • SCN mode — control the station as a complete entity

When importing the template in TapHome, provide:

  • IP Address — the wallbox IP on the local network
  • Slave ID — 1 for socket 1, 2 for socket 2
Modbus configuration options
SettingFunctionDefault
Allow readingAllow reading of Modbus registers via TCP/IPOff
Allow writing maximum currentsAllow writing max current registersOff
Enable socketsTake written max current values into account
Validity timeSeconds before fallback to safe current60
IP Address allocationDHCP or fixed IPDHCP

Both “Allow reading” and “Allow writing maximum currents” must be enabled in the Service Installer Application for the template to function. These are disabled by default.

Device capabilities

Charging state and vehicle detection

Two boolean sensors derived from the IEC 61851 Mode 3 state register (H:1201):

  • Vehicle Connection — returns true when a vehicle is physically connected (states B1, B2, C1, C2, D1, D2), false when disconnected (A, E, F).
  • Charge State — returns true when the vehicle is actively charging (states C2 or D2), false otherwise.

The Mode 3 state follows the IEC 61851 standard:

StateVehicle ConnectedChargingDescription
ANoNoNo vehicle connected
B1 / B2YesNoVehicle connected, not charging
C1 / C2YesC2 onlyVehicle requests charging (C2 = PWM active, charging)
D1 / D2YesD2 onlyVehicle with ventilation request
ENoNoShort circuit (CP-PE)
FNoNoCharging station error

The Charge State device also exposes a service attribute “Number of charging phases” (H:1215) showing whether the vehicle is currently charging on 1 or 3 phases, and a service action “Charging phases” to switch between 1-phase and 3-phase charging mode.

Voltage monitoring

Three-phase line-to-neutral voltage sensors:

  • Voltage Phase L1-N — reads H:306 (BigEndianFloat)
  • Voltage Phase L2-N — reads H:308 (BigEndianFloat)
  • Voltage Phase L3-N — reads H:310 (BigEndianFloat)

All three report voltage in volts with a 15-second poll interval.

Power metering
  • Real Power Sum — total real power across all phases, converted from W to kW. Includes service attributes showing per-phase breakdown: Phase L1 (H:338), Phase L2 (H:340), Phase L3 (H:342), each in kW.
  • Frequency — AC mains frequency in Hz from register H:336.
Energy metering
  • Real Energy Delivered — cumulative energy delivered to the vehicle (H:374, Float64), converted from Wh to kWh. Sum of all phases.
  • Real Energy Consumed — cumulative energy consumed by the socket (H:390, Float64), converted from Wh to kWh. Sum of all phases.
Module-level attributes and actions

The module exposes several service attributes visible in the device detail view:

AttributeDescription
Meter TypeMeter communication type (RTU, TCP/IP, UDP, P1)
StateMeter status flags — Initialised, Updated, Warning, Error
Mode 3 StateRaw IEC 61851 Mode 3 state string (A, B1, B2, C1, C2, D1, D2, E, F)
Max CurrentCurrently applied maximum charging current in amperes
Active Load Balancing Safe CurrentFallback current value when max current validity expires

The module also provides a service action “Max Current” to write the maximum charging current limit (6–16 A) to register H:1210. The written value must be refreshed within the configured validity timeout (default 60 seconds) or the station falls back to the safe current value.

The max current value is not preserved during reboot. After a power cycle, the station falls back to the safe current until a new value is written via Modbus.

Additional capabilities

The Alfen Eve exposes additional Modbus registers for line-to-line voltages, per-phase currents and current sum, power factor, apparent power, reactive power, and per-phase energy breakdowns. Station-level registers (slave 200) provide board temperature, OCPP state, Smart Charging Network (SCN) aggregated consumption and per-phase max current control. These can be added to the TapHome template in a future update.

Troubleshooting

No Modbus communication
  1. Verify the Ethernet cable is connected and the charger is on the same network as TapHome Core
  2. Confirm the Active Load Balancing license is activated
  3. Check that “Allow reading” is enabled in the Service Installer Application
  4. Confirm the correct slave ID — use 1 for socket 1 (not 200, which is the station-level address)
  5. Ensure no firewall is blocking port 502
  6. The charger supports a maximum of 2 simultaneous Modbus TCP connections — verify no other system is using both slots
Max current not applied
  1. Verify “Allow writing maximum currents” is enabled in the Service Installer Application
  2. Check that the safe current is configured (must be set before max current can be controlled via Modbus)
  3. Ensure the current value is refreshed before the validity timeout expires (default 60 seconds)
  4. Check register H:1214 (Setpoint accounted for) — value 1 confirms the written current was applied
Phase switching not working

Ensure “Allow 1- and 3-phased charging” is enabled in the Active Load Balancing settings via the Service Installer Application. This setting is required for the phase switching service action to work.

Firmware recommendation

Firmware version 6.4.0-4210 or newer is recommended. Earlier versions have a bug where the power budget resets to 0 A when no car is charging.

Available devices

Alfen Socket Module
Service Attributes
Meter TypeMeter communication type — RTU, TCP/IP, UDP, or P1
StateMeter status flags — Initialised, Updated, Warning, Error
Mode 3 StateIEC 61851 Mode 3 charging state — A (disconnected), B1/B2 (connected), C1/C2 (charging), D1/D2 (ventilation), E/F (error)
Max CurrentCurrently applied maximum charging current in amperes
Active Load Balancing Safe CurrentFallback current value when max current validity expires
Service Actions
Max CurrentSet maximum charging current limit (6–16 A) — must be refreshed within validity timeout

Alfen Socket

Read (module)
#warning
IF(GETBIT(MODBUSR(H, 300, Uint16), 2)=1, ADDWARNING("Meter in warning state"));
#error
IF(GETBIT(MODBUSR(H, 300, Uint16), 3)=1, ADDError("Meter in error"));
IF(MODBUSR(H, 1201, String, 5)="F", ADDError("Charging error"));
Service Attributes
Meter Type
SWITCH(MODBUSR(H, 305, Uint16),
 0, "RTU",
 1, "TCP/IP",
 2, "UDP",
 3, "P1",
 "Other");
State
var reg := MODBUSR(H, 300, Uint16);
var string := 
IF(GETBIT(reg, 0) = 1, "Initialised ", "") +
IF(GETBIT(reg, 1) = 1, "Updated ", "") +
IF(GETBIT(reg, 2) = 1, "Warning ", "") +
IF(GETBIT(reg, 3) = 1, "Error", "");
Mode 3 State
MODBUSR(H, 1201, String, 5);
Max Current
MODBUSR(H, 1210, Float, 2) + " A"
Active Load Balancing Safe Current
MODBUSR(H, 1212, Float, 2) + " A"
Service Actions
Max Current
Parameters: Max Current [A] (6–16 cur)
MODBUSW(H, 1210, Float, cur, 2)
Frequency Variable Read-only
Register: H:336 Float Unit: Hz

Frequency

Read
MODBUSR(H, 336, Float, 2)
Charge State Reed Contact Read-only

Active charging detection — true when vehicle is drawing power (Mode 3 states C2 or D2)

Register: H:1201 String switch-map
Service Attributes
Number of charging phasesNumber of phases currently used for charging (1 or 3)
Service Actions
Charging phasesSwitch between 1-phase and 3-phase charging mode

Charge State

Read
SWITCH(MODBUSR(H, 1201, String, 5),
"A", false,
"B1", false,
"B2", false,
"C1", false,
"C2", true,
"D1", false,
"D2", true,
"E", false,
"F", false,
Nan)
Service Attributes
Number of charging phases
MODBUSR(H, 1215, Uint16);
Service Actions
Charging phases
Parameters: Charging Phases
MODBUSW(H, 1215, Uint16, chrg);
Real Energy Consumed Variable Read-only

Cumulative energy consumed by the socket across all phases (kWh)

Register: H:390 Float Unit: kWh

Real Energy Consumed

Read
MODBUSR(H, 390, Float, 4)/1000;
Real Energy Delivered Variable Read-only

Cumulative energy delivered to the vehicle across all phases (kWh)

Register: H:374 Float Unit: kWh

Real Energy Delivered

Read
MODBUSR(H, 374, Float, 4)/1000
Real Power Sum Variable Read-only

Total real power across all phases (kW) with per-phase breakdown in service attributes

Register: H:344 Float Unit: kW
Service Attributes
Phase L1
Phase L2
Phase L3

Real Power Sum

Read
MODBUSR(H, 344, Float, 2)/1000
Service Attributes
Phase L1
MODBUSR(H, 338, Float, 2)/1000 + " kW";
Phase L2
MODBUSR(H, 340, Float, 2)/1000 + " kW";
Phase L3
MODBUSR(H, 342, Float, 2)/1000 + " kW";
Vehicle Connection Reed Contact Read-only

Vehicle plug detection — true when EV cable is connected (Mode 3 states B1/B2/C1/C2/D1/D2)

Register: H:1201 String switch-map

Vehicle Connection

Read
SWITCH(MODBUSR(H, 1201, String, 5),
"A", false,
"B1", true,
"B2", true,
"C1", true,
"C2", true,
"D1", true,
"D2", true,
"E", false,
"F", false,
Nan)
Voltage Phase L1-N Variable Read-only
Register: H:306 BigEndianFloat Unit: V

Voltage Phase L1-N

Read
MODBUSR(H, 306, BigEndianFloat, 2)
Voltage Phase L2-N Variable Read-only
Register: H:308 BigEndianFloat Unit: V

Voltage Phase L2-N

Read
MODBUSR(H, 308, BigEndianFloat, 2)
Voltage Phase L3-N Variable Read-only
Register: H:310 BigEndianFloat Unit: V

Voltage Phase L3-N

Read
MODBUSR(H, 310, BigEndianFloat, 2)
Connection: Modbus TCP • Slave ID: $[SlaveId]
Possible improvements (18)
  • H:312 Voltage L1-L2 — Float32 (2 words), V, line-to-line voltage
  • H:314 Voltage L2-L3 — Float32 (2 words), V, line-to-line voltage
  • H:316 Voltage L3-L1 — Float32 (2 words), V, line-to-line voltage
  • H:318 Current N — Float32 (2 words), A, neutral current
  • H:320 Current L1 — Float32 (2 words), A, phase L1 current
  • H:322 Current L2 — Float32 (2 words), A, phase L2 current
  • H:324 Current L3 — Float32 (2 words), A, phase L3 current
  • H:326 Current Sum — Float32 (2 words), A, total current
  • H:328 Power Factor L1/L2/L3/Sum — Float32 (2 words each), 4 registers at H:328-335
  • H:346 Apparent Power L1/L2/L3/Sum — Float32 (2 words each), VA, 4 registers at H:346-353
  • H:354 Reactive Power L1/L2/L3/Sum — Float32 (2 words each), VAr, 4 registers at H:354-361
  • H:362 Real Energy Delivered per-phase (L1/L2/L3) — Float64 (4 words each), Wh, per-phase breakdown (template only has sum)
  • H:378 Real Energy Consumed per-phase (L1/L2/L3) — Float64 (4 words each), Wh, per-phase breakdown (template only has sum)
  • H:394 Apparent Energy L1/L2/L3/Sum — Float64 (4 words each), VAh, 4 registers at H:394-409
  • H:410 Reactive Energy L1/L2/L3/Sum — Float64 (4 words each), VArh, 4 registers at H:410-425
  • H:1200 Availability — Uint16, 1=Operative
  • H:1206 Actual Applied Max Current — Float32 (2 words), A, currently applied current after ALB calculation
  • H:1208 Modbus Slave Max Current Valid Time — Uint32, seconds, remaining validity of written max current

Sources