Un panel bueno para timestamps no tiene que ser enorme. Tiene que ser cruelmente claro: en 30 segundos tiene que decirte si tu estación está “en hora” o si está empezando a mentir con una sonrisa 🙂
Vamos a montar un panel simple (pero potente) para detectar: UTC vs local, cambios de hora (DST), deriva del reloj (drift), gaps, duplicados y datos fuera de orden. Y, lo más importante: aprender a leerlo sin confundir meteorología real con problemas de tiempo.
Este artículo forma parte del tema Datos de calidad en WikiMeteo.es, donde reunimos guías prácticas para operar sin autoengaños.
Accesos directos:
- Panel mínimo (4 tarjetas): sección 2
- Cómo leerlo (señales): sección 3
- Flags automáticos: sección 4
- Ejemplos reales (spikes, drift, DST): sección 5
- Trampas comunes: sección 6
1. Qué problema resolvemos con un panel
En series largas es fácil “no ver” el fallo hasta que te revienta una estadística (máximas diarias, lluvia diaria, rachas). Un panel sirve para:
- Detectar fallos temprano (antes de que duelan)
- Distinguir si es temporal (timestamp/pipeline) o instrumental (sensor/instalación)
- Dejar rastro: flags + historial (no repetir el mismo susto cada mes)
2. Panel mínimo recomendado (4 tarjetas + 1 mini-gráfica)
Con esto ya vas sobrado para el 80% de casos:
2.1 Tarjeta A: “Salud temporal” (semáforo)
- Estado: OK / Aviso / Error
- Último dato recibido: edad del último punto (min)
- Cadencia esperada: 60s (o la tuya) y % de puntos a tiempo
2.2 Tarjeta B: “Continuidad” (gaps/duplicados/out-of-order)
- Gaps hoy: cantidad y el mayor gap (min)
- Duplicados hoy: cantidad
- Out-of-order hoy: cantidad
2.3 Tarjeta C: “Zona horaria / offset sospechado”
- Modo de almacenamiento: UTC (recomendado) o local
- Offset detectado (si aplica): +3600, +7200…
- Confianza: baja/media/alta (según evidencia)
2.4 Tarjeta D: “Deriva (drift) sospechada”
- Drift estimado: segundos/día
- Tendencia: estable / empeorando
- Última calibración reloj (si se registra)
2.5 Mini-gráfica: “Hora del máximo diario” (radiación o proxy)
Gráfica por días: en el eje Y la hora del máximo (radiación ideal; si no hay, usar temperatura como proxy con cautela). Esto es un detector brutal de:
- Offset fijo (UTC/local): línea casi horizontal pero desplazada
- Drift: línea inclinada (se va moviendo día a día)
- Cambio brusco: salto claro el día X
3. Cómo leer el panel (patrones típicos)
3.1 Caso: UTC vs local (offset fijo)
Qué verás: tarjeta C con offset estable (p.ej. +3600 o +7200) y mini-gráfica del máximo diario desplazada siempre igual.
Qué significa: alguien guardó local pero el sistema interpreta UTC (o al revés).
3.2 Caso: drift del logger
Qué verás: tarjeta D con drift distinto de 0 (p.ej. +10 s/día) y mini-gráfica del máximo diario moviéndose poco a poco.
Qué significa: reloj interno inestable o sincronización NTP fallando.
3.3 Caso: DST mal tratado
Qué verás: picos de duplicados (otoño) o gap de 60 min (primavera) en tarjeta B. A veces coincide con un salto en la mini-gráfica.
Qué significa: almacenamiento local o conversión aplicada dos veces.
3.4 Caso: out-of-order por red o backfill
Qué verás: out-of-order > 0 y, a veces, pequeños “dientes” en gráficas de variables si el front no reordena por observedTime.
Qué significa: datos llegan tarde y se insertan; hay que separar ingestTime y observedTime.
4. Checks automáticos con flags (lo que el panel debe calcular)
Estos checks se ejecutan por ventana (últimas 24h, 7d) y alimentan el panel con flags.
4.1 Checks de continuidad
- gap_check: si delta > 2×cadencia → gap
- duplicate_check: timestamps repetidos
- out_of_order_check: delta negativo
4.2 Checks de cadencia
- cadence_ok: % de deltas dentro de tolerancia (p.ej. 60s±2s)
- burst_check: muchos puntos en el mismo segundo (reintento/duplicado)
4.3 Checks de zona/offset
- offset_suspect: estimación de offset usando “variable reloj” (radiación) o eventos comparables
- dst_signature: patrón de duplicado/gap de 3600s en fechas de cambio
4.4 Checks de drift
- drift_suspect: tendencia en la hora del máximo diario (o correlación temporal con referencia)
- ntp_health (si existe): últimos sync OK/FAIL
4.5 Formato recomendado de flags
- flag: qc_time_gap, qc_time_duplicate, qc_time_out_of_order, qc_time_offset_suspected, qc_time_drift_suspected
- severidad: INFO/WARN/ERROR
- evidencia: gapSeconds, offsetSeconds, driftSecondsPerDay
5. Ejemplos reales (sensores) y cómo se ven en el panel
5.1 Pluviómetro convectivo: pico real vs spike por error
Riesgo: un spike por reset puede parecer “tormentón”. El panel de timestamps ayuda a no culpar al tiempo: si continuidad está OK, mira el sensor; si hay out-of-order o gaps rellenados con 0, primero arregla el pipeline.
Señal de spike típico: salto aislado sin soporte (radar/vecinas) y a veces justo tras reinicio.
5.2 Anemómetro: rachas “desfasadas” por semántica de ventana
Muchas rachas son máximos en ventana (p.ej. 10 min) y la media también es ventana. Si el sistema etiqueta ambos con el mismo timestamp pero con distinta convención (inicio/fin/centro), verás desfase aparente. El panel debe mostrar la definición de period (metadato) para no confundirlo con error temporal.
5.3 Radiación: detector de oro para offset/drift
Si la mini-gráfica de hora del máximo se mueve lenta → drift. Si está fija pero desplazada → UTC/local. Si pega un salto un día → cambio de config o DST mal aplicado.
6. Trampas comunes (y cómo no caer)
- Rellenar gaps con 0: el panel se ve “bonito” pero la estadística se rompe
- Guardar en local: DST te mete duplicados/gaps y te arruina diarios
- Confundir meteorología con fallo temporal: inversiones, brisas o sombras no son timestamps
- No registrar cambios: sin log de mantenimiento/firmware, no puedes explicar un changepoint
7. Checklist práctico para montar el panel hoy
- Define cadencia nominal (p.ej. 60s) y tolerancia
- Calcula deltas y métricas: gapRate, duplicateRate, outOfOrderRate
- Elige variable reloj (radiación preferida) y calcula maxHour diario
- Implementa flags con severidad + evidencia
- Muestra 4 tarjetas + mini-gráfica (máximo diario)
- Guarda histórico semanal (para ver drift y tendencias)
8. Referencias y lecturas recomendadas
- Met Office
- WMO
- NOAA