Fitbit Smart-Home-Integration, kostenlos und Open Source

Schritte, Schlaf, Ruhepuls und Akku deiner Fitbit-Uhr, über Google Health.
Bringt die Daten deiner Fitbit-Uhr oder deines Fitbit-Trackers (und einer Google Pixel Watch mit Fitbit) in Gladys: Schritte, Distanz, Etagen, Kalorien und Aktivminuten des Tages, Ruhepuls, Schlaf der letzten Nacht, Gewicht und Körperfett, wenn du sie einträgst, sowie Akku und letzte Synchronisierung der Uhr. Zwei Szenen-Auslöser starten deine Routinen: aufgewacht und Schrittziel erreicht. Ein Dashboard-Widget fasst alles zusammen.
Nur Lesen: Die Integration schreibt nie etwas in dein Google-Konto.
Die Fitbit Web API wird abgeschaltet. Google hat sie durch die Google Health API ersetzt: Der Support der Fitbit Web API endete am 30. September 2026, Google hat ihre Abschaltung für Ende Oktober 2026 angekündigt, und neue Fitbit-Entwickler-Apps lassen sich nicht mehr anlegen. Diese Integration liest deine Fitbit-Daten deshalb über die Google Health API, aus dem Google-Konto, mit dem deine Fitbit verknüpft ist — wie die Home-Assistant-Integration „Google Health“, die dort die Fitbit-Integration ersetzt hat.
Ohne die Hardware entwickelt: Die Integration wurde anhand der dokumentierten Antworten der Google Health API geschrieben und getestet, ohne Fitbit-Uhr und ohne Konto. Rückmeldungen sind im Gladys-Forum oder auf GitHub willkommen.
Diese Integration steht in keiner Verbindung zu Fitbit oder Google.
Voraussetzungen
- Gladys 5.1.0 oder neuer.
- Eine Fitbit-Uhr oder ein Fitbit-Tracker, dessen Fitbit-Konto zu einem Google-Konto übertragen wurde (die Fitbit-App bietet das an; für die Google Health API ist es Pflicht).
- Ein eigenes, kostenloses Google-Cloud-Projekt: Die Integration nutzt deinen OAuth-Client, deine Daten gehen nur von Google zu deinem Gladys.
- Die Fitbit-App auf deinem Handy, synchronisiert: Die Uhr sendet ihre Daten nur beim Synchronisieren mit dem Handy an Google.
Konfiguration
Die Einrichtung dauert etwa zehn Minuten, einmalig. Der Button Verbinden der
Konfigurationsseite zeigt die bei Google einzutragende
Weiterleitungs-URI: https://my.gladysassistant.com/redirect/oauth (eine
von Gladys gehostete Seite, die dich zu deinem eigenen Gladys zurückschickt;
Tokens laufen nie darüber).
1. Das Google-Cloud-Projekt anlegen
- Öffne die Google Cloud Console mit einem beliebigen Google-Konto und lege ein Projekt an (zum Beispiel „Gladys“).
- Suche unter APIs & Dienste → Bibliothek nach Google Health API und klicke auf Aktivieren.
2. Den OAuth-Zustimmungsbildschirm einrichten
- Klicke in der Google Auth Platform (früher „OAuth-Zustimmungsbildschirm“) auf Jetzt starten: Gib einen App-Namen („Gladys“) und deine E-Mail an, wähle die Zielgruppe Extern und akzeptiere die Bedingungen. Lass die optionalen Branding-Felder (Logo, Domains) leer, denn diese würden die Überprüfung durch Google auslösen.
- Füge unter Zielgruppe dein eigenes Google-Konto (das deiner Fitbit) als Testnutzer hinzu und klicke dann auf App veröffentlichen, damit sie In Produktion ist. Eine App im Status „Test“ verliert ihre Berechtigung alle 7 Tage.
3. Den OAuth-Client anlegen
- Lege unter Clients (oder Anmeldedaten) eine OAuth-Client-ID vom Typ Webanwendung an.
- Trage unter Autorisierte Weiterleitungs-URIs genau
https://my.gladysassistant.com/redirect/oauthein. Hast du in Gladys gewählt, stattdessen die Adresse deiner Instanz zu verwenden (Gladys über HTTPS), trage diese Adresse ein. - Kopiere die Client-ID und das Client-Secret.
4. Gladys verbinden
- Öffne in Gladys Integrationen → Fitbit → Konfiguration, füge Client-ID und Client-Secret ein und klicke auf Speichern.
- Klicke auf Verbinden: Google bittet dich, dein Konto zu wählen. Da die App deine eigene ist und nicht von Google überprüft wurde, erscheint „Google hat diese App nicht überprüft“: Klicke auf Erweitert und dann auf Gladys öffnen.
- Setze alle Häkchen (Aktivität, Gesundheitsmessungen, Schlaf, Einstellungen) und bestätige. Eine nicht erteilte Berechtigung lässt ihre Funktionen leer.
- Das Gerät Fitbit erscheint im Tab Entdecken: Füge es hinzu.
Weitere Einstellungen: das tägliche Schrittziel (für den Auslöser und das Widget), das Aktualisierungsintervall (standardmäßig 15 Minuten) und die Sprache der Funktionsnamen (standardmäßig Französisch; wähle sie, bevor du das Gerät hinzufügst: Gladys behält die Namen vom Anlegen).
Das Gerät
Ein Gerät Fitbit pro Google-Konto, nur lesend:
| Funktion | Inhalt |
|---|---|
| Schritte heute | Schritte seit Mitternacht (in der Zeitzone deines Fitbit-Kontos) |
| Distanz heute | Kilometer |
| Etagen heute | Gestiegene Etagen |
| Verbrannte Kalorien (kcal) | Summe des Tages, Grundumsatz inbegriffen |
| Aktivminuten | Mäßig und sehr aktive Minuten, wie in der Fitbit-App |
| Ruhepuls (bpm) | Der letzte von Fitbit berechnete Tageswert |
| Schlafdauer | Stunden Schlaf in der letzten Nacht (ohne Nickerchen) |
| Schlafeffizienz | Schlafzeit im Verhältnis zur Zeit zwischen Zubettgehen und Aufwachen, % |
| Schlafenszeit / Aufwachzeit | Text, „23:12“ und „07:05“, nach der Uhrzeit des Ortes, an dem du schliefst |
| Gewicht (kg) / Körperfett | Der letzte Eintrag (Waage oder manuell), einmal pro Stunde gelesen |
| Akku der Uhr | % des zuletzt synchronisierten Trackers (eine Waage wird ignoriert) |
| Letzte Synchronisierung | Text, Datum und Uhrzeit der letzten Synchronisierung Uhr → Handy |
Ein Wert, den Google nicht liefert (kein Gewicht eingetragen, Berechtigung verweigert), bleibt leer; der letzte bekannte Wert wird nie durch 0 ersetzt. Unveränderte Werte werden alle 6 Stunden erneut gesendet, damit sie in Gladys „aktuell“ bleiben.
Widget
Fitbit-Übersicht: drei Kacheln (Schritte, Stunden Schlaf, Ruhepuls) und eine Liste: Fortschritt zum Schrittziel, Zubettgehen → Aufwachen, Schlafeffizienz, Uhr und Akku (orange unter 20 %), letzte Synchronisierung (orange nach 24 Stunden). Wenn Google nicht gelesen werden kann, sagt eine Zeile warum, und die letzten Werte bleiben stehen. Das Widget funktioniert schon, bevor das Gerät hinzugefügt ist.
Szenen-Auslöser
- Fitbit: aufgewacht (
woke_up): Eine Nacht Schlaf ist zu Ende. Google kennt sie erst, wenn die Uhr synchronisiert und die Nacht berechnet ist: Der Auslöser kommt also nach dem Aufstehen — einige Minuten bis eine Stunde später, je nachdem, wann das Handy synchronisiert. Variablen: Aufwachzeit, Schlafenszeit, Stunden Schlaf, Schlafeffizienz. Einmal pro Nacht, nie für ein Nickerchen, nie für eine Nacht, die mehr als 12 Stunden nach ihrem Ende gefunden wird. - Fitbit: Schrittziel erreicht (
step_goal_reached): Die Schritte des Tages haben das Ziel der Konfiguration erreicht. Einmal am Tag. Variablen: Schritte, Ziel.
Die erste Abfrage nach der Installation hält den Stand fest, ohne etwas auszulösen: Die letzte Nacht ist keine Neuigkeit.
Konfigurationsaktion
Jetzt aktualisieren liest Google Health sofort und sagt, was gelesen wurde (Schritte des Tages, letzte Synchronisierung) oder warum es fehlschlug.
Szenen-Beispiele
- Morgenroutine: Auslöser „Fitbit: aufgewacht“ → die Rollläden im Schlafzimmer öffnen, das Licht in der Küche einschalten, „Guten Morgen! {{Stunden Schlaf}} h Schlaf“ per Telegram senden.
- Kurze Nacht: Auslöser „Fitbit: aufgewacht“, Bedingung „Schlafdauer unter 6“ → laute Geräte auf den Nachmittag verschieben.
- Glückwunsch: Auslöser „Fitbit: Schrittziel erreicht“ → eine Benachrichtigung und ein Farbblitz der Wohnzimmerlampe.
- Akku-Erinnerung: jeden Abend um 21 Uhr, Bedingung „Akku der Uhr unter 20“ → „Lade deine Uhr vor der Nacht“.
Fehlerbehebung
- „Gib die Client-ID und das Secret … ein“: Fülle beide Felder aus und speichere, bevor du auf Verbinden klickst.
- Google zeigt „redirect_uri_mismatch“: Die autorisierte Weiterleitungs-URI des OAuth-Clients muss genau die unter dem Button Verbinden angezeigte sein.
- „Die Google Health API ist … nicht aktiviert“: Aktiviere sie in der Bibliothek deines Projekts und warte ein paar Minuten.
- „Dieses Google-Konto hat keine Fitbit-Daten“: Übertrage dein Fitbit-Konto in der Fitbit-App zu deinem Google-Konto und verbinde dann dieses Google-Konto.
- „Google hat die Berechtigung entzogen“ jede Woche: Die App deines Projekts ist noch im Status „Test“: Veröffentliche sie in Produktion und klicke erneut auf Verbinden.
- Werte, die sich nicht bewegen: Sieh dir „Letzte Synchronisierung“ an — die Uhr muss sich mit der Fitbit-App auf dem Handy synchronisieren (Bluetooth an, App im Hintergrund erlaubt).
- Leere Funktionen: Auf Googles Zustimmungsbildschirm blieb eine Berechtigung ohne Häkchen. Klicke erneut auf Verbinden und setze alle Häkchen.
- Ausführliche Protokolle: Starte die Integration mit
LOG_LEVEL=debug. Diese Protokolle enthalten nie deine Gesundheitsdaten und nie deine Tokens.
Grenzen
- Keine Echtzeit: Google Health hat, was die Uhr bei ihrer letzten Synchronisierung gesendet hat; die Integration liest es standardmäßig alle 15 Minuten (30 Min. oder 1 Std. möglich).
- Kontingent: Google legt das Kontingent der API pro Cloud-Projekt fest (siehe „Kontingente“ in der Console). Eine Abfrage kostet 8 Anfragen (2 mehr einmal pro Stunde für Gewicht und Körperfett), etwa 35 Anfragen pro Stunde bei 15 Minuten: weit unter den Grenzen. Google kann „Kontingent überschritten“ (429) antworten: Die Integration versucht es bei der nächsten Aktualisierung erneut.
- Ein Google-Konto pro Installation der Integration.
- Das Schrittziel der Fitbit-App stellt die API nicht bereit: Lege deines in der Konfiguration fest.
- Kein Puls im Minutentakt, keine Schlafphasen, kein SpO2: für eine spätere Version vorgemerkt.
- Nicht überprüfte Google-App: für den privaten Gebrauch in Ordnung (bis zu 100 Nutzer); Google zeigt auf dem Zustimmungsbildschirm eine Warnung.
Datenschutz und Daten
- Die Integration spricht nur mit Google (
oauth2.googleapis.com,health.googleapis.com), mit deinem eigenen OAuth-Client. - Die Tokens liegen in
/data/fitbit.json, nur für die Integration lesbar; das Client-Secret bleibt in der Konfiguration von Gladys. - Die Gesundheitsdaten gehen an Gladys (Zustände, Verlauf, Widget) und nirgendwo sonst hin, und nie in die Protokolle.
Konfigurationseinstellungen
Diese Einstellungen fragt Fitbit in seinem Konfigurationsbildschirm in Gladys ab.
| Einstellung | Typ | Pflichtfeld | Beschreibung |
|---|---|---|---|
| Bevor du loslegst | section | Nein | Google hat die Fitbit Web API durch die Google Health API ersetzt: Die Integration liest deine Fitbit-Daten aus deinem Google-Konto. Erstelle in der Google Cloud Console ein Projekt, aktiviere die Google Health API, richte den OAuth-Zustimmungsbildschirm ein (Extern, veröffentlicht „In Produktion“) und erstelle einen OAuth-Client vom Typ „Webanwendung“, dessen autorisierte Weiterleitungs-URI die unter dem Button Verbinden angezeigte ist. Gib dann seine Client-ID und sein Secret hier ein, speichere und klicke auf Verbinden. Die Dokumentation beschreibt jeden Schritt. |
| OAuth-Client-ID | string | Ja | Client-ID des OAuth-Clients aus deinem Google-Cloud-Projekt. |
| OAuth-Client-Secret | secret | Ja | Wird neben der Client-ID in der Google Cloud Console angezeigt. |
| Google-Konto | oauth2 | Nein | Speichere zuerst Client-ID und Secret, verbinde dann das Google-Konto, mit dem deine Fitbit verknüpft ist. Nur Lesezugriff. |
| Tägliches Schrittziel | number | Nein | Wird vom Szenen-Auslöser „Schrittziel erreicht“ und vom Widget verwendet. |
| Aktualisierungsintervall | select | Nein | Wie oft Google Health gelesen wird. Die Uhr sendet ihre Daten nur beim Synchronisieren mit dem Handy. |
| Sprache der Funktionsnamen | select | Nein | Namen der Funktionen, wenn das Gerät zu Gladys hinzugefügt wird. |
So installierst du Fitbit in Gladys
- Öffne in Gladys Integrationen: Fitbit erscheint im Katalog neben den nativen Integrationen, mit einem Community-Badge.
- Klicke auf Installieren. Gladys lädt das Docker-Image (
ghcr.io/guim31/gladys-fitbit:1.0.1) herunter, startet es in einer vom Kern isolierten Sandbox und erzeugt die Oberfläche der Integration (Geräte, Erkennung und Konfiguration). - Öffne den Bildschirm Konfiguration der Integration, fülle die Einstellungen aus und speichere.
- Du kannst sie auch direkt über die URL ihres Repositorys installieren: https://github.com/guim31/gladys-fitbit.
Fitbit benötigt Gladys >=5.1.0. Der Katalog in Gladys wird stündlich aktualisiert, eine neue Version ist also spätestens eine Stunde nach ihrer Veröffentlichung verfügbar.
Du nutzt Gladys noch nicht? Es ist kostenlos und Open Source: folge der Installationsanleitung, um loszulegen.
Über externe Integrationen
Fitbit ist eine externe Integration: eine Community-Integration, die als Docker-Container verpackt und auf GitHub veröffentlicht wird. Gladys installiert sie mit einem Klick und führt sie in einer vom Kern isolierten Sandbox aus. Sie wird von guim31 veröffentlicht und gepflegt, nicht vom Gladys-Kernteam.
- Alle Integrationen durchsuchen, native und aus der Community
- Deine eigene externe Integration bauen und veröffentlichen
- Quellcode auf GitHub — Quelle dieser Dokumentation