|
@@ -116,10 +116,16 @@ class DBManager():
|
|
data['ffBatteryStatus']['chargeState'],data['ffBatteryStatus']['heatState'],data['ffBatteryStatus']['cellVoltageDiff']
|
|
data['ffBatteryStatus']['chargeState'],data['ffBatteryStatus']['heatState'],data['ffBatteryStatus']['cellVoltageDiff']
|
|
,data['ffBatteryStatus']['soc'],data['ffBatteryStatus']['soh'],data['ffBatteryStatus']['cellVolBalance']]).reshape(1,data_len)
|
|
,data['ffBatteryStatus']['soc'],data['ffBatteryStatus']['soh'],data['ffBatteryStatus']['cellVolBalance']]).reshape(1,data_len)
|
|
elif mode == 1:
|
|
elif mode == 1:
|
|
- data_len = 7
|
|
|
|
|
|
+ data_len = 11
|
|
data_block = np.array([data['info']['obdTime'],data['ffBatteryStatus']['rssi']
|
|
data_block = np.array([data['info']['obdTime'],data['ffBatteryStatus']['rssi']
|
|
- ,data['ffBatteryStatus']['current'],data['ffBatteryStatus']['voltageInner'],data['ffBatteryStatus']['chargeState']
|
|
|
|
- ,data['ffBatteryStatus']['soc'],data['ffBatteryStatus']['soh']]).reshape(1,data_len)
|
|
|
|
|
|
+ ,data['ffBatteryStatus']['errorLevel'],data['ffBatteryStatus']['errorCode'],data['ffBatteryStatus']['switchState']
|
|
|
|
+ ,data['ffBatteryStatus']['current'],data['ffBatteryStatus']['voltageInner'],data['ffBatteryStatus']['chargeState'],
|
|
|
|
+ data['ffBatteryStatus']['cellVoltageDiff'],data['ffBatteryStatus']['soc'],data['ffBatteryStatus']['soh']]).reshape(1,data_len)
|
|
|
|
+ elif mode == 2:
|
|
|
|
+ data_len = 9
|
|
|
|
+ data_block = np.array([data['info']['obdTime'],data['ffBatteryStatus']['rssi'],data['ffBatteryStatus']['switchState']
|
|
|
|
+ ,data['ffBatteryStatus']['current'],data['ffBatteryStatus']['voltageInner'],data['ffBatteryStatus']['chargeState'],
|
|
|
|
+ data['ffBatteryStatus']['cellVoltageDiff'],data['ffBatteryStatus']['soc'],data['ffBatteryStatus']['soh']]).reshape(1,data_len)
|
|
data_block = np.append(data_block,CellU)
|
|
data_block = np.append(data_block,CellU)
|
|
data_block = np.append(data_block,CellT)
|
|
data_block = np.append(data_block,CellT)
|
|
data_block = np.append(data_block,OtherT)
|
|
data_block = np.append(data_block,OtherT)
|
|
@@ -139,10 +145,15 @@ class DBManager():
|
|
df = pd.DataFrame(
|
|
df = pd.DataFrame(
|
|
columns=['时间戳','定位类型', '卫星数','纬度','经度','速度[km/h]','海拔','航向'])
|
|
columns=['时间戳','定位类型', '卫星数','纬度','经度','速度[km/h]','海拔','航向'])
|
|
if mode == 1:
|
|
if mode == 1:
|
|
- data_block = np.array([data['info']['obdTime'],data['ffGps']['latitude'],data['ffGps']['longitude']
|
|
|
|
- ,data['ffGps']['speed'], data['ffGps']['isValid']]).reshape(1,5)
|
|
|
|
|
|
+ data_block = np.array([data['info']['obdTime'],data['ffGps']['locationType'],data['ffGps']['latitude'],data['ffGps']['longitude']
|
|
|
|
+ ,data['ffGps']['speed'], data['ffGps']['isValid']]).reshape(1,6)
|
|
df = pd.DataFrame(
|
|
df = pd.DataFrame(
|
|
- columns=['时间戳','纬度','经度','速度[km/h]','有效位'],data=data_block)
|
|
|
|
|
|
+ columns=['时间戳','定位类型', '纬度','经度','速度[km/h]','有效位'],data=data_block)
|
|
|
|
+ if mode == 2:
|
|
|
|
+ data_block = np.array([data['info']['obdTime'],data['ffGps']['locationType'],data['ffGps']['latitude'],data['ffGps']['longitude']
|
|
|
|
+ ,data['ffGps']['speed'], data['ffGps']['isValid']]).reshape(1,6)
|
|
|
|
+ df = pd.DataFrame(
|
|
|
|
+ columns=['时间戳','定位类型', '纬度','经度','速度[km/h]','有效位'],data=data_block)
|
|
return df
|
|
return df
|
|
|
|
|
|
|
|
|
|
@@ -156,12 +167,10 @@ class DBManager():
|
|
data['ffSystemInfo']['gpsInterval']]).reshape(1,7)
|
|
data['ffSystemInfo']['gpsInterval']]).reshape(1,7)
|
|
df = pd.DataFrame(
|
|
df = pd.DataFrame(
|
|
columns=['时间戳','加热目标温度', '加热超时','租赁开始时间','租赁天数','bms上传周期','gps上传周期'],data=data_block)
|
|
columns=['时间戳','加热目标温度', '加热超时','租赁开始时间','租赁天数','bms上传周期','gps上传周期'],data=data_block)
|
|
-
|
|
|
|
if mode == 1:
|
|
if mode == 1:
|
|
- data_block = np.array([data['info']['obdTime'],data['ffGps']['latitude'],data['ffGps']['longitude']
|
|
|
|
- ,data['ffGps']['speed'], data['ffGps']['isValid']]).reshape(1,5)
|
|
|
|
- df = pd.DataFrame(
|
|
|
|
- columns=['时间戳','纬度','经度','速度[km/h]','有效位'],data=data_block)
|
|
|
|
|
|
+ df = pd.DataFrame()
|
|
|
|
+ if mode == 2:
|
|
|
|
+ df = pd.DataFrame()
|
|
return df
|
|
return df
|
|
|
|
|
|
@staticmethod
|
|
@staticmethod
|
|
@@ -177,10 +186,17 @@ class DBManager():
|
|
'累计高温充电电量', '累计高温充电能量'],data=data_block)
|
|
'累计高温充电电量', '累计高温充电能量'],data=data_block)
|
|
|
|
|
|
if mode == 1:
|
|
if mode == 1:
|
|
- data_block = np.array([data['info']['obdTime'],data['ffGps']['latitude'],data['ffGps']['longitude']
|
|
|
|
- ,data['ffGps']['speed'], data['ffGps']['isValid']]).reshape(1,5)
|
|
|
|
|
|
+ data_block = np.array([data['info']['obdTime'], data['ffBatteryAccum']['CHG_AHaccum'],
|
|
|
|
+ data['ffBatteryAccum']['CHG_PHaccum'], data['ffBatteryAccum']['DSG_AHaccum'],
|
|
|
|
+ data['ffBatteryAccum']['DSG_PHaccum'],data['ffBatteryAccum']['totalMileage']]).reshape(1,6)
|
|
df = pd.DataFrame(
|
|
df = pd.DataFrame(
|
|
- columns=['时间戳','纬度','经度','速度[km/h]','有效位'],data=data_block)
|
|
|
|
|
|
+ columns=['时间戳','累计充电电量','累计充电能量','累计放电电量','累计放电能量', '累积里程'],data=data_block)
|
|
|
|
+ if mode == 2:
|
|
|
|
+ data_block = np.array([data['info']['obdTime'], data['ffBatteryAccum']['CHG_AHaccum'],
|
|
|
|
+ data['ffBatteryAccum']['CHG_PHaccum'], data['ffBatteryAccum']['DSG_AHaccum'],
|
|
|
|
+ data['ffBatteryAccum']['DSG_PHaccum'],data['ffBatteryAccum']['totalMileage']]).reshape(1,6)
|
|
|
|
+ df = pd.DataFrame(
|
|
|
|
+ columns=['时间戳','累计充电电量','累计充电能量','累计放电电量','累计放电能量', '累积里程'],data=data_block)
|
|
return df
|
|
return df
|
|
|
|
|
|
@staticmethod
|
|
@staticmethod
|
|
@@ -190,7 +206,9 @@ class DBManager():
|
|
name_const = ['时间戳','GSM信号','故障等级','故障代码','总电流[A]','总电压[V]', '外电压', '总输出状态', '上锁状态', '充电状态','加热状态',
|
|
name_const = ['时间戳','GSM信号','故障等级','故障代码','总电流[A]','总电压[V]', '外电压', '总输出状态', '上锁状态', '充电状态','加热状态',
|
|
'单体压差', 'SOC[%]','SOH[%]','单体均衡状态']
|
|
'单体压差', 'SOC[%]','SOH[%]','单体均衡状态']
|
|
elif mode == 1:
|
|
elif mode == 1:
|
|
- name_const = ['时间戳','GSM信号','总电流[A]','总电压[V]','充电状态','SOC[%]','SOH[%]']
|
|
|
|
|
|
+ name_const = ['时间戳','GSM信号','故障等级', '故障代码','开关状态', '总电流[A]','总电压[V]','充电状态', '单体压差', 'SOC[%]','SOH[%]']
|
|
|
|
+ elif mode == 2:
|
|
|
|
+ name_const = ['时间戳','GSM信号','开关状态', '总电流[A]','总电压[V]','充电状态', '单体压差', 'SOC[%]','SOH[%]']
|
|
i=0
|
|
i=0
|
|
CellUNum = 0
|
|
CellUNum = 0
|
|
CellTNum = 0
|
|
CellTNum = 0
|
|
@@ -218,27 +236,34 @@ class DBManager():
|
|
if i==0:
|
|
if i==0:
|
|
data_blocks = []
|
|
data_blocks = []
|
|
df_all = pd.DataFrame(columns=columns_name,data=data_blocks)
|
|
df_all = pd.DataFrame(columns=columns_name,data=data_blocks)
|
|
- df_all.loc[:,'时间戳'] = df_all.loc[:,'时间戳'].apply(lambda x:time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(int(x)/1000)))
|
|
|
|
|
|
+ if not df_all.empty:
|
|
|
|
+ df_all.loc[:,'时间戳'] = df_all.loc[:,'时间戳'].apply(lambda x:time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(int(x)/1000)))
|
|
return df_all
|
|
return df_all
|
|
elif type_name =='gps':
|
|
elif type_name =='gps':
|
|
if mode == 0:
|
|
if mode == 0:
|
|
df_all = pd.DataFrame(columns=['时间戳','定位类型', '卫星数','纬度','经度','速度[km/h]','海拔','航向'])
|
|
df_all = pd.DataFrame(columns=['时间戳','定位类型', '卫星数','纬度','经度','速度[km/h]','海拔','航向'])
|
|
elif mode == 1:
|
|
elif mode == 1:
|
|
- df_all = pd.DataFrame(columns=['时间戳','纬度','经度','速度[km/h]','有效位'])
|
|
|
|
|
|
+ df_all = pd.DataFrame(columns=['时间戳','定位类型', '纬度','经度','速度[km/h]','有效位'])
|
|
|
|
+ elif mode == 2:
|
|
|
|
+ df_all = pd.DataFrame(columns=['时间戳','定位类型', '纬度','经度','速度[km/h]','有效位'])
|
|
for line in DBManager._download_json_data(urls):
|
|
for line in DBManager._download_json_data(urls):
|
|
df_add = DBManager._convert_to_dataframe_gps(line, mode)
|
|
df_add = DBManager._convert_to_dataframe_gps(line, mode)
|
|
df_all = df_all.append(df_add,ignore_index=True)
|
|
df_all = df_all.append(df_add,ignore_index=True)
|
|
- df_all.loc[:,'时间戳'] = df_all.loc[:,'时间戳'].apply(lambda x:time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(int(x)/1000)))
|
|
|
|
|
|
+ if not df_all.empty:
|
|
|
|
+ df_all.loc[:,'时间戳'] = df_all.loc[:,'时间戳'].apply(lambda x:time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(int(x)/1000)))
|
|
return df_all
|
|
return df_all
|
|
elif type_name =='system':
|
|
elif type_name =='system':
|
|
if mode == 0:
|
|
if mode == 0:
|
|
df_all = pd.DataFrame(columns=['时间戳','加热目标温度', '加热超时','租赁开始时间','租赁天数','bms上传周期','gps上传周期'])
|
|
df_all = pd.DataFrame(columns=['时间戳','加热目标温度', '加热超时','租赁开始时间','租赁天数','bms上传周期','gps上传周期'])
|
|
elif mode == 1:
|
|
elif mode == 1:
|
|
- df_all = pd.DataFrame(columns=['时间戳','纬度','经度','速度[km/h]','有效位'])
|
|
|
|
|
|
+ df_all = pd.DataFrame()
|
|
|
|
+ elif mode == 2:
|
|
|
|
+ df_all = pd.DataFrame()
|
|
for line in DBManager._download_json_data(urls):
|
|
for line in DBManager._download_json_data(urls):
|
|
df_add = DBManager._convert_to_dataframe_system(line, mode)
|
|
df_add = DBManager._convert_to_dataframe_system(line, mode)
|
|
df_all = df_all.append(df_add,ignore_index=True)
|
|
df_all = df_all.append(df_add,ignore_index=True)
|
|
- df_all.loc[:,'时间戳'] = df_all.loc[:,'时间戳'].apply(lambda x:time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(int(x)/1000)))
|
|
|
|
|
|
+ if not df_all.empty:
|
|
|
|
+ df_all.loc[:,'时间戳'] = df_all.loc[:,'时间戳'].apply(lambda x:time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(int(x)/1000)))
|
|
return df_all
|
|
return df_all
|
|
|
|
|
|
elif type_name =='accum':
|
|
elif type_name =='accum':
|
|
@@ -246,11 +271,14 @@ class DBManager():
|
|
df_all = pd.DataFrame(columns=['时间戳','SOH未标定时间', '累计充电电量','累计充电能量','累计放电电量','累计放电能量',
|
|
df_all = pd.DataFrame(columns=['时间戳','SOH未标定时间', '累计充电电量','累计充电能量','累计放电电量','累计放电能量',
|
|
'累计高温充电电量', '累计高温充电能量'])
|
|
'累计高温充电电量', '累计高温充电能量'])
|
|
elif mode == 1:
|
|
elif mode == 1:
|
|
- df_all = pd.DataFrame(columns=['时间戳','纬度','经度','速度[km/h]','有效位'])
|
|
|
|
|
|
+ df_all = pd.DataFrame(columns=['时间戳','累计充电电量','累计充电能量','累计放电电量','累计放电能量', '累积里程'])
|
|
|
|
+ elif mode == 2:
|
|
|
|
+ df_all = pd.DataFrame(columns=['时间戳','累计充电电量','累计充电能量','累计放电电量','累计放电能量', '累积里程'])
|
|
for line in DBManager._download_json_data(urls):
|
|
for line in DBManager._download_json_data(urls):
|
|
df_add = DBManager._convert_to_dataframe_accum(line, mode)
|
|
df_add = DBManager._convert_to_dataframe_accum(line, mode)
|
|
df_all = df_all.append(df_add,ignore_index=True)
|
|
df_all = df_all.append(df_add,ignore_index=True)
|
|
- df_all.loc[:,'时间戳'] = df_all.loc[:,'时间戳'].apply(lambda x:time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(int(x)/1000)))
|
|
|
|
|
|
+ if not df_all.empty:
|
|
|
|
+ df_all.loc[:,'时间戳'] = df_all.loc[:,'时间戳'].apply(lambda x:time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(int(x)/1000)))
|
|
return df_all
|
|
return df_all
|
|
def get_data(self, url='http://172.16.126.13/store/load?dataType={}&limit=0&sn={}', sn='', start_time='', end_time='',
|
|
def get_data(self, url='http://172.16.126.13/store/load?dataType={}&limit=0&sn={}', sn='', start_time='', end_time='',
|
|
data_groups=['bms', 'gps']):
|
|
data_groups=['bms', 'gps']):
|
|
@@ -277,8 +305,11 @@ class DBManager():
|
|
if len(set(data_groups) - (set(data_groups) and set(['bms', 'gps', 'system', 'accum']))) > 0:
|
|
if len(set(data_groups) - (set(data_groups) and set(['bms', 'gps', 'system', 'accum']))) > 0:
|
|
raise Exception("data_groups 参数错误")
|
|
raise Exception("data_groups 参数错误")
|
|
|
|
|
|
|
|
+
|
|
# mode: 0:正常取数; 1:7255 取数
|
|
# mode: 0:正常取数; 1:7255 取数
|
|
- if sn[0:2] == 'MG' or sn[0:2] == 'UD':
|
|
|
|
|
|
+ if sn[0:2] == 'UD':
|
|
|
|
+ mode = 2
|
|
|
|
+ elif sn[0:2] == 'MG':
|
|
mode = 1
|
|
mode = 1
|
|
else:
|
|
else:
|
|
mode = 0
|
|
mode = 0
|
|
@@ -293,7 +324,7 @@ class DBManager():
|
|
timefrom = datetime.datetime.strptime(start_time, "%Y-%m-%d %H:%M:%S")+ datetime.timedelta(days=j)
|
|
timefrom = datetime.datetime.strptime(start_time, "%Y-%m-%d %H:%M:%S")+ datetime.timedelta(days=j)
|
|
timeto = datetime.datetime.strptime(start_time, "%Y-%m-%d %H:%M:%S")+ datetime.timedelta(days=j+1)
|
|
timeto = datetime.datetime.strptime(start_time, "%Y-%m-%d %H:%M:%S")+ datetime.timedelta(days=j+1)
|
|
#滴滴的数据sub=0
|
|
#滴滴的数据sub=0
|
|
- if timefrom.strftime('%Y-%m-%d %H:%M:%S') > end_time:
|
|
|
|
|
|
+ if timefrom.strftime('%Y-%m-%d %H:%M:%S') >= end_time:
|
|
break
|
|
break
|
|
elif timeto.strftime('%Y-%m-%d %H:%M:%S') > end_time:
|
|
elif timeto.strftime('%Y-%m-%d %H:%M:%S') > end_time:
|
|
timeto = datetime.datetime.strptime(end_time, '%Y-%m-%d %H:%M:%S')
|
|
timeto = datetime.datetime.strptime(end_time, '%Y-%m-%d %H:%M:%S')
|