¿Tienes un inversor Solplanet y quieres integrarlo con Home Assistant? La app oficial de Solplanet es limitada y depende de la nube. Aquí te explico cómo monté un sistema EMS (Energy Management System) completamente local que lee el inversor, controla la batería y publica todo en Home Assistant vía MQTT.
El código es open source y lo puedes descargar gratis desde GitHub.
¿Qué hace este sistema?
- Lee el inversor directamente por HTTP (API local, sin nube)
- Publica en MQTT todos los datos: solar, batería, red, consumo
- Control remoto: cambia modo de batería, SOC, schedule desde HA
- Almacena histórico en MySQL/MariaDB
- Cálculos en tiempo real: autosuficiencia, autoconsumo, balance energético
- 100% local: sin nube, sin suscripciones, sin latencia
Arquitectura
┌──────────────┐ HTTP ┌──────────────────┐ MQTT ┌─────────────────┐
│ Solplanet │◄─────────────►│ solplanet-ems │──────────────►│ Home Assistant │
│ Inverter │ │ │ │ (MQTT broker) │
└──────────────┘ │ - polling 10s │ └─────────────────┘
│ - EMS logic │
│ - commands │ SQL
│ │──────────────►┌─────────────────┐
└──────────────────┘ │ MySQL/MariaDB │
└─────────────────┘
El sistema corre como contenedor Docker y se comunica con el inversor cada 10 segundos. Toda la información se publica en topics MQTT que Home Assistant consume automáticamente.
Datos que obtienes en Home Assistant
| Categoría | Sensores |
|---|---|
| Solar | Potencia actual, producción diaria/total, PV1/PV2 (voltaje, corriente, potencia) |
| Batería | SOC, SOH, potencia carga/descarga, temperatura, voltaje, estado |
| Red | Importación/exportación actual, acumulados diarios y totales |
| Consumo | Consumo total del hogar, autosuficiencia %, autoconsumo % |
| Inversor | Estado, errores, temperatura, frecuencia, voltaje AC, horas totales |
| Control | Modo batería, límites SOC, schedule por día/hora |
Comandos MQTT disponibles
Desde Home Assistant puedes enviar comandos al inversor publicando JSON en el topic solplanet/comando:
| Comando | Ejemplo | Descripción |
|---|---|---|
| Cambiar modo | {"mode": 2} |
Auto(2), Carga(3), Descarga(4), Backup(5) |
| Límites SOC | {"charge_max": 100, "discharge_max": 10} |
Ajusta hasta dónde carga/descarga |
| Schedule | {"action": "set_schedule", ...} |
Programa horarios por día |
Requisitos
- Inversor Solplanet con API HTTP local (puerto 8484) — probado con ASW 3-6K-LT-G2
- Docker en tu servidor o Raspberry Pi
- Broker MQTT (Mosquitto recomendado)
- Home Assistant con integración MQTT
- MySQL/MariaDB (opcional, para histórico)
Instalación en 3 minutos
git clone https://github.com/python8708/solplanet-ems.git cd solplanet-ems cp .env.example .env # Edita .env con la IP de tu inversor, MQTT y BD docker compose up -d
El sistema crea las tablas automáticamente y empieza a publicar datos en MQTT. En Home Assistant aparecerán los sensores tras añadir la integración MQTT si no la tienes ya.
Configuración
Toda la configuración va en un archivo .env. Las variables principales:
| Variable | Descripción |
|---|---|
INVERTER_URL |
URL de tu inversor (ej: http://192.168.x.x:8484) |
BATTERY_SN |
Nº serie batería (se auto-detecta si lo dejas vacío) |
MQTT_HOST |
IP de tu broker MQTT |
POLL_INTERVAL |
Segundos entre lecturas (default: 10) |
Ver el archivo .env.example en el repositorio para la lista completa de opciones.
¿Por qué no usar la integración oficial?
- La app Solplanet depende de la nube: Si sus servidores caen, pierdes acceso
- Sin control real de batería: La app no permite cambiar modos ni schedules
- Datos limitados: No expone voltajes, corrientes, ni datos del inversor
- Sin histórico local: No puedes analizar tus datos a largo plazo
- Sin automatización: No puedes integrar con HA para decisiones inteligentes
Con este EMS tienes control total, datos completos y todo funciona sin internet.
Código fuente
El proyecto es open source y está disponible en GitHub:
github.com/python8708/solplanet-ems
Si tienes un Solplanet y lo pruebas, déjame un comentario o abre un issue en GitHub. Si te funciona con otro modelo, me interesa saberlo para añadirlo a la lista de compatibilidad.