Buenos días a tod@s.
En ésta ocasión vamos a crear un bot de Telegram en python para controlar nuestra Raspberry Pi desde el móvil, éste va a incluir:
- Control de una webcam (fotos, timelapse).
- Información sobre el estado de la Raspberry (ram, hd, temperatura y cpu).
- Envío de comandos de sistema (como en una terminal).
- Comprobación de seguridad para restringir el acceso a ciertas partes.
Lo primero de todo será buscar "BotFather" en Telegram para crear y obtener el TOKEN de nuestro bot, basta con escribir @BotFather en el buscador de Telegram.
Pulsamos Iniciar y nos mostrará los comandos disponibles, para ejecutar un comando podemos pulsar en la lista o escribirlo en un mensaje. El primero que usaremos será /newbot, BotFather nos preguntará por este orden:
- Nombre del bot.
- Nombre público del bot terminado en "bot" (Ej: PruebaBot)
Una vez introducidos, nos muestra un mensaje satisfactorio con el TOKEN, guardarlo pues nos hará falta. Echarle un vistazo a los demás comandos disponibles para personalizar el bot como la descripción, imagen, comandos disponibles, etc, luego veremos alguno.
Ya estamos listos para empezar a escribir el bot en sí. Creamos un nuevo archivo en python e importamos los módulos necesarios, en mi caso he utilizado pyTelegramBotAPI. También vamos a declarar algunas variables que utilizaremos posteriormente.
Instalación del módulo: sudo pip install pyTelegramBotAPI
Para tener una visión mas clara de lo que sucede en consola, creamos una clase para darle color al texto.
Lo siguiente será crear las funciones esenciales del bot, listener (recibe los mensajes que envían los usuarios), comando start(arranca el bot) y la ayuda.
Para que el bot muestre los comandos que tenemos en la ayuda, tenemos que irnos nuevamente a @BotFather y usar la opción /setcommands, elegimos el bot, escribimos los comandos con su respectiva descripción tal como nos muestra @BotFather.
Ahora es turno de los menús del bot: principal, cámara e información de la Raspberry.
- Menu Principal
- Menú RPInfo
En el caso de la información del disco duro y memoria RAM tenemos dos funciones apartes, éstas son llamadas en el menú anterior.
- Menú Cámara
El programa que saca las fotos es fswebcam, para instalarlo basta con un apt-get install fswebcam. Lo usaremos tanto para sacar una foto simple como para el timelapse.
En este menú hay un pequeño cambio con respecto a los demás, antes de hacer nada, comprueba el id de usuario para saber si somos nosotros los que intentamos acceder, en caso contrario bloquea el acceso y no funcionará. Ésta opción podéis añadirla a cualquier otro menú o función que deseéis bloquear a los demás usuarios o como medida de seguridad.
Para saber cual es vuestro id basta con que ejecutéis cualquiera de las opciones de información, en consola mostrará un número.
Otro detalle a tener en cuenta es en la línea que ejecuta fswebcam (subrayada de amarillo), en el caso que ejecutéis el bot en un portátil, éste ya tendrá su propia webcam, por lo tanto deberéis comprobar los dispositivos de vídeo que tenéis mediante el comando ls /dev/video* . Elegir el dispositivo y modificar dicha línea en caso de que fuera necesario.
Para terminar con la cámara, nos falta la función timelapse y otra encargada de comprimir las fotos obtenidas y enviar el archivo .tar a nuestro móvil.
El enviar las fotos comprimidas puede no ser la mejor opción puesto que luego necesitamos una app en el móvil que las descomprima o esperar a pasar el archivo al pc. Lo he hecho así para el caso en que tenga muchas fotos, solo enviará un archivo además de ahorrar un poco de espacio.
La aplicación que uso yo para descomprimir es "Rar Zip 7Zip File Explorer", que como podéis intuir soporta varios formatos.
También se pueden enviar las fotos según se van sacando modificando la función timelapse, ¡A gusto del consumidor!.
Command Exec
Como última opción tenemos el envío de comandos de sistema, como si de una shell se tratara. Funciona de la siguiente manera: cuando el bot recibe un mensaje que empieza por /exec (podéis poner lo que querais) sabe que el texto que le sigue es un comando a ejecutar.
Es una función sencilla, en primer lugar comprueba el id, si somos nosotros, ejecuta el comando que indiquemos y nos envía un mensaje con la salida del mismo.
Con esto hemos terminado el bot, es muy mejorable, se le pueden añadir opciones, modificar las que ya tiene o utilizarlo como ejemplo para construir uno mejor.
Aquí os dejo el enlace al bot.py.
Un saludo, vasco.
No hay comentarios:
Publicar un comentario