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.
In getting things updated on my end I realized that even though v15 went live, I never made the repo that contains the user interface public. Although this shouldn't matter to most people, if you're interested in helping develop BrewPi-ESP and need to make changes to the user interface, the code is available here.
 
For the curious, I calculated shipping to Australia, and unfortunately it comes out to about $20 for a bubble envelope with 5 oz of contents shipped via the cheapest shipping method available. By contrast, ordering 5 unpopulated PCBs shipped costs a bit under $10 from PCBWay. :(
 
I just released Beta 3, which adds an HTTP interface to the controller:

View attachment 813958


From this interface, you can:
  • See the current status (including the virtual LCD)
  • Configure/assign pins, Tilts, Inkbird sensors, and OneWire temp sensors
  • Change the temperature control mode & set point
In other words: This provides an emergency fallback in case your local install of BrewPi Remix or Fermentrack is on the fritz on brew day.

For obvious reasons, this has only been added to WiFi controllers. Just like the "telnet" interface, anyone that can connect to the interface can change your settings, so you will want this behind a firewall (and not accessible to the open internet). This has been added to the ESP32-S2, ESP8266, and ESP32 WiFi binaries, but will not work with the "no spiffs init" versions.
Is there any configuration required to get the controller's http interface to work? I've just reflashed to the v15 firmware and it's all working happily with fermentrack, however if I try going directly to the ip address of the controller I just get a ERR_EMPTY_RESPONSE error from the browser.
 
Is there any configuration required to get the controller's http interface to work? I've just reflashed to the v15 firmware and it's all working happily with fermentrack, however if I try going directly to the ip address of the controller I just get a ERR_EMPTY_RESPONSE error from the browser.

Nope - shouldn't be. Which firmware specifically did you flash? (And for which controller?)
 
Now I just need to work out why I can't get fermentrack to connect to my tilt 🥺

Is there a good troubleshooting guide? Worked on my prior install but not after having to do a full reinstall on a new sd card. I'm kind of stuck after doing a full apt-get update and upgrade, checking that I can scan bluetooth devices via bluetoothctl and hcitool (though they only show device IDs and not names), adding experimental to the bluetooth service execstart and adding pi to the bluetooth group. I can see the tilt fine using the standard Tilt2 app, so there's something amiss somewhere...
 
Now I just need to work out why I can't get fermentrack to connect to my tilt 🥺

Is there a good troubleshooting guide? Worked on my prior install but not after having to do a full reinstall on a new sd card. I'm kind of stuck after doing a full apt-get update and upgrade, checking that I can scan bluetooth devices via bluetoothctl and hcitool (though they only show device IDs and not names), adding experimental to the bluetooth service execstart and adding pi to the bluetooth group. I can see the tilt fine using the standard Tilt2 app, so there's something amiss somewhere...
Are you using the latest release (with Docker/TiltBridge Junior)?
 
Yes, just installed a couple of weeks ago and updated today to the latest update on the master branch. The tiltbridge jr error log is also empty.
I’ll take a look tonight. Just to make sure I’m looking the right direction, what hardware are you running Fermentrack on? (RPi 3, RPI 4, Docker Desktop in Windows, VM, etc.)
 
RPi3. I also run craftbeerpi4 on the same pi but haven’t had any compatibility issues in the past.
Quick update - I’m struggling to replicate this on my end, but pushed out an update to TiltBridge Jr. to help better capture (relevant) errors in Sentry. If you don’t mind updating when you have a sec (and then trying to get it to fail if that makes sense) I’d appreciate it.
 
I just released v15b of the BrewPi-ESP firmware which adds a bugfix for situations where the string representation for negative temperatures would appear as positive leading to incorrect data points in logs & on the LCD display even though the temperature was correctly being controlled. This bug typically will only be experienced by users who use Celsius as their controller temperature format if cold crashing to/below zero.

v15b is available on GitHub, BrewFlasher, and BrewFlasher Web. Upgrading is recommended for anyone who uses their controller in Celsius.

A special shout-out to jalim (Luke) on GitHub for finding the bug and authoring the fix!
 
Right now, yes, unfortunately. I’m planning to add a feature where you can select a tilt color as a gravity sensor and that can then be included in messaging to Fermentrack, but that is a ways off as it will require substantial rework on the Fermentrack side to support. Even in that case, you won’t get full TiltBridge features on the device as you will be limited to a Fermentrack upstream and won’t have gravity calibration (but it is still a feature I want to roll out, as it feels silly to be able to use a Tilt for temperature control but not gravity, doesn’t it?)
 
I've been running Fermentrack for many years successfully, and my installation was originally Brewpi with an Arduino controller. I've integrated an TiltBridge successfully, and for nearly ten years and sixty fermentations, everything has been running well, with the occasional Raspberry PI hiccup that is to be expected. My Raspberry Pi is a 3B+ running Commit Date: July 11, 2023, 7:05 pm, and the only issue I have with it is I cannot seem to make a backup for it, but that's not my issue today.

In the last year, I've noticed that my Arduino board locks up occasionally, suspending it's communications to the Pi, and with my last fermentation, I had to cycle the power on the Arduino board five times in a week. I concluded that my old Arduino, perf board, 2004 display, and encoder installation has reached the end of its lifetime. I feel a new project coming on...

I ordered the Lolin D32 Pro, TFT Display, a set of boards from Osh Park, and a box full of parts on Digikey. I fired up my 3D printer and printed out all of the nice containers from Thorrak's Github (Thank You for all your hard work!!). I already had I2C 2004 displays from another project, so I'll use those instead.

Here's my issue. I've flashed the D32 with Brewflasher and have tried both V15b and V15 beta 6. I've connected it to my Wi-Fi with the BrewpiAP, thanks for that. It shows up on my router and is connected. I've installed it on Fermentrack using the Guided method, successfully. I dont have the D32 installed in the circuit board yet (My solder paste is expired, and I must get some new before I can solder the SMD components on) so the D32 isn't seeing any temp sensors yet. Fermentrack shows "Cannot receive LCD text from Controller/Script", and when I debug the connection, it fails on the connection test. One other thing, I have an Eero mesh Wi-Fi router. I noticed that the Pi is at 192.168.4.251 (I have it set static there) and the D32 is at 192.168.7.62. I'm not sure if that makes a difference.

Why isn't the script on the D32 talking to the Pi?? No sensors connected? On a different net?

If I'm in the wrong subforum, please accept my apologies, I haven't posted here in a while.
 

Attachments

  • Screenshot 2023-07-22 114728.png
    Screenshot 2023-07-22 114728.png
    98.4 KB · Views: 0
Here's my issue. I've flashed the D32 with Brewflasher and have tried both V15b and V15 beta 6. I've connected it to my Wi-Fi with the BrewpiAP, thanks for that. It shows up on my router and is connected. I've installed it on Fermentrack using the Guided method, successfully. I dont have the D32 installed in the circuit board yet (My solder paste is expired, and I must get some new before I can solder the SMD components on) so the D32 isn't seeing any temp sensors yet. Fermentrack shows "Cannot receive LCD text from Controller/Script", and when I debug the connection, it fails on the connection test. One other thing, I have an Eero mesh Wi-Fi router. I noticed that the Pi is at 192.168.4.251 (I have it set static there) and the D32 is at 192.168.7.62. I'm not sure if that makes a difference.

Why isn't the script on the D32 talking to the Pi?? No sensors connected? On a different net?
Thanks for the support over the years - I'm glad to hear that you're trying out some of the newer hardware! What you describe is interesting for a couple different reasons:

The "guided setup" leverages mDNS to set everything up between the controller and Fermentrack. If you can see the controller in the guided setup it means that you can see it over mDNS -- which is interesting, as (per my understanding) mDNS doesn't operate across subnets. BrewPi-ESP advertises both its services over mDNS ("hey, I'm a BrewPi") as well as a multicast "ESPXXX.local" hostname. Again, I was under the impression that these were both the same protocol (and thus should either both work or both fail) but it sounds like in your case, that may not be the case.

My guess is that what is happening is that you're getting your device connected to Fermentrack, but what is being saved is the "ESPXXX.local" hostname which the Pi fails to then subsequently look up. What I would recommend is - after setting up the device - open it up in the Django admin (Gear > Django Admin > BrewPi Devices) and just manually plug the IP address in to the hostname field.

Fingers crossed this helps -- if it doesn't, post here, and I'll see if I can come up with some other debugging steps.
 
I'm not seeing any difference, which is too bad. I tried to move my Pi to 192.168.7.251 but that ended up making it silent (I couldnt connect to it at all).

I added an ESP8266 to the mix, its sitting on my desk without any I/O connected, and the router gave it the address 192.168.7.63, and it acts no different. I used the guided setup for this one also.

I may be able to force my router into doling out addresses on one subnet, but its nearly 1am here, and I'm going to hit the rack.

Screenshot 2023-07-25 003618.png
 

Attachments

  • Screenshot 2023-07-25 004340.png
    Screenshot 2023-07-25 004340.png
    57.5 KB · Views: 0
Quick update - I’m struggling to replicate this on my end, but pushed out an update to TiltBridge Jr. to help better capture (relevant) errors in Sentry. If you don’t mind updating when you have a sec (and then trying to get it to fail if that makes sense) I’d appreciate it.

I’m back again and have upgraded to the latest fermentrack from the master branch (and also flashed the new v15b firmware on the ESP). Still no connection to the tilt and nothing in the log that I can see. Can still see the tilt using the standard tilt iPhone app so it seems fine…
 
OK, some new thoughts this morning and I think I have the network issue figured out now. Eero changes the mask when it adds subnets, so that everybody on multiple subnets can see everyone else. I haven't looked but I think the subnet mask that DHCP is handing out is similar to 255.255.252.0. I found this information on a Reddit group called r/amazoneero.

So in my Eero programming, I have several Raspberry Pi's that have IP Reservations, so I don't have to go looking for them, the pi running Fermentrack is on a static and reserved IP (192.168.4.251). I decided to try and reserve the IP's for the ESP32 board, and in doing that, I noticed I could change the IP Adress of the reservation to match the "subnet" of the Pi. I rebooted the ESP32 and it was given the IP I reserved for it. I changed the configuration Wifi IP Host, and in a few minutes got the message that the script was starting up! Wonderful :)

I'm sure this will happen with anyone else with an Amazon Eero Mesh Router, so I hope this helps someone out in the future.

Now to setup the DS18B20's

Thanks for the help Thorrak!
 

Attachments

  • Screenshot 2023-07-25 102248.png
    Screenshot 2023-07-25 102248.png
    57.5 KB · Views: 0
I noticed one other thing while I was assigning the sensors, it's picking up all of the TP-Link/Kasa Smart Switched in my house. Can Fermentrack control smart switches now?? That could simplify some wiring.. :)
 

Attachments

  • Screenshot 2023-07-25 104307.png
    Screenshot 2023-07-25 104307.png
    9.2 KB · Views: 0
I noticed one other thing while I was assigning the sensors, it's picking up all of the TP-Link/Kasa Smart Switched in my house. Can Fermentrack control smart switches now?? That could simplify some wiring.. :)
Yes. :)

