Just tested this and not seeing the problem you are. What application version are you using?
My script resets the alarm. When it is restarted, it retriggers before it hits the trigger point. I have to put in a delay in between eestarting the timer and resetting the alarm. My question is, how do you restart the timer without it retriggering the alarm? I can write a script to show this if it helps, but it is pretty easy to see if you play with it a bit. You actually don't need a script, just a timer and an alarm to see the behavior.Yes. I'm not fully understanding your question though. Resetting a timer will not cancel an alarm it triggered.
I just played with it a little more and I figured out what my issue is. I use the timer to countdown timed steps and as an elapsed step time for non-timed steps. When I reset the timer and change it to a countup timer (for elapsed step time) and then start the timer, it triggers the alarm. You can see this by doing the following:Just tested this and not seeing the problem you are. What application version are you using?
OK cool!My script resets the alarm. When it is restarted, it retriggers before it hits the trigger point. I have to put in a delay in between eestarting the timer and resetting the alarm. My question is, how do you restart the timer without it retriggering the alarm? I can write a script to show this if it helps, but it is pretty easy to see if you play with it a bit. You actually don't need a script, just a timer and an alarm to see the behavior.
I just played with it a little more and I figured out what my issue is. I use the timer to countdown timed steps and as an elapsed step time for non-timed steps. When I reset the timer and change it to a countup timer (for elapsed step time) and then start the timer, it triggers the alarm. You can see this by doing the following:
Set up timer to countdown from 5 and trigger the alarm at 0.
Start timer and then stop it after it triggers
Reset the timer (to 5secs)
Reset the alarm
Change the timer to CountUp
Start the timer.
This will trigger the timer immediately.
I also noted that resetting the timer does reset the alarm once the timer is started, so it you keep it as a countdown, you don't necessarily have to reset the alarm, it will reset when the timer starts.
I think I will set up another timer for countup steps so I can eliminate this issue. Thanks for looking into this.
Basically that what I thought I said. I guess I could have been clearer. I was just responding to my own post.No, I only suggested you use the 5V Out temporarily to test the AA-2. Feeding a fixed 5V input is simulating a 100% PWM output from a MEGA. We do this only to test the output of the AA-2 and set its output range. The AA-2's input power (V+) voltage should be 5-24 DC (but not less than the output voltage you expect, meaning 5V power will not allow a 0-10V output range). the AA-2 channel input signals must not exceed 5V (they would be 5V for a MEGA and 3.3V for ESP32, Grand Central, etc).
Yes absolutely, this was part of the UniShield's intent. Note that this 5V goes directly to the chip if MEGA, so any noise, spikes, or voltage dips induced on that line could F-up the chip.If you have a Unishield set up on VR->5v power, can you use the VR Terminal for a 5v Output once you have it set? I still had my Voltmeter hooked up to read VR (Voltmeter setting switch in VR Only). I turned off the Power. I moved the switch to VR-5v and replaced my Ethernet shield but I did not disconnect the Voltmeter. When I powered it back up I notices that the Voltmeter is at 5.03v where I had set it in VR, so it is powered.
If you can, is the VR 5v output tied to AREF via the Dip Switch?
Adding graphics is easy as you can add up to 3 backgrounds to any element. There are many ways to display a temperature gauge built in. Converting from. BCS is fairly straight forward. You can get lots of help in the forum.New to BruControl but not to electric brewing. Upgrading from an old BCS unit. I see a lot of cool graphics for the brewery interface and wondering if there is a place to get a custom brewery done or did everyone do their own graphics? I am not good at graphics so hoping there is a way to get a template or something.
Thanks in advance
This is a good place for some images that are free. You can use either MS Paint or Paint 3D that came with Windows to manipulate the files. I personally like the MS Paint that is in Win 10 or before.For those looking for interface graphics...There is a PLC software from Unitronics called Visilogic and is a free download. Navigate to program files>Unitronics>data>images. Lots of equipment, pipes, valves and in a few different styles...
Thanks for this. It has a lot to it for sure. But I think I can figure it out. Appreciate the help and also got the shared folder.This is a good place for some images that are free. You can use either MS Paint or Paint 3D that came with Windows to manipulate the files. I personally like the MS Paint that is in Win 10 or before.
Other than contacting @BrunDog ([email protected]), I do not know of another way to move from one computer to another,One item that has already come up, I installed and activated the program on test computer. When trying to install on a different computer the license is not active and says to release and contact support. I don't see a way to release it on first install machine? Also, I have a home server and was going to run this on it so I have RAID backup. Any others running on home server and is there any issues?
Ok great. I sent @BrunDog an email. I have proxmox on Dell R710 home server with tailscale. I can get to it from anywhere with the VPN so that will work great. Thanks for helping the new guy!!Contact BrunDog for a license release. I run BC as a VM on a ESXi server, works fine.
Nice! But at $80 that would be a tough sell over the ESP32-S3!
Yeah, I know... so much MCU power though!Nice! But at $80 that would be a tough sell over the ESP32-S3!
The S3 is the perfect option IMO. Lots of I/O!Yeah, I know... so much MCU power though!
I'm playing with the S3 and C3 on some scale and tap display projects. I'm liking them a lot.
Yeah, but keep in mind if that port leads to a pump (or any other flow through it, it will misread when there is flow.I was adding a Volume a sensor to my HLT. I had had a sensor port added to the vessel. I was thinking in how I could add a volume sensor to any vessel and realized that a simple Tee on the output of the vessel could take the volume sensor. No need for a special port.
Now if Lilygo or Robodyn woule make a S3 board with integrated relays and such, we'd be in business.The S3 is the perfect option IMO. Lots of I/O!
So you could control an SSR relay as a Digital Output as the trigger voltage?
You just lose the data. Since I have so many globals, I uninstalled the SQL so I no longer get a Database. It was really slowing down the loading of BruContol (Like 10 minutes). I was deleting mine every other day. So just delete at will. It only gets rid of any stored data. BruControl is going to fix the Globals to take care of a lot of the issues with the data base.I sort of asked this question before, but am unsure if I understand correctly. Can I delete the database file if it gets too large and I don't need the data? Will it then create a new file and start logging?
Seconding this. Mine got really large as well, so I deleted it and did away with SQL. I have my brew stats pulled from Brucontrol by Node-RED and sent to Supabase (a free database like Firebase) and Brewfather, so I can see both historical and current data when needed. Saves me from very large files files.You just lose the data. Since I have so many globals, I uninstalled the SQL so I no longer get a Database. It was really slowing down the loading of BruContol (Like 10 minutes). I was deleting mine every other day. So just delete at will. It only gets rid of any stored data. BruControl is going to fix the Globals to take care of a lot of the issues with the data base.
[
{
"id": "7393774e6b605aaf",
"type": "tab",
"label": "BruControl Flow",
"disabled": false,
"info": "",
"env": []
},
{
"id": "28f07e072a7d90f8",
"type": "inject",
"z": "7393774e6b605aaf",
"name": "Start flow",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "300",
"crontab": "",
"once": true,
"onceDelay": 0.1,
"topic": "",
"payload": "",
"payloadType": "date",
"x": 110,
"y": 80,
"wires": [
[
"b45926e60e401fd4"
]
],
"info": "This starts the flow at start and at an interval of 5 minutes."
},
{
"id": "b45926e60e401fd4",
"type": "http request",
"z": "7393774e6b605aaf",
"name": "HTTP Request to BC",
"method": "GET",
"ret": "txt",
"paytoqs": "ignore",
"url": "http://127.0.0.1:8000/globals",
"tls": "",
"persist": false,
"proxy": "",
"insecureHTTPParser": false,
"authType": "",
"senderr": false,
"headers": [],
"x": 300,
"y": 80,
"wires": [
[
"3dc90f4b793804ba"
]
],
"info": "This makes a HTTP GET call to BruControl's data exchange server, running on port 8000."
},
{
"id": "3dc90f4b793804ba",
"type": "json",
"z": "7393774e6b605aaf",
"name": "Convert JSON String to Object",
"property": "payload",
"action": "",
"pretty": false,
"x": 550,
"y": 80,
"wires": [
[
"e594e165c8a55fc7",
"0ea11e696e11d069",
"81eab8e2366410d3"
]
],
"info": "This will take the msg.payload variable (a JSON string after the HTTP request) and make it a browsable object."
},
{
"id": "e594e165c8a55fc7",
"type": "debug",
"z": "7393774e6b605aaf",
"name": "Show Full Response JSON Data in Debug Pane",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "payload",
"targetType": "msg",
"statusVal": "",
"statusType": "auto",
"x": 900,
"y": 120,
"wires": []
},
{
"id": "0ea11e696e11d069",
"type": "function",
"z": "7393774e6b605aaf",
"name": "Example Functions 1 (For/Switch)",
"func": "bcGlobals = msg.payload;\n\nfor (let i = 0, l = Object.keys(bcGlobals).length; i < l; i++) { //Declare i and l, set l to the length of the array (starting from 0), go as long as i is less than l, increment i by one each cycle.\n \n switch (bcGlobals[i].Name){ //Check each array entry by setting the path to i, with the object key being Name.\n case \"Temp1\": //Change the words between the quotes to your BC global name\n node.warn('Temp 1 is: ' + bcGlobals[i].Value); //If the name matches, the value shows in the debug node.\n msg.payload = bcGlobals[i].Value; //Sets msg.payload to the value\n break; //Then the switch stops, going to the next For iteration.\n // default: //Nothing found, so goes to default. However, in a For loop, it will state this for EVERYOTHER BC global entry, so don't uncomment this unless you know what you are doing.\n // node.warn('Nothing found.');\n // break;\n } \n} \n\nreturn msg; //Returns the message, meaning msg.payload moves forward with the new value.",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 860,
"y": 40,
"wires": [
[]
]
},
{
"id": "81eab8e2366410d3",
"type": "function",
"z": "7393774e6b605aaf",
"name": "Example Functions 1 (Get Specific Key Value from BC Name)",
"func": "var arr = msg.payload; //arr for array\nvar temp1;\nvar bcGlobals;\n\n//The following lines rearranges the array into a standard JSON key/value pair via a string and then makes it an object.\nbcGlobals = '{' + arr.map(function(elem){ \n return '\"' + elem.Name + '\":\"' + elem.Value + '\"'; }).join(\",\");\nbcGlobals = bcGlobals + '}';\nbcGlobals = JSON.parse(bcGlobals);\n\n\ntemp1 = bcGlobals['Temp1']; //Sets temp1 to the value of the BC global based on the global name. Change the name accordingly.\nnode.warn('Temp1 is ' + temp1); //Shows the value in the debug pane.\n\nmsg.payload = temp1; //Sets msg.payload to the temp1 value so it can carry forward.\n\n\nreturn msg; //Returns the message, meaning msg.payload moves forward with the new value.",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 940,
"y": 80,
"wires": [
[]
]
}
]
Hi Oakbarn - I am in the process of educating myself with Paint 3D in order to buid a half decent background containing my brewery's layout; I really like yours. I am assuming I could copy/paste it in Paint 3D and customize it as required?Success: My Temp Probes are working with the TF-4 with the wires between the Mega 2560 and the TF-4 roughly 4' 8". I used Cat 5 Shielded wire and did not ground the shield on either end. The only ground was between the Mega and the GND on the TF-4 next to the VCC (5v from the Mega).
This is NOT a Recommendation but I had not purchased a big enough enclosure to house the Interfaces and the TF-4 so I needed to mount it in a different enclosure. That enclosure is metal and has M12 PANEL MOUNT QDs for the temp probes (M12 Quick Disconnect Panel Mount - Male from Brewers Hardware).
View attachment 809628
I used MS Paint (the old version on Windows 10. I can use the one on Win 11 but it is not as easy. I have dabbled with Paint 3D but cannot see any advantage over MS Paint (although you may be able to have transparent backgrounds but I have never figured out how).Hi Oakbarn - I am in the process of educating myself with Paint 3D in order to buid a half decent background containing my brewery's layout; I really like yours. I am assuming I could copy/paste it in Paint 3D and customize it as required?
Also, I notice small buttons next to your pumps - are these controlling the ON/OFF of the pump Element? If so - how can we link Button/Switches like that to Elements such as pumps?
Lastly, the digital temp gauges look neet; how to?
Cheers!
OK great, switch is gone. For the "i", I'm unable to find the lock button; is it in the "appearance" tab somewhere?To get rid of the switch, click the "i" then go to Appearance>Enable Button Visibility>Never
To get rid of the "i" simply click the lock button in the upper right corner.