From 4073a27aba009f2338226c4a90a6875d80c032ba Mon Sep 17 00:00:00 2001 From: UpstreamData Date: Wed, 14 Feb 2024 13:46:03 -0700 Subject: [PATCH] bug: update miner handling with unknown models, but known makes. --- pyasic/data/__init__.py | 6 +++--- pyasic/miners/base.py | 7 ++++++- pyasic/miners/factory.py | 14 +++++++------- 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/pyasic/data/__init__.py b/pyasic/data/__init__.py index eb6d1e4a..835c28ea 100644 --- a/pyasic/data/__init__.py +++ b/pyasic/data/__init__.py @@ -94,9 +94,9 @@ class MinerData: percent_expected_wattage: float = field(init=False) nominal: bool = field(init=False) config: MinerConfig = None - errors: List[Union[WhatsminerError, BraiinsOSError, X19Error, InnosiliconError]] = ( - field(default_factory=list) - ) + errors: List[ + Union[WhatsminerError, BraiinsOSError, X19Error, InnosiliconError] + ] = field(default_factory=list) fault_light: Union[bool, None] = None efficiency: int = field(init=False) is_mining: bool = True diff --git a/pyasic/miners/base.py b/pyasic/miners/base.py index f47d38a4..0126b59c 100644 --- a/pyasic/miners/base.py +++ b/pyasic/miners/base.py @@ -69,7 +69,12 @@ class MinerProtocol(Protocol): @property def model(self) -> str: - model_data = [self.raw_model if self.raw_model is not None else "Unknown"] + if self.raw_model is not None: + model_data = [self.raw_model] + elif self.make is not None: + model_data = [self.make] + else: + model_data = ["Unknown"] if self.firmware is not None: model_data.append(f"({self.firmware})") return " ".join(model_data) diff --git a/pyasic/miners/factory.py b/pyasic/miners/factory.py index 810ea5f3..4cea4a72 100644 --- a/pyasic/miners/factory.py +++ b/pyasic/miners/factory.py @@ -47,6 +47,7 @@ from pyasic.miners.backends.unknown import UnknownMiner from pyasic.miners.base import AnyMiner from pyasic.miners.goldshell import * from pyasic.miners.innosilicon import * +from pyasic.miners.makes import * from pyasic.miners.whatsminer import * @@ -66,7 +67,7 @@ class MinerTypes(enum.Enum): MINER_CLASSES = { MinerTypes.ANTMINER: { - None: BMMiner, + None: type("AntminerUnknown", (BMMiner, AntMinerMake), {}), "ANTMINER D3": CGMinerD3, "ANTMINER HS3": BMMinerHS3, "ANTMINER L3+": BMMinerL3Plus, @@ -101,7 +102,7 @@ MINER_CLASSES = { "ANTMINER T19": BMMinerT19, }, MinerTypes.WHATSMINER: { - None: BTMiner, + None: type("WhatsminerUnknown", (BTMiner, WhatsMinerMake), {}), "M20V10": BTMinerM20V10, "M20SV10": BTMinerM20SV10, "M20SV20": BTMinerM20SV20, @@ -317,7 +318,7 @@ MINER_CLASSES = { "M66SVK40": BTMinerM66SVK40, }, MinerTypes.AVALONMINER: { - None: AvalonMiner, + None: type("AvalonUnknown", (AvalonMiner, AvalonMinerMake), {}), "AVALONMINER 721": CGMinerAvalon721, "AVALONMINER 741": CGMinerAvalon741, "AVALONMINER 761": CGMinerAvalon761, @@ -332,12 +333,12 @@ MINER_CLASSES = { "AVALONMINER 1246": CGMinerAvalon1246, }, MinerTypes.INNOSILICON: { - None: Innosilicon, + None: type("InnosiliconUnknown", (Innosilicon, InnosiliconMake), {}), "T3H+": InnosiliconT3HPlus, "A10X": InnosiliconA10X, }, MinerTypes.GOLDSHELL: { - None: GoldshellMiner, + None: type("GoldshellUnknown", (GoldshellMiner, GoldshellMake), {}), "GOLDSHELL CK5": GoldshellCK5, "GOLDSHELL HS5": GoldshellHS5, "GOLDSHELL KD5": GoldshellKD5, @@ -403,7 +404,7 @@ MINER_CLASSES = { "ANTMINER S9": LUXMinerS9, }, MinerTypes.AURADINE: { - None: Auradine, + None: type("GoldshellUnknown", (Auradine, AuradineMake), {}), "AT1500": AuradineFluxAT1500, "AT2860": AuradineFluxAT2860, "AT2880": AuradineFluxAT2880, @@ -499,7 +500,6 @@ class MinerFactory: ) except asyncio.TimeoutError: pass - miner = self._select_miner_from_classes( ip, miner_type=miner_type,