Mejora a Sistema de Monitoreo Automatizado con Raspberry Pi y Bot en Telegram

Un proyecto de IoT para la supervisión remota de procesos.

Fecha: 18 de junio de 2025 | Autor: Juan Emilio Castro Torres

1. Resumen del Proyecto

En este documento se detalla la mejora a un sistema de monitoreo automatizado que se tenía previamente, pero con la implementación de un sistema operativo más ligero y mejora en la recepción de las fotografías. El sistema utiliza una Raspberry Pi 1 Modelo B equipada con una cámara web para capturar imágenes de un proceso de fotofermentación cada cierto tiempo, que posteriormente se envían en tiempo real a un grupo de Telegram mediante un bot, permitiendo que todas las personas involucradas en el proyecto tengan acceso a las fotografías de manera remota y eficiente.

2. Objetivo Principal

El objetivo es desarrollar un sistema autónomo que capture evidencia fotográfica de un proceso y la distribuya instantáneamente a un canal de comunicación centralizado (un grupo de Telegram) para su supervisión y registro, sin requerir intervención manual una vez puesto en marcha.

3. Componentes Utilizados

Hardware:

Imagen de la Raspberry Pi con sus componentes

Software y Servicios:

4. Guía de Implementación Paso a Paso

La selección del sistema operativo es importante debido a que será un sistema que se dejará encendido durante mucho tiempo, se busca que consuma la menor cantidad de recursos y debido a que la Raspberry Pi es antigua, tiene capacidad de procesamiento menor, por lo que se instala el sistema operativo de Raspberry Pi OS Lite en la tarjeta MicroSD, este sistema operativo es uno que no cuenta con escritorio, es decir, usa solo terminal de comandos para controlarla, solo se usa teclado. Después de la instalación, conectar la fuente de alimentación y la red ethernet, uno de los comandos básicos en sistemas linux es el de actualizar el sistema.

sudo apt update
sudo apt upgrade -y

Se instalan las herramientas para la toma de fotografías.

sudo apt install fswebcam curl -y

Creación del Bot de Telegram

Probablemente la parte más sencilla del proyecto, en Telegram se buscó el bot @BotFather al cual se le envió un mensaje de /newbot y siguiendo los pasos que pide, al final de los pasos el bot te crea tu nuevo bot y te da un token que es muy importante y confidencial para controlar el nuevo bot. Se crea el grupo de telegram en donde estarán los miembros del proyecto, se añade al nuevo bot y a otro bot que se llama @getidsbot el cual será de utilidad para obtener el ID del grupo para que el bot que creamos sepa a donde enviar las fotos.

Desarrollo del Script de Automatización

Se crea un script en Bash que encapsula toda la lógica del proceso. Este script es el corazón del sistema. Ubicación del Script: /home/gibios/tomar_foto.sh

Código Fuente Final (tomar_foto.sh):

#!/bin/bash

# ==============================================================================
#      SCRIPT DE CAPTURA Y ENVÍO DE FOTOS A TELEGRAM
# ==============================================================================

# --- CONFIGURACIÓN DE TELEGRAM ---
# Token del bot proporcionado por @BotFather (¡MANTENER CONFIDENCIAL!)
TOKEN="7776899165:AAGHO8iKJUAzgzTRq5GMh2D8wzA8AUjYRYA"

# ID del grupo de Telegram al que se enviarán las fotos.
CHAT_ID="-4933492748"

# --- CONFIGURACIÓN DE LA FOTO ---
# Directorio donde se guardarán las fotos temporalmente.
DIRECTORIO="/home/gibios/fotos_proceso"

# Genera un nombre de archivo único usando la fecha y hora actual.
NOMBRE_ARCHIVO=$(date +"%Y-%m-%d_%H-%M-%S").jpg
RUTA_COMPLETA="$DIRECTORIO/$NOMBRE_ARCHIVO"

# El mensaje (caption) que acompañará a la foto.
MENSAJE="Foto tomada el: $(date +"%d/%m/%Y a las %H:%M:%S")"

# --- EJECUCIÓN DEL PROCESO ---

# Paso 0: Asegurarse de que el directorio de fotos exista.
mkdir -p "$DIRECTORIO"

# Paso 1: Capturar la imagen con fswebcam.
echo "Tomando foto..."
fswebcam -r 1280x720 --skip 2 --no-banner "$RUTA_COMPLETA"

# Paso 2: Enviar la foto a Telegram usando la API y la herramienta curl.
echo "Enviando foto a Telegram..."
curl -s -X POST "https://api.telegram.org/bot$TOKEN/sendPhoto" \
     -F "chat_id=$CHAT_ID" \
     -F "photo=@$RUTA_COMPLETA" \
     -F "caption=$MENSAJE"

# Paso 3: Limpieza. Se elimina la foto del almacenamiento local.
rm "$RUTA_COMPLETA"

echo "Proceso completado."

Permisos y Ejecución Manual:

Es indispensable dar permisos de ejecución al script para que el sistema pueda utilizarlo.

chmod +x /home/gibios/tomar_foto.sh

Una vez que el script tiene permisos, es muy útil probarlo manualmente para verificar que todo funciona correctamente antes de automatizarlo.

/home/gibios/tomar_foto.sh

Automatización con Cron

Para que el script se ejecute de forma autónoma, se utiliza el planificador cron. Se abre el editor de tareas de cron para el usuario gibios:

crontab -e

Se añade la siguiente línea al final del archivo para programar la ejecución: "en el minuto 0 de cada hora". La pausa de 60 segundos (sleep 60) es una medida de seguridad crucial para asegurar que la conexión de red esté establecida antes de ejecutar el script, especialmente después de un reinicio.

0 * * * * sleep 60 && /home/gibios/tomar_foto.sh >/dev/null 2>&1

5. Verificación y Solución de Problemas

Si el sistema deja de enviar fotos, los siguientes comandos son esenciales para diagnosticar el problema:

6. Conclusión

La mejora al sistema cumple exitosamente con el objetivo de ser una solución de monitoreo visual, autónoma y de bajo costo. La combinación de hardware accesible (Raspberry Pi), software de código abierto (Linux, fswebcam) y servicios gratuitos (Telegram) demuestra la viabilidad de crear herramientas IoT (Internet de las Cosas) potentes y personalizadas para una gran variedad de aplicaciones prácticas.

Captura de pantalla del grupo de Telegram recibiendo una foto
Foto del sistema Raspberry Pi montado