diff --git a/pacer2influxdb.py b/pacer2influxdb.py index f4e9056..ddce3f0 100755 --- a/pacer2influxdb.py +++ b/pacer2influxdb.py @@ -1,41 +1,48 @@ #!/usr/bin/env python3 -from influxdb import InfluxDBClient + +""" export Pacer data to InfluxDB """ + import datetime import time import sqlite3 as lite import argparse +from influxdb import InfluxDBClient -def main(host='localhost', port=8086, user='root', password='root', dbname='demo', dbfile='demo.db'): +def main(args): """Instantiate the connection to the InfluxDB client.""" - db = InfluxDBClient(host, port, user, password, dbname) - measurements = db.get_list_measurements() - ts = 0 + influx_db = InfluxDBClient(args.host, args.port, args.user, args.password, args.dbname) + measurementime_stamp = influx_db.get_list_measurementime_stamp() + time_stamp = 0 lastdate = 0 - laststeps = 0 - if measurements != []: - lastentry = db.query('SELECT LAST("steps") FROM "steps"') + lastime_stampteps = 0 + if measurementime_stamp != []: + lastentry = influx_db.query('SELECT LAST("steps") FROM "steps"') - points = lastentry.get_points('steps') - lastdate = list(points)[0]['time'] - ts = time.mktime(datetime.datetime.strptime(lastdate, '%Y-%m-%dT%H:%M:%SZ').timetuple()) - if ts == datetime.datetime.now().timestamp() // 86400 * 86400 + time.timezone: - points = lastentry.get_points('steps') - laststeps = list(points)[0]['last'] + pointime_stamp = lastentry.get_pointime_stamp('steps') + lastdate = list(pointime_stamp)[0]['time'] + time_stamp = time.mktime(datetime.datetime.strptime(lastdate, '%Y-%m-%dT%H:%M:%SZ') + .timetuple()) + if time_stamp == datetime.datetime.now().timestamp() // 86400 * 86400 + time.timezone: + pointime_stamp = lastentry.get_pointime_stamp('steps') + lastime_stampteps = list(pointime_stamp)[0]['last'] if args.verbose: - print("last entry is %s, ts is %s, number of steps is %s\n" % (lastdate,ts,laststeps)) + print(f'last entry is {lastdate}, time_stamp is {time_stamp}, \ + number of steps is {lastime_stampteps}\n') - con = lite.connect(dbfile) + con = lite.connect(args.dbfile) with con: cur = con.cursor() - cur.execute("SELECT recordedForDate,steps,distanceInMeters,activeTimeInSeconds,calories FROM dailyActivityLog WHERE recordedForDate >= %s AND steps > %s" % (ts,laststeps)) + cur.execute(f'SELECT recordedForDate,steps,distanceInMeters,activeTimeInSeconds,calories \ + FROM dailyActivityLog \ + WHERE recordedForDate >= {time_stamp} AND steps > {lastime_stampteps}') while True: row = cur.fetchone() - if row == None: + if row is None: break mytime = datetime.datetime.fromtimestamp(row[0]).strftime('%Y-%m-%dT%H:%M:%SZ') data = [ @@ -51,10 +58,10 @@ def main(host='localhost', port=8086, user='root', password='root', dbname='demo ] if args.verbose: - print("writing data for %s" % (mytime)) + print(f'writing data for {mytime}') - db.write_points(data) - db.close() + influx_db.write_pointime_stamp(data) + influx_db.close() def parse_args(): """Parse the args from main.""" @@ -80,7 +87,5 @@ def parse_args(): help='sqlite (pacer) database name') return parser.parse_args() - if __name__ == '__main__': - args = parse_args() -main(host=args.host, port=args.port, user=args.user, password=args.password, dbname=args.dbname, dbfile=args.dbfile) + main(parse_args())