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.
Thorrak even made a video that I have bookmarked! I did run into some issues trying to download as Windows thought it was a virus-I disabled MSE and got it to load.

:)

If anyone wants to pay the $1k/year or whatever the stupid amount is that the various certificates & other things required to sign Windows executables cost, then I'll happily get this signed. I was grumbling about the cost/hoops that Apple puts up until I started down the Microsoft path. Yikes!

(Side note - if anyone wants to Cunningham's Law this post, I'd HAPPILY accept the correction. All my research into the topic revealed was a well of sadness and despair)
 
Last edited:
So is fermentrack broken? I tried to upgrade yesterday from within the webpage (through github). I let it run overnight. But fermentrack would not load this AM. I tried reinstalling with the curl command as well as deleting the fermentrack directory and reinstalling. Now i just get gateway times out when trying to load the local Ip in the browser.
 
So is fermentrack broken? I tried to upgrade yesterday from within the webpage (through github). I let it run overnight. But fermentrack would not load this AM. I tried reinstalling with the curl command as well as deleting the fermentrack directory and reinstalling. Now i just get gateway times out when trying to load the local Ip in the browser.

It should be working, but you may need to fix your environment & install Python 3.7 if you're running on Raspbian Stretch or earlier. Take a look at this issue on GitHub for some background on the issue & instructions on how to fix..
 
It should be working, but you may need to fix your environment & install Python 3.7 if you're running on Raspbian Stretch or earlier. Take a look at this issue on GitHub for some background on the issue & instructions on how to fix..
Thank you. That worked. I also got fermentrack connected to my tiltbridge again which i haven't been able to do for awhile! I see i should have read a few posts above. Must have missed it!
 
Thank you. That worked. I also got fermentrack connected to my tiltbridge again which i haven't been able to do for awhile!
If you aren't using the latest TiltBridge firmware (the "beta" firmware) you should upgrade to it. ;)

One warning though - upgrading the TiltBridge firmware will nuke its settings, so you will need to set it back up once you're done.
 
:)

If anyone wants to pay the $1k/year or whatever the stupid amount is that the various certificates & other things required to sign Windows executables cost, then I'll happily get this signed. I was grumbling about the cost/hoops that Apple puts up until I started down the Microsoft path. Yikes!

(Side note - if anyone wants to Cunningham's Law this post, I'd HAPPILY accept the correction. All my research into the topic revealed was a well of sadness and despair)

I can check with a co-worker to be sure, but a code signing certificate can be had for $200/yr - I don't THINK you need much, if anything more than that (could be wrong though).
 
Quick update

I pushed a change live earlier today for the issue @MegaTrond and @Guper were having following the Django 3.0 upgrade. If you have had issues where the banner on the main page won't go away even after running the script to fix things, try updating to the latest dev release of Fermentrack and clicking the link in the banner one more time.


Explanation for the curious:

Every time a change is made to a data model in Django, it generates a "database migration" script that updates the database to match the new model. Whenever you upgrade to a new codebase in Fermentrack it runs these scripts to "migrate" the database. For some reason it appears that some of these migrations hadn't been applied to some installations of Fermentrack prior to the upgrade to Django 3.0.

This creates an issue for a couple of reasons. Django 3.0 expects that "foreign key" checks are enabled in SQLite while Django 1.11 did not. As a result, Django 3.0 refuses to run any migration scripts as it sees that some of those "foreign key" checks were failing. Problem is, the "fix_sqlite" script that is supposed to resolve those failing foreign key checks won't run because there are migrations that haven't been applied.

The fix I pushed out basically provides a way Django can apply the migrations while ignoring any foreign key errors, then fix the foreign key errors so that it can apply migrations the right way going forward.

One nice thing about all of this is that it all stems from the fact that Django 1.11 was lazy in their data integrity model whereas Django 3.0 actually enforces it properly. Now that everyone is (hopefully) successfully able to migrate to Django 3.0, we should be good on this type of problem going forward. Growing pains - but worthwhile ones!
 
Last edited:
So im running fermentrack with an arduino uno and want to add an I2C 20x4 lcd, I've got it wired to the arduino on the sda and scl pins, the screen has power, but nothing is displayed, is there something in the software I need to enable?
 
