> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getcoremetrics.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Telemetría

> Cómo recopila datos de frecuencia cardíaca de sensores ANT+ ZoneMetrics, los almacena en el dispositivo y los envía a la nube?

ZoneMetrics utiliza una arquitectura de dos capas para capturar datos de frecuencia cardíaca. Una **Aplicación de sala** de sala se ejecuta en un dispositivo local en tu instalación y lee directamente de los sensores de frecuencia cardíaca ANT+. Almacena temporalmente las lecturas localmente y las sincroniza con la API en la nube de ZoneMetrics en lotes regulares tras finalizar la sesión.

## Flujo de datos

<Steps>
  <Step title="Lectura de sensores">
    La Aplicación de sala toma muestras de cada sensor ANT+ aproximadamente cada **2 segundos** (0.5 Hz). Cada lectura produce un punto de telemetría asociado con un asistente y una sesión específicos.
  </Step>

  <Step title="Almacenamiento local">
    Las lecturas se almacenan en una base de datos local en el ordenador de sala a medida que llegan. Este almacenamiento temporal asegura que no se pierdan datos si la conexión a internet no está disponible temporalmente.
  </Step>

  <Step title="Sincronización por lotes a la nube">
    Al finalizar la sesión, la Aplicación de sala envía un lote de lecturas almacenadas a la API en la nube. La API inserta todos los puntos válidos y devuelve el número de registros almacenados.
  </Step>

  <Step title="Consulta del panel">
    La aplicación de sala conssulta los datos de frecuencias cardíacas leídos, loes muestra y verifica logros recién obtenidos:
  </Step>
</Steps>

## Formato del punto de telemetría

Cada punto de telemetría representa una sola lectura de frecuencia cardíaca para un asistente en un momento específico.

| Característica      | Descripción                                                              |
| ------------------- | ------------------------------------------------------------------------ |
| Sesión              | La sesión a la que pertenece esta lectura.                               |
| Asistente           | El asistente cuyo sensor produjo la lectura.                             |
| Frecuencia cardíaca | Frecuencia cardíaca en bpm. Debe estar entre **20** y **300**.           |
| Marca de tiempo     | Marca de tiempo establecida por el servidor cuando se persiste el punto. |

Las lecturas fuera del rango de 20–300 bpm son rechazadas por el sistema de saneamiento y no se almacenan. El endpoint de lotes registra los puntos descartados para diagnóstico pero continúa procesando las lecturas válidas restantes en el mismo lote.

## Límites de lotes

El endpoint de lotes impone un máximo de **1,500 puntos por solicitud**. Este límite se deriva del techo de hardware de tu instalación:

| Parámetro                     | Valor                |
| ----------------------------- | -------------------- |
| Máximo de asistentes por sala | 32                   |
| Tasa de muestreo              | 1 punto / 2 s        |
| Ventana de sincronización     | 30 s                 |
| Tamaño normal del lote        | 32 × 15 = 480 puntos |
| Margen de seguridad (3×)      | 1,440 → **1,500**    |

El margen de 3× acomoda interrupciones breves de red donde se acumulan múltiples ventanas de 30 segundos antes de una sincronización exitosa. Las solicitudes que exceden los 1,500 puntos son rechazadas con un error `400 BATCH_TOO_LARGE`.

<Warning>
  Exceder consistentemente el límite de lotes se trata como una anomalía. La plataforma
  marca el dispositivo (ordenador) de sala para revisión. Un dispositivo de sala legítimo nunca
  debería exceder este límite excepto después de una interrupción prolongada de la red.
</Warning>

## Retención de datos

Los puntos de telemetría sin procesar mayores a **90 días** se purgan automáticamente. Los resúmenes de sesión no se ven afectados por esta purga: las estadísticas agregadas por asistente (frecuencia cardíaca promedio, distribución de zonas, puntos de esfuerzo, etc.) se almacenan por separado y se retienen indefinidamente.
