|
@@ 274-301 (lines=28) @@
|
| 271 |
|
results[0].StatusCode.check() |
| 272 |
|
return results[0].AddedNodeId |
| 273 |
|
|
| 274 |
|
|
| 275 |
|
def create_data_type(parent, nodeid, bname, description=None): |
| 276 |
|
""" |
| 277 |
|
Create a new data type to be used in new variables, etc .. |
| 278 |
|
arguments are nodeid, browsename |
| 279 |
|
or namespace index, name |
| 280 |
|
""" |
| 281 |
|
nodeid, qname = _parse_nodeid_qname(nodeid, bname) |
| 282 |
|
|
| 283 |
|
addnode = ua.AddNodesItem() |
| 284 |
|
addnode.RequestedNewNodeId = nodeid |
| 285 |
|
addnode.BrowseName = qname |
| 286 |
|
addnode.NodeClass = ua.NodeClass.DataType |
| 287 |
|
addnode.ParentNodeId = parent.nodeid |
| 288 |
|
addnode.ReferenceTypeId = ua.NodeId(ua.ObjectIds.HasSubtype) |
| 289 |
|
#addnode.TypeDefinition = ua.NodeId(ua.ObjectIds.BaseDataVariableType) # No type definition for types |
| 290 |
|
attrs = ua.DataTypeAttributes() |
| 291 |
|
if description is None: |
| 292 |
|
attrs.Description = ua.LocalizedText(qname.Name) |
| 293 |
|
else: |
| 294 |
|
attrs.Description = ua.LocalizedText(description) |
| 295 |
|
attrs.DisplayName = ua.LocalizedText(qname.Name) |
| 296 |
|
attrs.WriteMask = 0 |
| 297 |
|
attrs.UserWriteMask = 0 |
| 298 |
|
attrs.IsAbstract = False # True mean they cannot be instanciated |
| 299 |
|
addnode.NodeAttributes = attrs |
| 300 |
|
results = parent.server.add_nodes([addnode]) |
| 301 |
|
results[0].StatusCode.check() |
| 302 |
|
return node.Node(parent.server, results[0].AddedNodeId) |
| 303 |
|
|
| 304 |
|
|
|
@@ 162-186 (lines=25) @@
|
| 159 |
|
outputs = [] |
| 160 |
|
return node.Node(parent.server, _create_method(parent, nodeid, qname, callback, inputs, outputs)) |
| 161 |
|
|
| 162 |
|
|
| 163 |
|
def _create_object(server, parentnodeid, nodeid, qname, objecttype): |
| 164 |
|
addnode = ua.AddNodesItem() |
| 165 |
|
addnode.RequestedNewNodeId = nodeid |
| 166 |
|
addnode.BrowseName = qname |
| 167 |
|
addnode.ParentNodeId = parentnodeid |
| 168 |
|
if node.Node(server, parentnodeid).get_type_definition() == ua.NodeId(ua.ObjectIds.FolderType): |
| 169 |
|
addnode.ReferenceTypeId = ua.NodeId(ua.ObjectIds.Organizes) |
| 170 |
|
else: |
| 171 |
|
addnode.ReferenceTypeId = ua.NodeId(ua.ObjectIds.HasComponent) |
| 172 |
|
addnode.NodeClass = ua.NodeClass.Object |
| 173 |
|
if isinstance(objecttype, int): |
| 174 |
|
addnode.TypeDefinition = ua.NodeId(objecttype) |
| 175 |
|
else: |
| 176 |
|
addnode.TypeDefinition = objecttype |
| 177 |
|
attrs = ua.ObjectAttributes() |
| 178 |
|
attrs.EventNotifier = 0 |
| 179 |
|
|
| 180 |
|
attrs.Description = ua.LocalizedText(qname.Name) |
| 181 |
|
attrs.DisplayName = ua.LocalizedText(qname.Name) |
| 182 |
|
attrs.WriteMask = 0 |
| 183 |
|
attrs.UserWriteMask = 0 |
| 184 |
|
addnode.NodeAttributes = attrs |
| 185 |
|
results = server.add_nodes([addnode]) |
| 186 |
|
results[0].StatusCode.check() |
| 187 |
|
return results[0].AddedNodeId |
| 188 |
|
|
| 189 |
|
|