
Grafanaとの電話で話したことを視覚化する
まぁ, この投稿では、常に異なるものが表示され、Grafanaのインストールに簡単に追加できるものが表示されます, そして、それは私たちの電話の使用データを悪用することに他なりません. 私は長い間それを使用しており、あなたが興味を持っている場合に備えてそれを共有したかったのです, 携帯電話でどれだけ話しているのか気になりました, 誰と, 彼らが私を呼び、私が呼んだもの, スケジュールで見る, 人… ヌガー付き!
モバイルにインストールされたアプリを通じて行います, 神話上のIFTTTと同様に、不在着信の記録をGoogleスプレッドシートスプレッドシートに保存します, 私たちが受ける電話と発信する電話, 連絡先の名前は同じシートに保存されます, お客様の電話番号と各通話時間, さらに、. Grafanaの新しいバージョンが追加されました (ザ 7) Googleスプレッドシートのシートを直接参照できます, しかし、今回は別の方法をお見せします, 長い間使用していて、まだこれを開発🙂していないので、, Linux マシン上の CRON でのスケジュールされたタスクの使用 (グラファナ自身かもしれない), スプレッドシートをダウンロードして、MySQLデータベースにダンプします. そして、Grafanaで視覚化するのはそのDBです, ダッシュボードを自分の好みに合わせてデザインできること!
まず、言われたことから始めましょう, 私たちのモバイルでは、IFTTTをインストールします, そして、3つの自動化を追加します:
- Androidスマートフォンにかかった通話をGoogleスプレッドシートに自動的に記録します
- Androidスマートフォンで発信した通話をGoogleスプレッドシートに自動的に記録します
- 通話履歴, 不在着信
これらすべてのレコードを異なるスプレッドシートに保存するように、それぞれを設定します. このアプリがバックグラウンドで引き続き実行され、モバイルバッテリーがアプリを制限しないように、携帯電話で示すことを忘れないでください, そのため、常にリアルタイムで実行され、データに保存されます.
まぁ, まず、これまで使用してきたスクリプトから始めます, まず、GoogleドライブからファイルをダウンロードできるようにするこのPythonスクリプトが必要になります (DescargaFicheroDesdeGoogleDrive.py) そして、bashでスクリプト自体を作成するだけで十分です。, (私) 通話ログを保存するMySQLテーブルをフラッシュします, (イ) 各スプレッドシートはダウンロードされ、CSV でローカルに保存されます, そして、ご覧のとおり、それらは変換されるか、残っている文字が削除されます:
BajaFicheroGoogleDriveYmeteEnCSV.sh
#!/bin/bash mysql -h SERVIDOR_MYSQL -uUSERNAME -pPASSWORD NOMBRE_BD -e "テーブルllamadas_realizadasをトランケート" mysql -h SERVIDOR_MYSQL -uUSERNAME -pPASSWORD NOMBRE_BD -e "テーブルllamadas_recibidasのトランケート" mysql -h SERVIDOR_MYSQL -uUSERNAME -pPASSWORD NOMBRE_BD -e "テーブルllamadas_perdidasをトランケート" python DescargaFicheroDesdeGoogleDrive.py llamadas_realizadas.ini awk '{GSUBの(/,/,"",$2)}1' llamadas_realizadas.csv &アンプ;GTの; llamadas_realizadas.csv1 sed 's/"//g' llamadas_realizadas.csv1 &アンプ;GTの; 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 &アンプ;GTの; llamadas_recibidas.csv1 sed 's/"//g' llamadas_recibidas.csv1 &アンプ;GTの; 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 &アンプ;GTの; llamadas_perdidas.csv1 sed 's/,,/,/g' llamadas_perdidas.csv1 &アンプ;GTの; llamadas_perdidas.csv2 awk '{GSUBの(/,/,"",$2)}1' llamadas_perdidas.csv2 &アンプ;GTの; llamadas_perdidas.csv3 sed 's/"//g' llamadas_perdidas.csv3 &アンプ;GTの; 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 ','"
ご覧のとおり、Python スクリプトは、ダウンロードする各 SpreadSheet の ini ファイルを要求します, 1 つは通話用です, もう一つは受け取った人のために、もう一つは失われた人のために. これは、各ファイルの形式になります, の例 “llamadas_realizadas.ini”
[ファイルダウンロードフロムドライブ] clientsecretkeypath = /PATH/api_gugel.json spreadsheetid = filename = llamadas_realizadas.csv filepath = /PATH/ mimetype = text/csv
ご覧のとおり, 一方では、GoogleスプレッドシートIDが必要です, その部分は非常に簡単です, ブラウザでシートを開くだけで、URLにIDが表示されます, 例: “httpsの://docs.google.com/spreadsheets/d/XXXXXXXXXXXXXXXXXXXXXXXX_XXXXXXXXXXXXXXXXX/edit#gid=0”. そして、少し面倒な部分は、APIを介してログイン資格情報を含むファイルを取得することです, JSONファイルとは何ですか. それは長いプロセスであり、あなたの何人かはすでに知っているでしょう, さらに、他の投稿でも見てきました, この部分では、Googleの公式ドキュメントに任せるのが最善だと思います, 彼は、プロジェクトを作成し、OAuthを介してアクセスを提供する必要があることを説明します 2.0, チェックアウト: https://developers.google.com/sheets/api/guides/authorizing. 各シートのIDとログイン資格情報を含むJSONを取得したら、上記のスクリプトを試すことができます, 検証されたら、それをcronに入れて、私たちが興味を持つ周期性で実行するだけです.
これは、ご覧のとおり、 3 MySQL 内の異なるテーブル, サンプルテーブルを作成するためのコードはお任せします, は 3 等価テーブル, ただし、llamadas_perdidasには Duration 列がありません, そして、私たちが見るように, 呼び出しが, 電話番号, 携帯電話のアドレス帳に記載されている名前と通話時間:
テーブル 'llamadas_realizadas' の作成 ( 「いつ」をチャットする(50) NULL COLLATE 'utf8mb4_general_ci', 'phone' CHAR (英語)(50) NULL COLLATE 'utf8mb4_general_ci', 'name' CHAR (名前)(50) NULL COLLATE 'utf8mb4_general_ci', 'duration' FLOAT NULL ) COLLATE='utf8mb4_general_ci' ENGINE=InnoDB;
まぁ, さて、これらすべての準備ができました, 私たちはすでにGrafanaで好きなように絵を描くことができました, 私たちの見方, 電話で合計を確認するテキストフィールドがあります, 私たちが呼んでいるもの, 彼らが私たちを呼んだもの, 受信または発信された通話の合計数. これらすべてが選択した日付期間でフィルタリングされることに注意してください, したがって、たとえば、先週のデータを見ることができます, 今月の… そして、私たちがデバイスにぶら下がっている時間には驚かれることでしょう. また、データを好きなように視覚化できます, マウスをホバーすると誰に話しかけられるかのグラフ, または合計累積時間のテーブル, また、電話で誰と最も多くの時間を費やすかを確認するチーズもあります.
私はあなたに私がこの画像に持っているいくつかの例を残します、そしてここに私が作った願いを貼り付けます, もちろんです, まず、Grafana から MySQL データベースへのコネクタを作成することを忘れないでください, から “データソース”.
電話での合計:
SELECT 合計(期間) 差出人 ( 合計を選択(期間) as Duration FROM llamadas_realizadas WHERE STR_TO_DATE(いつ, '%M %d %Y at %l:%i%p') $__timeFilter() union all SELECT SUM (英語)(期間) as Duration FROM llamadas_recibidas WHERE STR_TO_DATE(いつ, '%M %d %Y at %l:%i%p') $__timeFilter() ) 宛先
合計通話:
合計を選択(期間) llamadas_realizadasから STR_TO_DATE(いつ, '%M %d %Y at %l:%i%p') $__timeFilter()
受信合計:
合計を選択(期間) llamadas_recibidasから STR_TO_DATE(いつ, '%M %d %Y at %l:%i%p') $__timeFilter()
受信した通話の合計:
SELECT カウント(*) llamadas_recibidasから STR_TO_DATE(いつ, '%M %d %Y at %l:%i%p') $__timeFilter()
発信された通話の合計:
SELECT カウント(*) llamadas_realizadasから STR_TO_DATE(いつ, '%M %d %Y at %l:%i%p') $__timeFilter( )
通話とその所要時間のグラフ (ドットのあるもの)
メトリクス呼び出し:
SELECT duracion as value (デュラシオンを値として選択), メトリックとしての名前, DATE_SUB(タイムスタンプ(str_to_date(いつ, '%M %d %Y at %l:%i%p')), 間 2 時) llamadas_realizadasからtime_secとして STR_TO_DATE(いつ, '%M %d %Y at %l:%i%p') $__timeFilter( ) time_sec ASCによる注文;
受信した通話メトリック:
SELECT duracion as value (デュラシオンを値として選択), メトリックとしての名前, DATE_SUB(タイムスタンプ(str_to_date(いつ, '%M %d %Y at %l:%i%p')), 間 2 時) llamadas_recibidasからtime_secとして STR_TO_DATE(いつ, '%M %d %Y at %l:%i%p') $__timeFilter( ) time_sec ASCによる注文;
メトリック 発信された通話:
選ぶ 0 値として, メトリックとしての名前, DATE_SUB(タイムスタンプ(str_to_date(いつ, '%M %d %Y at %l:%i%p')), 間 2 時) llamadas_perdidasからtime_secとして STR_TO_DATE(いつ, '%M %d %Y at %l:%i%p') $__timeFilter( ) time_sec ASCによる注文;
着信通話と発信通話の所要時間のグラフ
発信された通話のメトリクス:
選ぶ (@sum := @sum + 期間) 値として, "製" メトリックとして, DATE_SUB(タイムスタンプ(str_to_date(いつ, '%M %d %Y at %l:%i%p')), 間 2 時) as time_sec FROM llamadas_realizadas クロス結合 (@sumを選択 := 0) params WHERE STR_TO_DATE(いつ, '%M %d %Y at %l:%i%p') $__timeFilter( );
受信した通話メトリック:
選ぶ (@sum := @sum + 期間) 値として, "受け" メトリックとして, DATE_SUB(タイムスタンプ(str_to_date(いつ, '%M %d %Y at %l:%i%p')), 間 2 時) llamadas_recibidasクロス結合からtime_secとして (@sumを選択 := 0 ) params WHERE STR_TO_DATE(いつ, '%M %d %Y at %l:%i%p') $__timeFilter( );
ケシト・デ・リャマダスが受け取られました:
SELECT duracion as value (デュラシオンを値として選択), メトリックとしての名前, DATE_SUB(タイムスタンプ(str_to_date(いつ, '%M %d %Y at %l:%i%p')), 間 2 時) llamadas_recibidasからtime_secとして STR_TO_DATE(いつ, '%M %d %Y at %l:%i%p') $__timeFilter( ) time_sec ASCによる注文;
Quesito de llamadas hecho:
SELECT duracion as value (デュラシオンを値として選択), メトリックとしての名前, DATE_SUB(タイムスタンプ(str_to_date(いつ, '%M %d %Y at %l:%i%p')), 間 2 時) llamadas_realizadasからtime_secとして STR_TO_DATE(いつ, '%M %d %Y at %l:%i%p') $__timeFilter( )time_sec ASCによる注文;
私はあなたがそれに興味を持って、それがあなたにとって役立つことができることを願っています, この方法だけではありません, 他のアイデアではなく、そのデータを活用したい場合, すぐに別の例を挙げましょう, この場合、電子メールの場合, また、メールを送受信する回数を知ることも興味深いです… 私が言ったこと, いつも通り, お時間をいただき、ありがとうございました!