Skip to content

Latest commit

 

History

History
77 lines (50 loc) · 4.12 KB

README.md

File metadata and controls

77 lines (50 loc) · 4.12 KB

About

There are inexpensive sport watches out there, however the software is limited to MS Windows and is quite ugly.

Idea

All looks like USBXpress Development Tools from Silicon Labs was used to communicate via USB-UART bridge cp2102.

It seems feasible to write a proxy and transcribe all communication between the software on Windows host and device behind USB-UART bridge.

Once protocol and data format are established, code can be written to fetch data.

There are choices as how to organize things. At first it seems natural to use a database to store all results. However the question is what DB to use? Or shall we use ODBC to support virtually all? If we use sqlite, we can access data with HTML5.

At the end I came to conclusion that there is nothing better than plain CSV files named after tracks. All can be enumerated, some deleted, are human-readable, and can be accessed from other software easily.

The problem would be how to get overall statistics? Like it would be sweet to use R to see trends in progress across multiple runs.

Vision

In the end I'd like to see everything modularized such that same code can be reused with GUI for download progress, or built into a larger app.

Implementation

Right now there are few independent components (with some code duplication like in download.py and settings.py :( )

  • download.py is the main program to extract tracks, laps, points
  • settings.py extracts all settings that can be fetched, like time zone threshold, user information, etc
  • babelize.cmd is a hook script that optionally can be called by donload.py. It contains commands to execute for each track fetched.
  • schwinn810.cmd is a convenience script to reduce amount of typing necessary to provide download.py with options
  • csv2tcx.py converts laps & points into a single TCX file (gpsbabel lacks laps support)
  • tcx2garmin, mmr_uploader are "templates" on how TCX could be uploaded automatically from babelize.cmd . For now, refer to source code.

Batch/shell scripts babelize and schwinn810 can be renamed for convenience.

Installation

Windows

Please follow this guide.

Ubuntu GNU/Linux

There is a ppa available with package for Oneiric Ocelot. Install as any other package. Use dpkg-reconfigure -plow schwinn810 to change settings.

Build

Just using up-to-date code

At these early stages, I'd recommend to use python source code and do not do compilation into binaries. However, if you don't feel like installing tons of stuff on Windows, refer to download section. I upload binary builds for MS Windows from time to time.

To make Windows redistributable

  1. Install Python 2.7 (preffered) or 3.2, pip, pyserial, cx_Freeze, and pytz.
  2. Execute cxfreeze --compress --include-modules serial.win32 download.py --target-dir dist Refer to setup.py and distutils manual on how to build

Tasks

At this point one should not expect an exact copy of software for other OSes.

  1. Code proxy and transcribe communication making it possible for others to develop software independently.
  2. Improve data format details.
  3. Write some python (?) code that dumps data from serial port into CSV
  4. Make it more unicsv-friendly so gpsbabel can convert data to GPX and/or TCX.
  5. Write some GUI, R code
  6. Export to various web sites
  7. Move command line options to a configuration file and make things debconf friendly