Al momento stai visualizzando Notifiche Alexa più personali con Home Assistant

Notifiche Alexa più personali con Home Assistant

In questo articolo vedremo qualche trucchetto per rendere le notifiche di Alexa più personali, con Home Assistant ovviamente!

I messaggi che facciamo riprodurre ai nostri dispositivi Echo, infatti, sono davvero comodi per avvisarci che qualcosa è accaduto o semplicemente per assisterci in qualcosa ma, se non utilizziamo qualche espediente, rischiano di diventare davvero monotoni e ripetitivi.

Finirà che ti daranno quasi fastidio, se non fai qualcosa.

In questo articolo ti mostro qualche trucchetto per rendere i tuoi annunci Alexa più vivi, personali, simpatici. Quasi umani.

Stai con me, ti mostro come fare, non sarà difficile, promesso 🙂

Come inviare notifiche da Home Assistant tramite Alexa

Prima di iniziare vediamo come si può fare per inviare le notifiche dalle nostre automazioni di Home Assistant tramite i dispositivi Alexa.

Come prima cosa sarà necessario installare il componente custom Alexa Media Player che può essere installato manualmente oppure (e lo consiglio caldamente) tramite HACS, un componente custom a sua volta che serve per semplificare l’installazionee l’aggiornamento dei componenti non inclusi nel core di Home Assistant, proprio come Alexa Media Player.

Se hai già integrato Alexa per eseguire comandi sui tuoi dispositivi smart in Home Assistant potrai dire “Alexa, spegni la luce in soggiorno” ma non potrai “far fare cose” ad Alexa se non sollecitata da un comando vocale. E’ qui che Alexa Media Player sopperisce a questa necessità permettendo non solo di riprodurre annunci vocali a comando ma di riprodurre musica e tanto altro.

A questo punto per riprodurre notifiche vocali su Alexa hai due possibilità:

  • Riprodurle utilizzando semplicemente il servizio notify.alexa_media specificando il/i target, oppure notify.alexa_media_nomedispositivo dove chiaramente nomedispositivo è il nome di uno dei tuoi dispositivi Echo. Per avere più informazioni fai riferimento alla documentazione di Alexa Media Player.
    Esistono due modalità:
    • type: tts che permette di leggere del testo senza aggiungere altro ma non permette di leggere in modo sincrono l’annuncio su più dispositivi contemporaneamente
    • type: announce che legge il testo dell’annuncio preceduto da un “din don” e permette la lettura sincrona su più dispositivi. Io solitamente uso questo perchè il “din don” iniziale catalizza l’attenzione e non si rischia di perdere un pezzo di messaggio.
  • Utilizzare il mio script multinotify che ti permette più potenza e flessibilità come, ad esempio, impostare un volume specifico per il tuo annuncio, ripristinare il volume precedente al termine, fermare la musica eventualmente in riproduzione e riprenderla al termine, attendere la fine dell’annuncio per permettere azioni in sequenza ed altro ancora.
    Trovo fondamentale usarlo ovunque perchè la gestione di un volume differente da quello corrente è di grande aiuto nella comprensione e non capisco perchè non sia stato fatto già così…
    A me, per esempio, capitava spesso di sentire della musica di sottofondo a basso volume e, quando arrivava un’annuncio, veniva riprodotto ad un volume quasi impossibile da comprendere. Ma con multinotify il problema è risolto in modo elegante.

Ma ora vediamo i trucchi per rendere più personali gli annunci di Alexa.

Utilizza SSML per modificare la voce di Alexa

Tutti gli esempi di seguito sono riportati utilizzando il mio script multinotify ma funzionano allo stesso modo utilizzando il servizio notify di Alexa Media Player (in quanto multinotify utilizza proprio quello dietro alle quinte), laddove non diversamente specificato sia in modalità Announce che TTS

Forse non molti sanno che, oltre a scrivere il testo che vogliamo che Alexa pronunci, è possibile personalizzare come Alexa lo debba fare, tramite un linguaggio di markup basato su xml che possiamo inserire in modo molto semplice nelle nostre frasi.

