Los timestamps fallan de forma traicionera: primero “solo” te desplazan una hora una gráfica… y cuando te quieres dar cuenta, tienes máximas diarias mal puestas, lluvia diaria partida en dos, y un panel que parece una película de terror 😅
Aquí van señales tempranas (rápidas y muy prácticas) para detectar problemas de UTC/local, cambio de hora y desfases antes de que exploten.
Este artículo forma parte del tema Datos de calidad en WikiMeteo.es, donde priorizamos operar sin autoengaños.
Accesos directos:
- Señales en el panel: sección 2
- Señales en series: sección 3
- Señales de UTC/DST: sección 4
- Qué hacer en 5 minutos: sección 6
1. Qué entendemos por “señales tempranas”
Son patrones que aparecen antes de que el error sea obvio. No prueban el fallo por sí solos, pero te dicen: “ojo, revisa timestamps YA”.
2. Señales tempranas en un panel (lo que canta a distancia)
2.1 “Último dato” llega bien… pero la cadencia se degrada
- Señal: el panel dice “último dato hace 30s”, pero la cadencia tiene muchos deltas raros (60s, 120s, 5s, 180s…)
- Por qué pasa: reconexiones, buffering, reintentos, ingest irregular
- Riesgo: diarios/estadísticos se vuelven inestables aunque “parezca vivo”
2.2 Aumentan “out-of-order” sin razón clara
- Señal: aparecen puntos fuera de orden (delta negativo) en días normales
- Por qué pasa: backfill mal gestionado, reloj saltando, cola de mensajes
- Riesgo: tus gráficas hacen dientes y tus agregados pisan datos
2.3 Duplicados “a ratos” (no solo en cambio de hora)
- Señal: timestamps repetidos de forma intermitente
- Por qué pasa: redondeo al minuto, reenvíos, logger que reintenta sin cambiar timestamp
- Riesgo: promedios/rachas se inflan o se distorsionan
2.4 El “offset sospechado” es estable
- Señal: offset cercano a +3600 o +7200 persistente
- Por qué pasa: UTC/local interpretado al revés (clásico)
- Riesgo: todo lo diario queda desplazado y “parece” meteorología rara
2.5 La “hora del máximo” se mueve día a día
- Señal: la hora del máximo diario de radiación (o un proxy) se desplaza lentamente
- Por qué pasa: drift del reloj del logger/RTC
- Riesgo: te rompe ventanas y te mete errores silenciosos en extremos
3. Señales tempranas en series temporales (sin panel también se ve)
3.1 “Dientes de sierra” artificiales
- Señal: un diente raro en una serie “suave” (presión, temperatura estable nocturna) sin explicación física
- Pista: coincide con timestamps fuera de orden o duplicados
3.2 Bloques planos sospechosos
- Señal: series con valores iguales durante demasiado tiempo (temperatura clavada, viento clavado)
- Puede ser: sensor congelado… o pipeline redondeando/repitiendo el último valor con timestamps “bonitos”
3.3 “Saltos de día” raros en diarios
- Señal: un día “pierde” lluvia y al siguiente “gana” de golpe, o máximas/mínimas raras sin apoyo
- Puede ser: corte diario mal definido (UTC vs local) o DST aplicado dos veces
3.4 Acumulados que retroceden
- Señal: acumulado de lluvia diario/mensual baja (retrocede) sin reset esperado
- Pista: out-of-order + mezcla observedTime/ingestTime + resets del sensor
4. Señales específicas de UTC, DST y desfases
4.1 Firma de cambio de hora (DST)
- Primavera: aparece un gap de ~3600s
- Otoño: aparecen duplicados durante una hora
Si guardas en UTC canónico, esto no debería romper nada: el DST vive solo en la UI.
4.2 Eventos solares fuera de sitio
- Señal: el pico de radiación “parece” a una hora absurda y además es consistente
- Muy típico: offset fijo por UTC/local
4.3 Desfase entre sensores “acoplados”
- Señal: lluvia fuerte pero humedad/temperatura/rebote de presión “llega” tarde (o antes)
- Pista: distintos pipelines o timestamps en distintas fuentes con reglas diferentes
5. Ejemplos rápidos para no confundir meteorología con timestamps
5.1 Lluvia convectiva: pico real vs error
En convectiva hay picos reales muy bestias. Antes de “borrar” un pico, mira esto:
- ¿Coincide con radar/descargas/vecinas?
- ¿Hay flags temporales (gaps/out-of-order) en esa ventana?
- ¿El acumulado sube de forma coherente o hay un salto aislado?
5.2 Viento: racha vs media
Puede parecer desfase y ser solo semántica de ventana (racha = máximo en 10 min). Si el panel temporal está OK, revisa metadatos antes de culpar al reloj.
6. Qué hacer en 5 minutos (respuesta operativa)
- Comprueba gaps/duplicados/out-of-order hoy
- Verifica si el almacenamiento es UTC canónico (si no, apúntalo como deuda técnica)
- Mira la hora del máximo diario (radiación si hay) para detectar offset/drift
- Si sospechas drift: revisa NTP/RTC y conectividad
- Si sospechas offset: revisa dónde se convierte la zona horaria (ideal: solo en UI)
7. Mini-checklist de señales (para pegar en el panel)
- Cadencia irregular aunque “último dato” esté bien
- Out-of-order > 0 sin backfill esperado
- Duplicados fuera de DST
- Offset estable ±3600/±7200
- Hora del máximo diario deriva lentamente (drift)
- Diarios con saltos raros (lluvia/temperatura) sin apoyo físico
8. Referencias y lecturas recomendadas
- Met Office
- WMO
- NOAA