# -*- coding: utf-8 -*- # !/usr/bin/env python import datetime import threading from smart_box import SimulatorSmartBox class ZhiyangjiDevice(SimulatorSmartBox): def __init__(self, mqtt_server, mqtt_port, mqtt_user, mqtt_pwd, imei): super(ZhiyangjiDevice, self).__init__(mqtt_server, mqtt_port, mqtt_user, mqtt_pwd, imei) self.start_time = None self.duration = 0 @property def device_extend_info(self): return { 'driverCode': '100717', 'driverVersion': 'v1.0.0' } def get_left_time(self, now_time = None): if self.duration == 0 or self.start_time is None: return 0 if now_time: left_time = (self.start_time + self.duration) - now_time if left_time < 0: left_time = 0 else: left_time = (self.start_time + self.duration) - int(datetime.datetime.now()) if left_time < 0: left_time = 0 def do_message(self, cmd, payload): # type: (int, dict)->None if cmd == 201: return self.publish_message( cmd = cmd, payload = { 'cmd': 210, 'IMEI': self.imei, 'rst': 0, 'left_time': self.get_left_time() }) if cmd == 203: left_time = self.get_left_time(payload['t']) if left_time == 0: self.start_time = payload['t'] self.duration = payload['duration'] else: self.duration += payload['duration'] return self.publish_message( cmd = cmd, payload = { 'cmd': 203, 'IMEI': self.imei, 'rst': 0, 'left_time': self.get_left_time() }) super(ZhiyangjiDevice, self).do_message(cmd, payload) class myThread(threading.Thread): def __init__(self, mqtt_server, mqtt_port, mqtt_user, mqtt_pwd, imei): threading.Thread.__init__(self) self.mqtt_server = mqtt_server self.mqtt_port = mqtt_port self.mqtt_user = mqtt_user self.mqtt_pwd = mqtt_pwd self.imei = imei self.setDaemon(False) def run(self): ZhiyangjiDevice(self.mqtt_server, self.mqtt_port, self.mqtt_user, self.mqtt_pwd, self.imei).start() if __name__ == '__main__': imei_list = { 'DUMMY_ZHIYANGJI': 'DUMMY_ZHIYANGJI_IMEI', } mqtt_server = '120.27.251.159' mqtt_port = 1883 mqtt_user = '20160528@vivestone' mqtt_pwd = 'j429QXqI5CTv' for imei in imei_list.values(): myThread(mqtt_server, mqtt_port, mqtt_user, mqtt_pwd, imei).start() import time while (True): time.sleep(10)