From 480aab550c06397795b70365487042247ab88c57 Mon Sep 17 00:00:00 2001 From: UpstreamData Date: Tue, 7 Jun 2022 15:55:43 -0600 Subject: [PATCH] added advanced config file generator --- tools/cfg_util/configure/__init__.py | 260 ++++++++++++++++++++++++--- 1 file changed, 234 insertions(+), 26 deletions(-) diff --git a/tools/cfg_util/configure/__init__.py b/tools/cfg_util/configure/__init__.py index 385c6ae1..6c5b304f 100644 --- a/tools/cfg_util/configure/__init__.py +++ b/tools/cfg_util/configure/__init__.py @@ -68,7 +68,25 @@ async def send_config_generator(miners: list, config, last_octet_ip_user: bool): yield await sent_config -def generate_config(username: str, workername: str, v2_allowed: bool): +def generate_config( + username: str, + workername: str, + v2_allowed: bool, + advanced_cfg: bool, + autotuning_enabled: bool, + autotuning_wattage: int, + manual_fan_control: bool, + manual_fan_speed: int, + min_fans: int, + target_temp: int, + hot_temp: int, + dangerous_temp: int, + dps_enabled: bool, + dps_power_step: int, + dps_min_power: int, + dps_shutdown_enabled: bool, + dps_shutdown_duration: int, +): if username and workername: user = f"{username}.{workername}" elif username and not workername: @@ -84,32 +102,63 @@ def generate_config(username: str, workername: str, v2_allowed: bool): url_1 = "stratum+tcp://ca.stratum.slushpool.com:3333" url_2 = "stratum+tcp://us-east.stratum.slushpool.com:3333" url_3 = "stratum+tcp://stratum.slushpool.com:3333" - - config = { - "group": [ - { - "name": "group", - "quota": 1, - "pool": [ - {"url": url_1, "user": user, "password": "123"}, - {"url": url_2, "user": user, "password": "123"}, - {"url": url_3, "user": user, "password": "123"}, - ], + if not advanced_cfg: + config = { + "group": [ + { + "name": "group", + "quota": 1, + "pool": [ + {"url": url_1, "user": user, "password": "123"}, + {"url": url_2, "user": user, "password": "123"}, + {"url": url_3, "user": user, "password": "123"}, + ], + } + ], + "temp_control": { + "target_temp": 80.0, + "hot_temp": 90.0, + "dangerous_temp": 120.0, + }, + "autotuning": {"enabled": True, "psu_power_limit": 900}, + } + else: + config = { + "group": [ + { + "name": "group", + "quota": 1, + "pool": [ + {"url": url_1, "user": user, "password": "123"}, + {"url": url_2, "user": user, "password": "123"}, + {"url": url_3, "user": user, "password": "123"}, + ], + } + ], + "temp_control": { + "mode": "auto", + "target_temp": float(target_temp), + "hot_temp": float(hot_temp), + "dangerous_temp": float(dangerous_temp), + }, + "autotuning": { + "enabled": autotuning_enabled, + "psu_power_limit": autotuning_wattage, + }, + } + if manual_fan_control: + config["temp_control"]["mode"] = "manual" + config["fan_control"] = {} + config["fan_control"]["speed"] = manual_fan_speed + config["fan_control"]["min_fans"] = min_fans + if dps_enabled: + config["power_scaling"] = { + "enabled": dps_enabled, + "power_step": dps_power_step, + "min_psu_power_limit": dps_min_power, + "shutdown_enabled": dps_shutdown_enabled, + "shutdown_duration": dps_shutdown_duration, } - ], - "format": { - "version": "1.2+", - "model": "Antminer S9", - "generator": "upstream_config_util", - "timestamp": int(time.time()), - }, - "temp_control": { - "target_temp": 80.0, - "hot_temp": 90.0, - "dangerous_temp": 120.0, - }, - "autotuning": {"enabled": True, "psu_power_limit": 900}, - } cfg = MinerConfig().from_raw(config) @@ -130,9 +179,51 @@ async def generate_config_ui(): values["generate_config_window_username"], values["generate_config_window_workername"], values["generate_config_window_allow_v2"], + values["show_advanced_options"], + values["autotuning_enabled"], + values["autotuning_wattage"], + values["manual_fan_control"], + values["manual_fan_speed"], + values["min_fans"], + values["target_temp"], + values["hot_temp"], + values["danger_temp"], + values["dps_enabled"], + values["dps_power_step"], + values["dps_min_power"], + values["dps_shutdown_enabled"], + values["dps_shutdown_duration"], ) generate_config_window.close() break + if event == "show_advanced_options": + generate_config_window["advanced_options"].update( + visible=values["show_advanced_options"] + ) + + if event == "autotuning_enabled": + generate_config_window["autotuning_wattage"].update( + disabled=not values["autotuning_enabled"] + ) + if event == "manual_fan_control": + generate_config_window["manual_fan_speed"].update( + disabled=not values["manual_fan_control"] + ) + generate_config_window["min_fans"].update( + disabled=not values["manual_fan_control"] + ) + if event == "dps_enabled": + for elem in ["dps_power_step", "dps_min_power", "dps_shutdown_enabled"]: + generate_config_window[elem].update(disabled=not values["dps_enabled"]) + if not values["dps_enabled"]: + generate_config_window["dps_shutdown_duration"].update(disabled=True) + if values["dps_enabled"] and values["dps_shutdown_enabled"]: + generate_config_window["dps_shutdown_duration"].update(disabled=False) + if event == "dps_shutdown_enabled": + if values["dps_enabled"]: + generate_config_window["dps_shutdown_duration"].update( + disabled=not values["dps_shutdown_enabled"] + ) def generate_config_layout(): @@ -159,6 +250,123 @@ def generate_config_layout(): sg.Text("Allow Stratum V2?:", size=(19, 1)), sg.Checkbox("", key="generate_config_window_allow_v2", default=True), ], + [ + sg.Push(), + sg.Checkbox( + "Advanced Options", enable_events=True, key="show_advanced_options" + ), + ], + [ + sg.pin( + sg.Column( + [ + [ + sg.Text("Autotuning Enabled:", size=(19, 1)), + sg.Checkbox( + "", key="autotuning_enabled", enable_events=True + ), + sg.Text("Power Limit:"), + sg.Spin( + [i for i in range(100, 5001, 100)], + initial_value=900, + size=(5, 1), + key="autotuning_wattage", + disabled=True, + ), + ], + [ + sg.Text("Manual Fan Control:", size=(19, 1)), + sg.Checkbox( + "", key="manual_fan_control", enable_events=True + ), + sg.Text("Speed:"), + sg.Spin( + [i for i in range(5, 101, 5)], + initial_value=100, + size=(5, 1), + key="manual_fan_speed", + disabled=True, + ), + sg.Text("Min Fans:"), + sg.Spin( + [i for i in range(5)], + initial_value=1, + size=(5, 1), + key="min_fans", + disabled=True, + ), + ], + [ + sg.Text("Target Temp:", size=(19, 1)), + sg.Spin( + [i for i in range(5, 101, 5)], + initial_value=80, + size=(5, 1), + key="target_temp", + ), + ], + [ + sg.Text("Hot Temp:", size=(19, 1)), + sg.Spin( + [i for i in range(5, 111, 5)], + initial_value=90, + size=(5, 1), + key="hot_temp", + ), + ], + [ + sg.Text("Dangerous Temp:", size=(19, 1)), + sg.Spin( + [i for i in range(5, 131, 5)], + initial_value=100, + size=(5, 1), + key="danger_temp", + ), + ], + [ + sg.Text("Dynamic Power Scaling:"), + sg.Checkbox("", key="dps_enabled", enable_events=True), + sg.Text("Power Step:"), + sg.Spin( + [i for i in range(50, 301, 5)], + initial_value=100, + size=(5, 1), + key="dps_power_step", + disabled=True, + ), + sg.Text("Min Power:"), + sg.Spin( + [i for i in range(100, 5001, 100)], + initial_value=800, + size=(5, 1), + key="dps_min_power", + disabled=True, + ), + ], + [ + sg.Text("DPS Shutdown:"), + sg.Checkbox( + "", + key="dps_shutdown_enabled", + enable_events=True, + disabled=True, + ), + sg.Text("Shutdown Duration (H):"), + sg.Spin( + [i for i in range(1, 11, 1)], + initial_value=3, + size=(5, 1), + key="dps_shutdown_duration", + disabled=True, + ), + ], + ], + key="advanced_options", + visible=False, + pad=0, + ) + ) + ], [sg.Button("Generate", key="generate_config_window_generate")], ] return config_layout