04 abril 2008

Configurar un SAI en Debian (o Ubuntu)

Tengo un SAI baratito hace tiempo, de los que tiene conexión a puerto serie y USB. Es un Yukai Powermust600. Me lo compré en una temporada en que íbamos a varios apagones por semana. Ahora sólo ocurren por la noche, así la compañía eléctrica ahorra un poco (nosotros no) y no molesta a nadie (es un decir). Sólo ocurre cada varios meses, aunque puede ser media hora de corte.

Otros sistemas necesitan instalar el programa o controlador que lleva el SAI. En el CD incluso hay versión para Linux, pero ni funciona ni es necesaria en absoluto. Vamos a utilizar una de esas joyas que tenemos escondidas que se configuran a base de tocar ficheros, la infraestructura que lleva Debian para configurar estas baterías de respaldo, nut (network UPS tools). Está orientado a grandes sistemas y por ello tiene cientos de posibilidades, lo que lo hace ligeramente complicado de configurar, pero eso no quita que podamos usarlo con un sistema personal. El procedimiento descrito sirve para las últimas versiones de Debian y Ubuntu, y seguramente para algunas anteriores y posteriores, ya que no hay demasiados cambios en la forma. Comentar que si en debian no usas sudo, todas las lineas que lo indican tendrán que hacerse como root. Vamos a ello.

Primero que nada, instalamos nut:
sudo apt-get install nut
Ahora miramos qué controlador es necesario para nuestro SAI. Tenemos dos opciones, mirar en la web, o mirar las páginas de manual:
man nutupsdrv
Al final aparecen todos los controladores, de los que tendríamos que mirar uno a uno sus respectivas páginas de manual para ver qué modelos cubren. El que nos ocupa es megatec y su página de manual indica sus parámetros, las órdenes que podemos darle y algunas variables. En versiones anteriores era el mustek, pero como dice su página de manual, está obsoleto y debe usarse el otro.
Algo importante: Sólo responde al puerto serie, el USB no se usa. Quien no tenga puerto serie que se olvide de este modelo. Otros como APC o MGE sí funcionan con puerto serie. Además, próximamente se integrará con HAL y el gestor de energía de Gnome lo reconocerá, entre otras cosas.

Seguimos. Ahora creamos el archivo /etc/nut/ups.conf y le introducimos algunos datos:
sudo gedit /etc/nut/ups.conf

[misai]
driver = megatec
port = /dev/ttyS0

Suponiendo que está conectado en el primer puerto serie. El nombre "misai" será con el que se identificará este SAI. Podemos poner el que queramos, pero hay que tenerlo en cuenta en los siguientes ficheros.
Ahora hacemos que arranque al iniciar el sistema:
sudo gedit /etc/default/nut
Buscamos las lineas siguientes, que tenemos que dejar tal como se indica:
START_UPSD=yes
START_UPSMON=yes

Ahora copiamos los siguientes archivos, que sirven como base:
sudo cp /usr/share/doc/nut/examples/upsd.conf /etc/nut/upsd.conf
sudo cp /usr/share/doc/nut/examples/upsd.users /etc/nut/upsd.users
sudo cp /usr/share/doc/nut/examples/upsmon.conf.gz /etc/nut/upsmon.conf.gz
sudo gunzip /etc/nut/upsmon.conf.gz

Tenemos que modificar los dos últimos:
sudo gedit /etc/nut/upsd.users
[admin]
password = contraseña
allowfrom = localhost
actions = SET
instcmds = ALL
[usuario]
password = contraseña
allowfrom = localhost
upsmon master

Esto nos crea dos usuarios de nut, con la contraseña que indicamos, y con acceso únicamente desde nuestro propio equipo. Puesto que hay contraseñas, este archivo hay que protegerlo. Lo haremos con todos al final. Ahora editamos el otro archivo:
sudo gedit /etc/nut/upsmon.conf
y le añadimos la linea siguiente, que indicará el usuario que utilizamos para acceder, su contraseña, y obviamente, el nombre de nuestro sai, localizado en el equipo local.
MONITOR misai@localhost 1 usuario contraseña master


Ya están todos los archivos con su contenido adecuado. Ahora falta protegerlos:
sudo chown root.nut /etc/nut/*
sudo chmod g+r /etc/nut/*
sudo chmod o-r /etc/nut/upsd.users

Serán de root y del grupo nut, que tendrán acceso de sólo lectura, y los demás ninguno.

Falta lo más importante: dar acceso a nut al puerto serie:
sudo usermod -a -G dialout nut

Ya por fin vamos a ponerlo en marcha:
sudo /etc/init.d/nut start

Si todo va bien dirá que ha conectado con el SAI. Si no, hay algo que nos hemos dejado.

Si se fuera la luz, tras unos instantes, se apagaría el ordenador ordenadamente, y tras él, el propio SAI. Al volver la luz volvería a encenderse todo. Veamos que nos dice el SAI:
upsc misai@localhost
battery.charge: 95.0
battery.voltage: 13.50
battery.voltage.nominal: 12.0
driver.name: megatec
driver.parameter.port: /dev/ttyS0
driver.version: 2.0.5
driver.version.internal: 1.5
input.frequency: 50.0
input.voltage: 230.5
input.voltage.fault: 230.5
input.voltage.maximum: 232.9
input.voltage.minimum: 223.7
output.voltage: 225.6
output.voltage.nominal: 220.0
ups.beeper.status: disabled
ups.delay.shutdown: 0
ups.delay.start: 2
ups.load: 23.0
ups.mfr: unknown
ups.model: unknown
ups.serial: unknown
ups.status: OL
ups.temperature: 25.0

Si queremos ver sólo un dato, podemos filtrarlo con grep.

Ahora que nos diga qué podemos hacer con él:
upscmd -l misai@localhost
Si tienes el SAI en el dormitorio será recomendable quitarle el pito. No querréis enteraros así de que se ha ido la luz:
upscmd -u admin -p contraseña misai@localhost beeper.toggle

Hay una forma más bonita de ver los datos. Vamos a instalar un programa de KDE para ello, pues parece ser el único:
sudo apt-get install knutclient
Lo ejecutamos (ALT+F2 y escribir knutclient) y vamos a Preferencias>configurar>SAI Añadir
Ponemos el nombre del SAI, y en dirección localhost, el nombre del usuario y la contraseña, todo igual que pusimos en los archivos de texto. Podemos seleccionar las variables que queremos que nos muestre. Por ejemplo, el voltaje de entrada y la carga. Tras aceptar, veremos los datos gráficamente. Una luz verde nos indica que todo va bien, y si hay un corte o la batería está baja, sendas luces rojas nos lo indicarán.

1 comentario:

Anónimo dijo...

Me parece genial el manual que has hecho, a mi me ha estado funcionando sin problemas hasta que un dia me empezo a salir en el kde este mensage "UPS's driver isn't connected." y desde entonces no consigo hacerlo ir, te agradeceria mucho tu ayuda ya que veo que dominas mucho el tema y no se que hacer gracias por todo.