def __init__(self, sourcenode=None, message=None, severity=1): super(AuditProgramTransitionEvent, self).__init__(sourcenode, message, severity) self.EventType = ua.NodeId( ua.ObjectIds.AuditProgramTransitionEventType) self.add_property('TransitionNumber', None, ua.VariantType.UInt32)
def __init__(self, sourcenode=None, message=None, severity=1): super(AuditUpdateStateEvent, self).__init__(sourcenode, message, severity) self.EventType = ua.NodeId(ua.ObjectIds.AuditUpdateStateEventType) self.add_property('OldStateId', None, ua.VariantType.Variant) self.add_property('NewStateId', None, ua.VariantType.Variant)
def __init__(self, sourcenode=None, message=None, severity=1): super(AuditUrlMismatchEvent, self).__init__(sourcenode, message, severity) self.EventType = ua.NodeId(ua.ObjectIds.AuditUrlMismatchEventType) self.add_property('EndpointUrl', None, ua.VariantType.String)
def __init__(self, sourcenode=None, message=None, severity=1): super(SystemEvent, self).__init__(sourcenode, message, severity) self.EventType = ua.NodeId(ua.ObjectIds.SystemEventType)
def __init__(self, sourcenode=None, message=None, severity=1): super(BaseModelChangeEvent, self).__init__(sourcenode, message, severity) self.EventType = ua.NodeId(ua.ObjectIds.BaseModelChangeEventType)
def __init__(self, sourcenode=None, message=None, severity=1): super(AuditCertificateMismatchEvent, self).__init__(sourcenode, message, severity) self.EventType = ua.NodeId( ua.ObjectIds.AuditCertificateMismatchEventType)
def __init__(self, sourcenode=None, message=None, severity=1): super(AuditAddNodesEvent, self).__init__(sourcenode, message, severity) self.EventType = ua.NodeId(ua.ObjectIds.AuditAddNodesEventType) self.add_property('NodesToAdd', None, ua.NodeId(ua.ObjectIds.AddNodesItem))
def __init__(self, sourcenode=None, message=None, severity=1): super(KeyCredentialDeletedAuditEvent, self).__init__(sourcenode, message, severity) self.EventType = ua.NodeId( ua.ObjectIds.KeyCredentialDeletedAuditEventType)
def __init__(self, sourcenode=None, message=None, severity=1): super(AuditChannelEvent, self).__init__(sourcenode, message, severity) self.EventType = ua.NodeId(ua.ObjectIds.AuditChannelEventType) self.add_property('SecureChannelId', None, ua.VariantType.String)
def __init__(self, sourcenode=None, message=None, severity=1): super(RoleMappingRuleChangedAuditEvent, self).__init__(sourcenode, message, severity) self.EventType = ua.NodeId( ua.ObjectIds.RoleMappingRuleChangedAuditEventType)
def __init__(self, sourcenode=None, message=None, severity=1): super(KeyCredentialAuditEvent, self).__init__(sourcenode, message, severity) self.EventType = ua.NodeId(ua.ObjectIds.KeyCredentialAuditEventType) self.add_property('ResourceUri', None, ua.VariantType.String)
def __init__(self, sourcenode=None, message=None, severity=1): super(AuditConditionOutOfServiceEvent, self).__init__(sourcenode, message, severity) self.EventType = ua.NodeId( ua.ObjectIds.AuditConditionOutOfServiceEventType)
def __init__(self, sourcenode=None, message=None, severity=1): super(PubSubCommunicationFailureEvent, self).__init__(sourcenode, message, severity) self.EventType = ua.NodeId( ua.ObjectIds.PubSubCommunicationFailureEventType) self.add_property('Error', None, ua.VariantType.StatusCode)
def __init__(self, sourcenode=None, message=None, severity=1): super(TrustListUpdatedAuditEvent, self).__init__(sourcenode, message, severity) self.EventType = ua.NodeId(ua.ObjectIds.TrustListUpdatedAuditEventType)
def __init__(self, sourcenode=None, message=None, severity=1): super(AuditCancelEvent, self).__init__(sourcenode, message, severity) self.EventType = ua.NodeId(ua.ObjectIds.AuditCancelEventType) self.add_property('RequestHandle', None, ua.VariantType.UInt32)
def _instantiate_node(server, parentid, rdesc, nodeid, bname, recursive=True): """ instantiate a node type under parent """ node_type = Node(server, rdesc.NodeId) refs = node_type.get_referenced_nodes(refs=ua.ObjectIds.HasModellingRule) # skip optional elements if len(refs) == 1 and refs[0].nodeid == ua.NodeId( ua.ObjectIds.ModellingRule_Optional): return [] addnode = ua.AddNodesItem() addnode.RequestedNewNodeId = nodeid addnode.BrowseName = bname addnode.ParentNodeId = parentid addnode.ReferenceTypeId = rdesc.ReferenceTypeId addnode.TypeDefinition = rdesc.TypeDefinition if rdesc.NodeClass in (ua.NodeClass.Object, ua.NodeClass.ObjectType): addnode.NodeClass = ua.NodeClass.Object _read_and_copy_attrs(node_type, ua.ObjectAttributes(), addnode) elif rdesc.NodeClass in (ua.NodeClass.Variable, ua.NodeClass.VariableType): addnode.NodeClass = ua.NodeClass.Variable _read_and_copy_attrs(node_type, ua.VariableAttributes(), addnode) elif rdesc.NodeClass in (ua.NodeClass.Method, ): addnode.NodeClass = ua.NodeClass.Method _read_and_copy_attrs(node_type, ua.MethodAttributes(), addnode) else: print("Instantiate: Node class not supported: ", rdesc.NodeClass) return res = server.add_nodes([addnode])[0] added_nodes = [res.AddedNodeId] if recursive: parents = ua_utils.get_node_supertypes(node_type, includeitself=True) node = Node(server, res.AddedNodeId) for parent in parents: descs = parent.get_children_descriptions(includesubtypes=False) for c_rdesc in descs: # skip items that already exists, prefer the 'lowest' one in object hierarchy if not ua_utils.is_child_present(node, c_rdesc.BrowseName): # if root node being instantiated has a String NodeId, create the children with a String NodeId if res.AddedNodeId.NodeIdType is ua.NodeIdType.String: inst_nodeid = res.AddedNodeId.Identifier + "." + c_rdesc.BrowseName.Name nodeids = _instantiate_node( server, res.AddedNodeId, c_rdesc, nodeid=ua.NodeId( identifier=inst_nodeid, namespaceidx=res.AddedNodeId.NamespaceIndex), bname=c_rdesc.BrowseName) else: nodeids = _instantiate_node( server, res.AddedNodeId, c_rdesc, nodeid=ua.NodeId( namespaceidx=res.AddedNodeId.NamespaceIndex), bname=c_rdesc.BrowseName) added_nodes.extend(nodeids) return added_nodes
def __init__(self, sourcenode=None, message=None, severity=1): super(AuditCertificateEvent, self).__init__(sourcenode, message, severity) self.EventType = ua.NodeId(ua.ObjectIds.AuditCertificateEventType) self.add_property('Certificate', None, ua.VariantType.ByteString)
def test_root(self): root = self.opc.get_root_node() self.assertEqual(ua.QualifiedName('Root', 0), root.get_browse_name()) self.assertEqual(ua.LocalizedText('Root'), root.get_display_name()) nid = ua.NodeId(84, 0) self.assertEqual(nid, root.nodeid)
def __init__(self, sourcenode=None, message=None, severity=1): super(AuditNodeManagementEvent, self).__init__(sourcenode, message, severity) self.EventType = ua.NodeId(ua.ObjectIds.AuditNodeManagementEventType)
def test_objects(self): objects = self.opc.get_objects_node() self.assertEqual(ua.QualifiedName('Objects', 0), objects.get_browse_name()) nid = ua.NodeId(85, 0) self.assertEqual(nid, objects.nodeid)
def __init__(self, sourcenode=None, message=None, severity=1): super(AuditDeleteReferencesEvent, self).__init__(sourcenode, message, severity) self.EventType = ua.NodeId(ua.ObjectIds.AuditDeleteReferencesEventType) self.add_property('ReferencesToDelete', None, ua.NodeId(ua.ObjectIds.DeleteReferencesItem))
def test_get_node_by_nodeid(self): root = self.opc.get_root_node() server_time_node = root.get_child(['0:Objects', '0:Server', '0:ServerStatus', '0:CurrentTime']) correct = self.opc.get_node(ua.NodeId(ua.ObjectIds.Server_ServerStatus_CurrentTime)) self.assertEqual(server_time_node, correct)
def __init__(self, sourcenode=None, message=None, severity=1): super(DeviceFailureEvent, self).__init__(sourcenode, message, severity) self.EventType = ua.NodeId(ua.ObjectIds.DeviceFailureEventType)
def test_datetime_read(self): time_node = self.opc.get_node(ua.NodeId(ua.ObjectIds.Server_ServerStatus_CurrentTime)) dt = time_node.get_value() utcnow = datetime.utcnow() delta = utcnow - dt self.assertTrue(delta < timedelta(seconds=1))
def __init__(self, sourcenode=None, message=None, severity=1): super(GeneralModelChangeEvent, self).__init__(sourcenode, message, severity) self.EventType = ua.NodeId(ua.ObjectIds.GeneralModelChangeEventType) self.add_property('Changes', None, ua.NodeId(ua.ObjectIds.ModelChangeStructureDataType))
def test_read_server_state(self): statenode = self.opc.get_node(ua.NodeId(ua.ObjectIds.Server_ServerStatus_State)) state = statenode.get_value() self.assertEqual(state, 0)
def __init__(self, sourcenode=None, message=None, severity=1): super(ProgramTransitionEvent, self).__init__(sourcenode, message, severity) self.EventType = ua.NodeId(ua.ObjectIds.ProgramTransitionEventType)
def getVariables(): variables = [] status = 0 try: clientBGS.connect() listNodeStations = [] listNodeStation1 = [ ["1_Loading_BGLP.Software PLC_1.ProcessData_DB.Filling_Height_max.State", 6], ["1_Loading_BGLP.Software PLC_1.ProcessData_DB.Filling_Height_min.State", 6], ["1_Loading_BGLP.Software PLC_1.ProcessData_DB.Overflow.State", 6], ["1_Loading_BGLP.Software PLC_1.ProcessData_DB.Emergency", 6], ["1_Loading_BGLP.Software PLC_1.ProcessData_DB.Belt_Conveyor_ON/OFF", 6], ["1_Loading_BGLP.Software PLC_1.HealthSignal_DB.HealthCondition", 6] ] listNodeStation2 = [ ["ET 200SP-Station_3.2_Storage_BGLP.ProcessData_DB.Filling_Height_max.State", 6], ["ET 200SP-Station_3.2_Storage_BGLP.ProcessData_DB.Filling_Height_min.State", 6], ["ET 200SP-Station_3.2_Storage_BGLP.ProcessData_DB.Overflow.State", 6], ["ET 200SP-Station_3.2_Storage_BGLP.ProcessData_DB.Emergency", 6], ["ET 200SP-Station_3.2_Storage_BGLP.ProcessData_DB.Pressure_Average", 6], ["ET 200SP-Station_3.2_Storage_BGLP.HealthSignal_DB.HealthCondition", 6] ] listNodeStation3 = [ ["ET 200SP-Station_1.3_Weighing_BGLP.ProcessData_DB.Filling_Height_max.State", 6], ["ET 200SP-Station_1.3_Weighing_BGLP.ProcessData_DB.Filling_Height_min.State", 6], ["ET 200SP-Station_1.3_Weighing_BGLP.ProcessData_DB.Overflow.State", 6], ["ET 200SP-Station_1.3_Weighing_BGLP.ProcessData_DB.Emergency", 6], ["ET 200SP-Station_1.3_Weighing_BGLP.ProcessData_DB.Pressure_Average", 6], ["ET 200SP-Station_1.3_Weighing_BGLP.HealthSignal_DB.HealthCondition", 6] ] listNodeStation4 = [ ["ET 200SP-Station_4.4_Filling_BGLP.ProcessData_DB.Container_available.State", 6], ["ET 200SP-Station_4.4_Filling_BGLP.MachineCondition.RFID", 6], ["ET 200SP-Station_4.4_Filling_BGLP.ProcessData_DB.Emergency", 6], ["ET 200SP-Station_4.4_Filling_BGLP.MachineCondition.Pressure_Sensor", 6], ["ET 200SP-Station_4.4_Filling_BGLP.HealthSignal_DB.HealthCondition", 6] ] listNodeStations.append(listNodeStation1) listNodeStations.append(listNodeStation2) listNodeStations.append(listNodeStation3) listNodeStations.append(listNodeStation4) for x in listNodeStations: for y in x: variables.append(float(clientBGS.get_node( ua.NodeId(y[0], int(y[1]))).get_value())) clientBGS.disconnect() """ Storing the variables""" fillingHeightMaxS1 = variables[0] fillingHeightMinS1 = variables[1] overflowS1 = variables[2] emergencyS1 = variables[3] motorSpeedS1 = variables[4] healthConditionS1 = variables[5] fillingHeightMaxS2 = variables[6] fillingHeightMinS2 = variables[7] overflowS2 = variables[8] emergencyS2 = variables[9] pressureAvgS2 = variables[10] healthConditionS2 = variables[11] fillingHeightMaxS3 = variables[12] fillingHeightMinS3 = variables[13] overflowS3 = variables[14] emergencyS3 = variables[15] pressureAvgS3 = variables[16] healthConditionS3 = variables[17] containerAvailS4 = variables[18] RFIDS4 = variables[19] emergencyS4 = variables[20] pressureAvgS4 = variables[21] healthConditionS4 = variables[22] status = 1 return fillingHeightMaxS1, fillingHeightMinS1, overflowS1, emergencyS1, motorSpeedS1, healthConditionS1, fillingHeightMaxS2, fillingHeightMinS2, overflowS2, emergencyS2, pressureAvgS2, healthConditionS2, fillingHeightMaxS3, fillingHeightMinS3, overflowS3, emergencyS3, pressureAvgS3, healthConditionS3, containerAvailS4, RFIDS4, emergencyS4, pressureAvgS4, healthConditionS4 except Exception as e: print("Unable to retrieve variables") status = 0 return status
def __init__(self, sourcenode=None, message=None, severity=1): super(RefreshRequiredEvent, self).__init__(sourcenode, message, severity) self.EventType = ua.NodeId(ua.ObjectIds.RefreshRequiredEventType)
def __init__(self, sourcenode=None, message=None, severity=1): super(SystemStatusChangeEvent, self).__init__(sourcenode, message, severity) self.EventType = ua.NodeId(ua.ObjectIds.SystemStatusChangeEventType) self.add_property('SystemState', None, ua.NodeId(ua.ObjectIds.ServerState))