I ordered a miCoach, which is the Adidas version of the Nike+. When it gets here I plan on opening it up to play with the data, but in the mean time I started with some better-travelled exercise bits and bytes: WiiFit body test data. Starting with Jansen Price’s excellent blog post on the subject, I slowly worked through the data and wrote a python script to interpret the binaries and save them to a CSV. I was able to generate the nice graph above. There was a lot of trial and error, but here’s an overview of the process:
- Copy Wii save game data to the SD card. This is done from Wii Options > Data Management > Save Data > Wii
- Find the save game data on the card. It’s in something like ‘private/wii/title/RFPE’, although different regions may have slightly different codes. RFPE is the code for WiiFit Plus. Copy the WiiFit data.bin file from the SD card to your local machine.
- Decrypt data.bin. This is explained pretty well here. To create the keys I ended up creating text files with the hex string for each and then using “xxd -r -p sd_iv_hex sd_iv” et al to save a binary version. If you’re getting “MD5 mismatch” errors, you probably saved the keys incorrectly. If you aren’t sure, check the file size. They should be 16 bytes each.
- Run the decrypted RPHealth.dat through a parser (I wrote one in Python for this)
- Run the CSV through your favorite graph generation library. I use flot because Google Charts don’t handle dates very well.
More details, including the source for the Python script can be found over on my blog: Kellbot!