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.
A couple basic questions about scripts:
  • Is it possible to have BC start up with no scripts running, then use a device element (i.e. a button on the workspace) to start a brewing script?
  • Can BC be configured to open with the script window always closed by default and the workspace locked by default? Right now BC opens unlocked and in the same configuration that it was last closed (i.e. if I leave the script window open when I close the app, the next time it starts up, the script window is open).

For your first question, probably not, as buttons are pretty much used via script alone. Getting around it is pretty easy though, just have a "button control" script launch on startup, and have it call the appropriate scripts when the button is pressed.

Second question, I'm not really sure (I leave BC running 24/7), but I don't see any options to do so in the UI or options in the settings file.
 
No, the baud rate should be 192k. Not sure it will matter but try that.
I tried connecting on my laptop (different PC to eliminate this as a variable).I used 192k baud rate (this was by default) in termite and it didn't help. I've since left the brewery, maybe I need to change baud rate in device manager as well. I'll double check, modify and report back. Anything else I can look into?
 
For your first question, probably not, as buttons are pretty much used via script alone. Getting around it is pretty easy though, just have a "button control" script launch on startup, and have it call the appropriate scripts when the button is pressed.

Second question, I'm not really sure (I leave BC running 24/7), but I don't see any options to do so in the UI or options in the settings file.

This is correct. We will fix the lock and script window to be persistent across restarts.
 
I tried connecting on my laptop (different PC to eliminate this as a variable).I used 192k baud rate (this was by default) in termite and it didn't help. I've since left the brewery, maybe I need to change baud rate in device manager as well. I'll double check, modify and report back. Anything else I can look into?

Did the firmware install correctly? Did you try the serial only one first?
 
You don't connect with termite to install the firmware. You just install it from the tool. Does it install correctly? If not, you have a problem with the computer/USB/drivers. When you open Device Manager, do you see the MEGA there?

1596084581657.png
 
Not sure what you are trying to do, but if you want a message to display in the output, you need to do a print command.

So:
a = " message"
print a
 
Not sure what you are trying to do, but if you want a message to display in the output, you need to do a print command.

So:
a = " message"
print a

Sorry, it was a little out of context. I was trying to get a "message" to blink on and off in the workspace by looping and I mistakenly tried to assign a value to a sleep command (sleep = 1000). The script stalled and did not give an error message as to why, but it also shows that the script is still running. Not sure if this should generate an error message or if BC was trying to assign a value to the sleep command.
 
Ah, I see now... sorry, I didn't look that closely.

I am able to recreate that, looks like an interpreter bug. I tried it with = and == as well as a script variable in place of a value and all result in the same stalled script without an error. Good catch.
 
Ah, I see now... sorry, I didn't look that closely.

I am able to recreate that, looks like an interpreter bug. I tried it with = and == as well as a script variable in place of a value and all result in the same stalled script without an error. Good catch.

Thanks for confirming; another one for the "fix it" list.....
 
I’m not sure it’s a bug... the interpreter is sleeping indefinitely on that line which is sees as ‘= 1000’. It definitely doesn’t know what to do with it, and should issue an error, but It won’t always catch all syntax issues, and aggressive checking will slow it down a little.

We’ll put it on the list tho!
 
Been reading through the many pages and having some trouble finding an answer to a question I’m working through. Did anyone figure out how to control an RC servo motor to BC with the Mega PWM ports? I see some discussion and hypothesis in Sept ‘19 but not a final “this worked” resolution.
 
I see it goes all the way to 45L. The Wiring Diagram is 45E. I am starting to get some interfaces and add an ESP32. I put on 45L. I am only using for a Tilt so all the upgrades will hardly effect me, at least that is my thinking. I did discover that Y and y are different in Termite. Y=N!
 
Been reading through the many pages and having some trouble finding an answer to a question I’m working through. Did anyone figure out how to control an RC servo motor to BC with the Mega PWM ports? I see some discussion and hypothesis in Sept ‘19 but not a final “this worked” resolution.

No, this isn’t implemented. What is your application? Maybe we can find a solution and if not add it into the FW.
 
No, this isn’t implemented. What is your application? Maybe we can find a solution and if not add it into the FW.
Application is for a hop dispenser. I’ve got the servo motor sitting in a 3d printed turntable with hole and ramp. Hooked up via an xlr cable to the mega assembly with wifi board from the BC site. The power is on a seperate power supply, signal line is currently on pin 9. The motor is a digital sunfounder rc motor, operating on a 20mSec/50Hz frequency with pulse range of 1-2 mSec, and dead band of 5 microSec. I see a lot of resources that the arduinos can be hooked up direct to a servo, but operating from BC, it seems this is stuck between the frequencies of the PWM function and the duty cycle max speed.
B306AA9F-2F62-40FA-A76C-EF2FFF562432.jpeg
 
Immediate option if you are good with Arduino: use one to handle the servo, then either communicate with another BC based interface via digital signals (one signal to do one thing, another for another thing, etc.) or use the communication back-channel sketch @crane created to communicate directly with BruControl.

Otherwise, please wait for a bit while we look at what it would take to integrate servo control as a discreet element.
 
Immediate option if you are good with Arduino: use one to handle the servo, then either communicate with another BC based interface via digital signals (one signal to do one thing, another for another thing, etc.) or use the communication back-channel sketch @crane created to communicate directly with BruControl.

Otherwise, please wait for a bit while we look at what it would take to integrate servo control as a discreet element.
Could you just not drive a Linear DC Actuator with a Digital Out and Relay (or UM-1) to drop hops? It would seem On/Off could accomplish this. Years ago I played with a soap door from a Dishwasher but never finished it as there were not enough Outs an a BCS to use one for this. A small DC Linear Actuator could open a door or push the hops off a ledge.
 
I forgot how cool this little banger is! ESP32 based, built-in battery, built-in screen, built-in buttons, I/O breakout pins... Cool!

Just included the firmware for it in the package.View attachment 692017

Cool! Is the speaker enabled? Imagining this one would be great for alarm presentation and acknowledging
 
Immediate option if you are good with Arduino: use one to handle the servo, then either communicate with another BC based interface via digital signals (one signal to do one thing, another for another thing, etc.) or use the communication back-channel sketch @crane created to communicate directly with BruControl.

Otherwise, please wait for a bit while we look at what it would take to integrate servo control as a discreet element.
Makes sense, thank you! New to arduino with this project but I think I get the gist. Local program on the secondary board that a signal to pin X, go to position A, pin Y go to position B, etc. then hook up X, Y, and Z to digital out pins on the BC?
 
POST.png


I have three RP-3 modules with (4) Adafruit 3328 in each for a total of (12) consumed by ports 38 thru 49. All ports have been tested and the thermometer works (Tho Port 46 and 48 are about -5 degrees off from the others). Cant figure out why Pin 46 and 48 are giving 1720 readings in the disconnected state instead of -412. I have an initial reading of 31681 with these two ports and zero with all others.

Edit: the 1720 (31682 initial) intermittently jumps around amongst the (4) ports but only on this one rp3 board, the other two are stable.
 
Last edited:
Hmmm... First, make sure your wiring is sound, short (inches), and all grounded properly to the same point.

1. When you disable any or all of the -412's, do the 1720's change?
2. Try moving some of the amplifiers around and see what happens (do this with power off of course). Since they are addressed by physical position (CS pin), the application is none the wiser about which amplifier is where.

Report back and we will go from there.
 
Hey question for Tilt users... I know we have had an issue for a while with "mis-reads" causing ugly fermentation graphs. What we think is happening is the Bluetooth polling happens asynchronously and causes a conflict with Wi-Fi. We are working on fixing this in the firmware... but I am wondering if anyone has a recent graph pic they can post, and more importantly, if they have a log file they can send us (email info at brucontrol dot com). Note that v1.1 Build 9 users will not have diagnostic logs on by default. Thanks!
 
Pulled a graph of the raw readings from the past 18 hours...
Screenshot from 2020-08-02 12-25-20.png
The 6:50am drop was logged in my wireless controller as an AP move so it can be disregarded, but the 9pm drop I had no reference in the controller that the connection dropped. BC controller logs show a disconnect with a reconnect 1 second later.
 
OK, ESP32 firmware 45N is now included in the package on the website. What we saw in testing is that default values (-0.001 SG and -1 temp) are being sent by the interface on startup AND after sometimes after an interface disconnect. The FW will now send non-values instead, which will not be graphed. Not sure this is the right long term solution, but it's worth evaluating. Anyone fermenting with Tilt willing to update their FW... please let me know how this works for you.
 
Back
Top