Monitorización de Consumo Eléctrico con Grafana y Home Assistant: Dashboard Personalizado en Tiempo Real
Escrito por: Alex R.La monitorización del consumo eléctrico se ha convertido en una necesidad para hogares inteligentes que buscan eficiencia y ahorro. Home Assistant, como plataforma central de automatización, recopila datos de múltiples sensores, pero sus paneles nativos pueden quedarse cortos para análisis profundos. Aquí entra Grafana, el estándar de código abierto para visualización de métricas. En esta guía aprenderás a combinar ambas herramientas para crear un dashboard personalizado que muestre en tiempo real el consumo eléctrico, con gráficos interactivos, alertas y comparativas históricas.
¿Por qué Grafana y Home Assistant para el Consumo Eléctrico?
Home Assistant es excelente para automatización y recolección de datos de dispositivos como medidores inteligentes, enchufes WiFi (Sonoff, Shelly), o sensores basados en ESPHome. Sin embargo, sus capacidades de visualización son limitadas a gráficos simples y tarjetas de entidades. Grafana, por otro lado, es una plataforma de análisis y monitoreo que permite crear dashboards complejos con múltiples fuentes de datos, alertas personalizadas y paneles interactivos. Al integrarlos, obtienes lo mejor de ambos mundos: la recolección centralizada de Home Assistant y la potencia visual de Grafana.
La combinación te permite, por ejemplo, superponer el consumo eléctrico con la producción solar, identificar picos de demanda, comparar el consumo diario con el de la semana anterior, y recibir notificaciones cuando se superen umbrales críticos. Todo ello desde un único panel accesible desde cualquier navegador.
Requisitos Previos
Antes de comenzar, asegúrate de tener lo siguiente:
- Home Assistant funcionando: Puede ser en una Raspberry Pi, un servidor local o en un contenedor Docker. Se asume que tienes acceso a la interfaz web y conocimientos básicos de configuración.
- Sensores de consumo eléctrico: Pueden ser un medidor inteligente compatible (como los de la serie Shelly EM, un contador con interfaz P1, o un enchufe inteligente que reporte potencia). Asegúrate de que los datos de consumo estén disponibles en Home Assistant como entidades (sensor.power, sensor.energy, etc.).
- InfluxDB (opcional pero recomendado): Grafana se conecta a bases de datos de series temporales. InfluxDB es la opción más común. Puedes instalarlo en el mismo servidor o en un contenedor Docker.
- Grafana instalado: Puedes instalarlo en el mismo servidor o en un contenedor Docker. La versión gratuita es suficiente.
Paso 1: Instalación de InfluxDB y Grafana
Instalación mediante Docker (recomendada)
Si usas Docker, puedes levantar ambos servicios con un archivo docker-compose.yml. Crea un directorio para tu stack y dentro un archivo llamado docker-compose.yml con el siguiente contenido:
version: '3'
services:
influxdb:
image: influxdb:1.8
container_name: influxdb
ports:
- '8086:8086'
volumes:
- ./influxdb:/var/lib/influxdb
environment:
- INFLUXDB_DB=home_assistant
- INFLUXDB_ADMIN_USER=admin
- INFLUXDB_ADMIN_PASSWORD=admin123
- INFLUXDB_USER=ha
- INFLUXDB_USER_PASSWORD=hapass
grafana:
image: grafana/grafana:latest
container_name: grafana
ports:
- '3000:3000'
volumes:
- ./grafana:/var/lib/grafana
environment:
- GF_SECURITY_ADMIN_USER=admin
- GF_SECURITY_ADMIN_PASSWORD=adminEjecuta docker-compose up -d para iniciar los contenedores. Luego accede a Grafana en http://localhost:3000 (usuario: admin, contraseña: admin).
Configuración de InfluxDB
Una vez InfluxDB esté corriendo, verifica que la base de datos 'home_assistant' se haya creado. Puedes hacerlo usando la línea de comandos o la API. Si no aparece, créala manualmente: docker exec -it influxdb influx -execute 'CREATE DATABASE home_assistant'.
Paso 2: Configurar Home Assistant para Enviar Datos a InfluxDB
Home Assistant dispone de un componente llamado 'influxdb' que permite enviar automáticamente los estados de las entidades a InfluxDB. Para activarlo, añade lo siguiente a tu archivo configuration.yaml:
influxdb:
host: localhost
port: 8086
database: home_assistant
username: ha
password: hapass
max_retries: 3
default_measurement: state
include:
entities:
- sensor.power_total
- sensor.energy_daily
- sensor.solar_productionReemplaza 'localhost' por la IP de tu servidor InfluxDB si está en otra máquina. La lista 'include' especifica qué entidades se enviarán; puedes añadir tantas como necesites. Guarda el archivo y reinicia Home Assistant.
Para verificar que los datos llegan a InfluxDB, puedes usar la interfaz web de InfluxDB (http://localhost:8086) o ejecutar una consulta: docker exec -it influxdb influx -database home_assistant -execute 'SELECT * FROM state LIMIT 10'. Deberías ver filas con las mediciones de tus sensores.
Paso 3: Conectar Grafana a InfluxDB
Accede a Grafana, ve a Configuration (icono de engranaje) -> Data Sources -> Add data source. Selecciona 'InfluxDB'. Configura:
- URL: http://influxdb:8086 (si usas Docker, el nombre del servicio; si no, la IP y puerto).
- Database: home_assistant
- User: ha
- Password: hapass
- HTTP Method: GET
Haz clic en 'Save & Test'. Deberías ver un mensaje verde indicando que la conexión es exitosa.
Paso 4: Creación del Dashboard Personalizado
Ahora viene la parte creativa. En Grafana, crea un nuevo dashboard: '+' -> Dashboard. Añade un panel (Add panel) y selecciona la fuente de datos InfluxDB. En la pestaña 'Query', escribe una consulta para obtener el consumo actual. Por ejemplo:
SELECT last("value") FROM "state" WHERE ("entity_id" = 'sensor.power_total') AND $timeFilterConfigura el tipo de visualización como 'Stat' para mostrar el valor actual. En el panel derecho, ajusta el título, unidad (W o kW), y umbrales de color (por ejemplo, verde si < 1000 W, amarillo entre 1000 y 3000, rojo si > 3000).
Repite para crear más paneles: consumo diario (suma de energía), producción solar, comparativa semanal, etc. Puedes usar consultas como:
SELECT sum("value") FROM "state" WHERE ("entity_id" = 'sensor.energy_daily') AND $timeFilterPara gráficos de líneas (series temporales), usa el tipo 'Time series' y consultas que devuelvan múltiples puntos en el tiempo. Por ejemplo, para ver el consumo de las últimas 24 horas:
SELECT mean("value") FROM "state" WHERE ("entity_id" = 'sensor.power_total') AND $timeFilter GROUP BY time(5m) fill(null)Organiza los paneles en filas (rows) y columnas para un diseño limpio. Puedes usar la función de repetición (repeat) para mostrar datos de múltiples sensores similares.
Paso 5: Configurar Alertas en Grafana
Grafana permite crear alertas basadas en condiciones de los datos. Por ejemplo, si el consumo supera los 5000 W durante más de 10 minutos, puedes enviar una notificación por correo o a un canal de Telegram. Para ello, ve a Alerting -> Alert rules -> New alert rule. Selecciona la fuente de datos, define la condición (por ejemplo, last() > 5000 durante 10m), y configura el canal de notificación (previamente debes añadir un canal en Alerting -> Contact points).
Las alertas son útiles para detectar fallos en electrodomésticos, consumos anómalos o para saber cuándo la producción solar supera el consumo (y por tanto estás vertiendo energía a la red).
Errores Comunes y Soluciones
Uno de los errores más frecuentes es que Home Assistant no envía datos a InfluxDB porque la entidad no está en la lista 'include' o porque el nombre está mal escrito. Verifica los logs de Home Assistant (Configuración -> Registro) para ver si hay errores relacionados con influxdb. Otro problema común es que la base de datos no exista o las credenciales sean incorrectas. Asegúrate de que InfluxDB esté accesible desde Home Assistant (prueba con telnet o curl).
Para evitar la pérdida de datos históricos, configura una retención adecuada en InfluxDB. Por defecto, los datos se conservan indefinidamente, pero puedes establecer políticas de retención (por ejemplo, 30 días) para ahorrar espacio. En Grafana, también puedes configurar el rango de tiempo por defecto del dashboard para que muestre las últimas 24 horas.
Tabla Comparativa de Sensores Recomendados
| Sensor | Tipo | Precisión | Integración HA | Precio |
|---|---|---|---|---|
| Shelly EM | Pinza amperimétrica | ±1% | Nativa | ~50€ |
| Sonoff POW R3 | Enchufe inteligente | ±2% | Nativa | ~25€ |
| ESP32 + SCT-013 | DIY | ±5% | ESPHome | ~15€ |
| Iotawatt | Pinza amperimétrica | ±0.5% | Nativa | ~100€ |
Para la mayoría de usuarios, el Shelly EM ofrece el mejor equilibrio entre precio, precisión y facilidad de integración. Si buscas una solución más económica y te gusta el DIY, el ESP32 con SCT-013 es una opción viable, aunque requiere más configuración.
Preguntas Frecuentes
¿Puedo usar Grafana sin InfluxDB?
¿Cómo puedo ver el consumo en tiempo real con menos de 1 segundo de retardo?
¿Es seguro exponer Grafana a Internet?
¿Puedo crear alertas que se muestren en el dashboard de Home Assistant?
Conclusiones y Plan de Acción
La combinación de Home Assistant y Grafana te brinda una herramienta poderosa para entender y optimizar tu consumo eléctrico. Con un dashboard personalizado, puedes identificar patrones, detectar ineficiencias y tomar decisiones informadas para reducir tu factura. El proceso de configuración, aunque requiere varios pasos, es accesible para cualquier entusiasta del hogar inteligente con conocimientos básicos de Docker y YAML.
Comienza con un sensor de consumo asequible como el Shelly EM o Sonoff POW R3. Instala InfluxDB y Grafana en un contenedor Docker, configura Home Assistant para enviar datos, y luego dedica tiempo a diseñar tu dashboard. No olvides configurar alertas para consumos anómalos. Con estos pasos, tendrás un sistema de monitorización profesional en tu hogar.
Recuerda que la clave está en la consistencia: revisa tus dashboards periódicamente y ajusta los umbrales según tu consumo real. Con el tiempo, podrás incluso automatizar acciones, como apagar cargas innecesarias cuando el consumo supere un límite. La eficiencia energética empieza con la medición, y Grafana + Home Assistant te dan la visibilidad que necesitas.
Este análisis técnico es independiente. No recibimos pagos de fabricantes para alterar valoraciones. Si realizas una compra a través de enlaces en este sitio, podríamos percibir una comisión de afiliación que ayuda a mantener el servidor activo, sin coste extra para ti.