Example #1
0
    def setUpClass(cls):
        # start our own server
        cls.srv_crypto = Server()
        cls.uri_crypto = 'opc.tcp://127.0.0.1:{0:d}'.format(port_num1)
        cls.srv_crypto.set_endpoint(cls.uri_crypto)
        # load server certificate and private key. This enables endpoints
        # with signing and encryption.
        cls.srv_crypto.load_certificate("../examples/certificate-example.der")
        cls.srv_crypto.load_private_key("../examples/private-key-example.pem")
        cls.srv_crypto.start()

        # start a server without crypto
        cls.srv_no_crypto = Server()
        cls.uri_no_crypto = 'opc.tcp://127.0.0.1:{0:d}'.format(port_num2)
        cls.srv_no_crypto.set_endpoint(cls.uri_no_crypto)
        cls.srv_no_crypto.start()

        # start server with long key
        cls.srv_crypto2 = Server()
        cls.uri_crypto2 = 'opc.tcp://127.0.0.1:{0:d}'.format(port_num3)
        cls.srv_crypto2.set_endpoint(cls.uri_crypto2)
        cls.srv_crypto2.load_certificate("../examples/certificate-3072-example.der")
        cls.srv_crypto2.load_private_key("../examples/private-key-3072-example.pem")
        cls.srv_crypto2.start()

        cls.srv_crypto_no_anoymous = Server()
        cls.uri_crypto_no_anoymous = 'opc.tcp://127.0.0.1:{0:d}'.format(port_num4)
        cls.srv_crypto_no_anoymous.set_endpoint(cls.uri_crypto_no_anoymous)
        cls.srv_crypto_no_anoymous.load_certificate("examples/certificate-3072-example.der")
        cls.srv_crypto_no_anoymous.load_private_key("examples/private-key-3072-example.pem")
        cls.srv_crypto_no_anoymous.set_security_IDs(["Username", "Basic256Sha256"])
        cls.srv_crypto_no_anoymous.start()
 def setUpClass(self):
     self.srv = Server()
     self.srv.set_endpoint('opc.tcp://localhost:%d' % port_num)
     add_server_methods(self.srv)
     self.srv.start()
     self.opc = self.srv
     self.discovery = Server()
     self.discovery.set_application_uri("urn:freeopcua:python:discovery")
     self.discovery.set_endpoint('opc.tcp://localhost:%d' % port_discovery)
     self.discovery.start()
Example #3
0
 def setUpClass(cls):
     cls.srv = Server()
     cls.srv.set_endpoint('opc.tcp://127.0.0.1:{0:d}'.format(port_num))
     add_server_methods(cls.srv)
     cls.srv.start()
     cls.opc = cls.srv
     cls.discovery = Server()
     cls.discovery.set_application_uri("urn:freeopcua:python:discovery")
     cls.discovery.set_endpoint('opc.tcp://127.0.0.1:{0:d}'.format(port_discovery))
     cls.discovery.start()
Example #4
0
    def test_port_in_use(self):

        server1 = Server()
        server1.set_endpoint('opc.tcp://localhost:{0:d}'.format(port_num + 1))
        server1.start()

        server2 = Server()
        server2.set_endpoint('opc.tcp://localhost:{0:d}'.format(port_num + 1))
        try:
            server2.start()
        except Exception:
            pass

        server1.stop()
        server2.stop()
Example #5
0
def createOPCUA():
    global server
    server = Server()

    url = "opc.tcp://10.148.6.70:4840"
    server.set_endpoint(url)

    name = "MOTOR_SIMULATION"
    addspace = server.register_namespace(name)

    node = server.get_objects_node()

    Param = node.add_object(addspace, "Parameters")

    Temp = Param.add_variable(addspace, "Temperature", 0)
    Vibr = Param.add_variable(addspace, "Vibration", 0)
    Curr = Param.add_variable(addspace, "Current", 0)
    Rpm = Param.add_variable(addspace, "Rate Per Minute", 0)

    Temp.set_writable()
    Vibr.set_writable()
    Curr.set_writable()
    Rpm.set_writable()

    server.start()
    print("Server started at {}".format(url))
    return [Temp, Vibr, Curr, Rpm]
    def start_server_and_client(cls):
        cls.srv = Server()
        cls.srv.set_endpoint('opc.tcp://localhost:%d' % port_num1)
        cls.srv.start()

        cls.clt = Client('opc.tcp://localhost:%d' % port_num1)
        cls.clt.connect()
Example #7
0
    def __init__(self, logger):

        self.isinit = False

        self.logger = logger

        # setup our server
        self.server = Server()
        self.server.set_endpoint('opc.tcp://localhost:4840/')
        self.server.allow_remote_admin(True)

        # setup our own namespace, not really necessary but should as spec
        uri = "http://yourorganisation.org/DCSControllerDesign/"
        self.idx = self.server.register_namespace(uri)

        # get Objects node, this is where we should put our nodes
        self.objects = self.server.get_objects_node()

        # populating our address space; in most real use cases this should be
        # imported from UA spec XML.
        self.logger.notice('Import UA spec from xml ...')
        self.server.import_xml('dcscontrollerdesign.xml')
        self.dctni = ua.NodeId.from_string(f'ns={self.idx};i=1003')
        self.logger.info(f'{self.dctni}')
        self.logger.success('Done')
    def __init__(self):
        self.server = None
        self.uri = ""
        self.idx = 0
        self.scan_thread = None
        self.scan_enable = False
        self.devices = []

        # setup our server
        self.server = Server()
        self.server.set_endpoint("opc.tcp://0.0.0.0:4840/freeopcua/server/")

        # setup our own namespace, not really necessary but should as spec
        uri = "http://examples.freeopcua.github.io"
        idx = self.server.register_namespace(uri)

        # import address space which has a device object
        self.server.import_xml("device.xml")

        # get Objects node
        objects = self.server.get_objects_node()

        # get the device object type so we can find all the devices in the address space
        hw_type = self.server.nodes.base_object_type.get_child("2:Device")
        device_nodes = find_o_types(objects, hw_type)

        # instantiate a device python object and make it an attribute of the server class
        # FIXME do your own organization, most likely an object oriented model
        for device_node in device_nodes:
            device = Device(self.server, device_node)
            setattr(self, device.b_name, device)
            # keep track of the device because so that we can update it cyclically using the driver
            self.devices.append(device)
Example #9
0
    def __init__(self, endpoint, name):
        # Logging configuration
        self.logger = logging.getLogger('MyDeviceServer')
        self.logger.setLevel(logging.INFO)

        # Setup server
        self.server = Server()
        self.server.import_xml("MyDevice.xml")
        self.server.set_endpoint(endpoint)
        self.server.set_server_name(name)

        self.objects_node = self.server.get_objects_node()
        self.my_device_node = self.objects_node.get_child("0:MyDevice")
        self.my_device_toggle_b = self.my_device_node.get_child("0:ToggleB")
        self.my_device_toggle_c = self.my_device_node.get_child("0:ToggleC")
        self.my_device_toggle_d = self.my_device_node.get_child("0:ToggleD")

        self.server.link_method(self.my_device_toggle_b, self.toggle_b)
        self.server.link_method(self.my_device_toggle_c, self.toggle_c)
        self.server.link_method(self.my_device_toggle_d, self.toggle_d)

        self.my_variable_a = self.my_device_node.get_child("0:VariableA")
        self.my_variable_b = self.my_device_node.get_child("0:VariableB")
        self.my_variable_c = self.my_device_node.get_child("0:VariableC")
        self.my_variable_d = self.my_device_node.get_child("0:VariableD")
        self.my_variable_e = self.my_device_node.get_child("0:VariableE")
Example #10
0
 def __init__(self, port=Opcx.DEFAULT_PORT, name='OpcxServer'):
     from opcua import Server
     server = Server()
     server.set_server_name(name)
     server.set_endpoint("opc.tcp://0.0.0.0:%d/freeopcua/server/" % port)
     self.objix = server.register_namespace(Opcx.DEFAULT_URI)
     self.server = server
