Integration externe - Android TV Remote

On ne m’arrête plus :joy: … je me suis aussi lancé dans une intégration Android TV Remote.

Elle permet de connecter et piloter les téléviseurs et boîtiers Android TV et Google TV (Nvidia Shield, Chromecast avec Google TV, Sony, Xiaomi Mi Box, TCL, etc.) directement sur votre réseau local.


Fonctionnalités clés

  • Protocole Natif Remote v2 (TLS) : Connexion sécurisée sur les ports 6466/6467. Pas besoin d’activer le mode développeur ou ADB sur la TV.
  • Appairage facile par code PIN : Procédure guidée en 2 étapes directement dans l’interface Gladys (affichage du code PIN sur l’écran de la TV).
  • Retour d’état en temps réel : Remontée instantanée dans Gladys de l’état marche/arrêt, du niveau de volume et du statut sourdine.
  • Gestion Multi-TV : Appairez et contrôlez plusieurs téléviseurs indépendamment.
  • Contrôle complet :
    • Interrupteur Marche / Arrêt
    • Gestion du Volume et Mute
    • Touches de Navigation (D-Pad) : Haut, Bas, Gauche, Droite, OK, Retour, Accueil, Menu
    • Touches Médias : Lecture, Pause, Stop, Précédent, Suivant, Avancer, Reculer
  • Raccourcis d’Applications (optionnels) : Lancement direct de vos apps préférées (Netflix, YouTube, Prime Video, Disney+, Spotify, Plex, Arte, Molotov, myCANAL). Une option dans les paramètres permet de les désactiver si vous souhaitez épurer votre carte d’appareil.

Ergonomie & Conseil d’utilisation (Scènes)

:information_source: À savoir sur l’affichage sur le Dashboard :
Gladys Assistant ne disposant pas actuellement de widget « Télécommande / Lecteur Média » dédié avec pavé directionnel visuel, l’appareil apparaît sous la forme du widget générique « Appareils » (liste verticale de boutons).

Pour un usage fluide au quotidien, il est vivement conseillé de passer par les Scènes Gladys :

  • Créez des scènes pour vos actions clés (« Allumer TV », « Mode Cinéma », « Mettre en Pause », « Lancer Plex »).
  • Placez des cartes / boutons de Scènes sur votre tableau de bord Gladys pour déclencher ces actions proprement en 1 clic.
  • Pour la navigation manuelle rapide dans les menus TV (parcourir le catalogue Netflix, taper du texte), l’application officielle Google TV ou la télécommande physique reste le compagnon idéal.

Exemples de Scènes Gladys

  • :popcorn: Mode Cinéma : Allumer la TV + régler le volume à 20% + tamiser l’éclairage du salon.
  • :door: Départ / Mode Nuit : Éteindre automatiquement la TV quand la maison passe en mode absent ou nuit.
  • :bell: Pause automatique : Mettre la TV en pause sur détection d’appel ou de la sonnette connectée.

Installation & Configuration

  1. Ajoutez l’intégration externe dans votre instance Gladys Assistant :
    https://github.com/guim31/gladys-integration-android-tv-remote
    
  2. Rendez-vous dans Intégrations > Android TV Remote :
    • Étape 1 : Saisissez l’adresse IP de votre TV et lancez l’action. Un code PIN à 6 caractères s’affiche sur la TV.
    • Étape 2 : Saisissez le code PIN et validez.
  3. Lancez une Recherche d’appareils dans l’onglet Découverte pour ajouter la TV à vos appareils.

Liens & Code Source

Je rappelle que je ne suis pas développeur de métier, je fais confiance à l’IA car je n’ai pas les compétences pour tout comprendre. N’hésitez pas à me dire si des choses ne vont pas / manquent … !

On ne t’arrête plus ! Bienvenue côté développeur, et t’inquiète pas à l’ère de l’IA, la seule chose qui compte c’est la motivation :grin: La technique est parfaitement gérée par Claude :wink:

Bonsoir @guim31

Merci de pour cette intégration que je viens de tester … et pour laquelle je bloque au moment de la saisie de l’adresse IP :

Etat de l’intégration :

image

Lorsque je rafraîchie la page des intégrations de Gladys :

image

Pourtant le conteneur est bien démarré :

Je ne comprends en revanche pas la raison pour laquelle il n’arrive pas à se connecter à Gladys via WS://gladys:8082, car le port est bien disponible et en écoute :

image

Merci par avance pour ton retour,

Jean

Bonsoir Jean, merci pour le retour détaillé !
Bonne nouvelle : l’intégration elle-même n’est pas en cause.
Tes logs montrent que le conteneur n’arrive pas à ouvrir le WebSocket vers Gladys (connect ETIMEDOUT 172.30.0.2:8082) — il n’a donc jamais pu s’enregistrer, d’où l’échec de l’action et le toggle qui retombe.

Un ETIMEDOUT (et non « connection refused ») signifie que les paquets sont jetés en route : c’est typiquement un problème de réseau entre les deux conteneurs, pas de port.

Pour vérifier :

  1. Compare les réseaux des deux conteneurs :
docker inspect -f '{{json .NetworkSettings.Networks}}' <conteneur-gladys> | jq
docker inspect -f '{{json .NetworkSettings.Networks}}' gladys-ext-guim31-gladys-integration-android-tv-remote | jq 

S’ils ne partagent aucun réseau (sous-réseaux différents), c’est la cause : Docker isole les bridges entre eux.

  1. Teste depuis le conteneur d’intégration :
docker exec gladys-ext-guim31-gladys-integration-android-tv-remote wget -qO- --timeout=5 http://gladys:8082 || echo KO 
  1. Comment as-tu installé Gladys ?
    L’installation officielle fait tourner le conteneur Gladys en network_mode: host — c’est la configuration attendue pour les intégrations externes. D’après ta capture, ton Gladys tourne en bridge (IP 172.30.0.2, mapping 8082:8082) : si c’est le cas, repasser en réseau host devrait résoudre le problème.

  2. Si les réseaux sont bons, regarde le pare-feu de l’hôte/NAS (ufw, firewalld…), qui peut bloquer le trafic inter-conteneurs.

Dis-moi ce que donnent les points 1 et 3 — et dès que la connexion passe, l’intégration se connectera toute seule (elle réessaie en continu), pas besoin de la redémarrer.

Bonjour @guim31

Merci pour ta réponse, voici déjà le résultat de ta question 1 :

Réponse à la question 2 :

image

Et à la question 3 :

Le conteneur Gladys a été relancé en ayant été modifié afin que le réseau soit bien de type « host ».

Malgré cela, le conteneur ne parvient toujours pas à se connecter au WS :

Je reste à ton écoute, et te remercie par avance pour ton aide,

Belle fin de matinée,

Jean

Merci, tes captures confirment tout !

(si jamais le prochain coup tu pouvais faire du copier/coller des logs, ce serait plus simple à exploiter qu’avec des captures d’écran :wink: )

Regarde tes logs : l’erreur n’est plus ETIMEDOUT mais getaddrinfo ENOTFOUND gladys — le nom gladys ne se résout plus.
C’est logique : avant, ce nom était un alias du conteneur Gladys sur le réseau gladys-integrations ; en passant en réseau host, ton conteneur Gladys a quitté ce réseau et l’alias a disparu. Et le compteur (« attempt 753 ») montre que le conteneur de l’intégration n’a pas été recréé depuis ta bascule : il tourne toujours avec la configuration de connexion générée pour l’ancienne topologie — elle est figée à la création du conteneur, un redémarrage ne la régénère pas.

Donc :

  1. Dans Gladys → Intégrations → Android TV Remote → Supervision → « Forcer la mise à jour » (ce bouton recrée le conteneur, c’est ce qu’on veut). À défaut : désinstalle/réinstalle l’intégration.
  2. Regarde ensuite les logs : tu dois voir soit la connexion s’établir, soit au minimum une nouvelle cible (plus ws://gladys:8082 vers un nom mort).
  3. Si jamais ça échoue encore, deux tests pour trancher :
    • depuis le conteneur : docker exec gladys-ext-guim31-gladys-integration-android-tv-remote wget -qO- --timeout=5 http://172.30.0.1:8082 (172.30.0.1 = ton hôte vu depuis le bridge — ça teste la joignabilité en contournant le DNS) ;
    • sur l’hôte : ss -tlnp | grep 8082 (vérifier que Gladys écoute bien sur toutes les interfaces et pas seulement 127.0.0.1).
      Si le premier échoue alors que le second est bon, c’est ton pare-feu qui bloque le trafic bridge → hôte sur 8082 (avec ufw : sudo ufw allow from 172.30.0.0/24 to any port 8082).

Tiens-moi au courant après le « Forcer la mise à jour » !

Re-bonjour @guim31

Suite à l’ensemble de tes instructions, tout fonctionne à présent parfaitement au niveau de l’intégration : TV associée :heart:

Merci à toi, je vais maintenant jouer avec cette intégration : si possible ajouter de quoi piloter la TV depuis l’interface de Gladys (depuis mon smartphone/tablette du salon) et définir des scènes afin d’en limiter l’usage en journée à mini-moi :smiley:

Belle journée,

Jean

Génial !

Je pense que tant qu’on a pas un widget de type « télécommande » l’essentiel se joue avec les scènes :slight_smile:

Re-bonjour @guim31

Je me permets encore quelques retours, à toutes fins utiles permettant des corrections et évolutions profitables à tous :smiling_face_with_sunglasses:

Lorsque la télé est éteinte, l’intégration tente continuellement de la contacter :

Egalement, si la télé est éteinte, et qu’on tente une interaction avec l’interface de l’intégration, des erreurs apparaissent :

Egalement, si j’ajoute un bouton « TV (Power) » à un tableau de bord et que je tente d’allumer la télé, l’intégration se lance là encore dans une longue tentative de connexions infructueuses …

Belle fin de nournée,

Jean

Super initiative ! J’ai un boîtier Android TV à la maison, volontaire pour tester.

Analysé avec l’aide de Claude (IA), relu et validé par mes soins.

Bonjour @jean_bruder !! Toutes mes excuses, je n’avais pas vu ton message !

Merci beaucoup pour ces retours détaillés, captures à l’appui — c’est exactement ce qu’il faut pour corriger. :folded_hands:

Bonne nouvelle : les trois problèmes venaient en fait d’une même cause, et c’est corrigé.

Ce qui se passait : la librairie qui gère le protocole Android TV relance la connexion toutes les secondes, indéfiniment, dès que la TV est injoignable. TV éteinte = logs inondés de EHOSTUNREACH (ta première capture) et réseau sollicité en continu. En prime, elle masque les erreurs de connexion, donc un appui sur « Power » depuis un dashboard restait bloqué de longues secondes avant d’échouer… en relançant la boucle derrière.

Ce qui change :

  • TV éteinte, l’intégration se calme : elle retente en arrière-plan avec un délai qui double à chaque échec (5 s, 10 s, 20 s… plafonné à 2 minutes). Dès que la TV redevient joignable (rallumage, retour de veille réseau), elle est reprise automatiquement et le rythme repart à zéro. Fini le déluge de logs.
  • Un appui sur « Power » (ou toute commande) TV éteinte tente une connexion immédiate et échoue proprement en 2-3 secondes avec un message clair, au lieu de rester bloqué. Petit rappel au passage : le protocole Remote v2 ne peut réveiller qu’une TV en veille réseau — une TV totalement hors tension doit être rallumée à la télécommande ou via HDMI-CEC.
  • Supprimer l’appareil dans Gladys coupe désormais aussi sa connexion et ses retentatives côté intégration.

Concernant l’erreur « lors de la suppression de cet appareil » (ta deuxième capture) : ce message vient du cœur de Gladys, pas de l’intégration. Le correctif supprime la cause la plus probable, mais si tu la revois TV allumée après mise à jour, n’hésite pas à me le signaler avec les logs — ce serait alors à creuser côté Gladys.

Le correctif est publié : mets à jour l’intégration vers la version 1.0.5 (ou :latest) et redémarre le conteneur.

Belle journée, et encore merci pour ton retour :smiling_face_with_sunglasses:

Je ne trouve pas cette intégration sur gladys :sweat_smile:
Aurais-tu oublié le topic ? :thinking::face_savoring_food:

Pas moyen de faire une recherche réseau pour voir les tv android ?
Sur lg jutilise le ssdp pour chercher sur le réseau

Autre amélioration ne pourrais ton pas avoir le select dynamique comme pour lg pour les application a lancer ?

Côté lg :

Bon sinon pas de push sur les application donc on peut pas les lancer et le reste je ferais mes test au fur et a mesure :victory_hand:

Ma mibox est lancé et le power est a 0 dans l’interface ^^.
On a pas moyens de recup le status ? Un simple ping peut etre ? :thinking:

Tout à fait ! J’avais oublié le topic ^^ merci !

Je regarde pour ton retour

Re @spenceur ,

Les trois points sont traités, c’est dispo sur la 1.1.0 :slightly_smiling_face:

Le select d’applications : les boutons par application sont remplacés par un sélecteur « Application » unique, utilisable depuis le dashboard et les scènes. Et ça explique aussi ton « pas de push » : les anciens boutons étaient déclarés dans une catégorie que Gladys traite comme un capteur (comme un bouton Zigbee qui envoie des clics), donc rien n’était cliquable — le sélecteur corrige ça. L’appli en cours s’affiche même comme sélection quand la TV la remonte. Après mise à jour : relance une recherche d’appareils et clique « Mettre à jour » sur ta MiBox pour récupérer le sélecteur.

Le power à 0 MiBox allumée : la MiBox n’annonce jamais son état d’alimentation, contrairement aux TV. J’ai implémenté ton idée du ping : une TV injoignable est marquée éteinte, et un appareil qui accepte la connexion sans annoncer son état est considéré allumé au bout de 5 s. Ta MiBox devrait donc passer à 1 dès la prochaine connexion.

Cerise sur le gâteau : si tu renseignes l’adresse MAC de ta MiBox (nouvelle action « Renseigner l’adresse MAC d’une TV appairée »), « Allumer » enverra un Wake-on-LAN quand elle est complètement éteinte.

Quelques retours.
Jai du desinstaller l’intégration et la réinstaller pour avoir ma tv a nouveau (javais pas de proposition de maj.

Super pour la selection dappli mais jai des applis dans la liste que je nai pas et dautre qui ne sont pas présente


Autre info le wol ne fonctionne pas (tu envoie a quelle adresse? Sur la tv ? Ou sur le x.x.x.255?):

Les logs avec deux trois truc chelou

Gladys Assistant
Android TV Remote
Appareils
Découverte
Configuration
Supervision
Journaux
Journaux
[2026-08-17T16:47:23.419Z] [INFO] [gladys-sdk] connected to Gladys (http://172.30.0.1:8455)
[2026-08-17T16:47:23.456Z] [INFO] [AndroidTV] Integration started
[2026-08-17T16:47:43.623Z] [INFO] [AndroidTV] Running action: start_pairing
[2026-08-17T16:47:43.624Z] [INFO] [AndroidTV] Initiating pairing sequence with TV at 192.168.1.128...
Start Pairing Connect
Error: connect ECONNREFUSED 192.168.1.128:6467
    at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1611:16) {
  errno: -111,
  code: 'ECONNREFUSED',
  syscall: 'connect',
  address: '192.168.1.128',
  port: 6467
}
192.168.1.128 Pairing Connection closed true
false
[2026-08-17T16:50:36.847Z] [INFO] [AndroidTV] Running action: start_pairing
[2026-08-17T16:50:36.848Z] [INFO] [AndroidTV] Initiating pairing sequence with TV at 192.168.1.57...
Start Pairing Connect
192.168.1.57 Pairing connected
192.168.1.57 Pairing secure connected 
Receive : 7,8,2,16,200,1,90,0
Receive : {"protocolVersion":2,"status":"STATUS_OK","pairingRequestAck":{}}
Receive : 16,8,2,16,200,1,162,1,8,18,4,8,3,16,6,24,1
Receive : {"protocolVersion":2,"status":"STATUS_OK","pairingOption":{"outputEncodings":[{"type":"ENCODING_TYPE_HEXADECIMAL","symbolLength":6}],"preferredRole":"ROLE_TYPE_INPUT"}}
Receive : 8,8,2,16,200,1,250,1,0
Receive : {"protocolVersion":2,"status":"STATUS_OK","pairingConfigurationAck":{}}
[2026-08-17T16:50:37.882Z] [INFO] [AndroidTV] PIN code displayed on the screen of the TV at 192.168.1.57.
[2026-08-17T16:50:59.437Z] [INFO] [AndroidTV] Running action: submit_pin
[2026-08-17T16:50:59.438Z] [INFO] [AndroidTV] Submitting PIN code to TV at 192.168.1.57...
Sending code :  1EAF7B
Receive : 42,8,2,16,200,1,202,2,34,10,32,30,35,42,82,32,208,136,221,246,38,107,114,167,70,149,177,3,204,230,48,75,245,33,202,214,129,211,176,30,183,34,224
Receive : {"protocolVersion":2,"status":"STATUS_OK","pairingSecretAck":{"secret":"HiMqUiDQiN32Jmtyp0aVsQPM5jBL9SHK1oHTsB63IuA="}}
192.168.1.57 Paired!
192.168.1.57 Pairing Connection closed false
Start Remote Connect
192.168.1.57 Remote secureConnect
192.168.1.57 Receive : {"remoteConfigure":{"code1":639,"deviceInfo":{"model":"MIBOX4","vendor":"Xiaomi","unknown1":1,"unknown2":"9","packageName":"com.google.android.tv.remote.service","appVersion":"6.9.906821247"}}}
Create Remote {"remoteConfigure":{"code1":622,"deviceInfo":{"model":"Docker Container","vendor":"Synology","unknown1":1,"unknown2":"1","packageName":"androitv-remote","appVersion":"1.0.0"}}}
Sending {"remoteConfigure":{"code1":622,"deviceInfo":{"model":"Docker Container","vendor":"Synology","unknown1":1,"unknown2":"1","packageName":"androitv-remote","appVersion":"1.0.0"}}}
[2026-08-17T16:51:00.813Z] [INFO] [AndroidTV] Remote session ready with 192.168.1.57
[2026-08-17T16:51:00.816Z] [INFO] [AndroidTV] Pairing with 192.168.1.57 succeeded, certificate obtained.
192.168.1.57 Receive : {"remoteSetActive":{}}
Create Remote {"remoteSetActive":{"active":622}}
Sending {"remoteSetActive":{"active":622}}
192.168.1.57 Receive : {"remoteStart":{"started":true}}
192.168.1.57 Receive : {"remoteSetVolumeLevel":{"unknown1":11,"unknown2":9,"playerModel":"MIBOX4","unknown4":1}}
192.168.1.57 Receive : {"remoteImeKeyInject":{"appInfo":{"appPackage":"com.google.android.tvlauncher"}}}
[2026-08-17T16:51:29.269Z] [INFO] [AndroidTV] Running action: set_mac
[2026-08-17T16:51:37.047Z] [INFO] [AndroidTV] Running action: test_connection
[2026-08-17T16:51:57.806Z] [INFO] [AndroidTV] Scan requested, publishing discovered devices
[2026-08-17T16:51:57.822Z] [INFO] [AndroidTV] Publishing 1 paired TV(s).
[2026-08-17T16:53:36.787Z] [INFO] [AndroidTV] Set value <- ext:ext-guim31-gladys-integration-android-tv-remote:tv:192_168_1_57:app = plex
[2026-08-17T16:53:36.788Z] [INFO] [AndroidTV] Opening app plex:// on 192.168.1.57
Create Remote {"remoteAppLinkLaunchRequest":{"appLink":"plex://"}}
Sending {"remoteAppLinkLaunchRequest":{"appLink":"plex://"}}
192.168.1.57 Receive : {"remoteImeKeyInject":{"appInfo":{"appPackage":"com.plexapp.android"}}}
[2026-08-17T16:53:47.593Z] [INFO] [AndroidTV] Set value <- ext:ext-guim31-gladys-integration-android-tv-remote:tv:192_168_1_57:app = spotify
[2026-08-17T16:53:47.593Z] [INFO] [AndroidTV] Opening app spotify:// on 192.168.1.57
Create Remote {"remoteAppLinkLaunchRequest":{"appLink":"spotify://"}}
Sending {"remoteAppLinkLaunchRequest":{"appLink":"spotify://"}}
192.168.1.57 Receive : {"remoteError":{"value":true,"message":{"remoteAppLinkLaunchRequest":{"appLink":"spotify://"}}}}
[2026-08-17T16:53:47.784Z] [ERROR] [AndroidTV] Protocol error reported by 192.168.1.57: RemoteError {
  value: true,
  message: RemoteMessage {
    remoteAppLinkLaunchRequest: RemoteAppLinkLaunchRequest { appLink: 'spotify://' }
  }
}
192.168.1.57 Remote Connection closed  false
[2026-08-17T16:53:47.788Z] [WARN] [AndroidTV] Connection closed for 192.168.1.57
[2026-08-17T16:53:52.792Z] [INFO] [AndroidTV] Connecting to 192.168.1.57...
Start Remote Connect
192.168.1.57 Remote secureConnect
192.168.1.57 Receive : {"remoteConfigure":{"code1":639,"deviceInfo":{"model":"MIBOX4","vendor":"Xiaomi","unknown1":1,"unknown2":"9","packageName":"com.google.android.tv.remote.service","appVersion":"6.9.906821247"}}}
Create Remote {"remoteConfigure":{"code1":622,"deviceInfo":{"model":"Docker Container","vendor":"Synology","unknown1":1,"unknown2":"1","packageName":"androitv-remote","appVersion":"1.0.0"}}}
Sending {"remoteConfigure":{"code1":622,"deviceInfo":{"model":"Docker Container","vendor":"Synology","unknown1":1,"unknown2":"1","packageName":"androitv-remote","appVersion":"1.0.0"}}}
[2026-08-17T16:53:53.968Z] [INFO] [AndroidTV] Remote session ready with 192.168.1.57
192.168.1.57 Receive : {"remoteSetActive":{}}
Create Remote {"remoteSetActive":{"active":622}}
Sending {"remoteSetActive":{"active":622}}
192.168.1.57 Receive : {"remoteStart":{"started":true}}
192.168.1.57 Receive : {"remoteSetVolumeLevel":{"unknown1":11,"unknown2":9,"playerModel":"MIBOX4","unknown4":1}}
192.168.1.57 Receive : {"remoteImeKeyInject":{"appInfo":{"appPackage":"com.plexapp.android"}}}
[2026-08-17T16:53:56.394Z] [INFO] [AndroidTV] Set value <- ext:ext-guim31-gladys-integration-android-tv-remote:tv:192_168_1_57:app = netflix
[2026-08-17T16:53:56.394Z] [INFO] [AndroidTV] Opening app https://www.netflix.com/title on 192.168.1.57
Create Remote {"remoteAppLinkLaunchRequest":{"appLink":"https://www.netflix.com/title"}}
Sending {"remoteAppLinkLaunchRequest":{"appLink":"https://www.netflix.com/title"}}
192.168.1.57 Receive : {"remoteImeKeyInject":{"appInfo":{"appPackage":"com.netflix.ninja"}}}
[2026-08-17T16:54:07.498Z] [INFO] [AndroidTV] Set value <- ext:ext-guim31-gladys-integration-android-tv-remote:tv:192_168_1_57:key:home = 1
[2026-08-17T16:54:07.499Z] [INFO] [AndroidTV] Sending keycode 3 (home) to 192.168.1.57
Create Remote {"remoteKeyInject":{"keyCode":3,"direction":3}}
Sending {"remoteKeyInject":{"keyCode":"KEYCODE_HOME","direction":"SHORT"}}
192.168.1.57 Receive : {"remoteImeKeyInject":{"appInfo":{"appPackage":"com.google.android.tvlauncher"}}}
[2026-08-17T16:55:27.370Z] [INFO] [AndroidTV] Set value <- ext:ext-guim31-gladys-integration-android-tv-remote:tv:192_168_1_57:power = 0
[2026-08-17T16:55:27.370Z] [INFO] [AndroidTV] Sending keycode 26 (power) to 192.168.1.57
Create Remote {"remoteKeyInject":{"keyCode":26,"direction":3}}
Sending {"remoteKeyInject":{"keyCode":"KEYCODE_POWER","direction":"SHORT"}}
192.168.1.57 Receive : {"remoteStart":{"started":true}}
192.168.1.57 Receive : {"remoteStart":{"started":false}}
[2026-08-17T16:55:42.567Z] [INFO] [AndroidTV] Set value <- ext:ext-guim31-gladys-integration-android-tv-remote:tv:192_168_1_57:app = disneyplus
[2026-08-17T16:55:42.567Z] [INFO] [AndroidTV] Opening app https://www.disneyplus.com on 192.168.1.57
Create Remote {"remoteAppLinkLaunchRequest":{"appLink":"https://www.disneyplus.com"}}
Sending {"remoteAppLinkLaunchRequest":{"appLink":"https://www.disneyplus.com"}}
[2026-08-17T16:55:50.170Z] [INFO] [AndroidTV] Set value <- ext:ext-guim31-gladys-integration-android-tv-remote:tv:192_168_1_57:power = 1
[2026-08-17T16:55:50.170Z] [INFO] [AndroidTV] Sending keycode 26 (power) to 192.168.1.57
Create Remote {"remoteKeyInject":{"keyCode":26,"direction":3}}
Sending {"remoteKeyInject":{"keyCode":"KEYCODE_POWER","direction":"SHORT"}}
timeout
192.168.1.57 Remote Connection closed  false
[2026-08-17T16:56:00.179Z] [WARN] [AndroidTV] Connection closed for 192.168.1.57
[2026-08-17T16:56:05.181Z] [INFO] [AndroidTV] Connecting to 192.168.1.57...
Start Remote Connect
[2026-08-17T16:56:08.408Z] [INFO] [AndroidTV] Set value <- ext:ext-guim31-gladys-integration-android-tv-remote:tv:192_168_1_57:power = 0
[2026-08-17T16:56:08.409Z] [INFO] [AndroidTV] No live session with 192.168.1.57, trying to reconnect...
[2026-08-17T16:56:08.409Z] [INFO] [AndroidTV] Connecting to 192.168.1.57...
[2026-08-17T16:56:09.313Z] [INFO] [AndroidTV] Set value <- ext:ext-guim31-gladys-integration-android-tv-remote:tv:192_168_1_57:power = 1
[2026-08-17T16:56:09.313Z] [INFO] [AndroidTV] No live session with 192.168.1.57, trying to reconnect...
[2026-08-17T16:56:09.313Z] [INFO] [AndroidTV] Connecting to 192.168.1.57...
Start Remote Connect
192.168.1.57 Remote Connection closed  true
[2026-08-17T16:56:14.137Z] [INFO] [AndroidTV] Waking the TV at 192.168.1.57 with a magic packet to 24:18:c6:5a:1b:7e...
192.168.1.57 Error: connect EHOSTUNREACH 192.168.1.57:6466
    at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1611:16) {
  errno: -113,
  code: 'EHOSTUNREACH',
  syscall: 'connect',
  address: '192.168.1.57',
  port: 6466
}
EHOSTUNREACH
[2026-08-17T16:56:19.218Z] [INFO] [AndroidTV] Connecting to 192.168.1.57...

:rocket: Android TV Remote — version 1.2.0

Merci @spenceur pour le retour détaillé et les logs, les trois points sont corrigés :folded_hands:

:bug: Corrigé

  • Lancement d’une application absente de la TV : la TV refusait l’ouverture (remoteError) et coupait la connexion, mais Gladys affichait un succès. L’erreur est désormais remontée clairement (« application probablement non installée »).
  • Wake-on-LAN : le paquet magique partait uniquement vers 255.255.255.255, que beaucoup de réseaux ne délivrent pas. Il part maintenant vers le broadcast du sous-réseau de la TV (ex : 192.168.1.255), puis en secours vers 255.255.255.255 et l’IP de la TV.
  • Mise à jour non proposée : problème de publication de l’image corrigé, les prochaines versions arriveront normalement.

:sparkles: Nouveau

  • « Applications à masquer » : retire du sélecteur les applis que ta TV n’a pas. Ex : Spotify, Arte
  • « Applications personnalisées » : ajoute les tiennes, sous la forme Nom = lien, séparées par des ;. Ex : France TV = https://www.france.tv ; Aptoide TV = aptoidetv://
    → une entrée nommée comme une appli intégrée remplace son lien (pratique si le lien par défaut ne marche pas sur ton modèle).
  • Liste intégrée enrichie : Twitch, Crunchyroll, YouTube Music, Apple TV.

:warning: Après la mise à jour

Réglez les deux nouveaux champs dans la configuration, puis lancez une recherche d’appareils et cliquez sur Mettre à jour sur chaque TV pour récupérer le sélecteur.

Pensez aussi à activer Wake-on-LAN / Réveil réseau dans les paramètres de votre TV (en Wi-Fi : « Wake-on-WLAN »).