Online SCADA (supervisory control and data acquisition)


This is a web application which is like a online control and monitoring system. In other words, we can say it as SCADA. Normally SCADA systems are run on local machine and controls the sub system or a complete different system offline or at interanet, But Neuroscada delivers the same functionality that too over the internet. It means now, any incharge person can monitor a system according to his/her rights on same system.






  • Online and offline operation
  • Interactive GUI
  • Profiling of different users
  • Highly secured
  • Different access rights and permissions
  • Instance and synchronous flow of control signals
  • Live data visualization
  • Customizable server and easy installation


Explanation (Server)


This web application is developed by using NodeJS technology which is one of the famous and known server-side scripting to make synchronous calls and really very famous for features.

I completely used only javascript to code the server because the later part of web application after signup, registration and login is all code.

I could have code it in python and used nodejs for socket part, but i think nodejs is now grown up :) and morever i have put Nginx server in front for all the http requests and proxy the nodejs server behind it. For database, i used mysql server which is good because data is huge in these kind of projects.


Explanation (Front-end)


This was some information about server. Let's come to the frontend. I could have used AngularJS (my favourite) for the frontend routings and client data management, but i used Sugarskull for the client side routing because even backboneJS was so much extra for this project. In this project, main task as just to manage data and interact with visualization, which i did by developing a clean API in java script using JQuery to manage the UI DOM.

Data is simple stored in form JSON. For communication to server, AJAX and were used. For small and less priority communication, i used AJAX and for live visualization and monitoring, sockets were used.

For the View part, HTML5, JqueryUI, CSS were intensely used. One can't even think to step in the world of web development if these 3 are not strong. There were also some 3rd party library used to rush up development, which i don't think is so important.

FInally, we are sone with the front-end part of this webapp. Usually it's seen that now a days front-end is becoming more complex as its taking much load of the server side processing and that was possible only because now a days, almost every mobile device like smart phones, tablet, laptop and PCs have good processing power. That's why, using some of the processing power of the client machine is a wise decision and also save server from immense load during the time of peak traffic.


Operation and working


As now you know that this SCADA system is working over the internet, This is easily understood that there is need of live connection which can not only send the control signal to the remote system but also recieve the data and push into the web page. Working is a little complex.

As this is a web project, it needs a server- client architecture which is very common and you all can understand and have an intuation about it in mind. So there is a server for this web app running and client is every where for the person who opens the web url which has DNS IP address of the main server. 



After connecting to the main server, client is recognized and authenticated with the user id and password and server get to know about the corresponding data server either from backend data base or from the client field on web page. This information can be made mandatory during the registration of the user. For more than one data server or remote functional unit, there can be a add-more-device button in the user settings panel.

Now, what should an user give to server as an information of his/her data server. These details are:

  1. IP address of the data-server installed by user.
  2. Unique id of the device/PC (Device in case the data server is running on an embedded system)
  3. Password for the authentication
  4. Type of device (Optional)

Similarly, device/PC should also be provided with the details like their own device id so that they can recognize themselves. Server ip address and password for authentication. Please note that Data-server is nothing but it is a process which runs and connect to all the sensors and actuators of a manufacturing unit/Plant (In most of the case, via intranet).

In this way, complete chain of connection is set up with help of Socket.IO TCP sockets and ZeroMQ technology. Below is the diagram of the connection topology.



With the help of this connection sequence and zmq technology, live data can be pushed into the web browser.

Future Extensions


  1. Android and IOS application can be developed in conjuction with the web application and data servers. which can also support the live data streaming and representation on the mobile screens.
  2. Some more widgets can also be added to make data more easy for viewer.
  3. 3D visualization support can be integrated with help of WebGL
  4. On the embedded side, nide GUI should be made, in order to change the password of the data server from the hardware. In case, PC is used, there should be a small GUI startup process to configure and modify system. (prefferably in java swing).


For more information and some other discussions, contact me on my email address.