Example #11
0
def start_server(url):
    server = Server()
    server.set_endpoint(url)
    name = "OPC UA Simulation Server"
    addspace = server.register_namespace(name)

    node = server.get_objects_node()

    lvl = node.add_object(addspace, "Level Sensors")
    lvl1 = lvl.add_variable(addspace, "LVL1", 5)
    lvl2 = lvl.add_variable(addspace, "LVL2", 6)
    lvl3 = lvl.add_variable(addspace, "LVL3", 7)
    lvl4 = lvl.add_variable(addspace, "LVL4", 8)
    lvl5 = lvl.add_variable(addspace, "LVL5", 9)
    lvl6 = lvl.add_variable(addspace, "LVL6", 10)

    flow = node.add_object(addspace, "Flow Sensors")
    flow1 = flow.add_variable(addspace, "FLOW1", 1)
    flow2 = flow.add_variable(addspace, "FLOW2", 2)
    flow3 = flow.add_variable(addspace, "FLOW3", 3)
    flow4 = flow.add_variable(addspace, "FLOW4", 4)

    pump = node.add_object(addspace, "Pump Actuators")
    pump1 = pump.add_variable(addspace, "PUMP1", 0.1)
    pump2 = pump.add_variable(addspace, "PUMP2", 0.2)
    pump3 = pump.add_variable(addspace, "PUMP3", 0.3)
    pump4 = pump.add_variable(addspace, "PUMP4", 0.4)
    pump5 = pump.add_variable(addspace, "PUMP5", 0.5)
    pump6 = pump.add_variable(addspace, "PUMP6", 0.6)

    server.start()
    return server
Example #12
0
    def __init__(self):

        server = Server()
        server.set_endpoint("opc.tcp://0.0.0.0:4840/freeopcua/server/")

        # setup our own namespace, not really necessary but should as spec
        uri = "http://examples.freeopcua.github.io"
        idx = server.register_namespace(uri)

        # get Objects node, this is where we should put our nodes
        objects = server.get_objects_node()

        # populating our address space
        myobj = objects.add_object(idx, "MyObject")
        myvar1 = myobj.add_variable(idx, "MyVariable1", 1)
        myvar2 = myobj.add_variable(idx, "MyVariable2", 2)
        myvar3 = myobj.add_variable(idx, "MyVariable3", 3)
        myvar4 = myobj.add_variable(idx, "MyVariable4", 4)
        myvar5 = myobj.add_variable(idx, "MyVariable5", 5)

        myvar1.set_writable()  # Set MyVariable to be writable by clients
        myvar2.set_writable()  # Set MyVariable to be writable by clients
        myvar3.set_writable()  # Set MyVariable to be writable by clients
        myvar4.set_writable()  # Set MyVariable to be writable by clients
        myvar5.set_writable()  # Set MyVariable to be writable by clients

        self.server = server
Example #13
0
    def __init__(
        self,
        endpoint: str = "opc.tcp://0.0.0.0:4840/intry4.0/server/",
        server_name: str = "InTry 4.0 - OPC UA Server",
        security_policy: List[ua.SecurityPolicyType] = None,
        ns_uri: str = "urn:intry:opcua:server",
        object_name: str = "variables",
        last_row_file: str = "/var/intry-opcua-server/last_row.log",
        certificate: str = "/var/intry-opcua-server/cert.der",
        private_key: str = "/var/intry-opcua-server/key.pem",
        min_time: int = 30,
        logger=None,
    ):
        if security_policy is None:
            _security_policy = [
                ua.SecurityPolicyType.NoSecurity,
                ua.SecurityPolicyType.Basic256Sha256_Sign,
                ua.SecurityPolicyType.Basic256Sha256_SignAndEncrypt,
            ]

        self._server = Server()
        self.endpoint = endpoint
        self._server.set_endpoint(self.endpoint)
        self._server.set_security_policy(_security_policy)
        self._server.load_certificate(certificate)
        self._server.load_private_key(private_key)
        self._ns_index = self._server.register_namespace(ns_uri)
        self._object = self._server.nodes.objects.add_object(
            self._ns_index, object_name
        )
        self._last_row_file = last_row_file
        self._logger = logger or logging.getLogger(__name__)
        self.last_row = {}
        self._stop = False
        self.min_time = min_time
