Batterie-SOC · KNX-Automation · Lastabwurf · Tarifplanung · 10 Min. Lesezeit

Batterie-SOC KNX-Automation: Lastabwurf, Nachtladung und Tarifplanung

Der Batterieladezustand ist die wichtigste Eingangsgröße für die KNX-Energieautomation – er bestimmt, wann zusätzliche Lasten zugeschaltet, wann Lasten abgeworfen werden, um die Batterie zu schützen, wann die nächtliche Niedertarifladung ausgelöst wird und wie die Strategie zwischen Sommer- und Winterbetriebsbedingungen angepasst wird. Eine gut ausgelegte SOC-Automationsebene kann die Netzbezugskosten im Vergleich zur reinen Eigenverbrauchssteuerung um 40–70 % senken.

SOC-Schwellwerttabelle mit Hysteresebändern

Die SOC-Schwellwerttabelle definiert diskrete Betriebsbänder, die jeweils eine bestimmte Reihe von KNX-Aktionen auslösen. Die Hysterese – ein Erholungs-Offset oberhalb des Schwellwerts – verhindert schnelles Umschalten, wenn der SOC aufgrund von Lastschwankungen oder verrauschter SOC-Messung nahe einer Schwellwertgrenze schwankt.

SOC-BandZulässige KNX-AktionenHysterese-Erholung
> 90% AND exportingSG Ready Zustand 4 + EV-Maximalstrom + Heizstab EINAktiv, bis SOC auf 85% fällt oder nicht mehr exportiert
50–90%Normaler Eigenverbrauch: SG Ready State 3 + EV-PrioritätsmodusIm Band bleiben – kein Abschalten
20–50%Nur grundlegender Eigenverbrauch – kein SG Ready State 4, EV mindestens 6 ARückkehr zum 50-90 %-Band, wenn Solar die Batterie über 55 % lädt
< 20%Alle steuerbaren Lasten unterbrechen: EV deaktiviert, SG Ready → State 2Lasten wieder aufnehmen, wenn SOC über 25 % steigt (5 % Hysterese)
< 10%Notfall: HVAC-Absenkung −2 °C + Lastalarm an KNX-VisualisierungNotfall-Absenkung aufheben, wenn SOC über 15 % steigt

MDT Logikmodul — SOC-Bänder mit Hysterese-Implementierung

Logic channel 1: SOC band flags (set on GA 9/1/0 change)
  Flag "soc_critical": SOC < 20 → set; clear when SOC > 25
  Flag "soc_low":      SOC < 10 → set; clear when SOC > 15
  Flag "soc_full":     SOC > 90 → set; clear when SOC < 85
  On-delay timer: 60s before setting any flag (noise rejection)

Logic channel 2: Load enable gate
  IF soc_critical: disable EV (write 0 to GA 10/0/1)
                   set SG Ready → State 2 (S1=0, S2=0)
  IF NOT soc_critical AND surplus > 2500W:
    EV: enable + set current from surplus/230
    SG Ready: State 3 if surplus > 3000W

Logic channel 3: Emergency HVAC setback
  IF soc_low: send HVAC setback scene (reduce setpoint −2°C)
              write 1 to alarm GA 9/9/0 (battery emergency alert)
  IF NOT soc_low AND NOT soc_critical: restore HVAC setpoint

Auslöser für nächtliches Laden außerhalb der Spitzenzeiten

Dynamische Stromtarife (Tibber, Nordpool, Octopus Agile) bieten Zeiträume, in denen Netzstrom weniger als 0,10 EUR/kWh kostet – typischerweise zwischen 00:00 und 06:00 Uhr. Das Auslösen des Batterieladens in diesen Fenstern reduziert die täglichen Energiekosten, wenn die Solarerzeugung tagsüber nicht ausreicht, um die Batterie vollständig zu laden.

Logik für nächtliches Laden außerhalb der Spitzenzeiten

