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
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
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 URL 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.
Bonjour,
Merci pour ce tuto.
J’ai juste un petit souci : sur mon application Alexa, je vais dans mes skills, mais je ne trouve pas comment accéder à mes skill DEV 🙁
Bonjour,
Sur la page d’accueil des skills, il faut descendre tout en bas jusqu’au bouton « Vos skill », et là il y a logiquement une case « Dév » et filtre pour n’afficher que les skills en développement.
Pour rappel, il faut utiliser la même adresse email pour le compte développeur et le compte Alexa (Amazon).
Bonne journée 🙂
Bonjour,
alors après plusieurs tentative, impossible d’associer le skill,
les tests sur aws sont en succès avec l’erreur :
/var/task/urllib3/connectionpool.py:842: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
warnings.warn((
au moment d’associer :
1 => j’active pour l’utilisation dans alexa skill dev
2 => j’arrive sur ma page HA avec l’avertissement : sur le point de donner accès a layla.amazon
3 => je mets les identifiants
4 => je valide
et la association du compte veuillez patienter puis erreur impossible d’associer le compte à Alexa
j’utilise bien le même mail entre alexa et aws
dans la création de fonction, le language d’exécution Python 3.6 n’est plus disponible (de 3.9 à 3.12 dispos), que mettre?
Peu importe…
attention ne fonctionne pas avec python 3.12, j’ai dut mettre le 3.8
Merci pour le retour ! 😉
bonjour,
depuis une semaine, j’ai le message « impossible de lier les comptes. votre application alexa a besoin d’une mise à jour home assistant » sur l’application alexa lors de l’association de la skill,
j’ai recréé une skill en entier mais meme resultat
bonjour,
j’ai le même résulat , association de compte impossible sur l’application alexa
Bonjour,
Tout d’abord, je tiens à vous remercier pour ce tutoriel extrêmement détaillé et bien structuré. J’ai beaucoup appris en le suivant et je suis presque arrivé à la fin.
Cependant, j’ai rencontré une erreur à l’étape de test « Tester notre fonction Lambda ».
Voici le message d’erreur que j’obtiens dans la console developpeur amazon :
»
Test Event Name
pourtester
Response
{
« errorMessage »: « 404 Client Error: Not Found for url: https://xxxxxxxxxxxx.duckdns.org:8123/api/alexa/smart_home« ,
« errorType »: « HTTPError »,
« stackTrace »: [
» File \ »/var/task/haaska.py\ », line 111, in event_handler\n return ha.post(‘alexa/smart_home’, event, wait=True)\n »,
» File \ »/var/task/haaska.py\ », line 66, in post\n r.raise_for_status()\n »,
» File \ »/var/task/requests/models.py\ », line 940, in raise_for_status\n raise HTTPError(http_error_msg, response=self)\n »
]
}
»
voici mon « configuration.yaml »
« #pour lien alexa HA
api:
alexa:
smart_home:
»
j’accède bien a ma machine par : https://xxxxxxxxxxxxx.duckdns.org:8123/
Auriez-vous des suggestions ou des conseils pour résoudre ce problème ?
Merci d’avance pour votre aide et pour le travail incroyable que vous avez réalisé avec ce tutoriel !
Bonjour, j’ai une erreur 404 lors du test.
J’ai vérifier les espace dans « confiuration.yaml »
j’ai rajouter locale: fr-FR
j’ai rajouter endpoint: https://api.eu.amazonealexa.com/v3/events
j’ai rajouter client_id:xxxxxxx
j’ai rajouter client_secret: xxxxxx
Mon Home Assistant est accessible directement via le port 443 et mon propre nom de domaine.
J’ai redémarrer home assistant mais rine n’y fait.
Et dans l’application Alexa, lorse que je veux rajoouter la skill il me dit qu’il est impossible de lier les comptes. Alors que j’utilise la même addresse email partout !
Si qq1 a une idée?
Bonjour, après avoir réessayer le tuto j’ai cette erreur :
{
« errorMessage »: « 2024-04-25T13:17:51.090Z 06cac22d-8a46-441b-9d58-a8bef01ced35 Task timed out after 3.01 seconds »
}
Bonjour, merci beaucoup pour le tuto ; cependant je suis bloqué à cette étape avec cette erreur :
{
« errorMessage »: « Unable to import module ‘index’: No module named ‘index' »,
« errorType »: « Runtime.ImportModuleError »,
« stackTrace »: []
}
Merci d’avance !
Bonjour et merci pour ce tutoriel, comme pour les aides publiée plus haut.
Bon en effet ca n’a pas été très simple car beaucoup d’écran était différent et que certain paramètres n’avaient plus les même valeurs. Quoi qu’il en soit je suis a une étape que ca fonctionne mais je ne sais pas ou.
Le test de ma skills depuis la console AWS est OK, l’authentification passe et me retourne toutes mes intégrations. J’ai donc téléchargé ma Skills depuis Alexa mais lorsque je tente de l’activer il me demande de me connecter sur mon HA (enfin https://layla.amazon.com), pas sur Amazon. Si je rentre mes credentials HA, j’ai une erreur. Je pense que j’ai mis une mauvaise URL quelque part mais impossible de savoir ou.
D’avance merci. Damien
Même problème pour moi, il me demande de ma connecter sur mon HA au lieu d’Amazon
Si vous avez trouvé la solution depuis ça m’intéresse
Bonjour,
merci d’avance pour ce tuto très bien détaillé.
Je l’ai mis en place une premiere fois sans problème.
J’ai tout refais suite a un changement d’url pour mon HomeAssistant. Pas de problème jusqu’au moment de l’association dans l’appli Alexa ou je tombe sur un message me disant « impossible d’associer xxxxx à alexa » aprés le login/auth.
Une idée ?
Bonjour,
J’imagine que tous les urls sont modifiés… Comment l’accès distant à Home Assistant est-il sécurisé ?
comme précédemment, meme procedure, la seule différence c’est que je suis sur une installation en vm via proxmox, et que j’ai pris un domaine via free plutot que par duckdns. j’accède bien a mon home assistant de l’exterieur via l’application ou le navigateur via domaine:8123.
OK ! Sur le papier, ça ne devrait rien changer. Je suis en train de migrer ma VM Synology sous Proxmox également, je vais me pencher sur le sujet. 😉
Bonjour,
victime du même problème, j’ai écumé les forums anglophones pour trouver la solution (enfin, qui a fonctionné chez moi):
Au moment de la config de l’Account linking, il faut configurer les adresses sans spécifier de port
Authorization URI : https://[YOUR HOME ASSISTANT URL]/auth/authorize
Access Token URI : https://[YOUR HOME ASSISTANT URL]/auth/token
Et ensuite rediriger le port 443 de votre routeur vers le 8123 de HA au moment de faire l’association.
Source: https://www.home-assistant.io/integrations/alexa.smart_home/#account-linking
Bonjour,
J’ai réussi à résoudre mes petits problèmes que beaucoup ont rencontré et j’ai réussi à avoir une requête de test fonctionnelle et à lier la skill dans mon appli alexa.
Mais impossible d’avoir les équipements qui remontent. Je n’ai pas mis de filtre d’exclusion. J’ai essayé de mettre un include mais rien
Hello,
En effet, Alexa semble avoir quelques soucis de ce côté là. Perso, j’ai plusieurs nouveaux appareils qui ont mis presque une semaine à remonter. Même constat pour les scènes. Je suppose que c’est lié aux grosses mises à jour que subit Alexa en ce moment…
Bonjour, avez vous réussi à faire remonter dans Alexa ?
Bonjour, avez vous résolu le pb de remonté
bonjour,
J’ai suivi le tuto à la lettre qui est très bien fait! bravo!
Mais Je suis exactement dans le même cas que vous. j’ai une requête de test qui fonctionne, j’ai réussi a lier la skill sur mon appli Alexa mais aucuns équipements ne remontent dans l’application.
Y a-t-il une manip a faire ?
Hello!
Tuto très complet, j’ai réussi à régler les derniers petits problèmes de configuration mais je bloque sur le test de l’événement 😒
{
« errorMessage »: « 2024-02-02T14:05:03.777Z ae8e0378-458d-4588-b04f-3c42ae21d3de Task timed out after 3.01 seconds »
}
Pas trouvé de solution jusqu’à présent…
salut monsi j’avais la même erreur jusqu’à ce matin et en testant divers choses j’ai résolu le problème en 1. dans le fichier config.json tu dois pas mettre le port a la fin de l’url cela devrait ressembler a ca:
en 2. dans account linking
you web authorized uri et celle du dessous ne pas mettre le port 8123
bonne journée
{
« url »: « https://XXXXXX.duckdns.org/api »,
« bearer_token »: « TON TOKEN »,
« debug »: false,
« ssl_verify »: true,
« ssl_client »: []
Infos complémentaire si besoin :
Pour la création de compte AWS, perso je n’avais qu’un compte root et pour la création du compte IAM spécifique je n’ai pas voulu lui donner bêtement tout les droits, voici la liste des droits que j’ai donné après avoir sélectionné « Attacher directement des politiques… » pour que tout fonctionne bien : AWSLambdaBasicExecutionRole / IAMFullAccess / AWSOrganizationsReadOnlyAccess / AWSLambda_FullAccess.
Merci pour ces précisions. Je mettrai prochainement à jour ce tuto avec, je compte migrer mon serveur HA et il me faudra donc refaire cette intégration. 😉
Bonne fin de journée
Bonjour à tous et un grand merci pour ce super tuto qui apporte un point très important sur la localisation du compte et de la fonction.
Pour ce qui comme moi cherche pourquoi cela ne marche pas après avoir modifié haaska.py en lambda_function.py et event_handler en lambda_handler dans ce dernier, penser après avoir sauvegardé le script à cliquer sur le bouton deploy pour appliquer les modifs a la fonction utilisée.
Bonjour
Cela fait un mois que j’ai tenté de mettre en place Alexa avec Home Assistant. Le tuto est très bien fait mais il faut faire attention à quelques subtilités du fait que certaines choses ont été modifiés depuis la création du tuto.
Bref après quelques galères j’ai réussi à avoir un test correct de ma fonction et toutes mes entités remontent bien à travers la fonction Lambda.
La ou je suis totalement bloqué et ou je m’arrache les cheveux c’est la dernière étape l’association de de compte. J’arrive bien jusqu’à la page de connexion HA mais j’ai constamment le message impossible d’associer le compte à Alexa!!!!! pffffff
J’ai épluché un tas de forums, tout recommencé à zéro, Rien n’a faire l’association ne marche pas!!!
Comment donc avez vous réussi à valider cette étape??je vois pas ou j’ai pu me louper!!!
Rebonjour
Timo j’avais la même erreur que toi.
Je vais essayer de ce pas, je te dis ça 🙂
Ca marche, j’ai recréé en 3.8 comme tu précises, et j’ai appliqué le conseil de Carlos Matuku plus bas dans les commentaires:
« Salut, pour ceux qui ont le même problème, il suffit de renommer haaska.py en lambda_function.py (c’est le nom par défaut qu’attends la lambda) et à l’intérieur du fichier haaska.py, il faut aussi renommer def event_handler(event, context): en def lambda_handler(event, context): »
Du coup maintenant je passe le test vert, merci beaucoup!
Merci à tous pour vos retours !
bonjour a tous
déjà un grand merci pour le tuto 🙂
état pas douer dans le domaine informatique et après le tester comme indiquer j’ai des erreur.
voici le récapitulatif ( je suis sous DuckDNS et nginx ). un grand merci d’avance 😉
« errorMessage »: « Failed to parse: https:mondomaine.duckdns.org »,
« errorType »: « InvalidURL »,
« stackTrace »: [
» File \ »/var/task/haaska.py\ », line 111, in event_handler\n return ha.post(‘alexa/smart_home’, event, wait=True)\n »,
» File \ »/var/task/haaska.py\ », line 63, in post\n r = self.session.post(self.build_url(endpoint),\n »,
» File \ »/var/task/requests/sessions.py\ », line 581, in post\n return self.request(‘POST’, url, data=data, json=json, **kwargs)\n »,
» File \ »/var/task/requests/sessions.py\ », line 519, in request\n prep = self.prepare_request(req)\n »,
» File \ »/var/task/requests/sessions.py\ », line 452, in prepare_request\n p.prepare(\n »,
» File \ »/var/task/requests/models.py\ », line 313, in prepare\n self.prepare_url(url, params)\n »,
» File \ »/var/task/requests/models.py\ », line 381, in prepare_url\n raise InvalidURL(*e.args)\n »
Hello, je bloque sur cette partie, je ne trouve pas le default endpoint:
Depuis la console développeur Alexa, sélectionnez votre Skill et insérez votre ARN dans la zone default endpoint
Bonjour
Très bon tuto, clair même si les pages des sites aws et alexa ont évolué depuis l’article initial ce ne sont pas des changements trop déroutant.
Pour information, la version de Python 3.6 ne semble plus supportée (maintenant de 3.8 à 3.12) et la version 3.12 ne marchait pas pour moi, j’ai du mettre 3.8 et cela a fonctionné.
Encore Merci.
Bonjour,
Merci pour le retour et ces précisions importantes. Je tâcherai de mettre à jour le tuto cette année, mais n’utilisant plus cette intégration, j’attends de trouver le temps de déployer un nouveau serveur pour ça. 😉
Bonne journée 🙂
Bonjour,
Je viens de suivre le tuto mais je bloque sur le test final avec ce type d’erreur
{
« errorMessage »: « 401 Client Error: Unauthorized for url: https://casitadeldubois.freeboxos.fr/api/alexa/smart_home« ,
« errorType »: « HTTPError »,
« requestId »: « 0ab0a022-39a3-4014-9134-0f31091bd5e8 »,
« stackTrace »: [
» File \ »/var/task/haaska.py\ », line 111, in event_handler\n return ha.post(‘alexa/smart_home’, event, wait=True)\n »,
» File \ »/var/task/haaska.py\ », line 66, in post\n r.raise_for_status()\n »,
» File \ »/var/task/requests/models.py\ », line 940, in raise_for_status\n raise HTTPError(http_error_msg, response=self)\n »
]
}
Je ne comprend pas ce qui bloque et pourquoi je n’accède pas à /api/alexa/smart_home
Si je fais https://casitadeldubois.freeboxos.fr/api/alexa/smart_home
J’ai le retour : 405: Method Not Allowed
hello mathis,
je suis bloqué comme toi sur l’erreur 405, as tu trouvé une solution ?
Bonjour,
Ce tuto est très bien construit, et de mémoire je l’avais déjà suivit en 2021 environ avec succès.
J’ai voulu le refaire récemment, mais je n’arrive pas à compléter le test à la fin.
J’ai suivi les commentaires qui recommandes de changer le nom du fichier .py en lambda_function, mais je continue de me heurter à ce message d’erreur:
{
« errorMessage »: « Unable to import module ‘lambda_function’: No module named ‘urllib3.packages.six.moves' »,
« errorType »: « Runtime.ImportModuleError »,
« requestId »: « 91631fa0-fa83-4265-885a-ed9cc15d38a6 »,
« stackTrace »: []
}
Si vous êtes en mesure de m’aider, ça serai top!
N’hésitez pas à me demander des détails si besoin.
Cordialement,
Voir le post que je viens de faire.
Bien le bonjour, merci pour ce tuto 😊 très bien expliqué 😊
Je suis vraiment débutante et avec un niveau d’anglais très bas 😂 mais j’ai quand même su me débrouiller quasi jusqu’au bout 😅 mais je bloque à la toute fin, la partie où je test event sur aws un message m’indique »calling the invoke API action failed with this message : rate exceeded » quand je lance le test, quelqu’un pourrais m’indiquer comment me dépêtrer cette erreur ? Un grand merci au personne qui auront la patience de m’expliquer 😊
Bonjour merci pour ce tuto,
ça serai top de faire un shémat de flux avec les différents composants et comment ça communique entre eux pour une meilleure comprhension
sinon une question, est ce que c’est juste la fonction Lambda qui se connecte a notre HA ? ou c’est également d’autres composants d’amazon , je demande cette question car je souhaite attribué une IP static a Lambda et puis fermé les flux depuis mon routeurs vers mon HA et j’autorise seuelement l’IP du LAMBDA
Merci pour votre aide
Bonjour,
Effectivement, tout passe par la fonction Lambda qui fait le lien entre HA et la skill, il doit donc être possible de faire ça. 😉
Bonjour à Tous !
Super Tuto. effectivement quelques petits changements mais on s’en sort malgré tout.
J’ai buté une Première fois lors du test de la fonction mais le message de Carlos Matuku m’a aidé à résoudre le problème et le test
Par contre je bute une seconde fois lors de l’ajout de la skill dans l’application Alexia. Je tombe bien sur ma page d’identification de HA mais j’obtiens ce message :
« Nous n’avons pas pu associer Home Assistant pour le moment
Pour obtenir des instructions ou de l’aide sur la configuration de votre skill en vue de l’association de compte avec OAuth, veuillez consulter la documentation »
Et y’a une erreur qd j’essaie de suivre le lien donc Si quelqu’un est capable de m’indiquer ou j’ai fait erreur pq la je me sens très frustré !
Merci !
Hello !
Merci pour le retour.
C’est bizarre, mais pour certains (dont moi), ça fonctionne nickel… D’autres ont des erreurs, vous êtes nombreux à l’avoir remonté. Quelle est ta config ? Ton FAI et ta box ?
Bon week-end 🙂
Merci à toi !
Ma config :
HA via VM sur Synology DS918+
FAI : Free Pop
Lan : Xiaomi AX 3000 en Mesh
Je suis en reverse proxy pour mon HA et mon port 443 pointe bien vers mon port sécurisé.
J’ai bien tenté la méthode de JeanBe mais pour toujours le même résultat… Je sèche !
Hello,
On a des installations très semblables puisque j’utilise une VM HA sur Synology DS920+, on peut donc éliminer un problème de ce côté là. Je ne sais pas chez Free, mais chez Orange j’ai dû ouvrir le firewall IPv6 pour mon routeur. Le problème est sûrement par là, il fut évoqué dans différents commentaires comme ici : https://www.lesalexiens.fr/domotique/home-assistant/tutoriel-piloter-home-assistant-a-la-voix-grace-a-alexa/#comment-16073
Bonjour,
J’ai exactement le même message d’erreur. As-tu trouvé une solution?
Non malheureusement pas trouvé de solution, j’ai test nabu casa 1 mois et je suis de retour ici… Si de ton coté t’as trouvé n’hésite pas à partager je ferai de même.
Bonjour,
Pour le problème d’association entre Alexa et Home Assistant, voilà se que je suis tombé sur une vidéo de la chaine « Everything Smart Home »
il faut créer une 2eme règle NAT sur la box/firewall qui redirige le port 443 extérieur vers le port 8123 du Home Assistant. Supprimer le port 8123 au niveau du account Linking https://lesalexiens.duckdns.org:8123/auth/authorize devient https://lesalexiens.duckdns.org/auth/authorize idem pour le token
En tout cas, ça a fonctionné pour moi.
bonsoir a tous
petite précision , si vous passez d’une configuration https basique de home assistant , a une configuration Nginx ssl proxy , le port https passe de 8123 a 443 et n’est donc plus nécéssaire a préciser dans les configurations ci dessus
Bonjour,
Merci pour cette précision. En effet, dans ce cas c’est inutile. 🙂
toujours le même problème même avec ton astuce
Je reçois ce message d’erreur que je ne comprends pas. Ce tuto est très complet, je pense l’avoir suivi à la lettre mais je comprends pas ce message car l’adresse est bien correcte et je ne sais pas ce que veut dire Client error dans ce cas. SI qq’un peut m’aider ce serait très sympa.
« 404 Client Error: Not Found for url: https://xxxx.duckdns.org/api/alexa/smart_home«
Un immense merci pour ce tuto très détaillé. Tout fonctionne parfaitement. Précision utile, n’oubliez pas dans le fichier yaml d’exclure des choses que vous ne voulez pas qu’Alexa puisse contrôler (ou que quelqu’un puisse actionner par alexa). Exemple : désactiver l’enregistrement des caméras, lever les volets, toucher à l’alarme, etc.
Merci pour le retour ! Effectivement, il vaut mieux ne pas tout exposer à Alexa, le risque étant surtout que la liste des appareils disponibles dans son application soit totalement imbuvable. 😉
Bonne fin de semaine 🙂
Bonjour à tous, (et bravo pour tout ce travail qui est top !)
J’ai suivi ce tuto il y a 2ans env., avec succès, car tous fonctionnait parfaitement jusqu’à cette semaine…où je viens de changer de fournisseur internet, et ma box est uniquement en IPv6. J’ai déjà passé du temps pour remettre mes accès externes en place (appli HA Companion).
Je m’attaque à essayer de comprendre pourquoi Alexa ne répond pas donc j’ai relu tout le tuto, et comparer mes réglages.
Il y a une section qui a particulièrement évoluer depuis 2021, la section « Account Linking »
en 2021 c’était (comme l’a reproposé @Vincent récemment) :
MàJ 2023 ça devient (comme vous le signalé en intro)
https://[YOUR HOME ASSISTANT URL]/auth/authorize
https://[YOUR HOME ASSISTANT URL]/auth/token
https://layla.amazon.com/
si vous êtes en EuropeQuestion: qu’entendez-vous par
[YOUR HOME ASSISTANT URL]
?J’ai tenté ceci: https://mon_domain.duckdns.org:8123/auth/authorize
mais ça ne fonctionne pas…
Même histoire pour la fonction Lambda (nota : j’ai updaté l’exécution en Python 3.9, sinon ça bloque). J’ai essayé de changer mon URL, type :
« url »: « https://[mon_adresse-IPv6-fixe HA]:8123/api »,
Mais c’est pire, il y a plus d’erreur encore dans le journal log
Sinon avez-vous un conseil pour passer à travers l’IPv6 sans tout refaire ?
Merci de votre aide
Bonjour,
Merci pour le retour et les précisions qui pourront en aider d’autres… 🙂
[YOUR HOME ASSISTANT URL] correspond au domaine public de HA. Perso, j’ai un sous-domaine ha.mondomaine.com qui fonctionne bien, mais ça devrait aussi aller avec DuckDNS que j’ai eu utilisé avant de me faire un reverse proxy.
Le problème vient probablement du port 8123 qu’il n’est logiquement pas nécessaire de préciser… Sinon, c’est l’IPv6, mais pour être honnête je n’ai jamais testé car j’ai une IPv4 fixe. D’ailleurs, ma config de la première version du tuto fonctionne toujours, je m’explique mal comment vu tout ce qui a changé… 🤷♂️
Bon dimanche 🙂
Intéressant l’histoire du reverse proxy, mais avant d’ajouter encore de la complexité à mon infra (j’aime bien ça mais je ne suis pas informaticien) j’ai demandé un « rollback » à SFR. Ils ont annulé l’IPv6 et remis les règles de routage NAT dans l’interface de la box…et miracle tout fonctionne à nouveau !! youpi
Merci pour votre conseil
Merci pour le retour, j’aime bien avoir le fin mot de l’histoire. On peut supposer que c’était lié à l’IPv6… A moins que ça ne soit la config NAT, mais au fond tant que ça fonctionne, hein ? 😂 Il faudra que je tente en IPv6 quand même.
Bonne soirée 🙂
serait il possible d’expliquer pourquoi la mise en place d’un reverse proxy a fait abandonner duckdns? j’utilise duckdns et un reverse proxy, mais si il y a une maniere plus simple ou plus propre je suis preneur 🙂
Tout simplement parce que j’ai mes propres ndd, mais il est tout à fait « propre » d’utiliser DuckDNS avec un reverse proxy. 😉
Bonjour,
Pour information, je rencontre la même problématique que vous car SFR m’a imposé du jour au lendemain une IPV6 et m’a supprimé mon IPV4 fixe.
J’ai tenté de refaire toutes les manipulations décrites dans le tutoriel mais rien n’y fait si quelqu’un a trouvé l’astuce, je suis preneur car maintenant que j’ai migré sur l’IPV6, je n’ai pas prévu de demander un rollback.
Merci.
Merci pour ce tuto tres utile !
Tout fonctionne comme prévu sauf le dernier point : malgré l’ajout de la skill et le lien au compte, Alexa ne découvre aucun nouveau device.
Je vois que le test de la fonction Lambda (depuis la console) ne fonctionne pas :
Cependant un test en curl montre que l’identification fonctionne.
Je suis bien derrière un reverse proxy qui fonctionne bien.
J’ai du utiliser l’identification par Amazon pour que ca fonctionne (comme indiqué dans les derniers commentaires).
Je ne trouve rien dans les logs qui m’aiderait à identifier le problème.
A noter que j’utilise HACS, donc pas de supervisor ou OS.
Une idée du souci ?
Je profite d’un moment pour préciser que je suis passé d’une image Docker à une version Supervisor de Home Assistant, avec le même résultat.
C’est bizarre car sur ma VM Home Assistant OS, ça tourne bien… Je vais tenter une installation Docker sur un nouveau matériel prochainement et reprendre ce tuto qui commence à dater. 😉
Ce serait top ! 🙏🏻
Bonjour,
Merci pour ce Tuto bien détaillé 😉
Un peu vieux mais on s’en sort quand même
J’ai refait les étapes plusieurs fois et je bloque toujours à la validation de la fonction Lambda.
J’ai le message d’erreur suivant:
Unable to import module ‘lambda_function’: No module named ‘lambda_function’
J’ai vu dans les commentaires que d’autres avaient eu le même soucis mais malheureusement n’avaient pas eu de réponse.
J’espère avoir de l’aide pour pouvoir finir
Merci
Cdlt,
Bonsoir,
Je réponds à moi même, ca peut servir a d’autre
J’ai résolu mon problème
J’ai ajouté un fichier nommé lambda_fonction.py à la racine du code de fonction
lien: https://gist.github.com/matt2005/744b5ef548cc13d88d0569eea65f5e5b
Enregistrer et appuyer sur Deploy
Je refais le test, ca fonctionne
Pour m’assurer que le succès venait bien de l’ajout de ce fichier, je l’ai supprimé puis
Re Deploy et Re test, de nouveau en échec
Donc je l’ai Re créé …. Re succès.
Conclusion pour moi ce fichier change tous
Bonne soirée,
Guillaume
Bonsoir Guillaume,
Merci, cela pourra en aider certains en effet.
Par curiosité, comment est configuré ton accès distant ?
J’ai comme l’impression qu’il faut adapter la procédure en conséquence.
Bonne soirée 🙂
Bonsoir,
J’accède à mon serveur par https://XXXX.duckdns.com/58123
dans ma box je redirige le port 58123 vers l’IP de mon serveur et sur le port 8123.
J’ai suivie votre tuto sur la mise en place du duckdns sur HomeAssistant
Bonne soirée,
Guillaume
Bonsoir,
Merci pour cette précision, je tâcherai donc de le refaire avec DuckDNS car je n’ai pas ce souci sur mon reverse proxy. 😉
Bonne soirée 🙂
Salut, pour ceux qui ont le même problème, il suffit de renommer haaska.py en lambda_function.py (c’est le nom par défaut qu’attends la lambda) et à l’intérieur du fichier haaska.py, il faut aussi renommer def event_handler(event, context): en def lambda_handler(event, context):
J’ai eu le même problème que toi mais je ne l’ai pas résolu de la même façon.
j’avais juste omis de modifier le nom du gestionnaire dans les paramètres d’exécution par haaska.event_handler.
Bonjour,
Super boulot ! Mille mercis.
Comme beaucoup l’ont déjà dit, il y a des mises à jour à faire mais, dans l’ensemble, on s’y retrouve, surtout en lisant certains commentaires.
Justement, histoire d’amener ma pierre à l’édifice, comme certains, j’ai tout de même rencontré un souci. Bien que le test soit passé avec succès (après avoir mis « haaska.event_handler » dans le « Gestionnaire » du bloc « Paramètres d’exécution », en dessous du bloc où saisir le code), impossible de connecter le « Skill » dans l’app Alexa. Il arrive bien sur la page d’identification de mon HA mais, une fois les identifiants saisis, il m’est retourné qu’il ne peut pas se connecter. Après de longs moments de recherches infructueuses et des infos parfois contradictoires, j’ai fini pas trouver les paramètres qui coinçaient chez moi (si ça peut en aider d’autres…). La source est celle de ceux qui ont écrit le programme Python à télécharger (https://github.com/mike-grant/haaska/wiki/Setting-up-haaska). Voici donc ce que j’ai modifié pour que ça fonctionne chez moi :
Dans « Alexa developer console », rubrique « Account linking » :
Your Web Authorization URI : https://www.amazon.com/ap/oa
Access Token URI : https://api.amazon.com/auth/o2/token
Your Client ID : le Client ID Amazon (eg amzn1.application-oa2-client.****)
Your Secret : le Secret lié au client ci-dessus
Scope : profile
(Du coup, l’identification s’est faite avec Amazon et pas ceux de HA)
Dans le « configuration.yaml » de HA :
client_id: amzn1.ask.skill.********** (et pas le Client ID ; je ne sais pas si ça a une influence)
filter:
include_entities:
– id de l’entité 1 à faire remonter
– id de l’entité 2 à faire remonter
entity_config:
id de l’entité à piloter :
name: « nom pour Alexa »
description: « Description pour Alexa »
Ça permet de ne pas tout faire remonter mais seulement ce que l’on souhaite piloter avec Alexa.
Si ça peut aider…
À bientôt,
Vincent
Bonjour Vincent,
Merci pour ce retour très complet et précis, il devrait en aider plus d’un. 🙂
Comme je disais hier, je vais être amené à réinstaller Alexa sur une nouvelle instance ces prochains jours donc je pourrais tester ça à mon tour.
Bonne journée 🙂
bonjour,
merci pour ces infos supplémentaires qui m’ont bien aidé malheureusement lors de l’identification du compte amazon lors de l’association de la skill ca me met « votre mot de passe est incorrect » alors que c’est bien mon mdp pour mon compte amazon
Bonjour,
Je viens de suivre ce tuto qui me semble parfait ( pas encore pu tester, le test dans lambda est ok par contre )
Il y a de nombreuses étapes dont les screens ont évolués, notamment sur AWS et pour la partie skill, il y a maintenant une phase de publication / validation qui n’est pas décrite ici.
Auriez-vous la possible de réviser cette page ? elle le mérite franchement, c’est un super boulot que je partagerais en masse 😉
A bientot.
Bonjour,
Merci pour le retour ! En effet, les captures AWS ont plus de deux ans, mais nous avons prévu de présenter une nouvelle installation de Home Assistant très prochainement et nous en profiterons pour actualiser tout ça… 😉
Bonne fin de semaine… Et d’année ! 🙂
Merci pour ce retour,
J’ai enfin réussi a m’en sortir, cependant j’ai eu quelques difficultés.
Je partage ici les points d’attention:
Dans tous les cas, merci pour le boulot 🙂
Merci pour le retour et bonne fin d’année 😊
Bonjour a tous
j ai suivi ce tuto l an dernier et il fonctionne bien depuis , ( bon ca m a pollué la domotique alexa avec tous ce qu il y a dans Ha mais ça c est un autre probleme :p )
je recois depuis quelques temps un mail d amazon disant :
La période de 12 mois gratuits pour votre compte AWS 35xxxxxx expirera le December 31, 2022. Si aucune mesure n’est prise, vos ressources resteront actives et vous serez automatiquement facturé pour toutes ces ressources à la fin de la période des 12 mois gratuits.
est ce que vous avez recu aussi ?
je n arrive pas a trouver l’info du cout , savez vous combien cela vas couter ?
je ne suis pas contre payer ( j utilise le service) , mais j aimerais juste savoir combien avant 🙂
Hello,
Effectivement, HA nous met un peu le boxon au début, mais il est facile de limiter ce qui remonte dans Alexa avec
expose_by_default: false
et d’exposer ensuite ensuite ce que l’on veut au cas par cas. 😉 Ça limite aussi les requêtes AWS, ce qui nous intéresse pour la suite… Il est en effet possible d’utiliser l’offre gratuite pour la fonction Lambda, mais elle est limitée à 1 million de demandes par mois. AWS propose un calculateur de dépenses, mais logiquement le million de requêtes offert est largement suffisant. Au-delà, attention, la surprise peut vite coûter cher. 😉Bonjour
super boulot pour mettre en place cette méthode de connexion.
Après l’avoir essayé je peux apporter quelques compléments d’information, comme :
– Pour les compte développeur, aws et amazon (celui avec lequel vous vous connecté a écho), il faut utiliser la même adresse mail. Même un compte avec adresse mail différente pour aws ne fonctionne pas. Si il y a un alternative (complément de configuration) je suis preneur.
– depuis la création de ce tutoriel, les pages ont légèrement changé mais on s’y retrouve
Pour ma part j’aurais une question. Mon on installation ne fonctionne pas à 100%, j’ai pu faire le test « monévènement », et associer mon skill dans mon application sur tel, mais impossible de trouver mes capteur et autre appareil configuré sous HA, alors que je les voit bien dans les log du test « monevenement ». Quelqu’un a déjà rencontré ce problème et/ou a une solutions?
Merci
Je viens de résoudre mon problème… après 2 fausses manip de saisie. Maintenant ça fonctionne nickel
Lors de modif, j’ai eu la même erreur que eric « Unable to import module ‘lambda_function’ » et je l’ai résolu en n’oubliant pas de changer le gestionnaire par celui indiqué dans le tutoriel : haaska.event_handler
L’emplacement de sa saisie à vraiment changée sur le site
Bonne nouvelle alors ! Oui, c’est vrai, je vais me charger de le mettre à jour au plus vite ! 😉
Bonne journée 🙂
j’ai lancé le test et voilà le resultat PS j’y comprends rien j’ai suivi le tuto qui est bien fait mais j’ai du « merder » quelque part. Une grosse aise SVP Merci
Test Event Name
evenement
Response
{
« errorMessage »: « Unable to import module ‘lambda_function’: No module named ‘lambda_function' »,
« errorType »: « Runtime.ImportModuleError »,
« requestId »: « b2662df3-bca5-4b19-bfb5-f48a38c7b225 »,
« stackTrace »: []
}
Function Logs
START RequestId: b2662df3-bca5-4b19-bfb5-f48a38c7b225 Version: $LATEST
[ERROR] Runtime.ImportModuleError: Unable to import module ‘lambda_function’: No module named ‘lambda_function’
Traceback (most recent call last):END RequestId: b2662df3-bca5-4b19-bfb5-f48a38c7b225
REPORT RequestId: b2662df3-bca5-4b19-bfb5-f48a38c7b225 Duration: 38.81 ms Billed Duration: 39 ms Memory Size: 128 MB Max Memory Used: 36 MB Init Duration: 107.72 ms
Request ID
b2662df3-bca5-4b19-bfb5-f48a38c7b225
Excellent tutoriel.
J’ai un problème à la toute fin, en voulant
activer pour utilisation la Skill sur l’application Alexa (le test se passe
bien et me remonte des équipements).
En cliquant sur « Activer pour
utilisation » et lier la Skill à mon compte, Amazon me retourne une erreur
: une erreur s’est produite …
En cliquant sur le détail de l’erreur, j’ai
une erreur 404 Bad Request : l’URL de redirection n’est pas whitelistée dans
l’application. On me demande d’ajouter une URL de redirection dans le profil de
sécurité (Web Section).
Dans les Request Details de l’erreur, je
retrouve une des 3 adresses de redirection (celle avec « layla ») que
j’ai copié quand j’ai renseigné Account Linking (et collé dans le profil de
sécurité avec les 2 autres). Il semble que cette adresse soit rejetée.
Est-ce qu’il faut renseigner cette adresse
dans Home Assistant ?
Merci de me donner une piste.
Bonne continuation.
bonsoir, après plusieurs essais, la skill dans l’app alexa refuse de s’associer. Je ne sais vraiment plus quoi faire. Pouvez-vous l’aider ?
Bonjour,
Le test de la fonction lambda fonctionne-t-il bien ?
Utilisant désormais Nabu Casa, je ne fais plus appel à ma skill, mais je ferai un test dès que possible. 😉
Bonne journée
les test lambda est au vert en success. Vraiment je ne vois pas ce qui peux pêcher.
Apparemment vous êtes au moins deux à rencontrer ce problème, je suppose donc que quelque chose a dû changer du côté d’Alexa. Je vais investiguer la question.
merci pour ce que vous faites.
Bonjour,
Je viens d’appliquer le tuto et j’étais bloqué au même niveau. Après vérification sur la doc officielle, il semble que la partie Account Linking a été modifiée:
https://www.home-assistant.io/integrations/alexa.smart_home/#account-linking
Une fois les modifications effectuer on arrive bien a associer la Skill a notre Home Assistant.
Bonjour Kevin,
Merci pour ce retour, j’ai modifié le tutoriel en ce sens.
Bonne journée 🙂
Bonjour, merci pour ce tuto.
J’ai tout suivis à la lettre bien qu’ il y’ait quelques changement sur le site AWS.
J’ai cependant une erreur quand je lance le test, je ne sais pas si cela vient de mon api ou du fait que j’ai sécuriser ma connection avec DuckDNS et Nginx.
[spoiler title= »Erreur »]Response
{
« errorMessage »: « HTTPConnectionPool(host=’localhost’, port=8123): Max retries exceeded with url: /api/alexa/smart_home (Caused by NewConnectionError(‘<urllib3.connection.HTTPConnection object at 0x7ff66315e190>: Failed to establish a new connection: [Errno 111] Connection refused’)) »,
« errorType »: « ConnectionError »,
« stackTrace »: [
» File \ »/var/task/haaska.py\ », line 111, in event_handler\n return ha.post(‘alexa/smart_home’, event, wait=True)\n »,
» File \ »/var/task/haaska.py\ », line 65, in post\n timeout=(None, read_timeout))\n »,
» File \ »/var/task/requests/sessions.py\ », line 581, in post\n return self.request(‘POST’, url, data=data, json=json, **kwargs)\n »,
» File \ »/var/task/requests/sessions.py\ », line 533, in request\n resp = self.send(prep, **send_kwargs)\n »,
» File \ »/var/task/requests/sessions.py\ », line 646, in send\n r = adapter.send(request, **kwargs)\n »,
» File \ »/var/task/requests/adapters.py\ », line 516, in send\n raise ConnectionError(e, request=request)\n »
]
}
Function Logs
START RequestId: 1ebde404-7f7c-41ab-9636-a71d4c69fc8e Version: $LATEST
[ERROR] ConnectionError: HTTPConnectionPool(host=’localhost’, port=8123): Max retries exceeded with url: /api/alexa/smart_home (Caused by NewConnectionError(‘<urllib3.connection.HTTPConnection object at 0x7ff66315e190>: Failed to establish a new connection: [Errno 111] Connection refused’))
Traceback (most recent call last):
File « /var/task/haaska.py », line 111, in event_handler
return ha.post(‘alexa/smart_home’, event, wait=True)
File « /var/task/haaska.py », line 65, in post
timeout=(None, read_timeout))
File « /var/task/requests/sessions.py », line 581, in post
return self.request(‘POST’, url, data=data, json=json, **kwargs)
File « /var/task/requests/sessions.py », line 533, in request
resp = self.send(prep, **send_kwargs)
File « /var/task/requests/sessions.py », line 646, in send
r = adapter.send(request, **kwargs)
File « /var/task/requests/adapters.py », line 516, in send
raise ConnectionError(e, request=request)
END RequestId: 1ebde404-7f7c-41ab-9636-a71d4c69fc8e
REPORT RequestId: 1ebde404-7f7c-41ab-9636-a71d4c69fc8e Duration: 34.15 ms Billed Duration: 35 ms Memory Size: 128 MB Max Memory Used: 45 MB Init Duration: 310.48 ms
Request ID
1ebde404-7f7c-41ab-9636-a71d4c69fc8e [/spoiler]
Si quelqu’un a une solution, je suis preneur.
Merci.
Bonjour,
Désolé, votre message était passé à la trappe de notre filtre antispam à cause du code…
Votre nom d’hôte Home Assistant est défini sur localhost sur le port 8123… Pour utiliser l’API Alexa, il faut que votre instance soit accessible via HTTPS le port 443 avec un certificat SSL/TLS valide.
N’hésitez pas à rejoindre la communauté Facebook Home Assistant – groupe francophone si vous avez besoin d’aide. 😉
Bonne journée
Bonjour, je réponds 2 ans après mais ça va servir aux autres lecteurs.
J’ai eu la même erreur que lui au moment du test de la Lambda :
[ERROR] ConnectionError: HTTPConnectionPool(host=’localhost’, port=8123)
Mais voilà la solution !
Après avoir modifié le config.json, il faudra en fait cliquer sur le bouton « Deploy » ! (Sinon votre code modifié ne sera pas sauvegardé sur la Lambda)
Hello, merci pour ce tuto beau boulot.
Par contre, avant de me lancer, et comme dans ce genre de chose tout va très vite, je souhaite savoir si en oct 2022 le tout est toujours valable.
Merci.
Bonjour,
A notre connaissance oui. Amazon a peut-être modifié l’emplacement de certaines options sur AWS, ce qui arrive fréquemment, mais la procédure reste la même.
N’hésitez pas à nous le dire dans ce cas, nous mettrons le tuto à jour. 😉
Bon week-end
Chapeau bas le tuto!
Un peu long et quelques galères mais uniquement de ma faute et lorsque j’ai voulu personnaliser Sinon ca marche à la perfection.
Merci pour le tuto
Super ! Merci pour le retour. C’est en effet un peu long… Mais gratuit ! 😉
Bonjour,
Merci BCP pour ce tuto,
J’ai l’erreur suivante : « errorMessage »: « 2022-02-19T16:00:39.608Z a5d4f630-9a12-4471-8115-1e244943f0f6 Task timed out after 3.01 seconds »
Quelqu’un a trouvé la solution pour résoudre cette erreur,
Merci pour votre réponse,
Fred
(re) bonjour
apres une semaine de fonctionnement, (tout marche bien ) et pas encore testé de faire parler alexa, mais je note le code 🙂 je vois ceci dan smes fichiers de logs :
Logger: homeassistant.components.alexa.state_report
Source: components/alexa/state_report.py:166
Integration: Amazon Alexa (documentation, issues)
First occurred: 10:57:58 (231 occurrences)
Last logged: 11:36:36
Error when sending ChangeReport to Alexa: INVALID_ACCESS_TOKEN_EXCEPTION: Access token is not valid.
est ce que c est normal ?
Hum mon reverse proxy ne sert pas le http, uniquement le https, pas tellement envie d’exposer http en plus 🙁
Non c’est comme si mon skill n’arrivait pas à trigger la function lambda, y’a moyen de voir dans les logs lambda si la fonction a été triggée et quand ? #awsnoob 🙂
Essaie dans la config haaska quand tu importe JSON de te mettre en http://ton compte duck.dns.org au lieu de https:// ca m’etais arrive puis apres si ca fonctionne remets https apres pour tester
Hello,
Impossible de détecter quoique ce soir du côté d’Alexa de mon coté… Pourtant ma fonction lambda fonctionne, j’ai bien des entités qui remontent quand j’exécute le discover via le test de la fonction Haaska, j’ai bien ma skill qui est linkée comme trigger de cette fonction, j’ai linké ma skill sur mon app Alexa mais aucun device n’apparait. Une idée ? Merci 🙂
(re) bonjour ,
Alors j ai reussi 🙂 , j ai mis le temps et une corruption de SD entre temps , mais ce n’est pas évident car les pages ont pas mal changées sur les sites amazon , mais on fini par s’y retrouver si on reste méthodique.
j ai eu l’erreur Unable to import module ‘lambda_function’ , mais en lisant les commentaire c’est le handler qui était pas mis ( pareil, il est dur à retrouver :p )
et pour répondre a ma question plus haut ( meme si cela parait évident finalement ), il faut bien que ce soit sur le compte ou se trouve l alexa ( mais on peut en lier de plusieurs compte a priori ) .
a la fin, on as pas le message en vert lors du test, mais partant du principe qu’on as pas d erreur …. 🙂
alexa vien de me trouve rune 100aine de périph, je vais avoir du tri a faire, mais comme c est bien nommé ca devrais aller .
question subsidiaire, HomeAssistant peut faire parler alexa ? (je trouvais ça pratique depuis jeedom)
Bonjour,
Merci pour le retour ! 🙂
Bien sûr, il est également possible de faire du Text-To-Speech avec HA.
J’utilise par exemple ce code pour un message de bienvenue :
- service: media_player.alexa_tts
data:
entity_id:
- media_player.dot_entree
message: "Bienvenue à la maison"
Il est bien sûr possible d’ajouter plusieurs entités pour que le son soit diffusé sur plusieurs Echo. 🙂
Bon j’ai trouvé la solution, Je ne saurais expliquer vraiment pourquoi mais voilà ce que j’ai fait :
– Nouveau adresse sur duckdns pour forcer une actualisation du certificat (j’avais un soucis depuis presque 1 an ^^ )
– dans configuration.yalm j’ai enlevé (commenter du coup) la ligne avec l’adresse :
http:
#base_url: https://*****************
ssl_certificate: /ssl/fullchain.pem
ssl_key: /ssl/privkey.pem
– J’ai modifier le port de redirection de ma box car dans l’interface freebox il me disait « doit être supérieur à 16384 ».
Avant j’avais 8123 … comprends pas .. et là c’était écrit en rouge donc bon.
d’où ma nouvelle valeur 21876 par exemple (doit être compris entre 16384 à 65535) ….
donc j’ai :
port de début = 21876
port de fin = 21876
port de destination = 8123
Les problèmes sont arrivés tout pile le jour ou je suis passé de adsl à la fibre.. aucunes idées si il ya un lien…
Voilà .. en tout cas si jamais ça peut aider quelqu’un dautre….
Bonsoir Robin,
Merci pour le retour ! Nul doute que ça servira à d’autres… 🙂
S’agit-il de la même box?
Salut,
ça ne fonctionne plus chez moi depuis hier (Je suis passé à la fibre )
Je ne comprends pas trop pourquoi …
j’ai remis à jour mes ip sur duckdns (elles ont changées)
Je ne sais pas trop où chercher , ça a toujours fonctionner jusqu’à présent
pas grand chose si je retest la fonction aws :
START RequestId: 9e76d30b-2845-449f-a4cc-a11344c12fbc Version: $LATEST
END RequestId: 9e76d30b-2845-449f-a4cc-a11344c12fbc
REPORT RequestId: 9e76d30b-2845-449f-a4cc-a11344c12fbc Duration: 3003.65 ms Billed Duration: 3000 ms Memory Size: 128 MB Max Memory Used: 19 MB
2021-12-01T18:41:41.307Z 9e76d30b-2845-449f-a4cc-a11344c12fbc Task timed out after 3.00 seconds
Voilà, si quelqu’un a une idée ?
Je vais re tenter la procedure a tete reposée ce soir ou demain ( dur d etre concentré avec les enfants :p )
Questions subsidiaire, mon Echo est sur le compte (mail/amazon) de ma conjointe, on peut le lier ? ou il faut que je crée le compte AWS avec son mail ?
A vrai dire, j’utilise toujours le même compte, je n’ai pas essayé avec des comptes différents… 😉
Bonjour, super tuto, mais il semble que les pages amazon aient un peu changées .
je ne trouve pas le « login with amazon » et donc je n arrive pas a finir le tuto .
quelque un peut me dire ou il se trouve ?
Bonjour,
Merci ! 🙂
C’est entouré sur la capture, et je viens de vérifier, l’onglet est toujours à la même place… Êtes-vous bien sur le site developer.amazon.com ?
Bonjour, je ne trouve pas ou télécharger ce fichier haaska.zip??? J’ai regardé partout sur la page… Ou se trouve t il?
Merci
Bonjour,
Pourtant, il y est bien : Hasska 1.1.0 sur Github. L’archive est téléchargeable directement ici. 🙂
Juste une info sur la découverte des appareils sur Alexia, quand j’avais installer google sauvegarde sur ha il m’étais impossible de decouvrir mes appareils j’ai donc fait une restauration de mon system avant l’installation de google drive sauvegarde. et je teste en permanence la decouverte des appareils a chaque mise a jours de ha et des addons
Bonjour, je ne peux que réitérer les félicitations pour cet excellent tuto ! Je suis arrivé au bout et le test fonctionne (plusieurs informations de mes appareils présents sur HASS s’affichent). Par contre dans Alexa, après avoir ajouté ma skill, aucun appareil n’est découvert 🙁 Je ne réussis donc à piloter par exemple mon aspirateur robot. Qu’ai-je loupé ? Help. Merci
Même probleem que Dabo (ci-dessus) … pb de connexion.
Si qq a une idée !!!
Si tous les tutos du monde pouvaient être comme celui là, ce serait super ! J’ai rarement vu des explications aussi claires et précises, surtout sur un sujet aussi pointu. Chapeau bas les mecs, c’est de l’excellent travail ! 20/20 !
Bonsoir à tous,
Un GRAND merci pour ce tuto… mais je bloque désespérément sur la phase de test de l fonction Lambda avec le message d’erreur suivant :
Test Event Name
MonEvenement
Response
{
« errorMessage »: « HTTPConnectionPool(host=’localhost’, port=8123): Max retries exceeded with url: /api/alexa/smart_home (Caused by NewConnectionError(‘: Failed to establish a new connection: [Errno 111] Connection refused’,)) »,
« errorType »: « ConnectionError »,
« stackTrace »: [
[
« /var/task/haaska.py »,
111,
« event_handler »,
« return ha.post(‘alexa/smart_home’, event, wait=True) »
],
[
« /var/task/haaska.py »,
65,
« post »,
« timeout=(None, read_timeout)) »
],
[
« /var/task/requests/sessions.py »,
581,
« post »,
« return self.request(‘POST’, url, data=data, json=json, **kwargs) »
],
[
« /var/task/requests/sessions.py »,
533,
« request »,
« resp = self.send(prep, **send_kwargs) »
],
[
« /var/task/requests/sessions.py »,
646,
« send »,
« r = adapter.send(request, **kwargs) »
],
[
« /var/task/requests/adapters.py »,
516,
« send »,
« raise ConnectionError(e, request=request) »
]
]
}
Function Logs
START RequestId: 46cadfd5-2405-4882-bb7b-b9f07bf15cb1 Version: $LATEST
HTTPConnectionPool(host=’localhost’, port=8123): Max retries exceeded with url: /api/alexa/smart_home (Caused by NewConnectionError(‘: Failed to establish a new connection: [Errno 111] Connection refused’,)): ConnectionError
Traceback (most recent call last):
File « /var/task/haaska.py », line 111, in event_handler
return ha.post(‘alexa/smart_home’, event, wait=True)
File « /var/task/haaska.py », line 65, in post
timeout=(None, read_timeout))
File « /var/task/requests/sessions.py », line 581, in post
return self.request(‘POST’, url, data=data, json=json, **kwargs)
File « /var/task/requests/sessions.py », line 533, in request
resp = self.send(prep, **send_kwargs)
File « /var/task/requests/sessions.py », line 646, in send
r = adapter.send(request, **kwargs)
File « /var/task/requests/adapters.py », line 516, in send
raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPConnectionPool(host=’localhost’, port=8123): Max retries exceeded with url: /api/alexa/smart_home (Caused by NewConnectionError(‘: Failed to establish a new connection: [Errno 111] Connection refused’,))
END RequestId: 46cadfd5-2405-4882-bb7b-b9f07bf15cb1
REPORT RequestId: 46cadfd5-2405-4882-bb7b-b9f07bf15cb1 Duration: 139.76 ms Billed Duration: 140 ms Memory Size: 128 MB Max Memory Used: 49 MB Init Duration: 78.74 ms
Request ID
46cadfd5-2405-4882-bb7b-b9f07bf15cb1
Pouvez-vous m’aiguiller sur l’erreur que j’ai réalisée svp ?
Merci par avance de votre aide !
Bonjour à tous,
un grand merci pour ce tuto très bien détaillé mais je bloque désespérément au test et ne sais plus quoi faire à part tout reprendre une nouvelle fois à zéro ! Est-ce l’un d’entre vous saurait m’indiquer où chercher suite à l’erreur suivante svp:
START RequestId: 91a9b0ed-2e79-47cb-be53-9e945771e97a Version: $LATEST
HTTPConnectionPool(host=’localhost’, port=8123): Max retries exceeded with url: /api/alexa/smart_home (Caused by NewConnectionError(‘: Failed to establish a new connection: [Errno 111] Connection refused’,)): ConnectionError
Traceback (most recent call last):
File « /var/task/haaska.py », line 111, in event_handler
return ha.post(‘alexa/smart_home’, event, wait=True)
File « /var/task/haaska.py », line 65, in post
timeout=(None, read_timeout))
File « /var/task/requests/sessions.py », line 581, in post
return self.request(‘POST’, url, data=data, json=json, **kwargs)
File « /var/task/requests/sessions.py », line 533, in request
resp = self.send(prep, **send_kwargs)
File « /var/task/requests/sessions.py », line 646, in send
r = adapter.send(request, **kwargs)
File « /var/task/requests/adapters.py », line 516, in send
raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPConnectionPool(host=’localhost’, port=8123): Max retries exceeded with url: /api/alexa/smart_home (Caused by NewConnectionError(‘: Failed to establish a new connection: [Errno 111] Connection refused’,))
END RequestId: 91a9b0ed-2e79-47cb-be53-9e945771e97a
REPORT RequestId: 91a9b0ed-2e79-47cb-be53-9e945771e97a Duration: 128.87 ms Billed Duration: 129 ms Memory Size: 128 MB Max Memory Used: 49 MB Init Duration: 79.49 ms
Ca pourrait être lié à la config de mon routeur (Freebox revolution) mais je parviens à me connecter en 4G, ce qui me semblait exclure cette option ?
Merci par avance de votre aide (je croise les doigts) !
Bonjour,
tout fonctionne bien jusqu’à l’activation du skill…Impossible à activer et pas de message d’erreur
Salut comment as tu fais ton reinstal fresh
merci pour ton retour
Bonjour à tous
Merci beaucoup pour ce travail .
Fonctionne impeccable .
Petit soucis à cause du changement d’interface de la plateforme de développement Amazon mais en lisant les commentaires on s’y retrouve.
Bonne journée et, continuez comme ça.
Merci pour le retour… 😀
Bon week-end !
Tout a fonctionné du premier coup, merci pour ce Tuto super complet !
Merci pour le retour ! 🙂
Bonjour,
voir la reponse de Greg du 21 juin 2020 : sur la page de declaration de la fonction lambda, dans la rubrique « Paramètres d’exécution » il faut préciser le gestionnaire : haaska.event_handler
Bonjour à tous,
Excellent tuto et plutôt bien détaillé. J’ai un peu galérer au départ, car je ne voulais pas passer par DuckDNS mais par Gandi mais j’ai eu des soucis avec le certificat donc j’ai préféré revenir dans les rails. Ma lambda fonctionne nickel et me renvoie bien la liste des appareils.
Par contre, lorsque je vais voir mes skills dans l’app Alexa, il me montre bien ma skills en mode dev avec un message « cette skill requiert l’association d’un compte » et lorsque je tente de l’activer pour utilisation, cela ne marche pas avec un message : « le serveur d’autorisation a renvoyé un paramètre « error ». Et ils précisent qu’ils rencontrent un probleme de connection avec la skill pour associer mon compte.
Vous auriez une idée ?
Bonjour a tous
j ai bien exécuté la manip et cela fonctionne .
j’ai remarque que au bout de quelque temps les nouveaux appareils ajouté apres ne sont plus detectes par Alexa .
les appareils retirés d’alexa ne sont plus découvert non plus .
apres test la fonction lambda voit bien tous les appareils . j’ai désactivé puis réactivé la skill mais pas de changements .
sur la console Amazon l’indicateur nombre d’utilisateur est tombé a zéro alors que avant un utilisateur unique .
cela m’était déjà arrive et j’avais fait une reinstal fresh et tout était revenu .
une idée du pourquoi ?
super tuto (pas facile faut le dire) à mettre à jour mais ok pour moi: bonne galère sur le test mais fonctionnel après avoir cliqué sur Deploy une fois les modifs effectuées dans l’encadrer « code de fonction » et la modif des gestionnaire « haaska.event_handler » dans l’encadrer « paramètres d’exécution »
Bonjour et merci pour ce tuto.
tout s’est bien déroulé jusqu’au test 🙁
voilà ce que j’ai en retour:
{
« errorMessage »: « Unable to import module ‘lambda_function' »
}
Function Logs
START RequestId: 7778cefc-e7a6-408e-9120-53f242c98a6d Version: $LATEST
Unable to import module ‘lambda_function’: No module named ‘lambda_function’
END RequestId: 7778cefc-e7a6-408e-9120-53f242c98a6d
REPORT RequestId: 7778cefc-e7a6-408e-9120-53f242c98a6d Duration: 0.41 ms Billed Duration: 1 ms Memory Size: 128 MB Max Memory Used: 43 MB Init Duration: 1.10 ms
Request ID
7778cefc-e7a6-408e-9120-53f242c98a6d
Auriez-vous une idée du problème
Merci
Cdlt
Stéphane.
Wahou, hyper technique mais sa fonctionne…incroyable. BRAVO !!
Mais ce serait cool que les développeurs de HA et que les équipes Amazon Alexa se dote d’API mieux partagé pour éviter ce genre de manipulation accessible qu’a quelques passionnés, ou geek en herbe comme moi.
Et merci Berno pour pour tes qq conseil qui m’ont aider à me sortir du Test final qui était en défaut au départ.
Comme toi j’ai raté le fait de remplacer « haaska.event_handler » dans le gestionnaire, juste après le code fonction Lambda.
Petite question annexe. Depuis que j’ai activé le duckdns je ne sais plus accéder au ha que depuis le DNS (l’adresse duckdns externe) et plus depuis l’IP interne avec l’App.
Je suis obligé de couper le wifi de mon téléphone pour passer en data. Pourtant
-j’ai bien configuré les deux adresses et le ssid dans l’App
– j’ai bien configuré les deux adresses dans la config> généralités de ha
– avec l’interface web (via navigateur web) les deux adresses fonctionnement
Une idée ?
Bonne journée
Super article qui m’a bien aidé car la version française de l’aide hass sans images d’illustration est trop compliquée pour un novice. j’ai eu un pb à la fin de l’intégration, vérifiez votre duckdns si ca ne fonctionne pas bien. merci encore
Merci pour le retour Vincent ! 😀
Super je suis content pour toi
Hello hello,
Ça marche super bien. Tout effacé, tout recommencé -> ça marche nickel
Bonne journée,
Ludo
Arf ! C’est parfois la solution… Les voies de l’informatique sont parfois impénétrables. ;p
Bonjour bonjour,
Super tuto. ca a du prendre du temps. Malheureusement pour moi ca ne fonctionne pas.
J’ai également un petit soucis lors du test (voir ci-dessous). Je me demande si ce n’est pas lié à l’authentification multi facteur?
Quand je me connecte à HA de mon app il me demande une 2e clé de sécurité.
J’imagine que c’est pareil ici? ou alors c’est juste géré par le token?
Je ne comprends pas le commentaire de Romain Denis (13/05/2020) avec les espaces devant api:. Je ne vois pas d’espaces dans son post.
Moi j’ai eu le soucis en telechargeant le zip qu’il y a un haaska-1.1.0.zip et un haaska_1.1.0. Forcément j’ai pris le mauvais.
Mon accès fonctionne bien de l’extérieur mais j’ai cette erreur :
Response
{
« errorMessage »: « Expecting value: line 4 column 12 (char 266) »,
« errorType »: « JSONDecodeError »,
« stackTrace »: [
[
« /var/task/haaska.py »,
106,
« event_handler »,
« config = Configuration(‘config.json’) »
],
[
« /var/task/haaska.py »,
80,
« __init__ »,
« self._json = json.load(f) »
],
[
« /var/lang/lib/python3.6/json/__init__.py »,
299,
« load »,
« parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw) »
],
[
« /var/lang/lib/python3.6/json/__init__.py »,
354,
« loads »,
« return _default_decoder.decode(s) »
],
[
« /var/lang/lib/python3.6/json/decoder.py »,
339,
« decode »,
« obj, end = self.raw_decode(s, idx=_w(s, 0).end()) »
],
[
« /var/lang/lib/python3.6/json/decoder.py »,
357,
« raw_decode »,
« raise JSONDecodeError(\ »Expecting value\ », s, err.value) from None »
]
]
}
Function Logs
START RequestId: 41535708-afbe-4e16-b2c0-4ee2ace1a89b Version: $LATEST
Expecting value: line 4 column 12 (char 266): JSONDecodeError
Traceback (most recent call last):
File « /var/task/haaska.py », line 106, in event_handler
config = Configuration(‘config.json’)
File « /var/task/haaska.py », line 80, in __init__
self._json = json.load(f)
File « /var/lang/lib/python3.6/json/__init__.py », line 299, in load
parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
File « /var/lang/lib/python3.6/json/__init__.py », line 354, in loads
return _default_decoder.decode(s)
File « /var/lang/lib/python3.6/json/decoder.py », line 339, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File « /var/lang/lib/python3.6/json/decoder.py », line 357, in raw_decode
raise JSONDecodeError(« Expecting value », s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 4 column 12 (char 266)
END RequestId: 41535708-afbe-4e16-b2c0-4ee2ace1a89b
REPORT RequestId: 41535708-afbe-4e16-b2c0-4ee2ace1a89b Duration: 0.83 ms Billed Duration: 1 ms Memory Size: 128 MB Max Memory Used: 53 MB
Request ID
41535708-afbe-4e16-b2c0-4ee2ace1a89b
Bonne journée,
L.
Un grand merci pour ces info complémentaire qui m’ont permis d’activer la skill.
Dans le tuto le point n°2 n’est pas spécifié.
Le point n°3 contredi ce qui est indiqué dans le tuto (ce dernier ne nous fais pas prendre les bon ID/Secret pour le fichier de configuration)
Il serai peut-être bien de mettre à jour pour les prochain 😉
Quoi qu’il en soit un grand merci j’ai pu aller au bout de l’activation 🙂
Et maintenant :
Response
{
« errorMessage »: « Unable to import module ‘haaska’: No module named ‘haaska' »,
« errorType »: « Runtime.ImportModuleError »
}
Help
Bonjour, le test ne fonctionne pas… ça m’indique :
« errorMessage »: « Unable to import module ‘lambda_function’: No module named ‘lambda_function' »
Si je change par haaska.event_handler, idem erreur 😕
J’ai la même erreur, as-tu pu la résoudre ? (Dans le gestionnaire, j’ai bien mis haaska.event_handler)
je me répond à moi même : il faut appliquer le filter au bloc smart_home et non pas au bloc alexa comme je faisais (indentation)
alexa:
smart_home:
locale: fr-FR
endpoint: https://api.eu.amazonalexa.com/v3/events
filter:
include_entities:
– light.toto
– light.tata
Ca fonctionne très bien ! En complément, j’ai ajouté quelques lignes dans le fichier de configuration.yaml afin de ne donner autoriser Alexa à controller quelques devices bien définies. Seulement, cette dernière étape ne semble pas vouloir fonctionner .
ci-joint les lignes ajoutées :
alexa:
smart_home:
locale: fr-FR
endpoint: https://api.eu.amazonalexa.com/v3/events
filter:
include_entities:
– light.toto
– light.tata
non tu peux mais surtout efface a chaque fois le précédent, personnellement j’ai mis nom different et efface l’ancien. tiens moi au jus
Bonjour Sébastien, merci pour ton retour. Penses tu qu’il est possible de refaire toute la procédure sans que ça mette le bazar ?
merci
Bonjour Sébastien, merci pour ton retour. Je peux refaire toute la procédure sans que ça chamboule tout ?
il nous faut plus d’info Nicolas. j’ai eu des soucis aussi au debut car il me manquait des infos. du coup j’ai pris aussi le tuto de Dzzz voir lien youtube au dessus.
Refait un check des parametres.
Merci pour ton retour
Bonjour, Super tuto ! Merci bcp. J’ai du faire une erreur quelque part ?
le teste me donne cette erreur
{
« errorMessage »: « Unable to import module ‘lambda_function' »
}
Lambda ne trouve pas le fichier lambda_function.py. Vérifiez que votre gestionnaire respecte le format file-name.method.
Vous voyez d’ou cela peut venir ?
Merci
Clt
essaie de rentrer dans ton home assistant de l’extérieur voir si ça fonctionne
personnellement j’ai retiré les 3 derniere ligne du fichier yaml et ca fonctionne correctement j’ai tous mes sensor y compris deconz. est que votre test fonctionne ?
j’ai fait un mixte des 2 videos et celle ci ne mets pas les dernières du fichiers yaml
https://youtu.be/dmeIEEKmv58
Rien à faire, 10 fois que je refais la procédure, toujours INVALID_ACCESS_TOKEN_EXCEPTION…
Quelque chose à changé du côté d’Amazon, ce tuto n’est plus d’actualité c’est pas possible autrement
Bonjour,
Occupé depuis plus de 6h à refaire et refaire et encore refaire la procédure que je connais quasiment par coeur maintenant.
IMPOSSIBLE d’avoir un test correct.
voici la réponse.
{
« errorMessage »: « HTTPSConnectionPool(host=’did****.duckdns.org’, port=8123): Max retries exceeded with url: /api/alexa/smart_home (Caused by SSLError(SSLError(1, ‘[SSL: UNKNOWN_PROTOCOL] unknown protocol (_ssl.c:852)’),)) »,
« errorType »: « SSLError »,
« stackTrace »: [
[
« /var/task/haaska.py »,
111,
« event_handler »,
« return ha.post(‘alexa/smart_home’, event, wait=True) »
],
[
« /var/task/haaska.py »,
65,
« post »,
« timeout=(None, read_timeout)) »
],
[
« /var/task/requests/sessions.py »,
581,
« post »,
« return self.request(‘POST’, url, data=data, json=json, **kwargs) »
],
[
« /var/task/requests/sessions.py »,
533,
« request »,
« resp = self.send(prep, **send_kwargs) »
],
[
« /var/task/requests/sessions.py »,
646,
« send »,
« r = adapter.send(request, **kwargs) »
],
[
« /var/task/requests/adapters.py »,
514,
« send »,
« raise SSLError(e, request=request) »
]
]
}
Si quelqu’un a une réponse, avant que j’abandonne définitivement le projet.
en vous remerciant par avance.
Bonjour,
J’ai exactement le même soucis.
avez vous trouvé une solution?
D’avance merci
Salut,
j’avais la meme erreur et ca viens d’une info long token qui ne faut par mettre a l’etape « account linking » dans token il faut rien mettre et apres je n’ai plus cette d’erreur mais malheureusement faut que tu effaczes tous pour recommencer
De mon côté, j’ai suivi le tuto et ça a globalement fonctionné à part l’Account Linking. La skill Alexa ne voulait tout simplement pas s’associer.
Pour cette partie là, j’ai suivi le tuto officiel et ça a résolu mon problème : https://www.home-assistant.io/integrations/alexa.smart_home/#account-linking
bonjour,
j’ai une erreur
{
"errorMessage": "HTTPConnectionPool(host='localhost', port=8123): Max retries exceeded with url: /api/alexa/smart_home (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused',))",
"errorType": "ConnectionError",
"stackTrace": [
[
"/var/task/haaska.py",
111,
"event_handler",
"return ha.post('alexa/smart_home', event, wait=True)"
],
[
"/var/task/haaska.py",
65,
"post",
"timeout=(None, read_timeout))"
],
[
"/var/task/requests/sessions.py",
581,
"post",
"return self.request('POST', url, data=data, json=json, **kwargs)"
],
[
"/var/task/requests/sessions.py",
533,
"request",
"resp = self.send(prep, **send_kwargs)"
],
[
"/var/task/requests/sessions.py",
646,
"send",
"r = adapter.send(request, **kwargs)"
],
[
"/var/task/requests/adapters.py",
516,
"send",
"raise ConnectionError(e, request=request)"
]
]
}
|
j’ai bien le skill dev dans Alexa.
merci pour votre aide
j’avais pas deployer le script 🙂
bonjour,
cela ne fonctionne pas pour moi, j’ai cette erreur qui apparaît à chaque fois dans les logs dHA :
Error when sending ChangeReport to Alexa: INVALID_ACCESS_TOKEN_EXCEPTION: Access token is not valid.
Bonjour, j’ai la même chose, que toi, as tu trouvé une solution ?
Bonjour,
J’ai suivi à la lettre les instructions et ça a marché du premier coup ! Du pur bonheur quand ca fonctionne comme ça, en plus avec les capture, le tuto est génial !
Un grand merci pour ce super boulot !
super tout fonctionne merci!!!!
Merci pour ton retour Steven ! A bientôt sur le groupe… ;)’
Pour ceux qui ont un problème du type:
Error when sending ChangeReport to Alexa: INVALID_ACCESS_TOKEN_EXCEPTION: Access token is not valid.
1 – Dans le securiy profile « login with amazon », bien ajouter son l’url+port de HA dans « Allowed Origins »
2 – dans la skill alexa, onglet permission: cocher « send alexa event » et copier dans le pense bête les alexa client ID et client secret qui apparaissent plus bas
3 – de le fichier de conf.yaml: replacer client id et client_secret par ceux que l’on a copier juste avant
4 – s’assurer egalement que l’external url est configurer pour HASS (onglet configuration>general> external url > votre domain:port) (dans votre profil, les parametres avancés doivent être activé)
5- desactive/reactive skil /redemare hass autant que necessaire
et plus d’erreur pour moi….
Merci pour l’info Julien ! 🙂
Super tuto !!
Je commande désormais mon ampli and co avec Alexa !!!
Merci !!!!
Bonjour, tout niquel jusqu’à ce que j’active le skill et … aucun appareil trouvé !
pourtant depuis la console aws le test est un succès et je vois bien tout mes appareils dans le log.
mais l’application alexa n’en découvre aucun ..
Même problème chez moi, vous auriez trouvé une solution ?
Bonjour, j’ai la même erreur. quelqu’un pourrai nous aider?
Bonjour à tous,
Durant le test petit problème « errorMessage »: « 2020-09-12T16:20:07.883Z 7eb1ef0f-ab00-4730-bb20-83f42334f119 Task timed out after 3.00 seconds »
pourtant tout le reste est ok, est ce que quelqu’un aurait eu le même problème?
Merci d’avance
Bonjour, j’ai le même soucis, du coup comment avez vous pu tester la fonction ?
Je viens de configurer Alexa sur HomeAsstsant suivant ce guide et , bien que cela fonctionne , j’ai le meme soucis
Edit: c’est bon, je m’était embrouillé avec les comptes
Bonjour,
Déjà merci pour ce guide, mais je rencontre un souci, sûrement une erreur de ma part, mais je ne trouve pas mon skill dans l’application Alexa Amazon, je ne vois pas l’onglet skil dev sur l’application.
Vous avez une idée du pourquoi du comment ? Je précise que le test fonctionne bien , je pense avoir bien fait le guide.
Merci a vous.
Bonjour,
Merci pour ce guide, mais je rencontre un souci, sûrement une erreur de ma part, mais je ne trouve pas mon skill dans l’application Alexa Amazon, je ne vois pas l’onglet skil dev sur l’application.
Vous avez une idée du pourquoi du comment ? Je précise que le test fonctionne bien , je pense avoir bien fait le guide.
Merci a vous.
personne n’a ce problème ? INVALID_ACCESS_TOKEN_EXCEPTION
@Greg , non je n’ai pas eu ce souci , par contre je reste avec le problème : Error when sending ChangeReport to Alexa: INVALID_ACCESS_TOKEN_EXCEPTION: Access token is not valid.
bonjour , après la mise en place et l’association du skill, j’ai toujours un message d’erreur dans HA:
Error when sending ChangeReport to Alexa: INVALID_ACCESS_TOKEN_EXCEPTION: Access token is not valid.
comme précisé dans les doc HA, j’ai dissocié puis réssocié la skill , puis rdémarré HA , mais c’est pareil, suis-je le seul ? y a t il correctif ?
Nota: dans la partie Account linking: la documentation HA et le tutoriel donne des valeurs différentes pour autorization URI et authorization Token ainsi que pour Authentification scheme ==> qui a raison ?
la possibilité de changer de gestionnaire à changé d’endroit et n’est plus dans la fenêtre de téléchargement comme montré dans les copies d’écrans , mais un plus bas dans une zone à part, si comme moi vous n’avez pas scrollé vers le bas , alors vous ne voyez pas cette partie , qui est bloquante si pas mise à jour, une fois mise à jour c’est OK ça fonctionne.
Bonjour,
J’ai rencontré le même souci. La capture ne correspond plus à ce qu’il y a maintenant. Plus bas dans la page de ta fonction, tu as un bloc « Paramètres de base ». tu fais « modifier » et dans la partie gestionnaire, tu remplaces par haaska.event_handler.
Ton test devrait fonctionner.
Mois je reste bloqué sur l’activation dans l’application. Si ca fonctionne pour toi, je suis preneur.
Greg
Bonjour Greg,
En effet, HA évolue vite et il nous faut mettre à jour le tuto, nous allons nous pencher sur la question. 😉
Bonjour,
Je rencontre un problème lors de l’activation pour utilisation. L’association du compte ne fonctionne et pour cause, dans les détailsj’ai un Unknown client_id. en effet, l’ID que je vois ne correspond pas à celui que j’ai dans sur amazon developer. Et à aucun moment lors de l’activation j’ai une demande pour saisir mes ID/mdp. Auriez-vous une idée?
Merci beaucoup et merci pour ce site que je viens de découvrir.
Greg
Salut, super tuto ! J’ai une question bête, une fois le tuto réaliser comme je peux faire pour demander à alexa de fermer mes volets par exemple
bonjour, j’ai une erreur dans les tests,
lors de l’étape de chargement du fichier haaska_1.1.0.zip dans la partie lambda > fonction > code fonction, je ne trouves dans les écrans la possibilité de changer le Gestionnaire (action 3 de l’écran), j’ai peut-être loupé quelque chose ou une fenêtre, de ce fait il est possible que le message d’erreur lors des tests :
Response:
{
« errorMessage »: « Unable to import module ‘lambda_function' »
}
soit lié à cette étape qui n’est pas comme décrite dans ce très bon tuto.
merci de votre aide
Est ce que quelqu’un arrive à piloter autres choses que des lampes et des prises ? J’ai l’impression que les input boolean ne sont pas activable. Je vois les scripts mais comme la plupart du temps il en faut 2 (1 pour allumer et 1 pour eteindre), elle me dit qu’elle en voit plusieurs et me demande lequel activer.
Je n’ai pas trouvé de doc sur comment transformer un input boolean en switch. Bref les possibilités sont un peu limité, c’est dommage.
Wahou ! Merci Aurélien , ça marche…..au top !!
Personnellement mon Smart home skill tourne depuis quelques temps, et fonctionne pour toutes les lumières de ma maison (dev perso qui transfert les demandes à mon automate).
J’arrive également à faire detecter les volets, et à les controler depuis l’application Alexa.. Mais impossible de les controler en parlant directement à Alexa.. Etrange !
Effectivement, c’est bizarre. Et en routine, avec une phrase personnalisée, ça fonctionne?
Franchement, merci pour ce super tuto, il est vraiment bien détaillé. Je n’ai pas réussi du premier coup, j’avais loupé le gestionnaire haaska.event_handler, j’avais une erreur sur le test que j’ai finalement résolue.
Je pensais en avoir bavé a intégrer mon google home maisc’était une partie de rigolade comparé à celui ci..
Je ne comprends pas pourquoi c’est aussi compliqué, mais bon si ca permet d’économiser 5€ par mois je suppose que c’est un moindre mal.
Merci encore, en espérant que les screens ne soit pas obsolète rapidement comme pour l’intégration du google home.
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
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
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….)
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
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.
Bonjour, merci pour votre retour! je viens de corriger l’erreur d’indentation 🙂
Bonjour, j’ai exactement le meme probleme, j’ai bien lu la reponse donnée mais je ne vois pas le changement
SOS 🙂
un super tuto … milles merci
youpiiiiiiiiiiiiiiiiiiii j’ai réussi
merci aurelien
Well done !:D Il faut avouer que le tuto d’Aurélien est parfait. 🙂
Bonjour,
Je suis partie sur un accès à l’extérieur via le vpn ZeroTier que je trouvais plus secu.
J’essaye de faire l’intégration pour Alexa mais je bloque sur la config au niveau des url à mettre pour accéder à home assistant.
Quelqu’un aurait fait la config via avec l’accès via vpn ZeroTier ?
Merci d’avance.
Hello,
ZeroTier est top, mais trop restrictif pour utiliser cette intégration Alexa, il te faut nécessairement exposer un port pour les serveurs AWS. Donc soit tu te passes d’Alexa, soit tu te tournes vers un reverse proxy ou un service comme Cloudflare (qui est un reverse proxy doublé d’un VPN). 😉
Bon dimanche
Excellent article et très bien – assez chaud à réaliser mais ca fonctionne très bien.
Merci pour le retour ! Plus que chaud, c’est un peu long, mais Aurélien nous a parfaitement guidé je pense. 🙂