Example #14
0
def main():
    # setup our server
    server = Server()
    server.set_endpoint("opc.tcp://0.0.0.0:4840/freeopcua/server/")

    # setup our own namespace, not really necessary but should as spec
    server_namespace = "http://examples.freeopcua.github.io"
    address_space = server.register_namespace(server_namespace)

    # get Objects node, this is where we should put our custom stuff
    objects_node = server.get_objects_node()

    # Add the ocp objects (vars, features,...)
    # cresting the first object
    my_first_object = objects_node.add_object(address_space, "MyFirstObject")

    ##creating an array
    my_array = ChargeControllerObject.add_variable(address_space, "MyArray",
                                                   [6.7, 7.9])
    # the variable could be hard typed
    my_hardtyped_array = ChargeControllerObject.add_variable(
        address_space, "MyHardtypedArray", ua.Variant([],
                                                      ua.VariantType.Float))

    # starting!
    server.start()
    print("Server starting ...")

    while True:
        time.sleep(1)

        ## update array variables
        burst = [random.random() for _ in range(1024)]
        my_array.set_value(burst)
        my_hardtyped_array.set_value(burst)
Example #15
0
def run_opcua_server():
    """
    Creates the OPC/UA server and starts it.
    """

    # setup our server
    server = Server()
    server.set_endpoint("opc.tcp://localhost:26543/example/server")

    # setup our own namespace, not really necessary but should as spec
    uri = "https://github.com/nathanagood/aws-greengrass-samples"
    idx = server.register_namespace(uri)

    # get Objects node, this is where we should put our nodes
    objects = server.get_objects_node()

    # populating our address space
    myobj = objects.add_object(idx, "MyObject")
    myvar = myobj.add_variable(idx, "MyVariable", 6.7)
    myvar.set_writable()  # Set MyVariable to be writable by clients

    # starting!
    server.start()

    try:
        count = 0
        while True:
            time.sleep(5)
            count += 1
            logger.debug('Setting value: %s', count)
            myvar.set_value(count)
    finally:
        #close connection, remove subcsriptions, etc
        server.stop()
Example #16
0
async def task(loop):
    # setup our server
    server = Server()
    await server.init()
    server.set_endpoint('opc.tcp://0.0.0.0:4840/freeopcua/server/')  #4840
    # setup our own namespace, not really necessary but should as spec
    uri = 'http://examples.freeopcua.github.io'
    idx = await server.register_namespace(uri)
    # get Objects node, this is where we should put our nodes
    objects = server.get_objects_node()

    await objects.add_method(ua.NodeId("ServerMethod", 2),
                             ua.QualifiedName('ServerMethod', 2), func,
                             [ua.VariantType.Int64], [ua.VariantType.Int64])

    # populating our address space
    myobj = await objects.add_object(idx, 'MyObject')
    myvar = await myobj.add_variable(idx, 'MyVariable', 6.7)
    await myvar.set_writable()  # Set MyVariable to be writable by clients

    # starting!
    async with server:
        count = 0
        while True:
            await asyncio.sleep(1)
            count += 0.1
            await myvar.set_value(count)
