Skip to content →

Brewing with Node-RED pt 2: My Dashboard

This post continues my discussion of Node-RED for brewing applications. Read part 1 here.

The most recent information and version of my brewing dashboard can always be found on github. I’ll improve it and add features from time to time, and it’s all there for you to borrow ideas from/copy/modify and otherwise jump start your own process of using Node-RED.

My brewing dashboard is quite specific to my 2 vessel brewery. Node-RED really encourages intensely personalized app/dashboard development. Notable features of my brewing dashboard are:

  • PID temperature control of mash (using RIMS), with output limiting functionality
  • PID temperature control and manual control options of a boil kettle
  • Output blocking to ensure only a single element is used at once
  • Volume sensing (not shown in screenshots below as I had my pressure transmitter disconnected)
  • Looks nice and has mobile friendly buttons and sliders
  • MIT opensource license (any my code anyways, Node-RED itself is licensed under Apache 2.0)

There’s a bit more detail in each of the below screenshots. Please let me know if you have any questions about what I have going on here!

This dashboard has worked incredibly well for me so far. I’ve been using it in some form to brew for the past year or so. Changes I make to my dashboard now have tended towards more aesthetics rather than function. A goal of mine is to eventually incorporate control of my pump VFD (beyond basic on/off functionality), through this dashboard.

This is the main view of my brewing dashboard. Works well on mobile too (using 1 column instead of 2). Ignore the missing temperatures, I took this UI screenshot while all of my sensors were disconnected for brewery modifications…
The mash settings page has all the advanced output and settings in regards to mash temperature control, that you may expect. One somewhat novel feature is that I have an output limiter for my RIMS inline heater. So for heating strike water I may use 100% output, but dial it back to 25% max for mash recirculation and temperature control. Also on this page, a temperature Δ may be specified (mash target vs. rims target). This may be necessary when brewing in situations with high heat loss (e.g. outside in the winter).
The boil settings page is a little simpler. Just basic PID settings and PID related outputs (these are useful for tuning and troubleshooting PID behaviour). A PID on the boil may be used for no-boil beers or kettle sours. Possibly as well for a hop stand, though I think that’d be overkill.

Published in IoT

