Jump to content

WO external control and polling frequency


Patrick Pummill

Recommended Posts

Hello,

I'm in the middle of building an installation that consists of three independent display servers being controlled by an ipad based control system by Kramer. At it's simplest, we are using the ipad to Play, Stop, and Pause Aux timelines with the UI showing the states of the Aux timelines.  And ideally a counter showing the time.

While wading thru the forum I found this statement:

"One shot polls are interrupt based and if sent too often can impact system performance."

When observing the packet stream between the program Universe and WO production,  it appears that a getStatus query using "2" for the subscription function is sent about every 30 ms.  If we do something similar with the Kramer Control system for three display servers and multiple Aux timelines, is there any way to determine what kind of impact that might have?

 

Also, a syntax question:

Elsewhere in the forum I came across this specific syntax for a getStatus query:

getStatus 1 "TaskList:mItemList:mItems:TimelineTask \"Movie1\""

The users' guide Control Protocol section defines only the basic getStatus command and the expected reply, but not in the detail noted above.  Is there a document in existence that shows that level of detail for each command?

Or do I need to use a program like Universe to reverse-engineer something similar for Kramer Control?

thank you for your help

-patrick

 

 

Link to comment
Share on other sites

If you use the subscription model, there's no need to repeat the command. Whilw the subscription is active, WO will tell you whenever there's a change, without you having to poll it constantly. That's the whole idea. The additional parameter follwing "getStatus n" (where n is 0 for start subscription and 1 to end subscription, if memory serves me correctly) is the path to the auxiliary timeline to subscribe to. Without this parameter, main timeline is targeted.

Mike

Link to comment
Share on other sites

Hi Mike,

thank you for your response. Swap the 1 and 0 and you'll be correct with respect to the subscription tag.  I have a couple of questions that is probably obvious to more experienced programmers than I:

1. To display an Aux Timeline position while it's running accurate to .1 second on an external device, I would have to send a getStatus 2 command every .05 seconds.  Would you say this is a correct statement?  

2. If WO receives the following command: run "" or getStatus 1 "" , will the extra double quotes cause any errors or problems?  Or will it just simply ignore the double quotes if nothing is between them.  I ask because I'd like to have a single command operate either the Main Timeline or an Aux Timeline depending on what's between the quotes.  This appears to work when using Putty to send commands.  

Thank you

-patrick

Link to comment
Share on other sites

For 1, I would not use polling for that. Use the subscription model intead. WO will then tell you when there's any abrupt change. Interpolate/extrapolate intermediate values based on the data you get.

For 2, just give it a try. If it works then you should be good to go.

Mike

 

Link to comment
Share on other sites

  • 6 months later...

It looks like the subscription setup only sends data if a timeline is playing every 5 seconds.  Is there a way to adjust that?  Secondly, I see the data at the end on an aux timeline.. First integer is play status 0=stopped, 1=paused and 2=playing.  The next number is the playhead position in milliseconds???  The third integer is some type of system time, also in milliseconds?  Does this all sound right?  No one from dataton has contacted me, even though I sent an email.  Is there a specific contact I can send a message to, to get more information about the API?  Thanks again.

Link to comment
Share on other sites

  • Moderator
1 hour ago, jaygrovr said:

... No one from dataton has contacted me, even though I sent an email.  Is there a specific contact I can send a message to, to get more information about the API?  Thanks again.

I see no evidence of you entering your request in the Dataton Service Desk system. Not sure where you sent an email, but that is not the way to start your request, as described in 

 

Link to comment
Share on other sites

Yes, I believe the last (often large) number is the "system time". All times are in mS. WO will send such messsages to subscribers when there's an abrupt change (such as a timeline starting/stopping). In between such abrupt changes, WO will send an update every couple of seconds anyway. You then need to extrapolate from the most recent value if you need more continuous time position data.

Mike

Link to comment
Share on other sites

Your observation is mostly correct, there is about 5 seconds between updates if there is no change in Run, Halt, or Kill status.  However, if there is a change in status, then the update is reliably instantaneous.  The work load on the machine can have an impact on the frequency of updates.  That second number is World Time

The following link is from the knowledge base about the proper syntax for getting status from aux timelines which I found helpful.  https://knowledge.dataton.com/knowledge/get-status  

One issue I ran into was with the number of active subscriptions.   The control system I'm working successfully parses getStatus feedbacks for up to three concurrent aux timeline status subscriptions.  When I add a fourth it turns into a string of "/x0D".  I was unable to determine if that was a problem with what Watchout was sending or with how the control system was interpreting the data.  And because I ran out of development time, I worked around that issue by limiting the number of active subscriptions.  Using Command ID Tagging may have been the solution to that issue, but I stopped digging once I chose the workaround.

 

