
Visualizzare ciò di cui abbiamo parlato al telefono con Grafana
Bene, in questo post vedremo qualcosa come sempre diverso e che possiamo semplicemente aggiungere alla nostra installazione di Grafana, e non è altro che sfruttare i dati di utilizzo delle nostre telefonate. Lo uso da molto tempo e volevo condividerlo nel caso fossi interessato, Ero curioso di sapere quanto parlavo al cellulare, Con chi, come mi chiamavano e io chiamavo, Visualizzalo in base agli orari, gente… con torrone!
Lo faremo tramite un'app installata sul cellulare, come è il mitico IFTTT che salveremo nei fogli di calcolo di Google Spreadsheet i record delle chiamate perse che abbiamo, le chiamate che riceviamo e quelle che facciamo, Il nome del contatto verrà memorizzato sugli stessi fogli, il tuo numero di telefono e la durata di ogni chiamata, più quando. Ora con la nuova versione di Grafana (Le 7) possiamo consultare direttamente i fogli di calcolo di Google, Ma questa volta ti mostrerò un altro modo, dato che lo uso da molto tempo e non l'ho ancora sviluppato 🙂. Quello che faccio finora è, Utilizzo di un'attività pianificata con un CRON su una macchina Linux (potrebbe essere lo stesso Grafana), Scarico i fogli di calcolo e poi li scarico in un database MySQL. E sarà quel DB che visualizzeremo con Grafana, essere in grado di progettare la nostra Dashboard a nostro piacimento!
Partiamo da quanto detto, sul nostro cellulare installeremo IFTTT, e aggiungeremo tre automazioni:
- Registra automaticamente le chiamate che ricevi sul tuo telefono Android in un foglio di calcolo Google
- Registra automaticamente le chiamate effettuate sul tuo telefono Android in un foglio di calcolo Google
- Registro chiamate, Chiamata persa
Configureremo ciascuno di essi in modo che salvi tutti questi record in un foglio di calcolo diverso. Ricorda sul tuo cellulare di indicare che questa app può continuare a funzionare in background e impedire alla batteria del cellulare di limitarla, quindi sarà sempre in esecuzione e memorizzerà i nostri dati in tempo reale.
Bene, Iniziamo con gli script che ho usato finora, per prima cosa avremo bisogno di questo script Python che ci consente di scaricare file da Google Drive (DescargaFicheroDesdeGoogleDrive.py) E poi è sufficiente creare uno script stesso con bash che quello che fa è, (io) svuota le tabelle MySQL dove memorizzeremo i registri delle chiamate, (Ii) ogni foglio di calcolo viene scaricato e archiviato localmente in formato CSV, e come puoi vedere li trasforma o elimina i caratteri che sono rimasti:
BajaFicheroGoogleDriveYmeteEnCSV.sh
#!/bin/bash mysql -h SERVIDOR_MYSQL -uUSERNAME -pPASSWORD NOMBRE_BD -e "TAVOLO TRUNCATE llamadas_realizadas" mysql -h SERVIDOR_MYSQL -uUSERNAME -pPASSWORD NOMBRE_BD -e "TAVOLO TRUNCATE llamadas_recibidas" mysql -h SERVIDOR_MYSQL -uUSERNAME -pPASSWORD NOMBRE_BD -e "TAVOLO TRUNCATE llamadas_perdidas" python DescargaFicheroDesdeGoogleDrive.py llamadas_realizadas.ini awk '{GSUB(/,/,"",$2)}1' llamadas_realizadas.csv ≫ llamadas_realizadas.csv1 sed 's/"//g' llamadas_realizadas.csv1 ≫ llamadas_realizadas.csv mysql -h SERVIDOR_MYSQL -uUSERNAME -pPASSWORD NOMBRE_BD -e "LOAD DATA LOCAL INFILE 'llamadas_realizadas.csv' INTO TABLE llamadas_realizadas FIELDS TERMINATED BY ','" python DescargaFicheroDesdeGoogleDrive.py llamadas_recibidas.ini awk '{GSUB(/,/,"",$2)}1' llamadas_recibidas.csv ≫ llamadas_recibidas.csv1 sed 's/"//g' llamadas_recibidas.csv1 ≫ llamadas_recibidas.csv mysql -h SERVIDOR_MYSQL -uUSERNAME -pPASSWORD NOMBRE_BD -e "LOAD DATA LOCAL INFILE 'llamadas_recibidas.csv' INTO TABLE llamadas_recibidas FIELDS TERMINATED BY ','" python DescargaFicheroDesdeGoogleDrive.py llamadas_perdidas.ini sed 's/Missed,//g' llamadas_perdidas.csv ≫ llamadas_perdidas.csv1 sed 's/,,/,/g' llamadas_perdidas.csv1 ≫ llamadas_perdidas.csv2 awk '{GSUB(/,/,"",$2)}1' llamadas_perdidas.csv2 ≫ llamadas_perdidas.csv3 sed 's/"//g' llamadas_perdidas.csv3 ≫ llamadas_perdidas.csv mysql -h SERVIDOR_MYSQL -uUSERNAME -pPASSWORD NOMBRE_BD "LOAD DATA LOCAL INFILE 'llamadas_perdidas.csv' INTO TABLE llamadas_perdidas FIELDS TERMINATED BY ','"
Come puoi vedere, lo script Python ci chiede un file ini per ogni SpreadSheet che vogliamo scaricare, Uno per le chiamate effettuate, un altro per chi è stato ricevuto e un altro per chi è andato perduto. Questo sarebbe il formato di ogni file, Esempio di “llamadas_realizadas.ini”
[fileDownloadFromDrive] clientsecretkeypath = /PATH/api_gugel.json spreadsheetid = filename = llamadas_realizadas.csv filepath = /PATH/ mimetype = text/csv
Come possiamo vedere, da un lato abbiamo bisogno dell'ID del foglio Google, Questa parte è molto semplice, tutto quello che devi fare è aprire il foglio con un browser e l'URL ti mostrerà l'ID, esempio: “https://docs.google.com/spreadsheets/d/XXXXXXXXXXXXXXXXXXXXXXXX_XXXXXXXXXXXXXXXXX/edit#gid=0”. E la parte un po' più laboriosa è ottenere il file con le credenziali di accesso tramite l'API, Cos'è il file JSON. Poiché si tratta di un processo lungo e alcuni di voi lo sapranno già, Inoltre, lo abbiamo visto in qualche altro post, Penso che sia meglio lasciarvi in questa parte la documentazione ufficiale di Google, dove spiegherà che dobbiamo creare un progetto e dare accesso tramite OAuth 2.0, Controlla: https://developers.google.com/sheets/api/guides/authorizing. Una volta che abbiamo gli ID di ogni foglio e il JSON con le credenziali di accesso, puoi provare lo script sopra, Una volta convalidato, si tratta di metterlo in un cron ed eseguirlo con la periodicità che ci interessa.
Questo, come vedrete, è memorizzato in 3 diverse tabelle all'interno di un MySQL, Vi lascio il codice per creare una tabella di esempio, sono i 3 Tabelle uguali, tranne per il fatto che il llamadas_perdidas non ha una colonna Durata, e come vediamo, memorizza il quando la chiamata è stata, il numero di telefono, il nome di come lo abbiamo nella rubrica del nostro cellulare e la durata della chiamata:
CREA TABELLA 'llamadas_realizadas' ( 'quando' per CHATTARE(50) NULL COLLATE 'utf8mb4_general_ci', 'telefono' CHAR(50) NULL COLLATE 'utf8mb4_general_ci', 'nome' CHAR(50) NULL COLLATE 'utf8mb4_general_ci', 'durata' FLOAT NULL ) COLLATE='utf8mb4_general_ci' ENGINE=InnoDB;
Bene, Beh, con tutto questo pronto, potremmo già in Grafana fare i nostri disegni come ci piace, Come vediamo, Abbiamo campi di testo in cui vediamo il totale sul telefono, Cosa abbiamo chiamato, Come ci hanno chiamato, il numero totale di chiamate ricevute o effettuate. Attenzione che tutto questo verrà filtrato con il periodo di data che selezioniamo, Quindi possiamo vedere, ad esempio, i dati dell'ultima settimana, del mese… e rimarrai stupito dal tempo che passiamo appeso al dispositivo. E possiamo visualizzare i dati come vogliamo, Un grafico dei tempi parlati che quando passi il mouse ti dirà a chi, o una tabella del tempo totale accumulato, così come alcuni formaggi dove vedremo con chi passeremo più tempo al telefono.
Vi lascio alcuni esempi che ho in questa immagine e qui incollo i desideri che ho espresso, Certo, per prima cosa ricordati di creare il connettore da Grafana al tuo database MySQL, dal “Fonti dei dati”.
Totale al telefono:
SELECT somma(Durata) DA ( SELEZIONA SOMMA(Durata) come Durata DA llamadas_realizadas DOVE STR_TO_DATE(quando, '%M %d %Y at %l:%i%p') $__timeFilter() unione tutti SELECT SUM(Durata) come Durata DA llamadas_recibidas DOVE STR_TO_DATE(quando, '%M %d %Y at %l:%i%p') $__timeFilter() ) A
Totale chiamata:
SELEZIONA SOMMA(Durata) DA llamadas_realizadas DOVE STR_TO_DATE(quando, '%M %d %Y at %l:%i%p') $__timeFilter()
Totale ricevuti:
SELEZIONA SOMMA(Durata) DA llamadas_recibidas DOVE STR_TO_DATE(quando, '%M %d %Y at %l:%i%p') $__timeFilter()
Totale chiamate ricevute:
Conteggio SELECT(*) DA llamadas_recibidas DOVE STR_TO_DATE(quando, '%M %d %Y at %l:%i%p') $__timeFilter()
Totale chiamate effettuate:
Conteggio SELECT(*) DA llamadas_realizadas DOVE STR_TO_DATE(quando, '%M %d %Y at %l:%i%p') $__timeFilter( )
Grafico delle chiamate e loro durata (quello con i puntini)
Chiamate metriche effettuate:
SELECT duracion come valore, Nome come metrica, DATE_SUB(TIMESTAMP(str_to_date(quando, '%M %d %Y at %l:%i%p')), INTERVALLO 2 ORA) COME time_sec DA llamadas_realizadas DOVE STR_TO_DATE(quando, '%M %d %Y at %l:%i%p') $__timeFilter( ) ORDINA PER time_sec ASC;
Metrica delle chiamate ricevute:
SELECT duracion come valore, Nome come metrica, DATE_SUB(TIMESTAMP(str_to_date(quando, '%M %d %Y at %l:%i%p')), INTERVALLO 2 ORA) COME time_sec DA llamadas_recibidas DOVE STR_TO_DATE(quando, '%M %d %Y at %l:%i%p') $__timeFilter( ) ORDINA PER time_sec ASC;
Metrico Chiamate effettuate:
SELEZIONARE 0 come valore, Nome come metrica, DATE_SUB(Timestamp(str_to_date(quando, '%M %d %Y at %l:%i%p')), INTERVALLO 2 ORA) COME time_sec DA llamadas_perdidas DOVE STR_TO_DATE(quando, '%M %d %Y at %l:%i%p') $__timeFilter( ) ORDINA PER time_sec ASC;
Grafico della durata delle chiamate in entrata e in uscita
Metrica delle chiamate effettuate:
Selezionare (@sum := @sum + Durata) come valore, "Fatto" come metrico, DATE_SUB(Timestamp(str_to_date(quando, '%M %d %Y at %l:%i%p')), INTERVALLO 2 ORA) come time_sec DA llamadas_realizadas incrociato (Seleziona @sum := 0) parametri DOVE STR_TO_DATE(quando, '%M %d %Y at %l:%i%p') $__timeFilter( );
Metrica delle chiamate ricevute:
Selezionare (@sum := @sum + Durata) come valore, "Ricevuto" come metrico, DATE_SUB(Timestamp(str_to_date(quando, '%M %d %Y at %l:%i%p')), INTERVALLO 2 ORA) come time_sec DA llamadas_recibidas incrociato (Seleziona @sum := 0 ) parametri DOVE STR_TO_DATE(quando, '%M %d %Y at %l:%i%p') $__timeFilter( );
Quesito de Llamadas ricevuto:
SELECT duracion come valore, Nome come metrica, DATE_SUB(Timestamp(str_to_date(quando, '%M %d %Y at %l:%i%p')), INTERVALLO 2 ORA) COME time_sec DA llamadas_recibidas DOVE STR_TO_DATE(quando, '%M %d %Y at %l:%i%p') $__timeFilter( ) ORDINA PER time_sec ASC;
Quesito de llamadas hecho:
SELECT duracion come valore, Nome come metrica, DATE_SUB(Timestamp(str_to_date(quando, '%M %d %Y at %l:%i%p')), INTERVALLO 2 ORA) COME time_sec DA llamadas_realizadas DOVE STR_TO_DATE(quando, '%M %d %Y at %l:%i%p') $__timeFilter( )ORDINA PER time_sec ASC;
Spero che tu sia interessato e che possa esserti utile, Non solo questo modo di farlo, se non per altre idee e vuoi sfruttare quei dati, Ti farò presto un altro esempio, in questo caso di e-mail, È anche interessante sapere quante email riceviamo o inviamo… Cosa ho detto, come al solito, Grazie per il tuo tempo!