Home Assistant: Buongiorno Personalizzato con gli Speaker Google Home Mini

Home Assistant Buongiorno Personalizzato con gli Speaker Google Home Mini

Quando acquisti gli speaker Google Home e Google Home Mini e li configuri all’interno della stessa rete WiFi dove hai configurato Home Assistant installato su Raspberry Pi 3 ti troverai gli SMART speaker di Google tra i media player.

Avrai quindi la possibilità di utilizzare Google Home anche come cassa per farti dire tutto quello che succede all’interno della tua Casa Domotica. In questo esempio vedremo un Buongiorno personalizzato, quando ci svegliamo Home Assistant ci farà sapere attraverso lo speaker Google Home Mini, la temperatura interna, esterna, condizioni meteo e avvierà la riproduzione in streaming della nostra radio preferita, di mattina per me è Radio 105 con Tutto Esaurito, poi passo a Virgin Radio o Spotify.

Ovviamente se devi semplicemente sapere che ore sono avere qualche notizia e previsioni meteo, appena sveglio, puoi semplicemente dire “Ok Google, buongiorno”, tuttavia se quando ti svegli vuoi informazioni precise sullo stato di alcuni sensori che hai configurato all’interno di Home Assistant questa guida può esserti d’aiuto, inoltre imparerai come utilizzare il servizio Text-to-Speech (TTS) all’interno di Home Assistant.

Home Assistant un Buongiorno personalizzato con gli Speaker Google Home

Quando ci svegliamo possiamo fare in modo che Home Assistant ci fornisca alcune informazioni sui sensori che abbiamo configurato al suo interno, per esempio ci può far sapere la temperatura interna della casa, esterna, che tempo fa, ricordarci i promemoria dei nostri appuntamenti ecc, dipende da quali sensori abbiamo installato nella nostra Casa DOMOTICA e quali servizi configurati all’interno di Home Assistant.

Che cosa ci server per il Buongiorno Personalizzato con Google Home

Ovviamente avere Home Assistant installato su Raspberry Pi 3:
Come installare Home Assistant su Raspberry Pi 3 – Hass.io

Avere configurato Home Assistant per l’accesso sicuro da remoto:
Come accedere a Home Assistant da remoto – Hass.io

Avere un account Google attivo, c’è qualcuno chi non ce l’ha?

Questa automazione potrebbe funzionare meglio con un sensore di movimento che si attivi quando siamo in vicinanza degli speaker Google Home o Google Home Mini, oppure una telecamera con riconoscimento facciale, come la Netatmo Welcome, in grado di riconoscerci.

Se non si hanno sensori non è un problema dato che il messaggio di buongiorno può essere richiamato anche chiedendolo direttamente all’assistente Google.

Home Assistant: come utilizzare SMART speaker per pronunciare frasi scritte

Per poter inviare a Google Home il nostro “Buongiorno personalizzato” configureremo il servizio Text-to-Speech (TTS) all’interno di Home Assistant, ovviamente possiamo utilizzare anche altre casse SMART WiFi, l’importante è che siano tra i device configurati all’interno di Home Assistant, l’elenco dei media_player si trova in strumenti per gli sviluppatori -> stati (<>).

Purtroppo non ci sono molti speaker WiFi in commercio, tuttavia chi ha già della casse attive in casa può valutare l’acquisto di Google Chromecast Audio, questo dispositivo dal costo di circa 40 euro rende SMART qualsiasi cassa, altoparlante, speaker o amplificatore di vecchia generazione dotato di ingresso AUX.

Come configurare il servizio Text-to-speech (TTS) in Home Assistant

Questa è la parte più semplice, infatti è sufficiente aggiungere questo codice al file configuration.yaml e quindi riavviare Home Assistant

tts:
  - platform: google
    cache: true
    cache_dir: /tmp/tts
    time_memory: 300

Una volta configurato il servizio Text-to-speech (TTS) andremo a creare uno script o più script in modo da farci leggere dal nostro assistente Google il testo da noi realizzato.

