週末同期と遊んでてパナソニックのテレビを操作する方法を調べたり、便利なコードを発見したりしたので、そのメモ。
発端
同期と家でいろいろ話してて、その時PC画面を42型のテレビに映して議論してたのだけど、 ふと僕が「PCからテレビ操作できねーかなー」と言ったら、「同一LAN内のスマホからならアプリで出来るよ」と言われ、 ということは、同一LAN内のPCから操作できるんじゃね?ってことで、ぐぐったら こんなコードを見つけたり、 同期がiPhoneのパケット記録してくれたりして、 コマンドラインからリモコンと同等の操作ができるようになった(ただし電源を付けれない)。
とりあえずわかったこと
パナソニックのVIERA(蒸気アプリが対応しているもの、2011年以降のモデルに対応しているらしい)は電源が入ってると内部でhttpサーバーが動いていて、XMLをcurlで送りつけてやるとXMLの内容によってテレビの様々な操作(と言うか、上記アプリで出来る操作)ができる模様。
とりあえず X_SendKey というAPIがリモコンのキーを押すのと同等のAPIらしいです。
VIERA control class
↑の情報は、検索したら見つけた、VIERA control classの内容から得た情報です。
このPHPプログラムは、VIERAのAPIの一部のラッパになっていて、とりあえず以下のようにしてテレビを操作することが出来ます。
$vc = new vieraControl('192.168.x.x'); // どうにかしてテレビのLAN内IPを調べる
$vc->sendKey("NRC_VOLUP-ONOFF"); // ボリュームを上げるキーコード
簡単ですね。
キーの種類
このプログラムはご丁寧に、利用可能と思われるキーをすべて内部でコメントとともに書いておいてくれています。 幾つかは僕のテレビでは何も起こりませんでしたが、おそらく機種依存なのでしょう。
よく使うと思われるのは以下のキーです。
- NRC_CH_DOWN-ONOFF / NRC_CH_UP-ONOFF チャンネルをひとつ戻る/進む
- NRC_VOLUP-ONOFF / NRC_VOLDOWN-ONOFF 音量を上げる/下げる
- NRC_CHG_INPUT-ONOFF 入力を切り替える
- NRC_RECLIST-ONOFF 録画リストを開く
- NRC_POWER-ONOFF 電源を切る (ただしつけることは出来ないので注意)
- NRC_RETURN-ONOFF 戻るボタン
- NRC_ENTER-ONOFF 決定ボタン
- NRC_RIGHT-ONOFF 右ボタン
- NRC_LEFT-ONOFF 左ボタン
- NRC_UP-ONOFF 上ボタン
- NRC_DOWN-ONOFF 下ボタン
コマンドから利用しやすく
僕は以下の二行をコードに書き加えて、コマンドから利用しやすくしてみました。
$vc = new vieraControl('192.168.x.x');
$vc->sendKey("NRC_${argv[1]}-ONOFF");
次のように利用できます。
php viera.php VOLDOWN
雑感
今回は見つけたプログラムを利用してテレビの操作を行いましたが、 プログラムを見て分かる通りcurlするだけなのでいろいろな言語から操作することが出来ます。
アプリケーションに組み込む夢が広がるような、電源の入った自宅のテレビを操作出来るだけなのでそうでもないような、微妙な感じです。 電源さえ入れておけばリモコンが必要ないのは便利ですね。キーコードを覚えておくのは手間なので、簡単なGUIアプリケーションを作っておくと良さそうです。
参考リンク
- Panasonic TV Remote 2 調べるきっかけになった公式スマホアプリ
- VIERA control class 調べるまでもなく全部書いてあったPHPプログラム