Mes données personnelles ne doivent pas rester enfermées dans Garmin Connect

Depuis des années, je donne beaucoup de données à Garmin.

Sommeil, variabilité de fréquence cardiaque, fréquence cardiaque, poids, entraînements, natation, vélo, marche, récupération. Tout ça finit quelque part dans Garmin Connect. Et soyons honnête : l’application est pratique. Je peux regarder ma nuit, une activité, une tendance rapide.

Mais il y a un truc qui me gêne de plus en plus : ce sont mes données, et pourtant elles ne vivent pas vraiment chez moi.

Elles sont consultables dans une interface que je ne contrôle pas. Exportables, parfois. Exploitables, pas vraiment. Si je veux les croiser avec mon propre suivi de récupération, mes notes, mes douleurs, mes revues hebdomadaires, mes routines, je retombe vite sur la limite classique des plateformes : tu peux regarder tes données chez elles, mais pas vraiment construire ton propre système avec.

La vraie question n’était donc pas “comment faire un dashboard sportif”.

C’était : comment récupérer mes données personnelles, automatiquement, dans un endroit que je maîtrise ?

Alors j’ai extrait un petit script que j’utilise déjà chez moi : garmin-sync.

Le script

Le script se connecte à Garmin Connect, récupère les données d’une journée, puis les écrit dans NocoDB.

J’utilise deux tables :

  • sport_day, une ligne par jour, pour le sommeil, la variabilité de fréquence cardiaque, la fréquence cardiaque au repos, les pas, le poids et les activités agrégées ;
  • garmin_activity, une ligne par activité, avec l’identifiant Garmin, le type, la durée, la distance, la fréquence cardiaque, les calories et quelques champs utiles.

Le script peut tourner automatiquement plusieurs fois par jour. Chez moi, il synchronise hier et aujourd’hui, parce que les données Garmin ne sont pas toujours complètes tout de suite. Une activité peut arriver plus tard. Le poids peut être ajouté après coup. Certaines métriques peuvent être recalculées.

Relancer le script sur la même date ne crée pas de doublons : il met à jour la ligne du jour et les activités déjà connues. C’était important. Sinon, au bout de deux semaines, la base devient juste un tas de copies inutilisables.

On peut aussi lancer une date précise :

python src/garmin_sync.py --date 2026-08-03

Et il y a un mode test, sans écriture dans NocoDB, pour vérifier que la connexion Garmin fonctionne avant de brancher la base :

python src/garmin_sync.py --date 2026-08-03 --no-nocodb

La vraie raison

Le point important, ce n’est pas le script en lui-même. Il est simple. Pas d’interface. Pas de dashboard. Pas de packaging propre. Juste du Python, Garmin Connect, NocoDB.

Le vrai sujet, c’est la souveraineté sur mes données personnelles.

Je ne veux pas seulement consulter mes données de santé dans l’application d’un fabricant de montre. Je veux pouvoir les stocker dans ma propre base, les croiser avec mes propres observations, les relire dans mes revues hebdomadaires, les analyser dans le temps, et changer d’outil demain sans repartir de zéro.

Ça ne veut pas dire tout auto-héberger par principe ou fantasmer une indépendance totale. Garmin reste la source de collecte. La montre reste propriétaire. L’API utilisée n’est pas un contrat gravé dans le marbre. Mais au moins, une copie exploitable des données importantes existe aussi chez moi.

Et pour mes données de santé, ça compte.

Le code

garmin-sync est public sur GitLab : https://gitlab.com/nicodel/garmin-sync

Ce n’est pas une solution universelle. C’est un bout de tuyau personnel, extrait proprement. À adapter si vous utilisez aussi Garmin Connect et que vous voulez arrêter de laisser vos données dormir uniquement dans l’application.