Controla el GPIO vía email
Publicado en mayo de 2020Para muchos proyectos es importante controlar los pines del GPIO mientras estás fuera, pero puede que no queremos montar un servidor web por temas de seguridad o infraestructura. En este caso, es muy util controlar los pines a través del envío de un email. Esto lo podemos conseguir fácilmente mediante PHP y una tarea cron sin exponer nuestro sistema al exterior.
Que necesitas:
Partimos, como casi siempre, de una Orange Pi, en este caso nos sirve cualquier modelo, con Armbian actualizado y conectada a internet, imprescindible para poder atacar al servidor de correo para comprobar si hay nuevos emails. Instalamos la librería orangepi_PC_gpio_pyH3 que, aunque es antigua, sigue funcionando perfectamente. Si no sabes como, mira este artículo. Si quieres usar otra librería, adapta los comandos de gestión de pines a tu librería.
Necesitamos Apache y PHP. Primero Apache:
sudo apt-get install apache2
Vamos a instalar la versión 7.2 de PHP. Puedes buscar información sobre como instalar la última versión de PHP para tu distribución. Para Debian yo he usado lo siguiente. Primero agregamos el repositorio:
sudo apt-get install apt-transport-https lsb-release ca-certificates sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list
actualizamos totalmente el sistema.
sudo apt-get update sudo apt-get upgrade sudo apt-get dist-upgrade
Instalamos PHP:
sudo apt-get install php7.2
Comprobamos que se ha instalado correctamente:
php -v PHP 7.2.30-1+0~20200419.40+debian8~1.gbpb1b799 (cli) (built: Apr 21 2020 09:23:41) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies with Zend OPcache v7.2.30-1+0~20200419.40+debian8~1.gbpb1b799, Copyright (c) 1999-2018, by Zend Technologies
Instalamos imap
para PHP 7
sudo apt-get install php7.2-imap
Ya tenemos todo listo. Ahora vamos a crear un fichero que conecte al servidor de correo, compruebe si hay algún email nuevo, y, si lo hay, obtener la acción que queremos lanzar y el pin con el que queremos interactuar. Esto es sólo un ejemplo y es lo más sencillo posible, pero podemos complicarlo todo lo que queramos enviando parámetros y obteniéndolos a través de analizar el texto del cuerpo. Para esto creamos un fichero PHP nuevo en cualquier directorio:
sudo nano gpioemail.php
y agregamos el siguiente código:
Es una imagen porque si añado código PHP a esta página lo ejecuta, pero puedes descargar un fichero .txt pulsando aquí que luego deberás renombrar a .php
El último paso es enviar un email a esa dirección de correo con los siguientes datos:
Asunto: Si quieres abrir el pin (ponerlo a 1) PinON
, y si quieres cerrarlo (poner a 0) PinOFF
.
Cuerpo: Escribe sólo el numero del pin que quieras abrir o cerrar. 24
.
Eso es todo. Un ejemplo para poner el pin 24 a 1:
Lanza el script con:
php -f gpioemail.php
y comprueba que los pines se han activado o desactivado con gpio readall. Puedes envíar varios emails con distintos pines, o cambiar el script para que cambie varios pines, o implantar seguridad añadiendo algún tipo de contraseña en el asunto o en el cuerpo. Ahora sólo falta configurar una tarea cron que lance el script PHP cuando creas conveniente. Útil ¿verdad?.
Espero que te haya sido de utilidad, no dudes en escribir un comentario si ves algún error o si puedo ayudarte.
Utiliza este espacio si quieres añadir algún comentario adicional o si tienes alguna duda.
No olvides añadir tu distribución y tu placa.
Todos los comentarios serán validados antes de su publicación.
Copyright © 2024 desde 2016. Todos los derechos reservados | Diseño JaviPSantos