.git-crypt | ||
.vscode | ||
build/debian | ||
cmd | ||
deployments/fermentor | ||
internal | ||
pkg | ||
vendor | ||
.drone.yml | ||
.editorconfig | ||
.gitattributes | ||
.gitignore | ||
go.mod | ||
go.sum | ||
Makefile | ||
README.md | ||
states.md | ||
wiring.md |
fermentord
Control the temperature of your fermentation process.
Integrations
- NATS
- Prometheus
- Sentry
Epics
Heater/Cooler
Persona | Description |
---|---|
Brewer | The person responsible for the wort and the fermentation process |
Operator | The person responsible for the fermentation tank and the system controlling it |
As a brewer I need to maintain the wort at a specific temperature so that my fermentation process is predictable As an operator I need an alert if the system can't maintain the temperature, so that I may correct the problem
Ambient temperature
- Ambient temperature
- Case temperature
- Wort temperature
- Wort gravity
User stories
Acceptance criteria
-
Given the wort is at or above the requested temperature and the heater is running then stop the heater
-
Given the wort is above the requested temperature and the heater is not running then start the cooler
-
Given the wort is above the requested temperature
-
Given the wort is too cold and the cooler is running then stop the cooler
-
Given the wort is too cold and the cooler is not running then start the heater
-
Given the cooler is running
-
Given the cooler is running when then the heater may not start
-
Given the heater is running then the cooler may not start
-
Given the temperature is
Data logging
-
Ambient temperature
-
Case temperature
-
Wort temperature
-
Wort gravity
-
Data is stored in sqlite3
-
Data is scraped and stored in PostgreSQL
-
Data is removed from sqlite3 when confirmed in PostgreSQL
Metrics
Prometheus metrics
- Ambient temperature
- Chamber temperature
- Wort temperature
- Wort gravity
- Heater state
- Cooler state
- Tank pressure
Drivers
On the Raspberry Pi you'll need to add dtoverlay=w1-gpio
(for regular
connection) or dtoverlay=w1-gpio,pullup="y"
(for parasitic connection)
to your /boot/config.txt. The default data pin is GPIO4, but that can be
changed from 4 to x with dtoverlay=w1-gpio,gpiopin=x
.
echo dtoverlay=w1-gpio,gpiopin=4,pullup=0 >> /boot/config.txt
modprobe wire
modprobe w1-gpio
modprobe w1-therm
Build
A Raspberry Pi 1 is used, so we compile for ARMv6.
cd cmd/fermentord
GOARCH=arm GOARM=6 GOOS=linux go build