Hoy vamos a ver cómo utilizar el software APCUPSD  (APC UPS Daemon) para controlar con nuestra raspberry pi , las caídas del suministro eléctrico detectadas por nuestro SAI APC, y que nos avise a través de un bot de Telegram.


detector cortes electricidad raspberry & sai & Telegram Bot
 
*** Importante: El SAI que utilicemos ha de tener una salida para el software PowerChute de APC (que tiene la misma función que el APCUPSD, pero para Windows, y con una interfaz gráfica algo más elegante).

 


 
Aquí podemos ver la parte trasera del SAI APC Back-UPS 700U-GR, que es el que hemos utilizado en este caso, donde se puede ver el puerto USB tipoA a tipo B necesario:

apc back ups 700 powerchute

 

En este artículo:


 

 

1. SAIS APC Recomendados (desactiva AdBlock)

 

2. CONECTAR SAI A RASPBERRY PI

Dependiendo del tipo de Sai que utilicemos la conexión puede ser principalmente con cable USB a TIPO A a TIPO B, o con cable RJ45 a USB.
 
En este caso lo primero que hemos de hacer es configurar el archivo apcupsd.conf, para que nuestra Raspberry Pi detecte el SAI APC por medio del cable USB 2.0 Tipo A a Tipo B para impresora:

Un SAI APC, buena marca, y de gama media.                       Un SAI de marca poco conocida, pero muy barato, y funciona bien.

                                                                                  


 

 

2.a) CABLES USB Tipo A a Tipo B (desactiva AdBlock)

 

 

 

2.b) Cables RJ45 a USB para UPS (desactiva AdBlock)

 


 

 

3. Instalar el software de control APCUPSD

 
Lo primero instalaremos el paquete APC UPSD.

1
apt-get install apcupsd

 
instalar apcupsd para SAI en Linux
 

 

4. Configurar APCUPSD

 
Después hemos de configurar los archivos de APC UPSD (que podremos encontrar en /etc/apcupsd ):
 
Enmarcados en rojo podemos ver los archivos más importantes:

  • apccontrol
  • apcupsd.conf
  • offbattery
  • onbattery

 
archivos configuracion apcupsd
 

 

5. Archivo principal de configuración: apcupsd.conf

 

Dependiendo del tipo de SAI que utilicemos y la conexión que utilicemos habremos de configurar los parámetros siguientes:

  • UPSNAME
  • UPSCABLE
  • UPSTYPE
  • DEVICE

 

 

5.a) Ejemplos de Configuración de los parámetros anteriores

 

  • UPSNAME: aquí pondremos el nombre que le daremos al SAI, con la SINTAXIS: UPSNAME espacio NOMBRE

up`sname apcupsd
 

  • UPSCABLE :  Podremos elegir entre diversos tipos, entre ellos: simple, smart, ether, usb, u otros tipos concretos de cable que podemos ver en la captura:
TE RECOMENDAMOS  Preguntas exámen LPIC 1

apcupsd upscable
 

  • UPSTYPE
  • DEVICE

Estos dos parámetros nos permiten elegir entre diversas posibilidades. Por ejemplo, para UPSTYPE podríamos elegir la opción más simple (si aplica, claro) que sería USB.
 
Y para DEVICE, lo que corresponda en su columna, dependiendo del UPSTYPE que hayamos elegido en el paso anterior. Podemos ver la tabla siguiente que nos ayudará a entender las diferentes posibilidades:

apcupsd upstype descripcion de dispositivo
 



 

Ejemplo de configuración de UPSTYPE y DEVICE en este caso (utilizamos cable USB) (Podemos ver que en este caso, en el parámetro DEVICE hemos de dejarlo en blanco):

 
apcupsd upstype device
 
Los demás parámetros podemos dejarlos por defecto.
 

 

6. Archivo apccontrol

 

En el archivo apccontrol es donde podemos ver los scripts que hay configurados y lo que mostrará y ejecutará el programa en cada caso. También podemos configurar el user y el mail donde se podrían enviar alertas por mail (aunque nosotros en este caso utilizaremos el BOT de Telegram).

 

SYSADMIN=root

APCUPSD_MAIL=»mail»

apccontrol
 
 

  • Scripts que actuarán en cada caso: killpower, commfailure, commok, powerout, onbattery, offbattery, mainsback.

 

  • Nosotros nos centraremos en los dos scripts principales: onbattery (cuando se cae el suministro eléctrico y comienzan a actuar las baterías del SAI) y offbattery (cuando vuelve el suministro eléctrico y dejan de actuar las baterías del SAI).

 
apcupsd apccontrol
 

 

7. Instalar la API de Telegram Bot

 
Ahora vamos a instalar la API de telegram bot API
 
Tal y como vimos en el artículo Raspberry Telegram Bot y Motion, vamos a instalar la API de TelegramBotAPI, y habremos de crear un bot de Telegram que después conectaremos al software APCUPSD del SAI, y nos avisará directamente por Telegram cuando haya cortes de electricidad.
 
Instalamos pyTelegramBotAPI con :

1
sudo pip install pyTelegramBotAPI

 
pip install pyTelegramBotAPI
 
Para seguir, hemos de crear un Bot de Telegram, obtener nuestra ID de Telegram y un token de autorización para nuestro bot de Telegram. Todos estos pasos podemos verlos aquí:


 

 

8. Comenzar a usar el software de APCUPSD

 
Después de preparar todo lo anterior, llega el momento de probar el software de APCUPSD con nuestro SAI.
 

 

8.a) APCTEST

 
Lo primero que podemos hacer es un APCTEST. Con este comando comprobamos si el SAI está gestionando correctamente sus variables internas.

Para no obtener el error: apctest FATAL ERROR in apctest.c at line 313

primero hemos de parar el servicio apcupsd, con el comando

1
service apcupsd stop

, y luego ejecutar

1
apctest

 
detector cortes electricidad - apcupsd apctest
 
Si todo va bien, podremos ver el mensaje: Getting UPS capabilities…SUCCESS

y un menú del SAI, que nos permitirá realizar varias pruebas, calibraciones, cambiar la hora y fecha …
 

 

8.b) Comando DMESG para comprobar mensajes importantes y comprobar la detección del SAI en la Raspberry Pi

 
Si ejecutamos el comando

TE RECOMENDAMOS  Manipular y analizar el contenido de archivos en Linux
1
dmesg

podremos comprobar que el SAI ha sido detectado por la Raspberry Pi:

mensajes dmesg de apcupsd
 

 

8.c) APCACCESS STATUS

 
Reiniciamos el servicio apcupsd con

1
service apcupsd restart

, y ejecutamos el comando

1
apcaccess status

 

APCACCESS  es un programa de APCUPSD, que nos permite mostrar el estado completo de nuestro SAI:

 
apcupsd apcaccess status

 

Hecho esto, ya sabemos que nuestro SAI funciona y se comunica correctamente con nuestra Raspberry Pi gracias al software APCUPSD.

 

Ahora vamos a modificar los archivos onbattery y offbattery, y a ver los mensajes que nos envía nuestro bot de Telegram.
 

 

9. Modificar los archivos onbattery y offbattery de APCUPSD, para que invoque al bot de Telegram y nos envíe un mensaje de Telegram

 

El archivo onbattery ejecutará su contenido cuando las baterías del SAI comiencen a funcionar, y el archivo offbattery se ejecutará cuando se reestablezca el corte de electricidad y las baterías del SAI dejen de funcionar (porque se conectará de nuevo a la red eléctrica).
 
Así que modificamos los archivos originales (podemos guardar una copia del archivo original), y en su lugar vamos a llamar al Bot de Telegram, y le diremos que nos envíe un mensaje por Telegram con el texto deseado.

Este es nuestro archivo onbattery (aviso cuando haya un corte de electricidad):
 
apcupsd archivo onbattery - import telegram bot
 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/bin/env python
#
# This python script if placed in /etc/apcupsd
# will be called by /etc/apcupsd/apccontrol when the
# UPS goes back on to the mains after a power failure.
# We send an Telegram message to root to notify him.
#
 
 
 
import telebot
tb = telebot.TeleBot('xxxxxxx:zzzzzzzzzzzzzzzzzzzz-xxxxxxxxxxxxxxxx')
tb.send_message('666666666', 'El Suministro Electrico se ha CAIDO!')
tb.send_message('000000000', 'El Suministro Electrico se ha CAIDO!')

 
Y el archivo offbattery será igual, solo que el mensaje de texto será diferente, algo así como:

 

1
2
3
4
import telebot
tb = telebot.TeleBot('xxxxxxx:zzzzzzzzzzzzzzzzzzzz-xxxxxxxxxxxxxxxx')
tb.send_message('666666666', 'Suministro Electrico REESTABLECIDO!'')
tb.send_message('000000000', 'Suministro Electrico REESTABLECIDO!')

 

 

10.a) Mensajes de nuestro Bot de Telegram, avisando de Suministro eléctrico CAIDO:

 
apcupsd onbattery mensaje del telegram bot
 

 

10.b) Mensajes de nuestro Bot de Telegram, avisando de Suministro eléctrico REESTABLECIDO:

 
apcupsd archivo offbatery - mensaje del bot de telegram cuando se deja de usar la bateria
 

 

11. CONCLUSIÓN

 

Si queremos tener un chivato Bot de Telegram y crear un detector de cortes de electricidad gratuito (si ya tienes una Raspberry Pi y un móvil, solo te falta un pequeño SAI de APC( hay otras marcas, pero este tutorial se basa en el software APCUPSD), y combinarlo con un buen SAI APC, en este artículo tenemos una interesante solución, gracias al software APCUPSD. Si además te gusta trastear con las Raspberry Pi, verás que este artículo te puede ser de gran utilidad. Aprovecha la API de Telegram y la funcionalidad de los Bots de Telegram para conseguir avisos instantáneos en tu móvil.  🙂

 




Etiquetas del articulo: , ,