<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>garmin &#8211; www.musings.ch</title>
	<atom:link href="https://www.musings.ch/tag/garmin/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.musings.ch</link>
	<description></description>
	<lastBuildDate>Wed, 19 May 2021 08:18:09 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.2</generator>

<image>
	<url>https://www.musings.ch/wp-content/uploads/2020/02/cropped-56884-200-2-32x32.png</url>
	<title>garmin &#8211; www.musings.ch</title>
	<link>https://www.musings.ch</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>withings-sync on debian buster</title>
		<link>https://www.musings.ch/2021/05/19/garmin-withings-sync-on-debian-buster-python3/</link>
		
		<dc:creator><![CDATA[random individual]]></dc:creator>
		<pubDate>Wed, 19 May 2021 06:24:46 +0000</pubDate>
				<category><![CDATA[fitness]]></category>
		<category><![CDATA[garmin]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[withings]]></category>
		<category><![CDATA[buster]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[python3]]></category>
		<category><![CDATA[sync]]></category>
		<category><![CDATA[weight]]></category>
		<guid isPermaLink="false">https://www.musings.ch/?p=861</guid>

					<description><![CDATA[Since Withings migrates to OAuth 2.0 by 2021-09, I felt it was time to update the flaky sync solution I had running so far. Now running https://github.com/jaroslawhartman/withings-sync with debian&#8217;s virtualenv: (get token, then set up a regular job to sync)]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Since Withings migrates to OAuth 2.0 by 2021-09, I felt it was time to update the flaky sync solution I had running so far.</p>



<p class="wp-block-paragraph">Now running <a href="https://github.com/jaroslawhartman/withings-sync">https://github.com/jaroslawhartman/withings-sync</a> with debian&#8217;s virtualenv:</p>



<pre class="wp-block-code"><code>apt install virtualenv python3-virtualenv</code></pre>



<pre class="wp-block-code"><code>virtualenv -p python3 withings-sync</code></pre>



<pre class="wp-block-code"><code>source withings-sync/bin/activate</code></pre>



<pre class="wp-block-code"><code>pip install withings-sync</code></pre>



<pre class="wp-block-code"><code>export WITHINGS_USER=you</code></pre>



<pre class="wp-block-code"><code>withings-sync</code></pre>



<p class="wp-block-paragraph">(get token, then set up a regular job to sync)</p>



<pre class="wp-block-code"><code>$ cat sync.sh
#!/bin/bash
source withings-sync/bin/activate
export WITHINGS_USER=you
export GARMIN_USERNAME=you-but-on-garmin
export GARMIN_PASSWORD=your-garmin-password
withings-sync
$ chmod 700 sync.sh</code></pre>



<pre class="wp-block-code"><code>crontab -e</code></pre>



<pre class="wp-block-code"><code>12 4 * * * cronic /home/you/sync.sh</code></pre>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Garmin: auto step</title>
		<link>https://www.musings.ch/2020/06/23/garmin-auto-step/</link>
		
		<dc:creator><![CDATA[random individual]]></dc:creator>
		<pubDate>Tue, 23 Jun 2020 18:28:37 +0000</pubDate>
				<category><![CDATA[garmin]]></category>
		<category><![CDATA[ouch]]></category>
		<category><![CDATA[autostep]]></category>
		<category><![CDATA[stepgoal]]></category>
		<guid isPermaLink="false">https://www.musings.ch/?p=591</guid>

					<description><![CDATA[Thanks to I&#8217;ve concluded that I need to disable that feature 🙂 My step counts fluctuate so heavily, and the algorithm is so basic, it&#8217;s basically impossible to meet step goals consistently. The most trivial optimization of auto step would be to take avg steps-beyond-goal into account when decreasing the goal, but it seems that&#8217;s&#8230; <a class="more-link" href="https://www.musings.ch/2020/06/23/garmin-auto-step/">Continue reading <span class="screen-reader-text">Garmin: auto step</span></a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Thanks to </p>



<figure class="wp-block-embed-wordpress wp-block-embed is-type-wp-embed is-provider-robert-runs"><div class="wp-block-embed__wrapper">
<blockquote class="wp-embedded-content" data-secret="Zfk1IuCav9"><a href="https://robertruns.com/2019/09/20/understanding-garmins-auto-step-goal-algorithm/">Understanding Garmin&#8217;s Auto Step Goal Algorithm</a></blockquote><iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  title="&#8220;Understanding Garmin&#8217;s Auto Step Goal Algorithm&#8221; &#8212; Robert Runs" src="https://robertruns.com/2019/09/20/understanding-garmins-auto-step-goal-algorithm/embed/#?secret=Zfk1IuCav9" data-secret="Zfk1IuCav9" width="600" height="338" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
</div></figure>



<p class="wp-block-paragraph">I&#8217;ve concluded that I need to disable that feature <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> My step counts fluctuate so heavily, and the algorithm is so basic, it&#8217;s basically impossible to meet step goals consistently. The most trivial optimization of auto step would be to take avg steps-beyond-goal into account when decreasing the goal, but it seems that&#8217;s not what it currently does.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>garmin tracks heatmap</title>
		<link>https://www.musings.ch/2020/02/26/garmin-tracks-heatmap/</link>
		
		<dc:creator><![CDATA[random individual]]></dc:creator>
		<pubDate>Wed, 26 Feb 2020 20:35:36 +0000</pubDate>
				<category><![CDATA[code]]></category>
		<category><![CDATA[garmin]]></category>
		<category><![CDATA[heatmap]]></category>
		<category><![CDATA[jsfiddle]]></category>
		<guid isPermaLink="false">https://www.musings.ch/?p=118</guid>

					<description><![CDATA[If you want to create your own heatmap &#8211; but lack a webserver &#8211; I&#8217;ve updated the script shared earlier to allow generating content to run on jsfiddle. How to plot a heatmap of your Garmin tracks on Google Maps JS API: #1 request all your data from Garmin: https://www.garmin.com/en-US/account/datamanagement/ #2 download https://github.com/musings-hub/garmin-fit-to-heatmap-js #3 run&#8230; <a class="more-link" href="https://www.musings.ch/2020/02/26/garmin-tracks-heatmap/">Continue reading <span class="screen-reader-text">garmin tracks heatmap</span></a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">If you want to create your own heatmap &#8211; but lack a webserver &#8211; I&#8217;ve updated the script shared earlier to allow generating content to run on <a href="https://jsfiddle.net/">jsfiddle</a>.</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><a href="https://www.musings.ch/wp-content/uploads/2020/02/garmin-google-maps-api-heatmap-jsfiddle-example-1.png"><img fetchpriority="high" decoding="async" width="1223" height="611" src="https://www.musings.ch/wp-content/uploads/2020/02/garmin-google-maps-api-heatmap-jsfiddle-example-1.png" alt="" class="wp-image-122" srcset="https://www.musings.ch/wp-content/uploads/2020/02/garmin-google-maps-api-heatmap-jsfiddle-example-1.png 1223w, https://www.musings.ch/wp-content/uploads/2020/02/garmin-google-maps-api-heatmap-jsfiddle-example-1-300x150.png 300w, https://www.musings.ch/wp-content/uploads/2020/02/garmin-google-maps-api-heatmap-jsfiddle-example-1-1024x512.png 1024w, https://www.musings.ch/wp-content/uploads/2020/02/garmin-google-maps-api-heatmap-jsfiddle-example-1-768x384.png 768w" sizes="(max-width: 1223px) 100vw, 1223px" /></a><figcaption>a screenshot of jsfiddle, with a heatmap of your garmin track locations</figcaption></figure></div>



<p class="wp-block-paragraph"><strong>How to plot a heatmap of your Garmin tracks on Google Maps JS API:</strong></p>



<p class="wp-block-paragraph">#1 request all your data from Garmin: <a href="https://www.garmin.com/en-US/account/datamanagement/">https://www.garmin.com/en-US/account/datamanagement/</a></p>



<p class="wp-block-paragraph">#2 download <a href="https://github.com/musings-hub/garmin-fit-to-heatmap-js">https://github.com/musings-hub/garmin-fit-to-heatmap-js</a></p>



<p class="wp-block-paragraph">#3 run it: <code>python3 fit-to-js-threaded.py ./Garmin/fit/</code></p>



<p class="wp-block-paragraph">This will generate a file named &#8220;<code>heatmap-datapoints.js</code>&#8220;.</p>



<p class="wp-block-paragraph">#4 open <code>heatmap-datapoints.js</code> and copy the contents into jsfiddle (see screenshot above).</p>



<p class="wp-block-paragraph">#5 update the javascript to include your own API key for Google Maps API (see <a href="https://developers.google.com/maps/documentation/javascript/get-api-key">https://developers.google.com/maps/documentation/javascript/get-api-key</a> for how to get such a key if you don&#8217;t have one already).</p>



<p class="wp-block-paragraph">#6 click &#8220;Run&#8221; in jsfiddle.</p>



<p class="wp-block-paragraph">#7 admire the heatmap of your location based activities <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f60a.png" alt="😊" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>all garmin activities on a map</title>
		<link>https://www.musings.ch/2020/02/24/all-garmin-activities-on-a-map/</link>
		
		<dc:creator><![CDATA[random individual]]></dc:creator>
		<pubDate>Mon, 24 Feb 2020 20:24:19 +0000</pubDate>
				<category><![CDATA[code]]></category>
		<category><![CDATA[fun]]></category>
		<category><![CDATA[garmin]]></category>
		<category><![CDATA[kml]]></category>
		<category><![CDATA[map]]></category>
		<category><![CDATA[mymaps]]></category>
		<category><![CDATA[visualization]]></category>
		<guid isPermaLink="false">https://www.musings.ch/?p=108</guid>

					<description><![CDATA[After further scouring through my data export from Garmin Connect (see https://www.musings.ch/2020/02/22/all-garmin-tracks-on-a-map/), I found ${username}_${index?}_summarizedActivities.json, which contains all activities I ever recorded. 😃 That one contains 468 usable startLongitude/startLatitude elements, which fits nicely into kml as Placemark and renders well on https://www.google.com/mymaps. The resulting map: Which also works well zooming in: Again, drop me a&#8230; <a class="more-link" href="https://www.musings.ch/2020/02/24/all-garmin-activities-on-a-map/">Continue reading <span class="screen-reader-text">all garmin activities on a map</span></a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">After further scouring through my data export from Garmin Connect (see <a href="https://www.musings.ch/2020/02/22/all-garmin-tracks-on-a-map/">https://www.musings.ch/2020/02/22/all-garmin-tracks-on-a-map/</a>), I found ${username}_${index?}_summarizedActivities.json, which contains all activities I ever recorded. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f603.png" alt="😃" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<p class="wp-block-paragraph">That one contains 468 usable startLongitude/startLatitude elements, which fits nicely into kml as Placemark and renders well on <a href="https://www.google.com/mymaps">https://www.google.com/mymaps</a>.</p>



<p class="wp-block-paragraph">The resulting map:</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><a href="https://www.musings.ch/wp-content/uploads/2020/02/garmin-activities-as-kml-on-mymaps.png"><img decoding="async" width="1024" height="557" src="https://www.musings.ch/wp-content/uploads/2020/02/garmin-activities-as-kml-on-mymaps-1024x557.png" alt="" class="wp-image-109" srcset="https://www.musings.ch/wp-content/uploads/2020/02/garmin-activities-as-kml-on-mymaps-1024x557.png 1024w, https://www.musings.ch/wp-content/uploads/2020/02/garmin-activities-as-kml-on-mymaps-300x163.png 300w, https://www.musings.ch/wp-content/uploads/2020/02/garmin-activities-as-kml-on-mymaps-768x418.png 768w, https://www.musings.ch/wp-content/uploads/2020/02/garmin-activities-as-kml-on-mymaps.png 1027w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><figcaption>all my Garmin activities anchored in a location, plotted on a map using kml Pacemarks</figcaption></figure></div>



<p class="wp-block-paragraph">Which also works well zooming in:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1004" height="619" src="https://www.musings.ch/wp-content/uploads/2020/02/garmin-activities-as-kml-on-mymaps-zoomed.png" alt="" class="wp-image-110" srcset="https://www.musings.ch/wp-content/uploads/2020/02/garmin-activities-as-kml-on-mymaps-zoomed.png 1004w, https://www.musings.ch/wp-content/uploads/2020/02/garmin-activities-as-kml-on-mymaps-zoomed-300x185.png 300w, https://www.musings.ch/wp-content/uploads/2020/02/garmin-activities-as-kml-on-mymaps-zoomed-768x473.png 768w" sizes="auto, (max-width: 1004px) 100vw, 1004px" /><figcaption>zoomed in view of all my Garmin activities in a specific region</figcaption></figure>



<p class="wp-block-paragraph">Again, <a href="https://www.musings.ch/contact/">drop me a note</a> if you feel I could help you with any of this.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>all garmin tracks on a map</title>
		<link>https://www.musings.ch/2020/02/22/all-garmin-tracks-on-a-map/</link>
					<comments>https://www.musings.ch/2020/02/22/all-garmin-tracks-on-a-map/#comments</comments>
		
		<dc:creator><![CDATA[random individual]]></dc:creator>
		<pubDate>Sat, 22 Feb 2020 10:32:03 +0000</pubDate>
				<category><![CDATA[code]]></category>
		<category><![CDATA[fun]]></category>
		<category><![CDATA[garmin]]></category>
		<category><![CDATA[fit]]></category>
		<category><![CDATA[heatmap]]></category>
		<category><![CDATA[kml]]></category>
		<category><![CDATA[map]]></category>
		<category><![CDATA[visualization]]></category>
		<guid isPermaLink="false">https://www.musings.ch/?p=14</guid>

					<description><![CDATA[Today I had some fun exporting all my recorded Garmin tracks and plotting them as a heatmap on Google Maps. After having wanted to create a map like this for ages, I finally found some time to hack together the toolchain needed. If you want to do the same, the easiest way I&#8217;ve found was:&#8230; <a class="more-link" href="https://www.musings.ch/2020/02/22/all-garmin-tracks-on-a-map/">Continue reading <span class="screen-reader-text">all garmin tracks on a map</span></a>]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><a href="https://www.musings.ch/wp-content/uploads/2020/02/garmin-tracks-on-worldmap.png"><img loading="lazy" decoding="async" width="912" height="522" src="https://www.musings.ch/wp-content/uploads/2020/02/garmin-tracks-on-worldmap.png" alt="garmin tracks plotted on a map of the world" class="wp-image-79" srcset="https://www.musings.ch/wp-content/uploads/2020/02/garmin-tracks-on-worldmap.png 912w, https://www.musings.ch/wp-content/uploads/2020/02/garmin-tracks-on-worldmap-300x172.png 300w, https://www.musings.ch/wp-content/uploads/2020/02/garmin-tracks-on-worldmap-768x440.png 768w" sizes="auto, (max-width: 912px) 100vw, 912px" /></a><figcaption>everywhere in this world I&#8217;ve run, biked, hiked, skied, swum</figcaption></figure>



<p class="wp-block-paragraph">Today I had some fun exporting all my recorded Garmin tracks and plotting them as a heatmap on Google Maps.</p>



<p class="wp-block-paragraph">After having wanted to create a map like this for ages, I finally found some time to hack together the toolchain needed. If you want to do the same, the easiest way I&#8217;ve found was:</p>



<p class="wp-block-paragraph">#1 Ask Garmin for an export of all your data: <a href="https://www.garmin.com/en-US/account/datamanagement/">https://www.garmin.com/en-US/account/datamanagement/ </a></p>



<p class="wp-block-paragraph">#2 Use the fabulous <a href="https://github.com/polyvertex/fitdecode">https://github.com/polyvertex/fitdecode</a> to extract the lat/longs of your tracks.</p>



<p class="wp-block-paragraph">#3 Use  the Google Maps heatmap API to plot the data: <a href="https://developers.google.com/maps/documentation/javascript/reference/visualization">https://developers.google.com/maps/documentation/javascript/reference/visualization</a></p>



<p class="wp-block-paragraph">Alternatively, <a href="https://www.musings.ch/contact/">drop me a line</a>, and I&#8217;d be happy to help <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<p class="wp-block-paragraph">You might wonder how to plot all your tracks on a map &#8211; which is what I initially started with. However, with 346 recorded activities, using kml to plot them (through various platforms) I found it difficult to navigate the result. &#8211; If you&#8217;d like to get your fit files converted to kml to play around with them, also <a href="https://www.musings.ch/contact/">drop me a note</a>, I have a converter for that too.</p>



<p class="wp-block-paragraph">A close up view (without adjusting radius, maxIntensity,.. so not optimal):</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><a href="https://www.musings.ch/wp-content/uploads/2020/02/sf-closeup-heatmap.png"><img loading="lazy" decoding="async" width="618" height="261" src="https://www.musings.ch/wp-content/uploads/2020/02/sf-closeup-heatmap.png" alt="Zooming in, this is how the heatmap fits to specific routes beautifully." class="wp-image-103" srcset="https://www.musings.ch/wp-content/uploads/2020/02/sf-closeup-heatmap.png 618w, https://www.musings.ch/wp-content/uploads/2020/02/sf-closeup-heatmap-300x127.png 300w" sizes="auto, (max-width: 618px) 100vw, 618px" /></a><figcaption>close up view of the heatmap of a specific area</figcaption></figure></div>



<p class="wp-block-paragraph"><strong>Update:</strong> I&#8217;ve uploaded the script to generate a javascript include on github: <a href="https://github.com/musings-hub/garmin-fit-to-heatmap-js">https://github.com/musings-hub/garmin-fit-to-heatmap-js</a> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<p class="wp-block-paragraph"><strong>Update:</strong> I&#8217;ve updated the script to generate content to run on <a href="https://jsfiddle.net/">jsfiddle</a>: <a href="https://www.musings.ch/2020/02/26/garmin-tracks-heatmap/">https://www.musings.ch/2020/02/26/garmin-tracks-heatmap/</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.musings.ch/2020/02/22/all-garmin-tracks-on-a-map/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
	</channel>
</rss>
