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.
I have been reviewing a Fermentrack Build project by Garzlok on the forum and he referenced a Electrical Wiring How to by Thorrak at tinybat.ch

I tried that link and got a "Your PHP installation appears to be missing the MySQL extension which is required by WordPress." error?

I have the latest version of WordPress.

Do I have the correct link or has that information moved to a new location.

Thanks for all the information and work on the Fermentrack Project.
 
That's strange. The restart policy of the containers is "unless-stopped" which should work.

How did you install Docker itself? It sounds like there's a bug with certain installation types where Docker shutting down gracefully and stopping the containers makes it think that the shutdown was a user-requested stop.


@Thorrak I used the command you provided above, but added a sudo before bash as follows:

Code:
curl -L https://raw.githubusercontent.com/thorrak/fermentrack-tools/docker/automated_install/auto-install.sh | sudo bash

Looking at that bug, it seems a solution would be to install docker-ce, but that inly works in 64bit environments. No go for me since I'm in 32bit.

I then tried to run sudo docker update --restart=always:0 my-container on each of the four containers. This did the trick for me and the containers now start at boot. I thought it was working, but when I did a docker ps command I was starting the containers manually.

I did a sudo service docker status command only to find that the service is inactive:
Code:
● docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: https://docs.docker.com

I set Docker to be active using sudo systemctl enable docker, rebooted and the containers seem to come up and I have access to the UI. However, I get the Cannot receive LCD text from Controller/Script error and no info from my Tilt. (edit: sometime the script starts ok after a reboot)

To get the script and tilt info working, I then have to run ./docker-update.sh.
 
Last edited:
Just an update with regards to my previous post. I decided to throw in the towel and installed Raspberri Pi OS on my netbook. This seems to have resolved all my problems. (Thanks Lubuntu for the headache)

I do have one minor annoyance. Every second reboot or so, the Tilt is not picked up in the GUI. To resolve this I can reboot and hope it works, or what I have found is that if I restart the fermentrack-tools_postgres_1 and sometimes the fermentrack-tools_django_1 after, the tilt will be available in the GUI once again. I suspect that this is happening because the containers are started before the Bluetooth drivers are loaded or the service has started. Maybe consider adding a dependency in Docker Composer to check for Bluetooth before loading the containers.

EDIT: The Tilt readings will stop working after random amounts of time. I can resolve it by restarting fermentrack-tools_postgres_1 and sometimes the fermentrack-tools_django_1. Not sure if this is a instability of the docker containers.
 
Last edited:
Any ideas as to why this has happened it’s two times in a row I’ve had a beer fermenting in beer profile mode it follows all my steps fine until my last step which is a cold crash when it gets to that step it turns off the controller. Luckily both times i noticed quickly that it was in off mode at the end but in the summertime in Phoenix and me fermenting in my shed I wouldn’t always be so lucky. My understanding it should hold the 34 indefinitely I don’t need to make another point arbitrarily days out do I? Any ideas?
621C8D92-506F-45B1-8050-74BE5DAC2AAD.png
45F288AF-F25F-4CA2-8D56-3B8535341376.png
 
Question about a screenshot on the first post of this topic --
Why is the beer temperature always lower than the fridge temperature? How is this possible?
Might the temp sensors be reversed from what Fermentrack thinks they are?
And, should there be a 4-5 degree F difference between the beer and fridge temperatures? Shouldn't they be closer than that?
Or, why even monitor them as two separate temperatures in a Kegerator. I can see maybe another probe in the tower of the Kegerator to monitor the tower temp to reduce foam. But two probes in the fridge part?

ss-device-dash-full.png
 
Question about a screenshot on the first post of this topic --
Why is the beer temperature always lower than the fridge temperature? How is this possible?
Might the temp sensors be reversed from what Fermentrack thinks they are?
And, should there be a 4-5 degree F difference between the beer and fridge temperatures? Shouldn't they be closer than that?
Or, why even monitor them as two separate temperatures in a Kegerator. I can see maybe another probe in the tower of the Kegerator to monitor the tower temp to reduce foam. But two probes in the fridge part?

