Home Assistant - Creiamo un sensore turni sincronizzato con Google Calendar
di Antonio Mario Longo
27 Ottobre 2020
Home Assistant
Lavorando in azienda, e su turni, non ho mai adorato alzarmi presto al mattino.
Soprattutto se alle 6 del mattino devo già essere operativo, quindi alle 4:45 dovrei essere in piedi, sempre che, la sera precedente abbia ricordato di mettere la sveglia.
Ma se magari, la sera il sistema domotico riconoscesse i miei turni e ad attendermi ci fosse una tazza di caffè già pronta?
Sicuramente sarei leggermente più felice e il risveglio sarebbe meno traumatico.
Home Assistant ha di per sé un sensore turni lavorativi chiamato work day, che ci indica solo se il giorno odierno è un giorno lavorativo o meno.
Ma per far si che conosca i nostri orari, dobbiamo essre noi ad indicarli al nostro HUB Domotico.
Di solito i lavoratori turnisti, seguono 3 o 4 turni.
Noi prenderemo in esempio 3 turni lavorativi che convenzionalmente indicheremo con
- Primo dalle 6.00 alle 14.00
- Secondo dalle 14.00 alle 22.00
- Notte dalle 22.00 alle 6.00
- Riposo
Di solito le aziende, in base alle esigenze lavorative schematizzano i turni e li eseguono a rotazione.
Quindi magari, si lavorerà per ipotesi 5 giorni di mattina, 2 giorni di Riposo poi 5 giorni di Notte, altri 2 giorni di Riposo e infine 5 giorni di pomeriggio e gli ultimi 2 giorni di Riposo.
Tutti questi turni, si ripetono molte volte per anni salvo imprevisti personali o esigenze aziendali.
Questo schema di turnistica, potremmo riportarlo in Google Calendar.
La piattaforma di Google Calendar, su Home Assistant permette di connettere i Calendari di Google e generare, in base agli eventi dei sensori binari che indicano con lo stato On o Off, se determinati eventi sono avvenuti o meno.
La prima volta che aggiungeremo quest'integrazione, Home Assistant creerà in automatico un file chiamato google_calendars.yaml, che avrà al suo interno le informazioni su tutti i calendari associati al proprio account.
Partiamo immediatamente:
- Aprite il seguente link: https://console.developers.google.com/start/api?id=calendar
- La configurazione guidata chiederà di creare un nuovo progetto, quindi cliccare su Cotinua.
- Successivamente cliccare su 'Vai alle credenziali' e arrivati alla pagina chiamata 'Aggiungi Credenziali al tuo progetto' cliccate su Annulla.
- Sulla barra laterale sinistra, dirigetevi su Credenziali per poi cliccare su 'Configura schermata di consenso'
- Alla nuova pagina User Type selezionate 'Esterno' e infine cliccate su Crea
- Impostate come nome dell' applicazione Home-Assistant
- Su supporto e-mail dal menù a tendina selezionare la vostra mail e su Informazioni di contatto dello Sviluppatore, digitate nuovamente la vostra e-mail.
- Cliccate su Salva e Continua e passerete dalla sezione Schermata consenso OAuth alla sezione Ambiti
- Ora lasciate invariata questa schermata, e spostatevi nel menu laterale sinistro cliccando la voce Credenziali.
- In alto al menu principale, troverete il tasto + Crea Credenziali
- Selezionate dal menù a discesa che vi comparirà cliccandoci ID Client Oauth
- Alla nuova schermata selezionate come Tipo di Applicazione ' Tv e dispositivi di immissione limitata ' , e al box nome sottostante inserite Credenziali Home Assistant.
- Cliccate su Crea e alla schermata successiva vedrete un pop-up che vi indica il Client ID e il Client Secret
Attenzione: Annotate i due codici in qualche modo perchè andranno inseriti nel file configuration.yaml di Home Assistant
- Cliccate su OK e ora passiamo alla doppia verifica delle ' API di Google Calendar '
- Nel menù laterale sinistro, selezionate libreria e nella nuova pagina che si aprirà cercate 'Google Calendar Api' e selezionatela.
- Se nella nuova pagina vi ritroverete il pallino con la V verde dove è scritto API abilitata, non dovrete far nulla, altrimenti abilitatela.
Attenzione: Se cercate di passare a un nuovo account Google, potreste trovarvi qualche errore. Quindi eliminate il file .google.token Presente nella cartella Config di Home Assistant e riavviate Home Assistant.
Passiamo ora alla configurazione di Home Assistant.
- Collegatevi ad Home Assistant | Hassio con Samba o FTP
- Dirigetevi nella cartella Config e aprite il file configuration.yaml
- All'ultima riga del file configuration.yaml inserite le seguenti stringhe di codice:
google:
client_id: CLIENT_ID (che avete annotato in precedenza)
client_secret: CLIENT_SECRET (che avete annotato in precedenza)
CREARE TURNI LAVORATIVI CON GOOGLE CALENDAR
- Dal vostro browser, dopo esservi loggati con il vostro account google, dirigetevi al seguente indirizzo: https://calendar.google.com
- Cliccate dal menù in basso a sinistra sulla voce Altri Calendari +
- Successivamente Create un nuovo calendario con l'apposita voce
- Impostate come Nome Turni Lavoro, e lasciate vuota la descrizione, cliccate infine su Crea calendario
- Una volta creato il Calendario cliccate sulla freccia presente accanto alla scritta Impostazioni in modo tale da ritrovarvi nel menù principale di Google Calendar.
- In basso sotto la voce I miei Calendari spuntate il calendario appena creato
- Cliccate sul tasto Crea
- Al nuovo Pop-Up inserite come Titolo il turno che volete (ex: Primo) e spostatevi direttamente alla voce Non si ripete, selezionando la dicitura Personalizza.
- Alla voce Ripeti ogni impostate 3 settimane
- Si ripete il, selezionate i giorni lavorativi (per esempio dal Lunedì al Venerdì)
- Fine, impostate la data in cui volete far finire la vostra turnzione e terminate con il Tasto Fine
- Inserite gli orari, dei turni per esempio dalle 06.00 alle 14.00 e alla fine ripetete questa procedura per tutti gli altri turni, incluso il riposo.
INTEGRARE SENSORE TURNI IN HOME ASSISTANT
Ora ripassiamo sul nostro Home Assistant, riavviando il sistema per permettere a Home Assistant di aggiornarsi in modo tale da vedere il calendario precedentemente creato.
- Collegatevi su Home Assistant con Samba o FTP
- Recarsi nella cartella Config e aprire il file configuration.yaml
- In fondo al file aggiungere le seguenti righe di codice
sensor:
- platform: template
sensors:
turni_antonio:
friendly_name: "Turni Lavorativi"
value_template: "{{ state_attr('calendar.turni_lavoro', 'message') }}"
Praticamente, abbiamo creato un sensore legato all'attributo message, del calendario turni_lavoro, che cambia il valore del proprio stato in base al turno giornaliero.
- Al termine, riavviate Home Assistant e potrete aggiungerlo alla vostra plancia ottenendo magari questo risultato
Spero che questo sensore, con questa guida possa esservi d'aiuto per le infinite automazioni e che ne possiate fare buon uso.
Produrre e aggiornare contenuti su vincenzocaputo.com richiede molto tempo e lavoro. Se il contenuto che hai appena letto è di tuo gradimento e vuoi supportarmi, clicca uno dei link qui sotto per fare una donazione.