itender/doc/Notes.md
2022-11-30 00:22:10 +01:00

14 KiB

### Achtung! ###

Diese Datei ist nicht mehr aktuell.

Bitte nutze die neue Wiki unter https://git.gaminggeneration.de/tobiash/itender/wiki (Wiki des iTender Projekts)













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
Webserver WebSocketHandler Die Server-Seitige WebSocket-Verbindung. Hier werden die Nachrichten an die Oberfläche gesendet und verarbeitet
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
Weboberfläche 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
iTender HX711 Die Klasse um den HX711 Wäge sensor abzufragen
Webserver, Weboberfläche WebsocketPayload Das ist die Payload (zu Deutsch Datenpaket), welche sowohl vom Webserver als auch von der Weboberfläche zum kommunizieren genutzt wird
Datenbank database/Container Hier werden die jeweiligen Container (wo die Inhalte für den Cocktail rein gefüllt werden) gespeichert
Datenbank database/Database Die Hauptklasse der Datenbank im iTender, sie sorgt für eine statische Verbindung mit der Datenbank und ermöglicht die Abfragen / Speicherungen von Getränken, Behältern und Zutaten
Datenbank database/Drink Hier werden die Getränke gespeichert, welche vom Server heruntergeladen werden
Datenbank database/Job Diese Klasse stellt den aktuellen Job des iTenders da, er wird erstellt wenn der Benutzer einen Drink haben möchte. In diesem Job-Objekt sind dann Werte wie die Kalkulation der Dauer, die Zutaten und Mengen, die jeweiligen Pumpen sowie ein Start und Endzeitpunkt festgelegt
Datenbank database/Ingredient Hier sind die Zutaten für die jeweiligen Drinks gespeichert. Es werden zu allen Drinks referenzen zu diesen Objekten erstellt
Weboberfläche web/Fill In dieser Klasse werden die Fill-Events erwartet. Sollte der Benutzer ein Getränk haben wollen, wechselt der iTender auf den Status FILLING. Diese Klasse greift das Event auf und zeigt dementsprechend dem Benutzer den aktuellen Status seines Auftrags an
Weboberfläche web/Modal Diese Klasse ist eine Art Herzstück geworden. Sie ermöglicht das schnelle und einfache Darstellen von Popups für den Benutzer. Beispiele sind Fehler oder Bestätigungsfenster.
Weboberfläche web/Setup Das Setup erwartet wie die Fill-Klasse ein Event. Hierbei das SETUP-Event. Sollte es "gefeuert" werden, werden hier die nötigen Maßnahmen getroffen um dem Benutzer das Setup anzuzeigen.
Weboberfläche web/WebHandler Der WebHandler übernimmt das öffnen von Panels (welches Menü gerade offen ist) sowie dem korrekten Anzeigen aller Drinks welche vom iTender bereitgestellt werden
Weboberfläche web/WebWebSocketHandler Das Gegenstück zum WebSocketHandler, nur auf Web-Seite. Daher auch das doppelte Web im Namen. Es übernimmt das Verbinden mit dem WebSocket, welcher die Kommunikation zwischen iTender und Oberfläche ermöglicht
Weboberfläche