Integración domótica Polar, gratuita y de código abierto

Tu reloj Polar en Gladys: actividad, sueño, Nightly Recharge, entrenamientos y escenas.
Presentación
Esta integración lleva a Gladys los datos de tu cuenta Polar Flow (relojes y sensores de frecuencia cardíaca Polar), a través de la API oficial Polar AccessLink: actividad de hoy, última noche, Nightly Recharge, entrenamientos y carga cardio, como dispositivo, widgets del panel y escenas.
- Un dispositivo por cuenta vinculada («Polar Marie»): pasos, tiempo activo, calorías, distancia y objetivo del día; puntuación y tiempo de sueño; estado Nightly Recharge, carga SNA, variabilidad cardíaca, frecuencia cardíaca y respiratoria de la noche; estado y ratio de carga cardio.
- Widgets: hoy (con un botón Sincronizar), última noche, últimos entrenamientos, últimos siete días.
- Escenas: entrenamiento sincronizado, nueva noche, nueva Nightly Recharge, objetivo de actividad alcanzado; una acción lee los últimos valores (peso incluido) para un mensaje o una condición.
- Nube: tus datos viajan entre los servidores de Polar y tu Gladys, con tu propio cliente AccessLink; nada pasa por un servidor de terceros. Polar no envía notificaciones a Gladys: la integración lee Polar cada 30 minutos (ajustable) y cuando pulsas Sincronizar.
- Tras sincronizar el reloj: Polar solo conoce lo que el reloj sincronizó con Polar Flow (app móvil u ordenador). Una noche aparece tras la sincronización de la mañana, un entrenamiento tras la suya.
Integración comunitaria, sin relación con Polar Electro. Aún no probada con una cuenta Polar real: cuéntanos lo que ves.

