Some ideas have been rattling around in my head for quite awhile regarding distributed labratory/test systems. Mach 30 is distributed, so it stands to reason that it’s testing tools should be as well. “Here’s a little concept I’ve been workin’ on” for the last few days. It’s very high level and doesn’t address anything like user roles for sending commands, etc.
Each site is connected by a VPN, and a Python server uses a websocket as the transport mechanism to get shuttle data and commands between the hardware and the web client(s). Web based clients cannot create the usual TCP socket connections directly, but most browsers support websockets now. Using web based clients would give us a much richer and more platform neutral UI, and using a websocket decouples the client from the low level heavy lifting of communication with the hardware. Video could also be streamed over the VPN connection so that those at other sites could watch the test as the data was streaming through.
The web server is the piece that I’m still thinking about. There could be a central web server that contains all of the UI combos that Mach 30 uses, and the user just plugs in which websockets/channels/events to subscribe to. On the other hand, each Python server could have a coupled web server so that when you connect you get a UI that’s ready to go.
In the diagram, the web client UI at Rocket Shop 1 could be configured to display data from multiple sources at once if there was ever a need for that, although none come to mind right now.