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.
Hi all!
I have been using Fermentrack for years and I am very happy with it (rPI3+Arduino UNO). I updated to the docker version without problem but have the probes in a refrigerator and I need to calibrate them since 2 give me different temperatures (a big difference of 0.7ºC).
The problem is that in the probe configuration, I subtract these 0.7º from the offset and it is not recorded, or it appears the offset recorded with "0.012" for example, that is to say: either the offset is not recorded or this is a wrong number.
I have the software in the latest version, I have reset the EEPROM and it does not solve the problem.

What do you think could happen and how to solve it?

Thank you in advance!
Special Thanks for day_trippr and Thorrak! thanks them I have my system working for years! :)
 
Hi all!
I have been using Fermentrack for years and I am very happy with it (rPI3+Arduino UNO). I updated to the docker version without problem but have the probes in a refrigerator and I need to calibrate them since 2 give me different temperatures (a big difference of 0.7ºC).
The problem is that in the probe configuration, I subtract these 0.7º from the offset and it is not recorded, or it appears the offset recorded with "0.012" for example, that is to say: either the offset is not recorded or this is a wrong number.
I have the software in the latest version, I have reset the EEPROM and it does not solve the problem.

What do you think could happen and how to solve it?

Thank you in advance!
Special Thanks for day_trippr and Thorrak! thanks them I have my system working for years! :)
There were some bugs with the calibration implementation that I recently recall squishing -- but I can't recall if they were in Fermentrack or BrewPi-ESP. Let me dig through the code and I'll let you know what I find.
 
It's been awhile since I brewed, almost a year. It looks like Fermentrack isn't able to connect/find to tiltbridge.local. I can connect with laptop, etc. to tiltbridge.local. I did update the tiltbridge from 1.1.3 to 1.2.1, so not sure if that is the issue.
 
It's been awhile since I brewed, almost a year. It looks like Fermentrack isn't able to connect/find to tiltbridge.local. I can connect with laptop, etc. to tiltbridge.local. I did update the tiltbridge from 1.1.3 to 1.2.1, so not sure if that is the issue.

mDNS resolution is a very finnicky thing. Most communication is done from the TiltBridge to Fermentrack, so as long as you can connect to the TiltBridge and input Fermentrack's settings, you should be fine. Alternatively, you should be able to restart the device which is running Fermentrack which will clear the mDNS cache for the device.
 
Yep, manually updating it worked. I must have missed that last night when I was looking at it. I'll blame the beers during clean up.
 
There were some bugs with the calibration implementation that I recently recall squishing -- but I can't recall if they were in Fermentrack or BrewPi-ESP. Let me dig through the code and I'll let you know what I find.

Hi all!

Could you look at something Thorrak?

Apart from this and addressed to everyone:
Has anyone else had temperature probe calibration problems in Fermentrack?

TY in advance 🍻
 
Hi all!

Could you look at something Thorrak?

Apart from this and addressed to everyone:
Has anyone else had temperature probe calibration problems in Fermentrack?

TY in advance 🍻

Hey - Apologies, I did look before but didn't find anything interesting, and then got distracted before I came back here to report on what I found. From digging through Fermentrack's code, it looks like the changes I was remembering were made several years back.

I'm anticipating that the issue here is in the way that the (string) calibration offset is being converted to BrewPi's internal temperature format. If you look in your device's log when you set a calibration amount, what is the string that is being sent to the device?
 
Hey - Apologies, I did look before but didn't find anything interesting, and then got distracted before I came back here to report on what I found. From digging through Fermentrack's code, it looks like the changes I was remembering were made several years back.

I'm anticipating that the issue here is in the way that the (string) calibration offset is being converted to BrewPi's internal temperature format. If you look in your device's log when you set a calibration amount, what is the string that is being sent to the device?
Hey, thanks for your fast response 👌🏼
The process I did for this test is: disable the sensor, enable it again by adding a test offset (I.e. -1.5) , see stdout log to check.

