インターネット速度計測結果をスプレッドシートに自動記録する

公開日時
更新日時

昨日の記事で、speedtest-cliを使ってインターネット速度計測を定期実行するようにした。

この時はcsvをログファイルに記録するようにしていたが、都度サーバに入ってログファイルを確認するのも手間なのでGoogleSpreadsheetに記録できるようにする。

認証キーを配置するのも手間だったので、下記記事を参考にGASをWebアプリとして設定し、csvを受け取って書き込むようにした。

最終的なGASのコードは以下になった。

function doGet(e) {
  const sheet = SpreadsheetApp.getActiveSheet();

  const csv = e.parameter.csv;
  if (csv) {
    sheet.appendRow(csv.split(','));
    const result = JSON.stringify(csv);
    return ContentService.createTextOutput(result);
  }

  return ContentService.createTextOutput('{}');
}

RaspberryPi上に speedtest.sh を作成して以下を記述。

#!/bin/bash

function urlencode {
  echo "$1" | nkf -WwMQ | sed 's/=$//g' | tr = % | tr -d '\n'
}

csv=`/usr/local/bin/speedtest-cli --csv`
encoded_csv=`urlencode "${csv}"`
/ust/bin/curl -L -s -o /dev/null https://script.google.com/macros/s/XXXX/exec?csv=${encoded_csv}

実行権限を付与して、cronで定期実行するように設定。

chmod +x speedtest.sh

crontab -e

0 * * * * /home/pi/speedtest/speedtest.sh

これでスプレッドシートに自動記録できるようになった。

参考


Related #raspberry pi

ngrokの代わりにCloudflare Tunnelを使う

botやwebhookを利用するサービスの開発が捗る

Dockerのデータ保存場所を変更する

/etc/docker/daemon.jsonに追記

Alexaにゲーミングマシンと周辺環境を終了してもらう

「Alexa Steamを終了して」ができるようになった

Alexaにゲーミングマシンと周辺環境を起動してもらう

PC起動、TV起動、サウンドバー起動がまとめてできるようになった

docker-compose build時に「no Space Left on Device」が発生

1年前にも同じエラーにハマってた