• Please visit and share your knowledge at our sister communities:
  • If you have not, please join our official Homebrewing Facebook Group!

    Homebrewing Facebook Group

BruControl: Brewery control & automation software

Homebrew Talk

Help Support Homebrew Talk:

This site may earn a commission from merchant affiliate links, including eBay, Amazon, and others.
I was playing with BruControl on a WIN 11 machine and am having problems with the API Data Exchange.

It seems that in WIN 11, BruControl and node-red cannot share the same port.

If node-red is not running, I can reserve the 1880 port normally if BruControl is running. When I try to run node red, I get this:

2 May 19:54:19 - [error] Unable to listen on http://127.0.0.1:1880/
2 May 19:54:19 - [error] Error: port in use

If BruControl is not running, I can run node red normally:
2 May 19:47:34 - [info] Server now running at http://127.0.0.1:1880/
2 May 19:47:34 - [info] Starting flows
2 May 19:47:34 - [info] Started flows

But now in the Data Exchange under Settings:

View attachment 874596





If I have reserved the port 1880 and then run node-red,
i get the
2 May 19:54:19 - [error] Unable to listen on http://127.0.0.1:1880/
2 May 19:54:19 - [error] Error: port in use
Node-RED is 1880 by default. I think BC should be 8000 or anything other than 1880
 
I was playing with BruControl on a WIN 11 machine and am having problems with the API Data Exchange.

It seems that in WIN 11, BruControl and node-red cannot share the same port.

If node-red is not running, I can reserve the 1880 port normally if BruControl is running. When I try to run node red, I get this:

2 May 19:54:19 - [error] Unable to listen on http://127.0.0.1:1880/
2 May 19:54:19 - [error] Error: port in use

If BruControl is not running, I can run node red normally:
2 May 19:47:34 - [info] Server now running at http://127.0.0.1:1880/
2 May 19:47:34 - [info] Starting flows
2 May 19:47:34 - [info] Started flows

But now in the Data Exchange under Settings:

View attachment 874596





If I have reserved the port 1880 and then run node-red,
i get the
2 May 19:54:19 - [error] Unable to listen on http://127.0.0.1:1880/
2 May 19:54:19 - [error] Error: port in use
Coming back to this more, you can't have two apps share the same port on any OS. So NR should be 1880 be default, and I believe BC is 8000 by default. Your NR flow should communicate with BC's dedicated port
 
Coming back to this more, you can't have two apps share the same port on any OS. So NR should be 1880 be default, and I believe BC is 8000 by default. Your NR flow should communicate with BC's dedicated port
If I read all my notes to the end, I have a note just about that. I was too smart and assumed it had to be the same. So simple.
 
Can I use the 5 v (+) tied to AREF for one wire in addition to power a TF-4?

Also use it for Digital Input (Momentary once in a while)

The TF-4 and the One Wire would be continious use.

I know I can use a different 5 v (+) as long as there is a common ground between the Interface and the 5 v PS for the Digital Input and One Wire circuit.
 
The 5v current available depends on how the MEGA is powered, what board you are using the connect to the network, and how many ds18b20 sensors you have on the one-wire network. 250ma is a good power budget number to keep in mind.

Thermistors don't really draw any significant power, so you should be fine with the TF-4 board as it is largely passive. For the DI, as long as you wire it as a sinking type (Arduino input to one side of button/switch, ground on the other - set as Active Low in BC), it should keep the current draw low enough to not overdraw the 5v regulator.

If you notice the network drops out or the MEGA resets, particularly during button presses, you are likely overdrawing the 5v regulator. Also keep in mind that as you increase the 5v current, you could create a condition that causes the voltage to sag a bit, and since that is tied to AREF it would make all your sensor readings fluctuate. For that reason, I tie the MEGA 5v to AREF only, and handle all other power needs with an external 5v PSU.
 
First, I want to acknowlege @RiverCityBrewer who greatly helped me getting Node Red up and running.

A Node-red flow to create a .csv file of a mash temp with time every minute.

The global element I used was named DX_gblV_Mash_Temp_DE

In addition, I have a folder
C:\BruControl\NodeRedData

To run this, you must have professional License, the Data Exchange enabled under settings, Node-Red installed and Running, and the flow in the local host on the same computer as BruControl.

