This article shows how you can scale your Node-red visualization to a
large number of sensors. We'll go beyond the tutorials that are readily
available to apply Node-RED to a common Internet of Things (IoT)
scenario. You'll see that what works for one sensor will not work for
many, and a strategy for improving it.
We start by visualizing telemetry for one sensor. It readily shows in
the textual, gauge and chart widgets of the Node-RED dashboard. But,
when we extend it to multiple sensors, the widgets are overrun with
values. We offer one possible solution by changing the problem statement.
The accompanying Youtube video
shows this in real-time.
We'll be using the MIMIC MQTT Lab
accessible on the Internet for free.
20 simulated sensors are publishing MQTT telemetry to the public
broker. We have seen this lab in previous articles and
Single sensor telemetry
We are using Node-RED
to visualize our sensor telemetry with the
dashboard plug-in, and I'll go through it in detail.
First, on the left we see a MQTT input node labelled Single sensor
subscribed to a single topic from the public iot.eclipse.org
It feeds to a debug node labelled msg.payload
that lets us see what is being received.
In the debug tab we see the JSON payload of our standard simulated Bosch
sensor with telemetry containing acceleration, humidity, pressure and
temperature. Let's focus on temperature.
We can change the temperature at any point in time through the Agent
dialog in MIMIC. Let's do this now. Later we'll visualize the
We can link the debug node to different stages of our flow and see
Next comes a json
node, which converts the JSON in the payload to a
object. You can see that the temperature value is accessible at
The JSON node then feeds into the Messages
node, which is a
counter which counts the messages flowing through it. It feeds into
our dashboard to display the number of messages received. We see it
Let's now link the json
node to the rest of the flows to visualize
more of the telemetry.
I'll start by linking the json node to the NOOP
node. This is just
a convenience node that will later let me do some easy re-linking.
It just passes the message straight through to some other nodes.
First is the Samples
counter node, it counts the number of samples
arriving. For now, this is exactly the same as the number of MQTT
We can see it in the Samples
dashboard widget that is placed in the
group in the Home
This is what the dashboard looks like.
number text widget underneath the samples widget extracts
the serial number that was received.
The temperature text widget shows the numeric value of the temperature
The gauge and chart widgets need a single value extracted out of the
payload, which is what the Extract temp
Let's change the temperature again in the MIMIC lab and see the
As soon as we click Ok
in the MIMIC Agent Variable Store dialog, the
value changes from 20000 mCelsius to 10000.
So far so good for one sensor. But, if you want to use this for many,
it will not work. Let's try by switching from the single sensor input
node to the many sensor input node labelled Bosch sensors
First, we see many more messages received as shown in the debug
tab. The simulated sensors in our MQTT lab are only generating 1
message every 10 seconds on average, so you can see how easy it is
to overwhelm the collector with messages.
Second, the gauge only shows the value for the last received telemetry,
and the chart now becomes a jumble of lines for the different sensors.
It's hard to discern anything.
Let's now modify this setup to make this scenario a little more useful.
Let's say all the sensors below 80 degree celsius are normal, and
we only want to visualize the sensors that are running too hot.
We can do this with the switch
node. It only sends along messages
that have a temperature value higher than 80 degrees.
Let's link it in, and see what happens.
I use an Inject node named clear stats
to inject an empty message to
clear the stats.
Even though further messages are being received. No samples are reported.
Let's now change one of the sensors to an abnormally high temperature.
As soon as it reports, it is visualized.
We saw how MIMIC MQTT Simulator helps in scaling your NODE-RED