Help ! Samsung TV Bindings with >2016 Samsung TV

Hello @Nicholas_Waterton ,

I guess i got the issue with “none” i was just wondering if it might need an open port that exists to skip an init sequence. But I’m not so skilled with computers.

One minute before your mail arrived I took a closer look to the logfile and was a littlebit confused about the ARP message and checked if ARP is still available before I recognized the TV has an auto off after X hours :man_facepalming:

Okay never mind, here is the log while adding a new device with none + 55000

2021-11-10 08:11:43.489 [DEBUG] [rnal.protocol.RemoteControllerLegacy] - 192.168.3.39: Open connection to host '192.168.3.39:15500'
2021-11-10 08:11:43.496 [DEBUG] [rnal.protocol.RemoteControllerLegacy] - 192.168.3.39: Connection successfully opened...querying access
2021-11-10 08:11:43.504 [DEBUG] [rnal.protocol.RemoteControllerLegacy] - 192.168.3.39: Open connection to host '192.168.3.39:55000'
2021-11-10 08:11:43.508 [DEBUG] [rnal.protocol.RemoteControllerLegacy] - 192.168.3.39: Cannot connect to Legacy Remote Controller: Connection refused (Connection refused)
2021-11-10 08:11:43.550 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.3.39: Updated artModeSupported: false and PowerState: true
2021-11-10 08:11:43.551 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.3.39: Check and create missing services
2021-11-10 08:11:43.552 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.3.39: Device was NOT online
2021-11-10 08:11:43.553 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.3.39: Start refresh task, interval=1000
2021-11-10 08:15:27.977 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.3.39: Disposing SamsungTvHandler
2021-11-10 08:15:27.981 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.3.39: Shutdown all Samsung services
2021-11-10 08:16:53.038 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.3.39: Create a Samsung TV Handler for thing 'samsungtv:tv:9c5eb914b1'
2021-11-10 08:16:53.081 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.3.39: Initializing Samsung TV handler for uid 'samsungtv:tv:9c5eb914b1'
2021-11-10 08:16:53.086 [DEBUG] [.samsungtv.internal.WakeOnLanUtility] - 192.168.3.39: os: linux
2021-11-10 08:16:53.443 [DEBUG] [.samsungtv.internal.WakeOnLanUtility] - 192.168.3.39: MAC address of host 192.168.3.39 is fc:8f:90:ac:84:55
2021-11-10 08:16:53.530 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.3.39: Updated Configuration macAddress:fc:8f:90:ac:84:55
2021-11-10 08:16:53.531 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.3.39: updated macAddress: fc:8f:90:ac:84:55
2021-11-10 08:16:53.533 [DEBUG] [rnal.protocol.RemoteControllerLegacy] - 192.168.3.39: Open connection to host '192.168.3.39:1515'
2021-11-10 08:16:53.540 [DEBUG] [rnal.protocol.RemoteControllerLegacy] - 192.168.3.39: Cannot connect to Legacy Remote Controller: Connection refused (Connection refused)
2021-11-10 08:16:53.541 [DEBUG] [rnal.protocol.RemoteControllerLegacy] - 192.168.3.39: Open connection to host '192.168.3.39:7001'
2021-11-10 08:16:53.548 [DEBUG] [rnal.protocol.RemoteControllerLegacy] - 192.168.3.39: Cannot connect to Legacy Remote Controller: Connection refused (Connection refused)
2021-11-10 08:16:53.549 [DEBUG] [rnal.protocol.RemoteControllerLegacy] - 192.168.3.39: Open connection to host '192.168.3.39:15500'
2021-11-10 08:16:53.556 [DEBUG] [rnal.protocol.RemoteControllerLegacy] - 192.168.3.39: Connection successfully opened...querying access
2021-11-10 08:16:53.560 [DEBUG] [rnal.protocol.RemoteControllerLegacy] - 192.168.3.39: Open connection to host '192.168.3.39:55000'
2021-11-10 08:16:53.564 [DEBUG] [rnal.protocol.RemoteControllerLegacy] - 192.168.3.39: Cannot connect to Legacy Remote Controller: Connection refused (Connection refused)
2021-11-10 08:16:53.593 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.3.39: Updated artModeSupported: false and PowerState: true
2021-11-10 08:16:53.594 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.3.39: Check and create missing services
2021-11-10 08:16:53.595 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.3.39: Device was NOT online
2021-11-10 08:16:53.598 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.3.39: Start refresh task, interval=1000

@FranzS ,

It does not seem like your TV supports the UPnP MediaRenderer service. In fact, it doesn’t seem to have any UPnP services that the binding can discover.

I’m not sure there is anything else I can do, your TV just doesn’t support the regular services. The only option seems to be the encrypted websocket interface, which the samsungtv binding doesn’t support.

As I said previously, you could use samsungctl which does support H/J model TV’s from 2014/15 and has the encryption protocol you need built in.

Sorry I can’t be of more help, but thanks for the testing, it was useful!

1 Like

@Nicholas_Waterton I tried the latest version of your binding and definitely it seems that something is getting in the right way.
I created the thing with the TV switched on and everything went well:

2021-11-10 18:40:34.992 [TRACE] [ngtv.internal.protocol.WebSocketBase] - xxx.xxx.xxx.xxx: WebSocketRemote: onWebSocketText: {“data”:{“clients”:[{“attributes”:{“name”:“xxxxxxx”},“connectTime”:1636566026323,“deviceName”:“xxxxxx=”,“id”:“xxxxxxxxxx”,“isHost”:false}],“id”:“xxxxxxxxxx”,“token”:“17004161”},“event”:“ms.channel.connect”}

2021-11-10 18:40:35.003 [DEBUG] [ngtv.internal.protocol.WebSocketBase] - xxx.xxx.xxx.xxx: WebSocketV2 connection established: xxx.xxx.xxx.xxx

2021-11-10 18:40:35.005 [DEBUG] [tv.internal.protocol.WebSocketRemote] - xxx.xxx.xxx.xxx: Remote channel connected. Token = 17004161

2021-11-10 18:40:35.015 [DEBUG] [tv.internal.handler.SamsungTvHandler] - xxx.xxx.xxx.xxx: Updated Configuration webSocketToken:17004161

2021-11-10 18:40:35.017 [TRACE] [l.protocol.RemoteControllerWebSocket] - xxx.xxx.xxx.xxx: openConnection()

2021-11-10 18:40:35.019 [TRACE] [l.protocol.RemoteControllerWebSocket] - xxx.xxx.xxx.xxx: connectWebSockets()

2021-11-10 18:40:35.021 [TRACE] [ngtv.internal.protocol.WebSocketBase] - xxx.xxx.xxx.xxx: WebSocketRemote already connecting or connected

2021-11-10 18:40:35.024 [TRACE] [ngtv.internal.protocol.WebSocketBase] - xxx.xxx.xxx.xxx: WebSocketArt already connecting or connected

2021-11-10 18:40:35.025 [TRACE] [ngtv.internal.protocol.WebSocketBase] - xxx.xxx.xxx.xxx: WebSocketV2 already connecting or connected

2021-11-10 18:40:35.030 [TRACE] [ngtv.internal.protocol.WebSocketBase] - xxx.xxx.xxx.xxx: WebSocketRemote: sendCommand: {“method”:“ms.channel.emit”,“params”:{“event”:“ed.installedApp.get”,“to”:“host”}}

2021-11-10 18:40:35.069 [TRACE] [ngtv.internal.protocol.WebSocketBase] - xxx.xxx.xxx.xxx: WebSocketV2: onWebSocketText: {“data”:{“attributes”:{“name”:“xxxxxxx”},“connectTime”:1636566034152,“deviceName”:“xxxxxxx”,“id”:“xxxxxxxxxx”,“isHost”:false},“event”:“ms.channel.clientConnect”}

2021-11-10 18:40:35.071 [DEBUG] [sungtv.internal.protocol.WebSocketV2] - xxx.xxx.xxx.xxx: V2 client connected

2021-11-10 18:40:35.072 [TRACE] [ngtv.internal.protocol.WebSocketBase] - xxx.xxx.xxx.xxx: WebSocketV2: onWebSocketText: {“data”:{“clients”:[{“attributes”:{“name”:“xxxxxxx”},“connectTime”:1636563422594,“deviceName”:“xxxxxx”,“id”:“xxxxxxxxxx”,“isHost”:false},{“attributes”:{“name”:“xxxxxxx”},“connectTime”:1636566034152,“deviceName”:“xxxxxx”,“id”:“xxxxxxxxxx”,“isHost”:false}],“id”:“xxxxxxxxxx”},“event”:“ms.channel.connect”}

It seems that I can also switch off the TV using the power command:

2021-11-10 19:00:10.493 [DEBUG] [tv.internal.handler.SamsungTvHandler] - xxx.xxx.xxx.xxx: Received channel: samsungtv:tv:e8915dfb_26a1_4f26_9e82_aa3720a00611:power, command: OFF

2021-11-10 19:00:10.495 [TRACE] [rnal.service.RemoteControllerService] - xxx.xxx.xxx.xxx: getSupportedChannelNames: [keyCode, volume, mute, power, channel, url, stopBrowser, sourceApp, artMode]

2021-11-10 19:00:10.499 [DEBUG] [rnal.service.RemoteControllerService] - xxx.xxx.xxx.xxx: Received channel: power, command: OFF

2021-11-10 19:00:10.502 [DEBUG] [l.protocol.RemoteControllerWebSocket] - xxx.xxx.xxx.xxx: Try to send command: KEY_POWER, Click

2021-11-10 19:00:10.502 [DEBUG] [rnal.service.RemoteControllerService] - xxx.xxx.xxx.xxx: Key Sequence Queued

2021-11-10 19:00:10.507 [TRACE] [ngtv.internal.protocol.WebSocketBase] - xxx.xxx.xxx.xxx: WebSocketRemote: sendCommand: {“method”:“ms.remote.control”,“params”:{“Cmd”:“Click”,“DataOfCmd”:“KEY_POWER”,“Option”:“false”,“TypeOfRemote”:“SendRemoteKey”}}

The problem is that as far as i can tell the binding never refresh status. I cannot see any request with trace log activated. This way the thing still remains online when the TV is switched OFF and is not reachable.
If I try to change the refresh interval with the TV switched OFF I receive this error:
WebSocketRemote connection error java.net.NoRouteToHostException: No route to host
but the thing still changes to online and power to ON.

@Rickytr

Can you used code fences? your log output is hard to read without them (second icon from the right), also please don’t x out anything, there is nothing secret in the log (especially your internal ip addresses).

Can you post the output of:
http://tv_ip:8001/api/v2/
where tv_ip is your TV ip address (which you x’ed out).

Also, what year is your TV?

As I mention earlier I did remove most of the output from the polling thread (Refresh status), you should just see CurrentVolume and Mute now. This does depend on the UPNp services being detected though. Could you post your whole log? I need to see what UPnP services are found.

As to the error message No route to host, this is what you get when the TV is off and you update the configuration. It means the binding can’t connect to the websocket, because it’s off. This is not what controls the power On/Off channel though.

The ON/OFF status is detected using UPnP - which is why I need to see what happens from the start.

If you turn your TV on and off, you should see UPnP devices being detected/removed.

@Nicholas_Waterton to see something in the log I have to force a restart of the thing (by changing something) and this is what I have

2021-11-11 09:53:21.417 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.200.70: Disposing SamsungTvHandler
2021-11-11 09:53:21.425 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.200.70: Shutdown all Samsung services
2021-11-11 09:53:21.473 [DEBUG] [l.protocol.RemoteControllerWebSocket] - 192.168.200.70: RemoteControllerWebSocket close
2021-11-11 09:53:21.475 [DEBUG] [l.protocol.RemoteControllerWebSocket] - 192.168.200.70: RemoteControllerWebSocket closeConnection
2021-11-11 09:53:21.477 [DEBUG] [ngtv.internal.protocol.WebSocketBase] - 192.168.200.70: WebSocketRemote connection close requested
2021-11-11 09:53:21.480 [TRACE] [ngtv.internal.protocol.WebSocketBase] - 192.168.200.70: Closing session Future: java.util.concurrent.CompletableFuture@820551[Completed normally]
2021-11-11 09:53:21.482 [DEBUG] [ngtv.internal.protocol.WebSocketBase] - 192.168.200.70: WebSocketArt connection close requested
2021-11-11 09:53:21.484 [TRACE] [ngtv.internal.protocol.WebSocketBase] - 192.168.200.70: Closing session Future: java.util.concurrent.CompletableFuture@1ad32e8[Completed normally]
2021-11-11 09:53:21.486 [DEBUG] [ngtv.internal.protocol.WebSocketBase] - 192.168.200.70: WebSocketV2 connection close requested
2021-11-11 09:53:21.489 [TRACE] [ngtv.internal.protocol.WebSocketBase] - 192.168.200.70: Closing session Future: java.util.concurrent.CompletableFuture@74dc45[Completed normally]
2021-11-11 09:53:21.491 [TRACE] [l.protocol.RemoteControllerWebSocket] - 192.168.200.70: WebSocketClient stopping
2021-11-11 09:53:21.495 [TRACE] [l.protocol.RemoteControllerWebSocket] - 192.168.200.70: WebSocketClient stopped
2021-11-11 09:53:21.510 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.200.70: Initializing Samsung TV handler for uid 'samsungtv:tv:e8915dfb_26a1_4f26_9e82_aa3720a00611'
2021-11-11 09:53:21.524 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.200.70: Updated artModeSupported: false and PowerState: true
2021-11-11 09:53:21.526 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.200.70: Check and create missing services
2021-11-11 09:53:21.529 [DEBUG] [rnal.service.RemoteControllerService] - 192.168.200.70: Creating a Samsung TV RemoteController service: is UPNP:false
2021-11-11 09:53:21.558 [TRACE] [l.protocol.RemoteControllerWebSocket] - 192.168.200.70: openConnection()
2021-11-11 09:53:21.559 [DEBUG] [l.protocol.RemoteControllerWebSocket] - 192.168.200.70: RemoteControllerWebSocket start Client
2021-11-11 09:53:21.561 [TRACE] [l.protocol.RemoteControllerWebSocket] - 192.168.200.70: WebSocketClient starting
2021-11-11 09:53:21.576 [TRACE] [l.protocol.RemoteControllerWebSocket] - 192.168.200.70: WebSocketClient started
2021-11-11 09:53:21.578 [TRACE] [l.protocol.RemoteControllerWebSocket] - 192.168.200.70: connectWebSockets()
2021-11-11 09:53:21.580 [DEBUG] [ngtv.internal.protocol.WebSocketBase] - 192.168.200.70: WebSocketRemote connecting to: wss://192.168.200.70:8002/api/v2/channels/samsung.remote.control?name=b3BlbkhBQg==&token=17004161
2021-11-11 09:53:21.584 [TRACE] [ngtv.internal.protocol.WebSocketBase] - 192.168.200.70: Connecting session Future: java.util.concurrent.CompletableFuture@2fc3f2[Not completed, 1 dependents]
2021-11-11 09:53:21.586 [DEBUG] [ngtv.internal.protocol.WebSocketBase] - 192.168.200.70: WebSocketArt connecting to: wss://192.168.200.70:8002/api/v2/channels/com.samsung.art-app?name=b3BlbkhBQg==
2021-11-11 09:53:21.589 [TRACE] [ngtv.internal.protocol.WebSocketBase] - 192.168.200.70: Connecting session Future: java.util.concurrent.CompletableFuture@19101fe[Not completed, 1 dependents]
2021-11-11 09:53:21.591 [DEBUG] [ngtv.internal.protocol.WebSocketBase] - 192.168.200.70: WebSocketV2 connecting to: wss://192.168.200.70:8002/api/v2?name=b3BlbkhBQg==
2021-11-11 09:53:21.594 [TRACE] [ngtv.internal.protocol.WebSocketBase] - 192.168.200.70: Connecting session Future: java.util.concurrent.CompletableFuture@1b1097a[Not completed, 1 dependents]
2021-11-11 09:53:21.600 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.200.70: Started service for: , RemoteControlReceiver ()
2021-11-11 09:53:21.602 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.200.70: Device was online
2021-11-11 09:53:21.614 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.200.70: Start refresh task, interval=1000
2021-11-11 09:53:21.884 [DEBUG] [ngtv.internal.protocol.WebSocketBase] - 192.168.200.70: WebSocketRemote connection established: 192.168.200.70
2021-11-11 09:53:23.296 [TRACE] [ngtv.internal.protocol.WebSocketBase] - 192.168.200.70: WebSocketRemote: onWebSocketText: {"data":{"clients":[{"attributes":{"name":"b3BlbkhBQg==","token":"17004161"},"connectTime":1636620801625,"deviceName":"b3BlbkhBQg==","id":"dbdfdd7-ec7c-48a9-a52b-d85aa3c452f4","isHost":false}],"id":"dbdfdd7-ec7c-48a9-a52b-d85aa3c452f4"},"event":"ms.channel.connect"} 
2021-11-11 09:53:23.312 [DEBUG] [tv.internal.protocol.WebSocketRemote] - 192.168.200.70: Remote channel connected. Token = null
2021-11-11 09:53:23.313 [DEBUG] [ngtv.internal.protocol.WebSocketBase] - 192.168.200.70: WebSocketArt connection established: 192.168.200.70
2021-11-11 09:53:23.316 [TRACE] [ngtv.internal.protocol.WebSocketBase] - 192.168.200.70: WebSocketRemote: sendCommand: {"method":"ms.channel.emit","params":{"event":"ed.installedApp.get","to":"host"}}
2021-11-11 09:53:23.386 [TRACE] [ngtv.internal.protocol.WebSocketBase] - 192.168.200.70: WebSocketArt: onWebSocketText: {"data":{"clients":[{"attributes":{"name":"b3BlbkhBQg=="},"connectTime":1636620803052,"deviceName":"b3BlbkhBQg==","id":"48b29df9-6fd8-48c6-9278-3191a31de121","isHost":false}],"id":"48b29df9-6fd8-48c6-9278-3191a31de121"},"event":"ms.channel.connect"} 
2021-11-11 09:53:23.390 [DEBUG] [ungtv.internal.protocol.WebSocketArt] - 192.168.200.70: Art channel connected
2021-11-11 09:53:23.393 [DEBUG] [ngtv.internal.protocol.WebSocketBase] - 192.168.200.70: WebSocketV2 connection established: 192.168.200.70
2021-11-11 09:53:23.485 [TRACE] [ngtv.internal.protocol.WebSocketBase] - 192.168.200.70: WebSocketV2: onWebSocketText: {"data":{"clients":[{"attributes":{"name":"b3BlbkhBQg=="},"connectTime":1636620803139,"deviceName":"b3BlbkhBQg==","id":"ba6c17c-18e7-45fe-b419-173c7ae28d98","isHost":false}],"id":"ba6c17c-18e7-45fe-b419-173c7ae28d98"},"event":"ms.channel.connect"} ```

To see supported UPnP services I have to send a command (like Power OFF):


```yaml
2021-11-11 09:56:33.096 [TRACE] [rnal.service.RemoteControllerService] - 192.168.200.70: getSupportedChannelNames: [keyCode, volume, mute, power, channel, url, stopBrowser, sourceApp, artMode]
2021-11-11 09:56:33.104 [DEBUG] [rnal.service.RemoteControllerService] - 192.168.200.70: Received channel: power, command: OFF
2021-11-11 09:56:33.108 [DEBUG] [rnal.service.RemoteControllerService] - 192.168.200.70: Key Sequence Queued
2021-11-11 09:56:33.108 [DEBUG] [l.protocol.RemoteControllerWebSocket] - 192.168.200.70: Try to send command: KEY_POWER, Click
2021-11-11 09:56:33.116 [TRACE] [ngtv.internal.protocol.WebSocketBase] - 192.168.200.70: WebSocketRemote: sendCommand: {"method":"ms.remote.control","params":{"Cmd":"Click","DataOfCmd":"KEY_POWER","Option":"false","TypeOfRemote":"SendRemoteKey"}}

I wrote that I receive the ‘no route to host’ error exactly because I wouls like to try what happens with the TV switched OFF: I thought that the thing has to go offline and it not happens although I (correctly) receive the ‘no route’ error.

I never see UPnP devices detected/removed when I switch my TV on/off.

This is the output of the request on port 8001:

{"device":{"FrameTVSupport":"false","GamePadSupport":"true","ImeSyncedSupport":"true","Language":"it_IT","OS":"Tizen","PowerState":"on","TokenAuthSupport":"true","VoiceSupport":"true","WallScreenRatio":"0","WallService":"false","countryCode":"IT","description":"Samsung DTV RCR","developerIP":"0.0.0.0","developerMode":"0","duid":"uuid:6ab8611d-47a7-4dde-81c9-8fb03ba1408b","firmwareVersion":"Unknown","id":"uuid:6ab8611d-47a7-4dde-81c9-8fb03ba1408b","ip":"192.168.200.70","model":"20_NIKEL_UHD","modelName":"QE55Q64TAUXZT","name":"[TV] Samsung Q60 Series (55)","networkType":"wired","resolution":"3840x2160","smartHubAgreement":"true","type":"Samsung SmartTV","udn":"uuid:6ab8611d-47a7-4dde-81c9-8fb03ba1408b","wifiMac":"f4:fe:fb:9f:fb:6c"},"id":"uuid:6ab8611d-47a7-4dde-81c9-8fb03ba1408b","isSupport":"{\"DMP_DRM_PLAYREADY\":\"false\",\"DMP_DRM_WIDEVINE\":\"false\",\"DMP_available\":\"true\",\"EDEN_available\":\"true\",\"FrameTVSupport\":\"false\",\"ImeSyncedSupport\":\"true\",\"TokenAuthSupport\":\"true\",\"remote_available\":\"true\",\"remote_fourDirections\":\"true\",\"remote_touchPad\":\"true\",\"remote_voiceControl\":\"true\"}\n","name":"[TV] Samsung Q60 Series (55)","remote":"1.0","type":"Samsung SmartTV","uri":"http://192.168.200.70:8001/api/v2/","version":"2.0.25"}

My TV is from 2020.

Hi @Nicholas_Waterton ,

all right thanks also for the feedback.
At the moment it’s not critical for me.
If it would be critical for me then I would start to investigate how to bring the encryption into the plugin.
But as I’m a bloody beginner with OH (not with coding)
|-> NOT YET

If you have a new idea for any reason and want me to test something else, just let me know.

BR

@Rickytr ,

The getSupportedChannelNames messages are not UPnP services, they are not actually services that are supported at all (which is why I removed showing them, as they are confusing). They are the internal capabilities of whatever method is being used for communication (which could be direct port connection, UPnP or websocket). They also do not reflect the actual capabilities of your TV, just what that method supports, on your TV, they may do nothing.

From your log, There are no UPnP services being detected at all.

UPNp services look like this in the log:

2021-11-11 17:02:01.694 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.100.73: Check and create missing services
2021-11-11 17:02:01.694 [TRACE] [tv.internal.handler.SamsungTvHandler] - 192.168.100.73: Skipping unknown service: QN55LS03AAFXZC, ScreenMirroring (adc92018-fd3b-4276-b534-19ea2d3e007a)
2021-11-11 17:02:01.694 [TRACE] [tv.internal.handler.SamsungTvHandler] - 192.168.100.73: Skipping unknown service: QN55LS03AAFXZC, dialreceiver (e6b20cd8-719b-4225-81e2-897c3198068f)
2021-11-11 17:02:01.695 [TRACE] [tv.internal.handler.SamsungTvHandler] - 192.168.100.73: Skipping unknown service: QN55LS03AAFXZC, IPControlServer (3469735c-b428-4bd4-ad80-49ca7c042eaf)
2021-11-11 17:02:01.697 [DEBUG] [nternal.service.MediaRendererService] - 192.168.100.73: Creating a Samsung TV MediaRenderer service
2021-11-11 17:02:01.697 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.100.73: Started service for: QN55LS03AAFXZC, MediaRenderer (ea645e34-d3dd-4b9b-a246-e2947f8973d6)


Turn TV off:

2021-11-11 17:04:47.259 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.100.73: Device removed: udn=adc92018_fd3b_4276_b534_19ea2d3e007a
2021-11-11 17:04:47.259 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.100.73: Shutdown all Samsung services
2021-11-11 17:04:47.260 [DEBUG] [l.protocol.RemoteControllerWebSocket] - 192.168.100.73: RemoteControllerWebSocket close
2021-11-11 17:04:47.260 [DEBUG] [l.protocol.RemoteControllerWebSocket] - 192.168.100.73: RemoteControllerWebSocket closeConnection
2021-11-11 17:04:47.260 [DEBUG] [ngtv.internal.protocol.WebSocketBase] - 192.168.100.73: WebSocketRemote connection close requested
2021-11-11 17:04:47.260 [TRACE] [ngtv.internal.protocol.WebSocketBase] - 192.168.100.73: Closing session Future: java.util.concurrent.CompletableFuture@20d89a94[Completed normally]
2021-11-11 17:04:47.261 [DEBUG] [ngtv.internal.protocol.WebSocketBase] - 192.168.100.73: WebSocketArt connection close requested
2021-11-11 17:04:47.261 [TRACE] [ngtv.internal.protocol.WebSocketBase] - 192.168.100.73: Closing session Future: java.util.concurrent.CompletableFuture@4d50b28c[Completed normally]
2021-11-11 17:04:47.261 [DEBUG] [ngtv.internal.protocol.WebSocketBase] - 192.168.100.73: WebSocketV2 connection close requested
2021-11-11 17:04:47.261 [TRACE] [ngtv.internal.protocol.WebSocketBase] - 192.168.100.73: Closing session Future: java.util.concurrent.CompletableFuture@71848e74[Completed normally]
2021-11-11 17:04:47.262 [TRACE] [l.protocol.RemoteControllerWebSocket] - 192.168.100.73: WebSocketClient stopping
2021-11-11 17:04:47.262 [DEBUG] [ngtv.internal.protocol.WebSocketBase] - 192.168.100.73: WebSocketArt connection closed: 1006 - Disconnected
2021-11-11 17:04:47.262 [DEBUG] [ngtv.internal.protocol.WebSocketBase] - 192.168.100.73: WebSocketRemote connection closed: 1006 - Disconnected
2021-11-11 17:04:47.262 [DEBUG] [ngtv.internal.protocol.WebSocketBase] - 192.168.100.73: WebSocketV2 connection closed: 1006 - Disconnected
2021-11-11 17:04:47.265 [TRACE] [l.protocol.RemoteControllerWebSocket] - 192.168.100.73: WebSocketClient stopped
2021-11-11 17:04:47.309 [DEBUG] [covery.SamsungTvDiscoveryParticipant] - Retrieved Thing UID for a Samsung TV 'Samsung TV' model 'QN55LS03AAFXZC' thing with UDN 'ea645e34_d3dd_4b9b_a246_e2947f8973d6'


Turn TV ON


2021-11-11 17:06:14.508 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.100.73: Received channel: samsungtv:tv:family_room:artMode, command: ON
2021-11-11 17:06:14.509 [INFO ] [tv.internal.handler.SamsungTvHandler] - 192.168.100.73: Send WOL packet to 10:2b:41:01:6d:27
2021-11-11 17:06:14.509 [TRACE] [.samsungtv.internal.WakeOnLanUtility] - Sent WOL packet from /192.168.100.60 to /192.168.100.255 10:2b:41:01:6d:27
2021-11-11 17:06:14.610 [TRACE] [.samsungtv.internal.WakeOnLanUtility] - Sent WOL packet from /192.168.100.60 to /192.168.100.255 10:2b:41:01:6d:27
2021-11-11 17:06:14.710 [TRACE] [.samsungtv.internal.WakeOnLanUtility] - Sent WOL packet from /192.168.100.60 to /192.168.100.255 10:2b:41:01:6d:27
2021-11-11 17:06:14.810 [TRACE] [.samsungtv.internal.WakeOnLanUtility] - Sent WOL packet from /192.168.100.60 to /192.168.100.255 10:2b:41:01:6d:27
2021-11-11 17:06:14.910 [TRACE] [.samsungtv.internal.WakeOnLanUtility] - Sent WOL packet from /192.168.100.60 to /192.168.100.255 10:2b:41:01:6d:27
2021-11-11 17:06:15.010 [TRACE] [.samsungtv.internal.WakeOnLanUtility] - Sent WOL packet from /192.168.100.60 to /192.168.100.255 10:2b:41:01:6d:27
2021-11-11 17:06:15.110 [TRACE] [.samsungtv.internal.WakeOnLanUtility] - Sent WOL packet from /192.168.100.60 to /192.168.100.255 10:2b:41:01:6d:27
2021-11-11 17:06:15.210 [TRACE] [.samsungtv.internal.WakeOnLanUtility] - Sent WOL packet from /192.168.100.60 to /192.168.100.255 10:2b:41:01:6d:27
2021-11-11 17:06:15.309 [TRACE] [.samsungtv.internal.WakeOnLanUtility] - Sent WOL packet from /192.168.100.60 to /192.168.100.255 10:2b:41:01:6d:27
2021-11-11 17:06:15.409 [TRACE] [.samsungtv.internal.WakeOnLanUtility] - Sent WOL packet from /192.168.100.60 to /192.168.100.255 10:2b:41:01:6d:27
2021-11-11 17:06:17.071 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.100.73: remoteDeviceAdded: MediaRenderer, http://192.168.100.73:9197/dmr, upnpUDN=ea645e34_d3dd_4b9b_a246_e2947f8973d6
2021-11-11 17:06:17.071 [DEBUG] [covery.SamsungTvDiscoveryParticipant] - Retrieved Thing UID for a Samsung TV 'Samsung TV' model 'QN55LS03AAFXZC' thing with UDN 'ea645e34_d3dd_4b9b_a246_e2947f8973d6'
2021-11-11 17:06:17.071 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.100.73: Check and create missing services
2021-11-11 17:06:17.071 [DEBUG] [nternal.service.MediaRendererService] - 192.168.100.73: Creating a Samsung TV MediaRenderer service
2021-11-11 17:06:17.071 [DEBUG] [covery.SamsungTvDiscoveryParticipant] - Created a DiscoveryResult for device 'QN55LS03AAFXZC' with UDN 'ea645e34-d3dd-4b9b-a246-e2947f8973d6' and properties: {hostName=192.168.100.73}
2021-11-11 17:06:17.071 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.100.73: Started service for: QN55LS03AAFXZC, MediaRenderer (ea645e34-d3dd-4b9b-a246-e2947f8973d6)
2021-11-11 17:06:17.072 [DEBUG] [rnal.service.RemoteControllerService] - 192.168.100.73: Creating a Samsung TV RemoteController service: is UPNP:false

The line Device removed: udn=adc92018_fd3b_4276_b534_19ea2d3e007a is the TV UPnP service going offline. the line remoteDeviceAdded: MediaRenderer, http://192.168.100.73:9197/dmr, upnpUDN=ea645e34_d3dd_4b9b_a246_e2947f8973d6 is the UPnP device coming back online again. This is what triggers ONLINE/OFFLINE events, and POWER channel on/off.

The actual UPnP services are , ScreenMirroring, dialreceiver, IPControlServer, and MediaRenderer. The only one that matters is MediaRenderer, as that is the one that provides feedback on VOLUME, MUTE and POWER (hence ONLINE/OFFLINE), and is the only UPnP service used on websocket TV’s.

Are you sure you have UPnP enabled on your network? it’s usually a setting on your router. Without UPnP, you won’t get most channels, or the correct feedback for the Power channel etc. All you will have is the KeyCode channel (and the channels that use KEY_CODE ie VOLUME, MUTE, POWER, CHANNEL) (which is via securewebsocket on your TV). These are send only for websockets, so you can send commands to them, but they won’t react to the TV changing (as that is retrieved via UPnP).

The polling thread polls the UPnP services (to update the channels), and as you have none, you don’t see anything.

@Mark_Webster ,

I have a fix for this issue. The latest test binding will now accept a text file, containing a list of apps, and their app ID’s. The TV will poll the list of apps (every 20s minimum to prevent overloading the TV with requests), and update the current running app. So it may take up to 20 seconds to update when you launch an app. The apps take a few seconds to launch anyway, but I could change the polling period if needed.

This also means that you can now launch apps by sending the app name to the SOURCE_APP channel. You can stop the app by sending ON to the STOP_BROWSER channel (or send KEY_EXIT, or just use the remote). Stopping the app closes the app, which is different to just exiting. if you send OFF to the STOP_BROWSER channel it sends a long press of KEY_EXIT which is supposed to return to the TV (according to Samsung), but it seems a bit hit and miss. The app will still be running in the background, so relaunching the App is faster.

You can now also launch the web browser by sending a URL string to the BROWSER_URL channel - but so far I have been unable to get the browser to actually load the URL sent. You can exit the browser by sending ON to the STOP_BROWSER channel, but if you exit any other way the binding won’t know about it. I’m not sure how useful this is anyway.

The text file goes in /etc/openhab/misc here is the test file I am using:

# This file is for the samsungtv binding
# It contains a list in json format of apps that can be run on the TV
# It is provided for TV >2020 when the api that returns a list of installed apps was removed
# format is:
# { "name":"app name", "appId":"app id", "type":2 }
# Where "app name" is the plain text name used to start or display the app, eg "Netflix", "Disney+"
# "app id" is the internal appId assigned by Samsung in the app store. This is hard to find
# See https://github.com/tavicu/homebridge-samsung-tizen/wiki/Applications for the details
# app id is usually a 13 digit number, eg Netflix is "3201907018807"
# the type is an integer, either 2 or 4. 2 is DEEP_LINK (all apps are this type on >2020 TV's)
# type 4 is NATIVE_LAUNCH and the only app that used to use this was "com.tizen.browser" for the
# built in webbrowser.
# This default list will be overwritten by the list retrived from the TV (if your TV is prior to 2020)
# You should edit this list down to just the apps you have installed on your TV.
# NOTE! it is unknown how accurate this list is!
#
#
{ "name":"Netflix"                 , "appId":"3201907018807"    , "type":2 }
{ "name":"YouTube"                 , "appId":"111299001912"     , "type":2 }
{ "name":"YouTube TV"              , "appId":"3201707014489"    , "type":2 }
{ "name":"YouTube Kids"            , "appId":"3201611010983"    , "type":2 }
{ "name":"HBO GO"                  , "appId":"3201706012478"    , "type":2 }
{ "name":"HBO Max"                 , "appId":"3201601007230"    , "type":2 }
{ "name":"Hulu"                    , "appId":"3201601007625"    , "type":2 }
{ "name":"Plex"                    , "appId":"3201512006963"    , "type":2 }
{ "name":"Prime Video"             , "appId":"3201910019365"    , "type":2 }
{ "name":"Rakuten TV"              , "appId":"3201511006428"    , "type":2 }
{ "name":"Disney+"                 , "appId":"3201901017640"    , "type":2 }
{ "name":"NOW TV"                  , "appId":"3201603008746"    , "type":2 }
{ "name":"NOW PlayTV"              , "appId":"3202011022131"    , "type":2 }
{ "name":"VOYO.RO"                 , "appId":"111299000769"     , "type":2 }
{ "name":"Discovery+"              , "appId":"3201803015944"    , "type":2 }
{ "name":"Apple TV"                , "appId":"3201807016597"    , "type":2 }
{ "name":"Apple Music"             , "appId":"3201908019041"    , "type":2 }
{ "name":"Spotify"                 , "appId":"3201606009684"    , "type":2 }
{ "name":"TIDAL"                   , "appId":"3201805016367"    , "type":2 }
{ "name":"TuneIn"                  , "appId":"121299000101"     , "type":2 }
{ "name":"Deezer"                  , "appId":"121299000101"     , "type":2 }
{ "name":"Radio UK"                , "appId":"3201711015226"    , "type":2 }
{ "name":"Radio WOW"               , "appId":"3202012022468"    , "type":2 }
{ "name":"Steam Link"              , "appId":"3201702011851"    , "type":2 }
{ "name":"Gallery"                 , "appId":"3201710015037"    , "type":2 }
{ "name":"Internet"                , "appId":"3201907018784"    , "type":2 }
{ "name":"Focus Sat"               , "appId":"3201906018693"    , "type":2 }
{ "name":"PrivacyChoices"          , "appId":"3201909019271"    , "type":2 }
{ "name":"AntenaPlay.ro"           , "appId":"3201611011005"    , "type":2 }
{ "name":"Eurosport Player"        , "appId":"3201703012079"    , "type":2 }
{ "name":"EduPedia"                , "appId":"3201608010385"    , "type":2 }
{ "name":"BBC News"                , "appId":"3201602007865"    , "type":2 }
{ "name":"BBC Sounds"              , "appId":"3202003020365"    , "type":2 }
{ "name":"BBC iPlayer"             , "appId":"3201601007670"    , "type":2 }
{ "name":"The Weather Network"     , "appId":"111399000741"     , "type":2 }
{ "name":"Orange TV Go"            , "appId":"3201710014866"    , "type":2 }
{ "name":"Facebook Watch"          , "appId":"11091000000"      , "type":2 }
{ "name":"ITV Hub"                 , "appId":"121299000089"     , "type":2 }
{ "name":"UKTV Play"               , "appId":"3201806016432"    , "type":2 }
{ "name":"All 4"                   , "appId":"111299002148"     , "type":2 }
{ "name":"VUDU"                    , "appId":"111012010001"     , "type":2 }
{ "name":"Explore Google Assistant", "appId":"3202004020674"    , "type":2 }
{ "name":"Amazon Alexa"            , "appId":"3202004020626"    , "type":2 }
{ "name":"My5"                     , "appId":"121299000612"     , "type":2 }
{ "name":"SmartThings"             , "appId":"3201910019378"    , "type":2 }
{ "name":"BritBox"                 , "appId":"3201909019175"    , "type":2 }
{ "name":"TikTok"                  , "appId":"3202008021577"    , "type":2 }
{ "name":"RaiPlay"                 , "appId":"111399002034"     , "type":2 }
{ "name":"DAZN"                    , "appId":"3201806016390"    , "type":2 }
{ "name":"McAfee Security"         , "appId":"3201612011418"    , "type":2 }
{ "name":"hayu"                    , "appId":"3201806016381"    , "type":2 }
{ "name":"Tubi Free Movies & TV"  , "appId":"3201504001965"    , "type":2 }
{ "name":"CTV"                     , "appId":"3201506003486"    , "type":2 }
{ "name":"Crave"                   , "appId":"3201506003488"    , "type":2 }
{ "name":"MLB"                     , "appId":"3201603008210"    , "type":2 }
{ "name":"Love Nature 4K"          , "appId":"3201703012065"    , "type":2 }
{ "name":"SiriusXM"                , "appId":"111399002220"     , "type":2 }
{ "name":"7plus"                   , "appId":"3201803015934"    , "type":2 }
{ "name":"9Now"                    , "appId":"3201607010031"    , "type":2 }
{ "name":"Kayo Sports"             , "appId":"3201910019354"    , "type":2 }
{ "name":"ABC iview"               , "appId":"3201812017479"    , "type":2 }
{ "name":"10 play"                 , "appId":"3201704012147"    , "type":2 }
{ "name":"Telstra TV Box Office"   , "appId":"11101000407"      , "type":2 }
{ "name":"Telecine"                , "appId":"3201604009182"    , "type":2 }
{ "name":"globoplay"               , "appId":"3201908019022"    , "type":2 }
{ "name":"DIRECTV GO"              , "appId":"3201907018786"    , "type":2 }
{ "name":"Stan"                    , "appId":"3201606009798"    , "type":2 }
{ "name":"BINGE"                   , "appId":"3202010022098"    , "type":2 }
{ "name":"Foxtel"                  , "appId":"3201910019449"    , "type":2 }
{ "name":"SBS On Demand"           , "appId":"3201510005981"    , "type":2 }
{ "name":"Security Center"         , "appId":"3202009021877"    , "type":2 }
{ "name":"Google Duo"              , "appId":"3202008021439"    , "type":2 }
{ "name":"Kidoodle.TV - FREE, Kid-Safe Videos", "appId":"3201910019457"    , "type":2 }

