Como fazer o Google Assistant ou a Alexa nos dizer o status de qualquer sensor pelo Node-red!

Olá, vou explicar como ter o status de um sensor no google assistant pelo node-red!

Para melhor entendimento desse tutorial recomendo os tutoriais:

Tutorial básico para conhecer a interface do node-red!

Tutorial para conhecer o que é payload!

Para usar com a Alexa é necessário ter instalado o Alexa Media Player.

Exemplo 01:

Como primeiro exemplo vou explicar com um sensor de temperatura para sabermos a temperatura!

Vamos precisar dos nodes:

1x inject
1x current state
1x call service

Vamos linkar os 3 nodes dessa forma!

1

O node current state vamos configurar colocando a entidade do sensor de temperatura!

O node call service vamos configurar com os dados do tts (text to speak) do google home mini/nest que queremos que saia o audio! No caso coloquei em entity id o google home mini do meu quarto.

Em data vamos preencher com esse código que está embaixo!

{
    "message": "A temperatura agora é de {{payload}} graus. Tenha um ótimo dia."
}

Para a configuração com dispositivos Echo. A configuração vai ficar assim no call service:

E no data:

{
    "data": {
        "type": "announce",
        "method": "all"
    },
    "title": "TESTE ALEXA",
    "message": "<voice name=''>A temperatura agora é de {{payload}} graus. Tenha um ótimo dia.</voice>",
    "target": [
        "media_player.echo_flex_de_leandro"
    ]
}

Lembrando que o payload é a informação que vamos conseguir do nosso sensor de temperatura quando ativado o node current state.

Então, quando ativado o inject (clicado no quadradinho) o node current state com o sensor vai mandar o payload com a temperatura e o node call service vai pegar a informação e preencher a frase do data com a temperatura e a frase vai sair no google home mini!

Exemplo 02:

Vou usar como exemplo uma automação simples, abriu a porta o google avisa de porta aberta, fechou a porta o google avisa de porta fechada.

Vamos precisar dos nodes:

1x events:state
1x change
1x call service

No node events:state vamos configurar colocando o sensor de porta no entity id.

O payload que é enviado do sensor de porta é on (para porta aberta) e off (para porta fechada), então o node change vamos configurar dessa formar, para quando o payload (a mensagem) for on mudar para aberta e para quando o payload (a mensagem) for off mudar para fechada.

Para o node call service vou usar a mesma configuração do exemplo de cima, só o data que vai ser diferente.

Coloque esse código no data:

{
    "message": "A porta da frente está {{payload}}."
}

Agora quando a porta for aberta o events:state vai transmitir o status, o node change vai mudar para o payload para completar a mensagem correta no data do call service e o google home mini/nest vai dizer a frase com o status da porta!

Espero ter ajudado!
Um abraço!

3 Likes

sensacional a sua contribuição Leandro . .parabéns

2 Likes

Amigo, estou iniciando com HA e esse tuto me deu mais animo ainda.
Obrigado por compartilhar seus conhecimentos.

1 Like

Bom Dia Pessoal, tudo bem?
Estou usando o turorial, mas gostaria de usar o target variavel, sendo a mesma alexa que eu pergunto irá me dar a resposta, não um target fixo, tentei somente remover o target do JSON do nó de notificação, mas não deu certo, vocês poderiam me ajudar?

Tem algumas formas de realizar.

Exemplo, criar um Input Boolean,

input_boolean:
  verificar_sensor:
    name: Verificar Sensor

Integra com a Alexa (ou google assistant). Cria uma automação no assistante virual. Exemplo:

Rotina Alexa
Alexa, verificar sensor
Ação, ligar sensor

No node-red ou na sua automação você faz como esse tópico, só que com o gatilho do input ficar ON.
Quanto o input ficar ON, lê o valor do sensor, coloca na assistente, e VOLTA o input para OFF, para ser acionado novamente.

Muito bom o tutorial fiquei empolgado com as possibilidades do NR, mas tive um problema.
Estou usando o echo para as mensagens e ele não fala o valor da temperatura (lê todo o texto mas ignora o payload). No debug aparece a temperatura no payload.
O que poderia ser?

Confere a formatação como está e se está tudo configurado certo.

Refiz todos os passos e desta vez funcionou. Devo ter comido alguma bola.
De qualquer forma, obrigado!!!

1 Like