Is node-red a complete IoT solution?

Where does the node-red deploy? In gateway or in the central server? Can it play the role of the IoT platform in the central server? Can node-red be placed beside a local IOT platform like OpenRemote on server? Is there any justification for this?

Up to you. Sometimes it makes sense to be at the edge, sometimes in server land. Often, both!

Yes

Of course

Apart from being extremely capable and thousands of contribution nodes that permit just about any integration/automation you can imagine?

3 Likes

Thank you Steve-Mcl,
Given your answer, I realized that it depends on my scenario. Okay, if I describe the scenario I have in my mind, can you guide me? (I'm a little inexperienced)

Fire away. If i dont answer, I am sure someone will. :slight_smile:

1 Like

Thank you Steve-Mcl,
My scenario is that I want to command and control a few drones using an IoT platform. The preparation and programming of drones is done by someone else, and I just have to communicate with them using the MQTT protocol. I have to use the IoT platform to give the drones coordinates and they should go to those coordinates and take pictures and send it to my platform.Also drones send the coordinates of the flight to the platform (in the real-time or every few seconds) so that I can see their flight route on the map.
Is it the best decision that to deploy node-red on a central server and use its flows and dashboards to create a command and control system?
Or is it appropriate to use other platforms like OpenRemote? (It is not possible to use online cloud-base platforms like IBM Watson.)
Or simultaneous use of node-red with another platform?

Interesting project and 100% possible for node-red to be the commander.

Is it the best decision that to deploy node-red on a central server and use its flows and dashboards to create a command and control system?

It is certainly a viable solution. if you intend on multiple users using the "dashboard" at the same time, I would probably suggest the uibuilder nodes for more flexibility.

I see no reason for OpenRemote to be a requirement in your proposed project. Additionally, node-red can be (and is) hosted on the cloud (both by users and companies). For example, the company I work for, we develop FlowForge which is fuss free hosting of node-red on the cloud for a very reasonable price.


In short, what you are proposing is quite simple (IMO) to realise and there is no reason (in my mind) for any other product to be involved and muddying the waters. Add to that a fantastic community of very helpful and knowledgeable folk to lean on when you get stuck.

2 Likes

Thank you again for your exact answers.
If I have a question again, I will ask under this topic.

If you mean what are the reasons for putting nr in the edge and/or centrally. You might put an instance of nr near to a collection of IoT devices if, perhaps they were in a particular building. Then you could do local processing without needing to be concerned if the wider network droppped. You might also want to consolidate and filter data there and only send on data that was important to be monitored/processed centrally.

1 Like

Thank you TotallyInformation.
Yes, I'm thinking that it would be better if I do some edge processing with NR in the gateway.
But I am thinking that I don't need to use NR in the central server. My goal is to implement on the central server a command and control system for the scenario I described above. At first, I decided to design a NodeJS web application (runs on port B) with a beautiful UI beside NR (runs on port A) and establish communication between NR and the web application to transfer data and commands (by HTTP protocol). But now I'm thinking of not using NR at all in the central server and using NR entirely on the edge side and only establishing a Nodejs web application in my central server to interact (by MQTT protocol) with NR (on edge). In this case, the user connects to the web application with the HTTPS protocol. In fact, with this work, I think I will implement a small IoT platform! :thinking:
I would be happy to hear your opinion about this work.

I'm never short of an opinion, that's for sure. :smiley:

If you do want to go that route, maybe have a look at uibuilder. That lets you host your web app in NR and facilitates the comms for you.

Whether to use NR at the centre is mostly a decision as to whether you are able and willing to code any business logic in a node.js app using code rather than in NR (which is a node.js app of course) and low-code. In theory, your own node.js app might be more efficient since you can optimise it but whether that makes a real-world difference for an IoT setup is debatable I think (I'd be very interested in finding out actually). Either way, I would recommend using something like NGINX or Caddy as a proxy anyway, you can let it deal with the TLS encryption and any authentication. It's cache will, most probably, make a material difference to performance.

You might even consider using a central NR initially to prototype the service. NR is excellent for that since it means you don't have to mess with loads of boilerplate just to get the hosting and scheduling working. You can then make a later decision as to whether to convert that to a pure code version.

If using MQTT for edge-to-centre comms, I would generally recommend running MQTT at the edge as well and then configuring the brokers as a bridge. That way, you don't have to worry about exposing the edge NR instances to the Internet and can focus on securing the MQTT bridge with TLS and id/password. Bridging also lets you control what topics are allowed to go in which direction.

I did not understand what you mean by this sentence!
What special features do the current Internet of Things platforms such as NR, Open Remote, Thingsboard, etc. have? All of them usually have the ability to support a variety of protocols, maps to show the coordinates of an thing, and features to reduce the need for coding. While all of them may not be able to accurately match the needs of a specific scenario.

Node-RED is not an IoT platform like the other apps you mention. It is a low code development platform. As such, it is a generic programming environment. You can build anything with a generally reduced amount of code.

So it is great for prototyping data-driven web services for example since it already has a web server built in that you can use with existing nodes or extend with your own custom node (like uibuilder does) and it already handles many different kinds of data extracts/transformations via simple nodes.

Maybe you already have a pre-configured set of node.js library modules that you can plug together that will do all that for you but most people don't. Therefore, you end up having to create loads of "boilerplate" code just to get going. Before you can even get to handling the custom "business" logic you need. Node-RED avoids most, if not all, of that boilerplate. Or at least reduces it down to a few connected nodes.

The main differences then between writing a fully custom node.js app vs using Node-RED to at least prototype it are that: NR is a lot faster to get started (but it still lets you do anything) but your own custom code might be slightly more efficient since you can simply miss out things that NR does as standard but that you don't actually need.

1 Like

"Node-RED is not an IoT platform like the other apps you mention." Spot on
NR is part of the #MING stack: think LAMP for IoT
Mosqitto, Influxdb, node-RED, Grafana

I use the #MING stack for IoT projects as long as I don't need multi user control of physical devices from a UI.

2 Likes

I use NR for "hobby projects", my home automation and it is great for quick prototyping & testing/verifying theories. But it is not a complete IoT solution. To be qualified as such, much more is needed. Industry 4.0 is what I would say pointing more in that direction. I'm currently working with such solutions and the requirements are rather challenging

Thank you TotallyInformation
The question that remains in my mind here (and I couldn't find the answer by googling) is if I want to use only NR (deployed on a central server) to manage thousands of objects (drones - sensors - buildings and etc.), can NR do this?
Does the NR have the ability to handle the request of thousands of objects (sometimes simultaneously) and send responses and commands to them?

Does the NR have the ability to handle the request of thousands of objects (sometimes simultaneously) and send responses and commands to them?

Yes, although

sometimes simultaneously

technically speaking, nodejs handles a single request at a time, albeit very fast, it is not truly simultaneously as there could be nanoseconds/milliseconds between the requests (that is the nature of the tech being used).

You will be limited to the CPU power.

That is correct. Some people have had success at handling 10's of thousands of requests per second with Node-RED.

A lot will depend on how fast the devices are sending data and how much data is in each packet.

But there are techniques for handling large request volumes by using horizontal scaling (multiple instances of node-red for example) and localisation (where devices are spread across sites).

In addition, careful attention to other services such as MQTT can make a massive difference. For example, getting the devices to send data to MQTT brokers (again using scaling and localisation as needed) and limiting node-red to doing processing.

Another advantage of node-red is that you can use it for rapid prototyping. So you could rapidly start to build your service using node-red and then look at parts that need optimisation and move those to something more efficient keeping everything else in node-red.

2 Likes