Your Universal Remote Control Center
RemoteCentral.com
Custom Installers' Lounge Forum - View Post
Previous section Next section Previous page Next page Up level
Up level
The following page was printed from RemoteCentral.com:

Login:
Pass:
 
 

Page 2 of 2
Topic:
DirecTV for bar
This thread has 21 replies. Displaying posts 16 through 22.
Post 16 made on Tuesday January 28, 2020 at 16:32
Brentm
Ethereal Home Theater
Joined:
Posts:
July 2003
2,688
On December 31, 2019 at 09:00, Fins said...
This.

I would look at Ethereal’s M3B system.

Thank you.
But this has been discontinued. 4K made it obsolete.
Brent McCall
Paid Endorser for;
Ethereal (386) 846-7264 Cell
Post 17 made on Tuesday January 28, 2020 at 17:08
Fiasco
Senior Member
Joined:
Posts:
July 2009
1,276
On January 28, 2020 at 16:32, Brentm said...
Thank you.
But this has been discontinued. 4K made it obsolete.

At the viewing ranges and television sizes in a typical bar 4k is pointless.
Pump House on Facebook: [Link: facebook.com]
OP | Post 18 made on Tuesday January 28, 2020 at 17:15
MNTommyBoy
Senior Member
Joined:
Posts:
November 2010
1,062
Thanks for all the info, Fiasco. What control system are you running for your place?
"There's a big difference between winging it and seeing what happens. Now let's see what happens." ~MacGruber
Post 19 made on Tuesday January 28, 2020 at 17:51
Fiasco
Senior Member
Joined:
Posts:
July 2009
1,276
Command Fusion running on an iPad Pro (and on my phone)
Pump House on Facebook: [Link: facebook.com]
OP | Post 20 made on Tuesday January 28, 2020 at 18:39
MNTommyBoy
Senior Member
Joined:
Posts:
November 2010
1,062
On January 28, 2020 at 17:51, Fiasco said...
Command Fusion running on an iPad Pro (and on my phone)

Looks nice, not super familiar.
"There's a big difference between winging it and seeing what happens. Now let's see what happens." ~MacGruber
Post 21 made on Tuesday January 28, 2020 at 18:59
Fiasco
Senior Member
Joined:
Posts:
July 2009
1,276
The CF software is an interface builder and you can assign commands/feedback ect within the GUI builder. You can also do it with Javascript (my preference)

The CF software is free and the app is a $100 or so license per android or apple device.

You can get pretty crazy with it. Here's the CF iPad remote I made for my old house 9 years ago.







CommandFusion offers developers one free license.

Here's my Javascript for two way control as many directv receivers as you want to control

[code]

var GUI = {};

CF.userMain = function() {
try {
DTV = new DirecTV(0);
DTV.setup();
DTV.addReceiver("DirecTV 1", "Moxa_DirecTV_1",1);
DTV.addReceiver("DirecTV 2", "Moxa_DirecTV_2",2);
DTV.addReceiver("DirecTV 3", "Moxa_DirecTV_3",3);
DTV.selectReceiver("DirecTV 1");
} catch (err) {
CF.log( "DirecTV setup error " + err.message );
}
delete CF.userMain;
}

