RaspberryPiとHDMI CECでTVの電源をON/OFFできるAPIサーバーを作ってみた。
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サーバーを作ってみました。
構成
仕組みは簡単で、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だけですが、機能を拡充してスマートホームを促進していきたいです。
Discussion