Wednesday, March 25, 2015

Settings in PlexFit Pebble 1.14 explained

Hi guys,

1.14 was released yesterday to the Pebble App Store and since Pebble App Store has very poor update policy. I was actually taking advantage of it and used it as a way to test it for limited audience. The initial feedback was good and I will release it soon to everyone.

With the release of 1.14, there were a lot of changes and new features and I want to explain those features/settings in this blog, hoping that everyone will understand the new settings and make those work for you.

First of all, here are the new features:
1) New beta algorithm (Magnitude)
2) Finer granularity of sensitivity control
3) Update or refresh frequency setting added for users to control how quickly the watch face is updated (to conserve battery)

Now let me explain what the existing and new settings mean:

1. Calibration

This is actually the most asked about setting. I have received so far at least 100 emails asking about this so I will try my best to be clear about this topic. First of all, the point of the calibration is to take into account the fact that not all Pebble are made equal. By default, due to manufacturing variation, all Pebble will have very different base calibration values.

By default, an accelerometer at rest on the face of the Earth should register a base acceleration value of 1G or 1000mG, that's equal to 9.80 m/s * s. The Earth exerts a gravitation force on any accelerometer on Earth causing this value. Now, any accelerometers by default will have the base readings deviate from this value, some register 980, some register 1020, 1010, etc... so on and so forth. How far it deviates from the base value is based on the manufacturing tolerance and based on how much the company is willing to spend on QC.

Now, how this base value affects the pedometer algorithm you may ask. That's because the accelerometer is now known to have an offset from the expected value, then all the readings from this accelerometer have a high chance of having this offset as well and they are not accurate, a sound assumption right ? So, let's assume that we know this offset, we can assume that we can subtract this offset from every accelerometer readings then feed that to the algorithm then we should expect the algorithm should behave the same on all the Pebble, a reasonable assumption here.

So when you calibrate your Pebble using PlexFit, what it does is that, it takes a lot of measurement in the 10 seconds, then it computes the average and compares that against the base expected acceleration value, which is 1000mG. Any offset from this value will be reported in the Calibration(x) at the end of the calibration (actually the calibration algorithm is a bit more complicated than that but this is the general idea). Then, PlexFit will store this value and uses it to subtract every readings from it before feeding to the algorithms.

This calibration offset affects both algorithm since it is subtracted from the data before feeding to the algorithms.

2. Sensitivity Level

In short, this is a way for you to customize how sensitive you want the algorithm to be. If the current algorithm is too sensitive for you, reduce the sensitivity level (more negative) and vice versa. In 1.14, this setting has been adjusted to be more granular (around 25% finer than in 1.13 and earlier) so that you can select the sensitivity settings that fit your needs better.

Note that this setting works for both algorithms (Rhythm and Magnitude)

3. Low Pass Filter

This setting is part of the Rhythm algorithm. It serves as an additional filter to filter away events that do not resemble a walking motion. Let's say you take shower, eating, etc... and you have a lot of false positive counts on your PlexFit while using the Rhythm algorithm. This setting will allow you to filter out those events and it should greatly reduce the number of false positives from other activities in your daily life. Some users report that it also filters out false positives when the users drive, ride motorcycle, etc...

Note that this setting only works with Rhythm algorithm. It will not do anything if you select Magnitude algorithm.

4. Step Threshold

This setting affects both the Rhythm and Magnitude algorithm. It controls how many valid step events PlexFit must register before it turns on the pedometer and start tracking. This setting should help considerably if you suffers from a lot of false positives from any activities in your daily life that are not walking (for instance typing, eating, hand gestures while talking etc....). Because this restricts that the user has to continuously walking for more than x number of steps before it will start tracking, any isolated motions like shaking wrist, etc... will not trigger the pedometer.

Please note that there's a battery trade-off if you go to higher step threshold setting due to PlexFit has to do more calculation by comparing more past events to ensure that you walk enough to trigger the pedometer. You should conservatively increase this if you have issues with false positives.

5. Algorithm

Yes, this is the beef of 1.14 and this is the one feature that many users have been asking about. I will try my best to explain here but please let me know if you have any questions or follow-ups and I will address here as well.

The initial algorithm included with PlexFit is the Rhythm algorithm. It's based on the latest research on walking motion and it basically tracks and compares user movement to a rhythm. It works well for users who have normal walking rhythm with certain arm swings when walking but its con is that it doesn't track well when a) users have walking rhythms different from the rhythm expected by the algorithm b) users who artificially constrain or restrict their walking rhythm by actions like putting hands in pocket, using muscle to dampen acceleration generated by arm swing, etc... Please note that you can adjust the above settings so that PlexFit can fit your walking rhythm but there are cases where the users couldn't find the correct settings for them at all and that's a problem preventing PlexFit from appealing to more users.

So I developed the alternative algorithm called Magnitude. Different from Rhythm, it doesn't care if the users walk, or do any actions at all. As long as the magnitude of the accelerometer values is large enough or similar to the value generated from a valid walking event, PlexFit will count that as step. This algorithm is more like a general algorithm that should cater to a larger public or to users who don't have or don't like a normal walking rhythm expected by the previous algorithm. This algorithm should work well enough for most users provided that you take time to tune the sensitivity levels and step threshold to fit your walking style while mitigating false positives. Please note that low pass filter is a Rhythm algorithm setting and it will not do anything if you select the Magnitude algorithm.

6) Update Frequency

Ok last but not least, this new setting allows you to control how frequently you want the watch app to update whenever the step count and active time change. Currently it's set to update immediately as new step coming in but given the understandings that e-ink consumes battery more when there are a lot of refresh or motion. I added in this setting so that you can conserve battery life by having the watch face refresh less often. If you do not check PlexFit frequently, this setting is great for saving battery.

