Help ! Samsung TV Bindings with >2016 Samsung TV

@Rickytr How old are your TV’s? (I’m not clear on dates from model numbers).
The problem isn’t with OH, caches or anything, the binding itself has a few kinks in it. One of those is that it doesn’t discover the correct configuration for your TV. You have to set this manually in the Thing.
The “channels” you see updating are mostly not real, they are just placeholders. The only channels you are likely to get are Volume and Mute, as these are UpNp services.

As I tried to explain in my long message above (and failed obviously), you have to select the right protocol/port combination yourself.

So, old TV’s (before 2016) use the legacy protocol and port 55000, 2016 TV’s and later use either the websocket protocol on port 8001, or securewebsocket protocol on 8002.

Start with the TV’s on (or the binding won’t find them at all - its not magic), add the Things when/if they appear in the Inbox, then configure the Things as I describe (I would start with securewebsocket and port 8002 if your TV’s are recent).

You will have to accept the connection on the TV when the “Remote Connection” box pops up on the screen - you have 30 seconds to do this from when you click “Save” on the Thing, or the binding won’t connect. If you miss accepting the connection, you have to try all over again. Nothing will work until you manage to click on the “Accept” connection on the TV. If you are sitting at your computer, and the TV is in another room, you may not be aware of the box appearing on the TV screen prompting you to allow openHAB to connect.

Another quirk of the binding is that you have to accept the connection (on the TV) every time you restart OH3, or add the Thing (if you delete it - don’t delete it!).

In addition, your TV’s have to be configured to accept remote connections. I don’t know what your menu’s look like, but usually there is a setting for “IPControl” and “External Device Manager”.

It would probably help me if you could post the output of http://<ip>:8001/api/V2/ where <ip> is the ip address of each of your TV’s. You can enter this in any web browser connected to the same network as your TV’s. You can try https://<ip>:8002/api/V2/ as well, let me know which works.

Let me know how you get on, it took me a while to figure it out, as I also assumed the Thing would be automatically configured correctly for my TV - and it isn’t.

@Nicholas_Waterton I’m sorry if it seems I didn’t read (or appreciate) your long post. But I already tried all you suggested. If I put manually the settings I receive correctly the request on my TV and after I accept it I can see the websocket token in thing (I’m using port 8002 and secure websocket because my TVs are both from 2020). But the thing still stays offline and channels are not read correctly…

The ouput of both paths is as follows:
“404”

Thnaks a lot for your help.

I think that’s my bad the url should be http://<ip>:8001/api/v2/ (note the lower case v), make sure you include the final /, and https://<ip>:8002/api/v2/.

Hopefully this will give more results, and we will get a clue as to what is happening.

Do you have TRACE logging enabled for the samsungtv binding (or at least debug)? that can help a lot as well if you can post the output of the log.

@Nicholas_Waterton Ok. Here’s the output of the url

{“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:xxx”,“firmwareVersion”:“Unknown”,“id”:“uuid:xxx”,“ip”:“xxx.xxx.xxx.xxx”,“model”:“20_NIKEL_UHD”,“modelName”:“QE55Q64TAUXZT”,“name”:"[TV] Samsung Q60 Series (55)",“networkType”:“wired”,“resolution”:“3840x2160”,“smartHubAgreement”:“true”,“type”:“Samsung SmartTV”,“udn”:“uuid:xxx”,“wifiMac”:“xxx”},“id”:“xxx”,“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”:“https://xxx.xxx.xxx.xxx:8002/api/v2/",“version”:"2.0.25”}

If I enable TRACE logging I receive the following logs:
2021-10-08 09:41:49.564 [DEBUG] [rnal.service.RemoteControllerService] - getSupportedChannelNames: [keyCode, volume, mute, power, channel]

2021-10-08 09:41:49.568 [DEBUG] [rnal.service.RemoteControllerService] - Received channel: power, command: REFRESH

Thanks a lot.

So Secuirewebsocket on port 8002 is the correct port. You have the RemoteControllerService running, but it doesn’t seem to be connected via the websockets. Also no MediaRenderer service running - this is odd, this service should always run. Do you have a soundbar connected via ARC?

Here is the output from my logs (TRACE mode) when I power on the TV from completely off:

2021-10-08 07:00:00.057 [DEBUG] [tv.internal.handler.SamsungTvHandler] - Received channel: samsungtv:tv:family_room:artMode, command: ON
2021-10-08 07:00:00.057 [INFO ] [tv.internal.handler.SamsungTvHandler] - Send WOL packet to 192.168.100.73 (10:2b:41:01:6d:27)
2021-10-08 07:00:00.060 [TRACE] [.samsungtv.internal.WakeOnLanUtility] - Sent WOL packet to /192.168.100.255 10:2b:41:01:6d:27
2021-10-08 07:00:00.061 [TRACE] [.samsungtv.internal.WakeOnLanUtility] - Sent WOL packet to /192.168.100.255 10:2b:41:01:6d:27
2021-10-08 07:00:00.162 [TRACE] [.samsungtv.internal.WakeOnLanUtility] - Sent WOL packet to /192.168.100.255 10:2b:41:01:6d:27
2021-10-08 07:00:00.162 [TRACE] [.samsungtv.internal.WakeOnLanUtility] - Sent WOL packet to /192.168.100.255 10:2b:41:01:6d:27
2021-10-08 07:00:00.264 [TRACE] [.samsungtv.internal.WakeOnLanUtility] - Sent WOL packet to /192.168.100.255 10:2b:41:01:6d:27
2021-10-08 07:00:00.264 [TRACE] [.samsungtv.internal.WakeOnLanUtility] - Sent WOL packet to /192.168.100.255 10:2b:41:01:6d:27
2021-10-08 07:00:00.366 [TRACE] [.samsungtv.internal.WakeOnLanUtility] - Sent WOL packet to /192.168.100.255 10:2b:41:01:6d:27
2021-10-08 07:00:00.366 [TRACE] [.samsungtv.internal.WakeOnLanUtility] - Sent WOL packet to /192.168.100.255 10:2b:41:01:6d:27
2021-10-08 07:00:00.467 [TRACE] [.samsungtv.internal.WakeOnLanUtility] - Sent WOL packet to /192.168.100.255 10:2b:41:01:6d:27
2021-10-08 07:00:00.468 [TRACE] [.samsungtv.internal.WakeOnLanUtility] - Sent WOL packet to /192.168.100.255 10:2b:41:01:6d:27
2021-10-08 07:00:00.569 [TRACE] [.samsungtv.internal.WakeOnLanUtility] - Sent WOL packet to /192.168.100.255 10:2b:41:01:6d:27
2021-10-08 07:00:00.569 [TRACE] [.samsungtv.internal.WakeOnLanUtility] - Sent WOL packet to /192.168.100.255 10:2b:41:01:6d:27
2021-10-08 07:00:00.670 [TRACE] [.samsungtv.internal.WakeOnLanUtility] - Sent WOL packet to /192.168.100.255 10:2b:41:01:6d:27
2021-10-08 07:00:00.670 [TRACE] [.samsungtv.internal.WakeOnLanUtility] - Sent WOL packet to /192.168.100.255 10:2b:41:01:6d:27
2021-10-08 07:00:00.771 [TRACE] [.samsungtv.internal.WakeOnLanUtility] - Sent WOL packet to /192.168.100.255 10:2b:41:01:6d:27
2021-10-08 07:00:00.772 [TRACE] [.samsungtv.internal.WakeOnLanUtility] - Sent WOL packet to /192.168.100.255 10:2b:41:01:6d:27
2021-10-08 07:00:00.873 [TRACE] [.samsungtv.internal.WakeOnLanUtility] - Sent WOL packet to /192.168.100.255 10:2b:41:01:6d:27
2021-10-08 07:00:00.873 [TRACE] [.samsungtv.internal.WakeOnLanUtility] - Sent WOL packet to /192.168.100.255 10:2b:41:01:6d:27
2021-10-08 07:00:02.767 [DEBUG] [covery.SamsungTvDiscoveryParticipant] - Retrieved Thing UID for a Samsung TV 'Samsung TV' model 'QN55LS03AAFXZC' thing with UDN 'ea645e34_d3dd_4b9b_a246_e2947f8973d6'
2021-10-08 07:00:02.767 [DEBUG] [tv.internal.handler.SamsungTvHandler] - remoteDeviceAdded: MediaRenderer, http://192.168.100.73:9197/dmr
2021-10-08 07:00:02.767 [DEBUG] [tv.internal.handler.SamsungTvHandler] - remoteDeviceAdded, upnpUDN=ea645e34_d3dd_4b9b_a246_e2947f8973d6
2021-10-08 07:00:02.767 [DEBUG] [tv.internal.handler.SamsungTvHandler] - Check and create missing UPnP services
2021-10-08 07:00:02.767 [DEBUG] [covery.SamsungTvDiscoveryParticipant] - Created a DiscoveryResult for device 'QN55LS03AAFXZC' with UDN 'ea645e34-d3dd-4b9b-a246-e2947f8973d6' and properties: {hostName=192.168.100.73}
2021-10-08 07:00:02.768 [DEBUG] [nternal.service.MediaRendererService] - Creating a Samsung TV MediaRenderer service
2021-10-08 07:00:02.768 [DEBUG] [tv.internal.handler.SamsungTvHandler] - Started service for: QN55LS03AAFXZC, MediaRenderer (ea645e34-d3dd-4b9b-a246-e2947f8973d6)
2021-10-08 07:00:02.768 [DEBUG] [tv.internal.handler.SamsungTvHandler] - Device was online
2021-10-08 07:00:02.768 [DEBUG] [rnal.service.RemoteControllerService] - Creating a Samsung TV RemoteController service: is UPNP:false
2021-10-08 07:00:02.768 [INFO ] [rnal.service.RemoteControllerService] - Using SecureWebSocket interface
2021-10-08 07:00:02.770 [DEBUG] [nternal.service.MediaRendererService] - onStatusChanged: status=true
2021-10-08 07:00:02.779 [TRACE] [l.protocol.RemoteControllerWebSocket] - openConnection()
2021-10-08 07:00:02.779 [DEBUG] [l.protocol.RemoteControllerWebSocket] - RemoteControllerWebSocket start Client
2021-10-08 07:00:02.779 [TRACE] [l.protocol.RemoteControllerWebSocket] - WebSocketClient starting
2021-10-08 07:00:02.791 [TRACE] [l.protocol.RemoteControllerWebSocket] - WebSocketClient started
2021-10-08 07:00:02.791 [TRACE] [l.protocol.RemoteControllerWebSocket] - connectWebSockets()
2021-10-08 07:00:02.791 [DEBUG] [ngtv.internal.protocol.WebSocketBase] - WebSocketRemote connecting to: wss://192.168.100.73:8002/api/v2/channels/samsung.remote.control?name=b3BlbkhBQg==&token=16295986
2021-10-08 07:00:02.792 [TRACE] [ngtv.internal.protocol.WebSocketBase] - Connecting session Future: java.util.concurrent.CompletableFuture@2e94645d[Not completed, 1 dependents]
2021-10-08 07:00:02.792 [DEBUG] [ngtv.internal.protocol.WebSocketBase] - WebSocketArt connecting to: wss://192.168.100.73:8002/api/v2/channels/com.samsung.art-app?name=b3BlbkhBQg==
2021-10-08 07:00:02.793 [TRACE] [ngtv.internal.protocol.WebSocketBase] - Connecting session Future: java.util.concurrent.CompletableFuture@db366b6[Not completed, 1 dependents]
2021-10-08 07:00:02.793 [DEBUG] [ngtv.internal.protocol.WebSocketBase] - WebSocketV2 connecting to: wss://192.168.100.73:8002/api/v2?name=b3BlbkhBQg==
2021-10-08 07:00:02.794 [TRACE] [ngtv.internal.protocol.WebSocketBase] - Connecting session Future: java.util.concurrent.CompletableFuture@587b640b[Not completed, 1 dependents]
2021-10-08 07:00:02.848 [DEBUG] [nternal.service.MediaRendererService] - Received channel: volume, command: REFRESH
2021-10-08 07:00:02.874 [DEBUG] [tv.internal.handler.SamsungTvHandler] - Received value 'volume':'20' for thing 'samsungtv:tv:family_room'
2021-10-08 07:00:02.875 [DEBUG] [nternal.service.MediaRendererService] - Received channel: mute, command: REFRESH
2021-10-08 07:00:02.921 [DEBUG] [tv.internal.handler.SamsungTvHandler] - Received value 'mute':'OFF' for thing 'samsungtv:tv:family_room'
2021-10-08 07:00:03.127 [DEBUG] [ngtv.internal.protocol.WebSocketBase] - WebSocketRemote connection established: 192.168.100.73
2021-10-08 07:00:03.189 [DEBUG] [tv.internal.handler.SamsungTvHandler] - remoteDeviceAdded: dialreceiver, http://192.168.100.73:7678/nservice/
2021-10-08 07:00:03.189 [DEBUG] [tv.internal.handler.SamsungTvHandler] - remoteDeviceAdded, upnpUDN=e6b20cd8_719b_4225_81e2_897c3198068f
2021-10-08 07:00:03.189 [DEBUG] [tv.internal.handler.SamsungTvHandler] - Check and create missing UPnP services
2021-10-08 07:00:03.189 [TRACE] [tv.internal.handler.SamsungTvHandler] - Skipping unknown UPnP service: QN55LS03AAFXZC, dialreceiver (e6b20cd8-719b-4225-81e2-897c3198068f)
2021-10-08 07:00:03.189 [DEBUG] [tv.internal.handler.SamsungTvHandler] - Service rediscovered, clearing caches: QN55LS03AAFXZC, MediaRenderer (ea645e34-d3dd-4b9b-a246-e2947f8973d6)
2021-10-08 07:00:03.190 [DEBUG] [tv.internal.handler.SamsungTvHandler] - Device was online
2021-10-08 07:00:03.922 [DEBUG] [nternal.service.MediaRendererService] - Received channel: volume, command: REFRESH
2021-10-08 07:00:03.940 [DEBUG] [tv.internal.handler.SamsungTvHandler] - Received value 'volume':'20' for thing 'samsungtv:tv:family_room'
2021-10-08 07:00:03.940 [DEBUG] [nternal.service.MediaRendererService] - Received channel: mute, command: REFRESH
2021-10-08 07:00:03.958 [DEBUG] [tv.internal.handler.SamsungTvHandler] - Received value 'mute':'OFF' for thing 'samsungtv:tv:family_room'
2021-10-08 07:00:03.959 [DEBUG] [rnal.service.RemoteControllerService] - getSupportedChannelNames: [keyCode, volume, mute, power, channel, url, sourceApp, artMode]
2021-10-08 07:00:03.959 [DEBUG] [rnal.service.RemoteControllerService] - Received channel: keyCode, command: REFRESH
2021-10-08 07:00:03.959 [DEBUG] [rnal.service.RemoteControllerService] - Received channel: volume, command: REFRESH
2021-10-08 07:00:03.960 [DEBUG] [rnal.service.RemoteControllerService] - Received channel: mute, command: REFRESH
2021-10-08 07:00:03.961 [DEBUG] [rnal.service.RemoteControllerService] - Received channel: power, command: REFRESH
2021-10-08 07:00:03.961 [DEBUG] [rnal.service.RemoteControllerService] - Received channel: url, command: REFRESH
2021-10-08 07:00:03.961 [DEBUG] [rnal.service.RemoteControllerService] - Received channel: artMode, command: REFRESH
2021-10-08 07:00:04.923 [DEBUG] [tv.internal.handler.SamsungTvHandler] - remoteDeviceAdded: IPControlServer, http://192.168.100.73:9110/ip_control
2021-10-08 07:00:04.924 [DEBUG] [tv.internal.handler.SamsungTvHandler] - remoteDeviceAdded, upnpUDN=3469735c_b428_4bd4_ad80_49ca7c042eaf
2021-10-08 07:00:04.924 [DEBUG] [tv.internal.handler.SamsungTvHandler] - Check and create missing UPnP services
2021-10-08 07:00:04.924 [TRACE] [tv.internal.handler.SamsungTvHandler] - Skipping unknown UPnP service: QN55LS03AAFXZC, dialreceiver (e6b20cd8-719b-4225-81e2-897c3198068f)
2021-10-08 07:00:04.924 [TRACE] [tv.internal.handler.SamsungTvHandler] - Skipping unknown UPnP service: QN55LS03AAFXZC, IPControlServer (3469735c-b428-4bd4-ad80-49ca7c042eaf)
2021-10-08 07:00:04.924 [DEBUG] [tv.internal.handler.SamsungTvHandler] - Service rediscovered, clearing caches: QN55LS03AAFXZC, MediaRenderer (ea645e34-d3dd-4b9b-a246-e2947f8973d6)
2021-10-08 07:00:04.924 [DEBUG] [tv.internal.handler.SamsungTvHandler] - Device was online
2021-10-08 07:00:04.961 [DEBUG] [nternal.service.MediaRendererService] - Received channel: volume, command: REFRESH
2021-10-08 07:00:04.970 [DEBUG] [tv.internal.handler.SamsungTvHandler] - Received value 'volume':'20' for thing 'samsungtv:tv:family_room'
2021-10-08 07:00:04.970 [DEBUG] [nternal.service.MediaRendererService] - Received channel: mute, command: REFRESH
2021-10-08 07:00:04.979 [DEBUG] [tv.internal.handler.SamsungTvHandler] - Received value 'mute':'OFF' for thing 'samsungtv:tv:family_room'
2021-10-08 07:00:04.980 [DEBUG] [rnal.service.RemoteControllerService] - getSupportedChannelNames: [keyCode, volume, mute, power, channel, url, sourceApp, artMode]
2021-10-08 07:00:04.980 [DEBUG] [rnal.service.RemoteControllerService] - Received channel: keyCode, command: REFRESH
2021-10-08 07:00:04.980 [DEBUG] [rnal.service.RemoteControllerService] - Received channel: volume, command: REFRESH
2021-10-08 07:00:04.980 [DEBUG] [rnal.service.RemoteControllerService] - Received channel: mute, command: REFRESH
2021-10-08 07:00:04.980 [DEBUG] [rnal.service.RemoteControllerService] - Received channel: power, command: REFRESH
2021-10-08 07:00:04.981 [DEBUG] [rnal.service.RemoteControllerService] - Received channel: url, command: REFRESH
2021-10-08 07:00:04.981 [DEBUG] [rnal.service.RemoteControllerService] - Received channel: artMode, command: REFRESH
2021-10-08 07:00:05.102 [DEBUG] [ngtv.internal.protocol.WebSocketBase] - WebSocketArt connection established: 192.168.100.73
2021-10-08 07:00:05.110 [TRACE] [ngtv.internal.protocol.WebSocketBase] - WebSocketRemote: onWebSocketText: {"data":{"clients":[{"attributes":{"name":"b3BlbkhBQg==","token":"16295986"},"connectTime":1633671462560,"deviceName":"b3BlbkhBQg==","id":"afdacc12-1a4-427d-86ba-b5f7a1c18063","isHost":false}],"id":"afdacc12-1a4-427d-86ba-b5f7a1c18063"},"event":"ms.channel.connect"} 
2021-10-08 07:00:05.110 [TRACE] [ngtv.internal.protocol.WebSocketBase] - WebSocketArt: onWebSocketText: {"data":{"clients":[{"attributes":{"name":null},"connectTime":1633629695123,"deviceName":"Smart Device","id":"ce8dfae7-2c8e-4aaa-ae78-d51157895515","isHost":true},{"attributes":{"name":"b3BlbkhBQg=="},"connectTime":1633690804823,"deviceName":"b3BlbkhBQg==","id":"e7c92ce3-ef51-471a-9118-b09c7f58824","isHost":false}],"id":"e7c92ce3-ef51-471a-9118-b09c7f58824"},"event":"ms.channel.connect"} 
2021-10-08 07:00:05.111 [DEBUG] [ungtv.internal.protocol.WebSocketArt] - Art channel connected
2021-10-08 07:00:05.111 [DEBUG] [ngtv.internal.protocol.WebSocketBase] - WebSocketV2 connection established: 192.168.100.73
2021-10-08 07:00:05.111 [DEBUG] [tv.internal.protocol.WebSocketRemote] - Remote channel connected. Token = null
2021-10-08 07:00:05.112 [TRACE] [ngtv.internal.protocol.WebSocketBase] - WebSocketRemote: sendCommand: {"method":"ms.channel.emit","params":{"event":"ed.installedApp.get","to":"host"}}
2021-10-08 07:00:05.120 [TRACE] [ngtv.internal.protocol.WebSocketBase] - WebSocketV2: onWebSocketText: {"data":{"clients":[{"attributes":{"name":"b3BlbkhBQg=="},"connectTime":1633690804834,"deviceName":"b3BlbkhBQg==","id":"c5b45ac-6d82-407d-8433-d7c62995e28d","isHost":false}],"id":"c5b45ac-6d82-407d-8433-d7c62995e28d"},"event":"ms.channel.connect"} 
2021-10-08 07:00:05.120 [TRACE] [ngtv.internal.protocol.WebSocketBase] - WebSocketArt: onWebSocketText: {"data":null,"event":"ms.channel.ready"} 
2021-10-08 07:00:05.121 [DEBUG] [ungtv.internal.protocol.WebSocketArt] - Art channel ready
2021-10-08 07:00:05.121 [DEBUG] [sungtv.internal.protocol.WebSocketV2] - V2 channel connected. Token = null
2021-10-08 07:00:05.122 [TRACE] [ngtv.internal.protocol.WebSocketBase] - WebSocketArt: sendCommand: {"method":"ms.channel.emit","params":{"event":"art_app_request","to":"host","data":"{\"request\":\"get_artmode_status\",\"id\":\"51319506-2edd-418f-a09f-73571884cce9\"}"}}
2021-10-08 07:00:05.150 [TRACE] [ngtv.internal.protocol.WebSocketBase] - WebSocketArt: onWebSocketText: {"data":"{\n  \"id\": \"51319506-2edd-418f-a09f-73571884cce9\",\n  \"event\": \"artmode_status\",\n  \"value\": \"on\",\n  \"target_client_id\": \"e7c92ce3-ef51-471a-9118-b09c7f58824\"\n}","event":"d2d_service_message","from":"ce8dfae7-2c8e-4aaa-ae78-d51157895515"} 
2021-10-08 07:00:05.151 [DEBUG] [ungtv.internal.protocol.WebSocketArt] - artmode_status: on
2021-10-08 07:00:05.163 [DEBUG] [tv.internal.handler.SamsungTvHandler] - PowerState is: on
2021-10-08 07:00:05.164 [DEBUG] [tv.internal.handler.SamsungTvHandler] - Received value 'artMode':'ON' for thing 'samsungtv:tv:family_room'
2021-10-08 07:00:05.164 [DEBUG] [tv.internal.handler.SamsungTvHandler] - Received value 'power':'OFF' for thing 'samsungtv:tv:family_room'
2021-10-08 07:00:05.981 [DEBUG] [nternal.service.MediaRendererService] - Received channel: volume, command: REFRESH
2021-10-08 07:00:05.992 [TRACE] [nternal.service.MediaRendererService] - Value '20' for CurrentVolume hasn't changed, ignoring update
2021-10-08 07:00:05.992 [DEBUG] [nternal.service.MediaRendererService] - Received channel: mute, command: REFRESH
2021-10-08 07:00:05.999 [TRACE] [nternal.service.MediaRendererService] - Value 'false' for CurrentMute hasn't changed, ignoring update
2021-10-08 07:00:05.999 [DEBUG] [rnal.service.RemoteControllerService] - getSupportedChannelNames: [keyCode, volume, mute, power, channel, url, sourceApp, artMode]
2021-10-08 07:00:05.999 [DEBUG] [rnal.service.RemoteControllerService] - Received channel: keyCode, command: REFRESH
2021-10-08 07:00:05.999 [DEBUG] [rnal.service.RemoteControllerService] - Received channel: volume, command: REFRESH
2021-10-08 07:00:05.999 [DEBUG] [rnal.service.RemoteControllerService] - Received channel: mute, command: REFRESH
2021-10-08 07:00:06.000 [DEBUG] [rnal.service.RemoteControllerService] - Received channel: power, command: REFRESH
2021-10-08 07:00:06.000 [DEBUG] [rnal.service.RemoteControllerService] - Received channel: url, command: REFRESH
2021-10-08 07:00:06.000 [DEBUG] [rnal.service.RemoteControllerService] - Received channel: artMode, command: REFRESH
2021-10-08 07:00:06.147 [DEBUG] [tv.internal.handler.SamsungTvHandler] - remoteDeviceAdded: ScreenMirroring, http://192.168.100.73:9119/screen_sharing
2021-10-08 07:00:06.147 [DEBUG] [tv.internal.handler.SamsungTvHandler] - remoteDeviceAdded, upnpUDN=adc92018_fd3b_4276_b534_19ea2d3e007a
2021-10-08 07:00:06.147 [DEBUG] [tv.internal.handler.SamsungTvHandler] - Check and create missing UPnP services
2021-10-08 07:00:06.147 [TRACE] [tv.internal.handler.SamsungTvHandler] - Skipping unknown UPnP service: QN55LS03AAFXZC, ScreenMirroring (adc92018-fd3b-4276-b534-19ea2d3e007a)
2021-10-08 07:00:06.147 [TRACE] [tv.internal.handler.SamsungTvHandler] - Skipping unknown UPnP service: QN55LS03AAFXZC, dialreceiver (e6b20cd8-719b-4225-81e2-897c3198068f)
2021-10-08 07:00:06.148 [TRACE] [tv.internal.handler.SamsungTvHandler] - Skipping unknown UPnP service: QN55LS03AAFXZC, IPControlServer (3469735c-b428-4bd4-ad80-49ca7c042eaf)
2021-10-08 07:00:06.148 [DEBUG] [tv.internal.handler.SamsungTvHandler] - Service rediscovered, clearing caches: QN55LS03AAFXZC, MediaRenderer (ea645e34-d3dd-4b9b-a246-e2947f8973d6)
2021-10-08 07:00:06.148 [DEBUG] [tv.internal.handler.SamsungTvHandler] - Device was online
2021-10-08 07:00:07.000 [DEBUG] [nternal.service.MediaRendererService] - Received channel: volume, command: REFRESH
2021-10-08 07:00:07.006 [DEBUG] [tv.internal.handler.SamsungTvHandler] - Received value 'volume':'20' for thing 'samsungtv:tv:family_room'
2021-10-08 07:00:07.006 [DEBUG] [nternal.service.MediaRendererService] - Received channel: mute, command: REFRESH
2021-10-08 07:00:07.013 [DEBUG] [tv.internal.handler.SamsungTvHandler] - Received value 'mute':'OFF' for thing 'samsungtv:tv:family_room'
2021-10-08 07:00:07.013 [DEBUG] [rnal.service.RemoteControllerService] - getSupportedChannelNames: [keyCode, volume, mute, power, channel, url, sourceApp, artMode]
2021-10-08 07:00:07.013 [DEBUG] [rnal.service.RemoteControllerService] - Received channel: keyCode, command: REFRESH
2021-10-08 07:00:07.013 [DEBUG] [rnal.service.RemoteControllerService] - Received channel: volume, command: REFRESH
2021-10-08 07:00:07.014 [DEBUG] [rnal.service.RemoteControllerService] - Received channel: mute, command: REFRESH
2021-10-08 07:00:07.014 [DEBUG] [rnal.service.RemoteControllerService] - Received channel: power, command: REFRESH
2021-10-08 07:00:07.014 [DEBUG] [rnal.service.RemoteControllerService] - Received channel: url, command: REFRESH
2021-10-08 07:00:07.014 [DEBUG] [rnal.service.RemoteControllerService] - Received channel: artMode, command: REFRESH
2021-10-08 07:00:08.014 [DEBUG] [nternal.service.MediaRendererService] - Received channel: volume, command: REFRESH
2021-10-08 07:00:08.020 [TRACE] [nternal.service.MediaRendererService] - Value '20' for CurrentVolume hasn't changed, ignoring update
2021-10-08 07:00:08.020 [DEBUG] [nternal.service.MediaRendererService] - Received channel: mute, command: REFRESH
2021-10-08 07:00:08.025 [TRACE] [nternal.service.MediaRendererService] - Value 'false' for CurrentMute hasn't changed, ignoring update

Can you capture the logs from when you power the TV ON? this is after you have accepted the connection on the TV (do not restart OH or delete the thing or you will have to accept the connection all over again). You should get a similar sequence.

With the TV on, you should see repeat a posting in the log (every second if that is your polling period) that looks like this:

2021-10-08 08:53:17.277 [DEBUG] [rnal.service.RemoteControllerService] - getSupportedChannelNames: [keyCode, volume, mute, power, channel, url, sourceApp, artMode]
2021-10-08 08:53:17.278 [DEBUG] [rnal.service.RemoteControllerService] - Received channel: keyCode, command: REFRESH
2021-10-08 08:53:17.278 [DEBUG] [rnal.service.RemoteControllerService] - Received channel: volume, command: REFRESH
2021-10-08 08:53:17.278 [DEBUG] [rnal.service.RemoteControllerService] - Received channel: mute, command: REFRESH
2021-10-08 08:53:17.278 [DEBUG] [rnal.service.RemoteControllerService] - Received channel: power, command: REFRESH
2021-10-08 08:53:17.278 [DEBUG] [rnal.service.RemoteControllerService] - Received channel: url, command: REFRESH
2021-10-08 08:53:17.279 [DEBUG] [rnal.service.RemoteControllerService] - Received channel: artMode, command: REFRESH
2021-10-08 08:53:17.279 [DEBUG] [nternal.service.MediaRendererService] - Received channel: volume, command: REFRESH
2021-10-08 08:53:17.285 [TRACE] [nternal.service.MediaRendererService] - Value '20' for CurrentVolume hasn't changed, ignoring update
2021-10-08 08:53:17.286 [DEBUG] [nternal.service.MediaRendererService] - Received channel: mute, command: REFRESH
2021-10-08 08:53:17.291 [TRACE] [nternal.service.MediaRendererService] - Value 'false' for CurrentMute hasn't changed, ignoring update

Just FYI, the getSupportedChannelNames is not an accurate representation, it always says [keyCode, volume, mute, power, channel, url, sourceApp, artMode], it is reported depending on what protocol you select, it’s not actually fetched from the TV or anything. The line you show [keyCode, volume, mute, power, channel] is reported when you have a non upnp service, but no websocket connection.

You should have more reported than just the two lines though. If you can post the log from when you turn the TV ON it would help.

Everyone,

I have updated the samsungtv binding to fix a number of bugs that I found with the current version (including not saving the token, power buttons not working, binding not initializing properly, power state not reported correctly, and some other non-obvious ones). I have also optimized it to work correctly with Frame TV’s.

I did add one new feature. Now if you send a string consisting of a comma (or space) delimited list of KEY_CODES to the KeyCode channel item, then each key is sent 300ms apart in sequence.

eg: send the string "KEY_MENU, KEY_RIGHT, KEY_DOWN, KEY_ENTER" to the KeyCode channel item, and the keys will be executed in turn, with a 300ms delay between them. No need for Thread::Sleep(300) in your rules anymore. You can send just a single key as before, send "KEY_ENTER" and it gets sent immediately. Just don’t overlap the two or you will get unexpected results.

I have a 2021 frame TV and an old legacy Samsung TV. The binding works correctly with both of these, but I can’t test it with any other type of TV (older Frame’s, standard TV’s etc).

I’m uploading it here so you can test it out if you like. You will have to uninstall the existing samsungtv binding, and put the new .jar file in the openhab runtime addons folder. You will have to manually install openhab-transport-upnp if you don’t have any other binding installed that uses upnp. You do this by opening the console and entering:

feature:install openhab-transport-upnp

See here. for a summary.
The binding is compiled for OH3.2, but I’m using OH 3.1 and it works fine.

If you try it out, and find problems, let me know and I’ll try to fix them. If it’s worthwhile I’ll make a PR against the addons repository, but I’m not sure they will accept it, as I changed a ton of stuff! (a lot seemed to be legacy code that no longer did anything useful, or was just complicated).

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

Let me know what you think.

I just installed the updated binding. It seems a lot “snappier” than previously.
Will report any issues and if it keeps working (unlike the unmodified one, that keeps forgetting the authorization)

Hi!

Maybe a bit offtopic but is it possible to add KEY_AMBIENT to the list of allowed/known/supported key’s?
My TV has ambient mode instead of artmode but the binding does not allow me to send “KEY_AMBIENT” to the KeyCode channel.

@tsmit
I already added KEY_AMBIENT to the updated binding I posted.

I have updated the link to the new binding, with a slightly modified version.

Now all keyCode channel sends are queued, so they don’t overlap each other. You can also now use in line delays, and keypresses (in mS). for example:
sending:
"KEY_MENU, 1000, KEY_DOWN, KEY_DOWN, KEY_ENTER, 2000, KEY_EXIT"

Results in a 1 second pause after KEY_MENU before KEY_DOWN is sent, and a 2 second delay before KEY_EXIT is sent. The other commands have 300mS delays between them.

NOTE: the delay replaces the 300 mS default delay (so 1000 is 1 second, not 1.3 seconds).

To send keyPresses (like a long press of the power button), you would send:
"-4000,KEY_POWER"
This sends a 4 second press of the power button. You can combine these with other commands and delays like this:
"-3000, KEY_RETURN, 1000, KEY_MENU"
This does a long press (3 seconds) of the RETURN key (on my TV this exits Netflix or Disney+ etc), then waits 1 second, then exits the menu.

The delimiter can be either , or +

By not overlapping, I mean that if you send two strings one after the other, they are executed sequentially. ie:
sending
"-3000, KEY_RETURN, 100, KEY_MENU"
immediately followed by:
"KEY_EXIT"
would send a long press of return, a 1 second pause, then menu, followed by exit 300mS later.

Please let me know if you are testing the new binding.

@Daniel_Linder
The token should now be retained between restarts. let me know if it isn’t…

I also reworked the sendKey code. the original used Thread.Sleep() for timing, which suspended the whole thread for the duration of the sleep. I changed this to use the scheduler, which schedules commands in the future, while allowing the thread to continue running.

The sendKey code is used internally to control things like the power state of the TV (amongst others), so the binding may be a bit more responsive.

I have also removed all channels that don’t support REFRESH from the logs, so the logging output of the poll thread should be much reduced. Previously, the REFRESH command was logged, even if the channel didn’t support it, so there was a lot of empty logging going on.

As a result of this, you don’t get the supportedChannels messages anymore, but I though these were misleading, as they didn’t represent which channels were actually supported anyway. They were just showing which channels were supported by the protocol selected (legacy or websocket), not what worked on your particular TV.

Please update to the latest binding I just posted to see the difference.

Cool, thanks!

I reinstalled the latest binding, recreated the thing and item, but it still doesn’t show up in the item options:
image

any ideas?

@tsmit
Sorry, added the KEY but forgot to update the descriptions. Added it now.
Try downloading again. Let me know if it’s OK now.

Yes, it works!
afbeelding

Thank you!

I’ve installed the “test” binding… It’s detected my 2020 Q95T fine. It even found the MAC address, put it to secure websocket and set the port to 8002. All great.

I’ve added a switch item and linked it to the Power channel. I can see the correct status and am able to power off the televison using the switch. However, I’m not able to power it back on. With the “original” binding, I was able to power it back on and could see in the logs that the binding sent a WOL packet.

I decided to try the “test” binding as I was finding I had to set the Power switch to on twice, and therefore send two WOL packets, in order for the television to actually switch back on.

Should your “test” binding exhibit the same behaviour in terms of sending the WOL packets?

Hi all,

I have some troubles with my Samsung UE48J6250, I was never able to connect to the device.
I’ve already tried different ports but did not succeed. I’ve tested an app from the appstore (SamRemote) this asked for a Pin on the screen and worked immedateley.
Please find below the trace log. the line getSupportedChannelNames: [keyCode, volume, mute, power, channel, url, sourceApp, artMode] runs infinite then.

The TV was bought in August/2015
It cannot be detected by scanning for a samsung tv.

BR and thanks
/Franz

: Locating method activate in class java.lang.Object
2021-11-08 15:56:12.711 [DEBUG] [covery.SamsungTvDiscoveryParticipant] - bundle org.openhab.binding.samsungtv:3.1.0 (301)[org.openhab.binding.samsungtv.internal.discovery.SamsungTvDiscoveryParticipant(393)] : Declared Method java.lang.Object.activate([interface org.osgi.service.component.ComponentContext]) not found
2021-11-08 15:56:12.712 [DEBUG] [covery.SamsungTvDiscoveryParticipant] - bundle org.openhab.binding.samsungtv:3.1.0 (301)[org.openhab.binding.samsungtv.internal.discovery.SamsungTvDiscoveryParticipant(393)] : activate method [activate] not found, ignoring
2021-11-08 15:56:12.713 [DEBUG] [covery.SamsungTvDiscoveryParticipant] - bundle org.openhab.binding.samsungtv:3.1.0 (301)[org.openhab.binding.samsungtv.internal.discovery.SamsungTvDiscoveryParticipant(393)] : Set implementation object for component
2021-11-08 15:56:12.713 [DEBUG] [covery.SamsungTvDiscoveryParticipant] - bundle org.openhab.binding.samsungtv:3.1.0 (301)[org.openhab.binding.samsungtv.internal.discovery.SamsungTvDiscoveryParticipant(393)] : Changed state from satisfied to active
2021-11-08 15:56:12.771 [DEBUG] [tv.internal.handler.SamsungTvHandler] - Create a Samsung TV Handler for thing 'samsungtv:tv:12444de707'
2021-11-08 15:56:12.850 [DEBUG] [tv.internal.handler.SamsungTvHandler] - Initializing Samsung TV handler for uid 'samsungtv:tv:12444de707'
2021-11-08 15:56:12.852 [DEBUG] [tv.internal.handler.SamsungTvHandler] - Check and create missing UPnP services
2021-11-08 15:56:12.853 [DEBUG] [tv.internal.handler.SamsungTvHandler] - Device was NOT online
2021-11-08 15:56:12.860 [DEBUG] [rnal.service.RemoteControllerService] - Creating a Samsung TV RemoteController service: false
2021-11-08 15:56:12.861 [INFO ] [rnal.service.RemoteControllerService] - Using WebSocket interface
2021-11-08 15:56:12.869 [TRACE] [l.protocol.RemoteControllerWebSocket] - openConnection()
2021-11-08 15:56:12.870 [DEBUG] [l.protocol.RemoteControllerWebSocket] - RemoteControllerWebSocket start Client
2021-11-08 15:56:12.872 [TRACE] [l.protocol.RemoteControllerWebSocket] - WebSocketClient starting
2021-11-08 15:56:12.892 [TRACE] [l.protocol.RemoteControllerWebSocket] - WebSocketClient started
2021-11-08 15:56:12.894 [TRACE] [l.protocol.RemoteControllerWebSocket] - connectWebSockets()
2021-11-08 15:56:12.895 [DEBUG] [ngtv.internal.protocol.WebSocketBase] - WebSocketRemote connecting to: ws://192.168.3.39:8001/api/v2/channels/samsung.remote.control?name=b3BlbkhBQg==
2021-11-08 15:56:12.897 [TRACE] [ngtv.internal.protocol.WebSocketBase] - Connecting session Future: java.util.concurrent.CompletableFuture@84804a[Not completed, 1 dependents]
2021-11-08 15:56:12.899 [DEBUG] [ngtv.internal.protocol.WebSocketBase] - WebSocketArt connecting to: ws://192.168.3.39:8001/api/v2/channels/com.samsung.art-app?name=b3BlbkhBQg==
2021-11-08 15:56:12.901 [TRACE] [ngtv.internal.protocol.WebSocketBase] - Connecting session Future: java.util.concurrent.CompletableFuture@1319b9[Not completed, 1 dependents]
2021-11-08 15:56:12.902 [DEBUG] [ngtv.internal.protocol.WebSocketBase] - WebSocketV2 connecting to: ws://192.168.3.39:8001/api/v2?name=b3BlbkhBQg==
2021-11-08 15:56:12.904 [TRACE] [ngtv.internal.protocol.WebSocketBase] - Connecting session Future: java.util.concurrent.CompletableFuture@1ca8b3b[Not completed, 1 dependents]
2021-11-08 15:56:12.905 [DEBUG] [tv.internal.handler.SamsungTvHandler] - Start refresh task, interval=1000
2021-11-08 15:56:12.907 [DEBUG] [rnal.service.RemoteControllerService] - getSupportedChannelNames: [keyCode, volume, mute, power, channel, url, sourceApp, artMode]
2021-11-08 15:56:12.919 [DEBUG] [ngtv.internal.protocol.WebSocketBase] - WebSocketArt connection established: 192.168.3.39
2021-11-08 15:56:13.011 [TRACE] [ngtv.internal.protocol.WebSocketBase] - WebSocketArt: onWebSocketText: {"event":"ms.channel.connect","data":{"id":"04185340-40a4-11ec-8bff-772240083197","clients":[{"id":"04185340-40a4-11ec-8bff-772240083197","connectTime":1636383372917,"attributes":{"name":"b3BlbkhBQg=="},"deviceName":"b3BlbkhBQg==","isHost":false}]}}
2021-11-08 15:56:13.013 [DEBUG] [ungtv.internal.protocol.WebSocketArt] - Art channel connected
2021-11-08 15:56:13.014 [DEBUG] [ngtv.internal.protocol.WebSocketBase] - WebSocketRemote connection established: 192.168.3.39
2021-11-08 15:56:13.016 [TRACE] [ngtv.internal.protocol.WebSocketBase] - WebSocketRemote: onWebSocketText: {"event":"ms.channel.connect","data":{"id":"042328b0-40a4-11ec-8bff-772240083197","clients":[{"id":"042328b0-40a4-11ec-8bff-772240083197","connectTime":1636383372987,"attributes":{"name":"b3BlbkhBQg=="},"deviceName":"b3BlbkhBQg==","isHost":false}]}}
2021-11-08 15:56:13.019 [DEBUG] [tv.internal.protocol.WebSocketRemote] - Remote channel connected. Token = null
2021-11-08 15:56:13.021 [TRACE] [ngtv.internal.protocol.WebSocketBase] - WebSocketRemote: sendCommand: {"method":"ms.channel.emit","params":{"event":"ed.installedApp.get","to":"host"}}
2021-11-08 15:56:13.028 [TRACE] [ngtv.internal.protocol.WebSocketBase] - WebSocketRemote: onWebSocketText: {"event":"ms.error","data":{"message":"unable to handle message : Cannot read property 'session' of null"}}
2021-11-08 15:56:13.030 [DEBUG] [tv.internal.protocol.WebSocketRemote] - WebSocketRemote Unknown event: {"event":"ms.error","data":{"message":"unable to handle message : Cannot read property 'session' of null"}}
2021-11-08 15:56:13.908 [DEBUG] [rnal.service.RemoteControllerService] - getSupportedChannelNames: [keyCode, volume, mute, power, channel, url, sourceApp, artMode]
2021-11-08 15:56:14.912 [DEBUG] [rnal.service.RemoteControllerService] - getSupportedChannelNames: [keyCode, volume, mute, power, channel, url, sourceApp, artMode]
2021-11-08 15:56:15.914 [DEBUG] [rnal.service.RemoteControllerService] - getSupportedChannelNames: [keyCode, volume, mute, power, channel, url, sourceApp, artMode]
2021-11-08 15:56:16.916 [DEBUG] [rnal.service.RemoteControllerService] - getSupportedChannelNames: [keyCode, volume, mute, power, channel, url, sourceApp, artMode]
2021-11-08 15:56:17.918 [DEBUG] [rnal.service.RemoteControllerService] - getSupportedChannelNames: [keyCode, volume, mute, power, channel, url, sourceApp, artMode]
2021-11-08 15:56:18.919 [DEBUG] [rnal.service.RemoteControllerService] - getSupportedChannelNames: [keyCode, volume, mute, power, channel, url, sourceApp, artMode]
2021-11-08 15:56:19.921 [DEBUG] [rnal.service.RemoteControllerService] - getSupportedChannelNames: [keyCode, volume, mute, power, channel, url, sourceApp, artMode]
2021-11-08 15:56:20.922 [DEBUG] [rnal.service.RemoteControllerService] - getSupportedChannelNames: [keyCode, volume, mute, power, channel, url, sourceApp, artMode]
2021-11-08 15:56:21.924 [DEBUG] [rnal.service.RemoteControllerService] - getSupportedChannelNames: [keyCode, volume, mute, power, channel, url, sourceApp, artMode]
2021-11-08 15:56:22.926 [DEBUG] [rnal.service.RemoteControllerService] - getSupportedChannelNames: [keyCode, volume, mute, power, channel, url, sourceApp, artMode]

@Mark_Webster

Yes, my test binding should send WOL packets similar to the original binding. I did rework the logic, as i found the original binding did not always work.

The test binding now sends 10 WOL packets, 100ms apart (takes 1 second), then waits to see if the TV wakes up, it repeats this every 10 seconds for a total of 30 seconds, before giving up. You should see this in the log if you have it set to TRACE.

Here is my log output of WOL events:

2021-11-08 09:57:01.777 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.100.73: Received channel: samsungtv:tv:family_room:artMode, command: ON
2021-11-08 09:57:01.778 [INFO ] [tv.internal.handler.SamsungTvHandler] - 192.168.100.73: Send WOL packet to 10:2b:41:01:6d:27
2021-11-08 09:57:01.778 [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-08 09:57:01.879 [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-08 09:57:01.979 [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-08 09:57:02.079 [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-08 09:57:02.179 [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-08 09:57:02.279 [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-08 09:57:02.379 [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-08 09:57:02.479 [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-08 09:57:02.579 [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-08 09:57:02.679 [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-08 09:57:04.442 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.100.73: remoteDeviceAdded: MediaRenderer, http://192.168.100.73:9197/dmr, upnpUDN=ea645e34_d3dd_4b9b_a246_e2947f8973d6

I am still working on the test binding, just adding launching of apps support for >2020 TV’s right now. I will post a new binding when I have this working properly.

NOTE: I have found that WOL does not work if you have a soundbar connected to the ARC HDMI and you are using wired ethernet. Also, you have to enable the feature on the TV.

@FranzS

The getSupportedChannelNames is the polling job, it polls every x seconds (which you can configure) 1 second is the default, so yes, it will run forever.

What is the output of http://192.168.3.39:8001/api/v2/ (you can enter this in a web browser).

There is something odd as well, as the WebSocketArt channel connects, but Frame TV (with art Channel) weren’t launched until 2017, and the websocket interface wasn’t launched until 2016.

You should try my test binding posted earlier to see if it works better, it tries to auto discover the TV settings.

This does not seem to be a Tizen TV though, so you should use the legacy interface on port 55000, as the websocket interface may not work correctly (it’s sort of assumed that websocket TV’s are Tizen OS). The "ed.installedApp.get" command is a Tizen command to get installed apps, which won’t work on your TV.

You may have to find the correct port on your TV, 55000 is the default, but it might be different on your TV. You won’t be able to turn the TV on, but you can turn it off, and get basic controls, including the KeyCode channel (which is the most useful).

These are the common Samsung TV legacy ports:
1515, 7001, 15500, and 55000

Hey Nicholas,
thanks for the fast support here.
This is the output

http://192.168.3.39:8001/api/v2
{
“status”: 404,
“message”: “Not Found”,
“code”: 404
}

image

When I try it with HTTPs the output is the same.

image

I’ll take a look on the test binding :slight_smile:

you forgot “/” in the end :slight_smile:
Correct is: http://192.168.3.39:8001/api/v2/

cheers