Hi @Thorrak I'm having an issue getting the heating to work. I've described my issue below and what steps I've taken to troubleshoot. Is there maybe something simple/obvious that I should try first?

My Setup:

Issue:
  • When fermentrack initiates heat mode, it doesn't send a signal to the heating relay (typically a red led should light at that relay when the heat is engaged).

I too am having this issue and with a similar setup. I'm running an esp8266 NodeMCU with the latest firmware flashed via Fermentrack. I've troubleshooted the hardware (connections, relays, etc) and all checks out. My Heat relay is connected to D0 as specified in the documentation, but it appears that when the virtual LCD says "Heating for XXXX", the D0 pin never changes state and the relay doesn't trigger.

Cooling works just fine. I've triple-checked that the heating relay is connected to the correct pin.

Clicking on "Debug Device Connection" button in Fermentrack says that everything passes except "Controller Response Test". This fails. (controller in same room as wifi hub). From the STDERR.log, I see these errors:

May 25 2020 19:46:49 Available devices received: [{"i": -1, "t": 0, "c": 1, "b": 0, "f": 0, "h": 1, "d": 0, "p": 13, "x": 1}]
May 25 2020 19:47:10 Notification: Temperature control disabled
May 25 2020 20:02:10 Controller debug message: INFO MESSAGE 19: No peak detected. Drifting up after heating, current temp: 77.3, estimated peak: 118.4. Previous heat estimator: 0.199, New heat estimator: 0.131..
May 25 2020 20:31:27 Lost connection to controller on read. Attempting to reconnect.
May 25 2020 20:31:30 Unable to connect to BrewPi 192.168.0.50 on port 23. Exiting.
May 25 2020 20:31:32 Lost connection to controller on write. Attempting to reconnect.
May 25 2020 20:31:32 Serial Error: [Errno 9] Bad file descriptor)
May 25 2020 20:32:35 Error: controller is not responding to new data requests. Exiting.
May 25 2020 20:32:44 Connection type WiFi selected. Trying TCP serial (WiFi)
May 25 2020 20:32:44 Connecting to BrewPi fermcontroller1.local (via 192.168.0.50) on port 23
May 25 2020 20:32:47 Successfully connected to controller.
May 25 2020 20:32:47 Notification: Script started, with no active beer being logged
May 25 2020 20:32:57 Checking software version on controller...
May 25 2020 20:32:57 Found BrewPi v0.2.4, running commit 00000000, running on an ESP8266 ESP8266 with a DIY shield on port 192.168.0.50:23

May 25 2020 20:32:57 BrewPi version received was 0.2.4 which this script supports in 'legacy' branch mode.
May 25 2020 20:32:57 Bound to TCP socket on port 2968, interface localhost
May 25 2020 20:32:58 Installed devices received: [{"i": 0, "t": 1, "c": 1, "b": 1, "f": 9, "h": 2, "d": 0, "p": 12, "v": 77.336, "a": "28405B0A2E1901F5", "j": 0.563}, {"i": 1, "t": 3, "c": 1, "b": 0, "f": 3, "h": 1, "d": 0, "p": 14, "v": 0, "x": 1}, {"i": 2, "t": 1, "c": 1, "b": 0, "f": 5, "h": 2, "d": 0, "p": 12, "v": 77.336, "a": "28FD58162E1901DC", "j": -0.336}, {"i": 3, "t": 3, "c": 1, "b": 0, "f": 2, "h": 1, "d": 0, "p": 16, "v": 0, "x": 1}]

Any ideas what's going on?
 
So im running fermentrack with an arduino uno and want to add an I2C 20x4 lcd, I've got it wired to the arduino on the sda and scl pins, the screen has power, but nothing is displayed, is there something in the software I need to enable?

