Skip to main content

Python remote control gateway for sony bravia tv

Project description

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

Project details


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 hashes)

Uploaded Source

Built Distribution

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page