Mi remo no habla Garmin
BLE, ANT+, Connect IQ y la terquedad de un ingeniero
Remo. No en el agua — en un Sportstech WRX1000 Waterrower. Una máquina sólida con un problema: habla Bluetooth Low Energy. Mi Garmin Epix 2 Pro habla ANT+. No se entienden. Y sin conexión Garmin, no hay Training Metrics. Sin Training Effect. Sin actualización de VO2max. Sin Training Load. Nada.
Por qué las actividades importadas no bastan
Claro, puedes importar una actividad como archivo FIT. Pero Garmin Connect ignora los datos importados para todo lo que importa. Los algoritmos Firstbeat corren on-device — en el reloj mismo. Si el reloj no ve la frecuencia cardíaca en vivo durante la actividad, no hay cálculo. Sin drenaje de Body Battery, sin Intensity Minutes, sin Recovery Time.
Para alguien que gestiona su entrenamiento por datos, eso es inaceptable. Quiero ver después de remar si la sesión tuvo Training Effect aeróbico o anaeróbico. Quiero que el Training Load se integre en mi resumen semanal. Sin eso, remar es invisible para Garmin — como si no hubiera hecho nada.
El puente: BLE entra, ANT+ sale
La solución: un puente. Software que recibe datos BLE FTMS del WRX1000 y los reenvía como ANT+ FE-C al reloj Garmin. Así el reloj "cree" que está conectado a un equipo de fitness real. Coste de hardware: un dongle ANT+ USB por 35 euros y un adaptador USB-OTG por 10 euros. Funciona en un teléfono Android con Chrome.
El WRX1000 envía por BLE al puente. El puente traduce a ANT+ FE-C. El reloj Garmin recibe ANT+ e inicia Indoor Rowing. La frecuencia cardíaca corre en paralelo por la banda pectoral. Y de repente: Training Effect. VO2max. Todo.
La app Garmin: WRX1000-IQ
Pero no me bastó. La pantalla estándar de Garmin para Indoor Rowing es genérica. Así que escribí un Data Field de Connect IQ — WRX1000-IQ. Monkey C, el lenguaje propio de Garmin. Visualización de ritmo basada en zonas con códigos de color, cuatro métricas clave: ritmo, potencia, cadencia de remada, distancia. Optimizado para AMOLED con fondo negro y ahorro de batería.

El desafío con Connect IQ: cada llamada API puede crashear. Las conexiones Bluetooth se caen. Los campos desaparecen. El reloj Garmin muestra entonces un cuadrado azul — la señal universal de "tu código está roto." Mi solución: cada llamada API en try-catch, null checks en todas partes, cambios mínimos con flujo de tag-and-rollback.
Lo que hace un ingeniero
¿Habría sido más fácil comprar un remo con soporte nativo de Garmin? Por supuesto. Pero el WRX1000 es un remo de agua — la sensación de remado es imbatible. Y soy ingeniero mecánico. Cuando un dispositivo no hace lo que quiero, construyo la interfaz yo mismo.
El resultado: integración completa con Garmin para un dispositivo que el fabricante nunca pensó para ello. Training Metrics que antes eran invisibles. Y un script de despliegue que envía directamente al reloj vía MTP. Porque hasta el último punto de fricción es demasiado.
— Philipp