{ Cheat } Modifier votre nombre de pas et gagnez des Challenges & Badges Garmin !

Bonjour à tous,

Depuis quelques années maintenant je pratique un combo entre Cross Fit & Muscu.
Comme de nombreux sportifs, j'ai utilisé mon téléphone, pour découper, chronométrer mon entrainement et / ou suivre des programmes.

J'ai découvert les montres Garmin lorsque je me suis engagé en tant que Pompier Volontaire. En effet, j'avais besoin d'une montre solide, lavable, un écran lumineux et un minuteur rapide d'accès (exemple : prise de pouls en condition de nuit).

Les Badges !

En explorant davantage les fonctions offertes par Garmin, j'ai su tirer profit des entrainements personnalisés. Cela m'a permis de me dispenser d'un téléphone et de piloter mes séances au poignet : enchainement des exercices, temps de repos, etc ...

Au fil de l'utilisation de ma montre Garmin pour mes activités (marche, vélo, course, musculation), j'ai cumulé des Badges !
Les badges jouent sur la dopamine, et donnent l'envie d'en gagner toujours plus.

Chaque Badge fait gagner des points, et les points font gagner des niveaux !
Bref, l'esprit de compétition va vous amener à chercher à gagner un maximum de Badges pour atteindre un haut niveau, révélant ainsi le grand sportif qui sommeil en vous !!!

Il existe une multitude de Badge, avec des objectifs différents selon l'activité (marche, course, natation, muscu, yoga, ....), selon des records personnels dépassés (distance, temps, nombre de séance, ...) ou sur des aspects plus simple ... nombre de pas sur une certaine  période ;)

Garmin et sa fonction d'import

La concurrence des montres sportives et connectées est de plus en plus rude.
De plus en plus d'acteurs se mettent sur ce créneaux, Huawei, Xiaomi, Solar, Suunto, Corros, Apple, Fitbit ...

De façon à récupérer des clients, ces entreprises prévoient des options facilitant la transition d'une montre à une autre.

C'est le cas pour Garmin  : https://connect.garmin.com/modern/import-data

Comme vous pourrez les constater il est possible d'importer des fichiers d'activités (Vélo, Course, Marche, ...)

Il est aussi possible d'importer des données sur le corps (Sommeil, Nombre de Pas, Poids, ....)

Import de données et Badges Garmin

Comme j'ai pu le dire précédemment, acquérir un Badge Garmin, c'est avant tout atteindre l'objectif fixé par le Badge.

Ces objectifs sont atteints en fonction des données qui sont remontées par votre montre lorsque vous la synchronisez ... ou bien ... lorsque vous importez des données ;)

Ci-dessus, on voit des challenges de type "activité" ou il faut :

  • Parcourir en vélo 675 km entre le 1er avril et le 30 Juin
  • Faire 400km en vélo sur le mois de Juin
  • Marcher 30 miles sur le mois de Juin
  • ....

Les objectifs de ces challenges s'atteignent via une synchro de votre montre, ou via l'import de fichier .fit : https://developer.garmin.com/fit/protocol/

Le format fit, nécessite quelques connaissances techniques, aussi je n'aborderais pas (pour l'instant) la façon de générer ce type de fichier.

Mais il existe des challenges bien plus simple à résoudre en quelques clics !
Les challenges liés au nombre de pas !

Données CSV et nombre de pas

