[mythtv-users] New Sky+ App - control Sky box via tcp/ip network
Dave Pearson
lists at the-pearsons.co.uk
Thu Dec 13 23:06:03 UTC 2012
-----Original message-----
From:Michael Watson <michael at thewatsonfamily.id.au>
Sent:Thu 13-12-2012 22:25
Subject:Re: [mythtv-users] New Sky+ App - control Sky box via tcp/ip network
To:Discussion about MythTV <mythtv-users at mythtv.org>;
On 14/12/2012 1:44 AM, Dave Pearson wrote:
> RE: [mythtv-users] New Sky+ App - control Sky box via tcp/ip network
>
> -----Original message-----
> *From:* Michael Watson <michael at thewatsonfamily.id.au>
> *Sent:* Thu 13-12-2012 04:08
> *Subject:* Re: [mythtv-users] New Sky+ App - control Sky box via
> tcp/ip network
> *To:* Discussion about MythTV <mythtv-users at mythtv.org>;
> On 13/12/2012 1:41 PM, Nick Rout wrote:
> >
> >
> > On Thu, Dec 13, 2012 at 10:29 AM, Dave Pearson
> > <lists at the-pearsons.co.uk <mailto:lists at the-pearsons.co.uk>> wrote:
> >
> > -----Original message-----
> > *From:* Raymond Wagner <raymond at wagnerrp.com
> > <mailto:raymond at wagnerrp.com>>
> > *Sent:* Thu 16-08-2012 21:14
> > *Subject:* Re: [mythtv-users] New Sky+ App - control Sky box
> > via tcp/ip network
> > *To:* Discussion about MythTV <mythtv-users at mythtv.org
> > <mailto:mythtv-users at mythtv.org>>;
> > On 8/16/2012 10:38, Dave Pearson wrote:
> > > Before anyone says why don't I do it myself - I'm not
> clever
> > enough!
> >
> > Sure you are, you just don't know you are. Grab a copy of
> > wireshark or
> > tcpdump and have at it. Just start it up, and record the
> > communications
> > between the iPad and the STB as you perform various actions.
> > The only
> > real difficulty would be if they decided it was necessary to
> > perform
> > some kind of authentication between the STB and application,
> > or worse,
> > encrypted the communication.
> > _______________________________________________
> > mythtv-users mailing list
> > mythtv-users at mythtv.org <mailto:mythtv-users at mythtv.org>
> > http://www.mythtv.org/mailman/listinfo/mythtv-users
> >
> > OK, I wasn't clever enough to use wireshark to figure out how to
> > send the control commands to my SKY+HD Box, but someone else was
> >
> (http://www.gladdy.co.uk/blog/2012/08/21/the-skyhd-picasso-dnla-control-server-protocol/)
> > and using the information on that page I have been able to use
> > firefox poster to send a command to change the channel. I'm now
> > trying to take what I'm using in poster to create a bash script
> > that I can use to change the channel in mythtv,
> unfortunately I'm
> > having no luck with curl at all.
> >
> > This is what I'm POSTing using poster:
> >
> > headers:
> >
> > SOAPACTION:
> urn:schemas-nds-com:service:SkyPlay:2#SetAVTransportURI
> >
> > content-type: text/xml; charset=utf-8
> >
> > body:
> >
> > <?xml version="1.0" encoding="utf-8"?>
> >
> > <s:Envelope
> > s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
> > xmlns:s="http://schemas.smlsoap.org/soap/envelope/">
> >
> > <s:Body>
> >
> > <u:SetAVTransportURI
> xmlns:u="urn:schemas-nds-com:service:SkyPlay:2">
> >
> > <InstanceID>0</InstanceID>
> >
> > <CurrentURI>xsi://ff0</CurrentURI>
> >
> > <CurrentURIMetaData>NOT_IMPLEMENTED</CurrentURIMetaData>
> >
> > </u:SetAVTransportURI>
> >
> > </s:Body>
> >
> > </s:Envelope>
> >
> > Using the above code in poster I mange to change the channel to
> > ff0, which is the hex code for channel 113 (Universal HD),
> > unfortunately I just cannot figure out how I can get curl to
> POST
> > the body text (I think the headers are being passed
> correctly. I'm
> > sure this is really simple, but I'm just stuck! any help will be
> > gratefully received.
> >
> > Regards,
> >
> > Dave
> >
> >
> > can wget do this?
> >
> Possibly, but might be easier to use something like python or
> perl, as
> then end result is going to be a channel change script I guess.
> This python code might do the trick.
>
>
> import httplib, urllib
> import re
>
> conn= httplib.HTTPConnection("http://xxx.xxx.xxx.xx
> <http://xxx.xxx.xxx.xx/>:49153/SkyPlay2")
> XML='*****XMLSTUFF Goes Here *****'
> headers= { "SOAPACTION:
> urn:schemas-nds-com:service:SkyPlay:2#SetAVTransportURI",
> "content-type: text/xml", "charset=utf-8"}
> conn.request("POST", params, "", headers)
> conn.send(XML)
> response= conn.getresponse()
> print response.status, response.reason
>
> print response.read()
> conn.close()
>
>
>
> _______________________________________________
> mythtv-users mailing list
> mythtv-users at mythtv.org
> http://www.mythtv.org/mailman/listinfo/mythtv-users
>
> Thanks for your suggestion, unfortunately I don'y know python at all,
> so cannot really debug where it's going wrong.
>
> Perhaps it might help if I post the curl command that I am using:
>
> curl --verbose --header "Content-Type: text/xml" --header "SOAPACTION:
> urn:schemas-nds-com:service:SkyPlay:2#SetAVTransportURI" -d
> @posterbody.xml -X POST http://192.168.1.202:49153/SkyPlay2
>
> and the contents of posterbody.xml:
>
> <?xml version="1.0" encoding="utf-8"?>
> <s:Envelope
> s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
> xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
> <s:Body>
> <u:SetAVTransportURI xmlns:u="urn:schemas-nds-com:service:SkyPlay:2">
> <InstanceID>0</InstanceID>
> <CurrentURI>xsi://ff0</CurrentURI>
> <CurrentURIMetaData>NOT_IMPLEMENTED</CurrentURIMetaData>
> </u:SetAVTransportURI>
> </s:Body>
> </s:Envelope>
>
> and this is what I get in return:
>
> * About to connect() to 192.168.1.202 port 49153 (#0)
> * Trying 192.168.1.202...
> * connected
> * Connected to 192.168.1.202 (192.168.1.202) port 49153 (#0)
> > POST /SkyPlay2 HTTP/1.1
> > User-Agent: curl/7.27.0
> > Host: 192.168.1.202:49153
> > Accept: */*
> > Content-Type: text/xml
> > SOAPACTION: urn:schemas-nds-com:service:SkyPlay:2#SetAVTransportURI
> > Content-Length: 399
> >
> * upload completely sent off: 399 out of 399 bytes
> * additional stuff not fine transfer.c:1037: 0 0
> * HTTP 1.1 or later with persistent connection, pipelining supported
> < HTTP/1.1 500 Internal Server Error
> < CONTENT-LENGTH: 413
> < CONTENT-TYPE: text/xml; charset="utf-8"
> < DATE: Sat, 05 Feb 2000 12:25:32 GMT
> < EXT:
> < SERVER: Linux/2.6.18.8 UPnP/1.0 SKY DLNADOC/1.50
> < X-User-Agent: redsonic
> <
> <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"
> s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
> <s:Body>
> <s:Fault>
> <faultcode>s:Client</faultcode>
> <faultstring>UPnPError</faultstring>
> <detail>
> <UPnPError xmlns="urn:schemas-upnp-org:control-1-0">
> <errorCode>-111</errorCode>
> <errorDescription>Invalid Action</errorDescription>
> </UPnPError>
> </detail>
> </s:Fault>
> </s:Body>
> </s:Envelope>
> * Connection #0 to host 192.168.1.202 left intact
> * Closing connection #0
>
> As I said before, this code works fine in firefox poster and correctly
> changes the channel (almost instantaneously, much much quicker than my
> IR script can do it and much more reliably too! Any help I can get to
> get this working will be very gratefully received.
>
> Regards,
>
> Dave.
>
>
Try this. You will need to run the script like "scriptname
192.168.1.202 ff0"
#!/usr/bin/env python
import httplib, sys
if len(sys.argv) < 3:
sys.exit('Usage: %s <ipaddress/hostname> <channel> ' % sys.argv[0])
skyAddress = sys.argv[1]
channel = sys.argv[2]
conn=httplib.HTTPConnection("%s:49153" % skyAddress)
XML="""<?xml version="1.0" encoding="utf-8"?>
<s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<u:SetAVTransportURI xmlns:u="urn:schemas-nds-com:service:SkyPlay:2">
<InstanceID>0</InstanceID>
<CurrentURI>xsi://%s</CurrentURI>
<CurrentURIMetaData>NOT_IMPLEMENTED</CurrentURIMetaData>
</u:SetAVTransportURI>
</s:Body>
</s:Envelope>""" % channel
headers= { "Content-Type": "text/xml", "SOAPACTION":
"urn:schemas-nds-com:service:SkyPlay:2#SetAVTransportURI"}
conn.request("POST", "/SkyPlay2", "", headers)
conn.send(XML)
response= conn.getresponse()
print response.status, response.reason
print response.read()
conn.close()
_______________________________________________
mythtv-users mailing list
mythtv-users at mythtv.org
http://www.mythtv.org/mailman/listinfo/mythtv-users
Still no joy, unfortunately, this is what I get when I try that script:
python test 192.168.1.202 ff0
500 Internal Server Error
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<s:Body>
<s:Fault>
<faultcode>s:Client</faultcode>
<faultstring>UPnPError</faultstring>
<detail>
<UPnPError xmlns="urn:schemas-upnp-org:control-1-0">
<errorCode>501</errorCode>
<errorDescription>XML error</errorDescription>
</UPnPError>
</detail>
</s:Fault>
</s:Body>
</s:Envelope>
regards,
Dave.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.mythtv.org/pipermail/mythtv-users/attachments/20121213/84cbe71b/attachment-0001.html>
More information about the mythtv-users
mailing list