Coder Social home page Coder Social logo

dburnsii / bartender Goto Github PK

View Code? Open in Web Editor NEW
8.0 8.0 1.0 9.33 MB

The intelligent, robotic, drink making machine of the future!

License: GNU General Public License v2.0

Python 43.78% HTML 0.88% CSS 1.68% JavaScript 50.35% Shell 1.17% Mako 0.25% Dockerfile 0.34% Makefile 1.55%
arduino cocktails freecad hacktoberfest kicad platformio python react robotics

bartender's People

Contributors

dburnsii avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

jamesclampffer

bartender's Issues

Create WiFi Setup Page

An important piece of this will be to connect The Bartender to WiFi for updates, including pulling down the latest recipes. Add a modal to the settings page to allow the user to connect to WiFi using the wpa_supplicant DBus API.

Child lock

Add a feature for a 4-digit pin to unlock the interface

Create a system service

System functions like screen brightness handling and automatic updates should be handled by a new service, potentially run as root.

Firefox over Chromium or other browsers

This issue is just for record keeping purposes.

The motivation for choosing Firefox over Chromium for this project is that Chromium supports a minimum browser height of 500 pixels, where the screen in use is only 480. The html element could be modified to account for this, but leads to a bunch of exceptions in the case to make it work, which will make it harder to get this working on external devices (phone browsers for instance)

Dark mode

Material-UI provides dark mode as a theme, this should be added as an option

Custom measured pours

User should be able to do a measured pour of any given bottle, rather than having to hold down the pour button

Convert scale to I2C

With looking at multiple boards, and considering some of the issues seen with custom protocols regarding timing, all devices that communicate with the main board should be communicating with I2C.

The scale will just need a 24-bit ADC to replace the Hx711. This will likely provide more accuracy anyway.

Implement sdnotify

Services sometimes start before the central server is ready to accept connections. Services should be smart enough to reconnect, but also shouldn't start before the socket is ready. Set the systemd service to a notify type, and declare it ready when it can accept connections.

Integrate Motor driver and HAT

The motors for the bartender can be driven by an SMD transistor. Rework the PCB to integrate the motor driver to use SMD components, and also include a port for the LED strip in the rework.

Reduce SD Card Writes

By default, Raspberry Pi OS does lots of reads and writes to the SD card. Since the lifespan of these cards is relatively short, add settings to reduce the number of reads and writes as much as possible.

Add cleaning mode

One of the menus available should be a cleaning mode. The pumps should add in "last loaded" and "last cleaned" columns to the database, for letting users know in the future when they should clean a pump. The cleaning mode should be simple: activate it for a given pump with the water loaded, run some amount of water through (maybe a couple cleaning mode levels), and do some pulses to free anything that may be stuck.

Add upgrade button

Now that the database is transferred to sqlalchemy and migrations are possible, create an upgrade.sh script to check for system upgrades (currently via the git repo), to be launched by the system service. Subsequently rebuild the frontend and run any migrations, then reboot.

Convert LEDs to I2C

With looking at multiple boards, and considering some of the issues seen with custom protocols regarding timing, all devices that communicate with the main board should be communicating with I2C.

For the LEDs, this will likely mean creating a custom firmware on an MCU, likely an Arduino. This will differ from the old design in that it will use protocol closer to how the pixels actually work, and it will be over I2C instead of UART over USB.

Create Logo

Any major open-source project needs a logo, especially when that logo can go on hardware. Create a logo to be placed on the pcbs and within the bartender interface.

Convert motor board to I2C

With looking at multiple boards, and considering some of the issues seen with custom protocols regarding timing, all devices that communicate with the main board should be communicating with I2C.

The problem with the motor board is that it requires 10 discreet GPIO outputs, rework the board to use the MCP23017

Switch to Drogon from Django

Django unfortunately is simply too slow to run this application on a Raspberry Pi Zero, which is the ideal hardware due to it's availability of GPIOs, form factor, and price. A switch to Drogon would enable this project to be much more performant if done correctly.

Screensaver

Create a Bokeh animation effect that appears onscreen after idle for a set amount of time, and dismiss when the screen is pressed or a cup is placed on the scale

Add calibration configuration

HX711 modules tend to be subject to some temperature drift as well as some sensitivity drift. Add a page to the interface to calibrate with a known amount of liquid or weight.

Rework manual pour screen

Instead of cramming all of the bottle actions into a small space, perhaps make the manual pour screen more of a menu, where the user selects the desired bottle, and then a modal pops up with more options. This modal could have more than just a pour button, it could also have options for measured pours.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.