Add more graphs
							parent
							
								
									e05f7ff029
								
							
						
					
					
						commit
						b5fdd4da10
					
				| 
						 | 
					@ -141,3 +141,4 @@ speeds.txt
 | 
				
			||||||
test3.py
 | 
					test3.py
 | 
				
			||||||
test4.py
 | 
					test4.py
 | 
				
			||||||
speeds.txt
 | 
					speeds.txt
 | 
				
			||||||
 | 
					*.png
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
database_migrate: False
 | 
					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
 | 
					output_txt_path: /var/www/downloads/speeds.txt
 | 
				
			||||||
ros_dynamic_speed: True
 | 
					ros_dynamic_speed: True
 | 
				
			||||||
ros_ip: 192.168.88.1
 | 
					ros_ip: 192.168.88.1
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,3 @@
 | 
				
			||||||
Date:			Down;			Up;
 | 
					Date:			Down;			Up;
 | 
				
			||||||
2020-06-24 02:37:11.363969:			6.29 Mbps;			4.16 Mbps
 | 
					2020-06-26 18:16:13.262120:			None Mbps;			None Mbps
 | 
				
			||||||
2020-06-24 02:38:12.903694:			5.52 Mbps;			3.8 Mbps
 | 
					2020-06-28 16:10:56.596781:			0.88 Mbps;			1.09 Mbps
 | 
				
			||||||
2020-06-24 02:39:31.212599:			12.07 Mbps;			5.08 Mbps
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -34,20 +34,89 @@ def gather_data():
 | 
				
			||||||
        dates.append(entry.date_created)
 | 
					        dates.append(entry.date_created)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return dates, downloads, uploads
 | 
					    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
 | 
					@catch_errors
 | 
				
			||||||
def generate_plot_image(dates, downloads, uploads):
 | 
					def generate_diff(dates, downloads, uploads):
 | 
				
			||||||
    log.debug("Genering image output...")
 | 
					    dl = []
 | 
				
			||||||
    import matplotlib
 | 
					    up = []
 | 
				
			||||||
    import matplotlib.pyplot as plt
 | 
					    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))
 | 
					def generate_updown_plot_simple(downloads, uploads, name, description):
 | 
				
			||||||
    plt.plot_date(dates, downloads, fmt="b-")
 | 
					    fig = plt.figure(figsize=(10, 3))
 | 
				
			||||||
    plt.ylabel('Download Speed Mbps')
 | 
					    plt.plot(downloads, linestyle='dashed', color="red")
 | 
				
			||||||
 | 
					    plt.plot(uploads, linestyle='dashed', color="green")
 | 
				
			||||||
 | 
					    plt.ylabel(description + " (Mbps)")
 | 
				
			||||||
    plt.tight_layout()
 | 
					    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
 | 
					@catch_errors
 | 
				
			||||||
| 
						 | 
					@ -234,6 +303,12 @@ def generate_database_reports():
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    generate_plot_image(dates, downloads, uploads)
 | 
					    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
 | 
					import sys
 | 
				
			||||||
from netutils import test_intertnet_connection
 | 
					from netutils import test_intertnet_connection
 | 
				
			||||||
| 
						 | 
					@ -266,8 +341,6 @@ if __name__ == "__main__":
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    try:
 | 
					    try:
 | 
				
			||||||
        log.debug("Test internet connection...")
 | 
					        log.debug("Test internet connection...")
 | 
				
			||||||
        # if not test_intertnet_connection():
 | 
					 | 
				
			||||||
        #     no_internet()
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if config["ros_dynamic_speed"]:
 | 
					        if config["ros_dynamic_speed"]:
 | 
				
			||||||
            ros_fastrack_enable(True)
 | 
					            ros_fastrack_enable(True)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue