diff --git a/robot.py b/robot.py index dbdec7adb1c5f99f9abe53b6e9188f9d6d76039b..24c6863ea2c6f165d18bf7dd1eea3a12fdb10c06 100644 --- a/robot.py +++ b/robot.py @@ -1,6 +1,7 @@ import logging import asyncio import numpy +import jsonparse from asyncua import ua, Server from asyncua.common.methods import uamethod @@ -10,6 +11,11 @@ from asyncua.common import node logging.basicConfig(level=logging.INFO) _logger = logging.getLogger('asyncua') +def getobj(name): + for i in jsonparse.measurementobj: + if i.name == name: + return i + class Measurement: def __init__(self, name, description, datatype, dimension, rangevar=None, unit=None): @@ -71,10 +77,18 @@ async def main(): rangeid = await server.nodes.base_data_type.get_child(["0:Structure" , "0:Range"]) #measurementobjekte für dynamischer - tcpobject = Measurement("Tool Center Point", "Tool center point of a six-arm robot.", float, 3 , (-0.5, 0.5), "metre") - positionobject = Measurement("Position", "Position in Cartesian coordinates given in metre.", float, 3, (-50, 50) , "metre") - batteryobject = Measurement("Battery level", "Battery level", int , 0 ,(0, 100), "percent") - measureobjectlist = [tcpobject , positionobject, batteryobject] + # tcpobject = Measurement("Tool Center Point", "Tool center point of a six-arm robot.", float, 3 , (-0.5, 0.5), "metre") + # positionobject = Measurement("Position", "Position in Cartesian coordinates given in metre.", float, 3, (-50, 50) , "metre") + # batteryobject = Measurement("Battery level", "Battery level", int , 0 ,(0, 100), "percent") + # measureobjectlist = [tcpobject , positionobject, batteryobject] + + tcpobject = getobj( + "Tool Center Point") # Measurement("Tool Center Point", "Tool center point of a six-arm robot.", float, 3 , (-0.5, 0.5), "metre") + positionobject = getobj( + "Position") # Measurement("Position", "Position in Cartesian coordinates given in metre.", float, 3, (-50, 50) , "metre") + batteryobject = getobj( + "Battery level") # Measurement("Battery level", "Battery level", int , 0 ,(0, 100), "percent") + measureobjectlist = jsonparse.measurementobj #parameterobjekte openobject = Parameter("Open", "Flag to specify if something is open.", bool, 0, default = True) @@ -159,11 +173,11 @@ async def main(): #batterylow warning event batterywarning = await server.create_custom_event_type(idx, "BatteryLowWarning", ua.ObjectIds.SystemEventType) batterywarninggen = await server.get_event_generator(batterywarning, ) + batterywarninggen.event.Severity = 800 #batterylow error event batteryerror = await server.create_custom_event_type(idx, "BatteryLowError", ua.ObjectIds.SystemEventType) batteryerrorgen = await server.get_event_generator(batteryerror, mobilerobot) - batterywarninggen.event.Severity = 800 batteryerrorgen.event.Severity = 1000 #streamevents @@ -185,9 +199,10 @@ async def main(): while True: 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]) + "]") + await tcpstreamgenrob.trigger(message = "Robot updatet value [" + str(tcppos[0]) + "," + str(tcppos[1]) + "," + str(tcppos[2]) + "]") + # await positionrobot.set_value([1.0, 0.0, 0.0]) batteryload = await batterymeas.get_value() #await batterymeas.set_value(19)