While following Alasdair's post, I ran into a few issues and felt that I should make a post that explains more of what needs to be completed as far as commands and setup as some are implied but not directly listed. This post uses mostly his post, so please make sure to give him thanks if you like it.
I will be running under the assumption that you already know how to SSH into your Raspberry Pi, but if you don't there is a nice YouTube video here on how to connect over PuTTY. I will also be using the assumption that you are logged in as the user pi, so adjust the user directory as needed if not logged in as pi.
I will be running under the assumption that you already know how to SSH into your Raspberry Pi, but if you don't there is a nice YouTube video here on how to connect over PuTTY. I will also be using the assumption that you are logged in as the user pi, so adjust the user directory as needed if not logged in as pi.
Here is what will be needed to complete this project:
- Raspberry Pi (I used an older Raspberry Pi 2 Model B)
- IFTTT account
- Google account (either a Gmail or Google for Work account)
First things first, lets make sure that the Raspberry Pi is up to date. This can be done one of two ways:
- Scripted, using updatepi.sh from Raspberry Pi - Update Raspberry Pi Script
- Manually run update and upgrade options:
sudo apt-get updateOnce you have made sure that your Raspberry Pi is up-to-date, lets get to setting it up for our speedtest tracking. First, we'll make sure that python-pip and speedtest-cli:
sudo apt-get upgrade
sudo apt-get install python-pipNow, make sure speedtest-cli works by running it:
sudo pip install speedtest-cli
speedtest-cliYou should see a result similar to this (I have modfied some information for privacy)
Retrieving speedtest.net configuration...
Retrieving speedtest.net server list...
Testing from Acme ISP (xxx.xxx.xxx.xxx)...
Selecting best server based on latency...
Hosted by Acme Server (Earth) [103.82 km]: 41.753 ms
Testing download speed........................................
Download: 45.68 Mbit/s
Testing upload speed..................................................
Upload: 5.65 Mbit/s
git clone https://github.com/HenrikBengtsson/speedtest-cli-extras.gitNow, we will test the new script to see its output:
cd speedtest-cli-extras/binPlease note that there will be a period of time between when you execute speedtest-csv and when it provides an output similar to below as it is running the speedtest in the background.
./speedtest-csv
2016-02-22 00:59:52;2016-02-22 01:01:51;Acme ISP;xxx.xxx.xxx.xxx;Acme Server (Earth);103.82 km;43.183 ms;22.98 Mbit/s;2.26 Mbit/s;http://www.speedtest.net/result/xxxxxxxxxx.pngWe could stop here now that we have a delimited output, but that leaves a few issues:
- If you want to use the delimited log file, you will need to provide SSH access to the device from outside your local netwrok to check it on the go, OR
- You will need to setup a program to take the delimited file and provide other abilities like graphs
- Neither Alasdair nor I cover that.
So back to it. This next section will get IFTTT setup to allow our speedtest data to be put into a Google Sheet.
First, connect with the Google Drive IFTTT channel. Make sure that you allow the Google Drive channel to have access to the account that you want your results to be saved to. Now, follow the Maker IFTTT channel. With that complete, we will then need to add the Log Speedtest results to Spreadsheet recipe to our account.
Make sure that you set the name the recipe "speedtest" before you click the Add button
Now that the online part is setup, lets finish with the local parts. We will now get an IFTTT version of the speedtest-csv script:
We will need to modify to include your Maker Secret Key, and then make sure that the script can be be executed. Open speedtest-ifttt.sh in nano:
Now that the online part is setup, lets finish with the local parts. We will now get an IFTTT version of the speedtest-csv script:
wget https://gist.githubusercontent.com/aallan/bafc70a347f3b9526d30/raw/b9760af4b29fad0335c20a8a24607a52bba0cb6f/speedtest-ifttt.shThis will place a copy of speedtest-ifttt.sh in /home/pi/speedtest-cli-extras/bin.
We will need to modify to include your Maker Secret Key, and then make sure that the script can be be executed. Open speedtest-ifttt.sh in nano:
nano speedtest-ifttt.shScroll to the bottom of the file, and change the SECRET_KEY text to your key from the Maker IFTTT channel page
Once complete, save (Ctrl+O) and exit (Ctrl+X). Now, we will make sure that the script is executable:
sudo chmod +x speedtest-ifttt.sh
Lets test this to make sure that it works:
./speedtest-ifttt.sh
Once complete, you should see the following message:
Congratulations! You've fired the speedtest eventNow check Google Drive, you should have a new Speedtest sheet.
When you open it, you should have a new row with the results:
February 21, 2016 at 02:16PM | 41.278 | 45.47 | 5.72 |
Now that the are able to get our results saved, lets get a a cron script make and scheduled. For the sake of logging, we will create another script to run speedtest-ifttt.sh with some extra local outputs. First, create speedtest-cron.sh:
nano speedtest-cron.sh
Paste the following:
#!/bin/bash
date >> /home/pi/speedtest.log
/home/pi/speedtest-cli-extras/bin/speedtest-ifttt.sh >> /home/pi/speedtest.log
echo "" >> /home/pi/speedtest.log
This will create a quick access log that can be checked locally from first sign on with less speedtest.log, and will append it after each running. Before we test it, lets make sure that the script is executable:
sudo chmod +x speedtest-cron.shOk, now let's test it out:
./speedtest-cron.shYou should see a new line in your Speedtest Google Sheet, and when you run less speedtest.log, you should see a result like this:
Sun 21 Feb 21:29:16 UTC 2016
Congratulations! You've fired the speedtest event
We will need to schedule this to run at the top of the hour. To do this, we must open and modify the crontab file. To open it, type:
crontab -eScroll to the bottom of the file, then paste the following:
# Run Speedtest script "speedtest-cron.sh"
0 * * * * /home/pi/speedtest-cli-extras/bin/speedtest-cron.sh