{
  "spec_version": 1,
  "slug": "mennekes-amtron-hcc3",
  "manufacturer": "MENNEKES",
  "model": "AMTRON Xtra / Premium (HCC3)",
  "category": "EV charger",
  "supplier_url": "https://update.mennekes.de/hcc3/1.13/Description%20Modbus_AMTRON%20HCC3_v01_2021-06-25_en.pdf",
  "default_configuration": {
    "protocol": "modbus_tcp",
    "port": 502,
    "unit_id": 255,
    "addressing": "zero_based",
    "byte_order": "BigEndian",
    "word_order": "HighFirst"
  },
  "coils": [
    {
      "address": 264,
      "count": 1,
      "name": "Reboot",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Coil 0x0108. 1 = reboot the charging station; the value always reads back as 0."
    }
  ],
  "discrete_inputs": [
    {
      "address": 512,
      "count": 1,
      "name": "Digital input: error input",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Discrete input 0x0200. 0 = inactive, 1 = active."
    },
    {
      "address": 513,
      "count": 1,
      "name": "Digital input: mirror contact",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Discrete input 0x0201."
    },
    {
      "address": 514,
      "count": 1,
      "name": "Digital input: socket locking",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Discrete input 0x0202."
    },
    {
      "address": 515,
      "count": 1,
      "name": "Digital output: shunt trip",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Discrete input 0x0203."
    },
    {
      "address": 516,
      "count": 1,
      "name": "Digital output: contactor",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Discrete input 0x0204. 0 = contactor open, 1 = contactor closed."
    },
    {
      "address": 517,
      "count": 1,
      "name": "Digital output: socket locking",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Discrete input 0x0205."
    },
    {
      "address": 518,
      "count": 1,
      "name": "Temperature sensor installed",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Discrete input 0x0206. 0 = not installed, 1 = installed."
    },
    {
      "address": 519,
      "count": 1,
      "name": "Local fuses installed",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Discrete input 0x0207. 0 = not installed, 1 = installed."
    },
    {
      "address": 520,
      "count": 1,
      "name": "Energy manager installed",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Discrete input 0x0208. 0 = not installed, 1 = installed."
    },
    {
      "address": 521,
      "count": 1,
      "name": "External tariff switch connected",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Discrete input 0x0209. 0 = not connected, 1 = connected."
    },
    {
      "address": 522,
      "count": 1,
      "name": "Monitoring relay wired to 1 phase only",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Discrete input 0x020A. 0 = factory wiring, 1 = monitoring relay wired to one phase."
    },
    {
      "address": 523,
      "count": 1,
      "name": "RFID authorization enabled",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Discrete input 0x020B. Depends on the AMTRON version."
    },
    {
      "address": 524,
      "count": 1,
      "name": "Power fail continue",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Discrete input 0x020C. 0 = disabled, 1 = enabled."
    },
    {
      "address": 525,
      "count": 1,
      "name": "Autostart charging",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Discrete input 0x020D. 0 = disabled, 1 = enabled."
    },
    {
      "address": 526,
      "count": 1,
      "name": "Stop button",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Discrete input 0x020E. 0 = disabled, 1 = enabled."
    },
    {
      "address": 527,
      "count": 1,
      "name": "Color scheme",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Discrete input 0x020F. 0 = IDLE blue / CHARGE green, 1 = IDLE green / CHARGE blue."
    },
    {
      "address": 528,
      "count": 1,
      "name": "RFID beep",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Discrete input 0x0210. Depends on the AMTRON version."
    },
    {
      "address": 529,
      "count": 1,
      "name": "WLAN communication",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Discrete input 0x0211. 0 = disabled, 1 = enabled."
    },
    {
      "address": 530,
      "count": 1,
      "name": "Currently summer time",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Discrete input 0x0212. 0 = offset +0 h, 1 = offset +1 h."
    },
    {
      "address": 531,
      "count": 1,
      "name": "EV wake-up",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Discrete input 0x0213. 0 = disabled, 1 = enabled."
    }
  ],
  "input_registers": [
    {
      "address": 768,
      "count": 1,
      "name": "HMI temperature, internal",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Input register 0x0300. Internal panel temperature, -55 to 125 °C."
    },
    {
      "address": 769,
      "count": 1,
      "name": "HMI temperature, external",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Input register 0x0301. External temperature, -30 to 100 °C."
    },
    {
      "address": 770,
      "count": 1,
      "name": "CP state",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Input register 0x0302. 0 = illegal/bad, 1 = A1, 2 = A2, 3 = B1, 4 = B2, 5 = C1, 6 = C2, 7 = D1, 8 = D2."
    },
    {
      "address": 771,
      "count": 1,
      "name": "PP state",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Input register 0x0303. 0 = illegal/bad, 1 = open, 2 = 13 A, 3 = 20 A, 4 = 32 A."
    },
    {
      "address": 772,
      "count": 1,
      "name": "HCC3 error code",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Input register 0x0304. 0 = no error, 10 = installation fault, 11 = controller fault, 12 = misconfiguration, 13 = overtemperature, 14 = mirror contactor error, 15 = invalid device time, 16 = energy manager connection error, 30 = device startup, 31 = internal test not passed, 32 = HMI no connection, 50 = badly plugged cable, 51 = wrong cable, 52 = defect cable, 100-103 = SCU-mode errors, 255 = unknown error."
    },
    {
      "address": 773,
      "count": 1,
      "name": "AMTRON state",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Input register 0x0305. 0 = idle, 1 = standby authorize, 2 = standby connect, 3 = charging, 4 = paused, 5 = terminated, 6 = error."
    },
    {
      "address": 774,
      "count": 1,
      "name": "Operation mode",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Input register 0x0306. 1 = remote, 2 = time-managed EN, 3 = external switch. In the operation modes 'Energy Manager' and 'SCU' the Modbus TCP server is disabled."
    },
    {
      "address": 775,
      "count": 1,
      "name": "Connector type",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Input register 0x0307. 0 = unknown, 1 = cable type 1, 2 = cable type 2, 3 = socket with shutter, 4 = socket with flip-top."
    },
    {
      "address": 776,
      "count": 1,
      "name": "Number of phases",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Input register 0x0308. 0 = unknown, 1 = 1 phase, 3 = 3 phases."
    },
    {
      "address": 777,
      "count": 1,
      "name": "Rated current",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Input register 0x0309. 0 or 6 to 32 A."
    },
    {
      "address": 778,
      "count": 1,
      "name": "Installation current",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Input register 0x030A. 0 or 6 to 32 A."
    },
    {
      "address": 779,
      "count": 2,
      "name": "Serial number",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Input registers 0x030B-0x030C. 1 to 9 digits, low word at 0x030B."
    },
    {
      "address": 781,
      "count": 2,
      "name": "Charging session meter count",
      "data_type": "UInt32",
      "units": "Wh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Input registers 0x030D-0x030E. Depends on the AMTRON version; low word at 0x030D."
    },
    {
      "address": 783,
      "count": 2,
      "name": "Actual power consumption",
      "data_type": "UInt32",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Input registers 0x030F-0x0310. Average active power derived from the delivered energy, low word at 0x030F. Only available with an energy meter installed, and meant for visualisation only: the vendor warns the value overshoots and is poorly damped."
    },
    {
      "address": 785,
      "count": 12,
      "name": "Wallbox name",
      "data_type": "Ascii",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Input registers 0x0311-0x031C. Max 22 characters, null-terminated."
    },
    {
      "address": 797,
      "count": 1,
      "name": "Max current tariff 1",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Input register 0x031D. 0 or 6 to 32 A."
    },
    {
      "address": 798,
      "count": 1,
      "name": "Start hour tariff 1",
      "data_type": "UInt16",
      "units": "h",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Input register 0x031E. 0 to 23."
    },
    {
      "address": 799,
      "count": 1,
      "name": "Start minute tariff 1",
      "data_type": "UInt16",
      "units": "min",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Input register 0x031F. 0 to 59."
    },
    {
      "address": 800,
      "count": 1,
      "name": "Price tariff 1",
      "data_type": "UInt16",
      "units": "0.1 ct/kWh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Input register 0x0320. Price per kWh in 1/10 eurocent, 0 to 9990."
    },
    {
      "address": 801,
      "count": 1,
      "name": "Max current tariff 2",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Input register 0x0321. 0 or 6 to 32 A."
    },
    {
      "address": 802,
      "count": 1,
      "name": "Start hour tariff 2",
      "data_type": "UInt16",
      "units": "h",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Input register 0x0322. 0 to 23."
    },
    {
      "address": 803,
      "count": 1,
      "name": "Start minute tariff 2",
      "data_type": "UInt16",
      "units": "min",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Input register 0x0323. 0 to 59."
    },
    {
      "address": 804,
      "count": 1,
      "name": "Price tariff 2",
      "data_type": "UInt16",
      "units": "0.1 ct/kWh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Input register 0x0324. Price per kWh in 1/10 eurocent, 0 to 9990."
    },
    {
      "address": 805,
      "count": 1,
      "name": "Planned minimum current",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Input register 0x0325. Planned minimum current per phase, 0 or 6 to 32 A."
    },
    {
      "address": 806,
      "count": 1,
      "name": "Planned maximum current",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Input register 0x0326. Planned maximum current per phase, 0 or 6 to 32 A."
    },
    {
      "address": 807,
      "count": 1,
      "name": "Planned minimum power",
      "data_type": "UInt16",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Input register 0x0327. Planned minimum power consumption, 0 or 1380 to 8970 W."
    },
    {
      "address": 808,
      "count": 1,
      "name": "Planned maximum power",
      "data_type": "UInt16",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Input register 0x0328. Planned maximum power consumption, 0 or 1380 to 22080 W."
    }
  ],
  "holding_registers": [
    {
      "address": 1024,
      "count": 1,
      "name": "Customer current limitation",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Holding register 0x0400. Current limitation in A, 0 or 6 to 32 A, bounded by the rated and installation current."
    },
    {
      "address": 1025,
      "count": 1,
      "name": "Change charge state",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "W",
      "description": "Holding register 0x0401. 1 = pause, 2 = continue after pause, 3 = terminate, 4 = start without UID; the register always reads back as 0."
    }
  ],
  "combined_registers": [],
  "notes": "Source: MENNEKES, \"Description: access to AMTRON via MODBUS-TCP\", document Description Modbus_AMTRON HCC3_v01_2021-06-25_en (HCC3 controller), sections 3.1 to 3.4 -- the vendor's own register table, reached without a login at update.mennekes.de. The earlier pass recorded the AMTRON family as publishable only from the MENNEKES customer portal; the HCC3 description is public now, so the skip was re-checked and lifted. The document gives every register twice, as hex data address and as Modicon number; the hex address is the value placed in the message, which is what this file lists (zero-based). Modbus TCP server on port 502, unit identifier 0xFF, function codes 01, 02, 03, 04, 05, 06 and 0F; the server must be enabled in the service interface and is inactive in the operation modes 'Energy Manager' and 'SCU'. This is the HCC3 controller family (AMTRON Xtra / Premium). The AMTRON Professional, Twincharge and AMEDIO lines run a Bender CC612/CC613 controller with a completely different map and are covered by the bender-cc612-cc613 seed instead."
}
