Home

Awesome

bravia2mqtt

A bridge between Sony Bravia Smart TVs and MQTT.

NPM Version GitHub license

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.

TopicValue
bravia:<id>/status/isOnThe current power status as a boolean
bravia:<id>/status/volumeThe current volume level as an integer
bravia:<id>/status/isMutedThe current audio mute status as a boolean
bravia:<id>/status/channelThe current channel as a string of the form <channel>.<subchannel>
bravia:<id>/status/inputThe currently selected input as a string (eg. component1, hdmi3)
bravia:<id>/status/isPictureMutedThe current video mute status as a boolean
bravia:<id>/status/isPipEnabledThe current state of the PIP display as a boolean

Control

These topics can be used to control various features of the TV.

Topic TemplateCommandValue TypeResults on
bravia:<id>/sendIrCodeSend an IR code to the TV. See here for a full list of codes
bravia:<id>/<cmd>/isOnget<br>set<br>togglebooleanbravia:<id>/status/isOn
bravia:<id>/<cmd>/volumeget<br>setintegerbravia:<id>/status/volume
bravia:<id>/<cmd>/isMutedget<br>setbooleanbravia:<id>/status/isMuted
bravia:<id>/<cmd>/channelget<br>setstring: <channel>.<subchannel>bravia:<id>/status/channel
bravia:<id>/<cmd>/tripletChannelget<br>setstring: <x>.<y>.<z>bravia:<id>/status/tripletChannel
bravia:<id>/<cmd>/inputSourceget<br>setstring: cable, antenna, etc.bravia:<id>/status/inputSource
bravia:<id>/<cmd>/inputget<br>setstring: hdmi3, component1, etc.bravia:<id>/status/input
bravia:<id>/<cmd>/isPictureMutedget<br>set<br>togglebooleanbravia:<id>/status/isPictureMuted
bravia:<id>/<cmd>/isPipEnabledget<br>set<br>togglebooleanbravia:<id>/status/isPipEnabled
bravia:<id>/<cmd>/pipPositiontoggle
bravia:<id>/<cmd>/broadcastAddressgetstringbravia:<id>/status/broadcastAddress
bravia:<id>/<cmd>/macAddressgetstringbravia:<id>/status/macAddress
bravia:<id>/<cmd>/sceneSettingget<br>setstring: auto, auto24pSync, generalbravia:<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

Meta

Zach Bean – zb@forty2.com

Distributed under the MIT license. See LICENSE for more detail.