ss-device-dash-full.png


UH. Is it too late to edit a post from two years ago? 😳 That's an embarrassing mistake on my part!

My setup for my fermentation fridge has the fridge probe about a foot up on the wall of a kegerator. By contrast, my beer probe (when not in use) tends to rest on the bottom of my kegerator. My guess is that what you're seeing is the temperature striation between the middle and bottom of the kegerator since I don't have any kind of a fan hooked up.

In the screenshot, you can see that the temperature controller is in "Fridge Constant", so rather than controlling the beer temperature, it's trying to control the fridge temperature. The "beer temperature" in this case is just an extraneous data point.
 
Thanks. I was questioning my understanding more than anything else.

I'm working on getting Fermentrack working for the first time, switching from CraftbeerPi. Wanted to make sure I understood this fully before finding out I'm using it incorrectly or have something set up wrong at crunch time on brew/ferment day.

I currently have a "desktop install" with an 40a SSR and 10a relay on my desk and I'm changing temps in Fermentrack to verify that it's switching as I'd expect. It's actually not switching like I'd expect....and that initial screenshot made me question my understanding how Fermentrack should work. Maybe I have a bad SSR and don't know it, have wires not corrected in the correct place, etc. I might have to connect it up to my fermenter and chiller to get an accurate test.
 
I am running a glycol setup and was curious if there are any suggestions to tighten up the temperature swings I am seeing (62 --> 63.8 so almost a 2 degree swing). My fermenters have insulated jackets as well.

I am fermenting an ale and crashing a mead currently. I do not have the luxury of raising the temp of the glycol so there is a smaller temperature differential. I was hoping for some PID tuning or some other solution.
 

Attachments

  • Fermentrack_temps.png
    Fermentrack_temps.png
    166.2 KB · Views: 14
I'm having some problems with fermentracks ispindel coefficients. I'm not sure if I'm doing something wrong or if there is a bug. I have taken a sg and tilt reading on several brews and at first it worked as my formula was linear with the first couple batches.. Ive added more points now since ive floated it in more wort I knew the OG of which should improve accuracy however here is the behavior of a brew I have going now with the formula fermentrack comes up with calibration from the following data points..
ANGLE GRAVITY
26.5 1.000
53.45 1.049
60.11 1.06
60.52 1.063

8.png


1.jpg

as you can see the gravity started rising at the start of fermentation and at first I thought that it was just kreusen after a couple of days though I got suspicious and checked the manage sensor page and noticed the last tilt reported was 41.409 despite a gravity of 1.110 or so being reported by fermentrack. I then exported the raw csv of this data and it showed a continual decrease in tilt angle as id expect with a fermentation despite fermentrack calculating an increase in gravity... I got curious and used ispindels calibration spreadsheet to plot and calculate my same data points and I see none of my calibration points appear to be major outliers.. It came up with the following formula..
4.jpg

I then tried using this formula instead of the fermentrack calculated by updating the coeficients to
A 0.0
B -0.000521631
C 0.491896868
D -12.67114582

the result was gravity was reporting 6.something as you can see here
2.jpg

I then decided to delete my two middle data points in fermentrack to make it a linear equation and it calculates this..
ANGLE GRAVITY
26.5 1.000
60.52 1.063

A 0.0
B 0.0
C 0.0018518518518518571
D 0.9509259259259248

the result is linear of course but now it works fine and gives a close result... I'm not sure what's happening with the calculation on this but I decided to open the full csv of the data and copy all the tilt angles it took plug it into the formula that ispindels calibration spreadsheet calculated and then coverted that resulting value to gravity. Here's the formula I used to calculate the third column its just the formua given by inspindels spreadsheet
=-0.000521631*(tilt)^2+0.491896868*(tilt)-12.67114582
and heres the formula i used to convert a plato value to a gravity reading like im used to seeing
=1+(plato/(258.6-((plato/258.2)*227.1)))
The resulting gravities I then graphed and can see meaningful data from my sensor.
9.jpg

