From 1ab39f5873cd0f177ccbdb269917c84c19f20e5a Mon Sep 17 00:00:00 2001 From: Upstream Data Date: Sun, 10 Dec 2023 17:40:39 -0700 Subject: [PATCH] bug: fix bosminer config parsing. --- pyasic/config/pools.py | 13 +++++++------ pyasic/miners/backends/antminer.py | 23 +++++++++++------------ pyasic/miners/backends/bosminer.py | 2 +- pyasic/miners/backends/cgminer_avalon.py | 21 +++++++++++---------- 4 files changed, 30 insertions(+), 29 deletions(-) diff --git a/pyasic/config/pools.py b/pyasic/config/pools.py index 756f58be..b478b20e 100644 --- a/pyasic/config/pools.py +++ b/pyasic/config/pools.py @@ -127,7 +127,7 @@ class Pool(MinerConfigValue): return cls( url=toml_pool_conf["url"], user=toml_pool_conf["user"], - password=toml_pool_conf["pass"], + password=toml_pool_conf["password"], ) @@ -135,7 +135,7 @@ class Pool(MinerConfigValue): @dataclass class PoolGroup(MinerConfigValue): pools: list[Pool] = field(default_factory=list) - quota: int = 1 + quota: int = None name: str = None def __post_init__(self): @@ -204,14 +204,15 @@ class PoolGroup(MinerConfigValue): def as_bosminer(self, user_suffix: str = None) -> dict: if len(self.pools) > 0: - return { + conf = { "name": self.name, - "quota": self.quota, "pool": [ pool.as_bosminer(user_suffix=user_suffix) for pool in self.pools ], } - return {"name": "Group", "quota": 1, "pool": []} + if self.quota is not None: + conf["quota"] = self.quota + return {"name": "Group", "pool": []} @classmethod def from_api(cls, api_pool_list: list): @@ -240,7 +241,7 @@ class PoolGroup(MinerConfigValue): if toml_group_conf.get("pool") is not None: return cls( name=toml_group_conf["name"], - quota=toml_group_conf["quota"], + quota=toml_group_conf.get("quota"), pools=[Pool.from_bosminer(p) for p in toml_group_conf["pool"]], ) return cls() diff --git a/pyasic/miners/backends/antminer.py b/pyasic/miners/backends/antminer.py index dd532e86..eaf81f6e 100644 --- a/pyasic/miners/backends/antminer.py +++ b/pyasic/miners/backends/antminer.py @@ -85,18 +85,16 @@ class AntminerModern(BMMiner): async def send_config(self, config: MinerConfig, user_suffix: str = None) -> None: self.config = config - conf = config.as_am_modern(user_suffix=user_suffix) - data = await self.web.set_miner_conf(conf) - - if data: - if data.get("code") == "M000": - return - - for i in range(7): - data = await self.get_config() - if data.as_am_modern() == conf: - break - await asyncio.sleep(1) + await self.web.set_miner_conf(config.as_am_modern(user_suffix=user_suffix)) + # if data: + # if data.get("code") == "M000": + # return + # + # for i in range(7): + # data = await self.get_config() + # if data == self.config: + # break + # await asyncio.sleep(1) async def fault_light_on(self) -> bool: data = await self.web.blink(blink=True) @@ -353,6 +351,7 @@ class AntminerOld(CGMiner): return self.config async def send_config(self, config: MinerConfig, user_suffix: str = None) -> None: + self.config = config await self.web.set_miner_conf(config.as_am_old(user_suffix=user_suffix)) async def get_mac(self) -> Union[str, None]: diff --git a/pyasic/miners/backends/bosminer.py b/pyasic/miners/backends/bosminer.py index 68d1ee83..49d3642d 100644 --- a/pyasic/miners/backends/bosminer.py +++ b/pyasic/miners/backends/bosminer.py @@ -617,7 +617,7 @@ class BOSMiner(BaseMiner): offset = 0 if 3 in b_names: offset = 1 - elif 6 in b_names: + elif 6 in b_names or 7 in b_names or 8 in b_names: offset = 6 for hb in boards: _id = int(hb["name"]) - offset diff --git a/pyasic/miners/backends/cgminer_avalon.py b/pyasic/miners/backends/cgminer_avalon.py index 91c5a2e9..67815ddf 100644 --- a/pyasic/miners/backends/cgminer_avalon.py +++ b/pyasic/miners/backends/cgminer_avalon.py @@ -100,16 +100,17 @@ class CGMinerAvalon(CGMiner): return False async def send_config(self, config: MinerConfig, user_suffix: str = None) -> None: - self.config = config - return None - logging.debug(f"{self}: Sending config.") # noqa - This doesnt work... - conf = config.as_avalon(user_suffix=user_suffix) - try: - data = await self.api.ascset( # noqa - 0, "setpool", f"root,root,{conf}" - ) # this should work but doesn't - except APIError: - pass + pass + # self.config = config + # return None + # logging.debug(f"{self}: Sending config.") # noqa - This doesnt work... + # conf = config.as_avalon(user_suffix=user_suffix) + # try: + # data = await self.api.ascset( # noqa + # 0, "setpool", f"root,root,{conf}" + # ) # this should work but doesn't + # except APIError: + # pass # return data @staticmethod