Vai al contenuto
Home » Calcio e fantacalcio su Home Assistant

Calcio e fantacalcio su Home Assistant

Calcio e fantacalcio su Home Assistant

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:

Aggiunta squadra a Google Calendar

Poi sul pulsante “Log In” che appare dopo:

Log in per autorizzazione su Google Calendar

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.

Calendario aggiunto su Google Calendar

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:

Scelta nome 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.

Recupero dati di accesso

Questi dati, insieme al nome scelto per le credenziali sono quelli da inserire nella configurazione di Google Calendar su Home Assistant:

Aggiunta credenziali per calcio e fantacalcio 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!

19 commenti su “Calcio e fantacalcio su Home Assistant”

  1. 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

    1. 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.

      1. 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 ) ?

          1. 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?

    2. 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!

      1. 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.

        1. 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 😀

    3. 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

      1. 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).

    4. 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

    5. 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

      1. 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.

    6. 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

      1. 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.

    Lascia un commento

    Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *