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.
Thanks BrunDog. Novice mistake.
Without deleting the PID element, just correcting the input to the correct temp probe fixed the problem so BC does not crash. Should I still delete and re-create the PID?
 
Thank you for reporting this! I was able to recreate this and we will fix it. Bottom line is that when the script window overlaps elements, it causes scroll bars to become available, then when you scroll to see those covered elements, and they are "OK'd" (no change is even necessary), the absolute X,Y position is re-used rather than the relative position.
Thanks, This has been very frustrating to me as might have many Alarms stacked on top of one another.
 
Thank you for reporting this! I was able to recreate this and we will fix it. Bottom line is that when the script window overlaps elements, it causes scroll bars to become available, then when you scroll to see those covered elements, and they are "OK'd" (no change is even necessary), the absolute X,Y position is re-used rather than the relative position.

The PID element has now completely disappeared from the visible workspace (double checked to make sure the workspace was not locked and that hidden elements were visible). I don't think it's deleted since the script still functions normally and I'm not able to create a new PID using the same output port on the interface. Is it recoverable or do I need to restore from a backup?
 
It is indeed better to run the power supply into the MEGA at a lower voltage. This is because the MEGA has a linear regulator, which is not efficient and dumps excess voltage as heat. So less voltage differential, the cooler it runs.

I doubt that will solve the intermittent issues you are having. Can you show us (or email brucontrol) pics of your panel? Perhaps we might see something.

I may be out of the woods...I brewed on Sunday without a single hiccup but here it is. I've got the 12v power supply dialed down to ~10.25v (as low as it goes). The RP-3 is powered from the 5v pin on the MEGA and the RP-3 ground is tied back to the MEGA. All the low voltage grounds are common and connected to the ground bus between the RP-3 and the relay card. The high voltage grounds are on the left and are all common with the low voltage bus through the din rail. The only thing I haven't done yet is to shorten the leads from the RTD's.

IMG_1789.jpg
 
The PID element has now completely disappeared from the visible workspace (double checked to make sure the workspace was not locked and that hidden elements were visible). I don't think it's deleted since the script still functions normally and I'm not able to create a new PID using the same output port on the interface. Is it recoverable or do I need to restore from a backup?
Please check all the workspaces to make sure it didn't move to one of them. My bet is that it is hidden behind another element. Temporarily move each one to see if its hanging out behind it.

If that doesn't work, you could try writing a script that you execute one-time to move it to a known location on the screen using the X and Y properties. Finally, if you are good with editing .XML files, you can close BC, then open your configuration (.brucfg) file in notepad+ or similar editor and manually change its location. LMK if you need more specific directions on these two.
 
I may be out of the woods...I brewed on Sunday without a single hiccup but here it is. I've got the 12v power supply dialed down to ~10.25v (as low as it goes). The RP-3 is powered from the 5v pin on the MEGA and the RP-3 ground is tied back to the MEGA. All the low voltage grounds are common and connected to the ground bus between the RP-3 and the relay card. The high voltage grounds are on the left and are all common with the low voltage bus through the din rail. The only thing I haven't done yet is to shorten the leads from the RTD's.

View attachment 689372

Good to hear! If you run into additional issues, I'd suggest replacing the communications cabling to the RTD platform with shielded cable (shield grounded back at the interface only). Ideally, the platform is close (few inches max) to the interface and separated from high voltage devices as much as possible. It doesn't look like you can move it to the top rail, but perhaps swap its position with the relay board - that would shorten the lines by a few inches and get it further away from the high voltage center rail and contactors which are inductive and generate noise too. I know re-wiring is a ton of work... so start with the shielding. You could even add wrap-around shielding like these from McMaster-Carr without re-wiring.
 
Please check all the workspaces to make sure it didn't move to one of them. My bet is that it is hidden behind another element. Temporarily move each one to see if its hanging out behind it.

Good call! I found it hidden behind another element on the same workspace. Thank you.
 
Good to hear! If you run into additional issues, I'd suggest replacing the communications cabling to the RTD platform with shielded cable (shield grounded back at the interface only)...I know re-wiring is a ton of work... so start with the shielding. You could even add wrap-around shielding like these from McMaster-Carr without re-wiring.

When you say 'communications cabling' are you referring to just the SPI bus wiring or does that include that data bus wiring (outputs 1-4) as well?
 
Another odd find...
I was making a few changes in my script and shortening the names of some of my output device elements. I have an output device which I shortened the name from "HEATER SELECT" to "HTRSEL" and changed the references to it in the script. When I ran the script I got a message saying "enabled is not a valid operator" (also "state is not a valid operator"). Checked spelling and syntax several times to make sure it was not a typo and even deleted the device and created a new device with the same properties and got the same messages. Then changed the name (again) to "HTRSW" along with all the references in the script and it ran fine, no errors. What's going on here?
 
@Piggles22 you likely have a duplicate device named HTRSEL, or the name in the box has a space in it or something that disconnects the two.

When I change a DO to the name 'HTRSEL' and run the following script, it works correctly.

Code:
[loop]
"HTRSEL" state = true
sleep 2000
"HTRSEL" state = false
sleep 2000
goto "loop"
 
@Piggles22 you likely have a duplicate device named HTRSEL, or the name in the box has a space in it or something that disconnects the two.

When I change a DO to the name 'HTRSEL' and run the following script, it works correctly.

Code:
[loop]
"HTRSEL" state = true
sleep 2000
"HTRSEL" state = false
sleep 2000
goto "loop"

Okay, found it! Another Novice bungle; I had a created a new STRING in the script called HTRSEL. I was looking for a device element in the workspace. Thanks for all your patience and help; you're a real Saint.
 
Last edited:
Sorry, I don't understand the issue you are reporting?
In Build 9, All of my Alarms are there and the wav file path is in the File 1 slot, but the radio button is set to "Default" causing the the alarm to be "Ding Dong" default sound rather than the selected file. An End User needs to go to each Alarm and set the Radio Button to "Custom" to have the Program play the custom file.
I have an Alarm Workspace with 30 Stacked Alarms, all with a unique wav file. I use "Text to Speech" to create the custom alarms for the most part. Since they are stacked, it will be a pain to do that and then re stack them. Since I can have only 3 choices of Alarm and Graphic, and the new Alias, I can likely reduce the number of Alarms to 11 or 12, or maybe even 10.

If I had a Script Command like "wavpath1" that allowed me to change the string value of Sound File 1 for the Alarm Sound, and another Script Command like "backpath1" that allowed me to change the background Image 1, it would allow me to move the alarms to my main Switchboard and get rid of my "Alarm" Workspace as I could have One or Two Alarms.

Example where I could have a single Alarm Element. It would certainly make it much easier for me.

"MyAlarm" wavpath1 = "C:\BruControl\Media\Wav\FlavorHop.wav"
"MyAlarm" backpath1 = "C:\BruControl\Media\Image\FlavorHop.jpg"
"MyAlarm" displayname = "Drop Flavor Hops"
"MyAlarm" active = True


Since I can have unlimited displaynames, I am reducing the number of Timers.


alrm is default.png
 
In Build 9, All of my Alarms are there and the wav file path is in the File 1 slot, but the radio button is set to "Default" causing the the alarm to be "Ding Dong" default sound rather than the selected file. An End User needs to go to each Alarm and set the Radio Button to "Custom" to have the Program play the custom file.
I have an Alarm Workspace with 30 Stacked Alarms, all with a unique wav file. I use "Text to Speech" to create the custom alarms for the most part. Since they are stacked, it will be a pain to do that and then re stack them. Since I can have only 3 choices of Alarm and Graphic, and the new Alias, I can likely reduce the number of Alarms to 11 or 12, or maybe even 10.

If I had a Script Command like "wavpath1" that allowed me to change the string value of Sound File 1 for the Alarm Sound, and another Script Command like "backpath1" that allowed me to change the background Image 1, it would allow me to move the alarms to my main Switchboard and get rid of my "Alarm" Workspace as I could have One or Two Alarms.

Example where I could have a single Alarm Element. It would certainly make it much easier for me.

"MyAlarm" wavpath1 = "C:\BruControl\Media\Wav\FlavorHop.wav"
"MyAlarm" backpath1 = "C:\BruControl\Media\Image\FlavorHop.jpg"
"MyAlarm" displayname = "Drop Flavor Hops"
"MyAlarm" active = True


Since I can have unlimited displaynames, I am reducing the number of Timers.


View attachment 689507

It is normal for the alarm default to be default. This is a new version which includes multiple alarm paths rather than one, so it got reset with the configuration settings. Sorry, but you would need to set each one manually.

I know you want this system to work a certain way, and we are all about flexibility, but frankly feel you are trying to use it outside the bounds of even that flexibility. 30 alarms, stacked on top of one another, or even 30 alarm sounds, is not how we planned or envision it working for most users. We added multiple alarm sounds per alarm based on your request (thank you for the suggestion). We may someday add an ability to change file names in a script command as you suggest, but for now we have other items that are priorities.

If others feel this type of handling is critical to include, we will look to move it up in priority in v1.3.
 
Might a solution that would be the most flexible involve script accessible parameters for both the input and output of the alarm? That way, you could have one alarm, with multiple ways to trigger it (as we do now), but be able to variably change the output, i.e. custom sound paths, custom text/email messages, etc.
 
A graphics bug...? You may already be aware of this...

Tried to change the appearance properties of a Button but it had no effect. I tried to apply the LED type to the Proceed button and change the On / Off colors to Green and Yellow but button in the workspace did not change after clicking on Apply or OK. I tried this with a few other Display Types with the same results.

1594865136410.png
 
How do you use CTRL F find function? I clicked and a Find Dialog shows up, but not sure what it is searching. I am hoping that there is a find and replace in the script window. Is this part of a future full screen editor talked about in post #2114?

Or do I still have to use something like Notepad ++.
 
When you use CTRL F, there are two tabs available (find and replace). CTRL F will “look” in the script where your cursor currently is located.
 
When you use CTRL F, there are two tabs available (find and replace). CTRL F will “look” in the script where your cursor currently is located.
Thanks, I don't know what I was missing except maybe the cursor was NOT in the script! It seemed to do nothing but making sure the cursor was where it belonged, it works as expected.
 
Observation on Alarms.

If you have 3 alarms (and I assume as many as you want) and you use this script:

//Alarm_Script
"MyAlarm1" active = true
sleep 10000
"MyAlarm2" active = True
sleep 10000
"MyAlarm3" active = True
sleep 10000
"MyAlarm3" active = False
sleep 10000
"MyAlarm2" active = False
sleep 10000
"MyAlarm1" active = False
stop "Alarm_Script

MyAlarm1 is active and will Loop (or Not) until MyAlarm2 Starts and
MyAlarm2 will Loop (or Not), MyAlarm1 is muted.
until MyAlarm3 Starts.
MyAlarm1 is muted and MyAlarm2 is muted when MyAlarm3 is active.
When MyAlarm3 is no longer active (active = false), MyAlarm2 starts again at the beginning,and the same with MyAlarm1 when MyAlarm2 is no longer active.

This means that you can have multiple Alarms active, but the last one activated is the one sounding.

How is that useful:

15 Minute left in Boil: both Irish Moss and Flavor Hop Drop.

You could sound the Irish Moss Alarm then the Flavor Hop Drop Alarm. The Alarm sounding is Flavor Hop Drop because it is activated last. As soon as it is turned off, the Irish Moss Alarm sounds (from the beginning).

This is great and will reduce the number of Alarms I have. I have several Alarms for different hop drops as well as 10 minute pre-warning Alarms for Hop Drops. Since I do not have to worry about an Alarm not sounding, I can reduce the logic!
 
No.

We are re-writing some of the FW to improve some efficiencies and add some future pathways. In that, we'll change the 1W protocol such that the sensor is established by address rather than index. We need to build in to BC a tool to poll the addresses on the bus, then give the user the pulldown in the device element properties.

AWESOME!!!! thank you!
 
To anybody out there who cares... There has been a great update to the raspberrypi 4 4 gig model the last couple of days by patching a driver that now allows use of all 4 USB A ports and 3 gigs of memory. A USB to ethernet adapter to the Pi and a mega connect to a AC750 travel router in the cabinet. I use RDP for the screen and sound. My whole goal over the last year or so is to be totally mobile with my rig and get the "laptop" into the control panel with a Pi using win10 and BruControl. I can say now using the Pi 4, win10 arm64, 3 gigs of memory and a 3.1 USB drive, its snappy and I'm happy. Now to test with loading Beersmith data into BruControl. Kudos to@RiverCityBrewer for his knowledge and expertise for data exchange!
 
To anybody out there who cares... There has been a great update to the raspberrypi 4 4 gig model the last couple of days by patching a driver that now allows use of all 4 USB A ports and 3 gigs of memory. A USB to ethernet adapter to the Pi and a mega connect to a AC750 travel router in the cabinet. I use RDP for the screen and sound. My whole goal over the last year or so is to be totally mobile with my rig and get the "laptop" into the control panel with a Pi using win10 and BruControl. I can say now using the Pi 4, win10 arm64, 3 gigs of memory and a 3.1 USB drive, its snappy and I'm happy. Now to test with loading Beersmith data into BruControl. Kudos to@RiverCityBrewer for his knowledge and expertise for data exchange!
Pictures / videos or it didn't happen!

Mini hardware is getting very accessible. The seeed Oddyssey, ODROID-H2, UDOO Bolt, and the upcoming Chuwi Larkbox are bringing usable mini PC hardware into the fold at low prices. I'm fixin' to get an Odyssey soon - it has an onboard SAMD21 which would have a full BruControl install on one board.

But I digress... let's see BC running on that Pi. My expectation is it will be painfully slow, but you say it's snappy so let's get a look at it.
 
To anybody out there who cares... There has been a great update to the raspberrypi 4 4 gig model the last couple of days by patching a driver that now allows use of all 4 USB A ports and 3 gigs of memory. A USB to ethernet adapter to the Pi and a mega connect to a AC750 travel router in the cabinet. I use RDP for the screen and sound. My whole goal over the last year or so is to be totally mobile with my rig and get the "laptop" into the control panel with a Pi using win10 and BruControl. I can say now using the Pi 4, win10 arm64, 3 gigs of memory and a 3.1 USB drive, its snappy and I'm happy. Now to test with loading Beersmith data into BruControl. Kudos to@RiverCityBrewer for his knowledge and expertise for data exchange!
This guy is doing some killer work with a board designed around the Raspi Compute Module... It's pretty amazing work with a lot of promise... He spun this from the Craftbeerpi to make an all-in-one shield. He's a EE embedded guy with time on his hands

https://callumnunesvaz.com/portfolio/brewing-automation-controller/
 
thoughts on using this with a 3/4" TC adapter for pH readings during the ferment of my Rum wash to see a trend and notify me to add some Calcium Hydroxide to keep it above 4.5? Going to try to have a local cellphone store add a wire to the 8285 chip on one of my SonOff Duals I have in place for temp and recirc pump control.
https://www.dfrobot.com/product-1110.html
6W4A8329.jpg
 
Yes, it will work. BUT you get what you pay for, so do not expect high accuracy. You will need to calibrate it back into BC using known buffers (4, 7, 10). You might even break out that Lookup Table!

Regarding the ESP8285... it has one analog input that ranges 0 - 1V. Assuming the output of this pH meter is 0-5V (I didn't confirm), you will need to divide it down.
 
Yes, it will work. BUT you get what you pay for, so do not expect high accuracy. You will need to calibrate it back into BC using known buffers (4, 7, 10). You might even break out that Lookup Table!

Regarding the ESP8285... it has one analog input that ranges 0 - 1V. Assuming the output of this pH meter is 0-5V (I didn't confirm), you will need to divide it down.

I expect to calibrate like a normal pH meter, and am using it for trending like I use a Tilt... I want to see a crash or rapid decline in pH, sometimes the rum wash will do that, and once you let it get momentum, the wash will plummet below 3.0 and is ruined, it would cost more money in chemicals to bring it back than the fermentables to make it cost.. Thanks for the warning on the 0-1V!
 
The property is 'FileIndex'. Example:

Code:
...
"Alarm 1" FileIndex = 2
...

Also the property to decide which sound to play is 'Sound' with selections none|default|custom. Example:
Code:
...
"Alarm 1" Sound = default
...

Be nice to have the Loop functionality also where you could Loop or not.
 
Back
Top