Baterijas SOC · KNX automatizācija · Slodžu atslēgšana · Tarifu plānošana · 10 min lasīšanai

Baterijas SOC KNX automatizācija: slodžu atslēgšana, nakts uzlāde un tarifu plānošana

Baterijas uzlādes līmenis (SOC) ir vissvarīgākais ievades mainīgais KNX enerģijas automatizācijā — tas nosaka, kad atļaut papildu slodzes, kad tās atslēgt, lai aizsargātu bateriju, kad iedarbināt nakts uzlādi lētā tarifā un kā pielāgot stratēģiju starp vasaras un ziemas apstākļiem. Labi izstrādāts SOC automatizācijas slānis var samazināt tīkla elektrības izmaksas par 40–70%, salīdzinot ar vienkāršu pašpatēriņa kontroli.

SOC sliekšņu tabula ar histerēzi

SOC sliekšņu tabula nosaka diskrētas darba zonas, katra iedarbinot konkrētu KNX darbību kopu. Histerēze — atjaunošanas rezerve virs sliekšņa — novērš biežu pārslēgšanos, kad SOC svārstās ap zonas robežu slodzes izmaiņu vai mērījumu trokšņa dēļ.

SOC zonaAtļautās KNX darbībasHisterēzes atjaunošana
> 90% AND exportingSG Ready State 4 + EV maks. strāva + ūdens sildītājs IESLĒGTSAktīvs līdz SOC nokrīt līdz 85% vai pārtrauc eksportu
50–90%Normāls pašpatēriņš: SG Ready State 3 + EV prioritātes režīmsPalikt zonā — bez atslēgšanas
20–50%Tikai pamata pašpatēriņš — bez SG Ready State 4, EV ar minimālo 6AAtjaunot 50-90% zonā, kad saule uzlādē bateriju virs 55%
< 20%Apturēt visas vadāmās slodzes: EV atslēgts, SG Ready → State 2Atsākt slodzes, kad SOC atjaunojas virs 25% (5% histerēze)
< 10%Avārijas režīms: HVAC temperatūras samazināšana par −2°C + slodzes signāls uz KNX vizualizācijuAtcelt avārijas režīmu, kad SOC atgūstas virs 15%

MDT loģikas modulis — SOC joslu ieviešana ar histerēzi

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

Nakts uzlādes trigeris ārpus maksimuma

Dinamiskie elektrības tarifi (Tibber, Nordpool, Octopus Agile) piedāvā periodus, kad tīkla elektrība maksā mazāk nekā 0,10 EUR/kWh — parasti no 00:00 līdz 06:00. Baterijas uzlādes uzsākšana šajos logos samazina ikdienas enerģijas izmaksas, ja saules enerģijas ražošana ir nepietiekama, lai pilnībā uzlādētu bateriju dienas laikā.

Nakts uzlādes loģika ārpus maksimuma

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 KNX integrācijai: Nordpool publicē nākamās dienas cenas plkst. 13:00 CET — piemērots HA automatizācijām, kas iegūst cenas reizi dienā un plāno uzlādi. Tibber nodrošina augstāka līmeņa API ar stundas prognozēm un atbalsta WebSocket abonēšanu reāllaika cenu atjauninājumiem, ļaujot dinamiski pielāgot sliekšņus KNX grupas adresē bez aptaujāšanas.

Rīta priekšuzlāde pirms maksimuma tarifa

Laika tarifiem bieži ir maksimuma logi no 07:00 līdz 11:00, kad rīta slodze ir augsta, bet saules ražošana vēl pieaug. Baterijas priekšuzlāde vismaz līdz 50% SOC pirms maksimuma loga, izmantojot lētāku enerģiju, nodrošina, ka ēka izmanto bateriju, nevis dārgo tīklu maksimuma stundās.

Rīta priekšuzlādes automatizācija (IP-Symcon skripts)

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

Sezonālā SOC stratēģija

