Piloter Home Assistant avec Amazon Alexa gratuitement

Tutoriel de création d'une skill Alexa pour Home Assistant

Home Assistant offre de nombreuses possibilités pour piloter sa maison connectée, mais son assistant vocal est encore franchement limité. Heureusement, il est possible de connecter sa domotique aux principaux assistants vocaux du marché tels que Amazon Alexa, Google Assistant ou encore Siri.

Bien que ce serveur domotique local soit plus que complet, le coupler avec la charmante voix d’Alexa va nous permettre d’aller encore plus loin. En effet, notre installation Home Assistant nous permettra de complexifier nos routines et nous pourrons également contrôler à la voix des appareils nativement incompatibles avec Alexa.

Mise à jour :

  • 02/01/2024 – Avertissements de sécurité
  • 01/01/2023 – Modification Account Linking + mise en forme du code YAML avec bouton copier

Votre instance Home Assistant doit être accessible depuis Internet. Consultez notre tutoriel ci-dessous avant de poursuivre cette installation.
À LIRE :
Comment accéder à Home Assistant depuis l'extérieur

Pré-requis pour utiliser Home Assistant avec Alexa

Cette intégration gratuite d’Alexa à Home Assistant demande un peu plus de temps qu’une intégration habituelle. Attention, elle nécessite d’exposer votre instance sur Internet, vous risquez donc d’être la cible d’attaques. Si vous ne savez pas monitorer et sécuriser votre réseau local, nous vous conseillons vivement de vous tourner vers l’abonnement Nabu Casa qui vous permet de contrôler votre instance depuis l’extérieur et de connecter votre serveur aux différents assistants vocaux. Ce service est proposé à 7.5€/mois ou 75€/an, mais c’est un gage de sécurité.

Vous souhaitez toujours continuer avec 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 jusqu’à 1 million de demandes et 1 Go de transfert de données sortantes par mois. C’est plus que suffisant pour ce que nous allons en faire !
  • Télécharger notre document afin de simplifier la recherche de certaines données
Attention, vous devez créer cette skill avec le compte principal Amazon de votre installation Alexa. Autrement dit, utilisez la même adresse email pour votre compte développeur que pour votre compte Amazon. Sinon vous ne trouverez pas la skill que nous allons créer, car nous n’allons pas la publier et la rendre accessible à tous, simplement l’utiliser depuis la rubrique Dev de notre compte.

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 🙂

Ne vous inquiétez pas du coût si votre compte dépasse les 12 premiers mois gratuit. Amazon Web Services (AWS) fournit jusqu’à 1 million de demandes Lambda, 1 Go de données sortantes et toutes les données entrantes gratuitement, chaque mois, pour chaque utilisateur.

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://[YOUR HOME ASSISTANT URL]/auth/authorize
  • Access Token URI : https://[YOUR HOME ASSISTANT URL]/auth/token
  • Your Client ID : saisissez https://layla.amazon.com/ si vous êtes en Europe
  • Your Secret : Votre Secret du client (Vous le retrouverez dans le fichier d’aide)
  • Your Authentication Scheme : sélectionnez Credentials in request body , Home Assistant ne supporte plus HTTP Basic (Recommended)
  • Scope : Créez un scope en cliquant sur Add Scope et ajoutez smart_home
  • Vous pouvez laisser vides les champs Domain List et Default Access Token Expiration Time

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

La dernière étape va consister en l’activation de notre skill dans notre application Alexa. En effet, nous n’allons pas publier notre skill, cela n’aurait aucun sens et pourrait même être dangereux. De toute façon, elle serait sans aucun doute retoquée par les équipes d’Amazon qui ont un processus de validation très rigoureux.

Rendez-vous dans votre application Alexa, allez sur Plus en bas à droite, puis Skills et jeux et sélectionnez Vos Skills puis Dev.

Attention, vous devez évidemment avoir créé cette skill avec votre compte principal.

Votre Skill apparaitra sous le nom que vous lui avez attribué (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.

À LIRE :
Vos Amazon Echo en lecteurs multimédia sur Home Assistant

 

Plusieurs plumes de passionnés d'Alexa pour vous concocter des articles à 4 mains ou plus... Une écriture collaborative pour aborder les sujets les plus pointus ou transversaux, les meilleurs bons plans domotique et maison connectée du web, et bien plus encore...