var DirecTV = function(debug) {
var self = {
systems: [],
currentsystem: "",
debug:1,
};
self.debug = debug;

// Startup calls this function, defined by last line in the script
self.setup = function() {
try {
self.log("Object Created");
} catch (e) {
self.log("Exception caught during init: " + e);
}
};

self.addReceiver = function(systemip, system232,number) {
self.log("Create Receiver " + systemip + " " + system232 + " " + number);
var temp = new DirecTV_Receiver(self.debug);
temp.setup(systemip,system232,number);
temp.Initialize();
self.systems.push(temp);

};
self.keyFavorite = function(key) {
self.currentsystem.keyFavorite(key);
};

self.getProgram = function(num) {
for ( obj in self.systems ) {
if ( self.systems[obj].number == num ) {
return self.systems[obj].program;
}
}
}

self.selectReceiver = function(system) {
self.log("Looking up system: " + system );
for ( obj in self.systems ) {
if ( self.systems[obj].systemnameIP == system ) {
CF.setJoins([
{join:"d1211", value:0},
{join:"d1212", value:0},
{join:"d1213", value:0},
{join:"d1214", value:0},
{join:"d1215", value:0},
{join:"d1216", value:0},
{join:"d1217", value:0},
{join:"d1218", value:0}
]);
self.currentsystem = self.systems[obj];
self.log("Setting current system to: " + " " + self.systems[obj].number + " " + self.systems[obj].systemnameIP );
CF.setJoin("d" + (self.systems[obj].number * 1 + 1210), 1);
CF.setJoin("s2", self.currentsystem.systemnameIP);
}
}

};

self.setTuned = function(list, listIndex, join) {
CF.getJoin(list+":"+listIndex+":"+join, function(j,v,t) {
self.log("SET CHANNEL " + t["[channel]"]);
self.currentsystem.setTuned(t["[channel]"]);
});
}


self.keyPress = function(key) {
self.log("PUSHING " + key + " on " + self.currentsystem.number);
self.currentsystem.keyPress(key);
};


// Only allow logging calls when CF is in debug mode - better performance in release mode this way
self.log = function(msg) {
if (CF.debug && self.debug) {
CF.log("DirecTV: " + msg);
}
};
return self;
};
CF.modules.push({
name: "DirecTV Controller",
object: DirecTV,
version: 1.0
});





