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.
Nothing to refute there, but the specific application does matter. If a 1uf capacitor was specified for a timing circuit it would probably be a mistake to use a 2.2uf instead. Otoh, if it was to be used as a decoupling capacitor on a power rail, sub'ing a 2.2uf would likely work just fine...

Cheers!
 
@Thorrak @day_trippr Thanks so much for this clarification! Yes, of course in a pwm circuit with a 555 or something similar, its very important to consider the recharge/discharge characteristics but here as a decoupling cap, I appreciate your input. I will try this setup and report back with any (hopefully none) adverse effects. Cheers!
 
Hey everyone, I have one more electrical related question...I think I have read enough/watched videos to know that it can be potentially dangerous to power the 5V relay module directly from the Arduino/ESP-32, and better practice to power it separately. So for some reason I cannot wrap my brain around if it is safe to connect a jumper from the 5V male pin header on my ESP-32 pcb from @Thorrak to the relay module for power, or if it should have a separate power supply? I am currently intending to power the ESP-32 via a 5V power supply within my enclosure. Is it better/or safer to power the ESP-32 externally via usb and use the 5V power supply for the module? Any help is appreciated! Cheers!
 
Hey everyone, I have one more electrical related question...I think I have read enough/watched videos to know that it can be potentially dangerous to power the 5V relay module directly from the Arduino/ESP-32, and better practice to power it separately. So for some reason I cannot wrap my brain around if it is safe to connect a jumper from the 5V male pin header on my ESP-32 pcb from @Thorrak to the relay module for power, or if it should have a separate power supply? I am currently intending to power the ESP-32 via a 5V power supply within my enclosure. Is it better/or safer to power the ESP-32 externally via usb and use the 5V power supply for the module? Any help is appreciated! Cheers!
Most of the Sainsmart relay boards have relays that can trigger on either 5V or 3v3 and have a built in optocoupler that allows a signal to switch a (separate) power supply that powers the relay. If you leave the jumper connected, then you're powering the relay off the 3v3 line which means that the controller's on-board voltage regulator is effectively powering the relay. This is the main issue -- the strain on the controller's voltage regulator.

You're perfectly fine using a single 5V power supply to power both the controller and the relay simultaneously, but I would recommend using the two "power breakout" pins on the PCB to power the relay with 5v if you can.
 
Most of the Sainsmart relay boards have relays that can trigger on either 5V or 3v3 and have a built in optocoupler that allows a signal to switch a (separate) power supply that powers the relay. If you leave the jumper connected, then you're powering the relay off the 3v3 line which means that the controller's on-board voltage regulator is effectively powering the relay. This is the main issue -- the strain on the controller's voltage regulator.

You're perfectly fine using a single 5V power supply to power both the controller and the relay simultaneously, but I would recommend using the two "power breakout" pins on the PCB to power the relay with 5v if you can.
@Bago-0 thanks! I don't know why I couldn't seem to find something that clear! @Thorrak Thank you for the advice! I have it set up currently exactly as you had mentioned, using the "breakout" pins on the PCB. This thread has been such a help! Cheers!
 
Are the ESP32 board designs at thorrak_hardware/ESP32 BrewPi Boards at master · thorrak/thorrak_hardware um, valid, for lack of a better word? There's a warning on that page saying

Please do not base a build on this doc without consulting Thorrak directly first!

...which sounds fairly serious. The board layout looks straightforward enough, but...
Uhhhhhhhhhhh.... I don't recall why I added that note. Maybe because I hadn't vetted the component list? Regardless, the design works great, and is the primary design I recommend for new builds.
 
I've read all the way through this thread, and all the way through the Fermentrack thread--I don't think I'd make it all the way through the BrewPi thread. So apologies if these questions would have been answered there, and feel free to point me there if needed, but...

As I mentioned in a couple of other threads, my need is to control a glycol chiller, and to use a beer profile. I have two Fermzilla fermenters (one 5-gal nominal, the other 10-gal), which I'm cooling with immersion coils; each has a thermowell (closer to the immersion coil than I'd like, but it's still there). You've come up with a clever design that will let the controller act like a thermistor, and thereby turn the chiller pump on and off with no modifications to it--cool (so to speak). I've seen posts (probably in this thread, maybe in the fermentrack thread) indicating that placing the chamber/fridge temp probe outside the fermenter, but inside its insulating jacket; and placing the beer temp probe into the thermowell; should produce decent results.

