# -*- coding: utf-8 -*- # !/usr/bin/env python import threading from typing import TYPE_CHECKING, Dict from smart_box import SimulatorSmartBox if TYPE_CHECKING: pass class AQDevice(SimulatorSmartBox): def __init__(self, mqtt_server, mqtt_port, mqtt_user, mqtt_pwd, imei): super(AQDevice, self).__init__(mqtt_server, mqtt_port, mqtt_user, mqtt_pwd, imei) def exit(self): super(AQDevice, self).exit() def do_message(self, cmd, payload): # type: (int, Dict)->None message = { "IMEI": self.imei, "rst": 1, "cmd": cmd } if cmd == 210: func = payload['funCode'] # 查询所有的端口状态 暂时固定数据返回 只做启动时候的电话号码检测 if func == "78": message.update({ "data": "574B4C59220178000A00000001000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000001BA1620130303030303030303030303030303433393239373635330000000001000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000001C1C6401303030303061716B3836333339363035323331323930350000000001000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000A7", "rst": 0 }) # 开锁的指令 elif func == "82": message.update({ "data": "574B4C590B008200010081", "rst": 0 }) return self.publish_message(cmd = cmd, payload = message) elif cmd == 220: func = payload['funCode'] # 关闭端口的充电状态 if func == "71": message.update({ "data": "574B4C590A0071000173", "rst": 0 }) else: pass return self.publish_message(cmd=cmd, payload=message) else: super(AQDevice, self).do_message(cmd, payload) @property def device_extend_info(self): return { 'driverCode': '100230', 'driverVersion': 'v1.0.0' } class myThread(threading.Thread): # 继承父类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): AQDevice(self.mqtt_server, self.mqtt_port, self.mqtt_user, self.mqtt_pwd, self.imei).start() if __name__ == '__main__': imei_list = { 'AQ_DUMMY': 'AQ_DUMMY_IMEI' } mqttServer = '211.159.224.10' mqttPort = 1883 mqttUser = '20160528@vivestone' mqttPwd = 'j429QXqI5CTv' threads = [] for _imei in imei_list.values(): thread = myThread(mqttServer, mqttPort, mqttUser, mqttPwd, _imei) thread.start() threads.append(thread)