CoolFace
Apppublic

JoseAndresLopez/monitor-condiciones

sourceHugging Facemitupdated 3mo agoView on Hugging Face
0likes
App README

🛰️ 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. 1.Descarga un CSV de ESO (formularios de Ambient Conditions) o del ORM.
  2. 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. 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.