Add more graphs
							parent
							
								
									e05f7ff029
								
							
						
					
					
						commit
						b5fdd4da10
					
				| 
						 | 
				
			
			@ -141,3 +141,4 @@ speeds.txt
 | 
			
		|||
test3.py
 | 
			
		||||
test4.py
 | 
			
		||||
speeds.txt
 | 
			
		||||
*.png
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,5 +1,5 @@
 | 
			
		|||
database_migrate: False
 | 
			
		||||
output_image_path: /var/www/downloads/speedgraph.png
 | 
			
		||||
output_image_path: /var/www/downloads/speedgraph_{}.png
 | 
			
		||||
output_txt_path: /var/www/downloads/speeds.txt
 | 
			
		||||
ros_dynamic_speed: True
 | 
			
		||||
ros_ip: 192.168.88.1
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,4 +1,3 @@
 | 
			
		|||
Date:			Down;			Up;
 | 
			
		||||
2020-06-24 02:37:11.363969:			6.29 Mbps;			4.16 Mbps
 | 
			
		||||
2020-06-24 02:38:12.903694:			5.52 Mbps;			3.8 Mbps
 | 
			
		||||
2020-06-24 02:39:31.212599:			12.07 Mbps;			5.08 Mbps
 | 
			
		||||
2020-06-26 18:16:13.262120:			None Mbps;			None Mbps
 | 
			
		||||
2020-06-28 16:10:56.596781:			0.88 Mbps;			1.09 Mbps
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -34,20 +34,89 @@ def gather_data():
 | 
			
		|||
        dates.append(entry.date_created)
 | 
			
		||||
 | 
			
		||||
    return dates, downloads, uploads
 | 
			
		||||
import matplotlib
 | 
			
		||||
import matplotlib.pyplot as plt
 | 
			
		||||
 | 
			
		||||
@catch_errors
 | 
			
		||||
def generate_plot_image(dates, downloads, uploads, name="speed", description="Speed Graph"):
 | 
			
		||||
    log.debug("Genering image output for {}...".format(name))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    dates = matplotlib.dates.date2num(dates)
 | 
			
		||||
    fig = plt.figure(figsize=(len(dates / 10), 3))
 | 
			
		||||
    plt.plot_date(dates, downloads, fmt="b-")
 | 
			
		||||
    plt.ylabel(description + " (Mbps)")
 | 
			
		||||
    plt.tight_layout()
 | 
			
		||||
    plt.savefig(read_config()['output_image_path'].format(name))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@catch_errors
 | 
			
		||||
def generate_plot_image(dates, downloads, uploads):
 | 
			
		||||
    log.debug("Genering image output...")
 | 
			
		||||
    import matplotlib
 | 
			
		||||
    import matplotlib.pyplot as plt
 | 
			
		||||
def generate_diff(dates, downloads, uploads):
 | 
			
		||||
    dl = []
 | 
			
		||||
    up = []
 | 
			
		||||
    for i, date in enumerate(dates):
 | 
			
		||||
        curr = downloads[i] if downloads[i] else 0
 | 
			
		||||
        prev = downloads[i-1] if downloads[i-1] and i > 0 else 0
 | 
			
		||||
        dl.append(curr - prev)
 | 
			
		||||
        curr = downloads[i] if downloads[i] else 0
 | 
			
		||||
        prev = downloads[i - 1] if downloads[i - 1] and i > 0 else 0
 | 
			
		||||
        up.append(curr - prev)
 | 
			
		||||
    generate_plot_image(dates, dl, up, "diff", "Difference Graph")
 | 
			
		||||
 | 
			
		||||
    dates = matplotlib.dates.date2num(dates)
 | 
			
		||||
    fig = plt.figure(figsize=(12, 3))
 | 
			
		||||
    plt.plot_date(dates, downloads, fmt="b-")
 | 
			
		||||
    plt.ylabel('Download Speed Mbps')
 | 
			
		||||
 | 
			
		||||
def generate_updown_plot_simple(downloads, uploads, name, description):
 | 
			
		||||
    fig = plt.figure(figsize=(10, 3))
 | 
			
		||||
    plt.plot(downloads, linestyle='dashed', color="red")
 | 
			
		||||
    plt.plot(uploads, linestyle='dashed', color="green")
 | 
			
		||||
    plt.ylabel(description + " (Mbps)")
 | 
			
		||||
    plt.tight_layout()
 | 
			
		||||
    plt.savefig(read_config()['output_image_path'])
 | 
			
		||||
    plt.savefig(read_config()['output_image_path'].format(name))
 | 
			
		||||
 | 
			
		||||
@catch_errors
 | 
			
		||||
def gather_week_median_data(dates, downloads, uploads):
 | 
			
		||||
    log.debug("Gather week median data...")
 | 
			
		||||
    dl = []
 | 
			
		||||
    up = []
 | 
			
		||||
 | 
			
		||||
    for hour in range(24):
 | 
			
		||||
        dl.append([])
 | 
			
		||||
        up.append([])
 | 
			
		||||
 | 
			
		||||
    for i, date in enumerate(dates):
 | 
			
		||||
        hour = date.hour
 | 
			
		||||
        dl[hour].append(downloads[i] if downloads[i] else 0)
 | 
			
		||||
        up[hour].append(uploads[i] if downloads[i] else 0)
 | 
			
		||||
 | 
			
		||||
    for i, hour in enumerate(dl):
 | 
			
		||||
        dl[i] = median(dl[i]) if len(dl[i]) > 0 else 0
 | 
			
		||||
 | 
			
		||||
    for i, hour in enumerate(up):
 | 
			
		||||
        up[i] = median(up[i]) if len(up[i]) > 0 else 0
 | 
			
		||||
 | 
			
		||||
    return dl, up
 | 
			
		||||
 | 
			
		||||
@catch_errors
 | 
			
		||||
def generate_week_median(dates, downloads, uploads):
 | 
			
		||||
    dl, up = gather_week_median_data(dates, downloads, uploads)
 | 
			
		||||
    
 | 
			
		||||
    generate_updown_plot_simple(dl, up, "week_median", "Week median")
 | 
			
		||||
 | 
			
		||||
@catch_errors
 | 
			
		||||
def generate_week_median_diff(dates, downloads, uploads):
 | 
			
		||||
    dl, up = gather_week_median_data(dates, downloads, uploads)
 | 
			
		||||
 | 
			
		||||
    downs = []
 | 
			
		||||
    ups = []
 | 
			
		||||
 | 
			
		||||
    for i, down in enumerate(dl):
 | 
			
		||||
        if i > 0:
 | 
			
		||||
            downs.append(dl[i]-dl[i-1])
 | 
			
		||||
            ups.append(up[i]-up[i-1])
 | 
			
		||||
        else:
 | 
			
		||||
            downs.append(down)
 | 
			
		||||
            ups.append(up[i])
 | 
			
		||||
 | 
			
		||||
    generate_updown_plot_simple(downs, ups, "week_median_diff", "Week median diff")
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@catch_errors
 | 
			
		||||
| 
						 | 
				
			
			@ -234,6 +303,12 @@ def generate_database_reports():
 | 
			
		|||
 | 
			
		||||
    generate_plot_image(dates, downloads, uploads)
 | 
			
		||||
 | 
			
		||||
    generate_week_median(dates, downloads, uploads)
 | 
			
		||||
 | 
			
		||||
    generate_week_median_diff(dates, downloads, uploads)
 | 
			
		||||
 | 
			
		||||
    generate_diff(dates, downloads, uploads)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
import sys
 | 
			
		||||
from netutils import test_intertnet_connection
 | 
			
		||||
| 
						 | 
				
			
			@ -266,8 +341,6 @@ if __name__ == "__main__":
 | 
			
		|||
 | 
			
		||||
    try:
 | 
			
		||||
        log.debug("Test internet connection...")
 | 
			
		||||
        # if not test_intertnet_connection():
 | 
			
		||||
        #     no_internet()
 | 
			
		||||
 | 
			
		||||
        if config["ros_dynamic_speed"]:
 | 
			
		||||
            ros_fastrack_enable(True)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue