Script - SKY channel changer
From MythTV Official Wiki
| Author | David Greaves |
| Description | Channel-change script for Sky |
| Supports |
Here's a channel changer script for Sky in the UK. It cooperates with SKY dog remover script.
My box occasionally misses a digit so this is thorough:
- send a couple of BACKUPS to clear things out.
- wait a second
- do it again
- sleep 2 seconds to let the channel change happen
- send a couple of BACKUPs to clear the show info banner
You can achieve faster and more reliable channel changes on sky hardware by using a wired solution instead of infra-red. The UK_Television#Sky.2FSky.2B_Box page lists several options.
#!/usr/bin/perl -w
use ir;
my $chan=join(" ", split(//,$ARGV[0]));
get_lock || die "No lock : $!\n";
print "Sending $chan\n";
system "irsend SEND_ONCE SKY BACKUP BACKUP $chan";
sleep 1;
system "irsend SEND_ONCE SKY BACKUP BACKUP BACKUP";
sleep 1;
system "irsend SEND_ONCE SKY BACKUP BACKUP $chan";
sleep 2;
system "irsend SEND_ONCE SKY BACKUP";
clear_lock;
I install this as /usr/local/bin/change_channel
It uses ir.pm:
/usr/local/lib/site_perl/ir.pm
# a couple of useful utility functions for locking during IR activity
use Fcntl;
my $MAX_TRIES = 10;
my $LOCK_FILE="/tmp/ir_lock";
sub get_lock() {
my $tries = 0;
while (-f $LOCK_FILE && $tries < $MAX_TRIES ) {
sleep 1;
$tries ++;
}
return 0 if $tries == $MAX_TRIES ;
sysopen(IR_LCK, $LOCK_FILE, O_RDWR | O_EXCL | O_CREAT) || return 0;
return 1;
}
sub clear_lock() {
close IR_LCK;
unlink($LOCK_FILE);
}
1;
This is installed as /usr/local/lib/site_perl/ir.pm
Ask if you have any problems --David Greaves