lmstack 3 years ago
parent
commit
3b7b82765a
2 changed files with 113 additions and 160 deletions
  1. 65 6
      LIB/BACKEND/DBManager.py
  2. 48 154
      demo.ipynb

+ 65 - 6
LIB/BACKEND/DBManager.py

@@ -88,7 +88,7 @@ class DBManager():
                 yield json.loads(line)
 
     @staticmethod
-    def _convert_to_bms(data, mode=0):
+    def _convert_to_dataframe_bms(data, mode=0):
         CellU = []
         CellT = []
         OtherT = []
@@ -127,7 +127,7 @@ class DBManager():
         return data_block,CellU_Num,CellT_Num,OtherT_Num
 
     @staticmethod
-    def _convert_to_dataframe_Gps(data, mode=0):
+    def _convert_to_dataframe_gps(data, mode=0):
         if mode == 0:
             if data['info']['subType'] == 1:
                 data_block = np.array([data['info']['obdTime'],data['ffGps']['locationType'], data['ffGps']['satellites'],
@@ -144,6 +144,44 @@ class DBManager():
                 df = pd.DataFrame(
                     columns=['时间戳','纬度','经度','速度[km/h]','有效位'],data=data_block)
         return df
+
+    
+    @staticmethod
+    def _convert_to_dataframe_system(data, mode=0):
+        if mode == 0:
+            
+            data_block = np.array([data['info']['obdTime'],data['ffSystemInfo']['heatTargetTemp'], data['ffSystemInfo']['heatTimeout'],
+                                    time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(int(data['ffSystemInfo']['rentalStartTime'])/1000)),
+                                    data['ffSystemInfo']['rentalPeriodDays'],data['ffSystemInfo']['bmsInterval'], 
+                                    data['ffSystemInfo']['gpsInterval']]).reshape(1,7)
+            df = pd.DataFrame(
+                columns=['时间戳','加热目标温度', '加热超时','租赁开始时间','租赁天数','bms上传周期','gps上传周期'],data=data_block)
+
+        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)
+        return df
+    
+    @staticmethod
+    def _convert_to_dataframe_accum(data, mode=0):
+        if mode == 0:
+            
+            data_block = np.array([data['info']['obdTime'],data['ffBatteryAccum']['SOH_AlgUnexTime'], data['ffBatteryAccum']['CHG_AHaccum'],
+                                    data['ffBatteryAccum']['CHG_PHaccum'], data['ffBatteryAccum']['DSG_AHaccum'],
+                                    data['ffBatteryAccum']['DSG_PHaccum'],data['ffBatteryAccum']['OverTemp_CHG_AHaccum'], 
+                                    data['ffBatteryAccum']['OverTemp_CHG_PHaccum']]).reshape(1,8)
+            df = pd.DataFrame(
+                columns=['时间戳','SOH未标定时间', '累计充电电量','累计充电能量','累计放电电量','累计放电能量',
+                                               '累计高温充电电量', '累计高温充电能量'],data=data_block)
+
+        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)
+        return df
     
     @staticmethod
     def _get_data(urls,type_name,mode=0):
@@ -161,11 +199,11 @@ class DBManager():
             for line in DBManager._download_json_data(urls):
                 et = time.time()
                 if i==0:
-                    data_blocks,CellUNum,CellTNum,OtherTNumm = DBManager._convert_to_bms(line, mode)
+                    data_blocks,CellUNum,CellTNum,OtherTNumm = DBManager._convert_to_dataframe_bms(line, mode)
                     i+=1
                     continue
                 try:
-                    data_block,CellUNum,CellTNum,OtherTNumm = DBManager._convert_to_bms(line, mode)
+                    data_block,CellUNum,CellTNum,OtherTNumm = DBManager._convert_to_dataframe_bms(line, mode)
                 except:
                     continue
                 data_blocks = np.concatenate((data_blocks,data_block),axis=0)