Example #17
0
    def __init__(self, endpoint, name, model_filepath):
        self.server = Server()

        #  This need to be imported at the start or else it will overwrite the data
        self.server.import_xml(model_filepath)

        self.server.set_endpoint(endpoint)
        self.server.set_server_name(name)

        objects = self.server.get_objects_node()

        freeopcua_namespace = self.server.get_namespace_index(
            "urn:freeopcua:python:server")
        hellower = objects.get_child("0:Hellower")
        hellower_say_hello = hellower.get_child("0:SayHello")
        hellower_exe_calculate = hellower.get_child("0:Calculator")

        self.server.link_method(hellower_say_hello, say_hello_xml)

        self.server.link_method(hellower_exe_calculate, exe_calculator)

        hellower.add_method(freeopcua_namespace, "SayHello2", say_hello,
                            [ua.VariantType.Boolean], [ua.VariantType.String])

        hellower.add_method(freeopcua_namespace, "SayHelloArray",
                            say_hello_array, [ua.VariantType.Boolean],
                            [ua.VariantType.String])
 def check_or_create_server(self):
     if not hasattr(self, "test_server"):
         self.test_server = Server()
         self.__server_thread = Thread(target=self.__server_run,
                                       name="Test OPC UA server",
                                       args=(self.test_server, ))
     self.assertTrue(self.test_server is not None)
Example #19
0
    def setUpClass(self):
        # start our own server
        self.srv_crypto = Server()
        self.uri_crypto = 'opc.tcp://localhost:%d' % port_num1
        self.srv_crypto.set_endpoint(self.uri_crypto)
        # load server certificate and private key. This enables endpoints
        # with signing and encryption.
        self.srv_crypto.load_certificate("examples/certificate-example.der")
        self.srv_crypto.load_private_key("examples/private-key-example.pem")
        self.srv_crypto.start()

        # start a server without crypto
        self.srv_no_crypto = Server()
        self.uri_no_crypto = 'opc.tcp://localhost:%d' % port_num2
        self.srv_no_crypto.set_endpoint(self.uri_no_crypto)
        self.srv_no_crypto.start()
    def setUpClass(cls):
        # start our own server
        cls.srv_crypto = Server()
        cls.uri_crypto = 'opc.tcp://127.0.0.1:{0:d}'.format(port_num1)
        cls.srv_crypto.set_endpoint(cls.uri_crypto)
        # load server certificate and private key. This enables endpoints
        # with signing and encryption.
        cls.srv_crypto.load_certificate("examples/certificate-example.der")
        cls.srv_crypto.load_private_key("examples/private-key-example.pem")
        cls.srv_crypto.start()

        # start a server without crypto
        cls.srv_no_crypto = Server()
        cls.uri_no_crypto = 'opc.tcp://127.0.0.1:{0:d}'.format(port_num2)
        cls.srv_no_crypto.set_endpoint(cls.uri_no_crypto)
        cls.srv_no_crypto.start()
Example #21
0
    def start_server_and_client(cls):
        cls.srv = Server()
        cls.srv.set_endpoint('opc.tcp://127.0.0.1:{0:d}'.format(port_num1))
        cls.srv.start()

        cls.clt = Client('opc.tcp://127.0.0.1:{0:d}'.format(port_num1))
        cls.clt.connect()
Example #22
0
 def setUp(self):
     self.server = Server()
     url = "opc.tcp://localhost:48400/freeopcua/server/"
     self.server.set_endpoint(url)
     self.server.start()
     self.client = Window()
     self.client.ui.addrComboBox.setCurrentText(url)
     self.client.connect()
 def __init__(self,
              eflex_type=EFLEXAgentType.CONSUMER,
              port=4840,
              name="EFLEX Agent"):
     self.eflex_type = eflex_type
     self.name = name
     self.port = port
     self.server = Server()
     self.configure_server(self.server)
    def __init__(self):
        self.server = Server()

        # setup our server
        self.server.set_endpoint(os.environ.get("SERVER_ENDPOINT"))

        # setup our own namespace, not really necessary but should as spec
        uri = os.environ.get("NAMESPACE")
        self.idx = self.server.register_namespace(uri)
Example #25
0
def generate_server():
    """
    GERANDO SERVIDOR - NOME, URL E IP
    """
    server = Server()
    server.set_endpoint(URL)
    addspace = server.register_namespace(SERVER_NAME)

    return server, addspace
