diff --git a/jsonparse.py b/jsonparse.py index 8703cd6f5799a7b796a452781030cc48567ae307..47ec08971c022e11ef37d00062ecaab247ca5246 100644 --- a/jsonparse.py +++ b/jsonparse.py @@ -171,7 +171,7 @@ def main(): print(functionobj) print(parameterobj) #exec(open("writefile.py").read()) - wf.write(measurementobj) + wf.write(measurementobj, parameterobj) diff --git a/writefile.py b/writefile.py index 6baca89555352de9b5239ef2411a94add340c343..6ba12b7c94e4b80590eccc91063c8ee6d5b2a1a8 100644 --- a/writefile.py +++ b/writefile.py @@ -7,7 +7,7 @@ def defFunction(functionname, file, indent, contents = None): writeindent = writeindent + "\t" file.write(indent + "async def " + functionname + ":") -def write(measurementobj): +def write(measurementobj, parameterobj): if os.path.exists("opcua-server.py"): os.remove("opcua-server.py") server = open("opcua-server.py", "a") @@ -36,26 +36,58 @@ _logger = logging.getLogger('asyncua') idx = await server.register_namespace(uri) #id of rangetype rangeid = await server.nodes.base_data_type.get_child(["0:Structure", "0:Range"]) + + #creating the objecttype myobjtype = await server.nodes.base_object_type.add_object_type(idx, "Robot") - vartype = await server.nodes.base_data_type.add_data_type(idx, "Measurement") + + #creating dataypes for parameters and measurements + measurementtype = await server.nodes.base_data_type.add_data_type(idx, "Measurement") + parametertype = await server.nodes.base_data_type.add_data_type(idx, "Parameter") """) indent = 1 writeindent = "" for j in range(indent): writeindent = writeindent + " " + + server.write("\n" + writeindent + "# creating all measurements with their properterties\n") + for i in measurementobj: varianttype = "ua.VariantType.Int64" if i.datatype == "float" or i.datatype == "double": varianttype = "ua.VariantType.Double" elif i.datatype == "Boolean": varianttype = "ua.VariantType.Boolean" - datatype = "vartype.nodeid" + datatype = "measurementtype.nodeid" + varname = ((i.name).lower()).replace(" ", "") + "var" + server.write(writeindent + varname + " = " + "await myobjtype.add_variable(idx, \"" + str(i.name) + "\", " + str(i.value) + ", " + varianttype + ", " + datatype + ")\n") + server.write(writeindent + "await " + varname + "." + "set_modelling_rule(True)\n") + if i.range is not None and i.range is not [None, None]: + rangename = "rangeprop" + server.write(writeindent + rangename + " = await " + varname + ".add_property(idx, range, ua.Range(" + str(i.range[0]) + "," + str(i.range[1]) + "))\n") + server.write(writeindent + "await " + rangename + ".set_modelling_rule(True)\n") + if i.unit is not None: + unitname = "unitprop" + server.write(writeindent + unitname + " = await " + varname + ".add_property(idx, \"unit\"," + "\"" + i.unit + "\")\n") + server.write(writeindent + "await " + unitname + ".set_modelling_rule(True)\n") + + server.write(writeindent + "description = await " + varname + ".add_property(idx, \"Description\", " + "\"" + i.description + "\")" + "\n") + server.write(writeindent + "await description.set_modelling_rule(True)\n\n") + + server.write("\n" + writeindent + "#creating all parameters with their properties\n") + + for i in parameterobj: + varianttype = "ua.VariantType.Int64" + if i.datatype == "float" or i.datatype == "double": + varianttype = "ua.VariantType.Double" + elif i.datatype == "Boolean": + varianttype = "ua.VariantType.Boolean" + datatype = "parametertype.nodeid" varname = ((i.name).lower()).replace(" ", "") + "var" server.write(writeindent + varname + " = " + "await myobjtype.add_variable(idx, \"" + str(i.name) + "\", " + str(i.value) + ", " + varianttype + ", " + datatype + ")\n") server.write(writeindent + "await " + varname + "." + "set_modelling_rule(True)\n") if i.range is not None and i.range is not [None, None]: rangename = "rangeprop" - server.write(writeindent + rangename + "= await " + varname + ".add_property(idx, range, ua.Range(" + str(i.range[0]) + "," + str(i.range[1]) + "))\n") + server.write(writeindent + rangename + " = await " + varname + ".add_property(idx, range, ua.Range(" + str(i.range[0]) + "," + str(i.range[1]) + "))\n") server.write(writeindent + "await " + rangename + ".set_modelling_rule(True)\n") if i.unit is not None: unitname = "unitprop" @@ -63,7 +95,7 @@ _logger = logging.getLogger('asyncua') server.write(writeindent + "await " + unitname + ".set_modelling_rule(True)\n") server.write(writeindent + "description = await " + varname + ".add_property(idx, \"Description\", " + "\"" + i.description + "\")" + "\n") - server.write(writeindent + "await description.set_modelling_rule(True)\n") + server.write(writeindent + "await description.set_modelling_rule(True)\n\n") server.write("""