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