Home Assistant, utiliser Alexa

Nous allons voir comment utiliser Alexa pour commander à la voix sa box domotique. D’ailleurs, note dès maintenant que cette configuration est fastidieuse, longue. Tu n’auras pas besoin de grandes connaissances mais tu auras besoin de méthodologie.

En passant, il est possible d’utiliser Home Assistant Cloud, la configuration sera automatique et bien plus simple mais ce service coutera 5 dollars par mois.

Pour écrire cet article, j’ai suivi la documentation de Home Assistant ainsi que la documentation Haaska. Ce sera plus une traduction dans laquelle, j’incorporai des captures ainsi que des commentaires.

Il y a deux parties ici, la première très grosse concerne la mise en place et configuration, la seconde, bien plus courte (si tout fonctionne) pour le test de la communication entre Home Assistant, Alexa (en gros, toute la partie Haaska, fonction et skill).

Mise en place

Les pré-requis

Afin de pouvoir mettre en place Alexa, il faut que Home Assistant soit ouvert à l’extérieur en utilisant un certificat SSL. SI ce n’est pas fait, tu peux suivre cet article : mise en place de HTTPS.

Il te faudra deux comptes (nous allons voir la création ensuite) :

  • un compte développeur Amazon
  • un compte des services web Amazon (AWS)

Création du compte développeur Amazon

Tout d’abord, si cela n’est pas encore fait, va te créer un compte développeur sur cette page.

Une fois l’inscription réalisée, rends toi sur cette page, c’est sur cette page que les skills Alexa seront.

Crées une nouvelle skill :

Maintenant donne un nom à ton skill (par exemple « Home Assistant ») et sélectionnes la langue par défaut :

Pour finir, tu sélectionnes « Smart Home » et « Provision your own » :

Tu peux enfin cliquer sur créer ta skill en haut à droite.

Dans la nouvelle page, assures-toi que la version « v3 » est bien cochée :

Maintenant que la base de ta skill est créée, tu peux garder la page ouverte, on y reviendra.

Création du compte des services web Amazon (AWS)

Après avoir créer ton compte AWS ici, nous allons pouvoir commencer la parties plus profonde de la préparation. Alexa Smart Home va venir déclencher notre fonction que nous allons mettre en place dans cette longue partie.

Nous allons utiliser le dépôt contenant haaska, la dernière version est disponible en suivant ce lien (que tu peux dès maintenant télécharger).

Création du rôle

Rends toi sur cette page pour la création du rôle.

Ensuite, dans la colonne de droite, cliques sur « Role » et « Créer un rôle » :

Sélectionnes « Services AWS« , « Lambda » et cliques sur « Autorisations » :

Sur la nouvelle page, dans le champs de recherche, tapes « Basic » et sélectionnes « AWSLambdaBasicExecutionRole« , pour finir, cliques sur le boutons d’étape suivante :

Sur la page des balises, tu peux directement cliquer sur « Vérifications« .

Dans la dernière page, saisie le nom du rôle « lambda_basic_execution » et cliques sur « Créer un rôle« .

Maintenant que le rôle est créé, reviens à l’accueil de AWS en cliquant sur l’icone en haut à gauche.

Sélection du langage

Voici une étape importante pour la suite, tu dois sélectionner la région « eu-west-1 » (pourquoi sélectionner celle-ci ??? Parce que Amazon le dit sur cette page) :

Configuration de la fonction AWS (partie 1)

Toujours sur la page AWS, dans la barre de recherche, tapes « calcul » et clique sur « Lambda » :

Sur la nouvelle page, cliques sur « Créer une fonction« .

Dans la nouvelle page, sélectionner « Créer à partir de zéro » ensuite complétes comme cela :

Voici les informations :

  • Nom de la fonction : haaska
  • Execution : Python 3.6 (à l’heure de l’ériture de cet article, la documentation du dépôt demandée cette version)
  • Ensuite, utilises un rôle existant en sélectionnant « lambda_basic_execution« 

Tu peux cliquer sur « Créer une fonction« .

Configuration de la fonction AWS (partie 2)

Avant de passer à cette partie, assures toi que la région soit bien définie, si tu as un doute reviens un peu en arrière.

Nous allons configurer le déclencheur pour la fonction, pour cela, clique sur « Ajouter un déclencheur« , sur la page de ta fonction Lambda nouvellement créer :

Sur la nouvelle fenêtre, dans le premier champs, sélectionnes « Alexa Smart Home« , dans le champs Id Application, tu dois coller le Skill ID (présent sur la console développeur), l’ID est de cette forme : amzn1.ask.skill.57bc7e6f-da92-47a9-9609-6406d56886e7. Pour finir, cliques sur Ajouter :

Nous allons charger le code Haasska (que tu as déjà dû télécharger avant, re-voici ce lien). Restont sur la configuration de notre fonction, dans l’onglet Code de la fen^tre, cliques sur Charger depuis puis Fichier.zip, sélectionnes le fichier Zip que tu as téléchargé :

Nous allons modifier le gestionnaire pour le paramètre d’éxecution par « haaska.event_handler », ce cadre est disponible en dessous de la partie code :

Récupération du jeton long durée de Home Assistant

Rends toi sur ton Home assistant, cliques sur l’avatar devant ton nom, puis défile la page jusqu’à tomber sur « Jetons d’accès de longue durée« , cliques sur « Créer un jeton« , nommes-le et valides. Copies ce code, il ne sera plus visible après.

Configuration de la fonction Haaska

Dans la section code de la fonction, double-cliques sur « config.json« , remplaces l’URL par celui qui permet d’accéder à ton assistant, par exemple https://my-hass.example.com:8123 .

Ensuite, pour la variable « bearer_token« , copies le jeton longue durée que tu as récupéré plus tôt.

Toujours dans la fenêtre du code, cliques sur « File » et « Save All ».

Copie l’ARN de la fonction qui doit avoir cette forme : arn:aws:lambda:eu-west-1:4730256486332:function:haaska.

Récupération des identifiants de connexion avec Amazon

Nous allons besoin de récupérer les identifiants pour se connecter avec Amazon, pour cela, rends toi sur cette page, puis cliques sur « Afficher l’ID et le secret du client » :

Lien entre la fonction et la skill

Retournes sur la console développeur Alexa, sur la page de ta skill, colles l’ARN précédemment copiée dans le champs « Default endpoint« , sélectionnes ta région puis colles de nouveau l’ARN sur le champs correspondant, fini par cliquer sur « SAVE » :

Lien entre la Skill et la connexion Amazon

Dans la fenêtre de la Skill, cliques sur « ACCOUNT LINKING« , puis saisies les champs comme suit :

ChampSetting
Authorization URIhttps://www.amazon.com/ap/oa
Access Token URIhttps://api.amazon.com/auth/o2/token
Client IDID LOGIN WITH AMAZON
Client SecretSECRET LOGIN WITH AMAZON
Client Authentication SchemeHTTP Basic (Recommended)
ScopeClick + Add Scope and enter: profile
Domain ListNot used
Default Access Token Expiration TimeNot used

Une fois les champs mis à jour, cliques sur « SAVE« .

Copier la liste de redirection du bas de la page.

Retourner sur la page de « Login With Amazon (par ici), puis sur le profil, cliquer sur l’engrenage et choisir « Paramètre web« , ajoutes tes trois liens de retour autorisés.

Conclusion de la mise en place

Voilà que la grosse première partie est finie, nous allons maintenant procéder au test.

Test d’Haaska

Reviens (ou restes) sur la page de la fonction Lambda que tu as créé, dans l’onglet code, déroule le bouton « Test » et crées un nouveau test, nommes-le, et colle dans la partie du code ci-dessous, modifie « access-token-from-skill » par ton jeton longue durée provenant de Home Assistant et sauves :

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

Une fois cela fait, cliques sur Deploy et lances le test, si aucun message apparaît, je suis ravi pour toi.

Cela devrait te retourner un JSON répertoriant les appareils exposés via Home Assistant.

Dans mon cas, j’ai eu plusieurs erreurs (toutes résolues) :

  • Dans le fichier config.json, j’avais fait une petite erreur sur l’URL
  • Toujours dans le même fichier, ma clé longue durée n’était pas correcte, je l’ai réactualisé

Conclusion du test

Si tu as tout suivi, tu n’as pas dû avoir de soucis. On va passer à l’intégration proprement dite dans Home Assistant.

Configuration finale

Activation de la Skill dans l’application Alexa

Maintenant que cette partie est effective, rends toi sur l’application Alexa de ton smartphone, puis Skill et jeux, ensuite Vos Skills. Tu devrais voir apparaître ta skill, clique dessus et active-la. Une fois activée, Alexa recherchera des appareils à connecter.

Configuration de Home Assistant

Maintenant, cela se passe dans Home assistant, avec File Editor, allez dans configuration.yaml et modifies comme suit :

alexa:
  smart_home:
    locale: fr-FR
    endpoint: https://api.amazonalexa.com/v3/events
    client_id: YOUR_SKILL_CLIENT_ID
    client_secret: YOUR_SKILL_CLIENT_SECRET

Bien entendu, remplace les éléments par les tiens, ils permettent une connexion à Amazon.

Redémarrer le serveur.

Conclusion finale

Voilà après tout ça, tout devrait fonctionner. J’ai simplement découvert un point important,le nommage des éléments de mon systèmes est super important.

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.