ホーム » 「cec-client」タグがついた投稿

タグアーカイブ: 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 ) ;

cec-client と cec-o-matic

自宅のAV機器の制御は、eremote-RM で色々できるようになったけど、cec-client もうまく使えば、便利な使い方ができるな

$ echo "tx 2f:36:00:00" | cec-client -d 1 -s # 全部の電源を切る(standby)
$ echo "tx 20:44:xx:00" | cec-client -d 1 -s # テレビに xx の制御コードを送る
$ echo "tx 2f:82:xx:xx" | cec-client -d 1 -s # xx:xxのデバイスに入力切替

だけど、cec-client は、起動時にデバイス調査の処理を色々するので、反応が悪い(1.5秒ほどのタイムラグ)。このため、サクサクとリモコン操作という感じにならない。

入力の切替は、リモコンでもできるけど、押すたびに次の入力に変わる相対的変更ため、チューナーに切り替えるといった絶対的な切替えができない。この点、”tx 2f:82:xx:xx” は絶対的入力指定ができるので、cec-client の価値がある。

検索 🔎

  My Google     Yahoo

便利サイト