HDMI の CEC での TV の電源制御を Chromecast 経由で Google Home Mini でやってみたり、 ラズパイから操作してみようとしたりしましたが、 あまり自由度が高くありませんでした。

確認環境

  • TOSHIBA の TV
  • Google Home Mini
  • Chromecast
  • Raspbian GNU/Linux 9.4 (stretch)

標準機能での制御

「OK Google, Youtube で猫の動画を再生」などで再生を開始するときに自動で電源が入る他に、 「OK Google, テレビを消して」や「OK Google, テレビをつけて」で制御できました。

入力切替は、再生開始時に自動で Chromecast に切り替えることはできても、 他の任意の入力に切り替えることはできなさそうでした。 (そもそも CEC で対応してなさそうな感じがしました。)

ハマりどころ

テレビで HDMI 連動設定があるので、使用する設定にしておく必要がありそうでした。(すでに使用する設定にしていたので、そのままでいけました。)

Chromecast の電源を TV の USB 端子から取っていると TV がオフ (スタンバイ) のときに電源が供給されていなくて、 Chromecast から電源が入れられないらしいです。 (USB 端子のない TV なので未確認)

そもそも Google Home と Chromecast の連携は同じ Google アカウントに紐づけておく必要があるらしいです。

一括制御

「いってきます」などで一括で電源を切りたいと思って、 連携方法を調べてみると、 IFTTT で連携する方法は This に Google Assistant で音声入力が指定できても、 That に Chromecast の制御が設定できなくて無理そうでした。 (後述のラズパイからの制御ができれば Webhook を挟むという手もありそうです。)

Google Home アプリで「その他の設定」から「ショートカット」を設定すれば 「いってきます」で「テレビを消す」という連携はできましたが、 デフォルトの応答がなくなって、黙ってテレビを消すだけになるので微妙な感じでした。 さらに、 IFTTT のように反応する言葉は複数設定できても、 同じ言葉に複数のアクションを設定できない (「いってきます」は登録済みと言われる) ので、 今回の目的には使えなさそうでした。

castv2-client からの制御

google-home-notifier で使った castv2-client で制御しようとしたところ、 そもそも API が対応していないようで無理そうでした。

https://www.reddit.com/r/Chromecast/comments/687z2k/turn_off_your_tv/ のコメントに

Edit: Even stranger, looking at the SDK, the Chromecast does support READING if the TV is in standby, but does not support SETTING the standby state. So strange that they’d implement read but not write.

とあったので、今のところ、 Chromecast 経由で電源制御をしたり、電源の状態を知ったりすることはできなさそうでした。

ラズパイで制御

標準で入っていた tvservice -ptvservice -o で出力を制御できるという情報もありましたが、 試した TV では、それで TV の電源制御はできませんでした。 多分ラズパイ側からの信号を出すかどうかの制御だけなのだと思います。

sudo apt install cec-utilscec-cleint コマンドを入れると、

  • echo on 0 | cec-client -s
  • echo standby 0 | cec-client -s

などで電源の制御ができました。

TV の HDMI 入力の数の関係で、 ラズパイを常時接続できていないので、 この方法を常用するのは難しそうでしたが、 今のところ、外部から連携するには、 cec-client を使うのが一番良さそうでした。

まとめ

Chromecast での TV の電源制御は制限が多すぎて、標準のもの以外はあまり使えなさそうな感じでしたが、 cec-client が入る機器を繋げられるなら、色々と応用がききそうでした。

Disqus Comments

Kazuhiro NISHIYAMA

Ruby のコミッターとかやってます。 フルスタックエンジニア(って何?)かもしれません。 About znzに主なアカウントをまとめました。

znz znz


Published