Nutify es un servicio que nos va a permitir obtener estadísticas de uso y consumo de nuestro SAI o UPS, además de otra información.
También nos da la opción de generar informes, enviar alertas en función de parámetros e incluso enviar reportes y lanzar automatizaciones mediante webhooks.
Para establecer la conexión con el SAI, hace uso de NUT (Network UPS Tools), un software muy trabajado que tiene una lista de compatibilidades inmensa. Puedes revisar esa lista aquí: https://networkupstools.org/stable-hcl.html
Requisitos
Para proceder con esta guía, será necesario lo siguiente:
- Un SAI compatible con la lista: Lista de Compatibilidades
- Un servidor con Docker y conocimientos básicos sobre ello. Si no lo tienes instalado o no has usado previamente Docker, echa un ojo a esta guía: Docker 101
- Tener conectado de la manera correspondiente el SAI al servidor. En mi caso mediante USB a mi Raspberry Pi 5 que ya tiene Docker + Portainer.
Instalación
Como ya he mencionado, haremos uso de Docker para el proceso de instalación de Nutify. Al necesitar diferentes variables y ser algo extenso, no recomiendo hacerlo solo mediante docker run, y hacer uso de un docker-compose.yaml para tenerlo todo más organizado.
Mediante Docker Compose
Mi recomendación personal con los servicios desplegados mediante docker compose es disponer de una carpeta de trabajo para dicha aplicación. La podemos crear de la siguiente manera en el home de nuestro usuario, aunque la ruta base la puedes modificar si deseas:
mkdir -p ~/nutify/{logs,instance,ssl,etc}
cd ~/nutify
Ahora, crearemos el archivo .env para nuestras variables de entorno sensibles:
nano .env
Y ahí, introduciremos la siguientes variables de entorno:
SECRET_KEY=test1234567890
Introduce la clave secreta que consideres.
Ahora toca crear el fichero de docker-compose.yml donde tendremos las especificaciones del contenedor y otros datos necesarios:
nano ./docker-compose.yml
El contenido de este fichero deberá ser el siguiente, aunque si sabes lo que estás haciendo, puedes adaptarlo como gustes:
services:
nut:
image: dartsteven/nutify:latest-raspberrypi5-arm64
container_name: Nutify
# Privilegios requeridos para acceso a UPS y dispositivos USB.
privileged: true
cap_add:
- SYS_ADMIN # Extended system administration capabilities
- SYS_RAWIO # Raw hardware I/O access
- MKNOD # Create special device files if needed
# USB device mapping
devices:
- /dev/bus/usb:/dev/bus/usb:rwm
device_cgroup_rules:
- 'c 189:* rwm' # Allow all USB character devices
# Persistent storage and host integration
volumes:
- ./logs:/app/nutify/logs
- ./instance:/app/nutify/instance
- ./ssl:/app/ssl
- ./etc/nut:/etc/nut
- /dev:/dev:rw
- /run/udev:/run/udev:ro
# Variables de entorno
environment:
- SECRET_KEY=${SECRET_KEY} # Usada para encriptar secretos.
- UDEV=1
- LOG=true
- LOG_LEVEL=INFO
- LOG_WERKZEUG=true
- ENABLE_LOG_STARTUP=Y
- SSL_ENABLED=false
# DNS resolvers
dns:
- 1.1.1.1
- 8.8.8.8
dns_opt:
- timeout:2
- attempts:2
# Exposed ports
ports:
- 3493:3493
- 5050:5050
- 12443:443
restart: always
user: root # Necesario para el correcto funcionamiento de NUT.
Ahora, tan solo deberemos lanzar el fichero para que Docker lo ejecute:
sudo docker compose up -d¡Y con esto deberíamos tener funcionando tanto NUT como Nutify!
Configuración
Para comenzar con la configuración, deberemos acceder al panel de Nutify, abriendo el navegador e introduciendo la IP de tu servidor seguido del puerto 5050. Te aparecerá esta interfaz:

Rellena los datos para generar tu cuenta de administrador y dale al botón de Next para continuar.

Aquí solo tenemos que introducir el nombre que recibirá esta instancia de Nutify como servidor. Tras esto, de nuevo al botón de Next.

En este punto, deberemos seleccionar lo que necesitemos. En mi caso, he elegido estas opciones por lo siguiente:
- Single Monitor: Sólo voy a tener una UPS conectada.
- Standalone: Mi UPS está conectada directamente a mi servidor.
En caso de tener otras condiciones, recuerda adaptarlo a tus necesidades.
Una vez seleccionado, le daremos otra vez a Next.

Para esta pantalla, podéis si queréis hacer la configuración manual, pero en la gran mayoría de casos (si no todos) la automática os lo va a configurar bien. La seleccionáis, y posteriormente hacéis click en los dispositivos que os salgan, en mi caso solo uno.

