Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/hobbyquaker/lgtv2
Control LG WebOS TV using node.js :tv:
https://github.com/hobbyquaker/lgtv2
lg node-module smart-tv smarthome tv webos
Last synced: 2 months ago
JSON representation
Control LG WebOS TV using node.js :tv:
- Host: GitHub
- URL: https://github.com/hobbyquaker/lgtv2
- Owner: hobbyquaker
- License: mit
- Fork: true (msloth/lgtv.js)
- Created: 2015-11-15T15:21:27.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2022-02-04T13:34:20.000Z (over 2 years ago)
- Last Synced: 2024-04-14T06:28:52.639Z (3 months ago)
- Topics: lg, node-module, smart-tv, smarthome, tv, webos
- Language: JavaScript
- Homepage:
- Size: 214 KB
- Stars: 332
- Watchers: 29
- Forks: 45
- Open Issues: 24
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Lists
- awesome-smart-tv - lgtv2 - Node.js module for remote control of LG webOS TV via WebSocket messages (JavaScript). (Platforms / LG webOS)
- https-github.com-vitalets-awesome-smart-tv.gitblah - lgtv2 - Node.js module for remote control of LG webOS TV via WebSocket messages (JavaScript). (Platforms / LG webOS)
README
# LGTV2
[![NPM version](https://badge.fury.io/js/lgtv2.svg)](http://badge.fury.io/js/lgtv2)
[![npm](https://img.shields.io/npm/dt/lgtv2.svg)]()
[![dependencies Status](https://david-dm.org/hobbyquaker/lgtv2/status.svg)](https://david-dm.org/hobbyquaker/lgtv2)
[![Build Status](https://travis-ci.org/hobbyquaker/lgtv2.svg?branch=master)](https://travis-ci.org/hobbyquaker/lgtv2)
[![XO code style](https://img.shields.io/badge/code_style-XO-5ed9c7.svg)](https://github.com/sindresorhus/xo)
[![License][mit-badge]][mit-url]Simple Node.js module to remote control LG WebOS smart TVs.
> this is a fork of [LGTV.js](https://github.com/msloth/lgtv.js), heavily modified and rewritten to suite my needs.
With __v1.4.0__ the location and filename of the keyFile is changed, so you likely will have to accept the connection on
your TV again after upgrading to 1.4.0.## Projects using this Module
* [node-red-contrib-lgtv](https://github.com/hobbyquaker/node-red-contrib-lgtv) - [Node-RED](https://nodered.org/) Nodes to control LG webOS Smart TVs.
* [lgtv2mqtt](https://github.com/hobbyquaker/lgtv2mqtt) - Interface between LG WebOS Smart TVs and MQTT.
* [homebridge-webos-tv](https://github.com/merdok/homebridge-webos-tv) - [Homebridge](https://github.com/nfarina/homebridge) plugin for LG WebOS TVs.
* [ioBroker.lgtv](https://github.com/SebastianSchultz/ioBroker.lgtv) - LG WebOS SmartTV adapter for [ioBroker](http://iobroker.net/).## Installation
`npm install lgtv2`
## TV configuration
You need to allow "LG Connect Apps" on your TV - see http://www.lg.com/uk/support/product-help/CT00008334-1437131798537-others
## Usage Examples
Subscribe to volume and mute changes and output to console:
```javascriptvar lgtv = require("lgtv2")({
url: 'ws://lgwebostv:3000'
});lgtv.on('error', function (err) {
console.log(err);
});lgtv.on('connect', function () {
console.log('connected');
lgtv.subscribe('ssap://audio/getVolume', function (err, res) {
if (res.changed.indexOf('volume') !== -1) console.log('volume changed', res.volume);
if (res.changed.indexOf('muted') !== -1) console.log('mute changed', res.muted);
});
});
```Turn TV off:
```javascriptvar lgtv = require("lgtv2")({
url: 'ws://lgwebostv:3000'
});lgtv.on('error', function (err) {
console.log(err);
});lgtv.on('connect', function () {
console.log('connected');
lgtv.request('ssap://system/turnOff', function (err, res) {
lgtv.disconnect();
});
});
```## API
### options
* url - websocket url of TV. default: 'ws://lgwebostv:3000'
* timeout - request timeout in milliseconds, default: 15000
* reconnect - reconnect interval in milliseconds, default: 5000
* keyFile - path for key storage. Will be suffixed with hostname/ip of TV. default: Linux: `~/.lgtv2/keyfile-`, macOS:
`~/Library/Preferences/lgtv2/keyfile-`
* saveKey - you can override this with your own function for saving the key
* clientKey - you have to supply the key here if you're using a custom saveKey method### methods
#### request(url [, payload] [, callback])
Payload and callback params are optional.
#### subscribe(url, callback)
#### disconnect()
Closes the connection to the TV and stops auto-reconnection.
#### getSocket(url, callback)
Get specialized socket connection for mouse and button events
Example:
```Javascript
lgtv.getSocket(
'ssap://com.webos.service.networkinput/getPointerInputSocket',
function(err, sock) {
if (!err) {
sock.send('click');
}
}
);
```### events
#### prompt
is called when TV prompts for App authorization
#### connect
is called when a connection is established and authorized
#### connecting
is called when trying to connect to the TV
#### close
#### error
is called when Websocket connection errors occur. Subsequent equal errors will only be emitted once (So your log isn't
flooded with EHOSTUNREACH errors if your TV is off)## Commands
#### api/getServiceList
#### audio/setMute
Enable/Disable mute
Example: ```lgtv.request('ssap://audio/setMute', {mute: true});```
#### audio/getStatus
#### audio/getVolume
#### audio/setVolume
Example: ```lgtv.request('ssap://audio/setVolume', {volume: 10});```
#### audio/volumeUp
#### audio/volumeDown
#### com.webos.applicationManager/getForegroundAppInfo
#### com.webos.applicationManager/launch
#### com.webos.applicationManager/listLaunchPoints
#### com.webos.service.appstatus/getAppStatus
#### com.webos.service.ime/sendEnterKey
#### com.webos.service.ime/deleteCharacters
#### com.webos.service.tv.display/set3DOn
#### com.webos.service.tv.display/set3DOff
#### com.webos.service.update/getCurrentSWInformation
#### media.controls/play
Example: ```lgtv.request('ssap://media.controls/play');```
#### media.controls/stop
#### media.controls/pause
Example: ```lgtv.request('ssap://media.controls/pause');```
#### media.controls/rewind
#### media.controls/fastForward
#### media.viewer/close
#### system/turnOff
#### system.notifications/createToast
Show a Popup Window.
Example: ```lgtv.request('ssap://system.notifications/createToast', {message: 'Hello World!'});```
#### system.launcher/close
#### system.launcher/getAppState
#### system.launcher/launch
Start an app.
Example: ```lgtv.request('ssap://system.launcher/launch', {id: 'netflix'});```
#### system.launcher/open
#### tv/channelDown
#### tv/channelUp
#### tv/getChannelList
#### tv/getChannelProgramInfo
#### tv/getCurrentChannel
#### tv/getExternalInputList
#### tv/openChannel
#### tv/switchInput
#### webapp/closeWebApp
## License
MIT (c) [Sebastian Raff](https://github.com/hobbyquaker)
[mit-badge]: https://img.shields.io/badge/License-MIT-blue.svg?style=flat
[mit-url]: LICENSE