summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormakefu <github@syntax-fehler.de>2017-12-06 13:20:24 +0100
committermakefu <github@syntax-fehler.de>2017-12-06 13:20:24 +0100
commit38e62ce923863dabcc4cfb497ba5951fc0eb4533 (patch)
tree46f69efbf3a3b93a4e8e22a8ef9526c932e4e3f3
parent16b1e7e0198181bddd92032c0d00782853402db5 (diff)
ma ampel: also send remaining time to stats
-rwxr-xr-xampel.py34
1 files 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))