Cross platform program to record and display data from Graupner Ultramat 16 Charger

Data:

Sample:
82F6D000000000000026800000000000000000000000008FD0
Description:
1122223333444455556666777788889999AAAABBBBCCCCDDDD
1: ??
2: voltage (mV) (12300)
3: ?? (0100)
4: Voltage (mV) (12600)
5: ?? 0138 (mA?) charge current
6: 023f
7: cell1 mV
8: cell2 mV
9: cell3 mV
A: cell4 mV
B: cell5 mV
C: cell6 mV
D: ??

Idea

  • Program should detect start and end of charging, and record all "chargeruns" to a database
  • Program should be able to display a "dashboard" with current values
  • Program should be able to display a live trend of current values
  • Program should be able to display trends of historical chargeruns
  • Program should be able to calculate certain values, i.e.
    • Avg chargerate (amps)
    • Chargerate used the most in a run
    • Charging vs discharging
    • Something about the health of cells
    • Cellcount
  • Program should be flexible enough so that one can customize it to work with multiple chargers
    • Config format: XML
    • General Config file
    • Charger Config file
      • Serial Port
      • Serial port speed etc
      • Update interval if applicable
      • Delimiter if applicable
      • Data sectioning if applicable

Scratchboard

Cross platform -> Python
Database -> Sqlite, one table for samples, one for "chargerun"
Graphical or console?
Graphical? -> QT ?
Console -> curses (*nix) + Console(win)
How to read data? 
 Pipe, does it work on windows?
 Read serial port directly? 
  -> evaluate pySerial (http://pyserial.wiki.sourceforge.net/pySerial)
  -> evaluate USPP (http://ibarona.googlepages.com/uspp)
Classes needed:
 Logger: Logs data from serial port, detects starts and ends, writes it to database, exposes current values
 Dashboard: Displays currentdata gotten from Logger
 Trender: Trends current and historical data