119 lines
6.7 KiB
Markdown
119 lines
6.7 KiB
Markdown
# Notes und kleine Dokumentation
|
|
|
|
Was haben wir bereits am iTender Projekt gemacht?
|
|
|
|
<hr>
|
|
|
|
## Konzept-Erstellung
|
|
|
|
#### Ideen
|
|
|
|
- Grund-Ideen
|
|
- Smarten Cocktail-Mischer
|
|
- 4 Getränke Behälter (mit Saft, Sirup oder Likör bzw. Schnapps)
|
|
- 4 Pumpen (Peristaltik Pumpe)
|
|
- Raspberry Pi als Prozessoreinheit
|
|
- Display in der Front mit Benutzeroberfläche
|
|
- Automatisches filtern von Getränken, je nachdem welche "Zutaten" in den Behältern sind
|
|
- Messung der aktuellen Füllmenge der Behälter, basierend auf Gewicht (mittels Wägezelle) oder Abstand zur
|
|
Wasseroberfläche (mittels Ultraschall-Sensor)
|
|
|
|
- Nice to have
|
|
- LED-Stripes für schöne Beleuchtung, basierend auf dem aktuellen Status der Maschine
|
|
- Extra Schlauch für weitere außenstehende Getränke
|
|
- Mit Bier-Fass Adapter?
|
|
- Kühlung der Container mittels Peltierelement und Lüftern
|
|
|
|
#### Erstes 3D-Modell
|
|
|
|
<img src="./Screenshot_Model1.1_FrontTopRight.png" width="50%">
|
|
<img src="./Screenshot_Model1.1_BackDownLeft.png" width="50%">
|
|
|
|
#### Neues 3D-Modell
|
|
|
|
<img src="./Screenshot_Model1.2_Front.png" width="50%">
|
|
<img src="./Screenshot_Model1.2_Back.png" width="50%">
|
|
|
|
|
|
<hr>
|
|
|
|
## Das Programm
|
|
|
|
#### Aufbau
|
|
|
|
- Das Programm ist aufgebaut in eine Client-Seite und eine Server-Seite
|
|
- Diese sind zur Sicherheit des Geräts voneinander getrennt
|
|
- Server und Client kommunizieren über einen WebSocket, welchen man sich als eine Art Chat-Kanal vorstellen kann
|
|
- Client und Server haben bestimmte Status, ein Status ist beispielsweise READY oder FILLING
|
|
- Die Oberfläche ist sowohl über das Display, aber auch über ein Tablet steuerbar
|
|
- Oberfläche sendet Befehle an den Server → Server verarbeitet und gibt ggf. eine Antwort
|
|
- Bei jedem start wird der Status des Netzwerkes erfasst
|
|
- Sollte Netzwerk zu verfügung stehen, versucht iTender die Getränke vom Hauptserver (im Internet) zu aktualisieren
|
|
- Somit kommen auch beim bestehenden Produkt immer neue Getränke und mögliche Zutaten dazu
|
|
- Nach jedem mischen und alle 5 minuten werden die Füllstände der Behälter erfasst
|
|
- Danach werden auch die verfügbaren Cocktails berechnet, diese werden dann im Webinterface angezeigt
|
|
|
|
#### Code fakten
|
|
|
|
- Inzwischen hat der Programmiercode 14492 Zeilen
|
|
- In Stunden wurde das Projekt (Stand 29.11) ~80 Stunden programmiert
|
|
|
|
#### Fotos des Webinterfaces (Stand 21.11)
|
|
|
|
<strong>Main</strong>
|
|
<br>
|
|
Die Main Pane ist der Hauptteil und direkt die Einstiegsseite des iTenders<br>
|
|
Hier können Getränke ausgewählt werden, welche dann "gemacht" werden
|
|
|
|
<img src="./v1Main.png" width="50%">
|
|
<br><br>
|
|
<strong>Menu</strong><br>
|
|
Das Menü ist das Navigationsherz, von hier aus können alle anderen Panels erreicht werden<br>
|
|
<img src="./v1Menu.png" width="50%">
|
|
<br><br>
|
|
<strong>Containers</strong><br>
|
|
Hier können die Behälter inhalte aktualisiert werden<br>
|
|
Man wählt die "Zutat" aus und danach wie voll der Behälter nun ist<br>
|
|
In der Regel kann das auch automatisch eingemessen werden, wenn alle Sensoren eingestellt sind<br>
|
|
|
|
<img src="./v1Containers.png" width="50%">
|
|
|
|
<br><br>
|
|
<strong>Fill</strong><br>
|
|
Einfach ein "Popup" welches anzeigt dass das Getränk gefüllt wird
|
|
|
|
<img src="./v1Fill.png" width="50%">
|
|
|
|
<br><br>
|
|
<strong>Setup</strong><br>
|
|
Das Setup ist das erste menü was nach dem ersten einrichten erscheint<br>
|
|
es dient zur Grundkonfiguration
|
|
|
|
<img src="./v1Setup.png" width="50%">
|
|
|
|
<br><br>
|
|
|
|
|
|
<hr>
|
|
|
|
<br><br>
|
|
|
|
### Erklärung der Dateien und Modulen
|
|
|
|
| Context | Datei | Beschreibung |
|
|
|-----------|---------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|
| iTender | main | Die Hauptdatei, sie ist der Einstiegspunkt des Programms, von hier aus wird die Datenbank verbunden und der Webserver gestartet |
|
|
| iTender | MyGPIO | Die eigene GPIO Library von Tobias Hopp. Sie dient zum Steuern von GPIO-Pins am Raspberry Pi |
|
|
| iTender | Utils | Hier befinden sich einige schnelle Funktionen, welche des öfteren von mehreren Methoden im Programm genutzt werden |
|
|
| iTender | RejectReason, SensorType, RequestType | Ein paar Klassen welche Enums (sogenannte feste Platzhalter für Variablen) bereitstellen |
|
|
| iTender | SensorType | Die Art des Sensors, aktuell sind Ultraschallsensoren und Wäge sensoren unterstützt |
|
|
| Webserver | App | Die App ist die Instanz des Webservers, welcher für die Oberfläche genutzt wird, dieser wird vom iTender selbst, sowie etwaigen anderen Geräten aufgerufen |
|
|
| Webserver | WebsocketApp | Ähnlich wie die normale App, nur spezifisch für die Direktverbindung zwischen Oberfläche und Server |
|
|
| iTender | LEDHandler | Übernimmt die Steuerung der WS2812b LEDs |
|
|
| iTender | Category | Kategorie des Getränks |
|
|
| iTender | Settings | Die Einstellungen des iTenders, werden gespeichert in der config.json |
|
|
| Webseite | error.pug, index.pug, layout.pug | Die statische Webseite für den iTender, diese Oberfläche liest die JavaScript Dateien ein und verbindet sich dann mit dem WebSocket (mit dem iTender) |
|
|
| Compiler | dist/ Ordner | Hier sind alle kompilierten Dateien zu finden |
|
|
| Webserver | web/main | Der Einstiegspunkt für die Weboberfläche, von hier aus wird mit dem WebSocket verbunden |
|
|
| | | |
|