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.
Node-RED is a popular framework for visual programming. It is included with Raspbian, the official operating system of Raspberry Pi, and sees wide use for interfacing IoT devices and task automation. Programming in Node-RED is flow orientated – essentially signals or messages propagate through nodes which each deliver some functionality (e.g. directing, modifying, or expanding a message)
The messages themselves may be invoked through interaction from a user (e.g. a button click on an associated dashboard), some scheduled regular injection, various input nodes, etc. For example, you can have a node which streams messages from a DS18B20 temperature sensor. You may route that message to a node that provides some kind of smoothing functionality, then to to a UI element that displays the current temperature.
While a dashboard is not necessary for a Node-RED project, they are commonly used. Lots of basic UI widgets are included with Node-RED-dashboard, the default dashboard package. These should cover most of what you would want to use, but again, you can also write your own widgets. Elements from Angular Material can be used without any extra setup or configuration, and this makes it relatively easy to create fully customized, modern and attractive widgets. You are not restricted to using Node-RED-dashboard however, and can use essentially any other front end library (e.g. vue.js) that you may want to build your dashboard if you want further flexibility. Check out the short video below for a demo of a custom ui widget I made – the lightning bolts indicate power and ability to power each of my two brewery elements (I prevent powering of both elements simultaneously with my Node-RED dashboard)
It’s easy to see why Node-RED is so popular across the complete range of programming experience levels and applications. About 18 months ago I think it was, I began playing with Node-RED myself. The programming style was a bit different from what I was used to, but eventually I became somewhat proficient in it and built a dashboard to control my homebrewery.
In comparison to CraftBeerPi, which is probably the most popular software on the Raspberry Pi for brewery control right now, a Node-RED dashboard is certainly more “assembly required”. It does have the benefits of wider use even if that use is not homebrewing specific though. The Node-RED discourse forum has thousands of questions and posts from other hobbyists and makers on how to do specific things with Node-RED, which can be easily related back to homebrewing. In comparison to the CraftBeerPi project, development is much more active, the project is much more stable, and it is also truly opensource (Apache 2.0 license).
For a user wanting custom functionality, endless control, and not afraid to get their hands dirty, Node-RED a good match.