From 38e62ce923863dabcc4cfb497ba5951fc0eb4533 Mon Sep 17 00:00:00 2001 From: makefu Date: Wed, 6 Dec 2017 13:20:24 +0100 Subject: ma ampel: also send remaining time to stats --- ampel.py | 34 +++++++++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/ampel.py b/ampel.py index b74814a..976bdd8 100755 --- a/ampel.py +++ b/ampel.py @@ -3,7 +3,9 @@ """ usage: ampel [options] NUMLEDS --mqtt-server=HOST path to mqtt server [Default: 192.168.8.11] + --influx-server=HOST path to influxdb server [Default: 192.168.8.11] --no-mqtt disable mqtt connections for debugging + --no-influx disable sending stats to influxdb NUMLEDS is the number of leds to output data for (--add-empty does not count in here) @@ -13,6 +15,7 @@ BLUE GR YEL RED BLUE EEN LOW """ from docopt import docopt +from influxdb import InfluxDBClient from fade import calc_chain import time from time import sleep @@ -21,7 +24,7 @@ import sys from datetime import datetime, timedelta import requests import logging as log -log.basicConfig(level=log.DEBUG) +log.basicConfig(level=log.INFO) import paho.mqtt.client as mqtt @@ -52,11 +55,14 @@ def fetch_data(): def main(): args = docopt(__doc__) + db = "telegraf" numleds = int(args['NUMLEDS']) mqtt_server = args["--mqtt-server"] + influx_server = args["--influx-server"] no_mqtt = args["--no-mqtt"] + no_influx = args["--no-influx"] + t = fetch_data() - log.error(t) if not no_mqtt: log.info("Starting MQTT") mq = mqtt.Client() @@ -65,6 +71,27 @@ def main(): pub = lambda topic,data: mq.publish(topic,data) else: pub = lambda topic,data: log.info("topic: {}\ndata: {}".format(topic,data)) + if not no_influx: + log.info("preparing influxdb") + client = InfluxDBClient(host=influx_server, port=8086, database=db) + msg = { + "measurement": "seconds_to_bus", + "tags": { + "": "thalesplatz" + }, + "time": "2009-11-10T23:00:00Z", + "fields": { + "value": 0.64 + } + } + + sendstat = lambda secs: client.write_points([ { + "measurement": "seconds_to_bus", + "tags": { "station": "thalesplatz" }, + "fields": { "value": secs } }]) + else: + log.info("No influx") + sendstat = lambda secs: log.info("stat {} -> {} secs".format(datetime.now().replace(microsecond=0).isoformat(),secs)) val = 0.0 step = 0.01 @@ -78,10 +105,11 @@ def main(): t = fetch_data() delta = t - now + sendstat(delta.seconds + delta.days*86400) deltastr = str(delta).split('.', 2)[0] if not ( (t - maxtime) < now < t): - log.error("Bus too far away - {}".format(deltastr)) + log.info("Bus too far away - {}".format(deltastr)) ret = calc_chain(3,val) ret.insert(0,[0,0,0]) pub("/leds/nodemcu-switcher/set",json.dumps(ret)) -- cgit v1.2.3