jpn_eagle's Blog

プログラミングの覚え書きとかカメラとか趣味の話

Pebble Watchでテレビを制御

 

衝動買いでスマートウォッチデビュー

初代Pebble Watchがかなり安くなっていたので購入。

スマホの通知が転送されるのでLINEやTwitterの簡単なメッセージ確認に便利。スマホを触る時間が確実に減った気がする。

ただ、たまに時間が1~5分ほどずれていることがある。(日本で発売されない理由はこれが原因か?)

腕時計をリモコン替わりにしたい

やはりスマートウォッチということで、普通の腕時計にはできないことをやりたい。

ちなみにフィクションの世界では・・・

・腕時計から麻酔針(バーロー)

・腕時計から強力なレーザー光線(007ゴールデンアイ

・腕時計で爆弾を起爆(N64のほうのゴールデンアイ

 

やっぱり現実的に考えてテレビのリモコンかなぁー。

HDMI-CECを利用する

まずはどうやってテレビを制御するのかを考える。

最近のテレビに搭載されているHDMIには機器間の通信制御にCECと呼ばれる各社共通の規格が採用されているので、今回はこれを利用することにする。

参考にしたサイト
Raspberry Pi のcec 制御とHDMIのオンオフ

全体図としては下記の図のとおり。

テレビ制御用のサーバーはLinuxならなんでも良いが今回はラズパイ。

これならテレビからUSBで電源が確保できる。

f:id:eaglejptattiieagle:20161026002911p:plain

ターミナルでラズパイにログインしてcec-clientをインストール

sudo aptitude install cec-utils

上記サイトのとおり下記コマンドを実行してみる。
echo 'standby 0' | cec-client -s

・・・テレビがほんとうに消えた。
とりあえず、オン/オフの制御ができることを確認したのでこれをHTTPリクエストで実行できるようPHPで簡単なスクリプトを組む。

<?php
//GETでパラメータを投げる(on 起動/off スタンバイ
$data = $_GET['pal'];
if($data == "off"){
       $results = exec('/bin/echo "standby 0" | /usr/bin/cec-client -s -d 1');
        echo $results;
} else if($data == "on"){
        $results = exec('/bin/echo "on 0" | /usr/bin/cec-client -s -d 1');
         echo $results;
}
?>

試しにパソコンのブラウザからURLを叩いてみる。
するとfaild to open vchiq instanceというエラーを吐き出して実行されない。
どうやらパーミッションの問題っぽい。
再びターミナルに戻って次のように入力。パーミッションを変更する。
sudo chmod a+rw /dev/vchiq

そんな感じでとりあえず「テレビをつける」「テレビを切る」という操作はできるようになった。
実際に操作してみるとこんな感じ。


チャンネル替えや音量変更はまた後日やってみる。