La pagina di Amazon dove è descritto in inglese in modo molto completo questo linguaggio è questa, puoi farvi riferimento per ulteriori informazioni che per sintesi non includerò in questo articolo.

Tieni presente che non tutte le possibilità sono disponibili in tutte le lingue. Alcuni tag, infatti, funzioneranno soltanto in specifici lingue, in particolare l’inglese americano. Ci sono tante possibilità, comunque, anche per la nostra bella lingua.

Vediamo i costrutti più interessanti che possono ravvivare i tuoi annunci, mi limiterò alle possibilità più interessanti che funzionano in italiano.

Attualmente se usi tag particolarmente lunghi o ne utilizzi tanti nella stessa frase, multinotify ripristinerà il volume precedente un po’ in ritardo rispetto alla frase. Se non ne fai un uso eccessivo è piuttosto trascurabile, comunque.

Tono colloquiale

Quando facciamo un annuncio su Alexa il tono di default è piuttosto formale. Se vogliamo invece dare un tono più colloquiale alla frase, più idoneo per frasi scherzose o simpatiche, possiamo usare il tag amazon:domain con attributo name impostato a conversational (l’unico che funziona in italiano).

Esempio:

service: script.multinotify
data:
  message: >-
    Possiamo pronunciare annunci formali.
    <amazon:domain name="conversational">Hey, in alternativa possiamo anche parlare più amichevolmente! Che ne dici?</amazon:domain>
  alexa_target: media_player.ovunque

Sottovoce

Per far pronunciare ad Alexa del testo sottovoce possiamo invece usare il tag amazon:effect racchiudendo la frase desiderata.

Esempio:

service: script.multinotify
data:
  message: >-
    Ti svelo un segreto.
    <amazon:effect name="whispered">Non sono un vero essere umano.</amazon:effect>
    Ci puoi credere?
  alexa_target: media_player.ovunque

Audio

Si, Alexa può riprodurre dei file audio mp3 tramite, appunto, il tag audio. Solo è un po’ schizzinosa… Primo perchè, ad eccezioni di tutti gli altri tag, funziona solo con modalità tts (che riproduce l’annuncio senza il “din-don” iniziale e non funziona quindi con multinotify) e secondo perchè, se vuoi riprodurre un tuo suono mp3, deve essere ospitato su un sito con https e certificato valido (i certificati self signed, infatti, non funzioneranno) e il formato deve anche essere specifico.

Libreria audio Amazon

Fortunatamente Amazon ha una libreria di suoni piuttosto vasta tra cui scegliere quel che vuoi riprodurre.

Esempio:

service: notify.alexa_media
data:
  data:
    type: tts
  message: Ho rilevato del fumo in cucina! <audio src="soundbank://soundlibrary/alarms/chimes_and_bells/chimes_bells_05"/>
  target: media_player.ovunque

Immagina ad esempio, per Halloween, di riprodurre suoni inquietanti su dispositivi Alexa casuali come questo:

service: notify.alexa_media
data:
  data:
    type: tts
  target: media_player.ovunque
  message: <audio src="soundbank://soundlibrary/wood/squeaks/squeaks_01"/>

File audio personale

Se proprio vuoi riprodurre un file audio personale sarà necessario salvarlo / convertirlo con le seguenti impostazioni (io uso l’ottimo editor audio open source Audacity):

  • Formato: MP3
  • Campionamento a 22.050, 24.000 o 16.000 Hz
  • Bitrate costante a 48Kbps
  • Non più lungo di 240 secondi (nel caso di più tag audio la lunghezza totale non deve superare i 240 secondi)

Esempio:

service: notify.alexa_media
data:
  data:
    type: tts
  target: media_player.ovunque
  message: Posso anche riprodurre file audio personali. <audio src="https://henriksozzi.it/wp-content/uploads/2022/07/alexa_test.mp3"/>

Pausa

Si può inserire una pausa di lunghezza variabile nelle frasi usando il tag break.

Esempio:

service: script.multinotify
data:
  message: >-
    C'è una pausa di 3 secondi qui.<break time="3s"/>Poi l'annuncio continua
  alexa_target: media_player.ovunque

Enfasi