J'évoquais précédemment la possibilité d'importer des données, et parmi elles, figure le nombre de pas !
L'import de données peut-être rétroactif !
Ainsi si vous avez souscrit à un challenge sur le nombre de pas au mois de Mai, mais que vous faites la synchronisation de votre montre en Juin ! Vous pourrez tout de même remporter un Badge ! (Si l'objectif est atteint bien sûr).

Bref, le format CSV pour le nombre de pas est le suivant :

Body
Date,Weight,BMI,Fat
"01-08-2021","79.23","23.4","0"

Activities
Date,Calories Burned,Steps,Distance,Floors,Minutes Sedentary,Minutes Lightly Active,Minutes Fairly Active,Minutes Very Active,Activity Calories
"01-08-2021","5,383","45,726","36.04","0","583","225","33","337","4,170"

Sleep
Start Time,End Time,Minutes Asleep,Minutes Awake,Number of Awakenings,Time in Bed,Minutes REM Sleep,Minutes Light Sleep,Minutes Deep Sleep
"01-08-2021 5:40 am","01-08-2021 10:02 am","231","31","15","262","45","171","15"

Vous pouvez mettre ces 3 blocs dans un fichier, ou bien n'en mettre qu'un ou deux (selon votre besoin), et mettre autant de ligne que vous voulez (là aussi, c'est selon si vous souhaitez mettre une ou plusieurs dates).

Le nombre de pas figure ici dans le bloc "Activities" => "45,726"

En créant un fichier .csv et en l'important directement depuis le site de Garmin (cf. lien un peu plus haut), vous pourrez ainsi rétroactivement ... mais aussi sur des dates dans le futur (Garmin ne peut pas palier à un changement de fuseau horaire), indiquer votre nombre de pas !

Script pour définir un nombre de pas spécifique à une date

Si vous avez pour un besoin précis ... vous êtes à 5000 pas d'un objectif de 300.000 pas, et ils ne vous reste pas assez de temps pour atteindre l'objectif, ce script est pour vous :


/*
**      (c) Dyrk 2023 -2024
**	Just Spoof a specific Date
**	
**
*/
(()=>{ 
    let jwtToken = JSON.parse(localStorage.getItem('token')).access_token, 
		header = {"accept": "application/json, text/plain, */*","authorization": "Bearer ".concat(jwtToken),"cache-control": "no-cache","content-type": "multipart/form-data; boundary=----WebKitFormBoundarygJ3gy8vWnzWxMLOA","dateformat": "DAY_DASH","decimalseparator": ".","language": "EN","length": "KM","di-backend": "connectapi.garmin.com","nk": "NT","weight": "KG","x-app-ver": "4.68.0.20","x-requested-with": "XMLHttpRequest"}, 
		csvHead = "Activities\nDate,Calories Burned,Steps,Distance,Floors,Minutes Sedentary,Minutes Lightly Active,Minutes Fairly Active,Minutes Very Active,Activity Calories", 
		srv = "https://connect.garmin.com",
		datas = {
				Date                 : '26-06-2023',
				CaloriesBurned       : '5,383',
				Steps                : '300,000',
				Distance             : '36.04',
				Floors               : '75',
				MinutesSedentary     : '500',
				MinutesLightlyActive : '225',
				MinutesFairlyActive  : '33',
				MinutesVeryActive    : '337',
				ActivityCalories     : '5000'
		};
	fetch(srv + "/upload-service/upload/fitbit/csv", {
	  "headers": header,
	  "body": "------WebKitFormBoundarygJ3gy8vWnzWxMLOA\r\nContent-Disposition: form-data; name=\"userfile\"; filename=\"fitbit.csv\"\r\nContent-Type: text/csv\r\n\r\n"+csvHead+"\n\""+Object.values(datas).join('","')+"\"\r\n------WebKitFormBoundarygJ3gy8vWnzWxMLOA--\r\n",
	  "method": "POST"
	}).then(e=>e.json()).then(e=>{
		fetch(srv + "/wellness-service/wellness/status/".concat(e.detailedImportResult.owner,"/",e.detailedImportResult.creationDate.split(' ')[0],"/",e.detailedImportResult.uploadUuid.uuid.replace(/\-/g,'')), {
			  "headers": header,
			  "body": null,
			  "method": "GET"
			}).then(e=>e.text()).then(e=>console.log(e));
	});
})()

Script détecter et gagner les Badges "disponibles" liés au nombre de pas

/*
**      (c) Dyrk 2023 -2024
**	Win All available Badge about Step
**
**
**
*/

(()=>{
        jwtToken = JSON.parse(localStorage.getItem('token')).access_token, 
		header = {"accept": "application/json, text/plain, */*","authorization": "Bearer ".concat(jwtToken),"cache-control": "no-cache","content-type": "multipart/form-data; boundary=----WebKitFormBoundarygJ3gy8vWnzWxMLOA","dateformat": "DAY_DASH","decimalseparator": ".","language": "EN","length": "KM","di-backend": "connectapi.garmin.com","nk": "NT","weight": "KG","x-app-ver": "4.68.0.20","x-requested-with": "XMLHttpRequest"},
        header2 = {"accept": "application/json", "content-type": "application/json;charset=UTF-8","authorization": "Bearer ".concat(jwtToken),"cache-control": "no-cache","di-backend": "connectapi.garmin.com","nk": "NT","weight": "KG","x-app-ver": "4.68.0.20"},
		csvHead = "Activities\nDate,Calories Burned,Steps,Distance,Floors,Minutes Sedentary,Minutes Lightly Active,Minutes Fairly Active,Minutes Very Active,Activity Calories", 
		srv = "https://connect.garmin.com",
		datas = {
				Date                 : '26-06-2023',
				CaloriesBurned       : '5,383',
				Steps                : '300,000',
				Distance             : '36.04',
				Floors               : '75',
				MinutesSedentary     : '500',
				MinutesLightlyActive : '225',
				MinutesFairlyActive  : '33',
				MinutesVeryActive    : '337',
				ActivityCalories     : '5000'
		}; 
		fetch("https://connect.garmin.com/badge-service/badge/available", {
		  "headers": header2,
		  "body": null,
		  "method": "GET"
		}).then(e=>e.json()).then(e=>{
			let challenges = e.filter(e=>e.badgeKey.toLowerCase().indexOf('step') != -1 && e.badgeUuid);
			challenges.map(e=>{
				let dateT = new Date(), targetDate = null,
					setNewDate = (day) => {
					 dateT.setDate(day);
					 return '0'.concat(dateT.getDate().toString()).substr(-2).concat('-','0'.concat(dateT.getMonth()+1).substr(-2), '-', dateT.getFullYear());   
				};
				dateT.setTime(Date.parse(e.badgeEndDate));
				// Subscribe to challenge
				fetch("https://connect.garmin.com/badgechallenge-service/badgeChallenge/".concat(e.badgeUuid, "/optIn/", e.badgeStartDate.toString().split('T')[0]), {
				  "headers":header2,
				  "body": "{}",
				  "method": "POST"
				}).then(e=>e.text()).then(e=>console.log("Subscribe to challenge", e));
				for (var i = 0; i<= 31; i++) {
					targetDate = setNewDate(i);
					datas.Date = targetDate;
					// Create Daily Steps
					fetch(srv + "/upload-service/upload/fitbit/csv", {
						  "headers": header,
						  "body": "------WebKitFormBoundarygJ3gy8vWnzWxMLOA\r\nContent-Disposition: form-data; name=\"userfile\"; filename=\"fitbit.csv\"\r\nContent-Type: text/csv\r\n\r\n"+csvHead+"\n\""+Object.values(datas).join('","')+"\"\r\n------WebKitFormBoundarygJ3gy8vWnzWxMLOA--\r\n",
							  "method": "POST"
							})
					.then(e=>e.json()).then(e=>{
						fetch(srv + "/wellness-service/wellness/status/".concat(e.detailedImportResult.owner,"/",e.detailedImportResult.creationDate.split(' ')[0],"/",e.detailedImportResult.uploadUuid.uuid.replace(/\-/g,'')), {
							  "headers": header,
							  "body": null,
							  "method": "GET"
							}).then(e=>e.text()).then(e=>console.log("Add Steps", e.indexOf('File processed') != -1 ? 'OK' : 'KO'));
					});

				};
			});   
		});
})();

Mode opératoire

Le Mode opératoire ci-dessous est valable  pour les 2 scripts :

  1. Connectez-vous sur une des pages de la plateforme Garmin-Connect (ex : https://connect.garmin.com/modern/daily-summary/2023-06-27)
  2. Ouvrez votre console développeur (Touche F12 de votre clavier, ou bien clic droit sur la page > "Inspecter")
  3. Dans la console développeur, allez (si ce n'est pas déjà le cas), sur l'onglet console.
  4. Copiez-collez le script ci-dessus en ajustant les valeurs à votre convenance (nombre de pas, date, calories, ...)
  5. Validez par la touche entrée.

Conclusion

J'espère que cet article vous aura plu !
Pour ceux qui sont parfois frustrés de voir des personnes pulvériser des scores, je tenais à illustrer qu'il est possible de tricher... que ça existe...
Cependant, les bons score ne s'explique pas toujours par la triche ... il faut aussi tenir compte que certaines personnes sont des athlètes qui se donnent à 10.000 %
Au moins cela vous permettra t-il de relativiser ...
Me concernant, j'ai créé un compte purement fictif pour l'écriture de cet article ;)
Je suis plutôt fier de mes performances, et je vous encourage tous à faire du Sport pour votre santé !!!

Je précise également que cet article n'est pas sponsorisé, mais si toutefois Garmin tombait sur celui-ci, je serais très enthousiaste à l'idée de profiter d'une Garmin Marq 2 dans le cadre d'un article sponsorisé ;)

11 comments

  • Je n’arrive toujours pas a changer le nombre de pas sur une journée précise

  • J’ai essayé la méthode CSV dans tout les sens. Impossible d’augmenter le nombre de pas à une date donnée…

  • Bonjour,

    Sans succès non plus pour moi.
    J’ai testé tous les scripts et la méthode fichier CSV.

    Y a t il des options ou fonctionnalités à activer au préalable?

    Merci d’avance

  • Bonjour,
    J’ai essayé par la console développeur les deux scripts, mais aussi par fichier csv. Tous annoncent des erreurs.
    Réponse sur la console développeur : {« detailedImportResult »:{« uploadId »:207075708809, »uploadUuid »:null, »owner »:103806484, »fileSize »: » », »processingTime »: » », »creationDate »: » », »ipAddress »:null, »fileName »:null, »report »:{« @class »: »uploadReport », »entries »:[], »createdOn »: » », »children »:[], »userProfileId »:103806484}, »successes »:[{« internalId »:207075708809, »externalId »: »FITBIT_IMPORT_6861b88f519b43cbaf91df970af8204e », »messages »:[{« code »:200, »content »: »File processed. »}]}], »failures »:[]}}
    Réponse en importation de fichier csv : Une erreur est survenue lors du transfert. Veuillez réessayer.
    Merci d’avance pour votre réponse.

    • Le script fonctionne correctement, vous récupérez un code 200, donc tout est bon.
      Vérifiez à la date que vous avez renseignez et vous verrez bien le nombre de pas.

      • Bonjour,
        A la date modifiée rien n’a changé.
        Je viens de réessayer à une date plus proche (07/09/23) le script de modification du nombre de pas.

        Les seules modifications effectuées sur le script sont :
        Date : ’07-09-2023′,
        CaloriesBurned : ‘2,372’,
        Steps : ‘10,231’,
        Distance : ‘7.4’,
        Floors : ’13’,
        MinutesSedentary : ‘194’,
        MinutesLightlyActive : ’75’,
        MinutesFairlyActive : ’11’,
        MinutesVeryActive : ‘112’,
        ActivityCalories : ‘1,390’

        La réponse est :
        {« detailedImportResult »:{« uploadId »:208610671469, »uploadUuid »:null, »owner »:103806484, »fileSize »: » », »processingTime »: » », »creationDate »: » », »ipAddress »:null, »fileName »:null, »report »:{« @class »: »uploadReport », »entries »:[], »createdOn »: » », »children »:[], »userProfileId »:103806484}, »successes »:[{« internalId »:208610671469, »externalId »: »FITBIT_IMPORT_e1e8837e52884430a892829cde263455″, »messages »:[{« code »:200, »content »: »File processed. »}]}], »failures »:[]}}

        Lorsque je reviens sur la date : aucune modification n’a eu lieu sur le nombre de pas malgré le code 200.
        Je dois faire une erreur sur les modifications du script que j’ai reportées au dessus, mais je ne vois pas laquelle.

        Merci d’avance pour votre réponse.

  • Bonjour,

    Merci pour ce script. Ca a l’air de fonctionné mais uniquement pour la date actuelle, pour autant (forcément) si on synchronise, ça écrase ce qu’on a fait. J’ai essayé de changer les pas d’aujourd’hui (09/09/2023) et c’est bon, mais pour hier (08/09/2023), ça ne passe pas :/ Est-ce qu’il y a certaines choses à faire ou un délai à respecter ?

    Je reçois le même message d’erreur que les autres.

    Merci pour votre aide !

  • J’ai le même problème que Rauzy Karl mais en ce qui me concerne cela a fonctionné une fois (la première fois) et m’a permis de passer de 9471 pas à 10000 (mon objectif quotidien), sauf que dès que j’ai synchronisé ma montre pour enregistré mes activités, le nombre de pas ce jour-là est retombé à 9471 et cette fois-ci plus aucune possibilité de le modifier, la manip ne fonctionnait plus avec le même résultat que celui exposé ci-dessus par Rauzy Karl.

  • Bonjour,
    J’ai le même problème que Rauzy Karl mais en ce qui me concerne cela a fonctionné la 1ère fois (en copiant le 1er script) et m’a permis de passer de 9471 pas à 10000 (mon objectif quotidien), sauf que dès que j’ai synchronisé ma montre pour enregistré mes activités, le nombre de pas ce jour-là est retombé à 9471 et cette fois-ci plus aucune possibilité de le modifier, la manip ne fonctionnait plus avec le même résultat que celui exposé ci-dessus par Rauzy Karl. Y a-t-il un moyen pour modifier le nombre de pas d’une journée après avoir déjà enregistré des activités ce même jour via la montre Garmin ?
    Merci d’avance pour votre réponse.

Laisser une réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site est protégé par reCAPTCHA et le GooglePolitique de confidentialité etConditions d'utilisation appliquer.