Fermentrack: Fermentation monitoring & BrewPi-www Replacement for Raspberry Pi

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 wondering if maybe a couple sensors have the same address? Anything is possible from China. I think the way to go would be to rule that out, and/or use a simple sketch to see if three sensors can be detected. If you are feeling froggy, you can use a sketch like this which I use on an Arduino:
Code:
#include <OneWire.h>

int inPin = 14; // Connect data to pin A0
//int inPin = 18; // Connect data to pin A4

void setup(void) {
  Serial.begin(9600);
  listOneWire();
}

void listOneWire(void) {
  byte i;
  byte present = 0;
  byte data[12];
  byte addr[8];
  pinMode(inPin, INPUT);
  OneWire oneWire(inPin);
 
  Serial.print("Looking for 1-Wire devices.\n\r");
  while(oneWire.search(addr)) {
    Serial.print("\n\rFound 1-Wire device with address:\n\r");
    for( i = 0; i < 8; i++) {
      Serial.print("0x");
      if (addr[i] < 16) {
        Serial.print('0');
      }
      Serial.print(addr[i], HEX);
      if (i < 7) {
        Serial.print(", ");
      }
    }
    if ( OneWire::crc8( addr, 7) != addr[7]) {
        Serial.print("CRC is not valid.\n");
        return;
    }
  }
  Serial.print("\n\r\n\rComplete.\r\n");
  oneWire.reset_search();
  return;
}

void loop(void) {
  // Nothing here
}
To use this on the D1 Mini, you'd change the int inPin = 14; line to be compatible with the D6 assignment from @Thorrak's board. I think that would be 12. Someone should check me on that. Then you'd also comment out the line in void listOneWire() which says pinMode(inPin, INPUT); (I don't think that needs to be specified with the ESP8266). If you monitor the serial port when this starts up you will see a line representing the OneWire address of each connected sensor (only one shown here):
Code:
09:27:30.378 -> Looking for 1-Wire devices.
09:27:30.378 ->
09:27:30.378 -> Found '1-Wire' device with address:
09:27:30.424 -> 0x28, 0xAA, 0x39, 0xBD, 0x37, 0x14, 0x01, 0xDB
09:27:30.471 ->
09:27:30.471 -> Complete.
The idea here being using a very simple setup to see if the physical/electrical configuration will allow you to connect more than two sensors. If this proves out then there's a software issue. If not, there's a hardware/electrical issue.
I was actually able to find the address of each sensor by plugging each one in and writing each down. They are all different. However thanks for taking the time to think this through in your last post.
I tried with the LCD unplugged including the relay board and nothing.
I replaced the controller PCB with another one I finished up today. No luck, also replaced esp board and still no luck. I have ordered a new 5 volt power supply, short of starting over from scratch I'm lost on what could be wrong.. but I really do think the PSU is damaged, probably because of the accidental short I did last week checking that AC main power switch. I'm also going to order new sensors and solder up new connectors just rule them out. I guess I am rebuilding it!!
I'll keep you guys posted.
 
I'm wondering if maybe a couple sensors have the same address? Anything is possible from China. I think the way to go would be to rule that out, and/or use a simple sketch to see if three sensors can be detected. If you are feeling froggy, you can use a sketch like this which I use on an Arduino:
Code:
#include <OneWire.h>

int inPin = 14; // Connect data to pin A0
//int inPin = 18; // Connect data to pin A4

void setup(void) {
  Serial.begin(9600);
  listOneWire();
}

void listOneWire(void) {
  byte i;
  byte present = 0;
  byte data[12];
  byte addr[8];
  pinMode(inPin, INPUT);
  OneWire oneWire(inPin);
 
  Serial.print("Looking for 1-Wire devices.\n\r");
  while(oneWire.search(addr)) {
    Serial.print("\n\rFound 1-Wire device with address:\n\r");
    for( i = 0; i < 8; i++) {
      Serial.print("0x");
      if (addr[i] < 16) {
        Serial.print('0');
      }
      Serial.print(addr[i], HEX);
      if (i < 7) {
        Serial.print(", ");
      }
    }
    if ( OneWire::crc8( addr, 7) != addr[7]) {
        Serial.print("CRC is not valid.\n");
        return;
    }
  }
  Serial.print("\n\r\n\rComplete.\r\n");
  oneWire.reset_search();
  return;
}

void loop(void) {
  // Nothing here
}
To use this on the D1 Mini, you'd change the int inPin = 14; line to be compatible with the D6 assignment from @Thorrak's board. I think that would be 12. Someone should check me on that. Then you'd also comment out the line in void listOneWire() which says pinMode(inPin, INPUT); (I don't think that needs to be specified with the ESP8266). If you monitor the serial port when this starts up you will see a line representing the OneWire address of each connected sensor (only one shown here):
Code:
09:27:30.378 -> Looking for 1-Wire devices.
09:27:30.378 ->
09:27:30.378 -> Found '1-Wire' device with address:
09:27:30.424 -> 0x28, 0xAA, 0x39, 0xBD, 0x37, 0x14, 0x01, 0xDB
09:27:30.471 ->
09:27:30.471 -> Complete.
The idea here being using a very simple setup to see if the physical/electrical configuration will allow you to connect more than two sensors. If this proves out then there's a software issue. If not, there's a hardware/electrical issue.
One additional note. When I run the debugging it returns everything passes but fails controller response...
 
Can anyone here give some advice on tuning the control constants for fermentrack. Got my first build going in beer constant mode but I'm getting alot of cycling of both beer and fridge temperature. Probe is taped to the side of a glass carboy covered with a sponge as I don't have a thermowell. Beer temp is set at 20 and reaches 19.2 and 20.1. Personally I think the heating an cooling cycles are too long but I am unfamiliar with what each control constant does. I see here alot of people that have relatively flat beer temperature lines. Any help would be appreciated.
Screenshot_20190521-074212_Chrome.jpg
Screenshot_20190521-074212_Chrome.jpg
 
I really do think the PSU is damaged, probably because of the accidental short I did last week checking that AC main power switch.
I can't think of anything else. Seems like you've ruled everything else out. It's a weird one for sure and whatever the solution is, when you find it you'll never forget it. :)

Can anyone here give some advice on tuning the control constants for fermentrack.
There's some folks who will not believe me, or argue the point, but a sensor taped to the carboy is not a good way to go. Especially with glass, you're measuring the carboy not the beer. It's better than nothing, better than just controlling the fridge, but not by much. If you were able to get a thermowell in there and watch what was happening, I think you would find two things:
  1. The beer is a much more consistent temp
  2. The beer is warmer than the outside of the carboy
Aside from a thermowell, the other thing that really helps is a fan.

I don't think any tuning is warranted here, you'd be chasing a ghost. Get a thermowell and then worry about what's really happening to your beer.
 
I was actually able to find the address of each sensor by plugging each one in and writing each down. They are all different. However thanks for taking the time to think this through in your last post.
I tried with the LCD unplugged including the relay board and nothing.
I replaced the controller PCB with another one I finished up today. No luck, also replaced esp board and still no luck. I have ordered a new 5 volt power supply, short of starting over from scratch I'm lost on what could be wrong.. but I really do think the PSU is damaged, probably because of the accidental short I did last week checking that AC main power switch. I'm also going to order new sensors and solder up new connectors just rule them out. I guess I am rebuilding it!!
I'll keep you guys posted.
I would try and flash BrewPiLess with the other PCB and a new di mini and see if it works. Might be problems with the RPI
 
fwiw, years ago when I first started running BrewPi I used a thermowelled probe in one of my 6.5g glass carboys. Later I had coded a five channel temperature logger for ds18b20 sensors and with all those channels available I could stick probes all around the inside of one of my ferm chambers to see the effects of stirring fans, different wattage heating elements, and comparing the thermowelled sensor against a heavily insulated probe strapped tight to the carboy.

What I found on that last detail is the thermowell vs strapped probe were never more than 0.5°F apart. That was all I needed to know, and as I wanted to use the second carboy cap hole for other purposes (CO2 top-pressure) I happily made the switch and have never looked back. Bonus: never have to worry about sanitizing thermowells...

Cheers!
 
Does fermentrack work with BrewpiLess. I have flashed BrewpiLess to a sonoff th16 but it seems port 23 never opens so fermentrack cannot connect.
 
I would try and flash BrewPiLess with the other PCB and a new di mini and see if it works. Might be problems with the RPI
I think I found the problem but I'm still scratching my head on this one. More troubleshooting may reveal the final problem. But I think I've narrowed it down to a broken pin on the cat5 connectors I'm using as sensor ports.
Even though I checked these already I have found that either its these wire pin connections or the cables I made that connects the sensor to the cat5 cables. I'm going to dissect each cable I made and make sure nothing is shorted or crossed.
20190522_073916.jpeg
20190522_073926.jpeg
 
OT: Any Python coders out there interested in fixing a broken program? It's a stock picking program that gets prices off of Yahoo. Yahoo monkeyed around with its software and now my program can't find daily prices. There is a program written by another person that can get the daily prices but I don't possess the brain power to merge them together. Send me a message if can help as not to clutter up this thread.
Thanks
 
