# ### Achtung! \###
Diese Datei ist nicht mehr aktuell.<br>
Bitte nutze die neue Wiki unter [https://git.dateien.org/tobiash/itender/wiki](https://git.gaminggeneration.de/tobiash/itender/wiki) (Wiki des iTender Projekts)

<br><br><br><br><br><br><hr><br><br><br><br><br>



# 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 des iTenders ist getrennt in 3 Teile
- iTender Basis
  - Die Basis besteht aus der Kommunikation zwischen den Pumpen, LEDs und jeglicher Hardware
  - Außerdem gibt es Timer, automatische Events, Prüfung und aktualisierung von Getränken etc.
  - Sie übernimmt z.B. das Starten vom Getränke-Füllen, stoppen sowie Berechnen von den Zutaten für ein Getränk
  - Dieser Teil arbeitet seh eng mit dem Websocket-Server zusammen, um so auf Events vom Endnutzer zu reagieren.
- iTender Webserver
  - Der Webserver ist einfach ein statischer Webserver welche Dateien "serviert", die dann von der Oberfläche geladen werden können.
  - Der Client-Browser oder iTender-Display lädt dann diese Seite, erstmal passiert dann noch nichts
- iTender Websocket-Server
  - Der Websocket-Server dient zur eigentlichen Live-Kommunikation zwischen Client und Gerät.
  - Der Server und die Webseite (Endgerät), bauen eine Ende-zu-Ende Verbindung auf
  - Die Kommunikation zwischen Client und Websocket-Server basiert auf JSON (Javascript-Objekt-Notation).
  - Da der Websocket in früheren Client-Versionen anfällig für Fehler beim Übertragen von nicht alphabetischen Zeichen war, wird der gesendete Inhalt noch in Base64-Kodiert.
  - Base64 dient dazu, die Daten binär zu kodieren, um sie auf der Gegenstelle wieder zu entkodieren.
  - Außerdem wird beim übertragen eine Checksumme mitgegeben, um bei Fehlerhaften Paketen ein neues anzufragen.

