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.
I posted it for others to use, modify, ridicule my coding standards, etc. So npass it along. It does require the end user to be knowledgeable with writing code for arduino, so it's not for all but can definitely open doors for adding other devices that otherwise wouldn't be supported.

BTW, the Flite project is pretty cool. Not too feasible for a guy with 15+ serving kegs, but cool nonetheless.
Why so many?
 
I posted it for others to use, modify, ridicule my coding standards, etc. So pass it along. It does require the end user to be knowledgeable with writing code for arduino, so it's not for all but can definitely open doors for adding other devices that otherwise wouldn't be supported.

BTW, the Flite project is pretty cool. Not too feasible for a guy with 15+ serving kegs, but cool nonetheless.

ok guys thanks, so where is the link ? thanks
 
FYI, May have found an issue -

"Port ID and Element ID differentiated. The “ID” property is still there and is equal to the ElementID when it is a non-device element. It is equal to the PortID if it is a device element. The data logging is always using the ElementID."

My analog inputs are not behaving this way for data logging. When I upgraded (12/24/20), I see in the database where logging stopped working for the ElementID and created a new table referenced by the PortID. Ongoing logging is being written under the PortID.

Code:
<Height>70</Height>
          <ID>e6ced632-36cd-4dd4-8c0c-4f3ae350022e</ID>
          <Name>MLTDO</Name>
          <UserControl>false</UserControl>
          <Width>105</Width>
          <X>996</X>
          <Y>615</Y>
          <PortID>e63d64cc-173e-42b1-882b-fa33bcf0e05d</PortID>
        </Element>

1610635924291.png


1610635960059.png
 
Question to break the silence. :)
Would you clean all variables at the end of the script with "clean"? What's the recommendation?
 
It’s there primarily to support good programming practice. Generally, when you are done with a variable, and therefore the memory space it occupies, you want to release it to free up the memory for other variables.

In practice, these variables use up very little memory with respect to the computer’s stores, so not much harm or foul if you don’t do this. You also don’t need to before terminating a script - those variables’ memory spaces are automatically recaptured.
 
Variable cleanup used to be very important because computers could only use 64 KB of memory. As memory usage got better, variable cleanup became something your mother told you to do!
 
Hi all,

We just posted Build 16 of the v1.2 beta... a few changes (thank you to those who suggested/requested items for modification!):
  • Added exponents in scripts, using the ^ math symbol.
  • Added persistence of the lock state through restarts.
  • Hyperlink to "manage interfaces" in the interface status icon now disabled while BC is locked.
  • Added script line number to the error message in scripts.
  • Added a new Data Explorer. This allows you to look at any values within the database in a graph. You can zoom and pan, but to zoom you need to press SHIFT and use the left mouse button. We will add buttons to make it more touch friendly. For example, this view shows graph data from about 24 hours ago, over the span of 2 hours.
1611967878117.png
 
I really like the Data Explorer, it is a very welcome addition. A suggestion for an enhancement would to be add Beginning/End date pickers to be able to look at a slice in time without having to load days or months worth of data points.
 
Yes... we have a few changes planned for it. We have some other changes happening in the background, to manage the data since it can be A LOT if you are storing every second for a month. We've been playing with some interpolation and selective data discarding to run in the background. We will be adding a 'storage interval' setting, which should allow us to minimize un-needed data resolution for the gain of more time. When we do that, I'd like to give users the ability to store data for months at a time rather than just one.

We will add multiple concurrent channels, and touch friendly zoom and probably better pickers.
 
@BrunDog thanks for the newest release, significant step forward. I really like line number when you receive error or exception :), and data explorer is great addon helps a lot!

BTW. I created a video showing & demoing what BruControl can do and how I implemented my dashboard. Of course, created like chimera (out of parts from different animals and on piggybacking some work found here and shared with me. (@RiverCityBrewer, @BrunDog, @helibrewer ). I hope I have all the names correctly, sorry if I missed someone.

What can I say, too much time without brewing, cold weather and covid-19....

Dry-run BruControl demo (Build 16), 5m:54s : Link to BruControl Demo (not official :) )
If anyone else has something similar, please share, it helps a lot in getting ideas etc...
 
@BrunDog thanks for the newest release, significant step forward. I really like line number when you receive error or exception :), and data explorer is great addon helps a lot!

BTW. I created a video showing & demoing what BruControl can do and how I implemented my dashboard. Of course, created like chimera (out of parts from different animals and on piggybacking some work found here and shared with me. (@RiverCityBrewer, @BrunDog, @helibrewer ). I hope I have all the names correctly, sorry if I missed someone.

What can I say, too much time without brewing, cold weather and covid-19....

Dry-run BruControl demo (Build 16), 5m:54s : Link to BruControl Demo (not official :) )
If anyone else has something similar, please share, it helps a lot in getting ideas etc...

Cool!! I watched from phone but will watch from the big screen soon. How did you handle the turning gear? Via script?
 
Cool!! I watched from phone but will watch from the big screen soon. How did you handle the turning gear? Via script?
Thank you.

I found an impeller image somewhere from the web, converted it to have a transparent background and that was my image 1. Then I rotated it 33.3 deg and saved it =image 2 , again 33.3 and saved it= image3. Global element is called "pump rotation" and it has these images configured.

EDIT: you need to experiment with different rotation angles but 33 worked for me.
Also APNG wasn't easy to create and not sure if it would work with BC.

I used 2 scripts.
Script 1: "if pump is running, start "animation" script 2", if pumo is off, scirpt is off.

Script 2:
[loop]
"pump rotation" background = 1
sleep 300
"pump rotation" background = 2
sleep 400
"pump rotation" background = 3
sleep 500

goto loop

if anyone would like to use it, here it is attached.

Since my brewing is working quite ok (I did like 100x tests), I am still thinking about other UI improvements, I could do. (idle brain is devil's workshop :), no?)
 

Attachments

  • Impeller Rotation.zip
    366.6 KB · Views: 19
Last edited:
On a Digital OutPut, how does the Dual Port and Dual On On Delay work?

I RTFMed and I could not find it in the Beta Manual on page 43.

I have some CR05 valves that I need to see a open signal and a close signal. Obviously a Relay NO NC model ( 8 Channel Interface Relay Module 12V 24V DIN Rail Panel Mount for Automation PLC) from ebay would work. I could also do with Script with 2 digital outs in my looping housekeeping script.


// Two Digital Outs to Control a CR05 Valve
If Valve1Open state == on
Valve1Close state = off
else
Valve1Close state = on
endif
 
Ho
Thank you.

I found an impeller image somewhere from the web, converted it to have a transparent background and that was my image 1. Then I rotated it 33.3 deg and saved it =image 2 , again 33.3 and saved it= image3. Global element is called "pump rotation" and it has these images configured.

EDIT: you need to experiment with different rotation angles but 33 worked for me.
Also APNG wasn't easy to create and not sure if it would work with BC.

I used 2 scripts.
Script 1: "if pump is running, start "animation" script 2", if pumo is off, scirpt is off.

Script 2:
[loop]
"pump rotation" background = 1
sleep 300
"pump rotation" background = 2
sleep 400
"pump rotation" background = 3
sleep 500

goto loop

if anyone would like to use it, here it is attached.

Since my brewing is working quite ok (I did like 100x tests), I am still thinking about other UI improvements, I could do. (idle brain is devil's workshop :), no?)
How did you create the transparent background?
 
Do you mean Dual Throw? Yeah, looks like we haven't updated the manual yet.

Dual Throw assimilates a "dual-throw" relay in that when one output is on, the other is off, and vice versa. This allows two physical outputs to be used on an interface to create these opposing outputs. The device element references the primary output, and the Dual Throw output is linked (and blocked out of other device elements).

The ON:ON Delay ensures that one output is off for a period of time before another turns on. For example, if you have two high power enable contactors to feed two heating elements off a 30A circuit, this delay gives time for one relay to close before the other turns on, to ensure that an overload doesn't happen (relays can take longer to release than close). Yes, you can use scripts to do this, but when it is coded in firmware, the possibility of them both being on at the same time is minimized dramatically. Probably no issue when controlling a valve, but overloading a circuit as in my example has much more risk.

Dual Throw can be used in conjunction with One-Shot. For example, say you had a valve that needs an input to signal open and an input to signal close, and you wanted just to cycle it on then close for a few seconds during a cleaning cycle... Dual Throw with One-Shot can do that for you.
 
@BrunDog thanks for the newest release, significant step forward. I really like line number when you receive error or exception :), and data explorer is great addon helps a lot!

BTW. I created a video showing & demoing what BruControl can do and how I implemented my dashboard. Of course, created like chimera (out of parts from different animals and on piggybacking some work found here and shared with me. (@RiverCityBrewer, @BrunDog, @helibrewer ). I hope I have all the names correctly, sorry if I missed someone.

What can I say, too much time without brewing, cold weather and covid-19....

Dry-run BruControl demo (Build 16), 5m:54s : Link to BruControl Demo (not official :) )
If anyone else has something similar, please share, it helps a lot in getting ideas etc...

Looks great, I will be implementing some of your ideas....I want to simplify my graphic layout/depiction. Nice Job!!
 
Ho

How did you create the transparent background?
I have used Paint Net , it's free program quite powerful. You can do it:
- Use for example the Magic Wand :MagicWandTool: + some selection tools to add /remove white areas and then delete. (image has to be PNG for BC)
- or search the tutorials for things relating to Alpha Masking. Results are the best like that. But you'd need to install Alpha Mask plugin.

I used method 1.
 
Last edited:
Does anyone use Low Pressure Propane Burners? It looks like they can produce about 55,000 btu. I brew up to 30 gal batches and have always used high pressure burners but am thinking of switching to low pressure for better safety and automation.

BTW, I just order all my Stainless from Brewers Hardware. I am having a Tri Clamp added for vent less brewing!
 
@oakbarn, I use low pressure 32 port jet burners on honeywell valves and standing pilots for my HLT, MLT (for decoction). I don't use a honeywell on the boil kettle as I don't worry so much about boil temps. I do plan to add in the Spring though with another temp sensor.
 
I remember the spark igniters caused problems back in the BCS days.. HSI, hot surface igniters were preferred. I was going to automate gas, so I bought a Honeywell SV9641M4510 valve and Q3450C1185 HSI igniter, but never got around to implementing.. If you live in an area with furnaces, I would employ a guy familiar with them to the point they can help you pick out the most reliable, economical, widely used valve, and can probably give you one off of a unit they are going to junk...
 
I ordered Spunding valves for my ferementors. I am a complete newbie of using them. I assume you can only manually change the pressure setting. I have no idea how they are used. If this is the wrong forum, I can repost elsewhere, but I think BruControl brewers
Are the cream of brewers
 
I ordered Spunding valves for my ferementors. I am a complete newbie of using them. I assume you can only manually change the pressure setting. I have no idea how they are used. If this is the wrong forum, I can repost elsewhere, but I think BruControl brewers
Are the cream of brewers
I created my own with a pressure sensor and a solenoid valve, with a needle valve to reduce how much c02 is released each time I open the solenoid. I have a script in brucontrol that monitors the pressure and opens the valve to keep a constant pressure.
 
Hey all... FYI we posted Build 17, with changes:
  • Data Explorer:
      • The “DEFAULT” mode allows for both pan and zoom.
        • With keyboard and mouse: Left mouse pans, then shift+mouse does a zoom in and ctrl+mouse does zoom out. Mouse wheel zooms in/out.
        • With touch: Swipe left, right, up or down to pan. Pinch zoom
      • The “PAN” mode is pan only. The “BOX ZOOM” mode allows for box zoom. The “AUTO FIT” zooms out to fit the data.
      • There is some overlap in functionality by having the BOX ZOOM and allowing zooming with the DEFAULT mode, but we wanted you to be able to play with it and maybe give feedback on your preference?
    • Added the ability to plot a second dataset in the data explorer.
    • Changed the icon
  • Fixed Digital Output defaults to 'None'
  • Added ability to force the script to use a literal string rather than try to match it to an element or variable etc.
    • Use the ‘@’ symbol to denote a literal string.
    • For example, to set DisplayName to the same name as an existing element, do the following:
      • “Digital 1” DisplayName = @”Digital 2”
  • Some back-end code changes to enable cross-platform functionality and web front-end
 
Hey all... FYI we posted Build 17, with changes:
  • Data Explorer:
      • The “DEFAULT” mode allows for both pan and zoom.
        • With keyboard and mouse: Left mouse pans, then shift+mouse does a zoom in and ctrl+mouse does zoom out. Mouse wheel zooms in/out.
        • With touch: Swipe left, right, up or down to pan. Pinch zoom
      • The “PAN” mode is pan only. The “BOX ZOOM” mode allows for box zoom. The “AUTO FIT” zooms out to fit the data.
      • There is some overlap in functionality by having the BOX ZOOM and allowing zooming with the DEFAULT mode, but we wanted you to be able to play with it and maybe give feedback on your preference?
    • Added the ability to plot a second dataset in the data explorer.
    • Changed the icon
  • Fixed Digital Output defaults to 'None'
  • Added ability to force the script to use a literal string rather than try to match it to an element or variable etc.
    • Use the ‘@’ symbol to denote a literal string.
    • For example, to set DisplayName to the same name as an existing element, do the following:
      • “Digital 1” DisplayName = @”Digital 2”
  • Some back-end code changes to enable cross-platform functionality and web front-end

I have a problem starting data explorer. With version 16 I could start it and close it anytime. (tested it again).
Now with 17, data explorer cannot be started once I close it with "X". If I restart whole BC, then I can start it again.

Anyone with the same issue?


EDIT: link with the video first version 16, after that version 17:
 
Last edited:
Good find! It does seem there is an issue if you open DE when one is already open (in the background) then lock. We'll figure it out and fix it. For now, just make sure to close DE each time.
Ok :) Thanks I almost killed my windows :-D. Bc I couldn't repro it on a fresh VM.
 
Good find! It does seem there is an issue if you open DE when one is already open (in the background) then lock. We'll figure it out and fix it. For now, just make sure to close DE each time.
I am reading what you wrote, I am just not sure that we are on the same page.

If I open once DE, after closing it , I can't open it again, ever (unless I restart BC). Nothing to do with lock IMHO (as I originally thought).
It won't help to (me to) close it every time, because there is nothing to close. The Window of DE is nowhere to find (there is a process called DATA EXPLORER).

I could keep the window opened in the background and never close it.

Is that what you are talking about?
 
Last edited:
Apologies up front if this has been discussed already (you'll forgive me for not being able to keep up with this thread).

What are thoughts about using a VL53L0X TOF sensor to measure vessel volumes (HLT, MT, BK)?
 
Back
Top