Home Assistant offre de nombreuses possibilités pour piloter sa maison connectée. L’un des avantages les plus pratiques, c’est sa compatibilité avec les assistants vocaux comme Amazon Alexa, Google Assistant ou encore Siri.
Si ce serveur domotique local est plus que complet, le coupler avec la charmante voix d’Alexa nous permet d’aller encore plus loin. En effet, notre installation Home Assistant nous permettra de complexifier nos routines et nous pourrons également contrôler avec la voix des appareils nativement incompatibles avec Alexa.
Mise à jour : 01/01/2023 – Modification Account Linking + mise en forme du code YAML avec bouton copier
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é à 7.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 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
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 ».
Donnez lui un nom, par exemple « lesalexiens », puis sélectionnez « Smart Home » et « Provision your own ».
Vous pouvez maintenant créer votre skill en cliquant sur le bouton « Create Skill » en haut à droite de l’écran.
Assurez vous que « v3 (preferred) » soit bien sélectionné.
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 🙂
- Tout d’abord, connectez vous à votre console AWS. Vous n’avez pas encore de compte AWS ? Vous pouvez créer un nouvel 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 » :
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:
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 :
- Connectez-vous à votre interface Home Assistant
- Cliquez sur votre profil (le cercle bleu en bas à gauche de la page)
- Faites défiler jusqu’au bloc Jetons d’accès de longue durée
- Cliquez sur créer un jeton
- Une fenêtre s’ouvrira, donnez-lui un nom (Par exemple : lesalexiens)
- 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 :
Cliquez sur créer un profil de sécurité :
Il vous suffira ensuite de créer le profil comme ci dessous :
- Entrez le nom de votre profil de sécurité souhaité, par exemple « lesalexiens »
- Écrivez une brève description, par exemple « Profil pour l’utilisation de mon serveur home assistant »
- 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.
Configuration du kit Alexa Skills
Depuis une nouvelle fenêtre, ouvrez la console développeur.
Depuis Alexa Skills Kit, sélectionnez votre skill et récupérez votre Skill ID (Collez le dans votre fichier d’aide)
Préparation d’AWS Lambda Access
Connectez vous à votre console AWS en sélectionnant le profil Utilisateur IAM
Une fois connecté à votre console AWS l’onglet Services apparait en haut à gauche de la page. Cliquez dessus puis recherchez IAM
Une fois la page IAM ouverte, cliquez sur Rôles puis ensuite sur Créer un rôle
Vous devriez voir apparaitre cette page :
- Sélectionnez Services AWS
- Cliquez sur Lambda
- 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
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.
Une fois la page Lambda apparue cliquez sur le bouton orange Créer une fonction.
Assurez-vous que la vignette Auteur à partir de zéro est sélectionnée puis définissez les options suivantes :
- 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.
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.
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 :
Sélectionnez Charger un fichier .zip dans Type d’entrée de code. Depuis 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
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:
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)
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.
Depuis la console développeur Alexa, sélectionnez votre Skill et insérez votre ARN dans la zone default endpoint :
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 :
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 ajoutezsmart_home
- Vous pouvez laisser vides les champs
Domain List
etDefault Access Token Expiration Time
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.
Tester notre fonction Lambda
En haut de la page de configuration de votre fonction Lambda, il y a le bouton Tester, cliquez dessus.
Vous pouvez Configurer un nouvel événement de test en utilisant les données suivantes :
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.
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.
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.
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.
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.
162 Commentaires