CocktailPi / Automatischer Barkeeper zum nachbauen mit Webinterface und App

  • Hi,

    in diesem Forum werden ja immer wieder mal Cocktail-Maschinen vorgestellt. Ich habe vor einiger Zeit auch eine gebaut und möchte euch diese natürlich nicht vorenthalten.

    Benötigte Bauteile:

    Eine Liste von Bauteilen, die benötigt werden (und weitere optionale Teile) findet ihr auf meiner Webseite: https://cocktailpi.org/building-instructions/

    Das Projekt:

    Da ich Student bin und in meiner Wohnung eher wenig Platz habe, habe ich beim Bau der Maschine viel Wert auf Platzsparsamkeit gelegt. Im hinteren Bereich befindet sich ein Hohlraum, in dem sich der Raspberry, das Netzteil und die Relais befinden. Die Motoren sind sichtbar an der Seite angebracht. Das hat den Vorteil, dass Zutaten schneller ausgewechselt werden können und die Reinigung und Wartbarkeit im Allgemeinen einfacher wird. Hinten kommen dann ein LAN-Kabel, sowie die beiden Stromversorgungskabel für Raspberry und Pumpen heraus.

    Ich habe Peristaltikpumpen verwendet. Diese pumpen sehr gleichmäßig und sind hygienisch, aber leider auch relativ teuer. Der Raspberry steuert die Pumpen mithilfe des Relaisboards an. Der Stromkreis für jede Pumpe kann mithilfe eines dazugehörigen Relais geschlossen werden.

    Über das Webinterface, welches die Software bereitstellt, können beliebig viele Pumpen hinzugefügt werden. Hierzu wird für jede Pump bestimmt, wie lange diese braucht um einen CL zu pumpen (in Millisekunden), wie viele ml in den Silikonschlauch passen (zum Anpumpen) und auf welcher GPIO-Pin der Relaisschalter zu der Pumpe liegt.

    Neue Rezepte können im Webinterface angelegt werden. Zu jedem Rezept gehört ein Bild (nicht verpflichtend), eine Beschreibung, ein Name und natürlich Zutaten. Rezepte werden in Produktionsschritten abgearbeitet. Alle Zutaten in einem Produktionsschritt werden gleichzeitig in das Glas gefüllt. Dabei legen die Pumpen welche weniger lange laufen immer mal wieder Pausen ein, um das Verhältnis zwischen den Zutaten beizubehalten und die Zutaten so auch etwas zu mischen. Würden wir also z.B. das Rezept Vodka-O herstellen (25% Vodka, 75% Orangensaft) würde Pumpe 1 dauerhaft Orangensaft pumpen und Pumpe 2 würde alle 3 Sekunden eine Sekunde lang Vodka pumpen. Hierbei wird allerdings immer eine Mindestpause bzw. Mindestarbeitszeit eingehalten, um die Pumpen nicht zu stark zu belasten. Die Rheinfolge, in der Zutaten abgearbeitet werden und zu welchem Produktionsschritt eine Zutat gehört, wird per Drag & Drop festgelegt.

    In der Weboberfläche kann eingespeichert werden, welche Zutaten man besitzt. In der Weboberfläche wird dann direkt in der Suche angezeigt, ob ein Cocktail sofort gemischt werden kann oder ob die Zutaten zwar vorhanden sind, aber nicht alle Zutaten auch an Pumpen angeschlossen sind, oder ob diese gar nicht gemischt werden können (z.B. weil Zutaten fehlen oder nicht genug Pumpen vorhanden sind).

    Da manche Zutaten dickflüssiger sind als andere brauchen manche Zutaten länger um gepumpt zu werden. Ich hatte den Eindruck, dass die benötigte Zeit, welche eine Pumpe zum Pumpen einer dickflüssigen Zutat braucht, linear ist. Deshalb kann für dickflüssige Zutaten ein Multiplikator festgelegt werden, welcher die Pumpzeit für diese Zutat anpasst.

    In der Suche können Rezepte, nach Zutaten, Namen, Machbarkeit mit vorhandenen Zutaten und sofortiger Machbarkeit gefiltert werden und nach Name, letzter Bearbeitung und Autor sortiert werden.

    Das Webinterface erlauft es dem Admin auch weitere Benutzer anzulegen, welchen verschiedene Rechte zugewiesen werden können. Es gibt 4 Gruppen:

    - Den normalen "User" (Kann nur öffentliche Rezepte einsehen und in Auftrag geben)

    - Den "Recipe Creator" (Kann zusätzlich eigene private und öffentliche Rezepte erstellen)

    - Den "Pump Ingredient Editor" (Kann zusätzlich die Zutatenbelegung auf den Pumpen ändern)

    - Den "Admin" (Kann alles z.B. neue Pumpen und Zutaten definieren und Nutzer anlegen, sowie fremde Rezepte bearbeiten und andere Nutzer sperren)

    Hier mal ein paar Bilder vom Webinterface:

    Installation

    Eine Installationsanleitung findet ihr hier: https://cocktailpi.org/install/

    Die Anleitung mit docker, die hier in den Antworten zu finden ist, ist veraltet.


    Das Projekt ist noch lange nicht abgeschlossen. Ich bin immer offen für Ideen. Z.B. fehlt mir noch das Dashboard. Der Rest ist aber so schonmal lauffähig.

    Da die Weboberfläche mit Quasar (VueJS-Framefork) geschrieben wurde, ist eine Portierung als Web-App, iOS-App und Android-App problemlos möglich. Allerdings hab ich bis jetzt nicht gemacht, da die Anwendung im Browser genauso gut funktioniert und ich jetzt noch keine Vorteile finden konnte, die für eine App-Version des Webinterfaces sprechen würden.

    Den Code im Allgemeinen: https://github.com/alex9849/CocktailPi

    Die Projekt Website: https://cocktailpi.org/

    Demo zum Ausprobieren:

    Außerdem habe ich eine Demo-Installation, welche jeden Tag zurückgesetzt wird, auf der man das Webinterface ausprobieren kann: https://cocktailmaker-demo.liggesmeyer.net/

    Die Demo-Installation kann auch benutzt werden, um die App zu testen. Um trolling zu verhindern, kann der Admin-User auf dieser Installation nicht bearbeitet oder gelöscht werden.

    Login-Daten sind:

    Url: https://demo.cocktailpi.org/

    User: Admin

    Passwort: 123456

    Je nach Interesse, wäre ich bereit für interessierte einen Discord-Server zu erstellen, auf dem man sich austauschen kann. :)

    Ps.: Wenn euch das Projekt gefällt würde ich mich darüber freuen, wenn ihr das Projekt auf Github "Stared"

    Edited 14 times, last by alex9849 (November 19, 2023 at 12:13 AM).

  • CocktailPi / Automatischer Barkeeper zum nachbauen mit Webinterface und App? Schau mal ob du hier fündig wirst!

  • Hallo Alex,

    ich finde das Projekt äußerst interessant und würde das gerne auf einem meiner Pi´s testen. Verstehe jedoch dieses Docker nicht, auch nach mehrstündigen Videos die Docker erläutern...

    Bin auch nicht ganz sicher ob dieser Docker container auf dem PI laufen soll, oder ich das am PC starte und dort dann die Raspberry Images holen kann.

    Starten am PC führte zu noch mehr verwirrung.


    Gibts hierzu zufällig ein einfaches Raspberry Pi Image für die SD Karte? Oder ne minimalistische Anleitung wie das zu installieren ist für Leute die von Docker noch nie was gehört haben ? ^^

    grüße Cedric

  • Hi.

    Freut mich, dass du das Projekt nachbauen willst!

    Zuallererst benötigst du ein Betriebssystem für deinen Raspberry. Ich hab das ganze mit RaspberryPi OS gemacht, was ich dir auch empfehlen würde.

    Hier der Link zu einem Programm, welches dir deine SD-Karse mit RaspberryPi OS flasht: https://downloads.raspberrypi.org/imager/imager_latest.exe

    Hier mal ein Zitat aus der Docker Dokumentation mit den Linux-Systemen, welche Docker unterstützen:

    Quote

    To install Docker Engine, you need the 64-bit version of one of these Debian or Raspbian versions:

    • Debian Bullseye 11 (testing)
    • Debian Buster 10 (stable)
    • Raspbian Bullseye 11 (testing)
    • Raspbian Buster 10 (stable)

    Docker Engine is supported on x86_64 (or amd64), armhf, and arm64 architectures.

    Sobald du Raspbian installierst hast, verbindest du diesen mit dem Internet, logst du dich als root-Benutzer auf diesem ein und führst folgende Befehle aus:

    Code
    apt update && apt -y upgrade
    curl -fsSL https://get.docker.com -o get-docker.sh
    sudo sh get-docker.sh
    apt install python3-pip -y
    sudo pip3 install docker-compose

    Das war auch schon die Installation von Docker. Jetzt fehlt noch das eigentliche Webinterface. Hierfür erstellst du eine Datei namens docker-compose.yml im /root-Order (oder einen anderen Ordner deiner Wahl) und fügst folgenden Inhalt in diese ein:

    Anschließend kannst du in dem Verzeichnis, in dem du die Datei angelegt hast den Befehl 'docker-compose up -d' ausführen. Docker downloaded dann die images und startet anschließend das Programm. Jetzt solltest du das Webinterface innerhalb deines Netzwerkes unter der IP deines Raspberrys und dem Port 8080 aufrufen können. (Beispiel http://192.168.1.102:8080)

    Die Standard-Login-Daten sind: User: admin Password: 123456

    Ps. wenn du deinen Raspberry neu startest, startet das Webinterface automatisch.

    Solltest du weitere Fragen haben frag ruhig. :)

    Ggf. kann ich dir auch live helfen die Software einzurichten.

    Viel Spaß :)

    Edited 4 times, last by alex9849 (May 4, 2021 at 1:16 PM).

  • Hallo, ich wollt mich hier auch mal einklinken (hab mich ja extra wegen diesem Projekt angemeldet).

    Zuerst muss ich sagen ich kenne mich überhaupt nicht aus mit Raspberry und hab mir gebraucht erstmal einen pi 3 gekauft. Ich besitze aber eine Cocktail Maschine die mit einer alten Kassen Software funktioniert und ich finde das Web Interface echt toll und würde wenn möglich alles umbauen. Im Moment läuft meine mit Membranpumpen und Magnetventilen (diese würde ich beibehalten) und einer Zapfpistole von wunderbar. Ob ich jetzt wie bei dir die Pumpen für ne gewisse Zeit einschalte oder die Magnetventile öffne dürfte ja das gleiche sein.

    Hab mich bis jetz nur nicht getraut hier was zu schreiben da ich das mit docker nicht kapiert habe aber da war ich wohl nicht der einzige ?.

    So genug Vorgeschichte jetz mal zu dem wesentlichen.

    In einen Cocktail kommt ja auch Sirup und so rein diese hat man ja nicht immer an der Pumpe dran, z.b Grenadine oder Limettensaft …. Wenn ich jetz einen Cocktail mixen möchte z.b Tequila Sunrise. Tequila und osaft habe ich an den Pumpen aber Grenadine möchte ich per Hand dazugeben. Seh ich das richtig das das dann nicht funktioniert wegen dem Grenadine?

    Kann man das irgendwie ändern das man selber auch was dazuschütten kann? Einfach anstatt eine Pumpe anzusteuern kommt die Meldung das man jetz in diesem Beispiel 20ml Grenadine Saft dazugeben soll.

    Ich werde die Tage mal versuchen das Projekt bei mir zu installieren und melde mich dann nochmal.

    Aber so vom Aufbau gefällt es mir echt gut und super Arbeit Alex ?

    Hab noch ein Foto angehängt wie meine Bar im Moment ausschaut. Ist ein kleines Corona Keller Projekt geworden und kommt dann im Sommer raus in Garten ?

  • Hallo,

    erstmal super Projekt alles was angegangen wird ist ja immer willkommen. Natürlich gibt es diverse CockTail Mixer Station im Web zum nachbau.

    Wie ermöglichst du den zugriff auf alkoholischen Getränke? Diese müssen ja immer gesperrt sein.

    danke lars

  • Ich hab da so Behälter da wird die volle Flasche dann reingesteckt. Siehe Bild. Das andere Bild ist vom Projekt Anfang

    Da kann man auch die Pumpen sehen.

    Hab mich da jetz schon ein bisschen reingesteigert ??.

    Unten in dem Wagen ist ein Durchlaufkühler eingebaut mit Carbonator für Sprudelwasser. Cola Fanta Sprite ist in Sirup Form und mischt sich dann mit dem Sprudelwasser.

    Eiswürfel Maschine u.s.w ? da sind schon ein paar Stunden nach der Arbeit im Keller drauf gegangen.

    Ich hab jetz noch keine Ahnung vom Raspberry aber wenn jemand Fragen zur Technik hat da kenn ich mich schon gut aus ?

    Will aber jetz nicht alles mit meinem Zeug hier vollspamen

  • Oha die Maschine sieht wirklich beeindruckend aus und das mit dem Carbonator ist auch ne gute Idee :D
    Dann hoffe ich mal, dass die kleine Anleitung die ich oben geschrieben habe, dir beim Aufsetzen des Systems hilft. Was den Sirup angeht, hast du recht. Der muss tatsächlich an einer Pumpe angeschlossen sein, damit die Software den Cocktail freigibt. Was man aber machen könnte, wäre tatsächlich manuelle Produktionsschritte einzuführen. Diese könnten dann natürlich nicht zusammen mit automatischen Anweisungen abgearbeitet werden, aber grundsätzlich sollte sowas möglich sein.

    Die manuellen Schritte könnte man auch noch unterscheiden. Man könnte z.B. Schritte einführen, die komplett vom Autor beschrieben wären. Beispielsweise:

    - Bei einem Mojito: Bitte Minze an der Limettenschale zerreiben

    - oder: Bitte nun Cocktail im Shaker schütteln (nicht rühren ;) )

    Ansonsten könnte man auch berechnete manuelle Anweisungen einbauen, bei denen dann die Menge berechnet wird.

    Im Beispiel Mojito könnte das sowas sein wie: 10g braunen Zucker hinzugeben.

    Allerdings müsste man sich dann entscheiden, ob man eine Zutat immer manuell hinzufügen möchte oder nicht. Eventuell kann man aber auch das irgendwie dynamisch machen.

  • alex9849

    naja wenn ich mir so ein Teil bauen würde dann hätte ich ja ein Einsatzort z.b. Geburtstage oder sonstige Feierlichkeiten. Da unsere Kinder noch gerade den ersten 2 stelligen Geburtstag hintersicht gebracht haben würden sie sicher auch via den Mixer eine Brause haben wollen also müssten evtl Alk freie Getränke frei zugänglich sein und oder alles per rfid und die Key's im System hinterlegen.

    Lars

  • MagicBird

    Ahh verstehe. Momentan wird so eine Sperre nicht unterstützt. Aber die kann man relativ einfach einbauen. Wenn dann würde ich die aber so realisieren, dass man es bestimmten Benutzern einfach nicht erlaubt Cocktails mit Alkohol anzufordern, bzw. es verbietet neue Rezepte mit alkoholischen Zutaten zu erstellen.

  • Hallo Alex,

    vielen Dank schonmal für die Anleitung!

    Ich habe das ganze abgearbeitet bis einschließlich zum Punkt mit der Datei "docker-compose.yml" erstellen im root verzeichnis. Das Betriebssystem ist Raspberry Pi Os. Docker Version 20.10.6

    Bei eingabe von docker-compose up -d (bzw sudo docker-compose up -d) ins Terminal bekomme ich aber den Fehler docker: 'compose' is not a docker command.

    Laut Docker Dokumentation gibts den Befehl aber (ohne Bindestrich) . Jedoch bei Aufruf der Hilfe von Docker im Terminal steht dieser Befehl nicht dabei.

    Hättest du hier vielleicht einen Tipp wo genau ich zu blöd bin deinen befehl einzugeben? ^^

    grüße Cedric :)

  • Nein. Das liegt wahrscheinlich eher daran, dass docker-compose bei dir noch nicht installiert ist. Ich hatte irgendwie in Erinnerung, dass docker-compose automatisch zusammen mit Docker installiert wird. Da habe ich mich wohl geirrt. Ich hab die Anleitung oben etwas abgeändert (nur 2 Befehle hinzugefügt).

    Die Befehle kannst du einfach ausführen. :)

  • Hallo Alex,

    ungern möchte ich weiter nerven , aber das war bei mir nicht erfolgreich. Nach durchführen der 2 befehle und composen der .yml datei konnte ich nicht wie gewünscht auf die Weboberfläche zugreifen.

    Habe mir dann nochmal die Github Seite zu Gemüte geführt und einfach nochmal Raspi OS frisch aufgesetzt und alles von Anfang an gemacht (mit sudo -i). Bin auch nicht ganz sicher was du mit root verzeichnis meinst: es gibt den Root ordner den man nur mit Root rechten öffnen kann, oder das standart "root" verzeichnis Pi/user/ - Sprich das Verzeichnis in dem man ist, wenn man sich mit Pi/raspberry anmeldet. Habe beide Speicherorte mit dem selben Ergebnis getestet. Die adresse RASPI-IP:8080 zeigt nichts an - die Webseite ist nicht erreichbar. Vorher konnte ich auch per VNC auf den Raspi zugreifen, Hier kommt jetzt in Putty nur ein schwarzer Bildschirm mit "Kein Desktop".

    muss ich den Cocktail Server vielleicht noch irgendwie starten ?

    Portfreigabe an der Fritzbox für den Raspi mit Port 8080 hat nichts gebracht.

    grüße Cedric

  • picposter  Magic Mark

    Der Ordner ist eigentlich egal. Das kann auch gerne ein Benutzer-Ordner sein. Wichtig ist, dass ihr den 'docker-compose up -d' in den selben Ordner ausführt, in dem auch eure docker-compose.yml liegt. Ich hab leider meinen Pi leider gerade nicht hier, weshalb ich auch die Anleitung auch nur aus dem Kopf geschrieben habe. Wenn ihr aber nichts dagegen habt kann sich aber gerne einer von euch mit mir in Verbindung setzen und ich setze das zusammen mit euch auf. Dann kann ich die Schritte in der Anleitung auch überarbeiten, die eventuell falsch oder zu ungenau sind.

    In der Datenbank speichert das Webinterface alle Daten. Also ja die ist wichtig. Die wird aber, wenn ihr die docker-compose.yml verwendet automatisch mit aufgesetzt.

  • Ein tolles Projekt, Alex! :thumbup:

    Weil ich in Kürze in einem anderen Zusammenhang auch Peristaltikpumpen einsetzen möchte, hätte ich als Elektronik-Legastheniker kurz die Frage: Welche Funktion haben die Dioden an den Pumpmotoren?

    EDIT: Hat sich schon erledigt. Konnte mich zwischenzeitlich selbst schlau machen. :)

  • Bei mir läuft es jetz, danke Alex.

    picposter wenn du alles installiert hast und die ip:8080 im Browser aufrufst musst du mein ersten mal so 3-5 Minuten warten dann erscheint die Seite. Ist nur beim ersten Mal so. Also einfach das Server nicht erreichbar ignorieren und warten.

  • hallo zusammen,

    kam leider erst zum testen.

    Wie von euch beschrieben funktioniert die Installation nun wunderbar :) vielen Dank!

    Nach der Installation 2 minuten warten und man kann auf den Server zugreifen.


    Jetzt bin ich am Erforschen des ganzen. Wenn ich dazukomme was zu bauen werd ich hier paar Bilder einstellen :)


    liebe Grüße Cedric

  • Was mir aufgefallen ist:

    die generelle Geschwindigkeit der Seite ist ziemlich schleppend ^^ . Ich habe den Raspberry Zero sauber heruntergefahren und näher an die Fritzbox gebracht, da ich dachte vll. ist der Empfang zu schlecht. Leider bringt das recht wenig. Ebenso beim Booten braucht das ganze bestimmt 3 oder 4 Minuten bis ich die Website aufrufen kann, also generell wenn ich den Raspberry Zero boote.

    Ist der Zero dafür vielleicht zu langsam? oder kann es sein dass die Speicherkarte nichts taugt? :conf:

    Aktuell ist eine 32GB SanDiskUltra mit 45Mb Leserate und 14Mb schreibrate verbaut (zumindest laut CrystalDiskMark).

    Ich schau mal ob ich ne schnellere Karte finde um zu sehen ob das einen unterschied macht.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!