• Stars
    star
    132
  • Rank 274,205 (Top 6 %)
  • Language
    PHP
  • License
    Apache License 2.0
  • Created over 10 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

PHP API for the remote control of LG SmartTV (2012-2013 models)

PHP-LG-SmartTV

A PHP API for the LG SmartTV (2012+) which makes it easy for you to remote control your TV with code. You're able to execute simple/special commands and queries (change channel, get current channel, get channel list, set volume up, set volume down, save screenshot - save gif animation, ...)

You can find command parameters and query structures on the Official Documentation of the LG SmartTV (There is also a command/query list below the examples)

NEEDS CURL

How to connect to your TV

<?php

include 'smartTV.php';

/**
 * Create instance of TV
 * @param IP Address of TV
 * (optional) @param Port of TV (default is 8080)
**/
$tv = new SmartTV('192.168.2.103'); // new SmartTV('192.168.2.103', 8080)

/**
 * Set pairing key (if you don't know the pairing key
 *				    execute the method ..->displayPairingKey() and it will
 * 				    be shown on your tv)
 * @param Key

**/
$tv->setPairingKey(678887); // $tv->displayPairingKey();

/**
 * Authenticate to the tv
 * @except Login fails (wrong pairing key?)
**/
try {
	$tv->authenticate();
} catch (Exception $e) {
	die('Authentication failed, I am sorry.');
}

How to execute a simple command

<?php

/**
 * Set your volume up.
**/
$tv->processCommand(TV_CMD_VOLUME_UP);

/**
 * Set your volume down
**/
$tv->processCommand(TV_CMD_VOLUME_DOWN);

How to execute a special command

<?php

/**
 * Move your mouse
**/
$tv->processCommand(TV_CMD_MOUSE_MOVE, [ 'x' => 20, 'y' => 20 ]);

/**
 * Trigger a mouse click
**/
$tv->processCommand(TV_CMD_MOUSE_CLICK);

How to change your channel

<?php

/**
 * Change channel (Channel VIVA)
**/

// Get channel list
$channels    = $tv->queryData(TV_INFO_CHANNEL_LIST);

// Channel name
$channelName = 'VIVA';

// Search for channel $channelName
foreach ($channels as $channel) {
	if ($channel->chname == $channelName) {
		// Change channel
		$tv->processCommand(TV_CMD_CHANGE_CHANNEL, $channel);
		break;
	}
}

How to query data

<?php

/**
 * Get current volume
**/
echo $tv->queryData(TV_INFO_VOLUME)->level;

/**
 * Get current channel name
**/
echo $tv->queryData(TV_INFO_CURRENT_CHANNEL)->chname;

How to save a screenshot

<?php

/**
 * Save a screenshot
**/
file_put_contents('screen.jpeg', $tv->queryData(TV_INFO_SCREEN));

Practical Example

example

You can find the code of the Practical Example here.

List of commands and queries (+ Documentation links)

Simple commands TV_CMD_POWER, TV_CMD_NUMBER_0, TV_CMD_NUMBER_1, TV_CMD_NUMBER_2, TV_CMD_NUMBER_3, TV_CMD_NUMBER_4, TV_CMD_NUMBER_5, TV_CMD_NUMBER_6, TV_CMD_NUMBER_7, TV_CMD_NUMBER_8, TV_CMD_NUMBER_9, TV_CMD_UP, TV_CMD_DOWN, TV_CMD_LEFT, TV_CMD_RIGHT, TV_CMD_OK, TV_CMD_HOME_MENU, TV_CMD_BACK, TV_CMD_VOLUME_UP, TV_CMD_VOLUME_DOWN, TV_CMD_MUTE_TOGGLE, TV_CMD_CHANNEL_UP, TV_CMD_CHANNEL_DOWN, TV_CMD_BLUE, TV_CMD_GREEN, TV_CMD_RED, TV_CMD_YELLOW, TV_CMD_PLAY, TV_CMD_PAUSE, TV_CMD_STOP, TV_CMD_FAST_FORWARD, TV_CMD_REWIND, TV_CMD_SKIP_FORWARD, TV_CMD_SKIP_BACKWARD, TV_CMD_RECORD, TV_CMD_RECORDING_LIST, TV_CMD_REPEAT, TV_CMD_LIVE_TV, TV_CMD_EPG, TV_CMD_PROGRAM_INFORMATION, TV_CMD_ASPECT_RATIO, TV_CMD_EXTERNAL_INPUT, TV_CMD_PIP_SECONDARY_VIDEO, TV_CMD_SHOW_SUBTITLE, TV_CMD_PROGRAM_LIST, TV_CMD_TELE_TEXT, TV_CMD_MARK, TV_CMD_3D_VIDEO, TV_CMD_3D_LR, TV_CMD_DASH, TV_CMD_PREVIOUS_CHANNEL, TV_CMD_FAVORITE_CHANNEL, TV_CMD_QUICK_MENU, TV_CMD_TEXT_OPTION, TV_CMD_AUDIO_DESCRIPTION, TV_CMD_ENERGY_SAVING, TV_CMD_AV_MODE, TV_CMD_SIMPLINK, TV_CMD_EXIT, TV_CMD_RESERVATION_PROGRAM_LIST, TV_CMD_PIP_CHANNEL_UP, TV_CMD_PIP_CHANNEL_DOWN, TV_CMD_SWITCH_VIDEO, TV_CMD_APPS,

Special commands TV_CMD_MOUSE_MOVE, TV_CMD_MOUSE_CLICK, TV_CMD_TOUCH_WHEEL, TV_CMD_CHANGE_CHANNEL

Queries TV_INFO_CURRENT_CHANNEL, TV_INFO_CHANNEL_LIST, TV_INFO_CONTEXT_UI, TV_INFO_VOLUME, TV_INFO_SCREEN, TV_INFO_3D