(Update 22nd April 2014: Newer version of the HRMUploader jar fixes an issue with HRZones if there are more than five defined in the HRM file)
More recently I've bought Polar HRMs, they are great products with useful features for cycling. Years ago I wrote a Java application that converted the 'other' HRM files to the Polar format, so that all rides and associated HRM data could be shown in the latest Polar application on the PC.
Polar have caught onto the web, and have launched a site that allows you to transfer your data from the HRM to the web. Great for current stuff, but what about all those old files I have? In their wisdom, Polar have not released a tool that allows me to upload the data I've got on my PC.
There are a few people around who would, like me, prefer to have all their data on the web, and want to upload their old data. Being a professional Java developer, I thought it would be a doddle to create a Java Application that interfaced with the Polar web site and allowed me to transfer my data. And, in general, it was. So here is a Java application that does this. It's a little crude, but does the job.
Just run it with:
java -jar HRMUploader.jar
Enter your Polar Personal Trainer userid and password. If you log in successfully, then you will see your name in the lower status pane.
Browse to your polar .hrm files and select one or more (try it with one first :) ) The application will check the site to see if it's already uploaded a file for this date. If it has, it will put a check mark against the file, if it hasn't then use the upload button to upload the file. It won't upload a file that is already on the site, you will have to delete it from the site if you want to resend it.
There are no guarantees that this will work for you. Might be worth opening another 'test' account on the Polar site and trying it out there first. Whilst you can select many files to upload at once, it might be worth limiting it to 10 or so at a time - the Polar site might choke on too many. I just tried it with about 70 and it took a while, but seemed to work.
Regarding calories expended.
This value is read from the associated PDD file and needs to be in the same directory as your HRM file. There's one PDD file for each day, so you could have many HRM files that reference the same PDD if you do multiple exercises per day. In these cases, you are unlikely to be able to read the PDD as it will not have the same name as the HRM file. Unfortunately, when I originally wrote the HRMUploader, I didn't realise I needed to read the PDD too. Ideally I need to change the application to read the PDD first, since this contains all the HRM file names. However, I'm not planning to do this any time soon, sorry.
Altitude data is sent to the Polar site in 'feet'. This means that if you are using meters in your HRM file, then the conversion to and from feet could result in a rounding error.
Furthermore, I seem to recall a bug in the HRM files that stores altitude as feet, even though the file is supposed to be metric. Send me a HRM file example if you suspect the altitude is being uploaded incorrectly.
Here's the code to interface with the Polar site
At some point I'd like to host this on the Google Java App Server, but they've done some funny stuff with Java and restricted various classes in the default 'JRE'. It means that some stuff which should work under Java's WORA mantra doesn't.
The application uses various libraries from Apache, Google and Castor. All their respective rights are recognised. The software is supplied 'as-is' and you use it at your own risk. You did back that data up, right?