Add more graphs

master
Nixellion 2020-06-28 16:24:18 +03:00
parent e05f7ff029
commit b5fdd4da10
4 changed files with 88 additions and 15 deletions

1
.gitignore vendored
View File

@ -141,3 +141,4 @@ speeds.txt
test3.py test3.py
test4.py test4.py
speeds.txt speeds.txt
*.png

View File

@ -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

View File

@ -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

View File

@ -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
@catch_errors
def generate_plot_image(dates, downloads, uploads):
log.debug("Genering image output...")
import matplotlib import matplotlib
import matplotlib.pyplot as plt 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) dates = matplotlib.dates.date2num(dates)
fig = plt.figure(figsize=(12, 3)) fig = plt.figure(figsize=(len(dates / 10), 3))
plt.plot_date(dates, downloads, fmt="b-") plt.plot_date(dates, downloads, fmt="b-")
plt.ylabel('Download Speed Mbps') 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 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")
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'].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)