ホーム » コンピュータ » cec-clientのデバイス番号とアドレス番号

サーバ⚙

アーカイブ

カテゴリー

cec-clientのデバイス番号とアドレス番号

自宅では、テレビやケーブルテレビチューナーやレコーダを赤外線リモコンで制御できるようにしているが、電源はトグル動作でON→OFFかOFF→ONという制御ができない。そこで、HDMI端子経由のチャンネル制御を行っている。

この際に、デバイス番号とcecのアドレス番号を使うが、デバイス番号が時々変化している。

しかたがないので、cecのscan処理でデバイス番号とアドレス番号の対応情報を保存するようにしてみた。

#!/usr/bin/perl

my $cec = "/usr/bin/cec-client -d 1 -s" ;

open( my $fd , "/bin/echo 'scan' | $cec |" )
    || die( "Can't open $cec\n" ) ;
open( my $ft , "> /home/xxxxxxxx/lib/cec-table.sh" )
    || die( "Can't open cec-table.sh\n" ) ;

my $device  = "" ;
my $dev_str = "" ;
my $address = "" ;
my $osd_str = "" ;

print $ft "#!/bin/bash\n" ;

while( my $line = <$fd> ) {
    if ( $line =~ /^device\s+#(\d+):\s+(.*?)$/ ) {
        $device  = $1 ;
        $dev_str = $2 ;
    } elsif ( $line =~ /^address:\s+(\d+)\.0\.0\.0$/ ) {
        $address = $1 ;
    } elsif ( $line =~ /^osd\s+string:\s+(.*?)$/ ) {
        $osd_str = $1 ;

        print $ft "DEV[$address]=$device\n" ;
        print $ft "OSD[$address]=\"$osd_str\"\n" ;
    }
}
close( $fd ) ;
close( $ft ) ;

検索 🔎

  My Google     Yahoo

便利サイト

%d人のブロガーが「いいね」をつけました。