Monitorizar SAI APC con Raspberry Pi

Si necesitas controlar un SAI APC con Raspberry Pi, has llegado al sitio correcto! 🙂

La verdad es que es muy fácil, con un par de comandos podrás controlar un SAI APC, ejecutar comandos cuando se vaya la luz, cuando vuelva, si se pierde la conexión. En fin, controlar lo que pasa en tu UPS en Raspberry Pi.

En mi caso, tengo una APC Back-UPS BX-700U-GR, y Raspbian 9, pero según vi en los artículos originales, esto lleva funcionando muchos años y es compatible con todos los SAI de APC (al menos por USB). Vamos a usar el módulo «apcupsd – APC UPS Power Management (daemon)»

Monitorizar SAI APC con Raspberry Pi

Al conectar la UPS por USB, quería verificar si era reconocida. Si haciendo un lsubs ves que aparece el SAI, podemos seguir adelante. 😉

pi@pi: lsusb
Bus 001 Device 005: ID 051d:0002 American Power Conversion Uninterruptible Power Supply

Instalar software para monitorizar SAI APC con Raspberry Pi

Así que lo primero, instalar el paquete

sudo apt install apcupsd

Luego, necesitamos modificar el fichero apcupsd.conf, que está en /etc/apcupsd

sudo nano /etc/apcupsd/apcupsd.conf

Y modificar estas líneas para que la Raspberry reconozca el SAI (la mayoría de los SAIs modernos son USB)

# Opcional, yo le puse el nombre del modelo aunque el software lo reconoce igualmente 

UPSNAME BX700

# Estos parámetros son obligatorios que estén así para que funcione por USB
UPSCABLE usb
UPSTYPE usb
DEVICE

Y reiniciamos servicio para que tome en cuenta la nueva configuración

sudo service apcupsd restart

Probando que funciona apcupsd en Raspbian

Hay un comando para probar si todo está listo (apctest) pero yo directamente hice:

pi@pi: sudo apcaccess 
HOSTNAME : Pi
VERSION : 3.14.14 (31 May 2016) debian
UPSNAME : BX700
CABLE : USB Cable
DRIVER : USB UPS Driver
UPSMODE : Stand Alone
STATUS : ONLINE
LINEV : 218.0 Volts
LOADPCT : 21.0 Percent
BCHARGE : 100.0 Percent
TIMELEFT : 25.8 Minutes
MBATTCHG : 5 Percent
MINTIMEL : 3 Minutes
MAXTIME : 0 Seconds
SENSE : Medium
LOTRANS : 140.0 Volts
HITRANS : 300.0 Volts
ALARMDEL : 30 Seconds
BATTV : 13.7 Volts
LASTXFER : Low line voltage
NUMXFERS : 0
TONBATT : 0 Seconds
CUMONBATT: 0 Seconds
XOFFBATT : N/A
SELFTEST : NO
STATFLAG : 0x05000008
BATTDATE : 2018-04-09
NOMINV : 230 Volts
NOMBATTV : 12.0 Volts
NOMPOWER : 390 Watts
FIRMWARE : 924.Z3 .I USB FW:Z3

La línea STATUS : ONLINE significa que la Raspberry ya ha reconocido el SAI APC. Con lo cual, ya podemos continuar

Iniciando software para monitorizar SAI APC en Raspberry Pi

Primero tenemos que confirmar al daemon que el SAI está configurado.

pi@pi: sudo nano /etc/default/apcupsd 

Y cambiamos esta línea:
ISCONFIGURED=yes

Y hacemos que arranque por defecto


pi@pi: update-rc.d apcupsd defaults

Scripts para controlar el SAI APC

Ahora viene la parte interesante. El paquete apcupsd viene con unos scripts por defecto para controlar el comportamiento de la Raspberry. Dichos scripts están en /etc/apcupsd.

Hay varios scripts:

changeme: Cuando la batería necesita ser remplazada
commfailure: Cuando falla la comunicación con el SAI
commok: Cuando se restablece la comunicación con el SAI
killpower: Script ejecutado antes que apcupsd apague el SAI
offbatery: Cuando se restablece alimentación (vuelve la luz)
onbattery: Cuando se va la luz y el SAI pasa a estado batería

A partir de aquí, ya puedes modificarlos a gusto. En mi caso, voy a hacer que Zabbix se alimente de un «flag» que voy a poner con el estado del SAI, y en caso de que la batería se agote, apague mi disco NAS. Y todo para que mi sistema de videovigilancia siga siempre activo. 😛

Controlar APC con Raspberry Pi



6 comentarios:

  1. Hola muy interesante lo que detalla, llegue a este articulo por que busco hacer que mi raspberry pueda usando la información que le da ups Apc BR1200 apagar tanto la Nas Synology y mi Pc cuando falle la energía. Necesito hacer paso a paso esta configuración.

  2. Muy interesante el artículo.
    He realizado los pasos y me ha dado un problema al ejecutar esta orden:
    sudo service apcupsd restart

    Al final buscando en internet la solución paso con parar el servicio y volverlo a arrancar y ahora va genial.
    sudo service apcupsd stop
    sudo service apcupsd start

    Supongo que puede ser porque no uso raspbian.

    Muchas gracias por el aporte y un saludo.

    • Gracias a ti Oscar. Me alegro que haya servido. Hoy tuve que volver a configurarlo (murió la SD de mi Raspberry) y me auto-sirvió 😉

  3. Buenas , quisiera saber como configurar para que cuando do se vaya la luz y salte las baterías, me envie un correo electrónico de que esta en batería o cuando vuelva la luz me diga que esta ok. Gracias

    • Hola David

      El propio paquete apcupsd se encarga de esto de manera automática. Pero le envía los mails a la cuenta root.

      Para que te envíe los mails, deberías:
      1) Asegurarte que tu Raspberry-Ordenador es capaz de enviar correos a cuentas externas (aquí mi artículo para Raspberry Pi)
      2) Cambiar el aliases (/etc/aliases) para que te envíe a la cuenta externa, todos los correos que llegan a root. En mi mismo artículo, en «Tiques finales» tienes cómo hacerlo.
      3) O bien, si no quieres recibir todos los correos de root, cambiar el campo SYSADMIN del fichero /etc/apcupsd/apccontrol y poner tu cuenta externa.

      En vez de:
      export SYSADMIN=root

      Poner
      export SYSADMIN=tucorreo@tudominio.com

      Aunque nunca probé esta tercera opción, según la documentación oficial debería funcionar.

      Referencia:
      APCUPSD User Manual

      Saludos, espero que sirva!

      Alfonso

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.