Like the tagline implies, I've been exceedingly frustrated at my home internet. Random spot checks sometime show good speeds, other times they show terrible speeds. I've even had issues where service drops out for over a half hour at a time. I've had an OG Raspberry Pi for years, but I could never come up with a use for it. Until now.

What it does

Network Pi will automatically run a speed test every minute, gathering the time, download speed, and upload speed. The results are viewable on a graph on a webpage that is hosted on a internal web server. There is a graph showing the speeds in Mbps, a graph showing the speeds in Kbps, and a graph showing the speeds in bps. The graphs will highlight the points where both upload and download speeds were zero for at least five minutes, and the graphs are able to be zoomed.

How I built it

speedtest-cli is a tool that allows users to run a speed test from the command prompt. The results were piped into a JSON file, which is then parsed and reformatted into a new JSON file, which contains the date and time in Eastern time, and the download upload speeds in bits/sec, kilobits/sec, and megabits/sec. This is then imported into MongoDB, and CSV files containing the time and speeds, in varying combinations, are exported. This is sent to the web server, where it is available to be graphed on the webpage.

Challenges I ran into

Learning to use MongoDB and the charting library, Dygraphs. Learning how to manually install updated MongoDB and Python3.6 on the Pi.

Accomplishments that I'm proud of

It works!

What I learned

Basics of MongoDB, better familiarity with Linux and HTML/CSS/JS

What's next for Network Pi

More granular controls

Share this project: