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 = server.add_nodes([addnode]) results[0].StatusCode.check() return results[0].AddedNodeId
def create_variable_type(parent, nodeid, bname, datatype): """ Create a new variable type args are nodeid, browsename and datatype or idx, name and data type """ nodeid, qname = _parse_nodeid_qname(nodeid, bname) if datatype and not isinstance(datatype, ua.NodeId): raise RuntimeError( "Data type should be nodeid, got {}".format(datatype)) addnode = ua.AddNodesItem() addnode.RequestedNewNodeId = nodeid addnode.BrowseName = qname addnode.NodeClass = ua.NodeClass.Variable addnode.ParentNodeId = parent.nodeid addnode.ReferenceTypeId = ua.NodeId(ua.ObjectIds.HasSubtype) attrs = ua.VariableTypeAttributes() attrs.Description = ua.LocalizedText(qname.Name) attrs.DisplayName = ua.LocalizedText(qname.Name) attrs.DataType = datatype attrs.IsAbstract = False attrs.WriteMask = 0 attrs.UserWriteMask = 0 addnode.NodeAttributes = attrs results = parent.server.add_nodes([addnode]) results[0].StatusCode.check() return results[0].AddedNodeId
def add_variable_type(self, obj): node = self._get_node(obj) attrs = ua.VariableTypeAttributes() if obj.desc: attrs.Description = ua.LocalizedText(obj.desc) attrs.DisplayName = ua.LocalizedText(obj.displayname) attrs.DataType = self.to_data_type(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 self.server.add_nodes([node]) self._add_refs(obj)
def add_variable_type(self, obj): node = self._get_node(obj) attrs = ua.VariableTypeAttributes() if obj.desc: attrs.Description = ua.LocalizedText(obj.desc) attrs.DisplayName = ua.LocalizedText(obj.displayname) attrs.DataType = self.to_nodeid(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 = self._add_node(node) 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)