This will create a simple .csv file which needs to be renamed after each Mash to a different name as this flow will create the file if it does not exist, but will simply append to the file if it does.

This flow could likely be improved as it is my first shot, but I think it would suit my needs.

The Flow:

[
{
"id": "c68aff04e20ee551",
"type": "tab",
"label": "Mash Temperature",
"disabled": false,
"info": "",
"env": []
},
{
"id": "17b429a9678c0b7c",
"type": "inject",
"z": "c68aff04e20ee551",
"name": "Start Mash Temperture",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "60",
"crontab": "",
"once": true,
"onceDelay": 0.1,
"topic": "",
"payload": "",
"payloadType": "date",
"x": 190,
"y": 80,
"wires": [
[
"3c74d78c0e3b11dc"
]
]
},
{
"id": "3c74d78c0e3b11dc",
"type": "http request",
"z": "c68aff04e20ee551",
"name": "Connect to BruControl",
"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": 420,
"y": 140,
"wires": [
[
"1e10d705ed8387aa"
]
]
},
{
"id": "034ac9778088f6fa",
"type": "function",
"z": "c68aff04e20ee551",
"name": "Get and Pass Mash Temp",
"func": "var arr = msg.payload; //arr for array\nvar Mash_Temp;\nvar Mash_Data;\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 + '\"';\n}).join(\",\");\nbcGlobals = bcGlobals + '}';\nbcGlobals = JSON.parse(bcGlobals);\n\n\nMash_Temp = bcGlobals['DX_gblV_Mash_Temp_DE']; //Sets Mash_Temp to the value of the BC global based on the global name. Change the name accordingly.\nnode.warn(new Date() +Mash_Temp); //Shows the value in the debug pane.\n\nmsg.payload = (new Date() + Mash_Temp); //Sets msg.payload to the DX_gblV_Mash_Temp_DE value so it can carry forward.\n\n\nreturn msg;\n\nreturn msg; //Returns the message, meaning msg.payload moves forward with the new value.",
"outputs": 1,
"timeout": "",
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 830,
"y": 280,
"wires": [
[
"bd321ddfc458903d",
"63caa0e376233921"
]
]
},
{
"id": "1e10d705ed8387aa",
"type": "json",
"z": "c68aff04e20ee551",
"name": "Convert JSON String to Object",
"property": "payload",
"action": "",
"pretty": false,
"x": 710,
"y": 140,
"wires": [
[
"034ac9778088f6fa"
]
]
},
{
"id": "bd321ddfc458903d",
"type": "debug",
"z": "c68aff04e20ee551",
"name": "Show Mash Temps",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "payload",
"targetType": "msg",
"statusVal": "",
"statusType": "auto",
"x": 1250,
"y": 280,
"wires": []
},
{
"id": "63caa0e376233921",
"type": "csv",
"z": "c68aff04e20ee551",
"name": "",
"sep": ",",
"hdrin": "",
"hdrout": "none",
"multi": "one",
"ret": "\\r\\n",
"temp": "Mash Temperture",
"skip": "0",
"strings": true,
"include_empty_strings": "",
"include_null_values": "",
"x": 1030,
"y": 440,
"wires": [
[
"aa477984d42a05fa"
]
]
},
{
"id": "aa477984d42a05fa",
"type": "file",
"z": "c68aff04e20ee551",
"name": "Write CSV File",
"filename": "C:\\BruControl\\NodeRedData\\MashTemperature.csv",
"filenameType": "str",
"appendNewline": true,
"createDir": false,
"overwriteFile": "false",
"encoding": "none",
"x": 1180,
"y": 440,
"wires": [
[]
]
}
]
This is great. Thanks to both of you! You have each helped me greatly and this is a great next step! Stability has greatly improved for me since wiping out my old data file.
 
Curious if anyone else has experienced this issue and has an idea on what to explore:

