import time def findStart(timerefrig="timerefrig", timerefrig_last="", ahead=0): timerefrig_last_stemp = int( time.mktime(time.strptime(timerefrig_last, "%Y-%m-%d %H:%M:%S"))) timerefrig_stemp = [ int(time.mktime(time.strptime(each_time, "%Y-%m-%d %H:%M:%S"))) for each_time in timerefrig] if ahead < len(timerefrig) - 1: time_substruct = [1000000 if timerefrig_stemp[ each_timerefrig_stemp] - timerefrig_last_stemp <= 0 or each_timerefrig_stemp < ahead else timerefrig_stemp[ each_timerefrig_stemp] - timerefrig_last_stemp for each_timerefrig_stemp in range(len(timerefrig_stemp))] else: time_substruct = [1000000 if timerefrig_last_stemp - timerefrig_stemp[ each_timerefrig_stemp] <= 0 or each_timerefrig_stemp < ahead else timerefrig_last_stemp - timerefrig_stemp[ each_timerefrig_stemp] for each_timerefrig_stemp in range(len(timerefrig_stemp))] index = time_substruct.index(min(time_substruct)) return index def refrigAnalysis(statesrefrig="", statesrefrig_off="", timerefrig="", timerefrig_off="", eachdata_pow="", eachdata_cur="", timer=""): timerefrig_chang = [each.split(" ")[1][:-3].split(":") for each in timerefrig] timerefrig_hour = [each[0] for each in timerefrig_chang] timerefrig_minute = [each[1] for each in timerefrig_chang] timerefrig_off_chang = [each.split(" ")[1][:-3].split(":") for each in timerefrig_off] timerefrig_off_hour = [each[0] for each in timerefrig_off_chang] timerefrig_off_minute = [each[1] for each in timerefrig_off_chang] refrigRunStages = [] if int(timerefrig_off_hour[-1]) >= 22 and int(timerefrig_off_hour[0]) <= 2: refrigRunStages.append(timerefrig[0]) refrigRunStages.append(timerefrig_off[-1]) else: refrigRunStages.append(timerefrig[0]) for each_off in range(1, len(timerefrig_off)): # if each_off==len(timerefrig_off)-1: print("timerefrig_off_hour", timerefrig_off_hour) if len(timerefrig_off_hour) >= 3 and int( timerefrig_off_hour[-1]) - int( timerefrig_off_hour[-2]) <= 2 and int( timerefrig_off_hour[-2]) - int( timerefrig_off_hour[-3]) <= 2 and each_off == len( timerefrig_off_hour) - 1: refrigRunStages.append(timerefrig_off[each_off]) if len(timerefrig_off_hour) >= 2 and int( timerefrig_off_hour[-1]) - int( timerefrig_off_hour[-2]) <= 2 and each_off == len( timerefrig_off_hour) - 1: refrigRunStages.append(timerefrig_off[each_off]) if int(timerefrig_off_hour[each_off]) - int( timerefrig_off_hour[each_off - 1]) <= 2 or int( timerefrig_off_hour[each_off]) < 6 or int( timerefrig_off_hour[each_off]) > 21: continue else: if each_off < len(timerefrig) - 1: refrigRunStages.append(timerefrig_off[each_off - 1]) findStart1 = findStart(timerefrig=timerefrig, timerefrig_last=timerefrig_off[ each_off - 1], ahead=each_off) refrigRunStages.append(timerefrig[findStart1]) else: refrigRunStages.append(timerefrig_off[each_off]) return refrigRunStages