Last Updated on 15 december 2023 by Syds
Tot mijn grote spijt heeft mijn Polar M600 sporthorloge na vele jaren trouwe dienst zijn glans, uithoudingsvermogen en touch verloren. En heeft het veld moeten ruimen voor een spiksplinter nieuwe Garmin Forerunner 955. Super blij mee.
Maar ehhh, er staat nog wel een Polar Balance weegschaal in de slaapkamer. Hoe krijg ik nu die gewichtsmetingen vanuit Polor Flow naar Garmin connect. Op het internet was hier 1-2-3 niets over te vinden, dus ben zelf maar wat gaan sleutelen m.b.v. python. Resultaat een python script die:
- De laatste weging uit Polar flow haalt
- Dit omzet naar FIT formaat
- Het FIT bestand upload naar Garmin Connect
Onhebbelijkheid van de Polar App op dit moment is dat de Balance Scale gewichtsmeting pas met je Fysieke Info gesynchroniseerd wordt als je je profiel opent in de app. Hopelijk wordt dit later nog door Polar aangepast, of wordt het mogelijk gemaakt om je Balance Scale metingen te benaderen via de AccessLink API. Maar voor nu is de werkwijze:
- Meet je gewicht door op de Balance Scale te gaan staan (afhankelijk van je horloge wordt dit op direct geuploaded naar de Polar Cloud, of via de app op je telefoon)
- Open in de Polar Flow app je profiel (bovenin het menu op je foto klikken)
Hieronder de installatie instructies.
Reeds up-and-running:
- Windows of linux systeem (onderstaande instructies zijn linux gebasseerd, maar zijn vergelijkbaar voor windows)
- Polar Flow account
- Polar Balance gekoppeld aan Polar Flow account
- Garmin connect account
- Python 3 met pip gebasseerd op python3
Stap 1. Installatie van het synchronisatie script
Download mijn sync script vanaf github
pi@raspberrypi:~ $ git clone p/Sync-Polar-Balance-scale-to-Garmin-Connect.git
Stap 2. Creer een nieuwe API client op Polar AccessLink
Navigeer naar https://admin.polaraccesslink.com/
Log in met je Polar Flow account, en klik op “+ Create a client”, het volgende scherm verschijnt:
Vul hier je persoonlijke gegevens in, vul bij Organisation je volledige naam in. Laat de optie ‘I intend to integrate on behalf of a client or third-party organization’ op uit staan. Accepteer de AccessLink Limitied Licence Agreement. Klik daarna op “Next”, het volgende scherm verschijnt:
Vul hier onderstaande gegevens in, vervang hier bij het emailadres voor jou persoonlijke emailadres. Bij “Application web site” kun je je eigen website invullen, of blanco laten.
Klik daarna op “SAVE”, je krijgt daarna een overzicht van de ingevoerde gegevens. Als deze kloppen, klik daarna op “CONFIRM”. Kloppen ze niet, dan kun je door op “PREVIOUS” te klikken de gegevens wijzigen. Heb je op “CONFIRM” geklikt, dan volgt het volgende scherm:
Maak een screenshot van deze pagina en/of kopieer de Client ID en Client Secret naar een notepad bestandje, en sla deze op. Deze Client ID en Client Secret krijg je maar één keer, en heb je in de volgende stap nodig. Je daarna uitloggen en het browservenster sluiten.
Stap 3. Polar AccessLink credentials invullen in config.yml
Open de file config.yml met je favoriete editor en vul het Client ID en Client Secret in achter client_id en client_secret:
pi@raspberrypi:~/Sync-Polar-Balance-scale-to-Garmin-Connect $ vi config.yml
De file ziet er daarna als volgt uit:
pi@raspberrypi:~/Sync-Polar-Balance-scale-to-Garmin-Connect $ cat config.yml
client_id: 5e286b15-9b85-45c7-971a-157a7f90d832
client_secret: e022f040-b74b-4c15-ae47-87f4133e0966
Stap 4. Python bibliotheken installeren
De vereiste python bibliotheken installeer je met:
pi@raspberrypi:~/Sync-Polar-Balance-scale-to-Garmin-Connect $ pip3 install -r requirements.txt
Stap 5. Polar Flow user account linken met sync applicatie
Start hiervoor het python script “authorization.py” op:
pi@raspberrypi:~/Sync-Polar-Balance-scale-to-Garmin-Connect $ python authorization.py
Navigate to http://localhost:5000/ for authorization.
* Serving Flask app "authorization" (lazy loading)
* Environment: production
WARNING: Do not use the development server in a production environment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://localhost:5000/ (Press CTRL+C to quit)
En navigeer met je browser naar https://flow.polar.com/oauth2/authorization?response_type=code&client_id=<YOUR_CLIENT_ID>. Vervang hierbij <YOUR_CLIENT_ID> voor het door jou gegenereerde client_id in stap 2. Dus in mijn geval https://flow.polar.com/oauth2/authorization?response_type=code&client_id=5e286b15-9b85-45c7-971a-157a7f90d832 Het volgende scherm verschijnt:
Zoals je kunt lezen is de client succesvol geautoriseerd en kun je de pagina sluiten. En je kunt ook het python script met ctrl+c beeindigen. Aan je config.yml file zijn nu een access_token en user_id toegevoegd.
Stap 6. Garmin connect account gegevens opslaan
Open met je favoriete editor de file .guploadrc (of gupload.ini voor windows):
pi@raspberrypi:~/Sync-Polar-Balance-scale-to-Garmin-Connect $ vi .guploadrc
En vul achter username en password jou Garmin connect username en password, de file ziet er daarna als volgt uit:
pi@raspberrypi:~/Sync-Polar-Balance-scale-to-Garmin-Connect $ cat .guploadrc
[Credentials]
username=sydspost@gmail.com
password=<very secret>
Stap 7. Run het sync script
Start het synchonizatie script met:
pi@raspberrypi:~/Sync-Polar-Balance-scale-to-Garmin-Connect $ python sync.py
2023-12-15T17:17:55.165 [INFO] New physical information available.
2023-12-15T17:17:55.468 [INFO] Wrote weight.fit file to disk
2023-12-15 17:17:55,684 [INFO] Try to login on GarminConnect...
2023-12-15 17:18:00,444 [INFO] Logged in as sydspost@gmail.com
2023-12-15 17:18:00,539 [WARNING] Upload failure: Failed to upload weight.fit
2023-12-15 17:18:00,539 [INFO] All done.
2023-12-15T17:18:00.555 [INFO] Processed physical information created on:2023-12-15T16:17:46.000
Note: De waarschuwing “Upload failure” kun je negeren, het script werkt prima en registreert je nieuwe gewichtsmeting in de Garmin Connect cloud.
Als er geen nieuwe gewichtsmeting beschikbaar is, dan sluit het script af zonder de gegevens te uploaden naar Garmin connect:
pi@raspberrypi:~/Sync-Polar-Balance-scale-to-Garmin-Connect $ python sync.py
2023-12-15T17:20:27.846 [INFO] No new physical information available.
Stap 8. Executie van script toevoegen aan crontab
Voeg de volgende regel toe aan je crontab:
0 3 * * * cd /home/pi/Sync-Polar-Balance-scale-to-Garmin-Connect; python3 /home/pi/Sync-Polar-Balance-scale-to-Garmin-Connect/sync.py
Nu wordt iedere nacht om 3 uur je laast geregistreerde gewichtsmeting van je Polar Balance weegschaal gesynchroniseerd met Garmin Connect.