Saltar al contenido principal

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

Integración Fitbit para Gladys Assistant

Pasos, sueño, pulso en reposo y batería de su reloj Fitbit, a través de Google Health.

Lleva a Gladys los datos de su reloj o pulsera Fitbit (y de un Google Pixel Watch usado con Fitbit): pasos, distancia, pisos, calorías y minutos activos del día, frecuencia cardíaca en reposo, sueño de la noche, peso y grasa corporal cuando los registra, y batería y última sincronización del reloj. Dos desencadenantes de escena ponen en marcha sus rutinas: despierto y objetivo de pasos alcanzado. Un widget del panel lo resume todo.

Solo lectura: la integración nunca escribe nada en su cuenta de Google.

La API web de Fitbit (Fitbit Web API) se está retirando. Google la ha sustituido por la API de Google Health (Google Health API): el soporte de la Fitbit Web API terminó el 30 de septiembre de 2026, Google anunció su desconexión para finales de octubre de 2026 y ya no se pueden crear aplicaciones de desarrollador de Fitbit. Por eso esta integración lee sus datos de Fitbit mediante la Google Health API, desde la cuenta de Google a la que está vinculado su Fitbit — como la integración «Google Health» de Home Assistant, que sustituyó a su integración de Fitbit.

Desarrollada sin el hardware: la integración se ha escrito y probado con las respuestas documentadas de la Google Health API, sin reloj ni cuenta de Fitbit. Sus comentarios son bienvenidos en el foro de Gladys o en GitHub.

Esta integración no está afiliada a Fitbit ni a Google.

Requisitos​

  • Gladys 5.1.0 o posterior.
  • Un reloj o una pulsera Fitbit cuya cuenta de Fitbit se haya migrado a una cuenta de Google (la aplicación Fitbit lo propone; es obligatorio para la Google Health API).
  • Un proyecto de Google Cloud propio, gratuito: la integración usa su cliente OAuth, sus datos van de Google a su Gladys y a ningún otro sitio.
  • La aplicación Fitbit en su teléfono, sincronizada: el reloj solo envía sus datos a Google al sincronizarse con el teléfono.

Configuración​

La puesta en marcha lleva unos diez minutos, una sola vez. El botón Conectar de la pantalla de configuración muestra el URI de redireccionamiento que hay que declarar en Google: https://my.gladysassistant.com/redirect/oauth (una página alojada por Gladys que lo devuelve a su propio Gladys; los tokens nunca pasan por ella).

1. Crear el proyecto de Google Cloud​

  1. Abra la consola de Google Cloud con cualquier cuenta de Google y cree un proyecto (por ejemplo «Gladys»).
  2. En API y servicios → Biblioteca, busque Google Health API y pulse Habilitar.

2. Configurar la pantalla de consentimiento OAuth​

  1. En Google Auth Platform (antes «Pantalla de consentimiento de OAuth»), pulse Comenzar: indique un nombre de aplicación («Gladys») y su correo, elija el público Externo y acepte las condiciones. Deje vacíos los campos opcionales de marca (logotipo, dominios): activarían la verificación de Google.
  2. En Público, añada su propia cuenta de Google (la de su Fitbit) como usuario de prueba y pulse Publicar aplicación para que esté En producción. Una aplicación que se queda «En prueba» pierde su autorización cada 7 días.

3. Crear el cliente OAuth​

  1. En Clientes (o Credenciales), cree un ID de cliente de OAuth del tipo Aplicación web.
  2. En URI de redireccionamiento autorizados, añada exactamente https://my.gladysassistant.com/redirect/oauth. Si en Gladys eligió usar la dirección de su instancia (Gladys servido en HTTPS), declare esa dirección.
  3. Copie el ID de cliente y el secreto del cliente.

4. Conectar Gladys​

  1. En Gladys, abra Integraciones → Fitbit → Configuración, pegue el ID de cliente y el secreto, y pulse Guardar.
  2. Pulse Conectar: Google le pide que elija su cuenta. Como la aplicación es suya y Google no la ha verificado, muestra «Google no ha verificado esta aplicación»: pulse Configuración avanzada y luego Ir a Gladys.
  3. Marque todos los permisos (actividad, mediciones de salud, sueño, ajustes) y confirme. Un permiso sin marcar deja vacías sus funciones.
  4. El dispositivo Fitbit aparece en la pestaña Descubrir: añádalo.