Fermentrack doesn't care about what LCD you have connected - for that, you'll need to check with the documentation associated with your firmware. I am the author of/can help with the ESP8266 firmware, but for Arduino versions unfortunately I have no idea. :(


I too am having this issue and with a similar setup. I'm running an esp8266 NodeMCU with the latest firmware flashed via Fermentrack. I've troubleshooted the hardware (connections, relays, etc) and all checks out. My Heat relay is connected to D0 as specified in the documentation, but it appears that when the virtual LCD says "Heating for XXXX", the D0 pin never changes state and the relay doesn't trigger.

Cooling works just fine. I've triple-checked that the heating relay is connected to the correct pin.

Clicking on "Debug Device Connection" button in Fermentrack says that everything passes except "Controller Response Test". This fails. (controller in same room as wifi hub). From the STDERR.log, I see these errors:

May 25 2020 19:46:49 Available devices received: [{"i": -1, "t": 0, "c": 1, "b": 0, "f": 0, "h": 1, "d": 0, "p": 13, "x": 1}]
May 25 2020 19:47:10 Notification: Temperature control disabled
May 25 2020 20:02:10 Controller debug message: INFO MESSAGE 19: No peak detected. Drifting up after heating, current temp: 77.3, estimated peak: 118.4. Previous heat estimator: 0.199, New heat estimator: 0.131..
May 25 2020 20:31:27 Lost connection to controller on read. Attempting to reconnect.
May 25 2020 20:31:30 Unable to connect to BrewPi 192.168.0.50 on port 23. Exiting.
May 25 2020 20:31:32 Lost connection to controller on write. Attempting to reconnect.
May 25 2020 20:31:32 Serial Error: [Errno 9] Bad file descriptor)
May 25 2020 20:32:35 Error: controller is not responding to new data requests. Exiting.
May 25 2020 20:32:44 Connection type WiFi selected. Trying TCP serial (WiFi)
May 25 2020 20:32:44 Connecting to BrewPi fermcontroller1.local (via 192.168.0.50) on port 23
May 25 2020 20:32:47 Successfully connected to controller.
May 25 2020 20:32:47 Notification: Script started, with no active beer being logged
May 25 2020 20:32:57 Checking software version on controller...
May 25 2020 20:32:57 Found BrewPi v0.2.4, running commit 00000000, running on an ESP8266 ESP8266 with a DIY shield on port 192.168.0.50:23

May 25 2020 20:32:57 BrewPi version received was 0.2.4 which this script supports in 'legacy' branch mode.
May 25 2020 20:32:57 Bound to TCP socket on port 2968, interface localhost
May 25 2020 20:32:58 Installed devices received: [{"i": 0, "t": 1, "c": 1, "b": 1, "f": 9, "h": 2, "d": 0, "p": 12, "v": 77.336, "a": "28405B0A2E1901F5", "j": 0.563}, {"i": 1, "t": 3, "c": 1, "b": 0, "f": 3, "h": 1, "d": 0, "p": 14, "v": 0, "x": 1}, {"i": 2, "t": 1, "c": 1, "b": 0, "f": 5, "h": 2, "d": 0, "p": 12, "v": 77.336, "a": "28FD58162E1901DC", "j": -0.336}, {"i": 3, "t": 3, "c": 1, "b": 0, "f": 2, "h": 1, "d": 0, "p": 16, "v": 0, "x": 1}]

Any ideas what's going on?

I don't have any ideas off the top of my head, but I think this is enough to start poking around a bit. Let me see what I can find.
 
Hi guys, I'm thinking about building a fermentrack setup. One issue I have is that for my fermentation vessels (WilliamsWarn Brewkegs), installation of a thermowell is not practical. I don't want to risk losing my warranty on them and I'm afraid if I start drilling holes for stainless thermowells I might not get a good seal that holds under pressure. I usually let my brews carb up towards the end of fermentation and don't want to lose that.

So my question is: is there a control algorithm in fermentrack that is suitable for a 'temp probe taped to side' method? Obviously that's not going to achieve anywhere near the control accuracy of the recommended method but what I'm wondering is whether it is still worth it.
 
Hi guys, I'm thinking about building a fermentrack setup. One issue I have is that for my fermentation vessels (WilliamsWarn Brewkegs), installation of a thermowell is not practical. I don't want to risk losing my warranty on them and I'm afraid if I start drilling holes for stainless thermowells I might not get a good seal that holds under pressure. I usually let my brews carb up towards the end of fermentation and don't want to lose that.

