Node-Red – Alexa scrive e invia messaggi Telegram

HassioHelp

Node-Red – Alexa scrive e invia messaggi Telegram

In questo nuovo appuntamento Node-Red andiamo ad approfondire le potenzialità di Alexa.

Pronunciare ad Alexa il messaggio da inviare via Telegram.

Questa automazione nasce per una mia personale necessità. 

Mio figlio ha 5 anni. Parla abbastanza bene (Alexa lo capisce quasi sempre) ma non ha chiaramente un cellulare e non sa scrivere messaggi. 

MI SONO DETTO: “Mi serve un automazione che permetta a mio figlio di inviare messaggi a me o a mia moglie a scelta, semplicemente parlando con Alexa. In aggiunta magari la ripetizione del messaggio prima dell’invio e la possibilità di cancellarlo se non é stato compreso correttamente.”

Da notare che l’app Alexa può già farlo. Ma considerando che già é stato difficile convincere mia moglie che le notifiche di domotica arrivano su telegram, dirgli di usare anche app Alexa sarebbe stata un altra cosa in più. Inoltre ad Alexa bisogna indicargli il contatto a cui inviare (altra cosa in più) e non ripete il messaggio che viene dettato (cosa utile se scrive male ciò che gli dici) con la possibilità di eliminarlo successivamente entro tot secondi.

Volevo un’automazione più fluida…

Così questa mi sembrava la migliore per le mie esigenze…

Mio figlio con Alexa:

DICE AD ALEXA: “Alexa, babbo come va oggi tutto bene?”

ALEXA RISPONDE: “Ecco il tuo messaggio: babbo come va oggi tutto bene?. Per cancellare l’invio devi dire: Alexa, elimina messaggio.”

Se entro 25 secondi non chiama Alexa dicendo “Alexa elimina messaggio”, il messaggio viene inviato al mio telegram (perché nella frase c’é la parola “babbo”. Se nella frase c’era “mamma” inviava a mia moglie)

Premessa

Dettare ad Alexa un messaggio diretto come nell’esempio precedente, scatena da essa una risposta di errore. L’automazione si attiverà e funzionerà, ma purtroppo il messaggio di errore da parte di Alexa rimarrà.

Cosa richiede il flusso d’automazione.

  • Devi aver configurato il Bot Telegram all’interno del tuo Home Assistant. L’automazione invia messaggi solo ai Chatid configurati.
  • Alexa deve essere già configurata come media player
  • Richiede il download e la configurazione del nodo Alexa Remote 2          (Video configurazione in seguito)

Nota: In realtà potete eseguire questa automazione anche in assenza di HA, con solo l’ausilio di Node-Red. Dovrete aver configurato il nodo Telegram e utilizzerete i nodi Alexa Remote 2 anche per far parlare Alexa.

Io ho utilizzato il supporto di HA perché il nodo Call service, con Alexa Media player, fa parlare Alexa interrompendo il messaggio di errore a differenza del nodo Remote2 che attende la fine di esso prima di parlare. Inoltre avevo notato dei bug (che magari verranno risolti con il tempo)

PRIMA DI INIZIARE:

Importare automazioni Node-Red senza capirne il flusso d’automazione non é utile a nessuno. Node-Red ha un metodo tutto suo.

Consiglio di  iniziare dal Corso 1 Node-Red in italianoecco il link al MODULO per richiederlo. E’ gratuito.

Per qualsiasi domanda non esitate a contattarmi.
Telegram Manuel Del Gada

Iscrivetevi ai canali “Node-Red italia” : Gruppo Facebook – Canale Youtube – Gruppo Telegram 

Alexa Remote 2

Per la configurazione del nodo Alexa Remote 2 abbiamo il video del canale youtube “Node-Red Italia”.

Ringraziamo l’utente e relatore “Marco Melis” del Gruppo Facebook!

Importazione

Nella prima fase, utilizziamo le potenzialità di Node-Red, per importare l’intero flusso che ho creato all’interno della vostra piattaforma con un semplice copia e incolla.

Ecco il link del codice flow da importare

Se non sapete ancora importare il codice di flusso, vi rimando alla Fase 2 di questa guida dove viene spiegato nel dettaglio.

Vi ritroverete un nuovo flow come da foto:

Spiegazione automazione

Come vedete in foto ho numerato i nodi per spiegarli:

Partiamo dal nodo Alexa Remote 2 (1) che genera due msg.object con tutto ciò che diciamo ad Alexa quando la chiamiamo. Quello di chiamata “Alexa” e quello che abbiamo detto.

Dopodiché il messaggio entra all’interno del nodo switch (2) che é programmato per analizzare solo la parte del msg.object che ci interessa (payload.description.summary). Il nodo switch farà disperdere il messaggio di chiamata e farà proseguire nel flusso il messaggio dettato.

A questo punto il nodo Edit Trigger (3) serve per non generare un loop. Farà passare il primo messaggio che arriva, mentre tutti quelli che arrivano dopo vanno dispersi se arrivano entro 10 secondi. Questo perché Alexa parlerà e dirà il messaggio che abbiamo detto (6) e il nodo Alexa remote 2 (1) sente anche quando se stessa tramite la Call service perciò si creerebbe un loop.

Il msg dettato (che vedrete anche nel Debug) entra all’interno di un altro switch (4) che é programmato per svincolare il messaggi che contengono la parola “babbo”, “mamma” e “elimina”.

I messaggi che contengono la parola babbo o mamma entrano in un Change (5) e vengono convertiti in msg.payload. Questo perché il nodo Call service (6) che farà parlare Alexa accetta solo msg.payload dinamici.

Dopodiché il messaggio, oltre a essere detto da Alexa, entra in un nodo Edit Trigger (7) che attende 25 secondi prima di inviarlo. Perché attende? Perché se non ci piace il messaggio che abbiamo dettato ad Alexa possiamo eliminarlo.

Per eliminarlo basterà dire: “Alexa, elimina messaggio” e lo switch svincolerà quel messaggio sul Change (4a) che trasforma il msg.payload in Msg.reset, che entrando nell’Edit Trigger resetta l’attesa e l’intero flusso.

Se invece ci piace il messaggio, dopo 25 sec di attesa, entra all’interno di un altro switch (8) che controlla sempre il contenuto del messaggio. Se contiene la parola babbo svincola all’output sopra. Se contiene mamma svincola sotto. Così avviene la notifica telegram al soggetto indicato nel messaggio (babbo o mamma)

Configurazione

Avendo importato il mio flow, importate anche la mia configurazione Home Assistant.

Perciò dovrete entrare all’interno di ogni nodo Home Assistant (nodo blu) e selezionare il vostro server, confermare con “done” poi “deploy”.

Inoltre per adattarlo a voi sarà necessario:

  • Configurare il nodo Alexa Remote 2 (1) con il vostro account.
  • Selezionare la vostra entità Alexa media player nel nodo Call service (6)
  • Nei nodi Call service finali di invio notifica Telegram, entrate su “data” e modificate il “target” con il vostro chatid.

In questa automazione vengono inviati i messaggi, se la frase che diciamo ad alexa contiene la parola “babbo” o “mamma”. Chiaramente potete aggiungerle e/o modificarle all’interno dei due nodi switch (4) (8)

Considerazioni finali

Quando mi arriva il messaggio su telegram di mio figlio come faccio a rispondergli? Sono 2 semplici nodi…

Ho configurato un input_text in yaml su HA e configurato in interfaccia:

input_text:
   text_alexa:
      name: Alexa parla

Dopodiché ho utilizzato il nodo Event state configurato con l’entità input_text.text_alexa, collegato al solito nodo Call service (6), entriamo nel comparto “data” e modifichiamo “message” mettendo solo “{{payload}}” e su “type” mettiamo “announce” (così il messaggio é preceduto da una notifica).

In questo modo, come da foto, ciò che scriviamo nell’input text, Alexa lo ripeterà. 

Buone Automazioni con Node-Red!

Alla prossima 🙂

 

3 risposte

  1. Avatar Giuseppe Romano ha detto:

    Ciao, grande guida, ennesima vostra che ho implementato,
    purtroppo non mi fa accedere per creare il cookie
    dopo che accedo al link (porta aperta nel router come tcp) port:3456
    http://192.168.1.4:3456

    mi dice ciò
    ———————————————
    Abilita i cookie per continuare.
    Per continuare con gli acquisti su Amazon.it abilita i cookie nel tuo browser Web.

    Dopo aver attivato i cookie nel tuo browser, clicca sul pulsante sottostante per tornare alla pagina
    precedente.
    ———————————————
    i cookie ovviamente sono abilitati
    ho provato con tanti browser diversi ma è uguale

    c’è una soluzione ????
    grazie
    Giuseppe

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *