• Please visit and share your knowledge at our sister communities:
  • If you have not, please join our official Homebrewing Facebook Group!

    Homebrewing Facebook Group

Native ESP8266 BrewPi Firmware - WiFi BrewPi, no Arduino needed!

Homebrew Talk

Help Support Homebrew Talk:

This site may earn a commission from merchant affiliate links, including eBay, Amazon, and others.
I'm fed up with my orphaned BrewBit controller. It's stuck on an old firmware version with a bug that causes the probes to read 999F if they drop below 32F, and I just froze 12 gallons of bitter. I've had all of the parts to build a BrewPi controller (RPis, SSRs, Arduino, etc.) so I'm ready to build it and chuck the BrewBit.

I use a Tilt, so I was happy to see that they are now supported. I was planning to use a Pi Zero W for the webserver, and I already have another Zero W that's running the TiltPi software that's reporting the temperature and gravity to brewstat.us.

1) Do I need two PZWs, or can a single Pi Zero W handle Fermentrack and the Tilt stuff?

2) If I only need one Pi, can I still upload the Tilt data to brewstat.us?

Thanks for any help you can offer!

1. One should be fine, but I haven't tested this. You may need to change the port for either Fermentrack (or brewpi-www) or the Tilt software.

2. Yep, shouldn't be an issue. Just run both BrewPi-www (or Fermentrack) and the software you want to do the upload to brewstat.us.
 
[...]Swapping the sainsmart relay for SSRs

SSRs are "zero crossing switches" and as such turn on and off when the differential voltage across the AC line is at zero volts.
Hence there's no sudden AC sag that can translate into a DC drop-out through the typical uber low end power supplies we use.

And the other one was swapping the Arduino to and A Wemos Mini, coupled with the same Sainsmart relay that was scrambling the LCD.[...]

That's interesting - do you feel you had accumulated enough run-time with that configuration to call it "solid" wrt screen scrambling?
And are you sure the application you were running didn't periodically reset the LCD?

Cheers!
 
That's interesting - do you feel you had accumulated enough run-time with that configuration to call it "solid" wrt screen scrambling?
And are you sure the application you were running didn't periodically reset the LCD?

Cheers!

I can provide at least one data point - I've encountered screen scrambling with my ESP8266-based build. I vaguely recall implementing periodic LCD resets since, but that may be my mistaken recollection. Regardless, I should add it...
 
Having multiple BrewPi "Classic" instances I can say periodic reset is a huge win wrt screen scrambles.
Aside from zapping the test rigs on my desk with carpet static, I can't recall the last time I noticed any of my "production" units with a scrambled screen.
Obviously there's still some luck involved as the reset period is 5 minutes, but I never have to manually reset any of the machines (except the static blasted ones ;))

Cheers!
 
On a RPi2, at the end of the setup, there was an error, saying a file wasn't present, I believe related to 'circus', and a NGINX error if I tried to browse to the web UI.
On the RPi Zero W, same as the RPi2.
I had the same error with Stretch Lite and a Zero W, but I reran the installation script and it eventually worked.

I have my controller mostly assembled (just need to wire up 120v) and I have a few questions. Some of them might be BrewPi-centric, but hopefully they'll be simple enough that someone can answer them in this thread.

1) Is it possible to change the graph colors? Beer Setting and Fridge Temp look almost identical to my old eyes, so I'd like something with a bit more contrast. Maybe I can change them in a config file or template somewhere?

2) How exactly do I get Tilt data into FermenTrack? How do they communicate?

3) I have a rudimentary understanding of how PIDs work, but I have no experience with them. Does the Uno store the variables in non-volatile memory? Do they adjust automatically? I guess I'm asking if I can just fill a fermenter with beer or water and expect it to "learn" and adjust, or if I need to tune it first. I've had the controller running for about a day without being hooked up to any heating or cooling, so will the adjustments it's made as it vainly tried to correct the temperature carry over and affect my actual chest freezer setup when I hook everything up?

Thanks for any answers that anyone can provide.
 
I had the same error with Stretch Lite and a Zero W, but I reran the installation script and it eventually worked.

I have my controller mostly assembled (just need to wire up 120v) and I have a few questions. Some of them might be BrewPi-centric, but hopefully they'll be simple enough that someone can answer them in this thread.

1) Is it possible to change the graph colors? Beer Setting and Fridge Temp look almost identical to my old eyes, so I'd like something with a bit more contrast. Maybe I can change them in a config file or template somewhere?

2) How exactly do I get Tilt data into FermenTrack? How do they communicate?

3) I have a rudimentary understanding of how PIDs work, but I have no experience with them. Does the Uno store the variables in non-volatile memory? Do they adjust automatically? I guess I'm asking if I can just fill a fermenter with beer or water and expect it to "learn" and adjust, or if I need to tune it first. I've had the controller running for about a day without being hooked up to any heating or cooling, so will the adjustments it's made as it vainly tried to correct the temperature carry over and affect my actual chest freezer setup when I hook everything up?

Thanks for any answers that anyone can provide.

I can't speak to changing the colors, but I do know you can turn different values on and off so that they either do or don't appear on the chart (They'll still be logged, of course) by clicking on the 'chart' icon to the left of the label.

The Tilt data gets into Fermentrack via Bluetooth. Since you're using a Zero W, assuming you added gravity sensor support (I believe it was optional to enable it during/after the setup), Click 'Select Device to Control' at the top of the page, then 'Add Gravity Sensor'. Tell it what kind it is (Tilt), give it a name, temperature units and what color the senor is and you should be off to the races. It'll then listen for the Tilt's Bluetooth broadcasts and log them as they are recieved.

I can't really speak too much to the PIDs, other than the data is stored on the Uno/ESP8266, and it can function, sans logging, without the RPi. After I first set up my ESP device and Fermentrack, I set it up on my fermenter and set it to 'Fridge Constant'. Obviously, it brought it down to the temp I set it to, but the swings were pretty significant since the air temp in the freezer turned fermenting chamber will heat up and cool down far faster than the temp of a few gallons of water/beer/whatever. I then filled one of my Fermenters with 5 Gallons of water and set it to beer constant. It brought it down to the temp I specified nicely and has kept it pretty much spot on - the highest it's gone over target is 0.03*F, and the lowest under is about 0.08*F. Now, it's really only heating, since the unit is in my garage with highs in the mid-50's and lows in the mid-40's, but I saw the same kind of behavior with the BrewPi on an Uno with actual fermenting beers and when cooling was required, so I don't think the running it in fridge constant had much, if any effect on it's effectiveness or accuracy.
 
Last edited:
I can't speak to changing the colors, but I do know you can turn different values on and off so that they either do or don't appear on the chart (They'll still be logged, of course) by clicking on the 'chart' icon to the left of the label.

The Tilt data gets into Fermentrack via Bluetooth. Since you're using a Zero W, assuming you added gravity sensor support (I believe it was optional to enable it during/after the setup), Click 'Select Device to Control' at the top of the page, then 'Add Gravity Sensor'. Tell it what kind it is (Tilt), give it a name, temperature units and what color the senor is and you should be off to the races. It'll then listen for the Tilt's Bluetooth broadcasts and log them as they are recieved.
Thanks for the tip about the chart, I don't think I would have figured it out by myself. Being able to isolate the graphs is good enough, so I won't bother trying to change the colors.

My Tilt is in the garage in 12 gallons of previously frozen beer. I think I'll head out and empty it into kegs and then I'll be able to test the Tilt with my new controller as I finish work on it.

Cheers!
 
Thanks for the tip about the chart, I don't think I would have figured it out by myself. Being able to isolate the graphs is good enough, so I won't bother trying to change the colors.

My Tilt is in the garage in 12 gallons of previously frozen beer. I think I'll head out and empty it into kegs and then I'll be able to test the Tilt with my new controller as I finish work on it.

Cheers!

Oops.... I did that once with a Scottish Ale that I cold crashed to the temp that I usually crashed a cream ale at, not taking into account that the cream ale was like 5-5.5% or so and the Scottish ale was a tad under 3%... D'oh! Seemed fine after it thawed though, other than being a tad cloudier than usual due to the failed cold crash.
 
Oops.... I did that once with a Scottish Ale that I cold crashed to the temp that I usually crashed a cream ale at, not taking into account that the cream ale was like 5-5.5% or so and the Scottish ale was a tad under 3%... D'oh!
My current temperature controller is an obsolete Kickstarter item that is stuck on an old firmware with a bug that shoots the temperature up to 999F when it drops below freezing. Just a little bit of overshoot while crashing and then it runs the compressor nonstop as it tries to cool it below 999, but all it does it make it worse. It takes a looong time to thaw 12 gallons of frozen beer that's in an insulated chest freezer in a chilly garage. I'm sure it'll still be good beer. I'm getting ready to keg it in a few minutes.

I once froze 8 cornies of beer in my keezer when I misread the analog dial and set it to 30F instead of 40F. They all thawed and tasted fine.
 
The Tilt data gets into Fermentrack via Bluetooth. Since you're using a Zero W, assuming you added gravity sensor support (I believe it was optional to enable it during/after the setup), Click 'Select Device to Control' at the top of the page, then 'Add Gravity Sensor'. Tell it what kind it is (Tilt), give it a name, temperature units and what color the senor is and you should be off to the races. It'll then listen for the Tilt's Bluetooth broadcasts and log them as they are recieved.
It doesn't seem to be working. I named the sensor and selected the color, but nothing seems to be logging. I must be missing a step, because I just hooked up my old Zero W running TiltPi and it's receiving data with no trouble.
 
Hi. I seem to have everything working with my build except my LED display, which just shows two lines of blocks when my controller is powered on. I'm using a PCB from @Bigdaddyale, who has been trying to help me today with this. The attached images are not helpful to troubleshooting this (except perhaps the back of the LED?), but wanted to share my controller pictures at the same time. The box is a bit bigger than most (10x10x4) as I am using some big SSRs I had around.

Anyways. I've tried swapping the data lines. Contrast is turned to max. I've adjusted the voltage on my power supply so it is exactly 5v. I have 3 PCBs, and all 3 give me the same result. What am I missing? Cheers.
 

Attachments

  • IMG_6334.jpg
    IMG_6334.jpg
    1.7 MB
  • IMG_6318.jpg
    IMG_6318.jpg
    1.6 MB
  • IMG_6312.jpg
    IMG_6312.jpg
    1.6 MB
Hi. I seem to have everything working with my build except my LED display, which just shows two lines of blocks when my controller is powered on. I'm using a PCB from @Bigdaddyale, who has been trying to help me today with this. The attached images are not helpful to troubleshooting this (except perhaps the back of the LED?), but wanted to share my controller pictures at the same time. The box is a bit bigger than most (10x10x4) as I am using some big SSRs I had around.

Anyways. I've tried swapping the data lines. Contrast is turned to max. I've adjusted the voltage on my power supply so it is exactly 5v. I have 3 PCBs, and all 3 give me the same result. What am I missing? Cheers.

Maybe a stupid question, but I must ask... did you try adjusting the contrast pot on the LCD backpack? Sometimes it takes quite a few turns to see a change. But that is the first thing i would suspect.
 
It doesn't seem to be working. I named the sensor and selected the color, but nothing seems to be logging. I must be missing a step, because I just hooked up my old Zero W running TiltPi and it's receiving data with no trouble.

Not sure what to tell you on that - That's what I did on mine and it picked it up pretty quick. I was going to ask if you're sure it didn't go to sleep or die, but I see you fired up your TiltPi and it retrieved it. I assume Bluetooth on the zero is enabled?
 
Not sure what to tell you on that - That's what I did on mine and it picked it up pretty quick. I was going to ask if you're sure it didn't go to sleep or die, but I see you fired up your TiltPi and it retrieved it. I assume Bluetooth on the zero is enabled?
I assume that it would always be on?

I typed sudo hcitool lescan and I see devices, although not sure if any of them is the Tilt. I would assume that it's there somewhere.
 
Hi. I seem to have everything working with my build except my LED display, which just shows two lines of blocks when my controller is powered on. I'm using a PCB from @Bigdaddyale, who has been trying to help me today with this. The attached images are not helpful to troubleshooting this (except perhaps the back of the LED?), but wanted to share my controller pictures at the same time. The box is a bit bigger than most (10x10x4) as I am using some big SSRs I had around.

Anyways. I've tried swapping the data lines. Contrast is turned to max. I've adjusted the voltage on my power supply so it is exactly 5v. I have 3 PCBs, and all 3 give me the same result. What am I missing? Cheers.

I had a similar issue with my build and it ended up being a bad solder joint. I went back and checked the connectivity between all of the Wemos pins and their eventual output off of the carrier board and it turned out that one of the pins on the line-level shifter wasn't connected.
 
If it helps, I see thousands of repeats of this in my tilt-blue-stderr.log file:

Code:
Traceback (most recent call last):
  File "/home/fermentrack/fermentrack/gravity/tilt/tilt_monitor.py", line 22, in <module>
    import TiltHydrometerFermentrack
  File "/home/fermentrack/fermentrack/gravity/tilt/TiltHydrometerFermentrack.py", line 28, in <module>
    from TiltHydrometer import *
  File "/home/fermentrack/fermentrack/gravity/tilt/TiltHydrometer.py", line 14, in <module>
    import blescan
  File "/home/fermentrack/fermentrack/gravity/tilt/blescan.py", line 21, in <module>
    import bluetooth._bluetooth as bluez
ImportError: No module named bluetooth._bluetooth
 
I tried everything I could think of, but I still couldn't get my Tilt to work, so I reloaded the card with Raspbian Jessie (I had been running Stretch Lite) and everything installed perfectly. No circus errors, and my Tilt was detected immediately. There must be an issue with Stretch Lite, or at least with Stretch Lite on a Pi Zero W.
 
I tried everything I could think of, but I still couldn't get my Tilt to work, so I reloaded the card with Raspbian Jessie (I had been running Stretch Lite) and everything installed perfectly. No circus errors, and my Tilt was detected immediately. There must be an issue with Stretch Lite, or at least with Stretch Lite on a Pi Zero W.

For whatever reason, it does seem like there is some issue with the Pi Zero W and Pi2 using Stretch for Fermentrack. I couldn't get it to work. Loaded up Jesse and tried to install Fermentrack on the Zero W and no issues whatsoever.
 
I followed these instructions and my single Zero W seems to be logging Tilt data correctly in both Fermentrack and brewstat.us. It took a bit of time to install and there seemed to be some error messages scrolling by, but I guess they weren't critical.

https://github.com/baronbrew/TILTpi/blob/master/readme.md

EDIT: I noticed a typo/bug on the main page. It shows 66&deg; F instead of just 66 F.

1oJ4ba7.gif
 
Last edited:
1) Is it possible to change the graph colors? Beer Setting and Fridge Temp look almost identical to my old eyes, so I'd like something with a bit more contrast. Maybe I can change them in a config file or template somewhere?

2) How exactly do I get Tilt data into FermenTrack? How do they communicate?