So my question is: is there a control algorithm in fermentrack that is suitable for a 'temp probe taped to side' method? Obviously that's not going to achieve anywhere near the control accuracy of the recommended method but what I'm wondering is whether it is still worth it.
You could just use a single sensor for Fridge temperature and control it based on that. Basically, that's what an off-the-shelf temp controller does, but with the added logging benefit of Fermentrack. It wouldn't be quite as accurate but you could control the refrigerator/freezer and log your results.
 
Hi guys, I'm thinking about building a fermentrack setup. One issue I have is that for my fermentation vessels (WilliamsWarn Brewkegs), installation of a thermowell is not practical. I don't want to risk losing my warranty on them and I'm afraid if I start drilling holes for stainless thermowells I might not get a good seal that holds under pressure. I usually let my brews carb up towards the end of fermentation and don't want to lose that.

So my question is: is there a control algorithm in fermentrack that is suitable for a 'temp probe taped to side' method? Obviously that's not going to achieve anywhere near the control accuracy of the recommended method but what I'm wondering is whether it is still worth it.

Just make sure you provide enough insulation that the ambient temps of the fridge don't have an effect on the Beer Sensor's reading. It will get the job done the same.
 
Hello! I've just started using fermentrack and brewpi-esp8266 to monitor a wine kit, no problems getting it set up and seems to be doing the job well so far. Loving being able to monitor the temp without opening anything. Thanks for your hard work Thorrak!

Feature request: I'm a cheapskate who (so far) only uses extract kits and I don't have space for a hacked fridge. Right now I'm only using a brew belt on a demijohn under the stairs, no cooling chamber. Fermentrack/brewpi seem happy in that configuration in beer constant mode - the heater still gets turned on/off appropriately with no cooling pin configured, and the "fridge" temperature sensor is basically just the room temperature sensor (no room sensor configured). The GUI and LCD still display a target fridge temperature, which obviously is meaningless without a cooling method but it does no harm.

I can imagine this potentially being a lot of work for a small difference, but is there any possibility of a "cheapskate mode" where the fridge is taken out of the equation? So the LCD/web GUI would display room temp instead of fridge temp by default and ignore the fridge target temp completely.

I know in the UK at least these kits are fairly popular. A lot of people have successful brews without even using a heater as long as they have a space that maintains a good temperature. I can't be the only cheapskate who wants to use fermentrack without going down the hacked fridge route! :)

I do beer and cider kits too so I will be expanding the fleet to cover two 25L fermenters once their current contents are bottled, and I've got parts for an iSpindel in the post. Fermentrack seems to be the easiest and most cost-effective method to monitor multiple vessels, hats off to you sir!
 
Fermentrack doesn't care about what LCD you have connected - for that, you'll need to check with the documentation associated with your firmware. I am the author of/can help with the ESP8266 firmware, but for Arduino versions unfortunately I have no idea. :(

Ah okay I'll try to check out what firmware my arduino is using
 
Can anyone help guide a borderline tech-illiterate through setting up Fermentrack and RaspberryPints on the same Pi 3B running Buster? I can get Fermentrack up and running no problem on a fresh SD card, however, when I try to install Fermentrack after RaspberryPints, it doesn't successfully install. The only error message I get is *** ERROR ERROR ERROR ***

I tried using both the automated and semi-automated methods, to try and initiate the fermentrack-tools script to support Nginix supporting RaspberryPints instead of Apache (per the documentation), but neither cooperated.
 
I'm perplexed. Why are you trying to get RaspberryPints and Fermentrack to co-exist on the same system? I understood that Fermentrack should be installed on a fresh raspbian install.
 
Mostly to see if i could get it to work. Fermentrack is the main point of having the Pi for me, but Raspberry Pints is pretty cool too, so i wanted to see if i could run both without needing a second Pi.
 
I'm perplexed. Why are you trying to get RaspberryPints and Fermentrack to co-exist on the same system? I understood that Fermentrack should be installed on a fresh raspbian install.

Why would you think these two different applications should not be able to coexist?

fwiw, I have been running RaspberryPints with flow meters since its first availability on Memorial Day weekend 2014 - along with multiple instances of BrewPi - on the same RPi2B hosts. If a similar configuration subbing Fermentrack for BrewPi has OOTB issues they can likely be solved with file name changes and the use of a more qualified URL. If not, something probably should be fixed :)

Cheers!
 
