I managed to confirm that my perceived changes in connection quality were ACTUAL changes in connection quality. I never took the time to do anything better with it though, but it does show that My provider seems to have done SOMETHING, as the speed floor has moved up, and significant events (sometimes as slow as dialup) became significantly rarer. It's also fun because it allows you to get a rough idea of how over provisioned the line is, as you can see day/night cycles.
My cable modem provides a status page with info about signal to noise ratio and other stats. I planned on adding more details to the script by scrapping from that page, but it requires a login first and I've never taken the time to learn how to manage that kind of state, as I do most scripty/webby things with raw requests from python's urllib.request module, like a plebian.
I used to do the same with my DSL connection. I noticed that the connection would drop or degrade when it rained sometimes. I started scraping the modem's status page with curl (the status page didn't require logging in), and graphing the SNR and data rates with gnuplot. Then I added temperature and precipitation data scraped from Weather Underground with a Python script to a separate CSV file.
I did confirm that the SNR varied with temperature, with both daily and long-term cycles, assuming from thermal expansion/contraction in the lines and connections. I also observed dropouts when it rained.
The strangest thing was that there was also a hard 12-hour cycle: every morning and evening, at the same times, the SNR would suddenly drop (in the morning) and go up (in the evening) by several dB. I never figured out what it was, but I always guessed it was some equipment turning on or off that caused interference on the line.
One of the coolest parts actually was simply using GNU `date` to parse dates in natural language, so I could run something like `plotmodem 2 months ago to 1 month ago` to graph the data from the previous month, or `plotmodem 2 weeks` to see the last 2 weeks of data. I used `date` to convert natural-language dates to a standard format which I then parsed out of the CSV files with grep.
Thanks for the links! The harddrive in my server died recently so I haven't had a chance to get it up and running again yet, but I will definitely update the script once I do!
My cable modem provides a status page with info about signal to noise ratio and other stats. I planned on adding more details to the script by scrapping from that page, but it requires a login first and I've never taken the time to learn how to manage that kind of state, as I do most scripty/webby things with raw requests from python's urllib.request module, like a plebian.