itender/doc/Notes.md
Tobias Hopp 7d9dfca62e write doc
Took 2 hours 59 minutes
2022-11-29 20:22:42 +01:00

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