diff --git a/CMakeFile.txt b/CMakeFile.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/Readme.md b/Readme.md
index 2fb050d7286a48f640a4dfedecb5860cd0e1eb95..e5bf5b9c99464cd710387f720ba4dde27b5745b7 100644
--- a/Readme.md
+++ b/Readme.md
@@ -1,6 +1,15 @@
 # Smart-Grid-Modell (SGM)
 
-Das Smart-Grid-Modell ist Teil der digitalen Lernfabrik des Automatisierungslabors.
-Dies ist der Stand der Software und der Dokumentation, nach dem Abschluss des Projektes im Sommersemester 2019.
-Es ist der Ausgangspunkt für die Weiterentwicklungen im SS20.
 
+
+# Durchgeführte Arbeiten
+
+* Systemupdate des Raspberry Pi
+* updaten der WiringPi Library auf den aktuellen Stand 2.32 -> 2.60 aufgrund von Kompatibilitätsproblemen
+
+
+# Notwendige Änderungen
+
+* Neues Build-System mit aktuellem Stand (CMake & C++)
+* Aufteilen in eine SGM-Runnable mit API für GUI, CLI oder OPC UA.
+* Überarbeiten der Simulationsparameter
diff --git a/doc/smart-grid-modell-architecture.xmi b/doc/smart-grid-modell-architecture.xmi
new file mode 100644
index 0000000000000000000000000000000000000000..de4f38c27696b8b14d5c49d4bd8a899a8bf461c1
--- /dev/null
+++ b/doc/smart-grid-modell-architecture.xmi
@@ -0,0 +1,534 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<XMI xmi.version="1.2" verified="false" timestamp="2020-06-02T20:43:50" xmlns:UML="http://schema.omg.org/spec/UML/1.4">
+ <XMI.header>
+  <XMI.documentation>
+   <XMI.exporter>umbrello uml modeller http://umbrello.kde.org</XMI.exporter>
+   <XMI.exporterVersion>1.6.17</XMI.exporterVersion>
+   <XMI.exporterEncoding>UnicodeUTF8</XMI.exporterEncoding>
+  </XMI.documentation>
+  <XMI.metamodel xmi.version="1.4" xmi.name="UML" href="UML.xml"/>
+ </XMI.header>
+ <XMI.content>
+  <UML:Model isRoot="false" isSpecification="false" isAbstract="false" isLeaf="false" name="UML Model" xmi.id="m1">
+   <UML:Namespace.ownedElement>
+    <UML:Stereotype isRoot="false" isSpecification="false" namespace="m1" isAbstract="false" isLeaf="false" name="folder" xmi.id="folder" visibility="public"/>
+    <UML:Stereotype isRoot="false" isSpecification="false" namespace="m1" isAbstract="false" isLeaf="false" name="enum" xmi.id="enum" visibility="public"/>
+    <UML:Stereotype isRoot="false" isSpecification="false" namespace="m1" isAbstract="false" isLeaf="false" name="subsystem" xmi.id="subsystem" visibility="public"/>
+    <UML:Model isRoot="false" isSpecification="false" namespace="m1" isAbstract="false" isLeaf="false" name="Logical View" xmi.id="Logical_View" visibility="public">
+     <UML:Namespace.ownedElement>
+      <UML:Package isRoot="false" isSpecification="false" namespace="Logical_View" isAbstract="false" isLeaf="false" name="Datatypes" stereotype="folder" xmi.id="Datatypes" visibility="public">
+       <UML:Namespace.ownedElement>
+        <UML:DataType isRoot="false" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" name="char" xmi.id="uO1KcWtFBFYfI" visibility="public"/>
+        <UML:DataType isRoot="false" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" name="int" xmi.id="uwW16VQpBzLha" visibility="public"/>
+        <UML:DataType isRoot="false" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" name="float" xmi.id="uMNyJRkDUftWt" visibility="public"/>
+        <UML:DataType isRoot="false" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" name="double" xmi.id="uH8GWDXnYcJkC" visibility="public"/>
+        <UML:DataType isRoot="false" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" name="bool" xmi.id="uCeoqNxZejxsR" visibility="public"/>
+        <UML:DataType isRoot="false" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" name="string" xmi.id="um7NLqeEytI5R" visibility="public"/>
+        <UML:DataType isRoot="false" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" name="unsigned char" xmi.id="upKtb9fiT493O" visibility="public"/>
+        <UML:DataType isRoot="false" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" name="signed char" xmi.id="uTL3WSShkBco7" visibility="public"/>
+        <UML:DataType isRoot="false" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" name="unsigned int" xmi.id="uoA3imLSolwn0" visibility="public"/>
+        <UML:DataType isRoot="false" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" name="signed int" xmi.id="u8aSixwniVnav" visibility="public"/>
+        <UML:DataType isRoot="false" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" name="short int" xmi.id="uBxjjlJW4VOod" visibility="public"/>
+        <UML:DataType isRoot="false" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" name="unsigned short int" xmi.id="ugztZvNdrku5J" visibility="public"/>
+        <UML:DataType isRoot="false" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" name="signed short int" xmi.id="uCT3FLzhHRQ0A" visibility="public"/>
+        <UML:DataType isRoot="false" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" name="long int" xmi.id="uErNMZys0KER8" visibility="public"/>
+        <UML:DataType isRoot="false" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" name="signed long int" xmi.id="u2OhwfjjWeGJc" visibility="public"/>
+        <UML:DataType isRoot="false" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" name="unsigned long int" xmi.id="uwdaWvEtGg0U6" visibility="public"/>
+        <UML:DataType isRoot="false" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" name="long double" xmi.id="uOIwrDTWkjoHn" visibility="public"/>
+        <UML:DataType isRoot="false" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" name="wchar_t" xmi.id="u0Au5V2DrbiLK" visibility="public"/>
+       </UML:Namespace.ownedElement>
+      </UML:Package>
+      <UML:Package isRoot="false" isSpecification="false" namespace="Logical_View" isAbstract="false" isLeaf="false" name="i2c" xmi.id="u9pjInofiy2Ve" visibility="public">
+       <UML:Namespace.ownedElement>
+        <UML:Class isRoot="false" isSpecification="false" namespace="u9pjInofiy2Ve" isAbstract="false" isLeaf="false" name="Slave" xmi.id="uMOAU183HiBig" visibility="public">
+         <UML:Classifier.feature>
+          <UML:Attribute isSpecification="false" name="m_address" type="uO1KcWtFBFYfI" xmi.id="uFu4l68ionUW2" visibility="private"/>
+          <UML:Attribute isSpecification="false" name="m_file_handle" type="uwW16VQpBzLha" xmi.id="ugx8hBJtBnqRT" visibility="private"/>
+          <UML:Operation isVirtual="false" isRoot="false" isSpecification="false" isAbstract="false" isOverride="false" isInline="false" isLeaf="false" isQuery="false" name="Slave" xmi.id="u55REngZ9cwHS" visibility="public">
+           <UML:BehavioralFeature.parameter>
+            <UML:Parameter isSpecification="false" value="" name="dev_id" type="uO1KcWtFBFYfI" xmi.id="uwSsNIzpTNVb7" visibility="private"/>
+           </UML:BehavioralFeature.parameter>
+          </UML:Operation>
+          <UML:Operation isVirtual="false" isRoot="false" isSpecification="false" isAbstract="false" isOverride="false" isInline="false" isLeaf="false" isQuery="false" name="write" xmi.id="ucChQe46n8YKe" visibility="public">
+           <UML:BehavioralFeature.parameter>
+            <UML:Parameter isSpecification="false" value="" name="data" type="udmtCeZ2YxFWM" xmi.id="uyhmytUzvS3bA" visibility="private"/>
+           </UML:BehavioralFeature.parameter>
+          </UML:Operation>
+          <UML:Operation isVirtual="false" isRoot="false" isSpecification="false" isAbstract="false" isOverride="false" isInline="false" isLeaf="false" isQuery="false" name="read" xmi.id="uZgNQeb5Wm8o3" visibility="public">
+           <UML:BehavioralFeature.parameter>
+            <UML:Parameter kind="return" type="uwW16VQpBzLha" xmi.id="u6ZAAEeBP9txr"/>
+            <UML:Parameter isSpecification="false" value="" name="reg_addr" type="uO1KcWtFBFYfI" xmi.id="uySUbp2AhgfCp" visibility="private"/>
+           </UML:BehavioralFeature.parameter>
+          </UML:Operation>
+         </UML:Classifier.feature>
+        </UML:Class>
+       </UML:Namespace.ownedElement>
+      </UML:Package>
+      <UML:Package isRoot="false" isSpecification="false" namespace="Logical_View" isAbstract="false" isLeaf="false" name="arduino" xmi.id="uDYdQqfVNrs0T" visibility="public">
+       <UML:Namespace.ownedElement>
+        <UML:Class isRoot="false" isSpecification="false" namespace="uDYdQqfVNrs0T" isAbstract="false" isLeaf="false" name="Board" xmi.id="uQOOyYdQvRL2V" visibility="public">
+         <UML:Classifier.feature>
+          <UML:Attribute isSpecification="false" name="m_conf" type="uiwNWKP8gbZyV" xmi.id="u2RbAUyesuzLk" visibility="private"/>
+          <UML:Attribute isSpecification="false" name="m_slave" type="uMOAU183HiBig" xmi.id="uEHrUkd3oVBck" visibility="private"/>
+          <UML:Operation isVirtual="false" isRoot="false" isSpecification="false" isAbstract="false" isOverride="false" isInline="false" isLeaf="false" isQuery="false" name="Board" xmi.id="ucGkqrzmBVu5L" visibility="public">
+           <UML:BehavioralFeature.parameter>
+            <UML:Parameter isSpecification="false" value="" name="conf" type="uiwNWKP8gbZyV" xmi.id="u3VGsQeA05W1H" visibility="private"/>
+           </UML:BehavioralFeature.parameter>
+          </UML:Operation>
+          <UML:Operation isVirtual="false" isRoot="false" isSpecification="false" isAbstract="false" isOverride="false" isInline="false" isLeaf="false" isQuery="false" name="set_output_pin" xmi.id="uWzM79zEjblIT" visibility="public">
+           <UML:BehavioralFeature.parameter>
+            <UML:Parameter isSpecification="false" value="" name="pin" type="ufMuyNTyT74VF" xmi.id="uEarGtxGFnbYY" visibility="private"/>
+            <UML:Parameter isSpecification="false" value="" name="value" type="uO1KcWtFBFYfI" xmi.id="ufsXSLvavL6M7" visibility="private"/>
+           </UML:BehavioralFeature.parameter>
+          </UML:Operation>
+         </UML:Classifier.feature>
+        </UML:Class>
+        <UML:Class isRoot="false" isSpecification="false" namespace="uDYdQqfVNrs0T" isAbstract="false" isLeaf="false" name="Config" xmi.id="uiwNWKP8gbZyV" visibility="public">
+         <UML:Classifier.feature>
+          <UML:Attribute isSpecification="false" name="i2c_slave_addr" type="uO1KcWtFBFYfI" xmi.id="uiZDsnYkbWRTG" visibility="public"/>
+         </UML:Classifier.feature>
+        </UML:Class>
+        <UML:Enumeration isRoot="false" isSpecification="false" namespace="uDYdQqfVNrs0T" isAbstract="false" isLeaf="false" name="Pin" stereotype="enum" xmi.id="ufMuyNTyT74VF" visibility="public">
+         <UML:Enumeration.literal>
+          <UML:EnumerationLiteral isRoot="false" isSpecification="false" namespace="ufMuyNTyT74VF" isAbstract="false" isLeaf="false" value="0x02" name="MotorPWM" xmi.id="uewcOnW6Pauug" visibility="public"/>
+          <UML:EnumerationLiteral isRoot="false" isSpecification="false" namespace="ufMuyNTyT74VF" isAbstract="false" isLeaf="false" value="0x03" name="LampPWM" xmi.id="uVH9WioTOm9mD" visibility="public"/>
+          <UML:EnumerationLiteral isRoot="false" isSpecification="false" namespace="ufMuyNTyT74VF" isAbstract="false" isLeaf="false" value="0x04" name="SolarPWM" xmi.id="uvUbUQYDKTKt9" visibility="public"/>
+          <UML:EnumerationLiteral isRoot="false" isSpecification="false" namespace="ufMuyNTyT74VF" isAbstract="false" isLeaf="false" value="0x05" name="WindPWM" xmi.id="u8cXze4wGXjKQ" visibility="public"/>
+          <UML:EnumerationLiteral isRoot="false" isSpecification="false" namespace="ufMuyNTyT74VF" isAbstract="false" isLeaf="false" value="0x06" name="WindSolarPWM" xmi.id="uGVtBWwVF8ZMz" visibility="public"/>
+          <UML:EnumerationLiteral isRoot="false" isSpecification="false" namespace="ufMuyNTyT74VF" isAbstract="false" isLeaf="false" value="0x07" name="NetPWM" xmi.id="u9Bp3GzPeC5YB" visibility="public"/>
+          <UML:EnumerationLiteral isRoot="false" isSpecification="false" namespace="ufMuyNTyT74VF" isAbstract="false" isLeaf="false" value="0x08" name="MixGreenPWM" xmi.id="uMbd0efu6QNT6" visibility="public"/>
+          <UML:EnumerationLiteral isRoot="false" isSpecification="false" namespace="ufMuyNTyT74VF" isAbstract="false" isLeaf="false" value="0x09" name="MixRedPWM" xmi.id="uix2xcSTX9EQI" visibility="public"/>
+         </UML:Enumeration.literal>
+        </UML:Enumeration>
+       </UML:Namespace.ownedElement>
+      </UML:Package>
+      <UML:Class isRoot="false" isSpecification="false" namespace="Logical_View" isAbstract="false" isLeaf="false" name="std::vector&lt;char>" xmi.id="udmtCeZ2YxFWM" visibility="public"/>
+      <UML:Package isRoot="false" isSpecification="false" namespace="Logical_View" isAbstract="false" isLeaf="false" name="Logic_flow" stereotype="folder" xmi.id="uUxUQrXYdqf4w" visibility="public">
+       <UML:Namespace.ownedElement/>
+       <XMI.extension xmi.extender="umbrello">
+        <diagrams resolution="96">
+         <diagram xmi.id="uwFZ8RWFg4nPl" canvaswidth="440.612" fillcolor="#ffff00" documentation="" showpackage="1" showops="1" snapcsgrid="0" griddotcolor="#d3d3d3" showattsig="1" showattribassocs="1" showopsig="1" usefillcolor="1" snapgrid="0" snapy="25" isopen="1" linewidth="0" textcolor="#000000" localid="-1" type="6" showpubliconly="0" showscope="1" showstereotype="1" showatts="1" showgrid="0" canvasheight="967.031" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" zoom="152" backgroundcolor="#ffffff" name="activity diagram" linecolor="#ff0000" snapx="25">
+          <widgets>
+           <activitywidget xmi.id="uvTdWUlenSD52" fillcolor="#ffff00" height="25" documentation="" precondition="" usesdiagramusefillcolor="0" x="-146" activitytype="1" y="-803" isinstance="0" usefillcolor="1" postcondition="" autoresize="1" linewidth="0" localid="uCvsnzrZLVdtE" textcolor="#000000" width="238" usesdiagramfillcolor="0" showstereotype="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" activityname="uhrzeit zurücksetzen bei überlauf" linecolor="#ff0000"/>
+           <activitywidget xmi.id="uobfki8tL24Ut" fillcolor="#ffff00" height="25" documentation="" precondition="" usesdiagramusefillcolor="0" x="-153" activitytype="1" y="-853" isinstance="0" usefillcolor="1" postcondition="" autoresize="1" linewidth="0" localid="uU3G7puTBt6Eu" textcolor="#000000" width="266" usesdiagramfillcolor="0" showstereotype="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" activityname="inkrementiere &quot;Uhrzeit&quot; jede Sekunde" linecolor="#ff0000"/>
+           <activitywidget xmi.id="uKSkmgmJAMVI7" fillcolor="#ffff00" height="20" documentation="" precondition="" usesdiagramusefillcolor="0" x="-40" activitytype="4" y="-670" isinstance="0" usefillcolor="1" postcondition="" autoresize="1" linewidth="0" localid="ukz3sYz1FoEOK" textcolor="#000000" width="20" usesdiagramfillcolor="0" showstereotype="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" activityname="" linecolor="#ff0000"/>
+           <activitywidget xmi.id="uzcUBe0B5EV7U" fillcolor="#ffff00" height="25" documentation="" precondition="" usesdiagramusefillcolor="0" x="-143" activitytype="1" y="-752" isinstance="0" usefillcolor="1" postcondition="" autoresize="1" linewidth="0" localid="uWsHOL9Rl59J4" textcolor="#000000" width="218" usesdiagramfillcolor="0" showstereotype="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" activityname="zufällig bewölkung bestimmen" linecolor="#ff0000"/>
+           <activitywidget xmi.id="uDto0z40zOCSG" fillcolor="#ffff00" height="20" documentation="" precondition="" usesdiagramusefillcolor="0" x="-40" activitytype="4" y="-938" isinstance="0" usefillcolor="1" postcondition="" autoresize="0" linewidth="0" localid="unlgZe9HnIDPL" textcolor="#000000" width="20" usesdiagramfillcolor="0" showstereotype="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" activityname="" linecolor="#ff0000"/>
+           <activitywidget xmi.id="ue5XMTdg5UK5q" fillcolor="#ffff00" height="15" documentation="" precondition="" usesdiagramusefillcolor="0" x="-44" activitytype="0" y="-1098" isinstance="0" usefillcolor="1" postcondition="" autoresize="1" linewidth="0" localid="uj3Be3GWTjT21" textcolor="#000000" width="15" usesdiagramfillcolor="0" showstereotype="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" activityname="" linecolor="#ff0000"/>
+           <activitywidget xmi.id="uxnqgfk68mGqY" fillcolor="#ffff00" height="20" documentation="" precondition="" usesdiagramusefillcolor="0" x="236" activitytype="4" y="-703" isinstance="0" usefillcolor="1" postcondition="" autoresize="1" linewidth="0" localid="usiFXL48rSA7d" textcolor="#000000" width="20" usesdiagramfillcolor="0" showstereotype="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" activityname="" linecolor="#ff0000"/>
+           <activitywidget xmi.id="uk7Cv8M4DohY0" fillcolor="#ffff00" height="25" documentation="" precondition="" usesdiagramusefillcolor="0" x="-184.612" activitytype="1" y="-569.943" isinstance="0" usefillcolor="1" postcondition="" autoresize="1" linewidth="0" localid="uXxyeifKdcGUj" textcolor="#000000" width="345" usesdiagramfillcolor="0" showstereotype="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" activityname="RC-Task: Alle zwei Sekunden updateLEDSmartGrid" linecolor="#ff0000"/>
+           <activitywidget xmi.id="u0N8AHcfnw6Ci" fillcolor="#ffff00" height="25" documentation="" precondition="" usesdiagramusefillcolor="0" x="-132" activitytype="1" y="-996" isinstance="0" usefillcolor="1" postcondition="" autoresize="1" linewidth="0" localid="uBhpucbErtVv4" textcolor="#000000" width="211" usesdiagramfillcolor="0" showstereotype="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" activityname="store current time in seconds" linecolor="#ff0000"/>
+           <activitywidget xmi.id="uKKcYVFYzNvin" fillcolor="#ffff00" height="20" documentation="" precondition="" usesdiagramusefillcolor="0" x="226" activitytype="4" y="-921" isinstance="0" usefillcolor="1" postcondition="" autoresize="1" linewidth="0" localid="u5dY82BMno9vT" textcolor="#000000" width="20" usesdiagramfillcolor="0" showstereotype="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" activityname="" linecolor="#ff0000"/>
+           <activitywidget xmi.id="umKe1BdKXFLNS" fillcolor="#ffff00" height="25" documentation="" precondition="" usesdiagramusefillcolor="0" x="-180.159" activitytype="1" y="-401.378" isinstance="0" usefillcolor="1" postcondition="" autoresize="1" linewidth="0" localid="uQpKUnRQEVd2d" textcolor="#000000" width="178" usesdiagramfillcolor="0" showstereotype="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" activityname="sonnenstrom berechnen" linecolor="#ff0000"/>
+           <activitywidget xmi.id="uZux4ybnWBxMZ" fillcolor="#ffff00" height="25" documentation="" precondition="" usesdiagramusefillcolor="0" x="-180.159" activitytype="1" y="-284.378" isinstance="0" usefillcolor="1" postcondition="" autoresize="1" linewidth="0" localid="uigbePp2vhdkn" textcolor="#000000" width="163" usesdiagramfillcolor="0" showstereotype="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" activityname="windstärke simulieren" linecolor="#ff0000"/>
+           <activitywidget xmi.id="uk3iESnESyzZ3" fillcolor="#ffff00" height="25" documentation="" precondition="" usesdiagramusefillcolor="0" x="-180.159" activitytype="1" y="-323.378" isinstance="0" usefillcolor="1" postcondition="" autoresize="1" linewidth="0" localid="udQaZaMozRsSB" textcolor="#000000" width="221" usesdiagramfillcolor="0" showstereotype="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" activityname="sonneneinstrahlung simulieren" linecolor="#ff0000"/>
+           <activitywidget xmi.id="u15cb5iKsCKL4" fillcolor="#ffff00" height="25" documentation="" precondition="" usesdiagramusefillcolor="0" x="-180.159" activitytype="1" y="-362.378" isinstance="0" usefillcolor="1" postcondition="" autoresize="1" linewidth="0" localid="uo1dfSHlsQcqs" textcolor="#000000" width="285" usesdiagramfillcolor="0" showstereotype="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" activityname="Anteil erneuerbaren energien berechnen" linecolor="#ff0000"/>
+           <activitywidget xmi.id="ubyfgNkVShrwR" fillcolor="#ffff00" height="25" documentation="" precondition="" usesdiagramusefillcolor="0" x="-183.7" activitytype="1" y="-542.415" isinstance="0" usefillcolor="1" postcondition="" autoresize="1" linewidth="0" localid="u6NWMjciOrzxr" textcolor="#000000" width="260" usesdiagramfillcolor="0" showstereotype="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" activityname="Lux Wert auslesen alle 2.5 Sekunden" linecolor="#ff0000"/>
+           <activitywidget xmi.id="ulCwpzNvIg4cp" fillcolor="#ffff00" height="25" documentation="" precondition="" usesdiagramusefillcolor="0" x="-180.159" activitytype="1" y="-440.378" isinstance="0" usefillcolor="1" postcondition="" autoresize="1" linewidth="0" localid="uQ0DhwhwYFz6s" textcolor="#000000" width="161" usesdiagramfillcolor="0" showstereotype="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" activityname="windstrom berechnen" linecolor="#ff0000"/>
+           <activitywidget xmi.id="uTKD0MyiFx2Zm" fillcolor="#ffff00" height="25" documentation="" precondition="" usesdiagramusefillcolor="0" x="-180.159" activitytype="1" y="-245.378" isinstance="0" usefillcolor="1" postcondition="" autoresize="1" linewidth="0" localid="uWHTlgvDziddU" textcolor="#000000" width="276" usesdiagramfillcolor="0" showstereotype="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" activityname="Stromverbrauch pro Minute bestimmen" linecolor="#ff0000"/>
+           <activitywidget xmi.id="uGkmJCKnqcHEE" fillcolor="#ffff00" height="15" documentation="" precondition="" usesdiagramusefillcolor="0" x="-13.1503" activitytype="2" y="-145.969" isinstance="0" usefillcolor="1" postcondition="" autoresize="1" linewidth="0" localid="uLzdtomczFS7H" textcolor="#000000" width="15" usesdiagramfillcolor="0" showstereotype="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" activityname="" linecolor="#ff0000"/>
+          </widgets>
+          <messages/>
+          <associations>
+           <assocwidget visibilityA="0" fillcolor="none" visibilityB="0" documentation="" usesdiagramusefillcolor="1" roleAdoc="" roleBdoc="" seqnum="" indexb="1" usefillcolor="1" autoresize="1" linewidth="0" localid="uw6NxWfobBQux" textcolor="none" widgetaid="ulCwpzNvIg4cp" type="515" usesdiagramfillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" changeabilityA="900" widgetbid="umKe1BdKXFLNS" indexa="1" linecolor="#ff0000" totalcounta="2" changeabilityB="900" totalcountb="2">
+            <linepath layout="Direct">
+             <startpoint startx="-83.0145" starty="-415.378"/>
+             <endpoint endy="-401.378" endx="-83.0145"/>
+            </linepath>
+           </assocwidget>
+           <assocwidget visibilityA="0" fillcolor="none" visibilityB="0" documentation="" usesdiagramusefillcolor="1" roleAdoc="" roleBdoc="" seqnum="" indexb="1" usefillcolor="1" autoresize="1" linewidth="0" localid="uRdhjNQUqtSWl" textcolor="none" widgetaid="uTKD0MyiFx2Zm" type="515" usesdiagramfillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" changeabilityA="900" widgetbid="uGkmJCKnqcHEE" indexa="1" linecolor="#ff0000" totalcounta="2" changeabilityB="900" totalcountb="2">
+            <linepath layout="Direct">
+             <startpoint startx="-5.65032" starty="-220.378"/>
+             <endpoint endy="-145.969" endx="-5.65032"/>
+            </linepath>
+           </assocwidget>
+           <assocwidget visibilityA="0" fillcolor="none" visibilityB="0" documentation="" usesdiagramusefillcolor="1" roleAdoc="" roleBdoc="" seqnum="" indexb="0" usefillcolor="1" autoresize="1" linewidth="0" localid="uw0bTSPlWQEiq" textcolor="none" widgetaid="uKSkmgmJAMVI7" type="515" usesdiagramfillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" changeabilityA="900" widgetbid="uKSkmgmJAMVI7" indexa="0" linecolor="#ff0000" totalcounta="0" changeabilityB="900" totalcountb="0">
+            <linepath layout="Direct">
+             <startpoint startx="-35" starty="-650"/>
+             <endpoint endy="-650" endx="-25"/>
+             <point x="-35" y="-600"/>
+             <point x="-25" y="-600"/>
+            </linepath>
+           </assocwidget>
+           <assocwidget visibilityA="0" fillcolor="none" visibilityB="0" documentation="" usesdiagramusefillcolor="1" roleAdoc="" roleBdoc="" seqnum="" indexb="1" usefillcolor="1" autoresize="1" linewidth="0" localid="uydgutRYT89U0" textcolor="none" widgetaid="uZux4ybnWBxMZ" type="515" usesdiagramfillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" changeabilityA="900" widgetbid="uTKD0MyiFx2Zm" indexa="1" linecolor="#ff0000" totalcounta="2" changeabilityB="900" totalcountb="2">
+            <linepath layout="Direct">
+             <startpoint startx="-36.8993" starty="-259.378"/>
+             <endpoint endy="-245.378" endx="-36.8993"/>
+            </linepath>
+           </assocwidget>
+           <assocwidget visibilityA="0" fillcolor="none" visibilityB="0" documentation="" usesdiagramusefillcolor="1" roleAdoc="" roleBdoc="" seqnum="" indexb="1" usefillcolor="1" autoresize="1" linewidth="0" localid="uGNHRFAp1D6Sd" textcolor="none" widgetaid="uzcUBe0B5EV7U" type="515" usesdiagramfillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" changeabilityA="900" widgetbid="uKSkmgmJAMVI7" indexa="1" linecolor="#ff0000" totalcounta="2" changeabilityB="900" totalcountb="2">
+            <linepath layout="Direct">
+             <startpoint startx="-40" starty="-727"/>
+             <endpoint endy="-670" endx="-40"/>
+            </linepath>
+           </assocwidget>
+           <assocwidget visibilityA="0" fillcolor="none" visibilityB="0" documentation="" usesdiagramusefillcolor="1" roleAdoc="" roleBdoc="" seqnum="" indexb="1" usefillcolor="1" autoresize="1" linewidth="0" localid="ufydMS61ZncDs" textcolor="none" widgetaid="ubyfgNkVShrwR" type="515" usesdiagramfillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" changeabilityA="900" widgetbid="ulCwpzNvIg4cp" indexa="1" linecolor="#ff0000" totalcounta="2" changeabilityB="900" totalcountb="2">
+            <linepath layout="Direct">
+             <startpoint startx="-90.1994" starty="-517.415"/>
+             <endpoint endy="-440.378" endx="-90.1994"/>
+            </linepath>
+           </assocwidget>
+           <assocwidget visibilityA="0" fillcolor="none" visibilityB="0" documentation="" usesdiagramusefillcolor="1" roleAdoc="" roleBdoc="" seqnum="" indexb="1" usefillcolor="1" autoresize="1" linewidth="0" localid="uEfoFPmzUpDsF" textcolor="none" widgetaid="uDto0z40zOCSG" type="515" usesdiagramfillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" changeabilityA="900" widgetbid="uKKcYVFYzNvin" indexa="1" linecolor="#ff0000" totalcounta="2" changeabilityB="900" totalcountb="2">
+            <linepath layout="Direct">
+             <startpoint startx="-20" starty="-918"/>
+             <endpoint endy="-918" endx="226"/>
+            </linepath>
+           </assocwidget>
+           <assocwidget visibilityA="0" fillcolor="none" visibilityB="0" documentation="" usesdiagramusefillcolor="1" roleAdoc="" roleBdoc="" seqnum="" indexb="1" usefillcolor="1" autoresize="1" linewidth="0" localid="uKEj9QbTcItbG" textcolor="none" widgetaid="uk3iESnESyzZ3" type="515" usesdiagramfillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" changeabilityA="900" widgetbid="uZux4ybnWBxMZ" indexa="1" linecolor="#ff0000" totalcounta="2" changeabilityB="900" totalcountb="2">
+            <linepath layout="Direct">
+             <startpoint startx="-90.1117" starty="-298.378"/>
+             <endpoint endy="-284.378" endx="-90.1117"/>
+            </linepath>
+           </assocwidget>
+           <assocwidget visibilityA="0" fillcolor="none" visibilityB="0" documentation="" usesdiagramusefillcolor="1" roleAdoc="" roleBdoc="" seqnum="" indexb="1" usefillcolor="1" autoresize="1" linewidth="0" localid="uUwNG7EViULpu" textcolor="none" widgetaid="uvTdWUlenSD52" type="515" usesdiagramfillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" changeabilityA="900" widgetbid="uzcUBe0B5EV7U" indexa="1" linecolor="#ff0000" totalcounta="2" changeabilityB="900" totalcountb="2">
+            <linepath layout="Direct">
+             <startpoint startx="-20" starty="-778"/>
+             <endpoint endy="-752" endx="-20"/>
+            </linepath>
+           </assocwidget>
+           <assocwidget visibilityA="0" fillcolor="none" visibilityB="0" documentation="" usesdiagramusefillcolor="1" roleAdoc="" roleBdoc="" seqnum="" indexb="1" usefillcolor="1" autoresize="1" linewidth="0" localid="uxrt6YobKDIrJ" textcolor="none" widgetaid="uk7Cv8M4DohY0" type="515" usesdiagramfillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" changeabilityA="900" widgetbid="ubyfgNkVShrwR" indexa="1" linecolor="#ff0000" totalcounta="2" changeabilityB="900" totalcountb="2">
+            <linepath layout="Direct">
+             <startpoint startx="-53.7002" starty="-544.943"/>
+             <endpoint endy="-542.415" endx="-53.7002"/>
+            </linepath>
+           </assocwidget>
+           <assocwidget visibilityA="0" fillcolor="none" visibilityB="0" documentation="" usesdiagramusefillcolor="1" roleAdoc="" roleBdoc="" seqnum="" indexb="1" usefillcolor="1" autoresize="1" linewidth="0" localid="uC6TrwpRw7F0n" textcolor="none" widgetaid="uxnqgfk68mGqY" type="515" usesdiagramfillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" changeabilityA="900" widgetbid="uKSkmgmJAMVI7" indexa="1" linecolor="#ff0000" totalcounta="2" changeabilityB="900" totalcountb="2">
+            <linepath layout="Direct">
+             <startpoint startx="236" starty="-683"/>
+             <endpoint endy="-670" endx="-20"/>
+            </linepath>
+           </assocwidget>
+           <assocwidget visibilityA="0" fillcolor="none" visibilityB="0" documentation="" usesdiagramusefillcolor="1" roleAdoc="" roleBdoc="" seqnum="" indexb="1" usefillcolor="1" autoresize="1" linewidth="0" localid="uwq9w0473pr9g" textcolor="none" widgetaid="uobfki8tL24Ut" type="515" usesdiagramfillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" changeabilityA="900" widgetbid="uvTdWUlenSD52" indexa="1" linecolor="#ff0000" totalcounta="2" changeabilityB="900" totalcountb="2">
+            <linepath layout="Direct">
+             <startpoint startx="-1" starty="-828"/>
+             <endpoint endy="-803" endx="-1"/>
+            </linepath>
+           </assocwidget>
+           <assocwidget visibilityA="0" fillcolor="none" visibilityB="0" documentation="" usesdiagramusefillcolor="1" roleAdoc="" roleBdoc="" seqnum="" indexb="1" usefillcolor="1" autoresize="1" linewidth="0" localid="uuANGn1DNK1nJ" textcolor="#000000" widgetaid="uDto0z40zOCSG" type="515" usesdiagramfillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" changeabilityA="900" widgetbid="uobfki8tL24Ut" indexa="1" linecolor="#ff0000" totalcounta="2" changeabilityB="900" totalcountb="2">
+            <linepath layout="Direct">
+             <startpoint startx="-40" starty="-918"/>
+             <endpoint endy="-853" endx="-40"/>
+            </linepath>
+            <floatingtext xmi.id="uLj86L6dJtAIO" fillcolor="none" height="19" usesdiagramusefillcolor="1" x="-41" y="-888.5" isinstance="0" usefillcolor="1" autoresize="1" role="703" linewidth="0" localid="u3YM9gfxfymlA" textcolor="none" width="117" pretext="" posttext="" usesdiagramfillcolor="1" showstereotype="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" linecolor="#ff0000" text="Simulation Mode"/>
+           </assocwidget>
+           <assocwidget visibilityA="0" fillcolor="none" visibilityB="0" documentation="" usesdiagramusefillcolor="1" roleAdoc="" roleBdoc="" seqnum="" indexb="1" usefillcolor="1" autoresize="1" linewidth="0" localid="uuwU4AylHP6bs" textcolor="none" widgetaid="ue5XMTdg5UK5q" type="515" usesdiagramfillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" changeabilityA="900" widgetbid="u0N8AHcfnw6Ci" indexa="1" linecolor="#ff0000" totalcounta="2" changeabilityB="900" totalcountb="2">
+            <linepath layout="Direct">
+             <startpoint startx="-29" starty="-1083"/>
+             <endpoint endy="-996" endx="-29"/>
+            </linepath>
+           </assocwidget>
+           <assocwidget visibilityA="0" fillcolor="none" visibilityB="0" documentation="" usesdiagramusefillcolor="1" roleAdoc="" roleBdoc="" seqnum="" indexb="1" usefillcolor="1" autoresize="1" linewidth="0" localid="uqZ4jwJM6eFUg" textcolor="none" widgetaid="u15cb5iKsCKL4" type="515" usesdiagramfillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" changeabilityA="900" widgetbid="uk3iESnESyzZ3" indexa="1" linecolor="#ff0000" totalcounta="2" changeabilityB="900" totalcountb="2">
+            <linepath layout="Direct">
+             <startpoint startx="-61.9994" starty="-337.378"/>
+             <endpoint endy="-323.378" endx="-61.9994"/>
+            </linepath>
+           </assocwidget>
+           <assocwidget visibilityA="0" fillcolor="none" visibilityB="0" documentation="" usesdiagramusefillcolor="1" roleAdoc="" roleBdoc="" seqnum="" indexb="1" usefillcolor="1" autoresize="1" linewidth="0" localid="u6mTqW9r1QE9g" textcolor="none" widgetaid="u0N8AHcfnw6Ci" type="515" usesdiagramfillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" changeabilityA="900" widgetbid="uDto0z40zOCSG" indexa="1" linecolor="#ff0000" totalcounta="2" changeabilityB="900" totalcountb="2">
+            <linepath layout="Direct">
+             <startpoint startx="-30" starty="-971"/>
+             <endpoint endy="-938" endx="-30"/>
+            </linepath>
+           </assocwidget>
+           <assocwidget visibilityA="0" fillcolor="none" visibilityB="0" documentation="" usesdiagramusefillcolor="1" roleAdoc="" roleBdoc="" seqnum="" indexb="1" usefillcolor="1" autoresize="1" linewidth="0" localid="utQJXif6DbuR3" textcolor="none" widgetaid="uKKcYVFYzNvin" type="515" usesdiagramfillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" changeabilityA="900" widgetbid="uxnqgfk68mGqY" indexa="1" linecolor="#ff0000" totalcounta="2" changeabilityB="900" totalcountb="2">
+            <linepath layout="Direct">
+             <startpoint startx="246" starty="-901"/>
+             <endpoint endy="-703" endx="246"/>
+            </linepath>
+           </assocwidget>
+           <assocwidget visibilityA="0" fillcolor="none" visibilityB="0" documentation="" usesdiagramusefillcolor="1" roleAdoc="" roleBdoc="" seqnum="" indexb="1" usefillcolor="1" autoresize="1" linewidth="0" localid="u7Q11azN7gxOn" textcolor="none" widgetaid="umKe1BdKXFLNS" type="515" usesdiagramfillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" changeabilityA="900" widgetbid="u15cb5iKsCKL4" indexa="1" linecolor="#ff0000" totalcounta="2" changeabilityB="900" totalcountb="2">
+            <linepath layout="Direct">
+             <startpoint startx="-29.9386" starty="-376.378"/>
+             <endpoint endy="-362.378" endx="-29.9386"/>
+            </linepath>
+           </assocwidget>
+           <assocwidget visibilityA="0" fillcolor="none" visibilityB="0" documentation="" usesdiagramusefillcolor="1" roleAdoc="" roleBdoc="" seqnum="" indexb="1" usefillcolor="1" autoresize="1" linewidth="0" localid="uKkmAyEo2RYgm" textcolor="none" widgetaid="uKSkmgmJAMVI7" type="515" usesdiagramfillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" changeabilityA="900" widgetbid="uk7Cv8M4DohY0" indexa="2" linecolor="#ff0000" totalcounta="3" changeabilityB="900" totalcountb="2">
+            <linepath layout="Direct">
+             <startpoint startx="-20" starty="-650"/>
+             <endpoint endy="-569.943" endx="-20"/>
+            </linepath>
+           </assocwidget>
+          </associations>
+         </diagram>
+        </diagrams>
+       </XMI.extension>
+      </UML:Package>
+      <UML:Class isRoot="false" isSpecification="false" namespace="Logical_View" isAbstract="false" isLeaf="false" name="consumption" xmi.id="uMvGlW8URBkoI" visibility="public"/>
+      <UML:Class isRoot="false" isSpecification="false" namespace="Logical_View" isAbstract="false" isLeaf="false" name="time" xmi.id="uYHKWwfAvhlMZ" visibility="public"/>
+      <UML:Class isRoot="false" isSpecification="false" namespace="Logical_View" isAbstract="false" isLeaf="false" name="SimulationData" xmi.id="ubNIinuPaP40g" visibility="public">
+       <UML:Classifier.feature>
+        <UML:Attribute isSpecification="false" name="energy_consumption" xmi.id="uuKdk8cH0JmON" visibility="private"/>
+        <UML:Attribute isSpecification="false" name="wall_time" xmi.id="upyTu51w1zXxx" visibility="private"/>
+       </UML:Classifier.feature>
+      </UML:Class>
+     </UML:Namespace.ownedElement>
+     <XMI.extension xmi.extender="umbrello">
+      <diagrams resolution="96">
+       <diagram xmi.id="uv2NJCwGwW2gI" canvaswidth="664" fillcolor="#ffff00" documentation="" showpackage="1" showops="1" snapcsgrid="0" griddotcolor="#d3d3d3" showattsig="1" showattribassocs="1" showopsig="1" usefillcolor="1" snapgrid="0" snapy="25" isopen="1" linewidth="0" textcolor="#000000" localid="-1" type="1" showpubliconly="0" showscope="1" showstereotype="1" showatts="1" showgrid="0" canvasheight="672.217" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" zoom="115" backgroundcolor="#ffffff" name="class diagram" linecolor="#ff0000" snapx="25">
+        <widgets>
+         <classwidget xmi.id="uMOAU183HiBig" fillcolor="#ffff00" height="90" showattsigs="601" showpackage="1" showattributes="1" usesdiagramusefillcolor="0" showoperations="1" x="-315" y="-663" isinstance="0" usefillcolor="1" autoresize="1" linewidth="0" localid="u0hSF5WXbxV5S" textcolor="#000000" width="231" usesdiagramfillcolor="0" showpubliconly="0" showscope="1" showstereotype="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" showopsigs="601" linecolor="#ff0000"/>
+         <classwidget xmi.id="uiwNWKP8gbZyV" fillcolor="#ffff00" height="37" showattsigs="601" showpackage="1" showattributes="1" usesdiagramusefillcolor="0" showoperations="1" x="-503" y="-865" isinstance="0" usefillcolor="1" autoresize="0" linewidth="0" localid="uXYiiKNj5VvbH" textcolor="#000000" width="188" usesdiagramfillcolor="0" showpubliconly="0" showscope="1" showstereotype="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" showopsigs="601" linecolor="#ff0000"/>
+         <classwidget xmi.id="uQOOyYdQvRL2V" fillcolor="#ffff00" height="119" showattsigs="601" showpackage="1" showattributes="1" usesdiagramusefillcolor="0" showoperations="1" x="-154" y="-895" isinstance="0" usefillcolor="1" autoresize="0" linewidth="0" localid="uidWJkdROrXVF" textcolor="#000000" width="269" usesdiagramfillcolor="0" showpubliconly="0" showscope="1" showstereotype="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" showopsigs="601" linecolor="#ff0000"/>
+         <enumwidget xmi.id="ufMuyNTyT74VF" fillcolor="#ffff00" height="150" showpackage="1" usesdiagramusefillcolor="0" x="2" y="-699" isinstance="0" usefillcolor="1" autoresize="1" linewidth="0" localid="un04afOVJ8Xzh" textcolor="#000000" width="159" usesdiagramfillcolor="0" showstereotype="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" linecolor="#ff0000"/>
+         <classwidget xmi.id="ubNIinuPaP40g" fillcolor="#ffff00" height="52" showattsigs="601" showpackage="1" showattributes="1" usesdiagramusefillcolor="0" showoperations="1" x="-278.261" y="-274.783" isinstance="0" usefillcolor="1" autoresize="1" linewidth="0" localid="udSlIkhdSGEDQ" textcolor="#000000" width="168" usesdiagramfillcolor="0" showpubliconly="0" showscope="1" showstereotype="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" showopsigs="601" linecolor="#ff0000"/>
+        </widgets>
+        <messages/>
+        <associations>
+         <assocwidget xmi.id="u2RbAUyesuzLk" visibilityA="1" fillcolor="none" visibilityB="1" usesdiagramusefillcolor="1" seqnum="" indexb="1" usefillcolor="1" autoresize="1" linewidth="0" localid="uAUejIrmDxpbM" textcolor="none" widgetaid="uQOOyYdQvRL2V" type="510" usesdiagramfillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" changeabilityA="900" widgetbid="uiwNWKP8gbZyV" indexa="1" linecolor="#ff0000" totalcounta="2" changeabilityB="900" totalcountb="2">
+          <linepath layout="Direct">
+           <startpoint startx="-154" starty="-862"/>
+           <endpoint endy="-862" endx="-315"/>
+          </linepath>
+          <floatingtext xmi.id="ucPu1Zrv1M5Lx" fillcolor="none" height="19" usesdiagramusefillcolor="1" x="-313" y="-859.5" isinstance="0" usefillcolor="1" autoresize="1" role="710" linewidth="0" localid="uJ1YVTzOqm30p" textcolor="none" width="60" pretext="-" posttext="" usesdiagramfillcolor="1" showstereotype="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" linecolor="#ff0000" text="m_conf"/>
+         </assocwidget>
+         <assocwidget xmi.id="uEHrUkd3oVBck" visibilityA="1" fillcolor="none" visibilityB="1" usesdiagramusefillcolor="1" seqnum="" indexb="1" usefillcolor="1" autoresize="1" linewidth="0" localid="ukdsbOx1BdLOZ" textcolor="none" widgetaid="uQOOyYdQvRL2V" type="510" usesdiagramfillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" changeabilityA="900" widgetbid="uMOAU183HiBig" indexa="1" linecolor="#ff0000" totalcounta="2" changeabilityB="900" totalcountb="2">
+          <linepath layout="Direct">
+           <startpoint startx="-154" starty="-776"/>
+           <endpoint endy="-663" endx="-154"/>
+          </linepath>
+          <floatingtext xmi.id="u5txduFvBZcni" fillcolor="none" height="19" usesdiagramusefillcolor="1" x="-217.5" y="-684" isinstance="0" usefillcolor="1" autoresize="1" role="710" linewidth="0" localid="uAL88kfbEWQyB" textcolor="none" width="66" pretext="-" posttext="" usesdiagramfillcolor="1" showstereotype="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" linecolor="#ff0000" text="m_slave"/>
+         </assocwidget>
+        </associations>
+       </diagram>
+      </diagrams>
+     </XMI.extension>
+    </UML:Model>
+    <UML:Model isRoot="false" isSpecification="false" namespace="m1" isAbstract="false" isLeaf="false" name="Use Case View" xmi.id="Use_Case_View" visibility="public">
+     <UML:Namespace.ownedElement/>
+     <XMI.extension xmi.extender="umbrello">
+      <diagrams resolution="96">
+       <diagram xmi.id="unr8W1LWTisYD" canvaswidth="0" fillcolor="#ffff00" documentation="" showpackage="1" showops="1" snapcsgrid="0" griddotcolor="#d3d3d3" showattsig="1" showattribassocs="1" showopsig="1" usefillcolor="1" snapgrid="0" snapy="25" isopen="1" linewidth="0" textcolor="#000000" localid="-1" type="2" showpubliconly="0" showscope="1" showstereotype="1" showatts="1" showgrid="0" canvasheight="0" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" zoom="100" backgroundcolor="#ffffff" name="Start Simulation" linecolor="#ff0000" snapx="25">
+        <widgets/>
+        <messages/>
+        <associations/>
+       </diagram>
+      </diagrams>
+     </XMI.extension>
+    </UML:Model>
+    <UML:Model isRoot="false" isSpecification="false" namespace="m1" isAbstract="false" isLeaf="false" name="Component View" xmi.id="Component_View" visibility="public">
+     <UML:Namespace.ownedElement>
+      <UML:Package isRoot="false" isSpecification="false" namespace="Component_View" isAbstract="false" isLeaf="false" name="smart_grid_modell" stereotype="subsystem" xmi.id="ulm5BGHL0Ioys" visibility="public">
+       <UML:Namespace.ownedElement>
+        <UML:Package isRoot="false" isSpecification="false" namespace="ulm5BGHL0Ioys" isAbstract="false" isLeaf="false" name="energy_production" stereotype="subsystem" xmi.id="uFKmgZh2MYQ7x" visibility="public">
+         <UML:Namespace.ownedElement>
+          <UML:Package isRoot="false" isSpecification="false" namespace="uFKmgZh2MYQ7x" isAbstract="false" isLeaf="false" name="renewable_energies" stereotype="subsystem" xmi.id="uxMbsAVXjaATA" visibility="public">
+           <UML:Namespace.ownedElement>
+            <UML:Component executable="0" isRoot="false" isSpecification="false" namespace="uxMbsAVXjaATA" isAbstract="false" isLeaf="false" name="solar_plant" xmi.id="uKB55xrNbZRaF" visibility="public"/>
+            <UML:Component executable="0" isRoot="false" isSpecification="false" namespace="uxMbsAVXjaATA" isAbstract="false" isLeaf="false" name="wind_turbine" xmi.id="ufWKeEbWcraHA" visibility="public"/>
+           </UML:Namespace.ownedElement>
+          </UML:Package>
+          <UML:Component executable="0" isRoot="false" isSpecification="false" namespace="uFKmgZh2MYQ7x" isAbstract="false" isLeaf="false" name="power_plant" xmi.id="uJ6VHUfK8c6Mg" visibility="public"/>
+         </UML:Namespace.ownedElement>
+        </UML:Package>
+        <UML:Package isRoot="false" isSpecification="false" namespace="ulm5BGHL0Ioys" isAbstract="false" isLeaf="false" name="energy_consumption" stereotype="subsystem" xmi.id="uIJ4qBdFPdBoS" visibility="public">
+         <UML:Namespace.ownedElement>
+          <UML:Component executable="0" isRoot="false" isSpecification="false" namespace="uIJ4qBdFPdBoS" isAbstract="false" isLeaf="false" name="smart_factory" xmi.id="up5EvY0IwKvlp" visibility="public"/>
+          <UML:Component executable="0" isRoot="false" isSpecification="false" namespace="uIJ4qBdFPdBoS" isAbstract="false" isLeaf="false" name="village" xmi.id="uJzgclVbiOJoe" visibility="public"/>
+         </UML:Namespace.ownedElement>
+        </UML:Package>
+        <UML:Component executable="0" isRoot="false" isSpecification="false" namespace="ulm5BGHL0Ioys" isAbstract="false" isLeaf="false" name="arduino_board" xmi.id="u5ZpE7lcoiZL9" visibility="public"/>
+        <UML:Component executable="0" isRoot="false" isSpecification="false" namespace="ulm5BGHL0Ioys" isAbstract="false" isLeaf="false" name="lux_sensor" xmi.id="uxfgmd1yjg0ua" visibility="public"/>
+       </UML:Namespace.ownedElement>
+      </UML:Package>
+      <UML:Package isRoot="false" isSpecification="false" namespace="Component_View" isAbstract="false" isLeaf="false" name="control_unit" stereotype="subsystem" xmi.id="udA0mwJhhrxHB" visibility="public">
+       <UML:Namespace.ownedElement/>
+      </UML:Package>
+      <UML:Package isRoot="false" isSpecification="false" namespace="Component_View" isAbstract="false" isLeaf="false" name="cloud" stereotype="subsystem" xmi.id="u50yT1HflP8A7" visibility="public">
+       <UML:Namespace.ownedElement/>
+      </UML:Package>
+      <UML:Component executable="0" isRoot="false" isSpecification="false" namespace="Component_View" isAbstract="false" isLeaf="false" name="opc_ua" xmi.id="uwlVTNdYZfBge" visibility="public"/>
+     </UML:Namespace.ownedElement>
+     <XMI.extension xmi.extender="umbrello">
+      <diagrams resolution="96">
+       <diagram xmi.id="uzdj06SqrzzuG" canvaswidth="1002.11" fillcolor="#ffff00" documentation="" showpackage="1" showops="1" snapcsgrid="0" griddotcolor="#d3d3d3" showattsig="1" showattribassocs="1" showopsig="1" usefillcolor="1" snapgrid="0" snapy="25" isopen="1" linewidth="0" textcolor="#000000" localid="-1" type="7" showpubliconly="0" showscope="1" showstereotype="1" showatts="1" showgrid="0" canvasheight="1145.06" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" zoom="93" backgroundcolor="#ffffff" name="component diagram" linecolor="#ff0000" snapx="25">
+        <widgets>
+         <componentwidget isinstance="0" usesdiagramfillcolor="0" autoresize="1" fillcolor="#ffff00" height="60" localid="useiU1HJzxoC8" x="3511.47" textcolor="#000000" y="-2018.25" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" usesdiagramusefillcolor="0" width="161" showstereotype="1" linecolor="#ff0000" usefillcolor="1" linewidth="0" xmi.id="up5EvY0IwKvlp"/>
+         <packagewidget isinstance="0" usesdiagramfillcolor="0" autoresize="0" fillcolor="#ffff00" height="57.3256" localid="up2YSXKO4igp8" x="3120.63" textcolor="#000000" y="-2056.05" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" usesdiagramusefillcolor="0" width="175.605" showstereotype="1" linecolor="#ff0000" usefillcolor="1" linewidth="0" xmi.id="uxMbsAVXjaATA"/>
+         <packagewidget isinstance="0" usesdiagramfillcolor="0" autoresize="0" fillcolor="#ffff00" height="98.0695" localid="uHXRJwltty6bY" x="3051.15" textcolor="#000000" y="-2400.07" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" usesdiagramusefillcolor="0" width="1000" showstereotype="1" linecolor="#ff0000" usefillcolor="1" linewidth="0" xmi.id="ulm5BGHL0Ioys"/>
+         <componentwidget isinstance="0" usesdiagramfillcolor="0" autoresize="1" fillcolor="#ffff00" height="60" localid="uoXR9MEWlSUmE" x="3299.97" textcolor="#000000" y="-2124.78" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" usesdiagramusefillcolor="0" width="150" showstereotype="1" linecolor="#ff0000" usefillcolor="1" linewidth="0" xmi.id="uJ6VHUfK8c6Mg"/>
+         <componentwidget isinstance="0" usesdiagramfillcolor="0" autoresize="1" fillcolor="#ffff00" height="60" localid="uAY30sCIdibzS" x="3233.03" textcolor="#000000" y="-1943.65" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" usesdiagramusefillcolor="0" width="141" showstereotype="1" linecolor="#ff0000" usefillcolor="1" linewidth="0" xmi.id="uKB55xrNbZRaF"/>
+         <componentwidget isinstance="0" usesdiagramfillcolor="0" autoresize="1" fillcolor="#ffff00" height="60" localid="u4DuLMACiC98f" x="3069.99" textcolor="#000000" y="-1943.34" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" usesdiagramusefillcolor="0" width="155" showstereotype="1" linecolor="#ff0000" usefillcolor="1" linewidth="0" xmi.id="ufWKeEbWcraHA"/>
+         <componentwidget isinstance="0" usesdiagramfillcolor="0" autoresize="1" fillcolor="#ffff00" height="60" localid="usPiOciuqs8E1" x="3690.07" textcolor="#000000" y="-2020.19" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" usesdiagramusefillcolor="0" width="109" showstereotype="1" linecolor="#ff0000" usefillcolor="1" linewidth="0" xmi.id="uJzgclVbiOJoe"/>
+         <componentwidget isinstance="0" usesdiagramfillcolor="0" autoresize="0" fillcolor="#ffff00" height="60" localid="u3wiRE5Nl27Yo" x="3882.03" textcolor="#000000" y="-2208.96" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" usesdiagramusefillcolor="0" width="170.922" showstereotype="1" linecolor="#ff0000" usefillcolor="1" linewidth="0" xmi.id="u5ZpE7lcoiZL9"/>
+         <packagewidget isinstance="0" usesdiagramfillcolor="0" autoresize="0" fillcolor="#ffff00" height="89.4556" localid="uR5dc3nh7u4HA" x="3329.89" textcolor="#000000" y="-2782.29" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" usesdiagramusefillcolor="0" width="486.242" showstereotype="1" linecolor="#ff0000" usefillcolor="1" linewidth="0" xmi.id="udA0mwJhhrxHB"/>
+         <componentwidget isinstance="0" usesdiagramfillcolor="0" autoresize="0" fillcolor="#ffff00" height="60" localid="um9bOiiVCb3G7" x="3854.73" textcolor="#000000" y="-2116.52" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" usesdiagramusefillcolor="0" width="198.528" showstereotype="1" linecolor="#ff0000" usefillcolor="1" linewidth="0" xmi.id="uxfgmd1yjg0ua"/>
+         <packagewidget isinstance="0" usesdiagramfillcolor="0" autoresize="1" fillcolor="#ffff00" height="55" localid="uvxeRJtvp50IG" x="3585.76" textcolor="#000000" y="-2118.67" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" usesdiagramusefillcolor="0" width="162" showstereotype="1" linecolor="#ff0000" usefillcolor="1" linewidth="0" xmi.id="uIJ4qBdFPdBoS"/>
+         <packagewidget isinstance="0" usesdiagramfillcolor="0" autoresize="1" fillcolor="#ffff00" height="55" localid="uyaG1vk3JevCI" x="3191.23" textcolor="#000000" y="-2202.95" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" usesdiagramusefillcolor="0" width="147" showstereotype="1" linecolor="#ff0000" usefillcolor="1" linewidth="0" xmi.id="uFKmgZh2MYQ7x"/>
+         <packagewidget isinstance="0" usesdiagramfillcolor="0" autoresize="1" fillcolor="#ffff00" height="55" localid="uEqdN3CwWUbFH" x="3518.16" textcolor="#000000" y="-3028.4" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" usesdiagramusefillcolor="0" width="106" showstereotype="1" linecolor="#ff0000" usefillcolor="1" linewidth="0" xmi.id="u50yT1HflP8A7"/>
+         <componentwidget isinstance="0" usesdiagramfillcolor="0" autoresize="1" fillcolor="#ffff00" height="60" localid="ueM575Mn7M67S" x="3374.19" textcolor="#000000" y="-2640.78" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" usesdiagramusefillcolor="0" width="110" showstereotype="1" linecolor="#ff0000" usefillcolor="1" linewidth="0" xmi.id="uwlVTNdYZfBge"/>
+        </widgets>
+        <messages/>
+        <associations>
+         <assocwidget visibilityA="0" fillcolor="none" visibilityB="0" documentation="" usesdiagramusefillcolor="1" roleAdoc="" roleBdoc="" seqnum="" indexb="1" usefillcolor="1" autoresize="1" linewidth="0" localid="u3TCpfjcUCXmo" textcolor="none" widgetaid="ulm5BGHL0Ioys" type="509" usesdiagramfillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" changeabilityA="900" widgetbid="uIJ4qBdFPdBoS" indexa="1" linecolor="#ff0000" totalcounta="2" changeabilityB="900" totalcountb="2">
+          <linepath layout="Direct">
+           <startpoint startx="3585.76" starty="-2302"/>
+           <endpoint endy="-2118.67" endx="3585.76"/>
+          </linepath>
+         </assocwidget>
+         <assocwidget visibilityA="0" fillcolor="none" visibilityB="0" documentation="" usesdiagramusefillcolor="1" roleAdoc="" roleBdoc="" seqnum="" indexb="1" usefillcolor="1" autoresize="1" linewidth="0" localid="ukUwT0UHnZLW0" textcolor="none" widgetaid="ulm5BGHL0Ioys" type="509" usesdiagramfillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" changeabilityA="900" widgetbid="uFKmgZh2MYQ7x" indexa="1" linecolor="#ff0000" totalcounta="2" changeabilityB="900" totalcountb="2">
+          <linepath layout="Direct">
+           <startpoint startx="3196.15" starty="-2302"/>
+           <endpoint endy="-2202.95" endx="3196.15"/>
+          </linepath>
+         </assocwidget>
+         <assocwidget visibilityA="0" fillcolor="none" visibilityB="0" documentation="" usesdiagramusefillcolor="1" roleAdoc="" roleBdoc="" seqnum="" indexb="1" usefillcolor="1" autoresize="1" linewidth="0" localid="u1ShoG1h0VB1x" textcolor="none" widgetaid="uIJ4qBdFPdBoS" type="509" usesdiagramfillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" changeabilityA="900" widgetbid="up5EvY0IwKvlp" indexa="1" linecolor="#ff0000" totalcounta="2" changeabilityB="900" totalcountb="2">
+          <linepath layout="Direct">
+           <startpoint startx="3651.23" starty="-2063.67"/>
+           <endpoint endy="-2018.25" endx="3651.23"/>
+          </linepath>
+         </assocwidget>
+         <assocwidget visibilityA="0" fillcolor="none" visibilityB="0" documentation="" usesdiagramusefillcolor="1" roleAdoc="" roleBdoc="" seqnum="" indexb="1" usefillcolor="1" autoresize="1" linewidth="0" localid="uav1u3pbEHfaF" textcolor="none" widgetaid="ulm5BGHL0Ioys" type="509" usesdiagramfillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" changeabilityA="900" widgetbid="u5ZpE7lcoiZL9" indexa="1" linecolor="#ff0000" totalcounta="2" changeabilityB="900" totalcountb="2">
+          <linepath layout="Direct">
+           <startpoint startx="3882.03" starty="-2302"/>
+           <endpoint endy="-2208.96" endx="3882.03"/>
+          </linepath>
+         </assocwidget>
+         <assocwidget visibilityA="0" fillcolor="none" visibilityB="0" documentation="" usesdiagramusefillcolor="1" roleAdoc="" roleBdoc="" seqnum="" indexb="1" usefillcolor="1" autoresize="1" linewidth="0" localid="ukx5q3JT5RI6n" textcolor="none" widgetaid="uxMbsAVXjaATA" type="509" usesdiagramfillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" changeabilityA="900" widgetbid="ufWKeEbWcraHA" indexa="1" linecolor="#ff0000" totalcounta="2" changeabilityB="900" totalcountb="2">
+          <linepath layout="Direct">
+           <startpoint startx="3167.15" starty="-1998.72"/>
+           <endpoint endy="-1943.34" endx="3167.15"/>
+          </linepath>
+         </assocwidget>
+         <assocwidget visibilityA="0" fillcolor="none" visibilityB="0" documentation="" usesdiagramusefillcolor="1" roleAdoc="" roleBdoc="" seqnum="" indexb="1" usefillcolor="1" autoresize="1" linewidth="0" localid="uScvkkEKAdfQL" textcolor="none" widgetaid="ulm5BGHL0Ioys" type="509" usesdiagramfillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" changeabilityA="900" widgetbid="uxfgmd1yjg0ua" indexa="1" linecolor="#ff0000" totalcounta="2" changeabilityB="900" totalcountb="2">
+          <linepath layout="Direct">
+           <startpoint startx="3854.73" starty="-2302"/>
+           <endpoint endy="-2116.52" endx="3854.73"/>
+          </linepath>
+         </assocwidget>
+         <assocwidget visibilityA="0" fillcolor="none" visibilityB="0" documentation="" usesdiagramusefillcolor="1" roleAdoc="" roleBdoc="" seqnum="" indexb="1" usefillcolor="1" autoresize="1" linewidth="0" localid="u9ALSCVr9U9HH" textcolor="none" widgetaid="uxMbsAVXjaATA" type="509" usesdiagramfillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" changeabilityA="900" widgetbid="uKB55xrNbZRaF" indexa="1" linecolor="#ff0000" totalcounta="2" changeabilityB="900" totalcountb="2">
+          <linepath layout="Direct">
+           <startpoint startx="3254.66" starty="-1998.72"/>
+           <endpoint endy="-1943.65" endx="3254.66"/>
+          </linepath>
+         </assocwidget>
+         <assocwidget visibilityA="0" fillcolor="none" visibilityB="0" documentation="" usesdiagramusefillcolor="1" roleAdoc="" roleBdoc="" seqnum="" indexb="1" usefillcolor="1" autoresize="1" linewidth="0" localid="uJV2FAvgM5N4q" textcolor="none" widgetaid="uFKmgZh2MYQ7x" type="509" usesdiagramfillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" changeabilityA="900" widgetbid="uJ6VHUfK8c6Mg" indexa="1" linecolor="#ff0000" totalcounta="2" changeabilityB="900" totalcountb="2">
+          <linepath layout="Direct">
+           <startpoint startx="3324.58" starty="-2147.95"/>
+           <endpoint endy="-2124.78" endx="3324.58"/>
+          </linepath>
+         </assocwidget>
+         <assocwidget visibilityA="0" fillcolor="none" visibilityB="0" documentation="" usesdiagramusefillcolor="1" roleAdoc="" roleBdoc="" seqnum="" indexb="1" usefillcolor="1" autoresize="1" linewidth="0" localid="uAFIh93cnm51w" textcolor="none" widgetaid="uIJ4qBdFPdBoS" type="509" usesdiagramfillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" changeabilityA="900" widgetbid="uJzgclVbiOJoe" indexa="1" linecolor="#ff0000" totalcounta="2" changeabilityB="900" totalcountb="2">
+          <linepath layout="Direct">
+           <startpoint startx="3715.39" starty="-2063.67"/>
+           <endpoint endy="-2020.19" endx="3715.39"/>
+          </linepath>
+         </assocwidget>
+         <assocwidget visibilityA="0" fillcolor="none" visibilityB="0" documentation="" usesdiagramusefillcolor="1" roleAdoc="" roleBdoc="" seqnum="" indexb="1" usefillcolor="1" autoresize="1" linewidth="0" localid="ukbLKdwfFo8aR" textcolor="none" widgetaid="uFKmgZh2MYQ7x" type="509" usesdiagramfillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" changeabilityA="900" widgetbid="uxMbsAVXjaATA" indexa="1" linecolor="#ff0000" totalcounta="2" changeabilityB="900" totalcountb="2">
+          <linepath layout="Direct">
+           <startpoint startx="3210.46" starty="-2147.95"/>
+           <endpoint endy="-2056.05" endx="3210.46"/>
+          </linepath>
+         </assocwidget>
+        </associations>
+       </diagram>
+      </diagrams>
+     </XMI.extension>
+    </UML:Model>
+    <UML:Model isRoot="false" isSpecification="false" namespace="m1" isAbstract="false" isLeaf="false" name="Deployment View" xmi.id="Deployment_View" visibility="public">
+     <UML:Namespace.ownedElement/>
+    </UML:Model>
+    <UML:Model isRoot="false" isSpecification="false" namespace="m1" isAbstract="false" isLeaf="false" name="Entity Relationship Model" xmi.id="Entity_Relationship_Model" visibility="public">
+     <UML:Namespace.ownedElement/>
+    </UML:Model>
+   </UML:Namespace.ownedElement>
+  </UML:Model>
+ </XMI.content>
+ <XMI.extensions xmi.extender="umbrello">
+  <docsettings uniqueid="uhkqqMgz4UEoY" viewid="uv2NJCwGwW2gI" documentation=""/>
+  <listview>
+   <listitem open="1" id="Views" type="800">
+    <listitem open="1" id="Component_View" type="821">
+     <listitem open="1" id="u50yT1HflP8A7" type="837"/>
+     <listitem open="0" label="component diagram" id="uzdj06SqrzzuG" type="819"/>
+     <listitem open="1" id="udA0mwJhhrxHB" type="837"/>
+     <listitem open="1" id="uwlVTNdYZfBge" type="822"/>
+     <listitem open="0" id="ulm5BGHL0Ioys" type="837">
+      <listitem open="0" id="u5ZpE7lcoiZL9" type="822"/>
+      <listitem open="1" id="uIJ4qBdFPdBoS" type="837">
+       <listitem open="0" id="up5EvY0IwKvlp" type="822"/>
+       <listitem open="0" id="uJzgclVbiOJoe" type="822"/>
+      </listitem>
+      <listitem open="1" id="uFKmgZh2MYQ7x" type="837">
+       <listitem open="0" id="uJ6VHUfK8c6Mg" type="822"/>
+       <listitem open="1" id="uxMbsAVXjaATA" type="837">
+        <listitem open="0" id="uKB55xrNbZRaF" type="822"/>
+        <listitem open="0" id="ufWKeEbWcraHA" type="822"/>
+       </listitem>
+      </listitem>
+      <listitem open="0" id="uxfgmd1yjg0ua" type="822"/>
+     </listitem>
+    </listitem>
+    <listitem open="1" id="Deployment_View" type="827"/>
+    <listitem open="1" id="Entity_Relationship_Model" type="836"/>
+    <listitem open="1" id="Logical_View" type="801">
+     <listitem open="0" id="uDYdQqfVNrs0T" type="818">
+      <listitem open="0" id="uQOOyYdQvRL2V" type="813">
+       <listitem open="0" id="ucGkqrzmBVu5L" type="815"/>
+       <listitem open="0" id="u2RbAUyesuzLk" type="814"/>
+       <listitem open="0" id="uEHrUkd3oVBck" type="814"/>
+       <listitem open="0" id="uWzM79zEjblIT" type="815"/>
+      </listitem>
+      <listitem open="0" id="uiwNWKP8gbZyV" type="813">
+       <listitem open="0" id="uiZDsnYkbWRTG" type="814"/>
+      </listitem>
+      <listitem open="0" id="ufMuyNTyT74VF" type="831">
+       <listitem open="0" id="uVH9WioTOm9mD" type="839"/>
+       <listitem open="0" id="uMbd0efu6QNT6" type="839"/>
+       <listitem open="0" id="uix2xcSTX9EQI" type="839"/>
+       <listitem open="0" id="uewcOnW6Pauug" type="839"/>
+       <listitem open="0" id="u9Bp3GzPeC5YB" type="839"/>
+       <listitem open="0" id="uvUbUQYDKTKt9" type="839"/>
+       <listitem open="0" id="u8cXze4wGXjKQ" type="839"/>
+       <listitem open="0" id="uGVtBWwVF8ZMz" type="839"/>
+      </listitem>
+     </listitem>
+     <listitem open="0" label="class diagram" id="uv2NJCwGwW2gI" type="807"/>
+     <listitem open="1" id="uMvGlW8URBkoI" type="813"/>
+     <listitem open="0" id="Datatypes" type="830">
+      <listitem open="0" id="uCeoqNxZejxsR" type="829"/>
+      <listitem open="0" id="uO1KcWtFBFYfI" type="829"/>
+      <listitem open="0" id="uH8GWDXnYcJkC" type="829"/>
+      <listitem open="0" id="uMNyJRkDUftWt" type="829"/>
+      <listitem open="0" id="uwW16VQpBzLha" type="829"/>
+      <listitem open="0" id="uOIwrDTWkjoHn" type="829"/>
+      <listitem open="0" id="uErNMZys0KER8" type="829"/>
+      <listitem open="0" id="uBxjjlJW4VOod" type="829"/>
+      <listitem open="0" id="uTL3WSShkBco7" type="829"/>
+      <listitem open="0" id="u8aSixwniVnav" type="829"/>
+      <listitem open="0" id="u2OhwfjjWeGJc" type="829"/>
+      <listitem open="0" id="uCT3FLzhHRQ0A" type="829"/>
+      <listitem open="0" id="um7NLqeEytI5R" type="829"/>
+      <listitem open="0" id="upKtb9fiT493O" type="829"/>
+      <listitem open="0" id="uoA3imLSolwn0" type="829"/>
+      <listitem open="0" id="uwdaWvEtGg0U6" type="829"/>
+      <listitem open="0" id="ugztZvNdrku5J" type="829"/>
+      <listitem open="0" id="u0Au5V2DrbiLK" type="829"/>
+     </listitem>
+     <listitem open="1" id="u9pjInofiy2Ve" type="818">
+      <listitem open="0" id="uMOAU183HiBig" type="813">
+       <listitem open="0" id="uFu4l68ionUW2" type="814"/>
+       <listitem open="0" id="ugx8hBJtBnqRT" type="814"/>
+       <listitem open="0" id="uZgNQeb5Wm8o3" type="815"/>
+       <listitem open="0" id="u55REngZ9cwHS" type="815"/>
+       <listitem open="0" id="ucChQe46n8YKe" type="815"/>
+      </listitem>
+     </listitem>
+     <listitem open="1" id="uUxUQrXYdqf4w" type="803">
+      <listitem open="0" label="activity diagram" id="uwFZ8RWFg4nPl" type="809"/>
+     </listitem>
+     <listitem open="1" id="ubNIinuPaP40g" type="813">
+      <listitem open="0" id="uuKdk8cH0JmON" type="814"/>
+      <listitem open="0" id="upyTu51w1zXxx" type="814"/>
+     </listitem>
+     <listitem open="1" id="udmtCeZ2YxFWM" type="813"/>
+     <listitem open="1" id="uYHKWwfAvhlMZ" type="813"/>
+    </listitem>
+    <listitem open="1" id="Use_Case_View" type="802">
+     <listitem open="0" label="Start Simulation" id="unr8W1LWTisYD" type="805"/>
+    </listitem>
+   </listitem>
+  </listview>
+  <codegeneration>
+   <codegenerator language="C++"/>
+  </codegeneration>
+ </XMI.extensions>
+</XMI>
diff --git a/src/Arduino.hpp b/src/Arduino.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..ecf516701d78861bf25687bdb4c42bd1003a2a37
--- /dev/null
+++ b/src/Arduino.hpp
@@ -0,0 +1,72 @@
+/// @file   Arduino.hpp
+/// @brief  Interface to interact with an Arduino.
+///
+/// @details    Wrapps commands for setting output pins
+///             and reading sensor values.
+///
+
+#ifndef ARDUINO_HEADER
+#define ARDUINO_HEADER
+
+#include "i2c/Node.hpp"
+
+namespace arduino
+{
+
+/// @brief Configuration to pass at the 
+///         creation of an new object.
+///
+struct Config
+{
+    char I2CNodeAdress; ///< Adress as hex
+};
+
+/// @brief Pins that are used on the arduino
+///
+enum class Pin : unsigned char
+{
+    MotorPWM     = 0x02,    ///< 2
+    LampPWM      = 0x03,    ///< 3
+    SolarPWM     = 0x04,    ///< 4
+    WindPWM      = 0x05,    ///< 5
+    WindSolarPWM = 0x06,    ///< 6
+    NetPWM       = 0x07,    ///< 7
+    MixGreenPWM  = 0x08,    ///< 8
+    MixRedPWM    = 0x09,    ///< 9
+    HousesWhite  = 0x10,    ///< 16
+    House1Red    = 0x2f,    ///< 47
+    House1Green  = 0x29,    ///< 41
+    House2Red    = 0x35,    ///< 53
+    House2Green  = 0x2d,    ///< 45
+    House3Red    = 0x33,    ///< 51
+    House3Green  = 0x31,    ///< 49
+    House4Red    = 0x2B,    ///< 43
+    House4Green  = 0x25,    ///< 37
+    House5Red    = 0x27,    ///< 39
+    Hoise5Green  = 0x23     ///< 35
+};
+
+
+/// @brief Arduino board class.
+///
+class Board
+{
+public:
+    /// @brief Create Arduino interface
+    ///
+    Board(Config conf);
+
+    /// @brief Set an output pin to the given value
+    /// @param pin Pin that should be set
+    /// @param value The value the pin should be set to 0x00 - 0xFF
+    ///
+    void set_output_pin(Pin pin, char value);
+
+private:
+    Config m_conf; ///< Configuration
+    i2c::Node m_Node; ///< I2C communication interface
+};
+
+}
+
+#endif ARDUINO_HEADER
diff --git a/src/SimModell.hpp b/src/SimModell.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..bf5586d7776323bad7be1ae33f14e6bb3bf9bb7c
--- /dev/null
+++ b/src/SimModell.hpp
@@ -0,0 +1,43 @@
+/// @file
+/// @brief A collection of functions used in the simulation.
+///
+/// @details
+///
+
+#ifndef SIM_MODELL_HEADER
+#define SIM_MODELL_HEADER
+
+namespace sim
+{
+    struct Consumption
+    {
+        double total; ///< [kW]
+    };
+
+    struct Production
+    {
+        double wind; ///< [kW]
+        double sun; ///< [kW]
+        double conventional; ///< [kW]
+    };
+
+    struct Environment
+    {
+        double wind_speed; ///< [ms]
+        double lux_sensor; ///< [lux]
+        double sun_brightness; ///< [lux]
+    };
+
+    struct Time
+    {
+        int hour;
+        int minute;
+    };
+
+    void calc_wind_production();
+    void calc_photovoltaic_production();
+    void energy_consumption_per_min();
+    void update_smart_grid();
+}
+
+#endif SIM_MODELL_HEADER
\ No newline at end of file
diff --git a/src/i2c/Node.cpp b/src/i2c/Node.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..a35453260e5ec58bf3bcfcd78bd152c86660be73
--- /dev/null
+++ b/src/i2c/Node.cpp
@@ -0,0 +1,30 @@
+#include "Node.hpp"
+
+#include <asm/ioctl.h>
+
+using namespace i2c;
+
+Node::Node(char dev_id, const char* i2c_device_name) : m_address{dev_id}
+{
+    open();
+}
+
+
+bool Node::write(std::vector<char> data)
+{
+    bool success {true};
+
+    if (fd < 0)
+    {
+        // error creating file descriptor
+        success = false;
+    }
+
+
+}
+
+
+int Node::read(char reg_addr)
+{
+
+}
\ No newline at end of file
diff --git a/src/i2c/Node.hpp b/src/i2c/Node.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..02357a076482dedaaae5a07afd4b7f4ef40dc83c
--- /dev/null
+++ b/src/i2c/Node.hpp
@@ -0,0 +1,51 @@
+/// @file   Node.hpp
+/// @brief  I2c node class.
+///
+/// @details    Use the GPIO pins with the wiring pi library
+///             for i2c communication.
+///
+
+#ifndef I2C_NODE_HEADER
+#define I2C_NODE_HEADER
+
+#include <vector>
+
+namespace i2c
+{
+
+/// @brief Node class
+///
+class Node 
+{
+public:
+    /// @brief Create node device
+    ///
+    /// @param devId address of the node device
+    ///
+    Node(char dev_id, const char* i2c_device_name);
+
+
+    /// @brief Write vector of values to node
+    ///
+    /// @param data Data that should be written
+    /// @return If write operation was successfull
+    //
+    bool write(std::vector<char> data);
+
+
+    /// @brief Read from node
+    ///
+    /// @param  regAddress Address of the register to 
+    ///         read from
+    /// @return Returns the received value from the register
+    ///
+    int read(char reg_addr);
+
+private:
+    char m_address; ///< Adress of the node device
+};
+
+} // i2c namespace
+
+
+#endif I2C_NODE_HEADER
\ No newline at end of file
diff --git a/src/Berechnung.c b/src/old/Berechnung.c
similarity index 100%
rename from src/Berechnung.c
rename to src/old/Berechnung.c
diff --git a/src/Berechnung.h b/src/old/Berechnung.h
similarity index 99%
rename from src/Berechnung.h
rename to src/old/Berechnung.h
index 373c3627e29b250e3ad1261e920bff15604fde36..c076e2218a3f4029c2e8fdd4d54ed165e491ec61 100644
--- a/src/Berechnung.h
+++ b/src/old/Berechnung.h
@@ -21,15 +21,8 @@ extern int stunde;
 extern int minute;
 
 extern void berechneWindStrom(void);
-
-
 extern void berechneSonneStrom(char modus);
-
-
 extern void berechneAnteil (void);
-
-
 extern void berechneStromverbrauchProMinute(void);
-
 extern void updateLEDSmartGrid(int aus);
 
diff --git a/src/I2C.c b/src/old/I2C.c
similarity index 97%
rename from src/I2C.c
rename to src/old/I2C.c
index e7994237338b22338ece57cafbc2d361436f23e8..c4f13b78c2e428c2f9d6fb38383f36e7d1b8d678 100644
--- a/src/I2C.c
+++ b/src/old/I2C.c
@@ -52,7 +52,7 @@ int getLuxValue()
 {
   //wiringPiSetupSys();
   int handle = wiringPiI2CSetup(0x23);
-  wiringPiI2CWrite(handle, 0x10);
+  wiringPiI2CWrite(handle, 0x10); /// WHY???
   sleep(1);
   int word = wiringPiI2CReadReg16(handle,0x00);
   int lux = ((word & 0xff00)>>8) | ((word & 0x00ff)<<8);
diff --git a/src/I2C.h b/src/old/I2C.h
similarity index 100%
rename from src/I2C.h
rename to src/old/I2C.h
diff --git a/src/Makefile b/src/old/Makefile
similarity index 100%
rename from src/Makefile
rename to src/old/Makefile
diff --git a/src/old/SimulationValues.hpp b/src/old/SimulationValues.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..670bd0880639262c38941752687f8e9f66d543ab
--- /dev/null
+++ b/src/old/SimulationValues.hpp
@@ -0,0 +1,29 @@
+/// @file   SimulationValues.hpp
+/// @brief  Values used in the simulation.
+///
+
+#ifndef SIMULATION_VALUES_HEADER
+#define SIMULATION_VALUES_HEADER
+
+#include <array>
+
+namespace sim
+{
+    // Hourly power consumption from 0h - 24h
+    constexpr std::array<int, 25> power_consumption {
+         98,  95,  93,  94,  95, 
+        101, 115, 127, 132, 134, 
+        136, 139, 138, 136, 134, 
+        132, 130, 132, 132, 131, 
+        125, 119, 114, 105,  98
+    };
+
+    // Wind power steps
+    constexpr std::array<int, 13> wind_power {
+        0, 3, 25, 82, 174, 321, 532, 815, 1180, 1612, 1890, 2000, 2100
+    };
+
+    constexpr int max_power_wind_mill {2100};
+}
+
+#endif
\ No newline at end of file
diff --git a/src/Smart.glade b/src/old/Smart.glade
similarity index 100%
rename from src/Smart.glade
rename to src/old/Smart.glade
diff --git a/src/Smart02.c b/src/old/Smart02.c
similarity index 76%
rename from src/Smart02.c
rename to src/old/Smart02.c
index a90600935877841cef48040f273f5db2349592b3..84ae2a58ae47e9d4edd5aefee4725b4a2e0c82e3 100644
--- a/src/Smart02.c
+++ b/src/old/Smart02.c
@@ -74,7 +74,7 @@ void SetModus(char m)
 			break;
 	}
 }
