From 528c660ddc3d80905e8b5f81309a64a6ec4ebbca Mon Sep 17 00:00:00 2001 From: DingZQ Date: Fri, 14 Feb 2025 22:25:55 +0800 Subject: [PATCH] Refine --- influxdb_api.py | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/influxdb_api.py b/influxdb_api.py index 8440312..fc64c61 100644 --- a/influxdb_api.py +++ b/influxdb_api.py @@ -1095,7 +1095,7 @@ def query_latest_record_by_ID(ID: str, type: str, bucket: str="realtime_simulati """ 查询指定ID的最新的一条记录 :param ID: (str): 要查询的 ID。 - :param type: (str): "node"或“link” + :param type: (str): "node"或“link”或'scada' :param bucket: (str): 数据存储的 bucket 名称。 :param client: (InfluxDBClient): 已初始化的 InfluxDB 客户端实例。 :return: dict: 最新记录的数据,如果没有找到则返回 None。 @@ -1166,6 +1166,30 @@ def query_latest_record_by_ID(ID: str, type: str, bucket: str="realtime_simulati "reaction": record["reaction"], "friction": record["friction"] } + elif type == "scada": + flux_query = f''' + from(bucket: "SCADA_data") + |> range(start: -30d) // 查找最近一月的记录 + |> filter(fn: (r) => r["_measurement"] == "reservoir_liquid_level_realtime") + |> filter(fn: (r) => r["device_ID"] == "{ID}") + |> pivot( + rowKey:["_time"], + columnKey:["_field"], + valueColumn:"_value" + ) + |> sort(columns: ["_time"], desc: true) + |> limit(n: 1) + ''' + tables = query_api.query(flux_query) + # 解析查询结果 + for table in tables: + for record in table.records: + return { + "time": record["_time"], + "device_ID": ID, + "value": record["_value"], + } + return None # 如果没有找到记录