A Really Smart TV

I have a smart TV. It can do many things. However you can’t control it effectively. Remote control is not very smart. The remote is a plastic dummy device with buttons on it. TV’s had same remotes 15 years ago. Different buttons but same functionality.

My idea is simple. I will have a smart device (RPI) which you can control with your smart phone.

Smart phones are much more capable than remote controls. They don’t have static buttons. They are completely dynamic. TV screen doesn’t have to be responsible for browsing and selecting content. You can browse much more easily with your smart phone and when you pick some content your TV will just play it. Only problem is if there are other people sitting with you. Will they look on your shoulder to see the content? Because you might be choosing a movie to watch. Solution is this: Whatever you are seeing in your phones screen, TV will have a mirror image in it. For instance:

This will be my strategy.

Raspberry PI

I have chosen Raspberry PI for this system. RPI 2 just launched and it is $35. With a case, usb wireless adapter, micro sd card it will cost about $70.

My primary programming language will be nodejs in this project.

I am writing a nodejs app running in RPI. This will be connected to Firebase. Remote control mobile apps are basic iOS and Android apps also connected to Firebase. Below is a diagram how things will work:

I have written 2 different web apps yet

These apps are just plain web apps running inside webviews in native mobile apps. They will communicate with the raspberry through firebase. However they don’t contact firebase directly. They just send their commands to native app. This is the intercommunication javascript file:

http://yify.azurewebsites.net/js/moviepi.js

Native apps have several functions. To open a new page inside smart phone:

moviepi.send({
command: ‘openPage’,
url: ‘http://someurl.com’
})

To open a new page in TV you call:

moviepi.send({
command: ‘openPageTV’,
url: ‘http://someurl.com’
});

Every different content app will be listed in mobile apps home screen.

These apps are registered to the system. Once they are registered they are listed in a gridview. This is a native screen. When you click an app that apps home url is opened in a new webview.

Youtube app is a good example to demonstrate how the system will work. It has a home page where you can search for videos.

Every video has a details page. User can either play the video in phone or in TV. When Play in TV button is called

moviepi.send({
command: ‘play’,
mediaType: ‘youtube’,
url: youtubeUrl,
title: 'Video Title'
});

When a video starts in TV, now playing tab shows currently playing video. Here there are obvious controls.


How do you connect the mobile device to your RPI? When you open your TV you see a screen like this:

This is the code you need to enter in your mobile device to connect to RPI. In settings tab:

You enter the code and tap save button. Device is connected. From now on you go to MyApps tab and browse content.

I will share more details soon.

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.