{
  "spec_version": 1,
  "slug": "anker-solix-x1",
  "manufacturer": "Anker",
  "model": "SOLIX X1 hybrid inverter",
  "category": "Solar inverter",
  "supplier_url": "https://www.anker.com/",
  "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": 10008,
      "count": 2,
      "name": "Battery power",
      "data_type": "Int32",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Signed; the cited template's own comment says positive means discharging and negative means charging."
    },
    {
      "address": 10014,
      "count": 1,
      "name": "Battery state of charge",
      "data_type": "UInt16",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 10183,
      "count": 2,
      "name": "Total PV power",
      "data_type": "Int32",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 10187,
      "count": 2,
      "name": "Total PV generation",
      "data_type": "UInt32",
      "units": "kWh",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 10264,
      "count": 2,
      "name": "Battery total discharge energy",
      "data_type": "UInt32",
      "units": "kWh",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 10632,
      "count": 1,
      "name": "Meter phase A voltage",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 10633,
      "count": 1,
      "name": "Meter phase B voltage",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 10634,
      "count": 1,
      "name": "Meter phase C voltage",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 10635,
      "count": 1,
      "name": "Meter phase A current",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 10636,
      "count": 1,
      "name": "Meter phase B current",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 10637,
      "count": 1,
      "name": "Meter phase C current",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 10638,
      "count": 2,
      "name": "Meter phase A active power",
      "data_type": "Int32",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 10640,
      "count": 2,
      "name": "Meter phase B active power",
      "data_type": "Int32",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 10642,
      "count": 2,
      "name": "Meter phase C active power",
      "data_type": "Int32",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 10644,
      "count": 2,
      "name": "Meter total active power",
      "data_type": "Int32",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Signed; the cited template's comment says positive means import and negative means export."
    },
    {
      "address": 10656,
      "count": 2,
      "name": "Meter total forward active energy",
      "data_type": "UInt32",
      "units": "kWh",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R"
    }
  ],
  "holding_registers": [],
  "combined_registers": [],
  "notes": "Source: the evcc meter template https://raw.githubusercontent.com/evcc-io/evcc/master/templates/definition/meter/anker-solix-x1.yaml - a community definition used here as a secondary source, because no Anker document with the register list was reachable. Every address, data type and scale in this file is the one that template encodes. Modbus TCP must be enabled in the Anker app; the template was tested on X1 firmware 1.0.16.1 and carries the vendor-independent warning that older or newer firmware versions may use different register addresses and therefore deliver wrong values, so check the meter block against your own unit before trusting it. Unit ID 1, port 502, all values in input registers. The meter block 10632-10645 is read as one 14-register block by the template; the rows above are that block plus the three energy counters. The template does not publish battery voltage/current, inverter temperature or the backup (EPS) values, so they are left out here instead of being guessed, and the battery charge energy counter is not in the template either (only total discharge, 10264)."
}
