Il problema
Nonostante l’argomento non sia di solito particolarmente apprezzato dagli addetti ai lavori, sono invece convinto che in mezzo a voi ci siano alcuni “infiltrati” che come me, sono degli appassionati e vogliono avere il Calcio e fantacalcio su Home Assistant.
L’idea
Perché quindi non realizzare una soluzione che ci dica quando e con chi la nostra squadra gioca la prossima partita?
Che possa indicarci quale sarà la prossima partita di Serie A e magari anche tutte le altre?
E che ci invii qualche notifica per ricordarci di inserire la formazione del fantacalcio?!?
I requisiti
I requisiti per applicare questa soluzione sono quelli di avere un account Google e di tifare per la squadra giusta: il Napoli.
Se invece la tua squadra del cuore è un’altra, pagherai pegno facendo una donazione la cui entità cambierà a seconda della stessa. Giusto per fare un esempio: se tifi una squadra che mi sta simpatica, doni poco, se invece hai scelto tuo malgrado di essere ad esempio senza colori degni di nota (tipo il bianco e il nero), allora potrebbe non esserci prezzo.
Scherzo ovviamente ma sappi che qui troverai tutto l’esempio realizzato per il mio Napoli, non dovrebbe però essere complicato fare le dovute personalizzazioni se tifi altro.
La soluzione
Innanzitutto andate a questa pagina e scegliete la squadra che volete seguire. Successivamente cliccate sull’icona di Google Calendar come da immagine seguente:
Poi sul pulsante “Log In” che appare dopo:
Si aprirà una nuova finestra dove scegliere l’account a cui associare il nuovo calendario. Sceglietelo e date le autorizzazioni in fondo cliccando su “Consenti”.
A questo punto aprite Google Calendar. Sulla sinistra in fondo, troverete una sezione chiamata “Altri calendari” nella quale dovreste vedere quello appena aggiunto riguardante la vostra squadra.
Fate ora la stessa operazione partendo da questa pagina e cliccando sul pulsante per aggiungere a Google Calendar il campionato di Serie A.
A questo punto siamo pronti per passare su Home Assistant.
Andate in “Impostazioni” -> “Dispositivi e servizi” ed aggiungete l’integrazione di Google Calendar. Quando avvierete l’installazione vi verranno chiesti Nome, ID Cliente OAuth e Segreto Cliente OAuth.
Per recuperare queste informazioni andate a questa pagina, accettate i termini e condizioni di utilizzo e poi create, se necessario, un progetto:
Successivamente cliccate sulla sinistra su “Libreria”, cercate “Google Calendar API” e abilitatela. Fatto questo andate su “Schermata consento OAuth”, spuntate la voce “Esterno” e poi cliccate su “CREA”. Inserite un nome per l’applicazione (ad esempio “Home Assistant”) e selezionate una e-mail per assistenza utenti. In fondo scrivere nelle “Informazioni di contatto dello sviluppatore” il vostro indirizzo e-mail e cliccate su tutti i “SALVA E CONTINUA” fino a tornare alla dashboard. Poi sempre nella “Schermata di consenso OAuth”, cambiate lo stato di pubblicazione cliccando su “PUBBLICA APP”.
A questo punto spostatevi nel menu a sinistra su “Credenziali” e cliccate in alto su “+ CREA CREDENZIALI”, poi su “ID client OAuth”. Scegliete come tipo di applicazione “TV e dispositivi di immissione limitata” ed infine inserite come “Nome” un valore a scelta per le credenziali di accesso. Ad esempio “Home Assistant Credentials”.
Vi apparirà una schermata con i dati del Client OAuth creato.
Questi dati, insieme al nome scelto per le credenziali sono quelli da inserire nella configurazione di Google Calendar su Home Assistant:
Vi apparirà una schermata che vi mostrerà una codice da inserire in questa pagina. Al termine, se tutto è andato a buon fine, l’integrazione vi aggiungerà delle entità corrispondenti ai calendari installati sul vostro account. In particolare dovreste averne due, chiamate rispettivamente calendar.tua_squadra_del_cuore e calendar.serie_a.
E’ il momento di creare dei sensori che ci serviranno a mostrare i dati.
Aprite il file configuration.yaml ed aggiungete il seguente codice sotto la sezione sensor: avendo cura di sostituire “calendar.napoli” con il nome dell’entità della vostra squadra:
##########
# CALCIO #
##########
- platform: template
sensors:
next_match:
friendly_name: Prossima partita
icon_template: "mdi:soccer"
value_template: >-
{% set match = state_attr('calendar.napoli', 'message') %}
{{ match }}
next_match_day:
friendly_name: Data
icon_template: "mdi:calendar"
value_template: >-
{% set match_day_time = state_attr('calendar.napoli', 'start_time') %}
{% set match_date = as_timestamp(match_day_time) | timestamp_custom('%d/%m/%Y') %}
{{ match_date }}
next_match_week_day:
friendly_name: Giorno
icon_template: "mdi:calendar-week-begin"
value_template: >-
{% set arr_week_days = ["Domenica", "Lunedì", "Martedì", "Mercoledì", "Giovedì", "Venerdì", "Sabato"] %}
{% set match_day_time = state_attr('calendar.napoli', 'start_time') %}
{% set week_day = as_timestamp(match_day_time) | timestamp_custom('%w') | int %}
{{ arr_week_days[week_day] }}
next_match_time:
friendly_name: Ora
icon_template: "mdi:clock-time-three"
value_template: >-
{% set match_day_time = state_attr('calendar.napoli', 'start_time') %}
{% set match_time = as_timestamp(match_day_time) | timestamp_custom('%H:%M:%S') %}
{{ match_time }}
serie_a_next_match:
friendly_name: Prossima partita
icon_template: "mdi:soccer"
value_template: >-
{% set match = state_attr('calendar.serie_a', 'message') %}
{{ match }}
serie_a_next_match_day:
friendly_name: Data
icon_template: "mdi:calendar"
value_template: >-
{% set match_day_time = state_attr('calendar.serie_a', 'start_time') %}
{% set match_date = as_timestamp(match_day_time) | timestamp_custom('%d/%m/%Y') %}
{{ match_date }}
serie_a_next_match_week_day:
friendly_name: Giorno
icon_template: "mdi:calendar-week-begin"
value_template: >-
{% set arr_week_days = ["Domenica", "Lunedì", "Martedì", "Mercoledì", "Giovedì", "Venerdì", "Sabato"] %}
{% set match_day_time = state_attr('calendar.serie_a', 'start_time') %}
{% set week_day = as_timestamp(match_day_time) | timestamp_custom('%w') | int %}
{{ arr_week_days[week_day] }}
serie_a_next_match_time:
friendly_name: Ora
icon_template: "mdi:clock-time-three"
value_template: >-
{% set match_day_time = state_attr('calendar.serie_a', 'start_time') %}
{% set match_time = as_timestamp(match_day_time) | timestamp_custom('%H:%M:%S') %}
{{ match_time }}
Salvate e riavviate Home Assistant.
Realizziamo infine l’interfaccia su Lovelace.
Aggiungete una vista di tipo pannello chiamata ad esempio “Calcio” ed aggiungete un elemento manuale con il seguente codice (sempre da personalizzare):
type: horizontal-stack
cards:
- type: vertical-stack
cards:
- type: markdown
content: '**FORZA AZZURRI!**'
title: SSC NAPOLI
- type: entity
entity: sensor.next_match
- type: entity
entity: sensor.next_match_week_day
- type: entity
entity: sensor.next_match_day
- type: entity
entity: sensor.next_match_time
- type: calendar
initial_view: dayGridMonth
entities:
- calendar.napoli
- type: vertical-stack
cards:
- type: markdown
content: '**Ecco la prossima**'
title: SERIE A
- type: entity
entity: sensor.serie_a_next_match
- type: entity
entity: sensor.serie_a_next_match_week_day
- type: entity
entity: sensor.serie_a_next_match_day
- type: entity
entity: sensor.serie_a_next_match_time
- type: calendar
initial_view: dayGridMonth
entities:
- calendar.serie_a
Conclusioni
Inutile dire che potreste scegliere di aggiungere altre squadre, campionati oppure il mondiale in corso.
Poi non vi resta che tifare e soprattutto avvisare le vostre mogli di guardare Home Assistant prima di organizzare la prossima uscita esattamente nel giorno e nell’ora della partita.
Supporto reciproco
La realizzazione di questo articolo ha richiesto tempo, studio ed impegno.
Vi chiedo quindi mettere una mano sul cuore e l’altra sul portafogli per ricompensare il mio sforzo con un contributo libero:
Grazie.
Un piccolo extra
Per tutti coloro che fanno il fantacalcio, ho realizzato una piccola automazione per ricevere delle notifiche che mi ricordino di inserire la formazione. Eccola:
alias: Fantacalcio
description: ""
trigger:
- platform: calendar
event: start
offset: "-24:0:0"
entity_id: calendar.serie_a
- platform: calendar
event: start
offset: "-3:0:0"
entity_id: calendar.serie_a
- platform: calendar
event: start
offset: "-1:0:0"
entity_id: calendar.serie_a
condition: []
action:
- service: notify.mobile_app_xiaomi_11_5g_lite_ne
data:
title: ⚽ Fantacalcio
message: >-
Preparati per la nuova giornata di serie A.<br />Ricordati di inserire
la formazione!
mode: single
Come potete vedere ho scelto di ricevere tre notifiche. Una 24 ore prima dell’inizio della nuova giornata di Serie A, una tre ore prima e l’ultima un’ora prima. Ovviamente decidete per voi la soluzione più comoda.
Non mi resta che augurare a tutti voi un buon campionato e che vinca il Napoli!
ciaoooo , intanto complimentissimi per le guide etc etc..volevo chiederti come fai a far uscire quella card che hai in alto nella guida per il calendario serie a…
grazie
Ciao, grazie per i complimenti. La card è realizzata usando varie cose. Sarebbe complicato spiegarlo qui. In particolare usando le personalizzazioni che spiego negli articoli dedicati all’interfaccia. Mi dispiace non poter essere più specifico ma sarebbe davvero impossibile spiegarlo in un commento.
intanto grazie per la risposta , la card che hai fatto tu è anche basata su codici o solo sulle varie entità e card che offre ha ( comprese le card hacs ) ?
Le entità sono quelle generate dal codice che hai scaricato da questo articolo. Le card sono un misto di standard e personalizzate.
ok , io sono riuscito a caricare le immagini ( squadra del cuore ) e logo seriea e usare presumo vertical stack per le entità delle varie partite però non riesco ad affiancare la 4 griglia che sarebbero le entità della serie a , hai modo di aiutarmi?
Per quello usa semplicemente gli horizontal e vertical stack.
ottimo grazie , invece per farmi mandare una notifica tipo 2 ore prima della partita come faccio?
( scusa se ti rompo )
Per questa cosa devi modificare il codice scaricato. Non dovrebbe essere difficile.
Ciao,
stavo facendo la stessa cosa anche io per il fantacalcio 😀 Sto usando anche un audio personalizzato cosi il telefono dirà proprio “Fantacalcio” invece che il classico ding 😀
Ma l’automazione delle notifiche, non ti invia la notifica per ogni partita nel calendario? Quindi per esempio per la quarta giornata ti arrivano le tre notifiche per le 9 partite (due partite giocano nello stesso giorno e orario)
Grazie!
Sì anche a me fa questo problema ma non mi dava fastidio quindi l’ho lasciato così.
La soluzione può essere aggiungere un sensore binario che segnala se ti ha già avvisato o meno che disattivi quando ti arriva la prima notifica e che riattivi quando passano almeno due giorni dall’ ultima partita (la serie A non può fare due partite di due giornate diverse senza almeno un giorno di pausa).
Spero di essermi spiegato decentemente.
Ah ok, si si capito che intendi anche se non saprei come farlo 😀
Io mi sono creato manualmente gli eventi su un calendario locale inserendo solo la prima partita della giornata… si se cambia qualcosa dovrei cambiare a mano 😀
Ciao, io sono arrivato al punto di copiare il codice su configuration.yaml. Stupidamente non ho verificato la correttezza e adesso non mi si avvia più HA. C’è una maniera per avviarlo e modificare il codice?
Grazie
Ciao, è strano perché le nuove versioni di home assistant fanno in automatico una verifica del codice prima di riavviare.
In ogni caso se il computer su cui è ospitato si accende, puoi accedere in un altro modo (ssh ad esempio) e modificare il file configuration.yaml per farlo tornare a posto.
Un’altra soluzione è qualora tu abbia una copia di backup (che ti consiglio di attivare a prescindere).
ciao complimenti e grazie…secondo te sarebbe possibile integrare i campionati minori…. giovanissimi esordienti alievi delle squadre minori…non della serie a ..ma di dove giocano i nostri figli..grazie
Ciao ne dubito a meno che non ne esista qualche calendario ical pubblico. Io sicuramente non ne conosco purtroppo. Mi dispiace.
Grandeee sto integrando il tutto per farmi mandare le notifiche inserimento formazione…una sola domanda nell’automazione, sai come far partire una sola notifica ad inizio giornata? attualmente mi arrivano le notifiche ogni partita che inizia.
Grazie ancora
Ciao:
– crea un aiutante booleano
– attiva il booleano quando una partita qualsiasi inizia
– manda la notifica solo quando il booleano passa da off a on
– disattiva il booleano solo se passano almeno 48 ore dalla partita precedente
Questa è una possibile soluzione ma ne puoi pensare anche altre.
Ciao, complimenti per questa guida.
sto provando ad implementare il tuo codice per i sensori, ma ho questo errore:
Errore: extra keys not allowed @ data[‘platform’].
Assicurati che la configurazione sia valida e ricarica gli elementi MQTT configurati manualmente o riavvia Home Assistant per risolvere questo problema.
Mi puoi aiutare a capire come risolvere il problema?
Grazie mille
Ciao, la guida è un po’ vecchia ed un recente aggiornamento ha rimosso la gestione (diciamo il comando) platform.
Adesso non ho modo di aggiornarla ma appena possibile adeguo tutto alle ultime versioni.
Intanto prova a risolvere in autonomia e se riesci magari condividi la soluzione qui nei commenti per favore.
Grazie e scusa il disagio.