Forum eedomus
http://forum.eedomus.fr/

Google Home et Home Cinema
http://forum.eedomus.fr/viewtopic.php?f=58&t=9342
Page 1 sur 1
Auteur:  danielc [ 17 Fév 2020 10:43 ]
Sujet du message:  Google Home et Home Cinema

Bonjour à tous,
Je me suis offert une enceinte Google Home pour pouvoir piloter mes éclairages à la voix mais pas seulement, je voulais aussi piloter le lecteur de media qui est sur mon PCHC. Plusieurs personnes m'ont affirmé que c'était possible mais personne n'a su m'expliquer correctement comment faire. Et les tutos sur le sujet sont rares et peu explicites.
J'ai fini par trouver de l'aide ici, et comme c'est assez touffu et rien moins qu'évident, j'ai pris des notes au fur et à mesure que je découvrais (souvent à tâtons) et finalement j'ai transformé tout ça en tuto.
Je voulais le joindre au format PDF mais ce n'est pas autorisé, dommage.
Auteur:  danielc [ 17 Fév 2020 10:43 ]
Sujet du message:  Re: Google Home et Home Cinema

Contrôler le Home cinema avec Google Home

Introduction
Petit 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.

Avertissement
Contrairement à 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…

Remerciements
Un 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 base
Des 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 domotique
Le 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 UPnP
Comme 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 PC
Ouvrir 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 domotique
Cliquer 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 eeDomus
Cliquer 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=nn
Copier 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=.

IfTTT
Acronyme 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 compte
Avant 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éclencheur
Dans 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éclencheur
Si 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 loin
Si 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 HTTP
Si on veut aller plus loin dans l’interactivité, ça devient plus complexe mais pas insurmontable.

Installation et configuration de EventGhost
Té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’Autoremote
Dans 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 EventGhost
Pour 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 EventGhost
Ouvrir 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 box
On 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.

Utilisation
Comme pour les commandes UpnP, à ce stade tout doit fonctionner.

Conclusion
Bon amusement ! Et pour les anglophiles : Enjoy!
Page 1 sur 1 Le fuseau horaire est UTC+1 heure