return [self.off_msg,flag]
-
class testSmsSetIPManager(Abstract):#
def __init__(self):
self.timer = osTimer()
- self.newip = "api.xcloudtech.com"#默认防走丢协议
- self.newcom = 9000
- self.newmd5 = "bZld0ALsZTt15tKEZhOlLPgbsO75BLTP"
+ self.newip = "8.134.110.49"
+ # "8.134.110.49"#默认大锤服务器 在大锤服务器更改要连接新的服务器地址
+ self.newcom = 30346
+ # 31379
+
+ self.new_key = "3JyCjsw4ryXKzjzudayY"
+ self.new_pid = "qAELPTKmFanR4RHe"
+ self.server_sate = 0
+ # d_server_addr = "tcp.tx.kidxin.com"
+ # d_server_port = 20500
tmp_data = EventMesh.publish("get_storage_config","set_new_ip_addr")
if tmp_data != None:
self.newip = tmp_data
if tmp_data != None:
self.newmd5 = tmp_data
+ tmp_data = EventMesh.publish("get_storage_config","set_new_key")
+ if tmp_data != None:
+ self.new_key = tmp_data
+
+ tmp_data = EventMesh.publish("get_storage_config","set_new_pid")
+ if tmp_data != None:
+ self.new_pid = tmp_data
+
+ tmp_data = EventMesh.publish("get_storage_config","get_server_sate")
+ if tmp_data != None:
+ self.server_sate = tmp_data
+
+
+
def post_processor_after_instantiation(self):
EventMesh.subscribe("set_new_ip", self.set_new_ip)#设置关机时间
EventMesh.subscribe("get_new_ip", self.get_new_ip)
+ EventMesh.subscribe("get_new_key_cb", self.get_new_key_cb)#获取key
+ EventMesh.subscribe("set_new_key_cb", self.set_new_key_cb)#获取key
+
+ EventMesh.subscribe("set_new_pid_cb", self.set_new_pid_cb)#获取pid
+ EventMesh.subscribe("get_new_pid_cb", self.get_new_pid_cb)#获取pid
+
+ EventMesh.subscribe("set_server_state", self.set_server_state)#
+ EventMesh.subscribe("get_server_state", self.get_server_state)#
+
+ EventMesh.subscribe("get_new_key_pid", self.get_new_key_pid)#获取pid和key
+
+
+ def set_new_key_cb(self, event, msg):
+ self.new_key = msg
+ EventMesh.publish("set_storage_config",["set_new_key",self.new_key])
+
+ def get_new_key_cb(self, event, msg):
+ return self.new_key
+
+ def set_new_pid_cb(self, event, msg):
+ self.new_pid = msg
+ EventMesh.publish("set_storage_config",["set_new_pid",self.new_pid])
+
+ def get_new_pid_cb(self, event, msg):
+ return self.new_pid
+
def set_new_ip(self, event, msg):
self.newip = str(msg[0])
self.newcom = int(msg[1])
EventMesh.publish("set_storage_config",["set_new_ip_addr",self.newip])
EventMesh.publish("set_storage_config",["set_new_com",self.newcom])
+
number = str(msg[2])
sms.sendPduMsg(number, 'set ok', 'UCS2')
self.timer.start(10*1000,0,self.fun)
Power.powerRestart()
def get_new_ip(self, event, msg):
- tmp_data = EventMesh.publish("get_storage_config","set_new_ip_addr")
- # return [self.newip,self.newcom,self.newmd5]
+ tmp_addr = EventMesh.publish("get_storage_config","set_new_ip_addr")
+ tmp_com = EventMesh.publish("get_storage_config","set_new_com")
+ if tmp_addr != None:
+ self.newip = tmp_addr
+ if tmp_com != None:
+ self.newcom = tmp_com
+ return [self.newip,self.newcom]
+
+ def get_new_key_pid(self, event, msg):
+ return [self.new_key,self.new_pid]
+
+ def set_server_state(self, event, msg):
+ EventMesh.publish("set_storage_config",["get_server_sate",msg])
+ self.server_sate = msg
+
+ def get_server_state(self, event, msg):
+ return self.server_sate
+
class setkeyboardManager(Abstract):#设置键盘开关状态
def __init__(self):
self.key_state = 0
import osTimer
import machine
-
+import urandom
import _thread
-
+import request
import usys
def server_init(server_type = None):
#服务器选择1,防走丢,2大锤,3三基同创,4童信 5云米
if server_type == None:
- server_type = 5
+ server_type = 2
#print("server_init:server_type:{}".format(server_type))
d_server_addr = "api.xcloudtech.com"
d_server_port = 9000
d_md5_key = ""
d_PID = "3G"
elif server_type == 4:
- d_server_addr = "tcp.tx.kidxin.com"
- d_server_port = 20500
+ d_server_addr = "tcp.tx.kidxin.com"
+ d_server_port = 20500
elif server_type == 5:
d_server_addr = "device.miwitracker.com"
d_server_port = 8505
self.sock.close()
self.sock = usocket.socket(usocket.AF_INET, usocket.SOCK_STREAM)
#self.sock.setblocking(False) &self.sock.settimeout(0)不阻塞
+
self.sock.connect((self.server_addr, self.server_port))
#utime.sleep_ms(500)
self.reconnect_flag = 0
def publish_timer_cb(self, *args):
EventMesh.publish(constants.PROTOCOL.LK_SEND)
+ self.authen_set()
+ def authen_set(self):
+ sever_state = EventMesh.publish("get_server_state")#获取修改服务器状态
+ if sever_state != None:
+ if sever_state == 0:
+ new_ip_data = EventMesh.publish("get_new_ip")
+
+ new_key_data = EventMesh.publish("get_new_key_pid")#获取pid和key
+
+ imei = EventMesh.publish(constants.EVENT.GET_IMEI)
+ server_data = server_init()
+ key_data = server_data[2]
+ pid_data = server_data[3]
+ sonce_data = str(urandom.getrandbits(32))#随机生成32位的随机数
+ md5_data = "{}*{}*{}*{}".format(imei,pid_data,sonce_data,key_data)#md5签名
+ sign_data = ""
+ hash_obj = uhashlib.md5(md5_data)
+ res = hash_obj.digest()
+
+ # 转成十六进制表示
+ sign_data = ubinascii.hexlify(res)
+ sign_data = sign_data.decode('ascii')
+ print("sign_data:{} sonce_data:{}".format(md5_data,sign_data))
+ # sign_data = MD5_head
+ # http://8.134.110.49:31379/dev/device/check?imei=&bid=sonce=sign=
+ url = "http://8.134.110.49:31379/dev/device/check?imei={}&bid={}&sonce={}&sign={}".format(imei,pid_data,sonce_data,sign_data)
+
+ response = request.get(url)
+ data_tmp ={}
+ # d_server_addr = "device.miwitracker.com"
+ # d_server_port = 8505
+ # d_md5_key = ""
+ # d_PID = "3G"
+ # response.content = {'protocolType': '', 'host': 'device.miwitracker.com', 'secretKey': '', 'port': 8505, 'bid': '3G', 'extJsonStr': ''}
+ # response.status_code=200
+ # print("test-{}".format(response.status_code))
+ if response.status_code == 200:
+ content = response.content
+ c = next(content)
+ # "api.xcloudtech.com"
+ # d_server_port = 9000
+ jsload_data = ujson.loads(c)
+ # print("jsload_data-{}".format(jsload_data))
+ # jsload_data = {'data':'111','protocolType':'', 'host':'device.miwitracker.com', 'secretKey': 'bZld0ALsZTt15tKEZhOlLPgbsO75BLTP', 'port':8505, 'bid': '3G', 'extJsonStr': ''}
+ # ujson.loads(c)
+
+ if "success" in jsload_data:
+ success = jsload_data["success"]
+ if success == True:#合法设备
+ if "data" in jsload_data:
+ data_tmp = jsload_data["data"]#返回的数据
+ print("data_tmp:{}".format(data_tmp))
+ code = jsload_data["code"]
+ if code == 20000:#合法的设备
+ protocloType = data_tmp["protocolType"]#协议类型
+ host = data_tmp["host"]#服务骑地址
+ secretKey = data_tmp["secretKey"]#
+ pid = data_tmp["bid"]#产品型号
+ port = data_tmp["port"]#端口号
+ if new_ip_data != None:
+ # host = "tcptest.tx.kidxin.com"#童信
+ # port = 20500
+ # d_md5_key = "bZld0ALsZTt15tKEZhOlLPgbsO75BLTP"
+ if host != '':
+ self.server_addr = host
+
+ EventMesh.publish("set_storage_config",["set_new_ip_addr",self.server_addr])
+
+ if port != '' and port != -1:
+ self.server_port = port
+ EventMesh.publish("set_storage_config",["set_new_com",self.server_port])
+ # EventMesh.publish("set_new_ip",[new_ip_data[0],self.server_port])
+ # pid = "SZKW"
+ # secretKey = "bZld0ALsZTt15tKEZhOlLPgbsO75BLTP"
+ if new_key_data != None:
+ if secretKey != '':
+ EventMesh.publish("set_new_key_cb", secretKey)#获取pid和key
+
+ if pid != '':
+ EventMesh.publish("set_new_pid_cb",pid)#获取pid和key
+
+ EventMesh.publish("set_server_state",1)#获取修改服务器状态
+ self.reconnect_timer_cb()#重连设备
+ # print("self.server_addr",self.server_addr,self.server_port)
+ # key_data = EventMesh.publish("get_new_key_pid")#获取pid和key
+ # print("self.server_addr-{}-self.server_port:{}-key_data:{}-{}".format(self.server_addr,self.server_port,key_data[0],key_data[1]))
+ # print("response.status_code-{}-{}-{}-{}".format(response.status_code,url,response.content,response.text))
+
+
def check(self, *args):
if (not self.run_flag) or (self.connect_tmp == 0) : #7分钟无数据读取,则认为是掉线了
self.imsi = EventMesh.publish(constants.EVENT.GET_IMSI)
self.key = EventMesh.publish(constants.EVENT.GET_KEY)
self.HEADER = self.HEADER.format(self.TYPE)
- server_data = server_init()
- self.md5_key = server_data[2]
- self.PID = server_data[3]
-
-
- # ip_infor = {}
- # ip_infor = EventMesh.publish("get_new_ip")
- # if ip_infor != None:
- # self.md5_key = ip_infor[2]
- # print("md5_key",self.md5_key)
+ # server_data = server_init()
+ self.md5_key = ''
+ self.PID = ''
+ server_data = EventMesh.publish("get_new_key_pid")#获取pid和key
+ if server_data == None:
+ server_data = server_init()#如果获取的数据是None,就用默认的大锤key和pid
+ self.md5_key = server_data[2]
+ self.PID = server_data[3]
+ else:
+ self.md5_key = server_data[0]
+ self.PID = server_data[1]
def initialization(self, *args, **kwargs):
EventMesh.subscribe(self.TYPE + "_SEND", self.handler)
EventMesh.subscribe(self.TYPE + "_RECV", self.handler)
def handler(self, event, msg):
+ server_data = EventMesh.publish("get_new_key_pid")#获取pid和key
+ # print("handler",server_data)
+ if server_data != None:
+ if self.md5_key != server_data[0]:
+ print("change md5key",self.md5_key,server_data[0])
+ self.md5_key = server_data[0]
+ if self.PID != server_data[1]:
+ print("change md5PID",self.PID,server_data[1])
+ self.PID = server_data[1]
+
self.password = EventMesh.publish(constants.EVENT.GET_PASSWORD)
self.imei = EventMesh.publish(constants.EVENT.GET_IMEI)#"867387060319166"#EventMesh.publish(constants.EVENT.GET_IMEI)#"867387060319166" #EventMesh.publish(constants.EVENT.GET_IMEI)#"867387060319166"#EventMesh.publish(constants.EVENT.GET_IMEI) #"867387060319166"#EventMesh.publish(constants.EVENT.GET_IMEI) #"867387060319166"#"867387060319188"#"867387060319177"#"867387060319166"#"860132060004322"#"867387060319166"#"860132060004322"#EventMesh.publish(constants.EVENT.GET_IMEI)
self.cid = EventMesh.publish(constants.EVENT.GET_CID)
EventMesh.publish(constants.PROTOCOL.TIME_SEND)
EventMesh.publish(constants.EVENT.START_LOCATION,constants.PROTOCOL.UD_SEND) #开始UD定位
EventMesh.publish(constants.EVENT.START_LOCATION,constants.PROTOCOL.WT_SEND) #开始WT定位
- EventMesh.publish(constants.PROTOCOL.MFCODE_FRIEND_REQ_SEND)
+ EventMesh.publish(constants.PROTOCOL.MFCODE_FRIEND_REQ_SEND)#开机获取一次好友列表
class PING_ProtoCol(ProtoCol):
"""获取绑定状态"""