예제 #1
0
 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)
예제 #2
0
 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)
예제 #3
0
 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)
예제 #4
0
 def __init__(self, sourcenode=None, message=None, severity=1):
     super(SystemEvent, self).__init__(sourcenode, message, severity)
     self.EventType = ua.NodeId(ua.ObjectIds.SystemEventType)
예제 #5
0
 def __init__(self, sourcenode=None, message=None, severity=1):
     super(BaseModelChangeEvent, self).__init__(sourcenode, message,
                                                severity)
     self.EventType = ua.NodeId(ua.ObjectIds.BaseModelChangeEventType)
예제 #6
0
 def __init__(self, sourcenode=None, message=None, severity=1):
     super(AuditCertificateMismatchEvent,
           self).__init__(sourcenode, message, severity)
     self.EventType = ua.NodeId(
         ua.ObjectIds.AuditCertificateMismatchEventType)
예제 #7
0
 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))
예제 #8
0
 def __init__(self, sourcenode=None, message=None, severity=1):
     super(KeyCredentialDeletedAuditEvent,
           self).__init__(sourcenode, message, severity)
     self.EventType = ua.NodeId(
         ua.ObjectIds.KeyCredentialDeletedAuditEventType)
예제 #9
0
 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)
예제 #10
0
 def __init__(self, sourcenode=None, message=None, severity=1):
     super(RoleMappingRuleChangedAuditEvent,
           self).__init__(sourcenode, message, severity)
     self.EventType = ua.NodeId(
         ua.ObjectIds.RoleMappingRuleChangedAuditEventType)
예제 #11
0
 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)
예제 #12
0
 def __init__(self, sourcenode=None, message=None, severity=1):
     super(AuditConditionOutOfServiceEvent,
           self).__init__(sourcenode, message, severity)
     self.EventType = ua.NodeId(
         ua.ObjectIds.AuditConditionOutOfServiceEventType)
예제 #13
0
 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)
예제 #14
0
 def __init__(self, sourcenode=None, message=None, severity=1):
     super(TrustListUpdatedAuditEvent,
           self).__init__(sourcenode, message, severity)
     self.EventType = ua.NodeId(ua.ObjectIds.TrustListUpdatedAuditEventType)
예제 #15
0
 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)
예제 #16
0
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
예제 #17
0
 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)
예제 #18
0
 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)
예제 #19
0
 def __init__(self, sourcenode=None, message=None, severity=1):
     super(AuditNodeManagementEvent, self).__init__(sourcenode, message,
                                                    severity)
     self.EventType = ua.NodeId(ua.ObjectIds.AuditNodeManagementEventType)
예제 #20
0
 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)
예제 #21
0
 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))
예제 #22
0
 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)
예제 #23
0
 def __init__(self, sourcenode=None, message=None, severity=1):
     super(DeviceFailureEvent, self).__init__(sourcenode, message, severity)
     self.EventType = ua.NodeId(ua.ObjectIds.DeviceFailureEventType)
예제 #24
0
 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))
예제 #25
0
 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))
예제 #26
0
 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)
예제 #27
0
 def __init__(self, sourcenode=None, message=None, severity=1):
     super(ProgramTransitionEvent, self).__init__(sourcenode, message,
                                                  severity)
     self.EventType = ua.NodeId(ua.ObjectIds.ProgramTransitionEventType)
예제 #28
0
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
예제 #29
0
 def __init__(self, sourcenode=None, message=None, severity=1):
     super(RefreshRequiredEvent, self).__init__(sourcenode, message,
                                                severity)
     self.EventType = ua.NodeId(ua.ObjectIds.RefreshRequiredEventType)
예제 #30
0
 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))