async def _create_variable_type(server, parentnodeid, nodeid, qname, datatype, value=None): addnode = ua.AddNodesItem() addnode.RequestedNewNodeId = nodeid addnode.BrowseName = qname addnode.NodeClass = ua.NodeClass.VariableType addnode.ParentNodeId = parentnodeid addnode.ReferenceTypeId = ua.NodeId(ua.ObjectIds.HasSubtype) # addnode.TypeDefinition = ua.NodeId(ua.ObjectIds.BaseDataVariableType) attrs = ua.VariableTypeAttributes() attrs.Description = ua.LocalizedText(qname.Name) attrs.DisplayName = ua.LocalizedText(qname.Name) attrs.DataType = datatype attrs.IsAbstract = False if value: attrs.Value = value if isinstance(value, (list, tuple)): attrs.ValueRank = ua.ValueRank.OneDimension else: attrs.ValueRank = ua.ValueRank.Scalar # attrs.ArrayDimensions = None attrs.WriteMask = 0 attrs.UserWriteMask = 0 addnode.NodeAttributes = attrs results = await server.add_nodes([addnode]) results[0].StatusCode.check() return results[0].AddedNodeId
async def add_variable_type(self, obj, no_namespace_migration=False): node = self._get_add_node_item(obj, no_namespace_migration) attrs = ua.VariableTypeAttributes() if obj.desc: attrs.Description = ua.LocalizedText(obj.desc) attrs.DisplayName = ua.LocalizedText(obj.displayname) attrs.DataType = obj.datatype if obj.value and len(obj.value) == 1: attrs.Value = obj.value[0] if obj.rank: attrs.ValueRank = obj.rank if obj.abstract: attrs.IsAbstract = obj.abstract if obj.dimensions: attrs.ArrayDimensions = obj.dimensions node.NodeAttributes = attrs res = await self._get_server().add_nodes([node]) await self._add_refs(obj) res[0].StatusCode.check() return res[0].AddedNodeId
def create_standard_address_space_Part19(server): node = ua.AddNodesItem() node.RequestedNewNodeId = NumericNodeId(19077, 0) node.BrowseName = QualifiedName( 'MultiStateDictionaryEntryDiscreteBaseType', 0) node.NodeClass = NodeClass.VariableType node.ParentNodeId = NumericNodeId(11238, 0) node.ReferenceTypeId = NumericNodeId(45, 0) attrs = ua.VariableTypeAttributes() attrs.DisplayName = LocalizedText( "MultiStateDictionaryEntryDiscreteBaseType") attrs.DisplayName = LocalizedText( "MultiStateDictionaryEntryDiscreteBaseType") attrs.DataType = ua.NodeId(ua.ObjectIds.Number) attrs.ValueRank = -1 node.NodeAttributes = attrs server.add_nodes([node]) refs = [] ref = ua.AddReferencesItem() ref.IsForward = True ref.ReferenceTypeId = NumericNodeId(46, 0) ref.SourceNodeId = NumericNodeId(19077, 0) ref.TargetNodeClass = NodeClass.DataType ref.TargetNodeId = NumericNodeId(19082, 0) refs.append(ref) ref = ua.AddReferencesItem() ref.IsForward = True ref.ReferenceTypeId = NumericNodeId(46, 0) ref.SourceNodeId = NumericNodeId(19077, 0) ref.TargetNodeClass = NodeClass.DataType ref.TargetNodeId = NumericNodeId(19083, 0) refs.append(ref) ref = ua.AddReferencesItem() ref.IsForward = False ref.ReferenceTypeId = NumericNodeId(45, 0) ref.SourceNodeId = NumericNodeId(19077, 0) ref.TargetNodeClass = NodeClass.DataType ref.TargetNodeId = NumericNodeId(11238, 0) refs.append(ref) server.add_references(refs) node = ua.AddNodesItem() node.RequestedNewNodeId = NumericNodeId(19082, 0) node.BrowseName = QualifiedName('EnumDictionaryEntries', 0) node.NodeClass = NodeClass.Variable node.ParentNodeId = NumericNodeId(19077, 0) node.ReferenceTypeId = NumericNodeId(46, 0) node.TypeDefinition = NumericNodeId(68, 0) attrs = ua.VariableAttributes() attrs.DisplayName = LocalizedText("EnumDictionaryEntries") attrs.DataType = ua.NodeId(ua.ObjectIds.NodeId) attrs.ValueRank = 2 attrs.ArrayDimensions = [0, 0] node.NodeAttributes = attrs server.add_nodes([node]) refs = [] ref = ua.AddReferencesItem() ref.IsForward = True ref.ReferenceTypeId = NumericNodeId(40, 0) ref.SourceNodeId = NumericNodeId(19082, 0) ref.TargetNodeClass = NodeClass.DataType ref.TargetNodeId = NumericNodeId(68, 0) refs.append(ref) ref = ua.AddReferencesItem() ref.IsForward = True ref.ReferenceTypeId = NumericNodeId(37, 0) ref.SourceNodeId = NumericNodeId(19082, 0) ref.TargetNodeClass = NodeClass.DataType ref.TargetNodeId = NumericNodeId(78, 0) refs.append(ref) ref = ua.AddReferencesItem() ref.IsForward = False ref.ReferenceTypeId = NumericNodeId(46, 0) ref.SourceNodeId = NumericNodeId(19082, 0) ref.TargetNodeClass = NodeClass.DataType ref.TargetNodeId = NumericNodeId(19077, 0) refs.append(ref) server.add_references(refs) node = ua.AddNodesItem() node.RequestedNewNodeId = NumericNodeId(19083, 0) node.BrowseName = QualifiedName('ValueAsDictionaryEntries', 0) node.NodeClass = NodeClass.Variable node.ParentNodeId = NumericNodeId(19077, 0) node.ReferenceTypeId = NumericNodeId(46, 0) node.TypeDefinition = NumericNodeId(68, 0) attrs = ua.VariableAttributes() attrs.DisplayName = LocalizedText("ValueAsDictionaryEntries") attrs.DataType = ua.NodeId(ua.ObjectIds.NodeId) attrs.ValueRank = 1 attrs.ArrayDimensions = [0] node.NodeAttributes = attrs server.add_nodes([node]) refs = [] ref = ua.AddReferencesItem() ref.IsForward = True ref.ReferenceTypeId = NumericNodeId(40, 0) ref.SourceNodeId = NumericNodeId(19083, 0) ref.TargetNodeClass = NodeClass.DataType ref.TargetNodeId = NumericNodeId(68, 0) refs.append(ref) ref = ua.AddReferencesItem() ref.IsForward = True ref.ReferenceTypeId = NumericNodeId(37, 0) ref.SourceNodeId = NumericNodeId(19083, 0) ref.TargetNodeClass = NodeClass.DataType ref.TargetNodeId = NumericNodeId(80, 0) refs.append(ref) ref = ua.AddReferencesItem() ref.IsForward = False ref.ReferenceTypeId = NumericNodeId(46, 0) ref.SourceNodeId = NumericNodeId(19083, 0) ref.TargetNodeClass = NodeClass.DataType ref.TargetNodeId = NumericNodeId(19077, 0) refs.append(ref) server.add_references(refs) node = ua.AddNodesItem() node.RequestedNewNodeId = NumericNodeId(19084, 0) node.BrowseName = QualifiedName('MultiStateDictionaryEntryDiscreteType', 0) node.NodeClass = NodeClass.VariableType node.ParentNodeId = NumericNodeId(19077, 0) node.ReferenceTypeId = NumericNodeId(45, 0) attrs = ua.VariableTypeAttributes() attrs.DisplayName = LocalizedText("MultiStateDictionaryEntryDiscreteType") attrs.DisplayName = LocalizedText("MultiStateDictionaryEntryDiscreteType") attrs.DataType = ua.NodeId(ua.ObjectIds.Number) attrs.ValueRank = -1 node.NodeAttributes = attrs server.add_nodes([node]) refs = [] ref = ua.AddReferencesItem() ref.IsForward = True ref.ReferenceTypeId = NumericNodeId(46, 0) ref.SourceNodeId = NumericNodeId(19084, 0) ref.TargetNodeClass = NodeClass.DataType ref.TargetNodeId = NumericNodeId(19090, 0) refs.append(ref) ref = ua.AddReferencesItem() ref.IsForward = False ref.ReferenceTypeId = NumericNodeId(45, 0) ref.SourceNodeId = NumericNodeId(19084, 0) ref.TargetNodeClass = NodeClass.DataType ref.TargetNodeId = NumericNodeId(19077, 0) refs.append(ref) server.add_references(refs) node = ua.AddNodesItem() node.RequestedNewNodeId = NumericNodeId(19090, 0) node.BrowseName = QualifiedName('ValueAsDictionaryEntries', 0) node.NodeClass = NodeClass.Variable node.ParentNodeId = NumericNodeId(19084, 0) node.ReferenceTypeId = NumericNodeId(46, 0) node.TypeDefinition = NumericNodeId(68, 0) attrs = ua.VariableAttributes() attrs.DisplayName = LocalizedText("ValueAsDictionaryEntries") attrs.DataType = ua.NodeId(ua.ObjectIds.NodeId) attrs.ValueRank = 1 attrs.ArrayDimensions = [0] node.NodeAttributes = attrs server.add_nodes([node]) refs = [] ref = ua.AddReferencesItem() ref.IsForward = True ref.ReferenceTypeId = NumericNodeId(40, 0) ref.SourceNodeId = NumericNodeId(19090, 0) ref.TargetNodeClass = NodeClass.DataType ref.TargetNodeId = NumericNodeId(68, 0) refs.append(ref) ref = ua.AddReferencesItem() ref.IsForward = True ref.ReferenceTypeId = NumericNodeId(37, 0) ref.SourceNodeId = NumericNodeId(19090, 0) ref.TargetNodeClass = NodeClass.DataType ref.TargetNodeId = NumericNodeId(78, 0) refs.append(ref) ref = ua.AddReferencesItem() ref.IsForward = False ref.ReferenceTypeId = NumericNodeId(46, 0) ref.SourceNodeId = NumericNodeId(19090, 0) ref.TargetNodeClass = NodeClass.DataType ref.TargetNodeId = NumericNodeId(19084, 0) refs.append(ref) server.add_references(refs)