@@ -188,11 +226,32 @@ class DBManager():
             elif mode == 1:
                 df_all = pd.DataFrame(columns=['时间戳','纬度','经度','速度[km/h]','有效位'])
             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.loc[:,'时间戳'] = df_all.loc[:,'时间戳'].apply(lambda x:time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(int(x)/1000)))
+            return df_all
+        elif type_name =='system':
+            if mode == 0:
+                df_all = pd.DataFrame(columns=['时间戳','加热目标温度', '加热超时','租赁开始时间','租赁天数','bms上传周期','gps上传周期'])
+            elif mode == 1:
+                df_all = pd.DataFrame(columns=['时间戳','纬度','经度','速度[km/h]','有效位'])
+            for line in DBManager._download_json_data(urls):
+                df_add = DBManager._convert_to_dataframe_system(line, mode)
+                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)))
+            return df_all
+        
+        elif type_name =='accum':
+            if mode == 0:
+                df_all = pd.DataFrame(columns=['时间戳','SOH未标定时间', '累计充电电量','累计充电能量','累计放电电量','累计放电能量',
+                                               '累计高温充电电量', '累计高温充电能量'])
+            elif mode == 1:
+                df_all = pd.DataFrame(columns=['时间戳','纬度','经度','速度[km/h]','有效位'])
+            for line in DBManager._download_json_data(urls):
+                df_add = DBManager._convert_to_dataframe_accum(line, mode)
                 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)))
             return df_all
