{
  "spec_version": 1,
  "slug": "mennekes-amtron-compact-2-0s",
  "manufacturer": "MENNEKES",
  "model": "AMTRON Compact 2.0s / 4You 300 / Start 2.0s",
  "category": "EV charger",
  "supplier_url": "https://www.mennekes.de/emobility/wissen/kompatible-systeme/modbus-rtu/",
  "default_configuration": {
    "protocol": "modbus_tcp",
    "port": 502,
    "unit_id": 50,
    "addressing": "zero_based",
    "byte_order": "BigEndian",
    "word_order": "HighFirst",
    "native_interface": "rs485",
    "serial": {
      "parity": "None",
      "baud_rate": 57600,
      "data_bits": 8,
      "stop_bits": 2
    }
  },
  "coils": [],
  "discrete_inputs": [],
  "input_registers": [],
  "holding_registers": [
    {
      "address": 0,
      "count": 1,
      "name": "Modbus register layout version",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0x0000. Internal Modbus register layout version: v01.00 = 0x0100, v01.03 = 0x0103. Not the firmware version."
    },
    {
      "address": 1,
      "count": 8,
      "name": "Firmware version",
      "data_type": "Ascii",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0x0001, 16 bytes."
    },
    {
      "address": 19,
      "count": 8,
      "name": "Serial number",
      "data_type": "Ascii",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0x0013, 16 bytes."
    },
    {
      "address": 27,
      "count": 8,
      "name": "MENNEKES article number",
      "data_type": "Ascii",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0x001B, 16 bytes. Article number as on the type plate, e.g. 1313201205 for an AMTRON 4You 310 11."
    },
    {
      "address": 256,
      "count": 1,
      "name": "EVSE state",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0x0100. 0 = not initialized, 1 = idle (no EV connected), 2 = EV connected (no charging current signalled), 3 = preconditions valid but not charging yet, 4 = ready to charge, 5 = charging, 6 = error, 7 = service mode."
    },
    {
      "address": 257,
      "count": 1,
      "name": "Authorization status",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0x0101. 0 = not used (idle), 1 = authorized (charging released), 2 = not authorized (charging not released). Covers RFID and energy-manager authorization."
    },
    {
      "address": 258,
      "count": 1,
      "name": "Downgrade",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0x0102. External downgrade signal: 0 = not relevant (no EV connected), 1 = current not downgraded, 2 = current downgraded."
    },
    {
      "address": 259,
      "count": 1,
      "name": "Phase rotation",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0x0103. Order of the connected phases, relevant for load management: 0 = L1-L2-L3, 1 = L2-L3-L1, 2 = L3-L1-L2."
    },
    {
      "address": 264,
      "count": 1,
      "name": "CP state",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0x0108. Control-pilot state between EVSE and EV: 0 = init, 10 = A1 (no EV), 11 = B1, 12 = C1, 13 = D1, 14/15 = E/F (error), 26 = A2, 27 = B2, 28 = C2, 29 = D2."
    },
    {
      "address": 276,
      "count": 2,
      "name": "Signalled current",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0x0114. Charging current signalled to the EV on the CP line, after any active downgrade."
    },
    {
      "address": 768,
      "count": 2,
      "name": "Downgrade current",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0x0300-0x0301. Charging-current limitation while the external downgrade signal is active."
    },
    {
      "address": 770,
      "count": 2,
      "name": "Charging current, energy manager",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0x0302-0x0303. The EMS current setpoint. 0 = no limitation, the EVSE signals its maximum (16/32 A); 0.01 to 5.99 A = invalid, the EVSE signals 0 A; 6 A and above = valid, bounded by the station's own limit. Values above the configured maximum are limited automatically."
    },
    {
      "address": 772,
      "count": 2,
      "name": "Maximal current, house (DIP)",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0x0304-0x0305. Installation current from DIP switches 6-8 on bank S2: 0 = 63 A, 1 = 50 A, 2 = 40 A, 3 = 35 A, 4 = 32 A, 5 = 25 A, 6 = 20 A, 7 = 16 A."
    },
    {
      "address": 774,
      "count": 2,
      "name": "Maximal EVSE current",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0x0306-0x0307. Maximum current of the station as configured during installation: 0 = 32 A on a 22 kW unit and 16 A on an 11 kW unit, then 1 = 25 A/16 A, 2 = 20 A/16 A, 3 = 16 A, 4 = 13 A, 5 = 10 A, 6 = 6 A."
    },
    {
      "address": 778,
      "count": 1,
      "name": "Phase switching mode",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0x030A. 0 = solar only, 1 phase; 1 = solar only, 3 phases; 2 = solar dynamic, 1 or 3 phases (internal solar algorithm)."
    },
    {
      "address": 780,
      "count": 1,
      "name": "Phase options, hardware",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0x030C. 0 = hardware 1 phase only, 1 = hardware 3 phases only, 2 = hardware 1 or 3 phases (phase switching possible)."
    },
    {
      "address": 781,
      "count": 1,
      "name": "Cable lock setting",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0x030D. 0 = permanent cable lock not enabled or unavailable, 1 = enabled."
    },
    {
      "address": 782,
      "count": 1,
      "name": "Energy manager fallback current",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0x030E. Behaviour when the energy-manager heartbeat is missing during a session: 0 = fallback handling disabled (continue with the last values), 1 = fallback handling enabled (pause charging on heartbeat timeout), 6 to 32 = fallback current in A."
    },
    {
      "address": 783,
      "count": 1,
      "name": "Grid imbalance",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0x030F. 0 = disabled, 1 = enabled."
    },
    {
      "address": 784,
      "count": 1,
      "name": "Grid imbalance threshold",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0x0310. Threshold of the grid-imbalance detection, documented range 10 to 30 A."
    },
    {
      "address": 785,
      "count": 1,
      "name": "Grid phases connected",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0x0311. Number of phases connected to the grid: 0 = L1, 2 = L1, L2 and L3."
    },
    {
      "address": 786,
      "count": 1,
      "name": "Authorization",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0x0312. 0 = disabled, 1 = enabled."
    },
    {
      "address": 787,
      "count": 1,
      "name": "Solar supported charging current (Sunshine+)",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0x0313. Minimum charging current in the solar-supported charging mode, 6 to 32 A."
    },
    {
      "address": 788,
      "count": 1,
      "name": "Phase switching pause",
      "data_type": "UInt16",
      "units": "s",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0x0314. Time between a phase switch from 1 to 3 phases and vice versa, 0 to 1200 s."
    },
    {
      "address": 1280,
      "count": 2,
      "name": "Current L1",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0x0500-0x0501. RMS output current of phase L1."
    },
    {
      "address": 1282,
      "count": 2,
      "name": "Current L2",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0x0502-0x0503. RMS output current of phase L2."
    },
    {
      "address": 1284,
      "count": 2,
      "name": "Current L3",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0x0504-0x0505. RMS output current of phase L3."
    },
    {
      "address": 1286,
      "count": 2,
      "name": "Voltage L1",
      "data_type": "Float32",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0x0506-0x0507. RMS output voltage of phase L1."
    },
    {
      "address": 1288,
      "count": 2,
      "name": "Voltage L2",
      "data_type": "Float32",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0x0508-0x0509. RMS output voltage of phase L2."
    },
    {
      "address": 1290,
      "count": 2,
      "name": "Voltage L3",
      "data_type": "Float32",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0x050A-0x050B. RMS output voltage of phase L3."
    },
    {
      "address": 1292,
      "count": 2,
      "name": "Power L1",
      "data_type": "Float32",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0x050C-0x050D. Actual power on phase L1."
    },
    {
      "address": 1294,
      "count": 2,
      "name": "Power L2",
      "data_type": "Float32",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0x050E-0x050F. Actual power on phase L2."
    },
    {
      "address": 1296,
      "count": 2,
      "name": "Power L3",
      "data_type": "Float32",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0x0510-0x0511. Actual power on phase L3."
    },
    {
      "address": 1298,
      "count": 2,
      "name": "Power overall",
      "data_type": "Float32",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0x0512-0x0513. Actual overall power on all phases."
    },
    {
      "address": 2304,
      "count": 2,
      "name": "Temperature",
      "data_type": "Float32",
      "units": "°C",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0x0900-0x0901. Temperature inside the EVSE."
    },
    {
      "address": 2816,
      "count": 2,
      "name": "Max current, session",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0x0B00-0x0B01. Maximum charging current of the session, evaluated from every static restriction (installation current, cable, ...)."
    },
    {
      "address": 2818,
      "count": 2,
      "name": "Charged energy, session",
      "data_type": "Float32",
      "units": "kWh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0x0B02-0x0B03. Energy transferred within the current charging session."
    },
    {
      "address": 2820,
      "count": 2,
      "name": "Duration, session",
      "data_type": "UInt32",
      "units": "s",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0x0B04-0x0B05. Duration of the current charging session in seconds."
    },
    {
      "address": 2822,
      "count": 1,
      "name": "Detected EV phases",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0x0B06. 0 = not initialised, 1 = 1 phase, 2 = 2 phases, 3 = 3 phases detected."
    },
    {
      "address": 3328,
      "count": 1,
      "name": "Heartbeat, energy manager",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "W",
      "description": "0x0D00. Write 0x55AA (21930) at least every 10 s. Without the heartbeat the station turns into the error state when no fallback current (0x030E) is configured."
    },
    {
      "address": 3330,
      "count": 1,
      "name": "Cable lock status",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0x0D02. 0 = unknown, 1 = cable unlocked, 2 = cable locked, 3 = fixed cable."
    },
    {
      "address": 3331,
      "count": 1,
      "name": "Solar charging mode",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0x0D03. 0 = solar mode not active, 1 = fast charging (standard), 2 = solar charging (Sunshine), 3 = solar-supported charging (Sunshine+). Triggers the HMI only: the algorithm stays with the energy manager, and solar mode also has to be enabled with DIP 7."
    },
    {
      "address": 3332,
      "count": 1,
      "name": "Requested phases",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0x0D04. 0 = regular charging on all available phases, 1 = force charging on one phase only. Ignored when the hardware does not support phase switching (0x030C). The station performs the switch itself following CharIN, including the pause from 0x0314."
    },
    {
      "address": 3333,
      "count": 1,
      "name": "Charging release, energy manager",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0x0D05. 0 = charging not allowed (relays open), 1 = charging allowed (relays closed)."
    },
    {
      "address": 3334,
      "count": 1,
      "name": "Lock EVSE",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0x0D06. 0 = not locked, 1 = locked (charging prevented)."
    },
    {
      "address": 3353,
      "count": 1,
      "name": "System restart",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "W",
      "description": "0x0D19. Send 0xBB once to restart the system; only in the idle state."
    },
    {
      "address": 3584,
      "count": 1,
      "name": "Active error code",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0x0E00. 0 = no error, 200 = energy manager not available (no heartbeat), 2011 = EV overcurrent, 2300-2305 = over-/undervoltage on L1/L2/L3, 2323 = connected-phases mismatch (the last three only with voltage detection active)."
    },
    {
      "address": 3585,
      "count": 1,
      "name": "Master lost fallback state",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0x0E01. 0 = not active, 1 = active (energy manager currently unavailable)."
    },
    {
      "address": 3586,
      "count": 1,
      "name": "Switched phases",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0x0E02. 0 = regular charging on all available phases, 1 = single-phase charging."
    },
    {
      "address": 4096,
      "count": 2,
      "name": "Charged energy, total",
      "data_type": "Float32",
      "units": "kWh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0x1000-0x1001. Cumulative energy on the AC port over all time; not usable for billing."
    },
    {
      "address": 4098,
      "count": 2,
      "name": "Charging sessions, total",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0x1002-0x1003. Total number of charging sessions."
    }
  ],
  "combined_registers": [],
  "notes": "Source: MENNEKES, \"AMTRON 4You 300 / AMTRON Compact 2.0s / AMTRON Start 2.0s - Modbus RTU Specification\", doc. revision 2.5, 2025-07-11 (register settings v01.03, from software 2023.21.11024), vendor PDF at https://www.mennekes.de/fileadmin/MEN-Deutschland/emobility/01_documents/04_installer/Modbus_RTU_Specification_AMTRON_4You300_Compact_2.0s_Start_2.0s-v2.5.pdf, linked from the MENNEKES Modbus RTU page given as supplier_url. Section 1 fixes the factory RS-485 settings recorded here (57600 bit/s, 8 data bits, no parity, 2 stop bits, big endian) with default Modbus address 50, settable only between 10 and 50, in the satellite mode enabled by DIP 4 and 5 on bank S1. Reads are FC3 or FC4, writes FC6/FC16; the appendix lists hex addresses starting at 0x0000, so the addresses below are the vendor's hex values as decimals with zero_based framing, and the worked EMS sequence (0x0D00 = 0x55AA heartbeat, 0x0D05 release, 0x0302 current limit) confirms that numbering. Rows sit in holding registers because the station answers both FC3 and FC4 with the same data and the writable ones must be holding registers. The three models in the title share this one map (evcc's 'mennekes-compact' also covers the Kostal Enector, the same hardware). The AMTRON HCC3 family is a different map and stays in mennekes-amtron-hcc3; AMTRON Professional/AMEDIO run a Bender CC612/CC613 and stay in bender-cc612-cc613. Caveats from the document: a master heartbeat is needed at least every 10 s, the release must be 1 and the energy-manager limit at least 6 A; 0x0302 = 0 means no limitation (the station signals its maximum), 0.01 to 5.99 A are treated as 0 A, and after a reboot or a lost energy manager the station only returns to idle after 0x0D00, 0x0D05 and 0x0302 are written. Dynamic phase switching needs an 11 kW unit (0x030C = 2). Every row of the appendix table is included."
}
