Garmin + Claude: una dashboard di allenamento tutta mia

In un pomeriggio domenicale, il geek in me ha preso il sopravvento e ha deciso di colleare il mio account Garmin a Claude per creare una dashboard di allenamento costruita sulle mie domande, non su quelle di un’app e …. senza scrivere una riga di codice!!!

Nuoto in piscina e in acque libere, cammino, faccio yoga !

Garmin Connect registra tutto, ma ogni schermata risponde a una domanda generica.

Io ne ho di molto precise:  sto diventando più veloce in acqua? Sto recuperando abbastanza? Il peso va nella direzione giusta?

Volevo una pagina sola che rispondesse a queste domande, con i miei dati, e che restasse sul mio computer.

La chiave ufficiale di Garmin

Garmin offre una Personal API: una chiave personale che dà accesso ai propri dati, in sola lettura.

Niente librerie non ufficiali, niente password salvate in giro.

La chiave si crea in Garmin Connect, nella pagina Personal API Key, con una scadenza a scelta.

Viene mostrata una sola volta e ne può esistere una sola attiva.

Con la chiave si ottiene un token che dura 24 ore, e con il token si leggono attività, riepiloghi giornalieri, sonno, HRV, peso, età fitness e zone cardio.

Sola lettura significa che nessuno script può modificare o cancellare nulla nel mio account.

Un passo alla volta, senza scrivere codice

Ho usato Claude in modalità Cowork, collegato al mio Mac.

Prima ho scritto le istruzioni una volta sola e le ho salvate come skill, così posso riusarle.

Poi Claude mi ha guidato in sette passi, fermandosi ogni volta che serviva qualcosa da me.

  1. Progetto: Claude ha creato la cartella, verificato Python e preparato i file di configurazione.
  2. Chiave: Ho creato la chiave su Garmin Connect seguendo le istruzioni, per poi  copiarla nel file giusto.
  3. Test: un comando nel Terminale ha mostrato le mie ultime cinque attività. Connessione funzionante 🙂
  4. Domande: obiettivo, sport, stile grafico, unità di misura, numeri che guardo di più.
  5. Download: 12 mesi di storia in circa un minuto.
  6. Dashboard: un unico file HTML che si apre nel browser.
  7. Aggiornamento: un solo comando scarica le novità e ricostruisce tutto.

Il mio lavoro è stato  copiare una chiave e incollare due righe nel terminale, il  codice l’ha scritto e controllato Claude.

Le regole d’oro: chiave e dati restano a casa

Sono dati di salute, quindi ho fissato poche regole chiare fin dall’inizio.

  • Sola lettura: nessuna chiamata che modifichi il mio account.
  • La chiave non passa dalla chat: la incollo io in un file sul Mac. Claude controlla solo che ci sia, senza mai leggerla o mostrarla.
  • Tutto in locale: chiave, dati scaricati e dashboard restano sul mio computer, esclusi da qualsiasi caricamento online.
  • Niente cloud aziendale: avevo chiesto di mettere il progetto in Documenti, ma Claude mi ha fatto notare che sul mio Mac quella cartella è sincronizzata con OneDrive. Abbiamo scelto una cartella solo locale.

Anche il backup che tengo su Dropbox contiene solo il codice, mai la chiave né i dati.

Cosa c’è nella dashboard

Ogni grafico risponde a una domanda che mi faccio davvero. Lo stile è pulito e chiaro, come un diario di allenamento, e funziona anche sul telefono. Passando sopra un grafico vedo i valori esatti del giorno o della settimana.

Sezione La domanda Cosa mostra
Verso l’obiettivo Sto andando nella direzione giusta? Peso, passo in piscina, km in acque libere, volume di nuoto
Salute Come sto oggi rispetto al solito? HRV, FC a riposo, sonno, carico, Body Battery, età fitness
Questa settimana Mi sto allenando come al solito? Km, ore e sessioni per sport, ultime 16 settimane
Tendenze Cosa sta cambiando nei mesi? HRV con la fascia personale, FC a riposo, fasi del sonno, carico, stress
Nuoto Sto diventando più veloce? Passo per 100 m di ogni nuotata, km al mese
Record Qual è il mio meglio? Nuotate più lunghe, passo migliore, giornate più impegnative

