The CocktailPi is a cocktail mixing machine by Alexander Liggesmeyer. It can
control as many pumps as the RaspberryPi provides GPIO pins. For every pump that gets added to the system, the user has
to provide the amount of time that that pump needs to pump one centiliter in milliseconds. The machine uses peristaltic
pumps. So that number is perfectly accurate. The flow rate won’t vary over time. It uses a relay board for closing the
electronic circuit for all pumps. This allows to power the pumps with more than 5V. The relay board is connected to the
Pi which controls the board with Pi4J V1. The backend-application is written in Java (Spring boot). The frontend is
written with VueJS.
Pumping ingredients concurrently and mixing them by spreading the active pump timings within the productionstep.
Ingredients that cannot be added automatically (maybe because they didn’t get assigned to one pump or are simply not liquid)
can be handled. If a recipe with a non-pumpable ingredient got ordered the application will prompt the user to add that
ingredient at the corresponding point.
Recipes can be resized for every order. The user decides the size of the cocktail he wants to order. All ingredients
amount will get recalculated automatically.
A drag & drop recipe editor.
Recipes can be categorized.
Collections: Users can create collections and add recipes to them.
Bar: Users can add owned ingredients to their bar. The application can search for recipes that he can order with the
owned recipes. If the user tries to order a recipe where he doesn’t own all ingredients he will get a warning.
The cocktail maker can search for recipes that can be produced fully automatic. (Won’t require the user to add ingredients
manually)
Recipes can be searched by ingredients.
Multiple users & permission system: The admin can create new users and assign them to predefined groups, that have different
permissions.
Track the remaining amount of liquid of the connected bottles and prevent an order if the remaining liquid doesn’t reach.
It is also able to switch between pumps on the fly. If one order empties one bottle, but another bottle with the same ingredient
is connected, the application will empty the first container and will switch to the second one mid-production.
Docker deployment
The whole application can be deployed as a docker container that has to be started in privileged mode. This allows even
beginners that don’t have much experience to build their own machine.