min117の日記

初期desireもち。趣味Mac,メインFedora,仕事xp。

RaspberryPi コマンドでテレビ電源をオンオフする(cec制御)echo 'on 0' | cec-client -s

RaspberryPi を再起動するとHDMI接続されたテレビの電源が入る。どういう仕組みか不思議だったけど、調べたら分かった。cec-utils なるものを使っているらしい。

takuya-1st.hatenablog.jp

qiita.com

つまり、ラズベリーパイからコマンドでテレビの電源オンオフボリュームのアップダウンをできるということだ。

ーーー

さっそく RaspberryPi 3 にインストールしてみる。

$ sudo apt install -y cec-utils

f:id:min117:20170918161609p:plain

 

<テレビの操作コマンド>

電源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

ーーー

実際に操作してみる。今、テレビは電源が入っている。

f:id:min117:20170918163903j:plain

まずは電源を落とす。

$ echo 'standby 0' | cec-client -s

f:id:min117:20170918164253p:plain

f:id:min117:20170918164204p:plain

見事に電源が落ちた。

f:id:min117:20170918163921j:plain

次は電源を入れてみる。

$ echo 'on 0' | cec-client -s

f:id:min117:20170918164352p:plain

「ファミリンク機器の操作により電源が入りました」と出て、電源が入った。

f:id:min117:20170918164004j:plain

これで、Linuxコマンド(シェルスクリプト)でテレビ操作ができる。

こうなればこっちのもの。あとは PHP ないし Python で Web の操作画面を作れば、iPhone からテレビの電源ON・OFFができるはず。あとで画面作って試す。

追記

PHPからshell_exec() で 電源ONを試みたがうまくいかない。

iPad 画面>

doCOMs.php → doMOVs.php にGETを投げる

f:id:min117:20170918223050p:plain

<該当部分のソース>

doMOVs.php

f:id:min117:20170918223238p:plain

<戻ってきた画面>

f:id:min117:20170918222341p:plain

コマンドはうまく渡っているようだが、なぜかテレビ電源がONされない。ログを見てみる。

$ vim cec.log

f:id:min117:20170918222515p:plain

* failed to open vchiq instance」という、よく分からないログが出ている。以下の記事によると chmod で直るようだ。試してみる。

Raspberry Piで動画再生|A Piece of God

f:id:min117:20170918222619p:plain

f:id:min117:20170918222919p:plain

再度 iPad から電源ON したところ、無事に電源が入った。

f:id:min117:20170918164004j:plain

これで、iPhoneからもiPadからもテレビ電源を操作できる。

参考サイト

tvservice

Raspberry Piで、HDMI出力をON/OFFする | Soramimi Vox

tvservice -p テレビ画面を真っ暗にできる との知見は、今後使えそう。

f:id:min117:20170919094210p:plain

fbset

mattintosh.hatenablog.com