server-events.py
Go to the documentation of this file.
1 import sys
2 import logging
3 
4 try:
5  from IPython import embed
6 except ImportError:
7  import code
8 
9  def embed():
10  vars = globals()
11  vars.update(locals())
12  shell = code.InteractiveConsole(vars)
13  shell.interact()
14 
15 from opcua import ua, Server
16 
17 
18 if __name__ == "__main__":
19  logging.basicConfig(level=logging.WARN)
20  logger = logging.getLogger("opcua.server.internal_subscription")
21  logger.setLevel(logging.DEBUG)
22 
23  # setup our server
24  server = Server()
25  server.set_endpoint("opc.tcp://0.0.0.0:4840/freeopcua/server/")
26 
27  # setup our own namespace, not really necessary but should as spec
28  uri = "http://examples.freeopcua.github.io"
29  idx = server.register_namespace(uri)
30 
31  # get Objects node, this is where we should put our custom stuff
32  objects = server.get_objects_node()
33 
34  # populating our address space
35  myobj = objects.add_object(idx, "MyObject")
36 
37  # Creating a custom event: Approach 1
38  # The custom event object automatically will have members from its parent (BaseEventType)
39  etype = server.create_custom_event_type(2, 'MyFirstEvent', ua.ObjectIds.BaseEventType, [('MyNumericProperty', ua.VariantType.Float), ('MyStringProperty', ua.VariantType.String)])
40 
41  myevgen = server.get_event_generator(etype, myobj)
42 
43  # Creating a custom event: Approach 2
44  custom_etype = server.nodes.base_event_type.add_object_type(2, 'MySecondEvent')
45  custom_etype.add_property(2, 'MyIntProperty', ua.Variant(None, ua.VariantType.Int32))
46  custom_etype.add_property(2, 'MyBoolProperty', ua.Variant(None, ua.VariantType.Boolean))
47 
48  mysecondevgen = server.get_event_generator(custom_etype, myobj)
49 
50  # starting!
51  server.start()
52 
53  try:
54  # time.sleep is here just because we want to see events in UaExpert
55  import time
56  count = 0
57  while True:
58  time.sleep(5)
59  myevgen.event.Message = "MyFirstEvent " + str(count)
60  myevgen.event.Severity = count
61  myevgen.event.MyNumericProperty = count
62  myevgen.event.MyStringProperty = "Property " + str(count)
63  myevgen.trigger()
64  mysecondevgen.trigger(message="MySecondEvent " + str(count))
65  count += 1
66 
67  embed()
68  finally:
69  #close connection, remove subcsriptions, etc
70  server.stop()


ros_opcua_impl_python_opcua
Author(s): Denis Štogl , Daniel Draper
autogenerated on Tue Jan 19 2021 03:12:44