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
Profiling of different users
Different access rights and permissions
Instance and synchronous flow of control signals
Live data visualization
Customizable server and easy installation
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 socket.io features.
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.
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 socket.io 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:
IP address of the data-server installed by user.
Unique id of the device/PC (Device in case the data server is running on an embedded system)
Password for the authentication
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.
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.
Some more widgets can also be added to make data more easy for viewer.
3D visualization support can be integrated with help of WebGL
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.