Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

225 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

coffee-by-weight

Weight-based coffee automation on Raspberry Pi. One repo, multiple small controllers ("apps") that share a common core: Bluetooth scale drivers (Acaia and BooKoo), a vendor-neutral scale interface, BLE adapter coordination, and SPI LCD display drivers. Each app runs as its own systemd service on its own Pi.

Apps

Adds brew-by-weight to the La Marzocco Linea Micra: reads a Bluetooth scale, shows the live shot on a 2" display, and proxies the paddle switch to stop the shot at the target weight. Adaptive overshoot learning, memory banks, shot-history web gallery, web configuration, and a Bluetooth scale setup page. See the full LM-BBW README and the architecture overview.

▶️ Watch the demo — LM-BBW landing a shot on target.

Grind-by-weight controller for a coffee grinder, built on the same shared core. Currently a working skeleton: it scans for a supported scale, connects, and streams live weight; dosing and motor control are in progress. See the architecture & status.

Repository layout

coffee-by-weight/
├── common/            shared package: scale drivers (Acaia, BooKoo), vendor-neutral
│                      Scale interface, BLE scan lock, WaveShare LCD drivers, fonts
├── doc/
│   ├── lm-bbw/        LM-BBW docs: architecture, wiring photos, enclosure STLs, demo video
│   ├── grind-bw/      GRIND-BW docs: architecture & status
│   └── BT_Scales/     Bluetooth scale protocol specs (Acaia, BooKoo Ultra/Mini)
├── lm-bbw/            espresso controller: entry point, app modules, service files, web assets
├── grind-bw/          grinder controller (skeleton)
└── deploy.sh          assembles and deploys one app to /opt/<app> on a Pi

The common/ package is shared by all apps. A fix there (for example in a scale driver) lands in every app with one commit; each Pi picks it up on its next deploy. In the repo, common/ sits beside the apps; at deploy time it is copied inside the app's directory on the Pi (/opt/<app>/common/) so imports resolve from the service working directory.

Supported scales

Acaia (Lunar, Pyxis, Umbra) and BooKoo (Ultra, Mini), behind one common interface. New vendors can be added with a small driver module registered in common/scales.py; the protocol references collected under doc/BT_Scales/ document the Acaia and BooKoo wire protocols.

Deploying an app

On the target Pi, from a checkout of this repo:

git clone https://github.com/george-ags/coffee-by-weight.git
cd coffee-by-weight
./deploy.sh lm-bbw --install     # first time: copies code, installs systemd unit + env
./deploy.sh lm-bbw               # afterwards: update + restart

Use grind-bw in place of lm-bbw on the grinder Pi. Per-app setup details (Pi configuration, SPI, dependencies, wiring) are in each app's own README.

Note: This is a hobby project — provided as-is, with no support. Contributions are welcome, but it is built around my own needs; for customization, forking and making it your own is the best path.

Credits & license

Lm_BBW was inspired by and originally based on Apollo by Marcus Sorensen.

BooKoo scale support is based on BooKoo's published protocol specs in BooKoo team's GitHub

The WaveShare LCD drivers (common/lcd/) are by the WaveShare team and retain their original MIT license.

If you are a commercial organization and want to use this project please contact me

About

Brew and Grind by Weight controller for La Marzocco Linea Micra (and many others) and coffee grinders (e.g. Eureka Mignon XL, and others) using Raspberry Pi and Bluetooth scales

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages