public:musings:watches:watchcheck
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| public:musings:watches:watchcheck [23/01/26 13:53 GMT] – john | public:musings:watches:watchcheck [23/01/26 14:13 GMT] (current) – john | ||
|---|---|---|---|
| Line 11: | Line 11: | ||
| You put the application in a directory specific to the watch and execute it from that | You put the application in a directory specific to the watch and execute it from that | ||
| 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. | ||
| + | |||
| + | ** update 23/01/26 ** I've modified the code to run under Python 3 - using the tool '' | ||
| + | |||
| ++++ watchcheck.py in Python 3 | | ++++ watchcheck.py in Python 3 | | ||
| - | <code python> | + | <file python |
| # a text-terminal version of the WatchCheck app | # a text-terminal version of the WatchCheck app | ||
| Line 211: | Line 214: | ||
| - | </code> | + | </file> |
| ++++ | ++++ | ||
| Line 219: | Line 222: | ||
| ++++ original watchcheck.py in python 2 | | ++++ original watchcheck.py in python 2 | | ||
| - | <code python> | + | <file python |
| #! / | #! / | ||
| Line 424: | Line 427: | ||
| < | < | ||
| + | |||
| Wire2waves WatchCheck..... | Wire2waves WatchCheck..... | ||
| ========================= | ========================= | ||
| Line 501: | Line 505: | ||
| display the data | display the data | ||
| - | ++++ watchstat.py | | + | ++++ original |
| <file python watchstat.py> | <file python watchstat.py> | ||
| + | |||
| #! / | #! / | ||
| Line 611: | Line 616: | ||
| ++++ | ++++ | ||
| + | |||
| + | ++++ watchstat.py in python 3 | | ||
| + | |||
| + | <file python watchstat.py> | ||
| + | |||
| + | ## 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.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 = ' | ||
| + | | ||
| + | t_latest = datetime.datetime.strptime(latest_time, | ||
| + | t_previous = datetime.datetime.strptime(previous_time, | ||
| + | t_first = datetime.datetime.strptime(first_time, | ||
| + | |||
| + | tdelta = t_latest - t_previous | ||
| + | full_delta = t_latest - t_first | ||
| + | |||
| + | elapsed_time = tdelta.total_seconds() | ||
| + | |||
| + | full_time = full_delta.total_seconds() | ||
| + | |||
| + | print(" | ||
| + | print(" | ||
| + | print("" | ||
| + | |||
| + | print(" | ||
| + | print(" | ||
| + | print("" | ||
| + | |||
| + | print(" | ||
| + | print(" | ||
| + | print("" | ||
| + | | ||
| + | print(" | ||
| + | print(" | ||
| + | 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(" | ||
| + | |||
| + | print(" | ||
| + | |||
| + | print("" | ||
| + | print(" | ||
| + | print(" | ||
| + | |||
| + | print("" | ||
| + | print(" | ||
| + | print(" | ||
| + | print(" | ||
| + | print(" | ||
| + | print("" | ||
| + | print(" | ||
| + | print(" | ||
| + | print(" | ||
| + | print("" | ||
| + | else: | ||
| + | print(" | ||
| + | |||
| + | |||
| + | watch_stat() | ||
| + | |||
| + | </ | ||
| + | |||
| + | ++++ | ||
| + | |||
| Running watchstat.py on the newly updated '' | Running watchstat.py on the newly updated '' | ||
public/musings/watches/watchcheck.1769176426.txt.gz · Last modified: by john