You can edit the file live and it should update at the next refresh. You will see the polling in the log (only if you have the SOURCE_APP channel linked to an item). The binding will remove any Apps that are not loaded on the TV from its internal list, so if you add an App to the TV, you have to touch the file again to reload it (or power cycle the TV).

It’s a first pass at getting Apps to work again on >2020 TV’s. please test it out and let me know.

UPDATE: (because I’m an idiot), the file should be called samsungtv.applist, so the full path would be /etc/openhab/misc/samsungtv.applist - this is on a linux system. The path would be different on another OS, but it’s the misc directory in the OH config path.

Download link org.openhab.binding.samsungtv-3.2.0-SNAPSHOT.jar

Hey… Should the file be called misc or should there be a file in a directory called misc? If the second, what should the file be called?

@Mark_Webster ,
Doh! - me being stupid, the file should be called samsungtv.applist, so the full path is /etc/openhab/misc/samsungtv.applist.

I just tested the latest binding with the applist feature. It works like a charm on my Samsung The Frame 65 2020.
It is also neat that the Item linked to the sourceApp channel is updated to the running app, when changed with the remote.

I did extract some appId:s that might be of use for Swedes.
note: I chose the “newer” Tizen format of the codes.

{ "name":"Viaplay"                  , "appId":"niYSnzL6h1.Viaplay"          , "type":2 }
{ "name":"SF Anytime"               , "appId":"sntmlv8LDm.SFAnytime"        , "type":2 }
{ "name":"SVT Play"                 , "appId":"5exPmCT0nz.svtplay"          , "type":2 }
{ "name":"TV4 Play"                 , "appId":"cczN3dzcl6.TV4"              , "type":2 }
{ "name":"C More"                   , "appId":"7fEIL5XfcE.CMore"            , "type":2 }
{ "name":"Comhem Play"              , "appId":"SQgb61mZHw.ComhemPlay"       , "type":2 }
{ "name":"Viafree"                  , "appId":"hs9ONwyP2U.ViafreeBigscreen" , "type":2 }

I don’t have a misc directory under /etc/openhab/

I can create one, I’m assuming it the owner needs to be openhab:openhab and the same permissions as the other directories??

Yes, that’s right. It’s the same directory used for the exec binding whitelist, so it’s an “official” location for binding text files.

Just posted a minor update. You can download using the same link.
The app refresh period is 10 seconds (not 20, forgot I changed it). Now the name of the app in the samsungtv.applist file is not vital, you can launch the app using the name you give it, or the “official” name - either will work. So I’ve shortened some names in the file (eg Tubi is now just “Tubi” instead of “Tubi - Free Movies & TV”).
The list of installed apps is given in debug view after the first refresh, and if you update the file. Updating the file is a bit less verbose in the log now. Polling for active apps now stops when the TV is off. Fixed some bugs.

If anyone can validate how accurate some of these appId’s are on >2020 TV’s it would be helpful, I have no way of testing most of them.

new samsungtv.appslist:

