Hallo Max,
keine Frage die Funktionalitäten existieren schon alle. Ziel des
Projektes war nicht das Rad neu zu erfinden sondern eine einfache Lösung
anzubieten für Leute die nicht viel programmieren wollen.
Im Anhang ist ein Bild das eine grobe SW-Architektur mit dem Fokus
ConfigTool darstellt.
Mit dem ConfigTool kann der Nutzer Abläufe beschreiben. Ein Ablauf ist
eine Schaltung (Circuit) die aus mehreren Components besteht. Component
können Generatoren wie z.B. Sonnenunterganggenerator oder
Uhrzeit-Generator und aus Operatoren z.B. logische/arithmetischen
Operatoren und aus Devices z.B. Sensoren oder Aktuatoren.
Mit dem ConfigTool wird auch festlegt welche Elemente sollen über
WebInterface dargestellt und bedient werden.
Jetzt zu der Darstellung im Anhang:
Kommunikation zwischen ConfigTool und IronOne läuft über SSH und FTP.
Der Nutzer zeichnet die Schaltung und legt fest welche Elemente sollen
über WebInterface dargestellt werden. Das ConfigTool überträgt die zwei
Beschreibungsdateien auf das IronOne-Modul. Das IronOne-Hauptprogramm
startet neu nachdem es eine Änderung der Configuration gemerkt hat.
Der ConfigurationManager liest die XML-Dateien und baut im Speicher den
Flow. Er prüft gleichzeitig ob die Wiring plausibel sind und mit Hilfe
des DevicesManager, ob die Devices existieren und ansprechbar sind.
Danach teilt der ConfigurationManager dem WebsocketServer die
Visualization-List mit.
So sieht die XML-Datei aus, die Geo-Koordinatoren am Anfang des Dokument
sind wichtig um Funktionen wie
Sonnenteruntergang/Dämmerung/Sonnenaufgang oder Wetter-Information zu
realisieren.
1 | <?xml version="1.0" ?>
|
2 | <iron VERSION="0.1" LAT="52.254709" LON="10.678711" TIMEZONE="1" SOMMERTIME="1">
|
3 | <circuit NAME="licht_steuerung_draussen">
|
4 | <component TYPE = "sunSetGen" ID="1" HW_ID="NULL" VALUE="NULL" VISU="NULL" ROOM="NULL" VISU_NAME="NULL" VISU_TYPE="NULL" CATEGORY="NULL"/>
|
5 | <component TYPE = "delayOp" ID="2" HW_ID="NULL" VALUE="10" VISU="NULL" ROOM="NULL" VISU_NAME="NULL" VISU_TYPE="NULL" CATEGORY="NULL"/>
|
6 | <component TYPE = "rsOp" ID="3" HW_ID="NULL" VALUE="NULL" VISU="NULL" ROOM="NULL" VISU_NAME="NULL" VISU_TYPE="NULL" CATEGORY="NULL"/>
|
7 | <component TYPE = "hardware" ID="13" HW_ID="DO3" VALUE="NULL" VISU="YES" ROOM="Schlafzimer" VISU_NAME="Licht Fernseher N" VISU_TYPE="onOff" CATEGORY="Beleuchtung"/>
|
8 | <component TYPE = "hardware" ID="14" HW_ID="DO4" VALUE="NULL" VISU="YES" ROOM="Küche" VISU_NAME="Licht Decke N" VISU_TYPE="onOff" CATEGORY="Beleuchtung"/>
|
9 | <!-- <component NAME = "zwave" ID="8" HW_ID="Node6" VALUE="NULL" VISU="YES" ROOM="Wohnzimmer" VISU_NAME="Licht Decke Dimmer" VISU_TYPE="dimmer"/> -->
|
10 | <!-- <component NAME = "oneWire" ID="8" HW_ID="28-000005ad1690" VALUE="NULL" VISU="YES" ROOM="Flur" VISU_NAME="Temperatur2" VISU_TYPE="temperature"/> -->
|
11 | <component TYPE = "oneWire" ID="15" HW_ID="28-000005ad1690" VALUE="NULL" VISU="YES" ROOM="Flur" VISU_NAME="Temperatur3" VISU_TYPE="temperature" CATEGORY="Heizung"/>
|
12 | <wire start = "1.output" stop = "2.input"/>
|
13 | <wire start = "1.output" stop = "3.set"/>
|
14 | <wire start = "2.output" stop = "3.reset"/>
|
15 | <wire start = "3.q" stop = "4.input"/>
|
16 | <wire start = "3.q" stop = "5.input"/>
|
17 | <wire start = "3.q" stop = "6.input"/>
|
18 | <wire start = "3.q" stop = "7.input"/>
|
19 |
|
20 | </circuit>
|
21 | </iron>
|
Ich hoffe ich könnte damit auf die Frage „Was nutzt du als Backend?“
antworten.
Ich hoffe ich werde in 2 Wochen mit dem ConfigTool fertig sein dann
werde ich es hier in Aktion noch mal zeigen.
Viele Grüße,
Zied