Skip to main content

A reverse-engineered server for the Picobrew homebrewing machines

Project description

picobrew-server

PyPI version Python versions CI

This project reverse-engineers a server for the proprietary PicoBrew protocol for use with the PicoBrew Zymatic, a homebrewing machine. It is intended to provide an alternative to run the machine without a connection to the official servers at picobrew.com. Run your own server and sync your recipes offline.

HTTP API

The PicoBrew Zymatic's built-in Ardunio uses an unencrypted HTTP communication protocol. All request are GET requests and are not authenticated. The following documentation is based on Firmware 1.1.8.

Installation

  1. Install Python 3.10 or above
  2. In a terminal download, install and run the project:
// Download and install
pip install picobrew_server

// Start the server in production mode on port 80

// Windows
set FLASK_APP=picobrew_server
flask run --port 80 --host 0.0.0.0

// OSX / Linux
export FLASK_APP=picobrew_server
flask run --port 80 --host 0.0.0.0

// Optionally set a persistent secret key (a random one is generated each restart otherwise)
export SECRET_KEY=your-secret-key-here
  • Connect the PicoBrew machine to your computer and enable DNS spoofing. Re-route www.picobrew.com to your computer. More Details

Development

  1. Install Python 3.10+ & uv:
curl -LsSf https://astral.sh/uv/install.sh | sh
  1. Install all dependencies:
uv sync --group dev

# Start the server on http://localhost:5000
FLASK_APP=picobrew_server uv run flask run
  1. Run tests:
uv run pytest
  1. Lint, Format, and Type Check changes:
uv run ruff check picobrew_server
uv run ruff format picobrew_server
uv run ty check picobrew_server

Demo

You can try out the admin UI for uploading your XML files in this online demo. Please note, this website is for showcasing only and you should deploy your own version.

Features

  • Import BeerXML files
  • Send all your recipes to the PicoBrew
  • Send cleaning recipes to the PicoBrew
  • Session Logging
  • Session Recovery
  • Admin Web UI

ToDo

  • Session Charts

Machine Support

  • Picobrew Zymatic

ToDo

  • Picobrew Z Series
  • Picobrew Pico C

Disclaimer

This software is provided "as is" and any expressed or implied warranties are disclaimed. This software submits recipes with temperature targets to your PicoBrew machine and will cause it to heat water. Any damage to your PicoBrew machine is at your own risk.

If the Zymatic faults and the screen goes blank, DON'T leave it powered on. The circulating pump will shut off and the heater stays on. A tube in the glycol loop may rupture.

License

MIT @ Tom Herold

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

picobrew_server-1.1.0.tar.gz (1.5 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

picobrew_server-1.1.0-py3-none-any.whl (1.5 MB view details)

Uploaded Python 3

File details

Details for the file picobrew_server-1.1.0.tar.gz.

File metadata

  • Download URL: picobrew_server-1.1.0.tar.gz
  • Upload date:
  • Size: 1.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for picobrew_server-1.1.0.tar.gz
Algorithm Hash digest
SHA256 08130a77285410e32157636e3aa053f62c78b86a8480f8aa0a7306782f5c75f0
MD5 8dd5f37082b847934cf8aa6a72df1095
BLAKE2b-256 ba58a6c2ed92061fc6e0159948441f452bd9912942ae5bc43904ffdba29ff243

See more details on using hashes here.

Provenance

The following attestation bundles were made for picobrew_server-1.1.0.tar.gz:

Publisher: publish_pypi.yml on hotzenklotz/picobrew-server

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file picobrew_server-1.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for picobrew_server-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f8f8fe6820b31542a0e6e7c72d3158df6abd7c4271ee199246d893a2117ba5da
MD5 dd8b501b0eea4f0632590dcae0c1a008
BLAKE2b-256 c898d4ff05128463e77a367954fbcebe8a2a7f2786ff6251af68efebc8216cce

See more details on using hashes here.

Provenance

The following attestation bundles were made for picobrew_server-1.1.0-py3-none-any.whl:

Publisher: publish_pypi.yml on hotzenklotz/picobrew-server

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page