大人のおもちゃ箱

Google Home IFTTT raspberry pi ブラビアテレビをPHPから完全に操作する

Google HomeとIFTTTとraspberry piを使いソニーのブラビアテレビを音声操作する環境を構築しています。

前回は、node.jsのテレビ操作ライブラリ(node:waynehaffenden/bravia)を、PHPのコマンド起動から利用しました。

waynehaffenden/braviaは、高機能で使いやすいライブラリでありましたが、PHPからの起動が遅いため運用するためには少し抵抗があります。

(おおよそ1・2秒のレスポンスです。。。)

その為、今回は別のライブラリを探すことにしました。

探したのはPHPのライブラリです。PHPで困った時は、composer(またはgithub)を探してみると便利なライブラリがたくさん見つかりますね。

そして、今回もcomposer内から探して見ると・・・

やはりありました!PHPTvが見つかりました。

https://github.com/mario-deluna/PHPTv

世界は広い!探せばあるものですね。さすがソニーさんです。

PHPTvを使ってみる

PHPTvのマニュアルやソースコードを確認してみると、どうやらコンソールからアプリを立ち上げて、そのアプリ上からテレビ操作用のコマンドを実行するタイプのようです。

まあ、ソースコードがあるので、そのあたりは好きにカスタマイズするとして、とりあえずは正規のインストールを行いPHPTvを触ってみたいと思います。

PHPTvのインストール

composer require mario-deluna/phptv
Problem 1
- Installation request for mario-deluna/phptv 1.0.1 -> satisfiable by mario-deluna/phptv[v1.0.1].
- mario-deluna/phptv v1.0.1 requires league/climate dev-master -> satisfiable by league/climate[dev-master] but these conflict with your requirements or minimum-stability.

上記エラーが発生したため

composer.jsonに下記の2行を追加して、エラーを回避しました。

"minimum-stability": "dev",
"prefer-stable": true

無事にインストールができたので

(インストールフォルダ)/bin/phptv (ブラビアテレビのIP) 0000

でアプリを起動します。

(その他、インストールフォルダに合わせて、autoload.phpのパス指定を調整しました)

コンソール上にアプリが立ち上がり、キーボードのキーに合わせて、ブラビアテレビが操作できました。

試しに十字キーを押してみると、選択が変わりました。押し続けている限り選択が移動しますね。

しかも、動作速度のレスポンスが非常に高速です。

これはこれで十分に面白い結果になりました。ただ、ここから自分の運用環境に合わせてカスタマイズしなければならない・・・

ただ、PHPTvのカスタマイズは比較的簡単に行えました。

はじめに /phptv/bin/phptv を読み込み
/phptv/src/PHPTv.php の
// enter cms loop
////$this->startCMDLoop();
の部分を、コメントアウトして
$ircc->send( '(実行コマンド)' );
コマンドの実行と差し替えれば、外部プログラムからの利用は可能です。

PHPTvは、電源のオン・オフから、ボリューム操作、コマンドの実行などなど、機能面で大変高機能なライブラリです。

今回はPHPのライブラリを試しました。そして、機能や性能にも十分満足していますが

node.js, PHPと続いたので、どうせなら!Pythonのライブラリも最後に確認してみたいと思います。

関連記事