Cómo instalar y controlar el UPS en UBUNTU 18.04 y que se apague el server si se gasta la batería


En este articulo lo que buscamos es instalar un único UPS que tenga un USB para cominicarse con el servidor UBUNTU 18.04 (Funciona con muchas marcas pero no se si funciona con todos, será cuestion de probar) y queremos que cuando se este por terminar la bateria le «diga» al server que se apague correctamente. No vamos a profundizar porque se puede hacer mucho, al final voy a dejar unos links para el que necesite mas.

En primer lugar debemos instalar un programa denominado NUT:

$ sudo apt-get install nut nut-monitor libcanberra-gtk-module

Ahora para saber donde esta instalado hacemos

$ lsusb
...
Bus 002 Device 087: ID 0d9f:0004 Powercom Co., Ltd
....

En nuestro caso es ese y lo que nos interesa es el numero de vendorid 0d9f

S sudo pico /etc/nut/nut.conf

Agregamos al final de todos los comentarios lo siguiente, para indicar que vamos a sondearlo directamente por el usb.

MODE=standalone

Ahora le tenemos que indicar donde tiene que mirar

$ sudo pico /etc/nut/ups.conf

donde colocamos al final de los comentarios

maxretry = 3

[myups]
    driver = usbhid-ups
    port = auto
    vendorid = 0d9f
    pollfreq = 30

NOTA: El vendorid es el que descubrimos mas arriba.
NOTA1: Hay otro driver que puede probar si no funciona bien «driver = megatec_usb»

Ahora le indicaremos como reaccionar ante algun evento

$ sudo pico /etc/nut/upsmon.conf

Es aquí donde tenemos que poner nuestro foco y es donde pone el foco el censador. Acá configuraremos las acciones que queremos que haga el servidor dependiendo las señales que nos llegan del UPS. Se pueden hacer muchas cosas pero nosotros solo queremos que se apague correctamente si el UPS se esta quedando sin batería. No queremos apagarlo si se corta la electricidad de red, solo que se apague cuando ya «casi» no le quede carga a la batería interna.

Un Ejemplo puede ser:

DEADTIME 15

FINALDELAY 5

HOSTSYNC 15

MINSUPPLIES 1

MONITOR ups1@localhost 1 upsMonitorMasterUser upsMonitorMasterUserPasswd master

# UPSMON alerts to dead UPS with NOCOMM every NOCOMMWARNTIME seconds.
# Value changed from default 300 to 15.
NOCOMMWARNTIME 15

NOTIFYCMD /sbin/upssched

NOTIFYFLAG COMMBAD  SYSLOG+WALL+EXEC
NOTIFYFLAG COMMOK   SYSLOG+WALL+EXEC
NOTIFYFLAG FSD      SYSLOG+WALL+EXEC
NOTIFYFLAG LOWBATT  SYSLOG+WALL+EXEC
NOTIFYFLAG NOCOMM   SYSLOG+WALL+EXEC
NOTIFYFLAG ONBATT   SYSLOG+WALL+EXEC
NOTIFYFLAG ONLINE   SYSLOG+WALL+EXEC
NOTIFYFLAG REPLBATT SYSLOG+WALL+EXEC
NOTIFYFLAG SHUTDOWN SYSLOG+WALL+EXEC

POLLFREQ 5
POLLFREQALERT 5

POWERDOWNFLAG /etc/killpower

RBWARNTIME 43200

RUN_AS_USER nut

SHUTDOWNCMD "/sbin/shutdown -h -P now"

La señal que nos va a llegar desde el UPS y que nos interesa es NOCOMM durante NOCOMMWARNTIME segundos

Ahora tenemos que lanzar el demonio para ver si andar el censado del UPS.

$ sudo upsdrvctl start

Para sabe cuales son las señales que nos llegan del UPS hacemos

$ upsc myups
Init SSL without certificate database
battery.charge: 100
battery.charge.low: 10
battery.charge.warning: 30
battery.date: 2014/01/15
battery.runtime: 800
battery.type: PbAc
device.mfr: POWERCOM Co.,LTD
device.model: HID UPS Battery
device.serial: 004-0D9F-000
device.type: ups
driver.name: usbhid-ups
driver.parameter.pollfreq: 30
driver.parameter.pollinterval: 2
driver.parameter.port: auto
driver.parameter.synchronous: no
driver.parameter.vendorid: 0d9f
driver.version: 2.7.4
driver.version.data: PowerCOM HID 0.5
driver.version.internal: 0.41
input.frequency: 50.0
input.voltage: 228.0
input.voltage.nominal: 220
output.frequency: 50.0
output.voltage: 228.0
output.voltage.nominal: 220
ups.beeper.status: disabled
ups.date: 2014/01/15
ups.delay.shutdown: 20
ups.delay.start: 60
ups.load: 35
ups.mfr: POWERCOM Co.,LTD
ups.model: HID UPS Battery
ups.productid: 0004
ups.serial: 004-0D9F-000
ups.status: OL
ups.test.result: Done and passed
ups.timer.shutdown: 0
ups.timer.start: 863520
ups.vendorid: 0d9f

NOTA: myups es el que le pusimos en la etiqueta de configuración en ups.conf. Pueden haber mas de uno y tiene que tener nombres distintos.

Si tenemos un acceso con acceso al sevidor grafico, entonces ahora vamos a ver lo que sondea el programa grafico

$ sudo NUT-Monitor

Para testear si funciona y simular un corte de electricidad en el mundo real hacemos:

$ sudo upsmon -c fsd

Espero que le sirva, Buena Vida!

Si te sirvió este apunte y quieres invitarme una café, gaseosa o agua, puede hacerlo pulsa AQUI.
Si en cambio quieres ayudarme a seguir haciendo y juntando apuntes utiles pulsa AQUI.

WEBGRAFIA

About Ignacio López

Aprendiz de Linux. Programador. Electrónico. Creador de CNCs. Automatismo. Personalizador de OpenERP/Odoo. Técnico Informático. Aventurero. Responsable. Curioso.

Deja un comentario

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.