E’ possibile dare più o meno enfasi ad alcune parole dell’annuncio, usando il tag emphasis.

Usando livello strong il testo sarà letto più lentamente e ad un volume maggiore.
Usando livello reduced il testo sarà invece letto più velocemente e ad un volume inferiore.

Esempio:

service: script.multinotify
data:
  message: >-
    Google Home mi piace <emphasis level="strong">davvero tanto</emphasis>.
    Cortana invece, <emphasis level="reduced">lasciamo stare</emphasis>
  alexa_target: media_player.ovunque

Lingue diverse

Usando il tag lang è possibile far leggere parti del testo in una specifica lingua.
E’ particolarmente adatto per far leggere il nome di un negozio, una parola o di un modo di dire di altre lingue. Il motore di sintesi cercherà di pronunciarla secondo le regole della lingua specificata ma per pronunciare intere frasi in altre lingue è più indicato usare la voce Alexa di altre nazioni, così da garantire una pronuncia impeccabile.

Le lingue tra cui è possibile scegliere sono le seguenti: de-DE, en-AU, en-CA, en-GB, en-IN, en-US, es-ES, es-MX, es-US, fr-CA, fr-FR, hi-IN, it-IT, ja-JP, pt-BR.

Esempio:

service: script.multinotify
data:
  message: >-
    Vorrei tanto visitare <lang xml:lang="fr-FR">Paris</lang> e salire sulla <lang xml:lang="fr-FR">Tour Eiffel</lang>.
    Oppure visitare <lang xml:lang="en-US">New York</lang> e vedere <lang xml:lang="en-US">Central Park</lang>
  alexa_target: media_player.ovunque

Volume, intonazione e velocità

Tramite il tag prosody è possibile modificare il volume, l’intonazione e la velocità di lettura.

Nel momento in cui scrivo il volume sembra non avere alcun effetto sul testo letto.
  • per modificare la velocità di lettura è possibile impostare l’attributo rate su uno dei seguenti valori: x-slow, slow, medium, fast, x-fast, oppure la percentuale desiderata considerando che 100% è la velocità normale e il minimo impostabile è 20%.
  • Per modificare l’intonazione è possibile impostare l’attributo pitch su uno dei seguenti valori: x-low, low, medium, high, x-high oppure una percentuale positiva o negativa (max +50%, min -33.3%)
    Quando si cambia intonazione Alexa userà un motore di sintesi legacy che potrebbe modificare la qualità del suono della voce.
  • Per modificare il volume è possibile impostare l’attributo volume su uno dei seguenti valori: silent, x-soft, soft, medium, loud, x-loud oppure su un valore in dB positivo o negativo (max +4.08dB min -6dB)

Esempio:

service: script.multinotify
data:
  message: >-
    Volume normale per la prima frase.
    <prosody volume="x-loud">Più forte per la seconda frase</prosody>.
    Quando mi sveglio, <prosody rate="x-slow">parlo abbastanza lentamente</prosody>.
    Posso parlare con intonazione normale,
    <prosody pitch="x-high"> ma anche molto più alta </prosody>,
    ed anche <prosody pitch="low">molto più bassa</prosody>.
  alexa_target: media_player.ovunque

Pronuncia in modo specifico

Con il tag say-as è possibile specificare di pronunciare una parola, un numero, una data o latro in modo specifico come vogliamo noi.

Alexa, infatti, di solito cerca di capire il modo migliore per pronunciare tutto quel che scriviamo ma non sempre il risultato è corretto. In nostro soccorso il tag say-as che, tramite l’attributo interpret-as, ha delle possibilità interessanti. Vediamole tutte nei seguenti capitoli.

Spelling dei caratteri

Se vogliamo far pronunciare una parola così che Alexa la legga carattere per carattere, anzi che leggerla come parola, usiamo il valore characters o spell-out.

Esempio:

service: script.multinotify
data:
  message: >-
    La mia casa è smart. Capisci? <say-as interpret-as="characters">smart</say-as>.
  alexa_target: media_player.ovunque

Interpretazioni numeriche

