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. 😛
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.
Hola Luis
Has podido realizar la configuración
Fon
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ó 😉
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