Top/Linux/BRAVIAの操作

BRAVIAの操作 の変更点はてなブックマーク


#author("2018-04-05T12:48:25+09:00","default:admin","admin")
#author("2018-04-05T12:55:41+09:00","default:admin","admin")
SONY純正の[[TV SideView>http://info.tvsideview.sony.net/ja_jp/]]というBRAVIA用アプリがあるが、~
このアプリとBRAVIA間の通信をパケットキャプチャした方がおり、~
通信の詳細が明らかになっている。

今回はこれを利用して、LinuxからネットワークでBRAVIAを操作してみる。

*準備
**BRAVIA側での作業(下記はKDL-40W900Aでの例)
+BRAVIAをネットワークに接続する。
+[モバイル機器/レンダラー機能]を設定する。
++リモコンの[ホーム]ボタンを押す。
++[設定]>[通信設定]>[ホームネットワーク設定]>[モバイル機器/レンダラー設定]>[モバイル機器/レンダラー機能]を開く。
++[入]を選ぶ。
+IPアドレスを確認する。
++リモコンの[ホーム]ボタンを押す。
++[設定]>[通信設定]>[ネットワーク設定]>[接続状態を確認する]を開く。
++IPアドレスを確認する。

**Linuxサーバ側での作業
+cURLのインストール。
#code(,nonumber){{
sudo aptitude install curl
}}

*操作の実行
**Linuxサーバ側での作業
+下記のようにして、BRAVIAにSOAPリクエストを送信する。
(画面幅の都合上、改行して記載。実際は一行で入力する。)
#code(,nonumber){{
curl -X POST -d '
<?xml version="1.0" encoding="utf-8"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<s:Body>
<u:X_SendIRCC xmlns:u="urn:schemas-sony-com:service:IRCC:1">
<IRCCCode>
【IRCCコード】
</IRCCCode>
</u:X_SendIRCC>
</s:Body>
</s:Envelope>
' http://【BRAVIAのIPアドレス】/sony/IRCC
}}


なお、機種によっては、X-Auth-PSKヘッダを設定する必要があるかも。

詳しくは"BRAVIA X-Auth-PSK"で検索。

~

上記のIRCCコード、代表的なものは下表の通り。

|名前|IRCCコード|h
|PowerOff|AAAAAQAAAAEAAAAvAw==|
|VolumeUp|AAAAAQAAAAEAAAASAw==|
|VolumeDown|AAAAAQAAAAEAAAATAw==|
|Mute|AAAAAQAAAAEAAAAUAw==|
|ChannelUp|AAAAAQAAAAEAAAAQAw==|
|ChannelDown|AAAAAQAAAAEAAAARAw==|
|Num1|AAAAAQAAAAEAAAAAAw==|
|Num2|AAAAAQAAAAEAAAABAw==|
|Num3|AAAAAQAAAAEAAAACAw==|
|Num4|AAAAAQAAAAEAAAADAw==|
|Num5|AAAAAQAAAAEAAAAEAw==|
|Num6|AAAAAQAAAAEAAAAFAw==|
|Num7|AAAAAQAAAAEAAAAGAw==|
|Num8|AAAAAQAAAAEAAAAHAw==|
|Num9|AAAAAQAAAAEAAAAIAw==|
|Num0|AAAAAQAAAAEAAAAJAw==|
|Num11|AAAAAQAAAAEAAAAKAw==|
|Num12|AAAAAQAAAAEAAAALAw==|

その他のIRCCコードの一覧は、下記を実行すると入手できる。
#code(,nonumber){{
curl -d '{"method":"getRemoteControllerInfo","params":[],"id":1,"version":"1.0"}' http://【BRAVIAのIPアドレス】/sony/system
}}

*リモートでの電源オン(Wake On LAN)
手元の環境では、上記コードの一覧に、PowerOnのIRCCコードは表示されなかった。

(サイトによっては、PowerOnのコードが載っているが、そのコードを送信しても、電源はオンにならなかった。)

BRAVIAの説明書を調べたところ、「リモートスタート」の表記があり、これは[[Wake On LAN>https://ja.wikipedia.org/wiki/Wake-on-LAN]]のことのようだ。

下記のようにすると設定できる。

**BRAVIA側の操作(下記はKDL-40W900Aでの例)
+リモートスタートを有効にする。
++リモコンの[ホーム]ボタンを押す。
++[設定>[通信設定]>[ホームネットワーク設定]>[リモートスタート]を開く。
++[入]を選ぶ。
+MACアドレスを確認する。
++リモコンの[ホーム]ボタンを押す。
++[設定]>[通信設定]>[ネットワーク設定]>[接続状態を確認する]を開く。
++MACアドレスを確認する。

**Linuxサーバ側の操作(下記はRaspberry Piでの例)
+etherwakeのインストール。
#code(,nonumber){{
sudo aptitude install etherwake
}}
+Wake On LANのテスト。
#code(,nonumber){{
sudo etherwake 【BRAVIAのMACアドレス】
}}

~

なお、起動から数秒は、SOAPリクエストを受け付けないようなので、注意すること。

*参考
-[[sony_bravia.md - GitHub>https://gist.github.com/kalleth/e10e8f3b8b7cb1bac21463b0073a65fb]]
-[[Google HomeとRaspberry pi(HDMI-CEC soap)でテレビを完全にコントロールする - 大人のおもちゃ箱>https://otona-toy.hatenablog.com/entry/2018/03/16/184858]]

*Amazon
#amazon(B074Z3TZ1R,left)
#amazon(B01CFHHYF4,left)
#amazon(480071172X,left)
差分 一覧