{
  "spec_version": 1,
  "slug": "go-e-charger",
  "manufacturer": "go-e",
  "model": "Charger Gemini / Gemini flex / CORE / HOME+ (V3)",
  "category": "EV charger",
  "supplier_url": "https://go-e.com/en/support/instructions",
  "default_configuration": {
    "protocol": "modbus_tcp",
    "port": 502,
    "unit_id": 1,
    "addressing": "zero_based",
    "byte_order": "BigEndian",
    "word_order": "HighFirst"
  },
  "coils": [],
  "discrete_inputs": [],
  "input_registers": [
    {
      "address": 100,
      "count": 1,
      "name": "Car state",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = unknown / charging station defective, 1 = charging station ready, no car, 2 = car is charging, 3 = waiting for car, 4 = charging finished, car still connected."
    },
    {
      "address": 101,
      "count": 1,
      "name": "Cable ampere coding",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Type 2 cable coding: 13 to 32 = ampere coding, 0 = no cable."
    },
    {
      "address": 105,
      "count": 2,
      "name": "Firmware version",
      "data_type": "Ascii",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Firmware version as ASCII (4 bytes)."
    },
    {
      "address": 107,
      "count": 1,
      "name": "Error",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = RCCB (residual current circuit breaker), 3 = phase disturbance, 8 = no ground (ground detection), 10 and any other value = internal error."
    },
    {
      "address": 108,
      "count": 2,
      "name": "Voltage L1",
      "data_type": "UInt32",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 110,
      "count": 2,
      "name": "Voltage L2",
      "data_type": "UInt32",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 112,
      "count": 2,
      "name": "Voltage L3",
      "data_type": "UInt32",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 114,
      "count": 2,
      "name": "Current L1",
      "data_type": "UInt32",
      "units": "A",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Raw value in 0.1 A."
    },
    {
      "address": 116,
      "count": 2,
      "name": "Current L2",
      "data_type": "UInt32",
      "units": "A",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Raw value in 0.1 A."
    },
    {
      "address": 118,
      "count": 2,
      "name": "Current L3",
      "data_type": "UInt32",
      "units": "A",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Raw value in 0.1 A."
    },
    {
      "address": 120,
      "count": 2,
      "name": "Power total",
      "data_type": "UInt32",
      "units": "kW",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R",
      "description": "Raw value in 0.01 kW."
    },
    {
      "address": 128,
      "count": 2,
      "name": "Energy total",
      "data_type": "UInt32",
      "units": "kWh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Total charged energy in 0.1 kWh."
    },
    {
      "address": 132,
      "count": 2,
      "name": "Energy, current charge",
      "data_type": "UInt32",
      "units": "Ws",
      "scale_factor": 10,
      "offset": 0,
      "access": "R",
      "description": "Energy of the running charging process in deka-watt-seconds, i.e. raw x 10 Ws (100000 = 1000000 Ws = 277 Wh)."
    },
    {
      "address": 144,
      "count": 2,
      "name": "Voltage N",
      "data_type": "UInt32",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 146,
      "count": 2,
      "name": "Power L1",
      "data_type": "UInt32",
      "units": "kW",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Raw value in 0.1 kW."
    },
    {
      "address": 148,
      "count": 2,
      "name": "Power L2",
      "data_type": "UInt32",
      "units": "kW",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Raw value in 0.1 kW."
    },
    {
      "address": 150,
      "count": 2,
      "name": "Power L3",
      "data_type": "UInt32",
      "units": "kW",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Raw value in 0.1 kW."
    },
    {
      "address": 152,
      "count": 2,
      "name": "Power factor L1",
      "data_type": "UInt32",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 154,
      "count": 2,
      "name": "Power factor L2",
      "data_type": "UInt32",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 156,
      "count": 2,
      "name": "Power factor L3",
      "data_type": "UInt32",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 158,
      "count": 2,
      "name": "Power factor N",
      "data_type": "UInt32",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 202,
      "count": 1,
      "name": "Adapter input",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = no adapter, 1 = 16 A adapter connected."
    },
    {
      "address": 203,
      "count": 1,
      "name": "Unlocked by",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Number of the RFID card that activated the current charging process."
    },
    {
      "address": 205,
      "count": 1,
      "name": "Phases",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Binary flags 0b00ABCDEF: A/B/C = phase 3/2/1 before the contactor, D/E/F = phase 3/2/1 after the contactor. 0b00001000 = phase 1 available, 0b00111000 = phases 1-3 available."
    },
    {
      "address": 304,
      "count": 6,
      "name": "Serial number",
      "data_type": "Ascii",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Serial number of the charger as ASCII (12 bytes)."
    },
    {
      "address": 315,
      "count": 4,
      "name": "IP address",
      "data_type": "Ascii",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "IP address, one byte per register (8 bytes)."
    }
  ],
  "holding_registers": [
    {
      "address": 200,
      "count": 1,
      "name": "Allow charging",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "PWM signal allowed: 0 = no, 1 = yes."
    },
    {
      "address": 201,
      "count": 1,
      "name": "Access state",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Access control: 0 = open, 1 = RFID / app needed, 2 = electricity price / automatic, 3 = scheduler."
    },
    {
      "address": 204,
      "count": 1,
      "name": "Cable lock mode",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = lock while the car is connected, 1 = unlock automatically after charging, 2 = always keep the cable locked."
    },
    {
      "address": 206,
      "count": 1,
      "name": "LED brightness",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = LED off, 255 = maximum brightness."
    },
    {
      "address": 207,
      "count": 1,
      "name": "LED save energy",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = energy-saving function deactivated, 1 = LED switches off automatically after 10 s."
    },
    {
      "address": 208,
      "count": 1,
      "name": "Electricity prices, minimum hours",
      "data_type": "UInt16",
      "units": "h",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Minimum number of hours that must be charged in the electricity-price-automatic mode."
    },
    {
      "address": 209,
      "count": 1,
      "name": "Electricity prices, finished by",
      "data_type": "UInt16",
      "units": "h",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Hour by which the minimum charging time has to be reached in the electricity-price-automatic mode."
    },
    {
      "address": 210,
      "count": 1,
      "name": "Electricity prices, zone",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = Austria, 1 = Germany (aWattar price zone)."
    },
    {
      "address": 211,
      "count": 1,
      "name": "Ampere maximum",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Absolute maximum for the current setting."
    },
    {
      "address": 212,
      "count": 1,
      "name": "Ampere level 1",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Push-button level: 6 to 32 = ampere level, 0 = level deactivated."
    },
    {
      "address": 213,
      "count": 1,
      "name": "Ampere level 2",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Push-button level: 6 to 32 = ampere level, 0 = level deactivated."
    },
    {
      "address": 214,
      "count": 1,
      "name": "Ampere level 3",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Push-button level: 6 to 32 = ampere level, 0 = level deactivated."
    },
    {
      "address": 215,
      "count": 1,
      "name": "Ampere level 4",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Push-button level: 6 to 32 = ampere level, 0 = level deactivated."
    },
    {
      "address": 216,
      "count": 1,
      "name": "Ampere level 5",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Push-button level: 6 to 32 = ampere level, 0 = level deactivated."
    },
    {
      "address": 217,
      "count": 1,
      "name": "Cloud disabled",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = cloud enabled, 1 = cloud disabled."
    },
    {
      "address": 218,
      "count": 1,
      "name": "Norway mode",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = deactivated (ground detection active), 1 = activated (no ground detection, only for IT networks)."
    },
    {
      "address": 299,
      "count": 1,
      "name": "Ampere volatile",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Current for the PWM signalling in whole amps, 6 to 32 A. Not written to EEPROM; after a reboot the last EEPROM value (300) applies. Intended for energy control."
    },
    {
      "address": 300,
      "count": 1,
      "name": "Ampere EEPROM",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Current for the PWM signalling in whole amps, 6 to 32 A, persisted in the EEPROM (about 100000 write cycles)."
    }
  ],
  "combined_registers": [],
  "notes": "Source: go-e, \"GO-E Charger Modbus TCP/IP Documentation English\", version 1.0, 2020-10-01, published by the vendor as go-eCharger Modbus TCP API v1 in its own repository (https://github.com/goecharger/go-eCharger-API-v1, file \"go-eCharger Modbus TCP API v1 EN.md\"). The document fixes everything this seed encodes: port 502 over WLAN, unit ID 1, \"the Register ID is 0-indexed\" (so the numbers below are wire addresses), multi-register values are big-endian 16-bit words, input registers are read-only and holding registers are readable and writable. The API has to be enabled in the go-e app under advanced settings and needs firmware 0.40 or newer. Earlier passes recorded go-e as an HTTP-only device; the vendor Modbus TCP document above lifts that skip. Model scope follows the vendor API family and the evcc go-e-v3 template: Charger Gemini, Gemini flex, CORE, HOME+ and V3. Deliberately left out because the document's own columns cannot be paired: MAC (301-303, a 48-bit integer, and this schema has no 48-bit type), SUBNET (319-322, a 64-bit integer), HOSTNAME (310-314, five registers listed against a six-register length column) and GATEWAY (323-326, four registers against an \"ascii (4 byte)\" length). The register names in the table are the vendor's API keys (for example AMLERE_L2 for level 2, a typo in the document); the display names here are the same keys spelled out. The power rows are in 0.1 kW and the session energy in deka-watt-seconds, which is why the session row carries a factor of 10 and a unit of Ws instead of a kWh scale that would not be exact."
}