KNX time-based trigger (IP-Symcon or HA schedule):
  Trigger time: 01:00 local time
  Condition: GA 9/1/0 (Battery SOC) < 40%
             AND KNX tariff GA 9/9/1 < 10 (price < 0.10 €/kWh)

Action: Set MultiPlus to forced battery charge mode
  Victron (via Cerbo GX Modbus write):
    Write 4 to register 37 (unit ID 227) → force bulk charge
  Fronius GEN24 (via webserver API or EVCC):
    evcc.yaml: scheduled charging at 01:00 with "now" mode

KNX tariff GA update (source: HA automation reading Tibber API):
  HA script (runs at 22:00 daily):
    GET https://api.tibber.com/v1-beta/gql (Tibber price API)
    Find minimum price in next 8 hours
    Write min_price × 100 (integer cents) to GA 9/9/1

  GA 9/9/1 = current electricity price in euro cents (DPT 9.002)
  GA 9/9/2 = off-peak start hour (DPT 5.010)

Cancel condition: 06:00 OR GA 9/1/0 > 90%
  → Stop forced charge → return to normal ESS mode

Nordpool vs. Tibber für KNX-Integration: Nordpool veröffentlicht day-ahead Preise um 13:00 Uhr MEZ für den folgenden Tag – geeignet für HA-Automatisierungen, die die Preise einmal täglich abrufen und das Laden entsprechend planen. Tibber bietet eine API auf höherer Ebene mit stündlichen Preisprognosen und unterstützt WebSocket-Push-Abonnements für Echtzeit-Preisaktualisierungen, was dynamische Schwellenanpassungen in der KNX-Tarif-GA ohne Polling ermöglicht.

Morgendliches Vorladen vor dem Spitzentarif

Zeitvariable Tarife haben oft Spitzenpreisfenster von 07:00 bis 11:00 Uhr, wenn die morgendliche Gebäudelast hoch ist, die Solarerzeugung jedoch noch anläuft. Das Vorladen der Batterie auf mindestens 50 % SOC vor dem Spitzenfenster mit günstigerer Energie außerhalb der Spitzenzeiten stellt sicher, dass das Gebäude während der Spitzenzeiten aus der Batterie statt aus dem teuren Netz versorgt wird.

Morgendliche Vorladungsautomatisierung (IP-Symcon-Skript)

// IP-Symcon PHP script — runs at 06:00 daily
$soc = GetValueFloat(IPS_GetVariableIDByName("Battery SOC", $parentID));
$pvForecast = GetValueFloat($pvForecastVariableID); // from PV forecast API

// PV forecast integration: HA reads forecast.solar API
// GET https://api.forecast.solar/estimate/<lat>/<lon>/<dec>/<az>/<kwp>
// Forecast for today: energy in kWh — high forecast means skip pre-charge

if ($soc < 30 && $pvForecast < 15) {
  // Low SOC and low solar forecast — pre-charge to 50% before peak
  SetValueInteger($multiPlusMode, 4); // Force bulk charge
  IPS_RunScriptEx($chargeStopScript, ["targetSOC" => 50]);
}

// In HA automation:
automation:
  - alias: "Morning pre-charge if low SOC"
    trigger:
      - platform: time
        at: "06:00:00"
    condition:
      - condition: numeric_state
        entity_id: sensor.battery_soc
        below: 30
      - condition: template
        value_template: "{{ states('sensor.pv_forecast_today_kwh')|float < 15 }}"
    action:
      - service: script.force_battery_charge_to_50_percent

Saisonale SOC-Strategie

Die Batteriebetriebsstrategie sollte sich an die saisonale Solarverfügbarkeit anpassen. Im Sommer zykliert die Batterie täglich zwischen fast leer und fast voll – tiefe tägliche Zyklen maximieren den Eigenverbrauch, erfordern aber eine gute Batteriechemie (LFP gegenüber NMC für Langlebigkeit bei täglichen Tiefentladungen bevorzugt). Im Winter, wenn die Erzeugung geringer ist, wird die Batterie selten vollständig geladen, daher sollte sie in einem mittleren SOC-Bereich gehalten werden, um die Reservekapazität zu erhalten.

