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.

Jeroen79

Well-Known Member
Joined
Nov 2, 2017
Messages
136
Reaction score
119
I would like to share my latest project with you, I made a new control system for my brew kettle, as the built-in control had way too much overshoot and was not very practical all together.

It is actually a complete software/firmware for an ESP32 controller, which you can connect to your WiFi and then set up and control the entire brewing cycle via the web interface.

The reason I made it in this way is because you can buy a esp32 board with 4 relays for 10-20€, which makes it very easy to build a control system, all you have to do is put it in a box and connect one or more OneWire temperature sensors to it.

I made it public on github -> GitHub - jeroen79/esp-brew-engine: Esp brew controller engine

If anyone is interested, feel free to try it out and give feedback.

control.png

mash schedules.png

IMG_20240126_080720_1.jpg
IMG_20240126_085417_1.jpg
IMG_20240126_142701_1.jpg
 
First big update has been published:

v1.1.0

New Features​


  • Add ability to scan for wifi networks.
  • Make it more clear that wifi is is AP mode or Station.
  • Add ability to Change max power.
  • Set default power to 15, some boards seem to have issues at 20.
  • Added both relative and absolute compensation options for sensors.
  • Added options to disable/hide sensors.
  • Show if sensor is connected in settings.
  • Show sensor last temp in settings.
  • Allow sensors to be disabled/hidden.
  • Show if sensors are connected in sensor settings.
  • Show Temperature in sensor settings.
  • Added relative and absolute compensation to sensors.
  • Round to 0.1.
  • Ability to delete unused sensors.
  • Button to rescan for onewire sensors.
 
Second update mainly adds support for Fahrenheit, along with some other small changes.

1.2.0

New Features​

  • Support for Celsius and Fahrenheit.
  • PID loopt time is now configurable.
  • Factory Reset button in system settings.
  • Nicer recovery page.
  • Factory Reset button in recovery page.
  • Added manifest.json and svg icon.
 
Can it power control during the boil? ie adjust to say 30%.
Can it control a pump?
It's a very good effort so far, I'm watching.
 
Can it power control during the boil? ie adjust to say 30%.
It uses PID to control the power automatically, but there is also a override so you can intervene when needed and set it to a fixed output %.

Can it control a pump?
Yes, there is a control for pump/stirrer witch can be set at interval or continuous.
 
Can it power control during the boil? ie adjust to say 30%.
It uses PID to control the power automatically, but there is also a override so you can intervene when needed and set it to a fixed output %.

Can it control a pump?
Yes, there is a control for pump/stirrer witch can be set at interval or continuous.
That's great. Pid is not good for boil control, on my system I have pid for mash and then I dial back the power to around 25% for the boil.
 
That's great. Pid is not good for boil control, on my system I have pid for mash and then I dial back the power to around 25% for the boil.

Ok good to know that some people prefer it that way, now you always have to set a temp but can override, il see if i can't also make a mode where you can just set power %.
 
Yes this will be added, atm i am working on notifications and a buzzer, after that i will probably start on beerxml support.

What do you except from beerxml?, i presume it loads the maish schedule and adds notifications when to add hops etc?
 
Yes this will be added, atm i am working on notifications and a buzzer, after that i will probably start on beerxml support.

What do you except from beerxml?, i presume it loads the maish schedule and adds notifications when to add hops etc?
Yes exactly. Automating the brew day! At the moment I have to fiddle with the front panel buttons on my Brewzilla 3.1.1. It's fine for a single mash temp but it's annoying when I have to set step mash temperatures then revert it again.

I found another project that interfaces to the brewzilla using am arduino and Raspberry pi but I was unable to get the pi gui to load. Was unable to get support from the creator.
 
Is there a possibility for NTC temperature probe support as well as 1-wire?
I am afraid that is not possible atm, due to the fact that the analog inputs of the esp32 controllers are not good enough for a consistent correct reading.

The only way this would be possible is to use an extra analog to digital converter, i don't know if that is worth the effort, people can always swap there ntc for a onewire.
 
Not that I'm advocating - as a retired ee design engineer I'm curious. There are two successive approximating ADCs and iirc 8:1 analog pin muxes in front of each (for a theoretical 16 analog channels). Are the ADCs that bad that some software couldn't massage the readings into something coherent - and legit?

Cheers!
 
