John's Vademecum

Try to learn something about everything, and everything about something -Thomas Huxley “Darwin's bulldog” (1824-1895)

User Tools

Site Tools


public:watches:watchcheck

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
public:watches:watchcheck [04/05/22 10:14 BST] – created gm4slvpublic:watches:watchcheck [06/03/25 06:49 GMT] (current) – external edit 127.0.0.1
Line 12: Line 12:
 directory. the data from each measurement is stored in a **json** file in the same directory. directory. the data from each measurement is stored in a **json** file in the same directory.
  
- +++++ watchcheck.py | 
-<code python>+<file python watchcheck.py>
 #! /usr/bin/env python #! /usr/bin/env python
  
Line 210: Line 210:
  
 menu() menu()
 +</file>
 +
 +++++
 +
 +Running it for the first time, with no previous records stored, looks like this:
 +
 +<code>
 +Wire2waves WatchCheck.....
 +=========================
 +
 +N : New Record
 +D : Delete Last
 +S : Stats
 +Q : Quit
 +
 +Command > : n
 +New
 +Current Time = 10:18
 +Watch time 10:19
 +19
 +Press enter when seconds = 0
 +
 +2022/05/04 10:19:30
 +
 +Delta -30.2 seconds
 </code> </code>
 +
 +and the first time-delta is stored in the ''error_list.json'' file like this:
 +
 +<code>
 +[["2022/05/04 10:19:30", -30.179980039596558]]
 +</code>
 +
 +Running it again, after only 10 minutes looks like this:
 +
 +<code>
 +Command > : n
 +New
 +Current Time = 10:30
 +Watch time 10:30
 +30
 +Press enter when seconds = 0
 +
 +2022/05/04 10:30:30
 +
 +Delta -30.2 seconds
 +First record time  2022/05/04 10:19:30
 +First record delta  -30.1799800396
 +
 +Previous record time  2022/05/04 10:19:30
 +Previous record delta  -30.1799800396
 +
 +Latest record time  2022/05/04 10:30:30
 +Latest record delta  -30.1998269558
 +
 +Overall elapsed time  0:11:00
 +Latest elapsed time  0:11:00
 +
 +Latest delta change  -0.0198469161987
 +Latest elapsed time 660 seconds
 +
 +Daily PPM : -30.071
 +Daily rate error: -2.6 s/d
 +
 +Total Time 660 seconds
 +Total error  -0.0198469161987
 +Total PPM : -30.071
 +Total rate error: -2.6 s/d
 +
 +========================================================
 + Delta : -30.2 s | Rate : -2.6 s/d | Average : -2.6 s/d
 +========================================================
 +</code>
 +
 +The ''error_list.json'' file now looks like:
 +
 +<code>
 +[["2022/05/04 10:19:30", -30.179980039596558], ["2022/05/04 10:30:30", -30.199826955795288]]
 +</code>
 +
 +
 +There's also a small utility called ''watchstat.py'' that reads the ''error_list.json'' file to calculate and
 +display the data
 +
 +++++ watchstat.py |
 +
 +<file python watchstat.py>
 +#! /usr/bin/env python
 +
 +## a text-terminal version of the WatchCheck app
 +## to track error, daily error rate of timepieces.
 +
 +#
 +import time
 +import datetime
 +import json
 +
 +
 +
 +def watch_stat():
 +
 +    try:
 +        saved_error = open('error_list.json')
 +        error_list = json.load(saved_error)
 +    except:
 +        error_list = []
 +
 +
 +
 +
 +    if len(error_list) > 1:
 +        first_record = error_list[0]
 +        latest_record = error_list[-1]
 +        previous_record = error_list[-2]
 +
 +        first_time = first_record[0]
 +
 +        first_delta = first_record[1]
 +
 +        latest_time = latest_record[0] 
 +        latest_delta = latest_record[1]
 +
 +        previous_time = previous_record[0]
 +        previous_delta = previous_record[1]
 +
 +        FMT = '%Y/%m/%d %H:%M:%S'
 +    
 +        t_latest = datetime.datetime.strptime(latest_time, FMT)
 +        t_previous = datetime.datetime.strptime(previous_time, FMT)
 +        t_first = datetime.datetime.strptime(first_time, FMT)
 +
 +        tdelta = t_latest - t_previous
 +        full_delta = t_latest - t_first
 +
 +        elapsed_time = tdelta.total_seconds()
 +
 +        full_time = full_delta.total_seconds()
 +
 +        print "First record time ", first_time
 +        print "First record delta ", first_delta
 +        print ""
 +
 +        print "Previous record time ", previous_time
 +        print "Previous record delta ", previous_delta
 +        print ""
 +
 +        print "Latest record time " , latest_time
 +        print "Latest record delta ", latest_delta
 +        print ""
 +    
 +        print "Overall elapsed time ", full_delta
 +        print "Latest elapsed time ", tdelta
 +        print ""
 +
 +        # Current Error rate
 +        time_error = latest_delta - previous_delta
 +        error_rate = time_error / elapsed_time
 +        daily_rate = error_rate * (60*60*24)
 +        ppm_daily = error_rate * 1000000
 +
 +        # Overall Error rate
 +        total_error = latest_delta - first_delta
 +        average_error_rate = total_error / full_time
 +
 +        average_rate = average_error_rate * (60*60*24)
 +        ppm_overall = average_error_rate * 1000000
 +
 +
 +        print "Latest delta change ", time_error
 +
 +        print "Latest elapsed time %d seconds " % (elapsed_time)
 +
 +        print ""
 +        print "Daily PPM : %0.3f" % ppm_daily
 +        print "Daily rate error: %0.1f s/d " % (daily_rate)
 +
 +        print ""
 +        print "Total Time %d seconds" % (full_time)
 +        print "Total error ", total_error
 +        print "Total PPM : %0.3f" % ppm_overall
 +        print "Total rate error: %0.1f s/d" % (average_rate)
 +        print ""
 +        print "========================================================"
 +        print " Delta : %0.1f s | Rate : %0.1f s/d | Average : %0.1f s/d" % (latest_delta, daily_rate, average_rate)
 +        print "========================================================"
 +        print ""
 +    else:
 +        print "No rate yet"
 +
 +
 +watch_stat()
 +</file>
 +
 +++++
 +
 +Running watchstat.py on the newly updated ''error_list.json'' 
 +
 +<code>
 +gm4slv@laptop:~/watchcheck_damasko $ python watchstat.py
 +First record time  2022/05/04 10:19:30
 +First record delta  -30.1799800396
 +
 +Previous record time  2022/05/04 10:19:30
 +Previous record delta  -30.1799800396
 +
 +Latest record time  2022/05/04 10:30:30
 +Latest record delta  -30.1998269558
 +
 +Overall elapsed time  0:11:00
 +Latest elapsed time  0:11:00
 +
 +Latest delta change  -0.0198469161987
 +Latest elapsed time 660 seconds
 +
 +Daily PPM : -30.071
 +Daily rate error: -2.6 s/d
 +
 +Total Time 660 seconds
 +Total error  -0.0198469161987
 +Total PPM : -30.071
 +Total rate error: -2.6 s/d
 +
 +========================================================
 + Delta : -30.2 s | Rate : -2.6 s/d | Average : -2.6 s/d
 +========================================================
 +</code>
 +
 +''watchcheck.py'' also creates a log file on each run.
 +
 +<code>
 +04/05/2022 09:30:30     -30.2           -2.6            -2.6
 +</code>
 +
 +The fields are "date time", current error, error in seconds per day since last record, average error in seconds per day since the start.
 +
 +This mimics the behaviour of the Android Watchcheck app
 +
 +{{:public:watches:screenshot_20220504-104043.png?direct&400|}}
  
  //[[gm4slv@gm4slv.plus.com|John Pumford-Green]] Wed May  4 09:09:09 2022//  //[[gm4slv@gm4slv.plus.com|John Pumford-Green]] Wed May  4 09:09:09 2022//
public/watches/watchcheck.1651655650.txt.gz · Last modified: 06/03/25 06:49 GMT (external edit)