# This file is for the samsungtv binding
# It contains a list in json format of apps that can be run on the TV
# It is provided for TV >2020 when the api that returns a list of installed apps was removed
# format is:
# { "name":"app name", "appId":"app id", "type":2 }
# Where "app name" is the plain text name used to start or display the app, eg "Netflix", "Disney+"
# "app id" is the internal appId assigned by Samsung in the app store. This is hard to find
# See https://github.com/tavicu/homebridge-samsung-tizen/wiki/Applications for the details
# app id is usually a 13 digit number, eg Netflix is "3201907018807"
# the type is an integer, either 2 or 4. 2 is DEEP_LINK (all apps are this type on >2020 TV's)
# type 4 is NATIVE_LAUNCH and the only app that used to use this was "com.tizen.browser" for the
# built in webbrowser.
# This default list will be overwritten by the list retrived from the TV (if your TV is prior to 2020)
# You should edit this list down to just the apps you have installed on your TV.
# NOTE! it is unknown how accurate this list is!
#
#
{ "name":"Netflix"                 , "appId":"3201907018807"    , "type":2 }
{ "name":"YouTube"                 , "appId":"111299001912"     , "type":2 }
{ "name":"YouTube TV"              , "appId":"3201707014489"    , "type":2 }
{ "name":"YouTube Kids"            , "appId":"3201611010983"    , "type":2 }
{ "name":"HBO GO"                  , "appId":"3201706012478"    , "type":2 }
{ "name":"HBO Max"                 , "appId":"3201601007230"    , "type":2 }
{ "name":"Hulu"                    , "appId":"3201601007625"    , "type":2 }
{ "name":"Plex"                    , "appId":"3201512006963"    , "type":2 }
{ "name":"Prime Video"             , "appId":"3201910019365"    , "type":2 }
{ "name":"Rakuten TV"              , "appId":"3201511006428"    , "type":2 }
{ "name":"Disney+"                 , "appId":"3201901017640"    , "type":2 }
{ "name":"NOW TV"                  , "appId":"3201603008746"    , "type":2 }
{ "name":"NOW PlayTV"              , "appId":"3202011022131"    , "type":2 }
{ "name":"VOYO.RO"                 , "appId":"111299000769"     , "type":2 }
{ "name":"Discovery+"              , "appId":"3201803015944"    , "type":2 }
{ "name":"Apple TV"                , "appId":"3201807016597"    , "type":2 }
{ "name":"Apple Music"             , "appId":"3201908019041"    , "type":2 }
{ "name":"Spotify"                 , "appId":"3201606009684"    , "type":2 }
{ "name":"TIDAL"                   , "appId":"3201805016367"    , "type":2 }
{ "name":"TuneIn"                  , "appId":"121299000101"     , "type":2 }
{ "name":"Deezer"                  , "appId":"121299000101"     , "type":2 }
{ "name":"Radio UK"                , "appId":"3201711015226"    , "type":2 }
{ "name":"Radio WOW"               , "appId":"3202012022468"    , "type":2 }
{ "name":"Steam Link"              , "appId":"3201702011851"    , "type":2 }
{ "name":"Gallery"                 , "appId":"3201710015037"    , "type":2 }
{ "name":"Internet"                , "appId":"3201907018784"    , "type":2 }
{ "name":"Focus Sat"               , "appId":"3201906018693"    , "type":2 }
{ "name":"PrivacyChoices"          , "appId":"3201909019271"    , "type":2 }
{ "name":"AntenaPlay.ro"           , "appId":"3201611011005"    , "type":2 }
{ "name":"Eurosport Player"        , "appId":"3201703012079"    , "type":2 }
{ "name":"EduPedia"                , "appId":"3201608010385"    , "type":2 }
{ "name":"BBC News"                , "appId":"3201602007865"    , "type":2 }
{ "name":"BBC Sounds"              , "appId":"3202003020365"    , "type":2 }
{ "name":"BBC iPlayer"             , "appId":"3201601007670"    , "type":2 }
{ "name":"The Weather Network"     , "appId":"111399000741"     , "type":2 }
{ "name":"Orange TV Go"            , "appId":"3201710014866"    , "type":2 }
{ "name":"Facebook Watch"          , "appId":"11091000000"      , "type":2 }
{ "name":"ITV Hub"                 , "appId":"121299000089"     , "type":2 }
{ "name":"UKTV Play"               , "appId":"3201806016432"    , "type":2 }
{ "name":"All 4"                   , "appId":"111299002148"     , "type":2 }
{ "name":"VUDU"                    , "appId":"111012010001"     , "type":2 }
{ "name":"Explore Google Assistant", "appId":"3202004020674"    , "type":2 }
{ "name":"Amazon Alexa"            , "appId":"3202004020626"    , "type":2 }
{ "name":"My5"                     , "appId":"121299000612"     , "type":2 }
{ "name":"SmartThings"             , "appId":"3201910019378"    , "type":2 }
{ "name":"BritBox"                 , "appId":"3201909019175"    , "type":2 }
{ "name":"TikTok"                  , "appId":"3202008021577"    , "type":2 }
{ "name":"RaiPlay"                 , "appId":"111399002034"     , "type":2 }
{ "name":"DAZN"                    , "appId":"3201806016390"    , "type":2 }
{ "name":"McAfee Security"         , "appId":"3201612011418"    , "type":2 }
{ "name":"hayu"                    , "appId":"3201806016381"    , "type":2 }
{ "name":"Tubi"                    , "appId":"3201504001965"    , "type":2 }
{ "name":"CTV"                     , "appId":"3201506003486"    , "type":2 }
{ "name":"Crave"                   , "appId":"3201506003488"    , "type":2 }
{ "name":"MLB"                     , "appId":"3201603008210"    , "type":2 }
{ "name":"Love Nature 4K"          , "appId":"3201703012065"    , "type":2 }
{ "name":"SiriusXM"                , "appId":"111399002220"     , "type":2 }
{ "name":"7plus"                   , "appId":"3201803015934"    , "type":2 }
{ "name":"9Now"                    , "appId":"3201607010031"    , "type":2 }
{ "name":"Kayo Sports"             , "appId":"3201910019354"    , "type":2 }
{ "name":"ABC iview"               , "appId":"3201812017479"    , "type":2 }
{ "name":"10 play"                 , "appId":"3201704012147"    , "type":2 }
{ "name":"Telstra"                 , "appId":"11101000407"      , "type":2 }
{ "name":"Telecine"                , "appId":"3201604009182"    , "type":2 }
{ "name":"globoplay"               , "appId":"3201908019022"    , "type":2 }
{ "name":"DIRECTV GO"              , "appId":"3201907018786"    , "type":2 }
{ "name":"Stan"                    , "appId":"3201606009798"    , "type":2 }
{ "name":"BINGE"                   , "appId":"3202010022098"    , "type":2 }
{ "name":"Foxtel"                  , "appId":"3201910019449"    , "type":2 }
{ "name":"SBS On Demand"           , "appId":"3201510005981"    , "type":2 }
{ "name":"Security Center"         , "appId":"3202009021877"    , "type":2 }
{ "name":"Google Duo"              , "appId":"3202008021439"    , "type":2 }
{ "name":"Kidoodle.TV"             , "appId":"3201910019457"     , "type":2 }
{ "name":"Viaplay"                 , "appId":"niYSnzL6h1.Viaplay"          , "type":2 }
{ "name":"SF Anytime"              , "appId":"sntmlv8LDm.SFAnytime"        , "type":2 }
{ "name":"SVT Play"                , "appId":"5exPmCT0nz.svtplay"          , "type":2 }
{ "name":"TV4 Play"                , "appId":"cczN3dzcl6.TV4"              , "type":2 }
{ "name":"C More"                  , "appId":"7fEIL5XfcE.CMore"            , "type":2 }
{ "name":"Comhem Play"             , "appId":"SQgb61mZHw.ComhemPlay"       , "type":2 }
{ "name":"Viafree"                 , "appId":"hs9ONwyP2U.ViafreeBigscreen" , "type":2 }

@Nicholas_Waterton after a restart of openhab with TV switched on I can see this in my log:


2021-11-13 17:04:04.534 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.200.70: remoteDeviceAdded: MediaRenderer, http://192.168.200.70:9197/dmr, upnpUDN=e8915dfb_26a1_4f26_9e82_aa3720a00611
2021-11-13 17:04:04.534 [DEBUG] [covery.SamsungTvDiscoveryParticipant] - Retrieved Thing UID for a Samsung TV '[TV] Samsung Q60 Series (55)' model 'QE55Q64TAUXZT' thing with UDN 'e8915dfb_26a1_4f26_9e82_aa3720a00611'
2021-11-13 17:04:04.537 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.200.70: Check and create missing services
2021-11-13 17:04:04.540 [DEBUG] [covery.SamsungTvDiscoveryParticipant] - Created a DiscoveryResult for device 'QE55Q64TAUXZT' with UDN 'e8915dfb-26a1-4f26-9e82-aa3720a00611' and properties: {hostName=192.168.200.70}
2021-11-13 17:04:04.546 [DEBUG] [nternal.service.MediaRendererService] - 192.168.200.70: Creating a Samsung TV MediaRenderer service
2021-11-13 17:04:04.549 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.200.70: Started service for: QE55Q64TAUXZT, MediaRenderer (e8915dfb-26a1-4f26-9e82-aa3720a00611)
2021-11-13 17:04:04.550 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.200.70: Service rediscovered, clearing caches: QE55Q64TAUXZT, RemoteControlReceiver ()
2021-11-13 17:04:04.553 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.200.70: Device was online

2021-11-13 17:04:04.655 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.200.70: remoteDeviceAdded: dialreceiver, http://192.168.200.70:7678/nservice/, upnpUDN=6ab8611d_47a7_4dde_81c9_8fb03ba1408b
2021-11-13 17:04:04.658 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.200.70: Check and create missing services
2021-11-13 17:04:04.660 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.200.70: Service rediscovered, clearing caches: QE55Q64TAUXZT, MediaRenderer (e8915dfb-26a1-4f26-9e82-aa3720a00611)
2021-11-13 17:04:04.662 [TRACE] [tv.internal.handler.SamsungTvHandler] - 192.168.200.70: Skipping unknown service: QE55Q64TAUXZT, dialreceiver (6ab8611d-47a7-4dde-81c9-8fb03ba1408b)
2021-11-13 17:04:04.663 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.200.70: Service rediscovered, clearing caches: QE55Q64TAUXZT, RemoteControlReceiver ()
2021-11-13 17:04:04.666 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.200.70: Device was online
2021-11-13 17:04:05.580 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.200.70: remoteDeviceAdded: IPControlServer, http://192.168.200.70:9110/ip_control, upnpUDN=9675cba5_4f68_4e4f_ab8b_c16414a2ace6
2021-11-13 17:04:05.582 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.200.70: Check and create missing services
2021-11-13 17:04:05.585 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.200.70: Service rediscovered, clearing caches: QE55Q64TAUXZT, MediaRenderer (e8915dfb-26a1-4f26-9e82-aa3720a00611)
2021-11-13 17:04:05.587 [TRACE] [tv.internal.handler.SamsungTvHandler] - 192.168.200.70: Skipping unknown service: QE55Q64TAUXZT, IPControlServer (9675cba5-4f68-4e4f-ab8b-c16414a2ace6)
2021-11-13 17:04:05.591 [TRACE] [tv.internal.handler.SamsungTvHandler] - 192.168.200.70: Skipping unknown service: QE55Q64TAUXZT, dialreceiver (6ab8611d-47a7-4dde-81c9-8fb03ba1408b)
2021-11-13 17:04:05.593 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.200.70: Service rediscovered, clearing caches: QE55Q64TAUXZT, RemoteControlReceiver ()
2021-11-13 17:04:05.596 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.200.70: Device was online
2021-11-13 17:04:07.678 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.200.70: remoteDeviceAdded: ScreenMirroring, http://192.168.200.70:9119/screen_sharing, upnpUDN=aa498355_4cea_4ff6_816d_eafb0c89ad57
2021-11-13 17:04:07.679 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.200.70: Check and create missing services
2021-11-13 17:04:07.681 [TRACE] [tv.internal.handler.SamsungTvHandler] - 192.168.200.70: Skipping unknown service: QE55Q64TAUXZT, ScreenMirroring (aa498355-4cea-4ff6-816d-eafb0c89ad57)
2021-11-13 17:04:07.682 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.200.70: Service rediscovered, clearing caches: QE55Q64TAUXZT, MediaRenderer (e8915dfb-26a1-4f26-9e82-aa3720a00611)
2021-11-13 17:04:07.684 [TRACE] [tv.internal.handler.SamsungTvHandler] - 192.168.200.70: Skipping unknown service: QE55Q64TAUXZT, IPControlServer (9675cba5-4f68-4e4f-ab8b-c16414a2ace6)
2021-11-13 17:04:07.685 [TRACE] [tv.internal.handler.SamsungTvHandler] - 192.168.200.70: Skipping unknown service: QE55Q64TAUXZT, dialreceiver (6ab8611d-47a7-4dde-81c9-8fb03ba1408b)
2021-11-13 17:04:07.687 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.200.70: Service rediscovered, clearing caches: QE55Q64TAUXZT, RemoteControlReceiver ()
2021-11-13 17:04:07.688 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.200.70: Device was online

As far as I can tell it seems that Upnp is working and finds correctly my TV. But after this I cannot see any other update…

@Rickytr ,

Great! UPnP came up, you should be good to go.

What exactly are you expecting to see in the log? The binding polls linked channels every 1 second by default. On a websocket TV (like yours), the only channels that can be polled are VOLUME and MUTE (via MediaRenderer service). if you don’t have an item linked to the Volume or Mute channels, you won’t see anything, as there is nothing to poll.

Power/Online status etc is derived from the presence/absence of the MediaRenderer service - ie if it’s there the TV is on, and if not it’s off. There is no polling required.

The other channels either aren’t supported on your TV or can’t be polled (things like BRIGHTNESS, CONTRAST, SHARPNESS, and COLOR_TEMPERATURE are not supported), I did recently add SOURCE_APP, but you need a text file to add the App ID’s as described in earlier posts for that to be polled (and have an item linked to the SOURCE_APP channel). other channels (POWER, KeyCode, BROWSER_URL, STOP_BROWSER etc) are send only channels, and ART_MODE isn’t supported on your TV (so don’t link it!).

TL:DR:
So link an item to VOLUME and MUTE and you should see:

2021-11-13 13:01:57.087 [DEBUG] [nternal.service.MediaRendererService] - 192.168.100.73: Received channel: volume, command: REFRESH
2021-11-13 13:01:57.094 [TRACE] [nternal.service.MediaRendererService] - 192.168.100.73: Value '26' for CurrentVolume hasn't changed, ignoring update
2021-11-13 13:01:57.094 [DEBUG] [nternal.service.MediaRendererService] - 192.168.100.73: Received channel: mute, command: REFRESH
2021-11-13 13:01:57.100 [TRACE] [nternal.service.MediaRendererService] - 192.168.100.73: Value 'false' for CurrentMute hasn't changed, ignoring update

Once a second in your log. That’s all you get.

if you send commands (ON/OFF), change volume, mute, send a KeyCode etc (or do the same on the TV using the remote) you will see that logged in the logfile as well as the response.

Many thanks for all your hard work here… I have everything working pretty well now for my needs on my development server… I can power on/off the TV, launch/quit installed apps and control most of the other functions/features I need through the keyCode channel (change volume, mute/unmute, change source etc) on my main TV (a 2020 QLED model). My next steps are to work with my 2012 E series TV.

When do you think you will be in a position to submit a PR to get the standard binding updated? I prefer not to use manually installed jar files in my production system.

I’m not sure. I don’t know if they will accept my updates, as I practically had to re-write the binding - it had been updated and added on to since OH 1 days. I understand why, they didn’t want to break existing functionality, so things were just added on. It was to the point where it was hard to follow anything though, and a lot served no purpose anymore.

I’ll see in a few weeks, I really want more testing on <2020 TV’s to make sure I haven’t broken any of the existing app handling.

I’ll try and do some testing with a 2012 E series… I’m having a lot of trouble getting it to stay connected to my wireless network at the moment though :frowning: