|
@@ -3,29 +3,14 @@
|
|
|
{
|
|
|
"cell_type": "code",
|
|
|
"execution_count": 2,
|
|
|
- "metadata": {},
|
|
|
- "outputs": [
|
|
|
- {
|
|
|
- "name": "stdout",
|
|
|
- "output_type": "stream",
|
|
|
- "text": [
|
|
|
- "### start to get data PK10001A326000123 from 2021-07-06 00:00:00 to 2021-07-07 20:00:00\n",
|
|
|
- "# get data from 2021-07-06 00:00:00 to 2021-07-07 00:00:00......... \n",
|
|
|
- "Server Error, retry 1...... \n",
|
|
|
- "# get data from 2021-07-07 00:00:00 to 2021-07-07 20:00:00......... \n",
|
|
|
- "all data-getting done, bms_count is 0, gps_count is 0, system_count is 0, accum_count is 0 \n",
|
|
|
- "\n"
|
|
|
- ]
|
|
|
- }
|
|
|
- ],
|
|
|
"source": [
|
|
|
"# 获取数据\r\n",
|
|
|
"import sys\r\n",
|
|
|
"from LIB.BACKEND import DBManager\r\n",
|
|
|
"\r\n",
|
|
|
- "sn = \"PK10001A326000123\"\r\n",
|
|
|
- "st = '2021-07-06 00:00:00'\r\n",
|
|
|
- "et = '2021-07-07 20:00:00'\r\n",
|
|
|
+ "sn = \"MGMCLN750N215I057\"\r\n",
|
|
|
+ "st = '2021-05-23 00:00:00'\r\n",
|
|
|
+ "et = '2021-08-12 20:00:00'\r\n",
|
|
|
"\r\n",
|
|
|
"dbManager = DBManager.DBManager()\r\n",
|
|
|
"df_data = dbManager.get_data(sn=sn, start_time=st, end_time=et, data_groups=['bms', 'gps', 'accum', 'system'])\r\n",
|
|
@@ -34,13 +19,75 @@
|
|
|
"df_gps = df_data['gps']\r\n",
|
|
|
"df_accum = df_data['accum']\r\n",
|
|
|
"df_system = df_data['system']"
|
|
|
- ]
|
|
|
+ ],
|
|
|
+ "outputs": [
|
|
|
+ {
|
|
|
+ "output_type": "stream",
|
|
|
+ "name": "stdout",
|
|
|
+ "text": [
|
|
|
+ "### start to get data MGMCLN750N215I057 from 2021-05-23 00:00:00 to 2021-08-12 20:00:00\n",
|
|
|
+ "# get data from 2021-08-12 00:00:00 to 2021-08-12 20:00:00......... \n",
|
|
|
+ "all data-getting done, bms_count is 53957, gps_count is 53959, system_count is 0, accum_count is 53959 \n",
|
|
|
+ "\n"
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ "metadata": {}
|
|
|
},
|
|
|
{
|
|
|
"cell_type": "code",
|
|
|
"execution_count": null,
|
|
|
- "metadata": {},
|
|
|
+ "source": [
|
|
|
+ "#coding=utf-8\r\n",
|
|
|
+ "import os\r\n",
|
|
|
+ "import datetime\r\n",
|
|
|
+ "import pandas as pd\r\n",
|
|
|
+ "from LIB.BACKEND import DBManager, Log\r\n",
|
|
|
+ "from LIB.MIDDLE import SignalMonitor\r\n",
|
|
|
+ "from sqlalchemy import create_engine\r\n",
|
|
|
+ "from sqlalchemy.orm import sessionmaker\r\n",
|
|
|
+ "import time, datetime\r\n",
|
|
|
+ "import traceback\r\n",
|
|
|
+ "import pymysql\r\n",
|
|
|
+ "from urllib import parse\r\n",
|
|
|
+ "import dateutil.relativedelta\r\n",
|
|
|
+ "dbManager = DBManager.DBManager()\r\n",
|
|
|
+ "if __name__ == \"__main__\":\r\n",
|
|
|
+ " \r\n",
|
|
|
+ " # # 算法运行\r\n",
|
|
|
+ " count = 0\r\n",
|
|
|
+ " signalMonitor = SignalMonitor.SignalMonitor()\r\n",
|
|
|
+ " cal_period = 24 # 计算间隔,单位h\r\n",
|
|
|
+ " sn = 'MGMCLN750N215I057'\r\n",
|
|
|
+ " st = datetime.datetime.strptime('2021-05-23 00:00:00', \"%Y-%m-%d %H:%M:%S\")\r\n",
|
|
|
+ " et = datetime.datetime.strptime('2021-08-12 00:00:00', \"%Y-%m-%d %H:%M:%S\")\r\n",
|
|
|
+ " df_last_state = pd.DataFrame(\r\n",
|
|
|
+ " columns=['sn', 'current', 'Timestamp', 'PackState', 'LineState']) # 每日最后BMS数据\r\n",
|
|
|
+ " df_last_state_gps = pd.DataFrame(\r\n",
|
|
|
+ " columns=['sn', 'Timestamp', 'PackState', 'LineState', 'latitude', 'longitude']) # 每日最后GPS数据\r\n",
|
|
|
+ " df_res = pd.DataFrame(columns=[\r\n",
|
|
|
+ " 'sn', 'PackState', 'LineState', 'StartTime', 'EndTime', 'OfflineTime']) # 初始化BMS信号统计数据\r\n",
|
|
|
+ " df_res_gps = pd.DataFrame(columns=[\r\n",
|
|
|
+ " 'sn', 'PackState', 'LineState', 'StartTime', 'EndTime', 'OfflineTime', 'latitude', 'longitude']) # 初\r\n",
|
|
|
+ " logger.info(\"pid-{} {}/{}, {} {} START!\".format(os.getpid(), str(count), str(len(df_sn)), sn, str(st)))\r\n",
|
|
|
+ " while st < et:\r\n",
|
|
|
+ "\r\n",
|
|
|
+ " df_res, df_state, df_last_state = signalMonitor.get_bms_offline_stat(\r\n",
|
|
|
+ " sn, st, et, df_res, df_last_state, cal_period) # 计算每日BMS信号统计数据\r\n",
|
|
|
+ " df_res_gps, df_last_state_gps = signalMonitor.get_gps_offline_stat(\r\n",
|
|
|
+ " sn, st, et, df_state, df_res_gps, df_last_state_gps, cal_period) # 计算每日GPS信号统计数据\r\n",
|
|
|
+ " st = st + datetime.timedelta(hours=cal_period)\r\n",
|
|
|
+ "\r\n",
|
|
|
+ "\r\n",
|
|
|
+ "\r\n",
|
|
|
+ "\r\n"
|
|
|
+ ],
|
|
|
"outputs": [],
|
|
|
+ "metadata": {}
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "cell_type": "code",
|
|
|
+ "execution_count": null,
|
|
|
"source": [
|
|
|
"# 下载数据 \r\n",
|
|
|
"import sys\r\n",
|
|
@@ -53,13 +100,13 @@
|
|
|
"st = '2021-07-06 00:00:00'\r\n",
|
|
|
"et = '2021-07-07 20:00:00'\r\n",
|
|
|
"tools.data_download(write_path=write_path, sn=sn, start_time=st, end_time=et, data_groups=['bms'])"
|
|
|
- ]
|
|
|
+ ],
|
|
|
+ "outputs": [],
|
|
|
+ "metadata": {}
|
|
|
},
|
|
|
{
|
|
|
"cell_type": "code",
|
|
|
"execution_count": null,
|
|
|
- "metadata": {},
|
|
|
- "outputs": [],
|
|
|
"source": [
|
|
|
"# 数据预处理\r\n",
|
|
|
"import sys\r\n",
|
|
@@ -81,13 +128,13 @@
|
|
|
"df_bms_pro, df_gps_pro, res_record= dataPrePro.gps_data_judge(df_bms_pro, df_gps_pro)\r\n",
|
|
|
"# gps 数据可靠性判断, 并增加里程和速度至gps数据(根据已合并的数据段判断)\r\n",
|
|
|
"df_bms_pro, df_gps_pro, res_record= dataPrePro.data_gps_judge_after_combine(df_bms_pro, df_gps_pro)"
|
|
|
- ]
|
|
|
+ ],
|
|
|
+ "outputs": [],
|
|
|
+ "metadata": {}
|
|
|
},
|
|
|
{
|
|
|
"cell_type": "code",
|
|
|
"execution_count": null,
|
|
|
- "metadata": {},
|
|
|
- "outputs": [],
|
|
|
"source": [
|
|
|
"# 单cycle指标统计\r\n",
|
|
|
"import sys\r\n",
|
|
@@ -112,54 +159,56 @@
|
|
|
" print(indexSta.chrg_max_pwr_sta(np.array(df_sel_bms['总电压[V]']), np.array(df_sel_bms['总电流[A]'])))\r\n",
|
|
|
" print(indexSta.speed_sta(indexSta.odo_sta(np.array(df_sel_gps['odo'])), indexSta.acc_time_sta(np.array(df_sel_gps['时间戳'])), np.array(df_sel_gps['speed'])))\r\n",
|
|
|
" break"
|
|
|
- ]
|
|
|
+ ],
|
|
|
+ "outputs": [],
|
|
|
+ "metadata": {}
|
|
|
},
|
|
|
{
|
|
|
"cell_type": "code",
|
|
|
"execution_count": 2,
|
|
|
- "metadata": {},
|
|
|
+ "source": [
|
|
|
+ "# 生成pydoc 说明文档\r\n",
|
|
|
+ "!python -m pydoc -w LIB\\BACKEND\\DataPreProcess.py"
|
|
|
+ ],
|
|
|
"outputs": [
|
|
|
{
|
|
|
- "name": "stdout",
|
|
|
"output_type": "stream",
|
|
|
+ "name": "stdout",
|
|
|
"text": [
|
|
|
"problem in LIB\\BACKEND\\DataPreProcess.py - ModuleNotFoundError: No module named 'DBManager'\n"
|
|
|
]
|
|
|
}
|
|
|
],
|
|
|
- "source": [
|
|
|
- "# 生成pydoc 说明文档\r\n",
|
|
|
- "!python -m pydoc -w LIB\\BACKEND\\DataPreProcess.py"
|
|
|
- ]
|
|
|
+ "metadata": {}
|
|
|
},
|
|
|
{
|
|
|
"cell_type": "code",
|
|
|
"execution_count": 1,
|
|
|
- "metadata": {},
|
|
|
- "outputs": [],
|
|
|
"source": [
|
|
|
"from LIB.BACKEND import DBManager, Log\r\n",
|
|
|
"log = Log.Mylog(log_name='signal_monitor', log_level = 'info')\r\n",
|
|
|
"log.set_file_hl(file_name='info.log', log_level='info')\r\n",
|
|
|
"log.set_file_hl(file_name='error.log', log_level='error')\r\n",
|
|
|
"logger = log.get_logger()\r\n"
|
|
|
- ]
|
|
|
+ ],
|
|
|
+ "outputs": [],
|
|
|
+ "metadata": {}
|
|
|
},
|
|
|
{
|
|
|
"cell_type": "code",
|
|
|
"execution_count": null,
|
|
|
- "metadata": {},
|
|
|
+ "source": [],
|
|
|
"outputs": [],
|
|
|
- "source": []
|
|
|
+ "metadata": {}
|
|
|
}
|
|
|
],
|
|
|
"metadata": {
|
|
|
"interpreter": {
|
|
|
- "hash": "69976922f58704918d459eb5dccc4a4074095a997db3fffa9f9946bbc3807710"
|
|
|
+ "hash": "c31ac167ea649b5e73a69633f597408431a0cc42e7f7f3912c5d7e4fcd239e88"
|
|
|
},
|
|
|
"kernelspec": {
|
|
|
- "display_name": "Python 3.8.10 64-bit (conda)",
|
|
|
- "name": "python3"
|
|
|
+ "name": "python3",
|
|
|
+ "display_name": "Python 3.8.11 64-bit (conda)"
|
|
|
},
|
|
|
"language_info": {
|
|
|
"codemirror_mode": {
|
|
@@ -171,7 +220,7 @@
|
|
|
"name": "python",
|
|
|
"nbconvert_exporter": "python",
|
|
|
"pygments_lexer": "ipython3",
|
|
|
- "version": "3.8.10"
|
|
|
+ "version": "3.8.11"
|
|
|
},
|
|
|
"orig_nbformat": 4
|
|
|
},
|