Salvare i dati di Home Assistant su Google Sheets

HassioHelp

Salvare i dati di Home Assistant su Google Sheets

IFTTT -Appdaemon_GoogleSheet

 

Argomento: Configurazioni
Livello: Novizio (Novizio, Esperto, Pro)
Difficoltà: Media(Bassa, Media, Alta)

Introduzione

In questo articolo vedremo come salvare i dati delle entità di Home Assistant su Google Sheets usando due approcci diversi, IFTTT e Appdaemon:

  • IFTTT è uno strumento immediato, semplice ed adatto alle esigenze della maggior parte degli utenti
  • Appdaemon è un potente sistema per la scrittura di app per Home Assistant che permette un elevato grado di personalizzazione di ciò che vogliamo ottenere.

Questo tipo di salvataggio delle entità, di HA, principalmente sensori, può risultare molto utile per visualizzare velocemente su Google Sheets i dati di consumo elettrico o le temperature medie della nostra abitazione e creare dei grafici o delle aggregazioni per esempio tramite tabelle pivot. Ciò non toglie che la soluzione target per il salvataggio dei dati resta un DB come InfluxDB, ottimizzato per la conservazione dei dati storici e la visualizzazione con Grafana, se sei curioso puoi dare un ‘occhiata ai nostri articoli sul tema (Ottimizzare la conservazione dei dati di HA e Configurazione e installazione di Grafana)

Per chi usa Nodered è disponibile una guida su Youtube di Nodered Italia che realizza quanto illustrato in questo articolo.

Come prerequisito per seguire e mettere in pratica quanto troverete nell’articolo, occorre avere una conoscenza di base di Home Assistant e nel caso si scegliesse di usare Appdaemon una certa padronanza dei più comuni costrutti di programmazione in Python.

IFTTT & Appdaemon: cosa sono?

IFTTT, abbreviazione di If This Then That, che tradotto in italiano suona più o meno “se questo allora quello” ovvero se avviene un certo evento allora “scatena” una azione, è un servizio web gratuito (almeno fino a tre applet) che permette la creazione di semplici catene di condizioni, chiamate applet. Le applet mettono quindi in comunicazione i dispositivi e le app che usiamo abitualmente tra cui Twitter, Dropbox, Amazon Alexa e Google Assistant in modo da fare azioni che singole app non sono in grado di fare. Ad esempio, un’applet può sincronizzare una todo-list  di Alexa con Google Calendar. Oppure creare eventi nel calendario di iPhone, tramite Google Assistant. Nel nostro use-case useremo IFTTT per mettere in comunicazione HA con Google Sheets.

AppDaemon, di cui abbiamo parlato diverse volte nel corso degli ultimi due anni (Appdaemon:automazioni al massimo) è un ambiente di esecuzione multithread Python per la scrittura di applicazioni per Home Assistant. Non è pensato per sostituire script e automazioni, ma piuttosto per completare e potenziare quanto già offre Home Assistant. Per molte cose le automazioni funzionano bene e possono essere molto efficaci. Tuttavia, esistono automazioni molto complesse per le quali diventa difficile usare YAML: AppDaemon, in queste situazioni, ci da una mano.

Metodo 1: IFTTT

Configurazione di IFTTT

Circa 3 anni fa abbiamo scritto un articolo su IFTTT, di tempo ne è passato ma comunque è un buon punto di partenza per capire nel dettaglio come funziona questo servizio. Vediamo ora i passi necessari per configurare IFTTT:

  1. Creare un account su IFTTT (https://ifttt.com/user/new?wp_=1) e aggiungete i servizi Google Sheets e WebHook
  2. Configurare IFTTT su HA attraverso la guide ufficiale che troverete qui: https://www.home-assistant.io/integrations/ifttt/ , vi ricordo che per poter ricevere eventi da IFTTT, l’istanza di Home Assistant deve essere accessibile dal Web e devi avere configurato un URL esterno, a questo scopo vi consiglio di seguire questa guida.
  3. Se sei troppo pigro e non vuoi andare a cercare sul sito ufficiale di HA la procedura di installazione eccola di seguito: nella barra laterale fare clic su Impostazioni, dal menu di configurazione selezionare: Integrazioni, In basso a destra, fai clic sul pulsante Aggiungi integrazione, dall’elenco, cerca e seleziona “IFTTT“, segui le istruzioni sullo schermo per completare la configurazione.

Dopo aver seguito i passaggi indicati vi troverete l’integrazione configurata come nella figura sottostante dove troverete i dati affinchè HA possa ricevere i dati da IFTTT, cosa che per questo use-case non è strettamente necessaria ma può far comodo per altri usi.

Integrazione IFTTT

Integrazione IFTTT

Per poter invece inviare i dati da Home Assistant verso IFTTT occorre segnarsi l’API key recuperabile qui e visibile nella figura sottostante come parte finale dell’URL: https://maker.ifttt.com/use/MYAPIKEY, configurarla in HA come di seguito e riavviare:

 

API key IFTTT

API key IFTTT

Configurazione di IFTTT

Eccoci alla parte più interessante ovvero come configurare IFTTT in modo che riceva i dati da HA e li salvi su un foglio Google Sheets, vediamo i passi da completare:

  1. Creiamo una applet IFTTT applet del tipo  ‘IF Webhook THEN Google Sheets’ nella pagina https://ifttt.com/create/
  2. nella parte IF inseriremo l’evento di esempio “sensor_balcone
  3. nella parte THEN inseriremo l’azione “add row to spreadsheet” come in figura sottostante, in questa fase è richiesta autorizzazione alla comunicazione di IFTTT verso il vostro account Google.
Applet IFTTT

Applet IFTTT

La parte “THEN” risulterà come nella figura sottostante dove sono editabili i campi:

  • “spreadsheet name”  dove inserire in nome del documento GSheets lasciare quello proposto
  • “formatted row”: dove ci sono i campi che conterrà il foglio di lavoro
  • “drive folder path”: il path del file GSheets dentro Google Drive
Action IFTTT

Action IFTTT

Automazione in HA

Come automazione di esempio andiamo a configurare il salvataggio dei dati di temperatura, umidità e pressione verso IFTTT e quindi  verso Google Sheets, le entità sono da personalizzare secondo quanto presente nel proprio HA:

L’automazione è molto semplice:

  • nella parte di trigger è specificato l’invio dei dati ogni 15 minuti, variabile a piacere;
  • nella parte action è specificato quali dati di HA inviare con il formato configurato nella parte “THEN” di IFTTT.

Il risultato sarà la visualizzazione su Google Sheets del documento IFTTT_Maker_Webhooks_Events come nella figura sottostante, a cui è stato aggiunto anche un grafico (ovviamente costruito in maniera manuale partendo dal menù “Inserisci –> Grafico“); da notare che IFTTT specifica in 2000 il numero massimo di righe per foglio, quando si raggiunge questo numero viene creato un altro foglio.

Nel caso ci fossero dei problemi di interpretazione delle cifre decimali da parte di Gsheet, si può modificare l’automazione in modo da sostituire il punto con la virgola, ad esempio così: {{ states('sensor.pressure_balcone') | replace (".",",") }}.

 

Esempio su GH

Esempio su GSheets

Metodo 2: Appdaemon

Installazione Appdaemon

L’installazione e la configurazione iniziale di Appdaemon sono state già trattate qui, quindi vi invito a leggere la guida e configurare il sistema in modo da trovarvi con una installazione funzionante. I file che compongono l’app sono scaricabili da qui:

L’altra cosa da fare è inserire nella configurazione dell’addon Appdaemon le librerie necessarie per far funzionare l’app, quindi nella barra laterale,  Supervisor --> Appdaemon 4 --> Configuration inseriamo:

Accesso di HA a Google Sheets

Per poter utilizzare Google Sheets occorre procedere con l’abilitazione delle Google API, i passi sono simili alla configurazione dei Google Home che potete vedere a questo link, ed inoltre sono presenti numerose guide on-line che trattano questo argomento, la cosa migliore resta comunque affidarsi alla documentazione delle libreria Python Gspread che è quella utilizzata per la creazione dell’app, altri link sono in bibliografia.

Vediamo comunque i passaggi necessari per la modalità con account di servizio (“service account“) cioè un account Google destinato a bot che devono autenticarsi ed essere autorizzati ad accedere ai dati tramite API di Google. Poiché si tratta di un account separato, per impostazione predefinita non ha accesso a nessun foglio di lavoro finché il foglio non è condiviso con questo account.

  • Creare un documento su Goggle Sheets e salvalo per esempio come “HA
  • Accedi alla console delle API di Google e crea di un nuovo progetto o usa un progetto già censito
  • Vai su “API e servizi> Dashboard“, scegli “Abilita API e Servizi” e abilita le API di Google Drive e Google Sheets (link).
  • Vai su “API e servizi> Credenziali” e scegli “Crea credenziali> Account di servizio“.
  • Compilare il modulo, Fare clic su “Crea” e “Fine“.
  • Premi “Gestisci account di servizio” sopra Account di servizio.
  • Prem su   vicino all’account di servizio creato e selezionare “Gestisci chiavi“, quindi fare clic su “AGGIUNGI CHIAVE> Crea nuova chiave“.
  • Seleziona il tipo di chiave JSON e premere “Crea“.
  • Una volta creato e salvato il file JSON tieni da parte il valore del campo “client_email“, vai sul foglio “HA” del primo punto ed effettua la condivisione con l’indirizzo mail recuperato dal file JSON.
  • Salva il file JSON dentro la cartella /config di HA o all’interno di una sottocartella

App Gsheets

L’app realizzata, che prende spunto da alcuni post del forum ufficiale, è in grado di scrivere su un file di GSheets ad intervalli regolari i dati dei sensori che sono specificati nel file di configurazione gsheets.yaml, andiamo a vedere come è composto:

Questi sono i parametri fondamentali da specificare:

  • module: gsheets, class: GSheets: quest sono i parametri standard Appdaemon relativi all’app
  • SpreadSheetName: "HA": questo è nome del documento GSheets su cui andremo a salvare i dati
  • PathJSON: "/config/file-esempio.json" : specifica il path del file JSON con le credenziali del service account
  • RunEverySec: 1200:  indica in secondi l’intervallo di tempo tra due successive scritture sul foglio di lavoro, nell’esempio 20 minuti (pari a 1200 secondi)
  • RunOnceDay: false:indica se il dato deve essere scritto solo ogni fine giornata, se true l’impostazione precedente non viene presa in considerazione e i dato viene scritto ogni giorno alle “23:59:40

Sezione upload: questa è la sezione fondamentale che specifica in quali fogli all’interno del file sono salvati i dati, i sensori dai quali i dati sono presi e le intestazioni delle colonne della struttura tabellare:

  • sheetName: "TH Balcone": foglio interno sul quale scrivere i dati
  • nameInSheet1: "Temperatura", entity1: "sensor.balcone_temperature": nameInSheet1 è il nome della colonna 1, entity1 è il nome dell’entità che sarà salvato su GSheets
  • nameInSheet2: "Umidità", entity2: "sensor.balcone_humidity": in analogia con i campi precedenti, da notare il codice numerico progressivo
  • nameInSheet3: "Batteria", entity3: "sensor.balcone_battery": in analogia con i campi precedenti, da notare il codice numerico progressivo

All’interno della sezione upload:è possibile inserire più fogli ognuno con i dati di un sensore diverso.

La parte Python (gsheets.py) è l’app vera e propria ed è strutturata come una qualsiasi app realizzata con Appdaemon, vediamo i punti salienti:

    • modulo initialize: recupera i dati specificati in gsheets.yaml e richiama il modulo publish_to_gs.
    • modulo publish_to_gs: effettua la vera e propria scrittura sul documento dei dati dei sensori specificati in gsheets.yaml, il suo scopo e di verificare che il documento sia accessibile, che i fogli interni siano creati e di aggiungere su ogni foglio i dati recuperati, inserendo una riga ad ogni iterazione.
    • modulo checkSheetsCreated: restituisce una lista di tutti i fogli nel documento GSheets, ed è utilizzato nel metodo precedente

Il risultato è visibile nell’immagine sottostante:

GSheet con Appdaemon

GSheets con Appdaemon

Visualizzazioni grafici GSheets in HA

Dopo aver salvato i dati dei sensori su GSheets il passo successivo è quello di visualizzare in Home Assistant un grafico relativo ai dati pubblicati, niente di più facile:

  • dopo aver realizzato il grafico clicca su in alto a destra e quindi clicca su “Pubblica grafico”;
  • nella finestra che si aprirà effettua la pubblicazione del grafico e ricopiate da qualche parte il link generato, la figura sottostante fa vedere il risultato della pubblicazione;
  • usa una card lovelace come “Picture card” inserendo il link del punto precedente, per visualizzare il grafico.
Pubblica grafico

Pubblicazione del grafico GSheets

Conclusioni

L’articolo ha illustrato due metodi per scrivere i propri dati su Google Sheet, uno più semplice ed uno più complesso ma che permette ampie possibilità di personalizzazione, abbiamo visto anche come visualizzare in Home Assistant dei grafici realizzati attraverso i dati importati in GSheets.

Entrambi i metodi richiedono di customizzare la parte relativa ai sensori i cui dati saranno esportati e scritti nei fogli Google Sheets, ma niente di particolarmente complicato.

Se avete qualcosa da suggerire ci vediamo nei gruppi Telegram e Facebook.

Link utili e spunti interessanti:

 

Lascia un commento

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