@@ 100-118 (lines=19) @@ | ||
97 | ) |
|
98 | ||
99 | ||
100 | async def create_variable(parent, nodeid, bname, val, varianttype=None, datatype=None): |
|
101 | """ |
|
102 | create a child node variable |
|
103 | args are nodeid, browsename, value, [variant type], [data type] |
|
104 | or idx, name, value, [variant type], [data type] |
|
105 | """ |
|
106 | status = _check_browsename_exist(parent, bname) |
|
107 | if status is not None: |
|
108 | return status |
|
109 | nodeid, qname = _parse_nodeid_qname(nodeid, bname) |
|
110 | var = ua.Variant(val, varianttype) |
|
111 | if datatype and isinstance(datatype, int): |
|
112 | datatype = ua.NodeId(datatype, 0) |
|
113 | if datatype and not isinstance(datatype, ua.NodeId): |
|
114 | raise RuntimeError("datatype argument must be a nodeid or an int refering to a nodeid") |
|
115 | ||
116 | return make_node( |
|
117 | parent.server, |
|
118 | await _create_variable(parent.server, parent.nodeid, nodeid, qname, var, datatype=datatype, isproperty=False) |
|
119 | ) |
|
120 | ||
121 | ||
@@ 79-96 (lines=18) @@ | ||
76 | ) |
|
77 | ||
78 | ||
79 | async def create_property(parent, nodeid, bname, val, varianttype=None, datatype=None): |
|
80 | """ |
|
81 | create a child node property |
|
82 | args are nodeid, browsename, value, [variant type] |
|
83 | or idx, name, value, [variant type] |
|
84 | """ |
|
85 | status = _check_browsename_exist(parent, bname) |
|
86 | if status is not None: |
|
87 | return status |
|
88 | nodeid, qname = _parse_nodeid_qname(nodeid, bname) |
|
89 | var = ua.Variant(val, varianttype) |
|
90 | if datatype and isinstance(datatype, int): |
|
91 | datatype = ua.NodeId(datatype, 0) |
|
92 | if datatype and not isinstance(datatype, ua.NodeId): |
|
93 | raise RuntimeError("datatype argument must be a nodeid or an int refering to a nodeid") |
|
94 | return make_node( |
|
95 | parent.server, |
|
96 | await _create_variable(parent.server, parent.nodeid, nodeid, qname, var, datatype=datatype, isproperty=True) |
|
97 | ) |
|
98 | ||
99 |