I've also seen that the BrewPi controllers implement PID, or something like it, to control the temp of the fermenting beer, and further that they pretty well tune themselves. Which leads to my question: should I dedicate one specific controller to each fermenter? I'd expect that the 5-gal fermenter would be more responsive to temperature control than the 10-gal one. And if the controller's trying to auto-learn the PID parameters, moving it back and forth between two fermenters (particularly of significantly different volumes) seems likely to confuse it.
 
...and a further question: with the ESP32 build, it looks like you're preferring a TFT screen to the 2004 I2C text display. You link to an "official" 2.4", 320x240 TFT display and cable, which connects directly to a D32 Pro, but you also have a 10-pin connector footprint on the PCB that's also stated to be for a TFT display. What sort of display would be used here, and how would it be connected?
 
...and a further question: with the ESP32 build, it looks like you're preferring a TFT screen to the 2004 I2C text display. You link to an "official" 2.4", 320x240 TFT display and cable, which connects directly to a D32 Pro, but you also have a 10-pin connector footprint on the PCB that's also stated to be for a TFT display. What sort of display would be used here, and how would it be connected?
So much of my design revolves around upgrade paths for existing users.

Existing ESP8266 builds that use my case design likely have an LCD2004 mounted on the lid The ESP32 PCB maintains the same screw hole footprint (adding an optional one) and also has a built in level shifter for anyone who may already have an LCD2004 on hand. The TFT is the better way to go given a choice, but for those who may not want to make it yet, the LCD2004 is still available.

For the LCD2004, you use the 4 pin breakout on the PCB (5V, GND, SCL, SDA). For the TFT, either use the LCD connector on the controller itself if using a D32 pro, or use the 2x5 pin breakout above the controller.

Don't connect both -- if there is an LCD2004 connected, the TFT won't work (I think).
 
I've read all the way through this thread, and all the way through the Fermentrack thread--I don't think I'd make it all the way through the BrewPi thread. So apologies if these questions would have been answered there, and feel free to point me there if needed, but...

As I mentioned in a couple of other threads, my need is to control a glycol chiller, and to use a beer profile. I have two Fermzilla fermenters (one 5-gal nominal, the other 10-gal), which I'm cooling with immersion coils; each has a thermowell (closer to the immersion coil than I'd like, but it's still there). You've come up with a clever design that will let the controller act like a thermistor, and thereby turn the chiller pump on and off with no modifications to it--cool (so to speak). I've seen posts (probably in this thread, maybe in the fermentrack thread) indicating that placing the chamber/fridge temp probe outside the fermenter, but inside its insulating jacket; and placing the beer temp probe into the thermowell; should produce decent results.

I've also seen that the BrewPi controllers implement PID, or something like it, to control the temp of the fermenting beer, and further that they pretty well tune themselves. Which leads to my question: should I dedicate one specific controller to each fermenter? I'd expect that the 5-gal fermenter would be more responsive to temperature control than the 10-gal one. And if the controller's trying to auto-learn the PID parameters, moving it back and forth between two fermenters (particularly of significantly different volumes) seems likely to confuse it.

I currently do not have a glycol chiller, and as such have not yet tuned the firmware for one. There is a "low delay" mode built in to the firmware which many users have reported success with - but I can't tell you much about what it would take to work with glycol beyond this. There is no such thing as a "fridge profile" mode (yet) so beer profile would be the way to go.

You will need a separate controller for each fermenter you are looking to control.

With the above said, I do have a glycol chiller on order, so there may be some updates to this early next year. ;) Of course, I'll need to get a fermenter that can use glycol first!
 
For the TFT, either use the LCD connector on the controller itself if using a D32 pro, or use the 2x5 pin breakout above the controller.
I guess I wasn't very clear--leaving aside the "official" D32 pro TFT display with its cable, what should I be looking for, and how would I connect it? Nothing of what I'm seeing on eBay has a matching connector, so it isn't quite clear what I should be shopping for.
You will need a separate controller for each fermenter you are looking to control.
Understood. Should I keep a given controller with a given fermenter, i.e., controller 1 with fermenter A? Or is there no particular reason to do that?
 
I guess I wasn't very clear--leaving aside the "official" D32 pro TFT display with its cable, what should I be looking for, and how would I connect it? Nothing of what I'm seeing on eBay has a matching connector, so it isn't quite clear what I should be shopping for.

Understood. Should I keep a given controller with a given fermenter, i.e., controller 1 with fermenter A? Or is there no particular reason to do that?
OH! Sorry about that. The overwhelming majority of the TFTs out there that are compatible have the same row of pin headers on the back. To help break it out, I created this PCB. That changes the pins from being in a row to a 2x5 pin box header. You can then use a ribbon cable to connect the TFT to the controller.

That said, One thing to be very careful with -- For the ribbon connectors you need to get one where the "bump" is on the same side relative to the cable. Like this:

IDC Cable.png


This ensures that Pin 1 of each box header is connected (and pin 2, and pin 3, etc.) rather than reversed.


As far as matching controllers and fermenters permanently, that's your call. The algorithm should detect the properties quickly enough after being connected to a new fermenter to make it not matter.
 
The overwhelming majority of the TFTs out there that are compatible have the same row of pin headers on the back.
OK, a single row of pins is a lot closer to what I'd seen. Does it need to be 320x240 (that's the bulk of what I'd seen)? Given an appropriate resolution, I don't suppose the physical size really matters.
 
My first high temp ferment with the ESP32 and the room temperature is 69f. Why is the fridge temperature capped at 86 degrees?? I was fermenting at beer constant temp 85, and the beer temp has fallen off. I adjusted it to 90 to compensate but it looks like that wont work either. I cant find the PID Settings, is there any? Any adjustments I can make? The beer volume is 12 gallons.

1697475461453.png
 
My first high temp ferment with the ESP32 and the room temperature is 69f. Why is the fridge temperature capped at 86 degrees?? I was fermenting at beer constant temp 85, and the beer temp has fallen off. I adjusted it to 90 to compensate but it looks like that wont work either. I cant find the PID Settings, is there any? Any adjustments I can make? The beer volume is 12 gallons.

View attachment 831704
There is a parameter in the setting under Configure Control Constants that sets max fridge temperature. You will need to increase that.
 
Good day everyone!

I'm totally new to brewing and I'm looking around for some system to help me monitor fermentation.

