diff --git a/newmodeljsonparse.py b/newmodeljsonparse.py
index 20cb058cd8eb014792f6a7291490aa2a43b57c1b..05476f773b1212cab327e7eec3e0ed8e406a066b 100644
--- a/newmodeljsonparse.py
+++ b/newmodeljsonparse.py
@@ -264,6 +264,17 @@ def getEvents(list1, component, jsoncomponents):
         return list1
 
 
+def getStreams(list1, component, jsoncomponents):
+    for stream in component["streams"]:
+        list1.append(stream)
+    if iskeythere(list(component.keys()), "baseComponent"):
+        for search in jsoncomponents:
+            if search["uuid"] == component["baseComponent"]:
+                return getEvents(list1, search, jsoncomponents)
+    else:
+        return list1
+
+
 def buildComponents(interfacesreturn, variabledict, jsoninterfaces, jsoncomponents, jsonmeasurements, jsonparameters, jsonfunctions, objcomponentsclone):
     for obj in jsoninterfaces:
         rootobj = {}
@@ -294,26 +305,29 @@ def buildComponents(interfacesreturn, variabledict, jsoninterfaces, jsoncomponen
     return interfacesreturn, variabledict
 
 
-def instantiateComponents(typesdict, interfaces, jsoncomponents, headnode, instantiatedict, eventsdict):
+def instantiateComponents(typesdict, interfaces, jsoncomponents, headnode, instantiatedict, eventsdict, streamsdict):
         count = 0
         countcomponent = 0
         for interface in interfaces:
             root = interface
             events = getEvents([], root, jsoncomponents)
+            streams = getStreams([], root, jsoncomponents)
             components = getInterfaceparam([], root, "components", jsoncomponents, jsoncomponents)
             if interface["name"] in list(instantiatedict.keys()):
                 count += 1
             instantiatedict[str(interface["uuid"])] = wf.writeobjects(typesdict[str(interface["name"])], interface["name"], instantiatedict[str(headnode["uuid"])], count)
             eventsdict[str(interface["uuid"])] = events
+            streamsdict[str(interface["uuid"])] = streams
             if len(components) > 0:
-                instantiateComponents(typesdict, components, jsoncomponents, interface, instantiatedict, eventsdict)
+                instantiateComponents(typesdict, components, jsoncomponents, interface, instantiatedict, eventsdict, streamsdict)
 
-        return instantiatedict, eventsdict
+        return instantiatedict, eventsdict, streamsdict
 
 
 def instantiate(typesdict, interfaces, jsoncomponents):
     instantiatedict = {}
     eventsdict = {}
+    streamsdict ={}
     for interface in interfaces:
         root = {}
         count = 0
@@ -321,10 +335,12 @@ def instantiate(typesdict, interfaces, jsoncomponents):
             if interface["rootComponent"] == component["uuid"]:
                 root = component
         events = getEvents([], root, jsoncomponents)
+        streams = getStreams([], root, jsoncomponents)
         components = getInterfaceparam([], root, "components", jsoncomponents, jsoncomponents)
         instantiatedict[str(interface["uuid"])] = wf.writeinterface(typesdict[str(interface["name"])], interface["name"], count)
         eventsdict[str(interface["uuid"])] = events
-        return instantiateComponents(typesdict, components, jsoncomponents, interface, instantiatedict, eventsdict)
+        streamsdict[str(interface["uuid"])] = streams
+        return instantiateComponents(typesdict, components, jsoncomponents, interface, instantiatedict, eventsdict, streamsdict)
 
 
 def main():
@@ -372,17 +388,30 @@ def main():
         returnval = instantiate(typesdict, jsoninterfaces, jsoncomponents)
         instantiatedict = returnval[0]
         eventsdict = returnval[1]
+        streamsdict = returnval[2]
+        print("Streamsdict:")
+        print(streamsdict)
         print("Instantiatedict: ")
         print(instantiatedict)
         print("Eventsdict: ")
         print(eventsdict)
         generatordict = {}
+        streamgendict = {}
         for key in list(eventsdict.keys()):
-            eventlist = wf.writeevents(eventsdict[key], instantiatedict[key], {}, {})
+            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)
+
         wf.writendpt1()