Link to comment
Share on other sites

Im very surprised that the workload can affect this.  It seems like such a trivial thing to send out.  In my case, i need to monitor many more than 3 aux timelines.  I will most likely need to monitor 10-14 of them.  I dont need position, more of if its playing or stopped.  Ideally subscribing to the timeline folder should provide the state of all timelines within that folder.

I also need to find out more about the command ID.

 

 

Link to comment
Share on other sites

Thanks Jim, will the ID tagging help me get status for more than 10 aux timelines in the subscription method?  How does the ID tagging work with subscription?  Does it just prefix each response with the same ID?

I have another unrelated question.  WHen I try to authenticate on my system, I have to send the command three times.  The first time I get "Error 7 0 "Unrecognized command:"  The second time the response is "Error 7 0 "Unrecognized Command: "authenticate"", and then the third time I get "Ready "6.5"....     I send the same exact string command each time.  Thanks

You should now see an email for request of additional API information, hopefully this is not a big deal.  I am not sure why its so difficult to get this information, or why its hidden.

Edited by jaygrovr
Link to comment
Share on other sites

  • Dataton Partner

I've used UNIVERSE show control to retrieve timecode from more than 3 or 4 aux timelines at the same time. I can't recall how many I used but more like 10 or so.

Still one should keep in mind that the network is also used to synchronize the system etc. and that polling to many timecodes at a time does put some load on the system.

You should have no issue sending the authentication command though. The only times when I saw something like this was when a nother higher level of control had a grip on the display cluster, e.g. WATCHMAKER or WATCHNET.  You should not send "autheticate 1" to a cluster while being ONLINE on WATCHMAKER at the same time.

Link to comment
Share on other sites

  • 4 months later...
  • Member

The thing about command tagging I observed is that, the tag only get returned on the first reply. For example:

[16]ping<CR>
[16]Ready "6.6.5" "WATCHPOINT" "Windows" false

If you use a subscription based commands such as getStatus, subsequent replies will not have the tag returned:

[18]getStatus 1 "TaskList:mItemList:mItems:TimelineTask \"Intro\""<CR>
[18]
Status "TaskList:mItemList:mItems:TimelineTask \"Intro\"" 2 6427 1858406
Status "TaskList:mItemList:mItems:TimelineTask \"Intro\"" 2 11460 1863418
Status "TaskList:mItemList:mItems:TimelineTask \"Intro\"" 2 16459 1868434
Status "TaskList:mItemList:mItems:TimelineTask \"Intro\"" 2 21475 1873450

I remember I had one similar status polling requirement for a 3 blended projection a while ago — and we needed to query the status of multiple auxiliary timelines and also the position of the video assets within the auxiliary timelines. Like Patrick, we ended up solving it using external solution. For us, we wrote a proxy utility that keep track of the auxiliary timelines' statuses and the objects' positions (there was no command to query for object's tween position or those variables defined under Input).

 

The earlier copy of the utility that I used for that project is preserved here at : https://github.com/eddyyanto/watchout-proxy

watchout-proxy.jpg

Link to comment
Share on other sites

  • Moderator

Hi Eddy,

 

The Command ID tagging works in the way that the ID you set before a command you send to WATCHOUT will be added before the reply back from WATCHOUT on that specific command.

So if we look at your example:

[18]getStatus 1 "TaskList:mItemList:mItems:TimelineTask \"Intro\""<CR>
[18]
Status "TaskList:mItemList:mItems:TimelineTask \"Intro\"" 2 6427 1858406
Status "TaskList:mItemList:mItems:TimelineTask \"Intro\"" 2 11460 1863418
Status "TaskList:mItemList:mItems:TimelineTask \"Intro\"" 2 16459 1868434
Status "TaskList:mItemList:mItems:TimelineTask \"Intro\"" 2 21475 1873450

The only line containing a command is the first one with a [18] at the beginning. Since the command "getStatus 1 ..." does not have any reply the system will only reply with the ID, [18] in this case.

The "Status .... " replies are not coming from the "getStatus" command, they are generated by the system as a request on a "getStatus" subscription.

Unfortunately this is how the system works and the same goes for the reply time for the subscribed timeline status which is fixed and cannot be changed.

 

Hope this answers some of your questions.

 

Best regards,

/jme

 

 

Link to comment
Share on other sites

  • 2 weeks later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...