Je vais vous conter ici mon projet de télécommande ultime, je ne savais pas où le mettre ailleurs, voici donc
Un peu d’histoire
Genèse du projet REmote de ses premiers germes à nos jours.
La genèse
L’idée d’une télécommande ultime est ancienne, et d’autres s’y sont attachés avant moi, d’ailleurs, je ne prétends pas que ma solution soit la meilleure : c’est avant tout celle qui me convient, et qui correspond surtout à mes capacités techniques, en terme de réalisation. J’ai possédé depuis longtemps des télécommandes programmables. D’abord plutôt simples (aucune interface, peu de mémoire, capacité d’apprentissage limitée), puis plus évoluées comme la Philips Pronto (et ses cousines), qui fut d’ailleurs longtemps ce que je considérais comme la télécommande ultime, car permettant de ranger dans un placard toutes les autres télécommandes, et permettant, surtout, de configurer ses écrans, quasiment sans limitation de mémoire (en tout cas je ne les ai jamais atteintes). Malheureusement, ce genre de télécommande était relativement cher, encore plus cher si l’on voulait disposer d’un écran tactile en couleur, qui, dans tous les cas, restait de taille réduite, obligeant à créer des écrans multiples avec l’obligation de naviguer de l’un à l’autre en permanence.
Mais surtout, l’arrivée d’appareils munis de télécommandes Radio ou Bluetooth obligeaient à nouveau de devoir encombrer sa table basse ou son canapé d’autres télécommandes, non supportées par les télécommandes programmables basées sur l’infrarouge. Mon idée initiale était donc plutôt ambitieuse : développer une télécommande qui permettrait de reproduire aussi bien les signaux infrarouges, que Bluetooth, et permettant d’utiliser une API web telle que celle fournie par la Freebox V5 puis V6. Concernant l’infrarouge, mon choix s’est rapidement porté sur le dispositif USB-Uirt, petit boitier se connectant sur un port USB, et qui, grâce à un driver et une API .net accessible, m’a rapidement permis de faire mes premiers tests.
A l’époque, le Tablet-PC était à la fois balbutiant et agonisant. Le matériel d’alors ne permettait pas d’obtenir un compromis puissance/autonomie très satisfaisant, surtout dans un encombrement réduit. J’optais toutefois pour un UMPC Samsung Q1 Ultra, petit portable de 7 pouces avec écran tactile résistif.
Mais à l’époque, les add-on Tablet-PC de Windows étaient plutôt limités, et la prise en charge native des gestes, et notamment du déplacement au doigt (sans avoir à utiliser des ascenseurs) étaient réduits, ou carrément inexistants. Je m’attelais donc au développement de classes d’objets Windows Forms (boutons, panneaux, etc…) qui me permettraient d’utiliser l’écran tactile de façon plus confortable.J’obtins assez vite un résultat satisfaisant.
Parallèlement à cela, je me lançais dans la recherche du moyen de faire en sorte qu’un ordinateur muni d’un adaptateur Bluetooth se comporte non pas comme un « récepteur », mais comme un « appareil », dans le but de lui faire communiquer avec le récepteur (une PS3 par exemple) en lui faisant croire être une télécommande. Malgré de nombreuses heures de recherche et la découverte de pistes intéressantes, je n’ai malheureusement pas eu de succès dans cette démarche, et me suis décidé à laisser cette partie pour plus tard. Il fallait les bon drivers, disposant de la bonne API, et de la documentation adéquate, n’ayant pas réussi à trouver ou découvrir ce support natif dans le framework .Net.
Enfin, toujours en parallèle, je me suis attelé au développement d’un outil qui permettrait la configuration de ma télécommande, en permettant la création des appareils, l’apprentissage de leurs codes (infrarouge, ou tout autre type que je pourrais être amené à supporter plus tard), la réalisation d’écran, etc. Je me suis inspiré pour cela de l’éditeur des Philips Pronto, en adaptant largement ses principes, de façon à les rendre à la fois plus génériques (type de signal) et plus simples (notamment pour rendre l’édition moins fastidieuse).
Encore une fois, j’arrivais assez vite à un premier embryon sympathique… mais l’ensemble devra rester en plan pendant près de 8 ans…
Entre temps, la révolution du tactile avait eu lieu, réveillant l’idée du Tablet PC après une véritable renaissance via les téléphones. Windows gérait désormais nativement le tactile, de véritables tablettes permettaient de faire tourner Windows de façon confortable, et pendant plusieurs heures… mais cela remettait en question un de mes choix initial qui était, à l’origine, d’intégrer le dispositif USB-Uirt dans le boitier de mon Q1 (qui faisait bien 1,5 cm d’épaisseur…). Si je n’avais pas vraiment avancé sur la partie logicielle de mon projet, j’étais aussi bloqué par certains des choix initiaux, sauf à déporter la partie émission infrarouge dans un autre appareil, qui se devrait donc d’être à la fois discret, et peu onéreux.
L’arrivée du Raspberry PI m’ouvrit de nouvelles perspectives, d’autant que je savais l’USB-Uirt supporté par des applications linux. Encore une fois, j’échouais à trouver une solution satisfaisante (et compatible avec mes compétences, mon temps libre… et ma motivation). Je laissais tomber cette voie qui aurait nécessité, faute d’une API documentée, l’utilisation d’autre logiciels existants peu adaptés, et l’utilisation d’un codage infrarouge RAW qui nécessitait lui le développement d’un convertisseur pour le format que j’avais décidé d’utiliser. En effet, j’avais décidé d’utiliser dès le début le format utilisé par les Philips Pronto, sachant l’existence d’une base de données facilement accessible de codes d’une multitude d’appareil, et je ne me sentais pas le courage de remettre en question ce choix.
Puis, récemment, l’arrivée sur la marché de mini PC de plus en plus abordables, tournant sous Windows, et consommant suffisamment peu d’électricité, me permit de trouver enfin la solution qui m’interdisait tout faux prétexte pour remettre à plus tard ce projet presque mort.
La solution s’éclaircissait donc, avec l’utilisation d’une tablette Windows, affichant les écrans configurés par mon éditeur, et communiquant, via wifi, avec un petit « serveur » de télécommande, convertissant les commandes envoyées par la tablette, en signal infrarouge. Il ne restait plus qu’a développer un petite couche de communication par socket, l’intégrer comme un nouveau mode d’adressage de commandes infrarouges à mon logiciel de télécommande et mon éditeur, et développer un petit logiciel serveur. Je tâtonnais un peu, avant de remettre à nouveau les choses en plan quelques long mois, y revenant de temps en temps sans vraiment avancer.
Enfin, à l’automne 2016, des mini-pc vraiment abordables apparaissent, je saute le pas en achetant un Voyo 2, et, depuis, les choses ont plutôt bien avancé…
Solution
La solution actuelle a récemment beaucoup évolué, et s’articule autour de 3 composants logiciels :
Un éditeur (R.E.mote Editor), permettant d’éditer une configuration de télécommande (définition des appareils, des fonctions, apprentissage des codes de télécommande, design des boutons et des écran, etc…)
Une application de télécommande (R.E.mote), qui interprète la configuration de télécommande pour afficher les écrans définis dans l’éditeur, et envoyer les commandes au serveur via le réseau local.
Une application serveur (R.E.mote Server), destinée à être installée sur le mini PC sur lequel le matériel nécessaire est aussi connecté, et qui reçoit les commandes envoyées par l’application cliente, et les route vers le matériel correspondant.
L’application de télécommande ne fonctionnant que sous Windows, l’éditeur permet de générer des pages html correspondant aux écrans de l’application, afin d’obtenir le même résultat depuis n’importe quel navigateur Web, sous n’importe quel OS (Android, IOS, MacOS…). Le serveur intègre donc un mini serveur web, pour communiquer avec le navigateur (envoi des pages et réception des commandes sous forme de web service) et réagir aux commandes, tout comme si elles provenaient de l’application de télécommande. Outre le dispositif USB-Uirt, permettant au serveur de générer des signaux infrarouges en fonction des commandes reçues, le dispositif CEC Adapter de Pulse-8 est désormais aussi supporté afin de pouvoir envoyer des commandes d’allumage ou de mise en veille à destination d’un appareil particulier, via la prise HDMI et le protocole CEC (je pense à terme gérer l’envoi de la totalité des touches virtuelles définies par le protocole CEC).
R.E.mote Editor
Avant d’aller plus loin, quelques images de l’éditeur de configuration…
L’application de télécommande
Quelques images de l’application de télécommande, sur une tablette Dell Venue 8 pro. Le menu a évolué depuis.
Affichage des écrans dans un navigateur
La génération des pages html a été peaufinée pour s’adapter de façon plus efficaces à toutes les tailles d’écran.
Le logiciel serveur
La suite bientôt.