Your Universal Remote Control Center
RemoteCentral.com
Philips Pronto Professional Forum - View Post
Up level
Up level
The following page was printed from RemoteCentral.com:

Login:
Pass:
 
 

Original thread:
Post 1 made on Thursday December 21, 2017 at 13:07
peteS
Long Time Member
Joined:
Posts:
June 2003
20
Hi All

With lots of help from people here and Liam Gladdy's brilliant original decoding of the Sky protocols, I've got working control going of Sky HD+ and apparently SkyQ uses the same setup.

It's pretty straightforward - I create an Activity Script which connects to the Sky box

var IPAddress="192.168.3.60";
var Port=49160;
var Timeout=100;
var str = "";
var receivedText = "";
var len;
var command="";


function ConnecttoSky()
{
socket = new TCPSocket(false);
socket.onConnect = onConnect;
socket.onData = onData;
socket.onClose = onClose;
socket.onIOError = onIOError;
socket.connect(IPAddress, Port, Timeout);

Then the only callback we really need is OnData

function onData(){
var code;
var writeText;

// System.print("Ondata.");
receivedText = socket.read();
//System.print(receivedText.length)

if (receivedText.length < 24){
socket.write(receivedText.slice(0,len));
len = 1;
}
else {
//System.print("Writing Data");
code = SkyRemoteCommands[command];
// System.print ("Hex is " + showHEX(String.fromCharCode(code & 0xff)));
writeText = "\x04\x01\x00\x00\x00\x00"+chr[Math.floor(224 + (code/16))]+chr[code % 16];
socket.write (writeText);
writeText = "\x04\x00\x00\x00\x00\x00"+chr[Math.floor(224 + (code/16))]+chr[code % 16];
socket.write (writeText);

// socket.write (ArrayToString([0x04,0x01,0x00,0x00,0x00,0x00,Math.floor(224 + (code/16)),code % 16]));
// socket.write (ArrayToString([0x04,0x00,0x00,0x00,0x00,0x00,Math.floor(224 + (code/16)),code % 16]));

socket.close();
socket=null;
}

}

and this uses two fixed arrays

ar SkyRemoteCommands = new Array()

SkyRemoteCommands = {
power: 0,
select: 1,
backup: 2,
dismiss: 2,
channelup: 6,
channeldown: 7,
interactive: 8,
sidebar: 8,
help: 9,
services: 10,
search: 10,
tvguide: 11,
home: 11,
i: 14,
text: 15,
up: 16,
down: 17,
left: 18,
right: 19,
red: 32,
green: 33,
yellow: 34,
blue: 35,
0: 48,
1: 49,
2: 50,
3: 51,
4: 52,
5: 53,
6: 54,
7: 55,
8: 56,
9: 57,
play: 64,
pause: 65,
stop: 66,
record: 67,
fastforward: 69,
rewind: 71,
boxoffice: 240,
sky: 241
}

var chr=new Array()
chr=[
"\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0A", "\x0B", "\x0C", "\x0D", "\x0E", "\x0F",
"\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1A", "\x1B", "\x1C", "\x1D", "\x1E", "\x1F",
"\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2A", "\x2B", "\x2C", "\x2D", "\x2E", "\x2F",
"\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3A", "\x3B", "\x3C", "\x3D", "\x3E", "\x3F",
"\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4A", "\x4B", "\x4C", "\x4D", "\x4E", "\x4F",
"\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5A", "\x5B", "\x5C", "\x5D", "\x5E", "\x5F",
"\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6A", "\x6B", "\x6C", "\x6D", "\x6E", "\x6F",
"\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7A", "\x7B", "\x7C", "\x7D", "\x7E", "\x7F",
"\x80", "\x81", "\x82", "\x83", "\x84", "\x85", "\x86", "\x87", "\x88", "\x89", "\x8A", "\x8B", "\x8C", "\x8D", "\x8E", "\x8F",
"\x90", "\x91", "\x92", "\x93", "\x94", "\x95", "\x96", "\x97", "\x98", "\x99", "\x9A", "\x9B", "\x9C", "\x9D", "\x9E", "\x9F",
"\xA0", "\xA1", "\xA2", "\xA3", "\xA4", "\xA5", "\xA6", "\xA7", "\xA8", "\xA9", "\xAA", "\xAB", "\xAC", "\xAD", "\xAE", "\xAF",
"\xB0", "\xB1", "\xB2", "\xB3", "\xB4", "\xB5", "\xB6", "\xB7", "\xB8", "\xB9", "\xBA", "\xBB", "\xBC", "\xBD", "\xBE", "\xBF",
"\xC0", "\xC1", "\xC2", "\xC3", "\xC4", "\xC5", "\xC6", "\xC7", "\xC8", "\xC9", "\xCA", "\xCB", "\xCC", "\xCD", "\xCE", "\xCF",
"\xD0", "\xD1", "\xD2", "\xD3", "\xD4", "\xD5", "\xD6", "\xD7", "\xD8", "\xD9", "\xDA", "\xDB", "\xDC", "\xDD", "\xDE", "\xDF",
"\xE0", "\xE1", "\xE2", "\xE3", "\xE4", "\xE5", "\xE6", "\xE7", "\xE8", "\xE9", "\xEA", "\xEB", "\xEC", "\xED", "\xEE", "\xEF",
"\xF0", "\xF1", "\xF2", "\xF3", "\xF4", "\xF5", "\xF6", "\xF7", "\xF8", "\xF9", "\xFA", "\xFB", "\xFC", "\xFD", "\xFE", "\xFF"]


Then, when I want to use one, I just set the global variable command, and then call ConnectToSky()

command="services";
ConnecttoSky();

That's it - really simple and very reliable.

pete S


Hosting Services by ipHouse