summaryrefslogtreecommitdiff
path: root/usv_scheduler.py
blob: 09bcf2b84062031b672ade0f60f97361eec439ba (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#!/usr/bin/env python3

from time import sleep

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


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)

logging.basicConfig(level=logging.ERROR, filename='log/usv_scheduler.log')

usv = Usv(args.serial, int(args.baud), args.param)
usv_lock = False

#@scheduler.scheduled_job('interval', seconds=INTERVAL)
def timed_job():
    global usv_lock

    if usv_lock:
        logging.info("JOB CURRENTLY LOCKED")
        return

    usv_lock = True
    parameters = usv.get_parameters()
    data = []
    for name in parameters:
        data.append({
            'measurement': 'usv_parameters',
            'tags': {
                'name': name,
                'id': 'LI????VA',
                },
            'fields': {'value': parameters[name]}
            });
    print("insert: %s" % ",".join("%s=%s" % \
            (name,parameters[name]) for name in parameters))
    
    try:
        db_client.write_points(data)
    except Exception as e:
        logging.error("%s" % e)

    usv_lock = False

while True:
    timed_job()
    sleep(24)

#scheduler.start()