Alexa com Home Assistant - Manual

Muitas pessoas tem dificuldade em seguir o manual do Home Assistant, por mais que esteja bem documentado, mas confesso que fazer a integração do HA com Alexa não é das opções mais tranquilas, por isso resolvi criar um tutorial que pudesse ajudar quem ainda tem dificuldades.

O artigo é baseado no manual do HA

Antes de iniciar, você precisa ter acesso externo ao seu HA com HTTPS.

Eu segui esse tutorial do HA - Amazon Alexa Smart Home

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.
    image
  • Clique em Funções no painel esquerdo, após clique em Criar função.
    image
  • 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.
    image
  • 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.
    image
  • 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.
    image
  • 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 /
  • 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.
    image

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:
image

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.
image

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.
    image
  • 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
    image

Insira todas as informações necessárias.

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.
    image
  • Clique em Ativar.
    image
  • 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
    client_secret: !secret alexa_client_secret
    filter:
      include_entities:
        - light.luz_cozinha
        - light.luz_banheiro
        - switch.pc_principal
    entity_config:
      light.luz_cozinha:
        name: Luz Cozinha

Tive problemas na ativação da Alexa o Douglas me ajudou a resolver, são 2 pontos
1-tive que deixar o HA somente na porta 443, entao alterei a config dos http:
http:
server_port: 443
2- AO adicionar o gatilho no lambda tive que usar em vez do Kit Alexa Skills , usei o Alexa Smart Home
Com esses 2 paramentos alterados funcionou

1 Curtida

Troquei para Alexa Smart Home e também funcionou.


Jose, como você fez é o correto, verifiquei na documentação do HA e informam para colocar Alexa Smart Home.

Tem um outro tutorial para adicionar Skill que é referente Intent Script (Amazon Alexa Custom Skill), que neste caso sim informam para colocar Alexa Skills Kit, mas é outros 500 e não para integrar os dispositivos configurados no HA. Então corrigi no tutorial para colocar o Smart Home.

Muito obrigado Jose, já aprendi com você também.