Di solito quando scriviamo un numero Alexa lo legge come valore numerico. Ad esempio 12345 lo leggerebbe come “dodicimilatrecentoquarantacinque”. Ma possiamo forzare modi diversi di leggere i numeri:

  • cardinal o number: pronuncia come numero. Esempio: 12345 -> “dodicimilatrecentoquarantacinque”
  • ordinal: pronuncia come ordinale. Esempio: 12345 -> “dodicimilatrecentoquarantacinquesimo”
  • digits: pronuncia le singole cifre. Esempio: 12345 -> “uno due tre quattro cinque”
  • fraction: interpreta il contenuto come frazione. Funziona per le frazioni comuni (3/6) e per contenuto misto (1+3/6). Esempio: 3/6 -> “tre sesti”
  • unit: interpreta un valore come una misura. Deve essere un numero o una frazione seguito da una unità di misura oppure solo una unità di misura. Esempio: 123m -> “centoventitre metri”

Esempio:

service: script.multinotify
data:
  message: >-
    <say-as interpret-as="cardinal">12345</say-as>.
    <say-as interpret-as="ordinal">12345</say-as>.
    <say-as interpret-as="digits">12345</say-as>.
    <say-as interpret-as="fraction">3/6</say-as>.
    <say-as interpret-as="unit">123m</say-as>.
  alexa_target: media_player.ovunque

Interpretazioni data e ora

Per pronunciare date e orari in modo corretto dovremmo di solito creare un testo esteso con quel che vogliamo far pronunciare ad Alexa. In nostro soccorso i valori date e time ci permettono di inserire con un template direttamente i valori numerici con meno sforzo e questi saranno pronunciati correttamente.

Per le date potremo anche specificare in che formato le stiamo fornendo tra i seguenti valori: mdy, dmy, ymd, md, dm, ym, my, d, m, y oppure, senza specificarlo, è possibile passare una data in formato YYYYMMDD e questa sarà interpretata correttamente nella lingua usata.

Esempio:

service: script.multinotify
data:
  message: >-
    Oggi è il <say-as interpret-as="date">20220730</say-as>.
    Posso anche omettere una parte di data: <say-as interpret-as="date">????0730</say-as>.
  alexa_target: media_player.ovunque

In modo simile possiamo far pronunciare gli orari e le durate temporali usando il valore time.

Esempio:

service: script.multinotify
data:
  message: >-
    L'asciugatura è durata <say-as interpret-as="time">1'20"</say-as>
  alexa_target: media_player.ovunque

Numeri di telefono ed indirizzi

Possiamo aiutare Alexa a pronunciare i numeri di telefono e gli indirizzi in modo corretto usando i valori telephone ed address.

Francamente non vedo un modo per usarli nella domotica ma so anche che ognuno ha idee diverse e particolari quindi chissà…!

Esempio:

service: script.multinotify
data:
  message: >-
    Questo è un numero di telefono inventato: <say-as interpret-as="telephone">3452823063</say-as>.
    Questo è un indirizzo inventato: <say-as interpret-as="address">Via del ciclamino 69, Roma</say-as>
  alexa_target: media_player.ovunque

Censura

Immagino (non avendo un device Eco Show) che l’utilità del valore expletive sia quello di “censurare” una parola che giovani orecchie sia meglio non sentano ma non è un problema leggerle sul display di un eco show. Con questo valore, infatti, il contenuto del tag verrà censurato con un beep.

Esempio:

service: script.multinotify
data:
  message: >-
    Posso censurare le parole, <say-as interpret-as="expletive">Porca vacca</say-as>!
  alexa_target: media_player.ovunque

Interiezioni (le mie preferite!!!)

Il valore interjection è decisamente il mio preferito! Permette di pronunciare una piccola frase pre programmata, da una lunghissima lista, in modo più naturale e giocoso.

Fai riferimento al pratico elenco delle interiezioni utilizzabili in italiano con Alexa, comprensivo di testo e preview audio.

Usando spesso le interiezioni è infatti possibile spezzare parecchio la monotonia della pronuncia meccanica di Alexa e simulare delle emozioni.

Consiglio quindi di cercare di usarle il più possibile per le notifiche quali il saluto all’ingresso in casa o in altre occasioni, avvisi o allarmi, informazioni. Quando scrivi una notifica per Alexa pensa sempre se possibile inserirne una. Farà tanta differenza!

