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:
[code language=”python”]
google:
client_id: YOUR_CLIENT_ID
client_secret: YOUR_CLIENT_SECRET
[/code]
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:
[code language=”python”]
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
[/code]
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.
[code language=”python”]
trigger:
platform: state
entity_id: group.all_my_devices
from: ‘not_home’
to: ‘home’
for:
minutes: 5
[/code]
In “condition” il codice:
[code language=”python”]
value_template: ‘{{ states.sensor.date.state == strptime(states.calendar.home.attributes.start_time, "%Y-%m-%d %H:%M:%S").strftime("%Y-%m-%d")}}’
[/code]
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.
[code language=”python”]
– condition: time
after: ’16:30:00′
before: ’18:00:00′
[/code]
Se si vuole che il messaggio venga ripetuto una sola volta si può inserire questo codice, sempre in condition:
[code language=”python”]
– condition: state
entity_id: input_boolean.calendario_casa
state: ‘off’
[/code]
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.
[code language=”python”]
– delay: 01:35:00
– service: homeassistant.turn_off
entity_id: input_boolean.calendario_casa
[/code]
In “action” ci sono le azioni eseguite all’interno dell’automazione, quella che ci interessa maggiormente è la seguente:
[code language=”python”]
– 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
[/code]
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”.
[code language=”python”]
# Text to speech
tts:
– platform: google
language: ‘it’
cache: true
cache_dir: /tmp/tts
time_memory: 300
[/code]
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“.