diff --git a/jsonparse.py b/jsonparse.py
index 1d2d3c15f174c039fc137ab4e237d94f56ccd9ea..827c175cd37c83d48a87d9e5e5d97c0317edb450 100644
--- a/jsonparse.py
+++ b/jsonparse.py
@@ -1,30 +1,63 @@
 import json
 
 from collections import namedtuple
-#from json import JSONEncoder
 
 
 def measurementJsonDecod(measurementdict):
     return namedtuple('Measurement', measurementdict.keys())(*measurementdict.values())
 
+def parameterJsonDecod(parameterdict):
+    return namedtuple('Parameter', parameterdict.keys())(*parameterdict.values())
+
 class Measurement:
-    def __init__(self, name, description, datatype,dimension, unit = None,   range=None) :
+    def __init__(self, name, description, datatype, value, dimension, unit=None, range=None):
         self.name = name
         self.description = description
         self.datatype = datatype
         self.range = range
         self.dimension = dimension
         self.unit = unit
-        #self.value = value
         array = []
-        # calculate a start value
-        if self.dimension != 0:
-            for i in range(self.dimension):
-                array.append(self.datatype((self.range[0] + self.range[1]) / 2))
-            self.value = array
+        if self.datatype == "float":
+            self.value = float(value)
         else:
-            self.value = self.datatype(((self.range[0] + self.range[1]) / 2))
+            self.value = value
+        # calculate a start value
+        # if self.dimension != 0:
+        #     for i in range(self.dimension):
+        #         arrayval = self.datatype((self.range[0] + self.range[1]) / 2)
+        #         if self.datatype == "float" or self.datatype == "double":
+        #             arrayval = float(arrayval)
+        #         array.append(arrayval)
+        #     self.value = [0.0, 0.0, 0.0]
+        # else:
+        #     self.value = self.datatype(((self.range[0] + self.range[1]) / 2))
 
+class Parameter:
+    def __init__(self, name, description, datatype, dimension, value, rangevar=None, unit=None, default=None, constant=False):
+        self.name = name
+        self.description = description
+        self.datatype = datatype
+        # if range == [None, None]:
+        #     self.range = None
+        # else:
+        self.range = rangevar
+        self.dimension = dimension
+        self.unit = unit
+        self.default = default
+        self.constant = constant
+        self.value = value
+        # array = []
+        # calculate a start value
+        # if self.default == False:
+        #     if self.dimension != 0:
+        #         for i in range(self.dimension):
+        #             array.append(self.datatype((self.range[0] + self.range[1]) / 2))
+        #         self.value = array
+        #     else:
+        #         self.value = self.datatype(((self.range[0] + self.range[1]) / 2))
+        # else:
+        #     self.value = self.datatype(default)
 
 def dimensionchange(string):
     dimarr = string["dimension"]
@@ -37,31 +70,52 @@ def dimensionchange(string):
 
 
 def changerange(string):
-    range = string["range"]
-    rangetuple = (range[0], range[1])
-    string.update({"range": rangetuple})
+    #print(type(string["range"][0]))
+    if string["range"] != "[None, None]":
+        rangeval = string["range"]
+        rangetuple = (rangeval[0], rangeval[1])
+    #print(rangetuple)
+        string.update({"range": rangetuple})
+        print(string["range"])
+    else:
+        del string["range"]
+    print(string)
 
 
-with open ("soil-dummies/src/robot/model.json") as file:
+with open("soil-dummies/src/robot/model.json") as file:
 
     #robot = json.dumps(file.read())
     robotload = json.loads(file.read())
     measurements = robotload["measurements"]
 
-    measurementobj = []
-    for i in measurements:
-        obj = i
-        #del obj["value"]
-        del obj["uuid"]
-        dimensionchange(obj)
-        if i["range"]:
+    if len(measurements) > 0:
+        measurementobj = []
+        for i in measurements:
+            obj = i
+            #del obj["value"]
+            del obj["uuid"]
+            dimensionchange(obj)
+            #if i["range"]:
             changerange(obj)
-        obj = json.dumps(i)
-        measurementobji = json.loads(obj, object_hook=measurementJsonDecod)
-        measurementobj.append(measurementobji)
-    #measurementobj[2].value = [0.0, 0.0, 0.0]
-    # print(measurements)
-    # print(measurementobj[0].value)
-    # for i in measurementobj:
-    #     print(i)
+            obj = json.dumps(i)
+            measurementobji = json.loads(obj, object_hook=measurementJsonDecod)
+            measurementobj.append(measurementobji)
+
+    print(measurementobj)
+    parameters = robotload["parameters"]
+
+    if len(parameters) > 0:
+        parameterobj = []
+        for i in parameters:
+            obj = i
+            # del obj["value"]
+            del obj["uuid"]
+            dimensionchange(obj)
+            if i["range"]:
+                changerange(obj)
+            obj = json.dumps(i)
+            parameterobji = json.loads(obj, object_hook=parameterJsonDecod)
+            parameterobj.append(parameterobji)
+
+    print(parameterobj)
 
