BruControl: Brewery control & automation software

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.
The way I scripted the totalizer allows for both automated as well as manual control. I have the script set to auto start so it runs all the time. I have a global to display the total volume and a switch to enable/disable & reset the totalizer. The script monitors the switch so you can enable/disable that either manually or from another script.

Edit: I have a couple dozen or so "utility" scripts like this that run in the background all the time. Most monitor a switch position to enable/disable or switch modes of something. Everything can be controlled manually as well as through the brew day automation script.

volume_totalizer_gui.PNG


volume_totalizer.PNG
 
Last edited:
Indeed, auto starting some utility scripts that run some core things like a totalizer is something to consider. A big plus for BC is its flexibility with many different ways to accomplish the same thing.
 
I separate and conquer with scripts as well. I do not use the Autostart but do start (and stop Scripts from other scripts. When I write the Fermentor scripts those will likely Autostart.

I have one main utility script that checks states of switches and other things with lots of if statements. It checks several switches and has about 500 lines, but goes through them so fast it is almost instantaneous.
 
Peek at the Profile Element. Was going to release this (Build 11) but have a bug to remedy. Think of this as an easy way to do mash steps or fermentation profiles, or any "if this value, then that value" type of linking. Naturally this can be scripted, but this will make it easy to do many points, and can operate in both directions (like a lookup table).

1603228542834.png
 
Not tryna push teasers, but here’s another!

Working on enabling the Automation Direct ProOpen logic controller series. Will provide an additional hardware pathway for industrial type components.
View attachment 703364
Keep us updated on this! Wouldn't mind having an industrial grade controller at the brewery.
 
Looks nice! I would hope that the RTD inputs would be less fussy and more reliable than the current solution. And being able to support all of those Production1000 modules would be great.
 
I'd like to
Looks nice! I would hope that the RTD inputs would be less fussy and more reliable than the current solution. And being able to support all of those Production1000 modules would be great.
I'd like to take a stacked approach to the three RP-3 boards. Anyone know of a standoff compatible with the Din clips?
 
I have started my panel build and I have the high voltage panel built but waiting on a few parts. I am putting the low voltage in the middle compartment with the microcontrollers and power supplies on top and the power distribution at the bottom of the panel. There is a sheet metal wall between the two panels so I hope that his will help with any noise getting to the microcontroller or sensors. Having never built one of these before, I wanted to make sure my assumptions were correct and that this design was solid. The third top compartment will house my PC and 24" touch screen.

panelbuild101.jpg
 
OK, time to deliver on at least one teaser... Here is beta release of iSpindel firmware for BruControl. Note: this firmware is for the iSpindel device, NOT a BruControl interface.

Download Package: https://brucontrol.com/wp-content/uploads/2020/10/iSpindel.zip
Product Note: https://brucontrol.com/wp-content/u...uct-Note-iSpindel-Firmware-for-BruControl.pdf

We will post the firmware to the iSpindel github with a pull request, but in the meantime, please use this compiled version.

Please let us know if you have any questions or concerns! Good luck!
 
OK, time to deliver on at least one teaser... Here is beta release of iSpindel firmware for BruControl. Note: this firmware is for the iSpindel device, NOT a BruControl interface.

Download Package: https://brucontrol.com/wp-content/uploads/2020/10/iSpindel.zip
Product Note: https://brucontrol.com/wp-content/u...uct-Note-iSpindel-Firmware-for-BruControl.pdf

We will post the firmware to the iSpindel github with a pull request, but in the meantime, please use this compiled version.

Please let us know if you have any questions or concerns! Good luck!

I will be testing next days. It's getting kind a cold here so possibly no brewing for "balcony" brewer for next 4 months :-(((((.
(Need a license update - > ordered)

thanks again for your effort. It's surely an xmass gift for me :-D
 
Last edited:
@BrunDog .

I am almost there. Sorry it seems I am just inpatient , my iSpindel is getting 404 from the brucontrol (Version 1.1 build 9) server so probably I have it wrongly configured?
The way I enabled data exchange is:
1) went to data exchange
2) click reserve
3) enable data exchange (Service running green).

Please check, in the mean time I am opening PDF for data exchange... :)
communication seems to be enabeld (fw disabled) and i can reach port 8000.

Thanks

log from iSpindel:

14:59:45.589 -> {"Name":"iSpindel000","Token":"","Sleep":5,"Server":"192.168.168.40","API":13,"Port":8000,"Channel":0,"URI":"/global","DB":"ispindel","Username":"","Password":"","Job":"ispindel","Instance":"000","Vfact":191.8,"TS":0,"OWpin":12,"POLY":"0.9870909676318811+0.000243751385439817*tilt+0.00001880720600823502*tilt*tilt","SSID":"tesla2","PSK":"XXXXXXXXXXXX","Offset":[0,0,0,0,0,0]}
14:59:45.790 -> offsets not available
14:59:45.790 -> Boot-Mode: Deep-Sleep Wake


14:59:46.587 -> calling BruControl
14:59:46.587 -> [{"Name":"iSpindel000_g","Value":1.110334},{"Name":"iSpindel000_t","Value":32.8125},{"Name":"iSpindel000_b","Value":4.092805},{"Name":"iSpindel000_a","Value":74.72895}]HTTPAPI: putting
14:59:46.615 -> code: 404



Brucontrol Config (192.168.168.40):
1603807401736.png


1603807728563.png


1603807745253.png



1603807828046.png
 

Attachments

  • 1603807427257.png
    1603807427257.png
    434.3 KB · Views: 12
Based on your screenshots, it looks like your BC server (192.168.168.40) and iSpindel (192.168.4.1?) are in different subnets. If that is the case, do you have a route between them?
 
Based on your screenshots, it looks like your BC server (192.168.168.40) and iSpindel (192.168.4.1?) are in different subnets. If that is the case, do you have a route between them?

thanks for help.
That's normal for iSpindel when it is in config mode. Then it's acting as an AP with an address 192.168.4.1, where you would connect with browser to get your configuration done (as in PDF). After config is done and saved, iSpindel reboots and behaves like a client.

Anyways connectivity works for sure if I get HTTP 404, Not Found, means server returned that error. it's like /global doesn't exist.
Otherwise it would be something like "timeout"....
 
@RiverCityBrewer... solid guidance once again!! I should just ask people to check with you on any issues first!! Funny thing is I researched the answer and was about to post it, then when I scrolled down I realized you already did!

Anyway, the 404 error tells you that BC responded but the resource requested (kinda like a "web page") does not exist. This is a hint that the request was not quite right.

Anyway, glad you got it working! Please note that unlike the Tilt, a halted communication will not be reflected natively. This is because the Global will hold the last value indefinitely - so if it does not get updated, it will stay the same forever. This may give you a false sense at quick glance that everything is OK. Therefore, I'd suggest some type of "watchdog" script to make sure the data is changing. Just watch all the values and make sure they update within a time period, then if not, issue an alarm or something else to inform you.
 
@RiverCityBrewer... solid guidance once again!! I should just ask people to check with you on any issues first!! Funny thing is I researched the answer and was about to post it, then when I scrolled down I realized you already did!

Anyway, the 404 error tells you that BC responded but the resource requested (kinda like a "web page") does not exist. This is a hint that the request was not quite right.

Anyway, glad you got it working! Please note that unlike the Tilt, a halted communication will not be reflected natively. This is because the Global will hold the last value indefinitely - so if it does not get updated, it will stay the same forever. This may give you a false sense at quick glance that everything is OK. Therefore, I'd suggest some type of "watchdog" script to make sure the data is changing. Just watch all the values and make sure they update within a time period, then if not, issue an alarm or something else to inform you.
thx.

Would it be possible to use polynomial on the side of brucontrol, instead of using it from the firmware?
Reason I am asking is that in the firmware you can have only one formula, just SG or just Plato. Updating it, not a pain but trough BC much easier. Also easier to use tilt for any calculations.

Would the following method work:
- read in a script global tilt value (Ispindel_a) , calculate SG (or take in the same script same value (Ispindel_a) and calculate plato. :))
- update another global value (from the script) for SGcurrent.
- Calculate in the script alcohol content -> 3rd value. (Max recorded gravity/OG – SGcurrent) x 131.25 = ABV %
- Use all those together SGcurrent + Fermentation to plot fermentation graph in real time.
And showing "ABV%" somewhere there too.

or you/anyone else have maybe better idea?
 
Last edited:
thx.

Would it be possible to use polynomial on the side of brucontrol, instead of using it from the firmware?
Reason I am asking is that in the firmware you can have only one formula, just SG or just Plato. Updating it, not a pain but trough BC much easier. Also easier to use tilt for any calculations.

Would the following method work:
- read in a script global tilt value (Ispindel_a) , calculate SG (or take in the same script same value (Ispindel_a) and calculate plato. :))
- update another global value (from the script) for SGcurrent.
- Calculate in the script alcohol content -> 3rd value. (Max recorded gravity/OG – SGcurrent) x 131.25 = ABV %
- Use all those together SGcurrent + Fermentation to plot fermentation graph in real time.
And showing "ABV%" somewhere there too.

or you/anyone else have maybe better idea?

Yep, all those things can be scripted, just as you describe. I posted my script a while ago somewhere in this thread for doing below.

1603819543455.png
 
Yes, like @RiverCityBrewer stated. You can do the math as needed.

You could also create a lookup table in the calibrations which could give you very accurate results. In fact, you could generate the data from the polynomial as a start point, enter those in the lookup table, then adjust it with future calibration comparisons.

Note: Technically, lookup calibrations exist for BC Device Elements, not Globals, but we are adding the Profile Element, which is functionally identical in this case.
 
Not tryna push teasers, but here’s another!

Working on enabling the Automation Direct ProOpen logic controller series. Will provide an additional hardware pathway for industrial type components.
View attachment 703364

I like this option! Definitely getting into my neck of the woods. Let me know if you run into any issues on the industrial component side!
 
Yes, like @RiverCityBrewer stated. You can do the math as needed.

You could also create a lookup table in the calibrations which could give you very accurate results. In fact, you could generate the data from the polynomial as a start point, enter those in the lookup table, then adjust it with future calibration comparisons.

Note: Technically, lookup calibrations exist for BC Device Elements, not Globals, but we are adding the Profile Element, which is functionally identical in this case.

Hi there,

I tested a bit, all seems to be ok. Thanks again to @RiverCityBrewer and you of course.

I really don't want to sound like a spoiled kid :) so if possible and make sense great otherwise please feel free to ignore me.

One thing in Implementation came to my attention, because I had it.
Would it be possible to pass also the time and date when passing the other values? Or is there a way to know from Brucontrol?
It would be fantastic to have such message "Last Data Received On: 10:12:25 10.29.2020".

In my current setup Ii found that small feature quite useful (iSpindel +Fermentrack), however I am unsure if that was sent by the iSpindel or was calculated by the server). Idea behind is to have an additional check point if communication is ok, since it is fairly infrequent - every 15 mins.

thank you for considering it.
 
Last edited:
Are there security considerations when opening data exchange to the internet, for limited amount of time? (port 8000)

I am asking because I am uploading my fermentation data trough mobile access point, from my cellar where Fermenters are.
My bc is on another location. I could consider an VPN tunnel if it's absolute must.
 
Hi there,

I tested a bit, all seems to be ok. Thanks again to @RiverCityBrewer and you of course.

I really don't want to sound like a spoiled kid :) so if possible and make sense great otherwise please feel free to ignore me.

One thing in Implementation came to my attention, because I had it.
Would it be possible to pass also the time and date when passing the other values? Or is there a way to know from Brucontrol?
It would be fantastic to have such message "Last Data Received On: 10:12:25 10.29.2020".

In my current setup Ii found that small feature quite useful (iSpindel +Fermentrack), however I am unsure if that was sent by the iSpindel or was calculated by the server). Idea behind is to have an additional check point if communication is ok, since it is fairly infrequent - every 15 mins.

thank you for considering it.

Right now there is no time of data submitted from the iSpindel so it can’t come from there. BC doesn’t currently have a way to report new packet receipt times to the user, so the only way I can think about is what I noted above. Use a script to keep an eye on data changes and then do something if the data does not change for a while.
 
Are there security considerations when opening data exchange to the internet, for limited amount of time? (port 8000)

I am asking because I am uploading my fermentation data trough mobile access point, from my cellar where Fermenters are.
My bc is on another location. I could consider an VPN tunnel if it's absolute must.

No encryption on BC’s side. If you open that port through your WAN (router,) then it’s exposed. Yes a VPN would add that security.
 
FYI, I did an over-the-air firmware update with a 6.3.1 firmware iSpindel I had already programmed. I used the brucontrol firmware from the download above. Everything seemed to go as it was supposed to and I could select brucontrol as the service type and fill in all the necessary fields. When I hit "save" I got the appropriate screen to wait 10 seconds. I waited for 15 minutes and got a read out in Brucontrol in the global elements setup as described in the document. So if you have existing iSpindels and want to convert them to Brucontrol, this is perhaps an easier alternative path.
 
FYI, I did an over-the-air firmware update with a 6.3.1 firmware iSpindel I had already programmed. I used the brucontrol firmware from the download above. Everything seemed to go as it was supposed to and I could select brucontrol as the service type and fill in all the necessary fields. When I hit "save" I got the appropriate screen to wait 10 seconds. I waited for 15 minutes and got a read out in Brucontrol in the global elements setup as described in the document. So if you have existing iSpindels and want to convert them to Brucontrol, this is perhaps an easier alternative path.
Searched the net but could not find any data for how an ispindel would work in a jacketed fermenter. It seems that the connection is WiFi so is that an issue. I used a Tilt and with the extra external Bluetooth device, I could read it 30 foot away in another room. (On the ESP32). Obviously the ispindel is less $$ but I plan all my fermenters to be jacketed
 
Usually wifi is much better than Bluetooth in transmitting through stainless. I have spike and ss brewtech fermentors and have had no problems. Having said that, I have a wifi AP in the same area. So it will depend on the strength of your wifi signal as to the reliability. Hope that helps.
 
WiFi transmits with more power (and uses more power as a result). This is the primary reason the iSpindel is humungous vs. the Tilt. The iSpindel uses a huge 2500mAh battery and transmits every 15 minutes, whereas the Tilt uses CR123A (about 60% of the energy) and transmits every second. Circuit efficiency and network/message packets aside... these end up with about the same overall life per charge.
 
I have 3phase contactors in a high voltage panel, coil side is fed from a low voltage panel where the interface and driving LV relays reside. Do I need to bring the DC- wire (to the contactor) back to the low voltage panel since the positive is fed from there or can it terminate in the HV panel?
 
I have posted instructions to install BruControl on Raspberrypi 4. Admittedly, it takes a bit longer to load the large amount of data and programs than a PC would (unless you have a 3 year-old laptop with a A-12 chip like I do) but once up, It’s fast enough for brewing. I am happy enough. Maybe you will be too.
 
Back
Top