SageTV Community  

Go Back   SageTV Community > SageTV Development and Customizations > SageTV Customizations
Forum Rules FAQs Community Downloads Today's Posts Search

Notices

SageTV Customizations This forums is for discussing and sharing user-created modifications for the SageTV application created by using the SageTV Studio or through the use of external plugins. Use this forum to discuss customizations for SageTV version 6 and earlier, or for the SageTV3 UI.

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 10-03-2008, 09:03 AM
rajczi's Avatar
rajczi rajczi is offline
Sage User
 
Join Date: Dec 2007
Location: Texas
Posts: 43
Control one extender from another extender

Is there any way that I can control what is playing on one extender from another extender? I have a whole house audio system that is connected to a receiver in the closet with my sage server. I would like to put an SD extender in there and use it as the audio source of the system. The closet is currently headless and I would prefer to not have to go upstairs to configure what the system is playing. I have extenders on all the TV's in the house and would like to be able to bring up an album or playlist and send that play command to the other extender. I know that individual media can be played this way through the web UI, but can it be done with an extender.

Any suggestions would be appriciated...

Chris

PS I run SageMC on my extenders.
__________________
Server: Sage v6.6.x, 2003 SP2, 2xXeon 3.6, 2GB, ATI Radeon 7000, 2x750GB (RAID1, OS), 6x500 (RAID5, Recordings), GigE, HDHR, HD PVR, PVR-500
Client: STX-HD100, Panasonic 50-LC13(HDMI>DVI), Denon 3803(Optical)
Client: STX-HD100, Vizio VW37L(HDMI)
Client: STX-HD100, Sharp 27" SDTV(S-Video/RCA)
Client: Sage v6.6.x, Win7 Ultimate x64, Dell Latitude E6500, Core 2 Duo 2.5, 4GB, Quadro 160M, GigE/11N
Client: Sage v6.6.x, XP Tablet, Acer Travelmate C310, Centrino 1.5, 512MB, Integrated, GigE/11G
Reply With Quote
  #2  
Old 10-03-2008, 09:06 AM
rajczi's Avatar
rajczi rajczi is offline
Sage User
 
Join Date: Dec 2007
Location: Texas
Posts: 43
I also considered using a tuner and piping the audio out to the receiver and setting the lineup channels for that tuner on empty channels in my lineup. That way, when I change to that channel on any TV, it tunes that box to the channel I want from the provider. That will work, but I would prefer to be able to do this with my music collection instead...

Thanks in advance,

Chris
__________________
Server: Sage v6.6.x, 2003 SP2, 2xXeon 3.6, 2GB, ATI Radeon 7000, 2x750GB (RAID1, OS), 6x500 (RAID5, Recordings), GigE, HDHR, HD PVR, PVR-500
Client: STX-HD100, Panasonic 50-LC13(HDMI>DVI), Denon 3803(Optical)
Client: STX-HD100, Vizio VW37L(HDMI)
Client: STX-HD100, Sharp 27" SDTV(S-Video/RCA)
Client: Sage v6.6.x, Win7 Ultimate x64, Dell Latitude E6500, Core 2 Duo 2.5, 4GB, Quadro 160M, GigE/11N
Client: Sage v6.6.x, XP Tablet, Acer Travelmate C310, Centrino 1.5, 512MB, Integrated, GigE/11G
Reply With Quote
  #3  
Old 10-03-2008, 10:53 AM
CollinR CollinR is offline
Sage Icon
 
Join Date: Dec 2004
Location: Tulsa, OK
Posts: 1,305
It should be possible but I do not know the message to tell it to start playing a specific playlist.

I do this quite a bit, I use a Dell Axim x51v wifi as a truely universal remote. I can control any client connnected from it however if you cannot see the screen navigating would be all but impossible.

You might be better off having winamp or ? do it. Look at the EventGhost project and see what media players they have high level of support for.

You can do this directly from the webserver interface.

You can have the server call this if you have the webserver installed.

Playlist:
http://IP:PORT/Sage/PlaylistGenerato...istName=STONES

or

Specific File:
http://IP:PORT/Sage/player.html?fnty...FileId=1828604

You can do this with wget from the local MVP/Placeshifter but you would need a way to set it all up.

Those will open in WMP or VLC on the server, just plug the server's soundcard into your amp and provide a login.


EDIT:
Actually with the webserver and an MVP connected to your reciever you can.

http://IP:PORT/sage/MediaFileCommand...FileId=FILEID#

Last edited by CollinR; 10-03-2008 at 11:06 AM.
Reply With Quote
  #4  
Old 10-04-2008, 04:33 AM
Fonceur's Avatar
Fonceur Fonceur is offline
Sage Icon
 
Join Date: Jan 2008
Location: DDO, QC
Posts: 1,915
Quote:
Originally Posted by rajczi View Post
Is there any way that I can control what is playing on one extender from another extender?
Another alternative would be to use SageTCPServer (link in my signature) to do that. You would have to modify the SageTV UI yourself though, as I am interfacing with it from a whole other application (MainLobby plugin)...
__________________
SageTCPServer (2.3.5): Open source TCP interface to the SageTV API
MLSageTV (3.1.8)/Sage Media Server (1.13): SageTV plugin for MainLobby/CQC
TaSageTV (2.58)/TaSTVRemote (1.14): Monitor/control SageTV with an Android device
TbSageTV (1.02)/STVRemote (1.11): Monitor/control SageTV with a PlayBook 2
TiSageTV (1.64)/TiSTVRemote (1.09): Monitor/control SageTV with an iPhone/iPod/iPad
Reply With Quote
  #5  
Old 10-04-2008, 05:43 AM
spvoyek spvoyek is offline
Sage User
 
Join Date: May 2008
Posts: 60
I posted essentially the same question a few months ago. Here's the link:

http://forums.sagetv.com/forums/showthread.php?t=34198

Please keep us updated if you get something working. This is still something I'd like to do, but it's not a high priority project yet.
Reply With Quote
  #6  
Old 10-06-2008, 11:36 AM
CollinR CollinR is offline
Sage Icon
 
Join Date: Dec 2004
Location: Tulsa, OK
Posts: 1,305
Quote:
Originally Posted by Fonceur View Post
Another alternative would be to use SageTCPServer (link in my signature) to do that. You would have to modify the SageTV UI yourself though, as I am interfacing with it from a whole other application (MainLobby plugin)...

Nice and new to me, I will start playing today.

EDIT: Where is the documentation?

Last edited by CollinR; 10-06-2008 at 11:39 AM.
Reply With Quote
  #7  
Old 10-08-2008, 02:43 PM
wbarber69's Avatar
wbarber69 wbarber69 is offline
Sage Expert
 
Join Date: Oct 2004
Location: Hammond, La.
Posts: 512
Send a message via ICQ to wbarber69 Send a message via AIM to wbarber69 Send a message via MSN to wbarber69 Send a message via Yahoo to wbarber69
what would also be nice is a way to sync up audio from all clients and be able to listen to music through the whole house and even control what is playing from anywhere. Perhaps have a menu button on the music screen to connect to other clients.
Reply With Quote
  #8  
Old 10-08-2008, 05:08 PM
Fonceur's Avatar
Fonceur Fonceur is offline
Sage Icon
 
Join Date: Jan 2008
Location: DDO, QC
Posts: 1,915
Quote:
Originally Posted by CollinR View Post
EDIT: Where is the documentation?
It has been in Beelzerob's hands for a while, but here's a copy... I also included the latest build.
__________________
SageTCPServer (2.3.5): Open source TCP interface to the SageTV API
MLSageTV (3.1.8)/Sage Media Server (1.13): SageTV plugin for MainLobby/CQC
TaSageTV (2.58)/TaSTVRemote (1.14): Monitor/control SageTV with an Android device
TbSageTV (1.02)/STVRemote (1.11): Monitor/control SageTV with a PlayBook 2
TiSageTV (1.64)/TiSTVRemote (1.09): Monitor/control SageTV with an iPhone/iPod/iPad

Last edited by Fonceur; 12-22-2008 at 02:07 PM.
Reply With Quote
  #9  
Old 10-10-2008, 01:45 AM
nielm's Avatar
nielm nielm is offline
SageTVaholic
 
Join Date: Oct 2003
Location: Belgium
Posts: 4,496
It can also be done in the STV, by calling the Java API with a different UI context (this is because both extenders UIs run in the SageServer process)

Imagine extender1 has UI context 11111, and extender2 has UI context 22222, then in the STV you can have an Action like:
Code:
sage_SageTV_api("22222","CloseAndWaitUntilClosed",null)
to remotely stop playback on the other extender.

To start a specific playlist, you first need to find it:
Code:
playlist=GetElement(FilterByMethod(GetPlaylists(),"GetName","My Playlist",true),0)
and then play it -- note that Watch needs a Java Array as an argument, and DataUnion creates a Vector, so toArray is used to convert it.
Code:
sage_SageTV_apiUI("22222","Watch",java_util_List_toArray(DataUnion(playlist))
(this type of code gets very messy very quickly -- writing Studio code to call java code to call other Studio code... You may be able to write cleaner code with GKusnick's wrappers...)

Playing an album requires clearing a playlist (normally the now playing), creating it and adding all the tracks to it. This can all be done in local UI code (except for finding/creating the remote NowPlaying playlist), then call apiUI as above to start playback.


Note that the 'Now Playing" playlist is always local to the UI, which means you need to get and clear the remote UI's "Now Playing" playlist via the java apiUI call, but once retrieved, items can be added to it simply using the normal Studio functions.

Code:
playlist=sage_SageTV_apiUI("22222","GetNowPlayingList",null)
sage_SageTV_apiUI("22222","RemovePlaylist",java_util_List_toArray(DataUnion(playlist)))
playlist=sage_SageTV_apiUI("22222","GetNowPlayingList",null)
__________________
Check out my enhancements for Sage in the Sage Customisations and Sageplugins Wiki

Last edited by nielm; 10-10-2008 at 09:59 AM.
Reply With Quote
  #10  
Old 10-10-2008, 09:28 AM
spvoyek spvoyek is offline
Sage User
 
Join Date: May 2008
Posts: 60
nielm, you read my mind! I was just coming here to post a request for you to provide some insight on this subject. I was hoping that your webserver was providing this "play on <device>" functionality by asking the Sage Server process to do it and that we would be able to duplicate that functionality in an STV without the need for anything extra like the SageTCPServer.
Reply With Quote
  #11  
Old 10-10-2008, 10:13 AM
nielm's Avatar
nielm nielm is offline
SageTVaholic
 
Join Date: Oct 2003
Location: Belgium
Posts: 4,496
I am afraid that I can only provide pointers...

One other thing you may need to do is execute a Action widget tree from the other extender's UI, with some local variables preset...

eg in the default STV, there is an action tree for starting playback of a show, going to the playback screen:
Code:
"REM Watch, jumping directly to OSD for playback"
This action tree needs the local variable 'Airing' set referencing the Airing or Mediafile that you want to watch...

So if you have a local variable 'Airing' in the local UI's context, you can use AddStaticContext to set it in the remote UI's context...
you then need to find the widget tree to execute...
Code:
sage_SageTV_apiUI("22222","AddStaticContext",java_util_List_toArray(DataUnion("Airing",Airing))
AllRemoteActions=sage_SageTV_apiUI("22222","GetWidgetsByType",java_util_List_toArray(DataUnion("Action"))
WatchActionWidget=GetElement(FilterByMethod(AllRemoteActions,"GetWidgetName","\"REM Watch, jumping directly to OSD for playback\"",true),0)
sage_SageTV_apiUI("22222","ExecuteWidgetChain",java_util_List_toArray(DataUnion(WatchActionWidget))
Messy isn't it
__________________
Check out my enhancements for Sage in the Sage Customisations and Sageplugins Wiki
Reply With Quote
Reply


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Sage control of HAI Omni tktplz SageTV Customizations 5 10-01-2008 12:19 PM
HD extender refuses to play wife's video a 2nd time drewg SageTV Media Extender 8 03-17-2008 08:37 AM
HD Extender transport stream problems iammike SageTV Media Extender 17 12-31-2007 09:44 AM
HD Extender video quality issue TimmyToo SageTV Media Extender 6 12-19-2007 09:02 AM
SageTV Wireless Media Extender Now Available! Narflex Announcements 0 05-31-2006 06:00 PM


All times are GMT -6. The time now is 10:17 PM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2023, vBulletin Solutions Inc.
Copyright 2003-2005 SageTV, LLC. All rights reserved.