Contrôler le Home cinema avec Google HomeIntroductionPetit préalable : le titre est un peu réducteur. Si à la base ce document se veut un tutoriel pour piloter un Home Cinema tel que défini en titre, il permet aussi de piloter tout appareil relié au réseau local, pour autant qu’il soit conçu pour recevoir des requêtes HTTP ou être compatible UpnP. Ce qui permet d’étendre le champ d’action de la box à des appareils qui ne sont pas prévus pour être pilotés par celle-ci.
Il est écrit pour un système domotique comprenant une box eeDomus et une enceinte Google Home. Dans le cas d’autre matériel, se référer à leur documentation et adapter les indications données dans ce document.
AvertissementContrairement à la majorité des tutoriels celui-ci est totalement dépourvu de captures d’écran, et c’est un choix délibéré. Non seulement le document est plus léger, n’aura jamais aucun problème de mise en page quel que soit le support, PDF ou page Web, mais surtout une liste d’instructions précises, éventuellement localisées (comme par exemple cliquer sur le bouton Truc en haut à droite de l’écran) est plus rapide à utiliser et assimiler que l’analyse d’une image.
L’insertion d’une image dans un texte destiné à l’impression se justifie par le fait qu’elle égaie et allège le texte, et conforte le lecteur dans le fait qu’il est sur le bon chemin (encore faut-il qu’il y ait nombre de captures et qu’elles soient pertinentes) mais n’a pas vocation à remplacer une explication claire. Si un lecteur ne réussi pas à exécuter l’action décrite c’est que le rédacteur a mal fait son boulot.
Donc pas d’images dans ce document…
RemerciementsUn immense merci à ElYoM du forum eeDomus qui m’a permis de comprendre tout ça en seulement 2 jours (plus 2 heures..), rédaction de ce tutoriel comprise !
Principe de baseDes déclencheurs sont enregistrés dans le
Cloud. Chaque déclencheur contient une ou plusieurs phrases de déclenchement, une phrase de réponse qui sera prononcée par Google Home, et une action à exécuter, en l’occurrence une requête HTTP à envoyer à la box.
Quand Google Home reçoit la phrase paramétrée dans le déclencheur celui-ci est activé et envoie à la box la requête HTTP associée.
Cette requête contient le nom d’un périphérique domotique et sa valeur. Ce périphérique est du type actionneur, soit HTTP soit UPnP (Universal Plug and Play), et peut avoir plusieurs valeurs. À chaque valeur correspond une action à effectuer, à savoir l’envoi d’une instruction à une adresse IP du réseau local. L’appareil correspondant à cette adresse exécute alors l’instruction.
Si l’actionneur est du type UpnP, les valeurs utilisables ne permettent que d’agir sur un lecteur de media, et la phase de programmation s’arrête avec la création des déclencheurs.
S’il est du type HTTP il peut commander tout type d’appareil prévu pour, téléviseur, amplificateur et surtout ordinateur. Dans ce dernier cas il faudra alors une phase supplémentaire de programmation, à savoir installer et paramétrer un logiciel nommé
EventGhost.
L’obligation de passer par le
Cloud génère fatalement une latence.
Connexion de Google Home à la box domotiqueLe mode opératoire évoluant au fil des mises à jour, il vaut mieux consulter la documentation de la box sur
https://doc.eedomus.com/view/Eedomus_et_Google_Home.
Contrôle via UPnPComme indiqué précédemment, cet actionneur permet uniquement de piloter un lecteur de media, ce qui est déjà un bon début.
Activation de UPnP sur le PCOuvrir le
Lecteur Windows Media.
Cliquer sur
Diffuser en continu et cocher
Autoriser le contrôle à distance....Éventuellement cliquer sur
Plus d’option... pour gérer les autorisations, si le lecteur de media n’est pas le
Lecteur Windows Media, comme par exemple
Kodi. Dans ce cas il faudra avoir configuré ce lecteur pour qu’il puisse être contrôlé à distance, à voir selon la documentation du-dit lecteur.
Activation de UPnP sur la box domotiqueCliquer sur le bouton
Configuration en haut à droite de la page web de la box.
Cliquer sur
Ajouter ou supprimer un périphérique, puis
Ajouter un autre type de périphérique.
Dans la partie
Réseau cliquer sur
UpnP – actionneur puis sur le bouton
Créer.
Ce périphérique sera en fin de liste des périphériques, dans la catégorie
Autres périphériques.
Ensuite le configurer : lui donner un nom explicite (dans ce document ce sera
Mon lecteur media), lui affecter une pièce et surtout saisir l’adresse IP de l’ordinateur où il se trouve.
Dans l’onglet
Valeurs il est possible d’ajouter des actions en cliquant sur le bouton
Ajouter.
Exemple : ajouter l’action
Morceau précédent.
Cliquer sur
Ajouter. Une nouvelle ligne va s’ajouter en fin de la liste des valeurs existantes nommée
Paramètres. Cliquer sur ce libellé et le remplacer par
Morceau précédent. Cliquer sur la case suivante (
URL) et remplacer ce qui s’y trouve par
&previous (ne surtout pas ajouter de retour ligne à la fin de la commande). Cliquer sur l’icône et en choisir une adaptée.
Sauvegarder.
On peut de la même façon définir des niveaux de volume par pas de 10, par exemple.
Création d’une requête HTTP avec eeDomusCliquer sur
Configuration en haut à droite de la page web de la box.
Ensuite cliquer sur
Mon compte pour accéder à la page par défaut nommée
Paramètres.
Cliquer sur
Consulter vos identifiants (7e ligne, API eedomus). Le mot de passe eeDomus est nécessaire pour accéder à cette page.
Cette page permet de visualiser les identifiant et mot de passe API, mais surtout de générer la requête HTTP automatiquement.
Dans le champ
Destination choisir
Local ou
Cloud.
Local générera probablement moins de latence, mais ne sera pas accessible de l’extérieur. Pour l’utilisation avec Google Home il faut choisir le
Cloud.
Dans le champ
Direction choisir
SET.
Dans le champ
Action choisir
periph.value.
Dans le champ
Périphérique choisir
Mon lecteur media.
Dans le champ
Valeur choisir le nom de l’action programmée dans les valeurs du périphérique
Mon lecteur media.
La ligne du dessous affiche la requête HTTP générée qui ressemble à (tout attaché) :
https://api.eedomus.com/set?api_user=XXXXXX&api_secret=XXXXXX&action=periph.value&periph_id=nnnnnn&value=nnCopier cette requête pour la coller ensuite dans le déclencheur IFTTT (voir ci-dessous).
NB 1 : on peut tester cette requête en la collant dans la barre d’URL du navigateur et en envoyant.
NB 2 : il n’est pas nécessaire de refaire cette manœuvre pour toutes les valeurs de l’actionneur, il suffit de modifier manuellement celle-ci en fin de requête, à savoir le chiffre ou nombre situé après
value=.
IfTTTAcronyme de
If This then That, soit
Si ceci alors cela ce qui est la base de tout algorithme.
La création d’une applette consiste à relier deux services. Un service est un programme sachant faire des choses, pour dire simplement. Il en existe une multitude, mais dans le cas du pilotage d’un PC il faut utiliser en entrée le service
Google Assistant pour la reconnaissance et la synthèse vocales et en sortie le service
WebHook qui sait envoyer une requête HTTP.
Ces applettes restent stockées dans le
Cloud, ce qui impose de faire ce choix également dans la création de la requête HTTP.
Le site est uniquement en anglais mais assez facile à utiliser.
Création de compteAvant de pouvoir commencer à créer des applettes, il faut se créer un compte sur le site
https://ifttt.com/. On peut simplement s’identifier avec son compte Google puis se connecter.
Pour toutes les actions décrites ci-dessous il faudra passer par le menu accessible en cliquant sur l’avatar du compte en haut à droite et à gauche du bouton
Explore.
Création de déclencheur (trigger)Dérouler le menu et cliquer sur
Create pour aller sur la page de création qui comprend la phrase :
If +This Then That Cliquer sur
This pour sélectionner le service qui déclenchera l’action. Choisir
Google Assistant (utiliser le champ de recherche pour y accéder rapidement).
Cliquer sur le pavé
Say a simple phrase.
Dans le champ
What do you want to say? saisir la phrase qui déclenchera l’action. Les deux champs suivants permettent de saisir une ou deux phrases alternatives optionnelles. Attention, il y a des mots réservés (
Pause, par exemple). Dans le cas où l’un d’eux serait entré la saisie ne sera pas validée et un message d’erreur indiquera la phrase à changer.
Dans le champ
What do you want the Assistant to say in response? Saisir la phrase que Google Home (ou Google Assistant) prononcera en réponse. Il n’y a pas de phrases alternatives possibles, c’est dommage…
Dans la liste déroulante
Language choisir
Français puis cliquer sur
Create trigger ce qui créera le déclencheur et affichera de nouveau la phrase
If + This Then That.Cliquer sur
That pour sélectionner le service qui exécutera l’action et choisir
Webhook. Celui-ci n’a qu’une seule option, enregistrer une requête HTTP. Cliquer sur le pavé bleu de gauche pour ouvrir la page de saisie .
Coller la requête précédemment générée dans le champ
URL, laisser le champ
Method sur
GET et choisir
application/x-www-form-urlencoded dans la liste déroulante
Content type . Valider en cliquant sur
Save.
Sur la page suivante désactiver l’envoi de notification (sauf si elle est est utile) puis valider.
Modification de déclencheurDans le menu cliquer sur
My applets pour afficher la page qui les liste toutes.
Cliquer sur celle à modifier pour aller sur sa page.
Cliquer sur le bouton
Settings en haut à droite pour afficher son code et le modifier. Contrairement à la saisie qui se fait en trois pages puisqu’il faut sélectionner deux services, la modification se fait sur une unique page, mais on ne peut pas modifier les services.
Utilisation du déclencheurSi l’actionneur choisi est de type UPnP et que tout est correctement configuré, alors c’est terminé. Google Home saura envoyer la bonne instruction au lecteur. La latence est de l’ordre d’une seconde.
Aller plus loinSi pour le service d’entrée IfTTT il faudra toujours utiliser
Google Assistant, en revanche pour le service de sortie on a le choix. Pour le contrôle des appareils reliés au réseau ce sera
WebHook, mais on peut imaginer dire à Google Home d’envoyer un SMS à quelqu’un, ou tout à fait autre chose. Il suffit de faire une recherche avec le mot clé IfTTT pour découvrir l’infinie variété d’actions possibles.
Contrôle via HTTPSi on veut aller plus loin dans l’interactivité, ça devient plus complexe mais pas insurmontable.
Installation et configuration de EventGhostTélécharger
EventGhost sur
http://eventghost.net/#download et l’installer mais ne pas l’ouvrir immédiatement.
Télécharger ensuite le fichier python _init_.py du plugin
Autoremote sur
https://joaoapps.com/autoremote/eventghost/download/Installation d’AutoremoteDans le répertoire
C:\Program Files (x86)\EventGhost\plugins créer (à moins qu’il n’existe déjà) le sous-répertoire
Autoremote et y placer le fichier _init_.py.
Démarrer
EventGhost et cliquer sur
New (menu ou icône), puis sur
Configuration/Add plugin et sélectionner
Autoremote dans la section
Others, et valider.
Ouvrir le port 1818 pour EventGhostPour que la requête puisse être transmise à
EventGhost il est nécessaire d’ouvrir ce port.
Ouvrir le
Panneau de configuration et choisir
Système et sécurité, puis
Paramètres avancés dans le panneau de gauche, ce qui ouvre une nouvelle fenêtre de configuration du pare-feu.
Dans le panneau de gauche choisir
Règles de trafic entrant, puis
Nouvelle règle… dans le panneau de droite, ce qui ouvrira une nouvelle fenêtre. Choisir le bouton radio
Port, puis cliquer sur
Suivant. Par défaut cette fenêtre est positionnée sur
TCP et le curseur placé dans le champ de saisie du port, ce qui est parfait. Saisir
1818 et cliquer sur
Suivant.
Choisir
Autoriser la connexion si elle est sécurisée, ce qui est le cas, puis
Suivant.
Ce nouveau panneau permet de sélectionner le profil de la connexion, lequel dépend de la façon dont le réseau local est configuré. Laisser ce panneau dans son état par défaut n’est pas un mauvais choix.
Enfin, le dernier panneau demande de nommer la règle – c’est au choix de chacun également.
Création d’une routine pour EventGhostOuvrir EventGhost, cliquer sur l’icône
New dans la barre d’outil.
Dans le panneau de droite clic droit sur
Configuration tree pour commencer à entrer des données.
Sélectionner
Add Folder pour créer un répertoire, ce qui permettra d’organiser les routines, mais ce n’est pas indispensable. Nommer ce répertoire.
Clic droit sur le répertoire, et choisir
Add macro … Il n’est pas possible de la nommer à ce stade. Une fenêtre contenant une liste d’actions (avec des sous-listes) s’ouvre. Choisir l’action désirée et renseigner la nouvelle fenêtre de paramètres qui s’ouvre éventuellement (adresse MAC ou autre. Ensuite renommer la macro d’un nom explicite.
Clic droit sur la macro, et choisir
Add Event… Comme c’est l’événement qui déclenchera la macro il faut lui donner un nom explicite (sans espaces) et en respectant une syntaxe bien précise :
AutoRemote.Message.NomEvenement. C’est très exactement ce nom
NomEvenement qui devra être saisi dans la colonne
Paramètres des valeurs de l’actionneur de la box comme expliqué plus loin. Exemples :
PC.Sleep ou
PC.WOL. Cet événement se positionne de lui-même en haut des actions.
On peut enchaîner plusieurs actions dans une même macro, ce qui permet d’effectuer toute une série d’actions avec une seule commande vocale. Par exemple, dire à Google Home : « Jeu vidéo sur la télé » déclenche les actions suivantes : EventGhost ferme certaines applications qui pourraient éventuellement ralentir le PC après avoir vérifié si elles sont bien ouvertes, il active le mode performance de refroidissement du watercooling du PC, allume la télé, bascule celle-ci sur l'entrée vidéo du PC relié en HDMI, bascule la sortie vidéo du PC sur l'écran de la télé uniquement, puis, finalement, lance le jeu vidéo. Tout ça en quelques secondes, pendant qu’on s’occupe d’allumer la manette de jeu…
Dans ce cas de figure, qui enchaîne plusieurs actions sur des logiciels, il est prudent d’ajouter une action Wait de 0,5 s entre chaque action pour éviter les télescopages.
On peut aussi imaginer que le soir une simple commande vocale bascule le logement en mode nocturne, ce qui signifie éteindre ou mettre en veille les appareils électroniques, créer un chemin de lumière vers la chambre à coucher, réduire le chauffage, vérifier que les volets sont bien fermés...
La quantité d’actions possibles est considérable et il n’est pas possible de tout détailler ici, il faut fouiller et faire preuve d’imagination.
Ajouter un actionneur HTTP dans la boxOn peut ajouter cet actionneur à tout moment mais il ne sera utilisable qu’après avoir créé les routines EventGhost, donc autant tout faire dans l’ordre.
Procéder comme pour l’ajout de l’actionneur UPnP. Ce périphérique sera listé dans les Périphériques réseau.
Il convient de le configurer comme l’actionneur UPnP, avec la grosse différence qu’il peut recevoir 3 adresses IP différentes qui seront stockées dans des variables
VAR1 VAR2 et
VAR3. Ces variables seront ensuite utilisées dans la liste des valeurs de l’actionneur (colonne
URL) pour déterminer à quel appareil sera envoyé l’action à effectuer.
S’il y a plus de 3 appareils à piloter il suffit d’ajouter un nouvel actionneur et faire attention à utiliser le bon actionneur lors de la génération des requêtes HTTP.
Il y a également une colonne
Type, qu’il faut laisser sur
GET, et une colonne
Paramètres, qui devra contenir le texte suivant :
?message=NomEvenement (aucune espace et ne surtout pas ajouter de retour ligne à la fin de la commande). Attention :
NomEvenement doit être très exactement ce qui a été saisi dans la macro EventGhost afin que la bonne macro soit envoyée à l’appareil destinataire.
UtilisationComme pour les commandes UpnP, à ce stade tout doit fonctionner.
ConclusionBon amusement ! Et pour les anglophiles : Enjoy!