It can also detect Tilts for beer temperature sensing, and - if Espressif ever releases the next Arduino version for ESP32 will also support @inkbird 's temperature sensors as fridge sensors.
 
I've got my Tilt going through a TiltBridge, and I like it better that way, you gain functionality, being able to send your data to Google Drive, and then being able to monitor it anywhere, especially on my phone! That has actually saved me some money.

After having a few programming/tinkering projects of my own, I have a lot of appreciation for your projects! Thank You again!
 
Upgrade complete!

I have a temp controlled fermentation chamber that I've built. It's insulated box with a window AC unit and a small ceramic heater in it. Fermentrack is controlling both units. In the picture you see an STC-1000 labeled Freezestat. The freezestat monitors the temperature of the evaporator coils on the AC unit. If they start to freeze up, it shuts the unit down until the temperature rises. It works like "Coolbot", and its functionality could be incorporated into Brewpi/Fermentrack.
 

Attachments

  • 20230728_130243.jpg
    20230728_130243.jpg
    3 MB · Views: 0
I've got my Tilt going through a TiltBridge, and I like it better that way, you gain functionality, being able to send your data to Google Drive, and then being able to monitor it anywhere, especially on my phone! That has actually saved me some money.

After having a few programming/tinkering projects of my own, I have a lot of appreciation for your projects! Thank You again!

