Patrick Pummill Posted March 16, 2020 Report Share Posted March 16, 2020 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 Quote Link to comment Share on other sites More sharing options...
Mike Fahl Posted March 21, 2020 Report Share Posted March 21, 2020 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 Quote Link to comment Share on other sites More sharing options...
Patrick Pummill Posted March 22, 2020 Author Report Share Posted March 22, 2020 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 Quote Link to comment Share on other sites More sharing options...
Mike Fahl Posted March 24, 2020 Report Share Posted March 24, 2020 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 Quote Link to comment Share on other sites More sharing options...
jaygrovr Posted October 21, 2020 Report Share Posted October 21, 2020 @Mike FahlWhere can I find more documentation on the subscription model? I dont see anything in the standard manual. Thanks Jason Quote Link to comment Share on other sites More sharing options...
Mike Fahl Posted October 21, 2020 Report Share Posted October 21, 2020 Please contact Dataton Support for obtaining access to these details. I no longer work there, so I don't want to pass along information that's not in the official documentation. Mike Quote Link to comment Share on other sites More sharing options...
jaygrovr Posted October 21, 2020 Report Share Posted October 21, 2020 Ok where can I find more info about aux timelines status and subscription options and command switches? Quote Link to comment Share on other sites More sharing options...
Moderator jfk Posted October 21, 2020 Moderator Report Share Posted October 21, 2020 Quote Link to comment Share on other sites More sharing options...
jaygrovr Posted October 24, 2020 Report Share Posted October 24, 2020 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. Quote Link to comment Share on other sites More sharing options...
Moderator jfk Posted October 24, 2020 Moderator Report Share Posted October 24, 2020 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 Quote Link to comment Share on other sites More sharing options...
Mike Fahl Posted October 24, 2020 Report Share Posted October 24, 2020 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 Quote Link to comment Share on other sites More sharing options...
Patrick Pummill Posted October 24, 2020 Author Report Share Posted October 24, 2020 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. Quote Link to comment Share on other sites More sharing options...
jaygrovr Posted October 24, 2020 Report Share Posted October 24, 2020 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. Quote Link to comment Share on other sites More sharing options...
Moderator jfk Posted October 24, 2020 Moderator Report Share Posted October 24, 2020 Command ID tagging is quite simple, but effective. It is covered in the User Guide. Quote Link to comment Share on other sites More sharing options...
jaygrovr Posted October 24, 2020 Report Share Posted October 24, 2020 (edited) 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 October 24, 2020 by jaygrovr Quote Link to comment Share on other sites More sharing options...
Dataton Partner RBeddig Posted October 25, 2020 Dataton Partner Report Share Posted October 25, 2020 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. Quote Link to comment Share on other sites More sharing options...
Member Eddy Yanto Posted March 18, 2021 Member Report Share Posted March 18, 2021 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 Quote Link to comment Share on other sites More sharing options...
Moderator jme Posted March 24, 2021 Moderator Report Share Posted March 24, 2021 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 Quote Link to comment Share on other sites More sharing options...
Member Eddy Yanto Posted April 7, 2021 Member Report Share Posted April 7, 2021 Hi jme, Yes, that's how I understood it and I am well aware of that. Thanks for the additional explanation to the thread. Best regards, Eddy Omnigram Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.