Bug? Watch battery level only reported as whole number

I've been discussing this over at the 735XT forum and it was suggested i also post it here as it might be a bug at the CIQ level.

I can use any number of connect IQ apps or code my own to tell me the battery level on my 735XT. It always reports back a whole number percentage, e.g. 75.0, and never 75.2 or similar.

Without going into a side discussion about the accuracy of reporting the battery level on such devices, this behaviour is different to the 235 (and i assume the 230 and 630), which do report back a current battery level that is not rounded but is exact with decimal precision.

In particular, perhaps the FW is only passing the integer part, or how the battery level is being converted in the CIQ VM (thanks to @jim_m_58 for the technical thoughts).

Can this be reported and looked in to? Thanks.
  • Hermo, for me, I find the decimal part of the battery level quite useful, even though I only display the int part.

    For example, I can "round it up" so that when the battery drops to something like 99.999999, I can still display it as 100% (people like to see that 100% after charging stops :) ) With only the int part, 99.999999 would display as 99%. This isn't a critical thing though.

    Another case is I have some "isCharging" logic in things for when the watch is charging while still running an app. I monitor the battery level and if it's increasing, I can change the display to indicate that. Granted I could do that based on the int part only (as will now happen on the 735), but it would be very slow at detecting when the watch is charging. (a few minutes instead of seconds).

    If CIQ would expose the actual "charging state", I could do away with my logic, but for now it's nice to have.
  • Another usage case: i've written a field that shows the battery drain during an activity. It's very useful if you want to gauge the effect on battery of BT or 1sec recording or live track or HR or whatever. Over a number of runs you can get a good sense of where you can get a few extra percent per hour, which over a week can add up to another run before having to charge. Or perhaps more importantly, you may want to know to milk the most out of the battery for a long race (e.g. ultra or triathlon).

    With the current implementation of battery reporting, if 5 seconds into the activity the level drops from 70.0% to 69.9%, my field will report 1.0% lost, not the fraction that has actually been lost. The longer the run the more accurate it is, but still, not everyone runs for hours every time they head out.

    Now i know you'll say the watch doesn't actually know the drain to 0.1%, but i disagree. The firmware interpolates to calculate the battery percent at any given time. Hence 78.0% is just as accurate as 78.1%. The difference is the smoothing, which you don't get from integer values alone.

    Knowing the interpolated FLOAT, and not just interpolated INT, is much more useful as a developer.
  • Valid points guys, you've pursuaded me to join your camp.
  • I don't know too much about the details behind the change either. We're attempting to coordinate more closely with device teams to avoid these kinds of changes when possible. You can imagine its in our interest to have consistency across the various platforms that support Connect IQ. :)