diff --git a/robot.py b/robot.py
index 5e774c7b2d2a0c0897d39c8ca1cef89fe859d3fc..720b90ba328e6d2daf68a3e57479218b23d8a5b1 100644
--- a/robot.py
+++ b/robot.py
@@ -11,8 +11,8 @@ from asyncua.common import node
 logging.basicConfig(level=logging.INFO)
 _logger = logging.getLogger('asyncua')
 
-def getobj(name):
-    for i in jsonparse.measurementobj:
+def getobj(name, list):
+    for i in list:
         if i.name == name:
             return i
 
@@ -82,15 +82,16 @@ async def main():
     # batteryobject = Measurement("Battery level", "Battery level", int , 0 ,(0, 100), "percent")
     # measureobjectlist = [tcpobject , positionobject, batteryobject]
 
-    tcpobject = getobj("Tool Center Point")
-    positionobject = getobj("Position")
-    batteryobject = getobj("Battery level")
+    tcpobject = getobj("Tool Center Point", jsonparse.measurementobj)
+    positionobject = getobj("Position", jsonparse.measurementobj)
+    batteryobject = getobj("Battery level", jsonparse.measurementobj)
     measureobjectlist = jsonparse.measurementobj
 
     #parameterobjekte
-    openobject = Parameter("Open", "Flag to specify if something is open.", bool, 0, default = True)
-    automoveobject = Parameter("Autonomous Movement", "If true, the robot moves around freely autonomously.", bool, 0, default = True)
-    paraobjectlist = [openobject, automoveobject]
+    openobject = getobj("Autonomous Movement", jsonparse.parameterobj)
+    #automoveobject = Parameter("Autonomous Movement", "If true, the robot moves around freely autonomously.", bool, 0, default = True)
+    # paraobjectlist = [openobject, automoveobject]
+    paraobjectlist = jsonparse.parameterobj
 
     #hauptobjekt
     myobjtype = await server.nodes.base_object_type.add_object_type(idx, "Robot")
@@ -113,7 +114,7 @@ async def main():
         name = await myobjtype.add_variable(idx, a.name, a.value, varianttype=varianttype, datatype=vartype.nodeid)
         await name.set_modelling_rule(True)
         #namelist = namelist + name
-        if a.range is not None:
+        if a.range is not None and a.range is not [None, None]:
             rangeprop = await name.add_property(idx, "range", ua.Range(a.range[0], a.range[1]))
             await rangeprop.set_modelling_rule(True)
         if a.unit is not None:
@@ -126,9 +127,14 @@ async def main():
     #parameters
 
     for a in paraobjectlist:
-        para = await myobjtype.add_variable(idx, a.name, a.value, datatype=paratype.nodeid)
+        varianttype = ua.VariantType.Int64
+        if a.datatype == "float" or a.datatype == "double":
+            varianttype = ua.VariantType.Double
+        elif a.datatype == "boolean":
+            varianttype = ua.VariantType.Boolean
+        para = await myobjtype.add_variable(idx, a.name, a.value, varianttype=varianttype, datatype=paratype.nodeid)
         await para.set_modelling_rule(True)
-        if a.range is not None:
+        if (a.range is not None) and (a.range != [None, None]):
             rangeprop = await para.add_property(idx, "range", ua.Range(a.range[0], a.range[1]))
             await rangeprop.set_modelling_rule(True)
         if a.unit is not None:
@@ -156,7 +162,7 @@ async def main():
     #getting node ids of battery and position
     robotposname = "2:" + positionobject.name
     positionrobot = await mobilerobot.get_child([robotposname])
-    positionrobot.set_writable(True)
+    await positionrobot.set_writable(True)
 
     @uamethod
     def goTo(parent, position):
@@ -173,7 +179,7 @@ async def main():
     # tcprobmeas = await robot.get_child([tcpvarname])
 
     #adding function goTo to robot
-    goTofunc = await mobilerobot.add_method(idx, "goToset", goTo, [ua.VariantType.Float], [ua.VariantType.Float])
+    goTofunc = await mobilerobot.add_method(idx, "goTo", goTo, [ua.VariantType.Float], [ua.VariantType.Float])
 
     #batterylow warning event
     batterywarning = await server.create_custom_event_type(idx, "BatteryLowWarning", ua.ObjectIds.SystemEventType)
@@ -200,6 +206,7 @@ async def main():
 
     async with server:
         print("Server läuft!")
+        print(paraobjectlist)
         time = 0
 
         while True: