Adjust speedtesting, add minimum speed
							parent
							
								
									5def4bad74
								
							
						
					
					
						commit
						e3b07d0947
					
				| 
						 | 
				
			
			@ -134,3 +134,5 @@ data/database.db
 | 
			
		|||
secrets.yaml
 | 
			
		||||
test.py
 | 
			
		||||
test.png
 | 
			
		||||
data/database.db-shm
 | 
			
		||||
data/database.db-wal
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,4 +6,13 @@ ros_ip: 192.168.88.1
 | 
			
		|||
ros_queues:
 | 
			
		||||
  - WAN
 | 
			
		||||
ros_du_invert: False
 | 
			
		||||
ros_fasttrack_comment: "defconf: fasttrack"
 | 
			
		||||
ros_fasttrack_comment: "defconf: fasttrack"
 | 
			
		||||
# Minimum speed which not to cross, if speed is lower than this it will set this speed
 | 
			
		||||
ros_minimum_speed: 300000
 | 
			
		||||
# Speed at which to leave fasttrack on. Use if your ROS device's CPU can't handle max speed you get, for example LHG LTE
 | 
			
		||||
# starts to show high CPU usage at close to 20mbit.
 | 
			
		||||
# Not implemented yet
 | 
			
		||||
ros_maximum_speed: 15000000 # 15 mbit
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Conversion rate 1 mbit : 1000000 bits
 | 
			
		||||
| 
						 | 
				
			
			@ -111,6 +111,36 @@ def ros_dynamic_speed(upload, download):
 | 
			
		|||
    connection.disconnect()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def speedtest():
 | 
			
		||||
    import speedtest
 | 
			
		||||
 | 
			
		||||
    servers = []
 | 
			
		||||
    threads = None
 | 
			
		||||
 | 
			
		||||
    for i in range(0, 3):
 | 
			
		||||
        try:
 | 
			
		||||
            log.debug("Initializing speedtest...")
 | 
			
		||||
            s = speedtest.Speedtest()
 | 
			
		||||
 | 
			
		||||
            log.debug(f"Running test...")
 | 
			
		||||
            s.get_servers(servers)
 | 
			
		||||
            s.get_best_server()
 | 
			
		||||
            s.download(threads=threads)
 | 
			
		||||
            s.upload(threads=threads, pre_allocate=False)
 | 
			
		||||
 | 
			
		||||
            results_dict = s.results.dict()
 | 
			
		||||
 | 
			
		||||
            if results_dict['download'] >= config['ros_minimum_speed']:
 | 
			
		||||
                download = round(results_dict['download'] / 1000000, 2)
 | 
			
		||||
                upload = round(results_dict['upload'] / 1000000, 2)
 | 
			
		||||
                break
 | 
			
		||||
            time.sleep(10)
 | 
			
		||||
        except:
 | 
			
		||||
            log.error(f"Test failed, try {i + 1}/3", exc_info=True)
 | 
			
		||||
 | 
			
		||||
    log.debug(f"{download}mbps, {upload}mbps")
 | 
			
		||||
    return download, upload, results_dict
 | 
			
		||||
 | 
			
		||||
if __name__ == "__main__":
 | 
			
		||||
    '''
 | 
			
		||||
    This script will run a few speed tests, calculate average upload and download speeds and record them into database.
 | 
			
		||||
| 
						 | 
				
			
			@ -127,41 +157,21 @@ if __name__ == "__main__":
 | 
			
		|||
            ros_fastrack_enable(True)
 | 
			
		||||
            time.sleep(5)
 | 
			
		||||
 | 
			
		||||
        import speedtest
 | 
			
		||||
 | 
			
		||||
        servers = []
 | 
			
		||||
        threads = None
 | 
			
		||||
 | 
			
		||||
        for i in range(0, 3):
 | 
			
		||||
            try:
 | 
			
		||||
                log.debug("Initializing speedtest...")
 | 
			
		||||
                s = speedtest.Speedtest()
 | 
			
		||||
 | 
			
		||||
                log.debug(f"Running test...")
 | 
			
		||||
                s.get_servers(servers)
 | 
			
		||||
                s.get_best_server()
 | 
			
		||||
                s.download(threads=threads)
 | 
			
		||||
                s.upload(threads=threads, pre_allocate=False)
 | 
			
		||||
 | 
			
		||||
                results_dict = s.results.dict()
 | 
			
		||||
                download = round(results_dict['download'] / 1000000, 2)
 | 
			
		||||
                upload = round(results_dict['upload'] / 1000000, 2)
 | 
			
		||||
                # download = uniform(0,2)
 | 
			
		||||
                # upload = uniform(0,2)
 | 
			
		||||
                break
 | 
			
		||||
            except:
 | 
			
		||||
                log.error(f"Test failed, try {i + 1}/3", exc_info=True)
 | 
			
		||||
 | 
			
		||||
        log.debug(f"{download}mbps, {upload}mbps")
 | 
			
		||||
        download, upload, results_dict = speedtest()
 | 
			
		||||
 | 
			
		||||
        entry = Entry()
 | 
			
		||||
        entry.upload = upload
 | 
			
		||||
        entry.download = download
 | 
			
		||||
        entry.save()
 | 
			
		||||
 | 
			
		||||
        ros_upload = results_dict['upload']
 | 
			
		||||
        ros_download = results_dict['download']
 | 
			
		||||
 | 
			
		||||
        if ros_download < config['ros_minimum_speed']:
 | 
			
		||||
            ros_download = config['ros_minimum_speed']
 | 
			
		||||
 | 
			
		||||
        if config["ros_dynamic_speed"]:
 | 
			
		||||
            ros_dynamic_speed(results_dict['upload'], results_dict['download'])
 | 
			
		||||
 | 
			
		||||
            ros_fastrack_enable(False)
 | 
			
		||||
 | 
			
		||||
        dates, downloads, uploads = gather_data()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue