Requirements : 1. Real-time web based HMI solution compatible with major browsers. 2. Receiving data stream from multiple types of devices, e.g. PLC, RTU, Customer Micro-controller, MODBUS RTU/TCP, into a real-time server. 3. Data visualization using dynamic vector graphics. 4. Keeping logged data for at least one year. 5. Multiple protocol support, e.g. HTTP, MQTT, TCP/IP, MODBUS TCP, WebSocket etc.
Solution : 1. Communication with the devices over TCP/IP & WebSocket with SSL/TLS. 2. Receiving event based data from the devices and processing them asynchronously. 3. Use of distributed database to store large data (almost 200GB / per year). 4. Using different Database to dump data older than one month. 5. Use of Python/NodeJS async architecture to fasten the query and performance. 6. Use of Jasper Reports to generate the reports and Chart JS to generate the charts / graphs. 7. Use of WebSocket to make the Graphics browser enabled. 8. Use of Redis Server for caching live data.