JahreszeitZiel-SOC-BereichStrategieKNX-Zeitplanauslöser
Sommer (April–September)20–95%Deep daily cycling — max self-consumption. Allow EV + HP loads when SOC > 80%.Saisonale Umschaltung am 1. April und 1. Oktober
Winter (Okt–Mär)40–80%SOC im mittleren Bereich für Reserve halten. Vor dem Morgenpeak auf 80 % vorladen. Keine Tiefentladung.Umschaltung auf Winterstrategie am 1. Oktober
Lange Bewölkungsperioden60–80%Tiefe Zyklen aussetzen — Netzbezug zu Schwachlastzeiten bevorzugt, wenn Batterie unter 60 %.Automatic: if SOC < 60% at 09:00 for 3+ days
Heatwave (>35°C)20–80%Obergrenze senken, um Batterietemperatur zu schützen (BMS thermische Leistungsreduzierung)If GA 9/1/2 (battery temp) > 35°C

Saisonale Betriebsartumschaltung über KNX Zeitplan

KNX time schedule (Gira X1 or MDT Logic Module timer):

April 1 — summer mode:
  Write "summer" flag → GA 9/9/5 value 1
  SOC shedding threshold: 20% (allow deep cycling)
  EV enable threshold SOC: 40% (lower than winter)
  Morning pre-charge: disabled (sufficient solar expected)

October 1 — winter mode:
  Write "winter" flag → GA 9/9/5 value 0
  SOC shedding threshold: 40% (protect from deep discharge)
  EV enable threshold SOC: 60% (higher — conserve battery)
  Morning pre-charge: enabled (low solar, pre-charge from grid)

IP-Symcon monthly schedule (runs on 1st of each month):
  $month = date("n"); // PHP month number
  if ($month >= 4 && $month <= 9) {
    SetValue($seasonMode, "summer");
  } else {
    SetValue($seasonMode, "winter");
  }

KNX-Energietarif GA: Tibber und Nordpool via HA

Für eine dynamische tarifabhängige Batteriesteuerung muss der aktuelle Strompreis auf eine KNX-Gruppenadresse veröffentlicht werden, auf der das KNX-Logikmodul ihn mit Schwellwerten vergleichen kann. Home Assistant oder IP-Symcon liest die Tarif-API und schreibt den Preis bei jeder stündlichen Aktualisierung auf eine KNX-GA.

HA Tibber → KNX-Tarif-GA-Automatisierung

# HA configuration.yaml — Tibber integration
tibber:
  access_token: !secret tibber_access_token

# sensor: current electricity price in EUR/kWh
sensor:
  - platform: tibber
    name: tibber_current_price

# automation: write current price to KNX GA every hour
automation:
  - alias: "Tibber price → KNX tariff GA"
    trigger:
      - platform: time_pattern
        minutes: "0"    # Run at :00 of every hour
    action:
      - service: knx.send
        data:
          address: "9/9/1"
          payload: >
            {{ (states('sensor.tibber_current_price')|float * 1000)|int }}
          # Scale: multiply by 1000 to get milli-EUR (DPT 9.002 compatible)
          type: "2byte_float"

# KNX logic uses GA 9/9/1 value:
#   < 100 (0.10 EUR/kWh): trigger off-peak battery charge
#   > 300 (0.30 EUR/kWh): enable all self-consumption loads aggressively
#   > 500 (0.50 EUR/kWh): emergency: maximise battery discharge, no grid import

Inbetriebnahme mit realen SOC-Testszenarien

