PingMonitor - Monitor your ping times using LedBorg
We recommend using the new driver free based scripts for LedBorg.
The new driver free examples can be found here, the installation can be found here.
Ever wanted to check ping times using your Raspberry Pi, maybe check if a game server is good, or simply check your internet connection?
Well now you can some ping times using your LedBorg with PingMonitor.py, it pings a server and displays the ping against a target result visually:
to 22% |
to 44% |
to 67% |
to 89% |
to 110% target :) |
to 132% |
to 155% |
to 177% |
or more |
or failed |
There are some settings you may wish to change:
pingAddress
, line 17
Sets the server address (name or IP) to pingtargetPing
, line 18
The target ping time, in millisecondsdelayInterval
, line 19
The time to wait between pings, in secondscolourTimeout
, line 16
The colour to use if a ping times out or has an errorcolourGrade
, line 15
The colour gradient to use, from 0% to 200% oftargetPing
Save the text file on your pi as PingMonitor.py
Make the script executable using
chmod +x PingMonitor.py
and run using
./PingMonitor.py
#!/usr/bin/env python # coding: Latin-1 # Load the libraries we need import time import os # Make a function to set the LedBorg colour def SetColour(colour): LedBorg=open('/dev/ledborg','w') LedBorg.write(colour) LedBorg.close() # User settings colourGrade = ['002', '012', '022', '021', '020', '120', '220', '210', '200'] colourTimeout = '202' # Colour to use for ping failures pingAddress = 'www.google.com' # Address to ping targetPing = 30 # Target ping time in milliseconds delayInterval = 1.0 # Time to wait between pings, in seconds # Main code SetColour('000') try: while True: # Perform the ping using the system ping command (one ping only) rawPingFile = os.popen('ping -c 1 %s' % (pingAddress)) rawPingData = rawPingFile.readlines() rawPingFile.close() # Extract the ping time if len(rawPingData) < 2: # Failed to find a DNS resolution or route failed = True latency = 0 else: index = rawPingData[1].find('time=') if index == -1: # Ping failed or timed-out failed = True latency = 0 else: # We have a ping time, isolate it and convert to a number failed = False latency = rawPingData[1][index + 5:] latency = latency[:latency.find(' ')] latency = float(latency) # Work out the colour to use if failed: colour = colourTimeout else: colour = latency / (targetPing * 2.0) colour = colour * len(colourGrade) colour = int(colour) if colour >= len(colourGrade): colour = len(colourGrade) - 1 colour = colourGrade[colour] # Display the colour SetColour(colour) # Wait for the delay interval time.sleep(delayInterval) except KeyboardInterrupt: # CTRL+C exit SetColour('000')