Here are the images, I don't see any offset in the log, I've tried it several times.

It is curious that sometimes an offset appears (always wrong) and in others there is no offset. I have tried to do an EEPROM reset, I have reconfigured the sensors without noticing any changes.
 

Attachments

  • IMG_4870.png
    IMG_4870.png
    200.9 KB · Views: 0
  • IMG_4872.png
    IMG_4872.png
    205.8 KB · Views: 0
  • IMG_4874.jpeg
    IMG_4874.jpeg
    1.3 MB · Views: 0
  • IMG_4871.png
    IMG_4871.png
    195.2 KB · Views: 0
  • IMG_4875.jpeg
    IMG_4875.jpeg
    1.2 MB · Views: 0
I need to run an errand before I can try to push out a change to fix this, but I can see the offset being applied here:

Screenshot 2024-02-07 at 3.36.42 PM.png


I think the problem is that the offset is being sent as a float, and the Arduino firmware strictly expects it to be a string. I'm pretty sure I can fix this in the BrewPi Script implementation, but need to double check some code in the BrewPi-ESP firmware first to make sure that won't break anything.
 
Hey, thanks for your fast response 👌🏼
The process I did for this test is: disable the sensor, enable it again by adding a test offset (I.e. -1.5) , see stdout log to check.

Here are the images, I don't see any offset in the log, I've tried it several times.

It is curious that sometimes an offset appears (always wrong) and in others there is no offset. I have tried to do an EEPROM reset, I have reconfigured the sensors without noticing any changes.

I need to run an errand before I can try to push out a change to fix this, but I can see the offset being applied here:

View attachment 841117

I think the problem is that the offset is being sent as a float, and the Arduino firmware strictly expects it to be a string. I'm pretty sure I can fix this in the BrewPi Script implementation, but need to double check some code in the BrewPi-ESP firmware first to make sure that won't break anything.
 
I need to run an errand before I can try to push out a change to fix this, but I can see the offset being applied here:

View attachment 841117

I think the problem is that the offset is being sent as a float, and the Arduino firmware strictly expects it to be a string. I'm pretty sure I can fix this in the BrewPi Script implementation, but need to double check some code in the BrewPi-ESP firmware first to make sure that won't break anything.
@TheFlangerBeer - The image has finished building. To install it, from your fermentrack tools directory run ./install.sh -i dev

Let me know if this resolves the issue!
 
@TheFlangerBeer - The image has finished building. To install it, from your fermentrack tools directory run ./install.sh -i dev

Let me know if this resolves the issue!
Hi man.
Not only has it not worked, but it can't load Fermentrack.

I have attached the installation process with the errors, and also the access screen to my IP (192.168.1.128). it can't access this website and open Fermentrack 😢
——————-

Edit: ok, I thought there was nothing to lose, so I reinstalled Fermentrack:

curl -L install.fermentrack.com | bash

Everything went well, my configuration has been preserved, so I have tested the Offset as follows:

BEER probe: offset -0.7

Apply

“Refresh sensor temp readings” button and this is what is shown: (see screen of temp data):

it shows temp calibration offset: -0.25 (it should be -0.7).

I intuit that I have done something wrong...

—————
More data: I tried again to make a temperature adjustment by adding an offset of +0.7 to the BEER probe (literally “0.7”, no sign)

The result is that after doing so, an offset of 0.188 is shown.

It seems that everything is the same as at the beginning 🤷‍♂️
 

Attachments

  • IMG_4886.jpeg
    IMG_4886.jpeg
    2.9 MB · Views: 0
  • Nuevo.txt
    5.5 KB · Views: 0
  • IMG_4887.jpeg
    IMG_4887.jpeg
    1.2 MB · Views: 0
Last edited:
Hi man.
Not only has it not worked, but it can't load Fermentrack.

I have attached the installation process with the errors, and also the access screen to my IP (192.168.1.128). it can't access this website and open Fermentrack 😢
That's my fault. The command should be:

./install.sh -i docker-dev

I forgot the "docker-" part.
 
