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

Uploaded Source

Built Distribution

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.

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