Otros ajustes: el objetivo diario de pasos (para el desencadenante y el widget), el intervalo de actualización (15 minutos por defecto) y el idioma de los nombres de funciones (francés por defecto; elíjalo antes de añadir el dispositivo: Gladys conserva los nombres de la creación).

El dispositivo​

Un dispositivo Fitbit por cuenta de Google, de solo lectura:

FunciónContenido
Pasos de hoyPasos desde medianoche (en la zona horaria de su cuenta de Fitbit)
Distancia de hoyKilómetros
Pisos de hoyPisos subidos
Calorías quemadas (kcal)Total del día, metabolismo basal incluido
Minutos activosMinutos moderada y muy activos, como en la aplicación Fitbit
Frecuencia cardíaca en reposo (ppm)El último valor diario calculado por Fitbit
Duración del sueñoHoras dormidas la noche anterior (sin siestas)
Eficiencia del sueñoTiempo dormido sobre el tiempo entre acostarse y despertarse, en %
Hora de acostarse / de despertarseTexto, «23:12» y «07:05», con la hora del lugar donde durmió
Peso (kg) / Grasa corporalEl último registro (báscula o manual), leído una vez por hora
Batería del reloj% del dispositivo sincronizado en último lugar (se ignora una báscula)
Última sincronizaciónTexto, fecha y hora de la última sincronización reloj → teléfono

Un valor que Google no da (sin peso registrado, permiso denegado) se queda vacío; el último valor conocido nunca se sustituye por 0. Los valores que no cambian se vuelven a enviar cada 6 horas para que sigan «recientes» en Gladys.

Widget​

Resumen de Fitbit: tres mosaicos (pasos, horas de sueño, frecuencia cardíaca en reposo) y una lista: progreso hacia el objetivo de pasos, acostarse → despertarse, eficiencia del sueño, reloj y batería (naranja por debajo del 20 %), última sincronización (naranja pasadas 24 horas). Cuando no se puede leer Google, una línea dice por qué y las últimas cifras se mantienen. El widget funciona incluso antes de añadir el dispositivo.

Desencadenantes de escena​

  • Fitbit: despierto (woke_up): ha terminado una noche de sueño. Google solo la conoce cuando el reloj se ha sincronizado y la noche está calculada: el desencadenante llega por tanto después de levantarse — de unos minutos a una hora, según cuándo se sincronice el teléfono. Variables: hora de despertarse, hora de acostarse, horas de sueño, eficiencia del sueño. Una vez por noche, nunca por una siesta, nunca por una noche descubierta más de 12 horas después de su final.
  • Fitbit: objetivo de pasos alcanzado (step_goal_reached): los pasos del día han alcanzado el objetivo de la configuración. Una vez al día. Variables: pasos, objetivo.

La primera lectura tras la instalación registra la situación sin desencadenar nada: la noche anterior no es una novedad.

Acción de configuración​

Actualizar ahora lee Google Health al instante e indica lo obtenido (pasos del día, última sincronización) o por qué ha fallado.

Ejemplos de escenas​

  • Rutina de la mañana: desencadenante «Fitbit: despierto» → abrir las persianas del dormitorio, encender la luz de la cocina, enviar «¡Buenos días! {{horas de sueño}} h de sueño» por Telegram.
  • Noche corta: desencadenante «Fitbit: despierto», condición «Duración del sueño inferior a 6» → aplazar los aparatos ruidosos a la tarde.
  • Enhorabuena: desencadenante «Fitbit: objetivo de pasos alcanzado» → una notificación y un destello de color de la lámpara del salón.
  • Recordatorio de batería: cada noche a las 21:00, condición «Batería del reloj inferior a 20» → «Cargue su reloj antes de dormir».

Solución de problemas​

  • «Introduzca el ID de cliente y el secreto…»: rellene ambos campos y guarde antes de pulsar Conectar.
  • Google muestra «redirect_uri_mismatch»: el URI de redireccionamiento autorizado del cliente OAuth debe ser exactamente el que aparece bajo el botón Conectar.
  • «La API de Google Health no está activada…»: actívela en la biblioteca de su proyecto y espere unos minutos.
  • «Esta cuenta de Google no tiene datos de Fitbit…»: migre su cuenta de Fitbit a su cuenta de Google en la aplicación Fitbit y conecte después esa cuenta de Google.
  • «Google ha retirado la autorización…» cada semana: la aplicación de su proyecto sigue «En prueba»: publíquela en producción y pulse Conectar de nuevo.
  • Cifras que no se mueven: mire «Última sincronización» — el reloj debe sincronizarse con la aplicación Fitbit del teléfono (Bluetooth activado, aplicación permitida en segundo plano).
  • Funciones vacías: un permiso quedó sin marcar en la pantalla de consentimiento de Google. Pulse Conectar de nuevo y márquelo todo.
  • Registros detallados: inicie la integración con LOG_LEVEL=debug. Nunca contienen sus datos de salud ni sus tokens.