-uint64_t update_Info_Verbrauch()
+uint64_t  update_Info_Verbrauch()
 {	
   char info[50] = {0};  
   uint64_t einwohner = (int) gtk_adjustment_get_value (GTK_ADJUSTMENT(g_adj_Einwohner));
@@ -110,7 +110,6 @@ void main_loop()
 	while(run)
 	{
 		currentTime = millis();
-		 //printf("RC TASK %d", currentTime);
 		gtk_main_iteration_do(FALSE);
 		
 		if (modus == 2) //Simulationsmodus
@@ -127,110 +126,101 @@ void main_loop()
 					uhrzeit = 0;
 					bewoelkung = rand() % 6 + 1;
 				}
-				//printf("c: %d rc: %d", currentTime, uhrTime);
 			}
 		}
 		
-		// printf("c: %d rc: %d", currentTime, rcTime);
-     if (currentTime >= rcTime)  //rc loop
-     {
-	  //LED-Ansteuerung alle 2 Sekunden
-	  rcTime = currentTime +2000;
-	  updateLEDSmartGrid(1);
-	  printf("\nRC TASK %d", currentTime);
-	  //rc-TASK
-     }
-     if (currentTime >= luxTime) //Lux-Wert auslesen alle 2,5 s
-     {
-         lux = getLuxValue();
-         printf("\nLux:%d", lux);
-         luxTime = currentTime + 2500;
-	 }
-	 
-     else  
-     {
-		//printf("Else %d", currentTime);
-		 static uint8_t task =0;
-		 switch (task++ % 5) {
-			 case 0:			   //Anzeige Windstrom aktualisieren
+		if (currentTime >= rcTime)  //rc loop
+		{
+			//LED-Ansteuerung alle 2 Sekunden
+			rcTime = currentTime +2000;
+			updateLEDSmartGrid(1);
+			printf("\nRC TASK %d", currentTime);
+		//rc-TASK
+		}
+		if (currentTime >= luxTime) //Lux-Wert auslesen alle 2,5 s
+		{
+			lux = getLuxValue();
+			printf("\nLux:%d", lux);
+			luxTime = currentTime + 2500;
+		}
+		
+		else  
+		{
+			static uint8_t task =0;
+			switch (task++ % 5) {
+			case 0:			   //Anzeige Windstrom aktualisieren
 				berechneWindStrom();					
-				char str_wind[10] = {0};  
-				sprintf(str_wind, "%d", erzeugungwindkw);
-				gtk_label_set_text(GTK_LABEL(g_lbl_wind), str_wind);
-				gtk_main_iteration_do(FALSE);
-			  break;
-			 case 1: //Anzeige Sonnestrom aktualisieren
-				berechneSonneStrom(modus);
-				char str_sonne[10] = {0};  
-				sprintf(str_sonne, "%d", erzeugungsonnekw);
-				gtk_label_set_text(GTK_LABEL(g_lbl_sonne), str_sonne);
-				gtk_main_iteration_do(FALSE);
-			  break;	
-			 case 2: //Anzeige reg. Energie Anteil aktualisieren
-				berechneAnteil();
-				char str_anteil[10] = {0};
-				sprintf(str_anteil, "%f", anteil);
-				gtk_label_set_text(GTK_LABEL(g_lbl_anteil), str_anteil);
-				gtk_main_iteration_do(FALSE);
-			  break;
-			 case 3:
-				if (modus == 2 && minUpdated)
-				{
-					minUpdated = 0;
-					//printf("\n Bewölkung: %d", bewoelkung);
-					if (minute%10 == 0)
-					{				
-						
-						double zufall = (rand() % 101)/100.0 + (0.1*bewoelkung);
+					char str_wind[10] = {0};  
+					sprintf(str_wind, "%d", erzeugungwindkw);
+					gtk_label_set_text(GTK_LABEL(g_lbl_wind), str_wind);
+					gtk_main_iteration_do(FALSE);
+					break;
+				case 1: //Anzeige Sonnestrom aktualisieren
+					berechneSonneStrom(modus);
+					char str_sonne[10] = {0};  
+					sprintf(str_sonne, "%d", erzeugungsonnekw);
+					gtk_label_set_text(GTK_LABEL(g_lbl_sonne), str_sonne);
+					gtk_main_iteration_do(FALSE);
+					break;	
+				case 2: //Anzeige reg. Energie Anteil aktualisieren
+					berechneAnteil();
+					char str_anteil[10] = {0};
+					sprintf(str_anteil, "%f", anteil);
+					gtk_label_set_text(GTK_LABEL(g_lbl_anteil), str_anteil);
+					gtk_main_iteration_do(FALSE);
+					break;
+				case 3:
+					if (modus == 2 && minUpdated)
+					{
+						minUpdated = 0;
+						if (minute%10 == 0)
+						{				
 							
-						int sonne = sonneuhrzeit[stunde];
-						if (sonne != 0)
-							sonne = sonne * zufall;
+							double zufall = (rand() % 101)/100.0 + (0.1*bewoelkung);
+								
+							int sonne = sonneuhrzeit[stunde];
+							if (sonne != 0)
+								sonne = sonne * zufall;
+							
+							gtk_adjustment_set_value (GTK_ADJUSTMENT(g_adj_Sonne), sonne);
+							gtk_main_iteration_do(FALSE);		
+						}	
+						int wind_rand_spanne = 10;
+						int zufallw = rand() % wind_rand_spanne;
+						if (zufallw < wind_rand_spanne/2+1)
+							zufallw = -zufallw;
+						else
+							zufallw -= wind_rand_spanne/2;
+						
+						zufallwind += zufallw;
 						
-						gtk_adjustment_set_value (GTK_ADJUSTMENT(g_adj_Sonne), sonne);
+						if (zufallwind < 0)
+							zufallwind = 0;		
+						
+						gtk_adjustment_set_value (GTK_ADJUSTMENT(g_adj_Wind), zufallwind);
 						gtk_main_iteration_do(FALSE);
+					}
 					
-				}
-					int wind_rand_spanne = 10;
-					int zufallw = rand() % wind_rand_spanne;
-					if (zufallw < wind_rand_spanne/2+1)
-						zufallw = -zufallw;
-					else
-						zufallw -= wind_rand_spanne/2;
-					
-					zufallwind += zufallw;
-					
-					if (zufallwind < 0)
-						zufallwind = 0;		
+					berechneStromverbrauchProMinute();
+					char str_verbrauch[6] = {0};  
+					char str_uhrzeit[6] = {0};  
+				
+					sprintf(str_verbrauch, "%d", verbauchkw);
+					sprintf(str_uhrzeit, "%02d:%02d", stunde, minute);
 					
-					gtk_adjustment_set_value (GTK_ADJUSTMENT(g_adj_Wind), zufallwind);
+					gtk_label_set_text(GTK_LABEL(g_lbl_verbrauch), str_verbrauch);
+					gtk_main_iteration_do(FALSE);
+					gtk_label_set_text(GTK_LABEL(g_lbl_uhrzeit), str_uhrzeit);
 					gtk_main_iteration_do(FALSE);
-					
-				}
-				
-				berechneStromverbrauchProMinute();
-				char str_verbrauch[6] = {0};  
-				char str_uhrzeit[6] = {0};  
-			
-				sprintf(str_verbrauch, "%d", verbauchkw);
-				sprintf(str_uhrzeit, "%02d:%02d", stunde, minute);
-				
-				gtk_label_set_text(GTK_LABEL(g_lbl_verbrauch), str_verbrauch);
-				gtk_main_iteration_do(FALSE);
-				gtk_label_set_text(GTK_LABEL(g_lbl_uhrzeit), str_uhrzeit);
-				gtk_main_iteration_do(FALSE);
 				break;
-		 }
-	 }
+			}
+		}
     }
 }
 
 
 int oeffneEinstellungsfenster()
 {
-	//gtk_window_maximize (windowEinstellungen);
-	//gtk_window_fullscreen(GTK_WINDOW(windowEinstellungen));
-
 	gtk_widget_hide(windowMain);
 	gtk_widget_show(windowEinstellungen); 
 	fensterOffen = 1;
@@ -248,8 +238,6 @@ int oeffneEinstellungsfenster()
     verbauchkw = 0 / 2887.0 / 365.0 * 98.0; //Verbrauch um 0 Uhr
 	
 	gtk_widget_hide(windowEinstellungen);
-	//gtk_window_fullscreen(GTK_WINDOW(windowMain));
-	//gtk_window_maximize (windowMain);
     gtk_widget_show(windowMain);   
     
     return 0;
diff --git a/src/playground.cpp b/src/playground.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..b3fb8d7368462f7ea5c25c68cee95e35a7cc22fb
--- /dev/null
+++ b/src/playground.cpp
@@ -0,0 +1,3 @@
+/// @brief Playground for SGM
+
+
diff --git a/src/test.c b/src/test.c
deleted file mode 100644
index 96f46b800cab30a3d5cceb347cc5371764ead419..0000000000000000000000000000000000000000
--- a/src/test.c
+++ /dev/null
@@ -1,22 +0,0 @@
-#include <wiringPi.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include "I2C.h"
-
-int main (int argc, char *argv[]) 
-{
-	//printf("%d args", argc);
-	if (argc != 3)
-	{
-		printf("Invalid number of arguments");
-		return 1;
-	}
-	
-	int pin = atoi(argv[1]);
-	int value = atoi(argv[2]);
-	
-	setOutputPin(pin, value);
-
-}
-
- 
diff --git a/src/wiringPi.h b/src/wiringPi.h
new file mode 100644
index 0000000000000000000000000000000000000000..ecce38317d74105ded8986e6a3d7d852c2d058f9
--- /dev/null
+++ b/src/wiringPi.h
@@ -0,0 +1,267 @@
+/*
+ * wiringPi.h:
+ *	Arduino like Wiring library for the Raspberry Pi.
+ *	Copyright (c) 2012-2017 Gordon Henderson
+ ***********************************************************************
+ * This file is part of wiringPi:
+ *	https://projects.drogon.net/raspberry-pi/wiringpi/
+ *
+ *    wiringPi is free software: you can redistribute it and/or modify
+ *    it under the terms of the GNU Lesser General Public License as published by
+ *    the Free Software Foundation, either version 3 of the License, or
+ *    (at your option) any later version.
+ *
+ *    wiringPi is distributed in the hope that it will be useful,
+ *    but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *    GNU Lesser General Public License for more details.
+ *
+ *    You should have received a copy of the GNU Lesser General Public License
+ *    along with wiringPi.  If not, see <http://www.gnu.org/licenses/>.
+ ***********************************************************************
+ */
+
+#ifndef	__WIRING_PI_H__
+#define	__WIRING_PI_H__
+
+// C doesn't have true/false by default and I can never remember which
+//	way round they are, so ...
+//	(and yes, I know about stdbool.h but I like capitals for these and I'm old)
+
+#ifndef	TRUE
+#  define	TRUE	(1==1)
+#  define	FALSE	(!TRUE)
+#endif
+
+// GCC warning suppressor
+
+#define	UNU	__attribute__((unused))
+
+// Mask for the bottom 64 pins which belong to the Raspberry Pi
+//	The others are available for the other devices
+
+#define	PI_GPIO_MASK	(0xFFFFFFC0)
+
+// Handy defines
+
+// wiringPi modes
+
+#define	WPI_MODE_PINS		 0
+#define	WPI_MODE_GPIO		 1
+#define	WPI_MODE_GPIO_SYS	 2
+#define	WPI_MODE_PHYS		 3
+#define	WPI_MODE_PIFACE		 4
+#define	WPI_MODE_UNINITIALISED	-1
+
+// Pin modes
+
+#define	INPUT			 0
+#define	OUTPUT			 1
+#define	PWM_OUTPUT		 2
+#define	GPIO_CLOCK		 3
+#define	SOFT_PWM_OUTPUT		 4
+#define	SOFT_TONE_OUTPUT	 5
+#define	PWM_TONE_OUTPUT		 6
+
+#define	LOW			 0
+#define	HIGH			 1
+
+// Pull up/down/none
+
+#define	PUD_OFF			 0
+#define	PUD_DOWN		 1
+#define	PUD_UP			 2
+
+// PWM
+
+#define	PWM_MODE_MS		0
+#define	PWM_MODE_BAL		1
+
+// Interrupt levels
+
+#define	INT_EDGE_SETUP		0
+#define	INT_EDGE_FALLING	1
+#define	INT_EDGE_RISING		2
+#define	INT_EDGE_BOTH		3
+
+// Pi model types and version numbers
+//	Intended for the GPIO program Use at your own risk.
+
+#define	PI_MODEL_A		 0
+#define	PI_MODEL_B		 1
+#define	PI_MODEL_AP		 2
+#define	PI_MODEL_BP		 3
+#define	PI_MODEL_2		 4
+#define	PI_ALPHA		 5
+#define	PI_MODEL_CM		 6
+#define	PI_MODEL_07		 7
+#define	PI_MODEL_3B		 8
+#define	PI_MODEL_ZERO		 9
+#define	PI_MODEL_CM3		10
+#define	PI_MODEL_ZERO_W		12
+#define	PI_MODEL_3BP 		13
+#define	PI_MODEL_3AP 		14
+#define	PI_MODEL_CM3P 		16
+#define	PI_MODEL_4B 		17
+
+#define	PI_VERSION_1		0
+#define	PI_VERSION_1_1		1
+#define	PI_VERSION_1_2		2
+#define	PI_VERSION_2		3
+
+#define	PI_MAKER_SONY		0
+#define	PI_MAKER_EGOMAN		1
+#define	PI_MAKER_EMBEST		2
+#define	PI_MAKER_UNKNOWN	3
+
+extern const char *piModelNames    [20] ;
+extern const char *piRevisionNames [16] ;
+extern const char *piMakerNames    [16] ;
+extern const int   piMemorySize    [ 8] ;
+
+
+//	Intended for the GPIO program Use at your own risk.
+
+// Threads
+
+#define	PI_THREAD(X)	void *X (UNU void *dummy)
+
+// Failure modes
+
+#define	WPI_FATAL	(1==1)
+#define	WPI_ALMOST	(1==2)
+
+
+// wiringPiNodeStruct:
+//	This describes additional device nodes in the extended wiringPi
+//	2.0 scheme of things.
+//	It's a simple linked list for now, but will hopefully migrate to
+//	a binary tree for efficiency reasons - but then again, the chances
+//	of more than 1 or 2 devices being added are fairly slim, so who
+//	knows....
+
+struct wiringPiNodeStruct
+{
+  int     pinBase ;
+  int     pinMax ;
+
+  int          fd ;	// Node specific
+  unsigned int data0 ;	//  ditto
+  unsigned int data1 ;	//  ditto
+  unsigned int data2 ;	//  ditto
+  unsigned int data3 ;	//  ditto
+
+           void   (*pinMode)          (struct wiringPiNodeStruct *node, int pin, int mode) ;
+           void   (*pullUpDnControl)  (struct wiringPiNodeStruct *node, int pin, int mode) ;
+           int    (*digitalRead)      (struct wiringPiNodeStruct *node, int pin) ;
+//unsigned int    (*digitalRead8)     (struct wiringPiNodeStruct *node, int pin) ;
+           void   (*digitalWrite)     (struct wiringPiNodeStruct *node, int pin, int value) ;
+//         void   (*digitalWrite8)    (struct wiringPiNodeStruct *node, int pin, int value) ;
+           void   (*pwmWrite)         (struct wiringPiNodeStruct *node, int pin, int value) ;
+           int    (*analogRead)       (struct wiringPiNodeStruct *node, int pin) ;
+           void   (*analogWrite)      (struct wiringPiNodeStruct *node, int pin, int value) ;
+
+  struct wiringPiNodeStruct *next ;
+} ;
+
+extern struct wiringPiNodeStruct *wiringPiNodes ;
+
+// Export variables for the hardware pointers
+
+extern volatile unsigned int *_wiringPiGpio ;
+extern volatile unsigned int *_wiringPiPwm ;
+extern volatile unsigned int *_wiringPiClk ;
+extern volatile unsigned int *_wiringPiPads ;
+extern volatile unsigned int *_wiringPiTimer ;
+extern volatile unsigned int *_wiringPiTimerIrqRaw ;
+
+
+// Function prototypes
+//	c++ wrappers thanks to a comment by Nick Lott
+//	(and others on the Raspberry Pi forums)
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// Data
+
+// Internal
+
+extern int wiringPiFailure (int fatal, const char *message, ...) ;
+
+// Core wiringPi functions
+
+extern struct wiringPiNodeStruct *wiringPiFindNode (int pin) ;
+extern struct wiringPiNodeStruct *wiringPiNewNode  (int pinBase, int numPins) ;
+
+extern void wiringPiVersion	(int *major, int *minor) ;
+extern int  wiringPiSetup       (void) ;
+extern int  wiringPiSetupSys    (void) ;
+extern int  wiringPiSetupGpio   (void) ;
+extern int  wiringPiSetupPhys   (void) ;
+
+extern          void pinModeAlt          (int pin, int mode) ;
+extern          void pinMode             (int pin, int mode) ;
+extern          void pullUpDnControl     (int pin, int pud) ;
+extern          int  digitalRead         (int pin) ;
+extern          void digitalWrite        (int pin, int value) ;
+extern unsigned int  digitalRead8        (int pin) ;
+extern          void digitalWrite8       (int pin, int value) ;
+extern          void pwmWrite            (int pin, int value) ;
+extern          int  analogRead          (int pin) ;
+extern          void analogWrite         (int pin, int value) ;
+
+// PiFace specifics
+//	(Deprecated)
+
+extern int  wiringPiSetupPiFace (void) ;
+extern int  wiringPiSetupPiFaceForGpioProg (void) ;	// Don't use this - for gpio program only
+
+// On-Board Raspberry Pi hardware specific stuff
+
+extern          int  piGpioLayout        (void) ;
+extern          int  piBoardRev          (void) ;	// Deprecated
+extern          void piBoardId           (int *model, int *rev, int *mem, int *maker, int *overVolted) ;
+extern          int  wpiPinToGpio        (int wpiPin) ;
+extern          int  physPinToGpio       (int physPin) ;
+extern          void setPadDrive         (int group, int value) ;
+extern          int  getAlt              (int pin) ;
+extern          void pwmToneWrite        (int pin, int freq) ;
+extern          void pwmSetMode          (int mode) ;
+extern          void pwmSetRange         (unsigned int range) ;
+extern          void pwmSetClock         (int divisor) ;
+extern          void gpioClockSet        (int pin, int freq) ;
+extern unsigned int  digitalReadByte     (void) ;
+extern unsigned int  digitalReadByte2    (void) ;
+extern          void digitalWriteByte    (int value) ;
+extern          void digitalWriteByte2   (int value) ;
+
+// Interrupts
+//	(Also Pi hardware specific)
+
+extern int  waitForInterrupt    (int pin, int mS) ;
+extern int  wiringPiISR         (int pin, int mode, void (*function)(void)) ;
+
+// Threads
+
+extern int  piThreadCreate      (void *(*fn)(void *)) ;
+extern void piLock              (int key) ;
+extern void piUnlock            (int key) ;
+
+// Schedulling priority
+
+extern int piHiPri (const int pri) ;
+
+// Extras from arduino land
+
+extern void         delay             (unsigned int howLong) ;
+extern void         delayMicroseconds (unsigned int howLong) ;
+extern unsigned int millis            (void) ;
+extern unsigned int micros            (void) ;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/src/wiringPiI2C.h b/src/wiringPiI2C.h
new file mode 100644
index 0000000000000000000000000000000000000000..6db8c688e49575f31d919ab841f8762576eefbfb
--- /dev/null
+++ b/src/wiringPiI2C.h
@@ -0,0 +1,42 @@
+/*
+ * wiringPiI2C.h:
+ *	Simplified I2C access routines
+ *	Copyright (c) 2013 Gordon Henderson
+ ***********************************************************************
+ * This file is part of wiringPi:
+ *	https://projects.drogon.net/raspberry-pi/wiringpi/
+ *
+ *    wiringPi is free software: you can redistribute it and/or modify
+ *    it under the terms of the GNU Lesser General Public License as
+ *    published by the Free Software Foundation, either version 3 of the
+ *    License, or (at your option) any later version.
+ *
+ *    wiringPi is distributed in the hope that it will be useful,
+ *    but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *    GNU Lesser General Public License for more details.
+ *
+ *    You should have received a copy of the GNU Lesser General Public
+ *    License along with wiringPi.
+ *    If not, see <http://www.gnu.org/licenses/>.
+ ***********************************************************************
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern int wiringPiI2CRead           (int fd) ;
+extern int wiringPiI2CReadReg8       (int fd, int reg) ;
+extern int wiringPiI2CReadReg16      (int fd, int reg) ;
+
+extern int wiringPiI2CWrite          (int fd, int data) ;
+extern int wiringPiI2CWriteReg8      (int fd, int reg, int data) ;
+extern int wiringPiI2CWriteReg16     (int fd, int reg, int data) ;
+
+extern int wiringPiI2CSetupInterface (const char *device, int devId) ;
+extern int wiringPiI2CSetup          (const int devId) ;
+
+#ifdef __cplusplus
+}
+#endif