zhiyangji.py 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. # -*- coding: utf-8 -*-
  2. # !/usr/bin/env python
  3. import datetime
  4. import threading
  5. from smart_box import SimulatorSmartBox
  6. class ZhiyangjiDevice(SimulatorSmartBox):
  7. def __init__(self, mqtt_server, mqtt_port, mqtt_user, mqtt_pwd, imei):
  8. super(ZhiyangjiDevice, self).__init__(mqtt_server, mqtt_port, mqtt_user, mqtt_pwd, imei)
  9. self.start_time = None
  10. self.duration = 0
  11. @property
  12. def device_extend_info(self):
  13. return {
  14. 'driverCode': '100717',
  15. 'driverVersion': 'v1.0.0'
  16. }
  17. def get_left_time(self, now_time = None):
  18. if self.duration == 0 or self.start_time is None:
  19. return 0
  20. if now_time:
  21. left_time = (self.start_time + self.duration) - now_time
  22. if left_time < 0:
  23. left_time = 0
  24. else:
  25. left_time = (self.start_time + self.duration) - int(datetime.datetime.now())
  26. if left_time < 0:
  27. left_time = 0
  28. def do_message(self, cmd, payload):
  29. # type: (int, dict)->None
  30. if cmd == 201:
  31. return self.publish_message(
  32. cmd = cmd,
  33. payload = {
  34. 'cmd': 210,
  35. 'IMEI': self.imei,
  36. 'rst': 0,
  37. 'left_time': self.get_left_time()
  38. })
  39. if cmd == 203:
  40. left_time = self.get_left_time(payload['t'])
  41. if left_time == 0:
  42. self.start_time = payload['t']
  43. self.duration = payload['duration']
  44. else:
  45. self.duration += payload['duration']
  46. return self.publish_message(
  47. cmd = cmd,
  48. payload = {
  49. 'cmd': 203,
  50. 'IMEI': self.imei,
  51. 'rst': 0,
  52. 'left_time': self.get_left_time()
  53. })
  54. super(ZhiyangjiDevice, self).do_message(cmd, payload)
  55. class myThread(threading.Thread):
  56. def __init__(self, mqtt_server, mqtt_port, mqtt_user, mqtt_pwd, imei):
  57. threading.Thread.__init__(self)
  58. self.mqtt_server = mqtt_server
  59. self.mqtt_port = mqtt_port
  60. self.mqtt_user = mqtt_user
  61. self.mqtt_pwd = mqtt_pwd
  62. self.imei = imei
  63. self.setDaemon(False)
  64. def run(self):
  65. ZhiyangjiDevice(self.mqtt_server, self.mqtt_port, self.mqtt_user, self.mqtt_pwd, self.imei).start()
  66. if __name__ == '__main__':
  67. imei_list = {
  68. 'DUMMY_ZHIYANGJI': 'DUMMY_ZHIYANGJI_IMEI',
  69. }
  70. mqtt_server = '120.27.251.159'
  71. mqtt_port = 1883
  72. mqtt_user = '20160528@vivestone'
  73. mqtt_pwd = 'j429QXqI5CTv'
  74. for imei in imei_list.values():
  75. myThread(mqtt_server, mqtt_port, mqtt_user, mqtt_pwd, imei).start()
  76. import time
  77. while (True):
  78. time.sleep(10)