bug: fix parsing of tuner algo modes into json.
This commit is contained in:
@@ -126,6 +126,7 @@ class MiningModeHPM(MinerConfigValue):
|
|||||||
return {"mode": {"mode": "turbo"}}
|
return {"mode": {"mode": "turbo"}}
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
class StandardTuneAlgo(MinerConfigValue):
|
class StandardTuneAlgo(MinerConfigValue):
|
||||||
mode: str = field(init=False, default="standard")
|
mode: str = field(init=False, default="standard")
|
||||||
|
|
||||||
@@ -133,20 +134,22 @@ class StandardTuneAlgo(MinerConfigValue):
|
|||||||
return VOptAlgo().as_epic()
|
return VOptAlgo().as_epic()
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
class VOptAlgo(MinerConfigValue):
|
class VOptAlgo(MinerConfigValue):
|
||||||
mode: str = field(init=False, default="standard")
|
mode: str = field(init=False, default="voltage_optimizer")
|
||||||
|
|
||||||
def as_epic(self) -> str:
|
def as_epic(self) -> str:
|
||||||
return "VoltageOptimizer"
|
return "VoltageOptimizer"
|
||||||
|
|
||||||
|
|
||||||
class ChipTuneAlgo(MinerConfigValue):
|
class ChipTuneAlgo(MinerConfigValue):
|
||||||
mode: str = field(init=False, default="standard")
|
mode: str = field(init=False, default="chip_tune")
|
||||||
|
|
||||||
def as_epic(self) -> str:
|
def as_epic(self) -> str:
|
||||||
return "ChipTune"
|
return "ChipTune"
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
class TunerAlgo(MinerConfigOption):
|
class TunerAlgo(MinerConfigOption):
|
||||||
standard = StandardTuneAlgo
|
standard = StandardTuneAlgo
|
||||||
voltage_optimizer = VOptAlgo
|
voltage_optimizer = VOptAlgo
|
||||||
@@ -156,6 +159,16 @@ class TunerAlgo(MinerConfigOption):
|
|||||||
def default(cls):
|
def default(cls):
|
||||||
return cls.standard()
|
return cls.standard()
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_dict(cls, dict_conf: dict | None):
|
||||||
|
mode = dict_conf.get("mode")
|
||||||
|
if mode is None:
|
||||||
|
return cls.default()
|
||||||
|
|
||||||
|
cls_attr = getattr(cls, mode)
|
||||||
|
if cls_attr is not None:
|
||||||
|
return cls_attr().from_dict(dict_conf)
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class MiningModePowerTune(MinerConfigValue):
|
class MiningModePowerTune(MinerConfigValue):
|
||||||
@@ -169,7 +182,7 @@ class MiningModePowerTune(MinerConfigValue):
|
|||||||
if dict_conf.get("power"):
|
if dict_conf.get("power"):
|
||||||
cls_conf["power"] = dict_conf["power"]
|
cls_conf["power"] = dict_conf["power"]
|
||||||
if dict_conf.get("algo"):
|
if dict_conf.get("algo"):
|
||||||
cls_conf["algo"] = dict_conf["algo"]
|
cls_conf["algo"] = TunerAlgo.from_dict(dict_conf["algo"])
|
||||||
|
|
||||||
return cls(**cls_conf)
|
return cls(**cls_conf)
|
||||||
|
|
||||||
@@ -215,7 +228,13 @@ class MiningModeHashrateTune(MinerConfigValue):
|
|||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def from_dict(cls, dict_conf: dict | None) -> "MiningModeHashrateTune":
|
def from_dict(cls, dict_conf: dict | None) -> "MiningModeHashrateTune":
|
||||||
return cls(dict_conf.get("hashrate"))
|
cls_conf = {}
|
||||||
|
if dict_conf.get("hashrate"):
|
||||||
|
cls_conf["hashrate"] = dict_conf["hashrate"]
|
||||||
|
if dict_conf.get("algo"):
|
||||||
|
cls_conf["algo"] = TunerAlgo.from_dict(dict_conf["algo"])
|
||||||
|
|
||||||
|
return cls(**cls_conf)
|
||||||
|
|
||||||
def as_am_modern(self) -> dict:
|
def as_am_modern(self) -> dict:
|
||||||
if settings.get("antminer_mining_mode_as_str", False):
|
if settings.get("antminer_mining_mode_as_str", False):
|
||||||
|
|||||||
@@ -94,9 +94,14 @@ class MinerData:
|
|||||||
percent_expected_wattage: float = field(init=False)
|
percent_expected_wattage: float = field(init=False)
|
||||||
nominal: bool = field(init=False)
|
nominal: bool = field(init=False)
|
||||||
config: MinerConfig = None
|
config: MinerConfig = None
|
||||||
errors: List[Union[WhatsminerError, BraiinsOSError, X19Error, InnosiliconError]] = (
|
errors: List[
|
||||||
field(default_factory=list)
|
Union[
|
||||||
)
|
WhatsminerError,
|
||||||
|
BraiinsOSError,
|
||||||
|
X19Error,
|
||||||
|
InnosiliconError,
|
||||||
|
]
|
||||||
|
] = field(default_factory=list)
|
||||||
fault_light: Union[bool, None] = None
|
fault_light: Union[bool, None] = None
|
||||||
efficiency: int = field(init=False)
|
efficiency: int = field(init=False)
|
||||||
is_mining: bool = True
|
is_mining: bool = True
|
||||||
|
|||||||
@@ -72,7 +72,11 @@ class TestConfig(unittest.TestCase):
|
|||||||
},
|
},
|
||||||
"fan_mode": {"mode": "manual", "speed": 90, "minimum_fans": 2},
|
"fan_mode": {"mode": "manual", "speed": 90, "minimum_fans": 2},
|
||||||
"temperature": {"target": 70, "hot": None, "danger": 120},
|
"temperature": {"target": 70, "hot": None, "danger": 120},
|
||||||
"mining_mode": {"mode": "power_tuning", "power": 3000, "algo": {}},
|
"mining_mode": {
|
||||||
|
"mode": "power_tuning",
|
||||||
|
"power": 3000,
|
||||||
|
"algo": {"mode": "standard"},
|
||||||
|
},
|
||||||
"power_scaling": {
|
"power_scaling": {
|
||||||
"mode": "enabled",
|
"mode": "enabled",
|
||||||
"power_step": 100,
|
"power_step": 100,
|
||||||
|
|||||||
Reference in New Issue
Block a user