Node-REDからネットワーク経由でBRAVIAの電源をONにする(node-red-contrib-bravia)


はじめに

スマートホーム化でしばしば問題になるのですが、赤外線リモコンのONとOFFが同じボタンという事があります。このようなトグルのスイッチはステータスを管理しなければなりませんが、結構めんどくさいです。

うちのBRAVIAのリモコンも電源はトグルスイッチとなっています。が、安心してください!Node-REDにはBRAVIAをリモコンではなくネットワーク経由で操作する、「node-red-contrib-bravia」があります。
ちょっとクセのあるノードなのですが、今回はこのノードを利用する方法を書きます。

環境

  • SONY BRAVIA (KJ-43X8500F) AndroidTV (8.0.0)
  • Node-RED v0.20.7

BRAVIA側の設定

node-red-contrib-bravia」のページに記載されているように設定します。

  1. 「設定」メニューから、[通信設定]-[ホームネットワーク]-[レンダラー設定]で「レンダラー機能」をONにします。
  2. 「戻る」を押して、[IPコントロール]-[認証]で「Normal and Pre-Shared Key」に設定します。
  3. [Pre-Shared Key]で適当な4桁の数字を設定します。
  4. 「簡易IPコントロール」をONにします。

以上です。

Node-REDのフロー作成

とりあえず、「node-red-contrib-bravia」を、Node-REDの「パレットの管理」から「ノードの追加」をするなりしてください。


使うノードは、devicesにある「bravia ircc」と「bravia api」です。

慣れている方はさくっとフローを作っちゃうと思われますが、このノードはクセのようなものがあり、一度の実行でテレビがONにならない事がよくあります。どうもBRAVIA側が受け取り損なっているような動きに思えます。
そこで、1秒置いて電源の状態を確認し、ONになるまでAPIを発行するフローを作成します。

ノード内のIRCCコードやREST API(メソッド)については以下に情報があるようです。
https://pro-bravia.sony.net/ja/develop/index.html

ノード内のTVの設定をしておきます。「ないしょ」の部分にBRAVIA側で設定した4桁の数字を入力します。
IPアドレスはBRAVIAの「設定」から調べておいてください。

フローの配置は以下のようにします。

書き出したコードは以下です。BRAVIAの設定値は自分の環境に合わせてください。

[{"id":"e6d8cffe.02c36","type":"bravia-ircc","z":"f3171dc9.c79ab","tv":"66988a5d.eb48d4","ircc":"TvPower","name":"","x":950,"y":90,"wires":[]},{"id":"a6316d68.5739a","type":"switch","z":"f3171dc9.c79ab","name":"","property":"payload.status","propertyType":"msg","rules":[{"t":"eq","v":"standby","vt":"str"},{"t":"eq","v":"active","vt":"str"}],"checkall":"false","repair":false,"outputs":2,"x":620,"y":140,"wires":[["d43b6529.d19468"],["ea75f005.ad29d"]]},{"id":"d43b6529.d19468","type":"delay","z":"f3171dc9.c79ab","name":"","pauseType":"delay","timeout":"1","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":770,"y":90,"wires":[["e6d8cffe.02c36","e075bca7.6b2ae"]]},{"id":"67eb502c.5ad75","type":"bravia-api","z":"f3171dc9.c79ab","tv":"66988a5d.eb48d4","method":"system:1.0:getPowerStatus","payload":"","name":"","x":480,"y":140,"wires":[["a6316d68.5739a"]]},{"id":"e075bca7.6b2ae","type":"delay","z":"f3171dc9.c79ab","name":"","pauseType":"delay","timeout":"1","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":330,"y":140,"wires":[["67eb502c.5ad75"]]},{"id":"8cbf71f.a1e4c9","type":"inject","z":"f3171dc9.c79ab","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":150,"y":140,"wires":[["e075bca7.6b2ae"]]},{"id":"ea75f005.ad29d","type":"debug","z":"f3171dc9.c79ab","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":780,"y":160,"wires":[]},{"id":"66988a5d.eb48d4","type":"bravia-tv","z":"","name":"BRAVIA","host":"111.111.111.111","port":"80","psk":"0000"}]

電源のOFFもIRCCコードを変えるだけで作れます。
BRAVIAには他にも数多くのREST APIがあるので、色々調べて組み合わせると面白そうですね!

スマートホームでは、トグルスイッチを「必ずON/OFFにする」が必要となる場面が多いので、ご参考になれば幸いです。