ci #1
1 changed files with 29 additions and 32 deletions
|
@ -1,45 +1,47 @@
|
|||
#!/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)
|
||||
measurements = influx_db.get_list_measurements()
|
||||
time_stamp = 0
|
||||
lastdate = 0
|
||||
laststeps = 0
|
||||
if measurements != []:
|
||||
lastentry = db.query('SELECT LAST("steps") FROM "steps"')
|
||||
|
||||
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:
|
||||
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:
|
||||
points = lastentry.get_points('steps')
|
||||
laststeps = list(points)[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}, timestamp is {time_stamp}, \
|
||||
number of steps is {laststeps}\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 > {laststeps}')
|
||||
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 = [
|
||||
{"measurement":"steps",
|
||||
data = [{"measurement":"steps",
|
||||
"time":mytime,
|
||||
"fields": {
|
||||
"steps":row[1],
|
||||
|
@ -47,14 +49,11 @@ def main(host='localhost', port=8086, user='root', password='root', dbname='demo
|
|||
"activeTimeInSeconds":row[3],
|
||||
"calories":row[4]
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
}]
|
||||
if args.verbose:
|
||||
print("writing data for %s" % (mytime))
|
||||
|
||||
db.write_points(data)
|
||||
db.close()
|
||||
print(f'writing data for {mytime}')
|
||||
influx_db.write_points(data)
|
||||
influx_db.close()
|
||||
|
||||
def parse_args():
|
||||
"""Parse the args from main."""
|
||||
|
@ -80,7 +79,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())
|
||||
|
|
Loading…
Reference in a new issue