Prova l’esempio qui sotto per capire meglio che leggendo mille parole…

Esempio:

service: script.multinotify
data:
  message: >-
    <say-as interpret-as="interjection">Wow</say-as>, sei tornato!
    <say-as interpret-as="interjection">apriti sesamo</say-as>... e la porta si aprì!
    <say-as interpret-as="interjection">ben fatto</say-as>: l'allarme è terminato!
  alexa_target: media_player.ovunque

Voci differenti

Pensavi che la voce di Alexa debba essere solo quella a cui siamo abituati? E invece no, Alexa può parlare con voci differenti: 3 italiane e tante di altre lingue usando il tag voice!

E’ bene ricordare che le voci vanno usate per le lingue per cui sono state progettate. Per cui se la lingua di default è italiano (come immagino) possiamo usare il solo tag voice. Ma se vogliamo usare una voce di una lingua differente dobbiamo specificare anche il tag lang indicando la lingua adeguata (vedi esempio più giù).

L’elenco delle voci utilizzabili, suddivise per lingua, è il seguente:

LinguaCodice per tag langVoci supportate
English, Americanen-USIvy, Joanna, Joey, Justin, Kendra, Kimberly, Matthew, Salli
English, Australianen-AUNicole, Russell
English, Britishen-GBAmy, Brian, Emma
English, Indianen-INAditi, Raveena
English, Welshen-GB-WLSGeraint
French, Canadianfr-CAChantal
French, Francefr-FRCeline, Lea, Mathieu
Germande-DEHans, Marlene, Vicki
Hindihi-INAditi
Italianit-ITCarla, Giorgio, Bianca
Japaneseja-JPMizuki, Takumi
Portuguese, Brazilianpt-BRVitoria, Camila, Ricardo
Spanish, Americanes-USPenelope, Lupe, Miguel
Spanish, Castilianes-ESConchita, Enrique, Lucia
Spanish, Mexicanes-MXMia

Esempio:

service: script.multinotify
data:
  message: >-
    Posso parlare con più voci.
    <voice name="Giorgio">Ciao, io sono Giorgio.</voice>
    <voice name="Carla">Ciao, io sono Carla!</voice>
    <voice name="Bianca">Ciao, io sono Bianca!</voice>
    <voice name="Kendra"><lang xml:lang="en-US">Hello, I am Kendra!</lang></voice>
    <voice name="Celine"><lang xml:lang="fr-FR">Bonjour, je suis Celine!</lang></voice>
  alexa_target: media_player.ovunque

Frasi casuali e più variabili

Se sei arrivato fin qui hai già acquisito tante informazioni che ti permettono di rendere più personali gli annunci di Alexa. Resta però un grosso limite. Se al verificarsi di un dato evento informiamo chi è a casa tramite un messaggio sempre uguale questo diventerà davvero noioso e scontato che sarà come non sentirlo.

Per migliorare la situazione di parecchio è possibile preparare diverse frasi equivalenti che saranno scelte in modo casuale ogni volta che avverrà l’annuncio.

Aggiungiamo anche delle interiezioni nelle frasi, creiamone un po’ per non rischiare di sentire la stessa frase troppo spesso e abbiamo un ottimo mix per rendere le notifiche molto più piacevoli.

A titolo esemplificativo vi mostro come effettuo il saluto quando entriamo in casa io e/o mia moglie:

