From 56aaae6ed2fa46004f0b36fae61dcd784574771d Mon Sep 17 00:00:00 2001 From: Susa Giogoli <su.giogoli@icloud.com> Date: Thu, 6 Jul 2023 13:49:02 +0200 Subject: [PATCH] event progress --- newmodeljsonparse.py | 31 +++++++++++++++++++++++++------ writefile.py | 19 +++++++++++++++++-- 2 files changed, 42 insertions(+), 8 deletions(-) diff --git a/newmodeljsonparse.py b/newmodeljsonparse.py index 8f58cb9..f157e58 100644 --- a/newmodeljsonparse.py +++ b/newmodeljsonparse.py @@ -233,6 +233,18 @@ def getInterfaceparam(list1, interface, searched, jsoncomponents, searchinglist) return list1 +def getEvents(list1, component, jsoncomponents): + for event in component["events"]: + list1.append(event) + if iskeythere(list(component.keys()), "baseComponent"): + for search in jsoncomponents: + if search["uuid"] == component["baseComponent"]: + return getEvents(list1, search, jsoncomponents) + else: + return list1 + + + def buildComponents(interfacesreturn, jsoninterfaces, jsoncomponents, jsonmeasurements, jsonparameters, jsonfunctions, objcomponentsclone): for obj in jsoninterfaces: rootobj = {} @@ -261,33 +273,37 @@ def buildComponents(interfacesreturn, jsoninterfaces, jsoncomponents, jsonmeasur return interfacesreturn -def instantiateComponents(typesdict, interfaces, jsoncomponents, headnode, instantiatedict): +def instantiateComponents(typesdict, interfaces, jsoncomponents, headnode, instantiatedict, eventsdict): count = 0 countcomponent = 0 for interface in interfaces: root = interface + events = getEvents([], root, jsoncomponents) components = getInterfaceparam([], root, "components", jsoncomponents, jsoncomponents) if interface["name"] in list(instantiatedict.keys()): count += 1 instantiatedict[str(interface["name"])] = wf.writeobjects(typesdict[str(interface["name"])], interface["name"], instantiatedict[str(headnode["name"])], count) + eventsdict[str(instantiatedict[str(interface["name"])])] = events if len(components) > 0: - instantiateComponents(typesdict,components , jsoncomponents, interface, instantiatedict) + instantiateComponents(typesdict,components , jsoncomponents, interface, instantiatedict, eventsdict) - return instantiatedict + return instantiatedict, eventsdict def instantiate(typesdict, interfaces, jsoncomponents): instantiatedict = {} + eventsdict = {} for interface in interfaces: root = {} count = 0 for component in jsoncomponents: if interface["rootComponent"] == component["uuid"]: root = component + events = getEvents([], root, jsoncomponents) components = getInterfaceparam([], root, "components", jsoncomponents, jsoncomponents) - #events = getInterfaceparam([], root, "events", jsoncomponents, jsonevents) instantiatedict[str(interface["name"])] = wf.writeinterface(typesdict[str(interface["name"])], interface["name"], count) - instantiateComponents(typesdict, components, jsoncomponents, interface, instantiatedict) + eventsdict[str(instantiatedict[str(interface["name"])])] = events + return instantiateComponents(typesdict, components, jsoncomponents, interface, instantiatedict, eventsdict) def main(): @@ -327,7 +343,10 @@ def main(): elif obj["elementType"] == "enum": jsonenums.append(obj) typesdict = buildComponents({}, jsoninterfaces, jsoncomponents, jsonmeasurements, jsonparameters, jsonfunctions, []) - intantiateddict = instantiate(typesdict, jsoninterfaces, jsoncomponents) + returnval = instantiate(typesdict, jsoninterfaces, jsoncomponents) + instantiatedict = returnval[0] + eventsdict = returnval[1] + print(eventsdict) wf.writend() diff --git a/writefile.py b/writefile.py index 164c601..00a9427 100644 --- a/writefile.py +++ b/writefile.py @@ -199,13 +199,28 @@ def writeinterface(objtype, objname, count): server.write(writeindent + objtypename + "= await server.nodes.objects.add_object(idx, \"" + objname + "\", " + objtype + ".nodeid)\n") return objtypename -def writend(): + +def writeevents(events, component): + server = open("opcua-server.py", "a") + server.write(") + + +def writendpt1(): server = open("opcua-server.py", "a") server.write(""" async with server: print("Server is running!") - + count = 0 + while True: + """) + + + + +def writendpt2(): + server = open("opcua-server.py", "a") + server.write(""" await asyncio.sleep(1) if __name__ == '__main__': -- GitLab