This project is a proof of concept to remote control Samsung TV models 2014+ which require encrypted communication with the internal web service of the TV.
Credits go to Ape/samsungctl#22.
Until now I could test the connection with my own TV. If you have any new insights with other models, please share your results, so I can update the following list.
- UE48H6270 (confirmed by paolog89)
- UE48H6400 (confirmed by kkapitan)
- UE48J6300 (confirmed by luca-angemi)
- UE48JS9000 (confirmed by Iniaki)
- UE50HU6900 (confirmed by Holland1)
- UE50JU6800 (confirmed by Jeroen-R)
- UE55H6400 (confirmed by axel3rd)
- UE55HU7500 (confirmed by riemers)
- UE55JS8500 (confirmed by twistedpixel)
- UE55JU6800 (confirmed by fquinto)
- UE55JU7505 (confirmed by holmie)
- UE55JU7590
- UN40JU6000 (confirmed by vsnine)
- UN60JS7000 (confirmed by nspinelli)
To try out the API quickly, there is a demo which can be found in the ./example/
directory.
To start the demo, please use the following commands:
$ yarn install
$ yarn start
This will start a server at http://localhost:3000. After the server is started, open the URL in your browser. You will see a demo UI, which allows you to easily connect to your TV.
To use the API within your project, you will need to follow these steps:
The following configuraiton details are required:
const deviceConfig = {
// address of the TV device
ip: '192.168.178.50',
// your client identification
appId: '721b6fce-4ee6-48ba-8045-955a539edadb',
// user id for the connection with the TV
userId: '654321',
}
Create and initialize an instance of the SamsungTv library:
const SamsungTv = require('./lib/SamsungTv')
const deviceConfig = {
// ...
}
const tv = new SamsungTv(deviceConfig)
tv.init()
Then request the PIN:
tv.requestPin()
The PIN should appear at your TV.
Confirm the PIN and establish connection:
tv.confirmPin('9603')
.then(() => tv.connect())
After the connection is established, use SamsungTv#sendKey() to send keys:
tv.sendKey('KEY_MUTE')
Here you can find examples how to use the library: