cec-clientをhomebridgeから制御
今までは、iOS の HOME 機能を、linux環境で動くフリー実装の homebridge を使って、赤外線リモコンを制御していた。 しかし、AV機器のON/OFFでは、電源ボタンでON⇒OFFなのかOFF⇒ON なのか分からない。このため、ネットワーク対応の機器だし、 ping の結果に応じて 電源ボタン信号を出していた。
ただ、TVなどは、電源OFFの状態でも、EPG情報取得などのために OS が動いているため、OFF 状態の判定に失敗する。
そこで、先日見つけた HDMI 経由から制御信号を送る cec-client を試してみた。cec-client では、機器のON/OFF を判定しているので、 確実に ON/OFF できるはず。cec-client は、サーバ機では使えなかったので、 Raspberry-Pi を使ってみた。
$ echo "on 1" | cec-client -d 1 -s # 1番機器をON $ echo "standby 2" | cec-client -d 1 -s # 2番機器をOFF $ echo "scan" | cec-client -d 1 -s # 機器一覧をスキャン
device #0: TV ← REGZA address: 0.0.0.0 vendor: Toshiba osd string: TV power status: on device #1: Recorder 1 ← VARDIA address: 2.0.0.0← HDMI入力ソース番号 vendor: Toshiba osd string: RD-S502 power status: standby ← 電源状態 device #2: Recorder 2 ← Raspberry-Pi address: 1.0.0.0 vendor: Toshiba osd string: CECTester power status: o device #3: Tuner 1 ← CATV-STB address: 1.0.0.0 vendor: Panasonic osd string: Tuner 1 power status: on device #4: Playback 1 ← PS4 address: 3.0.0.0 vendor: Sony osd string: PlayStation 4 power status: standby
AVソースの切り替え
今までは、赤外線リモコン信号で、ON/OFF を制御していたので、 HDMI 連動設定をしているおかげで、ケーブルTVのチューナーON で、テレビの電源も ON となり、さらにビデオ入力も対象機器に 切り替わる。
ただ、cec-client に切り替えたら、機器の制御信号をだすのが、 別機器なので、TV電源連動や、ビデオ入力切替連動とならない。
しかたがないので、TVのビデオ入力切替信号も出してみる。
echo "tx 2f:82:10:00" | cec-client -d 1 -s # 2番のHDMIデバイス(raspberry-pi)から、 # 全デバイス宛て(f番)の信号で、 # 82 映像切替コマンドを送る。(TOSHIBA REGZAの場合) # 10:00 は、ビデオ切り替えの番号
HDMI経由で機器制御cec-client
最近は、TV操作はケーブルテレビのチューナーで 行うことが増えたけど、以前は入力切替とかが面倒だった。 でも、HDMI 経由で入力切替などの設定を行ったら、 チューナーの電源を入れるだけで、TVの電源ONや、入力切替を やってくれる。
これらの制御は、HDMI の CEC 機能らしい。 この機能を活用したら、赤外線リモコンでTV制御しているのを、 もっとスマートにできるのでは….としらべたら、 linux 環境では cec-client というのがあるらしい。
ということで、サーバのHDMI出力をTV経由で接続すれば、 その他のチューナーやレコーダを制御できるはず。
ただ、linux の グラフィック機能は、Intel のオンボード。 よくよく調べると、Intel は、"Never work"なんて記事も見つかる。
対応手段としては、Raspberry-Pi をつなげて、ラズパイのHDMI 経由で 制御ができるんじゃねぇ?
今日のところは、メモだけ。