Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles
(untagged)

Wi-Fi Remote for Sony TV

0.00/5 (No votes)
6 Mar 2021 1  
This tip describes an application to control with Sony TVs connected to your Home Wi-Fi network from PC.

 

Image 1

Introduction

In this tip, I will explain how I have used the SonyAPILib shared by HKHerron.

The article shared by HKHerron has well explained how to use the library. I am here creating a UI similar to the IR Remote device in Windows Forms and used the library to communicate to the TV.

The work is in a very new stage. Any suggestion for improvements will be welcomed.

Background

The basic idea behind working on this program was to control the TV from a separate room within home, since in my home the TV is also used as a Home Music system.

Using the Code

The API basically has four stages as you will find in the article sonyAPILib. Those are as follows:

  1. Discovery
  2. Initialization
  3. Registration
  4. Remote Access

Discovery

We need to be searching for all the devices in the network and storing the same in a List. This would include any Sony devices in the network be it a Smartphone or a Smart TV.

SonyAPI_Lib mySonyLib = new SonyAPI_Lib();
SonyAPI_Lib.SonyDevice myTV = null;
List <SonyAPI_Lib.SonyDevice> fDev = mySonyLib.API.sonyDiscover(null);

Now, we need to find the exact device which needs to be connected. So far, I have seen that the Sony TV name starts with "KDL". Hence I am searching for any Device that has "KDL" in its name.

foreach (SonyAPI_Lib.SonyDevice discoverDev in fDev)
{
    if (discoverDev.Name.Contains("KDL"))
    {
        myTV = discoverDev;
        break;
    }
}

Initialization

Once the device is identified, the Device needs to be initialized.

SonyAPI_Lib.SonyDevice myDevice = new SonyAPI_Lib.SonyDevice();
myDevice.initialize(myTV);

Registration

Since I am using a Generation 1 Sony TV, and had no option to test on Generation 2/3 devices, I am keeping the code simple. Once the device is initialized, the Generation 1 device will show a message on the TV screen in order to confirm the access. Once the confirmation is provided, the registration is complete.

Remote Access

Once the registration is complete, a Windows form pops-up. Here we have some buttons and the click events sending IRCC Name for commanding the connected device.

private void butPower_Click(object sender, EventArgs e)
{
    try
    {
        com.ExecuteCommand(device, "PowerOff");
    }
    catch(Exception ea)
    {}
}

Classes in the Project

The following are the classes in the project.

RegisterDevice

class RegisterDevice
{
    public SonyAPI_Lib.SonyDevice DeviceInitialization()
    {
        SonyAPI_Lib mySonyLib = new SonyAPI_Lib();
        SonyAPI_Lib.SonyDevice myTV = null;
        //Device Discovery
        List<SonyAPI_Lib.SonyDevice> fDev = mySonyLib.API.sonyDiscover(null);

        foreach (SonyAPI_Lib.SonyDevice discoverDev in fDev)
        {
            if (discoverDev.Name.Contains("KDL"))
            {
                myTV = discoverDev;
                break;
            }
        }

        //Initializing Device
        SonyAPI_Lib.SonyDevice myDevice = new SonyAPI_Lib.SonyDevice();
        myDevice.initialize(myTV);

        return myDevice;
    }

    public bool DeviceResgitration(SonyAPI_Lib.SonyDevice myDevice)
    {
        bool RegComplete = myDevice.register();
        return RegComplete;
    }
}

RunCommand

class RunCommand
{
    public string ExecuteCommand(SonyAPI_Lib.SonyDevice device, string command)
    {
        string CmdList = device.get_remote_command_list();
        string irccCmd = device.getIRCCcommandString(command);

        return (device.send_ircc(irccCmd));
    }
}

History

  • The current version is 1.0.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here