You can use a Websocket connection to Ventuz to load/unload scenes and control them. The Websocket URL is ws://<Machine IP>:21404/remoting/1.0/Remoting4/WS/. When the connection is established you can send messages in a special JSON format to remote the Ventuz Runtime.
The format of a Ventuz Websocket Remoting message (request) looks like follows:
{ "Address": <address>, "RequestID": <int>, "Time": <int>, "Arguments": <arguments array>, "ArgumentTypes": <argument types array> }
The Address and RequestID entries are mandatory! Time is only required if you want to schedule a command in the future. Arguments and ArgumentTypes entries are only needed for certain Remoting messages that require arguments and where the types of the arguments are not self explaining (JSON is not type safe). <address> must be a string according to the addressing conventions specified in the Generel Commands section of the Remoting 4 Protocol. <int> is an integer value. <arguments array> is an array in JSON format carrying the arguments for the remoting message. <argument types array> contains the encoded types of the arguments used in <arguments array>. This type encoding is based on the OSC protocol (see Supported OSC Types in Remoting 4 Protocol). This type hinting is sometimes necessary because in JSON you cannot distinguish e.g. between a float and double number.
The response message is also encoded as JSON string. The content and format of the response depends on the request and conforms to the Command Reference.
Here are some request message examples.
Get information about a render pipe:
{ "Address": "/0000/Info", "RequestID": 11 }
Let Pipe 0 load scene "Debug/SceneDataTypes.vzs":
{ "Address": "/0000/Load", "RequestID": 15, "Arguments": ["Debug/SceneDataTypes", 257], "ArgumentTypes": "s,i" }
Get Status info about scene loaded to Pipe 0 and there Port 0:
{ "Address": "/0000/00/Status", "RequestID": 23 }
Load scene with IIID GQZY into first port of scene with IID RRFD:
{ "Address": "/RRFD/00/Status", "RequestID": 21, "Arguments": ["GQZY"] }
Set SceneData property with address Scalars.Float to 987.65:
{ "Address": "/GQZY//.Scalars.Float", "RequestID": 24, "Arguments": ["987.65"] }
Set SceneData property with address Arrays.DoubleArray to array [9.65, 12.23, 92.1000000000004] of type double[]:
{ "Address": "/GQZY//.Arrays.DoubleArray", "RequestID": 54, "Arguments": [[9.65, 12.23, 92.1000000000004]], "ArgumentTypes": "[d]" }
Cue Template on first Port of Pipe 0:
{ "Address": "/0000/00/Cue", "RequestID": 82, "Arguments": [16, "VlREMSBUdmVudHV6Oi8vdGVtcGxhdGVzL3RlbXBsYXRlcyU3Q3JlbW90aW5nNCUyMGRlbW8lMjAzJTIwc2ltcGxlL0FuaW1hdGlvbjEvRl9hbmRfVl9JbmZvYQZiYW5hbmEETmFtZYAKUHJvcGVydGllc2EABk9yaWdpbmcAAAAABldlaWdodP///w==", "D2F053C5-77F4-49BC-9C0E-CCF8F9F57516"] }
Take Template with Cue ID D2F053C5-77F4-49BC-9C0E-CCF8F9F57516:
{ "Address": "/0000/00/Take", "RequestID": 91, "Arguments": ["D2F053C5-77F4-49BC-9C0E-CCF8F9F57516"] }