Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/Badisi/samsung-tv-remote
📺 NodeJS module to remotely control Samsung SmartTV starting from 2016
https://github.com/Badisi/samsung-tv-remote
nodejs remote-control samsung smarttv
Last synced: about 1 month ago
JSON representation
📺 NodeJS module to remotely control Samsung SmartTV starting from 2016
- Host: GitHub
- URL: https://github.com/Badisi/samsung-tv-remote
- Owner: Badisi
- License: mit
- Created: 2017-04-27T08:35:58.000Z (over 7 years ago)
- Default Branch: main
- Last Pushed: 2024-04-12T19:30:03.000Z (8 months ago)
- Last Synced: 2024-04-20T18:37:55.619Z (8 months ago)
- Topics: nodejs, remote-control, samsung, smarttv
- Language: TypeScript
- Homepage:
- Size: 71.3 KB
- Stars: 43
- Watchers: 5
- Forks: 11
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
- awesome-smart-tv - samsung-tv-remote - Node.js module to remotely control Samsung Smart TV starting from 2016 (JavaScript). (Platforms / Samsung Tizen)
README
samsung-tv-remote
📺 NodeJS module to remotely control Samsung SmartTV starting from 2016.
## 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 TV
✅ [`241`](https://github.com/badisi/samsung-tv-remote/blob/main/src/keys.ts) known keys already predefined## Installation
```sh
npm install samsung-tv-remote --save
``````sh
yarn add samsung-tv-remote
```## Usage
__Example__
```ts
/** 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__
```ts
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__
```ts
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;/**
* Send a key to the TV.
*/
sendKey(key: Keys): Promise;/**
* Send multiple keys to the TV.
*/
sendKeys(key: Keys[]): Promise;
}
```## FAQ
### I'm getting a `TypeError: bufferUtil.mask is not a function`
Under the hood, this library is using [ws](https://github.com/websockets/ws) package and also [bufferutil](https://github.com/websockets/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](https://github.com/websockets/ws/blob/master/doc/ws.md#ws_no_buffer_util).
## Development
See the [developer docs][developer].
## 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][contributing], and learn about submission process, coding rules and more.
#### > Code of Conduct
Please read and follow the [Code of Conduct][codeofconduct] and help me keep this project open and inclusive.
[clipreview]: https://github.com/badisi/samsung-tv-remote/blob/main/cli_preview.png
[developer]: https://github.com/badisi/samsung-tv-remote/blob/main/DEVELOPER.md
[contributing]: https://github.com/badisi/samsung-tv-remote/blob/main/CONTRIBUTING.md
[codeofconduct]: https://github.com/badisi/samsung-tv-remote/blob/main/CODE_OF_CONDUCT.md