RasPi: conectando un SAI Salicru SPS One 900VA

Muy buenas.

En esta ocasión quiero compartir con todos vosotros mi reciente experiencia con este SAI, el maravilloso SPS One de SALICRU, en su versión 900VA (http://catalogo.salicru.com/es-domestic/sais/sps-one). No voy a hacer demasiada publicidad, así que me dedicaré básicamente a explircaros cómo conseguí hacerlo funcionar bajo Linux. En especial, en mi Raspberry Pi, pero creo que podríamos aplicar sin demasiadas diferencias ni problemas, todas las indicaciones para llevarlo a cualquier Linux.

SPS-ONE

SPS-ONE

Por qué un SPS One?

Fácil: PRECIO. Es increíblemente barato para las prestaciones que ofrece. El de 900VA (más que suficiente para un par de PCs en casa), alrededor de los 57€. Los hermanos menores, a razón de unos 5 o 7€ menos por categoría.

Mi principal interés era tener un SAI que alimente mis dos NAS de manera que no pierda mas información por causas de caida de tensión, como ya me ha pasado en varias ocasiones. Sólo he encontrado compatibilidades con APC, de precios de mas del triple que este, y no con mejores prestaciones. Por lo tanto, me puse a buscar en Internet, y vi que “otra vía era posible”. Alguien ya había probado con éxisto este mini tutorial que hoy os traigo, así que me tiré a la piscina, compré el mío, y hoy mismo mientras lo pruebo, os escribo este contenido.

Espero que os parezca interesante, contadme qué tal…

Culturilla general

Bien, como os comentaba, por mucho que diga “compatible con Linux”, no es del todo cierto… Ese software que promueve la marca (View Power) no sabe demasiado bien cómo comportarse con Linux. Pero existe otra alternativa, que es la plataforma NUT (Network UPS Tools). NUT ofrece infinidad de drivers, pero “ninguno” compatible con el SPS One (bien, no es del todo cierto). Pero alguien dice por ahí que el driver blazer_usb no se comporta del todo mal. Y es cierto! No voy a entrar en detalles, podréis encontrar mas info al respecto por Internet sin problemas…

El SPS One ofrece, como digo, unas prestaciones mas que interesantes, y la garantía del fabricane (español!) es mas que reconfortante: hasta 90000€ en caso de incidencia no cubierta por el SAI.

Así que me fui, como dije a por él. Y por ahora no me ha decepcionado, esperemos a ver cuando caiga la tensión, qué sucede…

Instalación del cliente

Al tajo. Vamos a por el software que nos interesa. Instalaremos las estupendas librerías y drivers del NUT, como ya he comentado. Tiene infinidad de posibilidades que en otra entrada, mas adelante, os comentaré. Por ahora centrémonos en lo básico, establecer la primera comunicación.

Lo primero de todo, como siempre, es tener al día nuestro repositorio de software y nuestro sistema operativo:

$ sudo apt-get update & sudo apt-get upgrade & sudo apt-get autoclean & sudo apt-get autoremove

Ahora ya podemos instalar el cliente y el server (con la siguiente orden se instalan ambos por defecto):

pi@raspberrypi ~ $ sudo apt-get install nut

Si todo ha ido bien, al final de la instalación veréis una información importante, la confirmación de la instalación y las rutas de los ficheros de configuración.

En este caso se habrán instalado los paquetes:

  • nut-client
  • nut-server

Resultado para el cliente:

[info] nut-client disabled, please adjust the configuration to your needs.
[info] Then set MODE to a suitable value in <strong>/etc/nut/nut.conf</strong> to enable it.

Resultado para el server:

[info] nut-server disabled, please adjust the configuration to your needs.
[info] Then set MODE to a suitable value in /etc/nut/nut.conf to enable it.

Bien, nuestro fichero de configuración es: /etc/nut/nut.conf para ambos casos

En ese mismo directorio encontramos, a demás, el resto de ficheros que tendremos que configurar:

pi@raspberrypi ~ $ ls /etc/nut
nut.conf  ups.conf  upsd.conf  upsd.users  upsmon.conf  upssched.conf

Configuración

A continuación, un pequeño detalle de qué es cada fichero y algunas indicaciones de cómo configurarlos. Cuando accedáis a cada uno de ellos podréis ver la documentación, añadida al principio en modo de comentarios. Os recomiendo que los leáis antes de modificarlos y entonces lo hagáis en base a vuestras necesidades. Lo que a continuación os expongo son puros ejemplos muy básicos.

nut.conf

Este fichero es el que contiene la configuración “genérica” del driver. En nuestro caso le tendremos que indicar que sólo vamos a administrar o monitorizar un SAI:

MODE=standalone

 ups.conf

Este fichero es el que define cada uno de los SAIs que vamos a administrar. En nuestro caso, solo uno, un SPS One 900VA. Indicaremos el driver a utilizar, blazer_usb, el puerto serie de comunucación, debe ser auto (ya que es USB y no serial, y por lo tanto será el driver quien lo administre), y por último la descripción, desc, en la que podemos escribir aquello que mas nos convenga para describir el dispositivo configurado:

[salicru]
driver = blazer_usb
port    = auto
desc    = "Salicru SPS One 900VA"

upsd.conf

Este fichero contiene la configuración del demonio de comunicación. Define quién realiza la comunicación, así como el puerto y el número de conexiones máximas permitidas. Para nuestro caso, los valores por defecto son correctos:

MAXAGE 15
STATEPATH /var/run/nut
LISTEN 127.0.0.1 3493
MAXCONN 1024

upsd.users

Definición del (los) usuario(s) con permisos para obtener datos de la comunicación abierta. El contenido es bastante autoexplicativo. Cada sección define un usuario y los permisos otorgados. Para nuestro caso, solo hemos creado un usuario, admin (podemos crear cuantos queramos) con los valores que vienen por defecto:

[admin]
        password = 12345
        actions = SET
        instcmds = ALL

Este usuario admin puede modificar algunos parámetros del SAI (actions = SET) y ejecutar todos los comandos posibles (instcmds = ALL). Para nuestro caso ilustrativo es suficiente, pero sería recomendable aplicar un password mas seguro y repartir las posibles acciones entre diversos usuarios, según su rol (aministrador, monitor, ejecutor, etc…).

upsmon.conf

Por último tenemos este fichero, que es el que contiene los parámetros utilizados por el driver, para realizar las comunicaciones, apagar automáticamente el sistema e incluso enviar emails en caso de existir alguna emergencia. Dejaremos la mayoría de valores por defecto, excepto algunas cosillas que paso a explicaros:

MONITOR salicru@127.0.0.1:3493
NOTIFYCMD /usr/local/ups/bin/notifyme.sh # hay que crearlo!
NOTIFYMSG ONLINE        "UPS %s on line power"
NOTIFYMSG ONBATT        "UPS %s on battery"
NOTIFYMSG LOWBATT       "UPS %s battery is low"
NOTIFYMSG FSD           "UPS %s: forced shutdown in progress"
NOTIFYMSG COMMOK        "Communications with UPS %s established"
NOTIFYMSG COMMBAD       "Communications with UPS %s lost"
NOTIFYMSG SHUTDOWN      "Auto logout and shutdown proceeding"
NOTIFYMSG REPLBATT      "UPS %s battery needs to be replaced"
NOTIFYMSG NOCOMM        "UPS %s is unavailable"
NOTIFYMSG NOPARENT      "upsmon parent process died - shutdown impossible"
NOTIFYFLAG ONLINE       SYSLOG+WALL
NOTIFYFLAG ONBATT       SYSLOG+WALL
NOTIFYFLAG LOWBATT      SYSLOG+WALL
NOTIFYFLAG FSD          SYSLOG+WALL
NOTIFYFLAG COMMOK       SYSLOG+WALL
NOTIFYFLAG COMMBAD      SYSLOG+WALL
NOTIFYFLAG SHUTDOWN     SYSLOG+WALL
NOTIFYFLAG REPLBATT     SYSLOG+WALL
NOTIFYFLAG NOCOMM       SYSLOG+WALL
NOTIFYFLAG NOPARENT     SYSLOG+WALL

Con esto ya podemos conectar el SAI al usb de la Pi y lanzar el daemon. Recordad reiniciar la Pi antes, para asegurarnos que el driver obtiene los datos de configuración correctamente y que se carga el driver usb.

Probando el driver

Bien, ya podemos probar el driver. Si todo ha ido bien, tras reiniciar la Pi, se habrá lanzado el daemon automáticamente.

Así que para comprobar que está todo funcionando, podemos ejecutar el siguiente comando:

pi@raspberrypi ~ $ sudo upsc salicru@127.0.0.1:3493
battery.charge: 100
battery.voltage: 13.60
battery.voltage.high: 13.00
battery.voltage.low: 10.40
battery.voltage.nominal: 12.0
device.type: ups
driver.name: blazer_usb
driver.parameter.pollinterval: 2
driver.parameter.port: auto
driver.version: 2.6.4
driver.version.internal: 0.08
input.current.nominal: 3.0
input.frequency: 50.1
input.frequency.nominal: 50
input.voltage: 246.5
input.voltage.fault: 246.1
input.voltage.nominal: 230
output.voltage: 246.5
ups.beeper.status: enabled
ups.delay.shutdown: 30
ups.delay.start: 180
ups.load: 18
ups.productid: 5161
ups.status: OL
ups.type: offline / line interactive
ups.vendorid: 0665

Y obtenemos un listado de valores, en el que se especifica, entre otros, la carga de la batería actual, voltajes de entrada / salida, de las baterías, etc…

Arranque manual del driver, del daemon y del monitor

Si algo ha fallado, y el driver no se ha iniciado automáticamente, el comando anterior no funcionará…

Podemos arrancar de manera manual de la siguiente forma:

pi@raspberrypi ~ $ sudo upsdrvctl start
pi@raspberrypi ~ $ sudo upsd
pi@raspberrypi ~ $ sudo upsmon

Bien, ¿qué estamos haciendo en cada línea?

  • primero arrancamos el driver usb: upsdrvctl start
  • luego arrancamos el daemon: upsd
  • y, finalmente, el proceso monitor de estado del sai: upsmon

No es necesario indicar la ruta física de los comandos, dado que al instalarlo con apt-get el mismo instalador nos configura el servicio y el PATH.

Si todo ha ido correctamente, no aparecerá ningún mensaje de error. En caso contrario, podemos añadir el modificador -D a cada comando para ejecutarlo en modo debug, el cuál nos ofrece algo mas de información…

Con esto concluyo esta primera entrega. En una segunda veremos cómo explotar estos datos. Como veis, no sería demasiado difícil extraer los datos y tratarlos, hay muchas maneras de hacerlo. Ya veremos alguna otra…

Espero que os haya parecido interesante.

Jordi

Share Button

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

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