Skip to content
Snippets Groups Projects
Commit 5937270b authored by Susanna Weber's avatar Susanna Weber
Browse files

Stream added and robots init + events finished

parent 1055ec21
Branches
No related tags found
No related merge requests found
import logging
import asyncio
import numpy
from asyncua import ua, Server
from asyncua.common.methods import uamethod
......@@ -86,7 +87,7 @@ async def main():
#tcp als variable mit properties
vartype = await server.nodes.base_data_type.add_data_type(idx, "Measurement")
paratype = await server.nodes.base_data_type.add_data_type(idx, "Parameter")
#tcpvar = await myobj.add_variable(idx, "TCP VAR" , [0,0,0] , datatype = vartype.nodeid)
#tcpvar = await .add_variable(idx, "TCP VAR" , [0,0,0] , datatype = vartype.nodeid)
#variable mit entsprechenden properties
#measurements evtl varianttype vom variabletype und datatype measurement
......@@ -131,41 +132,66 @@ async def main():
await openvar.set_modelling_rule(True)
grip_desc = await openvar.add_property(idx, "Description", "Flag to specify if something is open.")
await grip_desc.set_modelling_rule(True)
robot = await server.nodes.objects.add_object(idx, "Robot", myobjtype)
myobj = await server.nodes.objects.add_object(idx, "Robot", myobjtype)
mobilerobot = await server.nodes.objects.add_object(idx, "MobileRobot", myobjtype)
#getting node ids of battery and position
robotposname = "2:" + positionobject.name
positionrobot = await myobj.get_child([robotposname])
positionrobot = await mobilerobot.get_child([robotposname])
batteryvarname = "2:" + batteryobject.name
batterymeas = await myobj.get_child([batteryvarname])
batterymeas = await mobilerobot.get_child([batteryvarname])
tcpvarname = "2:" + tcpobject.name
tcpvarmeas = await mobilerobot.get_child([tcpvarname])
#adding function goTo to robot
goTofunc = await myobj.add_method(idx, "goToset", goTo, [vartype, positionrobot])
goTofunc = await mobilerobot.add_method(idx, "goToset", goTo, [vartype, positionrobot])
#batterylow warning event
batterywarning = await server.create_custom_event_type(idx, "BatteryLowWarning", ua.ObjectIds.SystemEventType)
batterywarninggen = await server.get_event_generator(batterywarning, myobj)
batterywarninggen = await server.get_event_generator(batterywarning, )
#batterylow error event
batteryerror = await server.create_custom_event_type(idx, "BatteryLowError", ua.ObjectIds.SystemEventType)
batteryerrorgen = await server.get_event_generator(batteryerror, myobj)
batteryerrorgen = await server.get_event_generator(batteryerror, mobilerobot)
batterywarninggen.event.Severity = 800
batteryerrorgen.event.Severity = 1000
#streamevents
tcpstream = await server.create_custom_event_type(idx, "Streaming", ua.ObjectIds.BaseEventType, [("tcpstream", ua.VariantType.Float)])
tcpstreamgenrob = await server.get_event_generator(tcpstream, robot)
tcpstreamgenrob.tcpstream = await tcpvarmeas.get_value()
tcpstreamgenmobrob = await server.get_event_generator(tcpstream, mobilerobot)
tcpstreamgenmobrob.tcpstream = await tcpvarmeas.get_value()
#server
async with server:
print("Server läuft!")
time = 0
while True:
#checking triggering both events
tcppos = await tcpvarmeas.get_value()
if time % 10 == 0:
await tcpstreamgenrob.trigger(message = "Robot updatet value [" + str(tcppos[0]) + "," + str(tcppos[1]) + "," + str(tcppos[2]) + "]")
await tcpstreamgenmobrob.trigger(
message="MobileRobot updatet value [" + str(tcppos[0]) + "," + str(tcppos[1]) + "," + str(tcppos[2]) + "]")
batteryload = await batterymeas.get_value()
batterywarninggen.event.Severity = 800
batteryerrorgen.event.Severity = 1000
#await batterymeas.set_value(19)
if 20 > batteryload >= 10:
await batterywarning.trigger("Battery level is below 20%. Load shortly.")
await batterywarninggen.trigger(message = "Battery level is below 20%. Load shortly.")
if batteryload < 10:
await batteryerror.trigger("Battery level is below 10%. Please load the battery immediately.")
await batteryerrorgen.trigger(message = "Battery level is below 10%. Please load the battery immediately.")
await asyncio.sleep(1)
time += 1
batterysave = batteryload - 1
await batterymeas.set_value(batterysave)
tcppossave = tcppos[0] + 1
await tcpvarmeas.set_value([tcppossave, 0.0, 0.0])
if __name__ == '__main__':
asyncio.run(main())
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment