注目の記事

BRAVIAのREST APIを使ってテレビを操作してみた

2020.08.24

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はい、どーも!CX事業本部の吉田です。

今日 Twitterをいつものように見てたところ、以下のようなツイートが流れてきました。

ちょっと見た感じ、法人向け製品のみに実装されてるのかな?と・・・ ちょうど我が家のテレビもBRAVIA(KJ-55X8550G)だったので、試しにそのIPを叩いてみると、nginxのレスポンスが返ってくるではありませんか。 多分REST APIで叩けそうだぞ!ということで試してみました。

前準備

まずはテレビ側を準備します。

テレビのホーム画面から設定に入ります。機種によってことなりますが、設定がホーム画面右上のギアアイコンから入れます。

次にネットワーク周りの設定からIPコントロールに入ります。

認証のところが最初は Normal だけのはずなので、これを Normal and Pre Shared Key に変えます。

その後、下の Pre Shared Key からキーの値を設定しておきます。このキーはREST APIを叩く際に使う認証キーです。自分はひとまずテストとして数字4桁で設定しました。

その後、レンダラー設定からレンダラー機能が有効になっていることを確認します。

やってみる

これでテレビ側の準備は完了したので、実際に電源をオン/オフするAPIを叩いてみましょう。API仕様書はこちらですね。

どうやら http://[テレビのIPアドレス]/sony/system に対してPOSTすればいいようです。ボディには

{
    "method": "setPowerStatus",
    "id": 55,
    "params": [
        {"status": true}
    ],
    "version": "1.0"
}

という内容をセットしましょう。認証方法ですがヘッダに X-Auth-PSK:[キーの値] を設定すればいいようです。

それではcurlを使って、実際にAPIを叩いてみます。

curl -H 'X-Auth-PSK:[認証キー]' -XPOST http://[テレビのIPアドレス]/sony/system -d '{"method": "setPowerStatus","id": 55,"params": [{"status": true}],"version": "1.0"}'

テレビの電源が入ることが確認できるかと思います。

ちなみに paramsstatusfalse を指定すると、逆に電源をオフにできます。

まとめ

電源をオン/オフするだけでなく、APIリストには他にも多くのAPIがあるようです。

このあたりでいろいろ遊んでみるのも楽しそうですね。