{
  "spec_version": 1,
  "slug": "growatt-min-mod-sph",
  "manufacturer": "Growatt",
  "model": "MIN / MOD / SPH",
  "category": "Solar inverter",
  "supplier_url": "https://www.growatt.com/products/min-3000~6000tl-x",
  "default_configuration": {
    "protocol": "modbus_tcp",
    "port": 502,
    "unit_id": 1,
    "addressing": "zero_based",
    "byte_order": "BigEndian",
    "word_order": "HighFirst",
    "native_interface": "rs485",
    "serial": {
      "parity": "None",
      "baud_rate": 9600,
      "data_bits": 8,
      "stop_bits": 1
    }
  },
  "coils": [],
  "discrete_inputs": [],
  "input_registers": [
    {
      "address": 0,
      "count": 1,
      "name": "Inverter status",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = waiting, 1 = normal, 3 = fault."
    },
    {
      "address": 1,
      "count": 2,
      "name": "PV input power, total",
      "data_type": "UInt32",
      "units": "W",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3,
      "count": 1,
      "name": "PV1 voltage",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4,
      "count": 1,
      "name": "PV1 current",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 5,
      "count": 2,
      "name": "PV1 power",
      "data_type": "UInt32",
      "units": "W",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 7,
      "count": 1,
      "name": "PV2 voltage",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 8,
      "count": 1,
      "name": "PV2 current",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 9,
      "count": 2,
      "name": "PV2 power",
      "data_type": "UInt32",
      "units": "W",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 11,
      "count": 1,
      "name": "PV3 voltage",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 12,
      "count": 1,
      "name": "PV3 current",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 13,
      "count": 2,
      "name": "PV3 power",
      "data_type": "UInt32",
      "units": "W",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 35,
      "count": 2,
      "name": "AC output power, total",
      "data_type": "Int32",
      "units": "W",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 37,
      "count": 1,
      "name": "AC output frequency",
      "data_type": "UInt16",
      "units": "Hz",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 38,
      "count": 1,
      "name": "AC output voltage, phase R",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 39,
      "count": 1,
      "name": "AC output current, phase R",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 40,
      "count": 2,
      "name": "AC output power, phase R",
      "data_type": "Int32",
      "units": "VA",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 42,
      "count": 1,
      "name": "AC output voltage, phase S",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 43,
      "count": 1,
      "name": "AC output current, phase S",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 44,
      "count": 2,
      "name": "AC output power, phase S",
      "data_type": "Int32",
      "units": "VA",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 46,
      "count": 1,
      "name": "AC output voltage, phase T",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 47,
      "count": 1,
      "name": "AC output current, phase T",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 48,
      "count": 2,
      "name": "AC output power, phase T",
      "data_type": "Int32",
      "units": "VA",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 50,
      "count": 1,
      "name": "Line voltage R-S",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 51,
      "count": 1,
      "name": "Line voltage S-T",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 52,
      "count": 1,
      "name": "Line voltage T-R",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 53,
      "count": 2,
      "name": "Energy today",
      "data_type": "UInt32",
      "units": "kWh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 55,
      "count": 2,
      "name": "Energy total",
      "data_type": "UInt32",
      "units": "kWh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 57,
      "count": 2,
      "name": "Operating time, total",
      "data_type": "UInt32",
      "units": "s",
      "scale_factor": 0.5,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 59,
      "count": 2,
      "name": "PV1 energy today",
      "data_type": "UInt32",
      "units": "kWh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 61,
      "count": 2,
      "name": "PV1 energy total",
      "data_type": "UInt32",
      "units": "kWh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 63,
      "count": 2,
      "name": "PV2 energy today",
      "data_type": "UInt32",
      "units": "kWh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 65,
      "count": 2,
      "name": "PV2 energy total",
      "data_type": "UInt32",
      "units": "kWh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 67,
      "count": 2,
      "name": "PV3 energy today",
      "data_type": "UInt32",
      "units": "kWh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 69,
      "count": 2,
      "name": "PV3 energy total",
      "data_type": "UInt32",
      "units": "kWh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 93,
      "count": 1,
      "name": "Inverter temperature",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 94,
      "count": 1,
      "name": "IPM temperature",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 95,
      "count": 1,
      "name": "Boost converter temperature",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 98,
      "count": 1,
      "name": "Positive bus voltage",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 99,
      "count": 1,
      "name": "Negative bus voltage",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 100,
      "count": 1,
      "name": "Power factor",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 to 10000 = underexcited, 10001 to 20000 = overexcited."
    },
    {
      "address": 104,
      "count": 1,
      "name": "Derating mode",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 105,
      "count": 1,
      "name": "Fault code",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 107,
      "count": 1,
      "name": "Fault subcode",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 110,
      "count": 1,
      "name": "Warning high word",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 111,
      "count": 1,
      "name": "Warning subcode",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 112,
      "count": 2,
      "name": "AC charge energy today",
      "data_type": "UInt32",
      "units": "kWh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Hybrid models only."
    },
    {
      "address": 114,
      "count": 2,
      "name": "AC charge energy total",
      "data_type": "UInt32",
      "units": "kWh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Hybrid models only."
    },
    {
      "address": 1009,
      "count": 2,
      "name": "Battery discharge power",
      "data_type": "UInt32",
      "units": "W",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1011,
      "count": 2,
      "name": "Battery charge power",
      "data_type": "UInt32",
      "units": "W",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1013,
      "count": 1,
      "name": "Battery voltage",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1014,
      "count": 1,
      "name": "Battery state of charge",
      "data_type": "UInt16",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1015,
      "count": 2,
      "name": "Power to user, phase R",
      "data_type": "UInt32",
      "units": "W",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1017,
      "count": 2,
      "name": "Power to user, phase S",
      "data_type": "UInt32",
      "units": "W",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1019,
      "count": 2,
      "name": "Power to user, phase T",
      "data_type": "UInt32",
      "units": "W",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1021,
      "count": 2,
      "name": "Power to user, total",
      "data_type": "UInt32",
      "units": "W",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1029,
      "count": 2,
      "name": "Power to grid, total",
      "data_type": "Int32",
      "units": "W",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1037,
      "count": 2,
      "name": "Power to load, total",
      "data_type": "UInt32",
      "units": "W",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1040,
      "count": 1,
      "name": "Battery temperature",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1044,
      "count": 2,
      "name": "Grid import energy today",
      "data_type": "UInt32",
      "units": "kWh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1046,
      "count": 2,
      "name": "Grid import energy total",
      "data_type": "UInt32",
      "units": "kWh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1048,
      "count": 2,
      "name": "Grid export energy today",
      "data_type": "UInt32",
      "units": "kWh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1050,
      "count": 2,
      "name": "Grid export energy total",
      "data_type": "UInt32",
      "units": "kWh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1052,
      "count": 2,
      "name": "Battery discharge energy today",
      "data_type": "UInt32",
      "units": "kWh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1054,
      "count": 2,
      "name": "Battery discharge energy total",
      "data_type": "UInt32",
      "units": "kWh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1056,
      "count": 2,
      "name": "Battery charge energy today",
      "data_type": "UInt32",
      "units": "kWh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1058,
      "count": 2,
      "name": "Battery charge energy total",
      "data_type": "UInt32",
      "units": "kWh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1060,
      "count": 2,
      "name": "Load energy today",
      "data_type": "UInt32",
      "units": "kWh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1062,
      "count": 2,
      "name": "Load energy total",
      "data_type": "UInt32",
      "units": "kWh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1086,
      "count": 1,
      "name": "Battery SOC (BMS)",
      "data_type": "UInt16",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1087,
      "count": 1,
      "name": "Battery voltage (BMS)",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1088,
      "count": 1,
      "name": "Battery current (BMS)",
      "data_type": "Int16",
      "units": "A",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R"
    }
  ],
  "holding_registers": [
    {
      "address": 0,
      "count": 1,
      "name": "Inverter on/off",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on."
    },
    {
      "address": 3,
      "count": 1,
      "name": "Active power rate",
      "data_type": "UInt16",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Maximum output power."
    },
    {
      "address": 30,
      "count": 1,
      "name": "Modbus address",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "1 to 254."
    },
    {
      "address": 122,
      "count": 1,
      "name": "Export limit mode",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = disabled, 1 = RS-485 meter, 2 = RS-232 meter, 3 = CT."
    },
    {
      "address": 123,
      "count": 1,
      "name": "Export limit power",
      "data_type": "UInt16",
      "units": "%",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "RW",
      "description": "0 to 100.0%."
    },
    {
      "address": 3000,
      "count": 1,
      "name": "Export limit fallback power rate",
      "data_type": "UInt16",
      "units": "%",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "RW",
      "description": "MIN TL-X/TL-XH."
    },
    {
      "address": 3047,
      "count": 1,
      "name": "Battery-first charge power rate",
      "data_type": "UInt16",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "MOD/MID-XH."
    },
    {
      "address": 3048,
      "count": 1,
      "name": "Battery-first charge stop SOC",
      "data_type": "UInt16",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "MOD/MID-XH."
    },
    {
      "address": 3049,
      "count": 1,
      "name": "Allow grid charge",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "MOD/MID-XH."
    },
    {
      "address": 3067,
      "count": 1,
      "name": "Grid-first discharge stop SOC",
      "data_type": "UInt16",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "MOD/MID-XH."
    }
  ],
  "combined_registers": [],
  "notes": "RS-485 device: reach it through a Modbus RTU-to-TCP gateway using the factory serial settings above. MIN TL-X/TL-XH models mirror the 0-124 input block at 3000-3124, so add 3000 to those addresses when the inverter answers only in the upper range. MOD TL3-XH and SPH hybrid models use the 0-124 block plus the 1000+ storage block below. The battery registers are present on hybrid models only; AC charge energy at 112-115 is a warning-code block on non-hybrid models. Values are big-endian integers, high word first. Battery compatibility: Growatt's energy-storage configuration list pairs the SPH/SPA hybrid models with Growatt's own ARK LV (ARK 2.5L-A1), ARK HV (ARK 2.5H-A1 with the HVC 60050-A1 high-voltage controller), AXE LV, ALP LV/APX and GBLI 6532 packs - https://en.growatt.com/ueditor/php/upload/file/20250116/1737021155869617/ENERGY%20STORAGE%20CONFIGURATION%20QUICK%20CHECK%20LIST.pdf."
}
