ci #1

Merged
n merged 3 commits from ci into main 2024-02-15 17:44:21 +01:00
Showing only changes of commit aa16c1f792 - Show all commits

View file

@ -1,45 +1,47 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
from influxdb import InfluxDBClient
"""Export Pacer data to InfluxDB"""
import datetime import datetime
import time import time
import sqlite3 as lite import sqlite3 as lite
import argparse 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.""" """Instantiate the connection to the InfluxDB client."""
influx_db = InfluxDBClient(args.host, args.port, args.user, args.password, args.dbname)
db = InfluxDBClient(host, port, user, password, dbname) measurements = influx_db.get_list_measurements()
measurements = db.get_list_measurements() time_stamp = 0
ts = 0
lastdate = 0 lastdate = 0
laststeps = 0 laststeps = 0
if measurements != []: if measurements != []:
lastentry = db.query('SELECT LAST("steps") FROM "steps"') lastentry = influx_db.query('SELECT LAST("steps") FROM "steps"')
points = lastentry.get_points('steps') points = lastentry.get_points('steps')
lastdate = list(points)[0]['time'] lastdate = list(points)[0]['time']
ts = time.mktime(datetime.datetime.strptime(lastdate, '%Y-%m-%dT%H:%M:%SZ').timetuple()) time_stamp = time.mktime(datetime.datetime.strptime(lastdate, '%Y-%m-%dT%H:%M:%SZ')
if ts == datetime.datetime.now().timestamp() // 86400 * 86400 + time.timezone: .timetuple())
if time_stamp == datetime.datetime.now().timestamp() // 86400 * 86400 + time.timezone:
points = lastentry.get_points('steps') points = lastentry.get_points('steps')
laststeps = list(points)[0]['last'] laststeps = list(points)[0]['last']
if args.verbose: 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: with con:
cur = con.cursor() 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: while True:
row = cur.fetchone() row = cur.fetchone()
if row == None: if row is None:
break break
mytime = datetime.datetime.fromtimestamp(row[0]).strftime('%Y-%m-%dT%H:%M:%SZ') mytime = datetime.datetime.fromtimestamp(row[0]).strftime('%Y-%m-%dT%H:%M:%SZ')
data = [ data = [{"measurement":"steps",
{"measurement":"steps",
"time":mytime, "time":mytime,
"fields": { "fields": {
"steps":row[1], "steps":row[1],
@ -47,14 +49,11 @@ def main(host='localhost', port=8086, user='root', password='root', dbname='demo
"activeTimeInSeconds":row[3], "activeTimeInSeconds":row[3],
"calories":row[4] "calories":row[4]
} }
} }]
]
if args.verbose: if args.verbose:
print("writing data for %s" % (mytime)) print(f'writing data for {mytime}')
influx_db.write_points(data)
db.write_points(data) influx_db.close()
db.close()
def parse_args(): def parse_args():
"""Parse the args from main.""" """Parse the args from main."""
@ -80,7 +79,5 @@ def parse_args():
help='sqlite (pacer) database name') help='sqlite (pacer) database name')
return parser.parse_args() return parser.parse_args()
if __name__ == '__main__': if __name__ == '__main__':
args = parse_args() main(parse_args())
main(host=args.host, port=args.port, user=args.user, password=args.password, dbname=args.dbname, dbfile=args.dbfile)