Saturday, January 23, 2016

Recording Pebble Steps Rube-Goldberg Style

I posted previously about some of the reasons we are using Pebble watches this year as our activity trackers and smart watches. So far we have been very pleased. My employer continues to offer health care incentives for recording activity steps. This year, they are using a company called 10K-A-Day to track steps. Though it employs a cheesy motivational metaphor of revealing pictures along your selected nature trail as you accumulate steps, it does have the big advantage of providing an iPhone app allowing manual entry of steps without the tedious navigation through corporate webpages that time out after a few minutes.

For a couple of weeks, I have been hand-transcribing steps from my Pebble world to 10K-A-Day ... yeah, enough of that nonsense. I should be focusing on walking, not on bookkeeping. Pebble integrates directly into the iOS Health app and, using the QS Access app, I am able to export Heath data to a *.csv file. Great for backup but nobody allows bulk importing of steps.

10K-A-Day, as did our previous corporate provider, allows synchronization directly from Fitbit. However, I really dislike the Fitbit wrist-wearables and would rather not participate that to have to use one again. An application called Sync Solver Health to Fitbit  allows me to move steps between iOS Health and Fitbit. There are two other apps in that bundle but this is the one needed for my purpose. So, combined with my workout tracking work-flow, I now have the following Rube-Goldberg machine data architecture. Fortunately, the data paths are automated, assuming the specific apps involved remain running in the background. [With a few changes noted, these instructions will also work if you are tracking you steps with with the iPhone itself.]



Configuring Step Synchronization

The most complicate bit is to get steps from my Pebble to the corporate tracking system. First, I have to ensure that the Pebble is syncing with the iOS Health application. This is done in the Pebble Time app by configuring its included Health application. First turn on Enable Pebble Health, then turn on Sync with Apple HealthKit. Based on my configuration, the Info fields at the bottom are being read back from the iOS Health app so no point in entering them here. I also turned off the I want to be more active and I want to sleep more flags to try to disable the inane messages the app spams me with ... not sure that it is sufficient to make them go away.


Importantly, I also made sure that only the Pebble is generating steps, not the phone itself. This is done in the iPhone under Settings > Privacy > Motion & Fitness.  Here, the flag Fitness Tracking is turned off. [If you are measuring steps with the iPhone itself rather than a smart watch, change this setting to ON]


Now the sources in the iOS Health app need to be configured. This determines what applications read to and write from the iOS Health app which acts as a hub for this information. It is still not clear to me what data is owned by the app and which is only a link to external data.

Below is what I have configured. The Pebble is responsible for creating and writing Steps and Sleep information. These, in turn, are read by the Sync Solver Health to Fitbit app. I also allow Pebble to read back Height, Sex, and Weight information which I have manually entered into Health.


Lastly, the Sync Solver Health to Fitbit app needs to be told what to do. As shown below, I have configured it to pull Steps and Sleep data from Pebble Time.  I assume that this really means "pull data from the hub that is marked as having been pushed from the Pebble." The iOS Health app keeps track of where data comes from. The other entry, under the banner label "Heath" I initially thought was the correct choice. However, this option is used to pull data that was manually entered into iOS Health, not data that was pushed into iOS Health. [If you are tracking steps with the iPhone, select the Steps option shown under the name of your phone. In my example below, this would be Edward]



With all of this configuration completed, I used Sync Solver Health to Fitbit to push data from the beginning of the month to Fitbit. This pre-population step was not a complete success. All of the step counts were shifted forward by a day, and extra steps were combined onto the last transferred day. For daily updates, it seems to be working correctly though counts are a bit off. The Fitbit account only gets updated a few times a day but that is not a problem for me as I never look there for progress, all I care about is that the daily totals propagate correctly so that they can be tallied in the corporate wellness system.

Update Jan 25 - I have posted an explanation for what I think is happening that causes the two problems described above.



Once in Fitbit, the synchronization over to the 10k-A-Day website works pretty accurately. The results can then pulled back into the 10k-A-Day iPhone app for viewing. If necessary, I can also manually override the data in 10k-A-Day when things go wrong.

For all of this to work, The Pebble Time application needs to remain running as this is the gateway through which the watch communicates. In addition, The Sync Solver Health to Fitbit app should remain running to perform periodic background data pushes.

There are a lot of moving parts here which is unfortunate. What I would really prefer is for the corporate app to directly pull from iOS Health, skipping both Fitbit and Sync Solver.

Update Jan 28 - I have experienced delays of up to 24 hr before all steps are properly accounted for in 10K-A-Day. Patience may be in order as, eventually, everything gets straightened out.




Workout Management

This configuration is completely separate from the steps synchronization. Workouts are explicit activities such as hiking, running, or biking, in which detailed data is collected. At the core of this solution is the iSmoothRun app on the iPhone. It connects to my various Bluetooth LE sensors, phone GPS, and phone accelerometer in order to collect a time history of data generated during a workout. A companion watch app on the Pebble allow remote display of live data.

The setup is performed in the iSmoothRun app itself. A great feature is that exports can be performed automatically when saving an activity. I have configured two export destinations. I used to push TCX files to Dropbox so that I could manually import them into SportTracks.mobi. Now, with iSmoothRun, I can perform an export directly to SportTracks.mobi. I continue to export to Dropbox to maintain a backup copy more under my control.


The second great feature of iSmoothRun is that it allows me to use the Pebble watch as a remote display, though not as flexible as those I could setup with WahooFitness and the  Echo Watch. As shown in the screens below, I enable the Pebble app and configure the pages that will display on the watch when an activity is in progress.


I start an activity from the front page of iSmoothRun on the iPhone, selecting what kind of activity I am doing. This automatically starts the watch app. I can then lock the screen and put the phone away. The configured data points are now available on the Pebble. The Pebble interface also gives me control of pausing and marking lap points. I cannot use this system to monitor my location while the activity is in progress, only after the fact.


When the activity is saved, it shows up in the iSmoothRun log window. Assuming I have an internet connection, it also automatically exports and appears in the SportTracks.mobi website, a great place to look at the graphs as there analysis features are very well done.


In addition to creating and managing workouts, summary information about these workouts can be pushed into iOS Health for display in the dashboard. To configure this, it must be setup as a "source" in iOS Health. The key here is to allow Write on the Workouts category. The others are optional for me as I do not display them on the dashboard. For the moment, I am assuming that iOS Health owns the personal measurements data. Again, I have ensured that no data points, such as weight, are both written and read to avoid loops.



No comments:

Post a Comment

Relevant comments and questions are welcome but submissions with spam-links will not be published.