{
  "$schema": "https://raw.githubusercontent.com/nobrega8/mbmap-library/main/schema/mbmap-2.schema.json",
  "mbmap": 2,
  "vendor": "SunSpec Alliance",
  "model": "Inverter 111/112/113 (float)",
  "vendor_website": "sunspec.org",
  "description": "Generic SunSpec Modbus inverter model with 32-bit floating point values. Used by many inverters (SolarEdge, Fronius, SMA, Kostal and others); the model and its position are set by each device",
  "revision": 2,
  "revised": "2026-11-10",
  "source": "SunSpec Alliance, SunSpec information model definitions (github.com/sunspec/models), models 1, 111-113",
  "sources": [
    {"title": "SunSpec Alliance information model definitions", "url": "https://github.com/sunspec/models", "note": "models 1, 111-113"}
  ],
  "notes": [
    "SunSpec Inverter 111/112/113 (float).",
    "The SunSpec chain starts at address 40000 ('SunS'), then the common block, then the inverter model.",
    "This map assumes a common block of 65 registers, so the inverter model starts at 40069 (as in SolarEdge inverters). A device with the 66-register common block of the specification starts it at 40070: read the Model ID row, which must show 101-103 or 111-113, to check."
  ],
  "protocol": "tcp+rtu",
  "unit_id": 1,
  "port": 502,
  "byte_order": "big",
  "word_order": "big",
  "address_base": 0,
  "enums": {
    "inverter_state": {"1": "Off", "2": "Sleeping", "3": "Starting", "4": "MPPT", "5": "Throttled", "6": "Shutting down", "7": "Fault", "8": "Standby"}
  },
  "sentinels": {
    "int16": {"-32768": "Not implemented"},
    "uint16": {"0xFFFF": "Not implemented"},
    "int32": {"-2147483648": "Not implemented"},
    "uint32": {"0xFFFFFFFF": "Not implemented"}
  },
  "x_status": "official",
  "registers": [
    {"name": "SunSpec marker", "group": "Device", "area": "holding", "address": 40000, "type": "string", "length": 2, "access": "R", "description": "Reads SunS\" on a SunSpec device\""},
    {"name": "Common block ID", "group": "Device", "area": "holding", "address": 40002, "type": "uint16", "access": "R", "description": "SunSpec ID"},
    {"name": "Common block length", "group": "Device", "area": "holding", "address": 40003, "type": "uint16", "access": "R", "description": "SunSpec L"},
    {"name": "Manufacturer", "group": "Device", "area": "holding", "address": 40004, "type": "string", "length": 16, "access": "R", "description": "SunSpec Mn"},
    {"name": "Model", "group": "Device", "area": "holding", "address": 40020, "type": "string", "length": 16, "access": "R", "description": "SunSpec Md"},
    {"name": "Options", "group": "Device", "area": "holding", "address": 40036, "type": "string", "length": 8, "access": "R", "description": "SunSpec Opt"},
    {"name": "Version", "group": "Device", "area": "holding", "address": 40044, "type": "string", "length": 8, "access": "R", "role": "firmware", "description": "SunSpec Vr"},
    {"name": "Serial number", "group": "Device", "area": "holding", "address": 40052, "type": "string", "length": 16, "access": "R", "role": "serial", "description": "SunSpec SN"},
    {"name": "Modbus address", "group": "Device", "area": "holding", "address": 40068, "type": "uint16", "access": "R", "description": "SunSpec DA. This point is mandatory for all SunSpec RTU devices and, for those devices, they must support values from 1-247."},
    {"name": "Inverter model ID", "group": "Model header", "area": "holding", "address": 40069, "type": "uint16", "access": "R", "description": "SunSpec ID. 101/111 = single phase, 102/112 = split phase, 103/113 = three phase"},
    {"name": "Inverter model length", "group": "Model header", "area": "holding", "address": 40070, "type": "uint16", "access": "R", "description": "SunSpec L"},
    {"name": "AC Current", "group": "AC side", "area": "holding", "address": 40071, "type": "float32", "unit": "A", "access": "R", "description": "SunSpec A. Sum of active phases"},
    {"name": "Phase A Current", "group": "AC side", "area": "holding", "address": 40073, "type": "float32", "unit": "A", "access": "R", "description": "SunSpec AphA. Connected Phase"},
    {"name": "Phase B Current", "group": "AC side", "area": "holding", "address": 40075, "type": "float32", "unit": "A", "access": "R", "description": "SunSpec AphB. Connected Phase"},
    {"name": "Phase C Current", "group": "AC side", "area": "holding", "address": 40077, "type": "float32", "unit": "A", "access": "R", "description": "SunSpec AphC. Connected Phase"},
    {"name": "Phase Voltage AB", "group": "AC side", "area": "holding", "address": 40079, "type": "float32", "unit": "V", "access": "R", "description": "SunSpec PPVphAB"},
    {"name": "Phase Voltage BC", "group": "AC side", "area": "holding", "address": 40081, "type": "float32", "unit": "V", "access": "R", "description": "SunSpec PPVphBC"},
    {"name": "Phase Voltage CA", "group": "AC side", "area": "holding", "address": 40083, "type": "float32", "unit": "V", "access": "R", "description": "SunSpec PPVphCA"},
    {"name": "Phase Voltage AN", "group": "AC side", "area": "holding", "address": 40085, "type": "float32", "unit": "V", "access": "R", "description": "SunSpec PhVphA"},
    {"name": "Phase Voltage BN", "group": "AC side", "area": "holding", "address": 40087, "type": "float32", "unit": "V", "access": "R", "description": "SunSpec PhVphB"},
    {"name": "Phase Voltage CN", "group": "AC side", "area": "holding", "address": 40089, "type": "float32", "unit": "V", "access": "R", "description": "SunSpec PhVphC"},
    {"name": "AC Power", "group": "AC side", "area": "holding", "address": 40091, "type": "float32", "unit": "W", "access": "R", "description": "SunSpec W"},
    {"name": "Line Frequency", "group": "AC side", "area": "holding", "address": 40093, "type": "float32", "unit": "Hz", "access": "R", "description": "SunSpec Hz"},
    {"name": "AC Apparent Power", "group": "AC side", "area": "holding", "address": 40095, "type": "float32", "unit": "VA", "access": "R", "description": "SunSpec VA"},
    {"name": "AC Reactive Power", "group": "AC side", "area": "holding", "address": 40097, "type": "float32", "unit": "var", "access": "R", "description": "SunSpec VAr"},
    {"name": "AC Power Factor", "group": "AC side", "area": "holding", "address": 40099, "type": "float32", "unit": "%", "access": "R", "description": "SunSpec PF"},
    {"name": "AC Energy", "group": "Energy", "area": "holding", "address": 40101, "type": "float32", "unit": "Wh", "access": "R", "description": "SunSpec WH"},
    {"name": "DC Current", "group": "DC side", "area": "holding", "address": 40103, "type": "float32", "unit": "A", "access": "R", "description": "SunSpec DCA"},
    {"name": "DC Voltage", "group": "DC side", "area": "holding", "address": 40105, "type": "float32", "unit": "V", "access": "R", "description": "SunSpec DCV"},
    {"name": "DC Power", "group": "DC side", "area": "holding", "address": 40107, "type": "float32", "unit": "W", "access": "R", "description": "SunSpec DCW"},
    {"name": "Cabinet Temperature", "group": "Temperature", "area": "holding", "address": 40109, "type": "float32", "unit": "°C", "access": "R", "description": "SunSpec TmpCab"},
    {"name": "Heat Sink Temperature", "group": "Temperature", "area": "holding", "address": 40111, "type": "float32", "unit": "°C", "access": "R", "description": "SunSpec TmpSnk"},
    {"name": "Transformer Temperature", "group": "Temperature", "area": "holding", "address": 40113, "type": "float32", "unit": "°C", "access": "R", "description": "SunSpec TmpTrns"},
    {"name": "Other Temperature", "group": "Temperature", "area": "holding", "address": 40115, "type": "float32", "unit": "°C", "access": "R", "description": "SunSpec TmpOt"},
    {"name": "Operating state", "group": "Status", "area": "holding", "address": 40117, "type": "uint16", "access": "R", "enum": "inverter_state", "description": "SunSpec St"},
    {"name": "Vendor specific operating state code", "group": "Status", "area": "holding", "address": 40118, "type": "uint16", "access": "R", "description": "SunSpec StVnd"},
    {"name": "Event fields: Ground fault", "group": "Events", "area": "holding", "address": 40120, "type": "bool", "bit": 0, "access": "R", "description": "SunSpec Evt1 bit 0"},
    {"name": "Event fields: Dc over volt", "group": "Events", "area": "holding", "address": 40120, "type": "bool", "bit": 1, "access": "R", "description": "SunSpec Evt1 bit 1"},
    {"name": "Event fields: Ac disconnect", "group": "Events", "area": "holding", "address": 40120, "type": "bool", "bit": 2, "access": "R", "description": "SunSpec Evt1 bit 2"},
    {"name": "Event fields: Dc disconnect", "group": "Events", "area": "holding", "address": 40120, "type": "bool", "bit": 3, "access": "R", "description": "SunSpec Evt1 bit 3"},
    {"name": "Event fields: Grid disconnect", "group": "Events", "area": "holding", "address": 40120, "type": "bool", "bit": 4, "access": "R", "description": "SunSpec Evt1 bit 4"},
    {"name": "Event fields: Cabinet open", "group": "Events", "area": "holding", "address": 40120, "type": "bool", "bit": 5, "access": "R", "description": "SunSpec Evt1 bit 5"},
    {"name": "Event fields: Manual shutdown", "group": "Events", "area": "holding", "address": 40120, "type": "bool", "bit": 6, "access": "R", "description": "SunSpec Evt1 bit 6"},
    {"name": "Event fields: Over temp", "group": "Events", "area": "holding", "address": 40120, "type": "bool", "bit": 7, "access": "R", "description": "SunSpec Evt1 bit 7"},
    {"name": "Event fields: Over frequency", "group": "Events", "area": "holding", "address": 40120, "type": "bool", "bit": 8, "access": "R", "description": "SunSpec Evt1 bit 8"},
    {"name": "Event fields: Under frequency", "group": "Events", "area": "holding", "address": 40120, "type": "bool", "bit": 9, "access": "R", "description": "SunSpec Evt1 bit 9"},
    {"name": "Event fields: Ac over volt", "group": "Events", "area": "holding", "address": 40120, "type": "bool", "bit": 10, "access": "R", "description": "SunSpec Evt1 bit 10"},
    {"name": "Event fields: Ac under volt", "group": "Events", "area": "holding", "address": 40120, "type": "bool", "bit": 11, "access": "R", "description": "SunSpec Evt1 bit 11"},
    {"name": "Event fields: Blown string fuse", "group": "Events", "area": "holding", "address": 40120, "type": "bool", "bit": 12, "access": "R", "description": "SunSpec Evt1 bit 12"},
    {"name": "Event fields: Under temp", "group": "Events", "area": "holding", "address": 40120, "type": "bool", "bit": 13, "access": "R", "description": "SunSpec Evt1 bit 13"},
    {"name": "Event fields: Memory loss", "group": "Events", "area": "holding", "address": 40120, "type": "bool", "bit": 14, "access": "R", "description": "SunSpec Evt1 bit 14"},
    {"name": "Event fields: Hw test failure", "group": "Events", "area": "holding", "address": 40120, "type": "bool", "bit": 15, "access": "R", "description": "SunSpec Evt1 bit 15"},
    {"name": "Reserved for future use", "group": "Events", "area": "holding", "address": 40121, "type": "uint32", "access": "R", "description": "SunSpec Evt2"},
    {"name": "Vendor defined events", "group": "Events", "area": "holding", "address": 40123, "type": "uint32", "access": "R", "description": "SunSpec EvtVnd1"},
    {"name": "Vendor defined events (EvtVnd2)", "group": "Events", "area": "holding", "address": 40125, "type": "uint32", "access": "R", "description": "SunSpec EvtVnd2"},
    {"name": "Vendor defined events (EvtVnd3)", "group": "Events", "area": "holding", "address": 40127, "type": "uint32", "access": "R", "description": "SunSpec EvtVnd3"},
    {"name": "Vendor defined events (EvtVnd4)", "group": "Events", "area": "holding", "address": 40129, "type": "uint32", "access": "R", "description": "SunSpec EvtVnd4"}
  ]
}
