In general:
Raspberry PI if you want network, parallelism and a more or less known environment (it runs Linux).
If you only need network and "single threaded" applications as well as a small form factor you probably want to use a NodeMCU/ESP.
If you can go completely without networking and you use a serial bus or something like this for communication (if you need it at all) you may choose the Arduino.
However, the ESP and Arduinos are mainly programmed in C/C++ (some also run Lua or Python). You should keep this in mind when you get to your final decision.
For Node.JS however your only choice (as far as I know) is the Pi. But in the end they all can do the same for IoT. Only the available libraries are different on the Raspberry vs Arduino (which includes the ESP and NodeMCU).
In general:
Raspberry PI if you want network, parallelism and a more or less known environment (it runs Linux).
If you only need network and "single threaded" applications as well as a small form factor you probably want to use a NodeMCU/ESP.
If you can go completely without networking and you use a serial bus or something like this for communication (if you need it at all) you may choose the Arduino.
However, the ESP and Arduinos are mainly programmed in C/C++ (some also run Lua or Python). You should keep this in mind when you get to your final decision.
For Node.JS however your only choice (as far as I know) is the Pi. But in the end they all can do the same for IoT. Only the available libraries are different on the Raspberry vs Arduino (which includes the ESP and NodeMCU).
Thank you for your deep insights into this :). It will surely help me to get prepared for this.
I want to create a system that I can control from the internet as well, so if I'm not at home then also I should be able to control switches.