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:
- Raspberry Pi 1 Modelo B (512 MB RAM): El cerebro del sistema, encargado de ejecutar el software y controlar la cámara.
- Cámara Web USB: Dispositivo de captura de imágenes.
- Tarjeta MicroSD: Para el sistema operativo y el almacenamiento de archivos temporales.
- Fuente de Alimentación (5V, 2A): Para garantizar un funcionamiento estable.
- Cable de Red Ethernet: Para una conexión a internet estable.
- Disipadores de calor: Para transferir el calor fuera de la Raspberry Pi.
- Ventilador 5V: Para ayudar a los disipadores de calor.

Software y Servicios:
- Raspberry Pi OS Lite: Sistema operativo ligero basado en Linux, sin entorno de escritorio para un consumo mínimo de recursos.
- fswebcam: Herramienta de línea de comandos para capturar imágenes desde la cámara web.
- curl: Herramienta para transferir datos y realizar peticiones a APIs, en este caso, la API de Telegram.
- Cron: El planificador de tareas de Linux, utilizado para automatizar la ejecución del script.
- Telegram: Plataforma de mensajería para recibir las notificaciones con las imágenes.
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:
- Revisar la Conexión a Internet:
ping google.com
- Verificar que la tarea de Cron está activa:
crontab -l
- Revisar los registros del sistema:
grep CRON /var/log/syslog
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.

