from inputs.snap7_server import SiemensServer from inputs.snap7_connect import SiemensCPU from inputs.balluff_html import Balluff from inputs.allen_bradley_connect import AllenBradleyCPU from database import * import logging import time logging.basicConfig(level=logging.WARNING) logging.warning("starting") sources = [ #SiemensCPU("192.168.0.10"), SiemensServer(), #Balluff(), AllenBradleyCPU("192.168.1.15"), ] sinks = [ InfluxDB("http://influxdb:8086"), CSVStorage("logs"), ] for source in sources: source.start() logging.warning("started sources") startTime = 0 def printStats(values): global startTime counts = {} dt = time.monotonic() - startTime startTime = time.monotonic() text = "" for meas in values: id = "{} {}".format(meas.series, meas.source) if id in counts: counts[id] += 1 else: counts[id] = 1 if counts: ids = list(counts.keys()) ids.sort() for id in ids: text += "{}: {:4d} in {:.03f}s, {:.1f}/s ".format(id, counts[id], dt, counts[id] / dt) else: text = "0 Messungen in {:.03f}s ".format(dt) if not counts or len(ids) < 3: logging.warning(text) else: logging.info(text) while True: values = [] for source in sources: values.extend(source.read()) for sink in sinks: sink.write(values) printStats(values) time.sleep(1.9)