main.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. from inputs.snap7_server import SiemensServer
  2. from inputs.snap7_connect import SiemensCPU
  3. from inputs.balluff_html import Balluff
  4. from inputs.allen_bradley_connect import AllenBradleyCPU
  5. from database import *
  6. import logging
  7. import time
  8. logging.basicConfig(level=logging.WARNING)
  9. logging.info("starting")
  10. sources = [
  11. SiemensCPU("192.168.10.6"),
  12. SiemensServer(),
  13. #Balluff(),
  14. AllenBradleyCPU("192.168.10.5"),
  15. ]
  16. logging.info("initialized sources")
  17. sinks = [
  18. InfluxDB("http://localhost:8086"),
  19. CSVFile("logs"),
  20. ]
  21. logging.info("initialized sinks")
  22. for source in sources:
  23. source.start()
  24. logging.info("started sources")
  25. startTime = 0
  26. def printStats(values):
  27. global startTime
  28. counts = {}
  29. dt = time.monotonic() - startTime
  30. startTime = time.monotonic()
  31. text = ""
  32. for meas in values:
  33. id = "{} {}".format(meas.series, meas.source)
  34. if id in counts:
  35. counts[id] += 1
  36. else:
  37. counts[id] = 1
  38. if counts:
  39. ids = list(counts.keys())
  40. ids.sort()
  41. for id in ids:
  42. text += "{}: {:4d} Messungen in {:.03f} s, {:.3f} pro Sekunde ".format(id, counts[id], dt, counts[id] / dt)
  43. else:
  44. text = "0 Messungen in {:.03f} s ".format(dt)
  45. print(text, end='\r')
  46. while True:
  47. values = []
  48. for source in sources:
  49. values.extend(source.read())
  50. for sink in sinks:
  51. sink.write(values)
  52. printStats(values)
  53. time.sleep(1)