IMPORTANT
S’il n’y a pas d’information sur la mise à jour, c’est que celle-ci concerne uniquement de la mise à jour de documentation, de traduction ou de texte.
Ce plugin pour Jeedom permet de gérer ses équipements TV sous Android TV (ou Google TV suivant la génération). Il permet de superviser ces équipements et de leur envoyer des commandes (on/off/hdmi/source/app/netflix, etc…).
Le plugin supporte deux protocoles de connexion :
Les deux protocoles peuvent être utilisés simultanément sur un même équipement selon vos besoins.
L’ensemble est accessible via le dashboard de Jeedom, et peut également être utilisé à travers des scénarios.
Exemples de scénarios :
L’installation des dépendances a été testée sur différents systèmes, dans différentes versions d’OS et de Jeedom. Voici un retour (non exhaustif) de configurations testées :
ATTENTION
Debian 10 étant en fin de vie (obsolète) depuis juin 2024 : L’installation n’est plus garantie sur cet OS. Dis autrement : Si le système est à jour et accède encore à ses dépôts Linux, alors cela devrait fonctionner, dans le cas contraire, il faudra migrer votre OS vers une version à jour (Debian 11 64bits, Debian 12, Raspbian 11 64bits, Raspbian 12)
ATTENTION
L’installation ne fonctionnera pas sur un OS 32 bits, par exemple sur un Raspberry 3B+ avec Raspbian 10 ou 11 (32 bits)
Pour vérifier si votre Jeedom (pour un Raspberry par ex.) tourne sur un OS 32 bits ou 64 bits, vous pouvez vous connecter en SSH dessus et lancer la commande
uname -m, si le résultat estarmv7lvotre OS est 32 bits, si le résultat estaarch64alors votre OS est en 64 bitsVous pouvez également trouver cette information via le plugin
Monitoring, c’est indiqué sur le Dashboard de l’équipementlocal
L’installation des dépendances peut prendre du temps, voici à titre d’exemples les temps d’installation sur différents systèmes :
IMPORTANT
L’installation des dépendances peut prendre du temps (de 2 minutes jusqu’à 40 minutes suivant votre Jeedom) et des ressources (jusqu’à 100% de CPU dans la phase de compilation et 340Mo d’espace disque). Soyez patient (Vous pouvez suivre les phases d’installation des dépendances dans les logs ‘tvremote_update’ du plugin)
PS : L’usage élevé des ressources de votre Jeedom (CPU notamment) ne concerne QUE la phase d’installation des dépendances !
Si le démon refuse de se lancer, c’est qu’il y a certainement eu un problème lors de l’installation des dépendances. (cf. paragraphe suivant)
Dans un premier temps, vérifiez s’il n’y a pas des erreurs dans les logs d’installation des dépendances, via la page de configuration du plugin, en cliquant sur le bouton (bleu) : Tvremote_update
Vérifiez également les logs du démon, toujours sur la page de configuration du plugin, en cliquant sur le bouton (bleu) : Tvremote_daemon
Postez un message sur le forum Community (avec le tag #plugin-tvremote), en fournissant toutes les informations nécessaires :
Tvremote_update et Tvremote_daemon (en texte pré-formaté via le bouton adhoc, mais pas sous forme de captures d’écrans !)Si l’installation des dépendances échoue, ou bien si celles-ci semblent s’être bien déroulées mais que le démon refuse de démarrer, vous pouvez utiliser les options avancées de la page de configuration du plugin pour procéder à la “réparation” de ces dépendances.
Si votre système (OS) sur lequel est installé votre Jeedom n’est pas à jour, il va manquer des librairies systèmes nécessaires au bon fonctionnement de Python et donc du plugin TVRemote.
3 options sont à votre disposition dans la page de configuration du plugin pour réparer les dépendances et mettre à jour votre système (OS) :
Le principe pour utiliser ces options est le suivant :
Sauvegarder en haut à droite du panneau Configuration)
IMPORTANT
Après avoir lancé l’installation des dépendances, ces options que vous avez coché juste avant peuvent se désactiver automatiquement.
C’est tout à fait normal. Cela permet de s’assurer que ces options ne sont utilisées qu’une seule fois lors de l’installation des dépendances
(1) “Force les mises à jour Système” :
Cette option est un équivalent des commandes que vous pourriez également lancer par vous-même en vous connectant en SSH sur l’OS de votre Jeedom : sudo apt update + sudo apt upgrade
IMPORTANT
Il est important de maintenir à jour régulièrement votre système (OS) sur lequel tourne votre Jeedom !
Le système de “mises à jour systèmes” (OS) est là pour “simplifier” les actions de l’utilisateur et lui éviter d’avoir à se connecter sur son système (OS) en SSH pour le mettre à jour.
Cette action de mises à jour automatiques, si elle ne se déroule pas comme attendu, peut corrompre votre système et rendre votre Jeedom totalement inutilisable.
Je ne saurais être tenu responsable si votre Jeedom n’est plus opérationnel après le lancement de ces options !
Il est déconseillé d’utiliser cette option sur une Box Jeedom officielle.
(2) “Force la réinitialisation de PyEnv” :
(3) “Force la réinitialisation de Venv” :
Il est conseillé de procéder en deux temps et ne pas cocher les 3 options simultanément :
N’hésitez pas à demander conseil sur le forum Community de Jeedom en cas de doute sur la procédure à suivre.
IMPORTANT
Toute option suivie d’un “triangle orange (warning)” nécessite le redémarrage du démon après modification
Plugin :
Dépendances :
Démon :
--- pour supprimer le message). Chaque règle peut être activée ou désactivée individuellement sans être perdue. Une suggestion est disponible pour masquer les messages de reconnexion des TV hors ligne.Remote TV (Télécommande)
ATTENTION
Si vous effacez le certificat, vous ne pourrez plus vous connecter à vos TV déjà appairées ! Il vous faudra refaire la procédure d’appairage.
Avant de scanner vos TV, assurez vous qu’elles sont bien allumées, sinon elles risquent de ne pas être détectées.
Vos TV doivent se trouver sur le même réseau que votre Jeedom, sinon elles ne seront pas détectées !
ASTUCE
Si vos TV se trouvent sur un autre réseau que celui de Jeedom, et que vous avez accès à la configuration avancée de votre routeur, vous pouvez activer la diffusion du protocole
mDNS(“multicast DNS” aussi appelé “ZéroConf”) entre vos deux réseaux. Cela permettra à Jeedom de communiquer avec vos TV Google.
Rendez-vous sur la page du plugin et cliquez sur le bouton “Scan” pour détecter automatiquement les TV Google présentes sur votre réseau. Le plugin va alors les ajouter dans Jeedom.
Lorsque vos TV ont bien été détectées, cliquez sur le bouton “Stop Scan” ou attendez 60 secondes pour arrêter automatiquement le Scan et rafraîchir la page.
Vos équipements détectés apparaissent alors sur la page.
Une fois la TV Google ajoutée à Jeedom, vous devez lancer un appairage entre votre TV et Jeedom, pour permettre à ce dernier d’aller se connecter sur la TV et permettre ensuite de récupérer des informations ou encore d’envoyer des commandes dessus.
Le plugin offre deux méthodes d’appairage selon vos besoins :
TVRemote (Recommandé) :
ADB (Android Debug Bridge) :
BON À SAVOIR
Vous pouvez utiliser les deux protocoles simultanément sur un même équipement. Par exemple, utilisez TVRemote pour les commandes classiques et ADB pour des fonctionnalités avancées.
Pour appairer (“Pairing”) une TV avec votre Jeedom en utilisant le protocole TVRemote, rendez-vous sur la page de l’équipement correspondant à votre TV.
Pour appairer la Google TV avec votre Jeedom (procédure à ne faire qu’une seule fois) :
Appairer dans la section TVRemote sur la page Jeedom de votre équipement.Un message va s’afficher sur votre TV, avec un code à noter.
Envoyer
ATTENTION
Vous disposez de 5 minutes pour entrer le code affiché sur votre TV. Passé ce délai, il faudra relancer la procédure d’appairage.
Si tout s’est bien passé, votre TV est maintenant appairée avec votre Jeedom. (Un message s’affiche sur votre TV indiquant que la procédure s’est bien déroulée)
IMPORTANT
Si le code envoyé n’était pas le bon, vous trouverez des messages dans les logs du démon du plugin l’indiquant. La procédure aura alors échoué.
Il faudra alors recommencer la procédure d’appairage.
Pour utiliser le protocole ADB, vous devez d’abord activer le mode développeur sur votre TV Android :
BON À SAVOIR
L’option Autoriser le débogage réseau n’apparaît pas sur tous les modèles de TV. Si elle n’est pas présente dans votre menu, c’est qu’elle est implicitement incluse dans le débogage USB. Il n’y a rien d’autre à faire.
Pour que les commandes (TVRemote ou ADB) fonctionnent lorsque la TV est en veille, assurez-vous que les paramètres d’économie d’énergie de votre TV ne coupent pas complètement la connexion réseau (WiFi ou Ethernet) pendant le mode veille.
Sur la page de l’équipement dans Jeedom :
Appairer dans la section ADB
ATTENTION
Vous disposez de 1 minute pour valider l’autorisation sur votre TV. Passé ce délai, il faudra relancer la procédure d’appairage.
Important : Pensez bien à cocher la case pour autoriser définitivement l’accès ADB, sinon vous devrez revalider l’autorisation à chaque reconnexion.
Le plugin propose deux modes de gestion de la connexion ADB :
Mode À la Demande (Maintenir Connexion : Décoché) - Mode par défaut :
Mode Persistant (Maintenir Connexion : Coché) - Recommandé pour les usages intensifs :
BON À SAVOIR
Le mode persistant vérifie automatiquement l’état de la connexion toutes les 20 secondes pour éviter les déconnexions dues à l’inactivité. En cas de déconnexion (révocation d’autorisation depuis la TV, redémarrage, etc.), le démon tente automatiquement de se reconnecter. Une nouvelle demande d’autorisation apparaîtra sur l’écran de la TV qu’il faudra accepter pour rétablir la connexion.
Le statut d’appairage ADB est affiché sur la page de l’équipement :
ASTUCE
Si l’appairage ADB échoue, vérifiez que :
- Le débogage USB est bien activé sur la TV
- Le pare-feu de votre TV ne bloque pas la connexion
- La TV et Jeedom sont bien sur le même réseau
ATTENTION
La modification de ce paramètre nécessite un redémarrage du démon pour être prise en compte.
Cette option contrôle si le plugin s’enregistre comme clavier virtuel (IME) sur la TV.
Une fois l’appairage réussi (TVRemote et/ou ADB), vous aurez accès à des informations ainsi que la possibilité d’envoyer des commandes à votre TV.
ATTENTION
Les commandes disponibles dans le plugin ne seront certainement pas toutes opérationnelles. Cela dépend des modèles de TV, de leur génération mais également du constructeur et de la manière dont il a implémenté les protocoles “Remote TV” et “ADB”
Commandes disponibles via le Dashboard :
Liste des commandes :
En Ligne : Indique si la TV est accessible sur le réseauPower : Permet d’allumer et d’éteindre la TVVolume : Indique le volume actuel de la TV (lorsque c’est supporté, ne fonctionne pas sur une Freebox par ex.)Mute : Permet de basculer en mute / non mute (permet de couper le son)Menu : Accède au menu principal de la TVVolume Down : Baisse le sonVolume Up : Augmente le sonSettings : Accède au menu Configuration de la TVHome : Bouton Home (page d’accueil)Back : Bouton Back (retour arrière)Up/Down/Right/Left : Permet de naviguer dans les menus de la TVCenter : Bouton OK
Channel - : Chaîne - (Passe à la chaîne précédente)Channel - : Chaîne + (Passe à la chaîne suivante)Input : Accède au menu Sources (lorsque supporté)HDMI 1/2/3/4 : Accède à la source HDMI 1/2/3 ou 4Touches multimédia : Permet de contrôler les medias (suivant/précédent/play/pause/stop)Liste des applications :
OQEE : Lance l’application de Free (OQEE)YouTube : Lance l’application YouTubeNetflix : Lance l’application NetflixPrime : Lance l’application Amazon PrimeDisney+ : Lance l’application Disney+Canal+ : Lance l’application Canal+Plex : Lance l’application PlexApple TV : Lance l’application Apple TVMolotov TV : Lance l’application Molotov TVOrange TV : Lance l’application Orange TVCette commande personnalisable permet d’envoyer un code (correspondant à une action ou une touche de la télécommande) ou une chaîne de caractères sur la TV ciblée.
ASTUCE
Les codes correspondent à ceux définis dans le protocole “Android TV Remote 2”.
Le texte à envoyer doit être préfixé avec la chaîne
text:suivi des caractères souhaités.
CHOIX DU PROTOCOLE
Par défaut, cette commande utilise le protocole TVRemote. Vous pouvez forcer l’utilisation du protocole ADB en ajoutant
"protocol":"adb"dans le champ “Options” de la commande.Exemple : Pour envoyer le code KEYCODE_POWER via ADB, ajoutez dans “Options” :
"protocol":"adb"
Exemple de code à rentrer dans la commande :
Exemple de texte à envoyer via la commande :
text:Mon super texte à envoyerExemple d’usage dans un scénario :
Cette commande personnalisable permet d’envoyer l’URI ou le nom du paquet Android à lancer sur la TV ciblée.
Exemple d’une URI et d’un nom de paquet pour cette commande :
CHOIX DU PROTOCOLE
Par défaut, cette commande utilise le protocole TVRemote. Vous pouvez forcer l’utilisation du protocole ADB en ajoutant
"protocol":"adb"dans le champ “Options” de la commande.Exemple : Pour lancer Netflix via ADB, ajoutez dans “Options” :
"protocol":"adb"Note : L’utilisation du protocole ADB nécessite que l’appairage ADB soit activé et fonctionnel.
Exemple d’usage dans un scénario :
ATTENTION
Cette commande nécessite que l’appairage ADB soit activé et fonctionnel.
Cette nouvelle commande permet d’exécuter des commandes shell personnalisées directement sur votre TV Android via le protocole ADB. Le résultat de la commande est affiché dans la colonne dédiée de l’onglet Commandes.
Exemples d’utilisation courante :
Obtenir la version Android de la TV :
getprop ro.build.version.release
Voir le modèle de la TV :
getprop ro.product.model
Lister les applications installées :
pm list packages
Simuler l’appui sur une touche (Home) :
input keyevent KEYCODE_HOME
Simuler l’appui sur la touche Power :
input keyevent KEYCODE_POWER
Lancer une application (exemple : Netflix) :
am start -n com.netflix.ninja/.MainActivity
Lancer YouTube :
am start -a android.intent.action.VIEW -d https://www.youtube.com
Changer vers l’entrée HDMI 1 :
am start -a android.intent.action.VIEW -d content://android.media.tv/passthrough/com.android.tv%2F.TvInputService%2FHW1
Changer vers l’entrée HDMI 1 (TV Philips) :
am start -n org.droidtv.playtv/.PlayTvActivity -a android.intent.action.VIEW -d "tv://com.google.android.tv/.dtvinput/.TvInputServiceHW5/5"
Lancer une application avec Monkey (exemple : YouTube avec 1 événement) :
monkey -p com.google.android.youtube.tv -c android.intent.category.LAUNCHER 1
Redémarrer la TV :
reboot
BON À SAVOIR
Le résultat de la commande shell s’affiche automatiquement dans l’interface après exécution via la commande info “Sortie ADB Shell”. Vous pouvez ainsi vérifier que la commande s’est bien exécutée et consulter son résultat.
Cette commande info peut également être utilisée dans vos scénarios pour récupérer et exploiter le résultat d’une commande ADB Shell.
Attention : Les commandes ADB Shell ont un accès direct au système Android de votre TV. N’utilisez que des commandes dont vous connaissez l’effet. Des commandes inappropriées peuvent affecter le fonctionnement de votre TV.
Exemple d’usage dans un scénario : Vous pouvez utiliser cette commande pour automatiser des actions simples comme redémarrer la TV à une heure précise ou vérifier sa version Android.
Cette commande permet de rafraîchir les commandes info personnalisées qui utilisent des commandes ADB Shell.
Lorsque vous créez des commandes info avec des commandes ADB Shell personnalisées, vous pouvez utiliser cette commande pour forcer la mise à jour de toutes ces commandes en une seule fois, sans avoir à les exécuter individuellement.
Vous pouvez l’utiliser dans un scénario pour mettre à jour périodiquement les informations récupérées via vos commandes ADB Shell personnalisées.
Le plugin permet de créer vos propres commandes personnalisées de type ADB Shell ou Refresh Cmd directement depuis l’onglet Commandes de votre équipement.
Les commandes de type “ADB Shell” vous permettent d’ajouter des commandes action qui exécutent des commandes shell spécifiques. Vous pouvez également créer des commandes info qui récupèrent et affichent automatiquement le résultat d’une commande shell.
Pour créer une commande ADB Shell personnalisée :
getprop ro.product.model)Exemples de commandes info personnalisées :
getprop ro.build.version.release
getprop ro.product.model
df -h /data
dumpsys wifi | grep "mNetworkInfo"
BON À SAVOIR
Les commandes info de type ADB Shell sont automatiquement rafraîchies lorsque vous utilisez la commande “Refresh”. Cela vous permet de mettre à jour toutes vos informations personnalisées en une seule action, idéal dans un scénario périodique.
Les commandes de type “Refresh Cmd” permettent de créer des commandes action qui rafraîchissent une commande info spécifique, plutôt que toutes les commandes info en même temps.
Pour créer une commande Refresh Cmd personnalisée :
BON À SAVOIR
Les commandes Refresh Cmd sont utiles lorsque vous souhaitez rafraîchir une commande info spécifique à la demande ou dans un scénario, sans avoir à rafraîchir toutes les autres commandes info en même temps. Vous pouvez créer autant de commandes Refresh Cmd que nécessaire, une pour chaque commande info que vous souhaitez pouvoir rafraîchir individuellement.
Cette commande personnalisée permet d’utiliser toutes les commandes en mode “texte” via une syntaxe JSON structurée. Elle est particulièrement utile dans les scénarios pour offrir une personnalisation et un contrôle plus fin sur les commandes.
Utilisation :
Dans un scénario, ajoutez une commande Action de type Message, sélectionnez la commande “Custom Cmd” de votre équipement, et entrez votre commande au format JSON dans le champ message.
Variables disponibles :
"action" (obligatoire) : L’action à exécuter"value" (optionnel) : La valeur/paramètre de l’action"protocol" (optionnel) : Le protocole à utiliser ("tvremote" ou "adb")
BON À SAVOIR
Le paramètre
"protocol"permet de forcer l’utilisation d’un protocole spécifique. Par défaut, les commandeskeycodeetappcodeutilisent le protocole TVRemote, mais vous pouvez forcer l’utilisation d’ADB en ajoutant"protocol": "adb". Pour les commandesshell, le protocole ADB est obligatoire.
Actions possibles :
Pour "action": "keycode", valeurs possibles de "value" :
"power", "volume_up", "volume_down", "mute_on", "mute_off"
"menu", "home", "back", "up", "down", "left", "right", "center"
"media_previous", "media_rewind", "media_play", "media_pause", "media_stop", "media_next", "media_forward"
"channel_up", "channel_down", "input", "settings"
"hdmi1", "hdmi2", "hdmi3", "hdmi4"
Pour "action": "appcode", valeurs possibles de "value" :
"oqee", "youtube", "netflix", "prime", "disney+", "canal+", "plex", "appletv", "molotov", "orangetv"
Pour "action": "shell" (nécessite ADB) :
"value" : La commande shell à exécuter"protocol": "adb" : Obligatoire pour l’exécution de commandes shellExemples d’utilisation :
Allumer/éteindre la TV :
"action": "keycode", "value": "power"
Lancer Netflix :
"action": "appcode", "value": "netflix"
Augmenter le volume via ADB :
"action": "keycode", "value": "volume_up", "protocol": "adb"
Exécuter une commande shell ADB :
"action": "shell", "value": "reboot", "protocol": "adb"
BON À SAVOIR
La commande Custom Cmd est idéale pour créer des scénarios complexes où vous avez besoin d’enchaîner différentes actions de manière dynamique ou de forcer l’utilisation d’un protocole spécifique.
Autres variables :
Voici des exemples d’usage de la commande “Custom Cmd” :
TVRemote est le protocole officiel Google pour contrôler les Android TV, similaire à une télécommande virtuelle. C’est la méthode recommandée pour un usage standard.
ADB est un outil de débogage Android qui donne accès à des fonctionnalités système plus avancées. Il est utile pour :
Oui ! Vous pouvez activer et utiliser simultanément TVRemote et ADB sur un même équipement. Par exemple :
Si votre TV Android ne supporte pas le protocole TVRemote, elle ne pourra malheureusement pas être détectée par le scan automatique du plugin, car celui-ci se base uniquement sur le protocole TVRemote pour détecter les équipements.
À l’heure actuelle, l’utilisation d’ADB seul (sans TVRemote) n’est pas possible. Le support d’une détection basée uniquement sur ADB pourrait être envisagé dans une future version du plugin.
Vérifiez que :
Si le problème persiste, consultez les logs du démon pour plus d’informations.
Voici une liste de commandes ADB Shell courantes et utiles :
Informations système :
getprop ro.build.version.release : Version Androidgetprop ro.product.model : Modèle de la TVgetprop ro.product.manufacturer : Fabricant de la TVgetprop ro.serialno : Numéro de sérieGestion des applications :
pm list packages : Liste toutes les applications installéespm list packages -3 : Liste uniquement les applications tiercespm list packages | grep [nom] : Rechercher une application spécifiqueGestion de la TV :
reboot : Redémarrer la TVdumpsys power | grep "mWakefulness" : État d’éveil de la TVRéseau :
ifconfig wlan0 : Informations WiFiping -c 4 8.8.8.8 : Test de connectivité réseauEspace de stockage :
df -h : Espace disque disponibledu -sh /data/app/* : Taille des applications
ATTENTION
Évitez les commandes qui modifient le système (comme
rm,su,chmod, etc.) sauf si vous savez exactement ce que vous faites. Ces commandes peuvent rendre votre TV instable.
ADB donne un accès système à votre TV Android. Utilisé correctement avec des commandes appropriées, il est parfaitement sûr. Cependant, évitez d’exécuter des commandes dont vous ne comprenez pas l’effet, car elles pourraient affecter le fonctionnement de votre TV.
Non, l’activation d’ADB n’augmente pas significativement la consommation de ressources du démon. Les connexions ADB sont ouvertes uniquement lors de l’exécution de commandes.