-
     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']):
         '''

+ 48 - 154
demo.ipynb

@@ -2,16 +2,17 @@
  "cells": [
   {
    "cell_type": "code",
-   "execution_count": 1,
+   "execution_count": 3,
    "metadata": {},
    "outputs": [
     {
      "name": "stdout",
      "output_type": "stream",
      "text": [
-      "### start to get data PK50001A100000381 from 2021-06-29 12:00:00 to 2021-06-30 00:00:00\n",
+      "### start to get data PK50201A000002140 from 2021-06-29 12:00:00 to 2021-06-30 00:00:00\n",
       "# get data from 2021-06-29 12:00:00 to 2021-06-30 00:00:00......... \n",
-      "all data-getting done, bms_count is 0, gps_count is 503, system_count is 0, accum_count is 0 \n",
+      "Server Error, retry 1...... \n",
+      "all data-getting done, bms_count is 0, gps_count is 0, system_count is 0, accum_count is 3 \n",
       "\n"
      ]
     }
@@ -24,13 +25,13 @@
     "import DBManager\r\n",
     "\r\n",
     "dbManager = DBManager.DBManager()\r\n",
-    "df_data = dbManager.get_data(sn='PK50001A100000381', start_time='2021-06-29 12:00:00', \r\n",
-    "    end_time='2021-06-30 00:00:00', data_groups=['gps'])"
+    "df_data = dbManager.get_data(sn='PK50201A000002140', start_time='2021-06-29 12:00:00', \r\n",
+    "    end_time='2021-06-30 00:00:00', data_groups=['accum'])"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 2,
+   "execution_count": 4,
    "metadata": {},
    "outputs": [
     {
@@ -55,179 +56,72 @@
        "    <tr style=\"text-align: right;\">\n",
        "      <th></th>\n",
        "      <th>时间戳</th>\n",
-       "      <th>定位类型</th>\n",
-       "      <th>卫星数</th>\n",
-       "      <th>纬度</th>\n",
-       "      <th>经度</th>\n",
-       "      <th>速度[km/h]</th>\n",
-       "      <th>海拔</th>\n",
-       "      <th>航向</th>\n",
+       "      <th>SOH未标定时间</th>\n",
+       "      <th>累计充电电量</th>\n",
+       "      <th>累计充电能量</th>\n",
+       "      <th>累计放电电量</th>\n",
+       "      <th>累计放电能量</th>\n",
+       "      <th>累计高温充电电量</th>\n",
+       "      <th>累计高温充电能量</th>\n",
        "    </tr>\n",
        "  </thead>\n",
        "  <tbody>\n",
        "    <tr>\n",
        "      <th>0</th>\n",
-       "      <td>2021-06-29 14:07:24</td>\n",
-       "      <td>3.0</td>\n",
-       "      <td>4.0</td>\n",
-       "      <td>39.894867</td>\n",
-       "      <td>116.412804</td>\n",
-       "      <td>0.755616</td>\n",
-       "      <td>68.0</td>\n",
-       "      <td>170.0</td>\n",
+       "      <td>2021-06-29 13:00:59</td>\n",
+       "      <td>165.0</td>\n",
+       "      <td>1064.9</td>\n",
+       "      <td>55301.9</td>\n",
+       "      <td>1004.5</td>\n",
+       "      <td>52806.7</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
        "    </tr>\n",
        "    <tr>\n",
        "      <th>1</th>\n",
-       "      <td>2021-06-29 14:09:13</td>\n",
-       "      <td>3.0</td>\n",
-       "      <td>4.0</td>\n",
-       "      <td>39.893982</td>\n",
-       "      <td>116.412666</td>\n",
-       "      <td>0.000000</td>\n",
-       "      <td>191.0</td>\n",
-       "      <td>138.0</td>\n",
+       "      <td>2021-06-29 17:06:47</td>\n",
+       "      <td>150.0</td>\n",
+       "      <td>1064.9</td>\n",
+       "      <td>55301.9</td>\n",
+       "      <td>1004.5</td>\n",
+       "      <td>52806.7</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
        "    </tr>\n",
        "    <tr>\n",
        "      <th>2</th>\n",
-       "      <td>2021-06-29 14:11:02</td>\n",
-       "      <td>3.0</td>\n",
-       "      <td>6.0</td>\n",
-       "      <td>39.894615</td>\n",
-       "      <td>116.412964</td>\n",
-       "      <td>0.437072</td>\n",
-       "      <td>69.0</td>\n",
-       "      <td>100.0</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>3</th>\n",
-       "      <td>2021-06-29 14:12:50</td>\n",
-       "      <td>3.0</td>\n",
-       "      <td>7.0</td>\n",
-       "      <td>39.894615</td>\n",
-       "      <td>116.412964</td>\n",
-       "      <td>0.000000</td>\n",
-       "      <td>69.0</td>\n",
-       "      <td>242.0</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>4</th>\n",
-       "      <td>2021-06-29 14:14:39</td>\n",
-       "      <td>3.0</td>\n",
-       "      <td>6.0</td>\n",
-       "      <td>39.894615</td>\n",
-       "      <td>116.412964</td>\n",
-       "      <td>0.618568</td>\n",
-       "      <td>69.0</td>\n",
-       "      <td>126.0</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>...</th>\n",
-       "      <td>...</td>\n",
-       "      <td>...</td>\n",
-       "      <td>...</td>\n",
-       "      <td>...</td>\n",
-       "      <td>...</td>\n",
-       "      <td>...</td>\n",
-       "      <td>...</td>\n",
-       "      <td>...</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>498</th>\n",
-       "      <td>2021-06-29 22:48:10</td>\n",
-       "      <td>3.0</td>\n",
-       "      <td>13.0</td>\n",
-       "      <td>39.908268</td>\n",
-       "      <td>116.468376</td>\n",
-       "      <td>0.000000</td>\n",
-       "      <td>109.0</td>\n",
-       "      <td>152.0</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>499</th>\n",
-       "      <td>2021-06-29 22:49:58</td>\n",
-       "      <td>3.0</td>\n",
-       "      <td>11.0</td>\n",
-       "      <td>39.908249</td>\n",
-       "      <td>116.468361</td>\n",
-       "      <td>0.000000</td>\n",
-       "      <td>111.0</td>\n",
-       "      <td>52.0</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>500</th>\n",
-       "      <td>2021-06-29 22:51:47</td>\n",
-       "      <td>3.0</td>\n",
-       "      <td>12.0</td>\n",
-       "      <td>39.908249</td>\n",
-       "      <td>116.468361</td>\n",
-       "      <td>0.000000</td>\n",
-       "      <td>111.0</td>\n",
-       "      <td>52.0</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>501</th>\n",
-       "      <td>2021-06-29 22:53:35</td>\n",
-       "      <td>3.0</td>\n",
-       "      <td>10.0</td>\n",
-       "      <td>39.908249</td>\n",
-       "      <td>116.468361</td>\n",
-       "      <td>0.000000</td>\n",
-       "      <td>111.0</td>\n",
-       "      <td>54.0</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>502</th>\n",
-       "      <td>2021-06-29 22:55:24</td>\n",
-       "      <td>3.0</td>\n",
-       "      <td>11.0</td>\n",
-       "      <td>39.908241</td>\n",
-       "      <td>116.468330</td>\n",
-       "      <td>0.359288</td>\n",
-       "      <td>113.0</td>\n",
-       "      <td>34.0</td>\n",
+       "      <td>2021-06-29 23:16:05</td>\n",
+       "      <td>165.0</td>\n",
+       "      <td>1064.9</td>\n",
+       "      <td>55301.9</td>\n",
+       "      <td>1004.5</td>\n",
+       "      <td>52806.7</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
        "    </tr>\n",
        "  </tbody>\n",
        "</table>\n",
-       "<p>503 rows × 8 columns</p>\n",
        "</div>"
       ],
       "text/plain": [
-       "                     时间戳  定位类型   卫星数         纬度          经度  速度[km/h]     海拔  \\\n",
-       "0    2021-06-29 14:07:24   3.0   4.0  39.894867  116.412804  0.755616   68.0   \n",
-       "1    2021-06-29 14:09:13   3.0   4.0  39.893982  116.412666  0.000000  191.0   \n",
-       "2    2021-06-29 14:11:02   3.0   6.0  39.894615  116.412964  0.437072   69.0   \n",
-       "3    2021-06-29 14:12:50   3.0   7.0  39.894615  116.412964  0.000000   69.0   \n",
-       "4    2021-06-29 14:14:39   3.0   6.0  39.894615  116.412964  0.618568   69.0   \n",
-       "..                   ...   ...   ...        ...         ...       ...    ...   \n",
-       "498  2021-06-29 22:48:10   3.0  13.0  39.908268  116.468376  0.000000  109.0   \n",
-       "499  2021-06-29 22:49:58   3.0  11.0  39.908249  116.468361  0.000000  111.0   \n",
-       "500  2021-06-29 22:51:47   3.0  12.0  39.908249  116.468361  0.000000  111.0   \n",
-       "501  2021-06-29 22:53:35   3.0  10.0  39.908249  116.468361  0.000000  111.0   \n",
-       "502  2021-06-29 22:55:24   3.0  11.0  39.908241  116.468330  0.359288  113.0   \n",
-       "\n",
-       "        航向  \n",
-       "0    170.0  \n",
-       "1    138.0  \n",
-       "2    100.0  \n",
-       "3    242.0  \n",
-       "4    126.0  \n",
-       "..     ...  \n",
-       "498  152.0  \n",
-       "499   52.0  \n",
-       "500   52.0  \n",
-       "501   54.0  \n",
-       "502   34.0  \n",
+       "                   时间戳  SOH未标定时间  累计充电电量   累计充电能量  累计放电电量   累计放电能量  累计高温充电电量  \\\n",
+       "0  2021-06-29 13:00:59     165.0  1064.9  55301.9  1004.5  52806.7       0.0   \n",
+       "1  2021-06-29 17:06:47     150.0  1064.9  55301.9  1004.5  52806.7       0.0   \n",
+       "2  2021-06-29 23:16:05     165.0  1064.9  55301.9  1004.5  52806.7       0.0   \n",
        "\n",
-       "[503 rows x 8 columns]"
+       "   累计高温充电能量  \n",
+       "0       0.0  \n",
+       "1       0.0  \n",
+       "2       0.0  "
       ]
      },
-     "execution_count": 2,
+     "execution_count": 4,
      "metadata": {},
      "output_type": "execute_result"
     }
    ],
    "source": [
-    "df_data['gps']"
+    "df_data['accum']"
    ]
   },
   {