The GND-CTRL app is currently live at gnd-ctrl.vercel.app.
GND-CTRL is an experimental web app for controlling the COM-GND Espresso Open Source Hardware project. It connects to the COM-GND control hardware module via Bluetooth and allows for advanced shot profiling.
WARNING: This project is in alpha stage and under ongoing development - use with caution.
GND-CTRL relies on the experimental Web Bluetooth API. The api currently has limited support and this app has been developed and tested for use with the Chrome browser. On iOS, Neither Chrome nor Safari currently support Web Bluetooth, but there are a number of alternative browsers (e.g. Webble) available and designed for this purpose.
COM-GND Espresso is designed to provide flexibility in what hardware modules are installed. The aim is to support varying levels of espresso machine modification and easy progressive upgrades.
The minimum required hardware is the COM-GND Base unit and the Pump Control Module.
Current Modules
- COM-GND Base: Serves as hub for other modules and provides bluetooth communication for pump power, pressure sensor, and target pressure values via BLE.
- Pump Control: Allows for control of vibration pump power level by either manual dial or app control. Enables pre-infusion and basic profiling.
- Pressure Sensor: Adds real-time pressure sensing. Enables true pressure profiling.
- Rotary Encoder: Enable manual control of pump or pressure level through a rotary control.
Future Modules
- Temperature PID
- Bluetooth Shot Scale
Profiles provide a framework for generating specific recipes. The basic profile is Time & Pressure (controlling pressure over time)
Profiles are stored in the /profiles
directory. Each profile is a javascript class that extends the profile
base class.
Because the profile file is written in javascript, the shot can be profiled with flexibility and conditional design. See the blooming-espresso.js
file for a simple example of the api.
More information to come...
GND-CTRL is a Next.js project bootstrapped with create-next-app
.
First, run the development server:
yarn dev
Open http://localhost:3000 with your browser to see the result.
The Bluetooth web API is only available over https
or localhost
.
If you want to test the app with another device on your local LAN (such as an iphone), you will you need to create a self-signed ssl certificate for the node server.
On OS X, you can follow this tutorial to generate a set of certifcates with mkcert.
Update the https-server.js
file with your certifcate file paths and run:
yarn https-dev
Open your .local
address (eg. https://my-notebook.local:3000) from any device on your LAN.
You can start editing the page by modifying pages/index.js
. The page auto-updates as you edit the file.
API routes can be accessed on http://localhost:3000/api/hello. This endpoint can be edited in pages/api/hello.js
.
The pages/api
directory is mapped to /api/*
. Files in this directory are treated as API routes instead of React pages.
To learn more about Next.js, take a look at the following resources:
- Next.js Documentation - learn about Next.js features and API.
- Learn Next.js - an interactive Next.js tutorial.
You can check out the Next.js GitHub repository - your feedback and contributions are welcome!
The easiest way to deploy your Next.js app is to use the Vercel Platform from the creators of Next.js.
Check out our Next.js deployment documentation for more details.