From 3e1e0f0f7e66b7d5f8dad805af85249fcd9a9357 Mon Sep 17 00:00:00 2001 From: Susa Giogoli <su.giogoli@icloud.com> Date: Mon, 10 Jul 2023 15:56:26 +0200 Subject: [PATCH] variables are not declared tweice for events anymore --- robot.py | 2 +- writefile.py | 35 +++++++++++++++++++++-------------- 2 files changed, 22 insertions(+), 15 deletions(-) diff --git a/robot.py b/robot.py index 780690d..8054d3a 100644 --- a/robot.py +++ b/robot.py @@ -187,7 +187,7 @@ 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 = await server.get_event_generator(batterywarning, mobilerobot) batterywarninggen.event.Severity = 800 #batterylow error event diff --git a/writefile.py b/writefile.py index 2fda739..033ae3f 100644 --- a/writefile.py +++ b/writefile.py @@ -1,6 +1,7 @@ import jsonparse import os import tomli +import json def defFunction(functionname, file, indent, inargs): @@ -228,31 +229,37 @@ def writendpt1(): def triggerevents(generatordict, eventslist, component, variablelist, jsonmeasurements, jsonparameters): server = open("opcua-server.py", "a") indent = 3 - print(variablelist) + writeindent = "" + variablenamelist = {} for event in eventslist: - eventsearchname = "" - for variable in variablelist: - if variable["name"] == event["element"]: - for measurement in jsonmeasurements: - if variable["value"] == measurement["uuid"]: - eventsearchname = measurement["name"] - for parameter in jsonparameters: - if variable["value"] == parameter["uuid"]: - eventsearchname = parameter["name"] - writeindent = "" for i in range(indent): writeindent += " " + valuename = event["element"] + component + eventsearchname = "" + + if event["element"] in list(variablenamelist.keys()): + eventsearchname = variablenamelist[str(event["element"])] + else: + for variable in variablelist: + if variable["name"] == event["element"]: + for measurement in jsonmeasurements: + if variable["value"] == measurement["uuid"]: + eventsearchname = measurement["name"] + for parameter in jsonparameters: + if variable["value"] == parameter["uuid"]: + eventsearchname = parameter["name"] + variablenamelist[str(event["element"])] = eventsearchname + server.write(writeindent + valuename + "= await " + component + ".get_child([\"2:" + eventsearchname + "\"])\n") dictname = (event["element"].lower()).replace(" ", "") + component + event["severity"] generatorname = generatordict[dictname] - valuename = event["element"] + component + trigger = str(event["target"]) if type(event["target"]) == str: trigger = "\"" + str(event["target"] + "\"") - server.write(writeindent + valuename + "= await " + component + ".get_child([\"2:" + eventsearchname + "\"])\n") server.write(writeindent + "if (await " + valuename + ".get_value()) " + event["trigger"] + " " + trigger + ":\n") writeindent += " " - server.write(writeindent + "await " + generatorname+ ".trigger(message=\"" + event["message"] + "\")\n") + server.write(writeindent + "await " + generatorname + ".trigger(message=\"" + event["message"] + "\")\n") writeindent = "" for i in range(indent): writeindent += " " -- GitLab