• 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.
Off to jlcpcb.com to place an order...
Boards are here, complete with SMT assembly. I've built up two of the boards, and plugged an ESP and a 2004 I2C LCD into one of them--it flashes fine, talks to the display fine, comes up on the network fine. Don't have it talking to temp sensors yet, but that should be soon (there isn't a problem, just haven't gotten to it yet). I've ordered some of the "backpack" boards from oshpark along with TFT displays (and boards for your "magic box" optocoupler circuit), but those will be a while yet. Progress, progress.

I see a few cases in this thread of people selling boards of your design--it seems you don't have a problem with that? It doesn't look like your license would prohibit it, but still...
 
That probably will be silly question.

Is iSpindel calibration necessary?

I set up fake brew for testing fermentrack, and SG shown on chart is unreal.

ispin01.png


But I didn't make iSpindel calibration. I just took polynomial equation from iSpindel setup page and pasted values into iSpindel's configuration page at fermentrack:
Current Formula: gravity = 0.0x^3+- 0.00031x^2+0.557x+14.054

So back to original question. Do I have to perform calibration or there is something wrong with my iSpindel (when I did iSpindle pure water calibration, angles shown in info page was OK to me)?

EDIT:
OK. I know I have to calibrate my iSpindel :(
I play a little bit with formula calculator and inserted different equation to fermentrack and now it looks way better.
 
Last edited:
This discussion probably belongs more over here than on the Fermentrack thread, so I'll post the link to at least connect the two:
https://www.homebrewtalk.com/thread...acement-for-raspberry-pi.649303/post-10306261
Discussing using Fermentrack and BrewPi-ESP to control my Icemaster Max 4 glycol chiller, @Thorrak had suggested a circuit that would replace that system's temp probe and simulate high/low temperature readings, in order to turn the pump on or off. That way, BrewPi-ESP could control the chiller with no modifications at all to the chiller itself. I've now been able to test it a bit, and it seems to work well.

Thorrak, what would you say to incorporating the "magic box" circuit into the PCB? There's plenty of real estate to do it with SMT parts, and it'd only add about 5 cents to the BOM from jlcpcb.com. I can make the changes myself, but I'd be using KiCad rather than Eagle--not sure if KiCad can output in Eagle's file format.
 
Apologies for the sporadic responses — we’ve been traveling for the past week, in addition to having some other things that have been eating up my attention. Should be back to normal by this time next week. ;)

Boards are here, complete with SMT assembly. I've built up two of the boards, and plugged an ESP and a 2004 I2C LCD into one of them--it flashes fine, talks to the display fine, comes up on the network fine. Don't have it talking to temp sensors yet, but that should be soon (there isn't a problem, just haven't gotten to it yet). I've ordered some of the "backpack" boards from oshpark along with TFT displays (and boards for your "magic box" optocoupler circuit), but those will be a while yet. Progress, progress.

I see a few cases in this thread of people selling boards of your design--it seems you don't have a problem with that? It doesn't look like your license would prohibit it, but still...

That’s awesome! Let me know if you have any questions when it comes to assembly - happy to help!

With regards to people selling my designs: even when I have boards on Tindie the profit margin is minuscule. The idea is more to help prevent someone having to order from oshpark and assemble SMD components if they only want a single board. If people have extra boards and want to sell them, that just helps grow the user base (so long as they aren’t of terrible quality, obviously!).

When I get back from traveling, I plan to take inventory, get Tindie updated, and try to clean out some space (but mostly for that reason - too many projects in a tiny apartment)!

Besides: Fermentrack and BrewPi-ESP8266 wouldn’t exist if Elco hadn’t made BrewPi open source. If someone wants to spend to get something fully built, I’d recommend they look at BrewBlox. It’s a great product based on the same foundation of BrewPi, but focused on total brewery control rather than just fermentation.


That probably will be silly question.

Is iSpindel calibration necessary?

