Skip to content

arsakhar/FitViz

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FitViz

ANT+ Health and Fitness Monitoring Client

FitViz Banner

Developed by Ashwin Sakhare

FitViz is a monitoring client designed for fitness enthusiasts and gamers. It supports real-time visualization and tracking of health and fitness data sent from ANT+ devices. FitViz also provides networking capabilities allowing game developers to easily integrate ANT+ devices, such as bike trainers and heart rate monitors, into their own game.


About ANT+

ANT+ is a wireless sensor network technology that allows you to moniter data broadcast from ANT+ capable devices. Fitness equipment, bike trainers, heart rate monitors, and blood pressure monitors are just a few of the many devices supported within the ANT+ ecosystem. Data broadcast from ANT+ devices is standardized based on the type of data being sent. ANT+ refers to a data type as a device profile. An ANT+ device can broadcast data associated with multiple device profiles. For example, the Wahoo Kickr Snap broadcasts bicycle power and fitness equipment data.


Supported Devices

FitViz currently support the following device profiles:

  • Heart Rate
  • Bicycle Cadence
  • Bicycle Speed
  • Bicycle Speed & Cadence
  • Bicycle Power
  • Fitness Equipment

Installation

FitViz was written in Python (v3.8.5). To run it from an IDE, the following dependencies are required: PyQt5 and Pyusb. A distributable, FitViz.exe, is also included and can be executed as a standalone program. The distributable has only been tested on Windows 10 Pro (10.0.18363 Build 18363). An ANT+ usb dongle is required for most PC's to connect to ANT+ devices. I used the Wahoo USB ANT+ kit for testing.


User guide

There are 3 primary tabs on the client GUI: Networking, View, and Logging.

Networking

Networking Tab

The Networking tab is used to connect to ANT+ devices.

  • Select Run under Network Controls to scan for ANT+ devices. ANT+ devices identified during the scan period (5 seconds) are displayed under Broadcasting Devices. If ANT+ devices are identified, the network driver continues to listen indefinitely for incoming ANT+ messages.
  • If a device is unknown, it will be named "Unknown Device ". You can double click on the device entry under Broadcasting Devices to rename the device. The name change will not take effect until the ANT+ session is restarted.
  • Once an ANT+ session is started, it will continue to run indefinitely. An ANT+ session can be closed by selecting Stop under Network Controls.
  • Reset can be used to reset measurement values that accumulate over time. For example, some ANT+ messages associated with a Bicycle Trainer included distance traveled and elapsed time, which are accumulated measurements. Reset will set those measurement values to 0.
  • Network Statistics displays basic ANT+ network statistics including: # messages received, # ANT+ devices broadcasting, # device profiles received, and message frequency.

View

View Tab

The View tab is used to visualize measurement data from ANT+ devices. There are 4 viewing panels allowing for up to 4 measurements to be viewed concurrently in real-time.

  • Select a device from the Devices dropdown box.
  • Select a profile from the Profiles box.
  • Select a data page from the Data Pages box.
  • Select a page measurement from the Page Measurements box.

The measurement will be displayed via a gauge or LCD number depending on the type of measurement. Generally speaking, accumulated measurements will be displayed as an LCD number while measurements that fall within a range will be displayed via the gauge.

Logging

Logging Tab

The Logging tab is used to log measurement data.

There are 2 logging options: UDP and CSV. CSV logging is simply writing data to a user-specified CSV file. For UDP logging, data is written to the user-specified ip address and port. The intent behind UDP is to allow for real-time data transfer to another program or device. In both cases, data is written each time a message is received.

  • First, begin by adding the measurements you would like to track.
  • For CSV logging, set the filename and select Start to begin logging.
  • For UDP logging, set the Port and IP Address select Start to begin logging.
  • UDP data is delivered as a byte array of the following format: [measurement 1 value; measurement 2 value; measurement 3 value; measurement 4 value; ...]

About

The idea behind this project was to provide a standalone PC application that could allow my research lab to monitor and interface with a Wahoo Kickr Snap bike trainer. In particular, we were interested in real-time measurements of speed and power to use the Kickr as an input controller for a VR game we were developing. And so my journey began to create a program that can interface with ANT+ devices.

The app currently only supports a limited number of ANT+ device profiles. However, my hope is to continue to expand on this slowly over time. This is an alpha release and I haven't performed rigorous testing yet so there are likely a number of bugs to fix. If you a spot a bug, feel free to post it under Issues.


ToDo

  • Add bluetooth connection capabilities
  • Add device profiles

Changelog

  • v1.0.0 alpha (2020-09-05)
    • Initial release

Acknowledgements

FitViz would not be possible without liberal imports of PyQt5, Pyusb and LibAnt. LibAnt was modified and used for the ANT+ backend communication. The inspiration for the GUI design was based on Simple Pyside Base. The gauge UI was adapted from Analog Gauge Widget PyQt

About

ANT+ Health and Fitness Monitoring Client

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages