I've spent the past couple of weeks working on libfitbit,
library that provides hardware access to the fitbit health device. The
current goal of this library is to provide a mechanism to build an
open source data aggregation client, meaning linux-using fitbit owners
can finally sync their hardware with the website.
For those that aren't familiar, the fitbit is a clip-on accelerometer
that features a nice little OLED screen and wireless data
synchronization capabilities via ANT hardware.
Currently, libfitbit is written in python, and implements most of
the fetching and uploading protocol of the fitbit, enough that web
synchronization via linux has happened successfully (minus a couple of
commands from the server that I can't seem to send to the device
correctly). Once all commands are sending correctly, the next goal is
a C version of the library, as well as some demo applications of
"real-time" access, such as a smart "get up a move" detector (that
warns you when you've been sitting for more than a certain period of
time, but also takes into account when you've moved by reading the
fitbit). I will also probably split out the ANT python protocol
library into its own repository, since it'll be handy in other projects.
fitbit themselves have released their own API, but this is only
for accessing their web services, and does not cover actual hardware
access. However, the web API and libfitbit could easily be used
together to create new and interesting interfaces combining the
hardware and fitbit's data services.
One of the other main goals behind this is to create a centralized ANT
sync dongle so that multiple devices can sync to a single USB
dongle. I'm honestly not sure if this is possible (my knowledge of the
RF side of ANT is still cursory at best), but I don't see why not, and
it's far better than having to keep track of a ton of different
dongles across multiple machines.