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)»
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. 😛