bravia2mqtt v1.0.0
bravia2mqtt
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.
Getting Started
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
Topics and Payloads
This app is intended to conform to the mqtt-smarthome architecture. Below is a description of the topics used.
Status updates
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 |
Control
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 | getsettoggle | boolean | bravia:<id>/status/isOn |
bravia:<id>/<cmd>/volume | getset | integer | bravia:<id>/status/volume |
bravia:<id>/<cmd>/isMuted | getset | boolean | bravia:<id>/status/isMuted |
bravia:<id>/<cmd>/channel | getset | string: <channel>.<subchannel> | bravia:<id>/status/channel |
bravia:<id>/<cmd>/tripletChannel | getset | string: <x>.<y>.<z> | bravia:<id>/status/tripletChannel |
bravia:<id>/<cmd>/inputSource | getset | string: cable , antenna , etc. | bravia:<id>/status/inputSource |
bravia:<id>/<cmd>/input | getset | string: hdmi3 , component1 , etc. | bravia:<id>/status/input |
bravia:<id>/<cmd>/isPictureMuted | getsettoggle | boolean | bravia:<id>/status/isPictureMuted |
bravia:<id>/<cmd>/isPipEnabled | getsettoggle | 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 | getset | string: auto , auto24pSync , general | bravia:<id>/status/sceneSetting |
Contributing
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
Release History
- 1.0.0
- The first release.
Meta
Zach Bean – zb@forty2.com
Distributed under the MIT license. See LICENSE for more detail.
7 years ago