A bridge between Sony Bravia Smart TVs and MQTT.
bravia2mqtt is a Node.js application that links Sony Bravia smart TVs to an MQTT broker. It is designed to be used to integrate these devices into a home automation system.
bravia2mqtt is distributed through NPM:
npm install -g bravia2mqtt
# or, if you prefer:
yarn global add bravia2mqtt
Running it is likewise easy:
bravia2mqtt # if your MQTT broker is running on localhost
bravia2mqtt -b mqtt://<hostname> # if your broker is running elsewhere
bravia2mqtt --help # to see the full usage documentation
This app is intended to conform to the mqtt-smarthome architecture. Below is a description of the topics used.
These topics are published as update notifications are received from the TV.
Topic | Value |
---|---|
bravia:<id>/status/isOn |
The current power status as a boolean |
bravia:<id>/status/volume |
The current volume level as an integer |
bravia:<id>/status/isMuted |
The current audio mute status as a boolean |
bravia:<id>/status/channel |
The current channel as a string of the form <channel>.<subchannel> |
bravia:<id>/status/input |
The currently selected input as a string (eg. component1, hdmi3) |
bravia:<id>/status/isPictureMuted |
The current video mute status as a boolean |
bravia:<id>/status/isPipEnabled |
The current state of the PIP display as a boolean |
These topics can be used to control various features of the TV.
Topic Template | Command | Value Type | Results on |
---|---|---|---|
bravia:<id>/sendIrCode |
Send an IR code to the TV. See here for a full list of codes | ||
bravia:<id>/<cmd>/isOn |
get set toggle |
boolean | bravia:<id>/status/isOn |
bravia:<id>/<cmd>/volume |
get set |
integer | bravia:<id>/status/volume |
bravia:<id>/<cmd>/isMuted |
get set |
boolean | bravia:<id>/status/isMuted |
bravia:<id>/<cmd>/channel |
get set |
string: <channel>.<subchannel> |
bravia:<id>/status/channel |
bravia:<id>/<cmd>/tripletChannel |
get set |
string: <x>.<y>.<z> |
bravia:<id>/status/tripletChannel |
bravia:<id>/<cmd>/inputSource |
get set |
string: cable , antenna , etc. |
bravia:<id>/status/inputSource |
bravia:<id>/<cmd>/input |
get set |
string: hdmi3 , component1 , etc. |
bravia:<id>/status/input |
bravia:<id>/<cmd>/isPictureMuted |
get set toggle |
boolean | bravia:<id>/status/isPictureMuted |
bravia:<id>/<cmd>/isPipEnabled |
get set toggle |
boolean | bravia:<id>/status/isPipEnabled |
bravia:<id>/<cmd>/pipPosition |
toggle | ||
bravia:<id>/<cmd>/broadcastAddress |
get | string | bravia:<id>/status/broadcastAddress |
bravia:<id>/<cmd>/macAddress |
get | string | bravia:<id>/status/macAddress |
bravia:<id>/<cmd>/sceneSetting |
get set |
string: auto , auto24pSync , general |
bravia:<id>/status/sceneSetting |
Contributions are of course always welcome. If you find problems, please report them in the Issue Tracker. If you've made an improvement, open a pull request.
Getting set up for development is very easy:
git clone <your fork>
cd bravia2mqtt
yarn
And the development workflow is likewise straightforward:
# make a change to the src/ file, then...
yarn build
node dist/index.js
# or if you want to clean up all the leftover build products:
yarn run clean
- 1.0.0
- The first release.
Zach Bean – zb@forty2.com
Distributed under the MIT license. See LICENSE for more detail.