Skip to content
Snippets Groups Projects
Commit a77cda98 authored by Susanna Weber's avatar Susanna Weber
Browse files

parameter have ranges and units too + string and Datetime as new varianttypes

parent 0b027f0d
Branches
No related tags found
No related merge requests found
......@@ -76,6 +76,7 @@ def dimensionchange(string):
value = 0
newdimension = {"dimension": value}
string.update(newdimension)
return string
def getdatatypes(argarray):
......@@ -88,14 +89,18 @@ def getdatatypes(argarray):
return None
def changerange(string):
if iskeythere(string, "range"):
rangeval = string["range"]
rangetuple = (rangeval[0], rangeval[1])
string.update({"range": rangetuple})
def changerange(obj):
if iskeythere(obj, "range"):
if obj["datatype"] == "enum":
obj.update({"range": [None, None]})
else:
string.update({"range": (None, None)})
# print(string)
obj["range"] = [None, None]
return obj
def getunit(string):
if not iskeythere(string, "unit"):
string["unit"] = "UNITLESS"
return string
def getobjnames(argarray):
......@@ -110,16 +115,20 @@ def getobjnames(argarray):
def getParameters(parametersDict):
# extracts the measurements of a Json-Model
# extracts the measurements of a Json-Mode
parameterobj = []
if len(parametersDict) > 0:
for i in parametersDict:
obj = i
dimensionchange(obj)
obj["value"]=getdefaultvalue(obj["dimension"], obj["datatype"])
obj = json.dumps(i)
obj = dimensionchange(obj)
obj["value"] = getdefaultvalue(obj)
obj = changerange(obj)
obj = getunit(obj)
obj = json.dumps(obj)
parameterobji = json.loads(obj, object_hook=parameterJsonDecod)
parameterobj.append(parameterobji)
print("parameterobj")
print(parameterobj)
return parameterobj
......@@ -128,12 +137,12 @@ def getMeasurements(measurementsDict):
if len(measurementsDict) > 0:
for i in measurementsDict:
obj = i
dimensionchange(obj)
obj["value"] = getdefaultvalue(obj["dimension"], obj["datatype"])
changerange(obj)
obj = dimensionchange(obj)
obj["value"] = getdefaultvalue(obj)
obj = changerange(obj)
if not iskeythere(obj, "unit"):
obj["unit"] = "UNITLESS"
obj = json.dumps(i)
obj = json.dumps(obj)
measurementobji = json.loads(obj, object_hook=measurementJsonDecod)
measurementobj.append(measurementobji)
return measurementobj
......@@ -164,7 +173,7 @@ def getFunctions(functionsDict, jsonmeasurements, jsonparameters):
def searchlists(list1, list2):
print("I am searching")
#print("I am searching")
objmeasurementlist = []
if len(list1) <= 0:
return []
......@@ -174,8 +183,13 @@ def searchlists(list1, list2):
objmeasurementlist.append(searchobj)
return objmeasurementlist
def getdefaultvalue(dimension, datatype):
def getdefaultvalue(obj):
if iskeythere(obj, "default"):
if obj["datatype"] == "string" or obj["datatype"] == "enum":
return "\"" + obj["default"] + "\""
return obj["default"]
datatype = obj["datatype"]
dimension = obj["dimension"]
if datatype == "float" or datatype == "double" or datatype == "int":
if dimension > 1:
value = []
......@@ -184,8 +198,12 @@ def getdefaultvalue(dimension, datatype):
return value
else:
return 0
else:
elif datatype == "boolean":
return True
elif datatype == "time":
return "ua.DateTime.now()"
else:
return "\"\""
def iskeythere(list, key):
......@@ -230,7 +248,7 @@ def buildComponents(interfacesreturn, jsoninterfaces, jsoncomponents, jsonmeasur
if obj["name"] not in interfacesreturn.keys():
interfacesreturn[str(obj["name"])] = wf.openobject(obj["name"], rootobj["description"])
objmeasurementlist = getInterfaceparam([], rootobj, "measurements", jsoncomponents, jsonmeasurements)
print(objmeasurementlist)
#print(objmeasurementlist)
measurementsobjs = getMeasurements(objmeasurementlist)
wf.writemeasurement(measurementsobjs, interfacesreturn[str(obj["name"])])
objparameterlist = getInterfaceparam([], rootobj, "parameters", jsoncomponents, jsonparameters)
......@@ -267,6 +285,7 @@ def instantiate(typesdict, interfaces, jsoncomponents):
if interface["rootComponent"] == component["uuid"]:
root = component
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)
......@@ -292,6 +311,7 @@ def main():
jsonfunctions = []
jsoncomponents = []
jsoninterfaces = []
jsonenums = []
for obj in elements:
#print(obj)
if obj["elementType"] == "measurement":
......@@ -304,6 +324,8 @@ def main():
jsoncomponents.append(obj)
elif obj["elementType"] == "interface":
jsoninterfaces.append(obj)
elif obj["elementType"] == "enum":
jsonenums.append(obj)
typesdict = buildComponents({}, jsoninterfaces, jsoncomponents, jsonmeasurements, jsonparameters, jsonfunctions, [])
intantiateddict = instantiate(typesdict, jsoninterfaces, jsoncomponents)
......
......@@ -29,6 +29,12 @@ def getVariantType(datatype):
varianttype = "ua.VariantType.Double"
elif datatype == "Boolean":
varianttype = "ua.VariantType.Boolean"
elif datatype == "time":
varianttype = "ua.VariantType.DateTime"
elif datatype == "string":
varianttype = "ua.VariantType.String"
elif datatype == "enum":
varianttype = "ua.VariantType.String"
return varianttype
......@@ -112,11 +118,9 @@ def writemeasurement(measurementobj, headnode):
server.write(writeindent + varname + " = " + "await " + headnode + ".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 or i.range != "(None, None)":
if i.range is not None and i.range != [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 != "UNITLESS":
unitname = "unitprop"
......@@ -144,17 +148,16 @@ def writeparameter(parameterobj, headnode):
server.write(writeindent + varname + " = " + "await " + headnode + ".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 or i.range != (None, None):
# rangename = "rangeprop"
# server.write(
# writeindent + rangename + " = await " + headnode + ".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 != "UNITLESS":
# unitname = "unitprop"
# server.write(
# writeindent + unitname + " = await " + headnode + ".add_property(idx, \"unit\"," + "\"" + i.unit + "\")\n")
# server.write(writeindent + "await " + unitname + ".set_modelling_rule(True)\n")
if i.range is not None and i.range != [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 != "UNITLESS":
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 + varname + "description = await " + varname + ".add_property(idx, \"Description\", " + "\"" + i.description + "\")" + "\n")
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment