Add more code from WMH

This commit is contained in:
DingZQ
2025-02-08 20:11:27 +08:00
parent f6f37d012b
commit e360540989
6 changed files with 382 additions and 61 deletions

View File

@@ -1,7 +1,7 @@
from influxdb_client import InfluxDBClient, BucketsApi, WriteApi, OrganizationsApi, Point, QueryApi
from typing import List, Dict
from datetime import datetime, timedelta, timezone
from influxdb_client.client.write_api import SYNCHRONOUS
from influxdb_client.client.write_api import SYNCHRONOUS, ASYNCHRONOUS
from dateutil import parser
import get_realValue
import get_data
@@ -363,7 +363,7 @@ def store_realtime_SCADA_data_to_influxdb(get_real_value_time: str, bucket: str
else:
print("{} -- Failed to connect to InfluxDB.".format(
datetime.now().strftime('%Y-%m-%d %H:%M:%S')))
write_api = client.write_api(write_options=SYNCHRONOUS)
write_api = client.write_api(write_options=ASYNCHRONOUS)
try_count = 0
reservoir_liquid_level_realtime_data_list = []
tank_liquid_level_realtime_data_list = []
@@ -433,6 +433,7 @@ def store_realtime_SCADA_data_to_influxdb(get_real_value_time: str, bucket: str
.time(get_real_value_time_utc)
)
write_api.write(bucket=bucket, org=org_name, record=point)
write_api.flush()
if tank_liquid_level_realtime_data_list:
for data in tank_liquid_level_realtime_data_list:
@@ -464,6 +465,7 @@ def store_realtime_SCADA_data_to_influxdb(get_real_value_time: str, bucket: str
.time(get_real_value_time_utc)
)
write_api.write(bucket=bucket, org=org_name, record=point)
write_api.flush()
if fixed_pump_realtime_data_list:
for data in fixed_pump_realtime_data_list:
@@ -495,6 +497,7 @@ def store_realtime_SCADA_data_to_influxdb(get_real_value_time: str, bucket: str
.time(get_real_value_time_utc)
)
write_api.write(bucket=bucket, org=org_name, record=point)
write_api.flush()
if variable_pump_realtime_data_list:
for data in variable_pump_realtime_data_list:
@@ -526,6 +529,7 @@ def store_realtime_SCADA_data_to_influxdb(get_real_value_time: str, bucket: str
.time(get_real_value_time_utc)
)
write_api.write(bucket=bucket, org=org_name, record=point)
write_api.flush()
if source_outflow_realtime_data_list:
for data in source_outflow_realtime_data_list:
@@ -557,6 +561,7 @@ def store_realtime_SCADA_data_to_influxdb(get_real_value_time: str, bucket: str
.time(get_real_value_time_utc)
)
write_api.write(bucket=bucket, org=org_name, record=point)
write_api.flush()
if pipe_flow_realtime_data_list:
for data in pipe_flow_realtime_data_list:
@@ -588,6 +593,7 @@ def store_realtime_SCADA_data_to_influxdb(get_real_value_time: str, bucket: str
.time(get_real_value_time_utc)
)
write_api.write(bucket=bucket, org=org_name, record=point)
write_api.flush()
if pressure_realtime_data_list:
for data in pressure_realtime_data_list:
@@ -619,6 +625,7 @@ def store_realtime_SCADA_data_to_influxdb(get_real_value_time: str, bucket: str
.time(get_real_value_time_utc)
)
write_api.write(bucket=bucket, org=org_name, record=point)
write_api.flush()
if demand_realtime_data_list:
for data in demand_realtime_data_list:
@@ -650,6 +657,7 @@ def store_realtime_SCADA_data_to_influxdb(get_real_value_time: str, bucket: str
.time(get_real_value_time_utc)
)
write_api.write(bucket=bucket, org=org_name, record=point)
write_api.flush()
if quality_realtime_data_list:
for data in quality_realtime_data_list:
@@ -681,6 +689,7 @@ def store_realtime_SCADA_data_to_influxdb(get_real_value_time: str, bucket: str
.time(get_real_value_time_utc)
)
write_api.write(bucket=bucket, org=org_name, record=point)
write_api.flush()
def convert_time_format(original_time: str) -> str:
@@ -726,6 +735,8 @@ def store_non_realtime_SCADA_data_to_influxdb(get_history_data_end_time: str, bu
transmission_frequency_dt = datetime.strptime(globals.transmission_frequency, '%H:%M:%S') - datetime(1900, 1, 1)
get_history_data_start_time = end_date_dt - transmission_frequency_dt
begin_date = get_history_data_start_time.strftime('%Y-%m-%d %H:%M:%S')
# print(begin_date)
# print(end_date)
reservoir_liquid_level_non_realtime_data_list = []
tank_liquid_level_non_realtime_data_list = []
@@ -786,6 +797,7 @@ def store_non_realtime_SCADA_data_to_influxdb(get_history_data_end_time: str, bu
ids=','.join(globals.pressure_non_realtime_ids),
begin_date=begin_date, end_date=end_date,
downsample='1m')
# print(pressure_non_realtime_data_list)
if globals.demand_non_realtime_ids:
demand_non_realtime_data_list = get_data.get_history_data(
@@ -1049,6 +1061,7 @@ def store_realtime_simulation_result_to_influxdb(node_result_list: List[Dict[str
# 写入数据到 InfluxDB多个 field 在同一个 point 中
write_api.write(bucket=bucket, org=org_name, record=node_point)
write_api.flush()
print(f"成功将 {len(node_result_list)} 条node数据写入 InfluxDB。")
for result in link_result_list:
link_id = result.get('link')
@@ -1068,6 +1081,7 @@ def store_realtime_simulation_result_to_influxdb(node_result_list: List[Dict[str
.field("friction", data.get('friction', 0.0)) \
.time(time_beijing)
write_api.write(bucket=bucket, org=org_name, record=link_point)
write_api.flush()
print(f"成功将 {len(link_result_list)} 条link数据写入 InfluxDB。")
except Exception as e:
@@ -1305,12 +1319,12 @@ if __name__ == "__main__":
# client.close()
# step2: 先查询pg数据库中scada_info的信息然后存储SCADA数据到SCADA_data这个bucket里
# query_pg_scada_info_realtime('bb')
# query_pg_scada_info_non_realtime('bb')
query_pg_scada_info_realtime('bb')
query_pg_scada_info_non_realtime('bb')
# 手动执行
# store_realtime_SCADA_data_to_influxdb(get_real_value_time='2025-02-07T16:52:00+08:00')
# store_non_realtime_SCADA_data_to_influxdb(get_history_data_end_time='2025-02-01T12:00:00+08:00')
store_non_realtime_SCADA_data_to_influxdb(get_history_data_end_time='2025-02-08T12:00:00+08:00')
# step3: 查询测试示例
# with InfluxDBClient(url=url, token=token, org=org_name) as client:
@@ -1338,5 +1352,5 @@ if __name__ == "__main__":
# print(curve_result)
# 示例4query_SCADA_data_by_device_ID_and_time
# SCADA_result_dict = query_SCADA_data_by_device_ID_and_time(globals.reservoir_liquid_level_realtime_ids, query_time='2024-12-13T11:30:00+08:00')
# SCADA_result_dict = query_SCADA_data_by_device_ID_and_time(globals.variable_pump_realtime_ids, query_time='2025-02-08T10:30:00+08:00')
# print(SCADA_result_dict)