Intégration ALEXA avec Home Assistant et Nabu Casa

Vous souhaitez pouvoir piloter votre domotique à la voix ? Vous avez choisi l'assistant vocal Amazon Alexa ? vous accédez à Home Assistant via Nabu Casa ? Alors cet article vous concerne.
Intégration ALEXA avec Home Assistant et Nabu Casa

Sommaire

Quand on pense interface à la domotique, on imagine un beau tableau de bord sur mobile ou tablette. Mais pouvoir piloter à la voix via un assistant vocal est également très pratique et sera apprécié par tous les membres de la famille (et un effet waouh garanti).

Voici quelques commandes possibles : "Allume la lumière du salon", "Ouvre le portail", "Tond la pelouse", "active l'ambiance soirée TV"...

Pour que votre maison soit pilotable à la voix, vous avez le choix entre trois solutions :

  • Une solution DYI utilisant Assist, l'agent de conversation de Home Assistant (voir l'article Année de la voix - Chapitre 5)
  • L'assistant de Google : Google Home et les enceintes Nest
  • L'assistant d'Amazon : Amazon Alexa, avec ses enceintes connectées Echo qui sont réputées pour leurs qualités et leurs fiabilités. C'est ce que nous allons utiliser ici.

L'intégration Alexa sera différente si vous avez pris une souscription Nabu Casa ou non. Nous ne pouvons que conseiller la souscription Nabu Casa (75€ par an) : vous soutenez les créateurs de Home Assistant, vous sécurisez votre accès et enfin l'intégration des assistants vocaux est simplifiée.

Dans cet article, nous allons voir comment mettre en place l'intégration Alexa dans Home Assistant grâce à Nabu Casa (et uniquement avec Nabu Casa).

Prérequis
- Home Assistant (Version 2023.5 minimum)
- Compte Nabu Casa
- Compte Amazon

Principe

Dans un premier temps, nous allons indiquer à Home Assistant qu'il doit exposer son interface à Amazon via le compte Nabu Casa. Cela aura pour effet de permettre à Amazon Alexa d'accéder à Home Assistant via Nabu Casa en toute sécurité.

Ensuite, une "skill" Home Assistant est installée dans Alexa. Une "skill" est un module permettant de rajouter à Alexa des fonctions.

Nous allons exposer certaines entités de Home Assistant pour qu'elles soient visibles dans la skill Alexa, en spécifiant les noms que Alexa reconnaitra.

Enfin, nous pourrons paramétrer Alexa pour étendre son champ de compréhension : rajouter des phrases que Alexa sera capable de traiter.

⚠️
Alexa n’est pas disponible en local et reste dépendante du cloud. Cela signifie que :
- Les commandes vocales via Alexa/Echo sont traitées sur les serveurs d'Amazon avant d'arriver à votre Home Assistant
- Les envois d’informations (lecteur multimédia, notifications) vers Alexa/Echo passent par les serveurs d'Amazon avant d'être transmis à votre enceinte
- Les données des capteurs d’Alexa/Echo sont transmises aux serveurs d'Amazon avant d'être disponibles pour votre Home Assistant

l'utilisation d'Alexa implique une dépendance au cloud et nécessite une connexion Internet constante pour fonctionner correctement.

Configurer le compte Nabu Casa

Nous devons aller sur :
Paramètres -> Home Assistant Cloud

Si vous n'êtes pas encore connecté, indiquez vos identifiants Nabu Casa et validez sur connexion :

Un pop-up apparaît et vous demande si vous désirez utiliser Home Assistant Cloud comme assistant vocal. À vous de valider ou non ce choix. Pour Alexa, il n'est pas nécessaire.

Nous pouvons voir que la connexion est bien établie enter notre home assistant et Nabu Casa :

Nous allons maintenant nous rendre dans le menu :
Paramètres -> Assistants vocaux

La partie qui nous concerne pour ce tuto est la partie Alexa : (désactiver la partie Google Assistant si vous n'en avez pas besoin dans votre installation)

Comme vous pouvez le voir, il n'y a aucune entité exposée pour le moment entre home assistant et Alexa, il va falloir que l'on configure ce que nous souhaitons exposer.

Exposer les entités

Il y a deux manières pour faire cela :

  • Mode Visuel/GUI (automatique) : Permet de sélectionner les entités depuis la page web de Home assistant.
  • Mode Manuel (Fichier.yaml) : Permet de configurer dans un fichier.yaml les entités que l'on souhaite exposer à Alexa et de lui indiquer le type d'entité (important pour savoir si c'est un bouton, une lumière, etc...
⚠️
Le mode visuel pour exposer les entités est plus simple, mais a une limitation de taille : il ne permet pas de spécifier les noms des entités.

Le nom exposé dans les assistants vocaux est disponible dans les propriétés de chaque entité, mais cela n'est pas disponible pour Alexa pour l'instant.
Le mode manuel est donc pour l'instant recommandé.

Mode Visuel/Gui

Dans le menu Paramètres -> Assistant Vocaux sélectionner l'onglet "Exposer" :

Dans la nouvelle page qui vient d'apparaitre, sélectionner les entités que vous souhaitiez exposer vers Alexa en cochant le "rectangle" à gauche de l'entité puis sur "EXPOSER" en haut à droite :

Un pop-up apparait pour indiquer si vous souhaitez exposer la/les entités sélectionnées, valide en sélectionnant "EXPOSER"

Vous pouvez vérifier quelles entités sont exposées vers Alexa : une icône est ajoutée sur les entités exposées :

ou depuis le menu Paramètres -> Assistant vocaux -> onglet Assistant :

Mode Manuel

Le mode manuel permet d'inclure/exclure des entités et/ou des domaines d'entités complets (lumière/light, switch, etc.).

Nous allons faire une configuration simple équivalente à la configuration faite en mode visuel.

Pour cela, il faut ajouter des lignes dans votre fichier "configuration.yaml".

Remarque : une bonne pratique est d'utiliser des "packages" : il s'agit de déporter les lignes YAML relatives à Alexa dans un fichier dédié appelé alexa.yaml (ou cloud.yaml), et de le référencer dans votre fichier configuration.yaml. Pour plus d'information (et en attendant un tuto HACF à venir), consulter la doc Package.

alexa:
  filter:
    include_entities:
      - light.interrupteur_chambre_parent
  entity_config:
    light.interrupteur_chambre_parent:
      name: lumiere chambre parent
      description: Interrupteur de la lumière dans la chambre des parents
      display_categories: SWITCH

"Name" est le nom reconnu par Alexa.

"display_categories" permet de spécifier la catégorie reconnue par Alexa, donc les commandes de pilotage (par exemple "allumer" ou "ouvrir" suivant si c'est une lumière ou un volet). Attention donc, cela a une influence sur le fonctionnement d'Alexa et son interaction avec home assistant. Vous devrez faire des tests.

La liste des catégories pour Alexa est disponible sur la documentation d'amazon developper

Skill Home Assistant / Alexa

Il va falloir installer/activer la skill "Home assistant" sur votre application Alexa de votre smartphone ou tablette. Si vous ne l'avez pas fait, installer l'application Alexa.

Ouvrez l'application Alexa et allez sur "plus" puis sur "Skills et jeux" :

Faite une recherche "Home Assistant et sélectionner la skill:

Activer la Skill "Home Assistant"

Indiquer vos identifiants Nabu Casa et valider sur "Sign in" :

Alexa commence l'association de votre compte :

Une fois votre compte Nabu Casa associé à Alexa, valider en cliquant sur "suivant" :

Alexa se met à rechercher automatiquement les équipements :

Alexa vous informe de la découverte d'un équipement sur votre réseau, valider sur "suivant" :

Alexa vous demande dans quel groupe/pièce vous désirez rajouter l'équipement fraîchement trouvé, choisir la pièce souhaitée, ou passer cette étape :

Alexa vous indique que l'entité a bien été intégrer/enregistrer, sélectionner "Terminé" :

Vous devriez voir vos appareils dans l'onglet Appareils et les piloter. Il ne reste qu'à essayer "Alexa, allume la lampe xxxx ".

💡
Vous pouvez tester votre assistant vocal sans enceinte connectée dans un premier temps, juste en appuyant sur le bouton bleu dans l'application, ce qui déclenchera la reconnaissance sur votre mobile.

Les routines Alexa

Ajouter de nouvelles phrases à Alexa

Il est possible de créer des phrases compréhensibles par Alexa. Par exemple "Alexa, tond la pelouse".

Pour cela, on va créer une routine dans l'application Alexa, onglet "Plus" :

  • Renseigner "quand" puis "Voix" avec la phrase qui déclenche l'action
  • Dans "Alexa fera la chose suivante", préciser l'action à exécuter : choisir "Maison Connectée", l'entité qui fera l'action et préciser une commande.
  • Dans "Alexa fera la chose suivante", appuyer sur plus pour ajouter ce que Alexa vous répondra.
  • Dans "Ecouter Alexa depuis", vous devriez avoir sélectionné "l'appareil auquel vous parlez"

Ici un exemple qui permet de déclencher la tonte de la pelouse suivant 3 phrases pré-définies (Momo est le nom du robot tondeuse) :

  • Alexa, tond la pelouse
  • Alexa, demande à Momo de tondre la Pelouse
  • Alexa, démarre Momo

La routine se déclenche quand on dit une des 3 phrases précédente, ensuite l'action "Tond" du device "Tondeuse" est appelée pour lancer la tonte, et enfin Alexa répond "Ok, Momo va tondre la pelouse".

La routine Alexa

Voici la définition des 3 phrases qui déclenchent la tonte dans la gestion d'événements (section "Quand").

Phrases dans la gestion d'événement ("quand...")

Déclencher des actions sur événement

Ici, une routine est déclenchée quand quelqu'un sonne à la porte : un son de carillon est émis 2 fois puis Alexa dit "il y a quelqu'un qui sonne à la porte d'entrée". Toute l'automatisation est dans Alexa et il n'y a ici pas besoin d'automatisation Home Assistant.

Voici un exemple réalisé avec un portier connecté Eufy qui expose dans Alexa les événements qui surviennent.

Voici la routine complète.

Pour cela, dans "Quand", on choisit "Maison connectée", on choisit le périphérique puis l'événement qui déclenche l'action.

Dans cet exemple, on va choisir "Portier", puis "Sonnette" qui est l'événement qui se déclenche quand on sonne sur le portier. On aurait pu aussi choisir d'autres événements comme "Sur mouvement" proposé aussi par le portier.

Conclusion

Le tuto est maintenant terminé, vous pouvez maintenant demander à Alexa d'allumer ou d'éteindre la lumière en lui indiquant le nom de la pièce ou le nom de l'entité rajouter 😁.

Pour aller plus loin, vous pouvez rajouter les fonctions de Media player d'Alexa (un tuto sera prochainement disponible).