Descripción
No en todas las instalaciones industriales disponemos de buenos sistemas eléctricos. Y cuando si, a veces estos estan sujetos a fuertes tensiones debido a los motores de las máquinas. Una buena idea es instalar un sistema de alimentación ininterrupido (SAI, o UPS en inglés).
En Linux una de las herramientas más usadas para monitorizar el SAI y controlar el estado del equipo es NUT.
En este vídeo de contamos como lo hemos configurado en Industry 4.0 Systems para nuestras instalaciones.
Instalamos NUT desde los paquetes de sistema:
apt install nut
Copy
Bash
Ficheros configuración NUT
/etc/nut/nut.conf
MODE=standalone
Copy
Bash
/etc/nut/ups.conf
ajustar fichero de configuración con valores para nuestro SAI
maxretry = 3
[salicru]
driver = blazer_usb
port = auto
desc = "Salicru SPS One"
Copy
Bash
/etc/nut/upsd.conf
MAXAGE 15
STATEPATH /var/run/nut
LISTEN 127.0.0.1 3493
MAXCONN 1024
Copy
Bash
Servicio NUT
service nut-server start
Copy
Bash
Consultar estado del SAI
# salicru es el nombre que aparece entre [] en upsd.conf
upsc salicru
Copy
Bash
UPS Monitoring
/etc/nut/upsd.users
cambia el password por el que tu quieras, se almacena en texto plano
[admin]
password = "TU_PASSWORD_AQUI"
actions = SET FSD
instcmds = ALL
upsmon master
Copy
Bash
/etc/nut/upsmon.conf
fíjate que las credenciales que se referencian en la primera linia son las definidas en upsd.users
MONITOR salicru 1 "admin" "TU_PASSWORD_AQUI" master
RUN_AS_USER nut
MINSUPPLIES 1
SHUTDOWNCMD "/opt/ups/halt_server.sh"
POLLFREQ 5
POLLFREQALERT 5
HOSTSYNC 15
DEADTIME 15
POWERDOWNFLAG /etc/killpower
NOTIFYCMD "/sbin/upssched"
NOTIFYMSG ONLINE "UPS: Normal state"
NOTIFYMSG ONBATT "UPS: On battery"
NOTIFYMSG LOWBATT "UPS: Battery low"
NOTIFYMSG FSD "UPS: Starting shutdown"
NOTIFYMSG COMMOK "UPS: Communication restored"
NOTIFYMSG COMMBAD "UPS: Communication lose"
NOTIFYMSG SHUTDOWN "UPS: Shutting down"
NOTIFYMSG REPLBATT "UPS: Replace battery"
NOTIFYFLAG ONLINE SYSLOG+WALL+EXEC
NOTIFYFLAG ONBATT SYSLOG+WALL+EXEC
NOTIFYFLAG LOWBATT SYSLOG+WALL+EXEC
NOTIFYFLAG FSD SYSLOG+WALL+EXEC
NOTIFYFLAG COMMOK SYSLOG+WALL+EXEC
NOTIFYFLAG COMMBAD SYSLOG+WALL+EXEC
NOTIFYFLAG SHUTDOWN SYSLOG+WALL+EXEC
NOTIFYFLAG REPLBATT SYSLOG+WALL+EXEC
RBWARNTIME 43200
NOCOMMWARNTIME 300
FINALDELAY 0
Copy
Bash
/etc/nut/upssched.conf
# Network UPS Tools - upssched.conf
CMDSCRIPT /opt/ups/ups_event.sh
##Hay que crear la ruta /var/run/nut/upssched/ si no existe con propietario nut:nut
#PIPEFN /var/run/nut/upssched/upssched.pipe
#LOCKFN /var/run/nut/upssched/upssched.lock
#/var/run/nut/upssched/ es borrada periódicamente por el sistema con lo cual
#upssched deja de funcionar. La solución mas cómoda es usar /tmp/ para almacenar
#ambos ficheros:
PIPEFN /tmp/upssched.pipe
LOCKFN /tmp/upssched.lock
# Si hay corte de corriente, se lanza un timer que esperará 300 segundos (5 minutos)
# antes de apagar
AT ONBATT * START-TIMER ups-on-battery-shutdown 300
# Si vuelve la corriente, se cancela el timer
AT ONLINE * CANCEL-TIMER ups-on-battery-shutdown
# Si hay corte de corriente, se lanza un timer que esperará 15 segundos
# antes de notificarlo
AT ONBATT * START-TIMER ups-on-battery 15
AT ONLINE * CANCEL-TIMER ups-on-battery
#En los siguientes eventos, llama al script de notificacion para que lo procese.
AT ONLINE * EXECUTE ups-back-on-line
AT REPLBATT * EXECUTE ups-change_battery
AT LOWBATT * EXECUTE ups-low-battery
AT COMMOK * EXECUTE ups-comunication-ok
AT COMMBAD * EXECUTE ups-comunication-bad
Copy
Bash
Añadir el usuario nut a sudoers
Recordar a editar el fichero /etc/sudoers con el comando: sudoedit /etc/sudoers
/etc/sudoers
# añadir al final:
nut ALL = (ALL:ALL) NOPASSWD: /bin/systemctl, /sbin/shutdown
Copy
Bash
Añadir usuario nut al ssmtp
Se usa sSMTP para el envio de mensajes, así pues, se debe añadir en el fichero /etc/ssmtp/revaliases el usuario nut:
# cambia el email de notificación y servidor de relay por el tuyo
nut:notification-email@example.tld:smtpserver.example.tld
Copy
Bash
Scripts de notificación y apagado
Scripts de notificación y apagado:
Para crear los scripts sube este fichero en tu IoT Gateway
# asumimos que el ups.tar.gz esta en /tmp
cd /
tar xvfz /tmp/ups.tar.gz
# esto crará el directorio /opt/ups con sus correspondientes ficheros
Copy
Bash
/opt/ups/config
# IDENTIFICACION GATEWAY
GW_ID="hostname"
# NOMBRE DE LA PERSONA QUE RECIBIRA EL MAIL
MAIL_NAME="YOUR_NAME"
# MAIL AL QUE SE ENVIARA LA INFO
MAIL_RCPT="user@domain.tld"
Copy
Bash
/opt/halt_server.sh
#!/bin/bash
/usr/bin/sudo /sbin/shutdown -h now
Copy
Bash
/opt/ups/mail.sh
/opt/ups/ups_event.sh
Reiniciar los servicios configurados
service nut-server restart
service nut-monitor restart
Copy
Bash
Depuración y resolución de problemas
# estado del servicio NUT
systemctl status nut-server.service
systemctl status nut-monitor.service
# logs:
journalctl -xe
Copy
Bash