diff --git a/newmodeljsonparse.py b/newmodeljsonparse.py index 05476f773b1212cab327e7eec3e0ed8e406a066b..e6ee92629b56923ece7ec62fd20635ef2d09eb27 100644 --- a/newmodeljsonparse.py +++ b/newmodeljsonparse.py @@ -395,15 +395,19 @@ def main(): print(instantiatedict) print("Eventsdict: ") print(eventsdict) + print("Parametersdict: ") + print(jsonparameters) generatordict = {} streamgendict = {} + savestreamvaldict = {} for key in list(eventsdict.keys()): eventlist = wf.writeevents(eventsdict[key], instantiatedict[key], {}) generatordict.update(eventlist) for key in list(streamsdict.keys()): - streamlist = wf.writestreams(streamsdict[key], instantiatedict[key], {}) - streamgendict.update(streamlist) + returnval = wf.writestreams(streamsdict[key], instantiatedict[key], {}, variabledict[key], jsonmeasurements, jsonparameters) + streamgendict.update(returnval[0]) + savestreamvaldict.update(returnval[1]) wf.writendpt1() @@ -411,7 +415,7 @@ def main(): wf.triggerevents(generatordict, eventsdict[key], instantiatedict[key], variabledict[key], jsonmeasurements, jsonparameters) for key in list(streamsdict.keys()): - wf.triggerstreams(streamgendict, streamsdict[key], instantiatedict[key], variabledict[key], jsonmeasurements, jsonparameters) + wf.triggerstreams(streamgendict, streamsdict[key], instantiatedict[key], variabledict[key], jsonmeasurements, jsonparameters, savestreamvaldict) wf.writendpt2() diff --git a/writefile.py b/writefile.py index b4e62109b331e4e3dc426bb1ae753468b7785fd1..a8db79074473a6f77143c7b183bc6278cd3db5c0 100644 --- a/writefile.py +++ b/writefile.py @@ -228,10 +228,11 @@ def writeevents(events, component, eventlist): return eventlist -def writestreams(streams, component, streamslist): +def writestreams(streams, component, streamslist, variablelist, jsonmeasurements, jsonparameters): server = open("opcua-server.py", "a") writeindent = " " # eventelements = [] + updatestreamdict = {} for stream in streams: # eventelements.append(event["element"]) streamname = (stream["measurement"].lower()).replace(" ", "") + component @@ -239,7 +240,30 @@ def writestreams(streams, component, streamslist): streamslist[streamname] = streamgenname server.write(writeindent + streamname + " = await server.create_custom_event_type(idx, \"" + str(stream["measurement"]) + "\", ua.ObjectIds.SystemEventType)\n") server.write(writeindent + str(streamslist[streamname]) + " = await server.get_event_generator(" + streamname + ", " + component + ")\n") - return streamslist + + if stream["streamType"] == "update": + value = 0 + print(variablelist) + for variable in variablelist: + print(variable) + if variable["name"] == stream["measurement"]: + for measurement in jsonmeasurements: + if measurement["uuid"] == variable["value"]: + value = measurement["value"] + for parameter in jsonparameters: + if parameter["uuid"] == variable["value"]: + value = parameter["value"] + + savevaluename = "save" + streamname + writevalue = "" + if type(value) == str: + writevalue = "\"" + value + "\"" + else: + writevalue = str(value) + server.write(writeindent + savevaluename + " = " + writevalue + "\n") + updatestreamdict[streamname] = savevaluename + + return streamslist, updatestreamdict def writendpt1(): @@ -291,8 +315,7 @@ def triggerevents(generatordict, eventslist, component, variablelist, jsonmeasur writeindent += " " - -def triggerstreams(generatordict, streamslist, component, variablelist, jsonmeasurements, jsonparameters): +def triggerstreams(generatordict, streamslist, component, variablelist, jsonmeasurements, jsonparameters, savevaldict): server = open("opcua-server.py", "a") indent = 3 for stream in streamslist: @@ -312,11 +335,11 @@ def triggerstreams(generatordict, streamslist, component, variablelist, jsonmeas server.write(writeindent + valuename + " = await " + component + ".get_child([\"2:" + streamname + "\"])\n") generatorname = generatordict[(stream["measurement"].lower()).replace(" ", "") + component] if stream["streamType"] == "update": - server.write(writeindent + "save" + valuename + " = await " + valuename + ".get_value()\n") - server.write(writeindent + "if (await " + valuename + ".get_value()) != " + "save" + valuename + ":\n") + server.write(writeindent + "if (await " + valuename + ".get_value()) != " + savevaldict[(stream["measurement"].lower()).replace(" ", "") + component] + ":\n") writeindent += " " - server.write(writeindent + "await " + generatorname + ".trigger()\n") - server.write(writeindent + "save" + valuename + " = await " + valuename + ".get_value()\n") + server.write(writeindent + "puffer = await " + valuename + ".get_value()\n") + server.write(writeindent + "await " + generatorname + ".trigger(message= \"value\" + str(puffer))\n") + server.write(writeindent + savevaldict[(stream["measurement"].lower()).replace(" ", "") + component] + " = puffer \n") writeindent = "" for i in range(indent): writeindent += " " @@ -330,9 +353,6 @@ def triggerstreams(generatordict, streamslist, component, variablelist, jsonmeas writeindent += " " - - - def writendpt2(): server = open("opcua-server.py", "a") server.write("""