paint-brush
Making a TV remote in Pythonby@anthonypjshaw
12,989 reads
12,989 reads

Making a TV remote in Python

by Anthony ShawFebruary 3rd, 2017
Read on Terminal Reader
Read this story w/o Javascript
tldt arrow

Too Long; Didn't Read

I’d heard plenty of great things about the <a href="http://pybee.org/" target="_blank">BeeWare</a> project for Python over the past year. Python certainly doesn’t come to mind when you think about mobile app development, but it is a language and the tools exist to compile/convert it into native code on iOS, Android and Windows.

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - Making a TV remote in Python
Anthony Shaw HackerNoon profile picture

I’d heard plenty of great things about the BeeWare project for Python over the past year. Python certainly doesn’t come to mind when you think about mobile app development, but it is a language and the tools exist to compile/convert it into native code on iOS, Android and Windows.

In this tutorial I will show how to build a basic TV remote for the Panasonic Viera TVs on iPhone.

Requirements for iOS

  • Xcode (and therefore a mac), or you can follow this tutorial for Android and at the end I’ll point out some differences
  • Python 3.5, although this would work on earlier versions
  • A Panasonic Viera TV, connected to the network

Creating the project

Creating a test project is straightforward, we download a package called briefcase pip install briefcase, make a new folder for our project mkdir tv_remote and then within that creating a folder called Remote with the files __init__.py and app.py inside. __init__.py can be empty, app.py is our entry point so at a minimum we need the boiler plate code below

Also create a file setup.py with some information on the package. This is where we describe to briefcase which platforms we want to build for. Also, very importantly we can specify the pip packages that this app will need. Our’s need the toga UI library and also a Python library for controlling the TV called PyViera.

Once all that is done, your directory should look like this.

Your directory should look like this.

Now you can run (from within tv_remote directory) a command to download all the packages and components and build an xcode project

python setup.py ios

After a few minutes you’ll get an iOS subdirectory and an xcodeproj directory which you can open from XCode.

Going into XCode and building that project, it will start up the iPhone simulator and we have our working Hello World application. You’ll see in the bottom right a console window where you can send debug info for your app.

Nice! That was insanely easy.

Making our TV Remote

Our second prototype, we’re going to add button to change the channel, nothing complicated, just for the number 5.

Rebuilding that app and launching it, once the discover TVs method operates, it’ll ask for network permissions so we know it’s working correctly.

You’ll need to turn the TV on first, then try pressing that number 5!

Building out the buttons

Now working through a full example, we want to understand the layout model for Toga. Within Toga you can apply CSS styles for margin, padding, box layout and justification.

In this more detailed example we can see creating 5 rows of buttons and aligning them to draw a remote

Go ahead and build the project (making sure you’re editing app.py within the xcode project, not the original directory) and voila! A working TV remote.

The “aha” moment

This isn’t about not having to learn Swift or Objective-C, Python is an ecosystem not just a language.

Using this pattern, you can take any of the 90,000+ packages on PyPi and turn them into simple mobile apps.

What about Android?

Going back over those steps, simply adjust setup.py to have the ‘android’ platform and run python setup.py android and briefcase will build out an Android project for you.