bug: fix some issues with config on bosminer.

This commit is contained in:
Upstream Data
2024-04-11 09:23:33 -06:00
parent 2815d2ba11
commit 4a1c53dfd7
4 changed files with 26 additions and 8 deletions

View File

@@ -184,7 +184,10 @@ class MiningModePowerTune(MinerConfigValue):
return {} return {}
def as_bosminer(self) -> dict: def as_bosminer(self) -> dict:
return {"autotuning": {"enabled": True, "psu_power_limit": self.power}} conf = {"enabled": True, "mode": "power_target"}
if self.power is not None:
conf["power_target"] = self.power
return {"autotuning": conf}
def as_boser(self) -> dict: def as_boser(self) -> dict:
return { return {
@@ -219,6 +222,12 @@ class MiningModeHashrateTune(MinerConfigValue):
return {"miner-mode": "0"} return {"miner-mode": "0"}
return {"miner-mode": 0} return {"miner-mode": 0}
def as_bosminer(self) -> dict:
conf = {"enabled": True, "mode": "hashrate_target"}
if self.hashrate is not None:
conf["hashrate_target"] = self.hashrate
return {"autotuning": conf}
def as_boser(self) -> dict: def as_boser(self) -> dict:
return { return {
"set_performance_mode": SetPerformanceModeRequest( "set_performance_mode": SetPerformanceModeRequest(

View File

@@ -114,6 +114,8 @@ class PowerScalingEnabled(MinerConfigValue):
def from_bosminer(cls, power_scaling_conf: dict) -> "PowerScalingEnabled": def from_bosminer(cls, power_scaling_conf: dict) -> "PowerScalingEnabled":
power_step = power_scaling_conf.get("power_step") power_step = power_scaling_conf.get("power_step")
min_power = power_scaling_conf.get("min_psu_power_limit") min_power = power_scaling_conf.get("min_psu_power_limit")
if min_power is None:
min_power = power_scaling_conf.get("min_power_target")
sd_mode = PowerScalingShutdown.from_bosminer(power_scaling_conf) sd_mode = PowerScalingShutdown.from_bosminer(power_scaling_conf)
return cls( return cls(
@@ -138,12 +140,12 @@ class PowerScalingEnabled(MinerConfigValue):
if self.power_step is not None: if self.power_step is not None:
cfg["power_step"] = self.power_step cfg["power_step"] = self.power_step
if self.minimum_power is not None: if self.minimum_power is not None:
cfg["min_psu_power_limit"] = self.minimum_power cfg["min_power_target"] = self.minimum_power
if self.shutdown_enabled is not None: if self.shutdown_enabled is not None:
cfg = {**cfg, **self.shutdown_enabled.as_bosminer()} cfg = {**cfg, **self.shutdown_enabled.as_bosminer()}
return {"power_scaling": cfg} return {"performance_scaling": cfg}
def as_boser(self) -> dict: def as_boser(self) -> dict:
return { return {
@@ -189,6 +191,8 @@ class PowerScalingConfig(MinerConfigOption):
@classmethod @classmethod
def from_bosminer(cls, toml_conf: dict): def from_bosminer(cls, toml_conf: dict):
power_scaling = toml_conf.get("power_scaling") power_scaling = toml_conf.get("power_scaling")
if power_scaling is None:
power_scaling = toml_conf.get("performance_scaling")
if power_scaling is not None: if power_scaling is not None:
enabled = power_scaling.get("enabled") enabled = power_scaling.get("enabled")
if enabled is not None: if enabled is not None:

View File

@@ -181,16 +181,17 @@ class BOSMiner(BaseMiner):
async def send_config(self, config: MinerConfig, user_suffix: str = None) -> None: async def send_config(self, config: MinerConfig, user_suffix: str = None) -> None:
self.config = config self.config = config
parsed_cfg = config.as_bosminer(user_suffix=user_suffix)
toml_conf = toml.dumps( toml_conf = toml.dumps(
{ {
"format": { "format": {
"version": "1.2+", "version": "2.0",
"generator": "pyasic", "generator": "pyasic",
"model": f"{self.make.replace('Miner', 'miner')} {self.raw_model.replace('j', 'J')}", "model": f"{self.make.replace('Miner', 'miner')} {self.raw_model.replace('j', 'J')}",
"timestamp": int(time.time()), "timestamp": int(time.time()),
}, },
**config.as_bosminer(user_suffix=user_suffix), **parsed_cfg,
} }
) )
try: try:

View File

@@ -98,7 +98,11 @@ class TestConfig(unittest.TestCase):
"dangerous_temp": 120, "dangerous_temp": 120,
}, },
"fan_control": {"min_fans": 2, "speed": 90}, "fan_control": {"min_fans": 2, "speed": 90},
"autotuning": {"enabled": True, "psu_power_limit": 3000}, "autotuning": {
"enabled": True,
"mode": "power_target",
"power_target": 3000,
},
"group": [ "group": [
{ {
"name": "W91Q1L", "name": "W91Q1L",
@@ -112,10 +116,10 @@ class TestConfig(unittest.TestCase):
"quota": 1, "quota": 1,
} }
], ],
"power_scaling": { "performance_scaling": {
"enabled": True, "enabled": True,
"power_step": 100, "power_step": 100,
"min_psu_power_limit": 2000, "min_power_target": 2000,
"shutdown_enabled": True, "shutdown_enabled": True,
"shutdown_duration": 3, "shutdown_duration": 3,
}, },