3) I have a rudimentary understanding of how PIDs work, but I have no experience with them. Does the Uno store the variables in non-volatile memory? Do they adjust automatically? I guess I'm asking if I can just fill a fermenter with beer or water and expect it to "learn" and adjust, or if I need to tune it first. I've had the controller running for about a day without being hooked up to any heating or cooling, so will the adjustments it's made as it vainly tried to correct the temperature carry over and affect my actual chest freezer setup when I hook everything up?

Thanks for any answers that anyone can provide.

Yes, it's possible to change the graph colors. Go into the Django admin, and it's a configuration option in Constance. I'm not somewhere I have access to a Fermentrack rig at the moment, unfortunately, or I would give you exact instructions - but the settings are in ther!

Tilt data goes into Fermentrack via Bluetooth. All the software to support it should be installed with a recent Fermentrack installation. If you installed before ~2 months ago, there's an additional script you would need to run in order to get the additional software in there. PM me and I can find/send instructions if that applies to you. :)

Yes - the variables are stored in non-volatile memory. Don't worry about it too much. It will re-learn your new set up pretty quickly, but you will not see as much control in the first few hours as you would with a fully tuned interface.
 
Just installed my TILT's. Any chance to fix the the number of decimals? :D Running the latest version of fermentrack.
View attachment 551442

Feature. Want to make sure you know precisely the temp you’re fermenting at.

(Seriously though, thought I already did this. Sorry about that. I’ll get this fixed shortly)
 
This is likely a simple question, but is there any way to see where you are within the profile? ie I want to see when the next temp adjustment is due. Perhaps a way to show the entire profile on the chart
 
Hello Thorrak,
Thanks for your great work on fermentrack ! I am a total noob on Raspberry and found it fairly easy to install.
Now I'm at the step where i'm trying to detect the Pins and my temperature probe.

For some reasons my Wemos D1 mini gives me a strange pinOut

Dec 31 2017 02:27:36 Available devices received: [{"c": 1, "b": 0, "d": 0, "f": 0, "i": -1, "h": 1, "p": 16, "t": 0, "x": 1}, {"c": 1, "b": 0, "d": 0, "f": 0, "i": -1, "h": 1, "p": 14, "t": 0, "x": 1}, {"c": 1, "b": 0, "d": 0, "f": 0, "i": -1, "h": 1, "p": 13, "t": 0, "x": 1}]

And I can't get my temperature probe detected ( it's a standard ds18b20 - I checked the wiring tried on 5v and 3.3V )
From my understanding I should receive the ID of the probe in that StError log right ?
Also do I have to match my wiring to what I get from fermentrack or should it detect my devices ?

I wanna run a simple 2 probes and 2 relays setup

I can provide more info if this is too scarce and sorry if the question was already asked ( I tried to find the info before posting )

Thanks everyone also who participated in the thread I learnt a lot :-D
 
Some experience about scrambled LCD display.
One of my setup, classic or ESP8266, on a little fridge usually showed scrambled LCD. I rarely saw normal LCD even it was re-initialized every 10 minutes. The fridge was NOT controlled by the controller(I used it as glycol chiller), but they shared the same power loop.
Someday, I found a piece of stainless sheet that is roughly the size of my controller. Thinking the metal might isolate some EMI, I put it under the controller, between the fridge. Then, I could see the normal LCD display, most of the time.
 
Hello Thorrak,
Thanks for your great work on fermentrack ! I am a total noob on Raspberry and found it fairly easy to install.
Now I'm at the step where i'm trying to detect the Pins and my temperature probe.

For some reasons my Wemos D1 mini gives me a strange pinOut

Dec 31 2017 02:27:36 Available devices received: [{"c": 1, "b": 0, "d": 0, "f": 0, "i": -1, "h": 1, "p": 16, "t": 0, "x": 1}, {"c": 1, "b": 0, "d": 0, "f": 0, "i": -1, "h": 1, "p": 14, "t": 0, "x": 1}, {"c": 1, "b": 0, "d": 0, "f": 0, "i": -1, "h": 1, "p": 13, "t": 0, "x": 1}]

And I can't get my temperature probe detected ( it's a standard ds18b20 - I checked the wiring tried on 5v and 3.3V )
From my understanding I should receive the ID of the probe in that StError log right ?

If I recall correctly, yes you should be able to see them there. If your wiring matches what the firmware expects, check to see if you have parasitic-mode probes. If you have an LCD hooked up, the WiFi reset firmware (installable within Fermentrack) will check for attached DS18b20 sensors and will display on the LCD screen if they are in parasitic mode.

Also do I have to match my wiring to what I get from fermentrack or should it detect my devices ?