Límites​

  • Sin tiempo real: Google Health tiene lo que el reloj envió en su última sincronización; la integración lo lee cada 15 minutos por defecto (30 min o 1 h posibles).
  • Cuota: Google fija la cuota de la API por proyecto de Cloud (véase «Cuotas» en la consola). Una lectura cuesta 8 solicitudes (2 más una vez por hora para el peso y la grasa corporal), unas 35 solicitudes por hora a 15 minutos: lejos de los límites. Google puede responder «cuota superada» (429): la integración lo vuelve a intentar en la siguiente actualización.
  • Una sola cuenta de Google por instalación de la integración.
  • La API no expone el objetivo de pasos de la aplicación Fitbit: fije el suyo en la configuración.
  • Sin frecuencia cardíaca minuto a minuto, sin fases del sueño, sin SpO2: reservados para una versión posterior.
  • Aplicación de Google no verificada: válida para uso personal (hasta 100 usuarios); Google muestra un aviso en la pantalla de consentimiento.

Privacidad y datos​

  • La integración solo habla con Google (oauth2.googleapis.com, health.googleapis.com), con su propio cliente OAuth.
  • Los tokens se guardan en /data/fitbit.json, legible solo por la integración; el secreto del cliente se queda en la configuración de Gladys.
  • Los datos de salud van a Gladys (estados, historial, widget) y a ningún otro sitio, y nunca a los registros.

Parámetros de configuración​

Estos son los parámetros que Fitbit te pide en su pantalla de configuración en Gladys.

ParámetroTipoObligatorioDescripción
Antes de empezarsectionNoGoogle ha sustituido la API web de Fitbit por la API de Google Health: la integración lee sus datos de Fitbit desde su cuenta de Google. En la consola de Google Cloud, cree un proyecto, active la API de Google Health, configure la pantalla de consentimiento OAuth (Externa, publicada «En producción») y cree un cliente OAuth de tipo «Aplicación web» cuyo URI de redireccionamiento autorizado sea el que aparece bajo el botón Conectar. Después introduzca aquí su ID de cliente y su secreto, guarde y pulse Conectar. La documentación detalla cada paso.
ID de cliente OAuthstringSíID de cliente del cliente OAuth creado en su proyecto de Google Cloud.
Secreto del cliente OAuthsecretSíSe muestra junto al ID de cliente en la consola de Google Cloud.
Cuenta de Googleoauth2NoGuarde primero el ID de cliente y el secreto, y conecte la cuenta de Google vinculada a su Fitbit. Acceso de solo lectura.
Objetivo diario de pasosnumberNoLo usan el desencadenante de escena «Objetivo de pasos alcanzado» y el widget.
Intervalo de actualizaciónselectNoCon qué frecuencia se lee Google Health. El reloj solo envía sus datos al sincronizarse con el teléfono.
Idioma de los nombres de funcionesselectNoNombres de las funciones cuando el dispositivo se añade a Gladys.

Cómo instalar Fitbit en Gladys​

  1. En Gladys, abre Integraciones: Fitbit aparece en el catálogo junto a las integraciones nativas, con una insignia de comunidad.
  2. Haz clic en Instalar. Gladys descarga la imagen Docker (ghcr.io/guim31/gladys-fitbit:1.0.1), la ejecuta en un entorno aislado del núcleo y genera la interfaz de la integración (dispositivos, descubrimiento y configuración).
  3. Abre la pantalla de Configuración de la integración, rellena los parámetros y guarda.
  4. También puedes instalarla directamente desde la URL de su repositorio: https://github.com/guim31/gladys-fitbit.

Fitbit requiere Gladys >=5.1.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​

Fitbit 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 guim31, no el equipo principal de Gladys.

Suscríbete a la newsletter de Gladys Assistant

Unos pocos correos al mes sobre nuevas versiones y novedades del proyecto. Enviados por Pierre-Gilles Leymarie, fundador del proyecto. Puedes darte de baja cuando quieras 🙂