Cosa mi hanno detto i miei dati

In un anno: 700 attività, 366 notti di sonno e HRV, 19 uscite in acque libere. Vederli tutti insieme ha cambiato la mia lettura.

  • Recupero: in questo periodo l’HRV notturna è sotto la mia fascia abituale e la FC a riposo della settimana è sopra la media del mese. Due segnali che, insieme, chiedono un po’ più di riposo.
  • Velocità in acqua: il passo medio in piscina è intorno a 1:58 ogni 100 m, con un miglior risultato di 1:35 su almeno un chilometro. Ora posso seguirlo nuotata dopo nuotata.
  • Acque libere: la nuotata più lunga è stata di 3,64 km. È il punto di partenza per le gare.
  • Peso: solo 7 pesate in un anno sono troppo poche per seguire un obiettivo. La prima cosa da cambiare non è l’allenamento, ma l’abitudine di salire sulla bilancia.

Aggiornarla e portarla con sé

Dopo un allenamento basta un comando: scarica solo le novità, ricostruisce la pagina e la apre. La chiave dura un anno, poi se ne crea una nuova in due minuti.

Se cambio computer, copio la cartella del progetto, installo Python e rilancio lo stesso comando. Su Windows c’è un file equivalente con doppio clic.

In conclusione

Non serve essere programmatori per avere i propri dati in una forma utile.

Serve sapere quali domande farsi e avere un assistente che traduca quelle domande in codice, rispettando le regole che decidiamo noi.

La mia prossima domanda per la dashboard è già pronta: quanti giorni mancano alla prossima gara in acque libere?

Dall’analisi video agli allenamenti strutturati

L’ultimo passaggio è stato il più divertente.

Ho caricato un video di una mia nuotata in piscina, con riprese dalla superficie e sott’acqua frontali.

Claude non guarda il video in movimento come faremmo noi, ma ne ha estratto i fotogrammi e li ha analizzati uno per uno.

Il responso è stato onesto e utile.

Tra le cose positive: recupero del braccio con gomito alto e ritmo regolare.

Da migliorare:

  • una trazione spesso a braccio teso, che spinge l’acqua verso il fondo invece che indietro;
  • braccia che in allungo escono dalla linea delle spalle, probabilmente durante la respirazione;
  • molta aria all’entrata della mano;
  • la testa a tratti un po’ alta.

Claude ha anche indicato con chiarezza i limiti dell’analisi: risoluzione bassa e nessuna ripresa laterale, quindi niente giudizio sulla gambata.

Il tutto è finito in un documento Word con i fotogrammi commentati.

Poi siamo passati alla programmazione della settimana:

Scarico il lunedì, soglia il venerdì, aerobico lungo la domenica.

Ogni seduta include esercizi mirati ai difetti emersi dal video, come il remate, il nuoto a pugni chiusi, il braccio singolo e il catch-up con entrata sulla linea della spalla.

Le andature sono calcolate sul mio passo di soglia, circa 1:58 ogni 100 metri.

La parte che mi è piaciuta di più è stata la discussione.

Ho chiesto più volume: 2.000, 2.500 e 2.800 metri.

Poi ho chiesto perché alcune ripetute fossero in zona B2 e non B1.

Claude mi ha spiegato il ragionamento, cioè attivazione prima della serie centrale e richiamo di velocità a fine seduta, ma mi ha anche detto che B1 era una scelta altrettanto valida e più prudente.

Abbiamo cambiato, e alla fine ho avuto tre documenti Word, uno per seduta, da stampare e portare a bordo vasca.

Non è un sostituto di un allenatore in carne e ossa che ti guarda dal bordo, ma come strumento per ragionare sui propri dati e tenere il filo della programmazione funziona davvero bene.

Claude legge i miei allenamenti

Con il server MCP attivo, il collegamento tra Claude e intervals.icu è diventato reale.

