|
@@ -20,7 +20,7 @@ l = len(fileNames)
|
|
|
|
|
|
now_time=datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') #type: str
|
|
|
now_time=datetime.datetime.strptime(now_time,'%Y-%m-%d %H:%M:%S') #type: datetime
|
|
|
-start_time=now_time-datetime.timedelta(hours=3)
|
|
|
+start_time=now_time-datetime.timedelta(hours=6)
|
|
|
end_time=str(now_time)
|
|
|
start_time=str(start_time)
|
|
|
|
|
@@ -52,41 +52,53 @@ for k in range(l):
|
|
|
try:
|
|
|
sn = fileNames[k]
|
|
|
df_diag_ram_sn=df_diag_ram[df_diag_ram['product_id']==sn]
|
|
|
- df_data = dbManager.get_data(sn=sn, start_time=start_time, end_time=end_time, data_groups=['bms'])
|
|
|
+ df_data = dbManager.get_data(sn=sn, start_time=start_time, end_time=end_time ,data_groups=['bms'])
|
|
|
data_test = df_data['bms']
|
|
|
data_test=data_test[data_test['SOC[%]']>20]
|
|
|
- if len(data_test)>5:
|
|
|
+ if len(data_test)>15:
|
|
|
pca1 = joblib.load('pca1_'+sn+'.m')
|
|
|
pca2 = joblib.load('pca2_'+sn+'.m')
|
|
|
res1 = pd.read_csv('res1_'+sn+'.csv',encoding='gbk')
|
|
|
res2 = pd.read_csv('res2_'+sn+'.csv',encoding='gbk')
|
|
|
pred1,pred2=prediction(data_test,pca1,pca2)
|
|
|
+ pred1=pred1.reset_index()
|
|
|
+ pred2=pred2.reset_index()
|
|
|
outliers1=detect_outliers(res1,pred1,threshold=30)
|
|
|
outliers2=detect_outliers(res2,pred2,threshold=16)
|
|
|
if (len(outliers1)>0) & (len(outliers2)>0):
|
|
|
outliers=check_anomaly(outliers1,outliers2,res2)
|
|
|
if len(outliers)>5:
|
|
|
outliers['sn']=sn
|
|
|
+ outliers=outliers.reset_index()
|
|
|
anomalies=anomalies.append(outliers)
|
|
|
+ u_th=boxplot_fill(res2)
|
|
|
+ outliers3=pred2[pred2['低压差']>u_th]
|
|
|
if df_diag_ram_sn.empty:
|
|
|
product_id=sn
|
|
|
start_time=outliers.loc[0,'时间']
|
|
|
- if outliers.loc[-1,'时间'] == pred1.loc[-1,'时间']:
|
|
|
+ start_time=start_time+'0:00'
|
|
|
+ if outliers.loc[outliers.index[-1],'时间'] == pred1.loc[pred1.index[-1],'时间']:
|
|
|
+ end_time='0000-00-00 00:00:00'
|
|
|
+ elif outliers1.loc[outliers1.index[-1],'时间'] == outliers3.loc[outliers3.index[-1],'时间']:
|
|
|
end_time='0000-00-00 00:00:00'
|
|
|
else:
|
|
|
- end_time=outliers.loc[-1,'时间']
|
|
|
+ end_time=outliers.loc[outliers.index[-1],'时间']
|
|
|
+ end_time=end_time+'0:00'
|
|
|
code='C493'
|
|
|
level=4
|
|
|
info='热失控预警'
|
|
|
advice='建议返厂维修'
|
|
|
- df_res=df_res.append([start_time, end_time,product_id, code, level, info,advice])
|
|
|
+ df_res=df_res.append({'start_time':start_time, 'end_time':end_time,'product_id':product_id, 'code':code, 'level':level, 'info':info,'advice':advice},ignore_index=True)
|
|
|
with open(r'D:\Platform\platform_python\data_analyze_platform\USER\spf\01qixiang\06BatSafetyAlarm\热失控报警.txt','a') as file:
|
|
|
file.write(str(tuple(df_res.iloc[-1]))+'\n')
|
|
|
else:
|
|
|
- if outliers.loc[-1,'时间'] == pred1.loc[-1,'时间']:
|
|
|
+ if outliers.loc[outliers.index[-1],'时间'] == pred1.loc[pred1.index[-1],'时间']:
|
|
|
+ end_time='0000-00-00 00:00:00'
|
|
|
+ elif outliers1.loc[outliers1.index[-1],'时间'] == outliers3.loc[outliers3.index[-1],'时间']:
|
|
|
end_time='0000-00-00 00:00:00'
|
|
|
else:
|
|
|
- end_time=outliers.loc[-1,'时间']
|
|
|
+ end_time=outliers.loc[outliers.index[-1],'时间']
|
|
|
+ end_time=end_time+'0:00'
|
|
|
df_diag_ram_sn['end_time']=end_time
|
|
|
with open(r'D:\Platform\platform_python\data_analyze_platform\USER\spf\01qixiang\06BatSafetyAlarm\热失控报警.txt','a') as file:
|
|
|
file.write(str(tuple(df_diag_ram_sn.iloc[-1]))+'\n')
|
|
@@ -95,4 +107,4 @@ for k in range(l):
|
|
|
except Exception as e:
|
|
|
print(repr(e))
|
|
|
mylog.logopt(sn,e)
|
|
|
- pass
|
|
|
+ pass
|