6.7 KiB
6.7 KiB
Notes und kleine Dokumentation
Was haben wir bereits am iTender Projekt gemacht?
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


Neues 3D-Modell


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)
Main
Die Main Pane ist der Hauptteil und direkt die Einstiegsseite des iTenders
Hier können Getränke ausgewählt werden, welche dann "gemacht" werden

Menu
Das Menü ist das Navigationsherz, von hier aus können alle anderen Panels erreicht werden

Containers
Hier können die Behälter inhalte aktualisiert werden
Man wählt die "Zutat" aus und danach wie voll der Behälter nun ist
In der Regel kann das auch automatisch eingemessen werden, wenn alle Sensoren eingestellt sind

Fill
Einfach ein "Popup" welches anzeigt dass das Getränk gefüllt wird

Setup
Das Setup ist das erste menü was nach dem ersten einrichten erscheint
es dient zur Grundkonfiguration

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 |