BRAVIAの操作
SONY純正のTV SideViewというBRAVIA用アプリがあるが、
このアプリとBRAVIA間の通信をパケットキャプチャした方がおり、
通信の詳細が明らかになっている。
今回はこれを利用して、LinuxからネットワークでBRAVIAを操作してみる。
準備
BRAVIA側での作業(下記はKDL-40W900Aでの例)
- BRAVIAをネットワークに接続する。
- [モバイル機器/レンダラー機能]を設定する。
- リモコンの[ホーム]ボタンを押す。
- [設定]>[通信設定]>[ホームネットワーク設定]>[モバイル機器/レンダラー設定]>[モバイル機器/レンダラー機能]を開く。
- [入]を選ぶ。
- IPアドレスを確認する。
- リモコンの[ホーム]ボタンを押す。
- [設定]>[通信設定]>[ネットワーク設定]>[接続状態を確認する]を開く。
- IPアドレスを確認する。
Linuxサーバ側での作業
- cURLのインストール。
sudo aptitude install curl
操作の実行
Linuxサーバ側での作業
- 下記のようにして、BRAVIAにSOAPリクエストを送信する。
(画面幅の都合上、改行して記載。実際は一行で入力する。)
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コード |
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コードの一覧は、下記を実行すると入手できる。
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のことのようだ。
下記のようにすると設定できる。
BRAVIA側の操作(下記はKDL-40W900Aでの例)
- リモートスタートを有効にする。
- リモコンの[ホーム]ボタンを押す。
- [設定>[通信設定]>[ホームネットワーク設定]>[リモートスタート]を開く。
- [入]を選ぶ。
- MACアドレスを確認する。
- リモコンの[ホーム]ボタンを押す。
- [設定]>[通信設定]>[ネットワーク設定]>[接続状態を確認する]を開く。
- MACアドレスを確認する。
Linuxサーバ側の操作(下記はRaspberry Piでの例)
- etherwakeのインストール。
sudo aptitude install etherwake
- Wake On LANのテスト。
sudo etherwake 【BRAVIAのMACアドレス】
なお、起動から数秒は、SOAPリクエストを受け付けないようなので、注意すること。