SOC Batería · Automatización KNX · Deslastre de Cargas · Programación Tarifaria · 10 min de lectura

Automatización KNX SOC Batería: Deslastre de Cargas, Carga Nocturna y Programación Tarifaria

El estado de carga de la batería es la variable de entrada más importante para la automatización energética KNX – determina cuándo permitir cargas adicionales, cuándo deslastrar cargas para proteger la batería, cuándo activar la carga nocturna fuera de punta y cómo adaptar la estrategia entre condiciones operativas de verano e invierno. Una capa de automatización SOC bien diseñada puede reducir los costos de importación de la red en un 40–70% en comparación con el control básico de autoconsumo.

Tabla de umbrales SOC con bandas de histéresis

La tabla de umbrales SOC define bandas operativas discretas, cada una activando un conjunto específico de acciones KNX. La histéresis – un desplazamiento de recuperación por encima del umbral – evita conmutaciones rápidas cuando el SOC oscila cerca de un límite de umbral debido a fluctuaciones de carga o medición ruidosa del SOC.

Banda SOCAcciones KNX permitidasRecuperación de histéresis
> 90% AND exportingSG Ready Estado 4 + corriente máxima EV + calentador de inmersión ONActivo hasta que el SOC baje al 85% o deje de exportar
50–90%Autoconsumo normal: SG Ready State 3 + modo prioridad VEPermanecer en banda – sin desconexión
20–50%Solo autoconsumo básico – sin SG Ready State 4, VE a 6 A mín.Volver a la banda 50-90 % cuando la solar cargue la batería por encima del 55 %
< 20%Suspender todas las cargas controlables: VE desactivado, SG Ready → State 2Reanudar cargas cuando el SOC supere el 25 % (histéresis 5 %)
< 10%Emergencia: reducción HVAC −2 °C + alerta de carga a la visualización KNXCancelar la reducción de emergencia cuando el SOC supere el 15 %

Módulo lógico MDT — bandas SOC con implementación de histéresis

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

Disparador de carga nocturna fuera de horas punta

Las tarifas dinámicas de electricidad (Tibber, Nordpool, Octopus Agile) ofrecen períodos en los que la electricidad de la red cuesta menos de 0,10 EUR/kWh — típicamente entre las 00:00 y las 06:00. Activar la carga de la batería durante estas ventanas reduce los costos energéticos diarios cuando la generación solar es insuficiente para cargar completamente la batería durante el día.

Lógica de carga nocturna fuera de horas 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 para integración KNX: Nordpool publica los precios day-ahead a las 13:00 CET para el día siguiente — adecuado para automatizaciones HA que obtienen los precios una vez al día y programan la carga en consecuencia. Tibber proporciona una API de nivel superior con pronósticos de precios por hora y admite suscripciones push WebSocket para actualizaciones de precios en tiempo real, permitiendo ajustes dinámicos de umbral en la GA de tarifa KNX sin sondeo.

Precarga matutina antes de la tarifa punta

Las tarifas por tiempo de uso a menudo tienen ventanas de precio punta de 07:00 a 11:00 cuando la carga matutina del edificio es alta pero la generación solar aún está aumentando. Precargar la batería al menos al 50% de SOC antes de la ventana punta utilizando energía más barata fuera de punta asegura que el edificio se alimente de la batería en lugar de la costosa red durante las horas punta.

Automatización de precarga matutina (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

Estrategia SOC estacional

La estrategia de operación de la batería debe adaptarse a la disponibilidad solar estacional. En verano, la batería cicla diariamente entre casi vacía y casi llena – el ciclo profundo diario maximiza el autoconsumo pero requiere una buena química de batería (LFP preferido sobre NMC para longevidad en ciclos profundos diarios). En invierno, con menor generación, la batería rara vez se carga por completo, por lo que debe mantenerse en un rango de SOC medio para preservar la capacidad de respaldo.

EstaciónRango de SOC objetivoEstrategiaDisparador de horario KNX
Verano (abril–septiembre)20–95%Deep daily cycling — max self-consumption. Allow EV + HP loads when SOC > 80%.Cambio de modo estacional el 1 de abril y el 1 de octubre
Invierno (oct–mar)40–80%Mantener SOC medio para respaldo. Precargar al 80 % antes del pico matutino. Sin descarga profunda.Cambio a estrategia de invierno el 1 de octubre
Períodos largos nublados60–80%Suspender ciclos profundos — preferir importación de red en horas valle en lugar de batería por debajo del 60 %.Automatic: if SOC < 60% at 09:00 for 3+ days
Heatwave (>35°C)20–80%Reducir el límite superior para proteger la temperatura de la batería (reducción térmica del BMS)If GA 9/1/2 (battery temp) > 35°C

Cambio de modo estacional mediante programación horaria 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");
  }

Tarifa energética KNX GA: Tibber y Nordpool vía HA

Para una programación dinámica de la batería según la tarifa, el precio actual de la electricidad debe publicarse en una dirección de grupo KNX donde el módulo lógico KNX pueda compararlo con valores umbral. Home Assistant o IP-Symcon lee la API de la tarifa y escribe el precio en un GA KNX en cada actualización horaria.

Automatización HA Tibber → GA tarifa 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

Puesta en marcha con escenarios de prueba SOC reales

La puesta en marcha de la automatización SOC requiere probar cada banda umbral inyectando valores SOC simulados a través de ETS6 Group Monitor – sin esperar a que la batería recorra naturalmente cada estado. Pruebe cada umbral en secuencia y verifique que las acciones KNX correctas se activen y cesen en los valores SOC adecuados, incluida la histéresis.

Escenarios de prueba de puesta en marcha de automatización 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

Reconectar el SOC real después de la prueba

Después de completar las pruebas SOC simuladas, reactive la consulta Intesis para el registro SOC de la batería. Verifique que el valor SOC real coincida con la pantalla del BMS de la batería. Confirme que la lógica transicione correctamente con datos SOC reales antes de entregar el sistema.

Verificación del modo estacional

Pruebe el cambio de modo estacional escribiendo temporalmente las banderas de verano e invierno en GA 9/9/5. Verifique que los umbrales de SOC cambien según lo esperado: el umbral de habilitación de EV en verano (40 % SOC) debe ser menor que el umbral de invierno (60 % SOC). Restaure el modo estacional correcto después de la prueba.

¿Necesita automatización energética KNX basada en SOC diseñada y puesta en marcha?

Diseñamos y configuramos automatización de umbrales SOC, horarios de carga en horas valle, lógica de estrategia estacional e integración de tarifas Tibber/Nordpool para edificios KNX con almacenamiento en batería — completamente probado y documentado.

Solicitar presupuesto →
Cargando...
Volver arriba