100273.py 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. import threading
  2. from script.simulator.smart_box import SimulatorSmartBox
  3. class WFLDevice(SimulatorSmartBox):
  4. def __init__(self, **kwargs):
  5. super(WFLDevice, self).__init__(**kwargs)
  6. def do_message(self, cmd, payload): # type: (int, dict)->None
  7. if cmd == 210:
  8. self._do_210_message(payload)
  9. else:
  10. super(WFLDevice, self).do_message(cmd, payload)
  11. def _do_210_message(self, payload):
  12. funCode = payload["data"]["fun_code"]
  13. print(funCode)
  14. message = getattr(self, "response_{:02}_message".format(funCode), self.response_default_message)
  15. return self.publish_message(cmd=210, payload=message)
  16. @property
  17. def response_default_message(self):
  18. return {
  19. "IMEI": self.imei,
  20. "rst": 1,
  21. "cmd": 210,
  22. }
  23. @property
  24. def response_01_message(self):
  25. """"""
  26. return {
  27. "IMEI": self.imei,
  28. "rst": 0,
  29. "cmd": 210,
  30. "data": {
  31. "port_stat": {
  32. "1": "idle",
  33. "2": "link",
  34. "3": "idle",
  35. "4": "idle",
  36. "5": "idle",
  37. "6": "idle",
  38. "7": "idle",
  39. "8": "idle",
  40. "9": "idle",
  41. "10": "idle",
  42. }
  43. }
  44. }
  45. @property
  46. def response_12_message(self):
  47. return {
  48. "IMEI": "861714054531706",
  49. "cmd": 210,
  50. "data": {
  51. "auto_close": True,
  52. "chrmt": "TIME",
  53. "float_charge": {"check_time": 10, "float_time": 120, "float_watt": 30},
  54. "fun_code": 12,
  55. "mach_max_temp": 90,
  56. "mach_max_volt": 260,
  57. "mach_max_watt": 4000,
  58. "noload_check": {"time": 30, "watt": 5},
  59. "port_max_ampr": 6000,
  60. "port_max_watt": 350,
  61. "pre_pwr_time": 600,
  62. "price": {"ELEC": 1000000,
  63. "TIME": [[300, 14400], [400, 10800], [500, 8640], [600, 7200]]},
  64. "volumes": {"00:00-06:59": 2, "20:00-23:59": 2, "default": 7}
  65. },
  66. "rst": 0,
  67. }
  68. @property
  69. def response_17_message(self):
  70. return {
  71. "IMEI": "861714054531706",
  72. "cmd": 210,
  73. "data": {
  74. "card_cur_key": "VEW+Ib0ZPke0i6kH0tJHdA==",
  75. "card_curmode": "NORMAL",
  76. "card_disable": False,
  77. "card_oncefee": 100,
  78. "card_refund": True,
  79. "card_timeout": 10,
  80. "fun_code": 17
  81. },
  82. "rst": 0,
  83. }
  84. @property
  85. def response_08_message(self):
  86. return {
  87. "IMEI": "861714054531706",
  88. "cmd": 210,
  89. "data": {"fun_code": 8, "total_card": 0},
  90. "rst": 0,
  91. }
  92. @property
  93. def device_extend_info(self):
  94. return {
  95. "driverCode": "100273",
  96. "driverVersion": "v1.0.0"
  97. }
  98. class myThread(threading.Thread):
  99. def __init__(self, mqttServer, mqttPort, mqttUser, mqttPwd, imei):
  100. threading.Thread.__init__(self)
  101. self.mqtt_server = mqttServer
  102. self.mqtt_port = mqttPort
  103. self.mqtt_user = mqttUser
  104. self.mqtt_pwd = mqttPwd
  105. self.imei = imei
  106. self.setDaemon(False)
  107. def run(self):
  108. WFLDevice(
  109. mqtt_server=self.mqtt_server,
  110. mqtt_port=self.mqtt_port,
  111. mqtt_user=self.mqtt_user,
  112. mqtt_pwd=self.mqtt_pwd,
  113. imei=self.imei
  114. ).start()
  115. if __name__ == "__main__":
  116. imei_list = {
  117. "MYCD": "MYCD_IMEI"
  118. }
  119. mqtt_server = "211.159.224.10"
  120. mqtt_port = 1883
  121. mqtt_user = "20160528@vivestone"
  122. mqtt_pwd = "j429QXqI5CTv"
  123. threads = []
  124. for _imei in imei_list.values():
  125. thread = myThread(mqtt_server, mqtt_port, mqtt_user, mqtt_pwd, _imei)
  126. thread.start()
  127. threads.append(thread)