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

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