Is there a reason when I go to edit one of my controllers names or logging time it wont change and says "there already is a controller with that name"?

Also can i access the fermentrack server via a ddns i have?
 
Last edited:
I can't speak to your first question, but I've set up DDNS for my Fermentrack server. The default port is 80 so I've just set up port forwarding on my router (where I have my DDNS setup).
 
hmm looks like i already have port 80 being used by the heatermeter ill need to see about changing that.
 
Are there any plans to (or can I make a request to) add any kind of notifications to the Fermentrack monitoring? Mostly thinking of emailing or pushing a notification if a temperature is too far out of range, but other things would be nice too, like gravities or when steps of a fermentation profile happen. I have an STC1000 on my kegerator, and would like to replace it with an espy connected to Fermentrack, and that's the only thing that could make it better.
 
It would be a nice feature if you have additions to the fermentor like dry hops or fruit.
 
What I found on that last detail is the thermowell vs strapped probe were never more than 0.5°F apart. That was all I needed to know, and as I wanted to use the second carboy cap hole for other purposes (CO2 top-pressure) I happily made the switch and have never looked back. Bonus: never have to worry about sanitizing thermowells...
The detail there is where you say "heavily insulated." I've seen some pretty sketchy "insulation" jobs, so I tell people to use a thermowell. If they have that I know there's no room for interpretation of anything else. In other words, you tested YOUR idea of insulation, not everyone's. :)
 
Absolutely. Instead of Fridge Constant or Beer Constant, choose Beer Profile. Day 0 is your starting temp and day x is your ramped up (or down) temp. Fermentrack will then spread the ramp up evenly over that time period.

For example, if you want to start at 65 degrees and then slowly ramp up to 70 over a week, day 0 would be 65 and day 7 would be 70. Fermentrack would then raise in small increments to get to that point.

You can do any number of variations. For example, day 0 at 65, day 3 at 65, day 7 at 70. It would hold steady at 65 for 3 days and then slowly ramp up to 70 over 4 days.

I often do a beer that is very small and predictable. It always ferments out in a couple of days, but I let it go for 4, then ramp up to finish it out, then cold crash it rapidly. My profile looks like day 0 64, day 4 64, day 7 68, day 12 68, day 12.1 38. In that manner, on day 12, it tries to cool as fast as my refrigerator will allow.
I like the fact that you are sharing your temperature profile. However, if would be nice to have a thread with others posting their profiles. I understand that some beers, such as Belgians, need a temperature in the upper end, 75 -80 F at the end of fermentation, but it's that period before-hand 0 - 7 that I don't know much about. I know most Ales, need to hit about 68 on day 7 and hold for a few days, then crash. But what about other kinds of Ales? Stout? Porter? But again thanks for sharing!
 
The detail there is where you say "heavily insulated." I've seen some pretty sketchy "insulation" jobs, so I tell people to use a thermowell. If they have that I know there's no room for interpretation of anything else. In other words, you tested YOUR idea of insulation, not everyone's. :)

Missed this response.

All anecdotal testimonials come with conditions, stated or otherwise. In this case, the conditions are to maximize thermal contact and minimize external influence. Not exactly a space shuttle launch wrt complexity.

To that end I make sure to pin the probe vertically under an inch thick closed cell foam pad roughly 5 inches on a side. I use the exact same setup on kegs in my conditioning fridge and in my keezer, and you've likely see the temperature plots that show how little influence the ambient temperature has.

Now, people that use wadded paper towels, a rag...or freeze packs (where the hell did that idea even come from? :drunk:)... aren't going to see the same results. That's on them, not the technique...

Cheers!
 
I think I found the problem but I'm still scratching my head on this one. More troubleshooting may reveal the final problem. But I think I've narrowed it down to a broken pin on the cat5 connectors I'm using as sensor ports.
Even though I checked these already I have found that either its these wire pin connections or the cables I made that connects the sensor to the cat5 cables. I'm going to dissect each cable I made and make sure nothing is shorted or crossed. View attachment 627822View attachment 627823
Ok
I traced the issue down to one of the ethernet ports pins. It turns out the pin for the one wire was the pin that was not making consistant contact on the port to the left. I was only able to get all sensors to work on the ethernet ports by pushing in hard on the defective port and holding it there with tape. So I swapped everything out!
So I made all new connections with these handy microphone connectors I got from China years ago. And I fixed the issue. I now have 3 sensors all running fine. Now it's time to put this whole thing to the test.
20190530_130643.jpeg
20190530_130705.jpeg
 
fwiw, I use "TinyXLR" connectors (next size smaller from your (MiniXLRs) for all of my probes. Same concept, tinier footprint.
I never got the affinity for RJ45s, they're an intrinsically weak solution...

Cheers!
 
FermenThor.JPG
Hi All,

Having trouble installing where I get an error that it cannot connect to the internet? Any thoughts / suggestions?

Thanks in advance!

Thor
 
Last edited:
Missed this response.

All anecdotal testimonials come with conditions, stated or otherwise. In this case, the conditions are to maximize thermal contact and minimize external influence. Not exactly a space shuttle launch wrt complexity.
I don't think you and I are at loggerheads at all here - when you say you have it "heavily insulated" I believe you. When someone with whom I am not familiar says "I insulated my probe" but they are still obviously having temp control issues, I recommend a thermometer because that's nearly foolproof. Notice I say "nearly." :)

Folks come at this project with little experience and it's just a lot of variables for them to wrangle.
 
Hi All,

Having trouble installing where I get an error that it cannot connect to the internet? Any thoughts / suggestions?

Thanks in advance!

Thor
Any thoughts? I can ping google.com and the likes but no luck when I try to ping github? My google-ing isnt turning up anything. Anyone else experienced this sort of problem?

Cheers

Thor
 
Weird, if one can ping google.com successfully that indicates at least a rudimentary DNS service is functioning. How github.com isn't found is a bit baffling...
 
Weird, if one can ping google.com successfully that indicates at least a rudimentary DNS service is functioning. How github.com isn't found is a bit baffling...
I just went through and installed Brewpiremix without a hitch..... then uninstalled it and tried installing Fermentrack with same problemo

Nice setup!!!
 
If I understand correctly Lee's "Remix" is sourced from his site - I don't think it touches github (though that could be an underlying thing that I can't see). So there still seems to be something weird about hooking up with github...
 
Wow. That might 'splain something ;)
What are you using for DNS servers on your router?
Try including 8.8.8.8 in your DNS server list (I have that one on top of my stack)...

Cheers!

[edit] fwiw, when I ping github.com (18ms response. Not too shabby! :D) DNS says the IPV4 address is 192.30.253.113. Not sure if that's significant or not...
 
Thanks! Will start looking into how to go about doing that.

[edit] so apparently editing my DNS isnt possible with my internet provider supplied router.....
 
Last edited:
I just went through and installed Brewpiremix without a hitch..... then uninstalled it and tried installing Fermentrack with same problemo
What I see is that your IPv4 is not working. DNS is fine, you're getting the address to GitHub but it's a v4 address while Google is providing a v6 address. Try the same from a command line on another computer on your network and see what results you get. That will tell you if it's your Pi or your network.

If I understand correctly Lee's "Remix" is sourced from his site - I don't think it touches github (though that could be an underlying thing that I can't see). So there still seems to be something weird about hooking up with github...
No, we're both on GitHub. We both use a 30x redirect to provide an easy name to remember for the bootstrap script.

The difference that allows my scripts to work and @Thorrak's fails is likely because he's trying a ping and I'm doing a wget to test the network.
 
Sorry for the radio silence on most things from my end over the past few weeks. Had a bunch of (mostly good) things going on that have kept me away from brewing & related projects, but hoping to start getting things wrapped up & be able to get back into it soon!

Does fermentrack work with BrewpiLess. I have flashed BrewpiLess to a sonoff th16 but it seems port 23 never opens so fermentrack cannot connect.

Not in the way that you're thinking. BrewPiLess is intended to be entirely standalone (hence the "less" bit) and as such doesn't support connections from BrewPi-script which means that it does not integrate with Fermentrack.

That said, Fermentrack does support flashing the BrewPiLess firmware even though it doesn't support the firmware natively in the app. It's all about options!


Are there any plans to (or can I make a request to) add any kind of notifications to the Fermentrack monitoring? Mostly thinking of emailing or pushing a notification if a temperature is too far out of range, but other things would be nice too, like gravities or when steps of a fermentation profile happen.

You can always request a feature - just throw an issue up on GitHub! ;)

Eventually I'd like to make a standalone service that Fermentrack can integrate with that can handle things like notifications (push to phone, email, etc.) but sending notifications from a home-hosted Raspberry Pi tends to be problematic. Many ISPs have security features set up to prevent things like spammers using a Raspberry Pi to fire off quantities of spam - but these also prevent legitimate things like sending a "temperature out of bounds" alert.


I like the fact that you are sharing your temperature profile. However, if would be nice to have a thread with others posting their profiles. I understand that some beers, such as Belgians, need a temperature in the upper end, 75 -80 F at the end of fermentation, but it's that period before-hand 0 - 7 that I don't know much about. I know most Ales, need to hit about 68 on day 7 and hold for a few days, then crash. But what about other kinds of Ales? Stout? Porter? But again thanks for sharing!

Fermentrack supports sharing temperature profiles via the "importable" profile option at the bottom of the profile page. As an example, here's the one I used for the last beer I brewed (though I don't have any reason to believe this is a good profile - just the one I happened to use!):

