Home Integramos Grafana con Home Assistant
Post
Cancel

Integramos Grafana con Home Assistant

Vamos a integrar Grafana, una herramienta de generación de métricas, en una Raspberry Pi que luego conectaremos con Home Assistant, donde instalaremos InfluxDB, una base de datos.

Aviso inicial

Aquí hay que tomar una decisión incial y es que Grafana TAMBIÉN está disponible como add-on al igual que InfludDB para instalarse DENTRO de Home Assistant; ya es decisión de cada uno si quiere ejecutarlo dentro del mismo sistema o, si piensa que pudiera sobrecargar Home Assistant, hacerlo de forma separada en una Raspberry Pi separada. En cualquier caso, las conexiones (parámetros) siguen siendo relativamente los mismos.

Lista de componentes

Software que usaremos

¿Que es Grafana? ¿e InfluxDB? Grafana es un software libre que permite la visualización y el formato de datos métricos mediante gráficas de todo tipo. InfluxDB es una base de datos de series de tiempo de código abierto desarrollada por InfluxData. En esta entrada usaremos InfluxDB como base de datos con el fin de almacenar valores de nuestras entidades en Home Assistant (temperaturas, porcentajes, etc) y, exportaremos los datos (raw) a Grafana para su visualización.

Instalación

Empezaremos por lo de siempre, preparar nuestra Raspberry Pi; esto es, flashear la tarjeta micro-SD con Raspbian (ahora Raspberry Pi OS), conectarla a la red mediante un cable ethernet (SSH previamente habilitado) y acceder a ella vía SSH con Putty.

Todo esto lo vimos ya en ESTA publicación donde explicamos como instalar Pi-Hole en una Raspberry. En el caso de Grafana, recomiendan usar un sistema un poco más potente sobre todo, si vamos a generar muchas gráficas. Lo recomendado es una Raspberry Pi 3B+ o superior. (La 2 o la Zero no van bien con Grafana aunque son alternativas posibles).

Para recordar brevemente, podeis descargar Putty desde aquí, balenaEtcher desde aquí y las instrucciones de la web oficial de Raspberry sobre como flashear están aquí. Para conocer la IP del dispositivo podemos usar Wireless Network Watcher. Vamos a conectarnos vía SSH y seguimos:

PD: Importante, cambiar SIEMPRE la contraseña por defecto (pi/raspberry) usando sudo raspi-config.

Una vez en el terminal (no necesitamos interfaz gráfica para nada así que no habilitaremos VNC Viewer), vamos primero a actualizar con:

1
sudo apt-get update && apt-get upgrade -y

Tras lo cual, nos vamos a la web de Grafana donde nos detallan los comandos para instalar en un sistema Raspberry Pi. Esto es:

1
2
3
4
5
6
7
8
9
10
11
### Añadimos la key para verificar el paquete nuevo:
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -

### Añadimos el repositorio de Grafana:
echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list

### Actualizamos la lista de repositorios:
sudo apt-get update

### Descargamos e instalamos Grafana:
sudo apt-get install -y grafana

No hemos acabado aún con la terminal, ahora tenemos que habilitar el Grafana server ya que este corre como servicio:

1
2
3
4
5
### Habilitamos el grafana server:
sudo /bin/systemctl enable grafana-server

### Iniciamos el grafana server:
sudo /bin/systemctl start grafana-server

Ahora si que si, podemos cerrar la terminal con exit y en unos minutos podremos acceder a la interfaz gráfica de Grafana desde el navegador (en nuestro ordenador) usando la IP de la Raspberry Pi de la forma:

http://192.168.1.230:3000 (donde la IP varia en función de vuestra red)

Si hemos optado por instalar Grafana como un complemento de Home Assistant (desde su tienda de add-ons), entonces nos habremos saltado todos estos pasos, es tan simple como instalar el add-on y darle a iniciar. A partir de aquí, todo es común.

Deberiamos ver algo tal que así:

Login de Grafana

Iniciaremos sesión por primera vez con las credenciales por defecto (admin/admin) y nos dará la opción de cambiarlas en el siguiente paso cosa que debemos hacer encarecidamente.

Tras esto, llegamos al panel principal de Grafana:

Panel de inicio Grafana

Antes de continuar vamos a instalar InfluxDB en Home Assistant (sin datos que visualizar esto no tendría mucho sentido). Para ello contamos ya con el add-on listo para instalar desde la Add-on Store (Supervisor > Add-on Store > InfluxDB > Instalar).

Add-on de InfluxDB

Instalamos la extensión pero OJO, no tocamos el botón de Start hasta que lo hayamos configurado. Hay poco que escribir (es posible que los menús hayan cambiado significativamente, pero los parámetros siguen siendo los mismos); independientemente de si los configuramos desde la interfaz o desde código YAML:

  • Desde la configuración del propio add-on:

Configuración add-on InfluxDB

  • Desde el archivo config/configuration.yaml:
1
2
3
4
5
6
7
8
9
# Base de datos de InfluxDB 
influxdb:
  host: a0d7b954-influxdb
  port: 8086
  database: homeassistant
  username: homeassistant
  password: !secret influx_db_pass
  max_retries: 3
  default_measurement: state

Lo único que debemos modificar aquí es la contraseña (yo hago uso del fichero secrets). Podemos cambiar también el nombre de usuario y el nombre de la base de datos pero me parece que el nombre de homeassistant es suficientemente intuitivo. Sea cual sea la que usemos, ¡no la perdamos de vista que nos hace falta luego!

Con esto ya hemos tocado todo el «código» que necesitamos, pero ojo que ahora tenemos que actualizar estos datos dentro de la propia extensión. Ejecutamos (damos a start) la extensión de InfluxDB desde el supervisor, esperamos unos minutos a que cargue y lo abrimos (el acceso directo estará en el panel de la izquierda por defecto).

Rápidamente vamos a ir a la pestaña de Explore, y (si ya se han generado algunos datos), podremos ver algunos registros bajo la categoría de homeassistant.autogen. Puede que aún no haya registros pero eso no es un problema en principio.

Panel de InfluxDB Explore

Pasamos a la pestaña de InfluxDB Admin donde encontramos las dos únicas áreas que nos interesan: Databases y Users. En la primera vamos a crear una nueva base de datos, (en mi caso la llamaré homeassistant porque así es como llamé a la base de datos en la configuración previamente, ojo con esto). Damos click en crear base de datos, duración infinita por defecto y listo.

Ahora a la pestaña de usuarios donde necesitamos crear un usuario nuevo que tendrá (oh sorpresa) el mismo nombre y contraseña que definimos antes (en mi caso el usuario era homeassistant y la contraseña la guardé en secrets.yaml).

Cuidado en esta parte porque al crear el usuario nos lo va a crear sin permisos y debemos asignarle ALL después de haberlo creado, de lo contrario NO nos va a funcionar (este suele ser un error muy recurrente).

Databases InfluxDB Usuarios InfluxDB

Si de casualidad consultamos la pestaña de Connections veremos la dirección local a la que está expuesta la base de datos. Por defecto usa el puerto 8086. Podemos cambiarlo pero en principio no vamos a hacerlo.

InfluxDB Connection

Ya hemos acabado con toda la configuración por parte de InfluxDB y ya podemos volver a Grafana.

Desde Grafana podemos entrar en configuración para cambiar nombre de usuario, imagen, zona horaria, etc. pero ahora mismo no nos interesa; vamos directamente a Data Sources:

Data sources Grafana

Por defecto no tenemos ninguna. Hacemos click en Add data source y seleccionamos InfluxDB (podemos ver que Grafana soporta una gran cantidad de fuentes de datos muy diversas).

Time series databases Grafana

Ahora tenemos que rellenar unos pocos datos que ya debemos tener apuntados de antes. Se nos abre un panel de configuración:

Configuración conexión Grafana

Podemos cambiar el nombre, en mi caso he puesto HomeAssistant. Luego solo nos interesa el campo de URL donde ponemos http://a0d7b954-influxdb:8086 (si no os funciona podeis probar con http://homeassistant:8086 ó http://localhost:8086).

Luego solo nos queda los detalles de la base de datos (nombre, usuario y contraseña) que definimos en el apartado anterior y hacemos click en Guardar y Probar. Si todo ha ido bien nos saldrá un recuadro en verde confirmando que la conexión es válida.

Mi primer panel de Grafana

Ahora que ya hemos añadido una fuente de datos a Grafana ya podemos empezar a crear paneles (dashboards) y gráficas.

Hacemos click en Dashboard > New > Add new panel para añadir una nueva gráfica dentro del tablero que acabamos de crear. Aquí nos encontramos con una gráfica por defecto (arriba), una tabla de configuración (abajo) y un panel de configuración del panel (a la derecha).

Nuevo panel Grafana

Desde aquí seleccionamos:

  1. Primero la fuente de datos: nos aseguramos que sea HomeAssistant (si le dimos ese nombre) en lugar de default.
  2. Seleccionamos una unidad de medida en el FROM. Dependiendo de las entidades que tengamos en HASS tendremos múltiples unidades de medida (Cº, %, gb, m/s, horas, etc). En función de la unidad de medida podremos seleccionar unas u otras entidades. (Por ejemplo; tengo un sensor de temperatura conectado a Home Assistant que mide la temperatura en Cº; si selecciono como measurement la unidad de medida Cº se despliega un panel de entidades cuya unidad de medida sean los Cº. En mi caso, selecciono dicho sensor).
  3. Ahora saltamos a GROUP BY, hacemos click en + y filtramos por entity_id.
  4. Cambiamos el fill(null) si queremos visualizar la gráfica por puntos, rellenada, etc.
  5. Podemos darle un nombre distinto a dichos datos en ALIAS BY.
  6. Dejamos todos los demás campos por defecto (SELECT y FORMAT AS).

Paneles Grafana

En el panel derecho podemos configurar muchas más medidas: tipo de gráfica (tenemos todo tipo de visualizaciones disponibles), nombre, descripción, tiempo de muestreo, etc.

Panel configuración tablero Grafana

PD: Algunas imágenes de distintos tipos de gráficas que podemos generar con Grafana:

Panel ejemplo I Panel ejemplo II

Hay muchas más visualizaciones y funcionalidades extra que podemos consultar en su documentación.

This post is licensed under CC BY 4.0 by the author.

Configuración de la interfaz gráfica (‘Lovelace’) de Home Assistant

ESP32, ESPHome y Home Assistant (pero todo junto)