That's my fault. The command should be:

./install.sh -i docker-dev

I forgot the "docker-" part.
Thanks for your effort and help man but… it doesn’t work. In resume: No changes.🤷‍♂️
I installed twice with no errors.

No offset:
Probe beer: 23.125°C
Probe chamber: 23.813
All probes inside a flask with water.
Reference thermometer: 23.1°C

(So we need apply a -0.7 offset to chamber):

Offset -0.7 on chamber probe with this result:
Probe beer: 23.188°C
Probe chamber: 23.563
Temp cal. Offset: -0.25

-------
EDIT.
Log2.txt is the result of installation.
 

Attachments

  • log2.txt
    4.6 KB · Views: 0
Last edited:
Thanks for your effort and help man but… it doesn’t work. In resume: No changes.🤷‍♂️
I installed twice with no errors.

No offset:
Probe beer: 23.125°C
Probe chamber: 23.813
All probes inside a flask with water.
Reference thermometer: 23.1°C

(So we need apply a -0.7 offset to chamber):

Offset -0.7 on chamber probe with this result:
Probe beer: 23.188°C
Probe chamber: 23.563
Temp cal. Offset: -0.25
Just to make sure everything is doing what I expect, do you mind quoting the logs here again?
 
Just to make sure everything is doing what I expect, do you mind quoting the logs here again?
Again new attemps to set chamber temp. Offset sent -0,7. Shown (not always) -0,25

EDIT. Log2.txt is the result of installation.
 

Attachments

  • stderr.jpg
    stderr.jpg
    2.8 MB · Views: 0
  • stdout.jpg
    stdout.jpg
    3.7 MB · Views: 0
  • log2.txt
    4.6 KB · Views: 0
Can you paste them here?
What do you mean? I posted stderr.log, stdout.log. Do you mean screen capture?
Ok here is it.

Do you mean other logs? if so, which ones and how can I get them?
TY

----
EDIT: Well, I did it again:
I reinstalled Docker again: ./install.sh -i docker.dev
Then I set beer prove offset to "-0.7" again.
In the new stdlog and stderr you can see that I asked for -0-7 offset and interrnally Fermentrack "translate" it to "0.25".
So no changes, I am sorry to report to you bad news man, ty for your effort and support

-----
The following summary may help you.
In the log you receive (observing the variable 'j'):

Example 1:
Request updating: "-0.7" (pay attention to the quotes and lack of them)
Updated to: 0.250
Received: 0.25

Example 2:
Request updating: "-22.0"
Updated to: 0.000
Received: 0.0

Example 2:
Request updating: "7.0"
Updated to: 0.000
Received: 0.0
 

Attachments

  • Configure Sensors & Relays.pdf
    29.3 KB · Views: 0
  • stderr12-2-24.txt
    13.2 KB · Views: 0
  • stdout12-2-24.txt
    1.5 KB · Views: 0
Last edited:
What do you mean? I posted stderr.log, stdout.log. Do you mean screen capture?
Ok here is it.

Do you mean other logs? if so, which ones and how can I get them?
TY

----
EDIT: Well, I did it again:
I reinstalled Docker again: ./install.sh -i docker.dev
Then I set beer prove offset to "-0.7" again.
In the new stdlog and stderr you can see that I asked for -0-7 offset and interrnally Fermentrack "translate" it to "0.25".
So no changes, I am sorry to report to you bad news man, ty for your effort and support
I appreciate it. The logs are very helpful, as the hardware you’re using (Arduino) isn’t what have set up on my end, so I'm debugging through you, unfortunately.

I’m not seeing anything obvious on the Fermentrack side of things that could cause this as everything appears to be getting properly converted & sent to the controller, so I'm going to have to build a controller on my end to debug this, it seems. Am I correct that you are using @LBussy 's BrewPi-Remix firmware for your Arduino?
 
Te lo agradezco. Los registros son muy útiles, ya que el hardware que estás usando (Arduino) no es el que configuré por mi parte, así que desafortunadamente estoy depurando a través de ti.