Die SOC-Automatisierungsinbetriebnahme erfordert das Testen jedes Schwellwertbands durch Einspeisen simulierter SOC-Werte über ETS6 Group Monitor – ohne darauf zu warten, dass die Batterie natürlich durch jeden Zustand zyklisiert. Testen Sie jeden Schwellwert nacheinander und überprüfen Sie, ob die korrekten KNX-Aktionen ausgelöst und bei den richtigen SOC-Werten einschließlich Hysterese beendet werden.

SOC-Automatisierungs-Inbetriebnahmetestszenarien

Prerequisite: disconnect real battery SOC input to KNX
  (remove Intesis IN701KNX poll for register 843 temporarily)
  → manually write SOC test values to GA 9/1/0 via ETS6

Test 1 — Normal operation (SOC 75%):
  Write 75 to GA 9/1/0
  Expected: no load shedding, self-consumption logic active
  Verify: EV and SG Ready loads enabled (if surplus present)

Test 2 — Enter low SOC zone (SOC 18%):
  Write 18 to GA 9/1/0
  Expected: after 60s on-delay, soc_critical flag sets
  Verify: GA 10/0/1 (EV enable) → 0 (EV disabled)
          SG Ready relays → State 2 (both contacts open)

Test 3 — Hysteresis: recovery insufficient (SOC 22%):
  Write 22 to GA 9/1/0 (above 20% threshold but below 25% recovery)
  Expected: soc_critical flag remains set (hysteresis holds)
  Verify: loads remain disabled — confirm hysteresis working

Test 4 — Hysteresis: recovery sufficient (SOC 27%):
  Write 27 to GA 9/1/0 (above 25% recovery threshold)
  Expected: soc_critical flag clears after 60s
  Verify: loads re-enable (if surplus still present)

Test 5 — Emergency zone (SOC 8%):
  Write 8 to GA 9/1/0
  Expected: HVAC setback scene activates (HVAC −2°C)
            Alarm GA 9/9/0 → 1 (alert fires in Gira X1)
  Verify in HVAC setpoint display: temperature reduced by 2°C

Test 6 — Off-peak charging trigger:
  Write 35 to GA 9/1/0 (SOC 35% — below 40% threshold)
  Set time to 01:05 (test time via IP-Symcon or HA test trigger)
  Write 8 to GA 9/9/1 (price 0.008 EUR/kWh — very cheap)
  Expected: forced battery charge mode activates
  Verify: MultiPlus/GEN24 starts charging from grid

Live-SOC nach dem Test wieder verbinden

Nach Abschluss der simulierten SOC-Tests aktivieren Sie die Intesis-Abfrage für das Batterie-SOC-Register wieder. Überprüfen Sie, ob der Live-SOC-Wert mit der Batterie-BMS-Anzeige übereinstimmt. Bestätigen Sie, dass die Logik mit Live-SOC-Daten korrekt umschaltet, bevor Sie das System übergeben.

Saisonmodus-Überprüfung

Testen Sie die saisonale Betriebsartumschaltung, indem Sie vorübergehend Sommer- und Winter-Flaggen auf GA 9/9/5 schreiben. Überprüfen Sie, ob sich die SOC-Schwellenwerte wie erwartet ändern: Der sommerliche EV-Freigabeschwellenwert (40 % SOC) sollte niedriger sein als der winterliche Schwellenwert (60 % SOC). Stellen Sie nach dem Test die korrekte saisonale Betriebsart wieder her.

Benötigen Sie eine SOC-basierte KNX-Energieautomatisierung, die entworfen und in Betrieb genommen wird?

Wir entwerfen und konfigurieren SOC-Schwellenwert-Automatisierung, Ladestrategien für Schwachlastzeiten, saisonale Strategielogik und Tibber/Nordpool-Tarifintegration für KNX-Gebäude mit Batteriespeicher – vollständig getestet und dokumentiert.

Angebot anfordern →
Lade ...
Zum Seitenanfang