webpods: accessing control data through web ......webpods: accessing control data through web...
TRANSCRIPT
Web pods Accessing Control Data Through Web Standards (WebSockets, JSON, HTML, CSS)
WebPODS when installed
Motivation Create web pages to display control system data
WebPODS (Protocol Oriented Distribution Service) • The Web PODS aims to provide real-time publish/subscribe
communication using • WebSockets
• JSON
• Pure HTML/CSS widgets
• Main benefits: • Uses web standards (any web client in any language)
• Widgets can be configured through standard CSS
• Data access outside of control network (possibly WAN)
• Web pages do not need to live on the same server where the gateway is
Chrome extension: Simple Web Socket Client
HTML Probe (Danielle Connolly, UMich)
Test javascript client (Danielle Connolly, UMich)
Text monitor examples
LED examples
WebPODS Specify server location
Adding text-monitor
Adding led
Specify color for “LOW” enum value
GWT client (Enrique Schuhmacher, BNL)
Using CS-Studio off site through Web Pods
WebPODS Architecture
WebPODS Server
WebPODS clients
Web Pods server configuration [xxx@diirt ~]# more .diirt/pods/web/mappings.xml
<?xml version='1.0' encoding='UTF-8'?>
<mappings version="1">
<mapping channel="calibration/constants"
substitution="file:///path/to/file/table.csv"
permission="READ_ONLY"/>
<mapping channel="public-.*" permission="READ_WRITE"/>
<mapping channel="cf-tag-(.\w)" substitution="=cfQuery($1)"
permission="READ_ONLY"/>
<mapping channel="sim/(.*)" substitution="sim://$1"
permission="READ_ONLY"/>
</mappings>
Access security planned, not yet implemented • Use wss (like https) for authentication • Use username/role/unix group/host for authorization Be careful not to expose too much
Web Pods
• Rebroadcast data using Web sockets and JSON • Play nice with firewalls, get WAN notifications, data available to web tools, server is one class
(no logic, a pass-through to pvmanager), should scale (different sockets on different servers, not tested)
• Not a substitute to CA/PVA. JSON serialization problems (verbose, does not follow IEEE standards for double, no “delta” updates). Not intended for heavyweight applications.
• Uses • Active web pages • WAN gateway for CS-Studio and other tools • Easy way to make data available to CS-Studio and other tools
• Setup a directory shared through web-pods
• Write csv or jvtype files with scripts or text editors (updates are sent)
• Something similar could be done with PVA (Pva Pods) • Already designed pieces (e.g. mapping logic) to be reusable
Web Pods
• What’s done: • Version 1 specification done and implemented • Preliminary Javascript API • Finalized HTML/CSS compliant widgets (text-monitor, led, table, bubble-graph) • Being used in production at UMich for 6 months under light load. No downtime. • Client-side Java API • Client-side and server-side formulas
• What needs to be done: • More widgets • Client-side security (server side is implemented) • Load tests • Review Javascript API • Client-side reconnected and ping/pong
• What could be done: • Investigate binary protocols (for large data or pre-calculated graphs) • Make single widget spec for HTML and JavaFX widgets
WebPODS
• Website • http://diirt.org/
• Wiki • https://github.com/diirt/diirt/wiki/WebPODS
• Specs available on the WIKI: • https://github.com/diirt/diirt/wiki/WebPods-Protocol-Specification-v1
• https://github.com/diirt/diirt/wiki/JSON-serialization-for-vTypes-v1