So, there's two components in play here - Fermentrack and the ESP8266-based BrewPi firmware. Fermentrack doesn't care at all what your pin configuration is - it reads it from the controller. Your controller (running the BrewPi firmware) however is very sensitive to wiring. If you have the relays/sensors hooked up to pins that your firmware doesn't expect then it won't work.

Does anyone have some starting point settings for heating only?

I don't have any, but you shouldn't need anything too specialized. I don't use heating in my system and it works just fine. I would imagine the same would be true in reverse (no cooling, just heat). Better, potentially, given that fermentation is exothermic.
 
New user question:

I'd like to set the cycle length for my heater to be much less than what it currently is. I'm using a heating belt with an SSR, so there wouldn't be an issue if the cycles were 10 seconds long or so. I don't see such a setting explicitly anywhere in device constants however. Please advise.
 
Two questions/suggestions? for Fermentrack:

My Fermentrack controller has worked so flawlessly that I left a batch of beer in the fermentator while I went on Christmas break. When I returned after 2 weeks, the beer seemed fine (meaning ESP controller had worked fine), but there were two errors on the graphical display which were not intuititvely easy to resolve, and despite my searching of the voluminous forums have not found an answer. Apologies to all, if I missed the answer somewhere:

1. "Cannot receive LCD text from controller script" seems to be an error where, once triggered, there is no way to reverse it other than rebooting the ESP. Before I left, due to internet speed issues at my house, I set up a device that resets my router every night. This lack of internet for 3 minutes seems to trigger my wifi connected ESP controller to display this message. The fix for me since my return has been to just pull the power on the ESP and the ensuing reboot fixes the problem until my router reboots. It would be so much nicer, if I could ssh into the ESP controller and tell it to reboot wifi, or soft reboot the ESP, but I haven't found a way to do this. Has anybody else? A button next to the display on the graphical interface would be superb. No more getting up and trudging to the basement....

2. Apparently, as the beer started to ferment vigourously while I was away, my Tilt got shaken around quite a bit and recorded some outlandish SG and temperature readings. These readings got reflected on the dashboard graph and were so high that it distorted the graph to the point that it was unreadable for the actual data (like looking at the fermentation process from 30,000 feet). If there was a way to set the X and Y axes so that the dashboard graph would throw out data from the Tilt that was beyond these specified parameters as "aberrant" or reset the graph to the scale you needed, it would make the graph so much more usable.

As I say, apologies if these two items have been discussed/resolved elsewhere, I just haven't found them. Thanks in advance for any suggestions.
 
I have a question about the install process of Fermentrack. I have decided to try to install on a laptop using Debian Wheezy.

I cannot get past the NGINX install portion of the script and after doing some homework I have found a solution, however it is overwritten when I try to re-install via the script.

Here is the original error that I get
Code:
Starting nginx: nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)

After some google-foo I came across editing the default sites-available file from this:
Code:
listen 80 default_server;
        listen [::]:80 default_server;

To this:
Code:
server {
   listen 80;
   listen [::]:80 ipv6only=on;
}

Unfortunately I cannot figure out how to get past this point. I can get NGINX to work now, but the install script overrides and overwrites it back to default.

Thanks!
 
Last edited:
I also have the "Cannot receive LCD text from controller script" When I check the router's device list, there is no wifi signal coming from the ESP controller. After I rebooting the ESP, it comes back online. Could the controller be going to sleep? I am using the Makerfocus ESP8266 Mini.

Thanks for your awesome work on fermentrack!
 
@Thorrak I'm not sure if you want to make this change a default, it's something I came across when disabling IPV6 on the Pi.

I disabled IPV6 by adding
Code:
ipv6.disable=1
to the end of the file /boot/cmdline.txt

However, as nginx was still trying to listen for an IPV6 connection the Fermentrack webpage would not load. To get around this I commented out the line
Code:
#listen [::]:80 default_server;
in the file /etc/nginx/sites-available/default-fermentrack

Just a heads up in case anyone else tries to disable IPV6 on their Pi.
 

Latest posts

Back
Top