- service: script.multinotify
  data:
    message: >
      {% if is_state('input_boolean.return_home_henrik', 'on') and is_state('input_boolean.return_home_antonella', 'off') %}
        {{['<say-as interpret-as="interjection">hey</say-as>. Bentornato a casa, Henrik!',
          '<say-as interpret-as="interjection">toh</say-as>, chi si vede! Bentornato, Henrik',
          '<say-as interpret-as="interjection">uh la là</say-as>, Henrik! Bentornato a casa!',
          '<say-as interpret-as="interjection">ta dà</say-as>, finalmente a casa Henrik! Bentornato!',
          '<say-as interpret-as="interjection">evviva</say-as>, è tornato il re del castello! Bentornato, Henrik!',
          '<say-as interpret-as="interjection">ding ding ding</say-as>, è tornato il papino bello! Tutte pronte alle coccole!',
          '<say-as interpret-as="interjection">cucù</say-as>, è tornato il papino! Casa dolce casa!',
          '<say-as interpret-as="interjection">ciao</say-as>, è bello riaverti a casa, Henrik!'] | random }}
      {% elif is_state('input_boolean.return_home_henrik', 'off') and is_state('input_boolean.return_home_antonella', 'on') %}
        {{['<prosody volume="loud"><say-as interpret-as="interjection">hey</say-as>. Bentornata a casa, Antonella!</prosody>',
          '<say-as interpret-as="interjection">toh</say-as>, chi si vede! Bentornata, Antonella',
          '<say-as interpret-as="interjection">uh la là</say-as>, Antonella! Bentornata a casa!',
          '<say-as interpret-as="interjection">ta dà</say-as>, finalmente a casa Antonella! Bentornata!',
          '<say-as interpret-as="interjection">oh</say-as>, chi si rivede! Mi sei mancata, Antonella! Bentornata!',
          '<say-as interpret-as="interjection">oh yes</say-as>, cosa c''è di meglio che rientrare nel proprio nido? Bentornata, Antonella!',
          '<say-as interpret-as="interjection">ma dai</say-as>, non si può mai stare sole in questa casa! <say-as interpret-as="interjection">scherzavo</say-as>! Bentornata, Antonella!',
          '<say-as interpret-as="interjection">urrà</say-as>, la regina del castello è tornata! Bentornata, Antonella!',
          '<say-as interpret-as="interjection">ciao</say-as>, è bello riaverti a casa, Antonella!',
          '<say-as interpret-as="interjection">bene bene</say-as>, finalmente sei a casa, Antonella! Mi sentivo così sola...',
          '<say-as interpret-as="interjection">badabim badabum</say-as>, la mamma è tornata! è bello averti qui con noi!',
          '<say-as interpret-as="interjection">alleluia</say-as>, mi stavo davvero annoiando da sola! Finalmente sei tornata, Antonella! Bentornata!'] | random }}
      {% elif is_state('input_boolean.return_home_henrik', 'on') and is_state('input_boolean.return_home_antonella', 'on') %}
        <prosody volume="loud"><say-as interpret-as="interjection">hey</say-as>. Bentornati a casa, famiglia Sozzi!</prosody>
      {% endif %}
    alexa_target: media_player.pian_terreno

Aggiungere informazioni variabili nei messaggi

Un altro modo per rendere meno monotoni gli annunci è quello di inserire nelle frasi dei dati variabili che a volte sono utili ed indispensabili ma possiamo pensare di inserirne anche dove non lo sono, per rendere più variate le frasi, anche in quelle random.

A titolo di esempio questo il mio messaggio (a ripetizione…) quando lo sportello del freezer rimane aperto per più del tempo configurato:

- service: script.multinotify
  data:
    title: Freezer aperto
    message: >
      {% set secondi = (now().timestamp()-as_timestamp(states.binary_sensor.freezer.last_changed)) | round(0) %}
      {{["Il freezer è aperto da " ~ secondi ~ " secondi, che ne dici di chiuderlo?", 
          "I pinguini stanno abbandonando il freezer! Chiudilo prima che siano scappati tutti!",
          "Il caldo sta entrando nel freezer o il freddo sta uscendo? Non lo so, l'importante è che lo chiudi!",
          "Il freezer lasciato aperto da " ~ secondi ~ " secondi non è una buona idea!",
          "Studi scientifici dimostrano che lasciando aperta la porta del freezer succedono cose spiacevoli.",
          "Secondo me " ~ secondi ~ " secondi di freezer aperto sono abbastanza. Per favore, chiudilo!",
          "Hey, che ne dici di chiudere il freezer? " ~ secondi ~ " secondi di freddo buttato via possono bastare!",
          "Il freezer tiene freddo il contenuto perchè è chiuso. Forse è il caso che torni ad esserlo!",
          "Forse non tutti sanno che il freezer aperto si scalda e forma ghiaccio al suo interno. Chiudilo!",
          "Ogni volta che il freezer rimane aperto a lungo sto male..."] | random}}
    alexa_target: media_player.pian_terreno

Come vedi in alcune delle frasi ho inserito il numero di secondi da cui lo sportello è aperto e questo rende più variabile l’annuncio. Provare per credere 🙂

Usare SSML con multinotify

Come ultimo consiglio ti propongo, quando usi multinotify per le tue notifiche Alexa e smartphone o altro, di specificare un testo specifico per Alexa, magari contenente SSML così da poter leggere meglio il tuo messaggio e poter adattare al mezzo di riproduzione un messaggio più idoneo.

Esempio:

- service: script.multinotify
  data:
    title: "E' pronto da mangiare!"
    message: "E' pronto da mangiare, la tavola ti aspetta!"
    alexa_message: '<say-as interpret-as="interjection">Hey</say-as> è pronto da mangiare!'
    alexa_target:
      - media_player.mansarda
      - media_player.primo_piano
    alexa_volume: 0.8
    alexa_force: true

Conclusione

A casa mia le notifiche Alexa sono una funzione fondamentale della mia domotica. Permettono infatti di avvisare di una serie di eventi che possono accadere e che sarebbe il caso di sapere anche se non stiamo guardando il telefono.

Per questo credo che ingentilirle e renderle più personali sia molto benefico per non stancarsi mai e, oltre all’utilità, fare anche un sorriso ogni tanto quando si sente una frase spiritosa.

Il limite sta poi nel buon gusto personale e nel livello di tolleranza dei membri della famiglia agli annunci e alle frasi sciocche. Vi consiglio di non abusare delle notifiche e di non esagerare con i testi sopra le righe. Alla fine lo scopo della notifica è informativo, non quello di raccontarci una barzelletta.
E se esageriamo con la quantità, nonostante le informazioni di questo articolo, alla lunga stancheranno.
I primi a perdere la pazienza saranno certamente quelli meno tecnici e invasati di domotica (…ogni riferimento alla moglie è puramente casuale… ^_^ )

E ora sbizzarrisciti con gli annunci!

Ti va di darmi una mano?

Il contenuto di questo sito è completamente gratuito senza pubblicità invasive e il fine non è certo guadagnare …ma mantenere un sito ha un costo. Se ti va di darmi una mano per sostenere le spese o ti va di sostenere questo progetto hai le seguenti modalità:


  • Donazione con Paypal:

  • Regalami un caffè su Buymeacoffee:


  • Effettua i tuoi acquisti Amazon a partire da QUESTO LINK (o tramite i prodotti sotto)

  • Effettuare i tuoi acquisti AliExpress usando QUESTO LINK

Henrik Sozzi

Sono un analista programmatore per lavoro e per passione. Amo la domotica, la stampa 3D e la tecnologia in generale. Mastodon: @pixel

