self.config_data = {}
self.__net_connected = 0
- eventMesh.subscribe("get_network_state",self.get_network_state)#订阅消息
- eventMesh.subscribe("set_network_state",self.set_network_state)#订阅消息
-
- eventMesh.subscribe("set_dev_version",self.set_dev_version)#订阅消息
- eventMesh.subscribe("get_dev_version",self.get_dev_version)#订阅消息
-
- eventMesh.subscribe("set_dev_mac",self.set_dev_mac)#订阅消息
- eventMesh.subscribe("get_dev_mac",self.get_dev_mac)#订阅消息
-
self.regist_timeSec = 0
self.iccid_data = ""
self.software_version = ""
self.retpoertTimerC = osTimer()#上报次数大于下一个周期再触发
self.heartreportTimer = osTimer()#心跳上报定时器
+ eventMesh.subscribe("get_network_state",self.get_network_state)#订阅消息
+ eventMesh.subscribe("set_network_state",self.set_network_state)#订阅消息
+
+ eventMesh.subscribe("set_dev_version",self.set_dev_version)#订阅消息
+ eventMesh.subscribe("get_dev_version",self.get_dev_version)#订阅消息
+
+ eventMesh.subscribe("set_dev_mac",self.set_dev_mac)#订阅消息
+ eventMesh.subscribe("get_dev_mac",self.get_dev_mac)#订阅消息
pass
print("retryTimerCb self.retryNum_old:{}\r\n".format(self.retryNum_old))
self.search_report_num_step()
pass
-
+ def reportTimerIntervalError(self,*argc):
+ self.retryNum_old = 0#保存
+ self.report_Num_old = 0#保存 定时清空数据
+ date_tmp = utime.localtime()
+ time_tmp = utime.mktime(date_tmp)#获取时间戳
+ self.reportTime_Sec = time_tmp+self.reportTime*60 #(记录时间+reportTime)标识旧的时间
+ self.config_data["reportTime_Sec"] = self.reportTime_Sec
+ self.config_data["retryNum_old"] = self.retryNum_old
+ self.config_data["report_Num_old"] = self.report_Num_old
+ self.write_config_msg_file(self.config_data)
+ self.search_report_num_step()#重新查询
+ pass
def error_retryNum_step(self):#判读报错次数是否大于self.retryNum 步骤
print("error_retryNum_step:self.retryNum_oldd:{} self.retryNum:{} self.reportTime:{}\r\n".format(self.retryNum_old,self.retryNum,self.reportTime))
if self.retryNum_old >= self.retryNum and self.retryNum_old != 0:#self.retryNum_old > 10#结束HTPP下一个最大频率周期时间间隔流程
print("error_retryNum_step:self.retryNum_old >= self.retryNum\r\n")
- self.retpoertTimerC.start(self.reportTime*60*1000,0,self.reportTimerIntervalCb)#重新开始 需要清空数据
+ self.retpoertTimerC.start(self.reportTime*60*1000,0,self.reportTimerIntervalError)#重新开始 需要清空数据
else:
get_result = self.first_get_config_json()#发起向服务端请求配置信息下发到设备端
if get_result == 0:#获取失败或者没有网络 走异常重试机制
self.config_data["report_Num_old"] = self.report_Num_old
self.write_config_msg_file(self.config_data)
print("error_retryNum_step:self.retryTimer.start :{} {}\r\n".format(self.report_Num_old,self.reportNum))
- if self.report_Num_old >= self.reportNum and self.report_Num_old != 0:
- self.retryTimer.stop()#关定时器
- self.retpoertTimerC.stop()
- self.heartreportTimer.stop()
+ self.checkMaxReportNum()#检查上报最大次数
self.retryTimer.start(self.retryInterval*60*1000,0,self.retryTimerCb)
pass
else:#
if get_result == 2:#请求的配置文件和本地不一致重启
self.report_Num_old+=1#请求错误请求失败都要保存上报次数
self.config_data["report_Num_old"] = self.report_Num_old
- self.write_config_msg_file(self.config_data)
-
self.retryNum_old = 0#保存本地 配置文件不同重启模组 清空异常重试的报错次数
self.config_data["retryNum_old"] = self.retryNum_old
self.write_config_msg_file(self.config_data)
- self.china_mobile_init()#重新走流程读配置文件->判断上报总数->判断报错次数->获取配置文件
+ self.china_mobile_init_param()#重新走流程读配置文件->判断上报总数->判断报错次数->获取配置文件
+ self.search_report_num_step()
return
-
- report_result = self.self_regis_report_cb()#注册
+ self.report_Num_old+=1#请求错误请求失败都要保存上报次数
+ self.config_data["report_Num_old"] = self.report_Num_old
+ self.write_config_msg_file(self.config_data)
+ if self.checkMaxReportNum() == 1:#检查上报最大次数
+ self.search_report_num_step()#重新查询
+ return
+ report_result = self.onself_regist_report_cb()#注册
#第二步触发心跳上报次数
if report_result == 1:#注册完成之后根据服务端下发的配置 间隔上报心跳
- # self.heart_report_cb()
self.heartreportTimer.start(self.heartBeatTime*60*1000,1,self.heartreportTimerCb)
def heartreportTimerCb(self,*argc):
self.heart_report_cb()
+ def retpoertTimerClear(self):
+ date_tmp = utime.localtime()
+ time_tmp = utime.mktime(date_tmp)#获取时间戳
+ print("retpoertTimerCB time_tmp -self.reportTime_Sec:{} time_tmp :{} self.reportTime_Sec:{}\r\n".format(self.reportTime_Sec-time_tmp,time_tmp,self.reportTime_Sec))
+ self.report_Num_old = 0#清空上报总次数 #保存本地
+ self.retryNum_old = 0#清空上报错误次数 #保存本地
+ self.reportTime_Sec = time_tmp+self.reportTime*60#记录当前时间+reportTime的时间用于下次错判断
+ self.config_data["reportTime_Sec"] = self.reportTime_Sec
+ self.config_data["retryNum_old"] = self.retryNum_old
+ self.config_data["report_Num_old"] = self.report_Num_old
+ self.write_config_msg_file(self.config_data)
+ self.retpoertTimerC.stop()#关闭定时器
+ self.error_retryNum_step()#清空报错次数重新走判断报错次数
+ pass
def check_current_time(self):#检测当前时间是否超过self.reportTime 超过清空报错次数 清空上报总次数
#
date_tmp = utime.localtime()
currentTime = utime.mktime(date_tmp)#获取时间戳
reportTime = self.reportTime_Sec
- print("check_current_time:time_tmp - self.reportTime_Sec:{} self.reportTime*60:{}".format(self.reportTime_Sec - currentTime ,self.reportTime*60))
- if currentTime > reportTime:#当前时间是否大于上次记录的时间 currentTime >= reportTime 直接清空 不超过定时清空数据不再上报数据
- date_tmp = utime.localtime()
- time_tmp = utime.mktime(date_tmp)#获取时间戳
- self.report_Num_old = 0#清空上报总次数 #保存本地
- self.retryNum_old = 0#清空上报错误次数 #保存本地
- self.reportTime_Sec = time_tmp+self.reportTime*60#记录当前时间+reportTime的时间用于下次错判断
- self.config_data["reportTime_Sec"] = self.reportTime_Sec
- self.config_data["retryNum_old"] = self.retryNum_old
- self.config_data["report_Num_old"] = self.report_Num_old
- self.write_config_msg_file(self.config_data)
- self.error_retryNum_step()
+ print("check_current_time:time_tmp - self.reportTime_Sec:{} self.reportTime*60:{}".format(reportTime, currentTime,self.reportTime*60))
+ if currentTime >= reportTime:#当前时间是否大于上次记录的时间 currentTime >= reportTime 直接清空 不超过定时清空数据不再上报数据
+ #在规定时间内上报次数大于8次就要等下一个10分钟 或者1440分了开个定时器
+ print("currentTime >= reportTime:\r\n")
+ self.retpoertTimerClear()
else:#否则次数置零,记录一下(当前时间+reportTime)时间
- time_count = self.reportTime_Sec - currentTime#self.reportTime_Sec永远比time_tmp大
- self.retpoertTimerC.start(time_count*1000,1,self.retpoertTimerCB)
+ time_count = (self.reportTime_Sec - currentTime) #self.reportTime_Sec永远比time_tmp大
+ print("time_count:{}".format(time_count))
+ print("currentTime < reportTime:\r\n")
+ self.retpoertTimerC.start(time_count*1000,0,self.retpoertTimerCB)
# 第一次请求的时候,记录一下(当前时间+reportTime)时间与次数,如果次数小于最大次数,直接返回true。
# 如果次数大于最大次数,则判断一下当前时间是否超过上次设置的时间,如果超过了,则表示超过最大次数;否则次数置零,记录一下(当前时间+reportTime)时间。
def retpoertTimerCB(self,*argc):#按照剩余的时间做定时器
-
date_tmp = utime.localtime()
time_tmp = utime.mktime(date_tmp)#获取时间戳
print("retpoertTimerCB time_tmp -self.reportTime_Sec:{} time_tmp :{} self.reportTime_Sec:{}\r\n".format(self.reportTime_Sec-time_tmp,time_tmp,self.reportTime_Sec))
self.config_data["retryNum_old"] = self.retryNum_old
self.config_data["report_Num_old"] = self.report_Num_old
self.write_config_msg_file(self.config_data)
- self.retpoertTimerC.stop()#关闭定时器
self.error_retryNum_step()#清空报错次数重新走判断报错次数
- pass
+
def search_report_num_step(self):#查询上报总数步骤
print("search_report_num_step:self.retryInterval:{} self.retryNum:{}".format(self.report_Num_old,self.reportNum))
self.write_config_msg_file(self.config_data)
self.error_retryNum_step()#查询上报错误次数
+ def search_report_num_step_init(self):#查询上报总数步骤
+ print("search_report_num_step:self.retryInterval:{} self.retryNum:{} self.reportTime_Sec:{}\r\n".format(self.report_Num_old,self.reportNum,self.reportTime_Sec))
+ if self.report_Num_old >= self.reportNum and self.report_Num_old != 0:#查询上报的总次数是否大于存储上报总次数
+ self.check_current_time()#检测当前时间是否超过self.reportTime 超过清空报错次数 清空上报总次数
+ else:#
+ date_tmp = utime.localtime()
+ time_tmp = utime.mktime(date_tmp)#获取时间戳
+ if self.reportTime_Sec == 0:
+ self.reportTime_Sec = time_tmp+self.reportTime*60 #(记录时间+reportTime)标识旧的时间
+ self.config_data["reportTime_Sec"] = self.reportTime_Sec
+ self.write_config_msg_file(self.config_data)
+ self.error_retryNum_step()#查询上报错误次数
+
+
def reportTimerIntervalCb(self,*argc):#最大上报频率时间间隔定时器 要清空数据
print("reportTimerIntervalCb\r\n")
- self.retryNum_old = 0#保存
- self.report_Num_old = 0#保存 定时清空数据
- date_tmp = utime.localtime()
- time_tmp = utime.mktime(date_tmp)#获取时间戳
- self.reportTime_Sec = time_tmp+self.reportTime*60 #(记录时间+reportTime)标识旧的时间
- self.config_data["reportTime_Sec"] = self.reportTime_Sec
- self.config_data["retryNum_old"] = self.retryNum_old
- self.config_data["report_Num_old"] = self.report_Num_old
- self.write_config_msg_file(self.config_data)
self.search_report_num_step()#重新查询
- def self_regis_report_cb(self):#自注册上报信息
+ def onself_regist_report_cb(self):#自注册上报信息
date_tmp = utime.localtime()
time_tmp = utime.mktime(date_tmp)#获取时间戳
-
+ print("onself_regist_report_cb:self.report_Num_old:{} self.reportNum:{} self.reportTime_Sec:{}\r\n".format(self.report_Num_old,self.reportNum,self.reportTime_Sec))
self.report_Num_old+=1 ##保存本地
self.config_data["report_Num_old"] = self.report_Num_old
self.write_config_msg_file(self.config_data)
- print("self_regis_report_cb:self.report_Num_old:{} self.reportNum:{} self.reportTime_Sec:{}\r\n".format(self.report_Num_old,self.reportNum,self.reportTime_Sec))
-
#设备自注册上报信息
url = "https://{}//dm-multi-accept/multi/acceptMultiTerminalRegInfo".format(self.address)#上报地址
confing_type = "autoRegist"#上报传输配置
if result != 1:
#触发异常重试进制
- if self.report_Num_old >= self.reportNum and self.report_Num_old != 0:#上报次数大于
- self.retryTimer.stop()#关定时器
- self.retpoertTimerC.stop()
- self.heartreportTimer.stop()
- if self.retryNum_old >= self.retryNum and self.retryNum_old != 0:
+ self.checkMaxReportNum()#检查上报最大次数
+ if self.checkMaxRetryNum() == 1:
print("retryTimerCb timer22")#异常重试过多重新间隔reportTime注册流程 关闭所有的定时器
- self.retryTimer.stop()#关定时器
- self.retpoertTimerC.stop()
- self.heartreportTimer.stop()
- self.retpoertTimerC.start(self.reportTime*60*1000,0,self.reportTimerIntervalCb)#重新开始 需要清空数据
- return
+ self.search_report_num_step()#重新查询
+ # self.retpoertTimerC.start(self.reportTime*60*1000,0,self.reportTimerIntervalCb)#重新开始 需要清空数据
+ return 0
self.retryTimer.start(self.retryInterval*60*1000,0,self.retryTimerCb)
return 0
else:
- if self.report_Num_old >= self.reportNum and self.report_Num_old != 0:
- self.retryTimer.stop()#关定时器
- self.retpoertTimerC.stop()
- self.heartreportTimer.stop()
- self.retpoertTimerC.start(self.reportTime*60*1000,0,self.reportTimerIntervalCb)
+ if self.checkMaxReportNum() == 1:
+ self.search_report_num_step()#重新查询
+ # self.retpoertTimerC.start(self.reportTime*60*1000,0,self.reportTimerIntervalCb)
return 0
else:
return 1
-
- def heart_report_cb(self):#心跳上报信息
- #设备心跳上报信息
+ def checkMaxReportNum(self):#检查上报次数最大值
+ print("checkMaxReportNum :self.reportNum :{} self.report_Num_old:{}\r\n".format(self.reportNum,self.report_Num_old))
+ if self.report_Num_old >= self.reportNum and self.report_Num_old != 0:
+ self.retryTimer.stop()#关定时器
+ self.retpoertTimerC.stop()
+ self.heartreportTimer.stop()
+ return 1
+ else:
+ return 0
+
+ def checkMaxRetryNum(self):#检查上报错误次数
+ print("checkMaxRetryNum :self.retryNum:{} self.retryNum_old:{}\r\n".format(self.retryNum_old,self.retryNum))
+ if self.retryNum_old >= self.retryNum and self.retryNum_old != 0:#异常重试过多重新间隔reportTime注册流程
+ self.retryTimer.stop()#关定时器
+ self.retpoertTimerC.stop()
+ self.heartreportTimer.stop()#关闭心跳定时器
+ return 1
+ else:
+ return 0
+ def heart_report_cb(self):#心跳上报信息
date_tmp = utime.localtime()
time_tmp = utime.mktime(date_tmp)#获取时间戳
self.report_Num_old+=1#保存本地
self.config_data["report_Num_old"] = self.report_Num_old
self.write_config_msg_file(self.config_data)
print("heart_report_cb:self.report_Num_old:{} self.reportNum:{} self.reportTime:{} self.reportTime_Sec:{}\r\n".format(self.report_Num_old,self.reportNum,self.reportTime,self.reportTime_Sec))
-
url = "https://{}//dm-multi-accept/multi/acceptMultiTerminalHeartbeatInfo".format(self.address)#上报地址
confing_type = "keepAlive"#上报传输配置
result = self.china_mobile_autoregist_infor(url,confing_type)
if result != 1:
#触发异常重试进制
- if self.report_Num_old >= self.reportNum and self.report_Num_old != 0:
- self.retryTimer.stop()#关定时器
- self.retpoertTimerC.stop()
- self.heartreportTimer.stop()
- if self.retryNum_old >= self.retryNum and self.retryNum_old != 0:#异常重试过多重新间隔reportTime注册流程
- print("retryTimerCb timer3333")
- self.retryTimer.stop()#关定时器
- self.retpoertTimerC.stop()
- self.heartreportTimer.stop()
- self.retpoertTimerC.start(self.reportTime*60*1000,0,self.reportTimerIntervalCb)#重新开始 需要清空数据
+ self.checkMaxReportNum()
+ if self.checkMaxRetryNum() == 1:#异常重试过多重新间隔reportTime注册流程
+ self.search_report_num_step()#重新查询
+ # self.retpoertTimerC.start(self.reportTime*60*1000,0,self.reportTimerIntervalCb)#重新开始 需要清空数据
return
self.retryTimer.start(self.retryInterval*60*1000,0,self.retryTimerCb)
return
- if self.report_Num_old >= self.reportNum and self.report_Num_old != 0:
- self.retryTimer.stop()#关定时器
- self.retpoertTimerC.stop()
- self.heartreportTimer.stop()
- print("self.retpoertTimerC.start")
- self.retpoertTimerC.start(self.reportTime*60*1000,0,self.reportTimerIntervalCb)
+ if self.checkMaxReportNum() == 1:#上报次数大于8次
+ self.search_report_num_step()#重新查询
return
- def china_mobile_init(self):#初始化
+ def china_mobile_init_param(self):#初始化
status = eventMesh.publish("get_factory_status")
if status == None:
isStorage = ql_fs.path_exists("/usr/china_mobie_config.json")#移动入库的配置文件移除
if isStorage == True:
uos.remove("/usr/china_mobie_config.json")
- #先清空再写入
+ #先清空再写入默认参数
self.init_flag = 1
self.retryInterval = 10
self.retryNum = 1#异常重试最大次数
self.retryTimer.stop()#关定时器
self.retpoertTimerC.stop()
self.heartreportTimer.stop()
-
+ def china_mobile_init(self):
+ self.china_mobile_init_param()
#查询上报总数流程
- self.search_report_num_step()
+ self.search_report_num_step_init()