Come creare una automazione per avere un Buongiorno Personalizzato attraverso Google Home Mini

Una volta configurato TTS dobbiamo creare una automazione (automation) con una frase personalizzata da trasmettere al nostro SMART speaker Google Home o Google Home Mimi.

Questa frase andrà “letta” solo quando un sensore individua la nostra presenza (trigger) e come condizione (condition) metteremo un determinato intervallo orario, vediamo il codice dell’automazione:

# Buongiorno 
automation:
  - alias: 'buongiorno'
    trigger:
      platform: state
      entity_id: binary_sensor.motion_sensor_158d0000edxxxx
      from: 'off'
      to: 'on'
    condition:
      - condition: time
        after: '07:30:00'
        before: '08:00:00'
      - condition: state
        entity_id: input_boolean.buongiorno_one_time
        state: 'off'
    action:
      - service: script.turn_on
        entity_id: script.buongiorno
        data:
          variables:
            nome: 'Enore'
      - service: homeassistant.turn_on
        entity_id: input_boolean.buongiorno_one_time
            
  - alias: buongiorno_one_time
    trigger:    
      platform: time    
      at: '00:30:00'    
    action:    
      service: homeassistant.turn_off   
      entity_id: input_boolean.buongiorno_one_time

Analizziamo brevemente in codice, quando il sensore rileva un movimento esegue lo script buongiorno e imposta input_boolean.buongiorno_one_time su “ON”, ma questo solo tra le 7:30 e le 8:00 del mattino e solo se input_boolean.buongiorno_one_time è impostato su “OFF”.

Una seconda automazione alle 00:30 imposterà su “OFFf” input_boolean.buongiorno_one_time, una entità che creiamo noi inserendo all’interno del file configuration.yaml il seguente codice:

input_boolean:
buongiorno_one_time:

input_boolean.buongiorno_one_time serve a far eseguire l’automazione una sola volta.

Lo script buongiorno sarà questo:

script:
  buongiorno:
    alias: "Buongiorno"
    sequence:
      - service: media_player.volume_set
        data_template:
          entity_id: media_player.ufficio
          volume_level: 0.5
      - service: tts.google_say
        entity_id: media_player.ufficio
        data_template:
          message: "Buongiorno {{ nome }}"
          language: 'it'
          cache: false 
      - delay:
          seconds: 4
      - service: script.turn_on
        data:
          entity_id: script.buongiorno_frase_1 
          
  buongiorno_frase_1:
    alias: "Buongiorno Frase 1"
    sequence:
      - service: tts.google_say
        entity_id: media_player.ufficio
        data_template:
          message: >
              {{ [
              "ti vedo molto bene" ,
              "sei in gran forma oggi" ,
              "ti auguro una splendida giornata" 
              ] |random }}
          language: 'it'
          cache: false 
      - delay:
          seconds: 5
      - service: script.turn_on
        data:
          entity_id: script.buongiorno_frase_2  
          
  buongiorno_frase_2:
    alias: "Buongiorno Frase 2"
    sequence:
      - service: tts.google_say
        entity_id: media_player.ufficio
        data_template:
          message: "Sono le ore {{states('sensor.time')}} ed è {{states('sensor.pws_weather')}}. La temperatura esterna è di {{states('sensor.netatmo_outdoor_temperature')}} gradi, mentre la temperatura interna è di {{states('sensor.netatmo_indoor_temperature')}} gradi."
          language: 'it'
          cache: false 
      - delay:
          seconds: 15
      - service: script.turn_on
        data:
          entity_id: script.play_105   

Analizziamo brevemente il codice, ho creato 3 script perché ho suddiviso la frase di “buongiorno” in 3 parti.

Il primo script buongiorno imposta il volume dello SMART speaker Google Home Mini in ufficio al valore 0.5 (il volume va 0 a 1), poi utilizzo il servizio Text-to-Speech (TTS) per dire “Buongiorno Enore”. Da notare come sia possibile passare una o più “variabili” dall’automazione allo script, in questo modo possiamo utilizzare lo stesso script anche per dare il buongiorno ad altre persone se per esempio abbiamo una telecamera con il riconoscimento del volto. Lo script prosegue dopo 4 secondi d’attesa con l’attivazione del secondo script buongiorno_frase_1.

