Complete hardware and wiring documentation for Pablo's residential energy system in Bilbao.
Last updated: 2026-03-28
┌─────────────────────────┐
│ GRID (Iberdrola) │
│ 1Gbps fiber + power │
└────────────┬─────────────┘
│
┌────────────▼─────────────┐
│ CUADRO GENERAL (casa) │
│ Iberdrola smart meter │
│ IGA + 2 diferenciales │
│ Circuitos casa │
└──┬──────────────────┬─────┘
│ │
┌────────────▼────┐ ┌────────▼──────────┐
│ CUADRO GARAJE │ │ CUADRO AEROTERMIA │
│ Solar + Batt │ │ Hitachi + ACS │
│ + EV charging │ │ │
└─────────────────┘ └────────────────────┘
Ubicacion: Interior, planta baja.
| Componente | Marca/Modelo | Funcion |
|---|---|---|
| Smart meter | Iberdrola (LED azul/rojo) | Contador bidireccional, medicion de red |
| IGA | ABB | Interruptor General Automatico |
| Diferencial 1 | ABB | Proteccion diferencial grupo 1 |
| Diferencial 2 | ABB | Proteccion diferencial grupo 2 |
Bajo Diferencial 1: - Circuitos de alumbrado y enchufes generales
Bajo Diferencial 2: - HORNO - HIDROMASAJE - Otros circuitos de fuerza
Sub-panel auxiliar (Golmar FA-G2+): - VIDEOPORTERO (Golmar) - ALUMBRADO (circuito dedicado) - CALDERA - GARAJE/PUERTA
Ubicacion: Garaje, planta baja.
| Equipo | Marca/Modelo | Funcion | Conexion |
|---|---|---|---|
| Bateria | Sonnen Batterie (s/n 218483) | Almacenamiento 10kWh | WiFi 192.168.86.200 |
| Inversor solar | GoodWe GW6000D-NS (6000W nominal AC) | Conversion DC-AC | WiFi 192.168.86.248, UDP :8899 |
| Cargador EV | Tesla Wall Connector Gen 3 | Carga vehiculo electrico | WiFi 192.168.86.31 |
| Dato | Valor |
|---|---|
| Numero de paneles | 14 |
| Modelo | Longi Solar LR4-72HPH-450M |
| Potencia por panel | 450W |
| Potencia pico total | 6.3 kWp |
| Dimensiones panel | 2094 x 1038 x 35 mm |
| Certificacion | TUV, IEC |
| Ubicacion | Tejado |
Panel superior: Protecciones del sistema solar/bateria (magnetotermicos). Incluye: - Proteccion general del inversor - Proteccion AC del Sonnen - Conexion a red
Panel inferior: Panel de distribucion con magnetotermicos adicionales (azules): - Protecciones individuales por circuito - Cables rojos DC visibles (paneles solares a inversor) - Cable de corriente tubo corrugado a Sonnen
GET /api/v2/statusgoodwe en PyPIUbicacion: Sala de calderas.
| Equipo | Marca/Modelo | Funcion |
|---|---|---|
| Bomba de calor (exterior) | Hitachi | Unidad exterior, doble ventilador |
| Acumulador ACS | Cosaltherm | Deposito de agua caliente sanitaria |
| Controlador | Hitachi (panel pared) | Termostato/programador aerotermia |
| Videoportero | Golmar (panel pared) | Monitor de videoportero |
Internet (R, 1Gbps simetrico)
└── ZTE ZXHN H298Q (router R, planta alta)
├── WiFi: MIWIFI_A832 / MIWIFI_A832_5G
├── Admin: https://192.168.1.1:8443 (admin / pls1nstaller0nly)
└── Eero Pro 6E mesh "La Que Brilla" (bridge mode, 3 nodos)
└── [cable ethernet a planta baja]
└── Google Nest WiFi mesh "casapazosmendez" (NAT, 192.168.86.x)
├── 3 Nest points (.119, .136, .221)
├── TP-Link TL-WA850RE extensor (.35)
└── Dispositivos IoT
| IP | Dispositivo | Protocolo |
|---|---|---|
| .1 | Google Nest WiFi router | — |
| .200 | Sonnen Batterie | HTTP API :80 |
| .31 | Tesla Wall Connector | HTTP API |
| .27 | Tado (termostato) | Cloud |
| .32 | Ring Stick Up Cam | Cloud |
| .22 | Ring Doorbell | Cloud |
| .21 | Amazon Echo/Alexa | Cloud |
| .35 | TP-Link extensor | — |
| .248 | GoodWe GW6000D-NS (inversor solar) | UDP :8899 / goodwe lib |
Comprar 1x Eero Pro 6E (planta baja) + 1x Eero Outdoor 7 (portal). Migrar todos los dispositivos a mesh Eero unico. Desactivar Google Nest y radios WiFi del ZTE. Resultado: red unica, un solo NAT (ZTE), WiFi 6E en toda la casa.
pablo_ems/
├── adapters/ # Adaptadores por dispositivo
│ ├── sonnen.py # Sonnen local API
│ ├── goodwe.py # GoodWe UDP/SEMS
│ ├── tesla_wc.py # Tesla Wall Connector (local, read-only)
│ ├── tesla_vehicle.py # Tesla Fleet API (cloud)
│ └── shelly_3em.py # [FUTURO] Shelly Pro 3EM
├── engine/
│ ├── optimizer.py # Logica de optimizacion (EV surplus + EMS battery control)
│ ├── safety.py # Safe mode, histeresis, rate limiting
│ └── alerts.py # Deteccion de anomalias (7 tipos)
├── storage/ # SQLite
├── api/ # FastAPI + dashboard
└── __main__.py # Entry point
sonnen:
host: "192.168.86.200"
port: 80
poll_interval_s: 5
# Fase 3: descomentar cuando Shelly este instalado
# shelly_3em:
# host: "192.168.86.XXX"
# poll_interval_s: 1
source_priority:
home_consumption_w: ["calculated", "sonnen"] # Fase 3: ["shelly_3em", "calculated", "sonnen"]
grid_power_w: ["calculated", "sonnen"] # Fase 3: ["shelly_3em", "calculated", "sonnen"]
solar_power_w: ["goodwe", "sonnen"]
control_interval_s: 30 # Fase 3: 5-10s
| Spec | Valor |
|---|---|
| CPU | Intel N150 (4 cores, 3.6GHz) |
| RAM | 16GB LPDDR5 |
| Storage | 512GB SSD |
| Red | Gigabit Ethernet + WiFi 6 |
| Consumo | ~10W |
| OS | Ubuntu Server 24.04 LTS |
| Interfaz | IP | Red |
|---|---|---|
| Ethernet (enp1s0) | 192.168.1.22 | ZTE/Eero (acceso SSH desde Mac) |
| WiFi (wlp0s20f3) | 192.168.86.23 | Google Nest (acceso a IoT: Sonnen, Tesla WC) |
| Tailscale | 100.105.171.15 | VPN (acceso remoto desde cualquier sitio) |
ssh pablopr@192.168.1.22 # LAN
ssh pablopr@100.105.171.15 # Remoto (Tailscale)
cd ~/pablo-ems/bilbao
docker compose up -d --build
http://192.168.1.22:8000http://100.105.171.15:8000 (via Tailscale)| Pinza CT | Punto de medida | Dato que proporciona |
|---|---|---|
| CT1 | Cable principal (contador → IGA) | Total grid import/export |
| CT2 | Salida Diferencial 1 | Consumo grupo 1 (alumbrado, enchufes) |
| CT3 | Salida Diferencial 2 | Consumo grupo 2 (horno, hidromasaje) |
| Dato | Valor |
|---|---|
| Marca | Tesla |
| Cargador | Tesla Wall Connector Gen 3 |
| Control | Via Tesla Fleet API (cloud) |
| Capacidades | Start/stop carga, set amps (5-32A) |
| Limitacion | Min 5A; por debajo, debe parar la carga |
| Latencia | ~2-5s (cloud), wake-up puede tardar ~30s |
PLANTA ALTA
═══════════════════════════════════════════
ZTE Router (Internet R)
Eero Pro 6E x3 (mesh "La Que Brilla")
PLANTA BAJA (interior)
═══════════════════════════════════════════
[Cuadro General]
- Contador Iberdrola
- IGA + Diferenciales
- Circuitos casa
- Sub-panel Golmar (videoportero, alumbrado, caldera, garaje)
- [FUTURO: Shelly Pro 3EM aqui]
Google Nest WiFi (mesh "casapazosmendez")
Tado termostato
Amazon Echo
GARAJE
═══════════════════════════════════════════
[Cuadro Solar/Bateria]
- Sonnen Batterie 10kWh
- GoodWe GW6000D-NS Inversor (6kW)
- Tesla Wall Connector
- Paneles de proteccion
- [FUTURO: MINIX Z150 Mini PC aqui]
SALA DE CALDERAS
═══════════════════════════════════════════
[Cuadro Aerotermia]
- Hitachi bomba de calor (exterior)
- Cosaltherm acumulador ACS
- Panel Hager (6 magnetotermicos)
- Controlador Hitachi
- Golmar videoportero monitor
EXTERIOR
═══════════════════════════════════════════
- 14x Longi Solar LR4-72HPH-450M (450W cada uno, 6.3kWp total)
Dimensiones: 2094x1038x35 mm, Certificacion TUV/IEC
- Hitachi unidad exterior (doble ventilador)
- Ring Doorbell (portal)
- Ring Stick Up Cam (exterior)
- [FUTURO: Eero Outdoor 7 (portal)]
PISCINA
═══════════════════════════════════════════
- Bomba de calor piscina
- Depuradora
- Luces exteriores
- (cuadro propio, sin monitorizar actualmente)
CT clamp del Sonnen mal colocado — Instalado en cable cuadro-inversor en vez de contador-cuadro. Afecta precision de grid_power y home_consumption. Pendiente de electricista. El Shelly Pro 3EM resolvera esto permanentemente.
Double NAT — ZTE hace NAT, Google Nest hace NAT otra vez. Eero esta en bridge mode, lo que mejoro la situacion. Se resolvera completamente con la migracion a mesh Eero unico.
Cobertura WiFi portal — Ring Doorbell con senal debil. Se resolvera con Eero Outdoor 7.
Aerotermia sin monitorizar — Mayor consumidor electrico sin datos. Se resolvera con Shelly #2 en cuadro de aerotermia.