📺

RaspberryPiとHDMI CECでTVの電源をON/OFFできるAPIサーバーを作ってみた。

2022/04/11に公開

RaspberryPiとHDMI CECでTVの電源をON/OFFできるAPIサーバーを作ってみた。

リポジトリ

https://gitlab.com/harusame0616/tv-webcon

背景

我が家ではスマートホームを推し進めていて、ライトやテレビなどはスマートスピーカーなどで操作してます。

テレビのON/OFFはリモコンの赤外線を記憶して操作できるNature Remoを使っているのですが、TVのリモコンと同じく電源の操作がトグルでしか操作できないので、スマートスピーカーに「TV消して!」と言ってもテレビが消えてるとついてしまう状態でした。

そこで何か方法がないか調べていたのですが、HDMI接続した機器からTVをコントロールできるHDMI CECを使うと電源のON/OFFができそうでした。

HDMI CECとはテレビやDVDレコーダーなどの機器間でやり取りをするための規格で、DVDレコーダーの電源を入れると自動でテレビの電源が入ってDVDレコーダーに入力が切り替わるといった機能を実現している規格です。
パナソニックの「ビエラリンク」、東芝の「レグザリンク」といった「~リンク」はこのHDMI CECをもとにした規格なんだとか。
※ ただし各社で独自拡張をしているため、別々の~リンクを使った操作はうまくいかないことがあるそうです。

RaspberryPiもこの HDMI CECに対応しているため、今回のAPIサーバーを作ってみました。

構成

architecture

仕組みは簡単で、nodeでhttpサーバーを立てて、iPhoneのショートカット.appからのhttpリクエストをもとに、cec-utilsというcliツールでHDMI CECコマンド発行するだけです。

また、docker によってコンテナ化していて、docker-compose 設定ファイルも用意しているので、RaspberryPi上でgit cloneしてdocker-compose buildしてdocker-compose upすれば簡単に使えるようになっています。

あとがき

HDMI CECでできることをちゃんと把握できていないので、一旦は電源のON/OFFだけですが、機能を拡充してスマートホームを促進していきたいです。

GitHubで編集を提案

Discussion