The main parts are an ESP32 attached to a hall sensor, which I positioned close to the wheel. Using a magnet attached to the back of the wheel, this tells the ESP32 when a full rotation has completed. It gives a timestamp (and total distance) to each magnet-pass, which is stored on the network. A python script (on my laptop) then retrieves this data in the morning, turns it into a .FIT file, and uploads it to Strava through the Strava API (with a randomly chosen run title, taken from a mostly AI...