Strava-API-Import (Android)¶
Unter Android kann Grom aktuelle Trainings direkt über die Strava API importieren – mit Ihren eigenen Strava-API-Anwendungsdaten (Bring-your-own / BYO). Auf dem Grom-Server wird nichts gespeichert: Client ID, Client Secret und OAuth-Tokens bleiben auf dem Gerät. Im Web-Client ist dieser Ablauf nicht verfügbar.
Für die vollständige Historie (oder ältere Aktivitäten) nutzen Sie den Strava-Massenimport (ZIP-Archiv).
Voraussetzungen¶
- Strava-Konto mit aktivem Abo (von Strava für API-Apps verlangt).
- API-Anwendung unter strava.com/settings/api anlegen.
- Client ID und Client Secret in Grom eintragen.
Wenn Connect mit HTTP 403 beim Token-Austausch scheitert, prüfen Sie Client ID und Client Secret und versuchen Sie es erneut.
Neue Strava-Apps starten im Single-Player-Modus (nur der App-Besitzer kann autorisieren) – passend für persönlichen BYO-Einsatz.
Ablauf¶
- Integration → Externe Dienste → Strava öffnen (nur Android).
- Trainings aus Strava importieren aktivieren.
- Client ID, Client Secret und optional Trainings pro Sync eingeben (Standard 10, max. 200).
- Connect with Strava tippen, Scope
activity:readerteilen, Status OK prüfen. - Auf Start das Sync-Symbol in der App-Leiste tippen (wie früher bei Health Sync).
- Dialog „Synchronisiere…“, danach Snackbar mit Importanzahl (oder keine neuen Trainings).
Umschalter aus = Sync-Button ausgeblendet; Credentials/Tokens bleiben. Logout aus Grom löscht sie ebenfalls nicht.
Sync-Regeln¶
| Regel | Verhalten |
|---|---|
| Limit | Bis zur konfigurierbaren Anzahl Trainings pro Sync (Standard 10, max. 200) der neuesten Aktivitäten |
| Reihenfolge | Neueste zuerst |
| Stopp | Bei der ersten bereits vorhandenen Aktivität mit external_id.name=strava |
| Sichtbarkeit | Nur activity:read — Everyone / Followers (nicht „Only You“) |
| Metriken | Distanz, Moving-/Elapsed-Zeit, Geschwindigkeiten, Höhe, Herzfrequenz, Kadenz, Leistung und Kalorien kommen aus dem Strava-Activity-Objekt, sofern vorhanden — nicht aus einer Neuberechnung des Tracks |
| Streams | Es werden alle Strava-Stream-Typen angefordert (time, latlng, distance, altitude, velocity_smooth, heartrate, cadence, watts, temp, moving, grade_smooth); fehlende Typen werden ignoriert |
| Track | Immer ein FIT aus Streams, wenn mindestens zwei nutzbare Samples existieren (Sensor und/oder GPS). Ohne gültiges GPS werden Positionsfelder weggelassen, damit Indoor-/Kraft-HF-Serien trotzdem anhängen. Leere oder durchgängig null-wertige Streams (z. B. Geschwindigkeit) werden nicht ins FIT geschrieben, damit unnötige Charts entfallen. Unvollständiges GPS ersetzt die Activity-Metriken nicht |
| Ohne Streams | Workout aus Summary ohne Track (avg/max HF, Kadenz, Watt, Kalorien werden trotzdem gesendet, wenn Strava sie liefert) |
| Gerät | Nutzt Strava device_name, falls vorhanden: wird in das erzeugte FIT (product_name) und als Create-Feld device geschrieben (sonst Server-Default Grom App). Das FIT setzt kein manufacturer=development, damit das Training nicht als „Development“ erscheint |
| Fotos | Best-effort über Photos-API; Foto-Fehler bricht das Workout nicht ab |
| Ausrüstung | Kein equipment_ids → Server nutzt last_equipment_by_sport |
Bereits importierte Aktivitäten werden vom Sync nicht aktualisiert (löschen und erneut importieren für einen korrigierten Track).
Dedup nutzt denselben external_id-Namespace wie der ZIP-Import.
Datenschutz¶
Client Secret und Refresh-Tokens liegen in den App-Einstellungen auf dem Gerät. Grom sendet sie nicht an Ihre Instanz.