{
  "drivers": [
    {
      "author": "Sourceful Labs AB",
      "control": false,
      "ders": [
        "meter"
      ],
      "description": "",
      "hardware_verified": false,
      "homepage": "",
      "id": "abb_meter",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/abb_meter.yaml",
      "manufacturers": [
        "ABB"
      ],
      "min_host_version": "2.0.0",
      "protocol": "modbus",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "1.0.0"
        }
      ],
      "sha256": "e59cc7382dc43df90be789f675a02cfe64250caa2ac9a910a3e91c20cbbeaf06",
      "size_bytes": 3865,
      "source_note": "Emits: Meter only\nRegister type: HOLDING (FC 0x03)\nU32/I32 with scaling, U16 for frequency\nDefault port 502",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/abb_meter.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "ABB",
          "min_driver_version": "1.0.0",
          "model_family": "B Series / M4M",
          "notes": "Community driver, untested",
          "regions": [],
          "variants": [
            "B23",
            "B24",
            "A43",
            "A44",
            "M4M 20",
            "M4M 30"
          ]
        }
      ],
      "tier": "community",
      "title": "ABB B23/B24/M4M Three-Phase Meter",
      "verification": null,
      "version": "1.0.6"
    },
    {
      "author": "Sourceful Labs AB",
      "control": false,
      "ders": [
        "v2x_charger"
      ],
      "description": "",
      "hardware_verified": false,
      "homepage": "",
      "id": "abb_terra",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/abb_terra.yaml",
      "manufacturers": [
        "ABB"
      ],
      "min_host_version": "2.0.0",
      "protocol": "modbus",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "1.0.0"
        }
      ],
      "sha256": "95098bbe0efed794b06d56b1d73e4d18d5582777f0eadd766a534ac66ff9dc56",
      "size_bytes": 3779,
      "source_note": "Emits: V2X Charger\nRegister type: HOLDING (FC 0x03)\nAll values are U16 or U32 with scaling factors",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/abb_terra.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "ABB",
          "min_driver_version": "1.0.0",
          "model_family": "Terra AC",
          "notes": "Community driver, untested",
          "regions": [],
          "variants": [
            "Terra AC 7.4kW",
            "Terra AC 11kW",
            "Terra AC 22kW"
          ]
        }
      ],
      "tier": "community",
      "title": "ABB Terra AC EV Charger",
      "verification": null,
      "version": "1.0.3"
    },
    {
      "author": "Sourceful Labs AB",
      "control": false,
      "ders": [
        "meter"
      ],
      "description": "",
      "hardware_verified": false,
      "homepage": "",
      "id": "acrel",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/acrel.yaml",
      "manufacturers": [
        "Acrel"
      ],
      "min_host_version": "2.0.0",
      "protocol": "modbus",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "1.0.0"
        }
      ],
      "sha256": "e3607864140b8d92fcaa175d066b8f3315c49065755f8cb1bb5b8a3f075cfaa9",
      "size_bytes": 3412,
      "source_note": "Emits: Meter only\nRegister type: HOLDING (FC 0x03)\nU16 for voltage/current/frequency, I32 for power, U32 for energy\nDefault port 502",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/acrel.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "Acrel",
          "min_driver_version": "1.0.0",
          "model_family": "DTSD Series",
          "notes": "Community driver, untested",
          "regions": [],
          "variants": [
            "DTSD1352"
          ]
        }
      ],
      "tier": "community",
      "title": "Acrel DTSD1352 Three-Phase Meter",
      "verification": null,
      "version": "1.0.4"
    },
    {
      "author": "Sourceful Labs AB",
      "control": false,
      "ders": [
        "v2x_charger"
      ],
      "description": "",
      "hardware_verified": false,
      "homepage": "",
      "id": "alfen",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/alfen.yaml",
      "manufacturers": [
        "Alfen"
      ],
      "min_host_version": "2.0.0",
      "protocol": "modbus",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "1.0.0"
        }
      ],
      "sha256": "effe4374a11f46cc174d9bf0167131835adcaaf657aee05469baef8d06f4365e",
      "size_bytes": 4649,
      "source_note": "Emits: V2X Charger\nRegister type: HOLDING (FC 0x03)\nAll multi-register values are F32 BE unless noted",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/alfen.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "Alfen",
          "min_driver_version": "1.0.0",
          "model_family": "Eve Series",
          "notes": "Community driver, untested",
          "regions": [],
          "variants": [
            "NG910",
            "NG920"
          ]
        }
      ],
      "tier": "community",
      "title": "Alfen Eve NG9xx EV Charger",
      "verification": null,
      "version": "1.0.4"
    },
    {
      "author": "Sourceful Labs AB",
      "control": false,
      "ders": [
        "pv",
        "battery",
        "meter"
      ],
      "description": "",
      "hardware_verified": false,
      "homepage": "",
      "id": "alphaess",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/alphaess.yaml",
      "manufacturers": [
        "AlphaESS"
      ],
      "min_host_version": "2.0.0",
      "protocol": "modbus",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "1.0.0"
        }
      ],
      "sha256": "eb76e0ff3be764a001b110a82a58f75ad967d4610d866eeb37e99802624fc07d",
      "size_bytes": 4031,
      "source_note": "Emits: PV, Battery, Meter\nRegister type: HOLDING (FC 0x03)\nPort: 502\nCommunity tier (untested)\nRegister map from AlphaESS Modbus protocol v1.30\nHex addresses converted to decimal",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/alphaess.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "AlphaESS",
          "min_driver_version": "1.0.0",
          "model_family": "Smile Series",
          "notes": "Community driver, untested",
          "regions": [],
          "variants": [
            "Smile5",
            "Smile-Hi5",
            "Smile-Hi10",
            "Smile-B3",
            "Smile-B3-Plus"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "AlphaESS",
          "min_driver_version": "1.0.0",
          "model_family": "G2 Series",
          "notes": "Community driver, untested",
          "regions": [],
          "variants": [
            "G2-H30",
            "G2-H50"
          ]
        }
      ],
      "tier": "community",
      "title": "AlphaESS Smile Series Inverter",
      "verification": null,
      "version": "1.1.1"
    },
    {
      "author": "Sourceful Labs AB",
      "control": true,
      "ders": [
        "battery",
        "meter",
        "v2x_charger"
      ],
      "description": "",
      "hardware_verified": false,
      "homepage": "",
      "id": "ambibox",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/ambibox.yaml",
      "manufacturers": [
        "Ambibox"
      ],
      "min_host_version": "2.0.0",
      "protocol": "mqtt",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "1.1.0"
        },
        {
          "date": "2026-07-21",
          "version": "1.1.1"
        }
      ],
      "sha256": "12de1c99cfed144f35c2e2a7f372186ef09e2a43120918a54e3622c572e5cd2e",
      "size_bytes": 7203,
      "source_note": "Emits: V2X Charger, Battery, Meter telemetry\n\nSubscribes to:\n  device/evCharger/#  - wildcard for all charger field updates\n\nMessage format: individual field updates where the topic path encodes the\nfield name (last segment) and the payload is the raw value.\nExample: topic \"device/evCharger/0/powerAc\" with payload \"3500\"\n\nSign convention:\n  Battery W: positive = charging, negative = discharging\n  Meter W: positive = import, negative = export",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/ambibox.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "Ambibox",
          "min_driver_version": "1.1.0",
          "model_family": "V2X Charger",
          "notes": "",
          "regions": [],
          "variants": []
        }
      ],
      "tier": "core",
      "title": "Ambibox V2X Charger MQTT",
      "verification": null,
      "version": "1.2.0"
    },
    {
      "author": "Sourceful Labs AB",
      "control": true,
      "ders": [
        "v2x_charger"
      ],
      "description": "Ambibox bidirectional V2X charger via MQTT.",
      "hardware_verified": false,
      "homepage": "",
      "id": "ambibox_v2x",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/ambibox_v2x.yaml",
      "manufacturers": [
        "Ambibox"
      ],
      "min_host_version": "2.0.0",
      "protocol": "mqtt",
      "releases": [],
      "sha256": "90a572b0f74511d42e4b55047a6e1e52f266af5f595ce31dbcf2ffd74ce4253f",
      "size_bytes": 7506,
      "source_note": "",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/ambibox_v2x.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "Ambibox",
          "min_driver_version": "1.0.0",
          "model_family": "Ambibox V2X",
          "notes": "Ambibox bidirectional V2X charger via MQTT.",
          "regions": [],
          "variants": []
        }
      ],
      "tier": "core",
      "title": "Ambibox V2X",
      "verification": {
        "at": "",
        "label": "Not verified on hardware",
        "level": "unverified",
        "notes": "",
        "status": "experimental"
      },
      "version": "1.1.0"
    },
    {
      "author": "Sourceful Labs AB",
      "control": true,
      "ders": [
        "battery",
        "meter",
        "pv"
      ],
      "description": "",
      "hardware_verified": false,
      "homepage": "",
      "id": "atmoce",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/atmoce.yaml",
      "manufacturers": [
        "ATMOCE"
      ],
      "min_host_version": "2.0.0",
      "protocol": "modbus",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "1.0.0"
        }
      ],
      "sha256": "b8ba3c35901c333c09903a97aeb7175afc763be1de87626b4b7f3d6810a6fabd",
      "size_bytes": 6790,
      "source_note": "Emits: PV, Battery, Meter\nProtocol: Modbus TCP, port 502, FC 0x03 (holding registers)\nByte order: Big-Endian\nReference: Atmoce Gateway Modbus Protocol Interface V1.2",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/atmoce.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "ATMOCE",
          "min_driver_version": "1.0.0",
          "model_family": "MC100-T Three-Phase M-Combiner",
          "notes": "Three-phase combiner with integrated gateway, supports MI microinverters and M-ELV batteries",
          "regions": [
            "EU",
            "INT"
          ],
          "variants": [
            "MC100-T"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "ATMOCE",
          "min_driver_version": "1.0.0",
          "model_family": "MC100 M-Combiner",
          "notes": "Combiner with integrated gateway module",
          "regions": [
            "EU",
            "INT"
          ],
          "variants": [
            "MC100"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "ATMOCE",
          "min_driver_version": "1.0.0",
          "model_family": "MG100 M-Gateway",
          "notes": "Standalone gateway module",
          "regions": [
            "EU",
            "INT"
          ],
          "variants": [
            "MG100"
          ]
        }
      ],
      "tier": "community",
      "title": "ATMOCE Gateway Driver (MC100-T / MC100 / MG100)",
      "verification": null,
      "version": "1.1.1"
    },
    {
      "author": "Sourceful Labs AB",
      "control": false,
      "ders": [
        "meter"
      ],
      "description": "",
      "hardware_verified": false,
      "homepage": "",
      "id": "carlo_gavazzi",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/carlo_gavazzi.yaml",
      "manufacturers": [
        "Carlo Gavazzi"
      ],
      "min_host_version": "2.0.0",
      "protocol": "modbus",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "1.0.0"
        }
      ],
      "sha256": "f073b4f842b066bd2add50d8c600ead9bf64052fddf78ebe8085b773b9a342cf",
      "size_bytes": 4491,
      "source_note": "Emits: Meter only\nRegister type: HOLDING (FC 0x03)\nAll values are F32 Big-Endian\nDefault port 502, unit ID 1",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/carlo_gavazzi.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "Carlo Gavazzi",
          "min_driver_version": "1.0.0",
          "model_family": "EM Series",
          "notes": "Community driver, untested",
          "regions": [],
          "variants": [
            "EM24",
            "EM340",
            "EM530",
            "EM300",
            "ET300"
          ]
        }
      ],
      "tier": "community",
      "title": "Carlo Gavazzi EM24/EM340 Three-Phase Meter",
      "verification": null,
      "version": "1.0.5"
    },
    {
      "author": "Sourceful Labs AB",
      "control": false,
      "ders": [
        "meter"
      ],
      "description": "",
      "hardware_verified": false,
      "homepage": "",
      "id": "chint",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/chint.yaml",
      "manufacturers": [
        "Chint"
      ],
      "min_host_version": "2.0.0",
      "protocol": "modbus",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "1.0.0"
        }
      ],
      "sha256": "61e349e41cd06170066f381586c51f2f81b70e03d800dd4957074f2a66b3ce34",
      "size_bytes": 4047,
      "source_note": "Emits: Meter only\nRegister type: HOLDING (FC 0x03)\nAll values are F32 Big-Endian\nDDSU666 is single-phase; DTSU666 is three-phase\nDefault port 502",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/chint.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "Chint",
          "min_driver_version": "1.0.0",
          "model_family": "DSU Series",
          "notes": "Community driver, untested",
          "regions": [],
          "variants": [
            "DDSU666",
            "DTSU666"
          ]
        }
      ],
      "tier": "community",
      "title": "Chint DDSU666/DTSU666 Meter",
      "verification": null,
      "version": "1.0.5"
    },
    {
      "author": "Sourceful Labs AB",
      "control": false,
      "ders": [
        "meter"
      ],
      "description": "",
      "hardware_verified": false,
      "homepage": "",
      "id": "circutor",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/circutor.yaml",
      "manufacturers": [
        "Circutor"
      ],
      "min_host_version": "2.0.0",
      "protocol": "modbus",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "1.0.0"
        }
      ],
      "sha256": "7ebfe010a41f380885b59976d1a4a6d27db4abec08844cd3c553d4cf754e6aa3",
      "size_bytes": 4749,
      "source_note": "Emits: Meter only\nRegister type: HOLDING (FC 0x03)\nAll values are F32 Big-Endian\nDefault port 502",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/circutor.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "Circutor",
          "min_driver_version": "1.0.0",
          "model_family": "CEM / CVM",
          "notes": "Community driver, untested",
          "regions": [],
          "variants": [
            "CEM M-ETH",
            "CEM-C21",
            "CVM-C10"
          ]
        }
      ],
      "tier": "community",
      "title": "Circutor CEM-C/CVM Three-Phase Meter",
      "verification": null,
      "version": "1.0.5"
    },
    {
      "author": "Sourceful Labs AB",
      "control": true,
      "ders": [
        "ev"
      ],
      "description": "CTEK Chargestorm Connected 2/3 via Modbus/TCP Automation API v1 (CSOS \u2265 4.9.3). Full telemetry + current-limit control.",
      "hardware_verified": false,
      "homepage": "https://www.ctek.com",
      "id": "ctek",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/ctek.yaml",
      "manufacturers": [
        "CTEK"
      ],
      "min_host_version": "2.0.0",
      "protocol": "modbus",
      "releases": [],
      "sha256": "34cf0492da22354658ae1bfa71cb3e72f94623740d12792d3f2f9ebd9daa709e",
      "size_bytes": 14921,
      "source_note": "",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/ctek.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "CTEK",
          "min_driver_version": "0.2.0",
          "model_family": "CTEK Chargestorm (API v1)",
          "notes": "CTEK Chargestorm Connected 2/3 via Modbus/TCP Automation API v1 (CSOS \u2265 4.9.3). Full telemetry + current-limit control.",
          "regions": [],
          "variants": [
            "Chargestorm Connected 2",
            "Chargestorm Connected 3"
          ]
        }
      ],
      "tier": "core",
      "title": "CTEK Chargestorm (API v1)",
      "verification": {
        "at": "",
        "label": "Partly verified",
        "level": "partial",
        "notes": "Register map per CTEK Automation interface v1.0; charging-limit write verified against CSOS 4.9.x. Derived charging/connected flags approximate the real EVSE state since the state code is MQTT-only.",
        "status": "beta"
      },
      "version": "0.3.1"
    },
    {
      "author": "Sourceful Labs AB",
      "control": true,
      "ders": [
        "ev"
      ],
      "description": "CTEK Chargestorm Connected 2/3 \u2014 MQTT for state + live telemetry (preferred), Modbus/TCP for control + telemetry fallback.",
      "hardware_verified": false,
      "homepage": "https://www.ctek.com",
      "id": "ctek_hybrid",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/ctek_hybrid.yaml",
      "manufacturers": [
        "CTEK"
      ],
      "min_host_version": "2.0.0",
      "protocol": "modbus",
      "releases": [],
      "sha256": "1104d42fe705d43220b2ae282bc2a00d2b713a03b82e6d18fd1c6db17c747d02",
      "size_bytes": 27291,
      "source_note": "",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/ctek_hybrid.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "CTEK",
          "min_driver_version": "0.2.0",
          "model_family": "CTEK Chargestorm (Modbus + MQTT)",
          "notes": "CTEK Chargestorm Connected 2/3 \u2014 MQTT for state + live telemetry (preferred), Modbus/TCP for control + telemetry fallback.",
          "regions": [],
          "variants": [
            "Chargestorm Connected 2",
            "Chargestorm Connected 3"
          ]
        }
      ],
      "tier": "core",
      "title": "CTEK Chargestorm (Modbus + MQTT)",
      "verification": {
        "at": "",
        "label": "Early verification",
        "level": "partial",
        "notes": "Observed against CSOS 4.9.x on station 91728M03W4010406 (EVSE serial 272274U). MQTT broker is the CCU itself; defaults assume the stock topic layout `CTEK/<station>/evse<n>/...`. Falls back to Modbus telemetry whenever MQTT is stale (>mqtt_max_stale_ms).",
        "status": "alpha"
      },
      "version": "0.3.1"
    },
    {
      "author": "Sourceful Labs AB",
      "control": true,
      "ders": [
        "ev"
      ],
      "description": "CTEK Chargestorm Connected 2/3 via Modbus/TCP Automation API v2 (CSOS \u2265 4.9.3). Full telemetry + current-limit control.",
      "hardware_verified": false,
      "homepage": "https://www.ctek.com",
      "id": "ctek_v2",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/ctek_v2.yaml",
      "manufacturers": [
        "CTEK"
      ],
      "min_host_version": "2.0.0",
      "protocol": "modbus",
      "releases": [],
      "sha256": "81b4a0862a6d0928d3e3781e3955916638cb2015306a61baa0a344cd611d10e2",
      "size_bytes": 12072,
      "source_note": "",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/ctek_v2.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "CTEK",
          "min_driver_version": "0.2.0",
          "model_family": "CTEK Chargestorm (API v2)",
          "notes": "CTEK Chargestorm Connected 2/3 via Modbus/TCP Automation API v2 (CSOS \u2265 4.9.3). Full telemetry + current-limit control.",
          "regions": [],
          "variants": [
            "Chargestorm Connected 2",
            "Chargestorm Connected 3"
          ]
        }
      ],
      "tier": "core",
      "title": "CTEK Chargestorm (API v2)",
      "verification": {
        "at": "",
        "label": "Partly verified",
        "level": "partial",
        "notes": "Register map per CTEK Automation interface v1.0 (API v2 offsets); charging-limit write verified against CSOS 4.9.x. Derived charging/connected flags approximate the real EVSE state since the state code is MQTT-only.",
        "status": "beta"
      },
      "version": "0.3.1"
    },
    {
      "author": "Sourceful Labs AB",
      "control": false,
      "ders": [
        "battery",
        "meter",
        "pv"
      ],
      "description": "Deye SUN-SG series hybrid inverters via Modbus. Auto-detects LV vs HV battery at init.",
      "hardware_verified": false,
      "homepage": "https://www.deyeinverter.com",
      "id": "deye",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/deye.yaml",
      "manufacturers": [
        "Deye"
      ],
      "min_host_version": "2.0.0",
      "protocol": "modbus",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "1.2.0"
        }
      ],
      "sha256": "5fdc1acd72f881ff02696e765df0528a68f300fa9ca557a4fba068874f0129df",
      "size_bytes": 23467,
      "source_note": "",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/deye.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "Deye",
          "min_driver_version": "1.2.0",
          "model_family": "SUN Single-Phase Hybrid (LV)",
          "notes": "Single-phase hybrid with LV battery",
          "regions": [
            "EU"
          ],
          "variants": [
            "SUN-5K-SG01LP1-EU",
            "SUN-6K-SG01LP1-EU",
            "SUN-8K-SG01LP1-EU"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Deye",
          "min_driver_version": "1.2.0",
          "model_family": "SUN Three-Phase Hybrid",
          "notes": "Three-phase hybrid, supports LV and HV variants with runtime detection",
          "regions": [
            "EU"
          ],
          "variants": [
            "SUN-5K-SG01HP3-EU-AM2",
            "SUN-6K-SG01HP3-EU-AM2",
            "SUN-8K-SG01HP3-EU-AM2",
            "SUN-10K-SG01HP3-EU-AM2",
            "SUN-12K-SG01HP3-EU-AM2",
            "SUN-15K-SG01HP3-EU-AM2",
            "SUN-20K-SG01HP3-EU-AM2",
            "SUN-25K-SG01HP3-EU-AM2"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Deye",
          "min_driver_version": "1.2.0",
          "model_family": "SUN Three-Phase HV Hybrid",
          "notes": "Three-phase hybrid with HV battery",
          "regions": [
            "EU"
          ],
          "variants": [
            "SUN-5K-SG04LP3-EU",
            "SUN-6K-SG04LP3-EU",
            "SUN-8K-SG04LP3-EU",
            "SUN-10K-SG04LP3-EU",
            "SUN-12K-SG04LP3-EU"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Deye",
          "min_driver_version": "1.2.0",
          "model_family": "SUN String (Grid-Tie)",
          "notes": "Three-phase grid-tie string inverter (PV + meter only)",
          "regions": [
            "EU",
            "INT"
          ],
          "variants": [
            "SUN-8K-G",
            "SUN-10K-G",
            "SUN-12K-G"
          ]
        }
      ],
      "tier": "core",
      "title": "Deye hybrid inverter",
      "verification": {
        "at": "",
        "label": "Not verified on hardware",
        "level": "unverified",
        "notes": "Ported from a reference implementation. Not yet verified against live hardware on a FTW site.",
        "status": "experimental"
      },
      "version": "2.1.1"
    },
    {
      "author": "Sourceful Labs AB",
      "control": false,
      "ders": [
        "v2x_charger"
      ],
      "description": "",
      "hardware_verified": false,
      "homepage": "",
      "id": "easee",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/easee.yaml",
      "manufacturers": [
        "Easee"
      ],
      "min_host_version": "2.0.0",
      "protocol": "modbus",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "1.0.0"
        }
      ],
      "sha256": "4a2cd1efb4a5583468ce897ebd88a000e348917295c40210e86ecf834c0ba543",
      "size_bytes": 4054,
      "source_note": "Emits: V2X Charger\nRegister type: HOLDING (FC 0x03)\nModbus TCP interface, port 502\nNote: Easee uses F32 for power/energy, U16 for state",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/easee.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "Easee",
          "min_driver_version": "1.0.0",
          "model_family": "Easee",
          "notes": "Community driver, may require specific firmware for Modbus TCP",
          "regions": [],
          "variants": [
            "Easee Home",
            "Easee Charge"
          ]
        }
      ],
      "tier": "community",
      "title": "Easee Home/Charge EV Charger",
      "verification": null,
      "version": "1.0.4"
    },
    {
      "author": "Sourceful Labs AB",
      "control": true,
      "ders": [
        "ev"
      ],
      "description": "Easee Home/Charge via Cloud REST API. No local protocol needed.",
      "hardware_verified": true,
      "homepage": "https://easee.com",
      "id": "easee_cloud",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/easee_cloud.yaml",
      "manufacturers": [
        "Easee"
      ],
      "min_host_version": "2.0.0",
      "protocol": "http",
      "releases": [],
      "sha256": "dfe3107d6d99e03204184602fd2be973efb53b7f122d4ad1dd3cbe1d0be5ebd4",
      "size_bytes": 31312,
      "source_note": "",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/easee_cloud.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "Easee",
          "min_driver_version": "1.0.1",
          "model_family": "Easee Cloud",
          "notes": "Easee Home/Charge via Cloud REST API. No local protocol needed.",
          "regions": [],
          "variants": [
            "Home",
            "Charge"
          ]
        }
      ],
      "tier": "core",
      "title": "Easee Cloud",
      "verification": {
        "at": "2026-04-18",
        "label": "Running in production",
        "level": "confirmed",
        "notes": "Observations API + lifecycle commands exercised against an Easee Home charger. Session state, op_mode labels, charge/pause/resume all verified.",
        "status": "production"
      },
      "version": "1.1.0"
    },
    {
      "author": "FTW contributors",
      "control": false,
      "ders": [
        "meter"
      ],
      "description": "Smart meter via ESPHome web_server v3 + dsmr component (Sourceful Zap on open firmware, DIY ESP32+P1, etc.).",
      "hardware_verified": false,
      "homepage": "https://github.com/erikarenhill/sourceful-zap-esphome",
      "id": "esphome-dsmr",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/esphome-dsmr.yaml",
      "manufacturers": [
        "ESPHome"
      ],
      "min_host_version": "1.10.0",
      "protocol": "http",
      "releases": [
        {
          "date": "2026-07-22",
          "version": "1.0.1"
        },
        {
          "date": "2026-07-22",
          "version": "1.0.2"
        }
      ],
      "sha256": "f91e7c1769c239020b94aa75555dcaf830449d60d2bbbe54d09a969d2a423382",
      "size_bytes": 16772,
      "source_note": "",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/esphome-dsmr.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "DSMR 2022.10.1 on SlimmeLezer+; Sourceful Zap open firmware",
          "manufacturer": "ESPHome",
          "min_driver_version": "1.0.1",
          "model_family": "DSMR web_server v3 P1 reader",
          "notes": "Name-derived phase object_ids live-validated on SlimmeLezer+; explicit Sourceful aliases retained.",
          "regions": [
            "NL",
            "BE",
            "SE",
            "DK"
          ],
          "variants": [
            "SlimmeLezer+",
            "Sourceful Zap P1"
          ]
        }
      ],
      "tier": "community",
      "title": "ESPHome DSMR (P1)",
      "verification": {
        "at": "",
        "label": "Not verified on hardware",
        "level": "unverified",
        "notes": "Validated on Sourceful Zap open firmware and a live SlimmeLezer+ running ESPHome DSMR YAML with name-derived phase object_ids (current_phase_N, power_consumed_phase_N).",
        "status": "experimental"
      },
      "version": "1.0.3"
    },
    {
      "author": "Sourceful Labs AB",
      "control": true,
      "ders": [
        "meter"
      ],
      "description": "Smart meter via ESPHome web_server v3 + dsmr component (Sourceful Zap on open firmware, DIY ESP32+P1, etc.).",
      "hardware_verified": false,
      "homepage": "https://github.com/erikarenhill/sourceful-zap-esphome",
      "id": "esphome_dsmr",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/esphome_dsmr.yaml",
      "manufacturers": [
        "ESPHome"
      ],
      "min_host_version": "2.0.0",
      "protocol": "http",
      "releases": [],
      "sha256": "c415e507f4371c859fbf60827cc0704c5e24ad122dca1a9e5e1f190d67e852d1",
      "size_bytes": 19353,
      "source_note": "",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/esphome_dsmr.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "ESPHome",
          "min_driver_version": "1.0.2",
          "model_family": "ESPHome DSMR (P1)",
          "notes": "Smart meter via ESPHome web_server v3 + dsmr component (Sourceful Zap on open firmware, DIY ESP32+P1, etc.).",
          "regions": [],
          "variants": [
            "Sourceful Zap P1 (sourceful-zap-esphome firmware)",
            "ESPHome DSMR P1 readers using name-derived object_ids (SlimmeLezer+)"
          ]
        }
      ],
      "tier": "core",
      "title": "ESPHome DSMR (P1)",
      "verification": {
        "at": "",
        "label": "Not verified on hardware",
        "level": "unverified",
        "notes": "Validated on Sourceful Zap open firmware and a live SlimmeLezer+ running ESPHome DSMR YAML with name-derived phase object_ids (current_phase_N, power_consumed_phase_N).",
        "status": "experimental"
      },
      "version": "1.0.3"
    },
    {
      "author": "Sourceful Labs AB",
      "control": false,
      "ders": [
        "v2x_charger"
      ],
      "description": "",
      "hardware_verified": false,
      "homepage": "",
      "id": "etrel",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/etrel.yaml",
      "manufacturers": [
        "Etrel"
      ],
      "min_host_version": "2.0.0",
      "protocol": "modbus",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "1.0.0"
        }
      ],
      "sha256": "fdf3c3cae6ca45f9b546a97cf16a34b047172293711db2dfa759286f065d77c8",
      "size_bytes": 3545,
      "source_note": "Emits: V2X Charger\nRegister type: HOLDING (FC 0x03)\nModbus TCP interface, port 502\nNote: Currents and voltages are U16 with 0.1 scaling factor",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/etrel.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "Etrel",
          "min_driver_version": "1.0.0",
          "model_family": "INCH",
          "notes": "Community driver, untested",
          "regions": [],
          "variants": [
            "INCH HOME",
            "INCH DUO",
            "INCH PRO"
          ]
        }
      ],
      "tier": "community",
      "title": "Etrel INCH EV Charger",
      "verification": null,
      "version": "1.0.3"
    },
    {
      "author": "Sourceful Labs AB",
      "control": true,
      "ders": [
        "battery",
        "meter",
        "pv"
      ],
      "description": "Ferroamp EnergyHub with ESO battery + SSO solar strings (3-phase).",
      "hardware_verified": true,
      "homepage": "https://ferroamp.com",
      "id": "ferroamp",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/ferroamp.yaml",
      "manufacturers": [
        "Ferroamp"
      ],
      "min_host_version": "2.0.0",
      "protocol": "mqtt",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "1.1.0"
        },
        {
          "date": "2026-07-21",
          "version": "1.1.1"
        }
      ],
      "sha256": "c04d137d595ba50b8c6178c82d917b115dbe9a7cbd2cf671ef2660e871f96de3",
      "size_bytes": 55058,
      "source_note": "",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/ferroamp.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "Ferroamp",
          "min_driver_version": "1.1.0",
          "model_family": "EnergyHub",
          "notes": "MQTT broker on the EnergyHub, port 1883 with default auth.",
          "regions": [],
          "variants": [
            "EnergyHub XL"
          ]
        }
      ],
      "tier": "core",
      "title": "Ferroamp EnergyHub",
      "verification": {
        "at": "2026-04-18",
        "label": "Running in production",
        "level": "confirmed",
        "notes": "In continuous use on 3-phase 16A SE site, MPC + dispatch control loop exercised daily.",
        "status": "production"
      },
      "version": "2.1.0"
    },
    {
      "author": "Sourceful Labs AB",
      "control": true,
      "ders": [
        "v2x_charger"
      ],
      "description": "Ferroamp DC2 V2X 20 kW bidirectional CCS2 charger via local MQTT.",
      "hardware_verified": false,
      "homepage": "https://ferroamp.com",
      "id": "ferroamp_dc2_v2x",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/ferroamp_dc2_v2x.yaml",
      "manufacturers": [
        "Ferroamp"
      ],
      "min_host_version": "2.0.0",
      "protocol": "mqtt",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "1.0.1"
        },
        {
          "date": "2026-07-21",
          "version": "1.0.2"
        }
      ],
      "sha256": "c9f4fa0fd78c0c28fbd730a66178d993f91d6d1c6557c1b8ecb8612ef4129262",
      "size_bytes": 13321,
      "source_note": "",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/ferroamp_dc2_v2x.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "Ferroamp",
          "min_driver_version": "1.0.0",
          "model_family": "DC2 V2X",
          "notes": "Bidirectional DC charger (CCS2) on Ferroamp DC nanogrid. MQTT broker on charger port 1883 with auth. Must be in Manual mode for MQTT control. Always paired with EnergyHub.",
          "regions": [],
          "variants": [
            "DC2 V2X 20 kW"
          ]
        }
      ],
      "tier": "core",
      "title": "Ferroamp DC2 V2X",
      "verification": {
        "at": "",
        "label": "Not verified on hardware",
        "level": "unverified",
        "notes": "Implements DC2 V2X integration manual 2026-04-22. Hardware sign and droop limits still need live verification before automatic V2G dispatch.",
        "status": "experimental"
      },
      "version": "2.1.0"
    },
    {
      "author": "Sourceful Labs AB",
      "control": true,
      "ders": [
        "battery",
        "meter",
        "pv"
      ],
      "description": "Ferroamp EnergyHub XL via Modbus TCP (alternative transport to drivers/ferroamp.lua).",
      "hardware_verified": false,
      "homepage": "https://ferroamp.com",
      "id": "ferroamp_modbus",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/ferroamp_modbus.yaml",
      "manufacturers": [
        "Ferroamp"
      ],
      "min_host_version": "2.0.0",
      "protocol": "modbus",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "1.0.0"
        }
      ],
      "sha256": "8be39a1d41b18b1e12fb9b669e6fe11c93775abfdb4f41338f9dc79fe66fd2d9",
      "size_bytes": 14450,
      "source_note": "",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/ferroamp_modbus.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "Ferroamp",
          "min_driver_version": "1.0.0",
          "model_family": "EnergyHub",
          "notes": "Modbus TCP must be enabled by Ferroamp support. Port 502, Unit ID 1. Word-swapped float32.",
          "regions": [],
          "variants": [
            "EnergyHub XL"
          ]
        }
      ],
      "tier": "core",
      "title": "Ferroamp EnergyHub (Modbus)",
      "verification": {
        "at": "",
        "label": "Not verified on hardware",
        "level": "unverified",
        "notes": "Ported from sourceful-hugin. Read-only telemetry; control still goes through drivers/ferroamp.lua (MQTT). Not yet verified against live hardware.",
        "status": "experimental"
      },
      "version": "2.1.1"
    },
    {
      "author": "Sourceful Labs AB",
      "control": false,
      "ders": [
        "pv",
        "battery",
        "meter"
      ],
      "description": "",
      "hardware_verified": false,
      "homepage": "",
      "id": "foxess",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/foxess.yaml",
      "manufacturers": [
        "Fox ESS"
      ],
      "min_host_version": "2.0.0",
      "protocol": "modbus",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "1.0.0"
        }
      ],
      "sha256": "c998df936f95c2c183d027fbf5fc297e1c551b53b81da370c06d03f397959933",
      "size_bytes": 6933,
      "source_note": "Emits: PV, Battery, Meter\nRegister type: HOLDING (FC 0x03)\nPort: 502\nCommunity tier (untested)\nRegister map from nathanmarlor/foxess_modbus community",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/foxess.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "Fox ESS",
          "min_driver_version": "1.0.0",
          "model_family": "H1 (Single-Phase Hybrid)",
          "notes": "Community driver, untested",
          "regions": [],
          "variants": [
            "H1-3.0",
            "H1-3.7",
            "H1-4.6",
            "H1-5.0",
            "H1-6.0"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Fox ESS",
          "min_driver_version": "1.0.0",
          "model_family": "H3 (Three-Phase Hybrid)",
          "notes": "Community driver, untested",
          "regions": [],
          "variants": [
            "H3-5.0",
            "H3-6.0",
            "H3-8.0",
            "H3-10.0",
            "H3-12.0"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Fox ESS",
          "min_driver_version": "1.0.0",
          "model_family": "H3 PRO",
          "notes": "Community driver, untested",
          "regions": [],
          "variants": [
            "H3-PRO-10.0",
            "H3-PRO-15.0",
            "H3-PRO-20.0"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Fox ESS",
          "min_driver_version": "1.0.0",
          "model_family": "AIO-H3 (All-in-One)",
          "notes": "Community driver, untested",
          "regions": [],
          "variants": [
            "AIO-H3-3.0",
            "AIO-H3-5.0",
            "AIO-H3-6.0",
            "AIO-H3-8.0",
            "AIO-H3-10.0"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Fox ESS",
          "min_driver_version": "1.0.0",
          "model_family": "KH Series",
          "notes": "Community driver, untested",
          "regions": [],
          "variants": [
            "KH-3.0",
            "KH-3.7",
            "KH-5.0"
          ]
        }
      ],
      "tier": "community",
      "title": "Fox ESS H1/H3 Series Inverter",
      "verification": null,
      "version": "1.1.1"
    },
    {
      "author": "Sourceful Labs AB",
      "control": false,
      "ders": [
        "battery",
        "meter",
        "pv"
      ],
      "description": "Fronius Symo / Primo GEN24 hybrid inverters via Modbus TCP (SunSpec).",
      "hardware_verified": false,
      "homepage": "https://www.fronius.com",
      "id": "fronius",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/fronius.yaml",
      "manufacturers": [
        "Fronius"
      ],
      "min_host_version": "2.0.0",
      "protocol": "modbus",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "1.2.0"
        }
      ],
      "sha256": "bc526decf391d60f20369d84a20ac564c03255bdaad061ba6d08426169efe3e7",
      "size_bytes": 12721,
      "source_note": "",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/fronius.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "Fronius",
          "min_driver_version": "1.2.0",
          "model_family": "Primo GEN24",
          "notes": "Single-phase hybrid inverter",
          "regions": [
            "EU"
          ],
          "variants": [
            "Primo GEN24 3.0",
            "Primo GEN24 3.6",
            "Primo GEN24 4.0",
            "Primo GEN24 4.6",
            "Primo GEN24 5.0",
            "Primo GEN24 6.0"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Fronius",
          "min_driver_version": "1.2.0",
          "model_family": "Symo GEN24",
          "notes": "Three-phase hybrid inverter, tested",
          "regions": [
            "EU"
          ],
          "variants": [
            "Symo GEN24 6.0",
            "Symo GEN24 8.0",
            "Symo GEN24 10.0",
            "Symo GEN24 12.0",
            "Symo GEN24 15.0",
            "Symo GEN24 20.0"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Fronius",
          "min_driver_version": "1.2.0",
          "model_family": "Fronius Verto",
          "notes": "New Gen25 platform",
          "regions": [
            "EU"
          ],
          "variants": []
        },
        {
          "firmware_versions": "",
          "manufacturer": "Fronius",
          "min_driver_version": "1.2.0",
          "model_family": "Fronius Tauro",
          "notes": "Commercial/industrial three-phase inverter",
          "regions": [
            "EU",
            "INT"
          ],
          "variants": [
            "Tauro 50-3-D",
            "Tauro 100-3-D"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Fronius",
          "min_driver_version": "1.2.0",
          "model_family": "Fronius Symo (Classic)",
          "notes": "Classic three-phase string inverter",
          "regions": [
            "EU",
            "INT"
          ],
          "variants": [
            "Symo 3.0",
            "Symo 3.7",
            "Symo 4.5",
            "Symo 5.0",
            "Symo 6.0",
            "Symo 7.0",
            "Symo 8.2",
            "Symo 10.0",
            "Symo 12.5",
            "Symo 15.0",
            "Symo 17.5",
            "Symo 20.0"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Fronius",
          "min_driver_version": "1.2.0",
          "model_family": "Fronius Primo (Classic)",
          "notes": "Classic single-phase string inverter",
          "regions": [
            "EU",
            "INT"
          ],
          "variants": [
            "Primo 3.0",
            "Primo 3.5",
            "Primo 3.6",
            "Primo 4.0",
            "Primo 4.6",
            "Primo 5.0",
            "Primo 6.0",
            "Primo 8.2"
          ]
        }
      ],
      "tier": "core",
      "title": "Fronius GEN24",
      "verification": {
        "at": "",
        "label": "Not verified on hardware",
        "level": "unverified",
        "notes": "Ported from a reference implementation. Not yet verified against live hardware on a FTW site.",
        "status": "experimental"
      },
      "version": "2.1.1"
    },
    {
      "author": "Sourceful Labs AB",
      "control": false,
      "ders": [
        "pv",
        "meter"
      ],
      "description": "",
      "hardware_verified": false,
      "homepage": "",
      "id": "fronius_api",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/fronius_api.yaml",
      "manufacturers": [
        "Fronius"
      ],
      "min_host_version": "2.1.0",
      "protocol": "http",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "1.0.0"
        }
      ],
      "sha256": "3094603577fc51aa45bb4c757a471d24e8cb77ee4f0c596bb2fd4112b22a6578",
      "size_bytes": 2080,
      "source_note": "Emits: PV, Meter\nREST API on port 80\nUses GetPowerFlowRealtimeData for site-level data\nSign convention:\n  PV W: negative (generation)\n  Meter W: positive = import from grid (P_Grid positive = import)",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/fronius_api.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "Fronius",
          "min_driver_version": "1.0.0",
          "model_family": "Solar API (All Models)",
          "notes": "HTTP alternative to Modbus driver, read-only",
          "regions": [],
          "variants": []
        }
      ],
      "tier": "community",
      "title": "Fronius Solar API HTTP",
      "verification": null,
      "version": "1.0.2"
    },
    {
      "author": "Sourceful Labs AB",
      "control": false,
      "ders": [
        "meter"
      ],
      "description": "Fronius Smart Meter three-phase energy meter via Modbus TCP (SunSpec).",
      "hardware_verified": false,
      "homepage": "https://www.fronius.com",
      "id": "fronius_smart_meter",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/fronius_smart_meter.yaml",
      "manufacturers": [
        "Fronius"
      ],
      "min_host_version": "2.0.0",
      "protocol": "modbus",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "1.1.0"
        }
      ],
      "sha256": "1ba6d717b2a04818da0d23cfedd5bddc0dd603da5d8ad838b68bf42c0595e0f2",
      "size_bytes": 7521,
      "source_note": "",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/fronius_smart_meter.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "Fronius",
          "min_driver_version": "1.1.0",
          "model_family": "Smart Meter TS",
          "notes": "",
          "regions": [],
          "variants": []
        }
      ],
      "tier": "core",
      "title": "Fronius Smart Meter",
      "verification": {
        "at": "",
        "label": "Not verified on hardware",
        "level": "unverified",
        "notes": "Ported from a reference implementation. Not yet verified against live hardware on a FTW site.",
        "status": "experimental"
      },
      "version": "2.1.1"
    },
    {
      "author": "Sourceful Labs AB",
      "control": false,
      "ders": [
        "v2x_charger"
      ],
      "description": "",
      "hardware_verified": false,
      "homepage": "",
      "id": "goe",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/goe.yaml",
      "manufacturers": [
        "go-e"
      ],
      "min_host_version": "2.0.0",
      "protocol": "modbus",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "1.0.0"
        }
      ],
      "sha256": "5af1dcd4bfabf96ef16707a42c4f4b52aec36d1a6da27268ffd7a509db35f47d",
      "size_bytes": 3700,
      "source_note": "Emits: V2X Charger\nRegister type: HOLDING (FC 0x03)\nModbus TCP interface",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/goe.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "go-e",
          "min_driver_version": "1.0.0",
          "model_family": "Gemini",
          "notes": "Community driver, untested",
          "regions": [],
          "variants": [
            "Gemini flex 11kW",
            "Gemini flex 22kW",
            "go-e Pro"
          ]
        }
      ],
      "tier": "community",
      "title": "go-e Charger Gemini",
      "verification": null,
      "version": "1.0.3"
    },
    {
      "author": "Sourceful Labs AB",
      "control": false,
      "ders": [
        "v2x_charger"
      ],
      "description": "",
      "hardware_verified": false,
      "homepage": "",
      "id": "goe_http",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/goe_http.yaml",
      "manufacturers": [
        "go-e"
      ],
      "min_host_version": "2.1.0",
      "protocol": "http",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "1.0.0"
        }
      ],
      "sha256": "48b6d9ded6043e9b42a09bf03bd8edbab6363b18781e2279e957eee237556d25",
      "size_bytes": 3340,
      "source_note": "Emits: V2X Charger\nHTTP API v2, port 80\nEndpoint: GET /api/status\nReturns JSON with:\n  nrg: array [V_L1, V_L2, V_L3, V_N, A_L1, A_L2, A_L3, W_L1, W_L2, W_L3, W_N, W_total, PF_L1, PF_L2, PF_L3, PF_N]\n  wh:  session energy in Wh\n  car: 1=ready, 2=charging, 3=waiting, 4=complete\n  amp: max current in A\nNote: HTTP alternative to the Modbus go-e driver",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/goe_http.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "go-e",
          "min_driver_version": "1.0.0",
          "model_family": "Gemini HTTP",
          "notes": "HTTP alternative to Modbus driver",
          "regions": [],
          "variants": [
            "Gemini flex 11kW",
            "Gemini flex 22kW",
            "go-e Pro"
          ]
        }
      ],
      "tier": "community",
      "title": "go-e Charger HTTP",
      "verification": null,
      "version": "1.0.1"
    },
    {
      "author": "frekes81 and Sourceful contributors",
      "control": false,
      "ders": [
        "pv",
        "battery",
        "meter"
      ],
      "description": "GoodWe ET-Plus / EH series hybrid inverters via Modbus TCP.",
      "hardware_verified": false,
      "homepage": "https://en.goodwe.com",
      "id": "goodwe",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/goodwe.yaml",
      "manufacturers": [
        "GoodWe"
      ],
      "min_host_version": "1.10.0-beta.1",
      "protocol": "modbus",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "1.0.0"
        },
        {
          "date": "2026-07-21",
          "version": "1.0.1"
        },
        {
          "date": "2026-07-22",
          "version": "1.0.2"
        }
      ],
      "sha256": "674845c2b9bb815cbabc3a7b698d6eee4248eeb7b919d20859c4785107f175e3",
      "size_bytes": 9543,
      "source_note": "",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/goodwe.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "contract_passed",
          "control_enabled": false,
          "hil": "gw8kn_et_hk3000_required",
          "note": "Version 1.0.2 is an observe-only GW8KN-ET/HK3000 candidate. Stable needs the masked fixture, three hard-reboot recoveries and a 24-hour field pass.",
          "stable": null
        }
      },
      "tested_devices": [],
      "tier": "community",
      "title": "GoodWe hybrid inverter",
      "verification": {
        "at": "",
        "label": "Not verified on hardware",
        "level": "unverified",
        "notes": "Ported from a reference implementation. Not yet verified against live hardware on a FTW site.",
        "status": "experimental"
      },
      "version": "2.1.1"
    },
    {
      "author": "Sourceful Labs AB",
      "control": false,
      "ders": [
        "pv",
        "battery",
        "meter"
      ],
      "description": "Growatt SPH / MOD hybrid inverters via Modbus TCP.",
      "hardware_verified": false,
      "homepage": "https://www.growatt.com",
      "id": "growatt",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/growatt.yaml",
      "manufacturers": [
        "Growatt"
      ],
      "min_host_version": "2.0.0",
      "protocol": "modbus",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "1.0.0"
        }
      ],
      "sha256": "3c4563fc848786caa8fb3a751b1a9c5fbf13db9e173b27a5fa2780c9cbadcf49",
      "size_bytes": 9353,
      "source_note": "",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/growatt.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "Growatt",
          "min_driver_version": "1.0.0",
          "model_family": "SPH Series (Single-Phase Hybrid)",
          "notes": "Community driver, untested",
          "regions": [],
          "variants": [
            "SPH3000",
            "SPH3600",
            "SPH4000",
            "SPH4600",
            "SPH5000",
            "SPH6000"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Growatt",
          "min_driver_version": "1.0.0",
          "model_family": "SPH-TL3 Series (Three-Phase Hybrid)",
          "notes": "Community driver, untested",
          "regions": [],
          "variants": [
            "SPH5000TL3",
            "SPH6000TL3",
            "SPH8000TL3",
            "SPH10000TL3"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Growatt",
          "min_driver_version": "1.0.0",
          "model_family": "MIN Series (Single-Phase String)",
          "notes": "Community driver, untested",
          "regions": [],
          "variants": [
            "MIN2500",
            "MIN3000",
            "MIN3600",
            "MIN4200",
            "MIN4600",
            "MIN5000",
            "MIN6000"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Growatt",
          "min_driver_version": "1.0.0",
          "model_family": "MIC Series (Micro)",
          "notes": "Community driver, untested",
          "regions": [],
          "variants": [
            "MIC600",
            "MIC750",
            "MIC1000",
            "MIC1500",
            "MIC2000",
            "MIC2500",
            "MIC3000"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Growatt",
          "min_driver_version": "1.0.0",
          "model_family": "MOD Series (Three-Phase String)",
          "notes": "Community driver, untested",
          "regions": [],
          "variants": [
            "MOD3000",
            "MOD4000",
            "MOD5000",
            "MOD6000",
            "MOD7000",
            "MOD8000",
            "MOD9000",
            "MOD10000"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Growatt",
          "min_driver_version": "1.0.0",
          "model_family": "MAX Series (Three-Phase Commercial)",
          "notes": "Community driver, untested",
          "regions": [],
          "variants": [
            "MAX50",
            "MAX60",
            "MAX70",
            "MAX75",
            "MAX80",
            "MAX100",
            "MAX110",
            "MAX125"
          ]
        }
      ],
      "tier": "community",
      "title": "Growatt hybrid inverter",
      "verification": {
        "at": "",
        "label": "Not verified on hardware",
        "level": "unverified",
        "notes": "Ported from a reference implementation. Not yet verified against live hardware on a FTW site.",
        "status": "experimental"
      },
      "version": "2.1.1"
    },
    {
      "author": "Sourceful Labs AB",
      "control": false,
      "ders": [
        "v2x_charger"
      ],
      "description": "",
      "hardware_verified": false,
      "homepage": "",
      "id": "hardybarth",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/hardybarth.yaml",
      "manufacturers": [
        "HardyBarth"
      ],
      "min_host_version": "2.1.0",
      "protocol": "http",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "1.0.0"
        }
      ],
      "sha256": "517e086af899dc511c86b00460cd8ce052a8d4973edee8b018e5824d4b550d6e",
      "size_bytes": 2193,
      "source_note": "Emits: V2X Charger\nHTTP REST API, port 80\nEndpoint: GET /api/status\nReturns JSON with power, energy, current, voltage, state",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/hardybarth.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "HardyBarth",
          "min_driver_version": "1.0.0",
          "model_family": "cPH / Salia",
          "notes": "Community driver, untested",
          "regions": [],
          "variants": [
            "cPH1",
            "Salia"
          ]
        }
      ],
      "tier": "community",
      "title": "HardyBarth cPH/Salia EV Charger HTTP",
      "verification": null,
      "version": "1.0.1"
    },
    {
      "author": "Sourceful Labs AB",
      "control": true,
      "ders": [
        "heatpump"
      ],
      "description": "Panasonic Aquarea H/J/K/L/M-series heat pump via Heishamon MQTT bridge. Controls Zone 1 heat curve offset (Z1_Heat_Request_Temp) in range -3..+3 \u00b0C.",
      "hardware_verified": false,
      "homepage": "https://github.com/Egyjs/HeishaMon",
      "id": "heishamon",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/heishamon.yaml",
      "manufacturers": [
        "Panasonic"
      ],
      "min_host_version": "2.0.0",
      "protocol": "mqtt",
      "releases": [],
      "sha256": "01a8bc73689715531cfc0f21963c045b2144fa54715690949b44a578ee821a88",
      "size_bytes": 6973,
      "source_note": "",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/heishamon.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "Panasonic",
          "min_driver_version": "0.4.0",
          "model_family": "Panasonic Aquarea (Heishamon)",
          "notes": "Panasonic Aquarea H/J/K/L/M-series heat pump via Heishamon MQTT bridge. Controls Zone 1 heat curve offset (Z1_Heat_Request_Temp) in range -3..+3 \u00b0C.",
          "regions": [],
          "variants": [
            "WH-SXC09H3E8"
          ]
        }
      ],
      "tier": "core",
      "title": "Panasonic Aquarea (Heishamon)",
      "verification": {
        "at": "2026-06-21",
        "label": "Not verified on hardware",
        "level": "unverified",
        "notes": "Tested on WH-SXC09H3E8 (H-series) with Heishamon Large v4.1.6 on ESP32. MQTT via core-mosquitto on HA Green. Live metrics confirmed. Offset control verified via Z1_Heat_Request_Temp.",
        "status": "experimental"
      },
      "version": "0.5.0"
    },
    {
      "author": "",
      "control": false,
      "ders": [
        "meter"
      ],
      "description": "",
      "hardware_verified": false,
      "homepage": "",
      "id": "hello",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/hello.yaml",
      "manufacturers": [],
      "min_host_version": "2.0.0",
      "protocol": "",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "1.1.0"
        }
      ],
      "sha256": "4f273fa6aaff3bb462c3ac141f1773a2b6985421633d002578ce647726aa0ba9",
      "size_bytes": 1362,
      "source_note": "Demonstrates the driver contract and host API.\nThis driver emits a test meter metric every 5 seconds.\n\nDriver contract (compatible with both Blaxt and Zap):\n  driver_init(config)   \u2014 called once at startup\n  driver_poll()         \u2014 called periodically, returns interval_ms\n  driver_cleanup()      \u2014 called on shutdown",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/hello.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [],
      "tier": "community",
      "title": "Phase 0 hello-world",
      "verification": null,
      "version": "1.1.2"
    },
    {
      "author": "Sourceful Labs AB",
      "control": true,
      "ders": [
        "battery",
        "meter",
        "pv"
      ],
      "description": "Huawei SUN2000 hybrid inverters with LUNA2000 battery via Modbus TCP.",
      "hardware_verified": false,
      "homepage": "https://solar.huawei.com",
      "id": "huawei",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/huawei.yaml",
      "manufacturers": [
        "Huawei"
      ],
      "min_host_version": "2.0.0",
      "protocol": "modbus",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "1.3.0"
        }
      ],
      "sha256": "0bfdeadf96fc9076d7214f5b751886984f049efde59a9a7c8cb6c01928702aa5",
      "size_bytes": 15257,
      "source_note": "",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/huawei.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "Huawei",
          "min_driver_version": "1.3.0",
          "model_family": "SUN2000 (Single-Phase)",
          "notes": "Single-phase residential inverter",
          "regions": [
            "EU"
          ],
          "variants": [
            "SUN2000-2KTL-L1",
            "SUN2000-3KTL-L1",
            "SUN2000-4KTL-L1",
            "SUN2000-5KTL-L1",
            "SUN2000-6KTL-L1"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Huawei",
          "min_driver_version": "1.3.0",
          "model_family": "SUN2000 (Three-Phase Residential)",
          "notes": "Three-phase residential inverter, tested with SUN2000-10KTL-M1",
          "regions": [
            "EU"
          ],
          "variants": [
            "SUN2000-3KTL-M1",
            "SUN2000-4KTL-M1",
            "SUN2000-5KTL-M1",
            "SUN2000-6KTL-M1",
            "SUN2000-8KTL-M1",
            "SUN2000-10KTL-M1"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Huawei",
          "min_driver_version": "1.3.0",
          "model_family": "SUN2000 (Three-Phase Commercial)",
          "notes": "Three-phase commercial string inverter",
          "regions": [
            "EU",
            "INT"
          ],
          "variants": [
            "SUN2000-12KTL-M2",
            "SUN2000-15KTL-M2",
            "SUN2000-17KTL-M2",
            "SUN2000-20KTL-M2",
            "SUN2000-25KTL-M5",
            "SUN2000-30KTL-M3",
            "SUN2000-36KTL",
            "SUN2000-40KTL-M3",
            "SUN2000-50KTL-M3"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Huawei",
          "min_driver_version": "1.3.0",
          "model_family": "LUNA2000 (Battery)",
          "notes": "High-voltage lithium battery modules (5/10/15 kWh)",
          "regions": [
            "EU"
          ],
          "variants": [
            "LUNA2000-5-S0",
            "LUNA2000-10-S0",
            "LUNA2000-15-S0"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Huawei",
          "min_driver_version": "1.3.0",
          "model_family": "SmartLogger",
          "notes": "C&I aggregator gateway, Modbus TCP server",
          "regions": [
            "EU",
            "INT"
          ],
          "variants": [
            "SmartLogger 1000A",
            "SmartLogger 3000A"
          ]
        }
      ],
      "tier": "core",
      "title": "Huawei SUN2000 Hybrid Inverter",
      "verification": {
        "at": "",
        "label": "Not verified on hardware",
        "level": "unverified",
        "notes": "Ported from a reference implementation. Not yet verified against live hardware on a FTW site.",
        "status": "experimental"
      },
      "version": "2.1.1"
    },
    {
      "author": "Sourceful Labs AB",
      "control": false,
      "ders": [
        "meter"
      ],
      "description": "",
      "hardware_verified": false,
      "homepage": "",
      "id": "janitza",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/janitza.yaml",
      "manufacturers": [
        "Janitza"
      ],
      "min_host_version": "2.0.0",
      "protocol": "modbus",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "1.0.0"
        }
      ],
      "sha256": "e3594504efd1315d86ced6480b8f526cfd0f940e992a5743858af8f772199eae",
      "size_bytes": 4524,
      "source_note": "Emits: Meter only\nRegister type: HOLDING (FC 0x03)\nAll values are F32 Big-Endian\nDefault port 502",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/janitza.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "Janitza",
          "min_driver_version": "1.0.0",
          "model_family": "UMG Series",
          "notes": "Community driver, untested",
          "regions": [],
          "variants": [
            "UMG 96",
            "UMG 604 Pro",
            "UMG 806",
            "UMG 96RM",
            "UMG 511",
            "UMG 512"
          ]
        }
      ],
      "tier": "community",
      "title": "Janitza UMG 96/604/806 Three-Phase Meter",
      "verification": null,
      "version": "1.0.5"
    },
    {
      "author": "Sourceful Labs AB",
      "control": false,
      "ders": [
        "v2x_charger"
      ],
      "description": "",
      "hardware_verified": false,
      "homepage": "",
      "id": "keba",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/keba.yaml",
      "manufacturers": [
        "Keba"
      ],
      "min_host_version": "2.0.0",
      "protocol": "modbus",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "1.0.0"
        }
      ],
      "sha256": "8c8f2685dbd9a67b422c134c9d1afc53d073233f0b2c10cca75c8b30fefaad91",
      "size_bytes": 4620,
      "source_note": "Emits: V2X Charger\nRegister type: HOLDING (FC 0x03)\nKeba Modbus TCP interface\nNote: Most values are U32 in milliunit format",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/keba.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "Keba",
          "min_driver_version": "1.0.0",
          "model_family": "KeContact P30",
          "notes": "Community driver, untested",
          "regions": [],
          "variants": [
            "P30 c-series",
            "P30 x-series"
          ]
        }
      ],
      "tier": "community",
      "title": "Keba KeContact P30 EV Charger",
      "verification": null,
      "version": "1.0.3"
    },
    {
      "author": "Sourceful Labs AB",
      "control": false,
      "ders": [
        "pv",
        "battery",
        "meter"
      ],
      "description": "Kostal Plenticore Plus and Piko IQ via Modbus TCP (SunSpec plus Kostal custom map).",
      "hardware_verified": false,
      "homepage": "https://www.kostal-solar-electric.com",
      "id": "kostal",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/kostal.yaml",
      "manufacturers": [
        "Kostal"
      ],
      "min_host_version": "2.0.0",
      "protocol": "modbus",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "1.0.0"
        }
      ],
      "sha256": "e0801761d200b1a948872b6bfca3c662483c7dfc00445e15f83eaf07f80a6bf5",
      "size_bytes": 11199,
      "source_note": "",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/kostal.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "Kostal",
          "min_driver_version": "1.0.0",
          "model_family": "Plenticore Plus",
          "notes": "SunSpec compliant, port 1502",
          "regions": [],
          "variants": [
            "Plenticore Plus 3.0",
            "Plenticore Plus 4.2",
            "Plenticore Plus 5.5",
            "Plenticore Plus 7.0",
            "Plenticore Plus 8.5",
            "Plenticore Plus 10.0"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Kostal",
          "min_driver_version": "1.0.0",
          "model_family": "Plenticore BI",
          "notes": "SunSpec compliant, port 1502",
          "regions": [],
          "variants": [
            "Plenticore BI 3.0",
            "Plenticore BI 4.2",
            "Plenticore BI 5.5",
            "Plenticore BI 7.0",
            "Plenticore BI 8.5",
            "Plenticore BI 10.0"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Kostal",
          "min_driver_version": "1.0.0",
          "model_family": "PIKO MP Plus",
          "notes": "SunSpec compliant, port 1502",
          "regions": [],
          "variants": [
            "PIKO MP Plus 1.5",
            "PIKO MP Plus 2.0",
            "PIKO MP Plus 2.5",
            "PIKO MP Plus 3.0",
            "PIKO MP Plus 3.6",
            "PIKO MP Plus 4.2",
            "PIKO MP Plus 4.6",
            "PIKO MP Plus 5.5"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Kostal",
          "min_driver_version": "1.0.0",
          "model_family": "PIKO IQ",
          "notes": "SunSpec compliant, port 1502",
          "regions": [],
          "variants": [
            "PIKO IQ 4.2",
            "PIKO IQ 5.5",
            "PIKO IQ 7.0",
            "PIKO IQ 8.5",
            "PIKO IQ 10.0"
          ]
        }
      ],
      "tier": "community",
      "title": "Kostal Plenticore",
      "verification": {
        "at": "",
        "label": "Not verified on hardware",
        "level": "unverified",
        "notes": "Ported from a reference implementation. Not yet verified against live hardware on a FTW site.",
        "status": "experimental"
      },
      "version": "2.1.1"
    },
    {
      "author": "Sourceful Labs AB",
      "control": false,
      "ders": [
        "pv",
        "battery",
        "meter"
      ],
      "description": "",
      "hardware_verified": false,
      "homepage": "",
      "id": "kstar",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/kstar.yaml",
      "manufacturers": [
        "KSTAR"
      ],
      "min_host_version": "2.0.0",
      "protocol": "modbus",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "1.0.0"
        }
      ],
      "sha256": "c6e41381f5a59f197b8e9899a770c32acd1e49c4c70a9faa3fec6b43f291d862",
      "size_bytes": 3615,
      "source_note": "Emits: PV, Battery, Meter\nRegister type: HOLDING (FC 0x03)\nPort: 502\nCommunity tier (untested)",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/kstar.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "KSTAR",
          "min_driver_version": "1.0.0",
          "model_family": "KSE (Hybrid)",
          "notes": "Community driver, untested",
          "regions": [],
          "variants": [
            "KSE-5K",
            "KSE-8K",
            "KSE-10K"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "KSTAR",
          "min_driver_version": "1.0.0",
          "model_family": "BluE-S Series",
          "notes": "Community driver, untested",
          "regions": [],
          "variants": [
            "BluE-S-3K",
            "BluE-S-5K",
            "BluE-S-6K"
          ]
        }
      ],
      "tier": "community",
      "title": "KSTAR KSE Series Inverter",
      "verification": null,
      "version": "1.1.1"
    },
    {
      "author": "Sourceful Labs AB",
      "control": false,
      "ders": [
        "v2x_charger"
      ],
      "description": "",
      "hardware_verified": false,
      "homepage": "",
      "id": "mennekes",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/mennekes.yaml",
      "manufacturers": [
        "Mennekes"
      ],
      "min_host_version": "2.0.0",
      "protocol": "modbus",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "1.0.0"
        }
      ],
      "sha256": "5f985b8917aea7b08fba13c02506b45e40232a763393dc6af7c6eeb6ab5853af",
      "size_bytes": 3766,
      "source_note": "Emits: V2X Charger\nRegister type: HOLDING (FC 0x03)\nValues use 0.1 scaling for current and voltage",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/mennekes.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "Mennekes",
          "min_driver_version": "1.0.0",
          "model_family": "AMTRON",
          "notes": "Community driver, untested",
          "regions": [],
          "variants": [
            "AMTRON Charge Control",
            "AMTRON Premium"
          ]
        }
      ],
      "tier": "community",
      "title": "Mennekes AMTRON EV Charger",
      "verification": null,
      "version": "1.0.3"
    },
    {
      "author": "Sourceful Labs AB",
      "control": true,
      "ders": [],
      "description": "Read-only heat-pump telemetry via MyUplink Cloud REST API v2: compressor power + hot-water/indoor/outdoor temperatures. Observe-only \u2014 no control. OAuth: authorization-code + refresh-token (connect in Settings \u2192 Devices).",
      "hardware_verified": false,
      "homepage": "https://dev.myuplink.com",
      "id": "myuplink",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/myuplink.yaml",
      "manufacturers": [
        "MyUplink (NIBE, Bosch, Atlantic, Daikin, ...)"
      ],
      "min_host_version": "2.0.0",
      "protocol": "http",
      "releases": [],
      "sha256": "d754fd4af96c2047f9d9e458a776ad8f10510569836618f4631dd70e2510f404",
      "size_bytes": 15278,
      "source_note": "",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/myuplink.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "MyUplink (NIBE, Bosch, Atlantic, Daikin, ...)",
          "min_driver_version": "1.0.0",
          "model_family": "MyUplink Heat Pump (telemetry)",
          "notes": "Read-only heat-pump telemetry via MyUplink Cloud REST API v2: compressor power + hot-water/indoor/outdoor temperatures. Observe-only \u2014 no control. OAuth: authorization-code + refresh-token (connect in Settings \u2192 Devices).",
          "regions": [],
          "variants": [
            "NIBE F1145",
            "NIBE S1255",
            "NIBE F730"
          ]
        }
      ],
      "tier": "core",
      "title": "MyUplink Heat Pump (telemetry)",
      "verification": {
        "at": "",
        "label": "Not verified on hardware",
        "level": "unverified",
        "notes": "",
        "status": "experimental"
      },
      "version": "1.1.0"
    },
    {
      "author": "Sourceful Labs AB",
      "control": true,
      "ders": [
        "meter"
      ],
      "description": "Read-only NIBE S-series heat-pump telemetry over the on-prem Local REST API (HTTPS + Basic auth, self-signed cert pinned via tls_pin_sha256). Emits compressor/used power, lifetime energy meters, and the full ~980-point register map. Observe-only \u2014 no control.",
      "hardware_verified": false,
      "homepage": "https://www.nibe.eu",
      "id": "nibe_local",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/nibe_local.yaml",
      "manufacturers": [
        "NIBE"
      ],
      "min_host_version": "2.0.0",
      "protocol": "http",
      "releases": [],
      "sha256": "b89177004a2eff5a5b60e2f275f584f079acf02876c049b231ba3170bb35ac50",
      "size_bytes": 18227,
      "source_note": "",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/nibe_local.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "NIBE",
          "min_driver_version": "1.0.0",
          "model_family": "NIBE REST API S-series",
          "notes": "Read-only NIBE S-series heat-pump telemetry over the on-prem Local REST API (HTTPS + Basic auth, self-signed cert pinned via tls_pin_sha256). Emits compressor/used power, lifetime energy meters, and the full ~980-point register map. Observe-only \u2014 no control.",
          "regions": [],
          "variants": [
            "NIBE S735"
          ]
        }
      ],
      "tier": "core",
      "title": "NIBE REST API S-series",
      "verification": {
        "at": "",
        "label": "Partly verified",
        "level": "partial",
        "notes": "",
        "status": "beta"
      },
      "version": "1.1.0"
    },
    {
      "author": "Sourceful Labs AB",
      "control": false,
      "ders": [
        "pv",
        "meter"
      ],
      "description": "",
      "hardware_verified": false,
      "homepage": "",
      "id": "opendtu",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/opendtu.yaml",
      "manufacturers": [
        "Hoymiles"
      ],
      "min_host_version": "2.1.0",
      "protocol": "http",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "1.0.0"
        }
      ],
      "sha256": "8c8e5cdd0d3c4160f0d1460c4306b374e6804f0d7d9c1c6459c9e74a0ea89a12",
      "size_bytes": 3766,
      "source_note": "Emits: PV, Meter\nREST API on port 80\nReads /api/livedata/status and sums all inverters\nSign convention: PV W is negative (generation)",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/opendtu.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "Hoymiles",
          "min_driver_version": "1.0.0",
          "model_family": "HM Series",
          "notes": "Requires OpenDTU or Ahoy DTU hardware (ESP32)",
          "regions": [],
          "variants": [
            "HM-300",
            "HM-350",
            "HM-400",
            "HM-600",
            "HM-700",
            "HM-800",
            "HM-1000",
            "HM-1200",
            "HM-1500"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Hoymiles",
          "min_driver_version": "1.0.0",
          "model_family": "HMS Series (WiFi)",
          "notes": "Requires OpenDTU or Ahoy DTU hardware (ESP32)",
          "regions": [],
          "variants": [
            "HMS-300",
            "HMS-350",
            "HMS-400",
            "HMS-500",
            "HMS-600",
            "HMS-700",
            "HMS-800",
            "HMS-900",
            "HMS-1000",
            "HMS-1600",
            "HMS-1800",
            "HMS-2000"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Hoymiles",
          "min_driver_version": "1.0.0",
          "model_family": "HMT Series (Three-Phase)",
          "notes": "Requires OpenDTU or Ahoy DTU hardware (ESP32)",
          "regions": [],
          "variants": [
            "HMT-1600",
            "HMT-1800",
            "HMT-2000",
            "HMT-2250"
          ]
        }
      ],
      "tier": "community",
      "title": "Hoymiles via OpenDTU HTTP",
      "verification": null,
      "version": "1.0.2"
    },
    {
      "author": "Sourceful Labs AB",
      "control": false,
      "ders": [
        "pv",
        "meter"
      ],
      "description": "",
      "hardware_verified": false,
      "homepage": "",
      "id": "opendtu_mqtt",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/opendtu_mqtt.yaml",
      "manufacturers": [
        "Hoymiles"
      ],
      "min_host_version": "2.0.0",
      "protocol": "mqtt",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "1.0.0"
        },
        {
          "date": "2026-07-21",
          "version": "1.0.1"
        }
      ],
      "sha256": "a5f0416653e14676f27bddc989cee1d89e948c1e6e61cfe9ee8d5e10cef222be",
      "size_bytes": 4009,
      "source_note": "Emits: PV, Meter\nMQTT protocol\n\nSubscribes to: solar/#\nTopics:\n  solar/+/status/AC/Power       (W)\n  solar/+/status/AC/Voltage     (V)\n  solar/+/status/AC/Current     (A)\n  solar/+/status/AC/Frequency   (Hz)\n  solar/+/status/DC/0/Voltage   (V, MPPT 1)\n  solar/+/status/DC/0/Current   (A, MPPT 1)\n  solar/+/status/INV/YieldTotal (kWh)",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/opendtu_mqtt.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "Hoymiles",
          "min_driver_version": "1.0.0",
          "model_family": "HM Series",
          "notes": "MQTT alternative, requires OpenDTU MQTT configured",
          "regions": [],
          "variants": [
            "HM-300",
            "HM-350",
            "HM-400",
            "HM-600",
            "HM-700",
            "HM-800"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Hoymiles",
          "min_driver_version": "1.0.0",
          "model_family": "HMS Series",
          "notes": "MQTT alternative, requires OpenDTU MQTT configured",
          "regions": [],
          "variants": [
            "HMS-300",
            "HMS-350",
            "HMS-400",
            "HMS-500",
            "HMS-600",
            "HMS-700",
            "HMS-800",
            "HMS-900",
            "HMS-1000",
            "HMS-1600",
            "HMS-1800",
            "HMS-2000"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Hoymiles",
          "min_driver_version": "1.0.0",
          "model_family": "HMT Series",
          "notes": "MQTT alternative, requires OpenDTU MQTT configured",
          "regions": [],
          "variants": [
            "HMT-1600",
            "HMT-1800",
            "HMT-2000",
            "HMT-2250"
          ]
        }
      ],
      "tier": "community",
      "title": "Hoymiles via OpenDTU MQTT",
      "verification": null,
      "version": "1.0.3"
    },
    {
      "author": "Sourceful Labs AB",
      "control": false,
      "ders": [
        "v2x_charger"
      ],
      "description": "",
      "hardware_verified": false,
      "homepage": "",
      "id": "openevse",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/openevse.yaml",
      "manufacturers": [
        "OpenEVSE"
      ],
      "min_host_version": "2.1.0",
      "protocol": "http",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "1.0.0"
        }
      ],
      "sha256": "1ca0bd1577f5dedd93ea6b613ad85193ba9a3e43b917f56c7f639f355b95f095",
      "size_bytes": 2446,
      "source_note": "Emits: V2X Charger\nREST API on port 80\nReads /status endpoint for charger state and measurements",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/openevse.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "OpenEVSE",
          "min_driver_version": "1.0.0",
          "model_family": "OpenEVSE",
          "notes": "Community driver, untested",
          "regions": [],
          "variants": []
        }
      ],
      "tier": "community",
      "title": "OpenEVSE HTTP",
      "verification": null,
      "version": "1.0.1"
    },
    {
      "author": "Sourceful Labs AB",
      "control": false,
      "ders": [
        "meter"
      ],
      "description": "",
      "hardware_verified": false,
      "homepage": "",
      "id": "p1_dsmr",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/p1_dsmr.yaml",
      "manufacturers": [
        "Various (DSMR)"
      ],
      "min_host_version": "2.0.0",
      "protocol": "serial",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "2.0.0"
        }
      ],
      "sha256": "fac04083c9f8bbbfa1918151435f251dd6dede9bdc7fd999b2dc5a78e999e26c",
      "size_bytes": 7201,
      "source_note": "Emits: Meter\nProtocol: Serial (UART)\n\nParses IEC 62056-21 ASCII telegrams from DSMR v2.2/v4/v5 meters.\nUsed in: Netherlands, Belgium, Sweden (Aydon/Ellevio), Denmark.\n\nConfig:\n  rx_pin:    GPIO for RX (default 20 on Zap)\n  baud_rate: 115200 for DSMR v5/Nordic, 9600 for DSMR v2/v4\n  invert_rx: true if signal is inverted (common on Zap hardware)\n  parity:    \"none\" (default), \"even\" for some v2/v4 meters",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/p1_dsmr.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "Various (DSMR)",
          "min_driver_version": "2.0.0",
          "model_family": "DSMR v2.2/v4/v5",
          "notes": "IEC 62056-21 ASCII telegrams, 115200 8N1 (v5) or 9600 7E1 (v2.2)",
          "regions": [
            "NL",
            "BE",
            "SE",
            "DK"
          ],
          "variants": []
        }
      ],
      "tier": "core",
      "title": "P1 DSMR Smart Meter",
      "verification": null,
      "version": "2.0.2"
    },
    {
      "author": "Sourceful Labs AB",
      "control": false,
      "ders": [
        "meter"
      ],
      "description": "",
      "hardware_verified": false,
      "homepage": "",
      "id": "p1_encrypted",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/p1_encrypted.yaml",
      "manufacturers": [
        "Various (Belgian)",
        "Various (Austrian)"
      ],
      "min_host_version": "2.0.0",
      "protocol": "serial",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "2.0.0"
        }
      ],
      "sha256": "a5337ddce9fc75cfa66d0c2c393b5ba203604e4474df56f5e28c19596560d082",
      "size_bytes": 11071,
      "source_note": "Emits: Meter\nProtocol: Serial (UART)\n\nHandles AES-128-GCM encrypted HDLC frames from European smart meters.\nThe outer frame is HDLC, the payload is GCM-encrypted DLMS/COSEM.\nUsed in: Belgium (Fluvius), Austria (EVN), Luxembourg.\n\nConfig:\n  rx_pin:         GPIO for RX (default 20 on Zap)\n  baud_rate:      115200 (typical)\n  invert_rx:      true if signal is inverted\n  encryption_key: 32-char hex string (16 bytes AES key, from utility)",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/p1_encrypted.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "Various (Belgian)",
          "min_driver_version": "2.0.0",
          "model_family": "Belgian e-MUCS/SMR5",
          "notes": "DSMR v5 + Belgian extensions, AES-GCM encrypted, requires keys from DSO",
          "regions": [
            "BE"
          ],
          "variants": []
        },
        {
          "firmware_versions": "",
          "manufacturer": "Various (Austrian)",
          "min_driver_version": "2.0.0",
          "model_family": "Austrian Smart Meter",
          "notes": "HDLC/DLMS/COSEM, AES-GCM encrypted",
          "regions": [
            "AT",
            "CH",
            "LU"
          ],
          "variants": []
        }
      ],
      "tier": "core",
      "title": "P1 Encrypted Smart Meter Driver (GCM)",
      "verification": null,
      "version": "2.0.2"
    },
    {
      "author": "Sourceful Labs AB",
      "control": false,
      "ders": [
        "meter"
      ],
      "description": "",
      "hardware_verified": false,
      "homepage": "",
      "id": "p1_hdlc",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/p1_hdlc.yaml",
      "manufacturers": [
        "Aidon",
        "Kaifa"
      ],
      "min_host_version": "2.0.0",
      "protocol": "serial",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "2.0.0"
        }
      ],
      "sha256": "87922aa6c9735f4caae38b7c92f6e42d53cc78a21cfd08cc1d9b0d88f48f924c",
      "size_bytes": 9203,
      "source_note": "Emits: Meter\nProtocol: Serial (UART)\n\nParses HDLC (IEC 62056-7-5) binary frames with DLMS/COSEM data.\nUsed in: Norway, some Sweden, Austria, Switzerland.\n\nConfig:\n  rx_pin:    GPIO for RX (default 20 on Zap)\n  baud_rate: 2400 or 115200 depending on meter model\n  invert_rx: true if signal is inverted\n  parity:    \"none\" or \"even\" depending on meter",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/p1_hdlc.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "Aidon",
          "min_driver_version": "2.0.0",
          "model_family": "RJ45 HAN/NVE",
          "notes": "2400 baud, 8E1, HDLC/DLMS/COSEM",
          "regions": [
            "NO",
            "SE"
          ],
          "variants": [
            "6534",
            "6540",
            "6550",
            "6560",
            "6474",
            "6484"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Kaifa",
          "min_driver_version": "2.0.0",
          "model_family": "MA Series HAN",
          "notes": "2400 baud, 8E1, HDLC/DLMS/COSEM",
          "regions": [
            "NO"
          ],
          "variants": [
            "MA105H2E",
            "MA304H3E",
            "MA304H4",
            "MA304T3",
            "MA304T4"
          ]
        }
      ],
      "tier": "core",
      "title": "P1 HDLC/DLMS Smart Meter",
      "verification": null,
      "version": "2.0.2"
    },
    {
      "author": "Sourceful Labs AB",
      "control": false,
      "ders": [
        "meter"
      ],
      "description": "",
      "hardware_verified": false,
      "homepage": "",
      "id": "p1_meter",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/p1_meter.yaml",
      "manufacturers": [
        "Aidon",
        "Iskraemeco",
        "Kaifa",
        "Kamstrup",
        "Landis+Gyr",
        "NES",
        "Sagemcom",
        "Sanxing",
        "Various (DSMR)",
        "Various (Belgian)",
        "Various (Austrian)"
      ],
      "min_host_version": "2.0.0",
      "protocol": "serial",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "2.0.0"
        }
      ],
      "sha256": "29f2bd2f73c0d39d809839ca60b40c3e4281f1dda267ba2b26e66bd9ab80c27b",
      "size_bytes": 19344,
      "source_note": "Emits: Meter\nProtocol: Serial\n\nReads raw serial bytes via host.serial_read() and parses all supported\nEuropean smart meter protocols in Lua:\n\n  DSMR v2.2/v4/v5    (NL, BE, SE, DK)  \u2014 IEC 62056-21 ASCII\n  HDLC/DLMS/COSEM    (NO, SE, AT, CH)  \u2014 IEC 62056-7-5 binary\n  M-Bus + DLMS       (AT, some CH)     \u2014 EN 13757-2 framing\n  GCM encryption     (BE, AT, LU)      \u2014 AES-128-GCM (via host.aes_gcm_decrypt)\n\nHost provides only raw I/O:",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/p1_meter.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "Aidon",
          "min_driver_version": "2.0.0",
          "model_family": "RJ11 P1/DSMR",
          "notes": "115200 baud, 8N1, DSMR v5.0.2",
          "regions": [
            "SE",
            "DK"
          ],
          "variants": [
            "6442",
            "6490",
            "6492"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Aidon",
          "min_driver_version": "2.0.0",
          "model_family": "RJ45 HAN/NVE",
          "notes": "2400 baud, 8E1, HDLC/DLMS/COSEM",
          "regions": [
            "NO",
            "SE"
          ],
          "variants": [
            "6534",
            "6540",
            "6550",
            "6560",
            "6474",
            "6484"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Iskraemeco",
          "min_driver_version": "2.0.0",
          "model_family": "AM550",
          "notes": "115200 8N1 (DSMR) or 38400 8N1 (SI custom)",
          "regions": [
            "NL",
            "BE",
            "SI"
          ],
          "variants": [
            "AM550 DSMR",
            "AM550 DLMS"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Kaifa",
          "min_driver_version": "2.0.0",
          "model_family": "MA Series HAN",
          "notes": "2400 baud, 8E1, HDLC/DLMS/COSEM",
          "regions": [
            "NO"
          ],
          "variants": [
            "MA105H2E",
            "MA304H3E",
            "MA304H4",
            "MA304T3",
            "MA304T4"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Kaifa",
          "min_driver_version": "2.0.0",
          "model_family": "MA Series DLMS (AT)",
          "notes": "2400 baud, 8N1, HDLC/DLMS/COSEM, may require encryption key",
          "regions": [
            "AT"
          ],
          "variants": [
            "MA309MH4"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Kamstrup",
          "min_driver_version": "2.0.0",
          "model_family": "Omnia",
          "notes": "115200 baud, 8N1, DSMR v5.0.2",
          "regions": [
            "DK",
            "SE"
          ],
          "variants": [
            "Omnia E-meter"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Kamstrup",
          "min_driver_version": "2.0.0",
          "model_family": "Omnipower HAN",
          "notes": "2400 baud 8N1 (HAN/NVE) or 115200 8N1 (P1 adapter)",
          "regions": [
            "NO",
            "DK",
            "SE"
          ],
          "variants": [
            "684212",
            "684213",
            "685212",
            "685213",
            "686211",
            "C65"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Landis+Gyr",
          "min_driver_version": "2.0.0",
          "model_family": "E350",
          "notes": "2400 baud, 8N1, HAN/NVE, requires Embriq module",
          "regions": [
            "NO"
          ],
          "variants": [
            "E350"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Landis+Gyr",
          "min_driver_version": "2.0.0",
          "model_family": "E360",
          "notes": "115200 baud, 8N1, DSMR v5.0.2",
          "regions": [
            "SE",
            "DK"
          ],
          "variants": [
            "E360"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Landis+Gyr",
          "min_driver_version": "2.0.0",
          "model_family": "E450",
          "notes": "2400 baud, 8E1, HDLC/DLMS/COSEM, may require encryption key",
          "regions": [
            "AT",
            "CH"
          ],
          "variants": [
            "E450 S4",
            "E450 S5"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "NES",
          "min_driver_version": "2.0.0",
          "model_family": "G5",
          "notes": "115200 baud, 8N1, DSMR v5.0.2",
          "regions": [
            "DK"
          ],
          "variants": [
            "G5 83335-X"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Sagemcom",
          "min_driver_version": "2.0.0",
          "model_family": "S/T211 P1",
          "notes": "115200 baud, 8N1, DSMR v5.0.2",
          "regions": [
            "SE"
          ],
          "variants": [
            "S211",
            "T211"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Sagemcom",
          "min_driver_version": "2.0.0",
          "model_family": "T210-D/S210 DLMS",
          "notes": "2400 baud, 8N1, HDLC/DLMS/COSEM, may require encryption key",
          "regions": [
            "AT"
          ],
          "variants": [
            "T210-D",
            "S210"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Sanxing",
          "min_driver_version": "2.0.0",
          "model_family": "S34U18",
          "notes": "115200 baud, 8N1, DSMR v5.0.2 (SE) or EON payload (HU)",
          "regions": [
            "SE",
            "HU"
          ],
          "variants": [
            "S34U18"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Various (DSMR)",
          "min_driver_version": "2.0.0",
          "model_family": "DSMR v2.2",
          "notes": "9600 baud, 7E1, Dutch legacy meters",
          "regions": [
            "NL"
          ],
          "variants": []
        },
        {
          "firmware_versions": "",
          "manufacturer": "Various (DSMR)",
          "min_driver_version": "2.0.0",
          "model_family": "DSMR v4.x",
          "notes": "115200 baud, 8N1, Dutch smart meters",
          "regions": [
            "NL"
          ],
          "variants": []
        },
        {
          "firmware_versions": "",
          "manufacturer": "Various (DSMR)",
          "min_driver_version": "2.0.0",
          "model_family": "DSMR v5.0",
          "notes": "115200 baud, 8N1, current standard",
          "regions": [
            "NL",
            "BE",
            "SE",
            "DK"
          ],
          "variants": []
        },
        {
          "firmware_versions": "",
          "manufacturer": "Various (Belgian)",
          "min_driver_version": "2.0.0",
          "model_family": "Belgian e-MUCS/SMR5",
          "notes": "DSMR v5 + Belgian extensions, AES-GCM encrypted, requires keys from DSO",
          "regions": [
            "BE"
          ],
          "variants": []
        },
        {
          "firmware_versions": "",
          "manufacturer": "Various (Austrian)",
          "min_driver_version": "2.0.0",
          "model_family": "Austrian Smart Meter",
          "notes": "HDLC/DLMS/COSEM, often AES-GCM encrypted",
          "regions": [
            "AT",
            "CH",
            "LU"
          ],
          "variants": []
        }
      ],
      "tier": "core",
      "title": "P1/HAN Smart Meter Driver \u2014 Full Protocol Parser",
      "verification": null,
      "version": "2.0.2"
    },
    {
      "author": "Sourceful Labs AB and community contributors",
      "control": false,
      "ders": [
        "battery",
        "meter"
      ],
      "description": "Pixii PowerShaper commercial battery storage via Modbus TCP.",
      "hardware_verified": false,
      "homepage": "https://pixii.com",
      "id": "pixii",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/pixii.yaml",
      "manufacturers": [
        "Pixii"
      ],
      "min_host_version": "2.0.0",
      "protocol": "modbus",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "1.1.0"
        },
        {
          "date": "2026-07-23",
          "version": "1.1.1"
        }
      ],
      "sha256": "9f0c60a5e3414df07f2a8866a5275325b7539df92fb9d4d847028cfa5ed651fd",
      "size_bytes": 27853,
      "source_note": "",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/pixii.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "staged",
          "control_enabled": false,
          "hil": "required",
          "note": "Target differs materially from the FTW legacy driver. Golden telemetry, identity, fault, default-mode parity and physical HIL are required before activation.",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "Pixii",
          "min_driver_version": "1.1.0",
          "model_family": "PowerShaper",
          "notes": "",
          "regions": [],
          "variants": [
            "PowerShaper 2.0"
          ]
        }
      ],
      "tier": "core",
      "title": "Pixii PowerShaper",
      "verification": {
        "at": "",
        "label": "Not verified on hardware",
        "level": "unverified",
        "notes": "Ported from a reference implementation. Not yet verified against live hardware on a FTW site.",
        "status": "experimental"
      },
      "version": "2.1.3"
    },
    {
      "author": "Sourceful Labs AB",
      "control": true,
      "ders": [
        "pv",
        "meter"
      ],
      "description": "Read-only Pixii telemetry: PV (external CTs) + grid meter (meter_w). Battery / SoC comes from the Modbus driver, not this one.",
      "hardware_verified": false,
      "homepage": "https://pixii.com",
      "id": "pixii_pv",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/pixii_pv.yaml",
      "manufacturers": [
        "Pixii"
      ],
      "min_host_version": "2.0.0",
      "protocol": "mqtt",
      "releases": [],
      "sha256": "d0901b6478e05b5cdf46fc2a9675700ba6008be2feb370be0ff7e87d2f1de883",
      "size_bytes": 6692,
      "source_note": "",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/pixii_pv.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "Pixii",
          "min_driver_version": "0.2.0",
          "model_family": "Pixii PowerShaper (PV + meter)",
          "notes": "Read-only Pixii telemetry: PV (external CTs) + grid meter (meter_w). Battery / SoC comes from the Modbus driver, not this one.",
          "regions": [],
          "variants": []
        }
      ],
      "tier": "core",
      "title": "Pixii PowerShaper (PV + meter)",
      "verification": {
        "at": "",
        "label": "Not verified on hardware",
        "level": "unverified",
        "notes": "",
        "status": "experimental"
      },
      "version": "0.3.0"
    },
    {
      "author": "Sourceful Labs AB",
      "control": false,
      "ders": [
        "pv",
        "battery",
        "meter"
      ],
      "description": "",
      "hardware_verified": false,
      "homepage": "",
      "id": "saj",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/saj.yaml",
      "manufacturers": [
        "SAJ"
      ],
      "min_host_version": "2.0.0",
      "protocol": "modbus",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "1.0.0"
        }
      ],
      "sha256": "3eec98c298872444cbddfc33c7c666decc367c427e5aacb7e1c240a3d6cdd21f",
      "size_bytes": 4855,
      "source_note": "Emits: PV, Battery, Meter\nRegister type: INPUT (FC 0x04)\nPort: 502\nCommunity tier (untested)\nHex addresses converted to decimal",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/saj.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "SAJ",
          "min_driver_version": "1.0.0",
          "model_family": "H2 (Three-Phase Hybrid)",
          "notes": "Community driver, untested",
          "regions": [],
          "variants": [
            "H2-5K",
            "H2-6K",
            "H2-8K",
            "H2-10K",
            "H2-12K",
            "H2-15K",
            "H2-20K",
            "H2-25K"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "SAJ",
          "min_driver_version": "1.0.0",
          "model_family": "HS2 (Single-Phase Hybrid)",
          "notes": "Community driver, untested",
          "regions": [],
          "variants": [
            "HS2-3K",
            "HS2-4K",
            "HS2-5K",
            "HS2-6K"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "SAJ",
          "min_driver_version": "1.0.0",
          "model_family": "AS2 (Three-Phase String)",
          "notes": "Community driver, untested",
          "regions": [],
          "variants": [
            "AS2-3K",
            "AS2-4K",
            "AS2-5K",
            "AS2-6K",
            "AS2-8K",
            "AS2-10K"
          ]
        }
      ],
      "tier": "community",
      "title": "SAJ H2/HS2/AS2 Series Inverter",
      "verification": null,
      "version": "1.1.1"
    },
    {
      "author": "Sourceful Labs AB",
      "control": false,
      "ders": [
        "meter"
      ],
      "description": "",
      "hardware_verified": false,
      "homepage": "",
      "id": "schneider_meter",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/schneider_meter.yaml",
      "manufacturers": [
        "Schneider Electric"
      ],
      "min_host_version": "2.0.0",
      "protocol": "modbus",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "1.0.0"
        }
      ],
      "sha256": "cfe95da259940699c7403e349c6402e10aad9dd358dc864f14d102326a1a39e7",
      "size_bytes": 4615,
      "source_note": "Emits: Meter only\nRegister type: HOLDING (FC 0x03)\nFloat32 for analog values, U32 for energy counters\nDefault port 502, unit ID 1",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/schneider_meter.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "Schneider Electric",
          "min_driver_version": "1.0.0",
          "model_family": "iEM3xxx/PM5xxx",
          "notes": "Community driver, untested",
          "regions": [],
          "variants": [
            "iEM3150",
            "iEM3155",
            "iEM3250",
            "iEM3255",
            "iEM3350",
            "iEM3355",
            "PM5100",
            "PM5110",
            "PM5300",
            "PM5310",
            "PM5330",
            "PM5340",
            "PM710"
          ]
        }
      ],
      "tier": "community",
      "title": "Schneider Electric iEM3xxx/PM5xxx Meter",
      "verification": null,
      "version": "1.0.5"
    },
    {
      "author": "Sourceful Labs AB",
      "control": false,
      "ders": [
        "v2x_charger"
      ],
      "description": "",
      "hardware_verified": false,
      "homepage": "",
      "id": "schrack_ev",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/schrack_ev.yaml",
      "manufacturers": [
        "Schrack"
      ],
      "min_host_version": "2.0.0",
      "protocol": "modbus",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "1.0.0"
        }
      ],
      "sha256": "652db1569e74d8a451ddfcefb4f55d897e144b9a955608d20b4278ed6b9a2fdd",
      "size_bytes": 3554,
      "source_note": "Emits: V2X Charger\nRegister type: HOLDING (FC 0x03)\nModbus TCP interface, port 502\nNote: Currents and voltages are U16 with 0.1 scaling factor",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/schrack_ev.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "Schrack",
          "min_driver_version": "1.0.0",
          "model_family": "i-CHARGE",
          "notes": "Community driver, untested",
          "regions": [],
          "variants": [
            "i-CHARGE CION",
            "i-CHARGE CION PRO"
          ]
        }
      ],
      "tier": "community",
      "title": "Schrack i-CHARGE EV Charger",
      "verification": null,
      "version": "1.0.3"
    },
    {
      "author": "Sourceful Labs AB",
      "control": false,
      "ders": [
        "meter"
      ],
      "description": "Eastron SDM630 three-phase meter via Modbus TCP or RTU.",
      "hardware_verified": false,
      "homepage": "https://www.eastrongroup.com",
      "id": "sdm630",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/sdm630.yaml",
      "manufacturers": [
        "Eastron"
      ],
      "min_host_version": "2.0.0",
      "protocol": "modbus",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "1.1.1"
        },
        {
          "date": "2026-07-20",
          "version": "1.1.2"
        }
      ],
      "sha256": "27d5612b891b01c98b054304a16295bd3e78982d166f731fd99372e3871eea54",
      "size_bytes": 5488,
      "source_note": "",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/sdm630.lua",
      "targets": {
        "blixt-l1": {
          "beta": "1.1.1",
          "conformance": "contract_passed",
          "control_enabled": false,
          "hil": "required_for_public_source_candidate",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": "1.1.1",
          "conformance": "contract_passed",
          "control_enabled": false,
          "hil": "required_for_public_source_candidate",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "Eastron",
          "min_driver_version": "1.1.1",
          "model_family": "SDM630",
          "notes": "",
          "regions": [],
          "variants": [
            "SDM630-Modbus"
          ]
        }
      ],
      "tier": "core",
      "title": "Eastron SDM630 meter",
      "verification": {
        "at": "",
        "label": "Not verified on hardware",
        "level": "unverified",
        "notes": "Read-only canonical package pilot; physical HIL verification is still required.",
        "status": "experimental"
      },
      "version": "2.0.1"
    },
    {
      "author": "Sourceful Labs AB",
      "control": false,
      "ders": [
        "meter"
      ],
      "description": "",
      "hardware_verified": false,
      "homepage": "",
      "id": "shelly",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/shelly.yaml",
      "manufacturers": [
        "Shelly"
      ],
      "min_host_version": "2.1.0",
      "protocol": "http",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "1.1.0"
        },
        {
          "date": "2026-07-21",
          "version": "1.1.1"
        }
      ],
      "sha256": "ca209373857d72f26e75a2c215a85279b6cc905647b947e1bb05ded9c76c61fd",
      "size_bytes": 11878,
      "source_note": "Emits: Meter only\nSupports all Shelly devices with energy metering via auto-detection:\n  EM component:  Pro 3EM, 3EM Gen3, 3EM-63W Gen3 (3-phase)\n  EM1 component: Pro EM-50, EM Gen3 (single-phase, 1-2 channels)\n  PM1 component: Mini PM Gen3, EM Mini Gen4 (power monitor, no relay)\n  Switch component: Plus 1PM/2PM, 1PM Gen3, 2PM Gen3, Pro 4PM,\n                    Plus Plug S, Plug S Gen3, 1PM Mini Gen3 (relay + metering)\n\nAll Gen2+ Shelly devices share a JSON-RPC 2.0 API over HTTP.\nThis driver auto-detects the device type via Shelly.GetDeviceInfo and polls\nthe appropriate status endpoint.",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/shelly.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "Shelly",
          "min_driver_version": "1.1.0",
          "model_family": "Pro 3EM",
          "notes": "3-phase energy meter with CT clamps, DIN rail (Gen2)",
          "regions": [],
          "variants": []
        },
        {
          "firmware_versions": "",
          "manufacturer": "Shelly",
          "min_driver_version": "1.1.0",
          "model_family": "3EM Gen3",
          "notes": "3-phase energy meter, triphase and monophase profiles",
          "regions": [],
          "variants": [
            "3EM Gen3",
            "3EM-63W Gen3"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Shelly",
          "min_driver_version": "1.1.0",
          "model_family": "Pro EM-50",
          "notes": "Single-phase energy meter, 2 channels, DIN rail (Gen2)",
          "regions": [],
          "variants": []
        },
        {
          "firmware_versions": "",
          "manufacturer": "Shelly",
          "min_driver_version": "1.1.0",
          "model_family": "EM Gen3",
          "notes": "Single-phase energy meter with contactor",
          "regions": [],
          "variants": [
            "EM Gen3 50A"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Shelly",
          "min_driver_version": "1.1.0",
          "model_family": "Mini PM Gen3",
          "notes": "Compact power monitor, no relay (confirmed on real hardware)",
          "regions": [],
          "variants": []
        },
        {
          "firmware_versions": "",
          "manufacturer": "Shelly",
          "min_driver_version": "1.1.0",
          "model_family": "Plus 1PM",
          "notes": "Single-channel relay with power metering (Gen2)",
          "regions": [],
          "variants": []
        },
        {
          "firmware_versions": "",
          "manufacturer": "Shelly",
          "min_driver_version": "1.1.0",
          "model_family": "1PM Gen3",
          "notes": "Single-channel relay with power metering",
          "regions": [],
          "variants": []
        },
        {
          "firmware_versions": "",
          "manufacturer": "Shelly",
          "min_driver_version": "1.1.0",
          "model_family": "Plus 2PM",
          "notes": "Dual-channel relay with power metering (Gen2)",
          "regions": [],
          "variants": []
        },
        {
          "firmware_versions": "",
          "manufacturer": "Shelly",
          "min_driver_version": "1.1.0",
          "model_family": "2PM Gen3",
          "notes": "Dual-channel relay with power metering",
          "regions": [],
          "variants": []
        },
        {
          "firmware_versions": "",
          "manufacturer": "Shelly",
          "min_driver_version": "1.1.0",
          "model_family": "Pro 4PM",
          "notes": "4-channel relay with power metering, DIN rail (Gen2)",
          "regions": [],
          "variants": []
        },
        {
          "firmware_versions": "",
          "manufacturer": "Shelly",
          "min_driver_version": "1.1.0",
          "model_family": "Plus Plug S",
          "notes": "Smart plug with energy metering (Gen2)",
          "regions": [],
          "variants": []
        },
        {
          "firmware_versions": "",
          "manufacturer": "Shelly",
          "min_driver_version": "1.1.0",
          "model_family": "Plug S Gen3",
          "notes": "Smart plug with energy metering",
          "regions": [],
          "variants": []
        }
      ],
      "tier": "community",
      "title": "Shelly Gen2/Gen3/Gen4 Family HTTP",
      "verification": null,
      "version": "1.1.2"
    },
    {
      "author": "Sourceful Labs AB",
      "control": false,
      "ders": [
        "meter"
      ],
      "description": "",
      "hardware_verified": false,
      "homepage": "",
      "id": "siemens_pac",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/siemens_pac.yaml",
      "manufacturers": [
        "Siemens"
      ],
      "min_host_version": "2.0.0",
      "protocol": "modbus",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "1.0.0"
        }
      ],
      "sha256": "1c5ae9906a5f19e39a38ef79be1fb6aed19092b1f99305a8503ea09882a8b6d4",
      "size_bytes": 4376,
      "source_note": "Emits: Meter only\nRegister type: HOLDING (FC 0x03)\nAll values are F32 Big-Endian\nDefault port 502",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/siemens_pac.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "Siemens",
          "min_driver_version": "1.0.0",
          "model_family": "PAC Series",
          "notes": "Community driver, untested",
          "regions": [],
          "variants": [
            "PAC2200",
            "PAC3200",
            "PAC1020"
          ]
        }
      ],
      "tier": "community",
      "title": "Siemens PAC2200/PAC3200 Three-Phase Meter",
      "verification": null,
      "version": "1.0.5"
    },
    {
      "author": "Sourceful Labs AB",
      "control": true,
      "ders": [
        "battery",
        "meter",
        "pv"
      ],
      "description": "",
      "hardware_verified": false,
      "homepage": "",
      "id": "sigenergy",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/sigenergy.yaml",
      "manufacturers": [
        "Sigenergy"
      ],
      "min_host_version": "2.0.0",
      "protocol": "modbus",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "1.0.0"
        }
      ],
      "sha256": "e2b903b6e3f616a1b49b8e6a0fbff6997415e8f80e5e14af9adcba0a866c7fcc",
      "size_bytes": 4841,
      "source_note": "Emits: PV, Battery, Meter\nProtocol: Modbus TCP/RTU\nReads plant-level data via slave address 247 (FC 0x04 input registers)\nControl via holding registers (FC 0x06/0x10)\nReference: Sigenergy Modbus Protocol V2.5",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/sigenergy.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "Sigenergy",
          "min_driver_version": "1.0.0",
          "model_family": "SigenStor EC Single-Phase (3-12kW)",
          "notes": "Single-phase hybrid inverter with ESS",
          "regions": [
            "EU",
            "INT"
          ],
          "variants": [
            "SigenStor-EC-3.0-SP",
            "SigenStor-EC-3.6-SP",
            "SigenStor-EC-4.0-SP",
            "SigenStor-EC-4.6-SP",
            "SigenStor-EC-5.0-SP",
            "SigenStor-EC-6.0-SP",
            "SigenStor-EC-8.0-SP",
            "SigenStor-EC-10.0-SP",
            "SigenStor-EC-12.0-SP"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Sigenergy",
          "min_driver_version": "1.0.0",
          "model_family": "Sigen Hybrid Single-Phase (3-6kW)",
          "notes": "Single-phase hybrid inverter",
          "regions": [
            "EU",
            "INT"
          ],
          "variants": [
            "Sigen-Hybrid-3.0-SP",
            "Sigen-Hybrid-3.6-SP",
            "Sigen-Hybrid-4.0-SP",
            "Sigen-Hybrid-4.6-SP",
            "Sigen-Hybrid-5.0-SP",
            "Sigen-Hybrid-6.0-SP"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Sigenergy",
          "min_driver_version": "1.0.0",
          "model_family": "Sigen Hybrid Three-Phase (5-30kW)",
          "notes": "Three-phase hybrid inverter",
          "regions": [
            "EU",
            "INT"
          ],
          "variants": [
            "Sigen-Hybrid-5.0-TP",
            "Sigen-Hybrid-6.0-TP",
            "Sigen-Hybrid-8.0-TP",
            "Sigen-Hybrid-10.0-TP",
            "Sigen-Hybrid-12.0-TP",
            "Sigen-Hybrid-15.0-TP",
            "Sigen-Hybrid-17.0-TP",
            "Sigen-Hybrid-20.0-TP",
            "Sigen-Hybrid-25.0-TP",
            "Sigen-Hybrid-30.0-TP"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Sigenergy",
          "min_driver_version": "1.0.0",
          "model_family": "SigenStor EC Three-Phase (5-30kW)",
          "notes": "Three-phase hybrid inverter with ESS, includes TPLV series",
          "regions": [
            "EU",
            "INT"
          ],
          "variants": [
            "SigenStor-EC-5.0-TP",
            "SigenStor-EC-6.0-TP",
            "SigenStor-EC-8.0-TP",
            "SigenStor-EC-10.0-TP",
            "SigenStor-EC-12.0-TP",
            "SigenStor-EC-15.0-TP",
            "SigenStor-EC-17.0-TP",
            "SigenStor-EC-20.0-TP",
            "SigenStor-EC-25.0-TP",
            "SigenStor-EC-30.0-TP"
          ]
        }
      ],
      "tier": "community",
      "title": "Sigenergy Hybrid Inverter",
      "verification": null,
      "version": "1.1.2"
    },
    {
      "author": "Sourceful Labs AB",
      "control": false,
      "ders": [
        "battery",
        "meter",
        "pv"
      ],
      "description": "SMA Sunny Tripower / Sunny Boy Storage via Modbus TCP (SunSpec).",
      "hardware_verified": false,
      "homepage": "https://www.sma.de",
      "id": "sma",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/sma.yaml",
      "manufacturers": [
        "SMA"
      ],
      "min_host_version": "2.0.0",
      "protocol": "modbus",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "1.2.0"
        }
      ],
      "sha256": "4af66894fef80d3955a94d4c5879d93d0110c8c91b32191bd8a597bee8dd17f3",
      "size_bytes": 13951,
      "source_note": "",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/sma.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "SMA",
          "min_driver_version": "1.2.0",
          "model_family": "Sunny Tripower X",
          "notes": "Latest three-phase hybrid platform",
          "regions": [
            "EU"
          ],
          "variants": [
            "STP-X-12",
            "STP-X-15",
            "STP-X-20",
            "STP-X-25"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "SMA",
          "min_driver_version": "1.2.0",
          "model_family": "Sunny Tripower",
          "notes": "Three-phase string inverter (legacy)",
          "regions": [
            "EU"
          ],
          "variants": [
            "STP 15000",
            "STP 17000",
            "STP 20000",
            "STP 25000"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "SMA",
          "min_driver_version": "1.2.0",
          "model_family": "Sunny Tripower CORE1",
          "notes": "Commercial three-phase string inverter",
          "regions": [
            "EU",
            "INT"
          ],
          "variants": [
            "STP 50-40",
            "STP 50-41"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "SMA",
          "min_driver_version": "1.2.0",
          "model_family": "Sunny Tripower CORE2",
          "notes": "Large commercial three-phase string inverter",
          "regions": [
            "EU",
            "INT"
          ],
          "variants": [
            "STP 110-60"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "SMA",
          "min_driver_version": "1.2.0",
          "model_family": "Sunny Boy",
          "notes": "Single-phase string inverter",
          "regions": [
            "EU"
          ],
          "variants": [
            "SB 3.0",
            "SB 3.6",
            "SB 4.0",
            "SB 5.0",
            "SB 6.0"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "SMA",
          "min_driver_version": "1.2.0",
          "model_family": "Sunny Island",
          "notes": "Battery inverter (off-grid / hybrid)",
          "regions": [
            "EU"
          ],
          "variants": [
            "SI 4.4M",
            "SI 6.0H",
            "SI 8.0H"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "SMA",
          "min_driver_version": "1.2.0",
          "model_family": "SMA Home Manager 2.0",
          "notes": "Energy meter / system manager",
          "regions": [
            "EU"
          ],
          "variants": []
        }
      ],
      "tier": "core",
      "title": "SMA hybrid inverter",
      "verification": {
        "at": "",
        "label": "Not verified on hardware",
        "level": "unverified",
        "notes": "Ported from a reference implementation. Not yet verified against live hardware on a FTW site.",
        "status": "experimental"
      },
      "version": "2.1.1"
    },
    {
      "author": "Sourceful Labs AB",
      "control": true,
      "ders": [
        "pv",
        "meter"
      ],
      "description": "SMA Sunny Tripower commercial string inverters (STP 50-40 / 50-41 / X-class) via Modbus TCP, with active-power curtailment over Modbus holding register 40915.",
      "hardware_verified": true,
      "homepage": "https://www.sma.de",
      "id": "sma_pv",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/sma_pv.yaml",
      "manufacturers": [
        "SMA"
      ],
      "min_host_version": "2.0.0",
      "protocol": "modbus",
      "releases": [],
      "sha256": "9aee3a604c605b5ecb9148c68fea03811485f3acb49ded834da74f852f3598af",
      "size_bytes": 19567,
      "source_note": "",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/sma_pv.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "SMA",
          "min_driver_version": "1.0.0",
          "model_family": "SMA PV inverter (non-hybrid)",
          "notes": "SMA Sunny Tripower commercial string inverters (STP 50-40 / 50-41 / X-class) via Modbus TCP, with active-power curtailment over Modbus holding register 40915.",
          "regions": [],
          "variants": [
            "Sunny Tripower STP 50-40 (CORE1)",
            "Sunny Tripower STP 50-41 (CORE2)"
          ]
        }
      ],
      "tier": "core",
      "title": "SMA PV inverter (non-hybrid)",
      "verification": {
        "at": "",
        "label": "Verified on hardware",
        "level": "confirmed",
        "notes": "Telemetry + curtailment verified live on 3\u00d7 STP 50-40 and 1\u00d7 STP 50-41. Curtailment settles within \u22482 s; steady-state tracking error \u22640.6% of setpoint.",
        "status": "tested"
      },
      "version": "1.1.1"
    },
    {
      "author": "Sourceful Labs AB",
      "control": false,
      "ders": [
        "meter"
      ],
      "description": "",
      "hardware_verified": false,
      "homepage": "",
      "id": "socomec",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/socomec.yaml",
      "manufacturers": [
        "Socomec"
      ],
      "min_host_version": "2.0.0",
      "protocol": "modbus",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "1.0.0"
        }
      ],
      "sha256": "acceec60de05166d1760314850227d33c57b26559a1696fc347b035b5f21902b",
      "size_bytes": 3818,
      "source_note": "Emits: Meter only\nRegister type: HOLDING (FC 0x03)\nU32/I32 with scaling\nDefault port 502",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/socomec.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "Socomec",
          "min_driver_version": "1.0.0",
          "model_family": "Diris / countis",
          "notes": "Community driver, untested",
          "regions": [],
          "variants": [
            "Diris A-10",
            "Diris A-20",
            "Diris A-40",
            "countis P44"
          ]
        }
      ],
      "tier": "community",
      "title": "Socomec Diris A-10/A-20/A-40 Three-Phase Meter",
      "verification": null,
      "version": "1.0.4"
    },
    {
      "author": "Sourceful Labs AB",
      "control": false,
      "ders": [
        "pv",
        "battery",
        "meter"
      ],
      "description": "Sofar Solar HYD-ES / HYD-EP hybrid inverters via Modbus TCP.",
      "hardware_verified": false,
      "homepage": "https://www.sofarsolar.com",
      "id": "sofar",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/sofar.yaml",
      "manufacturers": [
        "Sofar Solar"
      ],
      "min_host_version": "2.0.0",
      "protocol": "modbus",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "1.0.0"
        }
      ],
      "sha256": "26307ffaec7a11139038fc286a96d3d4ee7c6097bdba7c0eef22a2761597115c",
      "size_bytes": 9083,
      "source_note": "",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/sofar.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "Sofar Solar",
          "min_driver_version": "1.0.0",
          "model_family": "HYD Series (Three-Phase Hybrid)",
          "notes": "Community driver, untested",
          "regions": [],
          "variants": [
            "HYD5K-TL-3PH",
            "HYD6K-TL-3PH",
            "HYD8K-TL-3PH",
            "HYD10K-TL-3PH",
            "HYD15K-TL-3PH",
            "HYD20K-TL-3PH"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Sofar Solar",
          "min_driver_version": "1.0.0",
          "model_family": "ME Series (Single-Phase Hybrid)",
          "notes": "Community driver, untested",
          "regions": [],
          "variants": [
            "ME3000SP"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Sofar Solar",
          "min_driver_version": "1.0.0",
          "model_family": "HYD-ES (Single-Phase Hybrid)",
          "notes": "Community driver, untested",
          "regions": [],
          "variants": [
            "HYD3K-ES",
            "HYD4K-ES",
            "HYD5K-ES",
            "HYD6K-ES"
          ]
        }
      ],
      "tier": "community",
      "title": "Sofar hybrid inverter",
      "verification": {
        "at": "",
        "label": "Not verified on hardware",
        "level": "unverified",
        "notes": "Ported from a reference implementation. Not yet verified against live hardware on a FTW site.",
        "status": "experimental"
      },
      "version": "2.1.1"
    },
    {
      "author": "Sourceful Labs AB",
      "control": false,
      "ders": [
        "meter",
        "pv"
      ],
      "description": "SolarEdge HD-Wave / StorEdge via Modbus TCP (SunSpec) with PV active-power-limit curtail.",
      "hardware_verified": false,
      "homepage": "https://www.solaredge.com",
      "id": "solaredge",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/solaredge.yaml",
      "manufacturers": [
        "SolarEdge"
      ],
      "min_host_version": "2.0.0",
      "protocol": "modbus",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "1.2.0"
        }
      ],
      "sha256": "94b5f18fb42c1413540d7321bca47ed755c8a0a9b069f8d51dbac4384910c496",
      "size_bytes": 21555,
      "source_note": "",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/solaredge.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "SolarEdge",
          "min_driver_version": "1.2.0",
          "model_family": "SE Series (Single-Phase)",
          "notes": "Single-phase string inverters, port 1502",
          "regions": [
            "EU"
          ],
          "variants": [
            "SE2200H",
            "SE3000H",
            "SE3500H",
            "SE4000H",
            "SE5000H",
            "SE6000H"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "SolarEdge",
          "min_driver_version": "1.2.0",
          "model_family": "SE Series (Three-Phase)",
          "notes": "Three-phase string inverters, port 1502",
          "regions": [
            "EU",
            "INT"
          ],
          "variants": [
            "SE5K",
            "SE7K",
            "SE8K",
            "SE9K",
            "SE10K",
            "SE12.5K",
            "SE15K",
            "SE16K",
            "SE17K",
            "SE25K",
            "SE27.6K",
            "SE33.3K"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "SolarEdge",
          "min_driver_version": "1.2.0",
          "model_family": "StorEdge",
          "notes": "Hybrid inverters with battery support",
          "regions": [
            "EU",
            "US"
          ],
          "variants": [
            "SE3680H",
            "SE5000H-RWSEZ",
            "SE7600H-US",
            "SE10000H-US"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "SolarEdge",
          "min_driver_version": "1.2.0",
          "model_family": "SolarEdge Home",
          "notes": "Residential single-phase series",
          "regions": [
            "EU"
          ],
          "variants": [
            "SE3000H",
            "SE3680H",
            "SE4000H",
            "SE5000H",
            "SE6000H"
          ]
        }
      ],
      "tier": "core",
      "title": "SolarEdge inverter + meter",
      "verification": {
        "at": "",
        "label": "Not verified on hardware",
        "level": "unverified",
        "notes": "Ported from a reference implementation. Curtail path (F000/F001 registers) not yet verified against live hardware on a FTW site.",
        "status": "experimental"
      },
      "version": "2.1.1"
    },
    {
      "author": "Sourceful Labs AB",
      "control": true,
      "ders": [
        "pv"
      ],
      "description": "SolarEdge K-series (SE7K / SE10K / SE17K / SE25K) PV inverter via Modbus TCP \u2014 reads use FC 0x03 holding; curtail writes use FC 0x10 multi-holding on the same Advanced Power Control registers (0xF000/0xF001) as HD-Wave.",
      "hardware_verified": false,
      "homepage": "https://www.solaredge.com",
      "id": "solaredge_legacy",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/solaredge_legacy.yaml",
      "manufacturers": [
        "SolarEdge"
      ],
      "min_host_version": "2.0.0",
      "protocol": "modbus",
      "releases": [],
      "sha256": "7a590f5f35efc395754f002f0d48aef8b2d46cab525bf2ae863f4fd73b01781b",
      "size_bytes": 18246,
      "source_note": "",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/solaredge_legacy.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "SolarEdge",
          "min_driver_version": "0.2.0",
          "model_family": "SolarEdge legacy (K-series with display)",
          "notes": "SolarEdge K-series (SE7K / SE10K / SE17K / SE25K) PV inverter via Modbus TCP \u2014 reads use FC 0x03 holding; curtail writes use FC 0x10 multi-holding on the same Advanced Power Control registers (0xF000/0xF001) as HD-Wave.",
          "regions": [],
          "variants": [
            "SE17K (display",
            "legacy firmware)"
          ]
        }
      ],
      "tier": "core",
      "title": "SolarEdge legacy (K-series with display)",
      "verification": {
        "at": "",
        "label": "Not verified on hardware",
        "level": "unverified",
        "notes": "First-cut clone of solaredge.lua targeting K-series display inverters. Curtail path mirrors solaredge.lua (verified there in 25/50/75% sweep on HD-Wave 8 kW). K-series support documented in SolarEdge Power Reduction Application Note but not yet verified on this firmware family.",
        "status": "experimental"
      },
      "version": "0.3.2"
    },
    {
      "author": "Sourceful Labs AB",
      "control": true,
      "ders": [
        "pv"
      ],
      "description": "SolarEdge HD-Wave / StorEdge PV-only via Modbus TCP (SunSpec) with PV active-power-limit curtail.",
      "hardware_verified": false,
      "homepage": "https://www.solaredge.com",
      "id": "solaredge_pv",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/solaredge_pv.yaml",
      "manufacturers": [
        "SolarEdge"
      ],
      "min_host_version": "2.0.0",
      "protocol": "modbus",
      "releases": [],
      "sha256": "8ea6381cdc608939919b8ff55c22c1febe8a8da5a0b81f93cbd341a7d1733467",
      "size_bytes": 12121,
      "source_note": "",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/solaredge_pv.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "SolarEdge",
          "min_driver_version": "1.1.0",
          "model_family": "SolarEdge inverter (PV only)",
          "notes": "SolarEdge HD-Wave / StorEdge PV-only via Modbus TCP (SunSpec) with PV active-power-limit curtail.",
          "regions": [],
          "variants": [
            "HD-Wave",
            "StorEdge"
          ]
        }
      ],
      "tier": "core",
      "title": "SolarEdge inverter (PV only)",
      "verification": {
        "at": "",
        "label": "Not verified on hardware",
        "level": "unverified",
        "notes": "Ported from a reference implementation. Curtail path (F000/F001 registers) not yet verified against live hardware on a FTW site.",
        "status": "experimental"
      },
      "version": "1.2.1"
    },
    {
      "author": "Sourceful Labs AB",
      "control": false,
      "ders": [
        "pv",
        "battery",
        "meter"
      ],
      "description": "",
      "hardware_verified": false,
      "homepage": "",
      "id": "solax",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/solax.yaml",
      "manufacturers": [
        "SolaX"
      ],
      "min_host_version": "2.0.0",
      "protocol": "modbus",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "1.0.0"
        }
      ],
      "sha256": "b5f07776c959d4891a0487c23a3bc7e29b8c9c063eaaef754b98f0572cc547b2",
      "size_bytes": 5110,
      "source_note": "Emits: PV, Battery, Meter\nRegister type: INPUT (FC 0x04)\nByte order: Big-Endian for multi-register values\nPort: 502\nCommunity tier (untested)",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/solax.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "SolaX",
          "min_driver_version": "1.0.0",
          "model_family": "X1 Hybrid G4",
          "notes": "Community driver, untested",
          "regions": [],
          "variants": [
            "X1-3.0",
            "X1-3.7",
            "X1-5.0",
            "X1-6.0"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "SolaX",
          "min_driver_version": "1.0.0",
          "model_family": "X3 Hybrid G4",
          "notes": "Community driver, untested",
          "regions": [],
          "variants": [
            "X3-5.0",
            "X3-6.0",
            "X3-8.0",
            "X3-10.0",
            "X3-12.0",
            "X3-15.0"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "SolaX",
          "min_driver_version": "1.0.0",
          "model_family": "X3 Hybrid G4 PRO",
          "notes": "Community driver, untested",
          "regions": [],
          "variants": [
            "X3-PRO-10.0",
            "X3-PRO-15.0",
            "X3-PRO-20.0"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "SolaX",
          "min_driver_version": "1.0.0",
          "model_family": "X3 MIC/PRO G2 (String)",
          "notes": "Community driver, untested",
          "regions": [],
          "variants": [
            "X3-MIC-4.0",
            "X3-MIC-5.0",
            "X3-MIC-6.0",
            "X3-MIC-8.0"
          ]
        }
      ],
      "tier": "community",
      "title": "SolaX X1/X3 Hybrid Series Inverter",
      "verification": null,
      "version": "1.1.1"
    },
    {
      "author": "Sourceful Labs AB",
      "control": true,
      "ders": [
        "battery",
        "meter",
        "pv"
      ],
      "description": "",
      "hardware_verified": false,
      "homepage": "",
      "id": "solinteg",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/solinteg.yaml",
      "manufacturers": [
        "Solinteg"
      ],
      "min_host_version": "2.0.0",
      "protocol": "modbus",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "1.0.0"
        }
      ],
      "sha256": "8529406d47253a42a360ff77ff527679587eb24a78241f0ee66e6274818ac67b",
      "size_bytes": 8837,
      "source_note": "Emits: PV, Battery, Meter\nProtocol: Modbus TCP/RTU (all registers via FC 0x03 holding)\nByte order: Big-Endian\nCovers: Gen1 (MHT/MHS) and Gen2 (M2HT/M2HS) series\nRegister reference: Solinteg Hybrid Inverter Modbus Register Table V00.22",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/solinteg.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "Solinteg",
          "min_driver_version": "1.0.0",
          "model_family": "MHT Gen1 Three-Phase 2-MPPT (4-20kW)",
          "notes": "Gen1 three-phase hybrid, 2 MPPT inputs",
          "regions": [
            "EU",
            "INT"
          ],
          "variants": [
            "MHT-4K-25",
            "MHT-5K-25",
            "MHT-6K-25",
            "MHT-8K-25",
            "MHT-10K-25",
            "MHT-12K-25",
            "MHT-10K-40",
            "MHT-12K-40",
            "MHT-15K-40",
            "MHT-20K-40"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Solinteg",
          "min_driver_version": "1.0.0",
          "model_family": "MHT Gen1 Three-Phase 4-MPPT (25-50kW)",
          "notes": "Gen1 three-phase hybrid, 4 MPPT inputs, PV3/PV4 support",
          "regions": [
            "EU",
            "INT"
          ],
          "variants": [
            "MHT-25K-100",
            "MHT-30K-100",
            "MHT-36K-100",
            "MHT-40K-100",
            "MHT-50K-100",
            "MHT-40K-100-P",
            "MHT-50K-100-P"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Solinteg",
          "min_driver_version": "1.0.0",
          "model_family": "MHS Gen1 Single-Phase",
          "notes": "Gen1 single-phase hybrid inverter",
          "regions": [
            "EU",
            "INT"
          ],
          "variants": [
            "MHS-3K-30",
            "MHS-3.6K-30",
            "MHS-4.2K-30",
            "MHS-5K-30",
            "MHS-6K-30",
            "MHS-7K-30",
            "MHS-8K-30"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Solinteg",
          "min_driver_version": "1.0.0",
          "model_family": "M2HT Gen2 Three-Phase (25-50kW)",
          "notes": "Gen2 three-phase hybrid, 4 MPPT inputs",
          "regions": [
            "EU",
            "INT"
          ],
          "variants": [
            "M2HT-25K-150",
            "M2HT-29.9K-150",
            "M2HT-30K-150",
            "M2HT-40K-150",
            "M2HT-50K-150",
            "M2HT-25-50K"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Solinteg",
          "min_driver_version": "1.0.0",
          "model_family": "M2HS Gen2 Single-Phase",
          "notes": "Gen2 single-phase hybrid inverter",
          "regions": [
            "EU",
            "INT"
          ],
          "variants": [
            "M2HS-3K-30",
            "M2HS-3.6K-30",
            "M2HS-4.2K-30",
            "M2HS-4.6K-30",
            "M2HS-5K-30",
            "M2HS-6K-30"
          ]
        }
      ],
      "tier": "community",
      "title": "Solinteg Hybrid Inverter",
      "verification": null,
      "version": "1.1.1"
    },
    {
      "author": "Sourceful Labs AB",
      "control": true,
      "ders": [
        "battery",
        "meter",
        "pv"
      ],
      "description": "Solis S5/S6 hybrid inverters via Modbus TCP.",
      "hardware_verified": false,
      "homepage": "https://www.ginlong.com",
      "id": "solis",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/solis.yaml",
      "manufacturers": [
        "Ginlong Solis",
        "Solis"
      ],
      "min_host_version": "2.0.0",
      "protocol": "modbus",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "1.2.0"
        }
      ],
      "sha256": "ed089b7b41a5d15bf6144aea9f625039f3a14b82e44b41a8db40d2795dc69eb8",
      "size_bytes": 17463,
      "source_note": "",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/solis.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "Solis",
          "min_driver_version": "1.2.0",
          "model_family": "S6-EH3P (Three-Phase Hybrid)",
          "notes": "Three-phase hybrid, tested",
          "regions": [
            "EU"
          ],
          "variants": [
            "S6-EH3P6K",
            "S6-EH3P8K",
            "S6-EH3P10K",
            "S6-EH3P12K",
            "S6-EH3P15K"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Solis",
          "min_driver_version": "1.2.0",
          "model_family": "S6-EH1P (Single-Phase Hybrid)",
          "notes": "Single-phase hybrid inverter",
          "regions": [
            "EU"
          ],
          "variants": [
            "S6-EH1P3K",
            "S6-EH1P3.6K",
            "S6-EH1P4.6K",
            "S6-EH1P5K",
            "S6-EH1P6K"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Solis",
          "min_driver_version": "1.2.0",
          "model_family": "S5-GR3P (Three-Phase String)",
          "notes": "Three-phase string inverter (PV only)",
          "regions": [
            "EU"
          ],
          "variants": [
            "S5-GR3P5K",
            "S5-GR3P6K",
            "S5-GR3P8K",
            "S5-GR3P10K"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Solis",
          "min_driver_version": "1.2.0",
          "model_family": "S6-GR3P (Three-Phase String)",
          "notes": "Next-gen three-phase string inverter",
          "regions": [
            "EU"
          ],
          "variants": [
            "S6-GR3P5K",
            "S6-GR3P6K",
            "S6-GR3P8K",
            "S6-GR3P10K"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Solis",
          "min_driver_version": "1.2.0",
          "model_family": "Solis C&I (Commercial)",
          "notes": "Commercial/industrial inverter",
          "regions": [
            "EU",
            "INT"
          ],
          "variants": [
            "Solis-80K-5G",
            "Solis-100K-5G",
            "Solis-110K-5G"
          ]
        }
      ],
      "tier": "core",
      "title": "Solis hybrid inverter",
      "verification": {
        "at": "",
        "label": "Not verified on hardware",
        "level": "unverified",
        "notes": "Ported from a reference implementation. Not yet verified against live hardware on a FTW site.",
        "status": "experimental"
      },
      "version": "2.1.1"
    },
    {
      "author": "Sourceful Labs AB",
      "control": true,
      "ders": [
        "pv"
      ],
      "description": "Solis non-hybrid PV inverters via Modbus TCP.",
      "hardware_verified": false,
      "homepage": "https://www.ginlong.com",
      "id": "solis_string",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/solis_string.yaml",
      "manufacturers": [
        "Ginlong Solis"
      ],
      "min_host_version": "2.0.0",
      "protocol": "modbus",
      "releases": [],
      "sha256": "3cfcf53653680dede7caf6173cee251efa3cf2c9ec46fdc16a89b9b526dceb7e",
      "size_bytes": 5784,
      "source_note": "",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/solis_string.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "Ginlong Solis",
          "min_driver_version": "1.0.0",
          "model_family": "Solis string inverter",
          "notes": "Solis non-hybrid PV inverters via Modbus TCP.",
          "regions": [],
          "variants": [
            "S5-GC",
            "S6-GR1P",
            "3P-G4",
            "1P-G4"
          ]
        }
      ],
      "tier": "core",
      "title": "Solis string inverter",
      "verification": {
        "at": "",
        "label": "Not verified on hardware",
        "level": "unverified",
        "notes": "Read-only PV driver. Awaiting field verification on a FTW site.",
        "status": "experimental"
      },
      "version": "1.1.1"
    },
    {
      "author": "Sourceful Labs AB",
      "control": false,
      "ders": [
        "battery",
        "meter"
      ],
      "description": "sonnenBatterie local JSON API v2: SoC + charge/discharge power. Read-only.",
      "hardware_verified": false,
      "homepage": "https://sonnen.de",
      "id": "sonnen",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/sonnen.yaml",
      "manufacturers": [
        "sonnen"
      ],
      "min_host_version": "2.1.0",
      "protocol": "http",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "1.0.0"
        }
      ],
      "sha256": "92163e4356b895e16b0205e849aa42a2dcea0d799f8cc6bcbce60b5e2cd92285",
      "size_bytes": 6158,
      "source_note": "",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/sonnen.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "sonnen",
          "min_driver_version": "1.0.0",
          "model_family": "sonnenBatterie",
          "notes": "Community driver, untested",
          "regions": [],
          "variants": [
            "sonnenBatterie eco 8.0",
            "sonnenBatterie 10 performance",
            "sonnenBatterie FlexStack"
          ]
        }
      ],
      "tier": "community",
      "title": "sonnenBatterie (local API)",
      "verification": {
        "at": "",
        "label": "Not verified on hardware",
        "level": "unverified",
        "notes": "Community-contributed local-API driver; not yet verified against live hardware on a FTW site.",
        "status": "experimental"
      },
      "version": "2.0.1"
    },
    {
      "author": "Sourceful Labs AB",
      "control": true,
      "ders": [
        "battery",
        "meter",
        "pv"
      ],
      "description": "Sungrow SH-series hybrid inverters with LFP battery, via Modbus TCP.",
      "hardware_verified": true,
      "homepage": "https://en.sungrowpower.com",
      "id": "sungrow",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/sungrow.yaml",
      "manufacturers": [
        "Sungrow"
      ],
      "min_host_version": "2.0.0",
      "protocol": "modbus",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "1.2.0"
        },
        {
          "date": "2026-07-25",
          "version": "1.2.1"
        }
      ],
      "sha256": "b549ad08470d6fe1600c3dec2eff8fc972dbb87aded9f15181cfa598b4b4ac42",
      "size_bytes": 48889,
      "source_note": "",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/sungrow.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": "1.3.0",
          "conformance": "observe_only_profile_blocked",
          "control_enabled": false,
          "hil": "exact_model_firmware_required",
          "note": "Version 1.3.2 is read-only and blocks activation until an exact model and firmware profile passes review. Version 1.3.1 remains staged and must not run on the pilot site.",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "Sungrow",
          "min_driver_version": "1.2.0",
          "model_family": "SH-RT (Three-Phase Hybrid)",
          "notes": "Three-phase hybrid inverter, tested",
          "regions": [
            "EU"
          ],
          "variants": [
            "SH5.0RT",
            "SH6.0RT",
            "SH8.0RT",
            "SH10RT"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Sungrow",
          "min_driver_version": "1.2.0",
          "model_family": "SH-RS (Single-Phase Hybrid)",
          "notes": "Single-phase hybrid inverter",
          "regions": [
            "EU"
          ],
          "variants": [
            "SH3.0RS",
            "SH3.6RS",
            "SH4.0RS",
            "SH5.0RS",
            "SH6.0RS"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Sungrow",
          "min_driver_version": "1.2.0",
          "model_family": "SH-T (Three-Phase Hybrid High-Power)",
          "notes": "High-power three-phase hybrid",
          "regions": [
            "EU"
          ],
          "variants": [
            "SH8.0RT",
            "SH10RT",
            "SH15T",
            "SH20T",
            "SH25T"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Sungrow",
          "min_driver_version": "1.5.3",
          "model_family": "SG-RT (Three-Phase String)",
          "notes": "Three-phase string inverter, PV + meter only (no battery). Needs 1.5.3: 1.2.1 stopped polling the SH battery registers this family does not answer, and 1.5.3 refuses a battery dispatch instead of writing them. A zero-watt command is still written on every family from 1.5.4 -- it is the release, and on a model without the registers it fails harmlessly.",
          "regions": [
            "EU"
          ],
          "variants": [
            "SG5.0RT",
            "SG6.0RT",
            "SG7.0RT",
            "SG8.0RT",
            "SG10RT",
            "SG12RT",
            "SG15RT",
            "SG17RT",
            "SG20RT",
            "SG25RT"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Sungrow",
          "min_driver_version": "1.5.3",
          "model_family": "SG-CX (Three-Phase Commercial)",
          "notes": "Commercial/industrial three-phase string inverter. Needs 1.5.3: 1.2.1 stopped polling the SH battery registers this family does not answer, and 1.5.3 refuses a battery dispatch instead of writing them. A zero-watt command is still written on every family from 1.5.4 -- it is the release, and on a model without the registers it fails harmlessly.",
          "regions": [
            "EU",
            "INT"
          ],
          "variants": [
            "SG25CX",
            "SG30CX",
            "SG33CX",
            "SG36CX",
            "SG40CX",
            "SG50CX"
          ]
        }
      ],
      "tier": "core",
      "title": "Sungrow SH Hybrid Inverter",
      "verification": {
        "at": "2026-04-18",
        "label": "Running in production",
        "level": "confirmed",
        "notes": "Battery control + telemetry in continuous use on homelab-rpi. Device type 0x0E0E (SH8.0RT-V112).",
        "status": "production"
      },
      "version": "1.5.7"
    },
    {
      "author": "Sourceful Labs AB",
      "control": true,
      "ders": [
        "vehicle"
      ],
      "description": "Read-only vehicle SoC + charge limit via Tesla API-compatible HTTP endpoint (e.g. TeslaBLEProxy).",
      "hardware_verified": false,
      "homepage": "https://github.com/wimaha/TeslaBleHttpProxy",
      "id": "tesla_vehicle",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/tesla_vehicle.yaml",
      "manufacturers": [
        "Tesla"
      ],
      "min_host_version": "2.0.0",
      "protocol": "http",
      "releases": [],
      "sha256": "a708681364facbd09fb94a813050f6889d952a0178b392e51a64eddcc43fbf0d",
      "size_bytes": 23154,
      "source_note": "",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/tesla_vehicle.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "Tesla",
          "min_driver_version": "0.1.0",
          "model_family": "Tesla Vehicle (BLE Proxy)",
          "notes": "Read-only vehicle SoC + charge limit via Tesla API-compatible HTTP endpoint (e.g. TeslaBLEProxy).",
          "regions": [],
          "variants": [
            "Model Y",
            "Model 3"
          ]
        }
      ],
      "tier": "core",
      "title": "Tesla Vehicle (BLE Proxy)",
      "verification": {
        "at": "",
        "label": "Partly verified",
        "level": "partial",
        "notes": "",
        "status": "beta"
      },
      "version": "0.2.0"
    },
    {
      "author": "Sourceful Labs AB",
      "control": true,
      "ders": [
        "meter"
      ],
      "description": "Tibber Pulse grid meter via GraphQL-transport-ws liveMeasurement stream.",
      "hardware_verified": false,
      "homepage": "https://tibber.com",
      "id": "tibber",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/tibber.yaml",
      "manufacturers": [
        "Tibber"
      ],
      "min_host_version": "2.0.0",
      "protocol": "http",
      "releases": [],
      "sha256": "845ca59a775a3a4a4c27962454f14ba654fba0d1b905f24647c80db5c26a62ae",
      "size_bytes": 12410,
      "source_note": "",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/tibber.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "Tibber",
          "min_driver_version": "1.0.0",
          "model_family": "Tibber Pulse",
          "notes": "Tibber Pulse grid meter via GraphQL-transport-ws liveMeasurement stream.",
          "regions": [],
          "variants": [
            "Pulse IR",
            "Pulse HAN",
            "Pulse P1"
          ]
        }
      ],
      "tier": "core",
      "title": "Tibber Pulse",
      "verification": {
        "at": "",
        "label": "Not verified on hardware",
        "level": "unverified",
        "notes": "",
        "status": "experimental"
      },
      "version": "1.1.0"
    },
    {
      "author": "Sourceful Labs AB",
      "control": false,
      "ders": [
        "battery",
        "meter"
      ],
      "description": "",
      "hardware_verified": false,
      "homepage": "",
      "id": "varta",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/varta.yaml",
      "manufacturers": [
        "VARTA"
      ],
      "min_host_version": "2.0.0",
      "protocol": "modbus",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "1.0.0"
        }
      ],
      "sha256": "68eb714ff41551437e50ac0a1e9bca4e4d70eca8a43006c7481cfc8761fdf60d",
      "size_bytes": 2794,
      "source_note": "Emits: Battery, Meter\nRegister type: HOLDING (FC 0x03)\nUnit ID: 255\nPort: 502\nCommunity tier (untested)",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/varta.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "VARTA",
          "min_driver_version": "1.0.0",
          "model_family": "pulse neo",
          "notes": "Community driver, untested",
          "regions": [],
          "variants": [
            "pulse neo 3",
            "pulse neo 6",
            "pulse neo 9"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "VARTA",
          "min_driver_version": "1.0.0",
          "model_family": "element",
          "notes": "Community driver, untested",
          "regions": [],
          "variants": [
            "element 6",
            "element 9",
            "element 12",
            "element 15",
            "element 18"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "VARTA",
          "min_driver_version": "1.0.0",
          "model_family": "link",
          "notes": "Community driver, untested",
          "regions": [],
          "variants": [
            "link 30",
            "link 40",
            "link 50",
            "link 60"
          ]
        }
      ],
      "tier": "community",
      "title": "VARTA Storage Driver (Battery + Meter only)",
      "verification": null,
      "version": "1.1.1"
    },
    {
      "author": "Sourceful Labs AB",
      "control": false,
      "ders": [
        "pv",
        "battery",
        "meter"
      ],
      "description": "Victron Cerbo GX / Venus GX monitoring via Modbus TCP.",
      "hardware_verified": false,
      "homepage": "https://www.victronenergy.com",
      "id": "victron",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/victron.yaml",
      "manufacturers": [
        "Victron Energy"
      ],
      "min_host_version": "2.0.0",
      "protocol": "modbus",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "1.0.0"
        }
      ],
      "sha256": "3c477072004592762c3422cc29a5570752e74bb7a1a59e51c279ab3d0fd654fd",
      "size_bytes": 7998,
      "source_note": "",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/victron.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "Victron Energy",
          "min_driver_version": "1.0.0",
          "model_family": "GX Devices",
          "notes": "Requires Venus OS with Modbus TCP enabled on GX device",
          "regions": [],
          "variants": [
            "Cerbo GX",
            "Venus GX",
            "Ekrano GX"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Victron Energy",
          "min_driver_version": "1.0.0",
          "model_family": "MultiPlus-II",
          "notes": "Requires Venus OS with Modbus TCP enabled on GX device",
          "regions": [],
          "variants": [
            "MultiPlus-II 3000",
            "MultiPlus-II 5000",
            "MultiPlus-II 8000",
            "MultiPlus-II 10000",
            "MultiPlus-II 15000"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Victron Energy",
          "min_driver_version": "1.0.0",
          "model_family": "Quattro-II",
          "notes": "Requires Venus OS with Modbus TCP enabled on GX device",
          "regions": [],
          "variants": [
            "Quattro-II 5000",
            "Quattro-II 8000",
            "Quattro-II 10000",
            "Quattro-II 15000"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Victron Energy",
          "min_driver_version": "1.0.0",
          "model_family": "SmartSolar MPPT",
          "notes": "Requires Venus OS with Modbus TCP enabled on GX device",
          "regions": [],
          "variants": [
            "SmartSolar MPPT 75/10",
            "SmartSolar MPPT 100/20",
            "SmartSolar MPPT 150/35",
            "SmartSolar MPPT 250/60",
            "SmartSolar MPPT 250/85",
            "SmartSolar MPPT 250/100"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Victron Energy",
          "min_driver_version": "1.0.0",
          "model_family": "SmartShunt",
          "notes": "Requires Venus OS with Modbus TCP enabled on GX device",
          "regions": [],
          "variants": [
            "SmartShunt 500A",
            "BMV-712"
          ]
        }
      ],
      "tier": "community",
      "title": "Victron Energy GX",
      "verification": {
        "at": "",
        "label": "Not verified on hardware",
        "level": "unverified",
        "notes": "Ported from a reference implementation. Not yet verified against live hardware on a FTW site.",
        "status": "experimental"
      },
      "version": "2.1.1"
    },
    {
      "author": "Sourceful Labs AB",
      "control": false,
      "ders": [
        "pv",
        "battery",
        "meter"
      ],
      "description": "",
      "hardware_verified": false,
      "homepage": "",
      "id": "victron_mqtt",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/victron_mqtt.yaml",
      "manufacturers": [
        "Victron Energy"
      ],
      "min_host_version": "2.0.0",
      "protocol": "mqtt",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "1.0.0"
        },
        {
          "date": "2026-07-21",
          "version": "1.0.1"
        }
      ],
      "sha256": "deb4dba9ef525a59c023939d95686f4b533ee5a9d39a34598e499323afb6535f",
      "size_bytes": 5779,
      "source_note": "Emits: PV, Battery, Meter\nSubscribes to N/+/system/0/... topics on the Venus OS MQTT broker\nValues come as JSON: {\"value\": 123.4}\n\nSign convention:\n  PV W: negative (generation)\n  Battery W: positive = charging, negative = discharging\n  Meter W: positive = import, negative = export",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/victron_mqtt.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "Victron Energy",
          "min_driver_version": "1.0.0",
          "model_family": "GX Devices",
          "notes": "Requires Venus OS with MQTT enabled on GX device",
          "regions": [],
          "variants": [
            "Cerbo GX",
            "Venus GX",
            "Ekrano GX"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Victron Energy",
          "min_driver_version": "1.0.0",
          "model_family": "MultiPlus-II",
          "notes": "Requires Venus OS with MQTT enabled on GX device",
          "regions": [],
          "variants": [
            "MultiPlus-II 3000",
            "MultiPlus-II 5000",
            "MultiPlus-II 8000",
            "MultiPlus-II 10000",
            "MultiPlus-II 15000"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Victron Energy",
          "min_driver_version": "1.0.0",
          "model_family": "Quattro-II",
          "notes": "Requires Venus OS with MQTT enabled on GX device",
          "regions": [],
          "variants": [
            "Quattro-II 5000",
            "Quattro-II 8000",
            "Quattro-II 10000",
            "Quattro-II 15000"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Victron Energy",
          "min_driver_version": "1.0.0",
          "model_family": "SmartSolar MPPT",
          "notes": "Requires Venus OS with MQTT enabled on GX device",
          "regions": [],
          "variants": [
            "SmartSolar MPPT 75/10",
            "SmartSolar MPPT 100/20",
            "SmartSolar MPPT 150/35",
            "SmartSolar MPPT 250/60",
            "SmartSolar MPPT 250/85",
            "SmartSolar MPPT 250/100"
          ]
        },
        {
          "firmware_versions": "",
          "manufacturer": "Victron Energy",
          "min_driver_version": "1.0.0",
          "model_family": "SmartShunt",
          "notes": "Requires Venus OS with MQTT enabled on GX device",
          "regions": [],
          "variants": [
            "SmartShunt 500A",
            "BMV-712"
          ]
        }
      ],
      "tier": "community",
      "title": "Victron Energy Venus OS MQTT",
      "verification": null,
      "version": "1.0.3"
    },
    {
      "author": "Sourceful Labs AB",
      "control": false,
      "ders": [
        "v2x_charger"
      ],
      "description": "",
      "hardware_verified": false,
      "homepage": "",
      "id": "wallbox",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/wallbox.yaml",
      "manufacturers": [
        "Wallbox"
      ],
      "min_host_version": "2.0.0",
      "protocol": "modbus",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "1.0.0"
        }
      ],
      "sha256": "1c0362e0a25f1fe297de838a85089eb7676b25e78a7d6d1d03ccea1258b94403",
      "size_bytes": 2842,
      "source_note": "Emits: V2X Charger\nRegister type: HOLDING (FC 0x03)\nNote: Limited register set -- no per-phase voltage/current available",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/wallbox.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "Wallbox",
          "min_driver_version": "1.0.0",
          "model_family": "Commander/Pulsar",
          "notes": "Community driver, untested",
          "regions": [],
          "variants": [
            "Commander 2",
            "Pulsar Plus"
          ]
        }
      ],
      "tier": "community",
      "title": "Wallbox Commander 2 EV Charger",
      "verification": null,
      "version": "1.0.3"
    },
    {
      "author": "Sourceful Labs AB",
      "control": true,
      "ders": [
        "meter",
        "pv",
        "battery",
        "v2x_charger"
      ],
      "description": "Official Sourceful Zap local-API integration for meter, PV, battery and V2X telemetry; safe leased control is pending firmware support.",
      "hardware_verified": true,
      "homepage": "https://developer.sourceful.energy/docs/api/zap-local-api",
      "id": "zap",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/zap.yaml",
      "manufacturers": [
        "Sourceful"
      ],
      "min_host_version": "2.0.0",
      "protocol": "http",
      "releases": [],
      "sha256": "735c50fa54e678e7a75c04e4e284a43b3cd9a8e9656e994785c6776789a777a4",
      "size_bytes": 30514,
      "source_note": "",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/zap.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "Sourceful",
          "min_driver_version": "2.0.0",
          "model_family": "Sourceful Zap",
          "notes": "Official Sourceful Zap local-API integration for meter, PV, battery and V2X telemetry; safe leased control is pending firmware support.",
          "regions": [],
          "variants": [
            "Sourceful Zap (ESP32-C3 controller firmware)"
          ]
        }
      ],
      "tier": "core",
      "title": "Sourceful Zap",
      "verification": {
        "at": "2026-07-17",
        "label": "Running in production",
        "level": "confirmed",
        "notes": "Maintained against the official Zap Local API and audited against srcful-zap-x-firmware 96e0258. P1 and PV are live-hardware verified; battery and V2X payloads are contract-tested against the firmware serializers.",
        "status": "production"
      },
      "version": "2.0.1"
    },
    {
      "author": "Sourceful Labs AB",
      "control": false,
      "ders": [
        "v2x_charger"
      ],
      "description": "",
      "hardware_verified": false,
      "homepage": "",
      "id": "zaptec",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/zaptec.yaml",
      "manufacturers": [
        "Zaptec"
      ],
      "min_host_version": "2.1.0",
      "protocol": "http",
      "releases": [
        {
          "date": "2026-07-20",
          "version": "1.0.0"
        }
      ],
      "sha256": "78d66d1af8f8169a7fa3adaa914f27475907930dc733ea58757d7b394e5a9802",
      "size_bytes": 2281,
      "source_note": "Emits: V2X Charger\nHTTP REST API, port 80\nEndpoint: GET /api/charger/state\nReturns JSON with ChargingPower, TotalChargingEnergy, ChargingCurrent,\n  Voltage, ChargerState",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/zaptec.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "Zaptec",
          "min_driver_version": "1.0.0",
          "model_family": "Zaptec",
          "notes": "Community driver, untested",
          "regions": [],
          "variants": [
            "Zaptec GO",
            "Zaptec PRO"
          ]
        }
      ],
      "tier": "community",
      "title": "Zaptec EV Charger HTTP",
      "verification": null,
      "version": "1.0.1"
    },
    {
      "author": "Sourceful Labs AB",
      "control": true,
      "ders": [
        "meter"
      ],
      "description": "Dutch DSMR P1 smart-meter via Zuidwijk Serial-to-Ethernet bridge (raw TCP, port 23).",
      "hardware_verified": false,
      "homepage": "https://www.zuidwijk.com/product/p1-reader-ethernet/",
      "id": "zuidwijk_p1",
      "manifest_url": "https://github.com/srcfl/device-drivers/blob/main/manifests/zuidwijk_p1.yaml",
      "manufacturers": [
        "Zuidwijk"
      ],
      "min_host_version": "2.0.0",
      "protocol": "modbus",
      "releases": [],
      "sha256": "61f1d6522823b6054172d9f9fd17cc6f84088be515077043e1123b6dfb509f3a",
      "size_bytes": 16217,
      "source_note": "",
      "source_url": "https://github.com/srcfl/device-drivers/blob/main/drivers/lua/zuidwijk_p1.lua",
      "targets": {
        "blixt-l1": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        },
        "ftw-core": {
          "beta": null,
          "conformance": "not_assessed",
          "control_enabled": false,
          "hil": "not_recorded",
          "note": "",
          "stable": null
        }
      },
      "tested_devices": [
        {
          "firmware_versions": "",
          "manufacturer": "Zuidwijk",
          "min_driver_version": "1.0.0",
          "model_family": "Zuidwijk P1 Reader Ethernet",
          "notes": "Dutch DSMR P1 smart-meter via Zuidwijk Serial-to-Ethernet bridge (raw TCP, port 23).",
          "regions": [],
          "variants": [
            "Sagemcom T210-D",
            "Kaifa MA105/MA304",
            "Iskra ME382"
          ]
        }
      ],
      "tier": "core",
      "title": "Zuidwijk P1 Reader Ethernet",
      "verification": {
        "at": "",
        "label": "Not verified on hardware",
        "level": "unverified",
        "notes": "Implemented from DSMR 5.0 spec; not yet exercised against live hardware.",
        "status": "experimental"
      },
      "version": "1.1.0"
    }
  ],
  "labels": {
    "ders": {
      "battery": "Battery",
      "ev": "EV charger",
      "heatpump": "Heat pump",
      "meter": "Meter",
      "pv": "Solar PV",
      "v2x_charger": "V2X charger",
      "vehicle": "Vehicle"
    },
    "protocols": {
      "": "Unspecified",
      "http": "HTTP",
      "modbus": "Modbus",
      "mqtt": "MQTT",
      "serial": "Serial"
    },
    "tiers": {
      "community": "Community",
      "core": "Core",
      "oem": "OEM"
    }
  },
  "source": {
    "commit": "75476d1f10562dc83a84e366c0dd06abb59bd4f4",
    "commit_date": "2026-07-30",
    "commit_short": "75476d1",
    "repository": "https://github.com/srcfl/device-drivers"
  },
  "totals": {
    "control": 28,
    "drivers": 80,
    "hardware_verified": 5,
    "manufacturers": 69,
    "model_families": 171,
    "variants": 656
  }
}
