Browse Source

金家渠工作面支架重写

金家渠工作面支架重写
q 1 year ago
parent
commit
3c39ec3c5c
1 changed files with 31 additions and 25 deletions
  1. 31 25
      jjq_support_1.py

+ 31 - 25
jjq_support_1.py

@@ -1,4 +1,5 @@
 #!/usr/bin/env python3
+import json
 import redis
 import asyncio
 import tracemalloc
@@ -15,34 +16,36 @@ point_arr = [f"OPC.电液控.支架集.{num:03d}.立柱压力.后柱压力" for
 
 async def connect_and_read_opcua_data():
     ns = 2
-    result_arr = {}
+    result_arr = {
+        "sys_id": "support",
+        "sys_name": "130306工作面支架压力",
+        "data_time": "",
+        "sys_point": {
+            "support": []
+        }
+    }
     try:
         async with Client(url=opc_server_url, timeout=1) as client:
             await client.connect()
-
-            # node = await client.nodes.root.get_children()  # 获取所有子节点
-            # data_arr = [node.display_name.Text for node in node]
-
             for i in range(len(point_arr)):
-                data = point_arr[i]
-                node = f"ns=2;s={data}"
-                tag = await client.get_node(node)
-                value = await tag.read_value()
-                result_arr[data] = value
-
-                # 异步存储到 Redis 中,需要使用异步的 Redis 客户端库
-                # aioredis 或者其他异步库
-                # redis_conn = await aioredis.create_redis_pool(('localhost', 6379))
-                # await redis_conn.set(str(data), str(value))
-                # await redis_conn.close()
-
-                # redis_conn.set(str(data_arr[i]), str(value))
-                # arr_key = node.split("=")
-                # result_arr[arr_key[2]] = value
-
-                # result_arr[data] = value
-            # return node
-            return result_arr
+                try:
+                    data = point_arr[i]
+                    node = f"ns={ns};s={data}"
+                    tag = client.get_node(node)
+                    value = await tag.read_value()
+                    res = {
+                        "key": data,
+                        "name": f"{i}号立柱压力",
+                        "unit": "Mpa",
+                        "val": value
+                    }
+                    result_arr["sys_point"]["support"].append(res)
+                finally:
+                    continue
+            now = datetime.now().strftime('Start_time:%Y-%m-%d %H:%M:%S.%f')
+            result_arr["data_time"] = now
+            json_data = json.dumps(result_arr, indent=4)
+            return json_data
     except TimeoutError:
         msg = "连接超时,请检查网络、服务器状态和连接参数。"
         error = {
@@ -62,4 +65,7 @@ async def connect_and_read_opcua_data():
 if __name__ == '__main__':
     loop = asyncio.get_event_loop()
     result = loop.run_until_complete(connect_and_read_opcua_data())
-    print(result)
+
+    redis_conn = redis.StrictRedis(host=redis_ip, port=6379, decode_responses=True)
+    redis_conn.set("jinjiaqu_support_1", result)
+