{
  "elements": [
    {
      "type": "Label",
      "caption": "Aufgepasst: Bei Goodwe nur Ladenvariabel auswählen und entladen Dummy Variabel.\nGoodwe braucht nur eine Leistungssoll Variabel. Entlade NICHT auf gleiche Variabel setzen wie Laden\nGoodwe: Laden=11, Entladen=12,\nSolaredge: Laden=3, Entladen=4\nDefault: Laden=1, Entladen=2"
    },
    {
      "type": "List",
      "name": "Batteries",
      "caption": "Batterien",
      "rowCount": 5,
      "add": true,
      "delete": true,
      "sort": {
        "column": "typ",
        "direction": "ascending"
      },
      "columns": [
        {
          "caption": "Typ",
          "name": "typ",
          "width": "160px",
          "add": "",
          "edit": {
            "type": "ValidationTextBox"
          }
        },
        {
          "caption": "Kapazität",
          "name": "capazity",
          "width": "100px",
          "suffix": " kWh",
          "add": 0,
          "edit": {
            "type": "NumberSpinner",
            "minimum": 0,
            "digits": 2
          }
        },
        {
          "caption": "Batterieleistung",
          "name": "powerbat",
          "width": "120px",
          "suffix": " W",
          "add": 0,
          "edit": {
            "type": "NumberSpinner",
            "minimum": 0,
            "digits": 0
          }
        },
        {
          "caption": "SoC Variable",
          "name": "soc",
          "width": "120px",
          "add": 0,
          "edit": {
            "type": "SelectVariable"
          }
        },
        {
          "caption": "Ist-Leistung Register",
          "name": "register_bat_power",
          "width": "150px",
          "add": 0,
          "edit": {
            "type": "SelectVariable"
          }
        },
        {
          "caption": "Ladeleistung Register",
          "name": "powerbat_laden",
          "width": "150px",
          "add": 0,
          "edit": {
            "type": "SelectVariable"
          }
        },
        {
          "caption": "Entladeleistung Register",
          "name": "powerbat_entladen",
          "width": "160px",
          "add": 0,
          "edit": {
            "type": "SelectVariable"
          }
        },
        {
          "caption": "Modus Register",
          "name": "register_ladenentladen_modus",
          "width": "140px",
          "add": 0,
          "edit": {
            "type": "SelectVariable"
          }
        },
        {
          "caption": "Min. SoC",
          "name": "minPhysicalSocPct",
          "width": "100px",
          "suffix": " %",
          "add": 5,
          "edit": {
            "type": "NumberSpinner",
            "minimum": 0,
            "maximum": 30,
            "digits": 1
          }
        }
      ],
      "values": []
    },
    {
      "type": "ExpansionPanel",
      "caption": "SDL / EV Fenster",
      "items": [
        {
          "type": "NumberSpinner",
          "name": "SDL_Leistung_Laden",
          "caption": "SDL Leistung Laden",
          "suffix": " W",
          "minimum": 0,
          "digits": 0
        },
        {
          "type": "NumberSpinner",
          "name": "SDL_Leistung_Entladen",
          "caption": "SDL Leistung Entladen",
          "suffix": " W",
          "minimum": 0,
          "digits": 0
        },
        {
          "type": "NumberSpinner",
          "name": "ReserveHours",
          "caption": "SDL Reservezeit",
          "suffix": " h",
          "minimum": 0,
          "maximum": 24,
          "digits": 2
        },
        {
          "type": "NumberSpinner",
          "name": "SDL_Start_Pos_Config",
          "caption": "Virtueller SDL Startwert",
          "suffix": " %",
          "minimum": 0,
          "maximum": 100,
          "digits": 2
        },
        {
          "type": "NumberSpinner",
          "name": "EV_Start_Pos_Config",
          "caption": "Virtueller EV Startwert",
          "suffix": " %",
          "minimum": 0,
          "maximum": 100,
          "digits": 2
        }
      ]
    },
    {
      "type": "ExpansionPanel",
      "caption": "Regelung",
      "items": [
        {
          "type": "NumberSpinner",
          "name": "UpdateInterval",
          "caption": "Update Intervall",
          "suffix": " s",
          "minimum": 1,
          "digits": 0
        },
        {
          "type": "Label",
          "caption": "EV-SoC Nachberechnung:\n\nAlle X Stunden wird geprüft, ob der virtuelle SDL-SoC bei 50% liegt.\nWenn ja, wird der EV-SoC anhand der physischen Batterie-SoCs neu berechnet.\nDie EV-Toleranz verhindert kleine unnötige Korrekturen.\n\n0 Stunden = automatische EV-Neuberechnung deaktiviert."
        },
        {
          "type": "NumberSpinner",
          "name": "EV_Recalc_IntervalHours",
          "caption": "EV SoC neu berechnen alle",
          "suffix": " h",
          "minimum": 0,
          "maximum": 168,
          "digits": 2
        },
        {
          "type": "NumberSpinner",
          "name": "EV_Recalc_TolerancePct",
          "caption": "EV Recalc Toleranz",
          "suffix": " %",
          "minimum": 0,
          "maximum": 100,
          "digits": 2
        },
        {
          "type": "CheckBox",
          "name": "FilterAktiv",
          "caption": "Filter für aktuelle EV/SDL Leistung aktiv. Dient für die Visualisierung, um Leistungssprünge zu vermeiden."
        },
        {
          "type": "Label",
          "caption": "Filter für aktuelle Leistung:\n\nToleranz (%): Wie stark der Istwert vom Soll abweichen darf\nRampe (W/s): Wie schnell die Leistung verändert wird (Trägheit)\nTreffer: Wie oft ein Wert passen muss, bevor er übernommen wird\n\n→ Höhere Rampe = schneller, aber sprunghafter\n→ Niedrigere Rampe = ruhiger, aber träger"
        },
        {
          "type": "NumberSpinner",
          "name": "FilterTolerancePct",
          "caption": "Filter Toleranz",
          "suffix": " %",
          "minimum": 0,
          "maximum": 100,
          "digits": 1
        },
        {
          "type": "NumberSpinner",
          "name": "FilterRampWPerSec",
          "caption": "Filter Rampe",
          "suffix": " W/s",
          "minimum": 100,
          "maximum": 20000,
          "digits": 0
        },
        {
          "type": "NumberSpinner",
          "name": "FilterHits",
          "caption": "Filter Treffer bis Übernahme",
          "minimum": 1,
          "maximum": 10,
          "digits": 0
        }
      ]
    }
  ],
  "actions": [
    {
      "type": "Button",
      "caption": "Virtuelle Konten auf Startwerte zurücksetzen",
      "onClick": "GEF_ResetVirtualAccounts($id);"
    },
    {
      "type": "Button",
      "caption": "Jetzt aktualisieren",
      "onClick": "GEF_Update($id);"
    }
  ]
}