¡Esta es una revisión vieja del documento!
Tabla de Contenidos
Generalidades
NUT es un sistema para administrar los UPS (Uninterruptible power supply) que nos permite saber cuando hay una interrupción de energía eléctrica y tomar acciones en nuestras computadoras para ese evento (como apagarlo o hacer respaldo o notificar).
NUT tiene tres capas:
- drivers: Que se comunica directamente con el UPS y corre en el mismo equipo que el server.
- server: Brinda información del driver a travez de la red.
- clients: Se comunican con el server a travez de la red, y obtienen información de estado del UPS
Además nut tiene algunos componentes adicionales tales como:
- cgi-bin: Que es una clase especial de cliente para monitorear via web.
- scripts: Que contienen ciertos scripts escritos en varios lenguajes para mayor integración con otras aplicaciones.
Información del sistema:
- SO: Debian GNU/Linux 11 (bullseye)
- Arquitectura: ARM64 (Raspberry Pi hardware)
- UPS: Forza SL-801UL
- Conexión UPS: USB serial.
- Nut version: 2.7.4
Instalación
apt update && apt upgrade
apt install nut
Para detener los servicios utilizamos
systemctl stop nut-driver.service systemctl stop nut-server.service systemctl stop nut-monitor.service
systemctl start nut-driver.service systemctl start nut-server.service systemctl start nut-monitor.service
Configuración
Aunque los de forza tenían un monitoreo para linux desarrollado por ellos en Java para arquitecturas i386 y AMD64, lo han descontinuado. De todos modos aca dejo el instalador que logré descargar.
installforza_linux_text_x64_html.zip linux_installation_guide.pdf
Grupos de nut
Dispositivo Serial USB
Para ello tenemos que saber que dispositivo es el UPS Forza con el comando
lsusb
El dispositivo es un Cypress VendorID 0665 y ProductID 5161
Bus 001 Device 004: ID 0665:5161 Cypress Semiconductor USB to Serial
Podemos ver mas información con
lsusb -v
Para que nut no tenga problemas de permisos debemos agregar las reglas udev
ln -s /lib/udev/rules.d/62-nut-usbups.rules /etc/udev/rules.d/62-nut-usbups.rules
echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="0665", ATTR{idProduct}=="5161", GROUP="nut"'>>/etc/udev/rules.d/63-nut-usbups.rules
Reiniciamos el udev o el sistema Y al verificar el dispositivo usb con
Driver
Lo primero que debemos hacer es revisar si nuestro UPS esta soportado, en https://networkupstools.org/stable-hcl.html
Para luego ver que configuración de driver nos sugiere nut con:
nut-scanner
Se agrega la configuración al archivo /etc/nut/ups.conf y se prueba con el comando
upsdrvctl start
El cual no debe de dar ningún error.
Y después de tanto probar, aún con al driver blazer_usb , la configuración que funcionó es /etc/nut/ups.conf:
[cypress-c] # driver = "blazer_usb" driver = "nutdrv_qx" port = "auto" vendorid = "0665" productid = "5161" product = "USB to Serial" vendor = "INNO TECH" bus = "001" override.battery.packs = 1 default.battery.voltage.nominal = 12 default.battery.voltage.high = 13.47 default.battery.voltage.low = 11.0 runtimecal = 2,100,360,50,1290,25 chargetime = 14400
Luego iniciamos el servicio del driver
systemctl start nut-driver.service
Server
Agregamos la configuración siguiente al archivo /etc/nut/nut.conf:
MODE=standalone
Iniciamos el server
systemctl start nut-server.service
Monitor
Agregamos la configuración siguiente al archivo /etc/nut/upsmon.conf:
MONITOR cypress-c@localhost 1 monuser secret master
Luego queda definir las acciones cuando la energ[ia falla, la cual no se hará aca.
Podemos revisar los puertos habiertos para nut con el comandos
netstat -putona
Monitor web
Para agregar el sistema web se instalar nginx y los siguientes paquetes
apt-get install nginx nut-cgi fcgiwrap
Agregamos el nombre y configuración para nuestro UPS
cat 'MONITOR cypress-c@localhost "Forza SL-801UL" '>> /etc/nut/hosts.conf
Configuramos el nginx, agregado al servidor (/etc/nginx/sites-enabled/default)
server { ... location /nut { alias /usr/share/nut/www/; try_files $uri $uri/ /index.html; } location /cgi-bin/ { gzip off; root /usr/lib; include fastcgi_params; fastcgi_pass unix:/var/run/fcgiwrap.socket; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } ... }
Cambiamos permisos y reiniciamos los servicios
sudo chmod 644 /etc/nut/hosts.conf sudo chmod 644 /etc/nut/*.html sudo chown www-data:www-data /usr/lib/cgi-bin/nut/*.cgi sudo systemctl restart fcgiwrap.service sudo systemctl restart fcgiwrap.socket sudo systemctl restart nginx
Luego nos vamos a la direccion: http://localhost/nut/
y deberiamos ver