dummy.py 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import logging
  2. import random
  3. import math
  4. from datetime import datetime, timedelta, time
  5. from inputs.common import Input as Inp
  6. from structures.measurement import Measurement24v, Measurement480v
  7. from structures.plant import S7State, CompactLogixState
  8. logger = logging.getLogger(__name__)
  9. def f():
  10. return random.random()
  11. def b():
  12. return random.choice([True, False])
  13. def i(count=100):
  14. return random.randint(0, count-1)
  15. class Input(Inp):
  16. def __init__(self, message) -> None:
  17. super().__init__(self.read_handler)
  18. logger.debug(message)
  19. self.interval = 0.1
  20. def read_handler(self):
  21. current = datetime.now()
  22. current_td = timedelta(
  23. hours = current.hour,
  24. minutes = current.minute,
  25. seconds = current.second,
  26. microseconds = current.microsecond)
  27. # discretize to specified resolution
  28. to_sec = timedelta(seconds = round(current_td.total_seconds(), max(0, int(-math.log10(self.interval)))))
  29. timestamp = datetime.combine(current, time(0)) + to_sec
  30. self._q.put(Measurement24v(
  31. timestamp - timedelta(seconds=0.05),
  32. "dummy24v",
  33. (f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f()),
  34. (b(), b(), b(), b(), b(), b(), b(), b(), b(), b(), b(), b(), b(), b(), b(), b()),
  35. (b(), b(), b(), b(), b(), b(), b(), b(), b(), b(), b(), b(), b(), b(), b(), b()),
  36. (b(), b(), b(), b(), b(), b(), b(), b(), b(), b(), b(), b(), b(), b(), b(), b()),
  37. (b(), b(), b(), b(), b(), b(), b(), b(), b(), b(), b(), b(), b(), b(), b(), b()),
  38. (b(), b(), b(), b(), b(), b(), b(), b(), b(), b(), b(), b(), b(), b(), b(), b()),
  39. f() + 23.5
  40. ))
  41. self._q.put(Measurement480v(
  42. timestamp - timedelta(seconds=0.03),
  43. "dummy480v",
  44. (f()+230, f()+230, f()+230),
  45. (f(), f(), f()),
  46. (i(360), i(360), i(360))
  47. ))
  48. self._q.put(CompactLogixState(
  49. timestamp,
  50. "dummyAB",
  51. i(2), i(2), i(2), i(2), i(2), i(2), i(2), i(2), i(2), i(2),
  52. i(2), i(2), i(2), i(2), i(2), i(2), i(2), i(2), i(2), i(2),
  53. i(2), i(2), i(2), i(2), i(2), i(2), i(2), i(2), i(2), i(2),
  54. i(2), i(2), i(2), i(2), i(2), i(2), i(2), i(2), i(2), i(2),
  55. i(2), i(2), i(2), i(2), i(2), i(2), i(2), i(2), i(2), i(2),
  56. i(2), i(2), i(2), i(2), i(2), i(2), i(2), i(2), i(2), i(2),
  57. i(2), i(2)
  58. ))