¿Nos ayudas a pagar el Hosting?

Compartir en facebook Compartir en google+ Compartir en twitter Compartir en pinterest Compartir en linkedin

Controla el GPIO vía email

Publicado en mayo de 2020

Controla el GPIO vía emailPara 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:

Controla el GPIO vía email

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:

Controla el GPIO vía email

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.

Nombre*

Email* Nunca será publicado ni compartido

Comentario*



Copyright © 2020 desde 2016. Todos los derechos reservados | Diseño JaviPSantos

Solicitamos su permiso para obtener datos estadísticos de su navegación en esta web, en cumplimiento del Real Decreto-ley 13/2012. Si continúa navegando consideramos que acepta el uso de cookies.

OK | Más información