Nos mostrará más detalles de la configuración del SAI. Podremos elegir la zona horaria, el nombre del dispositivo o la moneda a utilizar para los informes de consumo. No te preocupes que también se puede modificar posteriormente desde el panel de administración de Nutify.
Cuando lo tengas, dale a Next.

Ahora estaremos viendo un resumen de la configuración que ha realizado por nosotros. Podemos revisar que está todo como queremos y lanzar una prueba haciendo clic en el botón Test Configuration.

Si todo ha ido bien, nos saldrá una ventana con los resultados del test. La podremos cerrar dando a Close y luego tendremos ya visible el botón de Save Configuration, que al darle nos aparecerá esto:

Tan solo hacemos clic sobre Restart Server. Nos mostrará un contador de 30 segundos, que al finalizar nos redirigirá automáticamente a la página de bienvenida:

Donde ya podremos estar visualizando algunas de las estadísticas y gráficas de nuestro SAI. ¡Ya lo tenemos funcionando! ⚡
Reportes
Una de las mejores herramientas que tiene Nutify es su capacidad de enviar informes de estadísticas de uso, propiedades del SAI y otra información interesante.
Os pondré como ejemplo el reporte de consumo, donde nos informa cuánto nos cuesta tener todo lo que tenemos conectado a nuestro SAI encendido, en la moneda que le especifiquemos.
Accedemos al menú izquierdo y vamos a la sección de Energy. Ahí nos mostrará lo siguiente:

Deberemos darle al botón de Edit que aparece arriba a la derecha, al lado de Current Rate. Nos llevará al formulario de Power Flow, donde se nos permite especificar el coste eléctrico que tenemos, el cual obtendríamos de nuestro contrato de luz, además de poner la salida nominal de nuestro SAI, los Watts que tiene, vamos.

Una vez rellenado, le damos a Save Changes. Ya tenemos establecido el coste, ahora toca ver cómo podemos generar un reporte.
Para ello, primero deberemos elegir qué medio utilizaremos para el envío del reporte. En mi caso, he elegido hacer uso del correo electrónico.
Esto se debe configurar en la sección de System del menú izquierdo, y clicaremos sobre Add Configuration:

Aquí, dependiendo de tu proveedor de correo electrónico, los datos necesarios podrían diferir. Rellénalo acorde a lo necesario, y dale a Test Email si deseas realizar una comprobación. Si todo ha ido OK, dale a Save Configuration.
Momento de ir a la configuración general, que la tenemos haciendo clic en el icono del engranaje de la parte superior derecha de la pantalla. Nos debería aparecer lo siguiente:

Podremos ver un listado de alertas, que lo configuraremos más tarde, ahora iremos a la sección de Reporter de arriba.

Podemos hacer un envío manual mediante este formulario, pero lo ideal es automatizarlo. Para ello, nos iremos al Report Scheduler en la parte inferior, y le daremos a Add Scheduler.

Como puedes ver, tenemos diferentes opciones. En mi caso quiero un reporte que cumpla con lo siguiente.
- Me informe del consumo.
- Me muestre el estado actual del SAI (voltaje, eventos, etc).
- Se me envíe de forma semanal.
- La información sea de la última semana.
Aquí tenéis la configuración resultante:

Lo puedes replicar, darle a Save Schedule ¡y ya estaría! Ya cuentas con tu reporte semanal automático de tu SAI o UPS.
Alertas
Las alertas son muy cómodas si queremos enterarnos de cuando un parámetro de nuestro SAI no está como debería.
La más común es cuando el SAI entra en funcionamiento con su batería. Suele significar que la corriente se ha cortado, y que debemos actuar.
Tenemos un listado enorme, que podemos ver accediendo a la configuración general en el engranaje de la esquina superior derecha. Aquí tenéis parte del listado:

Para activarlas solo hay que elegir la configuración que tengáis dada de alta para cada método. En mi caso, al tener ya el mail funcional, iré seleccionándolo para cada notificación que me interese recibir (normalmente todas). Al hacerlo, se irán activando:

Si quisieras poder realizar automatizaciones en función de estas alertas, sería interesante que utilizaras mejor plataformas como NTFY o sistemas de webhooks, ya que permiten integrarse mejor con agentes de flujos como n8n, que aportan mucha versatilidad.
Conclusión
Ahora disponemos de un servicio que nos da información muy útil del estado de nuestro SAI, junto con un desglose del consumo, reportes, alertas...
De esta manera podemos actuar de forma cómoda ante cortes de luz, realizando apagados en secuencia o incluso posteriormente activar de nuevo nuestros dispositivos.
Además con el reporte que hemos configurado, ahora recibirás un aviso del coste eléctrico que suponen tus dispositivos encendidos.
Referencias
Listado de referencias empleadas para la información de este post:
- Documentación oficial de NUT: https://networkupstools.org/
- Wiki de Nutify: https://github.com/DartSteven/Nutify/wiki
- Repositorio oficial: https://github.com/DartSteven/Nutify