summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Cady <d@jerkface.net>2017-01-25 13:09:27 -0500
committerAndrew Cady <d@jerkface.net>2017-01-25 13:09:27 -0500
commitafb78e8933997db2d9fc257c1466d04d1f6e93d4 (patch)
tree2c14067d6352319b24102432769ee311ba58cfe2
parentffbfee060e96104c3e9164316bb6a2e74040ab63 (diff)
dexcom_dumper: JSON output
-rw-r--r--dexcom_reader/dexcom_dumper.py19
1 files changed, 17 insertions, 2 deletions
diff --git a/dexcom_reader/dexcom_dumper.py b/dexcom_reader/dexcom_dumper.py
index b579818..bba4d17 100644
--- a/dexcom_reader/dexcom_dumper.py
+++ b/dexcom_reader/dexcom_dumper.py
@@ -1,6 +1,7 @@
1import constants 1import constants
2import readdata 2import readdata
3import sys 3import sys
4import json
4from sys import stdout, stderr 5from sys import stdout, stderr
5from datetime import timedelta, datetime 6from datetime import timedelta, datetime
6from time import sleep 7from time import sleep
@@ -20,12 +21,14 @@ parser.add_option("-p", "--poll", action="store_const", dest="command", const="p
20parser.add_option("-n", type="int", dest="num_records", default=DEFAULT_PAGE_COUNT, help="number of pages of CGM records to display") 21parser.add_option("-n", type="int", dest="num_records", default=DEFAULT_PAGE_COUNT, help="number of pages of CGM records to display")
21parser.add_option("-v", "--verbose", action="store_true", dest="verbose", help="verbosity (currently for debugging)") 22parser.add_option("-v", "--verbose", action="store_true", dest="verbose", help="verbosity (currently for debugging)")
22parser.add_option("-H", "--human", action="store_true", dest="human", help="print human-readable times") 23parser.add_option("-H", "--human", action="store_true", dest="human", help="print human-readable times")
24parser.add_option("-j", "--json", action="store_true", dest="json", help="print JSON output")
23 25
24(options, args) = parser.parse_args() 26(options, args) = parser.parse_args()
25 27
26command = options.command or "dump_cgm" 28command = options.command or "dump_cgm"
27VERBOSE = options.verbose 29VERBOSE = options.verbose
28HUMAN = options.human 30HUMAN = options.human
31JSON = options.json
29 32
30def get_dexcom_reader(): 33def get_dexcom_reader():
31 if options.g5: 34 if options.g5:
@@ -108,6 +111,19 @@ def sleep_verbose(n):
108 print_verbose('sleep(%d)' % n) 111 print_verbose('sleep(%d)' % n)
109 sleep(n) 112 sleep(n)
110 113
114def print_cgm_bg(now, r):
115 if JSON:
116 print json.dumps({
117 'current_time': now.strftime('%s'),
118 'event_time': r.system_time.strftime('%s'),
119 'glucose': r.glucose,
120 'trend_arrow': r.trend_arrow,
121 'display_only': r.display_only
122 })
123 else:
124 print '%s: %s %s' % (format_times(now, r.system_time), r.glucose, r.trend_arrow)
125 stdout.flush()
126
111def poll(): 127def poll():
112 print_localtime('dexcom_dumper started') 128 print_localtime('dexcom_dumper started')
113 while True: 129 while True:
@@ -120,8 +136,7 @@ def poll():
120 sleep_verbose(10) 136 sleep_verbose(10)
121 else: 137 else:
122 now = dr.ReadSystemTime() 138 now = dr.ReadSystemTime()
123 print '%s: %s %s' % (format_times(now, r.system_time), r.glucose, r.trend_arrow) 139 print_cgm_bg(now, r)
124 stdout.flush()
125 next_reading = (r.system_time - now + timedelta(minutes=5, seconds=2)).total_seconds() 140 next_reading = (r.system_time - now + timedelta(minutes=5, seconds=2)).total_seconds()
126 if (next_reading > 0): 141 if (next_reading > 0):
127 sleep_verbose(next_reading) 142 sleep_verbose(next_reading)