diff --git a/influxdb_api.py b/influxdb_api.py index 6ea4262..1442e77 100644 --- a/influxdb_api.py +++ b/influxdb_api.py @@ -1018,7 +1018,7 @@ def query_SCADA_data_by_device_ID_and_time(query_ids_list: List[str], query_time return SCADA_result_dict # DingZQ, 2025-02-15 -def query_SCADA_data_by_device_ID_and_time_range(query_ids_list: List[str], start_time: str, end_time: str, bucket: str="SCADA_data", client: InfluxDBClient=client) -> Dict[str, float]: +def query_SCADA_data_by_device_ID_and_time_range(query_ids_list: List[str], start_time: str, end_time: str, bucket: str="SCADA_data", client: InfluxDBClient=client) -> list[dict[str, float]]: """ 根据SCADA设备的ID和时间查询值 :param query_ids_list: SCADA设备ID的列表 @@ -1039,7 +1039,7 @@ def query_SCADA_data_by_device_ID_and_time_range(query_ids_list: List[str], star utc_end_time = time_api.to_utc_time(end_time) # 构建查询字典 - SCADA_result_dict = {} + SCADA_results = [] for device_id in query_ids_list: # 构建 Flux 查询语句 @@ -1048,6 +1048,7 @@ def query_SCADA_data_by_device_ID_and_time_range(query_ids_list: List[str], star |> range(start: {utc_start_time.isoformat()}, stop: {utc_end_time.isoformat()}) |> filter(fn: (r) => r["device_ID"] == "{device_id}") |> filter(fn: (r) => r["_field"] == "monitored_value") + |> sort(columns: ["_time"], desc: true) ''' # 执行查询 @@ -1061,15 +1062,17 @@ def query_SCADA_data_by_device_ID_and_time_range(query_ids_list: List[str], star for record in table.records: # 获取字段 "_value" 即为 monitored_value monitored_value = record.get_value() - SCADA_result_dict[device_id] = monitored_value - else: - # 如果没有结果,默认设置为 None 或其他值 - SCADA_result_dict[device_id] = None + rec = { + "ID": device_id, + "time": record.get_time(), + "value": monitored_value + } + SCADA_results.append(rec) + except Exception as e: print(f"Error querying InfluxDB for device ID {device_id}: {e}") - SCADA_result_dict[device_id] = None - return SCADA_result_dict + return SCADA_results # 2025/02/01 def store_realtime_simulation_result_to_influxdb(node_result_list: List[Dict[str, any]], link_result_list: List[Dict[str, any]],