Fermentrack: Fermentation monitoring & BrewPi-www Replacement for Raspberry Pi

Homebrew Talk - Beer, Wine, Mead, & Cider Brewing Discussion Forum

Help Support Homebrew Talk - Beer, Wine, Mead, & Cider Brewing Discussion Forum:

This site may earn a commission from merchant affiliate links, including eBay, Amazon, and others.
Just curious, Thorrak, what’s the benefit you want from Dockerizing? Just better portability? Or does it simplify deployment? Or?
It's so he can spend multiple weeks coming up with a way to deploy it so that it cuts down on a couple of strange bugs. Or maybe I'm misunderstanding it. :p
 
Just curious, Thorrak, what’s the benefit you want from Dockerizing? Just better portability? Or does it simplify deployment? Or?

It eliminates issues like this.

I'd guess that ~75% of the issues that aren't user-error are caused by environmental issues. In my attempts to resolve this I've implemented multiple types of GitHub upgrade (the "force" button), scripts that reinstall the python requirements from pip, scripts that delete/reinstall the virtualenv overall, tests specifically to ensure that the requirements for tilt Bluetooth support are installed, and tests to ensure that the database is in a consistent state. Although I think these have helped, people still have issues -- and that's just in the course of normal use. There's no way I can build scripts (without creating gaping security holes) that would fully automate the environmental fixes required to support upgrades like the one that took place earlier this year to move from Django 1.x to Django 3.x.

With Docker, the environment can be guaranteed to be consistent across installations and even the most difficult of upgrades can be accomplished through a single command.
 
