[External integration] Samsung Smart TV

Hello everyone,

I just published an external integration to control Samsung TVs (Tizen, 2016 models and later) from Gladys, entirely locally: no Samsung account, nothing going through the cloud. It should be available in the store within 1 hour.

:backhand_index_pointing_right: GitHub - cicoub13/gladys-samsung-tv: Gladys Assistant integration to control Samsung Smart TVs (Tizen) over the local network: power, volume, mute and input source. · GitHub

What it exposes

  • Power — turn off and wake-on-LAN
  • Volume — a real 0-100% slider, with the level read from the TV
  • Volume + / − and Mute
  • Source — TV, HDMI, and installed apps when the TV declares them

The TV is found automatically: a scan from the Discovery tab and it appears under its name.

Technical

The technical choice that surprised me

I thought everything would go through the remote control’s WebSocket, like Home Assistant does. Problem: this channel only carries key presses. It can send « volume + Â», but it cannot set or read a level. Impossible to have a reliable volume slider with this.

The solution was elsewhere: these TVs expose a MediaRenderer UPnP whose RenderingControl service responds
 without any authentication. Absolute volume and mute in read and write, without pairing.

So the integration combines three channels, each for what they do best: the TV’s REST API for the on/off state, UPnP for volume and mute, and the WebSocket only for key presses — the only one that requires screen authorization, once and for all.

Two settings to know on the TV side

  1. At the first command, the TV displays an authorization request: accept it on screen, it only happens once.
  2. For wake-up, you need to enable network wake-up (Settings → General → Network → Expert Settings → Enable with mobile). On Wi-Fi, the TV completely shuts down its network interface when idle and no packet can reach it. On Ethernet it’s reliable.

Feedback welcome

Tested on a UE55AU7025KXXC. Other Tizen models should work, but I’m open to feedback — especially on the list of apps, which my 2021 model refuses to communicate (only TV and HDMI appear, which remains usable).

I just installed this integration, my Samsung UE55JU6800 TV is well discovered, no authorization requested at the start, and unfortunately nothing works!


If there’s no authorization, no changes will work. Can you send me the logs from the Logs tab?

[2026-09-28T16:59:58.702Z] [INFO] Starting the Samsung Smart TV integration...
[2026-09-28T16:59:58.844Z] [INFO] [gladys-sdk] connected to Gladys (http://172.30.0.1:80)
[2026-09-28T17:14:21.272Z] [INFO] onScanRequest -> scanning the network
[2026-09-28T17:14:26.288Z] [INFO] [discovery] SSDP: 2 answers, 2 distinct hosts to identify
[2026-09-28T17:14:28.292Z] [INFO] [discovery] 1 Samsung TV(s) identified
[2026-09-28T17:14:28.296Z] [INFO] [samsung:remote] No pairing token for 192.168.1.17: the TV will ask to authorize "Gladys"
[2026-09-28T17:15:03.225Z] [INFO] onConfigUpdated -> new configuration received
[2026-09-28T17:18:31.517Z] [INFO] onSetValue <- ext:ext-cicoub13-gladys-samsung-tv:tv:uuid:16ff9aea-547a-4c53-a0e2-dd0240a7f1f7:volume-up = 1
[2026-09-28T17:18:32.427Z] [INFO] onSetValue <- ext:ext-cicoub13-gladys-samsung-tv:tv:uuid:16ff9aea-547a-4c53-a0e2-dd0240a7f1f7:volume-up = 1
[2026-09-28T17:18:32.964Z] [INFO] onSetValue <- ext:ext-cicoub13-gladys-samsung-tv:tv:uuid:16ff9aea-547a-4c53-a0e2-dd0240a7f1f7:volume-up = 1
[2026-09-28T17:18:35.785Z] [INFO] onSetValue <- ext:ext-cicoub13-gladys-samsung-tv:tv:uuid:16ff9aea-547a-4c53-a0e2-dd0240a7f1f7:mute = 1
[2026-09-28T17:18:43.367Z] [INFO] onSetValue <- ext:ext-cicoub13-gladys-samsung-tv:tv:uuid:16ff9aea-547a-4c53-a0e2-dd0240a7f1f7:mute = 1
[2026-09-28T17:18:58.980Z] [INFO] onSetValue <- ext:ext-cicoub13-gladys-samsung-tv:tv:uuid:16ff9aea-547a-4c53-a0e2-dd0240a7f1f7:volume = 27
[2026-09-28T17:18:59.535Z] [INFO] onSetValue <- ext:ext-cicoub13-gladys-samsung-tv:tv:uuid:16ff9aea-547a-4c53-a0e2-dd0240a7f1f7:volume = 22
[2026-09-28T17:19:00.033Z] [INFO] onSetValue <- ext:ext-cicoub13-gladys-samsung-tv:tv:uuid:16ff9aea-547a-4c53-a0e2-dd0240a7f1f7:volume = 13
[2026-09-28T17:19:02.653Z] [INFO] onSetValue <- ext:ext-cicoub13-gladys-samsung-tv:tv:uuid:16ff9aea-547a-4c53-a0e2-dd0240a7f1f7:volume = 91
[2026-09-28T17:19:02.888Z] [INFO] onSetValue <- ext:ext-cicoub13-gladys-samsung-tv:tv:uuid:16ff9aea-547a-4c53-a0e2-dd0240a7f1f7:volume = 90
[2026-09-28T17:19:05.445Z] [INFO] onSetValue <- ext:ext-cicoub13-gladys-samsung-tv:tv:uuid:16ff9aea-547a-4c53-a0e2-dd0240a7f1f7:volume = 75
[2026-09-28T17:19:14.709Z] [INFO] onSetValue <- ext:ext-cicoub13-gladys-samsung-tv:tv:uuid:16ff9aea-547a-4c53-a0e2-dd0240a7f1f7:volume = 55
[2026-09-28T17:19:21.747Z] [INFO] onSetValue <- ext:ext-cicoub13-gladys-samsung-tv:tv:uuid:16ff9aea-547a-4c53-a0e2-dd0240a7f1f7:volume-down = 1
[2026-09-28T17:19:23.009Z] [INFO] onSetValue <- ext:ext-cicoub13-gladys-samsung-tv:tv:uuid:16ff9aea-547a-4c53-a0e2-dd0240a7f1f7:volume-down = 1
[2026-09-28T17:19:24.087Z] [INFO] onSetValue <- ext:ext-cicoub13-gladys-samsung-tv:tv:uuid:16ff9aea-547a-4c53-a0e2-dd0240a7f1f7:volume-down = 1
[2026-09-28T17:19:24.745Z] [INFO] onSetValue <- ext:ext-cicoub13-gladys-samsung-tv:tv:uuid:16ff9aea-547a-4c53-a0e2-dd0240a7f1f7:volume-down = 1
[2026-09-28T17:19:25.238Z] [INFO] onSetValue <- ext:ext-cicoub13-gladys-samsung-tv:tv:uuid:16ff9aea-547a-4c53-a0e2-dd0240a7f1f7:volume-down = 1
[2026-09-28T17:19:27.063Z] [INFO] onSetValue <- ext:ext-cicoub13-gladys-samsung-tv:tv:uuid:16ff9aea-547a-4c53-a0e2-dd0240a7f1f7:mute = 1
[2026-09-28T17:19:30.658Z] [INFO] onSetValue <- ext:ext-cicoub13-gladys-samsung-tv:tv:uuid:16ff9aea-547a-4c53-a0e2-dd0240a7f1f7:power = 0
[2026-09-28T17:19:32.191Z] [INFO] onSetValue <- ext:ext-cicoub13-gladys-samsung-tv:tv:uuid:16ff9aea-547a-4c53-a0e2-dd0240a7f1f7:power = 1
[2026-09-28T17:19:32.192Z] [INFO] [television] Wake-on-LAN -> 78:bd:bc:f4:c4:e8
[2026-09-28T17:19:41.709Z] [INFO] onSetValue <- ext:ext-cicoub13-gladys-samsung-tv:tv:uuid:16ff9aea-547a-4c53-a0e2-dd0240a7f1f7:power = 0
[2026-09-28T17:19:41.710Z] [INFO] [samsung:remote] No pairing token for 192.168.1.17: the TV will ask to authorize "Gladys"
[2026-09-28T17:19:44.965Z] [INFO] onSetValue <- ext:ext-cicoub13-gladys-samsung-tv:tv:uuid:16ff9aea-547a-4c53-a0e2-dd0240a7f1f7:source = key:KEY_TV
[2026-09-28T17:19:44.966Z] [INFO] [samsung:remote] No pairing token for 192.168.1.17: the TV will ask to authorize "Gladys"
[2026-09-28T17:19:46.954Z] [INFO] onSetValue <- ext:ext-cicoub13-gladys-samsung-tv:tv:uuid:16ff9aea-547a-4c53-a0e2-dd0240a7f1f7:source = key:KEY_HDMI
[2026-09-28T17:21:23.583Z] [INFO] onSetValue <- ext:ext-cicoub13-gladys-samsung-tv:tv:uuid:16ff9aea-547a-4c53-a0e2-dd0240a7f1f7:mute = 1
[2026-09-28T17:21:25.731Z] [INFO] onSetValue <- ext:ext-cicoub13-gladys-samsung-tv:tv:uuid:16ff9aea-547a-4c53-a0e2-dd0240a7f1f7:volume-up = 1
[2026-09-28T17:21:27.442Z] [INFO] onSetValue <- ext:ext-cicoub13-gladys-samsung-tv:tv:uuid:16ff9aea-547a-4c53-a0e2-dd0240a7f1f7:volume-down = 1
[2026-09-28T17:21:30.179Z] [INFO] onSetValue <- ext:ext-cicoub13-gladys-samsung-tv:tv:uuid:16ff9aea-547a-4c53-a0e2-dd0240a7f1f7:volume = 69
[2026-09-28T17:23:02.930Z] [INFO] onSetValue <- ext:ext-cicoub13-gladys-samsung-tv:tv:uuid:16ff9aea-547a-4c53-a0e2-dd0240a7f1f7:mute = 1
[2026-09-28T17:23:04.898Z] [INFO] onSetValue <- ext:ext-cicoub13-gladys-samsung-tv:tv:uuid:16ff9aea-547a-4c53-a0e2-dd0240a7f1f7:volume-up = 1
[2026-09-28T17:23:10.572Z] [INFO] onSetValue <- ext:ext-cicoub13-gladys-samsung-tv:tv:uuid:16ff9aea-547a-4c53-a0e2-dd0240a7f1f7:power = 1
[2026-09-28T17:23:10.572Z] [INFO] [television] Wake-on-LAN -> 78:bd:bc:f4:c4:e8
[2026-09-28T17:24:03.567Z] [INFO] onSetValue <- ext:ext-cicoub13-gladys-samsung-tv:tv:uuid:16ff9aea-547a-4c53-a0e2-dd0240a7f1f7:mute = 1
[2026-09-28T17:24:07.778Z] [INFO] onSetValue <- ext:ext-cicoub13-gladys-samsung-tv:tv:uuid:16ff9aea-547a-4c53-a0e2-dd0240a7f1f7:mute = 1
[2026-09-28T17:24:12.642Z] [INFO] onSetValue <- ext:ext-cicoub13-gladys-samsung-tv:tv:uuid:16ff9aea-547a-4c53-a0e2-dd0240a7f1f7:volume-up = 1
[2026-09-28T17:24:16.912Z] [INFO] onSetValue <- ext:ext-cicoub13-gladys-samsung-tv:tv:uuid:16ff9aea-547a-4c53-a0e2-dd0240a7f1f7:volume-up = 1
[2026-09-28T17:24:17.716Z] [INFO] onSetValue <- ext:ext-cicoub13-gladys-samsung-tv:tv:uuid:16ff9aea-547a-4c53-a0e2-dd0240a7f1f7:volume-up = 1
[2026-09-28T17:24:20.329Z] [INFO] onSetValue <- ext:ext-cicoub13-gladys-samsung-tv:tv:uuid:16ff9aea-547a-4c53-a0e2-dd0240a7f1f7:volume = 70
[2026-09-28T17:24:29.172Z] [INFO] onSetValue <- ext:ext-cicoub13-gladys-samsung-tv:tv:uuid:16ff9aea-547a-4c53-a0e2-dd0240a7f1f7:power = 1
[2026-09-28T17:24:29.172Z] [INFO] [television] Wake-on-LAN -> 78:bd:bc:f4:c4:e8
[2026-09-28T17:29:58.311Z] [INFO] onSetValue <- ext:ext-cicoub13-gladys-samsung-tv:tv:uuid:16ff9aea-547a-4c53-a0e2-dd0240a7f1f7:power = 1
[2026-09-28T17:29:58.311Z] [INFO] [television] Wake-on-LAN -> 78:bd:bc:f4:c4:e8
[2026-09-28T17:30:14.295Z] [INFO] onSetValue <- ext:ext-cicoub13-gladys-samsung-tv:tv:uuid:16ff9aea-547a-4c53-a0e2-dd0240a7f1f7:mute = 1
[2026-09-28T17:43:36.828Z] [INFO] onSetValue <- ext:ext-cicoub13-gladys-samsung-tv:tv:uuid:16ff9aea-547a-4c53-a0e2-dd0240a7f1f7:mute = 1
[2026-09-28T17:43:43.447Z] [INFO] onSetValue <- ext:ext-cicoub13-gladys-samsung-tv:tv:uuid:16ff9aea-547a-4c53-a0e2-dd0240a7f1f7:power = 1
[2026-09-28T17:43:43.447Z] [INFO] [television] Wake-on-LAN -> 78:bd:bc:f4:c4:e8
[2026-09-28T17:43:47.272Z] [INFO] onSetValue <- ext:ext-cicoub13-gladys-samsung-tv:tv:uuid:16ff9aea-547a-4c53-a0e2-dd0240a7f1f7:power = 0
[2026-09-28T18:13:17.349Z] [WARN] [gladys-sdk] connection to Gladys lost (close code 1006)
[2026-09-28T18:13:17.350Z] [WARN] [gladys-sdk] not connected to Gladys (ws://172.30.0.1:80), retrying in 1000 ms (attempt 1)
[2026-09-28T18:13:18.354Z] [ERROR] [gladys-sdk] websocket error on ws://172.30.0.1:80: connect ECONNREFUSED 172.30.0.1:80
[2026-09-28T18:13:18.355Z] [WARN] [gladys-sdk] not connected to Gladys (ws://172.30.0.1:80), retrying in 2000 ms (attempt 2)
[2026-09-28T18:13:20.355Z] [ERROR] [gladys-sdk] websocket error on ws://172.30.0.1:80: connect ECONNREFUSED 172.30.0.1:80
[2026-09-28T18:13:20.355Z] [WARN] [gladys-sdk] not connected to Gladys (ws://172.30.0.1:80), retrying in 4000 ms (attempt 3)
[2026-09-28T18:13:24.361Z] [ERROR] [gladys-sdk] websocket error on ws://172.30.0.1:80: connect ECONNREFUSED 172.30.0.1:80
[2026-09-28T18:13:24.361Z] [WARN] [gladys-sdk] not connected to Gladys (ws://172.30.0.1:80), retrying in 8000 ms (attempt 4)
[2026-09-28T18:13:31.706Z] [INFO] Received SIGTERM -> graceful shutdown
[2026-09-28T18:13:32.091Z] [INFO] Starting the Samsung Smart TV integration...
[2026-09-28T18:13:32.402Z] [INFO] [gladys-sdk] connected to Gladys (http://172.30.0.1:80)
[2026-09-28T18:23:35.508Z] [INFO] onSetValue <- ext:ext-cicoub13-gladys-samsung-tv:tv:uuid:16ff9aea-547a-4c53-a0e2-dd0240a7f1f7:mute = 1

Thanks for the logs and screenshots.

I found the main cause: your TV is a UE55JU6800, and the “J” means it dates back to 2015. The integration targets Tizen models from 2016 onwards. The H and J series (2014-2015) use a different protocol for the remote control, an encrypted protocol with pairing via PIN code, which the integration does not handle. That’s why no authorization request appears: the TV accepts the connection but ignores the sent keys. Therefore, anything that goes through the keys cannot work for you: volume + / −, source, and power off.

On the other hand, part of it works: your connection test correctly reads the volume (9%), so the TV responds over its REST API and via UPnP. The volume slider and mute pass through this UPnP channel, so they should work.

The logs show no errors, and this is a flaw in the integration: when a command fails, the error is not written to the log. I will fix this, and it will help everyone for future diagnostics.

Ok, my TV is too old!
And the volume slider and mute still don’t work

If you want to propose a Pull Request to add compatibility for old TVs, you are welcome. It’s easier with the hardware.

« propose a PR Â»: does that mean making a feature request?

PRs are basically modified code on GitHub, so you would propose new features directly in the integration code.

yes, but unfortunately I’m not there yet! I can only be a humble tester