Questo articolo ha 16 commenti

  1. Gino

    Non vedo l’ora di tornare a casa e provare tutto questo.
    Grazie mille, Henrik. Sei mitico!

    1. Henrik Sozzi

      Che bello leggere tutta questa gioia! 😍 Spero che ti darà ispirazione per notifiche particolari 😉

  2. Gino

    … e buon caffè 😉

  3. Gino

    Te lo meriti. Spero solo di poter essere ancor più d’aiuto in futuro

  4. gfkappa63

    Ciao Henrik,

    Ho ereditato un Echo Show che ho messo sulla mia scrivania e vorrei utilizzarlo per mostrare le notifiche da HA.
    Quando dico mostrare intendo un messaggio di testo se possibile associato ad una icona senza pronunciar parola, essendo la scrivania è utilizzata per lavoro ed essendo hai me perennemente in call, il silenzio è d’oro.

    Ho provato ad utilizzare il servizio notify.alexa_media utilizzando type: announce a method: show ma niente da fare.

    Qualche idea?

    Ancora grazie per il tuo lavoro.

    1. Henrik Sozzi

      Ciao, premesso che non ho alcun Echo Show ma solo Echo Dot ho fatto qualche ricerca e sembra che dal 2019 Amazon abbia eliminato la possibilità di usare method: show, purtroppo.
      Trovi le info nell’issue 231 di Alexa Media Player.
      Come workaround, mi viene da pensare, potresti impostare il volume a zero (o ad un valore bassissimo come 0.1) e usare method: all… Magari… 🙂

  5. dino

    Ciao, dovrei attivare alexa con un messaggio con il nome del sensore messo in “on”, per cui nella automazione memorizzare il testo in una variabile ed inserirla nel messaggio, hai un suggerimento? grazie

    1. Henrik Sozzi

      Ciao, si, basta usare un template. Ammettiamo che hai nel trigger state dell’automazione un certo numero di sensori (ad esempio sensori porta/finestra ad uso antifurto), qualunque dei quali cambi stato attiva l’automazione. Nella composizione del testo puoi usare la variabile speciale trigger che contiene le informazioni circa l’entità che ha fatto scatenare l’automazione. Nello specifico, per ottenerne il nome descrittivo e non l’entity_id, puoi usare trigger.to_state.name.
      Se usi multinotify, per esempio, puoi comporre il testo così: "Intrusione da {{ trigger.to_state_name }}!"
      Puoi mettere trigger.to_state.name in una variabile, diciamo nome_sensore, e usare quella nella composizione del messaggio: "Intrusione da {{ nome_sensore }}!"

  6. Giuseppe Delli Quadri

    Tutto chiaro per la sintassi ma dove si inserisce? In automazioni, script ecc, essendo alle prime armi non so come utilizzarli. Ad esempio se volessi far dire una frase ad un echo del tipo “La temperatura esterna è di “variabile” come si procede?” in Home assistant dove inizio? In automazioni? Grazie.

  7. Mario

    Ciao Henrik, a parte i doverosi complimenti per questo e tutti gli articoli che posti, avrei una domanda sull’attributo “tipo di voce” e “tono colloquiale”.
    Se li voglio inserire in un’automazione che già prevede la scelta di frase random, dove li metto?
    Se volessi ogni frase con una voce differente o una frase in tono colloquale tra le presenti, dove specifico l’attributo?

    – service: notify.alexa_media
    data:
    target:
    – media_player.ovunque
    data:
    type: announce
    # message: “Attenzione! Il forno è acceso insieme alla lavatrice. Spengo la lavatrice”
    message: >
    ‘{{ [“Attenzione! superato il limite di consumo elettrico totale. Spegnere qualcosa”,
    “Attenzione! superato il limite di consumo elettrico totale. Spegnere qualcosa”,
    “Attenzione! superato il limite di consumo elettrico totale. Spegnere qualcosa”,
    “Attenzione! superato il limite di consumo elettrico totale. Spegnere qualcosa”,
    “Attenzione! superato il limite di consumo elettrico totale. Spegnere qualcosa”,
    “Attenzione! superato il limite di consumo elettrico totale. Spegnere qualcosa”
    ] | random}}’

    GRAZIE!

    1. Henrik Sozzi

      Ciao, grazie per i complimenti 🙂
      Modifico il tuo codice inserendo un paio di esempi. Le prime quattro sono quelle che mi hai chiesto, ne aggiungo anche qualche altro esempio che secondo me rende l’annuncio un po’ più personale e meno monotono. Ti correggo anche gli errori di sintassi che noto:
      Inserisco il codice su PasteBin che i commenti eliminano il markup XML!!!
      Lo trovi qui: https://pastebin.com/JmwCkJ7S

      1. Mario

        ma cazzarola! Henrik GRAZIE!!!!
        velocissimo e preciso

      2. Mario

        Ciao Henrik, probabilmente sono riuscito ad incasinare il tuo codice (poi mi offrirai un caffè tu per la bravura). Non capisco perchè nonostante nessun errore rilevato, non vede l’automazione

        https://pastebin.com/TuYkfnY1

        1. Henrik Sozzi

          Da una guardata veloce direi che non è indentato correttamente condition:
          Tutto il suo contenuto deve andare più a destra di due spazi (il “-” della condizione deve andare al pari della “n” di condition: sopra.

Rispondi

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.