SOC Batteria · Automazione KNX · Sgancio Carichi · Programmazione Tariffaria · 10 min di lettura

Automazione KNX SOC Batteria: Sgancio Carichi, Ricarica Notturna e Programmazione Tariffaria

Lo stato di carica della batteria è la variabile di input più importante per l'automazione energetica KNX – determina quando consentire carichi aggiuntivi, quando sganciare i carichi per proteggere la batteria, quando attivare la ricarica notturna fuori picco e come adattare la strategia tra condizioni operative estive e invernali. Un livello di automazione SOC ben progettato può ridurre i costi di importazione dalla rete del 40–70% rispetto al controllo di base dell'autoconsumo.

Tabella soglie SOC con bande di isteresi

La tabella delle soglie SOC definisce bande operative discrete, ciascuna delle quali attiva un insieme specifico di azioni KNX. L'isteresi – un offset di recupero al di sopra della soglia – impedisce commutazioni rapide quando il SOC oscilla vicino a un limite di soglia a causa di fluttuazioni di carico o misurazioni rumorose del SOC.

Banda SOCAzioni KNX consentiteRecupero isteresi
> 90% AND exportingSG Ready Stato 4 + corrente max EV + riscaldatore a immersione ONAttivo finché SOC non scende all'85% o smette di esportare
50–90%Autoconsumo normale: SG Ready State 3 + modalità priorità EVRimani in banda – nessun distacco
20–50%Solo autoconsumo base – nessun SG Ready State 4, EV a 6 A minRitorno alla banda 50-90 % quando il solare carica la batteria oltre il 55 %
< 20%Sospendi tutti i carichi controllabili: EV disabilitato, SG Ready → State 2Riprendi i carichi quando il SOC supera il 25 % (isteresi 5 %)
< 10%Emergenza: riduzione HVAC −2 °C + allarme carico alla visualizzazione KNXAnnulla la riduzione di emergenza quando il SOC supera il 15 %

Modulo logico MDT — bande SOC con implementazione dell'isteresi

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

Trigger di ricarica notturna fuori punta

Le tariffe dinamiche dell'elettricità (Tibber, Nordpool, Octopus Agile) offrono periodi in cui l'elettricità di rete costa meno di 0,10 EUR/kWh — tipicamente tra le 00:00 e le 06:00. Attivare la ricarica della batteria durante queste finestre riduce i costi energetici giornalieri quando la produzione solare è insufficiente per caricare completamente la batteria durante il giorno.

Logica di ricarica notturna fuori punta

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 per l'integrazione KNX: Nordpool pubblica i prezzi day-ahead alle 13:00 CET per il giorno successivo — adatto per automazioni HA che recuperano i prezzi una volta al giorno e programmano la ricarica di conseguenza. Tibber fornisce un'API di livello superiore con previsioni orarie dei prezzi e supporta abbonamenti push WebSocket per aggiornamenti in tempo reale dei prezzi, consentendo regolazioni dinamiche delle soglie nel GA tariffario KNX senza polling.

Precarica mattutina prima della tariffa di punta

Le tariffe a fasce orarie hanno spesso finestre di punta dalle 07:00 alle 11:00 quando il carico mattutino dell'edificio è elevato ma la produzione solare è ancora in crescita. Precaricare la batteria ad almeno il 50% di SOC prima della finestra di punta utilizzando energia fuori punta più economica garantisce che l'edificio attinga dalla batteria piuttosto che dalla costosa rete durante le ore di punta.

Automazione pre-carica mattutina (script IP-Symcon)

// 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

Strategia SOC stagionale

La strategia operativa della batteria dovrebbe adattarsi alla disponibilità solare stagionale. In estate, la batteria cicla quotidianamente tra quasi scarica e quasi piena – il ciclo profondo giornaliero massimizza l'autoconsumo ma richiede una buona chimica della batteria (LFP preferito a NMC per la longevità nei cicli profondi giornalieri). In inverno, con una generazione inferiore, la batteria raramente si carica completamente, quindi dovrebbe essere mantenuta a un SOC medio per preservare la capacità di riserva.

StagioneIntervallo SOC targetStrategiaTrigger di pianificazione KNX
Estate (aprile–settembre)20–95%Deep daily cycling — max self-consumption. Allow EV + HP loads when SOC > 80%.Cambio modalità stagionale il 1° aprile e il 1° ottobre
Inverno (ott–mar)40–80%Mantieni SOC medio per riserva. Precarica all'80% prima del picco mattutino. Nessuna scarica profonda.Passaggio alla strategia invernale il 1° ottobre
Lunghi periodi nuvolosi60–80%Sospendi cicli profondi — preferisci importazione dalla rete in ore non di punta piuttosto che batteria sotto il 60%.Automatic: if SOC < 60% at 09:00 for 3+ days
Heatwave (>35°C)20–80%Ridurre il limite superiore per proteggere la temperatura della batteria (derating termico BMS)If GA 9/1/2 (battery temp) > 35°C

Commutazione modalità stagionale tramite programma orario KNX

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");
  }

Tariffa energetica KNX GA: Tibber e Nordpool via HA

Per una programmazione dinamica della batteria in base alla tariffa, il prezzo corrente dell'elettricità deve essere pubblicato su un indirizzo di gruppo KNX dove il modulo logico KNX può confrontarlo con valori di soglia. Home Assistant o IP-Symcon legge l'API della tariffa e scrive il prezzo su un GA KNX ad ogni aggiornamento orario.

Automazione HA Tibber → GA tariffa KNX

# 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

Messa in servizio con scenari di test SOC reali

La messa in servizio dell'automazione SOC richiede il test di ogni banda di soglia iniettando valori SOC simulati tramite ETS6 Group Monitor – senza attendere che la batteria cicli naturalmente attraverso ogni stato. Testare ogni soglia in sequenza e verificare che le azioni KNX corrette vengano attivate e cessino ai giusti valori SOC, inclusa l'isteresi.

Scenari di test per la messa in servizio dell'automazione SOC

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

Riconnettere il SOC reale dopo il test

Dopo aver completato i test SOC simulati, riattivare il polling Intesis per il registro SOC della batteria. Verificare che il valore SOC reale corrisponda al display del BMS della batteria. Confermare che la logica transiti correttamente con i dati SOC reali prima di consegnare il sistema.

Verifica della modalità stagionale

Testare il cambio di modalità stagionale scrivendo temporaneamente i flag estate e inverno su GA 9/9/5. Verificare che le soglie SOC cambino come previsto: la soglia di abilitazione EV estiva (40% SOC) dovrebbe essere inferiore alla soglia invernale (60% SOC). Ripristinare la modalità stagionale corretta dopo il test.

Hai bisogno di automazione energetica KNX basata su SOC progettata e messa in servizio?

Progettiamo e configuriamo automazione delle soglie SOC, programmi di ricarica fuori picco, logica di strategia stagionale e integrazione tariffaria Tibber/Nordpool per edifici KNX con accumulo a batteria — completamente testati e documentati.

Richiedi un preventivo →
Caricamento in corso ...
Torna all'inizio