I set up fake brew for testing fermentrack, and SG shown on chart is unreal.

View attachment 832054

But I didn't make iSpindel calibration. I just took polynomial equation from iSpindel setup page and pasted values into iSpindel's configuration page at fermentrack:
Current Formula: gravity = 0.0x^3+- 0.00031x^2+0.557x+14.054

So back to original question. Do I have to perform calibration or there is something wrong with my iSpindel (when I did iSpindle pure water calibration, angles shown in info page was OK to me)?

EDIT:
OK. I know I have to calibrate my iSpindel :(
I play a little bit with formula calculator and inserted different equation to fermentrack and now it looks way better.

I see your edit, so you already know - but yes - calibration is required. The iSpindel spits out raw angle values that need to be transformed to gravity, and since each iSpindel is hand-built with potentially different components, the exact formula will differ.

I’ve tried to make calibration in Fermentrack as easy as possible (grab a bucket, a bag of sugar, and a thermometer!) but if you have any trouble, let me know.

This discussion probably belongs more over here than on the Fermentrack thread, so I'll post the link to at least connect the two:
https://www.homebrewtalk.com/thread...acement-for-raspberry-pi.649303/post-10306261
Discussing using Fermentrack and BrewPi-ESP to control my Icemaster Max 4 glycol chiller, @Thorrak had suggested a circuit that would replace that system's temp probe and simulate high/low temperature readings, in order to turn the pump on or off. That way, BrewPi-ESP could control the chiller with no modifications at all to the chiller itself. I've now been able to test it a bit, and it seems to work well.

Thorrak, what would you say to incorporating the "magic box" circuit into the PCB? There's plenty of real estate to do it with SMT parts, and it'd only add about 5 cents to the BOM from jlcpcb.com. I can make the changes myself, but I'd be using KiCad rather than Eagle--not sure if KiCad can output in Eagle's file format.

Works for me. @gromitdj has been harassing me for years about switching to KiCad - which it looks like I might have to do at some point soon, anyways. I think you already know, but all of the source files for my designs should be on GitHub. If any aren’t that you would like, ping me, and I’ll get them added.
 
Works for me.
I'll get working on it. Just importing the EAGLE files into KiCad is leaving some odd artifacts, so I'm thinking I'll need to re-draw them. May take a little while, but I'll put in a PR when they're ready.

I now have a sensor board populated with three 18b20s and was able to get them assigned without any real difficulty--it's trial and error, but there are only three of them, so process of elimination isn't too tough. Though it's interesting that Fermentrack is showing the address for the beer and chamber sensors, but only a pin number for the room sensor:
1697997131645.png

Likewise, I have the heat relay set to a Kasa smart plug, but it shows up assigned to a pin:
1697997178947.png
 
Just as a thought, it'd greatly reduce the "trial and error" of assigning temp sensors if the page where you did that had a live readout of the readings for each sensor.
 
Icemaster Max 4 glycol chiller, @Thorrak had suggested a circuit that would replace that system's temp probe and simulate high/low temperature readings, in order to turn the pump on or off.
I got my first BrewPi-ESP controller put together this morning, complete with this optocoupler circuit. As expected after last week's testing, the ESP turns the chiller pump on and off as desired. I've set it up to run a beer profile in about 10 gal of water; I'll see how it goes over the next couple of days.

I have the PCB pretty much laid out and routed in KiCAD, but there are a few odds and ends yet to take care of.
 
I'm not sure if this belongs here on in the Fermentrack thread, but it sounds to me more like here, so...

Just finished up the beer that was my reason for trying Fermentrack/BrewPi-ESP, a Belgian Quad that called for ramping up 1°F/day from 68°F to 80°F. Since the weather's cooling off here, that meant running both a 40W heat belt and the glycol chiller. And, well, it seems the cooling overshot. A lot. Here's the graph out of Brewfather (I could post the graph from Fermentrack, but it's a lot busier):
1702148426179.png

On 12/4, I just turned off the chiller until yesterday, when the cold crash was due. And starting about midnight on 12/6 was when Fermentrack lost communication with the controller and had to be rebooted.

Each of those spikes is about 4°F below the target temp. It seems there ought to be some adjustments to this--but where, and what?
 
Need some held guys. I built a new ESP32 S2 to work with Fermentrack, loaded BrewPi-ESP, ESP32-S2, BrewPi-ESP32-S2-v15d-WiFi. It is up and working with sensors and relays BUT. I cannot for the life of me get my I2C LCD to work. Per @Thorrak's instructions here: GitHub - thorrak/brewpi-esp8266: An implementation of the BrewPi device code on an ESP8266 (No arduino needed!). On my S2 Mini Wemos.cc v1.0.0 I have pin 33 connected to I2C SDA and 35 connected to I2C SCL. No screen. I have read that the code "Scans" for I2C as well. Just stuck and have spent a ton of time trying to get this working. Any help appreciated.
 
I'm not sure if this belongs here on in the Fermentrack thread, but it sounds to me more like here, so...

Just finished up the beer that was my reason for trying Fermentrack/BrewPi-ESP, a Belgian Quad that called for ramping up 1°F/day from 68°F to 80°F. Since the weather's cooling off here, that meant running both a 40W heat belt and the glycol chiller. And, well, it seems the cooling overshot. A lot. Here's the graph out of Brewfather (I could post the graph from Fermentrack, but it's a lot busier):
View attachment 836110
On 12/4, I just turned off the chiller until yesterday, when the cold crash was due. And starting about midnight on 12/6 was when Fermentrack lost communication with the controller and had to be rebooted.

Each of those spikes is about 4°F below the target temp. It seems there ought to be some adjustments to this--but where, and what?
Hey DanB35, I saw the reference for Glycol here. Did you follow a guild to get Gycol function to work, or did you just set it for Fridge constant, and let the fridge sensor be the Beer temp?
 
Need some held guys. I built a new ESP32 S2 to work with Fermentrack, loaded BrewPi-ESP, ESP32-S2, BrewPi-ESP32-S2-v15d-WiFi. It is up and working with sensors and relays BUT. I cannot for the life of me get my I2C LCD to work. Per @Thorrak's instructions here: GitHub - thorrak/brewpi-esp8266: An implementation of the BrewPi device code on an ESP8266 (No arduino needed!). On my S2 Mini Wemos.cc v1.0.0 I have pin 33 connected to I2C SDA and 35 connected to I2C SCL. No screen. I have read that the code "Scans" for I2C as well. Just stuck and have spent a ton of time trying to get this working. Any help appreciated.
What’s the rest of the circuit? These screens require a level shifter - do you happen to know if you have one?
 
Hey DanB35, I saw the reference for Glycol here. Did you follow a guild to get Gycol function to work, or did you just set it for Fridge constant, and let the fridge sensor be the Beer temp?

Oh man - this reminds me that I need to draft a project status update here soon. Lots to cover, but with regards to glycol, I was finally able to preorder the @SpikeBrewing glycol chiller (eta: March) as well as all the accessories (house with basement, ETA: April) necessary to make it work. Without promising anything - official glycol support may have some news here in the second half of this year.
 
What’s the rest of the circuit? These screens require a level shifter - do you happen to know if you have one?
I DO NOT have a lever shifter. Only the Serial controller on the back of the display. Was this mentioned in the documentation somewhere I missed? Also I have another unit with a D1 Mini that is also Not using a lever shifter that works perfectly.
 
@Apothbeer
I do not have a glycol chiller, but I do circulate 38-40 F water through my SSBrewtech cooling coil, in the 14 gallon conical. I get about 1 to 2 degree over-cooling, then the set point. This will slowly hone into the setpoint, but never really get close. Usually gets to within 1 degree (too cold).
Not having a Glycol Chiller, my question is - Can you adjust the temperature of the chilled water with your chiller? Say.... set the water to around 40?
Hopefully Spike can hurry up, @Thorrak 's, chiller order!
 
It’s tough — the problem is that it entirely depends on the specific screen you are using (and individual manufacturers of the screens/backpacks may ultimately support different things). Most of these screens are designed for Arduino which use 5V logic. The ESP uses 3v3 logic. Sometimes this is enough for the backpack to detect/work - but sometimes it isn’t.
 
Hey DanB35, I saw the reference for Glycol here. Did you follow a guild to get Gycol function to work, or did you just set it for Fridge constant, and let the fridge sensor be the Beer temp?
I set it to Beer Profile. A Tilt Pro in the fermenting beer acts as the beer temp sensor, a 18B20 outside the fermenter but inside its insulation jacket is the "fridge" temp sensor, and another 18B20 in room air for room temp. And it works, kind of. There are probably ways of tuning out the massive temperature swings, but I'm not sure at this point what they are.
 
I've not seen big temp swings on my system. Use one sensor taped under insulation on the fermenter about 15cm below the liquid level. The other sensor in the fridge.
Ispindel reports it's reading via brewspy, half a degree centigrade would be a massive swing on my setup.
 
It’s tough — the problem is that it entirely depends on the specific screen you are using (and individual manufacturers of the screens/backpacks may ultimately support different things). Most of these screens are designed for Arduino which use 5V logic. The ESP uses 3v3 logic. Sometimes this is enough for the backpack to detect/work - but sometimes it isn’t.
OK, I think I get it. So something like this: Amazon.com

Should work wiring S2 pin 33 to LV1 pin 35 to LV2, Then from the level shifter H1 to to SDA on the LCD and H2 to SCL, Corect
 
OK, I think I get it. So something like this: Amazon.com

Should work wiring S2 pin 33 to LV1 pin 35 to LV2, Then from the level shifter H1 to to SDA on the LCD and H2 to SCL, Corect
Son of a biscuit. So stupid, contrast on the I2C was set very high and couldn't see the text projected. Sorry for the waist of time, and looking forward to Glycol integration. Using my Glycol setup in Fridge constant mode with Fridge constant reading the beer temp, and the Cooling relay powering the Glycol pump. Works but Temp drift is better on my chamber.
 
It’s been almost a year since the v15 release which brought support for Tilt hydrometers as temperature sensors, a built in web interface for managing the controller, and support for Kasa WiFi switches as relays. Since then, there have been a handful of small bug fix releases, but most of the development has been going on behind the scenes in preparation for one of the biggest updates yet.

The upcoming v16 release of BrewPi-ESP is designed to work in conjunction with the upcoming release of Fermentrack 2, and features a complete reimagining of the way that BrewPi communicates with Fermentrack. By replacing the existing BrewPi-Script interface with a new REST API, the v16 firmware eliminates one of the primary sources of crashes/feeezes/other errors and allows you to use a local temperature controller with a copy of Fermentrack installed in the cloud rather than requiring a local installation. It retains all of the great features that came with v15 while also setting the stage for some awesome features yet to come.

The alpha of v16 will be released in the coming few weeks for the ESP32, ESP32-S2, and ESP8266 concurrent with the opening of the Fermentrack 2 beta via Fermentrack.net.

For more information, check out my blog post on Fermentrack 2, sign up for the mailing list at Fermentrack.net, or read the post I made over in the Fermentrack thread.
 
I flashed my controller with the Fermentrack v16 Alpha firmware and sign into fermentrack 2 however cannot figure out how to link the controller? A box popes up to click for instructions but it doesn't work.
 
I flashed my controller with the Fermentrack v16 Alpha firmware and sign into fermentrack 2 however cannot figure out how to link the controller? A box popes up to click for instructions but it doesn't work.
I’ll fix that later tonight - sorry about that.

Connect to your controllers web interface (the IP/URL on the screen when it boots up) and there should be a link on the left. Choose fermentrack.net and it will ask you for the info it needs.

Edit: Going to fix the documentation link tomorrow. German food hits harder than I care to admit!
 
Last edited:
This is a great project that I am revisiting again after a few years. Thanks for all your efforts Thorrak.

I have been attempting to build the solderless version this time. Although the Kasa plugs are properly identified, the Inkbird IBS-TH2 is not. I did some digging, and this sounds like this might be a known issue. Is this the case? Or am I doing something wrong?

I'm also struggling with the Fermentrack Thingspeak integration. Connections are made to Thingspeak, but no data is sent (entry_id is populated & incrementing though). Is this something that has been working for others?

Thank you!
 
This is a great project that I am revisiting again after a few years. Thanks for all your efforts Thorrak.

I have been attempting to build the solderless version this time. Although the Kasa plugs are properly identified, the Inkbird IBS-TH2 is not. I did some digging, and this sounds like this might be a known issue. Is this the case? Or am I doing something wrong?

I'm also struggling with the Fermentrack Thingspeak integration. Connections are made to Thingspeak, but no data is sent (entry_id is populated & incrementing though). Is this something that has been working for others?

Thank you!

Unfortunately, due to an upstream bug with Espressif's base firmware for ESP32, there is a bug with the Bluetooth stack that causes the device's radios to lock up when performing "active scanning" of BLE devices. The Tilt broadcasts in a way that allows passive scanning to work, but Inkbird temperature sensors require active scanning to get any data. As a result, I ended up removing support in the v15 firmware release.

Although Espressif hasn't fixed the bug, I re-enabled support in the v16 firmware release along with a watchdog timer that restarts the controller if the radio is detected to have locked up. This isn't ideal (and I'm hoping that Espressif releases the v3 Arduino framework which supposedly has a fix ahead of the official release) but for now if you use the v16 beta you should be able to see the Inkbird.

With regards to Thingspeak: That's an integration that someone else added, and which I cannot speak to, unfortunately. Once I start building out external push support for Fermentrack 2 I will dig into it - until then, if someone debugs what is going on I'm happy to help build a fix, but cannot provide much guidance myself, unfortunately. :(
 
I’m thinking of upgrading my esp8266 based controller to a esp32 controller and checking out Fermentrack 2.0.

One off-the-shelf product that has caught my eye is the new-ish Sonoff THR316 that is an ESP32 based board with a single relay plus rj10 1-wire connector at a good price point. It would be ideal for a heat only setup or with the addition of a Kasa plug and 1-wire ‘hub‘ / TILT could be a full setup.

As has already been mentioned on this thread, the pins are not currently compatible with the standard brewpi pins and although I’m happy to hack bits of electronics, compiling software is something that I wouldn’t even know where to start!

Would there be any possibility you could make a Sonoff THR316 specific build of brewpi-esp to test out? The pins are as documented here so GPIO25 for 1-wire bus and GPIO21 for the single relay.

Bonus points if it’s possible to have the red led turn on for when it’s heating and blue for cooling, but I’d happily settle for just the relay and 1-wire!

Many thanks for an awesome project, looking forward to checking out Fermentrack 2.0.
 
Thanks for fermentrack and brewpi-esp8266, great projects!

Is there a way to configure a "true" static IP address for an ESP controller?
That is, a fixed IP configuration, which survives reboot, without ever using DHCP. In other words, manually configure the networking with, for example:
* IP Address, eg 192.168.23.88
* Subnet Mask: eg 255.255.255.0
* Default Gateway: eg 192.168.23.1
* DNS Server: eg 192.168.23.10

Currently, I have my DHCP server configured with each ESP controller's MAC (hardware) address so each controller always get's the same IP and configuration, and this is working just fine. But I want to avoid using the DHCP server for these devices.
 
Back
Top