Last edited:
kdw2pd said:
Mostly to see if i could get it to work. Fermentrack is the main point of having the Pi for me, but Raspberry Pints is pretty cool too, so i wanted to see if i could run both without needing a second Pi.

Fermentrack and RPints on one RPi

It can be done, but takes a little more work. FWIW, I have my RPints and Fermentrack on their own RPi. It may not be capitally efficient project management, but it does save my sanity.
 
Dumb question that I don't believe I've seen the answer to - in Fermentrack, in the 'Current ABV' tile for the tilt device, what does 'aa:' mean?
 
20200528_105911.jpg

I believe I have the wiring correct, but all I get when trying to configure the pins for the temp probes are 4 default pins. Does the relay need to be hooked up for the pins to be seen for some reason. I'd appreciate any help.
I see the following pins. Do I need to update something. I've even removed the arduino and readded it

Pin 2 ( 2 (Act 3))
Pin 5 ( 5 (Act 2))
Pin 6 ( 6 (Act 1))
Pin 19 (A5 (Act 4))
 
Last edited:
View attachment 682523
I believe I have the wiring correct, but all I get when trying to configure the pins for the temp probes are 4 default pins. Does the relay need to be hooked up for the pins to be seen for some reason. I'd appreciate any help.
I see the following pins. Do I need to update something. I've even removed the arduino and readded it

Pin 2 ( 2 (Act 3))
Pin 5 ( 5 (Act 2))
Pin 6 ( 6 (Act 1))
Pin 19 (A5 (Act 4))
I did learn that I got shipped 4.7 ohm instead of 4.7k ohm resistors, but swapping those still did not fix the issue of temp probes not showing up
 
I'm a good way through making my first brewpi unit with fermentrack. Just hooked up my two DS18b20 temperature sensors and straight away notice that there is a 0.6 degree discrepancy between the readings of the two. How accurate are these sensors? Do you get varying accuracy depending on the manufacturer?

It seems that if they are out by 0.6 from each other, then the goal of temperature control to within 0.1f is never going to be realistic.
 
Has anybody else had issues with entering calibration offsets for the temperature sensors? I have verified one of my sensors reads 0.786 under the right temperature. If I go into 'configure sensors and relays' and add the sensor with an offset, it adds a much smaller fraction of a degree. I've tried adding much larger offsets and that just gets ignored. Nothing in the docs that I can see. I'm stumped.
 
I have a multi-chamber set up (4 chambers) with a Raspberry Pi and Arduinos. Has anyone else had issues with anytime the Raspberry Pi reboots, the chambers get scrambled? I'm wondering if it's an issue with the serial auto-detection? My current work around is plugging in each controller one at a time after a re-boot.
 
I don't know much useful about Fermentrack but if it follows the paradigms used on BrewPi you should be able to dictate which Arduino is assigned which logical device using the /etc/udev/rules.d/99-arduino.rules file.

For a multi-chamber BrewPi setup, the process goes like this:

Remove all but one UNO from the USB ports and hubs, then run these commands:

$ udevadm info -a -n /dev/ttyACM0 | less > info.log
$ nano info.log [LOOK for the ATTRS{serial} for Arduino device]

looking at parent device '/devices/platform/bcm2708_usb/usb1/1-1/1-1.3/1-1.3.4':
KERNELS=="1-1.3.4"
ATTRS{manufacturer}=="Arduino (www.arduino.cc)"
ATTRS{serial}=="85336303532351F0A031"

Repeat for additional UNOS using the same physical USB port (remove the previous UNO, connect the next, etc).

Record all of the serial numbers and note which belongs to which UNO. Then create the rules files, assigning each UNO to a unique SYMLINK name:

$ sudo nano /etc/udev/rules.d/99-arduino.rules

SUBSYSTEM=="tty", KERNEL=="ttyACM*" , ATTRS{serial}=="85336303532351F0A031", SYMLINK+="brewpi1", GROUP="brewpi"
SUBSYSTEM=="tty", KERNEL=="ttyACM*" , ATTRS{serial}=="85334333931351F0F020", SYMLINK+="brewpi2", GROUP="brewpi"


Once the udev rules file is created, disconnect your Arduino and then reload udev before connecting all of the Ardiunos to their respective ports. Note it won't matter which physical USB port you plug the device into, you won't be using physical device names, you'll be using the symlink names.

