Come configurare il Calendario di Google in Home Assistant

Configurare il calendario di Google (Google Calendar) all’interno di Home Assistant può essere utile per farci ricordare alcuni eventi periodici attraverso gli Smart Speaker Google Home.

In questo esempio vedremo come Google Home ci può ricordare di mettere fuori la spazzatura il giorno prima della raccolta, questo quando individua qualcuno in casa nel tardo pomeriggio. Inoltre Google Home ci dirà anche quale spazzatura verranno a raccogliere l’indomani, se plastica, vetro, indifferenziato oppure umido.

Come configurare il calendario di Google (Google Calendar) all’interno di Home Assistant

La configurazione del calendario di Google all’interno di Home Assistant può essere sfruttata per attivare automazioni al presentarsi di un determinato evento in calendario. Per seguire questa guida ovviamente devi aver installato Home Assistant su Raspberry Pi 3.

Se non l’hai ancora fatto puoi partire da quest’articolo: Come installare Home Assistant su Raspberry Pi 3 – Hass.io.

Come generare un Client ID e Client Secret in Google Developers Console

Raggiungere Console Developers Google e creare un nuovo progetto.

Creato il progetto clicca su Vai a Credenziali, quindi clicca su Annulla.

Nella schermata Credenziali clicca su Schermata consenso OAuth.

Inserisci un nome qualsiasi per l’applicazione, per esempio Home Assistant, quindi clicca su Salva.

Clicca su Credenziali, Crea Credenziali e seleziona ID client OAuth, quindi seleziona altro, nel campo nome inserisci un nome e poi clicca su crea.

Si apre una finestra dove trovi indicato il tuo ID Client e il tuo Client Secret, copiali in un file di testo perché sono valori che andranno inseriti all’interno del file configuration.yaml.

Clicca su Libreria, cerca Google Calendar API e assicurati che sia abilitata, se non lo è abilitala.

Come configurare Google Calendar all’interno di Home Assistant

All’interno del file configuration.yaml inserire questo codice:

google:
  client_id: YOUR_CLIENT_ID
  client_secret: YOUR_CLIENT_SECRET

Creare un nuovo calendario per la propria Casa Domotica

Raggiungere Google Calendar.

Cliccare sul simbolo + aggiungi il calendario di un…

Dare un nome al calendario, in questo caso ho messo “home”

Mettere il segno di spunta solo sul calendario appena creato.

Creare un nuovo evento per la raccolta del pattume, nella mia zona il giovedì mattina passano a raccogliere la plastica e il vetro a settimane alterne, il lunedì raccolgono l’indifferenziato ecc.

Quindi creo un nuovo evento per mercoledì prossimo, verso sera, tipo alle 18 e che si ripete ogni due settimane, lo chiamo “Domani Raccolgono la Plastica”, per impostare la periodicità dell’evento cliccare su “Altre Impostazioni”, quindi cliccare su “non si ripete”, selezionare la periodicità desiderata, in questo caso per fare in modo che l’evento si ripeta a settimane alterne, cliccare su personalizza e impostare “Ripeti ogni 2 settimana”. Volendo si può cambiare anche il colore dell’evento, per esempio si può scegliere giallo per la plastica, verde per il vetro ecc.

Sessa cosa faccio per il mercoledì successivo, ma in questo caso lo chiamo “Domani Raccolgono Vetro e Lattine”.

Creare un’automazione per Home Assistant che ci avverte di mettere fuori il pattume attraverso Google Home Mini

Dopo aver creato il nuovo calendario per la nostra casa domotica, lo troveremo all’indicato all’interno del file google_calendars.yaml, che viene creato in automatico. Maggiori informazioni su come configurare i calendario all’interno di questo file le trovate nella pagina ufficiale Home Assistant – Google Calendar Event.

Ora creiamo l’automazione, nel mio caso ho inserito questo codice:

automation:
- alias: 'Calendario Casa'
  trigger:
    - platform: state
      entity_id: binary_sensor.netatmo_top_someone_known
      from: 'off'
      to: 'on'
  condition:
    - condition: template
      value_template: '{{ states.sensor.date.state == strptime(states.calendar.home.attributes.start_time, "%Y-%m-%d %H:%M:%S").strftime("%Y-%m-%d")}}'
    - condition: time
      after: '16:30:00'
      before: '18:00:00'
    - condition: state
      entity_id: input_boolean.calendario_casa
      state: 'off'
  action:
    - service: persistent_notification.create
      data:
        message: "{{ states.calendar.home.attributes.message }}"
         title: "Ricorda che oggi"
    - service: media_player.volume_set
      data_template:
        entity_id: media_player.salotto
        volume_level: 0.8
    - service: tts.google_say
      entity_id: media_player.salotto
      data_template:
        message: "Scusate, prossimo evento {{ states.calendar.home.attributes.message }}"
        language: 'it'
        cache: false
    - service: homeassistant.turn_on
      entity_id: input_boolean.calendario_casa
    - delay: 01:35:00
    - service: homeassistant.turn_off
      entity_id: input_boolean.calendario_casa

Analizziamo brevemente il codice, nella prima parte imposto che il messaggio mi venga consegnato attraverso lo Smart Speaker Google Home solo quando la telecamera di videosorveglianza Netatmo Welcome individua qualcuno di conosciuto. Ovviamente non tutti hanno in casa questa telecamera, quindi per chi non la possiede il “trigger” potrebbe essere un orario prestabilito, quando sicuramente qualcuno è in casa, oppure quando rientrate in casa la sera dopo il lavoro e il vostro smartphone si collega alla rete WiFi.

In quest’ultimo caso userete “Nmap” per il tracking dei device, ne ho parlato nell’articolo Xiaomi Mi Smart Home e Home Assistant (Hass.io) su Raspberry Pi 3 come Allarme per la Casa Domotica.

Codice di esempio con il gruppo all_my_devices che passa dallo stato “not_home” a “home” per almeno 5 minuti. Il il gruppo all_my_devices conterrà tutti i device tracker (smartphone) delle persone interessate all’evento in calendario.

  trigger:
    platform: state
    entity_id: group.all_my_devices
    from: 'not_home'
    to: 'home'
    for:
      minutes: 5

In “condition” il codice:

value_template: '{{ states.sensor.date.state == strptime(states.calendar.home.attributes.start_time, "%Y-%m-%d %H:%M:%S").strftime("%Y-%m-%d")}}'

confronta la data odierna con la data dell’evento in calendario, se le due date coincidono l’automazione può procedere.

Mentre il codice seguente è per impostare una fascia oraria entro la quale attivare l’automazione.

    - condition: time
      after: '16:30:00'
      before: '18:00:00'

Se si vuole che il messaggio venga ripetuto una sola volta si può inserire questo codice, sempre in condition:

    - condition: state
      entity_id: input_boolean.calendario_casa
      state: 'off'

Solo se il valore input_boolean.calendario_casa, da noi creato, è su “off” l’automazione può procedere, dopo che è stata eseguita imposteremo il valore della variabile su “on”. Riporteremo il valore su “off” solo dopo che è passato l’orario entro il quale l’automazione può essere eseguita.

    - delay: 01:35:00
    - service: homeassistant.turn_off
      entity_id: input_boolean.calendario_casa

In “action” ci sono le azioni eseguite all’interno dell’automazione, quella che ci interessa maggiormente è la seguente:

    - service: media_player.volume_set
      data_template:
        entity_id: media_player.salotto
        volume_level: 0.8
    - service: tts.google_say
      entity_id: media_player.salotto
      data_template:
        message: "Scusate, prossimo evento {{ states.calendar.home.attributes.message }}"
        language: 'it'
        cache: false

Questo codice permette di far pronunciare al nostro Assistente Google il messaggio “Scusate, prossimo evento {{ states.calendar.home.attributes.message }}”, ovviamente bisogna aver prima configurato all’interno del file configuration.yaml il servizio “Text to speech”, per maggiori dettagli puoi raggiungere la pagina Text-to-Speech (TTS)

Questo è il codice da inserire nel file configuration.yaml per il servizio “Text to speech”.

# Text to speech
tts:
  - platform: google
    language: 'it'
    cache: true
    cache_dir: /tmp/tts
    time_memory: 300

Come configurare il Calendario di Google all’interno di Home Assistant – Conclusioni

Se avete seguito tutti i passaggi correttamente (attenzione all’indentazione) lo Smart Speaker Google Home vi avviserà quando mettere fuori il pattume e lo farà il giorno prima in una determinata fascia oraria e solo quando qualcuno è in casa. Ovviamente è possibile anche farsi recapitare un messaggio su Telegram, oppure una mail, quale metodo di notifica utilizzare dipende unicamente dalle proprie abitudini.

Io ho scelto di ricevere la notifica attraverso un messaggio vocale dallo speaker Google Home che ho in salotto, il quale mi ricorderà quale tipologia di rifiuti vengono a raccogliere l’indomani.

Trovi tutti gli articoli sulla Casa Domotica e Home Assistant nella categoria “Casa Domotica” e “Progetti Raspberry“.