├── .foreverignore ├── .gitignore ├── package.json ├── samsung.js ├── README.md └── public └── index.html /.foreverignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/* 2 | *.swp 3 | *.bak 4 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "samsung", 3 | "version": "1.0.0", 4 | "description": "Samsung TV web control", 5 | "main": "samsung.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "Robert Oostenveld", 10 | "license": "ISC", 11 | "dependencies": { 12 | "express": "^4.15.3", 13 | "samsung-remote": "^1.2.5" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /samsung.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | var express = require('express'); 4 | var SamsungRemote = require('samsung-remote'); 5 | 6 | var ADDRESS = '192.168.1.127'; // of the smart TV 7 | 8 | var remote = new SamsungRemote({ 9 | ip: ADDRESS 10 | }); 11 | 12 | var app = express(); 13 | var PORT = 3010; // of this application 14 | 15 | app.use(express.static('public')) 16 | 17 | app.listen(PORT, function () { 18 | console.log('Listening on port ' + PORT); 19 | }); 20 | 21 | app.get('/', function (req, res) { 22 | res.send('index.html') 23 | // res.send('Samsung Smart TV'); 24 | }); 25 | 26 | app.get('/status', function (req, res) { 27 | remote.isAlive(function(err) { 28 | if (err) { 29 | res.send('TV is offline'); 30 | } else { 31 | res.send('TV is online'); 32 | } 33 | }); 34 | }); 35 | 36 | app.get([], function (req, res) { 37 | arr = req.url.split('/'); 38 | message = arr[1].toUpperCase(); 39 | if (message.length>1) { 40 | remote.send(message, function callback(err) { 41 | if (err) { 42 | console.error(err); 43 | res.send(err); 44 | } else { 45 | console.log(message); 46 | res.send(message); 47 | } 48 | }); 49 | } 50 | }); 51 | 52 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # SAMSUNG 2 | 3 | This is a web interface for my Samsung Smart TV. It is built on 4 | top of [samsung-remote](https://www.npmjs.com/package/samsung-remote) 5 | and [express](https://www.npmjs.com/package/express). The interface can be 6 | used with a web browser, but also from the command line and using 7 | the [IFTTT](http://ifttt.com) Maker channel. 8 | 9 | Use as 10 | ``` 11 | curl -X get http://hostname:3010/command 12 | ``` 13 | where the command is one of the following 14 | ``` 15 | KEY_VOLUP 16 | KEY_VOLDOWN 17 | KEY_POWERON 18 | KEY_POWEROFF 19 | ``` 20 | etc. 21 | 22 | ## Complete list of commands 23 | 24 | ``` 25 | KEY_0 26 | KEY_1 27 | KEY_2 28 | KEY_3 29 | KEY_4 30 | KEY_5 31 | KEY_6 32 | KEY_7 33 | KEY_8 34 | KEY_9 35 | KEY_11 36 | KEY_11 37 | KEY_12 38 | KEY_AD 39 | KEY_ADDDEL 40 | KEY_ALT_MHP 41 | KEY_ANGLE 42 | KEY_ANTENA 43 | KEY_ANYNET 44 | KEY_ANYVIEW 45 | KEY_APP_LIST 46 | KEY_ASPECT 47 | KEY_AUTO_ARC_ANTENNA_AIR 48 | KEY_AUTO_ARC_ANTENNA_CABLE 49 | KEY_AUTO_ARC_ANTENNA_SATELLITE 50 | KEY_AUTO_ARC_ANYNET_AUTO_START 51 | KEY_AUTO_ARC_ANYNET_MODE_OK 52 | KEY_AUTO_ARC_AUTOCOLOR_FAIL 53 | KEY_AUTO_ARC_AUTOCOLOR_SUCCESS 54 | KEY_AUTO_ARC_CAPTION_ENG 55 | KEY_AUTO_ARC_CAPTION_KOR 56 | KEY_AUTO_ARC_CAPTION_OFF 57 | KEY_AUTO_ARC_CAPTION_ON 58 | KEY_AUTO_ARC_C_FORCE_AGING 59 | KEY_AUTO_ARC_JACK_IDENT 60 | KEY_AUTO_ARC_LNA_OFF 61 | KEY_AUTO_ARC_LNA_ON 62 | KEY_AUTO_ARC_PIP_CH_CHANGE 63 | KEY_AUTO_ARC_PIP_DOUBLE 64 | KEY_AUTO_ARC_PIP_LARGE 65 | KEY_AUTO_ARC_PIP_LEFT_BOTTOM 66 | KEY_AUTO_ARC_PIP_LEFT_TOP 67 | KEY_AUTO_ARC_PIP_RIGHT_BOTTOM 68 | KEY_AUTO_ARC_PIP_RIGHT_TOP 69 | KEY_AUTO_ARC_PIP_SMALL 70 | KEY_AUTO_ARC_PIP_SOURCE_CHANGE 71 | KEY_AUTO_ARC_PIP_WIDE 72 | KEY_AUTO_ARC_RESET 73 | KEY_AUTO_ARC_USBJACK_INSPECT 74 | KEY_AUTO_FORMAT 75 | KEY_AUTO_PROGRAM 76 | KEY_AV1 77 | KEY_AV2 78 | KEY_AV3 79 | KEY_BACK_MHP 80 | KEY_BOOKMARK 81 | KEY_CALLER_ID 82 | KEY_CAPTION 83 | KEY_CATV_MODE 84 | KEY_CHDOWN 85 | KEY_CHUP 86 | KEY_CH_LIST 87 | KEY_CLEAR 88 | KEY_CLOCK_DISPLAY 89 | KEY_COMPONENT1 90 | KEY_COMPONENT2 91 | KEY_CONTENTS 92 | KEY_CONVERGENCE 93 | KEY_CONVERT_AUDIO_MAINSUB 94 | KEY_CUSTOM 95 | KEY_CYAN 96 | KEY_DEVICE_CONNECT 97 | KEY_DISC_MENU 98 | KEY_DMA 99 | KEY_DNET 100 | KEY_DNIe 101 | KEY_DNSe 102 | KEY_DOOR 103 | KEY_DOWN 104 | KEY_DSS_MODE 105 | KEY_DTV 106 | KEY_DTV_LINK 107 | KEY_DTV_SIGNAL 108 | KEY_DVD_MODE 109 | KEY_DVI 110 | KEY_DVR 111 | KEY_DVR_MENU 112 | KEY_DYNAMIC 113 | KEY_ENTERTAINMENT 114 | KEY_ESAVING 115 | KEY_FACTORY 116 | KEY_FAVCH 117 | KEY_FF 118 | KEY_FF_ 119 | KEY_FM_RADIO 120 | KEY_GAME 121 | KEY_GREEN 122 | KEY_GUIDE 123 | KEY_HDMI 124 | KEY_HDMI1 125 | KEY_HDMI2 126 | KEY_HDMI3 127 | KEY_HDMI4 128 | KEY_HELP 129 | KEY_HOME 130 | KEY_ID_INPUT 131 | KEY_ID_SETUP 132 | KEY_INFO 133 | KEY_INSTANT_REPLAY 134 | KEY_LEFT 135 | KEY_LINK 136 | KEY_LIVE 137 | KEY_MAGIC_BRIGHT 138 | KEY_MAGIC_CHANNEL 139 | KEY_MDC 140 | KEY_MENU 141 | KEY_MIC 142 | KEY_MORE 143 | KEY_MOVIE1 144 | KEY_MS 145 | KEY_MTS 146 | KEY_MUTE 147 | KEY_NINE_SEPERATE 148 | KEY_OPEN 149 | KEY_PANNEL_CHDOWN 150 | KEY_PANNEL_CHUP 151 | KEY_PANNEL_ENTER 152 | KEY_PANNEL_MENU 153 | KEY_PANNEL_POWER 154 | KEY_PANNEL_SOURCE 155 | KEY_PANNEL_VOLDOW 156 | KEY_PANNEL_VOLUP 157 | KEY_PANORAMA 158 | KEY_PAUSE 159 | KEY_PCMODE 160 | KEY_PERPECT_FOCUS 161 | KEY_PICTURE_SIZE 162 | KEY_PIP_CHDOWN 163 | KEY_PIP_CHUP 164 | KEY_PIP_ONOFF 165 | KEY_PIP_SCAN 166 | KEY_PIP_SIZE 167 | KEY_PIP_SWAP 168 | KEY_PLAY 169 | KEY_PLUS100 170 | KEY_PMODE 171 | KEY_POWER 172 | KEY_POWEROFF 173 | KEY_POWERON 174 | KEY_PRECH 175 | KEY_PRINT 176 | KEY_PROGRAM 177 | KEY_QUICK_REPLAY 178 | KEY_REC 179 | KEY_RED 180 | KEY_REPEAT 181 | KEY_RESERVED1 182 | KEY_RETURN 183 | KEY_REWIND 184 | KEY_REWIND_ 185 | KEY_RIGHT 186 | KEY_RSS 187 | KEY_RSURF 188 | KEY_SCALE 189 | KEY_SEFFECT 190 | KEY_SETUP_CLOCK_TIMER 191 | KEY_SLEEP 192 | KEY_SOURCE 193 | KEY_SRS 194 | KEY_STANDARD 195 | KEY_STB_MODE 196 | KEY_STILL_PICTURE 197 | KEY_STOP 198 | KEY_SUB_TITLE 199 | KEY_SVIDEO1 200 | KEY_SVIDEO2 201 | KEY_SVIDEO3 202 | KEY_TOOLS 203 | KEY_TOPMENU 204 | KEY_TTX_MIX 205 | KEY_TTX_SUBFACE 206 | KEY_TURBO 207 | KEY_TV 208 | KEY_TV_MODE 209 | KEY_UP 210 | KEY_VCHIP 211 | KEY_VCR_MODE 212 | KEY_VOLDOWN 213 | KEY_VOLUP 214 | KEY_WHEEL_LEFT 215 | KEY_WHEEL_RIGHT 216 | KEY_W_LINK 217 | KEY_YELLOW 218 | KEY_ZOOM1 219 | KEY_ZOOM2 220 | KEY_ZOOM_IN 221 | KEY_ZOOM_MOVE 222 | KEY_ZOOM_OUT 223 | KEY_3SPEED 224 | KEY_16_9 225 | KEY_4_3 226 | ``` 227 | 228 | -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Samsung Smart TV 4 | 5 | 6 | 7 | 9 |
  • KEY_0
  • 10 |
  • KEY_1
  • 11 |
  • KEY_2
  • 12 |
  • KEY_3
  • 13 |
  • KEY_4
  • 14 |
  • KEY_5
  • 15 |
  • KEY_6
  • 16 |
  • KEY_7
  • 17 |
  • KEY_8
  • 18 |
  • KEY_9
  • 19 |
  • KEY_11
  • 20 |
  • KEY_11
  • 21 |
  • KEY_12
  • 22 |
  • KEY_AD
  • 23 |
  • KEY_ADDDEL
  • 24 |
  • KEY_ALT_MHP
  • 25 |
  • KEY_ANGLE
  • 26 |
  • KEY_ANTENA
  • 27 |
  • KEY_ANYNET
  • 28 |
  • KEY_ANYVIEW
  • 29 |
  • KEY_APP_LIST
  • 30 |
  • KEY_ASPECT
  • 31 |
  • KEY_AUTO_ARC_ANTENNA_AIR
  • 32 |
  • KEY_AUTO_ARC_ANTENNA_CABLE
  • 33 |
  • KEY_AUTO_ARC_ANTENNA_SATELLITE
  • 34 |
  • KEY_AUTO_ARC_ANYNET_AUTO_START
  • 35 |
  • KEY_AUTO_ARC_ANYNET_MODE_OK
  • 36 |
  • KEY_AUTO_ARC_AUTOCOLOR_FAIL
  • 37 |
  • KEY_AUTO_ARC_AUTOCOLOR_SUCCESS
  • 38 |
  • KEY_AUTO_ARC_CAPTION_ENG
  • 39 |
  • KEY_AUTO_ARC_CAPTION_KOR
  • 40 |
  • KEY_AUTO_ARC_CAPTION_OFF
  • 41 |
  • KEY_AUTO_ARC_CAPTION_ON
  • 42 |
  • KEY_AUTO_ARC_C_FORCE_AGING
  • 43 |
  • KEY_AUTO_ARC_JACK_IDENT
  • 44 |
  • KEY_AUTO_ARC_LNA_OFF
  • 45 |
  • KEY_AUTO_ARC_LNA_ON
  • 46 |
  • KEY_AUTO_ARC_PIP_CH_CHANGE
  • 47 |
  • KEY_AUTO_ARC_PIP_DOUBLE
  • 48 |
  • KEY_AUTO_ARC_PIP_LARGE
  • 49 |
  • KEY_AUTO_ARC_PIP_LEFT_BOTTOM
  • 50 |
  • KEY_AUTO_ARC_PIP_LEFT_TOP
  • 51 |
  • KEY_AUTO_ARC_PIP_RIGHT_BOTTOM
  • 52 |
  • KEY_AUTO_ARC_PIP_RIGHT_TOP
  • 53 |
  • KEY_AUTO_ARC_PIP_SMALL
  • 54 |
  • KEY_AUTO_ARC_PIP_SOURCE_CHANGE
  • 55 |
  • KEY_AUTO_ARC_PIP_WIDE
  • 56 |
  • KEY_AUTO_ARC_RESET
  • 57 |
  • KEY_AUTO_ARC_USBJACK_INSPECT
  • 58 |
  • KEY_AUTO_FORMAT
  • 59 |
  • KEY_AUTO_PROGRAM
  • 60 |
  • KEY_AV1
  • 61 |
  • KEY_AV2
  • 62 |
  • KEY_AV3
  • 63 |
  • KEY_BACK_MHP
  • 64 |
  • KEY_BOOKMARK
  • 65 |
  • KEY_CALLER_ID
  • 66 |
  • KEY_CAPTION
  • 67 |
  • KEY_CATV_MODE
  • 68 |
  • KEY_CHDOWN
  • 69 |
  • KEY_CHUP
  • 70 |
  • KEY_CH_LIST
  • 71 |
  • KEY_CLEAR
  • 72 |
  • KEY_CLOCK_DISPLAY
  • 73 |
  • KEY_COMPONENT1
  • 74 |
  • KEY_COMPONENT2
  • 75 |
  • KEY_CONTENTS
  • 76 |
  • KEY_CONVERGENCE
  • 77 |
  • KEY_CONVERT_AUDIO_MAINSUB
  • 78 |
  • KEY_CUSTOM
  • 79 |
  • KEY_CYAN
  • 80 |
  • KEY_DEVICE_CONNECT
  • 81 |
  • KEY_DISC_MENU
  • 82 |
  • KEY_DMA
  • 83 |
  • KEY_DNET
  • 84 |
  • KEY_DNIe
  • 85 |
  • KEY_DNSe
  • 86 |
  • KEY_DOOR
  • 87 |
  • KEY_DOWN
  • 88 |
  • KEY_DSS_MODE
  • 89 |
  • KEY_DTV
  • 90 |
  • KEY_DTV_LINK
  • 91 |
  • KEY_DTV_SIGNAL
  • 92 |
  • KEY_DVD_MODE
  • 93 |
  • KEY_DVI
  • 94 |
  • KEY_DVR
  • 95 |
  • KEY_DVR_MENU
  • 96 |
  • KEY_DYNAMIC
  • 97 |
  • KEY_ENTERTAINMENT
  • 98 |
  • KEY_ESAVING
  • 99 |
  • KEY_FACTORY
  • 100 |
  • KEY_FAVCH
  • 101 |
  • KEY_FF
  • 102 |
  • KEY_FF_
  • 103 |
  • KEY_FM_RADIO
  • 104 |
  • KEY_GAME
  • 105 |
  • KEY_GREEN
  • 106 |
  • KEY_GUIDE
  • 107 |
  • KEY_HDMI
  • 108 |
  • KEY_HDMI1
  • 109 |
  • KEY_HDMI2
  • 110 |
  • KEY_HDMI3
  • 111 |
  • KEY_HDMI4
  • 112 |
  • KEY_HELP
  • 113 |
  • KEY_HOME
  • 114 |
  • KEY_ID_INPUT
  • 115 |
  • KEY_ID_SETUP
  • 116 |
  • KEY_INFO
  • 117 |
  • KEY_INSTANT_REPLAY
  • 118 |
  • KEY_LEFT
  • 119 |
  • KEY_LINK
  • 120 |
  • KEY_LIVE
  • 121 |
  • KEY_MAGIC_BRIGHT
  • 122 |
  • KEY_MAGIC_CHANNEL
  • 123 |
  • KEY_MDC
  • 124 |
  • KEY_MENU
  • 125 |
  • KEY_MIC
  • 126 |
  • KEY_MORE
  • 127 |
  • KEY_MOVIE1
  • 128 |
  • KEY_MS
  • 129 |
  • KEY_MTS
  • 130 |
  • KEY_MUTE
  • 131 |
  • KEY_NINE_SEPERATE
  • 132 |
  • KEY_OPEN
  • 133 |
  • KEY_PANNEL_CHDOWN
  • 134 |
  • KEY_PANNEL_CHUP
  • 135 |
  • KEY_PANNEL_ENTER
  • 136 |
  • KEY_PANNEL_MENU
  • 137 |
  • KEY_PANNEL_POWER
  • 138 |
  • KEY_PANNEL_SOURCE
  • 139 |
  • KEY_PANNEL_VOLDOW
  • 140 |
  • KEY_PANNEL_VOLUP
  • 141 |
  • KEY_PANORAMA
  • 142 |
  • KEY_PAUSE
  • 143 |
  • KEY_PCMODE
  • 144 |
  • KEY_PERPECT_FOCUS
  • 145 |
  • KEY_PICTURE_SIZE
  • 146 |
  • KEY_PIP_CHDOWN
  • 147 |
  • KEY_PIP_CHUP
  • 148 |
  • KEY_PIP_ONOFF
  • 149 |
  • KEY_PIP_SCAN
  • 150 |
  • KEY_PIP_SIZE
  • 151 |
  • KEY_PIP_SWAP
  • 152 |
  • KEY_PLAY
  • 153 |
  • KEY_PLUS100
  • 154 |
  • KEY_PMODE
  • 155 |
  • KEY_POWER
  • 156 |
  • KEY_POWEROFF
  • 157 |
  • KEY_POWERON
  • 158 |
  • KEY_PRECH
  • 159 |
  • KEY_PRINT
  • 160 |
  • KEY_PROGRAM
  • 161 |
  • KEY_QUICK_REPLAY
  • 162 |
  • KEY_REC
  • 163 |
  • KEY_RED
  • 164 |
  • KEY_REPEAT
  • 165 |
  • KEY_RESERVED1
  • 166 |
  • KEY_RETURN
  • 167 |
  • KEY_REWIND
  • 168 |
  • KEY_REWIND_
  • 169 |
  • KEY_RIGHT
  • 170 |
  • KEY_RSS
  • 171 |
  • KEY_RSURF
  • 172 |
  • KEY_SCALE
  • 173 |
  • KEY_SEFFECT
  • 174 |
  • KEY_SETUP_CLOCK_TIMER
  • 175 |
  • KEY_SLEEP
  • 176 |
  • KEY_SOURCE
  • 177 |
  • KEY_SRS
  • 178 |
  • KEY_STANDARD
  • 179 |
  • KEY_STB_MODE
  • 180 |
  • KEY_STILL_PICTURE
  • 181 |
  • KEY_STOP
  • 182 |
  • KEY_SUB_TITLE
  • 183 |
  • KEY_SVIDEO1
  • 184 |
  • KEY_SVIDEO2
  • 185 |
  • KEY_SVIDEO3
  • 186 |
  • KEY_TOOLS
  • 187 |
  • KEY_TOPMENU
  • 188 |
  • KEY_TTX_MIX
  • 189 |
  • KEY_TTX_SUBFACE
  • 190 |
  • KEY_TURBO
  • 191 |
  • KEY_TV
  • 192 |
  • KEY_TV_MODE
  • 193 |
  • KEY_UP
  • 194 |
  • KEY_VCHIP
  • 195 |
  • KEY_VCR_MODE
  • 196 |
  • KEY_VOLDOWN
  • 197 |
  • KEY_VOLUP
  • 198 |
  • KEY_WHEEL_LEFT
  • 199 |
  • KEY_WHEEL_RIGHT
  • 200 |
  • KEY_W_LINK
  • 201 |
  • KEY_YELLOW
  • 202 |
  • KEY_ZOOM1
  • 203 |
  • KEY_ZOOM2
  • 204 |
  • KEY_ZOOM_IN
  • 205 |
  • KEY_ZOOM_MOVE
  • 206 |
  • KEY_ZOOM_OUT
  • 207 |
  • KEY_3SPEED
  • 208 |
  • KEY_16_9
  • 209 |
  • KEY_4_3
  • 210 | 211 | 212 | 213 | --------------------------------------------------------------------------------