Intégrer gratuitement Amazon Echo (Alexa) avec Home Assistant (via haaska e AWS)

11 minutes de lecture
But du guide:
Concepts traités:
  • Configuration du logiciel
Composants logiciels utilisés:
Pré-requis:
  • Home Assistant configuré et fonctionnel (version 0.62 minimale)
  • Home Assistant à distance via HTTPS (expliqué plus tard)
  • Amazon Echo / Alexa compte configuré et fonctionnel et associé Amazon connecté à celui-ci
  • Un compte personnel Amazon
Dispositifs physiques utilisés:
  • L'ordinateur sur lequel il tourne Home Assistant
  • Smartphone sur lequel exécuter leapp "Amazon Alexa "(Android et / ou iOS)
  • Amazon Écho (n'importe quel modèle ou modèle d'enceinte intelligente que vous montez Amazon Alexa en tant que logiciel intégré)
GUIDE plus indiqué pour:

Tous les environnements

Notes et avertissement
  • qualsiasi modifica all'impianto elettrico dev'essere effettuata da personale qualificato;
  • tout changement mis en œuvre dans proavant est un prola responsabilité personnelle, ainsi que propremier risque et danger (ce guide est à des fins éducatives uniquement);
  • tout changement mis en œuvre dans proavant qu'un appareil annule la garantie.
Avis de conduite: 1.7

Home Assistant Amazon-Echo-Plus

Abstrait

L'avènement sur le marché de Haut-parleur intelligent change lentement les habitudes de beaucoup de ceux qui, chaque journameNte, ils deviennent familiers et familiers avec la possibilité d'interagir avec un vrai e propremier assistant personnel simplement en utilisant la voix et le langage naturel.

Amazon Écho est l'un de device de succès plus large et plus reconnu. Comme nous l'avons expliqué, cette enceinte intelligente utilise le logiciel pour travailler Alexa, qui est disponible, même pour les haut-parleurs intelligents proproduit par des tiers, ainsi que comment appcommunication autonome pour smartphones / tablettes Android et iOS.

Toute enceinte intelligente que vous utilisez Amazon Alexa peut être facilement intégré à Home Assistant.
Mais pourquoi, puisque de nombreux composants domotiques déclarent compatibilità avec Amazon Echo - et peut donc être contrôlé "en usine" par un tel Smart Speaker - il est utile de les intégrer à ces derniers Home Assistant? [Avant de répondre à la question, qui lit avoir clair le concept d'intégration dans la domotique.]

simple: pourquoi par un HUB le personnel aime Home Assistant nous sommes en mesure de définir des scénarios, des accessoires virtuels, des automatisations autrement non définissable avec l'utilisation séparée des composants individuels. Comme expliqué aussi dans un épisode de notre podcast, des scénarios comme "bonne nuit"(Qui peut-être quand évoqué éteignez toutes les lumières, le téléviseur et activez lealarme périmétrique) simplement ils ne peuvent pas être réalisés sans l'aide d'une plate-forme commune, ou d'un HUB personnel.

Au moment où il s'intègre comme ça HUB personnel (donc Home Assistant dans le cas particulier de ce guide) avec Amazon Echo, vous pouvez vérifier tous les composants et la entité - quels scénarios (et autres) - définis par mon assistant personnel. Une des nombreuses raisons d’adopter un HUB personnel pour le propremière domotique. Un focus sur ce sujet important est disponible ici.

Les éléments (définis domini) défini dans la configuration Home Assistant et contrôlable par l'intégration avec Amazon Alexa (Amazon Echo et haut-parleurs compatibles) sont:

  • alerter (avis de alarme)
  • automation (automatisation) - on / off
  • (climatiseurs et thermostats) - réglage de la température cible.
  • couverture (foncé)
  • ventilateur (fans) - on / off
  • Salles de Groupes (Groupes)
  • entrée booléenne (entrée booléenne)
  • lumière (lumières)
  • bloquer (serrures) - ouverture et fermeture
  • media_player (riprolecteurs multimédias) - riproduction, pause, arrêt, réglage du volume, réglage du volume, piste suivante / précédente
  • scène
  • scénario - activation / activation uniquement
  • capteur (Capteurs)
  • interrupteur (commutateurs)
N.b. À intégrer Amazon Alexa avec Home Assistant là deux routes:

Ce guide vous montre comment faire la deuxième chance, le libre.

Enfin, il est bon de savoir que Alexa peut être intégré à Home Assistant aussi comment reproproducteur multimédia et que système de notification vocale, ou "le faire parler" automatiquement lorsque certaines conditions se présentent dans la domotique.

Il commence

Conditions préalables

Comme indiqué ci-dessus, les principaux prérequis ils sont deux:

  • version de Home Assistant supérieur ou égal à 0.62;
  • Home Assistant configuré pour le contrôle à distance via HTTPS.

Le deuxième point est que le proexemple Home Assistant est accessible à distance et par proTocol HTTPS. Si vous utilisez Home Assistant installé sur Raspberry (installation manuelle o HASSBIAN) est disponible un guide détaillé pour proaffaissement.

Il y a aussi des préalables à corollaire.

PRE-BESOINS SUR LA BASE DE L’INSTALLATION HOME ASSISTANT
UTILISATEURS RASPBIAN (ou Linux)Les utilisateurs qui utilisent Home Assistant installé sur Raspbian (également modélisation HASSBIAN) ont le seul besoin de appdemande instamment de pouvoir se connecter au système de fichiers Raspbian via SFTP (en utilisant Filezilla ou d’autres outils) pour récupérer un fichier qui sera généré par Raspbian.
UTILISATEURS HASSIOLes utilisateurs qui utilisent HASSIO ils doivent nécessairement avoir installé SSH o Serveur Samba (HASSIO Add-on) pour récupérer un fichier qui sera généré par HASSIO même.
UTILISATEURS Windows Les utilisateurs qui utilisent Home Assistant installé sur Windows - en plus des conseils pour changer l'environnement d'exploitation sur lequel l'exécuter - il est nécessaire d'avoir un ordinateur avec le système d'exploitation RaspbianmacOS/ Linux, nécessaire pour générer le fichier attendu dans l’une des étapes suivantes.
UTILISATEURS MACLes utilisateurs qui utilisent Home Assistant installé sur Mac doivent appexhorte que, via "Terminal", les commandes suivantes soient disponibles:

  • apt-get
  • wget
  • faire

S'ils ne sont pas présents, installez-les. Vous pouvez également utiliser un ordinateur Linux / Raspbian, nécessaire pour générer le fichier attendu dans l’une des étapes suivantes.

Enfin, il est (évidemment) nécessaire que su Home Assistant non est opérationnel intégration payante via Nabu Casa.
Si nécessaire, désactivez-le première pour commencer avec l'exécution de ce guide.

Activer l'API et Alexa

Tout d'abord, il est nécessaire d'indiquer à Home Assistant pour activer le composant "API" et le composant "Alexa".
La configuration du fichier configuration.yaml c'est trivial:

api:
alexa:
  smart_home:

recommencer Home Assistant.
Nb Remarquez comment il s’agit de deux blocs distincts. Le premier active le composant "API"Le second"Alexa».

À ce stade, Home Assistant exposera propremière API à

https://il_tuo_dominio:porta/api/alexa/smart_home

Adresse qui sera utilisée par l'intégration pour interfacer le cloud AWS avec notre exemple de Home Assistant.
L'adresse que nous allons exposer vers AWS ce ne sera que la première partie, à savoir:

https://il_tuo_dominio:porta/api

JETON création longue vie

À ce stade, il est nécessaire de créer un "JETON longue vie", Ou une clé valable pour les années 10.
Pour ce faire, depuis une interface Home Assistant Cliquez sur le cercle de couleur contenant la première lettre de votre utilisateurname situé dans le coin supérieur gauche, dans la colonne de gauche.

Une fois que vous avez accédé à la page, décollez le bas jusqu'à ce que vous la trouviez. la case suivante:

Home Assistant - Jeton d'accès longue durée

Cliquez maintenant sur "CRÉER UN JETON"Et, à la demande du nom du jeton à créer, entrez"haaska».
À ce stade, sauver la ficelle qui va venir prodéveloppé par Home Assistant.

Création du package pour AWS

À ce stade, il est nécessaire de générer un package contenant “haaska"Pré-configuré avec TOKEN appena créé (et son URL de connexion un Home Assistant).

Ce fichier peut être généré:

POUR CEUX QUI ONT RASPBIAN / LINUX /MAC

depuis Terminal, exécutez:

sudo apt-get install python3 python3-venv python3-pip zip unzip -y
cd ~
mkdir temp
cd temp
sudo wget https://github.com/mike-grant/haaska/archive/master.zip
unzip master.zip

En cas d'erreur sur commande wget et / ou décompressez, exécutez:

sudo apt-get update
sudo apt-get install zip wget -y

puis relancez le wget.
Puis:

cd haaska-master/config
sudo cp config.json.sample config.json
sudo nano config.json

À ce stade, vous serez confronté à une configuration de ce type:

{
  "url": "http://localhost:8123/api",
  "bearer_token": "",
  "debug": false,
  "ssl_verify": true,
  "ssl_client": []
}

A ce stade, prenez soin de changer la configuration en entrant:

Nb Remarquez comment l'adresse passe de "http" à "https".

Enregistrez et quittez (CTRL + X, Y, entrez).
Enfin:

cd ..
make

À ce stade, on effectuera proCedura automatique qui générera un fichier appelé haaska.zip. Récupérez-le via Filezilla (utilisez SFTP) en le connectant à l'adresse IP de Raspberry.

UTILISATEURS HASSIO

Stessa proprocédure ci-dessus, mais en utilisant les commandes alternatives suivantes à saisir via Terminal SSH (le service doit être installé comment add-on HASSIO):

mkdir temp
cd temp/
apk add make
apk add zip
apk add wget
apk add nano
apk add py-pip
wget https://github.com/mike-grant/haaska/archive/master.zip
unzip master.zip
cd haaska-master/config/
cp config.json.sample config.json
nano config.json

à ce stade, apportez les modifications de configuration expliquées ci-dessus, puis terminez avec:

cd ..
make
cd /
cp ~/temp/haaska-master/haaska.zip /share

Enfin, récupérez le fichier en utilisant "Configurateur"(Le fichier sera dans le dossier"Share").

Amazon Console développeur

A ce stade, il est nécessaire de s’inscrire (si vous ne l’avez pas déjà fait) au "Amazon Console développeur“, Un site satellite au classique Amazon.com / .it auquel vous devez déjà être enregistré.

Allez donc à https://developer.amazon.com/home.html et utiliser le propremier utilisateurname/ mot de passe (de Amazon.com / .it) pour entrer. Puis cliquez sur "Se connecter avec Amazon"

Amazon Developer Console - Connexion avec AmazonIle site demandera (si cela n'a pas déjà été fait auparavant) de configurer le service "Se connecter avec Amazon“, Ce qui vous permet d’utiliser le proutilisateur prianame/ mot de passe de Amazon.com / .it (entre autres déjà utilisé pour configurer le propremier environnement Alexa) sur tous les sites satellites tels que, par exemple,appoint, "Amazon Console développeur":

Amazon Developer Console - Connexion avec Amazon

Une fois que vous avez accès, cliquez sur "Créer nouveau profil de sécurité».
Dans les champs obligatoires, entrez:

  • Nom de profil de sécurité"HASSIO« ;
  • Description de la profil de sécurité"HASSIO« ;
  • URL de consentement de confidentialité: ce que l’on croit, est indifférent, car la compétence que nous allons préparer ne sera pas publique mais privée:

Amazon Developer Console - Nouveau profil de sécurité

Cliquez sur "Sauver».
Dans le finestça va s'ouvrir. Cliquez sur la roue en bas à droite et sélectionnez "Paramètres Web":

Amazon Console développeur - Paramètres Web Profil de sécurité

La page suivante contient les coordonnées du proprio profil de sécurité:

Amazon Console développeur - Paramètres Web Profil de sécurité - Détails

Laisser la fi ouvertenestra et passer à autre chose.

Alexa Developer Console

Mettez de côté la page précédente, ouvrez un nouvel onglet / page et connectez-vous à l'adresse https://developer.amazon.com/alexa/console/ask puis en utilisant le propremière utilisation Amazon.com / .it pour s’authentifier. Le but est de définir une compétence ad hoc pour notre environnement.

À ce stade, la page principale de la page “ouvertConsole développeur"Cliquez sur"Créer une compétence":

Amazon Console développeur - Créer une compétence

Sur la page suivante, indiquez le nom de la compétence ("Haaska" - ou ce que vous préférez) et "Smart Home" comme, comment typologie:

Amazon Console développeur - Nouvelle compétence

Sur la page suivante, laissez "sélectionné"v3». Notez la ficelle sous le titre "Votre numéro de compétence"(Servira plus tard).
Amazon Console du développeur - Nouvelle compétence - Version de charge utile et ID de compétence

Laisse aussi cette fi ouvertenestra et passer à autre chose.

Amazon Services Web (AWS)

Maintenant, vous devez définir une ressource Lambda à AWS.

Ouvrir un nouvel onglet / finestet connectez-vous (en créant un compte, si vous n'en avez pas) à l'adresse https://console.aws.amazon.com/console/home.

Nb La création éventuelle d’un nouveau compte nécessite l'entrée obligatoire d'une carte de crédit valide, auquel aucun coût ne sera toutefois facturé (le débit de 1 post-insertion dollar est fictif - il est nécessaire de AWS vérifier uniquement la validité de la carte elle-même). La configuration dictée par ce guide n'inclut aucune dépense, sauf modifications ultérieures des conditions d'utilisation de AWS dont la lecture et l’acceptation relèvent de la responsabilité de l’utilisateur abonné au service.

En outre, il est clair que si l’utilisateur implémente par la suite d’autres fonctionnalités qui absorbent des ressources payantes AWS, cette carte sera utilisée pour les débits. Si vous voulez rester calme, utilisez une carte rechargeable.

AWS Amazon Services Web - Accès

IAM

Une fois authentifié, cliquez sur "Nos services"(Haut) et sélectionnez l'élément"IAM"Ci-dessous"Sécurité, identité et conformité». Puis, à gauche, cliquez sur "rôles"Et enfin"Créer un rôle».

AWS Amazon Services Web - IAM

Sur la page qui s'ouvre, sélectionnez "AWS Service Clients"Et"Lambda":

AWS Amazon Services Web - IAM - Nouveau rôle

Ci-dessous, cliquez sur "Suivant: Autorisations».
Sur la page suivante, recherchez dans le champ de recherche “Administrateur de bases de données« ; une fois trouvé, sélectionnez l'élément et cliquez enfin sur "Suivant: Tag":

AWS Amazon Services Web - IAM - Nouveau rôle - 2

Sur la page suivante, entrez "lambda_basic_execution"Dans la tête"Nom du rôle« ; enfin cliquez ci-dessous "Créer un rôle":

AWS Amazon Services Web - IAM - Nouveau rôle - 3

LAMBDA

Cliquez sur l'item "Nos services"(Haut) et sélectionnez l'élément"Lambda"Ci-dessous"calcul».

ATTENTION: Réception d'un message typique en réponse "Votre inscription au service est presque terminée! Merci de vous inscrire avec Amazon Services Web. Vos services peuvent prendre jusqu'à 24 heures pour être complètement activés ...", La cause (9 sur 10) est donnée de ne pas être entré une carte de crédit valide au moment de la création du compte.

En haut à droite sélectionnez "UE - Irlande»(attention ne pas oublier cette étape):

AWS Amazon Services Web - Lambda

Cliquez maintenant sur le bouton orange "Créer une fonction».
Les champs doivent être complétés comme suit:

  • Créer à partir de zéro;
  • Nom: "Haaska";
  • Runtime: "Python 3.6";
  • Rôle: "Sélectionner un rôle existant";
  • Rôle existant: "Lambda_basic_execution "

AWS Amazon Services Web - Lambda - Nouvelle fonctionnalité

Cela fait, cliquez sur "Créer une fonction", En bas à droite.

Sur la nouvelle page, descendez à peu près à mi-chemin et trouvez la boîte "Code de fonction». Cliquez sur le menu déroulant "Type d'entrée de code"Et sélectionnez"Télécharger un fichier .zip":

AWS Amazon Services Web - Lambda - Fichier de téléchargement

Les voix "Runtime"Et"directeur"Doit être réglé à"Python 3.6"Et"haaska.event_handler». Si ce n'est pas le cas, corrigez-les comme indiqué.

À ce stade, cliquez sur l'icône rappmontrant une flèche pointant vers le haut / provoir envoyer à AWS le fichier .zip du package proappris dans procédure initiale.

Après cela, allez encore plus loin et trouvez la boîte "Rôle d'exécution“, Qui doit être réglé comme suit:

AWS Amazon Services Web - Lambda - Rôle d'exécution

Retournez maintenant à la page, à la boîte "Designer"Et sélectionnez l'article"Alexa Smart Home":

AWS Amazon Services Web - Lambda - Designer

Nb si l'article "Alexa Smart Home" est absent c'est parce que précédemment le profil àUE (Irlande)».

Descendre et trouver la boîte "Gâchette».
Dans le champ éditable, entrez le "ID de compétence" obtenu précédemment (par exemple, "amzn1.ask.skill.2e4e ....")

AWS Amazon Services Web - Lambda - Déclencheur

Puis cliquez sur le "Ajouter».
Enfin, allez en haut de la page et appuyez sur le bouton orange "Sauver».

Immédiatement au dessus du bouton "Sauver"Il y a une chaîne définie"arn": Ecrivez-le.

Laisse aussi cette fi ouvertenestra et passer à autre chose.

Achèvement des compétences

Retour à la récapitulation des compétences et insérer dans le champ "Point de terminaison par défaut"La valeur du champ"arn”Copié au point précédent.
Cochez la case ci-dessousEurope, Inde»(attention ne pas oublier ce passage). Ici aussi copier le même "arn».

En haut à droite de la page, cliquez sur "Épargnez».

Maintenant, cliquez sur l'entrée dans la colonne de gaucheLIEN DE COMPTE».
Sur la page qui s'ouvre, entrez les valeurs suivantes:

  • URI d'autorisation: "Https://www.amazon.com/ap/oa"
  • URI de jeton d'accès: "Https://api.amazon.com/auth/o2/token"
  • identité du client: la valeur de l'identifiant client obtenu à partir de page récapitulative del proprio profil de sécurité;
  • CLIENT Secret: la valeur CLIENT SECRET obtenue à partir de la page de récapitulatif du proprio profil de sécurité;
  • Schéma d'authentification client: HTTP BASIC (Recommandé);
  • Cliquez sur "+ Ajouter une portée"Et insérer"pro« Fichiers.

En haut à droite de la page, cliquez sur "Épargnez».

Laisse aussi cette fi ouvertenestra: bientôt nous aurons besoin du "URL de redirection" appbrûlé au bas de cette page.

Retour à la page récapitulative del proprio profil de sécurité, cliquez sur “Modification"Et insérez, sous"URL de retour autorisées", tous et tret les URL obtenues à l'étape précédente.

Une fois terminé, cliquez sur "Sauver».

ESSAI

Retour à la page de définition du "Lambda"Et cliquez sur"Sélection d'événements test"Et puis"Configurer les événements de test».
Un fi va s'ouvrirnestsemblable à ceci:

AWS Amazon Services Web - Lambda - TEST

Sur le terrain "Nom de l'événement"Insérer"Tester».
Supprimez ensuite toutes les lignes de test et remplacez-les par le texte suivant:

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

Enfin cliquez sur "Sauver».

À ce stade, exécutez le "Tester"En cliquant sur le bouton"Exécuter des tests": La réponse devrait être positif. Sinon, vérifiez toutes les étapes mises en œuvre jusqu'à présent.

Définition de domaines

Avant de conclure l’intégration, il est judicieux de spécifier à l’avance dans la configuration Home Assistant quels sont les domaines à mettre à la disposition de Amazon Echo / Alexa, alors quels accessoires, scènes, entité etc.

La liste des domaines exportables est la suivante:

  • alerter (avis de alarme)
  • automation (automation) - on / off
  • (climatiseurs et thermostats) - réglage de la température cible.
  • couverture (foncé)
  • ventilateur (fans) - on / off
  • Salles de Groupes (gruppi)
  • entrée booléenne (entrée booléenne)
  • lumière (lumières)
  • bloquer (serrures) - ouverture et fermeture
  • media_player (riprolecteurs multimédias) - riproduction, pause, arrêt, réglage du volume, réglage du volume, piste suivante / précédente
  • scène
  • scénario - activation / activation uniquement
  • capteur (Capteurs)
  • interrupteur (commutateurs)

Puis ajouter un bloc similaire à ce qui suit la configuration Home Assistant:

alexa:
  smart_home:
    filter:
      include_entities:
        - light.cucina
        - light.camera
      include_domains:
        - switch
      exclude_entities:
        - switch.terrazzo
      exclude_domains:
        - lock
    entity_config:
      light.cucina:
        name: Nome personalizzato per Alexa
        description: La luce della cucina
      switch.scale:
        display_categories: LIGHT

Dans cet exemple de bloc sont inclus dans le domaine Amazon Alexa les caractéristiques de allumer les lumières de la cuisine et de la chambre, sont inclus tous les interrupteurs, sauf que de la terrasse. Le domaine "lock" (locks) est exclu dans son intégralité.
De plus, le comportement / nom a été personnalisé de la lumière de la cuisine et l'interrupteur de l'escalier.

Le champ display_categories peut être personnalisé en fonction des catégories disponible dans Alexa.

Ajouter la compétence à Alexa

Nous y sommes: maintenant il est possible d'ajouter la compétence appena créé al proprio proFil Alexa.

Étant donné que de facto nous avons créé une compétence (privée) ad hoc, ouvrez simplement leapp (Mobile ou Web) Alexa, parcourez la section "Vos compétences"Sous la rubrique"Compétence». Une fois trouvé le propremière compétence de voitureproappris (appelé "haaska", Ou différemment comment vous avez choisi de l'appeler), sélectionnez-le et cliquez sur"Permettre». L 'app va demander à associer un compte: utiliser celui de Amazon.com / .it.

À la fin de procedura, effectuez une recherche complète du périphérique. Ce nouveau proprocédure provvederà mener à bien la découverte automatica tout entité présenter sur Home Assistant et exposé à Alexa en fonction de la configuration du paragraphe précédent.

En cas de non personnalisation, Alexa trouvera toutes les entités (non recommandé).

Cela s'est terminé procedura, Alexa sera pleinement intégrée à Home Assistant.

Ce diaporama nécessite JavaScript.


Home Assistant Logo officielATTENZIONE: rappelez-vous qu'il y a sur notre communauté FORUM une section ad hoc dédiée à Home Assistantpour tout doute, question, information sur le mérite spécifique de ces composants.


Veuillez commenter ci-dessous

"Faites parler les gens" Amazon Alexa en tant que système de notification domotique sur Home Assistant