Fermentrack looks pretty cool. (kudos to @Thorrak for this amazing piece of software/hardware)
I did install it on old raspberry pi 3 (there were some issues but I overcome these). The next step was to try compile BrewPi-ESP8266 (I got bunch of 8266 bought when assembled few iSpindel's).
Unfortunately I failed. There are errors during compilation (about some problems in python scripts - I'll not post it here to not litter).
Is here anyone who could help me to compile BrewPi-ESP on windows OS?

Just to clarify. BrewPi-ESP8266 flashed with BrewFlasher works but I have 2 things I'd like to change.
1. My display (20x4 LCD) doesn't show properly degree sign.
2. I got plenty of cheap china clones of DS18B20 which doesn't work with BrewPi-ESP8266 or iSpindel (original ones bought at DigiKey works like a charm), so I'd like to change code to make those clones working (I got way around to make it).

Thanks
Ive.j
 
Good day everyone!

I'm totally new to brewing and I'm looking around for some system to help me monitor fermentation.

Fermentrack looks pretty cool. (kudos to @Thorrak for this amazing piece of software/hardware)
I did install it on old raspberry pi 3 (there were some issues but I overcome these). The next step was to try compile BrewPi-ESP8266 (I got bunch of 8266 bought when assembled few iSpindel's).
Unfortunately I failed. There are errors during compilation (about some problems in python scripts - I'll not post it here to not litter).
Is here anyone who could help me to compile BrewPi-ESP on windows OS?

Just to clarify. BrewPi-ESP8266 flashed with BrewFlasher works but I have 2 things I'd like to change.
1. My display (20x4 LCD) doesn't show properly degree sign.
2. I got plenty of cheap china clones of DS18B20 which doesn't work with BrewPi-ESP8266 or iSpindel (original ones bought at DigiKey works like a charm), so I'd like to change code to make those clones working (I got way around to make it).

Thanks
Ive.j
Very strange about the degree sign. Pretty sure that works on my end but I’ll have to recheck when I’m next near hardware.

For compilation, you will need to install VSCode + Platformio. I don’t develop on windows so I can’t help with any platform-specific errors, but there are a number of tutorials out there on getting VSCode & Platformio set up, so I would recommend following any of those.

If you get specific errors with the BrewPi-ESP code, let me know and I’ll see what I can do to help.
 
WOW! You respond to every post in just few minutes? Impressive! Very impressive! :)

Well, I'm pretty sure that is just mine LCD not your code.
For me to have degree sign I need to make my custom character or use in the code: lcd.print(temp_A + (char)210 + "C"); to have something similar to degree sign like on attached picture

lcd.jpeg


I got VSCode + Platformio and I did compiled some other projects (the one on the picture for example).
I got problems with BrewPi-ESP and I think it is windows system specific.

Here is output from VSC terminal after build attempt:

Code:
Processing esp8266_wifi (platform: [email protected]; board: d1_mini; framework: arduino)
----------------------------------------------------------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif8266/d1_mini.html
PLATFORM: Espressif 8266 (4.1.0) > WeMos D1 R2 and mini
HARDWARE: ESP8266 80MHz, 80KB RAM, 4MB Flash
PACKAGES:
 - framework-arduinoespressif8266 @ 3.30101.0 (3.1.1) 
 - tool-esptool @ 1.413.0 (4.13)
 - tool-esptoolpy @ 1.30000.201119 (3.0.0)
 - toolchain-xtensa @ 2.100300.220621 (10.3.0)
fatal: not a git repository (or any of the parent directories): .git
Traceback (most recent call last):
  File "C:\OneDrive\pio\brewpi-esp8266-master\scripts\gen_version.py", line 15, in <module>     
    subprocess.check_output(["git", "describe", "--always"])
  File "C:\Python312\Lib\subprocess.py", line 466, in check_output
    return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Python312\Lib\subprocess.py", line 571, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['git', 'describe', '--always']' returned non-zero exit status 128.   
OSError: 'python3 scripts/gen_version.py' exited 1:
  File "C:\Users\ive\.platformio\penv\lib\site-packages\platformio\builder\main.py", line 173:
    env.SConscript("$BUILD_SCRIPT")
  File "C:\Users\ive\.platformio\packages\tool-scons\scons-local-4.5.2\SCons\Script\SConscript.py", line 598:
    return _SConscript(self.fs, *files, **subst_kw)
  File "C:\Users\ive\.platformio\packages\tool-scons\scons-local-4.5.2\SCons\Script\SConscript.py", line 285:
    exec(compile(scriptdata, scriptname, 'exec'), call_stack[-1].globals)
  File "C:\Users\ive\.platformio\platforms\[email protected]\builder\main.py", line 237:
    target_elf = env.BuildProgram()
  File "C:\Users\ive\.platformio\packages\tool-scons\scons-local-4.5.2\SCons\Util\envs.py", line 242:       
    return self.method(*nargs, **kwargs)
  File "C:\Users\ive\.platformio\penv\lib\site-packages\platformio\builder\tools\piobuild.py", line 61:     
    env.ProcessProgramDeps()
  File "C:\Users\ive\.platformio\packages\tool-scons\scons-local-4.5.2\SCons\Util\envs.py", line 242:
    return self.method(*nargs, **kwargs)
  File "C:\Users\ive\.platformio\penv\lib\site-packages\platformio\builder\tools\piobuild.py", line 118:
    env.ProcessFlags(env.get("BUILD_FLAGS"))
  File "C:\Users\ive\.platformio\packages\tool-scons\scons-local-4.5.2\SCons\Util\envs.py", line 242:
    return self.method(*nargs, **kwargs)
  File "C:\Users\ive\.platformio\penv\lib\site-packages\platformio\builder\tools\piobuild.py", line 228:
    env.Append(**env.ParseFlagsExtended(flags))
  File "C:\Users\ive\.platformio\packages\tool-scons\scons-local-4.5.2\SCons\Util\envs.py", line 242:
    return self.method(*nargs, **kwargs)
  File "C:\Users\ive\.platformio\penv\lib\site-packages\platformio\builder\tools\piobuild.py", line 190:
    for key, value in env.ParseFlags(str(raw)).items():
  File "C:\Users\ive\.platformio\packages\tool-scons\scons-local-4.5.2\SCons\Environment.py", line 1035:
    do_parse(arg)
  File "C:\Users\ive\.platformio\packages\tool-scons\scons-local-4.5.2\SCons\Environment.py", line 887:
    arg = self.backtick(arg[1:])
  File "C:\Users\ive\.platformio\packages\tool-scons\scons-local-4.5.2\SCons\Environment.py", line 798:
    raise OSError("'%s' exited %d" % (command, status))
=============================== [FAILED] Took 1.00 seconds ===============================
Environment    Status    Duration
-------------  --------  ------------
esp8266_wifi   FAILED    00:00:01.004
============================= 1 failed, 0 succeeded in 00:00:01.004 ===========================


You can see here build for esp8266_wifi but that is because I did try different things to make it work. When it was esp32_wifi_tft result was the same.
 
WOW! You respond to every post in just few minutes? Impressive! Very impressive! :)

Well, I'm pretty sure that is just mine LCD not your code.
For me to have degree sign I need to make my custom character or use in the code: lcd.print(temp_A + (char)210 + "C"); to have something similar to degree sign like on attached picture

View attachment 831825

I got VSCode + Platformio and I did compiled some other projects (the one on the picture for example).
I got problems with BrewPi-ESP and I think it is windows system specific.

Here is output from VSC terminal after build attempt:

Code:
Processing esp8266_wifi (platform: [email protected]; board: d1_mini; framework: arduino)
----------------------------------------------------------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif8266/d1_mini.html
PLATFORM: Espressif 8266 (4.1.0) > WeMos D1 R2 and mini
HARDWARE: ESP8266 80MHz, 80KB RAM, 4MB Flash
PACKAGES:
 - framework-arduinoespressif8266 @ 3.30101.0 (3.1.1)
 - tool-esptool @ 1.413.0 (4.13)
 - tool-esptoolpy @ 1.30000.201119 (3.0.0)
 - toolchain-xtensa @ 2.100300.220621 (10.3.0)
fatal: not a git repository (or any of the parent directories): .git
Traceback (most recent call last):
  File "C:\OneDrive\pio\brewpi-esp8266-master\scripts\gen_version.py", line 15, in <module>    
    subprocess.check_output(["git", "describe", "--always"])
  File "C:\Python312\Lib\subprocess.py", line 466, in check_output
    return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Python312\Lib\subprocess.py", line 571, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['git', 'describe', '--always']' returned non-zero exit status 128.  
OSError: 'python3 scripts/gen_version.py' exited 1:
  File "C:\Users\ive\.platformio\penv\lib\site-packages\platformio\builder\main.py", line 173:
    env.SConscript("$BUILD_SCRIPT")
  File "C:\Users\ive\.platformio\packages\tool-scons\scons-local-4.5.2\SCons\Script\SConscript.py", line 598:
    return _SConscript(self.fs, *files, **subst_kw)
  File "C:\Users\ive\.platformio\packages\tool-scons\scons-local-4.5.2\SCons\Script\SConscript.py", line 285:
    exec(compile(scriptdata, scriptname, 'exec'), call_stack[-1].globals)
  File "C:\Users\ive\.platformio\platforms\[email protected]\builder\main.py", line 237:
    target_elf = env.BuildProgram()
  File "C:\Users\ive\.platformio\packages\tool-scons\scons-local-4.5.2\SCons\Util\envs.py", line 242:      
    return self.method(*nargs, **kwargs)
  File "C:\Users\ive\.platformio\penv\lib\site-packages\platformio\builder\tools\piobuild.py", line 61:    
    env.ProcessProgramDeps()
  File "C:\Users\ive\.platformio\packages\tool-scons\scons-local-4.5.2\SCons\Util\envs.py", line 242:
    return self.method(*nargs, **kwargs)
  File "C:\Users\ive\.platformio\penv\lib\site-packages\platformio\builder\tools\piobuild.py", line 118:
    env.ProcessFlags(env.get("BUILD_FLAGS"))
  File "C:\Users\ive\.platformio\packages\tool-scons\scons-local-4.5.2\SCons\Util\envs.py", line 242:
    return self.method(*nargs, **kwargs)
  File "C:\Users\ive\.platformio\penv\lib\site-packages\platformio\builder\tools\piobuild.py", line 228:
    env.Append(**env.ParseFlagsExtended(flags))
  File "C:\Users\ive\.platformio\packages\tool-scons\scons-local-4.5.2\SCons\Util\envs.py", line 242:
    return self.method(*nargs, **kwargs)
  File "C:\Users\ive\.platformio\penv\lib\site-packages\platformio\builder\tools\piobuild.py", line 190:
    for key, value in env.ParseFlags(str(raw)).items():
  File "C:\Users\ive\.platformio\packages\tool-scons\scons-local-4.5.2\SCons\Environment.py", line 1035:
    do_parse(arg)
  File "C:\Users\ive\.platformio\packages\tool-scons\scons-local-4.5.2\SCons\Environment.py", line 887:
    arg = self.backtick(arg[1:])
  File "C:\Users\ive\.platformio\packages\tool-scons\scons-local-4.5.2\SCons\Environment.py", line 798:
    raise OSError("'%s' exited %d" % (command, status))
=============================== [FAILED] Took 1.00 seconds ===============================
Environment    Status    Duration
-------------  --------  ------------
esp8266_wifi   FAILED    00:00:01.004
============================= 1 failed, 0 succeeded in 00:00:01.004 ===========================


You can see here build for esp8266_wifi but that is because I did try different things to make it work. When it was esp32_wifi_tft result was the same.
If you happen to catch me when I’m sitting, bored, waiting for coffee, I certainly can seem quick to respond. ;) The posts ahead of yours unfortunately reveal the truth!

With regards to your python issue - try commenting out this line: brewpi-esp8266/platformio.ini at 0842f97cbbddf193a87a59ed685471017beea0b6 · thorrak/brewpi-esp8266
 
This definitely changed the situation.
Now at least compilation proceed but strangely I got error about missing Version.h file (which is not there of course).

Code:
Compiling .pio\build\esp32_wifi_tft\src\TiltTempSensor.cpp.o
Compiling .pio\build\esp32_wifi_tft\src\brewpi-esp8266.cpp.o
src/CommandProcessor.cpp:30:10: fatal error: Version.h: No such file or directory

*****************************************************************
* Looking for Version.h dependency? Check our library registry!
*
* CLI  > platformio lib search "header:Version.h"
* Web  > https://registry.platformio.org/search?q=header:Version.h
*
*****************************************************************

 #include "Version.h"
          ^~~~~~~~~~~
compilation terminated.
*** [.pio\build\esp32_wifi_tft\src\CommandProcessor.cpp.o] Error 1
src/JsonMessages.cpp:4:10: fatal error: Version.h: No such file or directory

*****************************************************************
* Looking for Version.h dependency? Check our library registry!
*
* CLI  > platformio lib search "header:Version.h"
* Web  > https://registry.platformio.org/search?q=header:Version.h
*
*****************************************************************

 #include "Version.h"
          ^~~~~~~~~~~
compilation terminated.
*** [.pio\build\esp32_wifi_tft\src\JsonMessages.cpp.o] Error 1
src/ESP_BP_WiFi.cpp:20:10: fatal error: Version.h: No such file or directory

*****************************************************************
* Looking for Version.h dependency? Check our library registry!
*
* CLI  > platformio lib search "header:Version.h"
* Web  > https://registry.platformio.org/search?q=header:Version.h
*
*****************************************************************

 #include "Version.h"    // Used in mDNS announce string
          ^~~~~~~~~~~
compilation terminated.
*** [.pio\build\esp32_wifi_tft\src\ESP_BP_WiFi.cpp.o] Error 1
================================================ [FAILED] Took 15.95 seconds ====================================
Environment     Status    Duration
--------------  --------  ------------
esp32_wifi_tft  FAILED    00:00:15.945
================================================ 1 failed, 0 succeeded in 00:00:15.945 ==========================

Commenting out lines in files where Version.h is called caused bunch of errors.
I guess it is there for a reason :)
 
It's all related, in this case! That python script generates Version.h. Just create one with these contents and you should be good to go:

C++:
#pragma once
/******************************************************************************
*** ****  WARNING **** ****

This file is auto-generated.  Any changes made here will be destroyed during
the next build.  To make persistent changes, edit the template in
/scripts/gen_version.py
******************************************************************************/

namespace Config {
    namespace Version {
        constexpr auto release = "0.2.4";
        constexpr auto git_tag = "831a25f";
        constexpr auto git_rev = "831a25f";
    }
};
 
Last edited:
Thank you so much!

I added content of Version.h file as you provided and the same at the end of Config.h (otherwise there was declaration error)

Code:
  namespace Version {
 
    constexpr auto release = "0.2.4";
    constexpr auto git_tag = "831a25f";
    constexpr auto git_rev = "831a25f";

  };

and compilation went OK.

BTW. this is how degree symbol looks like on my display with firmware flashed via BrewFlasher

lcd2.jpeg


and this is after implementing fix for my display

lcd3.jpeg
 
Last edited:
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.
 
Back
Top