$ sudo /etc/init.d/udev reload

Finally, go to each BrewPi (and Fermentrack, hopefully) instance and edit its config.cfg file to set the symlink port name as the primary to use:
Eg:

$ sudo nano /home/brewpi/brewpi1/settings/config.cfg

scriptPath = /home/brewpi/brewpi1/
wwwPath = /var/www/brewpi1/
port = /dev/brewpi1
altport = /dev/null
boardType = uno

$ sudo nano /home/brewpi/brewpi2/settings/config.cfg

scriptPath = /home/brewpi/brewpi2/
wwwPath = /var/www/brewpi2/
port = /dev/brewpi2
altport = /dev/null
boardType = uno


Hopefully something very close to this will work with Fermentrack...

Cheers!
 
Came to my senses and installed RPints on a separate microSD. It'll be easy enough to flip over the SD card, I only need the RPints for when we host, which isn't often enough to spend $30 on a Zero W kit.
 
Fermentrack and RPints on one RPi

It can be done, but takes a little more work. FWIW, I have my RPints and Fermentrack on their own RPi. It may not be capitally efficient project management, but it does save my sanity.

Came to my senses and installed RPints on a separate microSD card. I only need RPints up and running for guests when we host, which isn't often enough to justify another Pi. Not when there's other gear calling my name, anyway.
 
I'm a good way through making my first brewpi unit with fermentrack. Just hooked up my two DS18b20 temperature sensors and straight away notice that there is a 0.6 degree discrepancy between the readings of the two. How accurate are these sensors? Do you get varying accuracy depending on the manufacturer?

It seems that if they are out by 0.6 from each other, then the goal of temperature control to within 0.1f is never going to be realistic.

It has been my experience that there are always small (< 1.5 degree F) variances in how any given temp sensor will read out of the box. That's why most applications that use them offer the ability to add an offset in the first place. If you're seeing a 0.6 difference between the two, that sounds normal.

By tweaking the offset, I've been able to get my sensors to within around 0.1f of each other which is more than enough for my needs - I'm using a freezer and a lightbulb. Unless the heading/cooling hardware supports PWM, you won't be able to obtain 0.1 temperature accuracy no matter how accurate the sensors are.

Good luck and happy brewing!
 
Came to my senses and installed RPints on a separate microSD. It'll be easy enough to flip over the SD card, I only need the RPints for when we host, which isn't often enough to spend $30 on a Zero W kit.
30 bucks for a ZEROW? I can get one at Micro Center for 10 bucks and a reg camera ready for 4.99. California Micro Center
 
I have a multi-chamber set up (4 chambers) with a Raspberry Pi and Arduinos. Has anyone else had issues with anytime the Raspberry Pi reboots, the chambers get scrambled? I'm wondering if it's an issue with the serial auto-detection? My current work around is plugging in each controller one at a time after a re-boot.

Linux assigns TTY numbers based on the order in which devices pop up after a reboot. With multiple Arduinos, this creates an issue as you can't guarantee the order in which each Arduino will appear to the kernel every time. The recommendation @day_trippr had solves it - but you should check that "Prefer connecting via udev" is ticked in the device setup, as that should replicate the functionality he's referring to. If it doesn't, let me know and I can try to see if I can figure out what is happening.
 
Pretty happy with my first attempt at building a fermentrack temperature control unit. It's got a raspberry pi 4, built in 5v 3A power supply, arduino uno, opto isolated relay (which I've powered the relay side separately to the arduino), and all nicely mounted in a case.

Definitely wasn't the cheapest way to do it, but was fun and a good learning experience!

IMG_0420.jpg


IMG_0414.jpg
 
Pretty happy with my first attempt at building a fermentrack temperature control unit. It's got a raspberry pi 4, built in 5v 3A power supply, arduino uno, opto isolated relay (which I've powered the relay side separately to the arduino), and all nicely mounted in a case.

Definitely wasn't the cheapest way to do it, but was fun and a good learning experience!

View attachment 683076

View attachment 683077
Nice build! Where are you located/What kind of outlets are those? I’ve never seen those before!

This is a great looking build - good work!
 
Back
Top