server-callback.py
Go to the documentation of this file.
00001 import sys
00002 sys.path.insert(0, "..")
00003 import logging
00004 from datetime import datetime
00005 
00006 try:
00007     from IPython import embed
00008 except ImportError:
00009     import code
00010 
00011     def embed():
00012         vars = globals()
00013         vars.update(locals())
00014         shell = code.InteractiveConsole(vars)
00015         shell.interact()
00016 
00017 
00018 from opcua import ua, uamethod, Server
00019 from opcua.common.callback import CallbackType
00020 
00021 
00022 
00023 def create_monitored_items(event, dispatcher):
00024     print("Monitored Item")     
00025 
00026     for idx in range(len(event.response_params)) :
00027         if (event.response_params[idx].StatusCode.is_good()) :
00028             nodeId = event.request_params.ItemsToCreate[idx].ItemToMonitor.NodeId
00029             print("Node {0} was created".format(nodeId))     
00030          
00031     
00032 def modify_monitored_items(event, dispatcher):
00033     print('modify_monitored_items')
00034 
00035 
00036 def delete_monitored_items(event, dispatcher):
00037     print('delete_monitored_items')
00038 
00039 
00040 if __name__ == "__main__":
00041     # optional: setup logging
00042     logging.basicConfig(level=logging.WARN)
00043     #logger = logging.getLogger("opcua.address_space")
00044     # logger.setLevel(logging.DEBUG)
00045     #logger = logging.getLogger("opcua.internal_server")
00046     # logger.setLevel(logging.DEBUG)
00047     #logger = logging.getLogger("opcua.binary_server_asyncio")
00048     # logger.setLevel(logging.DEBUG)
00049     #logger = logging.getLogger("opcua.uaprocessor")
00050     # logger.setLevel(logging.DEBUG)
00051     logger = logging.getLogger("opcua.subscription_service")
00052     logger.setLevel(logging.DEBUG)
00053 
00054     # now setup our server
00055     server = Server()
00056     #server.disable_clock()
00057     #server.set_endpoint("opc.tcp://localhost:4840/freeopcua/server/")
00058     server.set_endpoint("opc.tcp://0.0.0.0:4840/freeopcua/server/")
00059     server.set_server_name("FreeOpcUa Example Server")
00060 
00061     # setup our own namespace
00062     uri = "http://examples.freeopcua.github.io"
00063     idx = server.register_namespace(uri)
00064 
00065     # get Objects node, this is where we should put our custom stuff
00066     objects = server.get_objects_node()
00067 
00068     # populating our address space
00069     myfolder = objects.add_folder(idx, "myEmptyFolder")
00070     myobj = objects.add_object(idx, "MyObject")
00071     myvar = myobj.add_variable(idx, "MyVariable", 6.7)
00072     myvar.set_writable()    # Set MyVariable to be writable by clients
00073    
00074 
00075     # starting!
00076     server.start()
00077     
00078     # Create Callback for item event 
00079     server.subscribe_server_callback(CallbackType.ItemSubscriptionCreated, create_monitored_items)
00080     server.subscribe_server_callback(CallbackType.ItemSubscriptionModified, modify_monitored_items)
00081     server.subscribe_server_callback(CallbackType.ItemSubscriptionDeleted, delete_monitored_items)
00082     
00083     
00084     print("Available loggers are: ", logging.Logger.manager.loggerDict.keys())
00085     try:
00086         # enable following if you want to subscribe to nodes on server side
00087         embed()
00088     finally:
00089         server.stop()


ros_opcua_impl_python_opcua
Author(s): Denis Štogl , Daniel Draper
autogenerated on Sat Jun 8 2019 18:26:23