RaspberryPi を再起動すると、HDMI接続されたテレビの電源が入る。どういう仕組みか不思議だったけど、調べたら分かった。cec-utils なるものを使っているらしい。
つまり、ラズベリーパイからコマンドでテレビの電源オンオフやボリュームのアップダウンをできるということだ。
さっそく RaspberryPi 3 にインストールしてみる。
$ sudo apt install -y cec-utils
<テレビの操作コマンド>
電源ON
$ echo 'on 0' | cec-client -s
電源OFF
$ echo 'standby 0' | cec-client -s
ボリュームUP
$ echo 'volup' | cec-client -s
ボリュームDOWN
$ echo 'voldown' | cec-client -s
<状態の参照系コマンド>
アクティブなデバイスを list 表示する
$ echo 'lad' | cec-client -s
libCECによってコントロールされているアドレスリストを表示
$ echo 'self' | cec-client -s
ーーー
実際に操作してみる。今、テレビは電源が入っている。
まずは電源を落とす。
$ echo 'standby 0' | cec-client -s
見事に電源が落ちた。
次は電源を入れてみる。
$ echo 'on 0' | cec-client -s
「ファミリンク機器の操作により電源が入りました」と出て、電源が入った。
これで、Linuxコマンド(シェルスクリプト)でテレビ操作ができる。
こうなればこっちのもの。あとは PHP ないし Python で Web の操作画面を作れば、iPhone からテレビの電源ON・OFFができるはず。あとで画面作って試す。
追記
PHPからshell_exec() で 電源ONを試みたがうまくいかない。
<iPad 画面>
doCOMs.php → doMOVs.php にGETを投げる
<該当部分のソース>
doMOVs.php
<戻ってきた画面>
コマンドはうまく渡っているようだが、なぜかテレビ電源がONされない。ログを見てみる。
$ vim cec.log
「* failed to open vchiq instance」という、よく分からないログが出ている。以下の記事によると chmod で直るようだ。試してみる。
Raspberry Piで動画再生|A Piece of God
再度 iPad から電源ON したところ、無事に電源が入った。
これで、iPhoneからもiPadからもテレビ電源を操作できる。
次記事に続く。
参考サイト
tvservice
Raspberry Piで、HDMI出力をON/OFFする | Soramimi Vox
tvservice -p でテレビ画面を真っ暗にできる との知見は、今後使えそう。
fbset