In buongiorno_frase_1 ho inserito 3 frasi da pronunciare dopo il buongiorno, che vengono scelte a caso (random), poi dopo 5 secondi viene eseguito lo script buongiorno_frase_2

All’interno buongiorno_frase_2 troviamo il testo vero e proprio dove vengono letti i valori di alcuni sensori configurati n Home Assistant, io sfrutto i sensori della stazione meteo Netatmo, ma chi non ha una stazione meteo può utilizzare i servizi meteo compatibili con Home Assistant, tipo Weather Underground, Dark Sky, Yahoo Weather Sensor ecc. L’ultima parte eseguo lo script play_105.

Lo script play_105 fa riprodurre il streaming Radio 105 con tutto esaurito, lo script è questo:

script:
  play_105:
    alias: "Play Radio 105"
    sequence:
      - delay:
          seconds: 5
      - service: media_player.volume_set
        data_template:
          entity_id: media_player.ufficio
          volume_level: 0.2
      - service: media_player.play_media  
        data_template:
          entity_id: media_player.ufficio
          media_content_id: http://icecast.unitedradio.it/Radio105.mp3
          media_content_type: 'audio/mp3'

Se invece volessimo riprodurre la classifica Top 50 Italia su Spotify il codice per lo script sarebbe questo:

script:
  play_top_italia_spotify:
    alias: "Topo 50 Italia Spotify"
    sequence:
      - delay:
          seconds: 5
      - service: media_player.volume_set
        data_template:
          entity_id: media_player.ufficio
          volume_level: 0.2             
      -  service: media_player.select_source
         data_template: 
           entity_id: media_player.spotify
           source: Ufficio
      -  service: media_player.play_media
         data_template:
           entity_id: media_player.spotify
           media_content_type: playlist
           media_content_id: spotify:user:spotifycharts:playlist:37i9dQZEVXbIQnj7RRhdSX    

Per poter riprodurre playlist e singoli brani musicali su Spotify attraverso Home Assistant è necessario avere un account Premium, va bene anche Premium per studenti, ovviamente è necessario aver configurato Spotify all’interno di Home Assistant.

Il media_content_id si trova facilmente raggiungendo la playlist con il proprio browser, per esempio la playlist Morning Motivation realizzata da Spotify si può ascoltare raggiungendo questo URL: open.spotify.com/user/spotify/playlist/37i9dQZF1DXc5e2bJhV6pu quindi dovremo impostare media_content_id: spotify:user:spotify:playlist:37i9dQZF1DXc5e2bJhV6pu

Buongiorno Personalizzato con gli Speaker Google Home – Conclusioni

Abbiamo visto come utilizzare il servizio Text-to-Speech (TTS) configurato all’interno di Home Assistant installato su Raspberry Pi 3, la migliore piattaforma open-source per la Casa DOMOTICA, per creare un buongiorno personalizzato.

Se in casa abbiamo una telecamera di videosorveglianza come la Netatmo Welcome è possibile utilizzare il servizio IFTTT.com per far eseguire uno script personalizzato all’interno di Home Assistant quando viene individuata una determinata persona.

Il servizio Text-to-Speech (TTS) possiamo usarlo anche per leggere gli appuntamenti inseriti in Google Calendar, o ancora meglio, possiamo creare un calendario dedicato solo alla nostra Casa Domotica, per esempio io ho creato un calendario per la raccolta della spazzatura, così Home Assistant mi avvisa, attraverso lo SMART speaker Google Home, quando passano a prendere la plastica, il vetro, l’indifferenziato ecc. Magari vedremo meglio come sfruttare Google Calendar all’interno di Home Assistant con un articolo dedicato.

Se hai domande e suggerimenti non esitare a lasciare un commento a quest’articolo.