Muitas pessoas tem dificuldade em seguir o manual do Home Assistant, por mais que esteja bem documentado, mas confesso que fazer os dispositivos do Home Assistant aparecerem na Alexa não é das opções mais tranquilas, por isso resolvi criar um tutorial que pudesse ajudar quem ainda tem dificuldades.
Atualmente há duas maneiras de ter seus dispositivos na Alexa:
1) Configuração automática via Home Assistant Cloud
Com o Home Assistant Cloud, você pode conectar sua instância do Home Assistant com apenas alguns cliques na Alexa. Além disso, com o Home Assistant Cloud, você não precisa lidar com certificados DNS dinâmicos, SSL ou abrir portas no seu roteador. Basta fazer login através da interface do usuário e uma conexão segura com a nuvem será estabelecida. O Home Assistant Cloud requer uma assinatura paga após uma avaliação gratuita de 30 dias.
Este serviço é executado pelo parceiro Nabu Casa, uma empresa fundada pelos fundadores da Home Assistant e do Supervisor.
Após o teste gratuito, a assinatura custa US $ 5 por mês .
Para configurar, basta acessar seu HA, menu “Configurações” → “Home Assistant Cloud”. Criar uma conta, fazer a autenticação e iniciar o teste gratuito dos primeiros dias.
2) Configuração Manual
O artigo é baseado no manual do Home Assistant
Requisitos
- Uma conta de desenvolvedor na Amazon;
- Home Assistant esteja acessível na Internet com a porta 443 ou 8443 (https://forum.homeassistantbrasil.com.br/t/instalando-o-duckdns-tenha-acesso-ao-home-assistant-interno-e-externo-http-e-https/1136)
- Ter a porta 443 ou 8443 aberta, verifique no site Open Port Check Tool - Test Port Forwarding on Your Router (yougetsignal.com)
- Necessária uma conta da AWS para usar a API do Smart Home Skill;
Observação: Uma parte da sua habilidade Smart Home será hospedada na AWS Lambda . No entanto, você não precisa se preocupar com custos; O AWS Lambda é gratuito para até 1 milhão de solicitações e 1 GB de transferência de dados de saída por mês.
Tutoriais Oficiais Home Assistant
No site do Home Assistant que passei mais acima, exitem alguns tutoriais, são eles:
- Create an Alexa Smart Home Skill to control lights, etc.
- Create a Custom Alexa Skill to build custom commands
- Create a new Flash Briefing source
- Alternative: use the Emulated Hue integration to trick Alexa into thinking Home Assistant is a Philips Hue hub.
Neste tópico vamos repassar o tutorial Create an Alexa Smart Home Skill to control lights, etc.
(Crie uma habilidade Alexa Smart Home para controlar luzes etc)
Os demais são para outros fins.
Resumindo, a Amazon fornece uma API Smart Home para um controle da automação residencial. É preciso um esforço considerável para configurar.
ETAPA 1 - CRIE SUA HABILIDADE (SKILL) INICIAL - AMAZON ALEXA
- Você precisa de uma conta de desenvolvedor da Amazon. Se não tiver você deve criar uma.
- Entre no Alexa Developer Console, você pode criar sua conta gratuita na página de login.
- Crie uma Skill
- Escolha um nome, Selecione o modelo Smart Home e clique em Create skill
- Na próxima tela, verifique se a v3 está selecionada no item 1 Payload version.
- OK, você criou o “esqueleto” da habilidade (Skill) Smart Home. Agora nós vamos para a próxima etapa.
- Você pode manter essa tela aberta, pois será preciso retornar para concluir as configurações.
ETAPA 2 - CRIE SUA FUNÇÃO LAMBDA
A habilidade (Skill) Alexa Smart Home acionará uma função do AWS Lambda para processar a solicitação, foi escrito um pequeno pedaço de código hospedado como uma função Lambda que basicamente redirecionará a solicitação para sua instância do Home Assistant, em seguida, a integração da Alexa no Home Assistant processará a solicitação e envie de volta a resposta. Sua função Lambda fornecerá a resposta de volta ao Alexa.
Criar uma função do IAM para o Lambda
A primeira coisa que você precisa fazer depois de conectar na AWS console, é criar uma função do IAM para execução do Lambda. A AWS tem um controle de acesso muito rigoroso, você precisa definir e atribuir permissões especificamente.
- Clique em Serviços na barra de navegação superior, expanda o menu para exibir todos os serviços da AWS, clique em IAM.
- Clique em Funções no painel esquerdo, após clique em Criar função.
- Selecione a opção Lambda na primeira página do assistente e clique em Próximo: Permissões
- Selecione a política AWSLambdaBasicExecutionRole e clique em Próximo: Tags
- A próxima tela (Adicionar tags) pode pular, basta clicar em Próximo: Revisar
- Atribua um nome a sua nova função, exemplo: AWSLambdaBasicExecutionRole-SmartHome, e clique no botão Criar função.
- Agora você deve encontrar sua nova função na lista de funções.
Crie uma função Lambda e adicione código
Em seguida, você precisa criar uma função Lambda.
- Clique em Serviços na barra de navegação superior, expanda o menu para exibir todos os serviços da AWS, clique em Lambda.
- Atenção: Sua região atual será exibida no canto superior direito. Só consegui fazer funcionar com a opção “Norte da Virgínia”. Recomendo selecionar a mesma opção.
- Clique em Funções na barra de navegação esquerda, exiba a lista de suas funções Lambda.
- Clique em Criar função, selecione Criar do zero e insira um Nome da função.
- Informações básicas: Selecione Python 3.6 ou Python 3.7 no Tempo de Execução (Selecionei 3.7).
- Informações básicas: Certifique-se de selecionar “Usar uma função existente” como função de execução.
- Informações básicas: Em seguida, selecione a função que você acabou de criar na lista de funções existentes.
- Informações básicas: Por fim, clique em criar função.
- Na guia Configuração, expanda Designer e clique em adicionar um gatilho Alexa Smart Home à sua função Lambda.
- Na tela de configuração, você precisa adicionar o ID da Skill que você criou na primeira etapa. Se você não fechou a tela, você pode acessar e pegar o ID conforme a imagem abaixo:
- Em seguida vincular ao gatilho, e clicar em adicionar.
- Agora vamos para o próximo item que é “Código da função”. Clique no ícone da Função Lambda no meio do diagrama, role para baixo e você verá uma janela de código da função.
- Limpe o código de exemplo, copie o script Python de:
https://gist.github.com/matt2005/744b5ef548cc13d88d0569eea65f5e5b
- Variáveis de ambiente: BASE_URL (obrigatório): Endereço do seu Home Assistant com porta, se necessário. Não inclua o a barra no final /
Observação: Muitas pessoas só conseguiram autenticar sem a porta no final (8123), inclusive eu, meu HA acessa sem a porta pelo navegador.
- NOT_VERIFY_SSL (opcional): você pode configurá-lo como True para ignorar o problema do SSL, se você não possui um certificado SSL válido ou está usando um certificado autoassinado.
- As demais variáveis não precisei utilizar.
- Agora role até o topo, clique no botão Salvar.
ARN
Você precisa copiar o ARN exibido na parte superior da página, que é o identificador dessa função Lambda. Você precisará deste ARN para continuar a configuração das habilidades do Alexa Smart Home posteriormente.
Teste a função Lambda
Agora, você criou a função Lambda. Antes de poder testá-la, você precisa configurar o seu HA. Coloque a configuração mínima a seguir no seu configuration.yaml, que expõe todo o seu dispositivo e automação suportados ao Alexa.
alexa:
smart_home:
Após a reinicialização do HA, no AWS Lambda Console, você fará alguns testes.
Na parte superior da página de configuração da função Lambda, há um botão Teste, clique no botão suspenso à esquerda do botão Teste, clique em Configurar eventos de teste, você pode Criar novo evento de teste usando os seguintes dados:
Código:
{
"directive": {
"header": {
"namespace": "Alexa.Discovery",
"name": "Discover",
"payloadVersion": "3",
"messageId": "1bd5d003-31b9-476f-ad03-71d471922820"
},
"payload": {
"scope": {
"type": "BearerToken"
}
}
}
}
Clique no botão Testar.
Se aparecer algum erro, é necessário verificar as etapas anterior para garantir que não pulou nenhum processo.
CONFIGURAR O PONTO FINAL DO SMART HOME SERVICE
Volte ao Alexa Developer Console. Você terminará a configuração da habilidade Smart Home.
- Entre no Alexa Developer Console, vá para a página Alexa Skills, se não estiver.
- Encontre a habilidade que você acabou de criar, clique no link Editar na coluna Ações.
- Clique em SMART HOME na barra de navegação esquerda da página de criação.
- Na área “2. Smart Home service endpoint”, Default endpoint usando o ARN que você copiou da configuração da função Lambda.
ACCOUNT LINKING
O Alexa pode vincular sua conta Amazon à sua conta do HA. Portanto, o Home Assistant pode garantir que apenas a solicitação da Alexa autenticada possa acessar os dispositivos da sua casa. Para vincular a conta, você deve garantir que seu HA possa ser acessado da Internet.
- Clique em ACCOUNT LINKING na barra de navegação esquerda da página de criação
Insira todas as informações necessárias.
- Authorization URI: https://meuendereco.duckdns.org/auth/authorize
- Access Token URI: https://meuendereco.duckdns.org/auth/token
- Your Client ID: https://pitangui.amazon.com/ coloque esse mesmo valor/endereço. Será utilizado apenas aqui.
- Your Secret: coloque qualquer coisa, não será utilizado no HA
- Client Authentication Scheme: coloque a opção Credentials in request body (na imagem abaixo está errado)
- Scope: smart_home (digite exatamente isso como na imagem)
- Clique no botão Salvar no canto superior direito.
Em PERMISSIONS, habilite a opção Senf Alexa Events e pegue as informações do client_id e client_secret.
Em seguida, você pode utilizar o APP Alexa ou o aplicativo baseado na Web Alexa para vincular sua conta.
- Abra o aplicativo/página Alexa, navegue até Skills → Suas skills
-
Acesse SKILL DE DESENV.
-
Em seguida Clique na skill Smart Home (Home Assistant) que você acabou de criar.
- Clique em Ativar.
- Uma nova janela será aberta para direcioná-lo à tela de login do seu HA.
- Após o login bem-sucedido, você será redirecionado de volta ao aplicativo Alexa.
- Você vincular seus dispositivos agora.
Exemplo de configuração para vincular seus dispositivos
alexa:
smart_home:
endpoint: https://api.amazonalexa.com/v3/events
client_id: !secret alexa_client_id ## que você pegou em permission
client_secret: !secret alexa_client_secret ## que você pegou em permission
filter:
include_entities:
- light.luz_cozinha
- light.luz_banheiro
- switch.pc_principal
entity_config:
light.luz_cozinha:
name: Luz Cozinha
Esse vídeo pode ajudar:
Um abraço!