{
  "spec_version": 1,
  "slug": "vool-charger",
  "manufacturer": "VOOL",
  "model": "VOOL Charger (AC wallbox)",
  "category": "EV charger",
  "supplier_url": "https://support.vool.com/en/articles/12959952-charger-modbus-manual",
  "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": 100,
      "count": 1,
      "name": "Charger state",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = undefined, 1 = available, 2 = preparing, 3 = charging, 4 = suspended EV, 5 = suspended EVSE, 6 = finishing, 7 = reserved, 8 = unavailable, 9 = faulted, 10 = starting charging."
    },
    {
      "address": 101,
      "count": 1,
      "name": "EV phases",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Phases the EV is using (not the grid phases): bit0 = L1, bit1 = L2, bit2 = L3."
    },
    {
      "address": 102,
      "count": 1,
      "name": "AC current L1",
      "data_type": "Int16",
      "units": "A",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R",
      "description": "Decimal point 2."
    },
    {
      "address": 103,
      "count": 1,
      "name": "AC current L2",
      "data_type": "Int16",
      "units": "A",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R",
      "description": "Decimal point 2."
    },
    {
      "address": 104,
      "count": 1,
      "name": "AC current L3",
      "data_type": "Int16",
      "units": "A",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R",
      "description": "Decimal point 2."
    },
    {
      "address": 105,
      "count": 1,
      "name": "Voltage L1",
      "data_type": "Int16",
      "units": "V",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Decimal point 1."
    },
    {
      "address": 106,
      "count": 1,
      "name": "Voltage L2",
      "data_type": "Int16",
      "units": "V",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Decimal point 1."
    },
    {
      "address": 107,
      "count": 1,
      "name": "Voltage L3",
      "data_type": "Int16",
      "units": "V",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Decimal point 1."
    },
    {
      "address": 108,
      "count": 1,
      "name": "Active power total",
      "data_type": "Int16",
      "units": "kW",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R",
      "description": "Decimal point 2."
    },
    {
      "address": 109,
      "count": 1,
      "name": "Active power L1",
      "data_type": "Int16",
      "units": "kW",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R",
      "description": "Decimal point 2."
    },
    {
      "address": 110,
      "count": 1,
      "name": "Active power L2",
      "data_type": "Int16",
      "units": "kW",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R",
      "description": "Decimal point 2."
    },
    {
      "address": 111,
      "count": 1,
      "name": "Active power L3",
      "data_type": "Int16",
      "units": "kW",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R",
      "description": "Decimal point 2."
    },
    {
      "address": 200,
      "count": 2,
      "name": "Energy imported",
      "data_type": "UInt32",
      "units": "Wh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "MSB in register 200, LSB in 201."
    },
    {
      "address": 500,
      "count": 1,
      "name": "Charging command",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "W",
      "description": "1 = start charging, 2 = stop charging. Commands act on the write event; re-read register 100 for the result."
    },
    {
      "address": 501,
      "count": 1,
      "name": "External current limit",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "RW",
      "description": "Decimal point 2."
    },
    {
      "address": 502,
      "count": 1,
      "name": "External allowed phases",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Grid input phases the charger may use: bit0 = L1, bit1 = L2, bit2 = L3. Max 10 switching operations per hour."
    }
  ],
  "combined_registers": [],
  "notes": "Source: VOOL \"Charger Modbus manual\", the vendor interface manual published in VOOL's help centre (https://support.vool.com/en/articles/12959952-charger-modbus-manual), revision dated 22.01.2026 for firmware v1.9.40 (gateway v1.17.7, MCU v2.12.3). The manual states port 502 (TCP and UDP), big-endian byte order, holding registers only, and prints plain register addresses (100, 200, 500, 502), stored here unchanged as zero-based wire addresses. The decimal-point column is applied as scale factor (0.01 A on the currents and on external current limit, 0.1 V on the voltages, 0.01 kW on the power values). Register 502 is a register address, not the TCP port. Modbus is disabled by default and must be enabled with parameter 522 (or remotely by VOOL support). The manual documents no unit identifier: unit 1 is a placeholder, and the user must set the charger's own Modbus address. Register 500 is write-only; reading it returns an unspecified value. The manual is a live vendor help-centre page rather than a file, so there is no stable file hash to quote; the page itself states the revision date (22.01.2026) and the firmware versions above."
}
