WebPDA

Bringing Real-time Data to the Web


Fast and Light

Built on WebSocket. Uses binary format for value updates and JSON for other info, which gives you the maximum efficiency and flexibility.

Highly Extensible

Extensible to any data source from any area: SCADA, Science, Finance, Health, Internet of Things and much more. EPICS and OPC support are currently included.

Language Independent

Can be implemented with any language that supports WebSocket. Current implementation is based on JSR356 on server side and JavaScript on client side.

Super Easy API

Focus on your data, instead of communications. Allows binding a widget to data in one line of code.

Safe

Built-in authentication and authorization support. Data can be encrypted with TLS.

Open Source

WebPDA is licensed under EPL and maintained by the community on GitHub.

How it works

WebPDA Server sits in the middle to bring your real-time data to the web tirelessly.

WebPDA Architecture

JavaScript API

Few lines code would allow you connecting to your data:

					var wsUrl = "ws://localhost:8080/webpda/webpda";
					var wp = new WebPDA(wsUrl, "myname", "mypassword");
					var pv = wp.createPV("sim://noise", 1000, false);
					pv.addCallback(function(evt, pv, data) {
					    switch (evt) {
					    case "conn": //connection state changed
					        break;
					    case "val": //Value changed. Add code here to process the new data	
					        break;
					    case "bufVal": //Buffered values changed        
					        break;
					    case "error": //error happened        
					        break;
					    case "writePermission": // write permission changed.        
					        break;
					    case "writeFinished": // write operation finished. 
					        break;
					    default:
					        break;
					    }
					});
					
					//Write PV.
					pv.setValue(10);
					
					//Close PV
					pv.close();
				

Pre-wrapped widgets allows binding a widget with PV in one line of code:

					<div class="webpda-widgets" data-widget="rgraph-gauge" data-pvname="sim://noise"></div>