Not that I'm advocating - as a retired ee design engineer I'm curious. There are two successive approximating ADCs and iirc 8:1 analog pin muxes in front of each (for a theoretical 16 analog channels). Are the ADCs that bad that some software couldn't massage the readings into something coherent - and legit?
To be honest i haven't tried it myself, but i have come across a lot of posts that the adc on esp32 is pretty bad, so i just opted for onewire.

If there is a lot of interest in ntc i would be willing to give it a go.
 
The onboard ADC is pretty non-linear especially at very low voltages. The ADS1115 is cheap and easy enough to use with the ESP32 and works far better. Just learned all this building an automatic TDS monitor to integrate in Home Assistant.
 
Another update!

1.3.0

New Features​

  • Heaters are now fully dynamic, up to 10!.
  • Configurable wattage per heater.
  • Heaters can now be enabled/disabled for boil/mash.
  • Schedules have a new flag to set then as boil/mash.
  • Support for Buzzer.
  • Support for Notifications.
  • Speech Notifications via webinterface.
  • Added Client/Browser Settings.
  • Control Screen stays active while in settings.
  • Fullscreen button.

1709220020550.png

 
Just did some test today with the version 1.3.0 and it works great for the maisch part but the PID for the boil part did not work that well for me, lucky you put a work around with the 'Set overide output' option.
Looking forward to see the new features that are on the To do list.
Great job Jeroen! 👍:rock:
 
You should not use the PID for the boil phase.
Set your wattage or percentage to the elements that works on your system to keep boil at rate you want.
My system around 25% of 3000w element with lid and condenser works well. No lid I'd be more.
 
This is brilliant,thanks for sharing it with us !

Was wondering why you do not use SSR's instead of physical relays for tighter pid temperature control ?

What is the syntax needed to connect to a MQTT broker on my LAN with no authentication ?

I have tried mqtt://192.168.100.225:1883 with and without port number but no new topics appear in MQTT explorer.

As a feature request,would it be possible to publish to MQTT the name of the active step as well as the temperature ?

Cheers
 
Last edited:
Was wondering why you do not use SSR's instead of physical relays for tighter pid temperature control ?
Simply because i could buy a 4-Relais board that would just work and be good enough, adding ssr's would require a bigger box, and probably some cooling, but the software can just as well drive SSR's if your prefer it.

I have tried mqtt://192.168.100.225:1883 with and without port number but no new topics appear in MQTT explorer.
mqtt://192.168.100.225:1883 seems correct to me if you don't use auth, does your broker support mqtt v5?, as its required atm, v3 is not enabled.

Also mqtt is quite basic atm it just logs: Time, Temp, Taget, Output.

But there are plans to expand it, so be sure to let me know what you would except from the mqtt feature.
 
I think you could attach the SSR or SSRs to the elements and then have the relays switch them. Might cope better if you have large elements as 30 amp relays and boards are more expensive.
 
I'm using SSR instead of relay and that works perfect with ESP Brewing Engine like this:

1710360146893.png
 
Simply because i could buy a 4-Relais board that would just work and be good enough, adding ssr's would require a bigger box, and probably some cooling, but the software can just as well drive SSR's if your prefer it.
Fair enough,I asked as I have cobbled together something similar using an ESP8266 and initially used those so called "10 Amp" relays,they got very hot with a 1500w load after less than an hour or so,switching them for the 30 Amp type sorted that problem.

mqtt://192.168.100.225:1883 seems correct to me if you don't use auth, does your broker support mqtt v5?
I will check this as it could well be the issue,thanks

If the current active step number could be published over MQTT would be useful.
I am thinking of setting up rules so my text to speech will tell me when mashing is one and when to add hops,boil done,etc
 
If the current active step number could be published over MQTT would be useful.
I think that will be possible in the future, maybe some kind of status document.

I am thinking of setting up rules so my text to speech will tell me when mashing is one and when to add hops,boil done,etc
This is already a feature, if your browser supports speech you can select the voice in client settings, if you then add notification it will speak them!, and in the next version i will support importing BeerXML so it will add the notifications for you.

But it might also be a good idea to also post these notifications to a mqtt topic.
 
Another update, this one is focused on beerXML import.

1.4.0

Changes​

  • Import of BeerXML.
  • Different PID settings for Boil/Mash.
  • Extra setting to configure stepInterval.
  • Dark/Light mode via clientsettings.
  • Optimized substeps calculation.
  • Optimized control loop, trigger pid faster after target changes.
 
Next saterday a new brewday so just in time to try these new feature.
Thanks Jeroen.
:thumbsup:
 
Back
Top