bitfocus / companion-module-extron-smp351

Companion Module for the Extron SMP 351
MIT License
0 stars 3 forks source link

Additional Commands - Extron SMP351 #12

Closed peppertechie closed 4 years ago

peppertechie commented 4 years ago

Requesting additional control for the module "companion-module-extron-smp351"

Manual is at the following link with control info starting on page 105 https://media.extron.com/public/download/files/userman/smp_300_series_68-2238-01_K.pdf

Looking for the following commands to be added: Recall encoding preset $number (to choice of archive or confidence) Recall streaming preset $number (to choice of archive or confidence) Start RTMP stream (on choice of archive or confidence) with feedback on stream status

I have a unit, but it's at church so testing will be intermittent as I am not there much right now.

peppertechie commented 4 years ago

I'm going to attach a bounty to this request. Willing to discuss actual value.

EventReplay commented 4 years ago

@peppertechie sorry I've not had time to do anything with this, have you got a dev enviroment for testing?

peppertechie commented 4 years ago

@EventReplay something I can give you access to or something for me to test in?
Since we aren't streaming from church right now I may be able to bring it home where I have companion running. I don't yet have a production implementation at the moment so dev should be possible.
I have Companion on a Pi4 and an 2012 Mac Mini for config and console right now.

EventReplay commented 4 years ago

Something for you to do some testing before code gets pushed to a beta build. I have no way of testing as I don't have access to a unit and the powers that be quite rightly like confirmation testing has been done before inclusion. I've started to add sending additional commands which could be tested first, then I'll look at feedback. I could create a branch to test code. @bryce-seifert are these additional commands of interest to you and are you willing to do some testing?

peppertechie commented 4 years ago

No problem. I should be able to get a dev environment ready by the end of the weekend. I'm not sure how to pull in a branch yet, but can figure it out.

bryce-seifert commented 4 years ago

My access to a box is currently quite spotty, but I may be able to get in some testing.

EventReplay commented 4 years ago

@peppertechie I'll create a branch when I get a chance. @bryce-seifert whatever you can do I'm sure would be appreciated.

EventReplay commented 4 years ago

@peppertechie I've created a branch add-commands, you could just replace the index.js from here into master for a test.

peppertechie commented 4 years ago

@EventReplay thank you for the new commands. I have completed testing the initial version. Everything works except the start and stop RTMP commands. I have specific notes at the bottom to help correct this issue.

I tested the basic commands with the current version, then updated the index.js and restarted Companion. I retested the basic commands and then moved onto the new ones.

Let me know if you need more information and when further testing is needed.

Status of testcases with new index.js

Existing commands regression Route input to output A or B Input 1 to A - Pass Input 2 to A - Pass Recall a saved user preset - not tested Recall a saved input preset - not tested Recall a saved layout preset Recall Layout 1 - pass Recall Layout 9 - pass Recall Layout 10 - pass Stop/Record/Pause Record start - pass Change layouts while recording - pass Record pause - pass Record pause to restart - pass Record Stop - pass Extend recording - not used Feedback Change colors for record state - pass


New Cannot test B as I only have A and Confidence A

Recall saved stream preset Recall 1 on A - Pass Recall 2 on A - Pass Recall 3 on A - Pass Recall 1 on Confidence A - Pass Recall 2 on Confidence A - Pass Recall 3 on Confidence A - Pass

Recall saved encoder preset Recall 1 on A - Pass Recall 2 on A - Pass Recall 20 on A - Pass Recall 1 on Confidence A - Pass Recall 2 on Confidence A - Pass Recall 21 on Confidence A - Pass

RTMP Stream Start Stream - FAIL Stop Stream - FAIL


RTMP Failure notes

In index.js you have

        case 'rtmp_stream':
            cmd = '\x1BE' + opt.rtmp_stream + '*' + opt.state + 'STRC';
            break;

Using TCPDUMP I captured "E1*1STRC"

This looks to be the command for enabling or disabling a stream

The Extron is returning a "E13" – Invalid parameter (number is out of range) for this command

It's also not the command I need to start a push RTMP stream to YouTube, Facebook, or an Nginx RTMP server

Working commands Connecting to the Extron via Telnet I was successful in starting, stopping, and getting stream status with the following.

User guide p126 RTMP Stream Enable/Disable Enable RTMP push stream Enable push stream on Archive Ch 1 Esc E1*1RTMP View RTMP push stream Esc E1RTMP Query primary RTMP Status Esc s1*1RTMP

Telnet capture ^[ is escape key

^[e1*1RTMP
RtmpE01*1
^[E1rtmp
1
^[s1*1RTMP
1
^[E1*0RTMP
RtmpE01*0
^[E1rtmp
0
^[s1*1rtmp
0
EventReplay commented 4 years ago

Thanks for such a detailed response. Sorry my mistake I used the wrong command for stream. Amended command should be good now.

peppertechie commented 4 years ago

Did a quick regression and tested the Start and STOP RTMP. Everything passed.

To clarify the feedback feature this is the entry for the status I am requesting. Thank you so much.

Original request Under "RTMP Stream Status" Query primary RTMP Status (this one is Offline or Live and changes after the connection is actually made to the destination)

EventReplay commented 4 years ago

@peppertechie I have now added some feedback for the primary stream only at the moment.

Feedback works like this at the moment, when you start a stream a response from the unit will trigger the bank colour change, then the heartbeat takes over querying status every 5 seconds.

Let me know how this works.

peppertechie commented 4 years ago

@EventReplay

The first load and tests it seemed to get stuck in the ON position, but after I cleared everything my test cases were successful and I couldn't cause it to get stuck. I'll make sure to run extra tests in future version to see if I can replicate it getting stuck.

Does the state visibly change for the following cases (tested both the positive and negative state option): Start stream from Companion: Pass Stop stream from Companion: Pass Start stream from Extron GUI: Pass Stop stream from Extron GUI: Pass

I couldn't come up with any more test cases for state so this version passes as far as I am concerned.

EventReplay commented 4 years ago

I think the stuck ON is because I changed code for on/off and prob needs an updaterscript to sort that if you had an existing companion config already. I generally reset companion and start a fresh for testing.

So if happy with how feedback works your just missing feedback for the backup stream?

peppertechie commented 4 years ago

I am happy. This is really great.

I have not used a backup stream yet, but I think it would be appropriate to add for completeness.

EventReplay commented 4 years ago

Secondary stream feedback added, that should fulfill your request hopefully. If you have no issues I'll try to get this pushed to a build.

EventReplay commented 4 years ago

@peppertechie @bryce-seifert module upgraded

peppertechie commented 4 years ago

Using the production version of index.js here are some QA cases to close out this request.
Thank you again to @EventReplay

Existing commands regression
 Route input to output A or B
 Input 1 to A - Pass 
Input 2 to A - Pass
 Recall a saved user preset - not tested
 Recall a saved input preset - not tested
 Recall a saved layout preset
 Recall Layout 1 - Pass
 Recall Layout 8 - Pass
 Recall Layout 9 - Pass
 Stop/Record/Pause 
Record start - Pass
 Change layouts while recording - Pass
 Record pause - Pass
 Record pause to restart - Pass
 Record Stop - Pass
 Extend recording - not used 
 Recording Feedback 
Change colors for record state - Pass

New
 Cannot test B as I only have A and Confidence A

Recall saved stream preset 
 Recall 1 on A - Pass
 Recall 2 on A - Pass
 Recall 3 on A - Pass
 Recall 1 on Confidence A - Pass
 Recall 2 on Confidence A - Pass
 Recall 3 on Confidence A - Pass

Recall saved encoder preset
 Recall 1 on A - Pass Recall 2 on A - Pass
 Recall 20 on A - Pass
 Recall 1 on Confidence A - Pass
 Recall 2 on Confidence A - Pass Recall 21 on Confidence A - Pass

RTMP Stream Start Stream on A - Pass Stop Stream on A - Pass Stream feedback on A - Pass Stream feedback on A secondary/backup stream - Pass Start Stream on Confidence A -Pass
 Stop Stream on Confidence A -Pass Stream feedback on Confidence A - Pass Stream feedback on Confidence A secondary/backup stream - Pass