FitMesh Sync
← Todos los artículos
Artículo principal

Guía pilar

Varios smartwatches juntos sin datos duplicados: guía de deduplicación multi-wearable

Cada wearable cree ser la única fuente de verdad, y tiene razón desde su propia perspectiva. El problema surge cuando cinco fuentes de verdad escriben todas en Health Connect y ninguna sabe que las demás existen.

CategoríaGuía
Fecha10 de junio de 2026
Tiempo de lectura16 min de lectura

En resumen

  • Health Connect no deduplica: es una base de datos neutral por fuente y cada app escribe de forma independiente. La lógica de deduplicación debe estar en la app que agrega los datos.
  • Los tres problemas típicos: pasos duplicados por registros acumulativos superpuestos, sesiones de sueño duplicadas, y frecuencia cardíaca media contaminada por contextos distintos.
  • La estrategia correcta combina tres técnicas: winner-takes-all por ventana temporal (frecuencia cardíaca), slot-merge de 15 minutos (pasos) y agrupación con prioridad de fuente (sueño).
  • Dos cosas requieren configuración manual: qué dispositivo usas de noche y desactivar Google Fit como fuente de escritura si todavía está activo.
  • FitMesh Sync aplica esta deduplicación de forma automática y siempre separa la frecuencia cardíaca en reposo de la frecuencia cardíaca durante el entrenamiento.

Si llevas más de un wearable, tu contador de pasos casi con toda seguridad está inflado. No es un error: es el comportamiento esperado de un ecosistema diseñado para dispositivos únicos, usado por alguien que ha entendido que distintas herramientas hacen mejor cosas distintas. Un Galaxy Watch para el día a día, un anillo inteligente para el sueño, un Garmin para las carreras largas, un Suunto para las salidas en barco o en montaña: cada dispositivo destaca en su contexto. Pero el panel necesita saber que los 8.000 pasos de la mañana no deben sumarse a los 8.000 pasos que Garmin registró durante la carrera de la tarde por las mismas calles.

Por qué se duplican los datos: la raíz técnica del problema

Health Connect es una base de datos local en Android. Cualquier app con los permisos adecuados puede escribir registros de cualquier tipo: pasos, frecuencia cardíaca, sesiones de sueño, entrenamientos. Health Connect no sabe si dos registros representan la misma cosa medida dos veces: no tiene un campo de «fuente principal» y no deduplica de forma automática. Es una decisión de diseño deliberada, no una limitación técnica: el sistema es neutral respecto a las fuentes para no favorecer a ningún fabricante.

El problema concreto: cuando llevas a la vez un Galaxy Watch y un Garmin durante una carrera de 10 km, ambos escriben en Health Connect. Galaxy Watch escribe sus 9.847 pasos, Garmin escribe sus 10.124 pasos (los números difieren porque las calibraciones del sensor son distintas). Una app que lee Health Connect sin lógica de deduplicación los suma: resultado, 19.971 pasos para una carrera de 10 km. Es el doble. Y con la frecuencia cardíaca es peor: las medias quedan contaminadas por mediciones tomadas en contextos físicos distintos.

Tres patrones de duplicación que aparecen con más frecuencia

  1. Registros acumulativos sumados: para los pasos, algunas apps escriben registros acumulativos («total de pasos del día hasta ahora») en lugar de registros intradiarios. Si tanto Galaxy Watch como Garmin Connect usan registros acumulativos, el total al final del día es la suma de dos totales, no un total deduplicado.
  2. Sesiones de sueño superpuestas: Galaxy Ring u Oura escriben una sesión de sueño de 22:30 a 06:45. Galaxy Watch escribe de 22:35 a 06:40 (la misma noche, ventanas ligeramente distintas). Un agregador que no agrupa temporalmente las sesiones muestra dos noches de sueño, duplicando las horas totales y distorsionando las medias de puntuación de sueño.
  3. Frecuencia cardíaca media diaria de fuentes mixtas: tu banda cardíaca Polar H10 escribe 147 ppm como media del entrenamiento. El Galaxy Watch escribió 72 ppm como media en reposo de la tarde. Sin etiquetar las ventanas temporales, la media diaria se convierte en un número sin sentido físico.

El escenario que describo: cuatro wearables, cuatro roles

Para ser concretos, trabajo con este escenario específico: smartwatch de uso diario (Galaxy Watch 7) que registra todo en segundo plano, anillo inteligente (Galaxy Ring u Oura Ring) optimizado para el seguimiento del sueño con sensores de mayor calidad que los smartwatches, reloj GPS para correr (Garmin Forerunner) para las sesiones de running con GPS preciso y análisis avanzado del VO2max, y reloj para exteriores y vela (Suunto Race o Suunto Ocean) para salidas en barco y senderismo donde importan el registro GPS y el altímetro barométrico. Cuatro dispositivos, cuatro contextos de uso, cuatro apps que escriben en Health Connect.

MétricaFuente preferidaMotivoFuentes a ignorar
Sueño (duración, fases, puntuación)Anillo inteligente (Oura / Galaxy Ring)Sensores PPG más cercanos al dedo, menos interferencia por movimientos nocturnosGalaxy Watch, Garmin (misma noche)
Pasos diarios (fuera del entrenamiento)Galaxy Watch (cuando se lleva puesto)Siempre en la muñeca, cubre el día completoGarmin, Suunto (no se llevan todo el día)
Pasos y distancia durante la carreraGarmin ForerunnerGPS preciso, calibración de cadencia específica para runningGalaxy Watch (menos preciso en distancias largas)
Frecuencia cardíaca durante el entrenamientoFuente específica del entrenamiento (Garmin para carrera, Suunto para exteriores)Sensores ópticos del dispositivo diseñado para ese contextoGalaxy Watch (activo en segundo plano durante la misma franja horaria)
VFC (variabilidad de la frecuencia cardíaca)Anillo inteligente (medición nocturna)Medida en reposo profundo, el contexto más fiable para la VFCGalaxy Watch (medición diurna menos estandarizada)
Registro GPS y altimetría (exteriores/vela)SuuntoAltímetro barométrico, GPS marino, registro de rutas de larga duraciónGalaxy Watch, Garmin (contexto no específico para exteriores)
Qué wearable gana en cada métrica (winner-takes-all por contexto)

Cómo funciona la deduplicación: tres estrategias concretas

1. Winner-takes-all por fuente y ventana temporal

Para la frecuencia cardíaca intradiaria y los datos de entrenamiento, el método más fiable es definir una prioridad de fuente para cada ventana temporal. Si Garmin escribió datos de frecuencia cardíaca entre las 17:30 y las 18:45 (duración de la carrera), cualquier panel serio usa esos datos e ignora los escritos por Galaxy Watch en la misma ventana. Galaxy Watch vuelve a ser «ganador» desde las 18:46 en adelante, cuando Garmin ya no escribe registros activos.

En la práctica, esto se implementa leyendo los registros de tipo ExerciseSession en Health Connect: cada sesión de entrenamiento tiene un startTime y un endTime. La lógica de deduplicación usa estas ventanas para decidir qué fuente tiene prioridad para las métricas dentro de esa ventana temporal.

2. Fusión a nivel de campo para las métricas diarias agregadas

Para el total de pasos diarios, winner-takes-all no es la solución adecuada: Galaxy Watch registra pasos de 07:00 a 17:29, Garmin registra pasos de 17:30 a 18:45. Sumarlos es correcto, no es una duplicación. El problema surge cuando ambos han registrado pasos en la misma ventana temporal.

La fusión a nivel de campo funciona así: divide el día en franjas de 15 minutos. Para cada franja, conserva solo el registro con el recuento más alto entre todas las fuentes (enfoque conservador: asume que el valor más alto es el más preciso). Suma los máximos por franja y obtendrás un total diario deduplicado. Este enfoque funciona porque dos dispositivos que registran los mismos pasos producen valores similares (el más alto es una estimación de la realidad), mientras que dos dispositivos en contextos distintos producen valores que sí deben sumarse.

