WebOS Client
Add package in your project:
deno add @bukhalo/webos-client
Or add package without install step:
import { Client } from "jsr:@bukhalo/webos-client";
Initialize the Client
class by passing the IP address of the TV as the first
argument, and run register()
function:
import { Client } from "@bukhalo/webos-client";
const client = new Client("192.168.0.1");
await client.register();
[!IMPORTANT] Once
register()
is executed, it will send a connection request to the TV, donโt forget to confirm it. This is the reason why the function returns a promise.After confirming the request on the TV, you need to save the token. If the code is executed in a Deno environment, the token will be automatically saved to
localStorage
. If the code is not executed in Deno or you want to change the default behavior, create your own class for storage by inheriting theStorage
abstract class from the package. You can specify your own storage when initializing the client by passing it as the second argument.
After that you can call one of the available methods, for example volumeUp()
:
import { Client } from "@bukhalo/webos-client";
const client = new Client("192.168.0.1");
await client.register();
await client.volumeUp();
Or send a custom request if you know type
, uri
and payload
for that
request:
import { Client, MessageType } from "@bukhalo/webos-client";
const client = new Client("192.168.0.1");
await client.register();
await client.sendMessage({
type: MessageType.REQUEST,
uri: "ssap://audio/volumeUp",
});
[!NOTE] Please note there are a very limited number of ready-made requests available in the client at the moment.
Reference
- https://github.com/bendavid/aiopylgtv/
- https://github.com/merdok/homebridge-webos-tv
- https://github.com/hobbyquaker/lgtv2
- https://github.com/home-assistant/home-assistant.io/issues/17685
- https://community.home-assistant.io/t/lg-webos-change-picture-setting-mode-with-scripts/262915/3
- https://www.webosbrew.org/pages/commands-cheatsheet.html