Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

63 linhas
1.6KB

  1. from typing import List
  2. from MAXDevice import MAXDevice, MAXThermostat, MAXPushButton
  3. from MAXCube import CUL
  4. from MAXPacketHandler import MAXPacketHandler
  5. from MAXPacket import MAXPacketFactory
  6. from time import sleep
  7. import sys
  8. import signal
  9. DEBUG = True
  10. devices: List[MAXDevice] = []
  11. quit_flag = False
  12. cube: CUL = None
  13. handler: MAXPacketHandler = None
  14. def read_devices(file_name):
  15. file = open(file_name, "r")
  16. lines = file.readlines()
  17. file.close()
  18. for line in lines:
  19. if not line.startswith("#") and line.strip() != "\n":
  20. new_dev = MAXDevice.from_string(line)
  21. if new_dev is not None:
  22. devices.append(new_dev)
  23. def write_devices(file_name):
  24. file = open(file_name, "w")
  25. for device in devices:
  26. dev_str = device.serialize().replace("\n", "")
  27. file.write(dev_str)
  28. file.write("\n")
  29. file.close()
  30. def receive_loop():
  31. global quit_flag
  32. while not quit_flag and cube.is_connected():
  33. try:
  34. resp = cube.response()
  35. if resp is not None and resp[0:1] == "Z":
  36. pkt = MAXPacketFactory.create_packet(resp)
  37. handler.handle_msg(pkt)
  38. sleep(0.1)
  39. except KeyboardInterrupt:
  40. quit_flag = True
  41. return
  42. if __name__ == '__main__':
  43. read_devices("devices.conf")
  44. cube = CUL("123456")
  45. cube.connect("COM10")
  46. print(cube.version_string())
  47. handler = MAXPacketHandler(cube, devices)
  48. signal.signal(signal.SIGINT, signal.default_int_handler)
  49. receive_loop()
  50. cube.disconnect()
  51. write_devices("devices.conf")