Ho creato un Progetto su Claude dedicato al nuoto, che ho chiamato “AI-nuoto”, e ci ho caricato come riferimento lo storico delle mie sedute esportato da Final Surge, con la mia struttura abituale: sedute A, B e C e zone di intensità da A1 a C3.

La prova del nove è stata la domanda più semplice: “vedi i miei allenamenti?”.

Claude ha interrogato intervals.icu e in pochi secondi mi ha restituito il riepilogo delle ultime due settimane: le nuotate in piscina con il passo medio su 100 metri, le uscite in acque libere, le camminate, lo yoga, e l’andamento di fitness e fatica.

La cosa interessante non è tanto l’elenco, che vedo anche su intervals.icu, quanto la lettura.

Claude ha notato per esempio che in una sessione in mare avevo tenuto lo stesso passo della piscina, un buon segnale visto che in acque libere non ci sono virate e spinte dal muro.

Ha anche calcolato che il carico era moderato e che la mia forma era leggermente positiva, cioè ero riposato.

Da qui in poi i dati non sono più solo numeri da guardare: diventano la base per ragionare sulla programmazione.

Creare un server MCP per intervals.icu

Avere i dati su intervals.icu è utile, ma volevo fare un passo in più.

Poterli discutere con Claude, l’assistente di intelligenza artificiale di Anthropic, come farei con un allenatore.

Il problema è che un assistente AI, da solo, non ha accesso ai miei dati.

Qui entra in gioco MCP.

MCP, cioè Model Context Protocol, è uno standard aperto che permette di collegare un assistente AI a strumenti e servizi esterni. Un “server MCP” è un piccolo programma che fa da ponte.

Da un lato parla con il servizio (in questo caso intervals.icu), dall’altro espone a Claude una serie di strumenti, come “leggi le attività”, “leggi i dati di benessere” o “aggiungi un evento al calendario”.

Per intervals.icu esiste un server MCP open source.

La configurazione ha richiesto questi passaggi:

  1. Installare i requisiti sul computer [Python e il gestore di pacchetti indicato nella documentazione del progetto].
  2. Scaricare il progetto e creare un file di configurazione con due dati: la chiave API personale, che si genera nelle impostazioni per sviluppatori di intervals.icu, e l’ID atleta.
  3. Registrare il server nella configurazione di Claude Desktop, così che Claude lo avvii e lo possa usare.

Un’avvertenza: la chiave API dà accesso ai propri dati, quindi va trattata come una password e non va mai condivisa o pubblicata.

Garmin e intervals.icu: far parlare l’orologio con la piattaforma di analisi

Da qualche tempo registro tutto con il mio Garmin fenix 7

Nuoto in piscina, acque libere, bici, camminate e perfino le sessioni di yoga.

Garmin Connect è comodo per avere un colpo d’occhio, ma quando si vuole capire davvero come sta andando l’allenamento serve qualcosa di più.

Per questo ho scelto intervals.icu, una piattaforma di analisi molto apprezzata da ciclisti, triatleti e nuotatori, che calcola carico di allenamento, fitness, fatica e forma nel tempo.

Il collegamento è semplice.

Dalle impostazioni di intervals.icu si apre la sezione delle connessioni, si sceglie Garmin Connect e si autorizza l’accesso con le proprie credenziali Garmin.

Da quel momento ogni attività registrata con l’orologio arriva automaticamente su intervals.icu pochi minuti dopo la sincronizzazione con il telefono. Vengono inoltre importati i dati di benessere, come frequenza a riposo, sonno e peso.

Il vantaggio è immediato.

Per ogni nuotata intervals.icu mostra distanza, passo, frequenza cardiaca, carico e il suo contributo alla curva di fitness.

Guardando le ultime settimane posso capire se sto accumulando fatica o se sono fresco, e tutto senza inserire un solo dato a mano.

Questo è il primo mattone. Nel prossimo articolo racconto come ho dato a un’intelligenza artificiale la possibilità di leggere questi dati.

Notate che in questa modalità non serve utilizzare strava.

Se i dati diventano la memoria dell’AI, chi protegge la memoria?

Dopo aver collegato un agente AI ai miei dati, la domanda successiva è inevitabile: chi sa quali dati sta usando, dove si trovano e se dovrebbero essere accessibili?