19 Comments

  1. Jay

    I have to say, this IS the way to go for setting up a highly customizable interface with the ability to integrate almost everything! I looked through your flows and it is a bit of a challenge for me to follow but I hope to be up to speed soon. I played a bit with a simple ESP32 + sensors and a Sonoff and it works well! Thanks for the tips and the writeup!

    • Justin

      Sure thing! While homebrewers trying to do this stuff on their own with Node-RED may not find information regarding their specific use case, most of functionality they would be searching for would be used in many other applications. Whether it’s scheduling lights around a smart home, or louvres, fans, pumps and sprayers in a connected greenhouse, lots of builds and entire “flows” for that matter out there that are applicable to homebrewing. Search methodology may need to be adjusted, is all!

  2. Lee

    Hey Justin, about to start having a look at Node-RED due to inspiration from your work, as an alternative to my current CraftBeerPi rig. From your repo it appears that you haven’t set up for step mashing, are you able to tell me if there’s any limitations in Node-RED that would prevent a mash step (time / temp) sequence being built similar to CBP or Ardbir, etc.? This would be a requirement for my brewery so a showstopper right now if that type of thing is outside a Node-RED scope.

    Also, given that you’ve written a few CBP plugins yourself, do you know if there’s any way to adjust the boil power (PWM duty) on the fly during a boil step in CBP? I’ve read through as much of the code as I can (although my understanding is limited) and can’t see any way to hook into the GUI power setting from a plugin.

    Thanks,

    • Justin

      Yes I personally haven’t implemented any scheduling for step mashes etc., but seems like a worthy challenge! Setting up in the backend I think would be pretty easy, making a UI for it could lead to some challenge if that was a goal/requirement.

      In the backend, the most basic thing you could do that I can think of is to create a series of inject nodes, which injected a new set point for mash target temperature at a specified time.

      There are also a handful of different timer and scheduler type of plugins that you can play around with, as probably the most popular use of node-red is automatically setting lights and window blinds and that sort of thing, see https://flows.nodered.org/?sort=downloads&term=timer&num_pages=1

      Anyways. I will add this to my list of things to play around when I next have some time… let me know if you have any luck!

      I never used the brew steps feature with CBPi when I was involved in that, sorry. You could maybe do something a little hacky where you write a kettle type that sets PWM power to the “kettle target”. Not sure how comfortable you are with this sort of stuff, but that’s one thing I can think of off the top of my head if scheduling power levels is not possible, but scheduling target temps is…

  3. Stig Berntsen

    Hi Justin, is it easy to start with Node-Red an import your app – to take a look?
    Node-red is new to me.

    • Justin

      I think it is fairly easy! Happy to help if you get stuck Stig.

      • Stig

        I`l give it a go :) Should have done this a long long time ago. Any pointers to get started is appreciated.

        • Justin

          Should be able to get node-red installed with a single command. See here: https://nodered.org/docs/getting-started/raspberrypi

          You can then run it as a service, also detailed on that link.

          Once you open the editor you can import flows. Literally just copy and https://raw.githubusercontent.com/jangevaare/brew2/master/flows_brew2.json

          and you will have it running. You will need to change a couple things like the addresses of your 1wire sensors. Navigating the editor may take some getting used to if you haven’t used anything like it before.

          • Stig

            Thanks, this will get me going :)

          • Stig Berntsen

            Sorry, never got it up and running, keep getting a lot of “unkowns” – when I import the content from the flows_brew2.json file.

  4. Thomas

    I am rebuilding my electric brewery, and I like you use of node-red. I am curious about what sensors you are using for volume measurements. It looks like some sort of pressure sensor. I am assuming you are measuring the pressure of a tube submerged in the water. Can you share any more detail?

    • Justin

      It is a 4-20ma pressure transducer (0-6Kpa) from aliexpress with a analog input board from widgetlords – this one. They have an official Node-RED plugin and several different I/O boards for RPi that you may find useful or interesting.

      I’m not connecting the pressure sensor to a tube or anything. Actually I haven’t been using it lately because I am short on kettle ports.

      Check out how Hop Rod Garage sets their system up with pressure sensors hardware wise, they have several posts on it.

      • Thomas

        Do you have a part no of the exact sensor?

        • Justin

          This one here in 6kpa. You can convert kpa to cm of water column to get an idea of the volume measuring range.

  5. Michael Kurak

    Hi Justin,

    Can you conrtol multiple kettles with Node Red…or would one be better off with some other system? I am, in particular, thinking about the possibility of controlling multiple BIAB-type systems simultaneously.

    • Justin

      Totally. There’s no explicit limit, but eventually of course you’ll have resource allocation or GPIO limitations.

      There’s ways you could, say, set up one system, and copy it several times for independent control of identical systems (say for a brew on premises operation?), within the same Node-RED runtime, changing only sensor and GPIO ids.

      Edit: I should add also, that my system isn’t set up for something like this, but I think somebody could get a simple implementation going in an afternoon. You may find some inspiration on the Node-RED forums here.

  6. Mihajlo Zivkovic

    Hi Justin,
    totally cool project. I am using Craftbeer PI past 2 years and have expansion board 3 and electronics built around it.
    Did you use new electronics for your new node red setup and do you think I can just use Raspi + Expansion board to control elements I have ?

  7. phil wilson

    Hi Justin,

    Im looking at moving away from CBPI due to its relative inflexibility and have found your posts helpful in providing direction. I was wondering if you could give some more details about using pressure sensors to gauge tank volumes?

    Im currently running a krims setup similar to your earlier build and using a dual mechanical float wired to a relay to switch the kettle pump off it the liquid level gets to high in my mash tun and switch the element off if the liquid level gets to low. While this works its a bit inelegant and the pressure sensor seems the way to go but haven found any solid info online about integrating into a homebrew setup.

    Thanks again for all the infomration you put out.

    • Justin

      Sure. The theory behind it is that you can convert a pressure reading to cm or inches of water column.

      An appropriate pressure sensor is going to be something about 0-6kpa, some use a 0-10kpa, but there is a lot of wasted range if you go that high for most homebrew set ups.

      0-6kpa corresponds approximately to 0 to 60cm of water column. Knowing the diameter of your kettle you can convert this to volume of water.

      The most common pressure sensor you are likely to find will require a 24v DC power supply and with that produce a 4-20ma analog signal based on its pressure range. You will need an appropriate analog to digital converter to then read this on your raspberry pi. I personally use an affordable board from the company widgetlords electronics – found here. They even provide a node-red library for it. There are many other options for analog to digital converter type add on boards for raspberry pi, some of them also have node-red libraries, while other would require that to be coded up yourself.

      So. This becomes a bit of a conversion exercise, that may look something like this:

      0-60cm water column to
      0-6kpa to
      4-20ma signal to
      0 to 4096 bits from a 12 bit analog to digital converter

      You can then translate that bit range into the original volume that you are after.

Leave a Reply

Your email address will not be published. Required fields are marked *