Hopefully I've given enough data that my results could be replicated or we can see what I possibly could be doing wrong..
 
Side track... just got a tiltbridge to play with and it looks like the "pro" integration may have a bug. I sniffed out the payload and i'm getting "invalid literal for int() with base 10" error. If i change the payload from "73.0" to "73" for the temp then it post fine.

Code:
{
  "mdns_id": "tiltbridge01",
  "tilts": {
    "Black": {
      "color": "Black",
      "fwVersion": 0,
      "gravity": "1.0600",
      "gsheets_name": "",
      "high_resolution": false,
      "sends_battery": true,
      "temp": "73.0",
      "tempUnit": "F",
      "weeks_on_battery": 9
    }
  }
}

Is this a known issue or should i submit a bug on GIT? I thought this would have been covered in the " Tilt Pro Support (and other things) " commit but maybe that was more around listening to tiltpro directly and not via relay.
 
Side track... just got a tiltbridge to play with and it looks like the "pro" integration may have a bug. I sniffed out the payload and i'm getting "invalid literal for int() with base 10" error. If i change the payload from "73.0" to "73" for the temp then it post fine.

Code:
{
  "mdns_id": "tiltbridge01",
  "tilts": {
    "Black": {
      "color": "Black",
      "fwVersion": 0,
      "gravity": "1.0600",
      "gsheets_name": "",
      "high_resolution": false,
      "sends_battery": true,
      "temp": "73.0",
      "tempUnit": "F",
      "weeks_on_battery": 9
    }
  }
}

Is this a known issue or should i submit a bug on GIT? I thought this would have been covered in the " Tilt Pro Support (and other things) " commit but maybe that was more around listening to tiltpro directly and not via relay.

Are you on the master or the dev branch? I thought I had that fixed (in dev, at least)!
 
Are you on the master or the dev branch? I thought I had that fixed (in dev, at least)!

AH, i'm on master... i did not pull dev. I switched over to dev and the postman API call directly to fermentrack works with floats now (73.0, etc). Tiltbridge still isn't updating, so I'll try to figure out what's going on there.
 
Last edited:
Ah, well... my bad, copy/pasting the url from the app... fermentrack assumes it's on port 80 so it has URL http://url/tiltbridge. I'm however running on 8082 via proxy, so adjusting tiltbridge to include :8082 in the URL fixed me up.

Thanks
 
So I've had a recent issue pop up within the last 4 weeks.

I have a 4 chamber set up with a RPI 3B + 4 arduinos connected via usb. What I've been running into is what appears to be at random, one or more of the arduino controllers losing all of their sensor and pin assignments which also of course makes them stop controlling. The other symptom is the RPI 3B that is running the web interface for Fermentrack will occasionally lose connectivity. This can be resolved by simply rebooting the RPi. Then about 50% of the time, one or more of the arduinos has lost its sensor and pin settings, everything else intact. This has happened about 3 times in the past 4 weeks.

Has anyone else had this happen? Trying to figure out if this is a potential bug, or if I've got some failing devices on my hands.

Thanks for the help!
 
So I've had a recent issue pop up within the last 4 weeks.

I have a 4 chamber set up with a RPI 3B + 4 arduinos connected via usb. What I've been running into is what appears to be at random, one or more of the arduino controllers losing all of their sensor and pin assignments which also of course makes them stop controlling. The other symptom is the RPI 3B that is running the web interface for Fermentrack will occasionally lose connectivity. This can be resolved by simply rebooting the RPi. Then about 50% of the time, one or more of the arduinos has lost its sensor and pin settings, everything else intact. This has happened about 3 times in the past 4 weeks.

Has anyone else had this happen? Trying to figure out if this is a potential bug, or if I've got some failing devices on my hands.

Thanks for the help!

I'd be willing to bet you have power issues of some sort. There is no reason why the Arduinos should lose device assignments like you're describing - that's very strange. For it to be happening as often as you're seeing (across as many devices) sounds very odd.
 
Are device assignments not written to the UNO's eeprom?

Cheers!
They are -- That's why it seems strange that separate controllers would independently lose their settings absent some kind of common point of failure. The only one I can think of is (potentially) power - and that's admittedly a guess.
 
Yeah, that's a head-scratcher. Unless the eeprom is left opened for writing it's hard to see how it could get borked...

Cheers!

[edit]

Literally had just lit up a smoke and thought maybe an "e" (reset) command is being issued in a panic?

The original BrewPi code had a function where if communications with the host really got nutty the host would issue an eeprom erase which would pretty much neutralize the UNO and force the user to re-do the device configuration.

If the problem is everything is being lost, and Fermentrack used that chunk of the original Elco code, maybe that's what's going on?

I found this years ago while putting an esp8266 set up as a wifi-serial adapter in front of an UNO for BrewPi "really remote" minion use. It took awhile to get it working and until I got it squared away it would definitely scrub assigned devices and pretty much everything else :)

Cheers! (again)
 
Last edited:
They are -- That's why it seems strange that separate controllers would independently lose their settings absent some kind of common point of failure. The only one I can think of is (potentially) power - and that's admittedly a guess.

I'll swap out power supplies and check all connections in my control box. I had initially thought power as well, but as day_trippr said I thought with those settings saved in the eeprom it was relatively safe from power failures etc. There are a few single points of failure for power on the UNOs. They are all getting their power via USB from a powered USB hub. So it could be the hub failing, or the hub's power supply.
 
Hi Thorrak, a couple [minor] questions about the iSpindel configuration in Fermentrack.

Your example for the Path/URI value on the iSpindel's config page was to use http://brewmaster.local/ispindel. Will the format of that value always be <fermentrack_host>/ispindel? Just trying to avoid assumptions 'cause I'm bad at those.

And just out of curiosity, why did you decide to offer a second name field for the iSpindel in Fermentrack in addition to what is configured on the device itself. I can't think of a situation where you'd want or need a different name since they're both kind of arbitrarily configurable. Like I said, just curious about what the need might be.
 
Your example for the Path/URI value on the iSpindel's config page was to use http://brewmaster.local/ispindel. Will the format of that value always be <fermentrack_host>/ispindel? Just trying to avoid assumptions 'cause I'm bad at those.

Yes.

And just out of curiosity, why did you decide to offer a second name field for the iSpindel in Fermentrack in addition to what is configured on the device itself. I can't think of a situation where you'd want or need a different name since they're both kind of arbitrarily configurable. Like I said, just curious about what the need might be.

Eh. Generally, when I'm building apps that interface with devices outside my control I tend to create my own identifier column. Is there a need for it in this case? Probably not - but by creating my own column I can ensure that users don't face any restrictions on name/character set. Want to name your iSpindel "пиво" (Or 💩 )? Knock yourself out. Emoji are unicode, after all.
 
That's generally what I brew, so it would be an accurate name at least!
In retrospect, 💩п would be more appropriate since it rhymes with BrewPi, and who wouldn't want to monitor a 💩п floating in their fermenter?

Okay, back to our regularly scheduled program.
 
I have been reviewing a Fermentrack Build project by Garzlok on the forum and he referenced a Electrical Wiring How to by Thorrak at tinybat.ch

I tried that link and got a "Your PHP installation appears to be missing the MySQL extension which is required by WordPress." error?

I have the latest version of WordPress.

Do I have the correct link or has that information moved to a new location.

Thanks for all the information and work on the Fermentrack Project.

jnharsh, there is a wiring diagram here for one possible approach. It might help.
 
I saw that this morning -- honestly, aside from the branding, I don't get it. It's an ESP32 without the WiFi, Bluetooth, Arduino support (currently), increased ram, increased flash, and (relative) maturity - and at a (potentially) higher price.
So there is nothing special about this board? I can get them for 2 bucks here in California
 
