DomotiqueHome Assistant & AlexaTutoriels domotique

[TUTORIEL] Piloter Home Assistant à la voix grâce à Alexa

Intégration gratuite d'Alexa et Echo dans Home Assistant

Home Assistant offre de nombreuses possibilités pour commander sa maison connectée. L’un des avantages les plus pratiques, c’est sa compatibilité avec les assistants vocaux comme Amazon Alexa, Google Assistant, Siri et Snips.

Ce serveur local est plus que complet, ainsi le coupler avec la charmante voix d’Alexa nous permet d’aller plus loin. En effet, notre serveur home assistant fraichement installé nous permettra de complexifier nos routines et nous pourrons également contrôler avec la voix des appareils nativement incompatible avec Alexa.

Pré-requis pour utiliser Home Assistant avec Alexa

Cette installation est totalement gratuite mais demande un peu plus de temps qu’une intégration habituelle.

Il existe également Nabu Casa qui vous permet de contrôler votre instance depuis l’extérieur ainsi que connecter votre serveur aux différents assistants vocaux. Bien évidemment tout cela est très sécurisé, cependant ce service est proposé à 5€/mois.

Vous souhaitez choisir la solution gratuite ? Parfait ! Voyons cela plus en détail..

Exigences pour votre configuration

  • L’API Alexa Smart Home nécessite que votre instance Home Assistant soit accessible depuis Internet via HTTPS, Duck DNS est la méthode la plus simple.
  • Un compte développeur Amazon
  • Un compte Amazon Web Services (AWS) est requis pour héberger la fonction Lambda pour votre skill Alexa. AWS Lambda est gratuit pour jusqu’à 1 million de demandes et 1 Go de transfert de données sortantes par mois. (Plus que suffisant pour ce que nous allons en faire 🙂 )
  • Télécharger mon document afin de simplifier la recherche de certaines données

Créer une skill Amazon Alexa Smart Home

Une fois votre compte développeur Amazon créé, connectez-vous à la console Alexa développeur puis accédez à l’onglet « skills » si vous ne l’êtes pas, cliquez sur le bouton « Create Skill ».

alexa console create skill

Donnez lui un nom, par exemple « lesalexiens », puis sélectionnez « Smart Home » et « Provision your own ».

alexa smart home skill

alexa smart home skill hassio

Vous pouvez maintenant créer votre skill en cliquant sur le bouton « Create Skill » en haut à droite de l’écran.

alexa developer console smart home assistant

Assurez vous que « v3 (preferred) » soit bien sélectionné.

Vous pouvez laisser cette page ouverte dans un coin de votre navigateur, nous devons y revenir plus tard.

Créer une fonction AWS Lambda

Votre skill Alexa Smart Home déclenchera une fonction AWS Lambda qui traitera la demande. Nous allons copier/coller (bah oui..nous ne sommes pas des développeurs!) un petit morceau de code hébergé en tant que fonction Lambda qui redirigera la demande vers notre serveur Home Assistant, puis l’intégration d’Alexa dans Home Assistant traitera la demande et donnera une réponse. C’est donc notre fonction Lambda qui fournira la réponse à Alexa.

Vous n’avez rien compris ? Ce n’est pas grave, on va copier coller quelques lignes de code et Alexa fonctionnera 🙂

Téléchargement et préparation de notre skill Alexa Adapteur

Commencez par télécharger la dernière version du projet, ce sera notre fonction AWS Lambda.

Le fichier se trouve en bas de la page, choisissez le fichier au format « .zip » :

haaska alexa hassio

Une fois le fichier téléchargé, rendez-vous sur File editor, nous allons ajouter quelques lignes au fichier configuration.yaml :

api alexa smart home

api:

alexa:
  smart_home:

Enregistrez le fichier puis redémarrez votre serveur

Création d’un jeton longue durée Home Assistant

Il vous faudra maintenant obtenir un jeton de longue durée, vous pouvez en créer depuis votre interface Home Assistant très facilement :

  1. Connectez-vous à votre interface Home Assistant
  2. Cliquez sur votre profil (le cercle bleu en bas à gauche de la page)
  3. Faites défiler jusqu’au bloc Jetons d’accès de longue durée
  4. Cliquez sur créer un jeton
  5. Une fenêtre s’ouvrira, donnez-lui un nom (Par exemple : lesalexiens)
  6. Une fois un nom ajouté, un jeton apparaitra. Collez-le dans le fichier d’aide, nous utiliserons ce jeton plus tard.

Configuration de la connexion avec Amazon

Connectez-vous à votre console Amazon développeur puis cliquez sur le lien Login with Amazon :

connexion avec amazon lien vers la page

Cliquez sur créer un profil de sécurité :

créer un profil de sécurité amazon

Il vous suffira ensuite de créer le profil comme ci dessous :

  1. Entrez le nom de votre profil de sécurité souhaité, par exemple « lesalexiens »
  2. Écrivez une brève description, par exemple « Profil pour l’utilisation de mon serveur home assistant »
  3. Ajoutez l’URL que vous souhaitez pour l’avis de confidentialité, par exemple « https://lesalexiens-tutoriel.duckdns.org »

Cliquez sur Enregistrer puis sur votre nouveau profil, cliquez sur le petit engrenage et choisissez Paramètres Web.

Notez l’ID client et le code secret client dans le fichier d’aide mis à votre disposition.

profil ID et code secret client

Gardez cette fenêtre ouverte nous y reviendrons plus tard.

Configuration du kit Alexa Skills

Depuis une nouvelle fenêtre, ouvrez la console développeur.

Alexa skill kit

Depuis Alexa Skills Kit, sélectionnez votre skill et récupérez votre Skill ID (Collez le dans votre fichier d’aide)

alexa skill ID

Actuellement vous devriez avoir 4 valeurs dans votre tableau d’aide

Préparation d’AWS Lambda Access

Connectez vous à votre console AWS en sélectionnant le profil Utilisateur IAM

connexion console AWS

Une fois connecté à votre console AWS l’onglet Services apparait en haut à gauche de la page. Cliquez dessus puis recherchez IAM

IAM service AWS

Une fois la page IAM ouverte, cliquez sur Rôles puis ensuite sur Créer un rôle

rôle IAM aws

Vous devriez voir apparaitre cette page :

  1. Sélectionnez Services AWS
  2. Cliquez sur Lambda
  3. Validez en cliquant sur le bouton Suivant : Autorisations

Vous devriez voir apparaitre cette nouvelle page :

Recherchez le mot basic vous devriez voir apparaitre une seule ligne qui a pour nom AWSLambdaBasicExecutionRole. Cochez cette ligne puis cliquez sur le bouton Suivant : Balises

Sur cette page n’entrez aucune balise et cliquez directement sur le bouton Suivant : Vérification

Nous voici sur la dernière étape de la création de notre rôle. Il vous suffit de lui donner le nom lambda_basic_execution puis valider en cliquant sur le bouton créer un rôle comme ci-dessous :

Votre rôle est créé, retournez sur la page principale en cliquant sur le logo AWS en haut à gauche de votre page

Configuration de la région

Cette étape est très importante pour poursuivre le tutoriel

En haut à droite de l’écran il y a votre identifiant (certainement votre adresse email) et à côté vous trouverez un menu listant différentes régions, sélectionnez la région Europe (Irlande) eu-west-1 et uniquement cette région.

Si vous vivez aux Etats unis ou au Canada sélectionnez la région USA Est (Virginie du Nord) us-east-1

Configuration du service AWS Lambda

Recherchez calcul depuis la barre de recherche du bloc Services AWS. La liste affichera différents services, sélectionnez le service Lambda.

calcul lambda service

Une fois la page Lambda apparue cliquez sur le bouton orange Créer une fonction.créer une fonction lambda

Assurez-vous que la vignette Auteur à partir de zéro est sélectionnée puis définissez les options suivantes :

fonction lambda parametres

  • Nom de la fonction : lesalexiens
  • Environnement d’exécution : Python 3.6
  • Rôle d’exécution : Utiliser un rôle existant
  • Rôle existant : lambda_basic_execution

La fonction est prête vous pouvez la créer en cliquant sur le bouton Créer une fonction.

Configuration du déclencheur Alexa Smart Home

Une fois votre fonction créée, vous devriez voir apparaitre un bloc qui a pour nom Designer. Vous y trouverez un bouton Ajouter un déclencheur,  cliquez dessus puis sélectionnez Alexa Smart Home.

alexa smart home skill id

Une fois Alexa Smart Home sélectionné, collez votre Skill ID (Vous le retrouverez très facilement grâce à votre fichier d’aide)

Assurez-vous que Activer le déclenchement est coché puis cliquez sur le bouton Ajouter.

alexa smart home lambda

Une fois Alexa Smart Home ajouté, cliquez sur le nom de votre fonction (Notre fonction a pour nom lesalexiens). Plus bas dans la page vous trouverez la section Code de fonction :

code de fonction aws lambda

Sélectionnez Charger un fichier .zip dans Type d’entrée de codeDepuis le bouton télécharger sélectionnez le fichier .zip sur votre ordinateur que nous avons téléchargé plus tôt.

Une fois le fichier téléchargé, remplacez ce qui est dans la case Gestionnaire par haaska.event_handler

haaska

Cliquez sur Enregistrer en haut à droite de la fenêtre et attendez quelques secondes que le fichier soit bien chargé.

Configuration de votre fonction

Dans la section Code de fonction, vous trouverez une liste de fichiers. Double-cliquez sur le fichier config.json:

aws token hassio

Et ajoutez les deux attributs suivants :

  • url : L’URL de votre serveur Home Assistant (par exemple ici, https://lesalexiens-tutoriel.duckdns.org:8123/api)
  • bearer_token : Le jeton d’accès longue durée (que vous retrouverez facilement dans votre fichier d’aide)

N’oubliez pas de mettre /api à la fin de votre URL.

Vous pouvez maintenant enregistrer depuis le bouton en haut à droite.

Lier AWS avec le kit Alexa

Une fois le fichier enregistré, revenez en haut de la page. Vous y trouverez un ARN, collez-le dans votre fichier d’aide.

ARN Lambda aws

Depuis la console développeur Alexa,  sélectionnez votre Skill et insérez votre ARN dans la zone default endpoint :

default endpoint aws hassio

Exemple d’ARN à coller dans Default endpoint :

arn:aws:lambda:eu-west-1:1234567891011:function:lesalexiens

Vous pouvez sélectionner la région Europe, India et y coller également votre ARN :

arn-aws-homeassistant

Enregistrez en cliquant sur le bouton SAVE 

Connecter Alexa Smart Home à Amazon

En bas de la console développeur Alexa vous trouverez un bouton Setup account linking

Cliquez sur le bouton puis saisissez les informations suivantes :

  • Authorization URI : https://www.amazon.com/ap/oa
  • Access Token URI : https://api.amazon.com/auth/o2/token
  • Your Client ID : Votre Client ID (Vous le retrouverez dans le fichier d’aide)
  • Your Secret : Votre Secret du client (Vous le retrouverez dans le fichier d’aide)
  • Your Authentication Scheme : HTTP Basic (Recommended)
  • Scope : Créez un scope en cliquant sur Add Scope et ajoutez profile

Une liste d’URI de redirection sera disponible dans la section Alexa Redirect URLs, collez-les dans votre fichier aide.

Enregistrez vos modifications en cliquant sur le bouton save en haut à droite de la page.

Afin de finaliser la configuration, rendez vous sur la console Amazon puis cliquez sur Login with Amazon

Votre skill apparaitra, il faudra alors passez votre souris sur l’engrenage et cliquer sur paramètres web.

Cliquez sur Modifier en bas à droite de votre page :

Collez les trois URI dans la section URL de retour autorisées comme ci-dessous :

Il ne vous reste plus qu’à enregistrer vos modifications.

A ce stade notre configuration est terminée nous allons tester notre fonction puis finir notre installation dans Home Assistant ainsi que dans l’application Alexa.

Tester notre fonction Lambda

En haut de la page de configuration de votre fonction Lambda, il y a le bouton Tester, cliquez dessus.

Créer un nouvel événement de test

Vous pouvez Configurer un nouvel événement de test en utilisant les données suivantes :

test aws fonction lambda

Donnez un nom à votre événement (par exemple, mon événement).

{
  "directive": {
    "header": {
      "namespace": "Alexa.Discovery",
      "name": "Discover",
      "payloadVersion": "3",
      "messageId": "1bd5d003-31b9-476f-ad03-71d471922820"
    },
    "payload": {
      "scope": {
        "type": "BearerToken",
        "token": "VOTRE_JETON_D'ACCES_LONGUE_DUREE"
      }
    }
  }
}

Il vous suffit de créer votre test en cliquant sur Créer en bas de la page. Une fois votre test créé, sélectionnez-le depuis le menu déroulant à gauche du bouton tester.

Cliquez sur le bouton Tester, et si le test réussit, un message vert apparaîtra.

Félicitations! Votre fonction peut communiquer avec votre installation Home Assistant. 🙂

Configuration finale dans Home Assistant

Depuis File editor, accédez à votre fichier configuration.yaml afin de finaliser notre intégration d’Alexa.

Précédemment nous avions les trois lignes suivantes pour Alexa :

api:

alexa:
  smart_home:

Vous devez les modifier afin d’avoir la configuration suivante :

api:

alexa:
  smart_home:
    locale: fr-FR
    endpoint: https://api.eu.amazonalexa.com/v3/events
    client_id: VOTRE_CLIENT_ID
    client_secret: VOTRE_SECRET_CLIENT

vos client_id et client_secret sont disponibles dans votre fichier d’aide. Enregistrez et redémarrez votre serveur Home Assistant.

Ajouter notre skill dans l’application Alexa

Dernière étape! Rendez-vous dans votre application Amazon Alexa

Il vous suffit de vous rendre dans Skill et jeux puis de sélectionnez l’onglet Vos Skills

Votre Skill apparaitra (par exemple, lesalexiens), il vous suffit de cliquer dessus et de vous identifier avec votre compte Amazon. 🙂

Alexa est opérationnelle avec votre serveur Home Assistant. Vous pouvez communiquer avec tous vos appareils, plus de besoin de vous souciez de la compatibilité. 🙂

Dans le prochain tutoriel, nous allons voir comment ajouter nos appareils Echo à Home Assistant afin de contrôler le lecteur multimédia et utiliser le système vocal pour nous alerter ou nous informer. 🙂

Tags
Afficher plus

Aurélien Buret

Passionné de high tech et de domotique, j'ai récemment rejoint la rédaction du site pour partager avec vous ma passion pour la domotique et en particulier mes découvertes sur Home Assistant.

11 commentaires

  1. Bonjour, lorsque je teste ma fonction j’ai le message d’erreur suivant:
    « errorMessage »: « 404 Client Error: Not Found for url: https://rom*****ox.duckdns.org:8123/api/alexa/smart_home« ,

    Une idée du problème?

    – L’adresse est correct car j’accède à ma machine quand je la tape sans le /api/alexa/smart/home.
    – Dans la config yaml de HA, j’ai bien ajoutée les ligne suivante:
    api:

    alexa:
    smart_home:

    Je ne sais pas, à quel moment ça a déconné.

    Merci pour votre aide

    1. Bonjour, j’ai eu la même erreur

      J’ai copié dans le fichier configuration.yaml

      api:

      alexa:
      smart_home:

      au lieu de

      api:

      alexa:
      smart_home:

      L’espace au début de api a posé problème, après suppression de l’espace tout fonctionne parfaitement.

  2. Merci, Tuto très bien fait.
    PEtit conseil pour ceux ayant des pb avec le test ou la recherche de matériel (pb acces token) –> Pensez à vérifier aussi les accès ports de votre box (avec duckdns). 8123 (ou 443….)

  3. Bonjour,

    HA peut être piloter pas Alexa avec la voix. Mais l’inverse est-il possible?

    C’est à dire, HA peut-il piloter les objets connectés via Alexa ?

    Merci d’avance

    1. Bonsoir,
      En général, vos objets connectés à Alexa remonteront automatiquement dans Alexa car elle se sert des mêmes applications. Si vous parlez des hubs ZigBee Echo, par contre, nous n’avons pas de réponse pour l’heure, nous n’avions pas encore pensé à cette possibilité, mais nous allons vérifier ça. 🙂
      Bonne soirée

Laisser un commentaire

Bouton retour en haut de la page
Fermer