anqihuandian.py 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. # -*- coding: utf-8 -*-
  2. # !/usr/bin/env python
  3. import threading
  4. from typing import TYPE_CHECKING, Dict
  5. from smart_box import SimulatorSmartBox
  6. if TYPE_CHECKING:
  7. pass
  8. class AQDevice(SimulatorSmartBox):
  9. def __init__(self, mqtt_server, mqtt_port, mqtt_user, mqtt_pwd, imei):
  10. super(AQDevice, self).__init__(mqtt_server, mqtt_port, mqtt_user, mqtt_pwd, imei)
  11. def exit(self):
  12. super(AQDevice, self).exit()
  13. def do_message(self, cmd, payload):
  14. # type: (int, Dict)->None
  15. message = {
  16. "IMEI": self.imei,
  17. "rst": 1,
  18. "cmd": cmd
  19. }
  20. if cmd == 210:
  21. func = payload['funCode']
  22. # 查询所有的端口状态 暂时固定数据返回 只做启动时候的电话号码检测
  23. if func == "78":
  24. message.update({
  25. "data": "574B4C59220178000A00000001000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000001BA1620130303030303030303030303030303433393239373635330000000001000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000001C1C6401303030303061716B3836333339363035323331323930350000000001000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000A7",
  26. "rst": 0
  27. })
  28. # 开锁的指令
  29. elif func == "82":
  30. message.update({
  31. "data": "574B4C590B008200010081",
  32. "rst": 0
  33. })
  34. return self.publish_message(cmd = cmd, payload = message)
  35. elif cmd == 220:
  36. func = payload['funCode']
  37. # 关闭端口的充电状态
  38. if func == "71":
  39. message.update({
  40. "data": "574B4C590A0071000173",
  41. "rst": 0
  42. })
  43. else:
  44. pass
  45. return self.publish_message(cmd=cmd, payload=message)
  46. else:
  47. super(AQDevice, self).do_message(cmd, payload)
  48. @property
  49. def device_extend_info(self):
  50. return {
  51. 'driverCode': '100230',
  52. 'driverVersion': 'v1.0.0'
  53. }
  54. class myThread(threading.Thread): # 继承父类threading.Thread
  55. def __init__(self, mqtt_server, mqtt_port, mqtt_user, mqtt_pwd, imei):
  56. threading.Thread.__init__(self)
  57. self.mqtt_server = mqtt_server
  58. self.mqtt_port = mqtt_port
  59. self.mqtt_user = mqtt_user
  60. self.mqtt_pwd = mqtt_pwd
  61. self.imei = imei
  62. self.setDaemon(False)
  63. def run(self):
  64. AQDevice(self.mqtt_server, self.mqtt_port, self.mqtt_user, self.mqtt_pwd, self.imei).start()
  65. if __name__ == '__main__':
  66. imei_list = {
  67. 'AQ_DUMMY': 'AQ_DUMMY_IMEI'
  68. }
  69. mqttServer = '211.159.224.10'
  70. mqttPort = 1883
  71. mqttUser = '20160528@vivestone'
  72. mqttPwd = 'j429QXqI5CTv'
  73. threads = []
  74. for _imei in imei_list.values():
  75. thread = myThread(mqttServer, mqttPort, mqttUser, mqttPwd, _imei)
  76. thread.start()
  77. threads.append(thread)