Baterijas darbības stratēģijai jāpielāgojas sezonālajai saules pieejamībai. Vasarā baterija katru dienu izlādējas gandrīz līdz nullei un uzlādējas gandrīz pilnībā — dziļi ikdienas cikli maksimizē pašpatēriņu, bet prasa labu baterijas ķīmiju (LFP vēlams NMC vietā dziļo ciklu ilgmūžībai). Ziemā, kad ražošana ir mazāka, baterija reti pilnībā uzlādējas, tāpēc tā jātur vidējā SOC līmenī, lai saglabātu rezerves jaudu.

SezonaMērķa SOC diapazonsStratēģijaKNX grafika trigeris
Vasara (aprīlis–septembris)20–95%Deep daily cycling — max self-consumption. Allow EV + HP loads when SOC > 80%.Sezonālā režīma pārslēgšana 1. aprīlī un 1. oktobrī
Ziema (oktobris–marts)40–80%Uzturēt vidēju SOC rezervei. Priekšuzlāde līdz 80% pirms rīta maksimuma. Bez dziļas izlādes.1. oktobra pārslēgšanās uz ziemas stratēģiju
Ilgi mākoņaini periodi60–80%Apturēt dziļo ciklu — priekšroka tīkla importam ārpus maksimuma, nevis baterijas izlādei zem 60%.Automatic: if SOC < 60% at 09:00 for 3+ days
Heatwave (>35°C)20–80%Samazināt augšējo robežu, lai aizsargātu baterijas temperatūru (BMS termiskā jaudas samazināšana)If GA 9/1/2 (battery temp) > 35°C

Sezonālā režīma pārslēgšana, izmantojot KNX laika grafiku

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 enerģijas tarifa GA: Tibber un Nordpool caur HA

Lai nodrošinātu dinamiskajam tarifam atbilstošu baterijas plānošanu, pašreizējā elektrības cena jāpublicē KNX grupas adresē, kur KNX loģikas modulis to var salīdzināt ar sliekšņa vērtībām. Home Assistant vai IP-Symcon nolasa tarifu API un katru stundu ieraksta cenu KNX GA.

HA Tibber → KNX tarifa GA automatizācija

# 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

Nodošana ekspluatācijā ar reāliem SOC testa scenārijiem

SOC automatizācijas nodošana prasa pārbaudīt katru sliekšņa joslu, ievadot simulētas SOC vērtības, izmantojot ETS6 Group Monitor — negaidot, kamēr baterija dabiski izies cauri katram stāvoklim. Pārbaudiet katru slieksni secīgi un pārliecinieties, ka pareizās KNX darbības iedarbojas un beidzas pie pareizajām SOC vērtībām, ieskaitot histerēzi.

SOC automatizācijas nodošanas testa scenāriji

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

Pieslēgt reālo SOC pēc testēšanas

Pēc simulēto SOC testu pabeigšanas atkārtoti ieslēdziet Intesis aptauju baterijas SOC reģistram. Pārliecinieties, ka reālā SOC vērtība sakrīt ar baterijas BMS displeju. Apstipriniet, ka loģika pareizi pārslēdzas ar reāliem SOC datiem pirms sistēmas nodošanas.

Sezonālā režīma pārbaude

Pārbaudiet sezonālo režīmu pārslēgšanu, īslaicīgi ierakstot vasaras un ziemas karogus GA 9/9/5. Pārliecinieties, ka SOC sliekšņi mainās, kā paredzēts: vasaras EV ieslēgšanas slieksnis (40% SOC) ir zemāks par ziemas slieksni (60% SOC). Pēc testēšanas atjaunojiet pareizo sezonālo režīmu.

Nepieciešama uz SOC balstīta KNX enerģijas automatizācija?

Mēs projektējam un konfigurējam SOC sliekšņu automatizāciju, uzlādes grafikus ārpus maksimumstundām, sezonālās stratēģijas un Tibber/Nordpool tarifu integrāciju KNX ēkām ar akumulatoriem — pilnībā pārbaudītu un dokumentētu.

Pieprasīt piedāvājumu →
Ielādējas...
Uz augšu