3. Agrupación temporal para las sesiones de sueño

Con el sueño, el problema es diferente: las sesiones de Oura Ring y Galaxy Watch para la misma noche se superponen casi por completo, pero ninguna está equivocada. Simplemente miden lo mismo con sensores distintos. La estrategia es la agrupación: si dos sesiones de sueño se superponen en más del 80% de su duración, se consideran la misma noche. Entonces se aplica la prioridad de fuente: el anillo inteligente gana porque los sensores ópticos en el dedo son estadísticamente más precisos para las fases del sueño que los sensores de muñeca.

Qué debes configurar tú: los tres ajustes críticos

No todo puede automatizarse. Hay tres configuraciones que requieren tu intervención porque dependen de hábitos personales que ningún algoritmo puede inferir.

  1. Definir qué dispositivo es tu fuente principal para el sueño. Si tienes tanto un Galaxy Watch como un anillo inteligente, debes indicarlo de forma explícita. FitMesh Sync te lo pregunta durante la configuración inicial («¿Qué dispositivo llevas de noche?»). Si no lo especificas, usa Galaxy Watch como alternativa por ser el más habitual, pero es una elección arbitraria.
  2. Desactivar Google Fit como fuente de escritura si todavía está activo. Ve a Health Connect > Gestión de permisos > Google Fit y verifica que solo tenga permiso de lectura, no de escritura. Google Fit desactivado que sigue escribiendo en Health Connect es la causa principal de pasos triplicados en escenarios multi-wearable.
  3. Especificar los períodos de actividad para dispositivos concretos. Si solo llevas el Garmin durante las carreras (nunca en reposo), el sistema puede ignorar sus datos de frecuencia cardíaca fuera de las ventanas de entrenamiento. Sin esta información, la frecuencia cardíaca en reposo medida por Garmin durante una actividad lenta puede contaminar la media de reposo.

El caso Suunto: datos que no pasan por Health Connect

Suunto es la excepción en este escenario. A diferencia de Garmin (que escribe en Health Connect de forma nativa desde Garmin Connect para Android), la app de Suunto en Android no tiene integración nativa con Health Connect para todos los tipos de datos. Los registros GPS y los datos de entrenamiento de Suunto son accesibles a través de la API Suunto Sport Engine, no de Health Connect.

Esto significa que para integrar Suunto en un panel multi-fuente se necesita un conector independiente que lea de la API Suunto Sport Engine con autenticación OAuth. FitMesh Sync admite esta integración de forma separada: ve a ajustes, sección Dispositivos, y añade Suunto como fuente OAuth. Una vez conectada, los datos de Suunto se unen al flujo de Health Connect con la misma lógica de deduplicación.

Frecuencia cardíaca media «contaminada»: un ejemplo real

Este es el problema que me parece menos evidente pero más perjudicial para quienes usan los datos para controlar su bienestar a lo largo del tiempo. Escenario: haces una carrera de 45 minutos con una banda Polar H10 conectada a Garmin (datos fiables de entrenamiento, media de 148 ppm). Mientras tanto, Galaxy Watch registra tu frecuencia cardíaca cada 10 minutos en segundo plano, viendo valores entre 145 y 155 ppm (correcto, estás corriendo). Después de la carrera, te sientas durante dos horas con una frecuencia cardíaca de 62-68 ppm. Galaxy Watch sigue registrando.

Un panel que calcula la «frecuencia cardíaca media diaria» sin distinguir fuentes toma todos estos datos, los suma y divide. El resultado es un número que no representa ni la frecuencia en reposo ni la frecuencia durante el entrenamiento: es la media de cosas que no deberían promediarse juntas. Por eso FitMesh Sync muestra por separado la frecuencia cardíaca en reposo (calculada excluyendo las ventanas de entrenamiento) y la frecuencia cardíaca de entrenamiento (calculada por tipo de actividad), en lugar de mostrar una única media diaria.

