今までは、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
今までは、赤外線リモコン信号で、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 は、ビデオ切り替えの番号