libfitbit Hangups

First off, hello to everyone who found us through the MIT Tech Review article or Ubuntu Community talk! Been a bit slow around here lately, but hoping to get things booted back up.

It seems the most requested thing at the moment is a finalized version of libfitbit. Currently, we're at v0.0.1, which was released in February and hardly worked. There's been a lot of progress since then, and we are now able to replicate full communications with the tracker. There's really just one problem left with the library, and that's the subject of today's post.

So, unless you're into specifics of the implementation of the ANT protocol, you can probably skip the rest of the post. However, if you're interested in helping me kill the last bug before I can start making distributable, read on.

I recommend having the ANT Protocol Specification open while following along, as I'll be talking about packet types quite a bit. Also, if you have any comments, please leave them on the github issue about this problem.

UPDATE: And, 2 hours after I post this, I fix it myself. I wasn't resetting the USB device correctly, which meant we were getting weird configuration conflicts from the last session run. Fixing the device reset clears this, and libfitbit will now retreive information multiple times without having to completely un/replug the key. I'll write up a "rest of the things I need to do" post tomorrow to let everyone know what's next.

Withing Scale Network Hijacking

The Withings Scale is a pretty simple piece of hardware. Set it up on your wifi network, weigh yourself, and it instantly sends your weight to the Withings website.

Now, as Withings isn't really taking and analyzing a ton of data, it's (apparently) fairly trivial to pull all the needed data from their website. However, there are those who aren't completely happy with that solution, and who also don't want to deal with the slow flash interface.

The people at Proxilium decided to reverse engineer the network protocol, doing a full trace on the communications between the scale and the home website, and extracted all of the data the scale sends to the website. Not only that, he shows how to set up alternate DNS rules to route off calls to the website to a local webserver, so you can have your own data store. Neat!

libfitbit Development Update

There's been a lot of interest in libfitbit lately, so here's a quick update on where I am with development.

  • Web client is now completely working. Was stuck on ANT burst sends not working, which are used to update the device time and stats like height and weight. Putting in a sleep between burst sends seems to have fixed it. Because, much like putting a bird on it, putting a sleep in it fixes everything.
  • Tested the fitbit with the Garmin ANT Stick, works fine. Hoping to test with Suunto stick within the next week, the goal being to have multiple ant antennas on multiple machines, all which can communicate with any ANT hardware.
  • Can get per-minute Step Count and Active Point Score from the fitbit

This is close to getting us to a v0.1 release, which I'm hoping will happen next week after the Quantified Self Conference. I'm also working on documentation and making a couple of useful utilities, such as a linux daemon for web service uploads (yes, I realize I'm doing fitbit's work for them, and no, I'm not real thrilled about it either), and dumping data to json/xml.

In terms of what I'd like to see for versions after that:

  • Finish the data format protocol. There's still a couple of packets I'm not sure about, and I haven't figured out how events (sleep, etc...) work yet.
  • Dividing out the ANT protocol class and ANT antenna classes into their own library, so they can be shared between multiple device libraries. I'm moving toward this with the current design, but don't want it holding up the v0.1 release
  • May a C version? I'm not exactly motivated about this since python works fine for me right now, but if the need arises, it could be nice to have around. The ANT people have actually said they have little linux experience on staff, so I wouldn't be expecting their support on the library side soon anyways. Definitely an ownable area for anyone looking to start up an open source project, and there's a ton of code already out there...
  • Whatever else people are looking for. Let me know in the github issues if you have requests.
libomron Verified Working with BP791IT

I've received from email from an OpenYou reader who purchased the BP791IT, which is the updated version of the HEM790IT Blood Pressure Monitor from Omron.

They've verified that this blood pressure monitor does work with OpenYou's libomron library. So, go forth and purchase, knowing you can still pull your data off of the device on any platform libomron supports (which is anything libusb supports).

Please note that I've been getting a few issue reports with getting libomron working on OS X, having to do with the kexts not causing the device to detach from the HID Manager correctly on 10.6.7+. These reports have been rather intermittent, but if you experience any issues, please get in touch with me via email or file a bug report on the github site.

Upcoming Speaking Engagements

This summer is shaping up to be a busy one...

I'm speaking at Maker Faire. Twice, even!

  • 2011-05-21 3:30pm - Presentation, Health 2.0 Stage
  • 2011-05-21 6:00pm - OpenKinect Presentation, Main Stage

Then there's the Quantified Self Conference on May 28-29th, 2011, at the Computer History Museum in Mountain View, CA. There's no central presentation, but honestly, I probably won't stop talking at any point during the 2 days, as I have a table at the expo, plus will be helping out with the health hardware session and the hackathon.

On June 23rd, I'll be doing a presentation on the OpenKinect project at NetExplorateur Zoom 2011 in Paris.