There may be a niche for this product line - maybe in low cost "learn to code" educational kits - but sans wireless it's going to be rather unpopular compared to the alternatives...

Cheers!
 
I have a WiFi extender running an access point in my garage with a Raspberry Pi 3 B+ running Fermentrack. Going to add three Esp8266 controllers. My understanding is they only work with 2.4ghz. Should I leave the 2.4ghz and 5G SSID’s separate, or It has the option to combine them into the same SSID and devices will choose the 2.4ghz and 5G connection. Wanted to see if I configured it this way I could have the Raspberry Pi connected to 5G and the Esp8266,s would connect to the 2.4ghz, but I would still be able to access and control them through Fermentrack on the Raspberry Pi?
 
I don't know about that "combine" thing, seems rather pointless when each device is going to need to be set up for at least one, or both.
Which access point a device establishes re-usable credentials is a function of the client device settings - ie, you set up each esp or 'Pi for specific access points, so there's where you can put the esps on 2.4ghz and leave the 5ghz for the 'Pi.

You can usually use the network DHCP service (typically the prime level router) to assign specific IP addresses to devices based on their MAC addresses, but that's a step down the road from establishing an access point connection...

Cheers!
 
I have a WiFi extender running an access point in my garage with a Raspberry Pi 3 B+ running Fermentrack. Going to add three Esp8266 controllers. My understanding is they only work with 2.4ghz. Should I leave the 2.4ghz and 5G SSID’s separate, or It has the option to combine them into the same SSID and devices will choose the 2.4ghz and 5G connection. Wanted to see if I configured it this way I could have the Raspberry Pi connected to 5G and the Esp8266,s would connect to the 2.4ghz, but I would still be able to access and control them through Fermentrack on the Raspberry Pi?
I’m assuming you’re asking about how to configure your WiFi on your router?

