EVCC Autoconsumo Carga VE con KNX: Coordinación Fronius Modbus y SG Ready
EVCC (Electric Vehicle Charge Controller) es un controlador de autoconsumo de código abierto que lee la generación PV en tiempo real de inversores Fronius o SMA a través de Modbus TCP y ajusta automáticamente la corriente de carga del VE para igualar el excedente solar exportado – integrado con KNX mediante el plugin EVCC KNX para conmutación de modo y supervisión desde la capa de automatización del edificio.
Resumen de EVCC: qué hace y cómo funciona
EVCC es un proyecto de código abierto (github.com/evcc-io/evcc) que actúa como un controlador de autoconsumo dedicado para la carga de vehículos eléctricos. Se conecta al inversor solar para leer la generación en tiempo real y la potencia de red, se conecta a uno o más cargadores EV a través de OCPP o API nativas, y ajusta continuamente la corriente de carga para maximizar la fracción de energía solar utilizada para la carga del EV en lugar de exportarla a la red.
EVCC se ejecuta como un contenedor Docker o como un complemento de Home Assistant, lo que facilita su implementación en una Raspberry Pi 4 junto con Home Assistant. El panel web de EVCC proporciona visualización en tiempo real de la potencia fotovoltaica, el flujo de red, el SOC de la batería y el estado de carga del EV. Para la integración KNX, el plugin KNX de EVCC — habilitado en evcc.yaml — publica variables de estado de EVCC en direcciones de grupo KNX y lee direcciones de grupo de selección de modo desde pulsadores KNX.
Opciones de implementación de EVCC
- Raspberry Pi 4 (4 GB): EVCC como contenedor Docker, funciona 24/7 a ~4 W
- Home Assistant OS: Complemento oficial de EVCC, configuración de un solo servidor
- Synology NAS: Contenedor Docker en el Administrador de contenedores
- Máquina virtual Proxmox: Docker o binario nativo de Linux para configuraciones homelab
Soporte de vehículos EVCC (lista parcial)
- Tesla (Model 3, Model Y, Model S) — a través de API Tesla
- VW ID.4, ID.3 — a través de API WeConnect
- Hyundai Ioniq 5, Ioniq 6 — a través de API Bluelink
- BMW iX, i4 — a través de la API BMW ConnectedDrive
- Vehículo genérico (sin API): límite de batería fijo del 80%
Configuración Modbus Fronius GEN24 en evcc.yaml
EVCC lee el inversor Fronius GEN24 a través de SunSpec Modbus TCP utilizando el tipo de medidor Fronius integrado. La configuración requiere una IP estática para el inversor y Modbus TCP habilitado en el panel de configuración del servidor web de Fronius.
evcc.yaml — configuración del medidor y cargador Fronius GEN24
meters:
- name: fronius_pv
type: template
template: fronius-symo
uri: http://192.168.1.100 # Fronius static IP
usage: pv # PV generation meter
- name: fronius_grid
type: template
template: fronius-smart-meter
uri: http://192.168.1.100
usage: grid # Grid import/export meter
- name: fronius_battery
type: template
template: fronius-battery
uri: http://192.168.1.100
usage: battery # Battery SOC + charge power (GEN24 Plus only)
chargers:
- name: easee_home
type: template
template: easee
user: user@email.com
password: EaseeAppPassword
charger: XXXXXXXX # Easee charger serial number
vehicles:
- name: my_tesla
type: template
template: tesla
title: Tesla Model 3
accessToken: <Tesla API token>
refreshToken: <Tesla refresh token>
site:
title: Home
meters:
grid: fronius_grid
pv: fronius_pv
battery: fronius_battery
loadpoints:
- title: EV Charger
charger: easee_home
vehicle: my_tesla
mode: pv # Default: PV-only self-consumption mode
minCurrent: 6 # Minimum 6A (1.38kW @ 230V)
maxCurrent: 16 # Maximum 16A (3.68kW @ 230V)evcc.yaml — alternativa SMA Energy Meter
# SMA Sunny Boy + SMA Energy Meter
meters:
- name: sma_pv
type: template
template: sma-sunnyboy
uri: https://192.168.1.101 # SMA inverter static IP (HTTPS)
password: <SMA web UI password>
usage: pv
- name: sma_grid
type: template
template: sma-energymeter
# SMA Energy Meter uses Multicast UDP — no IP config needed
serial: 1234567890 # Serial from SMA Energy Meter label
usage: gridPlugin EVCC KNX: habilitación y configuración
El plugin EVCC KNX conecta EVCC al bus KNX a través de una interfaz IP KNX (KNXnet/IP tunnelling o routing). Publica el estado del punto de carga EVCC en direcciones de grupo KNX y escucha comandos de modo desde pulsadores KNX o escenas de automatización. Actívalo en evcc.yaml bajo la sección messaging o plugins.
evcc.yaml — configuración del plugin KNX
# evcc.yaml — KNX plugin section knx: gateway: 192.168.1.10 # KNX IP interface / IP router static IP # or use: gateway: 224.0.23.12 (KNX multicast for IP routing) # Mode selection GAs — written by KNX pushbutton or automation # Values: 0=off, 1=now (fast), 2=minpv (min+pv), 3=pv (solar only) mode: "10/1/0" # Status GAs — published by EVCC to KNX (read-only from KNX side) activeMode: "10/1/1" # Current active mode (DPT 5.010) charging: "10/1/2" # Charging active boolean (DPT 1.001) chargePower: "10/1/3" # Current charge power W (DPT 13.010) sessionEnergy: "10/1/4" # Session energy kWh (DPT 14.056) vehicleSoc: "10/1/5" # Vehicle SOC % (DPT 5.001, if API connected) pvPower: "10/1/6" # PV power W from inverter (DPT 13.010) gridPower: "10/1/7" # Grid power W signed (DPT 13.010)
| Modo EVCC | Valor KNX | Comportamiento | Disparo desde KNX |
|---|---|---|---|
| apagado | 0 | Sin carga — VE desconectado del horario | Pulsación larga del pulsador o anulación manual |
| ahora (rápido) | 1 | Cargar a corriente máxima independientemente de la energía solar | Short press: 'Charge Now' scene |
| minpv | 2 | Cargar al mínimo (6A) + aumentar con excedente solar | Short press: 'Min + Solar' scene |
| pv | 3 | Solo solar: suspender por debajo del umbral de 6A, reanudar cuando haya excedente | Por defecto / programación KNX a las 09:00 |
Coordinación de bomba de calor SG Ready: lógica de prioridad
When both EVCC (controlling EV charging) and SG Ready (controlling heat pump) compete for the same PV surplus, a priority arbitration layer prevents grid import while maximising total self-consumption across both loads. The coordination logic runs in KNX (MDT Logic Module) or Home Assistant automations using EVCC's KNX status GAs.
Lógica de coordinación de prioridad SG Ready + EVCC
Source data from KNX GAs (all published by EVCC KNX plugin):
GA 10/1/6 = PV power W (from Fronius Modbus)
GA 10/1/7 = Grid power W (negative = export, positive = import)
GA 10/1/3 = Current EV charge power W
Priority logic (KNX Logic Module or HA automation):
STEP 1 — Heat pump base load:
IF GA 10/1/7 < −500W (exporting > 500W):
→ SG Ready State 3 (S2=1, S1=0) = encouraged mode
Heat pump increases setpoint by +2°C, absorbs ~1 kW extra
STEP 2 — EV charging from remainder:
Available for EV = GA 10/1/7 (grid export W) − 0W margin
IF available > 1400W (enough for 6A minimum):
→ Write EVCC mode=pv to GA 10/1/0 (value 3)
EVCC automatically adjusts current to use remaining surplus
STEP 3 — Maximum surplus (SG Ready State 4):
IF GA 10/1/7 < −6000W AND EVCC charging at maximum (16A):
→ SG Ready State 4 (S1=1, S2=1) = maximum HP power
Heat pump runs at rated capacity, absorbs 3–6 kW additional
STEP 4 — Grid import prevention:
IF GA 10/1/7 > +200W (importing more than 200W):
→ SG Ready → State 2 (normal, reduce heat pump load)
→ If still importing after 60s: EVCC mode=off (suspend EV)
Prevents the heat pump + EV combination from causing grid importConfiguración del cargador EVCC ABB Terra
Los cargadores ABB Terra AC (11 kW y 22 kW) se especifican comúnmente en edificios KNX comerciales. EVCC soporta ABB Terra a través de OCPP 1.6J utilizando el mismo enfoque de configuración que Easee, con un formato de URL de conexión OCPP ligeramente diferente.
evcc.yaml — Configuración del cargador ABB Terra
chargers:
- name: abb_terra_1
type: template
template: ocpp
id: ABBTerra01 # Charge point ID configured in ABB Terra
# ABB Terra OCPP central system URL in charger settings:
# ws://192.168.1.200:8887/ABBTerra01
maxCurrent: 32 # ABB Terra AC W22 max 32A 3-phase
# ABB Terra specific: enable OCPP in charger web UI
# URL: http://<ABB-terra-IP>/configuration
# OCPP Central System URI: ws://evcc-server-ip:8887/ABBTerra01
# OCPP version: OCPP16 (select from dropdown)Panel de control EVCC con direcciones de grupo de estado KNX
El panel web de EVCC (accesible en http://evcc-server-ip:7070) proporciona una visualización en vivo del autoconsumo. Para los sistemas de visualización KNX (Gira X1, IP-Symcon, ARISTO BewO), las direcciones de grupo de estado KNX de EVCC alimentan datos en tiempo real a las pantallas de los paneles y a los paneles de aplicaciones móviles.
Integración de visualización KNX para el estado de EVCC
Gira X1 / Gira HomeServer visualisation page: Display widget: "PV Power" → reads GA 10/1/6 (DPT 13.010 W) Display widget: "Grid Power" → reads GA 10/1/7 (DPT 13.010 W) Display widget: "EV Charging W" → reads GA 10/1/3 Toggle button: "Charge Mode" → writes 1/2/3 to GA 10/1/0 Indicator lamp: "Charging Active" → reads GA 10/1/2 (DPT 1.001) IP-Symcon dashboard: Create KNX variables linked to EVCC GAs Dashboard widget type: Gauge (PV Power, 0–10000W) Dashboard widget type: LED indicator (Charging Active) Dashboard widget type: Selector (Mode: Off/Now/MinPV/PV) → Variable change triggers IPS script to write GA 10/1/0 KNX touch panel (e.g. Gira e2 or MDT IP touch panel): EV charging page with live power values Mode selector from page pushbutton widgets Session energy total shown in kWh display element
Puesta en marcha con datos PV en vivo
La puesta en marcha de EVCC debe realizarse en un día con generación solar activa para verificar que toda la cadena – desde los datos Modbus de Fronius a través de la lógica EVCC hasta el ajuste de corriente OCPP y las actualizaciones de direcciones de grupo KNX – funcione correctamente en condiciones operativas reales.
Secuencia de prueba de puesta en marcha de EVCC
Step 1 — Inverter data verification: Open EVCC dashboard (http://evcc-ip:7070) Confirm: PV power > 0W on sunny morning by 10:00 Confirm: Grid power negative (exporting) when PV > building load Cross-check: EVCC PV power should match Fronius webserver ±5% Step 2 — Charger connection test: Plug EV into charger EVCC dashboard: Loadpoint shows "Connected" status Vehicle SOC displayed (if API configured) Step 3 — PV mode test: Set EVCC mode: PV (write 3 to GA 10/1/0 from ETS6) Observe: EVCC begins charging when surplus > 1.4 kW EVCC dashboard: current slider visible and tracking solar Step 4 — KNX status GA verification: ETS6 Group Monitor: watch GA 10/1/3 (charge power) Verify: value updates every 30 seconds as current changes Watch GA 10/1/2: confirms 1 (true) when EV charging active Step 5 — Mode switching from KNX: ETS6 → write 1 to GA 10/1/0 (mode: now/fast) Confirm: EVCC dashboard shows "Now" mode, current jumps to 16A Write 3 back → confirm PV mode resume, current reduces to surplus-matched level Step 6 — SG Ready coordination test: With EV charging at 6A (low surplus): confirm SG Ready stays at State 2 With >3kW surplus: confirm SG Ready activates State 3 Confirm EV current increases alongside SG Ready activation
¿Necesita un panel de autoconsumo EVCC con integración KNX?
Configuramos EVCC con Fronius o SMA Modbus, configuración del plugin KNX, lógica de coordinación SG Ready y documentación completa de puesta en marcha — implementado y probado en una Raspberry Pi o HA Green junto con su panel KNX.
Solicitar presupuesto →