Ok that should be everything in 1.14. Please let me know if you have any questions and I will post it here for everyone to see :). Thank you for your supports and for all the constructive feedbacks I have received. You guys are making PlexFit better day by day and I really appreciate that !!

Sunday, March 22, 2015

New version of Beta Sleep Tracker and companion Android App Released

Hi guys,
I just released a new beta of the PlexFit Sleep Tracker and the companion app (initial release).

Changelog for the PlexFit Sleep Tracker app for Pebble (version 1.2):
_ Battery optimization
_ Algorithm optimization
_ Added sync support to the Android companion app

You can get it here: Link

Initial release of the companion PlexFit Sleep Tracking Beta:
_ Allow the data collected by the Pebble PlexFit app to be visualize in Sleep Graph so that you can compare with your favorite sleep tracker (required version 1.2 of the PlexFit Beta Sleep Tracker for Pebble)

You can get it here: Link

Thank you in advance for helping to make PlexFit better :)

Saturday, March 21, 2015

PlexFit Pebble Version 1.13 and PlexFit Android Version 1.3.0 Released

Hi guys,
I released version 1.13 of the PlexFit Pebble app and version 1.3.0 to the PlexFit Android app just now. Here are the changelogs:

PlexFit Pebble
_ Fix 100% battery shown as 10%
_ Added options to indicate default setting
_ Added support for step counts + active min restored
_ Step threshold options (2-5 is now available)
_ Battery optimization by caching and removing unneeded calculation

PlexFit Android
_ Added OTA and easy option to update PlexFit Pebble
_ Improve sync reliability when the app is background
_ Added step count and active time restore when PlexFit got reset

It should be live in a few hours from now. With the new version of the PlexFit Android app, your PlexFit Pebble app will be automatically updated from now on :). So there's no need to open or close the Pebble App Store to hunt for the latest updates.

Enjoy !!

Saturday, March 14, 2015

PlexFit version 1.10 and PlexFit Sleep Tracking Beta 1.1 Released

Hi guys,
I just released PlexFit version 1.10 to Pebble App Store with improvement to the pause tracking functions and to address the issue that many of you reported that it doesn't work correctly when sensitivity and calibration were changed.

I also just released PlexFit Sleep Tracker version 1.1 with a lot of noticeable improvements such as:

  • Easier to start/stop sleep tracking
  • Finer resolution of your sleep time (it will be in min, instead of 10 min)
  • Optimization for battery life usage
  • Algorithm optimization based on user feedbacks.
Please give the 2nd beta release a try and let me know if you have any feedbacks. I am planning to test the data sync to Android where your sleep graph will be shown in Android with a beta app for Android but that's still underway and it's not ready yet.

Thanks guys for all your helps to help make PlexFit better. Peace out !!

Sunday, March 8, 2015

PlexFit Version 1.2.0 for Android and Version 1.8 for Pebble Released

Hi guys,
I just released new versions for both of the apps to the Google Play Store and to the Pebble App Store respectively.

The most prominent features of these two releases are the followings (detailed changelogs will be posted below):

  • Calibration data and sensitivity settings backup and restore between the Pebble and the Android apps (so that you don't have to do calibration again and again).
  • Forced sync at midnight to ensure that your data won't be loss when a new day comes
  • Further improving the sync reliability between the Android app and the Pebble app

Detailed Changelogs:

PlexFit for Pebble Version 1.8:
  • Added calibration reset feature to reset calibration data
  • Added support for sync with the Android app to backup and restore calibration data, sensitivity settings
  • Increase the calibration time to 10s to be more accurate and more repeatable
  • Added more information to the calibration screen so that users can calibrate the PlexFit app correctly
  • Under the hood: code refactoring to prepare for sleep tracking integration

PlexFit for Android Version 1.2.0:

  • Stability improvement : fixed two most common causes of crash reported by users causing by tasks still being submitted despite the app gets paused
  • Fixed resource leaks causing the app not to sync reliably over time (improve reliability of sync by 10%-20% with these changes).
  • Removed check from import from Google Fit to avoid having steps being imported twice
  • Improve reliability of manual sync by adjusting timings to send the sync request
New Features
  • Added calibration data + sensitivity settings sync and and restore to Android PlexFit app so that users don't have to calibrate over and over again.
  • Added battery percentage to the Pebble card
  • Added version check to remind users to upgrade their watch app to latest version
  • Added midnight forced sync to ensure user data of that day won't get reset
If you guys find any bugs, please report and I will try to get to it. Thanks :) Hope you guys enjoy this release.

Thursday, March 5, 2015

PlexFit Sleep Tracking Beta Released

Hi guys,
I just released a beta version of PlexFit Sleep Tracking App today to the Pebble App Store so that you guys can help test the sleep tracking algorithms. I would like to collect your feedback before integrating into PlexFit and make PlexFit a more complete health tracking app.

The screen is very rudimentary and not very pretty right now since I spent more time on the algorithms rather than the design. If you have any problem with the algorithms or if you guys find it inaccurate, please report so that I can fix it.

The goal is to make it solid before I can integrate it to PlexFit. Right now the app collects both the time-series data (to be plotted in the PlexFit Android app once the integration is done) so that you know what time you are awake and accumulative data (how many min you spent on sleeping and such). The watch app currently only shows how much time you are actually sleeping, in deep sleep and awake but it actually also collect other data as well (just waiting to be visualized in the PlexFit Android app)

You can get it here: PlexFit Sleep Tracking Beta