No veo nada obvio en el lado de Fermentrack que pueda causar esto, ya que todo parece estar siendo convertido y enviado correctamente al controlador, por lo que tendré que construir un controlador por mi parte para depurar esto. parece. ¿Estoy en lo cierto al decir que estás utilizando el firmware BrewPi-Remix de @LBussy para tu Arduino?
Bingo! :)

In any case, I would not want this to involve a lot of work time or effort, it is not a vital thing and I can take into account the temperature difference when programming the fermentation.

I have been using it for several years now so if something works then "don't touch it" (kiss principle). The problem arose when changing a defective probe and seeing the phase difference of almost 1ºC. I'm not very sure but I think the firmware may be this:

brewpi-arduino-uno-revc-0.2.13+da7e14a9.hex

Good luck with it and as always, thank you


 
Last edited:
Bingo! :)

In any case, I would not want this to involve a lot of work time or effort, it is not a vital thing and I can take into account the temperature difference when programming the fermentation.

I have been using it for several years now so if something works then "don't touch it" (kiss principle). The problem arose when changing a defective probe and seeing the phase difference of almost 1ºC. I'm not very sure but I think the firmware may be this:

brewpi-arduino-uno-revc-0.2.13+da7e14a9.hex

Good luck with it and as always, thank you



I'm at a bit of a loss at the moment, unfortunately. I built a slimmed-down proof-of-concept based on Lee's code that can be run in a C++ shell, and best that I can tell it seems to be doing the conversion appropriately:

Code:
my_strtol called with -0.7 - Converted to 0
stringToFixedPoint called my_strtol with -0.7 - Converted to 0
my_strtol called with 7 - Converted to 7
Converted temperature difference: -358 (512=1)
calibrationAdjust: -12 (16=1)

Internally, BrewPi tracks temperatures as whole numbers, stored with either 512 steps-per-degree precision or 16 steps-per-degree precision. When I convert -0.7, it comes back with -358/512 (-0.6992) from the initial conversion which it then converts to -12/16 (-0.75) which is what it stores. If you were seeing -0.75 rather than -0.7 this would explain it -- and be OK -- but to see it convert to -0.25 makes no sense.

The only thing that I can think is that the command being sent to the controller is different somehow from the command the controller thinks that it sees.

I'll have to think a bit outside the box here to see if I can figure out how to debug this. I'll let you know what I come up with.
 
I'm at a bit of a loss at the moment, unfortunately. I built a slimmed-down proof-of-concept based on Lee's code that can be run in a C++ shell, and best that I can tell it seems to be doing the conversion appropriately:

Code:
my_strtol called with -0.7 - Converted to 0
stringToFixedPoint called my_strtol with -0.7 - Converted to 0
my_strtol called with 7 - Converted to 7
Converted temperature difference: -358 (512=1)
calibrationAdjust: -12 (16=1)

Internally, BrewPi tracks temperatures as whole numbers, stored with either 512 steps-per-degree precision or 16 steps-per-degree precision. When I convert -0.7, it comes back with -358/512 (-0.6992) from the initial conversion which it then converts to -12/16 (-0.75) which is what it stores. If you were seeing -0.75 rather than -0.7 this would explain it -- and be OK -- but to see it convert to -0.25 makes no sense.

The only thing that I can think is that the command being sent to the controller is different somehow from the command the controller thinks that it sees.

I'll have to think a bit outside the box here to see if I can figure out how to debug this. I'll let you know what I come up with.
Your involvement and commitment are worth applauding.
Thank you and good luck
 
@TheFlangerBeer - I've created a test firmware that will print some debugging info to the log that I can use to (hopefully!) figure out what is going on. If you have a moment, can you flash the correct one of the following two firmware to your Arduino:

RevC: https://www.kegscreen.com/brewpi-beta/brewpi-arduino-uno-revc-0.2.13+f1fa1.hex
I2C: https://www.kegscreen.com/brewpi-beta/brewpi-arduino-uno-i2c-0.2.13+f1fa1.hex

Once flashed, can. you attempt to set the device up (with calibration offset) and then post the logs here?
 
@TheFlangerBeer - I've created a test firmware that will print some debugging info to the log that I can use to (hopefully!) figure out what is going on. If you have a moment, can you flash the correct one of the following two firmware to your Arduino:

RevC: https://www.kegscreen.com/brewpi-beta/brewpi-arduino-uno-revc-0.2.13+f1fa1.hex
I2C: https://www.kegscreen.com/brewpi-beta/brewpi-arduino-uno-i2c-0.2.13+f1fa1.hex

Once flashed, can. you attempt to set the device up (with calibration offset) and then post the logs here?
Hello! I have a problem: I am not an expert in this and I am not sure I do it right, I have several doubts.
I installed my hardware approximately 7 years ago, I remember that it is an Arduino UNO RevC Legacy but I remember little else. I have installed VNC server and client on my PC and Rpi and placed your .hex on the Rpi desktop to do the test firmware update.
I can deduce that to install a firmware in a .hex file I must enter the django administrator but from here I get lost.

How do I proceed from django?
"Flash Firmware" section. Then 'Firmware - Add".
A new screen with a lot of data.
I add name, Family (Arduino UNO), then "Download URL", no partitions, no spiffs, no bootloader, no otadata?
Weight? default '5'?
Etc etc. I need to know what to put in so many fields.

And most importantly: how to restore the current firmware I have? Can I make a backup first?
 
Don't worry about it. I got some time this evening, so I assembled a new Pi/Fermentrack/Uno/DS18b20 setup. Unfortunately, everything seems to work as expected on my end:

Screenshot 2024-02-16 at 10.28.17 PM.png

Screenshot 2024-02-16 at 10.28.35 PM.png


I don't know why things don't work on your end, but don't see anything that I can do at this point to fix your issue. Sorry about that. :(
 
Don't worry about it. I got some time this evening, so I assembled a new Pi/Fermentrack/Uno/DS18b20 setup. Unfortunately, everything seems to work as expected on my end:

View attachment 841949

View attachment 841950


I don't know why things don't work on your end, but don't see anything that I can do at this point to fix your issue. Sorry about that. :(
Well, so I have to assume that I have outdated firmware on my Arduino.
I'll look into how to update it.
What firmware do you have?
Is an Arduino Uno RevC like mine?
thanks for everything
 
Well, so I have to assume that I have outdated firmware on my Arduino.
I'll look into how to update it.
What firmware do you have?
Is an Arduino Uno RevC like mine?
thanks for everything
Inside Fermentrack if you go to the device menu and click "Flash Device" it will take you to the device flashing workflow which will allow you to then select the firmware you want to flash.

I was testing with a slightly modified version of @LBussy 's 0.2.13 firmware, which is what is available in this workflow:
Screenshot 2024-02-18 at 12.25.57 PM.png

The modifications I made were just to have it log data to the console more frequently so that I could better debug. I made no changes to any functionality that you would care about. There are both RevC and I2C firmware available so you should be covered either way.
 
Good.
I think I made the matter more complicated than necessary: I entered the Django administration to look for the firmware update.

Tomorrow I will test that version (RevC-0.2.13) and let you know the result.
Thanks again

----
EDIT:
Results of the process: I tried to flash the same version 0.2.13 RevC and it gave an error (returned code 1. Flash output b" " and then I cursed my decision: OMGsh...I remembered it was the legacy version installed... so I crossed my fingers and chose the BrewPi Official "Legacy" Branch version - RevC (0.2.10) and tried to update firmware again: all was fine.

I have tried again to uninstall chamber sensor and reinstall it, setting an offset -0.75, being received and configured at -0.25.

Conclusion: The Legacy version firmware maintains this calibration error.
Would the report be interesting to solve it?
I don't know if there will be many users with a Legacy version. I didn't change it because it works fine even with this offset error.
 
Last edited:
That’s weird on both counts. Without looking at the blame log, I don’t anticipate that @LBussy changed anything meaningful with the temperature calibration code, so I’m surprised that you’re having issues with the legacy firmware. Additionally, you should be able to flash any firmware you want onto your Arduino regardless of what might have been flashed there before.

With that in mind - at this point my recommendation would be that if you’re comfortable with uncalibrated temps to leave it alone. It sounds like there might be something going on with your Arduino if it won’t let you flash a different firmware so it’s not worth risking unless you’re comfortable potentially needing to replace it.
 
That’s weird on both counts. Without looking at the blame log, I don’t anticipate that @LBussy changed anything meaningful with the temperature calibration code, so I’m surprised that you’re having issues with the legacy firmware. Additionally, you should be able to flash any firmware you want onto your Arduino regardless of what might have been flashed there before.

With that in mind - at this point my recommendation would be that if you’re comfortable with uncalibrated temps to leave it alone. It sounds like there might be something going on with your Arduino if it won’t let you flash a different firmware so it’s not worth risking unless you’re comfortable potentially needing to replace it.
I agree. It could be something I'm doing wrong (I'm not an expert) but The most appropriate thing would be to leave it as it is.

When Fermentrack requests that I disconnect the hardware to identify it later (firmware update), what I do is disconnect the USB cable from my RPi so that FT can then identify it when I reconnect it and that works fine.

It almost bothers me more that I don't know what's wrong versus not being able to fix it.

Thanks for everything
 
I don’t anticipate that @LBussy changed anything meaningful with the temperature calibration code,
You are correct. When we put the I2C LED code in I had to shorten some strings (16 characters as I remember) to get the code to fit. I also added the screen reset on timer. Other than that, the code is unmolested.

It sounds like a floating point conversion error that may be due to an update in the core libs.
 
Without having tested the board myself I can’t guarantee anything, but looking at the specs it seems like a standard ESP32 so you should be perfectly fine. If you’ve already got the controller just flash the ESP32 IIC LCD firmware to it with BrewFlasher and see if the WiFi AP spins up. If it does, you’re good to go.

If you are designing your own PCB/circuit then it’s your call as to whether you use a TFT or an old-school LCD. Pinouts for both are on GitHub.

If you want to use an LCD, you will need an LCD2004 module with an I2C backpack. This one looks like it might work, but you can probably get it for half the price on Amazon. Depending on the specific board you get, it may expect 5V logic, so you may need to add a bidirectional level shifter to your design.

For TFTs, you’ll need a 320x240 TFT with an ILI9341 driver. This one should work if you only use the SPI pins, but it’s not a backpack style I’ve personally used so I can’t guarantee it. Like with the LCD, you can probably get one (with just an SPI interface, which is all you need) for half that price on AliExpress or Amazon. The size is a matter of personal preference, but it needs to have the right driver chip (ILI9341), resolution (320x240), and expose/run off the SPI pins (MOSI, MISO, etc).
Hi thorrak,

Just fyi, got Fermentrack 2 to work with these 30 and 38 pin dev kit modules. System up and running with LCD display. Just checking this doesn't have brewfather integration yet, as I can't find it anywhere within the system.

Thanks
 
I've been using Fermentrack on a RP3 with an Arduino UNO now for some 4 years and put down a lot of great brews, however the last 6 or 7 brews I have had the 'Cannot receiveLCD text fromController/Script" turn up once every ferment. Generally the ferment temperature stays at the last recorded temp but there has been occasions where the temperature has started to lower to the lowest set temperature on the ferment profile.

It's easily fixed to each current ferment by rebooting the RP3 but is a bit annoying, particularly when you are away from the unit for a day or so. I've check all the hardware and made sure all connections are good, still the problem exists.

The below shows the graphing from a Ferment from one of the brews that has the Fermentrack and an Ispindle (not attached to Fermentrack) plotted

1711853937120.png



Appreciate a direction to head with this. Thanks
 
Back
Top