npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

samsung-tv-remote

v2.2.0

Published

Remote client for Samsung SmartTV starting from 2016

Downloads

247

Readme

Features

✅ Support Samsung SmartTV from 2016+ ✅ Wake TV from sleep mode thanks to Wake-on-LAN (WoL) ✅ Send one or multiple keys at once to the TV241 known keys already predefined

Installation

npm install samsung-tv-remote --save
yarn add samsung-tv-remote

Usage

Example

/** CommonJS */
// const { SamsungTvRemote, Keys } = require('samsung-tv-remote');

/** ESM / Typescript */
import { SamsungTvRemote, Keys } from 'samsung-tv-remote';

const main = async () => {
    const remote = new SamsungTvRemote({
        ip: '192.168.1.111',
        mac: 'fc:03:9f:0d:72:37'
    });
    await remote.wakeTV();
    await remote.sendKey(Keys.KEY_DOWN);
    await remote.sendKeys([Keys.KEY_POWER]);
};
main().catch(console.error);

Options

interface SamsungTvRemoteOptions {
    /**
     * IP address of the TV.
     */
    ip: string;

    /**
     * MAC address of the TV.
     * Required only when using the 'wakeTV()' api.
     *
     * @default 00:00:00:00:00:00
     */
    mac?: string,

    /**
     * Name under which the TV will recognize your program.
     * - It will be displayed on TV, the first time you run your program, as a 'device' trying to connect.
     * - It will also be used by this library to persist a token on the operating system running your program,
     *   so that no further consent are asked by the TV after the first run.
     *
     * @default SamsungTvRemote
     */
    name?: string,

    /**
     * Port address used for remote control emulation protocol.
     * Different ports are used in different TV models.
     * It could be: 55000 (legacy), 8001 (2016+) or 8002 (2018+).
     *
     * @default 8002
     */
    port?: number,

    /**
     * Milliseconds before the connection to the TV times out.
     *
     * @default 1000
     */
    timeout?: number;

    /**
     * Enables more detailed output.
     *
     * @default false
     */
    debug?: boolean;
}

Apis

class SamsungTvRemote {
    /**
     * Turn the TV on or awaken it from sleep mode (also called WoL - Wake-on-LAN).
     * The mac address option is required in this case.
     */
    wakeTV(): Promise<void>;

    /**
     * Send a key to the TV.
     */
    sendKey(key: Keys): Promise<void>;

    /**
     * Send multiple keys to the TV.
     */
    sendKeys(key: Keys[]): Promise<void>;
}

FAQ

I'm getting a TypeError: bufferUtil.mask is not a function

Under the hood, this library is using ws package and also bufferutil to enhance ws' performances.

Since bufferutil is a binary addon, it may or may not be installed correctly on your current platform due to potential incompatibilities.

In such cases, using the environment variable WS_NO_BUFFER_UTIL=1 will be necessary to resolve the issue.

You can read more here.

Development

See the developer docs.

Contributing

> Want to Help ?

Want to file a bug, contribute some code or improve documentation ? Excellent!

But please read up first on the guidelines for contributing, and learn about submission process, coding rules and more.

> Code of Conduct

Please read and follow the Code of Conduct and help me keep this project open and inclusive.