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<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 "Uhrzeit" 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