import time def findStart(timeelectro="timeelectro", timeelectro_last="", ahead=0): timeelectro_last_stemp = int( time.mktime(time.strptime(timeelectro_last, "%Y-%m-%d %H:%M:%S"))) timeelectro_stemp = [ int(time.mktime(time.strptime(each_time, "%Y-%m-%d %H:%M:%S"))) for each_time in timeelectro] if ahead < len(timeelectro) - 1: time_substruct = [1000000 if timeelectro_stemp[ each_timeelectro_stemp] - timeelectro_last_stemp <= 0 or each_timeelectro_stemp < ahead else timeelectro_stemp[ each_timeelectro_stemp] - timeelectro_last_stemp for each_timeelectro_stemp in range(len(timeelectro_stemp))] else: time_substruct = [ 1000000 if timeelectro_last_stemp - timeelectro_stemp[ each_timeelectro_stemp] <= 0 or each_timeelectro_stemp < ahead else timeelectro_last_stemp - timeelectro_stemp[ each_timeelectro_stemp] for each_timeelectro_stemp in range(len(timeelectro_stemp))] index = time_substruct.index(min(time_substruct)) return index def electroAnalysis(stateselectro="stateselectro", stateselectro_off="stateselectro_off" , timeelectro="timeelectro", timeelectro_off="timeelectro_off", eachdata_pow="eachdata_pow" , eachdata_cur="eachdata_cur", timer="timer"): electroRunStages = [] timeelectro_chang = [each.split(" ")[1][:-3].split(":") for each in timeelectro] timeelectro_hour = [each[0] for each in timeelectro_chang] timeelectro_minute = [each[1] for each in timeelectro_chang] timeelectro_off_chang = [each.split(" ")[1][:-3].split(":") for each in timeelectro_off] timeelectro_off_hour = [each[0] for each in timeelectro_off_chang] timeelectro_off_minute = [each[1] for each in timeelectro_off_chang] flag = 0 electroRunStages = [] electroRunStages.append(timeelectro[0]) for each_off in range(1, len(timeelectro_off)): # if each_off==len(timeaircond_off)-1: if int(timeelectro_off_hour[-1]) - int( timeelectro_off_hour[-2]) > 2 and each_off == len( timeelectro_off_hour) - 1: if flag == 1: index = findStart(timeelectro=timeelectro, timeelectro_last=timeelectro_off[each_off], ahead=each_off) electroRunStages.append(timeelectro[index]) electroRunStages.append(timeelectro_off[each_off]) elif int(timeelectro_off_hour[each_off]) - int( timeelectro_off_hour[each_off - 1]) <= 1: continue else: if each_off < len(timeelectro_off_hour) - 1: electroRunStages.append(timeelectro_off[each_off - 1]) index = findStart(timeelectro=timeelectro, timeelectro_last=timeelectro_off[ each_off - 1], ahead=each_off) electroRunStages.append(timeelectro[index]) if int(timeelectro_off_hour[each_off]) - int( timeelectro_hour[index]) <= 1 and int( timeelectro_off_hour[each_off]) - int( timeelectro_off_hour[each_off + 1]) < -1: electroRunStages.append(timeelectro_off[each_off]) flag = 1 else: electroRunStages.append(timeelectro_off[each_off]) flag = 1 return electroRunStages