SOC Batterie · Automatisation KNX · Délestage · Planification tarifaire · 10 min de lecture

Automatisation KNX SOC Batterie : Délestage, Charge Nocturne et Planification Tarifaire

L'état de charge de la batterie est la variable d'entrée la plus importante pour l'automatisation énergétique KNX – il détermine quand autoriser des charges supplémentaires, quand délester pour protéger la batterie, quand déclencher la charge nocturne hors pointe, et comment adapter la stratégie entre les conditions de fonctionnement estivales et hivernales. Une couche d'automatisation SOC bien conçue peut réduire les coûts d'importation du réseau de 40 à 70 % par rapport à un contrôle d'autoconsommation de base.

Tableau de seuils SOC avec bandes d'hystérésis

Le tableau de seuils SOC définit des bandes de fonctionnement discrètes, chacune déclenchant un ensemble spécifique d'actions KNX. L'hystérésis – un décalage de récupération au-dessus du seuil – empêche les commutations rapides lorsque le SOC oscille près d'une limite de seuil en raison de fluctuations de charge ou d'une mesure SOC bruitée.

Bande SOCActions KNX autoriséesRécupération d'hystérésis
> 90% AND exportingSG Ready État 4 + courant max EV + chauffage immergé ONActif jusqu'à ce que le SOC tombe à 85% ou cesse d'exporter
50–90%Autoconsommation normale : SG Ready State 3 + mode priorité VERester dans la bande – pas de délestage
20–50%Autoconsommation de base uniquement – pas de SG Ready State 4, VE à 6 A minRevenir à la bande 50-90 % lorsque le solaire charge la batterie au-dessus de 55 %
< 20%Suspendre toutes les charges contrôlables : VE désactivé, SG Ready → State 2Reprendre les charges lorsque le SOC remonte au-dessus de 25 % (hystérésis 5 %)
< 10%Urgence : abaissement HVAC −2 °C + alerte de charge à la visualisation KNXAnnuler l'abaissement d'urgence lorsque le SOC remonte au-dessus de 15 %

Module logique MDT — bandes SOC avec implémentation d'hystérésis

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

Déclencheur de charge nocturne hors pointe

Les tarifs dynamiques de l'électricité (Tibber, Nordpool, Octopus Agile) offrent des périodes où l'électricité du réseau coûte moins de 0,10 EUR/kWh — généralement entre 00h00 et 06h00. Déclencher la charge de la batterie pendant ces fenêtres réduit les coûts énergétiques quotidiens lorsque la production solaire est insuffisante pour charger complètement la batterie pendant la journée.

Logique de charge nocturne hors pointe

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 pour l'intégration KNX : Nordpool publie les prix day-ahead à 13h00 CET pour le jour suivant — adapté aux automatisations HA qui récupèrent les prix une fois par jour et planifient la charge en conséquence. Tibber fournit une API de plus haut niveau avec des prévisions de prix horaires et prend en charge les abonnements push WebSocket pour les mises à jour de prix en temps réel, permettant des ajustements dynamiques de seuil dans la GA tarifaire KNX sans sondage.

Précharge matinale avant le tarif de pointe

Les tarifs heures pleines/heures creuses ont souvent des fenêtres de pointe de 07h00 à 11h00 lorsque la charge matinale du bâtiment est élevée mais que la production solaire est encore en croissance. Précharger la batterie à au moins 50 % de SOC avant la fenêtre de pointe en utilisant de l'énergie hors pointe moins chère garantit que le bâtiment tire de la batterie plutôt que du réseau coûteux pendant les heures de pointe.

Automatisation de précharge matinale (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

Stratégie SOC saisonnière

La stratégie de fonctionnement de la batterie doit s'adapter à la disponibilité solaire saisonnière. En été, la batterie cycle quotidiennement entre presque vide et presque pleine – un cyclage profond quotidien maximise l'autoconsommation mais nécessite une bonne chimie de batterie (LFP préféré au NMC pour la longévité en cyclage profond quotidien). En hiver, avec une production plus faible, la batterie se charge rarement complètement, elle doit donc être maintenue à un SOC intermédiaire pour préserver la capacité de réserve.

SaisonPlage de SOC cibleStratégieDéclencheur de planning KNX
Été (avril–septembre)20–95%Deep daily cycling — max self-consumption. Allow EV + HP loads when SOC > 80%.Changement de mode saisonnier le 1er avril et le 1er octobre
Hiver (oct–mars)40–80%Maintenir un SOC moyen pour la réserve. Précharger à 80 % avant le pic matinal. Pas de décharge profonde.Basculement vers la stratégie hivernale le 1er octobre
Longues périodes nuageuses60–80%Suspendre les cycles profonds — privilégier l'import réseau hors pointe plutôt que la batterie en dessous de 60 %.Automatic: if SOC < 60% at 09:00 for 3+ days
Heatwave (>35°C)20–80%Réduire la limite supérieure pour protéger la température de la batterie (déclassement thermique BMS)If GA 9/1/2 (battery temp) > 35°C

Commutation de mode saisonnier via programmation horaire 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");
  }

Tarif énergétique KNX GA : Tibber et Nordpool via HA

Pour une planification dynamique de la batterie en fonction du tarif, le prix actuel de l'électricité doit être publié sur une adresse de groupe KNX où le module logique KNX peut le comparer à des valeurs de seuil. Home Assistant ou IP-Symcon lit l'API tarifaire et écrit le prix sur une GA KNX à chaque mise à jour horaire.

Automatisation HA Tibber → GA tarifaire 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

Mise en service avec des scénarios de test SOC réels

La mise en service de l'automatisation SOC nécessite de tester chaque bande de seuil en injectant des valeurs SOC simulées via ETS6 Group Monitor – sans attendre que la batterie parcoure naturellement chaque état. Testez chaque seuil séquentiellement et vérifiez que les actions KNX correctes se déclenchent et cessent aux bonnes valeurs SOC, y compris l'hystérésis.

Scénarios de test de mise en service de l'automatisation 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

Reconnecter le SOC réel après le test

Après avoir terminé les tests SOC simulés, réactivez l'interrogation Intesis pour le registre SOC de la batterie. Vérifiez que la valeur SOC réelle correspond à l'affichage du BMS de la batterie. Confirmez que la logique transitionne correctement avec les données SOC réelles avant de remettre le système.

Vérification du mode saisonnier

Testez le changement de mode saisonnier en écrivant temporairement les drapeaux été et hiver sur GA 9/9/5. Vérifiez que les seuils SOC changent comme prévu : le seuil d'activation EV été (40 % SOC) doit être inférieur au seuil hiver (60 % SOC). Restaurez le mode saisonnier correct après le test.

Besoin d'une automatisation énergétique KNX basée sur le SOC conçue et mise en service ?

Nous concevons et configurons l'automatisation des seuils SOC, les programmes de charge hors pointe, la logique de stratégie saisonnière et l'intégration des tarifs Tibber/Nordpool pour les bâtiments KNX avec stockage sur batterie — entièrement testés et documentés.

Demander un devis →
Chargement...
Retour en haut