Example #26
0
def server_opc():
    server = Server()
    server.set_endpoint("opc.tcp://0.0.0.0:4840/vm_opc")

    server.set_server_name("Servidor notificaciones vm")
    # setup our own namespace, not really necessary but should as spec
    uri = "notif VM"

    idx = server.register_namespace(uri)
    # get Objects node, this is where we should put our nodes
    objects = server.get_objects_node()

    # populating our address space
    myobj = objects.add_object(idx, "notif_vm")

    event_id = myobj.add_variable(idx, "ID evento", float(0))
    #    new_st.set_writable()

    tss = myobj.add_variable(idx, "Timestamp", datetime.datetime.now())
    #    new_st.set_writable()

    progresiva = myobj.add_variable(idx, "Progresiva", float(-1))

    estado_alarma = myobj.add_variable(idx, "Estado alarma", 'inicio')

    criticidad = myobj.add_variable(idx, "Criticidad", float(-1))

    ack_bit = myobj.add_variable(idx, "ACK bit", False)
    ack_bit.set_writable()

    alarma_activa = myobj.add_variable(idx, "Alarma presente", False)
    # starting!
    tags = {
        'id': event_id,
        'tss': tss,
        'prog': progresiva,
        'st': estado_alarma,
        'crit': criticidad,
        'ack': ack_bit,
        'active': alarma_activa
    }
    server.start()
    try:
        while True:
            if np.random.uniform() >= 0.5:
                tags['id'].set_value(float(np.random.randint(500)))
                tags['tss'].set_value(datetime.datetime.now())
                tags['st'].set_value(choice(['inicio', 'cambio', 'fin']))

            else:
                print 'Bit ACK: ', tags['ack'].get_value(
                ), datetime.datetime.now()
                time.sleep(3)
    finally:
        #close connection, remove subcsriptions, etc
        server.stop()
Example #27
0
 def setUpClass(self):
     self.srv = Server()
     self.srv_url = 'opc.tcp://localhost:%d' % port_num
     self.srv.set_endpoint(self.srv_url)
     objects = self.srv.get_objects_node()
     obj = objects.add_object(4, "directory")
     var = obj.add_variable(4, "variable", 1.999)
     var2 = obj.add_variable(4, "variable2", 1.777)
     var2.set_writable()
     self.srv.start()
Example #28
0
    def __init__(self):
        self.server = Server()

        self.server.set_endpoint('opc.tcp://0.0.0.0:51210/UA/SampleServer')
        self.server.set_server_name('Custom structure demo server')
        # idx name will be used later for creating the xml used in data type dictionary
        self._idx_name = 'http://examples.freeopcua.github.io'
        self.idx = self.server.register_namespace(self._idx_name)

        self.dict_builder = DataTypeDictionaryBuilder(self.server, self.idx, self._idx_name, 'MyDictionary')
Example #29
0
    def runTest(self):
        tmpfile = NamedTemporaryFile()
        path = tmpfile.name
        tmpfile.close()

        #create cache file
        server = Server(cacheFile = path)

        #modify cache content
        id = ua.NodeId(ua.ObjectIds.Server_ServerStatus_SecondsTillShutdown)
        s = shelve.open(path, "w", writeback = True)
        s[id.to_string()].attributes[ua.AttributeIds.Value].value = ua.DataValue(123)
        s.close()

        #ensure that we are actually loading from the cache
        server = Server(cacheFile = path)
        self.assertEqual(server.get_node(id).get_value(), 123)

        os.remove(path)
 def setUpClass(cls):
     cls.srv = Server()
     cls.srv_url = 'opc.tcp://127.0.0.1:{0:d}'.format(port_num)
     cls.srv.set_endpoint(cls.srv_url)
     objects = cls.srv.get_objects_node()
     obj = objects.add_object(4, "directory")
     var = obj.add_variable(4, "variable", 1.999)
     var2 = obj.add_variable(4, "variable2", 1.777)
     var2.set_writable()
     cls.srv.start()