wxt536_converter.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. from sanic.log import logger
  2. import re
  3. from converter import Converter
  4. class WXT536Converter(Converter):
  5. '''
  6. [{"name":"c1","addr":"1"},
  7. {"name":"c2","addr":"2"},
  8. {"name":"c3","addr":"3"},
  9. {"name":"c4","addr":"4"},
  10. {"name":"c5","addr":"5"},
  11. {"name":"c6","addr":"6"}]
  12. '''
  13. def convert(self, config, data):
  14. logger.info(f"data: {data}")
  15. if data:
  16. dict = {}
  17. try:
  18. list = data.decode().split(",")
  19. logger.info(f"list: {list}, len: {len(list)}")
  20. if len(list) == 9:
  21. for index in config:
  22. name = 'c' + str(index['serial_number'])
  23. i = int(index['address'])
  24. if list[i][-1] != "#":
  25. dict[name] = re.findall(r"\d+\.?\d*", list[i])[0]
  26. else:
  27. dict[name] = "null"
  28. logger.info(f"解析后数据(气象传感器):{dict}")
  29. return dict
  30. elif len(list) > 0:
  31. return "pass"
  32. else:
  33. return "error"
  34. except Exception as e:
  35. logger.error(e)
  36. return "error"