Over the last while we’ve been building our new cloud platform, 3DM.space, and one of the parts we’ve spent a ridiculous amount of time on is the SCADA/UI side of things.
Getting data into Node-RED is usually the easy bit these days. Making the finished SCADA screen actually look good, however, can still take hours or days — and sometimes you finish it, stand back and think... meh.
That frustration is what led us to build 3DM SCADA Canvas.
The idea is simple:
Add a background image
Drag and position your widgets onto the canvas
Select the data type
Configure how you want it to look
Repeat
It gives you a much more visual way of building a SCADA interface compared with the traditional dashboard-style layout.
We originally built the Canvas widget for 3DM.space, but Node-RED has played such a big part in what we do at Smithtek that we wanted to make an offline version available to the wider community as well.
Looks impressive, many thanks for sharing with the community. It is great to see companies who've benefitted from Node-RED giving back to the the community.
Just had an opportunity to try out 3DM canvas. Seems very intuitive and easy to use. I haven't got any SCADA devices/inputs so will feed some of my MQTT readings in to the canvas.
Bart produced a similar canvas creation package 3+ years ago based on SVG.
I used it to create a CPU monitoring dashboard. When I have time I'll rework the flow to use 3DM.
Hey Dave.
Super simple to use mate, Json in, the editor will pick up keys automatically.
Equally control buttons & widgets will output a key/value to use elsewhere.
Well that was easy - thanks for the heads-up on using JSON in the keys.
I have four sensors around the house/loft/garage/greenhouse that report T/H/P each with a unique nodeID. So all I had to do was rearrange the msg.payload so it was prepended with nodeID then feed it into your 3DM widget and select the corresponding keys. Really easy.
Here are some screenshots of my first attempt at a simple dashboard <15 minutes of effort.
One comment - would be nice if size (width, height) of say a Table could be set in the right-hand menu rather than dragging the corners of the box around manually so they "look" the same size.
Note: I left the lights on in my house so I could take a good background photo (ha, ha - I wish)
Note: I couldn't get any of the examples to Import into my version of Node-RED (v3.1.0)
msg : string[201]
"Error loading library entry 'smithtek-3dm-scada-canvas/home-energy': Error: ENOENT: no such file or directory, open '/home/pi/.node-red/node_modules/smithtek-3dm-scada-canvas/examples/home-energy.json'"
I'll try creating the folder manually later (when I have some free-time) and also try installing a fresh version of 3DM on one of my RPi(es) running Node-RED v5.
Note: Just found the "page" feature - really nice - as creating multiple pages is a breeze.
Not to de-rail this thread but just a reminder that I reproduced Bart's great work but using UIBUILDER as well. Examples are in the forum, the flows site and in Node-RED itself.
Obviously though, this is far more polished and complete.
Did a Google search for 'home automation' images, found a suitable photo, adjusted the brightness and contrast then used it for the background. Here it is if you want to make use of it..
Yes, style and everything is similar, I wonder if AI is involved!! Just had a quick charwith ChatGPT and it seems eager to assist!!
Had trouble trying to load the images, but the file extension seemed to change from .layout to .json (NR 5.0.7, but about to upgrade, nodejs24 on Ubuntu 24.04)
Did you stop and then restart Node-RED (after installing the node using Manage Palette) ?
This is what the bottom part of my palette manager looks like...