zrrichards / fermbot Goto Github PK
View Code? Open in Web Editor NEWRaspberry Pi based fermentation controller for brewing
License: GNU General Public License v3.0
Raspberry Pi based fermentation controller for brewing
License: GNU General Public License v3.0
right now only subsequent fermentation start points will be persisted. Persist when start was clicked so that the start of primary fermentation is recorded if device is restarted.
Ds18b20 is being read in through the 1 wire library as 48.019F but the w1_slave file says 8.875C (47.975) if this is just a rounding error then ok great. Otherwise figure out why the discrepancy. May need to shift to big decimal inside the fermbot code.
Test pi specific classes on pi
be sure to take into account temperature increase ramps (or not) should temp ramps be assumed to be instantaneous?
If the software is "running", and it is rebooted, resume running where left off.
when posting to brewfather, add to the comment the current heating mode (i.e. HEATING, COOLING, OFF)
It doesnt work. Shows up as literal on website
Give a buffer to ensure both devices arent on at the same time
Allow through webclient to change values for heater/cooler enabled and tilt/ds18b20 enabled. Persist as json or .properties file so the device can be changed without editing the jar.
Ds18b20 will read 85C in case of error (per datasheet) account for this
Configurable (maybe can add a b and c terms of quadratic equation to configuration or to dashboard to correct temperature error)
Run brewfather upload attempt every minute and check if last successful upload was 15 min + a few seconds ago. This will make it more resilient to temporary network failures
set the current fermentation temperature profile based on temp or sg.
i.e. something like:
at SG: 1.025
increase temp to 62 for 3 days
or:
68 for 5 days
72 for 3 days
etc.
If tilt cannot be found, assume SG is the same but log a warning.
Maybe some notification if it's been a certain amount of time?
allow you to GET /snapshots/fromDate=
so that every single snapshot isn't downloaded every time. Then cache these locally in the browser
Take in electricity cost per kWh and use known wattage of heater and cooler and determine running cost for batch
48 degrees until attenuation is 35% or alternatively: until batch is 50% complete (i.e. 50% of the way to 75% attenuation)
i.e. if you have the module configured as heating only and you plug the heater into the cooling outlet, the software should detect this as it will call for heat but it will not be heating up (and vice versa).
Figure out how to adjust the required duty cycle for the Pulse Width Modulation heating algorithm. Right now duty cycle is just
d(t, s, l) = (t - s + l)/l
where:
t is the current temp
s is the current setpoint
l is the lower bound of the setpoint.
i.e if the current temp is 47.5, the setpoint is 48 and the lower bound is 1, then the duty cycle is 50% (because 47.5 is the midpoint between 47 and 48).
This works well but if the ambient temperature drops too much then the duty cycle will not be enough to offset the heat lost to the environment.
Perhaps introduce a new offset to the duty cycle b
and change function d
above to be:
d'(t, s, l) = d(t, s, l) + b
where by is empirically determined by trial and error.
Note that b
must be between 0 and 1. 0
denotes that function d does not need a correction for ambient temp and a b of 1
signifies that the heater must be on a duty cycle of 100% in order to offset the ambient temp.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.