====================================
| Basic Ferm |
| Standard Profile |
====================================
| 0s | 68.00 F |
| 3d12h | 68.00 F |
| 4d | 72.00 F |
| 6d | 72.00 F |
| 6d12h | 66.00 F |
| 10d | 66.00 F |
| 13d | 36.00 F |
| 14d | 36.00 F |
====================================



That faceplate. I'm drooling!


The difference that allows my scripts to work and @Thorrak's fails is likely because he's trying a ping and I'm doing a wget to test the network.

I should probably switch to testing that way! It's a much better test, as it's testing what actually needs to work. It's not like Fermentrack ever needs to actually ping anything!
 
Got a question how are you heating? I have a heating pad at the bottom of my chamber but I have not tested it yet. Thinking of a brew belt but I'm worried that it won't work well enough.
I have ceramic heat bulbs in cheap ceramic bases behind the small fans seen at the bottom of both fridges. Iirc they are 40watt bulbs which is plenty...

Cheers!
 
Looks like I am not the only one with this problemo... https://github.com/thorrak/fermentrack/issues/368

Yes cannot ping github from other computers or if I use a 4G mobile hotspot.

Tried the manual install and came up with errors whilst trying to apt-get upgrade
Regarding your nginx error: I'm guessing you tried to follow the old instructions to install BrewPi (which sadly no longer work - I just updated the wiki too) and decided to try Fermentrack? If so, you have Apache installed. You have two easy options (there are plenty of more difficult ones):
  1. Re-flash your SD card and try again
  2. Run the uninstaller I made and try (either BrewPi or Fermentrack) again. To run the uninstaller, use the following command:
Code:
curl -L devuninstall.brewpiremix.com | sudo bash
For the ping error, I submitted a pull request on @Thorrak's GitHub for this. This is why I went at it a little differently for BrewPi Remix.
 
Last edited:
This is hopefully not much of a deviation but having found this thread again I'm hoping maybe someone can shed some light into this.

I used to compile John's firmware using vscode & Platformio but my env got trashed and I had to recently rebuild. However now upon rebuilding, I can compile John's .11 branch and upload the firmware bin to the esp8266, but the LCD output now looks like the following:

Code:
 M BC B °CR °CIi 2

Odd thing is: If I upload John's v10 or v11 serial bin, it works fine. Any ideas? this is really strange

I get that also via the serial command output if I use 'screen' and using the 'l' command.

Any ideas at all welcome - pulling my hair out and the brewpi code is a nightmare to debug mostly :(
 
Last edited:
I used to compile John's firmware using vscode & Platformio but my env got trashed and I had to recently rebuild. However now upon rebuilding, I can compile John's .11 branch and upload the firmware bin to the esp8266, but the LCD output now looks like the following:
Just outta curiosity: why are you compiling yourself? Is there something that you need to change in order to make it work?

Are you possibly working on a DBCS system? Something other than UTF-8?
 
Just outta curiosity: why are you compiling yourself? Is there something that you need to change in order to make it work?

Are you possibly working on a DBCS system? Something other than UTF-8?

I was running this in a custom set up with links into my home auto system etc . everything should be UTF-8 I believe but I haven't change anything default-wise in Platformio so I assume pretty much out of the box char set wise
 
Well, I'm not sure exactly then. Seems like a character set issue but not if you did not change it.

You might try to compile it without any changes first to make sure that works - that will rule out/in your home setup and/or changes you are making.
 
Yep I get the same with just using John's source.

My compiled Thorrak .10 source (ie no changes made):
L:["M O ","B �C","F �C","Ii 0 "]
N:{"v":"0.2.4","n":0,"c":"00000000","s":0,"y":0,"b":"e","l":"3"}

Thorrak compiled Bin file from Github:

L:["Mode Off ","Beer --.- 20.0 �C","Fridge --.- 20.0 �C","Idling for 00m02"]
N:{"v":"0.2.4","n":0,"c":"00000000","s":0,"y":0,"b":"e","l":"3"}


Well, I'm not sure exactly then. Seems like a character set issue but not if you did not change it.

You might try to compile it without any changes first to make sure that works - that will rule out/in your home setup and/or changes you are making.
 

Latest posts

Back
Top