Skip to main content

Python remote control for Sony Bravia TV

License: MIT PyPI - Python version supported

Author Denis Machard d.machard@gmail.com
License MIT
PyPI https://pypi.org/project/sonybravia-remotecontrol/

This is a Python remote control gateway for Sony Bravia TV with minimal but sufficient basic controls. This remote control acts as a websocket Gateway of the Simple IP API for more reactivity. More details on Simple IP control https://pro-bravia.sony.net/develop/integrate/ssip/overview/index.html

Table of contents

Installation

pip install sonybraviatv_remotecontrol

Start remote control

As prerequisite configure your TV,

  • Enable remote device control

    [HOME] Settings > Network > Home network setup > Renderer > Renderer function > Enable [Default: Enable]

  • Enable “Simple IP control”

    [HOME] Settings > Network > Home network setup > IP control > Simple IP control > Enable [Default: Disable]

After that, you can start the remote control and provides the address IP of your Sony bravia TV.

sonybraviatv_remotecontrol --help
usage: sonybraviatv_remotecontrol [-h] [--destport DESTPORT] [--desthost DESTHOST]
                        [--bindport BINDPORT] [--bindhost BINDHOST]

optional arguments:
  -h, --help           show this help message and exit
  --destport DESTPORT  destination backend tcp port default=20060
  --desthost DESTHOST  destination backend host address default=127.0.0.1
  --bindport BINDPORT  bind on port default=8081
  --bindhost BINDHOST  bind on host default=0.0.0.0

Available buttons

To interact with the remote control, you need to use a websocket client and send the following JSON commands to the address ws://<remotecontrol_ip>:8081.

Power ON/OFF

{"button": "press_poweron"} // press on power on button
{"button": "press_poweroff"} // press on power off button

Channel selection

{"button": "press_channel<id>"} // press on channel<1...XX> button

Volume

{"button": "press_volup"} // press on volume up button
{"button": "press_voldown"} // press on volume down button
{"button": "press_mute"} // press on mute button

TV Navigation

{"button": "press_up"} // press on up button
{"button": "press_down"} // press on down button
{"button": "press_left"} // press on left button
{"button": "press_right"} // press on right button
{"button": "press_back"} // press on back button
{"button": "press_confirm"} // press on confirm button

HDMI selection

{"button": "press_hdmi<id>"} // press on channel<1..4> button

Miscs buttons

{"button": "press_netflix"} // press on netflix button
{"button": "press_home"} // press on home button

Websocket client

Basic demo

<html>
  <head>
      <title>RemoteControl demo</title>
      <style type="text/css">
          .buttons {
              font-size: 1em;
              display: flex;
              justify-content: center;
          }
          .button {
              padding: 2rem;
              border: medium solid;
              min-height: 1em;
              min-width: 1em;
              cursor: pointer;
              user-select: none;
          }
      </style>
  </head>
  <body>
    <div class="buttons">
      <div class="poweron button">ON</div>
      <div class="poweroff button">OFF</div>
    </div>
    <script>
      var websocket = new WebSocket("ws://localhost:8081/");

      var poweron = document.querySelector('.poweron')
      var poweroff = document.querySelector('.poweroff')

      poweron.onclick = function (event) {
        websocket.send(JSON.stringify({button: 'press_poweron'}));
      }
      poweroff.onclick = function (event) {
        websocket.send(JSON.stringify({button: 'press_poweroff'}));
      }
    </script>
  </body>
</html>

Systemd service

Example of system service file for Centos7

vim /etc/systemd/system/sonybraviatv_remotecontrol.service

[Unit]
Description=Sony Bravia TV remote control Service
After=network.target

[Service]
ExecStart=/usr/local/bin/sonybraviatv_remotecontrol --desthost=10.0.0.200
Restart=on-abort
Type=simple
User=root

[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl start sonybraviatv_remotecontrol
systemctl status sonybraviatv_remotecontrol
systemctl enable sonybraviatv_remotecontrol

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sonybraviatv_remotecontrol-0.3.0.tar.gz (7.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sonybraviatv_remotecontrol-0.3.0-py3-none-any.whl (8.3 kB view details)

Uploaded Python 3

File details

Details for the file sonybraviatv_remotecontrol-0.3.0.tar.gz.

File metadata

  • Download URL: sonybraviatv_remotecontrol-0.3.0.tar.gz
  • Upload date:
  • Size: 7.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.6

File hashes

Hashes for sonybraviatv_remotecontrol-0.3.0.tar.gz
Algorithm Hash digest
SHA256 c96014d1280c16b63cd45643772f777a040ad51a3910a9ae8281d91dab196cfe
MD5 beee76109403be057fc39899f71bcd87
BLAKE2b-256 247e1d25f66feff10f38c89767929425920c6df5262ea11414ee88091a499ee4

See more details on using hashes here.

File details

Details for the file sonybraviatv_remotecontrol-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: sonybraviatv_remotecontrol-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 8.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.6

File hashes

Hashes for sonybraviatv_remotecontrol-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 171113799b84fbe293453ffca504605123ff3a54ce31284770005282676caa74
MD5 4065d43bf29316df3b2ce55ae3b7a55b
BLAKE2b-256 8e8825f3554b54db65ebc345be1dc8bb537e3b9bf7a732ad2be3487a2ffb7cec

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 files

0.2.0

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page