Kaynağa Gözat

1:同步json 文件
2:修正获取数据的逻辑

wmy 3 gün önce
ebeveyn
işleme
a09e2282ec
2 değiştirilmiş dosya ile 21 ekleme ve 23 silme
  1. 4 3
      device_states.json
  2. 17 20
      loop_main.py

+ 4 - 3
device_states.json

@@ -25,13 +25,14 @@
     },
     "UF3": {
         "model_prev_L_s": 4340.0,
-        "model_prev_t_bw_s": 80.0,
-        "last_cycle_end_time": "2025-11-10 13:41:59",
+        "model_prev_t_bw_s": 78.0,
+        "last_cycle_end_time": "2025-11-13 08:45:14",
         "recent_tmp_values": [
             0.0177,
             0.0204,
             0.0242,
-            0.0229
+            0.0229,
+            0.0188
         ]
     },
     "UF4": {

+ 17 - 20
loop_main.py

@@ -217,7 +217,7 @@ def get_tmp_extremes(item_name, start_time, end_time, word_control):
     
     # API基础URL
     api_base_url = "http://120.55.44.4:8900/api/v1/jinke-cloud/db/device/history-data"
-    
+
     try:
         # 第一次调用:查询item_name的极值
         params1 = {
@@ -230,7 +230,7 @@ def get_tmp_extremes(item_name, start_time, end_time, word_control):
             "interval": "minute",
             "aggregator": "new"
         }
-        
+
         logger.info(f"第一次API调用: {api_base_url} 参数: {params1}")
         response1 = requests.get(api_base_url, params=params1, headers=HEADERS, timeout=30)
         response1.raise_for_status()
@@ -263,7 +263,7 @@ def get_tmp_extremes(item_name, start_time, end_time, word_control):
         item_values = {}
         if data1.get("code") == 200 and data1.get("data"):
             for item in data1["data"]:
-                if item.get("name") == item_name and item.get("val") is not None:
+                if item.get("val") is not None:
                     time = item.get("htime_at")
                     item_values[time] = float(item.get("val"))
             if item_values:
@@ -272,25 +272,22 @@ def get_tmp_extremes(item_name, start_time, end_time, word_control):
         # 从第二次调用结果中提取'UF1控制字'为26的数据点,并进行时间匹配
         if data2.get("code") == 200 and data2.get("data"):
             control_26_values = []
-            control_data_count = 0
             matched_count = 0
             for item in data2["data"]:
-                if item.get("name") == word_control:
-                    control_data_count += 1
-                    val = item.get("val")
-                    # 兼容字符串和数字类型,支持22-26范围
-                    try:
-                        val_int = int(float(val)) if val is not None else None
-                        if val_int is not None and 22 <= val_int <= 26:
-                            time = item.get("htime_at")
-                            # 如果在第一次数据中找到了对应的跨膜压差值
-                            if time in item_values:
-                                control_26_values.append(item_values[time])
-                                matched_count += 1
-                    except (ValueError, TypeError):
-                        pass
-
-            logger.info(f"第二次API查询成功,控制字数据点数量:{control_data_count},22-26范围内匹配数量:{matched_count}")
+                val = item.get("val")
+                # 兼容字符串和数字类型,支持22-26范围
+                try:
+                    val_int = int(float(val)) if val is not None else None
+                    if val_int is not None and 22 <= val_int <= 26:
+                        time = item.get("htime_at")
+                        # 如果在第一次数据中找到了对应的跨膜压差值
+                        if time in item_values:
+                            control_26_values.append(item_values[time])
+                            matched_count += 1
+                except (ValueError, TypeError):
+                    pass
+
+            logger.info(f"第二次API查询成功,22-26范围内匹配数量:{matched_count}")
 
             if control_26_values:
                 logger.info(f"找到控制字为22-26范围的数据点,合并跨膜压差数据")