Intégration externe - Roku

Salut tout le monde ! :waving_hand:

Deuxième de la série nord-américaine :united_states: : Roku, le n°1 du streaming aux États-Unis, en boîtier, en clé ou en téléviseur « Roku TV ». Comme pour Android TV, tout se passe en local, par l’API officielle de Roku, sans compte ni cloud.

Ce que ça fait

  • Découverte automatique des Roku du réseau dans l’onglet Découverte, avec une saisie d’IP en secours. Chaque Roku est reconnu par son numéro de série, même s’il change d’adresse.
  • Roku TV : marche/arrêt, choix de l’entrée (HDMI ou antenne), volume, sourdine et chaînes.
  • Tous les Roku : l’application à l’écran (affichée et modifiable), l’état de lecture, les touches de la télécommande.
  • Trois widgets : une télécommande, la lecture en cours avec l’icône de l’appli, et des raccourcis d’applications avec leurs icônes.
  • Scènes : un déclencheur « application changée », et des actions « ouvrir une application » et « appuyer sur une touche ».

Le truc sympa

Netflix se lance sur la TV du salon → lumières tamisées :popcorn:
22 h 30 en semaine → la Roku TV s’éteint toute seule :sleeping_face:

Installation

:warning: Gladys 5.1 minimum.

  1. Sur la Roku : Paramètres → Système → Paramètres système avancés → Contrôle par des applications mobiles → Activé. Sur une Roku TV, activez aussi le démarrage rapide de la TV.
  2. Dans Gladys : Intégrations → Roku → Installer, puis l’onglet Découverte pour ajouter vos appareils.

Petites réserves honnêtes : Roku ne donne pas de niveau de volume, seulement des touches + / −, et un boîtier Roku ne s’éteint pas vraiment (son état est seulement affiché).

:warning: Développée sans le matériel, je n’ai pas de Roku : les tests reposent sur de vraies réponses d’appareils, mais rien ne vaut un essai chez vous. @ruegerth, comme promis, c’est le moment :wink:

Comme les précédentes, elle est développée avec Claude Code :robot:.

Dépôt : GitHub - guim31/gladys-roku: Roku TVs and streaming players, local control (ECP) for Gladys Assistant · GitHub

Dites-moi ce qui manque :folded_hands:

Fast … super travail.
Voici mon test :

  1. Réinstallation de Gladys v5.1.4

avec le lieu Québec :wink:

  1. Sur le Roku Express 4k Stick, les paramètres ont été repris comme indiqué ( Paramètres - Système - Paramètres système avancés - Contrôle par applications mobiles - Activé )

  2. Dans Gladys, pour la rapidité et la simplification, divers services ont été désactivés :

  1. Tableau de bord créé, heure et soleil ajoutés :

  1. L’intégration Roku installée, elle ouvre par défaut pour la première fois l’onglet Configuration :

La première affichage :

Là, l’IP locale du Stick Roku a été saisie et un test effectué… avec succès :

Sur le tableau de bord de démarrage, tous les widgets disponibles ont été activés les uns après les autres :

  • Télécommande

  • Lecture

  • Application

Voici le premier point de problème. Toutes les applications installées sur le Stick Roku ( donc de YouTube à ARD en passant par Arte ) ne sont pas affichées. Par exemple, Disney, KiKa, RTL et d’autres manquent :frowning:

Le tableau de bord avec les widgets Roku :

PREMIERS TESTS :

Je peux sélectionner dans les applications Roku celles qui y sont affichées, donc actuellement YouTube, ZDF, ARD et Arte. Lors de la sélection, celles-ci sont alors affichées dans le widget ROKU PLAYBACK et également simultanément sur la TV !!!, mais

Les boutons PLAY/PAUSE et REPLAY ne fonctionnent pas. Je peux les cliquer, mais aucune réaction visible sur la TV.

TEST INVERSE :

Sélection avec la télécommande directement sur le stick, là ARTE sélectionné. Les widgets réagissent et affichent :

Si je clique ensuite sur Accueil dans le widget Remote, ceci se produit :

Voici le journal de débogage correspondant avec les étapes mentionnées ci-dessus :

[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] Événement de scène app_changed : Arte sur 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=close
[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=close
[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=close
[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=close
[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=close
[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=close
[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=close
[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=close
[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=close
[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=close
[2026-10-10T07:54:54.503Z] [DEBUG] [roku] Roku Express 4K (192.168.0.224) : key Home
[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 (Home), 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] Scene event app_changed: Home on 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=close
[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] Scene event app_changed: Roku Dynamic Menu on 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=close
[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=close
[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, power-mode=PowerOn
[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, power-mode=PowerOn
[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, power-mode=PowerOn
[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, power-mode=PowerOn
[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, power-mode=PowerOn
[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, power-mode=PowerOn
[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, power-mode=PowerOn
[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, power-mode=PowerOn
[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, power-mode=PowerOn
[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, power-mode=PowerOn
[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, power-mode=PowerOn
[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

… à suivre, d’abord un café … super travail jusqu’ici, ça a l’air bien

Suite des tests :

Question : Que se passe-t-il si je sélectionne avec la télécommande une application qui n’apparaît pas dans l’intégration ?

Résultat :

Elle s’affiche, mais maintenant ça se complique. Si je clique sur « Play » dans le widget Roku Playback, alors l’application Roku Disney passe à l’étape suivante… sur la TV apparaît la sélection du profil… et maintenant ?
Eh bien, je clique simplement sur « Keys » dans le widget Roku Remote… aucune réaction, donc je laisse simplement la sélection (du dernier utilisateur) dans l’application Disney et je clique sur « OK »… ça marche. L’application continue, mais :

L’application Disney demande maintenant la saisie d’un mot de passe. Cela m’est également affiché sur la TV, mais comme je ne peux pas utiliser les « Keys » dans le widget Roku Remote ou qu’ils ne répondent pas, ce test se termine ici

Prochaine étape :

  • Roku Apps : Sélectionner l’application « ZDF » … ça marche
  • Roku Playback : Aucun bouton ne fonctionne
  • Roku Remote :

J’ai simplement cliqué sur « OK », car l’APP propose automatiquement quelque chose comme « sélectionné »… ça marche… puis j’ai de nouveau cliqué sur « OK », car la « lecture » est sélectionnée dans l’application … ça marche… la lecture commence.

Ensuite, pendant la lecture

  • Roku Playback : Le bouton Lecture/Pause fonctionne maintenant, la lecture s’arrête, puis
  • Roku Playback : Le bouton Replay ne répond pas… aucun changement

Ensuite, pendant que la lecture est arrêtée

  • Roku Remote : Bouton OK cliqué 2 fois … la lecture reprend

Un grand merci @ruegerth pour ces tests super détaillés, avec les captures et le journal : c’est exactement ce qu’il me fallait :folded_hands:

La 1.0.3 est publiée, elle corrige tout ce que tu as remonté :

  • Les boutons du widget Lecture : le blocage venait de Gladys, pas de ta TV. Avant d’exécuter un appui, Gladys relit le contenu du widget, avec une limite de 30 relectures par minute. Mes widgets se rechargeaient beaucoup trop souvent, la limite était atteinte, et Gladys refusait alors l’appui sans rien dire. D’où les boutons qui marchaient « parfois » (dans Disney+ oui, dans Arte non). C’est corrigé : les widgets se rechargent beaucoup moins, et le widget montre le nouvel état juste après l’appui.
  • Le bouton « Touches… » ne pouvait pas marcher : il ouvrait un formulaire que la version actuelle de Gladys ne connaît pas encore. Il est remplacé par un nouveau widget « Navigation Roku » avec les quatre flèches, à placer à côté de la télécommande. La télécommande garde OK, Retour, Accueil et Lecture/Pause.
  • Pour taper un texte (le mot de passe Disney+, une recherche) : nouvelle action de scène « Taper un texte sur un Roku ». Tu crées une scène avec ton texte et tu la lances depuis une boîte Scène du tableau de bord. Attention, les scènes sont visibles par tous les utilisateurs de Gladys : à éviter pour un mot de passe sensible.
  • Le widget Applications affiche 4 applis au plus (limite de Gladys). Saisis dans ses réglages les noms que tu veux (Disney+, KiKA, RTL…), ou ajoute un second widget Applications pour en avoir 4 de plus. Toutes tes applis restent dans la fonctionnalité « Application » de l’appareil, utilisable dans les scènes.
  • « Roku Dynamic Menu » s’affiche maintenant « Accueil ».

Une précision sur Replay : c’est la touche « Instant Replay » de Roku, et chaque appli décide si elle la gère. Dans ZDF elle ne fait rien, même avec la vraie télécommande, j’imagine. Ce n’est pas l’intégration :wink:

La mise à jour te sera proposée dans Gladys dès que le store l’aura vue, dans la journée. Il suffira de mettre l’intégration à jour, puis d’ajouter le widget Navigation si tu le veux. Si un bouton reste sans effet après la mise à jour, une capture de l’onglet Réseau du navigateur (F12) au moment de l’appui m’aiderait beaucoup.

Merci pour la réponse rapide.

Nouvelle série de tests:

  • Roku Apps … Compris … il faut: Qui sait lire est avantagé :wink:

  • Redesign du tableau de bord:

Étape 1:

  • Roku Apps: Sélection d’Arte. fonctionne:

  • TV: Arte est lancé, un film avec la présélection « Lecture » est marqué.
  • Télécommande Roku: Bouton Play cliqué… aucune réaction:

  • Lecture Roku: Bouton Play cliqué… aucune réaction:

  • Télécommande Roku: Accueil cliqué … Page d’accueil de la clé affichée.

  • Navigation Roku: Navigué vers l’application Netflix… fonctionne

  • Télécommande Roku: Bouton « Play » … fonctionne:

L’application démarre

  • Télécommande Roku: Bouton « Play » … fonctionne, l’application affiche sa page suivante, ici la sélection de profil

  • Télécommande Roku: Bouton « Play » … aucune réaction

  • Télécommande Roku: Bouton « OK » … fonctionne, le profil prédéfini dans l’application démarre

  • Navigation Roku: En utilisant les boutons Haut, Droite, Droite, etc., un film quelconque sélectionné

  • Télécommande Roku: Bouton « OK » … le film démarre

Parfait… Félicitations

Suggestion d’amélioration du testeur :

– Intégrer le widget de navigation Roku dans le widget de la télécommande Roku, l’afficher… ainsi l’utilisateur saura immédiatement à quoi il sert. C’est comme ça sur chaque télécommande.

Cordialement et beaucoup de félicitations et de reconnaissance pour le travail rapide,

Tom

Prochaine suggestion du testeur :

Supprimer le bouton « Rejouer » à ce stade du développement, car cela dépend de l’application et ne fait qu’induire en erreur si une application le propose et pas l’autre.

Merci Tom, ça fait plaisir :blush: Et merci pour tes deux suggestions, la deuxième est déjà dans la 1.0.4 :

  • Replay retiré du widget Lecture : tu as raison, une touche qui marche dans une appli et pas dans l’autre ne fait qu’embrouiller. Le widget garde Lecture/Pause, Retour rapide et Avance rapide. Replay reste disponible comme touche de l’appareil et dans l’action de scène « appuyer sur une touche », pour ceux qui en ont l’usage.
  • Navigation dans la Télécommande : j’aurais adoré, mais Gladys limite aujourd’hui chaque widget à 4 boutons, et une vraie télécommande en demande au moins 7 (les 4 flèches, OK, Retour, Accueil). D’où les deux widgets, à placer l’un sous l’autre. Je remonte l’idée d’un vrai pavé directionnel dans les widgets à @pierre-gilles : il servirait à toutes les intégrations de télécommande.

Et pour le bouton Lecture qui « ne fait rien » dans Arte : c’est le comportement normal de Roku. Dans les menus des applis, c’est OK qui valide (comme tu l’as trouvé), et Lecture/Pause n’agit que pendant une vidéo, plus ou moins selon l’appli. Je l’ai précisé dans la doc.

Comme d’hab, la mise à jour te sera proposée dès que le store l’aura vue, dans la journée. Encore merci pour ces tests au top :folded_hands:

Je le fais volontiers. Comme la navigation ne peut pas être intégrée dans la télécommande pour le moment. Autre suggestion, mais je n’ai aucune idée si c’est possible ou sensé. Cela vient comme ça de l’instinct :

Le bouton « OK » sert donc à sélectionner l’application et dans l’application jusqu’au menu de sélection réel du flux / film à afficher.

Pourquoi ne pas griser le bouton « Play » jusqu’à ce moment-là ?

Cordialement
Tom

Bonne idée Tom, j’ai regardé de près :slightly_smiling_face:

Deux choses bloquent pour l’instant :

  • Gladys ne sait pas encore griser un bouton de widget : un bouton est affiché ou pas, il n’y a pas d’état « désactivé ». Je l’ajoute à ma liste d’idées à proposer à @pierre-gilles, avec le pavé directionnel.
  • Le masquer en dehors d’une vidéo serait risqué : le bouton dépendrait de ce que l’appli annonce au Roku, et toutes les applis ne signalent pas qu’une vidéo est en cours. Le bouton pourrait alors disparaître en plein film, ce qui serait pire que le problème de départ :sweat_smile:

Donc je garde Lecture/Pause visible, et la doc précise maintenant que dans les menus c’est OK qui valide. Si Gladys apprend un jour à griser un bouton, je le ferai avec plaisir !