How much of the environment is containerized? Is the OS included, or everything above that? (I'm just trying to grasp Docker, as it differs from VMs).
 
How much of the environment is containerized? Is the OS included, or everything above that? (I'm just trying to grasp Docker, as it differs from VMs).
HUGELY oversimplified - a VM virtualizes a server, and a container virtualizes a service. That's close enough for this context I think.

I swear I am not trying to be funny, this is a good primer if you have no idea: The Illustrated Children’s Guide to Kubernetes

(There are many flavors of containerization, that's not important to the concept.)
 
How much of the environment is containerized? Is the OS included, or everything above that? (I'm just trying to grasp Docker, as it differs from VMs).

I do not pretend to be an expert on any of this, but this diagram explains it best IMO:

KubernetesDockerpic1.png


It's very similar to a VM, but doesn't require the same degree of overhead as a full-on VM. Performance can be within ~5% of non-containerized apps.

The idea is that you get a similar degree of separation/segregation between the containerized applications and the host as you would with a VM which allows for the environment to be tightly controlled, without the performance hit.
 
Last edited:
Just got my new fermenter setup and made a quick hop jump from brewpiless to fermentrack. I've got to say it is soooo much better! I have a few questions though...

Having started with brewpiless I've got a nodemcu v3 board (I usually use the esp-12e profile). I started with a double relay module and a ds18b20 sensor, although I've just added 2 more ds18b20s on the i2c bus.

I've got fermentrack up and running on a pi current and used it to flash the latest version of brewpi-esp8266.

I changed my pinout as per the github page:
  • D0 - Heat
  • D5 - Cool
  • D6 - OneWire Data
However I'm missing something on how I configure the sensors now? Do I still have to directly access the brewpi (esp) to configure the pin/slot/sensor stuff or does fermentrack do this for me? Scratch that, was being blind.

Secondly, as much as I have raspberry pi's sitting around, I prefer to use docker or kubernetes so I can manage everything on my main server. I've read a few comments, on this thread, just wondered how I can get some container goodness? Also interested if you've managed to flash devices once running in docker? I know it's possible as esphome allows you to do it.

Many thanks

Andy
 
Last edited:
Secondly, as much as I have raspberry pi's sitting around, I prefer to use docker or kubernetes so I can manage everything on my main server. I've read a few comments, on this thread, just wondered how I can get some container goodness? Also interested if you've managed to flash devices once running in docker? I know it's possible as esphome allows you to do it.

Glad to hear you like it thus far!

Yes, you absolutely can flash devices from an instance of Fermentrack running in docker. Thus far, there are no features in non-containerized Fermentrack that I have not been able to get to work - though admittedly some (e.g. mDNS support) required me jumping through more hoops than others. There are still a handful of features I've yet to test, though, and as such this statement may change before go-live.

Everything is still very much in testing and not quite ready for broader consumption, hence why I haven't posted instructions for a Docker-based install here just yet. If you're fine with it potentially breaking, though, I'd be happy to shoot you a PM with instructions on how to install it.
 
There shouldn’t be, so long as everything is on the same network.

What happens when you try?
It’s just blank like nothing shows up in the iframe. Likewise if I make an iframe with my raspberry pints page it displays fine. Wasn’t sure if it’s cause of the web server difference between the two projects.
 
Any suggestions how to improve my PID adjustments? The PID is now heating and then cooling although the cooling would not be needed in my opinion. Beer temp is set to 19°C and the PID parameters are currently at default. Temperature idle range top setting is 1 so I think it should not start the cooling cycle but I'm new to adjusting PIDs so don't really know where to start from.
101979371-51ff9580-3c65-11eb-835a-a6aa1c4bf8ed.png
 
It’s just blank like nothing shows up in the iframe. Likewise if I make an iframe with my raspberry pints page it displays fine. Wasn’t sure if it’s cause of the web server difference between the two projects.

That sounds like it could be some kind of cross-origin resource sharing (CORS) protection kicking in on your browser. There are ways to fix this by editing the nginx configuration - but as it's a security thing, it's not set this way by default.

Any suggestions how to improve my PID adjustments? The PID is now heating and then cooling although the cooling would not be needed in my opinion. Beer temp is set to 19°C and the PID parameters are currently at default. Temperature idle range top setting is 1 so I think it should not start the cooling cycle but I'm new to adjusting PIDs so don't really know where to start from.
View attachment 710242

You shouldn't need to edit your PID parameters, as they should be self-tuning.

What kind of heater are you using? It almost looks like your heater is way too powerful for your setup.
 
That sounds like it could be some kind of cross-origin resource sharing (CORS) protection kicking in on your browser. There are ways to fix this by editing the nginx configuration - but as it's a security thing, it's not set this way by default.



You shouldn't need to edit your PID parameters, as they should be self-tuning.

What kind of heater are you using? It almost looks like your heater is way too powerful for your setup.
Yeah I may look around in there like I say it doesnt bug me too bad but would be cool to have it be easily accessable by my wall mounted tablets within my home automation. I pulled up the chrome developer console and checked for this blocked page request when I attempted to load it in an iframe.


Referrer Policy:

same-origin
 
Yeah I may look around in there like I say it doesnt bug me too bad but would be cool to have it be easily accessable by my wall mounted tablets within my home automation. I pulled up the chrome developer console and checked for this blocked page request when I attempted to load it in an iframe.


Referrer Policy:

same-origin

Yep, that would be it. Editing the nginx config is pretty straightforward if you want to set it up (and it's outside the update workflow, so once edited it will stay that way).
 
I've come across an interesting problem with my Onewire temperature sensors...

I have two (2) Onewire temperature sensors hooked up my fermentrack system with the typical GND/5v/data wires combined on a wiring block to read beer and chamber temps. After doing some wire management in my project box I'm now encountering an issue where I can't read both temps at the same time. If I have a single Onewire sensor hooked up (GND/5v/data), all is well (I see readings in my fermentrack instance). I've independently verified both sensors. The problem lies when I have both hooked up...I get no reading from either (configure pins page shows "Temp Value: None").

Any ideas?
 
I've come across an interesting problem with my Onewire temperature sensors...

I have two (2) Onewire temperature sensors hooked up my fermentrack system with the typical GND/5v/data wires combined on a wiring block to read beer and chamber temps. After doing some wire management in my project box I'm now encountering an issue where I can't read both temps at the same time. If I have a single Onewire sensor hooked up (GND/5v/data), all is well (I see readings in my fermentrack instance). I've independently verified both sensors. The problem lies when I have both hooked up...I get no reading from either (configure pins page shows "Temp Value: None").

Any ideas?

It makes absolutely no sense, but I had a similar issue when testing a new PCB design that piped 5v to the DS18b20s rather than 3v3. If you can easily enough, try switching the 5v for 3v3 and see if that helps.
 
I have two (2) Onewire temperature sensors hooked up my fermentrack system with the typical GND/5v/data wires combined on a wiring block to read beer and chamber temps. After doing some wire management in my project box I'm now encountering an issue where I can't read both temps at the same time. If I have a single Onewire sensor hooked up (GND/5v/data), all is well (I see readings in my fermentrack instance). I've independently verified both sensors. The problem lies when I have both hooked up...I get no reading from either (configure pins page shows "Temp Value: None").
How are you pulling up the OneWire? 3V3 or 5V? It should be 3V3, with a 2K2 resistor. You can try dropping the resistor value a bit if that's where you are. Go to a 1K, put another 2K2 in parallel with the first.
 
You shouldn't need to edit your PID parameters, as they should be self-tuning.

What kind of heater are you using? It almost looks like your heater is way too powerful for your setup.

It's a 500W car interior heater. I think it's overkill but I'm prepared for harsh winter as the chamber is not in insulated building. Maybe I'll buy a ceramic heater bulb and use that when it's not that cold. Thanks for the response!
 
Holy crap. Those Tilt folks have gone "plaid".

Cheers! (I'll just watch how frequent my compressors cycle, thanks. Hella cheaper ;))

btw: How does "higher resolution" matter when krausen can affect them so easily?
 
Holy crap. Those Tilt folks have gone "plaid".

Cheers! (I'll just watch how frequent my compressors cycle, thanks. Hella cheaper ;))

btw: How does "higher resolution" matter when krausen can affect them so easily?
They made it heavier! The trick is to outweigh the krausen (or so I've been told)

When I get some time, I need to do my gravity sensor shootout. iSpindel vs. Tilt v1 vs. Tilt v2 vs. Tilt v3 vs. Tilt Pro vs. Anton Parr digital hydrometer. Possibly after the holidays
 
They made it heavier! The trick is to outweigh the krausen (or so I've been told)

When I get some time, I need to do my gravity sensor shootout. iSpindel vs. Tilt v1 vs. Tilt v2 vs. Tilt v3 vs. Tilt Pro vs. Anton Parr digital hydrometer. Possibly after the holidays
 
It’s just blank like nothing shows up in the iframe. Likewise if I make an iframe with my raspberry pints page it displays fine. Wasn’t sure if it’s cause of the web server difference between the two projects.
If you find an answer to this I'd be interested. I tried a similar frame experiment placing BPR and Tiltbridge side by side. tiltbridge loads fine, but BPR doesn't load the beer panel.
 
Question: I modified the color value for the beer temp. plot on the graph, saved it, but it didn’t change. At what point does the new value get applied? I refreshed the window, and waited for a new data point to be plotted. Nada.
 
They made it heavier! The trick is to outweigh the krausen (or so I've been told)

When I get some time, I need to do my gravity sensor shootout. iSpindel vs. Tilt v1 vs. Tilt v2 vs. Tilt v3 vs. Tilt Pro vs. Anton Parr digital hydrometer. Possibly after the holidays
That would be a neat study. I wonder how to standardize the effect of foam? Soap would probably reduce surface tension and throw it off.
 
That would be a neat study. I wonder how to standardize the effect of foam? Soap would probably reduce surface tension and throw it off.

I wasn't planning on standardizing it at all. My thought was to throw all the devices in the same bucket, and let them get impacted however they get impacted. If foam/krausen throws off the readings in the test, I would expect it to do the same in an actual ferment. I'd try to grab readings at least daily throughout fermentation, so the impact of foam/krausen should be easily seen as well.
 
OK - before i start my next beer i want to try and fix something that's been bugging me.

is there a (relatively easy) way to limit the Grav sensor Temp (from an iSpindel) to only a few decimal places?

mine keeps going to 14 places, possibly as its converting from F to C somewhere.

not a huge issue but when tracking a line with the mouse to see what any value was at a given time, the whole screen readjusts to take the extra line into acount.

p.s. been getting on great with Fermentrack - what an amazing tool!
 

Attachments

  • DecPoint.JPG
    DecPoint.JPG
    73.9 KB · Views: 13
I wasn't planning on standardizing it at all. My thought was to throw all the devices in the same bucket, and let them get impacted however they get impacted. If foam/krausen throws off the readings in the test, I would expect it to do the same in an actual ferment. I'd try to grab readings at least daily throughout fermentation, so the impact of foam/krausen should be easily seen as well.
Having them all in the same bucket is standardizing their environment. I thought you might try to put them through a scale of known densities, but having them all going through the same dynamic fermentation should give you some data. Watched that video, seemed the larger module bucked the effects of krausen better but he didn't seem too confident in any data during the heavy ferment. Interested to see how your test fares.
 
Should be with the next refresh. I’ll take a look

Turned out to be [mostly] my fault. It was one of these...
- I can’t count
- I can’t see
- my brain has embraced a new 7-digit RGB format that is not compatible with Fermentrack.

Some field validation might be helpful there for creative people like me. 😎
 
Turned out to be [mostly] my fault. It was one of these...
- I can’t count
- I can’t see
- my brain has embraced a new 7-digit RGB format that is not compatible with Fermentrack.

Some field validation might be helpful there for creative people like me. 😎

If you have a sec, open an issue on GitHub so I don't forget. Definitely worth adding some kind of alert, even if it's just a warning header on the page.
 
OK - before i start my next beer i want to try and fix something that's been bugging me.

is there a (relatively easy) way to limit the Grav sensor Temp (from an iSpindel) to only a few decimal places?

mine keeps going to 14 places, possibly as its converting from F to C somewhere.

not a huge issue but when tracking a line with the mouse to see what any value was at a given time, the whole screen readjusts to take the extra line into acount.

p.s. been getting on great with Fermentrack - what an amazing tool!

I thought I had it set to round? Oh well, the change is pushed to dev. Update and it should start rounding.


NOTE - I am not home and have not tested this. Please let me know if this worked - it could have broken everything.
 
I thought I had it set to round? Oh well, the change is pushed to dev. Update and it should start rounding.


NOTE - I am not home and have not tested this. Please let me know if this worked - it could have broken everything.


Thanks for the speedy reply as always - i updated and checked the log and saw 'Successfully installed pip-20.3.3' which I'm hoping is the latest

it didn't look to immediately solve the issue so i removed the sensor and tried re-adding it - also unsuccessful

I'll try again later on my personal machine rather than my work comp in case that's the cause of the issue.
 
Thanks for the speedy reply as always - i updated and checked the log and saw 'Successfully installed pip-20.3.3' which I'm hoping is the latest

it didn't look to immediately solve the issue so i removed the sensor and tried re-adding it - also unsuccessful

I'll try again later on my personal machine rather than my work comp in case that's the cause of the issue.

The rounding gets applied as the points are initially received, so this won't impact previously saved logs. That said - are you still seeing 11 decimal places for newly received data points?

The computer/device you're accessing Fermentrack from shouldn't impact what you see in this case, since the fix is at the point that the logging takes place.
 

Latest posts

Back
Top