Charmed Quark Systems, Ltd. - Support Forums and Community

Full Version: TV Setup
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Finally getting around to documenting my system and am started with my TV set up. I had a unique set of circumstances.

Not enough sources to warrant an HDMI matrix

I only have three TV's in my house which have three sources each: AppleTV, COAX (OTA Antenna), and Camera feed via HDMI. I have the potential to add additional two TV's at which point I may consider going to JustAddPower which will make things much less complicated and will allow me to prune my set up.

Three TV's of two different Samsung Business Signage Display types (2 x ME46B's and 1x ME55C) that use the Multiple Display Control (MDC) Protocol over RS232

My spouse's office was doing a tech refresh and I was able to pick up all three TV's for $600. They are really nice, but they were a pain to integrate. While the MDC Protocol is nice, only the Business Signage Displays use it. So, if/when I get another, regular Samsung TV, I'll have some retrofitting to do.

The ME46B's do not support all MDC Protocol commands. Same for the ME55C. So, for my CQC TV driver only Channel Up, Channel Down, Power On/Off, PIP On/Off, PIP Source Selection, TV Source Selection, and On Screen Display were added. All other commands that I use had to be done via IR (cursor up/down/left/righ, cursor select, numbers, info, exit, and previous channel).

Non-Business TV's use Ex-Link over RS232 and I have a spreadsheet that has over 100 commands.

The TV's also do not have an optical audio out, only a 3.5mm stereo out port. This meant I had to get a 3.5mm stereo to RCA cable to connect the audio out from the TV to an RCA to optical audio out connector which then plugged in to the SONOS PLAYBAR. Again, moving to a standard Samsung TV would allow me to remove this item and have the optical audio out from the TV go directly to the PLAYBAR.

I wanted a high end remote control

I had previously used the Harmony remote and it was a piece of junk. I moved to RTI T1-B+ remotes. Best remotes I have ever owned. The beauty of these remotes is that you can control anything with them. All you do is create the command mapping and the code whatever you want into the action editor.

All buttons from the remote are learned by the CQC RTI serial driver. The command that the remote sends out is the same as the name of the mapped action you see here. I did this to keep them organized.

[Image: Capture.jpg]

I made/make extensive use of Global Actions. If the remote is in AppleTV mode and the Menu button is pressed, all the mapped action does is call the Global Action. This way, if I ever change anything downstream of the remote, I won't have to change code in a bunch of places.

[Image: Capture.jpg]

Here is a hybrid diagram. For this setup, I have a main RTI Serial Driver and Global Cache Driver for the XP-6 processor and remote setup, and to control my NVR via IR. For each TV location, I have a TV Driver (tells the Global Cache how to talk to the TV), a Global Cache Driver (Serial and IR to TV), and a SONOS Driver (for the TV volume).

[Image: TV.gif]
BTW, the trigger driver supports paramaterization. So you could have:


where XXX is a command that will get passed to the AppleTV action. If you set the XXX bit to where it can be used directly or almost directly (maybe you cut a bit of it off) by just incorporating it into the outgoing commands and such, you can very conveniently handle a family of commands via a single action.

Or, you can do an enumerated string variable that has the XXX values in it, and another that has the corresponding device values. Lookup the index of the XXX value in the first and use that to get the nth value from the second and use that in the command.

Or, write some CML and pass the XXX value to it which can easily compare the value and do one of a set of commands.

Anyhoo, it can greatly reduce the number of commands you have to map.
Thanks and good point. I could probably go do some further dirty plumbing work and prune "like" commands. 


What I want to avoid is one action with a bunch of If/Then statements.
Yeh, that's why it's nice in some way to make the parameter something that you can use almost as is or as is in the actual command you send out. And you can also use the two parallel enum variables, one that has CursorXX values, and other that has the corresponding outgoing command values, and use that as a lookup. So it gets down to three or four lines generally. Find the command in the first one, set the other one to that ordinal value, and then build up the command, substituting in the value of the second variable.
Nice work and nice setup!  I love the diagram showing everything.  How I could have benefited by documenting all of the wiring hookups.  I did a good job initially, and then as I added things here and there, I was lax about it - poor documentation always comes back to bite you it seems.
(06-09-2020, 08:24 PM)kblagron Wrote: [ -> ]Nice work and nice setup!  I love the diagram showing everything.  How I could have benefited by documenting all of the wiring hookups.  I did a good job initially, and then as I added things here and there, I was lax about it - poor documentation always comes back to bite you it seems.

Thanks. I started documenting because I was thinking about what would happen if somehow I was not here and my spouse had to deal with everything. At least if I document everything, she can pay an automation company to come in and do whatever.

I can always also just list Dean's email address as well Big Grin
Well, thanks Dean. I was able to get rid of all commands sans one command for each room and device. The T1-B+ remotes now send out the same command for all buttons and have a different parameter depending on the button pressed.


In the above, the parameter is the same that I have assigned in the global action:

/User/House/Entertainment/All Rooms/Device/Camera/ChannelUp

In the RTI XP6 receiver actions, I simply pass the parameter and build the global action path, and then call it thereby alleviating the need for what I was doing previously.

// Run commands on the Camera system
// Button command in T1-B+ remote from Integration Designer is in format /AllRooms/Entertainment/Device/Camera/Command#COMMAND
// COMMAND parameter passed matches naming in Global Action
// CQCActParm_1 = the name of the invoking action command (e.g., /AllRooms/Entertainment/Device/Camera/Command)
// CQCActParm_2 = incoming parameter which is the command to run
// format command action based on passed value
    P2=/User/House/Entertainment/All Rooms/Device/Camera/%(LVar:CQCActParm_2)

// run command