Requisitos
- Gladys 5.3.0 o posterior.
- Una cuenta Polar Flow con un reloj o sensor Polar que se sincroniza con Polar Flow.
- Un cliente API AccessLink gratuito, creado una vez con tu cuenta Polar Flow (unos cinco minutos). Polar no ofrece una clave compartida y la integración no incluye ninguna.
Configuración
1. Crea tu cliente AccessLink
-
Abre admin.polaraccesslink.com e inicia sesión con tu cuenta Polar Flow.
-
Acepta las condiciones de AccessLink si se piden y crea un nuevo cliente (aplicación): un nombre («Gladys»), una descripción, un correo de contacto y, si se pide, un sitio web (
https://gladysassistant.comsirve). -
Como URL de redirección de autorización (callback), escribe exactamente:
https://my.gladysassistant.com/redirect/oauthEs la página HTTPS de Gladys que devuelve tu navegador a tu instancia, sea cual sea su dirección. Si accedes a Gladys por HTTPS y activaste la opción avanzada «dirección de la instancia» de la pantalla de configuración, registra en su lugar la dirección que muestra esa pantalla (o ambas: Polar acepta varias URL, la enviada debe coincidir exactamente con una).
-
Guarda y copia el Client ID y el Client secret del cliente.
2. En Gladys
- Abre la integración Polar, pega el Client ID y el Client secret y guarda.
- Pulsa Conectar con Polar, inicia sesión en Polar Flow y acepta. Vuelves a Gladys conectado: la integración registra tu cuenta en tu cliente y la lee.
- Ve a Descubrir y añade el dispositivo «Polar …», y luego los widgets a un panel.
- Sincroniza tu reloj con Polar Flow: Polar solo comparte los datos sincronizados después de la vinculación. Pulsa entonces Sincronizar (o espera a la siguiente lectura).
| Campo | Por defecto | Función |
|---|---|---|
| Client ID | — | El Client ID de tu cliente AccessLink. |
| Client secret | — | Su secreto, nunca mostrado ni escrito en los registros. |
| Conectar con Polar | — | Vincula tu cuenta Polar Flow (solo lectura: accesslink.read_all). |
| Intervalo de lectura | 30 min | 15, 30, 60 o 120 minutos; cada lectura cuesta 5 o 6 peticiones. |
| Idioma de los textos | Automático | Nombres del dispositivo y de las funciones, estado de carga cardio y textos de escenas. |
Botones: Sincronizar ahora (no dos veces en dos minutos), Desvincular la cuenta Polar (la da de baja de tu cliente y olvida el token; el dispositivo permanece) y Diagnóstico (escribe un resumen anonimizado en la pestaña Registros).
Uso
Dispositivo
| Función | Unidad / escala | Actualización |
|---|---|---|
| Pasos de hoy | pasos | tras cada sincronización del día |
| Tiempo activo de hoy | minutos | tras cada sincronización del día |
| Calorías de hoy | kcal | tras cada sincronización del día |
| Distancia de hoy | km (según los pasos) | tras cada sincronización del día |
| Objetivo de actividad diario | % (puede superar 100) | tras cada sincronización del día |
| Puntuación del sueño | 1 a 100 | tras la sincronización matinal |
| Tiempo dormido | horas | tras la sincronización matinal |
| Estado Nightly Recharge | 1 muy baja … 6 muy buena | tras la sincronización matinal |
| Carga SNA | -10 a +10 | tras la sincronización matinal |
| Variabilidad cardíaca (noche) | ms (RMSSD) | tras la sincronización matinal |
| Frecuencia cardíaca nocturna | ppm | tras la sincronización matinal |
| Frecuencia respiratoria | respiraciones por minuto | tras la sincronización matinal |
| Ratio de carga cardio | esfuerzo / tolerancia | tras un entrenamiento |
| Estado de carga cardio | texto | tras un entrenamiento |
«Hoy» sigue la zona horaria de Gladys. Antes de la primera sincronización del día, las funciones de actividad conservan el último valor de ayer (su fecha lo indica). Gladys no tiene unidad de peso: el peso solo lo da la acción de escena.
Escenas
| Disparador | Cuándo | Filtros |
|---|---|---|
| Entrenamiento sincronizado | un nuevo entrenamiento llegó a Polar Flow | cuenta, deporte |
| Nueva noche disponible | la noche de los dos últimos días llegó a Polar Flow | cuenta |
| Nightly Recharge disponible | la Nightly Recharge de los dos últimos días llegó a Polar Flow | cuenta, estado 1-6 |
| Objetivo de actividad alcanzado | la actividad de hoy alcanzó el 100 % del objetivo, una vez al día | cuenta |
Cada evento lleva sus valores ({{triggerEvent.data.sleep_score}}, duration_minutes, status_label…) y un summary listo. No se dispara nada por los datos ya presentes al arrancar la integración. La acción Polar: leer los últimos datos da la actividad de hoy, la última noche, la Nightly Recharge, el estado de entrenamiento, la última sesión y el peso de la última lectura.
Ejemplos:
- Nueva noche disponible → enviar «{{triggerEvent.data.summary}}» al móvil al despertar.
- Nightly Recharge disponible, estado 1 o 2 → suavizar las luces de la mañana y aplazar el recordatorio de entrenamiento.
- Entrenamiento sincronizado, deporte «Carrera» → encender el toallero del baño.
Solución de problemas
- Polar indica «redirect_uri» o una página de error tras Conectar: la URL de redirección del cliente no es idéntica a la que envía Gladys. Comprueba
https://my.gladysassistant.com/redirect/oauth(sin barra final) en el cliente de admin.polaraccesslink.com. La pestaña Registros muestra el URI de redirección usado. - «Polar rechazó la conexión (invalid_client)»: Client ID o secreto incorrecto. Vuelve a copiarlos y guarda antes de conectar.
- «Conexión rechazada: la respuesta no corresponde»: la autorización caducó (10 minutos) o se abrió dos veces. Vuelve a pulsar Conectar con Polar.
- «Polar se niega a compartir los datos» (HTTP 403): acepta los consentimientos obligatorios de tu cuenta en account.polar.com y pulsa Sincronizar.
- «Polar rechazó el acceso»: el token fue revocado (en Polar Flow, con Desvincular o tras un año aproximadamente). Vuelve a pulsar Conectar con Polar.
- Nada de hoy: sincroniza antes el reloj con Polar Flow; Polar solo comparte los datos sincronizados después de la vinculación.
- Informar de un problema: issues de GitHub con las versiones de Gladys y de la integración, el modelo de reloj y las líneas del botón Diagnóstico (sin token ni nombre).
¿Por qué no hay notificación instantánea? Los webhooks de Polar necesitan una dirección pública que responda a Polar y peticiones firmadas cuya cabecera Gladys Plus no transmite: la integración lee Polar a su propio ritmo.
Parámetros de configuración
Estos son los parámetros que Polar te pide en su pantalla de configuración en Gladys.
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| 1. Tu cliente de la API AccessLink | section | No | Polar no ofrece una clave compartida: inicia sesión en admin.polaraccesslink.com con tu cuenta Polar Flow y crea un cliente API gratuito (una «aplicación»). Como URL de redirección de autorización, escribe exactamente https://my.gladysassistant.com/redirect/oauth. Después copia aquí su Client ID y su secreto. La documentación detalla cada paso. |
| Client ID | string | Sí | Lo muestra admin.polaraccesslink.com una vez creado el cliente. |
| Client secret | secret | Sí | Se muestra junto al Client ID. Nunca se escribe en los registros. |
| 2. Conecta tu cuenta Polar Flow | section | No | Guarda primero, pulsa el botón y acepta en Polar Flow. Polar solo comparte los datos sincronizados después de esta vinculación: sincroniza luego tu reloj con Polar Flow. Vuelve a conectarte si Gladys indica un acceso rechazado. |
| Conectar con Polar | oauth2 | No | Gladys solo pide leer tus datos (accesslink.read_all); nunca cambia nada en Polar Flow. |
| 3. Opciones | section | No | |
| Intervalo de lectura | select | No | Polar no envía notificaciones a Gladys: la integración lo lee a este ritmo (5 o 6 peticiones por lectura) y cada vez que pulsas Sincronizar. |
| Idioma de los textos | select | No | Nombres del dispositivo y de las funciones, estado de carga cardio y textos de escenas. Automático: el idioma de tu panel, en cuanto se haya mostrado un widget. |
Cómo instalar Polar en Gladys
- En Gladys, abre Integraciones: Polar aparece en el catálogo junto a las integraciones nativas, con una insignia de comunidad.
- Haz clic en Instalar. Gladys descarga la imagen Docker (
ghcr.io/william-de71/gladys-polar:0.1.0), la ejecuta en un entorno aislado del núcleo y genera la interfaz de la integración (dispositivos, descubrimiento y configuración). - Abre la pantalla de Configuración de la integración, rellena los parámetros y guarda.
- También puedes instalarla directamente desde la URL de su repositorio: https://github.com/William-De71/gladys-polar.
Polar requiere Gladys >=5.3.0. El catálogo de Gladys se actualiza cada hora, así que una nueva versión está disponible como máximo una hora después de publicarse.
¿Todavía no usas Gladys? Es gratuito y de código abierto: sigue la guía de instalación para empezar.
Sobre las integraciones externas
Polar es una integración externa: una integración comunitaria empaquetada como contenedor Docker y publicada en GitHub. Gladys la instala con un clic y la ejecuta en un entorno aislado del núcleo. La publica y mantiene William-De71, no el equipo principal de Gladys.
- Explorar todas las integraciones, nativas y de la comunidad
- Crear y publicar tu propia integración externa
- Código fuente en GitHub — fuente de esta documentación