Integración externa - Roku

¡Hola a todos! :waving_hand:

Segundo de la serie norteamericana :united_states:: Roku, el número 1 del streaming en los Estados Unidos, en caja, en llave o en televisor « Roku TV ». Como para Android TV, todo se hace localmente, a través de la API oficial de Roku, sin cuenta ni cloud.

Qué hace

  • Descubrimiento automático de los Roku de la red en la pestaña Descubrimiento, con una entrada de IP de respaldo. Cada Roku es reconocido por su número de serie, incluso si cambia de dirección.
  • Roku TV: encendido/apagado, selección de entrada (HDMI o antena), volumen, silencio y canales.
  • Todos los Roku: la aplicación en pantalla (mostrada y modificable), el estado de reproducción, los botones del control remoto.
  • Tres widgets: un control remoto, la reproducción en curso con el icono de la aplicación, y accesos directos de aplicaciones con sus iconos.
  • Escenas: un disparador « aplicación cambiada », y acciones « abrir una aplicación » y « presionar un botón ».

Lo divertido

Netflix se lanza en la TV de la sala → luces tenues :popcorn:
22:30 en semana → la Roku TV se apaga sola :sleeping_face:

Instalación

:warning: Gladys 5.1 mínimo.

  1. En la Roku: Configuración → Sistema → Configuración del sistema avanzada → Control por aplicaciones móviles → Activado. En una Roku TV, también active el inicio rápido de la TV.
  2. En Gladys: Integraciones → Roku → Instalar, luego la pestaña Descubrimiento para agregar sus dispositivos.

Pequeñas reservas honestas: Roku no da un nivel de volumen, solo botones + / −, y una caja Roku no se apaga realmente (su estado solo se muestra).

:warning: Desarrollado sin el hardware, no tengo un Roku: las pruebas se basan en respuestas reales de dispositivos, pero nada supera una prueba en su casa. @ruegerth, como prometido, es el momento :wink:

Como los anteriores, se desarrolló con Claude Code :robot:.

Depósito: GitHub - guim31/gladys-roku: Roku TVs and streaming players, local control (ECP) for Gladys Assistant · GitHub

Díganme qué falta :folded_hands:

¡Muy rápido … trabajo super!
Aquí está mi prueba:

  1. Reinstalación de Gladys v5.1.4

con ubicación Quebec :wink:

  1. En el Roku Express 4k Stick, se han aplicado las configuraciones según lo indicado (Configuración - Sistema - Configuración avanzada del sistema - Control mediante aplicaciones móviles - Activado)

  2. En Gladys, para mayor rapidez y simplificación, se han desactivado varios servicios:

  1. Se ha creado un panel de control, se ha añadido hora y sol:

  1. Se ha instalado la integración Roku, que abre por defecto la primera vez la pestaña Configuración:

La primera visualización:

Allí se ha introducido la IP local del Stick Roku y se ha realizado una prueba … con éxito:

En el panel de control de inicio, se han activado sucesivamente todos los widgets disponibles:

  • Remote

  • Reproducción

  • App

Aquí está el primer punto problemático. No se muestran todas las aplicaciones instaladas en el Stick Roku (es decir, desde YouTube hasta ARD hasta Arte). Por ejemplo, faltan Disney, KiKa, RTL y otras :frowning:

El panel de control con los widgets de Roku:

PRUEBAS INICIALES:

Puedo seleccionar en las aplicaciones de Roku las aplicaciones que se muestran allí, es decir, actualmente YouTube, ZDF, ARD y Arte. Al seleccionarlas, estas se muestran en el widget ROKU PLAYBACK y también en el TV !!!, pero

Los botones PLAY/PAUSE y REPLAY no funcionan. Puedo hacer clic en ellos, pero no se observa ninguna reacción en el TV.

PRUEBA CONTRARIA:

Selección con el mando a distancia directamente en el Stick, allí se ha seleccionado ARTE. Los widgets reaccionan a esto y muestran:

Si luego hago clic en Home en el widget Remote, ocurre lo siguiente:

Aquí está el registro de depuración correspondiente con los pasos mencionados anteriormente:

[2026-10-10T07:51:05.087Z] [DEBUG] [roku] Roku Express 4K (192.168.0.224): Roku Roku Express 4K [3940EU2], box, Roku OS 15.3.4, power-mode=PowerOn
[2026-10-10T07:51:05.108Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/active-app -> HTTP 200 (20 ms)
[2026-10-10T07:51:05.123Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/media-player -> HTTP 200 (9 ms)
[2026-10-10T07:51:05.128Z] [DEBUG] [roku] Roku Express 4K: app=562859 (Roku Dynamic Menu), player=close
[2026-10-10T07:51:15.078Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/device-info -> HTTP 200 (30 ms)
[2026-10-10T07:51:15.090Z] [DEBUG] [roku] Roku Express 4K (192.168.0.224): Roku Roku Express 4K [3940EU2], box, Roku OS 15.3.4, power-mode=PowerOn
[2026-10-10T07:51:15.112Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/active-app -> HTTP 200 (22 ms)
[2026-10-10T07:51:15.127Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/media-player -> HTTP 200 (9 ms)
[2026-10-10T07:51:15.132Z] [DEBUG] [roku] Roku Express 4K: app=562859 (Roku Dynamic Menu), player=close
[2026-10-10T07:51:15.144Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/apps -> HTTP 200 (12 ms)
[2026-10-10T07:51:25.084Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/device-info -> HTTP 200 (36 ms)
[2026-10-10T07:51:25.091Z] [DEBUG] [roku] Roku Express 4K (192.168.0.224): Roku Roku Express 4K [3940EU2], box, Roku OS 15.3.4, power-mode=PowerOn
[2026-10-10T07:51:25.113Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/active-app -> HTTP 200 (22 ms)
[2026-10-10T07:51:25.131Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/media-player -> HTTP 200 (10 ms)
[2026-10-10T07:51:25.135Z] [DEBUG] [roku] Roku Express 4K: app=562859 (Roku Dynamic Menu), player=close
[2026-10-10T07:51:35.086Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/device-info -> HTTP 200 (36 ms)
[2026-10-10T07:51:35.097Z] [DEBUG] [roku] Roku Express 4K (192.168.0.224): Roku Roku Express 4K [3940EU2], box, Roku OS 15.3.4, power-mode=PowerOn
[2026-10-10T07:51:35.119Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/active-app -> HTTP 200 (22 ms)
[2026-10-10T07:51:35.139Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/media-player -> HTTP 200 (10 ms)
[2026-10-10T07:51:35.145Z] [DEBUG] [roku] Roku Express 4K: app=562859 (Roku Dynamic Menu), player=close
[2026-10-10T07:51:45.081Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/device-info -> HTTP 200 (31 ms)
[2026-10-10T07:51:45.102Z] [DEBUG] [roku] Roku Express 4K (192.168.0.224): Roku Roku Express 4K [3940EU2], box, Roku OS 15.3.4, power-mode=PowerOn
[2026-10-10T07:51:45.120Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/active-app -> HTTP 200 (18 ms)
[2026-10-10T07:51:45.141Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/media-player -> HTTP 200 (13 ms)
[2026-10-10T07:51:45.145Z] [DEBUG] [roku] Roku Express 4K: app=562859 (Roku Dynamic Menu), player=close
[2026-10-10T07:51:55.080Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/device-info -> HTTP 200 (29 ms)
[2026-10-10T07:51:55.088Z] [DEBUG] [roku] Roku Express 4K (192.168.0.224): Roku Roku Express 4K [3940EU2], box, Roku OS 15.3.4, power-mode=PowerOn
[2026-10-10T07:51:55.108Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/active-app -> HTTP 200 (20 ms)
[2026-10-10T07:51:55.129Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/media-player -> HTTP 200 (14 ms)
[2026-10-10T07:51:55.135Z] [DEBUG] [roku] Roku Express 4K: app=562859 (Roku Dynamic Menu), player=close
[2026-10-10T07:52:05.076Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/device-info -> HTTP 200 (25 ms)
[2026-10-10T07:52:05.083Z] [DEBUG] [roku] Roku Express 4K (192.168.0.224): Roku Roku Express 4K [3940EU2], box, Roku OS 15.3.4, power-mode=PowerOn
[2026-10-10T07:52:05.106Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/active-app -> HTTP 200 (22 ms)
[2026-10-10T07:52:05.126Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/media-player -> HTTP 200 (14 ms)
[2026-10-10T07:52:05.133Z] [DEBUG] [roku] Roku Express 4K: app=562859 (Roku Dynamic Menu), player=close
[2026-10-10T07:52:15.087Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/device-info -> HTTP 200 (35 ms)
[2026-10-10T07:52:15.094Z] [DEBUG] [roku] Roku Express 4K (192.168.0.224): Roku Roku Express 4K [3940EU2], box, Roku OS 15.3.4, power-mode=PowerOn
[2026-10-10T07:52:15.117Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/active-app -> HTTP 200 (22 ms)
[2026-10-10T07:52:15.135Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/media-player -> HTTP 200 (12 ms)
[2026-10-10T07:52:15.141Z] [DEBUG] [roku] Roku Express 4K: app=562859 (Roku Dynamic Menu), player=close
[2026-10-10T07:52:25.084Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/device-info -> HTTP 200 (31 ms)
[2026-10-10T07:52:25.091Z] [DEBUG] [roku] Roku Express 4K (192.168.0.224): Roku Roku Express 4K [3940EU2], box, Roku OS 15.3.4, power-mode=PowerOn
[2026-10-10T07:52:25.111Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/active-app -> HTTP 200 (20 ms)
[2026-10-10T07:52:25.128Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/media-player -> HTTP 200 (12 ms)
[2026-10-10T07:52:25.133Z] [DEBUG] [roku] Roku Express 4K: app=562859 (Roku Dynamic Menu), player=close
[2026-10-10T07:52:25.146Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/apps -> HTTP 200 (13 ms)
[2026-10-10T07:52:35.082Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/device-info -> HTTP 200 (29 ms)
[2026-10-10T07:52:35.092Z] [DEBUG] [roku] Roku Express 4K (192.168.0.224): Roku Roku Express 4K [3940EU2], box, Roku OS 15.3.4, power-mode=PowerOn
[2026-10-10T07:52:35.114Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/active-app -> HTTP 200 (22 ms)
[2026-10-10T07:52:35.133Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/media-player -> HTTP 200 (12 ms)
[2026-10-10T07:52:35.141Z] [DEBUG] [roku] Roku Express 4K: app=562859 (Roku Dynamic Menu), player=close
[2026-10-10T07:52:45.085Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/device-info -> HTTP 200 (31 ms)
[2026-10-10T07:52:45.113Z] [DEBUG] [roku] Roku Express 4K (192.168.0.224): Roku Roku Express 4K [3940EU2], box, Roku OS 15.3.4, power-mode=PowerOn
[2026-10-10T07:52:45.137Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/active-app -> HTTP 200 (24 ms)
[2026-10-10T07:52:45.154Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/media-player -> HTTP 200 (12 ms)
[2026-10-10T07:52:45.160Z] [DEBUG] [roku] Roku Express 4K: app=562859 (Roku Dynamic Menu), player=close
[2026-10-10T07:52:55.089Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/device-info -> HTTP 200 (35 ms)
[2026-10-10T07:52:55.102Z] [DEBUG] [roku] Roku Express 4K (192.168.0.224): Roku Roku Express 4K [3940EU2], box, Roku OS 15.3.4, power-mode=PowerOn
[2026-10-10T07:52:55.126Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/active-app -> HTTP 200 (24 ms)
[2026-10-10T07:52:55.151Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/media-player -> HTTP 200 (13 ms)
[2026-10-10T07:52:55.161Z] [DEBUG] [roku] Roku Express 4K: app=737818 (Arte), player=close
[2026-10-10T07:52:55.174Z] [DEBUG] [roku] Roku Express 4K (192.168.0.224): published app=737818
[2026-10-10T07:52:55.174Z] [DEBUG] Scene event app_changed: Arte on Roku Express 4K
[2026-10-10T07:53:05.083Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/device-info -> HTTP 200 (29 ms)
[2026-10-10T07:53:05.093Z] [DEBUG] [roku] Roku Express 4K (192.168.0.224): Roku Roku Express 4K [3940EU2], box, Roku OS 15.3.4, power-mode=PowerOn
[2026-10-10T07:53:05.113Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/active-app -> HTTP 200 (19 ms)
[2026-10-10T07:53:05.127Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/media-player -> HTTP 200 (8 ms)
[2026-10-10T07:53:05.133Z] [DEBUG] [roku] Roku Express 4K: app=737818 (Arte), player=close
[2026-10-10T07:53:15.088Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/device-info -> HTTP 200 (34 ms)
[2026-10-10T07:53:15.099Z] [DEBUG] [roku] Roku Express 4K (192.168.0.224): Roku Roku Express 4K [3940EU2], box, Roku OS 15.3.4, power-mode=PowerOn
[2026-10-10T07:53:15.122Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/active-app -> HTTP 200 (23 ms)
[2026-10-10T07:53:15.138Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/media-player -> HTTP 200 (10 ms)
[2026-10-10T07:53:15.142Z] [DEBUG] [roku] Roku Express 4K: app=737818 (Arte), player=cerrar
[2026-10-10T07:53:25.082Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/device-info -> HTTP 200 (26 ms)
[2026-10-10T07:53:25.090Z] [DEBUG] [roku] Roku Express 4K (192.168.0.224): Roku Roku Express 4K [3940EU2], box, Roku OS 15.3.4, power-mode=PowerOn
[2026-10-10T07:53:25.113Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/active-app -> HTTP 200 (23 ms)
[2026-10-10T07:53:25.130Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/media-player -> HTTP 200 (12 ms)
[2026-10-10T07:53:25.138Z] [DEBUG] [roku] Roku Express 4K: app=737818 (Arte), player=cerrar
[2026-10-10T07:53:35.087Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/device-info -> HTTP 200 (31 ms)
[2026-10-10T07:53:35.093Z] [DEBUG] [roku] Roku Express 4K (192.168.0.224): Roku Roku Express 4K [3940EU2], box, Roku OS 15.3.4, power-mode=PowerOn
[2026-10-10T07:53:35.115Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/active-app -> HTTP 200 (22 ms)
[2026-10-10T07:53:35.134Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/media-player -> HTTP 200 (12 ms)
[2026-10-10T07:53:35.139Z] [DEBUG] [roku] Roku Express 4K: app=737818 (Arte), player=cerrar
[2026-10-10T07:53:45.084Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/device-info -> HTTP 200 (27 ms)
[2026-10-10T07:53:45.090Z] [DEBUG] [roku] Roku Express 4K (192.168.0.224): Roku Roku Express 4K [3940EU2], box, Roku OS 15.3.4, power-mode=PowerOn
[2026-10-10T07:53:45.115Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/active-app -> HTTP 200 (25 ms)
[2026-10-10T07:53:45.134Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/media-player -> HTTP 200 (11 ms)
[2026-10-10T07:53:45.140Z] [DEBUG] [roku] Roku Express 4K: app=737818 (Arte), player=cerrar
[2026-10-10T07:53:55.086Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/device-info -> HTTP 200 (29 ms)
[2026-10-10T07:53:55.101Z] [DEBUG] [roku] Roku Express 4K (192.168.0.224): Roku Roku Express 4K [3940EU2], box, Roku OS 15.3.4, power-mode=PowerOn
[2026-10-10T07:53:55.122Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/active-app -> HTTP 200 (21 ms)
[2026-10-10T07:53:55.139Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/media-player -> HTTP 200 (11 ms)
[2026-10-10T07:53:55.145Z] [DEBUG] [roku] Roku Express 4K: app=737818 (Arte), player=cerrar
[2026-10-10T07:54:05.085Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/device-info -> HTTP 200 (28 ms)
[2026-10-10T07:54:05.092Z] [DEBUG] [roku] Roku Express 4K (192.168.0.224): Roku Roku Express 4K [3940EU2], box, Roku OS 15.3.4, power-mode=PowerOn
[2026-10-10T07:54:05.114Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/active-app -> HTTP 200 (22 ms)
[2026-10-10T07:54:05.130Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/media-player -> HTTP 200 (10 ms)
[2026-10-10T07:54:05.137Z] [DEBUG] [roku] Roku Express 4K: app=737818 (Arte), player=cerrar
[2026-10-10T07:54:15.090Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/device-info -> HTTP 200 (32 ms)
[2026-10-10T07:54:15.097Z] [DEBUG] [roku] Roku Express 4K (192.168.0.224): Roku Roku Express 4K [3940EU2], box, Roku OS 15.3.4, power-mode=PowerOn
[2026-10-10T07:54:15.117Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/active-app -> HTTP 200 (20 ms)
[2026-10-10T07:54:15.133Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/media-player -> HTTP 200 (11 ms)
[2026-10-10T07:54:15.142Z] [DEBUG] [roku] Roku Express 4K: app=737818 (Arte), player=cerrar
[2026-10-10T07:54:25.095Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/device-info -> HTTP 200 (36 ms)
[2026-10-10T07:54:25.104Z] [DEBUG] [roku] Roku Express 4K (192.168.0.224): Roku Roku Express 4K [3940EU2], box, Roku OS 15.3.4, power-mode=PowerOn
[2026-10-10T07:54:25.127Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/active-app -> HTTP 200 (23 ms)
[2026-10-10T07:54:25.144Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/media-player -> HTTP 200 (12 ms)
[2026-10-10T07:54:25.151Z] [DEBUG] [roku] Roku Express 4K: app=737818 (Arte), player=cerrar
[2026-10-10T07:54:35.089Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/device-info -> HTTP 200 (30 ms)
[2026-10-10T07:54:35.095Z] [DEBUG] [roku] Roku Express 4K (192.168.0.224): Roku Roku Express 4K [3940EU2], box, Roku OS 15.3.4, power-mode=PowerOn
[2026-10-10T07:54:35.115Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/active-app -> HTTP 200 (20 ms)
[2026-10-10T07:54:35.130Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/media-player -> HTTP 200 (9 ms)
[2026-10-10T07:54:35.138Z] [DEBUG] [roku] Roku Express 4K: app=737818 (Arte), player=cerrar
[2026-10-10T07:54:45.087Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/device-info -> HTTP 200 (26 ms)
[2026-10-10T07:54:45.096Z] [DEBUG] [roku] Roku Express 4K (192.168.0.224): Roku Roku Express 4K [3940EU2], box, Roku OS 15.3.4, power-mode=PowerOn
[2026-10-10T07:54:45.114Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/active-app -> HTTP 200 (18 ms)
[2026-10-10T07:54:45.129Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/media-player -> HTTP 200 (9 ms)
[2026-10-10T07:54:45.135Z] [DEBUG] [roku] Roku Express 4K: app=737818 (Arte), player=cerrar
[2026-10-10T07:54:54.503Z] [DEBUG] [roku] Roku Express 4K (192.168.0.224): key Inicio
[2026-10-10T07:54:54.553Z] [DEBUG] [roku:ecp] POST 192.168.0.224/keypress/Home -> HTTP 200 (50 ms)
[2026-10-10T07:54:55.078Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/device-info -> HTTP 200 (17 ms)
[2026-10-10T07:54:55.085Z] [DEBUG] [roku] Roku Express 4K (192.168.0.224): Roku Roku Express 4K [3940EU2], box, Roku OS 15.3.4, power-mode=PowerOn
[2026-10-10T07:54:55.105Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/active-app -> HTTP 200 (20 ms)
[2026-10-10T07:54:55.110Z] [DEBUG] [roku] Roku Express 4K: app=home (Inicio), player=-
[2026-10-10T07:54:55.124Z] [DEBUG] [roku] Roku Express 4K (192.168.0.224): published app=home
[2026-10-10T07:54:55.125Z] [DEBUG] Evento de escena app_changed: Inicio en Roku Express 4K
[2026-10-10T07:54:56.069Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/device-info -> HTTP 200 (16 ms)
[2026-10-10T07:54:56.078Z] [DEBUG] [roku] Roku Express 4K (192.168.0.224): Roku Roku Express 4K [3940EU2], box, Roku OS 15.3.4, power-mode=PowerOn
[2026-10-10T07:54:56.101Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/active-app -> HTTP 200 (22 ms)
[2026-10-10T07:54:56.118Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/media-player -> HTTP 200 (11 ms)
[2026-10-10T07:54:56.124Z] [DEBUG] [roku] Roku Express 4K: app=562859 (Roku Dynamic Menu), player=cerrar
[2026-10-10T07:54:56.137Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/apps -> HTTP 200 (13 ms)
[2026-10-10T07:54:56.157Z] [DEBUG] [roku] Roku Express 4K (192.168.0.224): published app=562859
[2026-10-10T07:54:56.157Z] [DEBUG] Evento de escena app_changed: Roku Dynamic Menu en Roku Express 4K
[2026-10-10T07:55:05.088Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/device-info -> HTTP 200 (27 ms)
[2026-10-10T07:55:05.097Z] [DEBUG] [roku] Roku Express 4K (192.168.0.224): Roku Roku Express 4K [3940EU2], box, Roku OS 15.3.4, power-mode=PowerOn
[2026-10-10T07:55:05.115Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/active-app -> HTTP 200 (18 ms)
[2026-10-10T07:55:05.134Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/media-player -> HTTP 200 (12 ms)
[2026-10-10T07:55:05.140Z] [DEBUG] [roku] Roku Express 4K: app=562859 (Roku Dynamic Menu), player=cerrar
[2026-10-10T07:55:15.095Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/device-info -> HTTP 200 (34 ms)
[2026-10-10T07:55:15.103Z] [DEBUG] [roku] Roku Express 4K (192.168.0.224): Roku Roku Express 4K [3940EU2], box, Roku OS 15.3.4, power-mode=PowerOn
[2026-10-10T07:55:15.124Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/active-app -> HTTP 200 (21 ms)
[2026-10-10T07:55:15.143Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/media-player -> HTTP 200 (11 ms)
[2026-10-10T07:55:15.149Z] [DEBUG] [roku] Roku Express 4K: app=562859 (Roku Dynamic Menu), player=cerrar
[2026-10-10T07:55:25.096Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/device-info -> HTTP 200 (34 ms)
[2026-10-10T07:55:25.102Z] [DEBUG] [roku] Roku Express 4K (192.168.0.224): Roku Roku Express 4K [3940EU2], box, Roku OS 15.3.4, power-mode=PowerOn, modo-de-alimentación=Encendido
[2026-10-10T07:55:25.134Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/active-app -> HTTP 200 (32 ms)
[2026-10-10T07:55:25.156Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/media-player -> HTTP 200 (15 ms)
[2026-10-10T07:55:25.160Z] [DEBUG] [roku] Roku Express 4K: app=562859 (Roku Dynamic Menu), player=close
[2026-10-10T07:55:35.094Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/device-info -> HTTP 200 (32 ms)
[2026-10-10T07:55:35.102Z] [DEBUG] [roku] Roku Express 4K (192.168.0.224): Roku Roku Express 4K [3940EU2], box, Roku OS 15.3.4, modo-de-alimentación=Encendido
[2026-10-10T07:55:35.117Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/active-app -> HTTP 200 (15 ms)
[2026-10-10T07:55:35.136Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/media-player -> HTTP 200 (14 ms)
[2026-10-10T07:55:35.145Z] [DEBUG] [roku] Roku Express 4K: app=562859 (Roku Dynamic Menu), player=close
[2026-10-10T07:55:45.090Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/device-info -> HTTP 200 (27 ms)
[2026-10-10T07:55:45.098Z] [DEBUG] [roku] Roku Express 4K (192.168.0.224): Roku Roku Express 4K [3940EU2], box, Roku OS 15.3.4, modo-de-alimentación=Encendido
[2026-10-10T07:55:45.118Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/active-app -> HTTP 200 (20 ms)
[2026-10-10T07:55:45.140Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/media-player -> HTTP 200 (16 ms)
[2026-10-10T07:55:45.144Z] [DEBUG] [roku] Roku Express 4K: app=562859 (Roku Dynamic Menu), player=close
[2026-10-10T07:55:55.092Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/device-info -> HTTP 200 (29 ms)
[2026-10-10T07:55:55.098Z] [DEBUG] [roku] Roku Express 4K (192.168.0.224): Roku Roku Express 4K [3940EU2], box, Roku OS 15.3.4, modo-de-alimentación=Encendido
[2026-10-10T07:55:55.120Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/active-app -> HTTP 200 (22 ms)
[2026-10-10T07:55:55.136Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/media-player -> HTTP 200 (10 ms)
[2026-10-10T07:55:55.143Z] [DEBUG] [roku] Roku Express 4K: app=562859 (Roku Dynamic Menu), player=close
[2026-10-10T07:56:05.090Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/device-info -> HTTP 200 (27 ms)
[2026-10-10T07:56:05.099Z] [DEBUG] [roku] Roku Express 4K (192.168.0.224): Roku Roku Express 4K [3940EU2], box, Roku OS 15.3.4, modo-de-alimentación=Encendido
[2026-10-10T07:56:05.120Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/active-app -> HTTP 200 (21 ms)
[2026-10-10T07:56:05.138Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/media-player -> HTTP 200 (13 ms)
[2026-10-10T07:56:05.145Z] [DEBUG] [roku] Roku Express 4K: app=562859 (Roku Dynamic Menu), player=close
[2026-10-10T07:56:05.160Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/apps -> HTTP 200 (14 ms)
[2026-10-10T07:56:15.095Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/device-info -> HTTP 200 (31 ms)
[2026-10-10T07:56:15.103Z] [DEBUG] [roku] Roku Express 4K (192.168.0.224): Roku Roku Express 4K [3940EU2], box, Roku OS 15.3.4, modo-de-alimentación=Encendido
[2026-10-10T07:56:15.120Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/active-app -> HTTP 200 (16 ms)
[2026-10-10T07:56:15.138Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/media-player -> HTTP 200 (11 ms)
[2026-10-10T07:56:15.143Z] [DEBUG] [roku] Roku Express 4K: app=562859 (Roku Dynamic Menu), player=close
[2026-10-10T07:56:25.092Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/device-info -> HTTP 200 (28 ms)
[2026-10-10T07:56:25.104Z] [DEBUG] [roku] Roku Express 4K (192.168.0.224): Roku Roku Express 4K [3940EU2], box, Roku OS 15.3.4, modo-de-alimentación=Encendido
[2026-10-10T07:56:25.126Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/active-app -> HTTP 200 (22 ms)
[2026-10-10T07:56:25.143Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/media-player -> HTTP 200 (13 ms)
[2026-10-10T07:56:25.150Z] [DEBUG] [roku] Roku Express 4K: app=562859 (Roku Dynamic Menu), player=close
[2026-10-10T07:56:35.095Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/device-info -> HTTP 200 (29 ms)
[2026-10-10T07:56:35.102Z] [DEBUG] [roku] Roku Express 4K (192.168.0.224): Roku Roku Express 4K [3940EU2], box, Roku OS 15.3.4, modo-de-alimentación=Encendido
[2026-10-10T07:56:35.120Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/active-app -> HTTP 200 (18 ms)
[2026-10-10T07:56:35.137Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/media-player -> HTTP 200 (9 ms)
[2026-10-10T07:56:35.143Z] [DEBUG] [roku] Roku Express 4K: app=562859 (Roku Dynamic Menu), player=close
[2026-10-10T07:56:45.093Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/device-info -> HTTP 200 (28 ms)
[2026-10-10T07:56:45.101Z] [DEBUG] [roku] Roku Express 4K (192.168.0.224): Roku Roku Express 4K [3940EU2], box, Roku OS 15.3.4, modo-de-alimentación=Encendido
[2026-10-10T07:56:45.121Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/active-app -> HTTP 200 (20 ms)
[2026-10-10T07:56:45.137Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/media-player -> HTTP 200 (12 ms)
[2026-10-10T07:56:45.147Z] [DEBUG] [roku] Roku Express 4K: app=562859 (Roku Dynamic Menu), player=close
[2026-10-10T07:56:55.105Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/device-info -> HTTP 200 (39 ms)
[2026-10-10T07:56:55.114Z] [DEBUG] [roku] Roku Express 4K (192.168.0.224): Roku Roku Express 4K [3940EU2], box, Roku OS 15.3.4, modo-de-alimentación=Encendido
[2026-10-10T07:56:55.141Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/active-app -> HTTP 200 (26 ms)
[2026-10-10T07:56:55.160Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/media-player -> HTTP 200 (13 ms)
[2026-10-10T07:56:55.165Z] [DEBUG] [roku] Roku Express 4K: app=562859 (Roku Dynamic Menu), player=close
[2026-10-10T07:57:05.094Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/device-info -> HTTP 200 (28 ms)
[2026-10-10T07:57:05.100Z] [DEBUG] [roku] Roku Express 4K (192.168.0.224): Roku Roku Express 4K [3940EU2], box, Roku OS 15.3.4, modo-de-alimentación=Encendido
[2026-10-10T07:57:05.130Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/active-app -> HTTP 200 (30 ms)
[2026-10-10T07:57:05.150Z] [DEBUG] [roku:ecp] GET 192.168.0.224/query/media-player -> HTTP 200 (14 ms)
[2026-10-10T07:57:05.156Z] [DEBUG] [roku] Roku Express 4K: app=562859 (Roku Dynamic Menu), player=close

… se continuará, ahora primero un café … gran trabajo hasta aquí, se ve bien

Continuación de las pruebas:

Pregunta: ¿Qué ocurre si selecciono con el mando a distancia una aplicación que no se muestra en la integración?

Resultado:

Se muestra, pero ahora se complica. Si en el widget Roku Playback hago clic en « Play », la aplicación Roku Disney da el siguiente paso… en la TV aparece la selección del perfil… y ahora qué?
Pues hago clic en « Keys » en el widget Roku Remote… no hay reacción, así que dejo la selección en la aplicación Disney (del último usuario) y hago clic en « OK »… funciona. La aplicación continúa, pero:

La aplicación Disney ahora solicita la entrada de una contraseña. Esto también se me muestra en la TV, pero como no puedo usar las « Keys » en el widget Roku Remote o no responden, aquí termina esta prueba

Siguiente ronda:

  • Roku Apps: Seleccionar App « ZDF » … funciona
  • Roku Playback: Los botones no funcionan
  • Roku Remote:

Simplemente hacer clic en « OK », ya que la APP ofrece automáticamente algo como « seleccionado » … funciona … luego hacer clic en « OK » nuevamente, ya que en la App « Reproducción » está marcado … funciona … la reproducción comienza.

Luego, durante la reproducción en

  • Roku Playback: El botón Play/Pause funciona ahora, la reproducción se detiene, luego
  • Roku Playback: El botón Replay no responde … sin cambios

Luego, mientras la reproducción está detenida en

  • Roku Remote: Hacer clic en el botón OK 2 veces … la reproducción se reanuda

Muchas gracias @ruegerth por estas pruebas tan detalladas, con las capturas y el registro: ¡es exactamente lo que necesitaba! :folded_hands:

La 1.0.3 está publicada, corrige todo lo que has reportado:

  • Los botones del widget Reproducción: el bloqueo provenía de Gladys, no de tu TV. Antes de ejecutar un clic, Gladys relee el contenido del widget, con un límite de 30 relecturas por minuto. Mis widgets se recargaban demasiado a menudo, se alcanzaba el límite, y Gladys rechazaba el clic sin decir nada. De ahí los botones que funcionaban «a veces» (en Disney+ sí, en Arte no). Está corregido: los widgets se recargan mucho menos, y el widget muestra el nuevo estado justo después del clic.
  • El botón «Teclas…» no podía funcionar: abría un formulario que la versión actual de Gladys aún no conoce. Ha sido reemplazado por un nuevo widget «Navegación Roku» con las cuatro flechas, para colocar al lado del mando a distancia. El mando a distancia conserva OK, Atrás, Inicio y Reproducción/Pausa.
  • Para escribir un texto (la contraseña de Disney+, una búsqueda): nueva acción de escena «Escribir un texto en un Roku». Crea una escena con tu texto y lánzala desde una caja de Escena del tablero de control. Atención, las escenas son visibles para todos los usuarios de Gladys: evitar para una contraseña sensible.
  • El widget Aplicaciones muestra un máximo de 4 aplicaciones (límite de Gladys). Introduce en sus ajustes los nombres que quieras (Disney+, KiKA, RTL…), o añade un segundo widget Aplicaciones para tener 4 más. Todas tus aplicaciones siguen en la funcionalidad «Aplicación» del dispositivo, utilizable en las escenas.
  • «Roku Dynamic Menu» ahora se muestra como «Inicio».

Un detalle sobre Replay: es el botón «Instant Replay» de Roku, y cada aplicación decide si lo gestiona. En ZDF no hace nada, incluso con el mando a distancia real, imagino. No es la integración :wink:

La actualización te será propuesta en Gladys tan pronto como el almacén la haya visto, a lo largo del día. Solo tendrás que actualizar la integración, luego añadir el widget de Navegación si lo deseas. Si un botón sigue sin efecto después de la actualización, una captura de la pestaña Red del navegador (F12) en el momento del clic me ayudaría mucho.

Gracias por la rápida respuesta.

Nueva ronda de pruebas:

  • Roku Apps … Entendido … aplica: quien puede leer está en ventaja :wink:

  • Rediseño del panel de control:

Paso 1:

  • Roku Apps: selección de Arte. funciona:

  • TV: Arte se inicia, una película con la preselección « Reproducción » está marcada.
  • Roku Remote: botón Play presionado… sin reacción:

  • Roku Reproducción: botón Play presionado… sin reacción:

  • Roku Remote: Home presionado … se muestra la página de inicio del stick.

  • Roku Navegación: navegado a la aplicación Netflix… funciona

  • Roku Remote: botón « Play » … funciona:

la aplicación se inicia

  • Roku Remote: botón « Play » … funciona, la aplicación muestra su siguiente página, aquí selección de perfil

  • Roku Remote: botón « Play » … sin reacción

  • Roku Remote: botón « OK » … funciona, el perfil predeterminado en la aplicación va

  • Roku Navegación: a través de los botones Up, Right, Right y así sucesivamente, una película cualquiera seleccionada

  • Roku Remote: botón « OK » … la película comienza

Perfecto…Felicitaciones

Sugerencia de mejora del probador:

– Integrar el widget de navegación de Roku en el widget del mando a distancia de Roku, incluirlo y mostrarlo… así el usuario sabrá inmediatamente para qué sirve. Es así en todos los mandos a distancia.

Saludos y mucha, mucha felicitación y reconocimiento por el rápido trabajo,

Tom

Próxima sugerencia del probador:

Eliminar el botón « Reproducir » en este momento del desarrollo, ya que depende de la aplicación y solo genera confusión cuando una aplicación lo ofrece y la otra no.

Gracias Tom, me alegra mucho :blush: Y gracias por tus dos sugerencias, la segunda ya está en la 1.0.4:

  • Reproducción eliminada del widget de Reproducción: tienes razón, un botón que funciona en una aplicación y no en otra solo confunde. El widget mantiene Reproducción/Pausa, Retroceso rápido y Avance rápido. La reproducción sigue disponible como botón del dispositivo y en la acción de escena «presionar un botón», para quienes lo necesiten.
  • Navegación en el Control Remoto: me encantaría, pero Gladys limita hoy cada widget a 4 botones, y un control remoto real requiere al menos 7 (las 4 flechas, OK, Atrás, Inicio). De ahí los dos widgets, para colocarlos uno debajo del otro. Le paso la idea de un verdadero pad direccional en los widgets a @pierre-gilles: serviría para todas las integraciones de control remoto.

Y para el botón de Reproducción que «no hace nada» en Arte: es el comportamiento normal de Roku. En los menús de las aplicaciones, es OK el que confirma (como lo has encontrado), y Reproducción/Pausa solo actúa durante un vídeo, más o menos según la aplicación. Lo he especificado en la documentación.

Como de costumbre, la actualización te será propuesta tan pronto como el almacén la haya visto, a lo largo del día. Gracias de nuevo por estas pruebas tan útiles :folded_hands:

Lo hago encantado. Como actualmente la navegación no puede entrar en el control remoto. Otra sugerencia, pero no sé si es posible o tiene sentido. Me sale así del instinto:

El botón « OK » sirve para seleccionar la aplicación y, dentro de la aplicación, hasta el menú de selección real del stream o película a mostrar.

¿Por qué no desactivar el botón « Play » hasta entonces?

Saludos
Tom

Buena idea, Tom, lo he mirado de cerca :slightly_smiling_face:

Dos cosas bloquean por ahora:

  • Gladys no sabe desactivar un botón de widget: un botón se muestra o no, no hay un estado « desactivado ». Lo añado a mi lista de ideas para proponerle a @pierre-gilles, junto con el pad direccional.
  • Ocultarlo fuera de un vídeo sería arriesgado: el botón dependería de lo que la app le anuncie a Roku, y no todas las apps indican que se está reproduciendo un vídeo. El botón podría desaparecer en medio de una película, lo que sería peor que el problema inicial :sweat_smile:

Por lo tanto, mantengo visible Reproducir/Pausa, y la documentación ahora especifica que en los menús es OK lo que valida. ¡Si Gladys aprende algún día a desactivar un botón, lo haré con gusto!