Qué hace FitMesh Sync de forma automática

  • Detección automática de sesiones de entrenamiento: lee los registros ExerciseSession de Health Connect y construye el mapa de ventanas activas para cada fuente.
  • Slot-merge de pasos a 15 minutos: toma el máximo por franja en todas las fuentes, eliminando la superposición sin perder los datos aditivos (Galaxy Watch por la mañana + Garmin en la carrera de la tarde).
  • Agrupación de sesiones de sueño: agrupa sesiones superpuestas en más del 80% y aplica la prioridad anillo > smartwatch para las fases del sueño.
  • Separación de frecuencia cardíaca en reposo vs. entrenamiento: las ventanas de entrenamiento se excluyen del cálculo de la frecuencia cardíaca en reposo.
  • Deduplicación de registros duplicados de Samsung: filtra los registros con el mismo timestamp y source_package repetido (el error conocido de doble escritura de Samsung).

Límites honestos: qué no se puede automatizar todavía

No quiero sobreestimar lo que un panel puede hacer por sí solo. Hay escenarios que todavía requieren intervención manual o que producen resultados aproximados:

  • Entrenamientos de natación con Suunto y Galaxy Watch superpuestos: Galaxy Watch reconoce la natación como ExerciseSession (tipo SWIMMING), Suunto registra su log a través de la API Sport Engine. Si los timestamps se superponen parcialmente (por ejemplo, cambios de calle entre largos), la fusión es conservadora pero no perfecta.
  • VO2max de fuentes distintas: Garmin calcula su VO2max con un algoritmo propietario (FirstBeat), Galaxy Watch usa un método diferente. Las estimaciones no son comparables: FitMesh Sync actualmente muestra las dos métricas por separado, sin fusionarlas.
  • VFC de banda pectoral durante el día vs. anillo por la noche: si usas una banda Polar H10 para la VFC matutina y el anillo para la VFC nocturna, los valores son correctos en sus contextos pero no son directamente comparables. Este es un límite de la biometría, no del software: la VFC varía según la hora del día y la postura corporal.

En resumen

  • Health Connect no deduplica: es una base de datos neutral por fuente y cada app escribe de forma independiente. La lógica de deduplicación debe estar en la app que agrega los datos.
  • Los tres problemas principales en escenarios multi-wearable son: pasos duplicados por registros acumulativos superpuestos, sesiones de sueño duplicadas de dispositivos que miden la misma noche, y frecuencia cardíaca media contaminada por mediciones en contextos físicos distintos.
  • La estrategia correcta combina tres técnicas complementarias: winner-takes-all por ventana temporal (frecuencia cardíaca intradiaria), slot-merge de 15 minutos (pasos) y agrupación temporal con prioridad de fuente (sueño).
  • Dos cosas requieren configuración manual: qué dispositivo usas de noche y desactivar Google Fit como fuente de escritura si todavía está activo.
  • Suunto no pasa por Health Connect: se necesita un conector OAuth independiente. Los datos se unifican después con la misma lógica de deduplicación.
  • La frecuencia cardíaca media diaria sin distinción de contexto es un número sin sentido físico: separa siempre la frecuencia cardíaca en reposo de la frecuencia cardíaca durante el entrenamiento.

Preguntas frecuentes

¿Puedo usar Galaxy Watch y Garmin juntos sin datos duplicados?+

Sí, pero requiere un agregador que gestione la deduplicación. Galaxy Watch y Garmin escriben ambos en Health Connect, así que si abres Health Connect verás registros de los dos para las mismas métricas. Una app como FitMesh Sync usa la lógica winner-takes-all para las ventanas de entrenamiento (Garmin gana durante la carrera) y el slot-merge de 15 minutos para los pasos diarios (ninguna fuente se pierde, pero los duplicados se eliminan).

¿El Oura Ring se sincroniza con Health Connect?+

Sí, desde 2024 Oura Ring escribe datos de sueño, frecuencia cardíaca y actividad en Health Connect en Android. Los datos de sueño de Oura son especialmente detallados (fases REM, ligero y profundo con marca de tiempo granular) y se escriben como registros SleepSession. Si también tienes el Galaxy Watch activo de noche, verás dos registros SleepSession para la misma noche: un agregador que no agrupa producirá el doble de horas de sueño.

¿Cómo se deduplicán los pasos cuando llevo varios wearables a la vez?+

El método más robusto es el slot-merge por ventana temporal. El día se divide en intervalos (normalmente de 5 a 15 minutos). Para cada intervalo, se toma el valor máximo entre todas las fuentes. Esto funciona porque dos dispositivos que miden el mismo recorrido producen valores similares (el máximo es una estimación de la realidad), mientras que dos dispositivos en momentos distintos producen valores que sí deben sumarse. El resultado es un total diario que no cuenta dos veces los mismos recorridos, pero sí incluye correctamente el paseo matutino con Galaxy Watch y la carrera de la tarde con Garmin.

¿Suunto escribe en Health Connect?+

No del todo. A diferencia de Garmin, que tiene integración nativa con Health Connect desde su app para Android, Suunto expone los datos principalmente a través de la API Suunto Sport Engine con autenticación OAuth. Esto significa que integrar Suunto en un panel multi-fuente requiere un conector independiente que lea de la API de Suunto. FitMesh Sync incluye este conector: una vez añadido Suunto como fuente OAuth, los datos se unen al flujo principal con la misma lógica de deduplicación.

¿Por qué mi frecuencia cardíaca media parece demasiado alta o demasiado baja con varios wearables?+

Casi con toda seguridad es un problema de contextos mezclados. Si tu panel calcula la frecuencia cardíaca media diaria sumando todos los registros de todas las fuentes, acaba promediando la frecuencia en reposo con la frecuencia durante el entrenamiento. La solución es separar los contextos: frecuencia cardíaca en reposo (calculada solo en las horas fuera de las ventanas de entrenamiento) y frecuencia cardíaca media de entrenamiento (calculada solo durante las sesiones de ejercicio, por tipo de actividad). Una única media diaria multi-fuente no tiene sentido físico.

¿Galaxy Ring y Galaxy Watch duplican los datos de sueño?+

Sí, si los llevas ambos de noche. Tanto Galaxy Ring como Galaxy Watch escriben sesiones de sueño en Health Connect para la misma noche. Samsung Health intenta gestionar esto internamente (Galaxy Ring tiene prioridad si se detecta como fuente activa nocturna), pero el comportamiento no está garantizado en todos los dispositivos y versiones de One UI. Si usas un agregador de terceros como FitMesh Sync, la lógica de agrupación de sueño resuelve el problema de forma independiente a Samsung Health.

Aviso legal

FitMesh Sync es un producto independiente. Samsung, Garmin, Suunto, Oura, Polar, Google, Apple son marcas comerciales de sus respectivos propietarios. Este artículo no implica ninguna afiliación ni patrocinio.

Aviso de salud

La información de este artículo tiene fines informativos y no reemplaza el consejo de tu médico, farmacéutico u otro profesional de la salud. FitMesh Sync es una app de fitness y bienestar, no un dispositivo médico, y no diagnostica ni trata enfermedades. Ante síntomas, dudas clínicas o decisiones de tratamiento, consulta siempre a tu médico.

M

Escrito por

Matteo Pizzi

Founder & Solo Dev, FitMesh Sync · Fosforonero

Desarrollador de software italiano. Construí FitMesh Sync para cubrir el espacio entre mi smartwatch y un panel personal real. Privacidad ante todo, indie, servidores en la UE.

Más sobre el proyecto

Sigue leyendo

Varios smartwatches juntos sin datos duplicados: guía de deduplicación multi-wearable · FitMesh