+
         for key in list(eventsdict.keys()):
             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.writendpt2()
 
 
diff --git a/writefile.py b/writefile.py
index 033ae3fa3c63fb7e6d463d7b5919f9df516ff4f0..b4e62109b331e4e3dc426bb1ae753468b7785fd1 100644
--- a/writefile.py
+++ b/writefile.py
@@ -80,7 +80,7 @@ _logger = logging.getLogger('asyncua')
     #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")
-""") 
+""")
 def openobject(objname, description):
     server = open("opcua-server.py", "a")
     writeindent = "    "
@@ -201,7 +201,7 @@ def writeinterface(objtype, objname, count):
     return objtypename
 
 
-def writeevents(events, component, eventlist, eventgenlist):
+def writeevents(events, component, eventlist):
     server = open("opcua-server.py", "a")
     writeindent = "    "
     #eventelements = []
@@ -210,12 +210,38 @@ def writeevents(events, component, eventlist, eventgenlist):
         eventname = (event["element"].lower()).replace(" ", "") + component + str(event["severity"])
         eventgenname = eventname + "generator"
         eventlist[eventname] = eventgenname
+        severity = 0
+        if event["severity"] == "debug":
+            severity = 200
+        elif event["severity"] == "info":
+            severity = 400
+        elif event["severity"] == "warning":
+            severity = 600
+        elif event["severity"] == "error":
+            severity = 800
+        elif event["severity"] == "critical":
+            severity = 1000
         #print(eventname)
         server.write(writeindent + eventname + " = await server.create_custom_event_type(idx, \"" + str(event["element"]) + " " + str(event["severity"]) + "\", ua.ObjectIds.SystemEventType)\n")
         server.write(writeindent + str(eventlist[eventname]) + " = await server.get_event_generator(" + eventname + ", " + component + ")\n")
+        server.write(writeindent + str(eventlist[eventname]) + ".event.Severity = " + str(severity) + "\n")
     return eventlist
 
 
+def writestreams(streams, component, streamslist):
+    server = open("opcua-server.py", "a")
+    writeindent = "    "
+    # eventelements = []
+    for stream in streams:
+        # eventelements.append(event["element"])
+        streamname = (stream["measurement"].lower()).replace(" ", "") + component
+        streamgenname = streamname + "generator"
+        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
+
+
 def writendpt1():
     server = open("opcua-server.py", "a")
     server.write("""
@@ -266,6 +292,47 @@ def triggerevents(generatordict, eventslist, component, variablelist, jsonmeasur
 
 
 
+def triggerstreams(generatordict, streamslist, component, variablelist, jsonmeasurements, jsonparameters):
+    server = open("opcua-server.py", "a")
+    indent = 3
+    for stream in streamslist:
+        writeindent = ""
+        streamname = ""
+        valuename = "stream" + ((stream["measurement"]).lower()).replace(" ", "")
+        for i in range(indent):
+            writeindent += "    "
+        for variable in variablelist:
+            if variable["name"] == stream["measurement"]:
+                for measurement in jsonmeasurements:
+                    if measurement["uuid"] == variable["value"]:
+                        streamname = measurement["name"]
+                for parameter in jsonparameters:
+                    if parameter["uuid"] == variable["value"]:
+                        streamname = parameter["name"]
+        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")
+            writeindent += "    "
+            server.write(writeindent + "await " + generatorname + ".trigger()\n")
+            server.write(writeindent + "save" + valuename + " = await " + valuename + ".get_value()\n")
+            writeindent = ""
+            for i in range(indent):
+                writeindent += "    "
+
+        if stream["streamType"] == "fixed":
+            server.write(writeindent + "time = count%" + str(stream["intervalValue"]) + "\n")
+            server.write(writeindent + "if time == 0:\n")
+            server.write(writeindent + "await " + generatorname + ".trigger()\n")
+            writeindent = ""
+            for i in range(indent):
+                writeindent += "    "
+
+
+
+
+
 def writendpt2():
     server = open("opcua-server.py", "a")
     server.write("""