⚠️ Before continuing, garante que tudo está fncionando com o Assist no Home Assistant e sua instância do Home Assistant está exposta para Internet com um domínio e um certificado HTTPS válido.
- Criando a Skill Alexa
- Obtendo o home_assistant_agent_id
- Obtendo o home_assistant_token
- Configurando o Invocation Name
- Publicando a Skill
- Ativando o reconhecimento de cômodo
- Ativando iniciador de conversa com prompt do Home Assistant
-
Crie uma Skill na Alexa Developer Console seguindo os passos abaixo:
- Name your Skill: Escolha um nome de sua preferência (Ex: Home Assistant Assist)
- Choose a primary locale: Portuguese (BR)
- Choose a type of experience: Other
- Choose a model: Custom
- Hosting services: Alexa hosted (Python)
- Hosting region: US East (N. Virginia) é o padrão, mas é necessário utilizar a mesma região onde criou a conta na AWS e configurou o IAM Instruções aqui
- Templates: Clique em
Import skill - Insert the address: https://github.com/fabianosan/HomeAssistantAssist.git e clique
Import
-
Vá na aba Code
-
Insira suas informações no arquivo de configuração conforme instruções abaixo:
-
Abra o arquivo
config.cfgno diretório raiz do projeto (/Skill Code/lambda/). -
Insira as seguintes informações (configurações obrigatórias):
home_assistant_url=https://SUA-URL-EXTERNA-DO-HOME-ASSISTANT home_assistant_token=SEU-TOKEN-DO-HOME-ASSISTANT
-
home_assistant_url: URL externa do seu Home Assistant (caminho raiz).
-
home_assistant_token: Token de acesso de longa duração do seu Home Assistant.
-
Você pode adicionar essas configurações
opcionaistambém (mas atente-se às instruções que cada uma exige):home_assistant_agent_id=SEU-AGENT-ID home_assistant_language=pt-BR home_assistant_room_recognition=False home_assistant_dashboard=ID-SEU-DASHBOARD home_assistant_kioskmode=False assist_input_entity=input_text.assistant_input ask_for_further_commands=False suppress_greeting=False debug=True
-
(opcional) home_assistant_agent_id: ID do agente de conversação configurado no seu Home Assistant, se não configurado, será utilizado o Assist (Padrão).
-
(opcional) home_assistant_language: Idioma para chamar a API de conversação do Home Assistant. Se não configurado, será utilizado o padrão do agente definido.
-
(opcional) home_assistant_room_recognition: Ative o modo de identificação de área do dispositivo com
True. Atenção, só funciona com IA e precisa de configurações adicionais no Home Assistant. Se utiliza o Assist padrão, desative essa opção, pois nenhum comando irá funcionar com ela ativada e sem a configuração adequada. -
(opcional) home_assistant_dashboard: Caminho do dashboard para exibir na echoshow, ex.:
mushroom, se não configurado, irá carregar o "lovelace" -
(opcional) home_assistant_kioskmode: Ative o modo quisque com
True. Atenção, só ative essa opção se tiver o componente kiosk mode instalado. -
(opcional) assist_input_entity: Ative a funcionalidade de iniciar uma conversa com prompt do Home Assistant
input_text.assistant_input. Atenção, essa funcionalidade requer configurações extras no Home Assistant. -
(opcional) ask_for_further_commands, Esta variável determina se a Alexa perguntará por mais comandos após responder. Defina como
Truepara ativar este comportamento ouFalsepara desativá-lo. O padrão éFalse. -
(opcional) suppress_greeting, Esta variável determina se a Alexa irá falar a saudação/pergunta inicial ao abrir a skill. Defina como
Truepara desabilitar a saudação ouFalsepara mantê-la. O padrão éFalse. -
(opcional) debug, Ativa o debug com
True. Defina esta variável para registrar as mensagens de depuração.
-
-
Se desejar, altere as respostas da skill no arquivo
/locale/pt-BR.langou outro idioma suportado. -
Após qualquer alteração feita, seja no código ou configuração, clique em
Save. -
Depois clique em
Deploy. -
Por fim, volte na aba
Builde clique emBuild skill.
- Com seu Home Assistant aberto, navegue até a Ferramentas de Desenvolvedor, vá na aba
Açõese siga os passos abaixo:
- Busque por
conversation.processno campo de ações e selecione:
- Ative o campo
Agentee selecione o agente de conversação desejado na lista:
- Alterne para o
MODO YAMLe copie o ID que está no campoagent_id:
-
Com seu Home Assistant aberto, navegue até o seu perfil de usuário, no canto inferior esquerdo, clique e depois vá na aba
Segurançana parte superior:- No final da página, clique no botão
CRIAR TOKEN: - Digite o nome que achar adeuqado, ex.:
Skill Home Assistant Assiste clique em emOK:
- Copie o token:
- Coloque o token gerado no arquivo de configuração.
- No final da página, clique no botão
- O nome de invocação padrão configurado no código é "casa inteligente".
- Para alterar o nome de invocação:
- Vá para a aba Build.
- Clique em
Invocationse depois emSkill Invocation Name. - Insira o novo nome de invocação desejado e salve as alterações (teste se essa palavra de ativação pode ser usada na aba de Test).
- Dê rebuild do modelo clicando
Build skillse alterar.
-
Após fazer o deploy do código na aba Code, volte para aba Build e clique em Build skill.
-
Depois vá no aplicativo Alexa em seu celular e vá em:
Mais>Skills e jogos> deslize a tela até o fim e clique emSuas Skills>Desenv., clique na skill que você acabou de criar e ative -
Volte no console da
Alexa Developer Consolee teste a Skill na aba Test para garantir que a palavra de ativação e a skill estão funcionando corretamente.
-
Nesse modo, a skill envia o device id (do dispositivo
echoque está executando a skill) na chamada da API de conversação do Home Assistant, então com uma instrução de comando para a IA e um rótulo associado no dispositivo, a IA consegue identificador os dispositivo da mesma área onde está localizado suaAlexa, para ativar, siga os passos abaixo:Atenção !
- Altere a configuração
home_assistant_room_recognitionparaTruee faça um novodeploye um novoBuild Modelda skill; - Ative o log de debug da API de conversação adicionando a seguinte configuração no
configuration.yamldo Home Assistant:
- Insira a seguinte informação:
logger: logs: homeassistant.components.conversation: debug
- Reinicie o Home Assistant e inicie a skill pelo dispositivo echo desejado, depois de ativado, o log mostrará a instrução recebida pela skill conforme o exemplo abaixo:
2024-10-10 11:04:56.798 DEBUG (MainThread) [homeassistant.components.conversation.agent_manager] Processing in pt-BR: ligue a luz da sala. device_id: amzn1.ask.device.AMAXXXXXX
Você também pode obter o device_id no log "device: " pela
Alexa Developer ConsoleemCloud Watchse souber como fazê-lo. 4. Pegue todo o identificador que estiver após o device_id, ex.:amzn1.ask.device.AMAXXXXXXe adicione um novo rótulo no dispositivo echo pela IntegraçãoAlexa Media Player:- Atualize o prompt de comando da IA de sua preferência com a instrução abaixo:
Se solicitado uma ação em um dispositivo e sua área não for fornecida, capture o identificador contido após o "device_id:" no comando, obtenha o rótulo com mesmo identificador e associe a área desse rótulo ao dispositivo para saber área o dispositivo pertence.
- Altere a configuração
Esta configuração adiciona o recurso de prompter para permitir conversas da Alexa iniciadas a partir do Home Assistant
⚠️ Antes de continuar, garanta que você possui o Alexa Media Player instalado e configurado.
-
Ative a configuração na skill da Alexa:
-
Adicione a seguinte linha ao seu arquivo
config.cfg:assist_input_entity = input_text.assistant_input
-
-
Crie um Auxiliar de Texto no Home Assistant:
- Abra o Home Assistant.
- Vá em: Configurações → Dispositivos e Serviços → Auxiliares
- Clique em Criar Auxiliar → Escolha Texto.
- Defina as seguintes opções:
- Nome:
assistant_input - Número máximo de caracteres:
255(este é o limite rígido)
- Nome:
- Clique em Criar.
⚠️ Nota: 255 caracteres é uma limitação rígida para o tamanho do prompt. Ainda não há uma solução confiável, exceto incorporar outras entradas de texto no prompt. -
Crie um Script no Home Assistant:
-
Vá até o Console do Desenvolvedor Alexa.
-
Na página inicial da sua skill, clique em Copy Skill ID.
-
No Home Assistant, vá para Configurações → Automatizações e Cenas → Scripts.
-
Clique em Adicionar Script e dê um nome como
Prompt Alexa Device. -
Clique no menu de três pontos (⋮) e mude para o Modo YAML.
-
Cole o seguinte YAML no editor.
Substitua os espaços reservados:*Sua Skill ID*→ Pelo ID real da sua skill Alexa
sequence: - action: input_text.set_value metadata: {} data: value: "{{prompt}}" target: entity_id: input_text.assistant_input - action: media_player.play_media data: media_content_id: *Sua Skill ID* media_content_type: skill target: entity_id: "{{alexa_device}}" - delay: hours: 0 minutes: 0 seconds: 10 milliseconds: 0 - action: input_text.set_value metadata: {} data: value: none target: entity_id: input_text.assistant_input alias: Prompt on Alexa device description: "" fields: prompt: selector: text: null name: prompt description: The prompt to pass to the skill, used as the first message to start a conversation. required: true alexa_device: selector: text: null name: alexa_device description: The Alexa device you need to start the skill to prompt. required: true -
Clique em Salvar.
-
-
Chame o Script a partir de uma Automação
Agora que o script está configurado, você pode acioná-lo a partir de uma automação ou fazer um teste a partir das ferramentas de desenvolvedor > Ações:
- Enviar um prompt para sua skill da Alexa;
- Iniciar uma conversa falada com a resposta do assistente.
action: script.prompt_on_alexa_device data: prompt: Sugira que eu lembre de trancar todas as portas e janelas da casa antes de sair alexa_device: media_player.echoshow_officeOutros exemplos de prompt:
- Qual e a previsão do tempo? - Pergunte se eu gostaria de desligar as luzes⚠️ Importante: Os prompts devem ter menos de 255 caracteres, ou a chamada não funcionará.
Agora você pode usar sua skill Alexa para integrar e interagir com o Home Assistant via Assist por voz ou abrir a tela do seu dashboard preferido na Echoshow. Se gostou, lembre-se de mandar um Obrigado para os desenvolvedores.
Agradecimentos
Ao [rodrigoscoelho](https://github.com/rodrigoscoelho), quem iniciou o desenvolvimento desta skill.







