From 81ae9a62c165dc5409703c0d19dd34637001ea92 Mon Sep 17 00:00:00 2001 From: Nixellion Date: Mon, 29 Jun 2020 03:49:09 +0300 Subject: [PATCH] Link to house9dash --- config/config.yaml | 2 ++ configuration.py | 17 +++++++++++++++-- speedtester.py | 18 +++++++++++++++++- 3 files changed, 34 insertions(+), 3 deletions(-) diff --git a/config/config.yaml b/config/config.yaml index 499400c..77d0ff2 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -18,6 +18,8 @@ ros_maximum_speed: 15000000 # 15 mbit ros_wan_interface: lte1 api_host: 0.0.0.0 api_port: 1357 +bad_speed_mbps: 0.2 +good_speed_mbps: 8 # Conversion rate 1 mbit : 1000000 bits \ No newline at end of file diff --git a/configuration.py b/configuration.py index a054dec..f2dc07f 100644 --- a/configuration.py +++ b/configuration.py @@ -4,10 +4,23 @@ import yaml from paths import CONFIG_DIR def read_config(name="config"): - with open(os.path.join(CONFIG_DIR, name+".yaml"), "r") as f: + conf_path = os.path.join(CONFIG_DIR, name+".yaml") + if not os.path.exists(conf_path): + return {} + with open(conf_path, "r") as f: data = yaml.load(f.read()) return data def write_config(data, name="config"): with open(os.path.join(CONFIG_DIR, name+".yaml"), "w+") as f: - f.write(yaml.dump(data, default_flow_style=False)) \ No newline at end of file + f.write(yaml.dump(data, default_flow_style=False)) + +def edit_config(data, name="config"): + conf = read_config(name) + for key, value in data: + conf[key] = value + write_config(conf, name) + + +def dash_data(data): + edit_config(data, "dash_data") \ No newline at end of file diff --git a/speedtester.py b/speedtester.py index f2b65ad..036f584 100644 --- a/speedtester.py +++ b/speedtester.py @@ -1,4 +1,4 @@ -from configuration import read_config +from configuration import read_config, dash_data # region Logger import logging from debug import setup_logging, catch_errors @@ -325,9 +325,17 @@ def on_fail_or_no_connection(): generate_database_reports() + dash_data({ + "wan_download": 0, + "wan_upload": 0, + "quality": 0 + }) + log.warning("No internet connection! Exiting.") sys.exit() +def range_convert(value, min_old, max_old, min_new, max_new): + return (((value - min_old) * (max_new - min_new)) / (max_old - min_old)) + min_new if __name__ == "__main__": ''' @@ -357,6 +365,8 @@ if __name__ == "__main__": entry.download = mbits(wan_download) entry.save() + + if wan_download < config['ros_minimum_speed']: wan_download = config['ros_minimum_speed'] @@ -366,6 +376,12 @@ if __name__ == "__main__": generate_database_reports() + dash_data({ + "wan_download": mbits(wan_download), + "wan_upload": mbits(wan_upload), + "quality": int(range_convert(wan_download, config['bad_speed_mbps'], config['good_speed_mbps'], 1, 5)), + "quality_percent": int(range_convert(wan_download, config['bad_speed_mbps'], config['good_speed_mbps'], 1, 100)) + }) except: log.error("Error!", exc_info=True)