Nel precedente articolo sono arrivato a una conclusione apparentemente semplice:

il vero valore di un agente AI non è soltanto nel modello, ma nei dati e nel contesto che gli mettiamo a disposizione.

Nel mio piccolo progetto AI-nuoto il rischio è relativamente limitato. Ho una Knowledge con gli allenamenti, un profilo atleta e un collegamento a Strava.

Ma proviamo a spostare lo stesso concetto in un’azienda.

Improvvisamente non stiamo più parlando di vasche, CSS e chilometri.

Stiamo parlando di documenti, database, email, contratti, informazioni personali, proprietà intellettuale e dati regolamentati.

E la domanda cambia completamente.

Se un agente AI può accedere ai dati aziendali, siamo sicuri di sapere a quali dati sta accedendo?

Prima di proteggere un dato bisogna sapere che esiste e qui emerge uno dei problemi che considero più interessanti nell’adozione dell’AI.

Un’organizzazione può avere petabyte di informazioni distribuite tra cloud, SaaS, file server, object storage e database.

Prima ancora di parlare di AI dobbiamo essere in grado di rispondere ad alcune domande:

  • Dove sono i miei dati?
  • Quali sono sensibili?
  • Chi può accedervi?
  • Quali vengono utilizzati dall’AI?
  • Esistono copie che non dovrebbero essere accessibili?

È qui che entra in gioco il concetto di Data Security Posture Management e, più in generale, di governance dei dati.

Ed è qui che diventa interessante Securiti AI.

Dalla Data Protection alla Data Intelligence

Securiti AI lavora proprio sul problema della conoscenza e della governance dei dati: scoperta, classificazione, privacy, accesso e controllo delle informazioni.

Il concetto che trovo particolarmente interessante è semplice:

non posso proteggere correttamente ciò che non conosco.

E con l’AI questo principio diventa ancora più importante.

Perché ora non sono soltanto gli utenti e le applicazioni tradizionali ad accedere ai dati.

Abbiamo LLM, RAG, copiloti e agenti che utilizzano quelle informazioni per costruire risposte e prendere decisioni.

La superficie da governare cambia!

Discover → Understand → Govern → Protect → Recover

Il percorso che vedo è questo:

  • DISCOVER
    Sapere quali dati possediamo e dove si trovano.
  • UNDERSTAND
    Comprenderne contenuto, sensibilità e relazioni.
  • GOVERN
    Definire chi e cosa può utilizzarli, compresi sistemi AI e agenti.
  • PROTECT
    Proteggerli da perdita, compromissione e accessi non autorizzati.
  • RECOVER
    Essere in grado di ripristinarli quando qualcosa va storto.

Ed è proprio nell’ultimo passaggio che Data Security e Data Resilience si incontrano.

Perché conoscere perfettamente i propri dati non basta se, dopo un ransomware o un errore, non siamo in grado di recuperarli.

Allo stesso modo, avere un backup perfetto non risolve tutto se non sappiamo quali dati stiamo proteggendo e quanto sono importanti.

L’AI ha bisogno di dati.

I dati hanno bisogno di governance.

Il mio piccolo AI-nuoto mi ha insegnato qualcosa di molto semplice.

Più dati fornisco all’agente, più le sue risposte possono diventare contestualizzate.

Ma aumentando l’accesso ai dati aumenta anche la responsabilità di sapere cosa gli sto permettendo di vedere.

In azienda questo diventa un problema di:

Governance. Security. Privacy. Identity. Data Protection. Resilience.

E probabilmente il futuro della Data Protection non sarà soltanto:

“Posso recuperare questo dato?”

ma anche:

“So che questo dato esiste, so cosa contiene, so chi lo utilizza, so quale AI può accedervi e, se viene compromesso, quanto velocemente posso renderlo nuovamente disponibile?”

A quel punto entrano inevitabilmente in gioco anche RPO e RTO.

Ed è qui che la conversazione sull’AI smette di essere soltanto una conversazione sui modelli.

Diventa una conversazione sui dati e soprattutto, sulla loro resilienza.