var DirecTV_Receiver = function(debug) {
var self = {
systemnameIP: "",
systemname232: "",
number: -1,
repeat: "",
debug: 0,
program: "",
hexcommand: {
"play": "\xFA\xA5\x00\x01\xB2",
"stop": "\xFA\xA5\x00\x01\xB3",
"pause":"\xFA\xA5\x00\x01\xB0",
"record": "\xFA\xA5\x00\x01\xB5",
"rew":"\xFA\xA5\x00\x01\xB1",
"ffwd": "\xFA\xA5\x00\x01\xB4",
"advance": "\xFA\xA5\x00\x01\xB7",
"replay": "\xFA\xA5\x00\x01\xB6",
"1": "\xFA\xA5\x00\x01\xE1",
"2": "\xFA\xA5\x00\x01\xE2",
"3": "\xFA\xA5\x00\x01\xE3",
"4": "\xFA\xA5\x00\x01\xE4",
"5": "\xFA\xA5\x00\x01\xE5",
"6": "\xFA\xA5\x00\x01\xE6",
"7": "\xFA\xA5\x00\x01\xE7",
"8": "\xFA\xA5\x00\x01\xE8",
"9": "\xFA\xA5\x00\x01\xE9",
"0": "\xFA\xA5\x00\x01\xE0",
"blue": "\xFA\xA5\x00\x01\xED",
"red": "\xFA\xA5\x00\x01\xEA",
"yellow": "\xFA\xA5\x00\x01\xEB",
"green": "\xFA\xA5\x00\x01\xEC",
"chanup": "\xFA\xA5\x00\x01\xD1",
"chandown": "\xFA\xA5\x00\x01\xD2",
"menu": "\xFA\xA5\x00\x01\xF7",
"guide": "\xFA\xA5\x00\x01\xD3",
"exit": "\xFA\xA5\x00\x01\xD4",
"info": "\xFA\xA5\x00\x01\xA1",
"prev": "\xFA\xA5\x00\x01\xD6",
"up": "\xFA\xA5\x00\x01\x9C",
"down": "\xFA\xA5\x00\x01\x9D",
"left": "\xFA\xA5\x00\x01\x9B",
"right": "\xFA\xA5\x00\x01\x9A",
"select": "\xFA\xA5\x00\x01\xC3",
"power": "\xFA\xA5\x00\x01\xD5",
"poweron": "\xFA\x82",
"poweroff": "\xFA\x81",
"format": "\xFA\xA5\x00\x01\xF8",
"active": "\xFA\xA5\x00\x01\xA2",
"list": "\xFA\xA5\x00\x01\xA3",
"back": "\xFA\xA5\x00\x01\xA4",
"dash": "\xFA\xA5\x00\x01\xA5",
"enter":"\xFA\xA5\x00\x01\xA0",
"signal": "\xFA\xA5\x00\x01\x90",
"signalMT": "\xFA\xA5\x00\x01\x9D"
},
};
self.debug = debug;

self.setup = function(systemnameIP, systemname232, number) {
try {
self.systemnameIP = systemnameIP;
self.systemname232 = systemname232;
self.number = number;
CF.watch(CF.FeedbackMatchedEvent, systemnameIP, systemnameIP + "_Feedback", self.ProcessFeedback);
self.log("Setting up DirecTV Receiver: " + self.systemnameIP + " " + self.systemname232 + " " + self.number);

} catch (e) {
self.log("Exception caught during setup: " + e );
}
};

self.Initialize = function() {
//self.repeat = setInterval( self.getTuned(), 10000);
self.getTuned();
self.repeat = setInterval(function(){self.getTuned()}, 30000);
};


self.keyPress = function(key) {
if (typeof self.systemname232 == 'string') {
CF.send(self.systemname232, self.hexcommand[key]);
} else {
//CF.send(self.systemnameIP, "/remote/processKey?key="+ key);
}
};

self.getTuned = function() {
CF.send(self.systemnameIP, "/tv/getTuned" );
};
self.setTuned = function(channel) {
if (typeof self.systemname232 != 'string') {
CF.send(self.systemnameIP, "/tv/tune?major=" + channel);
} else {
var hexString = parseInt(channel).toString(16);
while ( hexString.length < 4 ) {
hexString = "0" + hexString;
};
CF.log("hex string " + hexString);

var a = hexString.substring(0,2);
var b = hexString.substring(2);
a = parseInt(a,16);
b = parseInt(b,16);

CF.send(self.systemname232, "\xFA\xA6" + String.fromCharCode(a) + String.fromCharCode(b) + "\xFF\xFF");

};

};

self.keyFavorite = function(key) {
self.setTuned(key);

};

self.ProcessFeedback = function( feedbackname, feedback) {
var fb = JSON.parse(feedback);
if ( fb.callsign == undefined ) {
fb.callsign = " ";
}
if ( fb.title == undefined ) {
fb.title = " ";
}
if ( fb.episodeTitle == undefined ) {
fb.episodeTitle = " ";
}
if ( fb.major == undefined ) {
fb.major = " ";
}
if ( fb.status.query == "/tv/getTuned" ) {
DTVsetProgramName();
CF.setJoin("s"+ (1210 * 1 + self.number), fb.callsign);
CF.setJoin("s"+ (1220 * 1 + self.number), fb.title);
CF.setJoin("s"+ (1230 * 1 + self.number), fb.episodeTitle);
CF.setJoin("s"+ (1240 * 1 + self.number), fb.major);
self.program = fb.title;
}

};



self.log = function(msg) {
if (CF.debug && self.debug) {
CF.log("DirecTV Receiver " + self.systemnameIP + ": " + msg);
}
};
return self;
};

CF.modules.push({
name: "DirecTV Receiver",
object: DirecTV_Receiver,
version: 1.0
});

DTVsetProgramName = function() {};
[/code]

Last edited by Fiasco on January 28, 2020 19:10.
Pump House on Facebook: [Link: facebook.com]
Post 22 made on Tuesday January 28, 2020 at 19:11
Fiasco
Senior Member
Joined:
Posts:
July 2009
1,276
Here is a dynamic navigation menu demo I wrote to demonstrate how you can manipulate/animate the interface on the fly.


Pump House on Facebook: [Link: facebook.com]
Page 2 of 2


Jump to


Protected Feature Before you can reply to a message...
You must first register for a Remote Central user account - it's fast and free! Or, if you already have an account, please login now.

Please read the following: Unsolicited commercial advertisements are absolutely not permitted on this forum. Other private buy & sell messages should be posted to our Marketplace. For information on how to advertise your service or product click here. Remote Central reserves the right to remove or modify any post that is deemed inappropriate.

Hosting Services by ipHouse