Una plataforma robusta para la monitorización climática urbana y la emisión proactiva de alertas de seguridad ciudadana.
SkyCast es una solución integral y fiable diseñada para la monitorización climática y la gestión de riesgos en entornos urbanos. Desarrollado en Python, este sistema robusto permite a las administraciones municipales procesar datos ambientales en tiempo real, generar alertas precisas y proporcionar información valiosa para la toma de decisiones. Su objetivo principal es mejorar la seguridad ciudadana y optimizar la gestión de recursos frente a fenómenos meteorológicos adversos.
SkyCast ofrece un conjunto de características clave para una gestión climática municipal eficiente:
- Monitorización Climática en Tiempo Real: Captura y procesamiento continuo de datos ambientales como temperatura, humedad y velocidad del viento.
- Sistema de Alertas Inteligente: Detección automática y priorizada de situaciones de riesgo crítico (ej. calor extremo, heladas, rachas de viento peligrosas, humedad extrema). La lógica de exclusión en
alertas.pygarantiza que solo se emita la alerta más relevante por categoría. - Gestión de Datos Robusta: Persistencia segura y eficiente de los registros climáticos en formato CSV, con control de duplicados y manejo de errores de permisos.
- Análisis y Estadísticas Avanzadas: Generación de informes estadísticos detallados por zona geográfica, proporcionando insights valiosos para la planificación.
- Control de Acceso Seguro: Sistema de autenticación de usuarios para garantizar la integridad y privacidad del sistema.
- Interfaz de Usuario Dual: Acceso a través de una interfaz de línea de comandos (CLI) y una moderna Interfaz de Visualización Dinámica basada en web.
El proyecto SkyCast se adhiere al principio de Responsabilidad Única, estructurando el código en módulos independientes para facilitar el mantenimiento, la escalabilidad y la comprensión.
main.py: Punto de entrada principal y orquestador del flujo de la aplicación CLI.registro.py: Módulo encargado de la captura de datos climáticos desde la entrada del usuario. Coordinador de captura y orquestación de procesos entre entrada, validación y alertas.validacion.py: Motor de reglas que asegura la calidad e integridad de los datos, validando formatos y rangos. Motor de reglas lógicas que asegura la calidad de los datos (fechas y rangos físicos como -20ºC a 60ºC).alertas.py: Módulo central que evalúa los datos climáticos contra umbrales predefinidos para generar alertas de seguridad. Su lógica de exclusión garantiza la emisión de la alerta más severa. Configurador de umbrales críticos y generación de avisos visuales inmediatos.datos_csv.py: Implementado con la claseGestorDatosClima, esta capa de abstracción gestiona la persistencia y consulta de datos en el archivo CSV, encapsulando la lógica de acceso a datos. Capa de acceso a datos (Lectura/Escritura) y gestión de persistencia física en el dataset.auth.py: Módulo de autenticación y gestión de usuarios, garantizando un control de acceso seguro al sistema.
- Interfaz de Comandos (CLI): Menú interactivo robusto con control de errores de navegación.
- Registro Validado: Sistema de entrada que impide datos incoherentes.
- Motor de Alertas Inteligente: Lógica de negocio que prioriza avisos de seguridad (Calor Extremo, Heladas, Rachas de Viento).
- Persistencia Profesional (CSV): Gestión de datos en formato plano con control de duplicados y manejo de errores de permisos.
- Consulta por Filtros: Motor de búsqueda con normalización de texto para garantizar resultados precisos.
La aplicación web de SkyCast actúa como una Interfaz de Visualización Dinámica, integrando el core lógico del backend para ofrecer dashboards interactivos. Esta capa permite una gestión visual intuitiva de la casuística climática, presentando datos y alertas de manera accesible sin depender de una tecnología de frontend fija, lo que facilita su evolución y adaptación futura.
SkyCast se construye sobre una base sólida de excelencia técnica, seguridad y calidad de software:
- Hashing SHA-256 en
auth.py: Las credenciales de usuario son protegidas mediante el algoritmo de hashing SHA-256, asegurando que las contraseñas nunca se almacenen en texto plano. Esto garantiza la integridad y confidencialidad de la información sensible. - Módulo
auth.py: Proporciona una gestión centralizada de registros e inicios de sesión, incluyendo un prototipo de integración con OAuth y Google (OAuth) para futuras expansiones. - Privacidad en Consola: El uso de
getpassasegura que las credenciales sean invisibles durante la entrada en la interfaz de línea de comandos. - Acceso Dual: Capacidad de login tradicional y prototipo de integración con Google (OAuth).
- Tests Unitarios con
pytest: La suite de pruebas automatizadas en la carpeta/testsgarantiza la fiabilidad del sistema. Esto incluye la validación de la lógica de exclusión de alertas enalertas.py, asegurando que los cambios no introduzcan regresiones y que los umbrales críticos funcionen como se espera. - Integración Continua: Las pruebas automatizadas son un pilar para mantener la estabilidad del sistema a medida que evoluciona.
- Integración de
pandas: La librería líder en ciencia de datos se utiliza para el procesamiento y análisis eficiente del historial climático. - Implementación OOP: Migración de funciones aisladas a una arquitectura basada en clases mediante el módulo
datos_csv.py. La claseGestorDatosClimacentraliza el manejo del dataset, mejorando el encapsulamiento y facilitando el mantenimiento del código. Genera resúmenes estadísticos que incluyen:- 🌡️ Medias de temperatura y humedad.
- 💨 Detección de rachas máximas de viento.
- 📊 Conteo de registros para asegurar la representatividad de la muestra.
- Robustez de Procesamiento: Implementación de filtros de limpieza de datos y manejo avanzado de excepciones, asegurando que la aplicación sea estable incluso ante archivos con formatos inconsistentes.
- Persistencia Inteligente: Configuración de archivos
.gitattributespara gestionar estrategias de unión (merge) personalizadas, garantizando que los archivos CSV críticos no se corrompan durante la integración de ramas. - Uso de
.gitignore: Se excluyen los archivos*.csvmediante la regla*.csvpara evitar conflictos de fusión (merge conflicts) y asegurar que cada desarrollador trabaje con sus propios datos de prueba. - Limpieza de Caché: Se realizó una limpieza profunda de la caché (
git rm --cached) para garantizar que el archivo de datos no se suba al repositorio remoto una vez activada la política de ignorado.
La aplicación web de SkyCast ofrece una experiencia de usuario intuitiva para la visualización de datos climáticos y la gestión de alertas. A través de dashboards interactivos, los usuarios pueden monitorear las condiciones ambientales, revisar el historial de alertas y acceder a estadísticas clave de manera gráfica y comprensible.
🚧 Nota: La interfaz de visualización se encuentra actualmente en fase de despliegue y ajustes de UI.
Prototipo de la visualización interactiva de datos climáticos y alertas.
Sigue estos pasos para poner en marcha SkyCast en tu entorno local:
-
Clonar el repositorio:
git clone https://github.com/gconforto-debug/proyecto-clima-ayuntamiento.git cd SkyCast -
Configurar el entorno virtual:
python -m venv .venv
-
Activar el entorno virtual:
- Windows:
.venv\Scripts\activate
- Linux/macOS:
source .venv/bin/activate
- Windows:
-
Instalar dependencias necesarias:
pip install -r requirements.txt
-
Ejecutar la aplicación CLI:
python main.py
-
Ejecutar la Aplicación Web:
streamlit run app_web.py
-
(Opcional) Ejecutar tests unitarios:
pytest
Este proyecto ha sido desarrollado con la dedicación y el talento de:
- Gema Villanueva Breña
- Gianmario Conforto
- Isabela Téllez
- Yohanna S. Pérez
- Juan de la Fuente Larrocca
Este repositorio es la Fase 1 del ecosistema climático. Representa el prototipo inicial.
| Fase | Proyecto | Estado |
|---|---|---|
| 🟢 | SkyCast V1 ← (estás aquí) | Streamlit + CSV + SHA-256 |
| 🔵 | ClimApp → | Flask MVC + AEMET real + 66 tests |
Lección aprendida: Validación modular, SHA-256 sin salt, persistencia CSV. El germen de todo lo que vino después.
