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.

  4 comments for “Brewing with Node-RED pt 2: My Dashboard

  1. Jay
    July 8, 2019 at 8:43 am

    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
      July 8, 2019 at 9:48 am

      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
    August 28, 2019 at 7:29 pm

    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.


    • Justin
      August 28, 2019 at 10:56 pm

      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

      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…

Leave a Reply

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