- I have 3 RTDs wired to a MEGA2560 through Max31865 boards
- Each reads pretty accurately and with stability other than a momentary voltage drop/spike when I cycle my pump relays on/off (Haven't wired in snubbers yet)
- All are in the same cabinet and physically in the same area in the cabinet.
- During a brew session (sometimes) one of them will start to drift infinitely high. It will just keep ticking up in temp once per second or so and continue to drift high. I can plug in, unplug, etc and it just continues where it left off.
- I haven't tried shutting down the whole system in the middle of a brew yet (probably the next step to see if it resets), but I can say after I shut things down, it all works when I restart the system the next day or later.

Any thoughts? Is it heat in the cabinet causing drift? Some other voltage disregulation?
 
Curious if anyone else has experienced this issue and has an idea on what to explore:

- I have 3 RTDs wired to a MEGA2560 through Max31865 boards
- Each reads pretty accurately and with stability other than a momentary voltage drop/spike when I cycle my pump relays on/off (Haven't wired in snubbers yet)
- All are in the same cabinet and physically in the same area in the cabinet.
- During a brew session (sometimes) one of them will start to drift infinitely high. It will just keep ticking up in temp once per second or so and continue to drift high. I can plug in, unplug, etc and it just continues where it left off.
- I haven't tried shutting down the whole system in the middle of a brew yet (probably the next step to see if it resets), but I can say after I shut things down, it all works when I restart the system the next day or later.

Any thoughts? Is it heat in the cabinet causing drift? Some other voltage disregulation?
I'm currently using BC for a non-brewing application and run 32 RTD's across a couple MEGAs. If it is just one RTD, odds are it is not the cabinet. I'd think that it is maybe the sensor going bad since rising temp means rising resistance between the wires. The issues I have had are typically the temp going down because there's a short between sensor wires or a sensor wire and shielding.
When you notice it happening, I would first switch two of the sensors to see whether it is a sensor or something further upstream. If it stays with a particular sensor, you can double check with a multimeter. Check the resistance across the different wires (if 2 wire, or if 3 wire across different color wires). The resistance should be a little above 100 for a pt100, a little over a1000 for a PT1000. If it's the sensor, I would just replace.
Also pull the sensor out of the thermowell...if that fixes it, it's probably some sort of grounding/shielding issue. But I would expect the problem to temporarily resolve when you have unplugged them if it was a grounding issue.
If it's not the sensor, I would check internal wiring connections for continuity and good connections into the MAX board and then into the arduino. But my experience is that connection issues with the MAX or arduino messing with the SPI connectivity, not the temperature itself. So my guess is a sensor going bad.
Good luck and let us know what you find.
 
I am using a screw shield with a Mega 2560. I am wiring the 5v and AREF together and a wire to the GND,

Powered by just the USB.

I get a flashing 8.8.8 as the voltage on a voltmeter.

I have tried this with a seperate screwshield and Mega with that being the only wiring and I get the same results.

Same result when powered by wall wart.

I also disconnected the AREF but that changes nothing.

Am I just being OCD as this is normal?
1750792715922.png
 
I am using a screw shield with a Mega 2560. I am wiring the 5v and AREF together and a wire to the GND,

Powered by just the USB.

I get a flashing 8.8.8 as the voltage on a voltmeter.

I have tried this with a seperate screwshield and Mega with that being the only wiring and I get the same results.

Same result when powered by wall wart.

I also disconnected the AREF but that changes nothing.

Am I just being OCD as this is normal?
View attachment 878487
I would think that is some sort of error code on your voltmeter. Can you look up and see what that means? Or do you have what voltmeter you are using?
 
OK Test make sense but why go into this mode? It works fine on several 12v and a 24 v circuit. It is just the 5 v out of several MEGAs.

I have an Analog 5v voltmeter I will try. It seems to just be an issue at 5 v, Maybe out of range of the Voltmeter?

I just order a Voltmeter that is 5 to 100 v DC Voltmeter. I suspect that is the issue as there is another 5 v one that does read 5 v! ( I have all my transformers hooked up to panel mounted Voltmeters and that one reads 5v.)

The volt meter is for testing only and I think I did myself in!
 
Last edited:
Not sure as I have a lot of them. I bought them on Amazon or EBay. Likely it is a 12-24 v type and is under voltage at 5 v. I have a different voltmeter in a panel in the same 5 v circuit that does read 5v. I order a new one for my test circuit that is 4-100 v voltmeter
 
There's a plethora of [cheap] panel mount voltmeters out there and some of them will display their "all on" test pattern before then showing an actual voltage reading. But I don't know enough about the gamut of meters sold to know what condition(s) might make some of them stick in the test pattern state, but "under-voltage" seems plausible (though as an EE I consider a meter that can handle 12-24 but not 5V to be rather pathetic in 2025)...

Cheers!
 
Not sure as I have a lot of them. I bought them on Amazon or EBay. Likely it is a 12-24 v type and is under voltage at 5 v. I have a different voltmeter in a panel in the same 5 v circuit that does read 5v. I order a new one for my test circuit that is 4-100 v voltmeter
My opinion is it would be best to go get a multimeter for testing things like this. This one has done me well and is relatively cheap: https://www.homedepot.com/p/Klein-Tools-600-Volt-Digital-Multi-Meter-Manual-Ranging-MM325/320822947
 
It was an undervoltage signal (Flashing 8.8.8). I got my new 4-100v voltmeter and it opens with 8.8.8 then displays the voltage, in this case 5.1.

When I hooked up the old voltmeter it just flashed the 8.8.8. So there are cheap voltmeters that may not read 5 v! Lesson learned.
 
Ok, I haven't, on the forum for a while, but I have been looking into having BruControl running on the raspberrypi 5. I have been communicating with Pete with an overview of the project. Not sure why he is not on the forum, but Pete, if your reading the forum, please come back! A few years ago I did a tutorial on running BruControl on the Pi 4 with a Mega, and the software ran well. once loaded up with node-red used for recipe import. I now found a way to have the Pi 5 running in a virtual machine, with an adafruit winc1500 witeless shield, and switched out the mega for an adafruit Grand Central M4. would to show how to run that also. The problem: I can get on my network using arduino sketches, but when on the network BruControl doesn't connect to the ip address. I don't know how to specify a port to use. If I use the BruControl firmware, it writes the the Grand Central, but termite locks up, whether in the virtual machine or on a windows machine. If I can get some help on this, then the virtual machine is a fast, wireless and viable way to run BruControl. Thanks in advance.
 
I guess I should clarify myself... it is a raspberrypi 5 8G running a win 11 virtual machine inside raspberrypi OS bookworm.
 
Hello everyone, I have a problem that I can't handle. I built a keg washer based on an Arduino Mega, which is connected via USB. During the full washing cycle, the interface sometimes disconnects for a moment and goes offline. This causes huge issues because the script continues to run, and when the connection is restored after 4-5 seconds, the valves are not properly closed or opened. Detergent remains in the keg ,same with disinfectant, and sometimes the detergent returns to the disinfectant, etc.
Is there any way to stop the script when there is no connection (e.g., any device is offline) and continue when the connection is restored?
Please
 
Hello everyone, I have a problem that I can't handle. I built a keg washer based on an Arduino Mega, which is connected via USB. During the full washing cycle, the interface sometimes disconnects for a moment and goes offline. This causes huge issues because the script continues to run, and when the connection is restored after 4-5 seconds, the valves are not properly closed or opened. Detergent remains in the keg ,same with disinfectant, and sometimes the detergent returns to the disinfectant, etc.
Is there any way to stop the script when there is no connection (e.g., any device is offline) and continue when the connection is restored?
Please
All device elements have a "connected" property. I use that to see if an ESP32 drops on WiFi. So select an element to watch and use connect, e.g.,

if "Keg Washer 1 Valve" connected == false
//Whatever you want done if it drops
endif
 
Thank you. So is this going to be correct:?
script name i want to pause is Washcycle

If "tempsensor" connected == false
pause "washcycle"
endif
wait "tempsensor" connected == true
resume "washcycle"

Cant trial and error much because i dont have access to machine, will have to do it remotely. hope it helps .
Thank you
Edit: how to recognize if mega is just disconnecting or restarting, if its restarting this wont help much i guess.
 
Last edited:
Depending on how you manage the loop, this would always keep resuming and cycling until the false is hit (inefficient use of system resources). I'd say use wait for both, that way the loop holds until the drop happens. So:

Code:
[Loop]
wait "tempsensor" connected == false
  pause "washcycle"

wait "tempsensor" connected == true
  resume "washcycle"

goto "Loop"
 
Did a major rewire and other stuff to my Brewery but having issues with my 10KNTC probes. All of them continuely "hunt" going Down then Up in unison (All 8 go up and down exactly at the same time.) when they hit the bottom (As an example One: around 8.2 then go up to about 29.8 then back down.) All the probes do not all read the same but do change at the same time. The number generally go up then down but ocassionally they will have a one "down" in the Up ladder.
 
Back
Top