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

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'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.
 
Good luck with that. There may be esp applications with built-in network awareness and support for static addressing but for my fleet of esp32s I could not find an alternative to using the DHCP Address Reservation function on my router. Same applies to my Smart Plugs - they're not exactly brilliant at network management so Address Reservation for those as well...

Cheers!
 
Hi day_trippr,
Thanks for the quick reply.
Good luck with that. There may be esp applications with built-in network awareness and support for static addressing but for my fleet of esp32s I could not find an alternative to using the DHCP Address Reservation function on my router. Same applies to my Smart Plugs - they're not exactly brilliant at network management so Address Reservation for those as well...

Cheers!
Yes, I couldn't see any obvious way to manually configure a "true" static IP address.

Sure, I understand the default should be DHCP as the general public want a simple, from their point of view, path to success but I think it would be handy for debugging connectivity issues, as It would take the DHCP network infrastructure out of the equation. It would also reduce battery usage, less network traffic and a shorter uptime per reported reading. However, the developer sure has a lot of his plate and this probably falls into the "nice to have basket".

Thanks for sharing your experience, much appreciated.

Cheers!
Rob
 
I think it would be handy for debugging connectivity issues

It totally is!

The only thing I actually use DHCP for is guests. Every other entity on my LAN has an assigned IP address, one way or the other. For the vast majority, the devices support static addressing directly. The rest live under the kind auspices of Address Reservation.

I maintain a spreadsheet with node information - device name, type, make & model, MACs for enet/wifi/Bluetooth where applicable, the assigned LAN IP address, and their external reference from the WAN side of my NAS (the NAS enables IP tunneling). One of the network apps I run eyeballs the entire multi-segmented LAN looking for rogue entities and will yak up a console message if it spots a "newcomer". I installed a new Smart Plug today and it was cool to see that "bird dog" alert to an unrecognized device 😁

Cheers!
 
...
I maintain a spreadsheet with node information - device name, type, make & model, MACs for enet/wifi/Bluetooth where applicable, the assigned LAN IP address, and their external reference from the WAN side of my NAS (the NAS enables IP tunneling). One of the network apps I run eyeballs the entire multi-segmented LAN looking for rogue entities and will yak up a console message if it spots a "newcomer". I installed a new Smart Plug today and it was cool to see that "bird dog" alert to an unrecognized device 😁
...
Sounds like you really know what's happening on your LAN.
 
Now now. You should be happy I got rid of allll the port forwarding here, and use my NAS as a tunnel endpoint vectored through Synology.
And what I'm running in my brewery for taplist and chamber controls are the moral equivalent of toasters. And there's no need to replace a toaster unless the toaster dies...

Cheers!
 
Now now. You should be happy I got rid of allll the port forwarding here, and use my NAS as a tunnel endpoint vectored through Synology.
And what I'm running in my brewery for taplist and chamber controls are the moral equivalent of toasters. And there's no need to replace a toaster unless the toaster dies...
Small victories. :)
 
Hi BrewPi-esp8266 Peers,

I've logged a feature request for selectable network configuration options.

Ideally all the following would be available to the user, and so also to the developer to help with the debugging of network issues:

1) "Automatic Network Configuration" - current controller network configuration method
2) "Manual Network Configuration" - user enters network parameters
3) "Automatic *Initial* Network Configuration" - see below

With option (2) the user manually enters not just the SSID and WiFi key, but also the IP Address, Network Mask, Default Gateway, and DNS server(s).

With option (3) the controller gets it's network configuration as it currently does, automatically from, say a DHCP server, but then continues to use that configuration as if it were manually entered, without ever having to contact the DHCP server again. This way is should get configured correctly in the first place but then not have to rely upon that DHCP server being available, and working correctly, in the future.

Please see the feature request for further details:

Option to manually configure a "true" static IP address, no automatic DHCP network configuration infrastructure required #112

Cheers!
Rob
 
Hi BrewPi-esp8266 Peers,

I've logged a feature request for selectable network configuration options.

Ideally all the following would be available to the user, and so also to the developer to help with the debugging of network issues:

1) "Automatic Network Configuration" - current controller network configuration method
2) "Manual Network Configuration" - user enters network parameters
3) "Automatic *Initial* Network Configuration" - see below

With option (2) the user manually enters not just the SSID and WiFi key, but also the IP Address, Network Mask, Default Gateway, and DNS server(s).

With option (3) the controller gets it's network configuration as it currently does, automatically from, say a DHCP server, but then continues to use that configuration as if it were manually entered, without ever having to contact the DHCP server again. This way is should get configured correctly in the first place but then not have to rely upon that DHCP server being available, and working correctly, in the future.

Please see the feature request for further details:

Option to manually configure a "true" static IP address, no automatic DHCP network configuration infrastructure required #112

Cheers!
Rob
Hey there! Thank you for your interest in the project - as well as for the feature request on GitHub. GitHub Issues are absolutely the best way to track things as I have the memory of a goldfish.

Unfortunately, I use an external network library to manage the initial WiFi configuration and am somewhat limited by the options it presents. For option 2, I’m happy to see if there is a better “static” option that can be exposed which might make things easier for a user who wants to manually control settings.

For option 3, unfortunately that’s against best practices for a DHCP-controlled network. If the device with the “static” assignment is ever turned off or otherwise disconnected, the DHCP server could assign the IP to a new device since it would be in the DHCP range, and it wouldn’t know not to. Any users who would want to set this likely are savvy enough to also be able to set a static DHCP assignment on the server which is the better way to go about doing this.

I’ll post a response in the GitHub issue as well just so anyone searching there can find it, and will use that to track against Option 2.

Thanks again!
 
I hate asking what are stupid questions but between this 100 page thread, the documentation Dow loaded via the Web page and Github I get lost trying to work out where to self help nowadays (must be getting old 😭)

Shifting from a 8266 to a D32 pro with TFT implementation and all works fine. But the back-light appears to time out?
What's the best way to 'wake' the display?
 
I hate asking what are stupid questions but between this 100 page thread, the documentation Dow loaded via the Web page and Github I get lost trying to work out where to self help nowadays (must be getting old 😭)

Shifting from a 8266 to a D32 pro with TFT implementation and all works fine. But the back-light appears to time out?
What's the best way to 'wake' the display?

Ah, hm -- there isn't a timeout in the firmware for the backlight -- it should just remain on.

You might want to double check the connections between the board and the screen Are you using the D32 TFT with the D32 Pro (with the LoLin cable)?
 
Ah, hm -- there isn't a timeout in the firmware for the backlight -- it should just remain on.

You might want to double check the connections between the board and the screen Are you using the D32 TFT with the D32 Pro (with the LoLin cable)?
Yes to all question, I used the 3 links you used on GitHub so genuine boards as far as I can tell.
Works for a while (I don't know exactly as I don't watch it, but somewhere between 10 and 30 hours I'd say) then just goes full white (so actually, the backlight obviously isn't turning off). I've just reseated the cables both end but they did both appear fully inserted before.

Don't sweat it if it's just me ;)
I think I'll go back to the 20x4 LCD anyway as I find the text, particularly the 'mode' easier to read from a distance (which is usually where I glance from) - when did i get old? 😭
 

Latest posts

Back
Top