Script - SKY channel changer

From MythTV Official Wiki
Jump to: navigation, search


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.


Application-x-perl.png /usr/local/bin/change_channel

#!/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:


Script.png /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