diff --git a/jsonparse.py b/jsonparse.py
index da67a028209e05c07a18c4906b1ac0609c75040c..8703cd6f5799a7b796a452781030cc48567ae307 100644
--- a/jsonparse.py
+++ b/jsonparse.py
@@ -1,7 +1,7 @@
 import json
 import os
 import sys
-
+import writefile as wf
 from collections import namedtuple
 
 
@@ -170,6 +170,10 @@ def main():
 
         print(functionobj)
         print(parameterobj)
+        #exec(open("writefile.py").read())
+        wf.write(measurementobj)
+
+
 
 
 if __name__ == '__main__':
diff --git a/writefile.py b/writefile.py
new file mode 100644
index 0000000000000000000000000000000000000000..1a335eea0f7592f24856ac2d48a66e00212a5645
--- /dev/null
+++ b/writefile.py
@@ -0,0 +1,83 @@
+import jsonparse
+import os
+
+def defFunction(functionname, file, indent, contents = None):
+    writeindent = ""
+    for i in range(indent):
+        writeindent = writeindent + "\t"
+    file.write(indent + "async def " + functionname + ":")
+
+def write(measurementobj):
+    if os.path.exists("opcua-server.py"):
+        os.remove("opcua-server.py")
+    server = open("opcua-server.py", "a")
+    server.write("""import logging 
+import asyncio
+
+from asyncua import ua, Server
+from asyncua.common.methods import uamethod
+from asyncua.common.structures104 import new_struct, new_enum, new_struct_field
+from asyncua.common import node
+
+logging.basicConfig(level=logging.INFO)
+_logger = logging.getLogger('asyncua')
+""")
+
+    server.write("\nasync def main():")
+    #äinten = "\tab"
+    server.write("""
+    # setup our server
+    server = Server()
+    await server.init()
+    server.set_endpoint('opc.tcp://0.0.0.0:4840/freeopcua/server/')
+
+    # setup our own namespace, not really necessary but should as spec
+    uri = 'http://examples.freeopcua.github.io/'
+    idx = await server.register_namespace(uri)
+    #id of rangetype
+    rangeid = await server.nodes.base_data_type.get_child(["0:Structure", "0:Range"])
+    myobjtype = await server.nodes.base_object_type.add_object_type(idx, "Robot")
+    vartype = await server.nodes.base_data_type.add_data_type(idx, "Measurement")
+        """)
+    indent = 1
+    writeindent = ""
+    for j in range(indent):
+            writeindent = writeindent + "    "
+    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"
+        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 name.add_property(idx, \"Description\", " + "\"" + i.description + "\"" + "\n")
+        server.write(writeindent + "await description.set_modelling_rule(True)\n")
+
+
+    server.write("""
+        async with server:
+            print("Server is running!")
+    
+            while True:
+                await asyncio.sleep(1)
+    
+    if name == 'main':
+        asyncio.run(main())""")
+
+
+
+
+
+