summaryrefslogtreecommitdiff
path: root/usv_scheduler.py
diff options
context:
space:
mode:
Diffstat (limited to 'usv_scheduler.py')
-rwxr-xr-xusv_scheduler.py49
1 files changed, 49 insertions, 0 deletions
diff --git a/usv_scheduler.py b/usv_scheduler.py
new file mode 100755
index 0000000..1dccc5f
--- /dev/null
+++ b/usv_scheduler.py
@@ -0,0 +1,49 @@
+#!/usr/bin/env python3
+
+from apscheduler.schedulers.background import BlockingScheduler
+from usv_driver import Usv
+from influxdb import InfluxDBClient
+
+import sys
+import argparse
+import logging
+
+INTERVAL=14 # execution takes about 6s
+
+logging.basicConfig(level=logging.INFO)
+
+parser = argparse.ArgumentParser()
+parser.add_argument('--host', help='Database host', default='localhost')
+parser.add_argument('--port', help='Database port', default='8086')
+parser.add_argument('--db', help='Database name', default='test')
+parser.add_argument('--serial', help='Serial port', default='/dev/ttyU0')
+parser.add_argument('--baud', help='Serial baudrate', default='600')
+parser.add_argument('--param', help='Parameter JSON file', default='./usv_param.json')
+args = parser.parse_args(sys.argv[1:])
+
+scheduler = BlockingScheduler(timezone="Europe/Berlin")
+
+db_client = InfluxDBClient(host=args.host,
+ port=args.port,
+ database=args.db)
+
+usv = Usv(args.serial, int(args.baud), args.param)
+
+@scheduler.scheduled_job('interval', seconds=INTERVAL)
+def timed_job():
+ parameters = usv.get_parameters()
+ data = []
+ for name in parameters:
+ data.append({
+ 'measurement': 'usv_parameters',
+ 'tags': {
+ 'name': name,
+ 'id': 'LI????VA',
+ },
+ 'fields': {'value': parameters[name]}
+ });
+ logging.info("insert: %s: %s" % (name, parameters[name]))
+
+ db_client.write_points(data)
+
+scheduler.start()