--- title: Condiciones de Observación emoji: 🛰️ colorFrom: gray colorTo: green sdk: static pinned: false license: mit --- # 🛰️ Monitor de condiciones de observación — con datos reales App **PWA que analiza telemetría meteorológica real de observatorios** para decidir, de un vistazo desde el móvil, si las condiciones son aptas para observar o hay que **cerrar la cúpula**. Reconoce las columnas del CSV automáticamente, así que funciona con exportaciones de distintas fuentes. Corre entera en el navegador (Python vía Pyodide/WebAssembly): no hay backend, el análisis (pandas/numpy) se ejecuta en tu dispositivo sobre el CSV que subas. ## Datos reales Pensada para datos públicos de observatorio: - **ESO — Base de datos ambiental** (La Silla / Paranal): humedad, viento, temperatura, punto de rocío y presión, descargables desde los formularios de archivo de ESO. La Silla se actualiza casi en tiempo real. - **Observatorio del Roque de los Muchachos (La Palma)** — donde está el GTC: las estaciones meteo del TNG, ING, NOT y MAGIC publican condiciones del sitio. Solo se usan variables **públicas**. La corriente de motor o el error de seguimiento son telemetría interna de cada telescopio y no se incluyen. El día de mañana, dentro del GTC, se re-apunta a su propia telemetría. ## Cómo usar datos reales 1. Descarga un CSV de ESO (formularios de *Ambient Conditions*) o del ORM. 2. En la app, pulsa **Subir CSV**. Las columnas se reconocen solas (humedad, viento, temperatura, punto de rocío, presión), en inglés o español, y el viento se convierte a m/s si viene en km/h. 3. Incluye una **muestra** en formato tipo ESO (con una entrada de niebla) para probarla al instante sin descargar nada. ## Qué evalúa - **Humedad** por encima del límite → cerrar la cúpula. - **Viento** por encima del límite operativo (~18 m/s, referencia ESO) → cerrar o reorientar a sotavento. - **Margen sobre el punto de rocío** (temperatura − rocío): si es muy pequeño, hay riesgo de **condensación** en la óptica → cerrar. - **Tendencias:** estima en cuántas horas se cruzará cada límite si la cosa sigue así. ## Ejecutar en local (versión servidor, con FastAPI real) El proyecto también incluye el backend FastAPI clásico (fuera de esta carpeta, en la raíz del proyecto): ```bash uv sync uv run uvicorn main:app --reload --port 7860 # http://localhost:7860 uv run python test_conditions.py # valida el núcleo ``` ## Estructura de esta carpeta (versión estática desplegada) ``` index.html Frontend PWA (tema oscuro por estado) logic.py Misma lógica que main.py, adaptada sin FastAPI conditions_core.py Mapeo de columnas, límites, tendencias y triaje static/ app.js, styles.css Cliente: carga Pyodide y pinta el panel icons/ Iconos manifest.json, sw.js PWA (instalable, offline) data/ muestra_condiciones.csv Muestra en formato tipo ESO (con niebla) ``` ## Diseño Estética de **sala de control nocturna**: fondo casi negro (como la luz roja de los observatorios) y color por estado —apto (verde), precaución (ámbar), no apto (rojo)— que tiñe la cabecera como un panel, con un latido sutil solo cuando es crítico.