Definitely the way to go if you want to use the Tilt data for more than just temperature control. That said, since the tilt's broadcast to whatever devices are listening, if you wanted to have the Tilt feed both TiltBridge for capturing gravity data and BrewPi-ESP32 for temperature control, you could. ;)

Upgrade complete!

I have a temp controlled fermentation chamber that I've built. It's insulated box with a window AC unit and a small ceramic heater in it. Fermentrack is controlling both units. In the picture you see an STC-1000 labeled Freezestat. The freezestat monitors the temperature of the evaporator coils on the AC unit. If they start to freeze up, it shuts the unit down until the temperature rises. It works like "Coolbot", and its functionality could be incorporated into Brewpi/Fermentrack.

That's awesome! I'm not sure I entirely follow how the Freezestat (or Coolbot) work, other than having the Coolbot logo on the side of a fridge in use at a brewery we visit in Virginia. It feels solidly like one of those things I would tinker with endlessly if we happened to have a house/space.
 
I’m back again and have upgraded to the latest fermentrack from the master branch (and also flashed the new v15b firmware on the ESP). Still no connection to the tilt and nothing in the log that I can see. Can still see the tilt using the standard tilt iPhone app so it seems fine…
Played around a bit but wasn’t able to get fermentrack to connect with the tilt. Instead I’ve installed TiltPi on the same Pi as I run fermentrack and it’s working fine. Weird.
 
**This has been claimed. No longer available.**

I was cleaning up and found several parts to build a controller with LCD screen. Thanks to @Thorrak and @LBussy I was able to build my controllers and want to pass on these parts free to anyone needing them. Just let me know and I will ship them out. I have an orange case which was given to me by Thorrak. The board currently attached to the LCD is a ESP8266. I also have a relay and power supply. The extra board is also from Thorrak and is a older prototype for non-TFT display.
 

Attachments

  • IMG_6734.jpeg
    IMG_6734.jpeg
    2 MB · Views: 0
  • IMG_6735.jpeg
    IMG_6735.jpeg
    1.4 MB · Views: 0
  • IMG_6736.jpeg
    IMG_6736.jpeg
    1.8 MB · Views: 0
  • IMG_6737.jpeg
    IMG_6737.jpeg
    2 MB · Views: 0
  • IMG_6738.jpeg
    IMG_6738.jpeg
    1.7 MB · Views: 0
  • IMG_6739.jpeg
    IMG_6739.jpeg
    1.3 MB · Views: 0
Last edited:
Hi @Thorrak, I’ve been working on building my controller and finally have had some luck…thanks for all of your help! I was able to 3-D print the case bottom shared in your repo, but I’m wondering if you might have a file to fit the Lolin TFT display now that I switched to the D32 pro? It is v1.0 for your reference. I have only been able to locate stl files for I2C displays.

Also, I’d like to buy your D32 pcb from pcbway. I’m just wondering if it’s possible to alter the gerber files to make everything through-hole?

Thanks again!
 
Last edited:
I was cleaning up and found several parts to build a controller with LCD screen. Thanks to @Thorrak and @LBussy I was able to build my controllers and want to pass on these parts free to anyone needing them. Just let me know and I will ship them out. I have an orange case which was given to me by Thorrak. The board currently attached to the LCD is a ESP8266. I also have a relay and power supply. The extra board is also from Thorrak and is a older prototype for non-TFT display.
I am interested in this very much! Do yummy have any idea how much to ship to NJ 08226? Thanks!
 
Hi @Thorrak, I’ve been working on building my controller and finally have had some luck…thanks for all of your help! I was able to 3-D print the case bottom shared in your repo, but I’m wondering if you might have a file to fit the Lolin TFT display now that I switched to the D32 pro? It is v1.0 for your reference. I have only been able to locate stl files for I2C displays. Thanks again!
I think so. The base is the same - it’s the lid that changed — and the difference between v1 and v1.1 of the screen means that the same lid will actually work for both. I think all of the files are on Printables here - if you see any that aren’t, let me know.

For the D32 Pro PCB, what changes did you want to make to cause it to be through hole? There are already holes for through hole capacitors & the resistor needed for the DS18b20 temp sensors that can be used instead of the SMD pads for the same if you like. The idea is that you either populate the SMD components or populate the through hole components - but not both. The only SMD-only components are the level shifter for LCD2004 screens, which I doubt you would want to use anyways.
 
Hi @Thorrak, I’ve been working on building my controller and finally have had some luck…thanks for all of your help! I was able to 3-D print the case bottom shared in your repo, but I’m wondering if you might have a file to fit the Lolin TFT display now that I switched to the D32 pro? It is v1.0 for your reference. I have only been able to locate stl files for I2C displays. Thanks again!

I think so. The base is the same - it’s the lid that changed — and the difference between v1 and v1.1 of the screen means that the same lid will actually work for both. I think all of the files are on Printables here - if you see any that aren’t, let me know.

For the D32 Pro PCB, what changes did you want to make to cause it to be through hole? There are already holes for through hole capacitors & the resistor needed for the DS18b20 temp sensors that can be used instead of the SMD pads for the same if you like. The idea is that you either populate the SMD components or populate the through hole components - but not both. The only SMD-only components are the level shifter for LCD2004 screens, which I doubt you would want to use anyways.
Oh, okay I see now. Thank you for the link to your enclosure designs! I guess I just misunderstood in assembling the pcb. I just assumed that every placeholder must be taken, but your description makes great sense! So just so I am clear, is it possible to read temps from using just the D32 Pro pcb? Or will I also need the RJ-45 board? I've been contemplating extending my DS18b20 probes using some spare 3 wire cpu cable I have laying around. Thanks again!
 
Oh, okay I see now. Thank you for the link to your enclosure designs! I guess I just misunderstood in assembling the pcb. I just assumed that every placeholder must be taken, but your description makes great sense! So just so I am clear, is it possible to read temps from using just the D32 Pro pcb? Or will I also need the RJ-45 board? I've been contemplating extending my DS18b20 probes using some spare 3 wire cpu cable I have laying around. Thanks again!
It's your call! I prefer the RJ-45 PCB as I think it simplifies wiring, but if you want to directly connect your sensors to the relevant pins on the "main" sensor board then that's an option too. The main drawback is that if you ever want to add or swap out a sensor it makes it a bit more difficult, but otherwise - electrically - it's all the same.
 
I just released v15c of the BrewPi-ESP firmware. This is a minor bugfix release for v15 which seeks to resolve three bugs:
  • Resolves an issue on ESP32-S2 chips where the "IIC Address Scan" resulted in the controller becoming incredibly slow
  • Potentially resolves an issue on ESP32-S2 chips where the controller could freeze unexpectedly
  • Resolves an issue in the UI that can prevent assignment of certain TP Link relays
This upgrade is highly recommended for all ESP32-S2 users, and is completely optional for users of all other chipsets.

v15c is available now on BrewFlasher, BrewFlasher Web, BrewFlasher Console, and GitHub.
 
Hi everyone, question about capacitors on the d32 pro pcb or I suppose any of the pcbs in general. I have several 0.1uF capacitors that I will use based on my understanding of what I have read here, but I do not currently have any 1uF capacitors. I do however have many 2.2uF capacitors. I believe I have a basic understanding of how these work and why they are used in the circuit, but is this 1.2uF increase in capacitance going to greatly adversely affect the performance of the controller? All advice welcomed. Thanks!
 
I am not an electrical engineer, but my understanding from the conversations I've had with people who know far better than I is that the capacitance in this case matters. The purpose of the 1uF and 0.1uF capacitors are to help filter the power being passed to/from the controller, and adding a 2.2uF capacitor may not result in the same degree/type of filtration.

Of course, my PCB designs are intended to use a consumer-grade packaged microcontroller which has its own power filtration onboard, so all of this may be extraneous. My original PCB designs lacked the capacitors entirely, and thus you can probably get away with any of them, even if they are a good idea in general.

(That said, this entire post is likely to trigger Cunningham's Law -- when @day_trippr comes and refutes everything I said above, trust him over me! Or, alternatively, trust your gut -- you sound like you know more than I do here!)
 
Back
Top