Monitor de línea eléctrica¶
Introducción¶
Es de nuestro particular interés la investigación de una tecnología que permita monitorizar el suministro eléctrico de distintos aparatos, que por distintos motivos es necesario que se mantengan encendidas o bien que requieran un procedimiento particular en sus procesos de apagado/encendido. En ese sentido vimos como alternativa a dar un puntapié a la tarea, el revelamiento de las posibilidades de implementar una solución utilizando una micro computadora Banana Pi.
Banana Pi.¶
Instalación del Banana Pi¶
En el Banana Pi instalamos la distribución Bananian Linux desde el sitio oficial: https://www.bananian.org/download
Elegimos esta distribución por su simpleza dado que provee de una interfaz de linea de comandos y mínimas herramientas básicas como para poder implementar por ejemplo un servidor. Dado la naturaleza del proyecto es más que suficiente.
El Banana Pi cuenta con un slot para la colocación de una memoria SD (se puede usar una memoria micro SD que son mas comunes utilizando un adaptador a SD). Para instalar Bananian insertamos la memoria en una computadora que cuente con un lector de memoria. Y abriendo una consola ejecutamos los siguientes comandos:
sudo su -
para asumir privilegios de root.
fdisk -l
para ver donde que ruta corresponde a la memoria (buscaremos el que tenga el tamaño de la memoria y formato FAT)
umount /dev/sdX
Tenemos que desmontar la memoria antes de escribir la imagen en la misma, X corresponde al dispositivo encontrado con el comando fdisk.
cd /ruta_a_descarga_de_bananian
vamos a la carpeta en que descargamos la imagen de bananian
gunzip bananian*
descomprimimos el archivo descargado para tener la imagen que queremos escribir en la memoria.
dd if=imagen_de_bananian.img of=ruta_a_la_memoria bs=1M && sync
el comando dd escribe el contenido de la imagen en la memoria y el comando sync se encarga de que se finalicen correctamente las tareas de escritura en la memoria.
Con esto estamos en condiciones de quitar la memoria de la computadora y colocarla en el Banana Pi. Para iniciar por primera vez el Banana Pi con el bananian, necesitaremos un monitor, televisor o proyector con entrada HDMI y el respectivo cable HDMI, un teclado y si bien no es necesario en principio es conveniente un cable de red con conectividad a internet.
Al tener todo esto conectado, enchufamos el cargador, y deberia prender una luz roja constante que indica que esta encendido, y una luz verde que debería comenzar a titilar, que va a indicar junto con el texto que se muestre en la pantalla el correcto funcionar del sistema instalado.
Este tipo de dispositivos a veces son quisquillosos con las tarjetas SD y no inician correctamente, si es posible, intentar el procedimiento con otra memoria.
Al terminar de iniciar el sistema podremos ingresar con las credenciales usuario root y contraseña pi. Habiendo ingresado ejecutaremos el comando bananian-config, que nos permitirá hacer la configuración inicial del sistema en cuestiones como la fecha y hora la distribución del teclado, etc.
Luego conviene ejecutar apt-get update para actualizar los repositorios de software y apt-get upgrade para actualizar los paquetes instalados a fin de evitar tener paquetes desactualizados que puedan contener fallos de seguridad.
Ejecutamos el comando ifconfig eth0 y anotamos la direccion ip, es conveniente que la misma sea fija y no adquirida dinámicamente mediante un servicio como ser dhcp para no perder eventualmente el acceso al dispositivo. Utilizaremos dicha dirección para acceder remotamente a través de la red.
Por ultimo cambiamos la contraseña del usuario root de bananian con el comando passwd ya que la que tiene es pública y de fácil acceso lo que la convierte en un riesgo para la
seguridad.
Una vez realizadas estas operaciones, podremos desconectar la pantalla y el teclado e ingresar mediante una conexión por ssh de la siguiente manera:
ssh root@ip_del_banana
Energía del Banana Pi y Bananian.¶
El Banana Pi cuenta con un procesador, el AXP209, que controla y maneja el suministro de energía, el misma puede ser a través de un cargador por entrada AC IN de 5v 2A, otra de iguales características por la entrada USB OTG, y una batería 3.7V que va soldada a la placa.
Para obtener la información de la energía del Banana Pi existe dos métodos, uno es obtenerlos directamente desde el procesador mediante su interfaz i2c, pero es complejo y requiere un conocimiento especial del dispositivo y en especial de como esta implementado el procesador. La otra opción mucho más sencilla es obtener la información desde el sistema linux instalado, nos brinda la información dentro del sistema de archivos en la ruta /sys/class/power_supply, dentro de esta carpeta se encuentran tres carpetas que cada una contiene la informacion que corresponde a cada una de las fuentes de energia posibles.
Con esa información se pueden implementar distintos sistemas de monitoreo, en particular queremos utilizarlo para monitorizar la falla de alimentación en aparatos como heladeras de los laboratorios que contiene elementos altamente sensibles a los cambios en la temperatura y que deben estar refrigerados.
Implementación del sistema¶
Prototipo¶
El prototipo funcional a nivel de físico contó con un Banana Pi alimentado por un cargador y una batería USB, conectado por cable a la red. Lo que se implementó en primera instancia, fue un script llamado energía que recupera la información de energía desde el sistema, y en caso de que se suspenda la energía y posteriormente se restablezca envía un email, avisando del evento, el mismo se coloca en una tarea del sistema ejecutándose cada un minuto, y cada ejecución guarda un registro con los mensajes "Energía suspendida" ante un fallo, "Energía restablecida" cuando se recupera y "Energía activa" en las ejecuciones posteriores a un restablecimiento del suministro eléctrico. Se almacena en un archivo también el estado en cada ejecución de manera que la siguiente pueda tomar esos datos y compararlos con los actuales, esto permite no solo detectar los cambios de estado sino el evitar el envío de múltiples alarmas con el mismo estado.
Para el envío de los correos se utiliza el cliente de linea de comandos mutt, por que cumple con la tarea siendo fácil de utilizar y de configurar para nuestro propósito.
Como segunda instancia se implementará un cliente SIP capaz de comunicarse con un servidor asterisk, el cual al recibir la comunicación llame a un numero y reproduzca un audio que corresponde al estado.
Instalación del script de monitoreo¶
Descargamos el script que encontramos aquí y lo abrimos en un editor de texto y modificamos la variable direccion, colocando en la misma la dirección de correo que debe recibir las alarmas.
Copiamos el script de monitoreo utilizando el comando scp de la siguiente manera:
scp <ruta_al_script> root@<ip_banana>:<ruta_destino_del_script>
Si no editamos la realizamos la modificacion del script previamente podemos hacerla en el banana abriendo el archivo con vi o nano.
Instalación y Configuración mutt¶
El paquete mutt es un cliente de correo y como tal admite muchas posibilidades de configuración que exceden al uso que nosotros le daremos que es enviar ejecutandolo dentro de un script, por lo que la configuración que haremos será muy básica.
Podemos instalar mutt desde los repositorios del sistema ejecutando el comando:
apt-get install mutt
Para configurar mutt abriremos con un editor de texto como vi o nano el archivo /etc/Muttrc y al final agregamos las siguientes lineas:
set my_pass='password_correo' set my_user= usuario_correo set realname = 'nombre_visible' set from = direccion@cure.edu.uy set use_from = yes set smtp_url=smtps://$my_user:$my_pass@<direccion_servidor_correo> set ssl_force_tls = yes
En my_pass colocamos la contraseña del usuario de correo que queremos utilizar, en my_user va el nombre de usuario, colocamos en realname el nombre que queremos que aparezca en los correos, en from ponemos la direccion que usaremos en el campo From del correo, use_from es para indicarle que utilice el campo From. En smtp_url colocamos la direccion al servidor de correo y por ultimo indicaremos que utilice el protocolo de seguridad tls.
Creación de la tarea cron¶
La última tarea a realizar es la creación de la tarea cron para que se ejecute periódicamente el script y se realice el registro de eventos.
Crearemos la tarea abriendo con un editor de texto el archivo /etc/crontab y al final agregaremos la siguiente linea:
*/1 * * * * root /root/energia.sh >> /var/log/alarmaPi.log
Donde le decimos que cada 1 minuto ejecute el script y guarde la salida al final del archivo /var/log/alarmaPi.log donde se encontrará el registro con los eventos.