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