Both at home and on the network I’m on now, I have the "combine 2.4 and 5 GHz" option set up (where it's the same SSID for both). Your router should bridge both interfaces on the same network, so all your devices will see each other as you would expect.
 
"Combined" or not should not make any difference wrt lan-wide visibility. I mean, I have a primary router feeding numerous access points distributed around the house (non-mesh) and every node from my workstation to the most distant esp are all visible to each other...

Cheers!
 
I'm having some problems with fermentracks ispindel coefficients. I'm not sure if I'm doing something wrong or if there is a bug. I have taken a sg and tilt reading on several brews and at first it worked as my formula was linear with the first couple batches.. Ive added more points now since ive floated it in more wort I knew the OG of which should improve accuracy however here is the behavior of a brew I have going now with the formula fermentrack comes up with calibration from the following data points..
ANGLE GRAVITY
26.5 1.000
53.45 1.049
60.11 1.06
60.52 1.063

View attachment 715029

View attachment 715022
as you can see the gravity started rising at the start of fermentation and at first I thought that it was just kreusen after a couple of days though I got suspicious and checked the manage sensor page and noticed the last tilt reported was 41.409 despite a gravity of 1.110 or so being reported by fermentrack. I then exported the raw csv of this data and it showed a continual decrease in tilt angle as id expect with a fermentation despite fermentrack calculating an increase in gravity... I got curious and used ispindels calibration spreadsheet to plot and calculate my same data points and I see none of my calibration points appear to be major outliers.. It came up with the following formula..
View attachment 715024
I then tried using this formula instead of the fermentrack calculated by updating the coeficients to
A 0.0
B -0.000521631
C 0.491896868
D -12.67114582

the result was gravity was reporting 6.something as you can see here
View attachment 715025
I then decided to delete my two middle data points in fermentrack to make it a linear equation and it calculates this..
ANGLE GRAVITY
26.5 1.000
60.52 1.063

A 0.0
B 0.0
C 0.0018518518518518571
D 0.9509259259259248

the result is linear of course but now it works fine and gives a close result... I'm not sure what's happening with the calculation on this but I decided to open the full csv of the data and copy all the tilt angles it took plug it into the formula that ispindels calibration spreadsheet calculated and then coverted that resulting value to gravity. Here's the formula I used to calculate the third column its just the formua given by inspindels spreadsheet
=-0.000521631*(tilt)^2+0.491896868*(tilt)-12.67114582
and heres the formula i used to convert a plato value to a gravity reading like im used to seeing
=1+(plato/(258.6-((plato/258.2)*227.1)))
The resulting gravities I then graphed and can see meaningful data from my sensor.
View attachment 715032
Hopefully I've given enough data that my results could be replicated or we can see what I possibly could be doing wrong..
Any ideas on this calibration issue I linked above? Seems kinda a mystery to me but either way I can just keep using a linear representation as it seems close enough.
 
I still can not get Fermentrack to send data to BrewFather. I deleted and set up the push targets a few times.

Currently running the Dev branch of Fermentrack, anyone got any suggestions?
 
Questions about Fermentrack GUI and operation-

I'm still working on building a new Fermentrack controller to replace the CraftbeerPi controller I currently have working. Trying to get everything in the new controller working on the bench and tested (and me understanding how it works) before I cram everything into an enclosure.

On the debug page, I see failed Controller Response test. In the description, it mentions to check WiFi signal strength. This is happening on both ESP/controllers (I have one controller for the fermenter and one for the glycol tank).

My UniFi controller says the ESPs have -58 and -53 dB on their WiFi connection, and a data rate capable of over 54MB. So, it can't be a signal strength problem. Should I just ignore what the GUI is saying about the failure?

1611584118805.png



1611584249457.png



Next question - In the web interface, it shows "Cooling Duty" and has a percentage. This is controlling a window Air Conditioner unit for me. The word "Duty" would indicate to me that it may be using PWM to control power to an AC unit? I hope I'm misunderstanding or misinterpreting this. Obviously a window AC unit needs 100% power when it's on. - Has to be either on or off.


Sorry - one more question. Doesn't the graph/web page automatically refresh every so often? If not, is it possible to set that up to refresh every 30 seconds?
 

Attachments

  • 1611584787299.png
    1611584787299.png
    132.4 KB · Views: 10
I still can not get Fermentrack to send data to BrewFather. I deleted and set up the push targets a few times.

Currently running the Dev branch of Fermentrack, anyone got any suggestions?

I see an error hitting sentry, but it's DNS related. I'll try to manually test it on my end, but in the mean time can you check to make sure your Pi can resolve/reach log.brewfather.com ?

(Try logging into your Pi via ssh, then running "wget log.brewfather.net" . If you get an error like "failed: Name or service not known" then that's your problem.
 
Questions about Fermentrack GUI and operation-

I'm still working on building a new Fermentrack controller to replace the CraftbeerPi controller I currently have working. Trying to get everything in the new controller working on the bench and tested (and me understanding how it works) before I cram everything into an enclosure.

On the debug page, I see failed Controller Response test. In the description, it mentions to check WiFi signal strength. This is happening on both ESP/controllers (I have one controller for the fermenter and one for the glycol tank).

Don't worry about it. The BrewPi controllers can only take one connection at a time, so if you have them connected to Fermentrack then the connection test fails. That test was intended to help pinpoint issues if your controller wasn't working -- I need to add some text to that page to clarify as it is somewhat confusing.


Next question - In the web interface, it shows "Cooling Duty" and has a percentage. This is controlling a window Air Conditioner unit for me. The word "Duty" would indicate to me that it may be using PWM to control power to an AC unit? I hope I'm misunderstanding or misinterpreting this. Obviously a window AC unit needs 100% power when it's on. - Has to be either on or off.

It's duty, as in percentage load over the graph period - not a PWM load. Both heating and cooling are 100% on or off while being operated, and cooling has things like compressor protection built in.


Sorry - one more question. Doesn't the graph/web page automatically refresh every so often? If not, is it possible to set that up to refresh every 30 seconds?

No, unfortunately. It may get added at some point in the future, but working with dygraphs makes my head hurt.
 

Latest posts

Back
Top