Pebble Watchでテレビを制御
衝動買いでスマートウォッチデビュー
初代Pebble Watchがかなり安くなっていたので購入。
スマホの通知が転送されるのでLINEやTwitterの簡単なメッセージ確認に便利。スマホを触る時間が確実に減った気がする。
ただ、たまに時間が1~5分ほどずれていることがある。(日本で発売されない理由はこれが原因か?)
腕時計をリモコン替わりにしたい
やはりスマートウォッチということで、普通の腕時計にはできないことをやりたい。
ちなみにフィクションの世界では・・・
・腕時計から麻酔針(バーロー)
・腕時計から強力なレーザー光線(007ゴールデンアイ)
やっぱり現実的に考えてテレビのリモコンかなぁー。
HDMI-CECを利用する
まずはどうやってテレビを制御するのかを考える。
最近のテレビに搭載されているHDMIには機器間の通信制御にCECと呼ばれる各社共通の規格が採用されているので、今回はこれを利用することにする。
参考にしたサイト
Raspberry Pi のcec 制御とHDMIのオンオフ
全体図としては下記の図のとおり。
テレビ制御用のサーバーはLinuxならなんでも良いが今回はラズパイ。
これならテレビからUSBで電源が確保できる。
ターミナルでラズパイにログインして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
そんな感じでとりあえず「テレビをつける」「テレビを切る」という操作はできるようになった。
実際に操作してみるとこんな感じ。
HDMI準拠のCEC信号(レグザリンクとかブラビアリンクに使われているアレ)を利用して腕時計からテレビをオンオフするテスト pic.twitter.com/HUARZ88Gdy
— いーぐる@BF1攻略中 (@jpn_eagle) 2016年10月25日
チャンネル替えや音量変更はまた後日やってみる。