From 0f1d2d543567d1511c62303d4db884b137e0c881 Mon Sep 17 00:00:00 2001 From: "WQY\\qiong" Date: Wed, 29 Mar 2023 22:34:28 +0800 Subject: [PATCH] Get all scada elements --- api/__init__.py | 2 +- api/s31_scada_element.py | 8 ++++++++ test_tjnetwork.py | 7 +++++++ tjnetwork.py | 3 +++ 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/api/__init__.py b/api/__init__.py index c24d109..357b078 100644 --- a/api/__init__.py +++ b/api/__init__.py @@ -128,5 +128,5 @@ from .s30_scada_device_data import get_scada_device_data_schema, get_scada_devic from .del_cmd import clean_scada_device_data from .s31_scada_element import SCADA_ELEMENT_STATUS_OFFLINE, SCADA_ELEMENT_STATUS_ONLINE -from .s31_scada_element import get_scada_element_schema, get_scada_element, set_scada_element, add_scada_element, delete_scada_element +from .s31_scada_element import get_scada_element_schema, get_scada_element, set_scada_element, add_scada_element, delete_scada_element, get_scada_elements from .del_cmd import clean_scada_element diff --git a/api/s31_scada_element.py b/api/s31_scada_element.py index 816256e..40e2fda 100644 --- a/api/s31_scada_element.py +++ b/api/s31_scada_element.py @@ -22,6 +22,14 @@ def _check_model_id(name: str, cs: ChangeSet) -> bool: return is_node(name, model_id) or is_link(name, model_id) +def get_scada_elements(name: str) -> list[str]: + result : list[str] = [] + rows = read_all(name, 'select id from scada_element order by id') + for row in rows: + result.append(str(row['id'])) + return result + + def get_scada_element_schema(name: str) -> dict[str, dict[str, Any]]: return { 'id' : {'type': 'str' , 'optional': False , 'readonly': True }, 'x' : {'type': 'float' , 'optional': False , 'readonly': False}, diff --git a/test_tjnetwork.py b/test_tjnetwork.py index 99d36ef..9e58d02 100644 --- a/test_tjnetwork.py +++ b/test_tjnetwork.py @@ -4798,6 +4798,8 @@ class TestApi: add_scada_device(p, ChangeSet({'id': 'sd0', 'name': 'device0', 'address': 'x0', 'sd_type': SCADA_DEVICE_TYPE_PRESSURE})) add_scada_device(p, ChangeSet({'id': 'sd1', 'name': 'device1', 'address': 'x1', 'sd_type': SCADA_DEVICE_TYPE_FLOW})) + assert get_scada_elements(p) == [] + add_scada_element(p, ChangeSet({'id': 'sm0', 'x': 0.0, 'y': 1.0, 'device_id': 'sd0', 'model_id': 'j0', 'status': SCADA_ELEMENT_STATUS_OFFLINE})) sm = get_scada_element(p, 'sm0') assert sm == {} @@ -4822,6 +4824,11 @@ class TestApi: assert sm['model_id'] == 'p1' assert sm['status'] == SCADA_ELEMENT_STATUS_ONLINE + elements = get_scada_elements(p) + assert len(elements) == 2 + assert elements[0] == 'sm0' + assert elements[1] == 'sm1' + set_scada_element(p, ChangeSet({'id': 'sm0', 'x': 1.0, 'y': 2.0, 'device_id': 'sd1', 'model_id': 'p1', 'status': SCADA_ELEMENT_STATUS_ONLINE})) sm = get_scada_element(p, 'sm0') assert sm['id'] == 'sm0' diff --git a/tjnetwork.py b/tjnetwork.py index 31c62e3..0bc9ada 100644 --- a/tjnetwork.py +++ b/tjnetwork.py @@ -901,6 +901,9 @@ def clean_scada_device_data(name: str) -> ChangeSet: def get_scada_element_schema(name: str) -> dict[str, dict[str, Any]]: return api.get_scada_element_schema(name) +def get_scada_elements(name: str) -> list[str]: + return api.get_scada_elements(name) + def get_scada_element(name: str, id: str) -> dict[str, Any]: return api.get_scada_element(name, id)