{
  "spec_version": 1,
  "slug": "alfen-eve",
  "manufacturer": "Alfen",
  "model": "Eve Single / Eve Double (NG9xx platform)",
  "category": "EV charger",
  "supplier_url": "https://alfen.com/en/ev-charging",
  "default_configuration": {
    "protocol": "modbus_tcp",
    "port": 502,
    "unit_id": 1,
    "addressing": "zero_based",
    "byte_order": "BigEndian",
    "word_order": "HighFirst"
  },
  "coils": [],
  "discrete_inputs": [],
  "input_registers": [],
  "holding_registers": [
    {
      "address": 300,
      "count": 1,
      "name": "Meter state",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Bitmask: 0x01 = initialised, 0x02 = updated, 0x04 = warning, 0x08 = error."
    },
    {
      "address": 305,
      "count": 1,
      "name": "Meter type",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = RTU, 1 = TCP/IP, 2 = UDP, 3 = P1, 4 = other."
    },
    {
      "address": 306,
      "count": 2,
      "name": "Voltage L1-N",
      "data_type": "Float32",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 308,
      "count": 2,
      "name": "Voltage L2-N",
      "data_type": "Float32",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 310,
      "count": 2,
      "name": "Voltage L3-N",
      "data_type": "Float32",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 312,
      "count": 2,
      "name": "Voltage L1-L2",
      "data_type": "Float32",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 314,
      "count": 2,
      "name": "Voltage L2-L3",
      "data_type": "Float32",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 316,
      "count": 2,
      "name": "Voltage L3-L1",
      "data_type": "Float32",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 318,
      "count": 2,
      "name": "Current N",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 320,
      "count": 2,
      "name": "Current L1",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 322,
      "count": 2,
      "name": "Current L2",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 324,
      "count": 2,
      "name": "Current L3",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 326,
      "count": 2,
      "name": "Current sum",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 328,
      "count": 2,
      "name": "Power factor L1",
      "data_type": "Float32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 330,
      "count": 2,
      "name": "Power factor L2",
      "data_type": "Float32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 332,
      "count": 2,
      "name": "Power factor L3",
      "data_type": "Float32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 334,
      "count": 2,
      "name": "Power factor sum",
      "data_type": "Float32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 336,
      "count": 2,
      "name": "Frequency",
      "data_type": "Float32",
      "units": "Hz",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 338,
      "count": 2,
      "name": "Real power L1",
      "data_type": "Float32",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 340,
      "count": 2,
      "name": "Real power L2",
      "data_type": "Float32",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 342,
      "count": 2,
      "name": "Real power L3",
      "data_type": "Float32",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 344,
      "count": 2,
      "name": "Real power sum",
      "data_type": "Float32",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 346,
      "count": 2,
      "name": "Apparent power L1",
      "data_type": "Float32",
      "units": "VA",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 348,
      "count": 2,
      "name": "Apparent power L2",
      "data_type": "Float32",
      "units": "VA",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 350,
      "count": 2,
      "name": "Apparent power L3",
      "data_type": "Float32",
      "units": "VA",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 352,
      "count": 2,
      "name": "Apparent power sum",
      "data_type": "Float32",
      "units": "VA",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 354,
      "count": 2,
      "name": "Reactive power L1",
      "data_type": "Float32",
      "units": "VAr",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 356,
      "count": 2,
      "name": "Reactive power L2",
      "data_type": "Float32",
      "units": "VAr",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 358,
      "count": 2,
      "name": "Reactive power L3",
      "data_type": "Float32",
      "units": "VAr",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 360,
      "count": 2,
      "name": "Reactive power sum",
      "data_type": "Float32",
      "units": "VAr",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 362,
      "count": 4,
      "name": "Real energy delivered L1",
      "data_type": "Float64",
      "units": "Wh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 366,
      "count": 4,
      "name": "Real energy delivered L2",
      "data_type": "Float64",
      "units": "Wh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 370,
      "count": 4,
      "name": "Real energy delivered L3",
      "data_type": "Float64",
      "units": "Wh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 374,
      "count": 4,
      "name": "Real energy delivered sum",
      "data_type": "Float64",
      "units": "Wh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 378,
      "count": 4,
      "name": "Real energy consumed L1",
      "data_type": "Float64",
      "units": "Wh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 382,
      "count": 4,
      "name": "Real energy consumed L2",
      "data_type": "Float64",
      "units": "Wh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 386,
      "count": 4,
      "name": "Real energy consumed L3",
      "data_type": "Float64",
      "units": "Wh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 390,
      "count": 4,
      "name": "Real energy consumed sum",
      "data_type": "Float64",
      "units": "Wh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 394,
      "count": 4,
      "name": "Apparent energy L1",
      "data_type": "Float64",
      "units": "VAh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 398,
      "count": 4,
      "name": "Apparent energy L2",
      "data_type": "Float64",
      "units": "VAh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 402,
      "count": 4,
      "name": "Apparent energy L3",
      "data_type": "Float64",
      "units": "VAh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 406,
      "count": 4,
      "name": "Apparent energy sum",
      "data_type": "Float64",
      "units": "VAh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 410,
      "count": 4,
      "name": "Reactive energy L1",
      "data_type": "Float64",
      "units": "VArh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 414,
      "count": 4,
      "name": "Reactive energy L2",
      "data_type": "Float64",
      "units": "VArh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 418,
      "count": 4,
      "name": "Reactive energy L3",
      "data_type": "Float64",
      "units": "VArh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 422,
      "count": 4,
      "name": "Reactive energy sum",
      "data_type": "Float64",
      "units": "VArh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    }
  ],
  "combined_registers": [],
  "notes": "Source: Alfen, \"Implementation of Modbus Slave TCP/IP for Alfen NG9xx platform\", version 2.3 (30-10-2020), sections 3.3 and 3.4. Modbus slave (server) over TCP port 502, big-endian, function code 03 (read holding registers) only; up to two simultaneous masters, keep-alive timeout 60 s. The status and SCN registers of the charge point itself (100-178, 1100-1105, 1200-1215, 1400-1431: name, serial, station temperature, availability, Mode 3 state, actual applied max current, Modbus max current setpoint at 1210-1211, phases at 1215, SCN current limits) are served on slave address 200, while the per-socket energy-meter block listed here is served on slave address 1 (socket 1) and 2 (socket 2) -- the unit ID above is the socket 1 address. The station registers therefore need a second device entry with unit ID 200. Modbus read access and writing of max currents are licence-gated: the station needs the \"Active load balancing\" licence, \"Allow reading\" / \"Allow writing maximum currents\" must be enabled in the ACE Service Installer, and \"Energy Management System\" must be selected as data source; a recommended validity time is 300 s. The 64-bit meter timestamp (301-304), the station serial number (157-167) and the name strings are left out because their data type is not a plain 16/32/64-bit number or the address belongs to the other slave address."
}
