diff --git a/pyasic/miners/backends/bosminer.py b/pyasic/miners/backends/bosminer.py index ce32b108..311cd334 100644 --- a/pyasic/miners/backends/bosminer.py +++ b/pyasic/miners/backends/bosminer.py @@ -174,7 +174,7 @@ BOSMINER_DATA_LOC = { }, "is_mining": { "cmd": "is_mining", - "kwargs": {"api_tunerstatus": {"api": "tunerstatus"}}, + "kwargs": {"api_devdetails": {"api": "devdetails"}}, }, "uptime": { "cmd": "get_uptime", @@ -1072,22 +1072,16 @@ class BOSMiner(BaseMiner): except (IndexError, KeyError): pass - async def is_mining(self, api_tunerstatus: dict = None) -> Optional[bool]: - if not api_tunerstatus: + async def is_mining(self, api_devdetails: dict = None) -> Optional[bool]: + if not api_devdetails: try: - api_tunerstatus = await self.api.tunerstatus() + api_devdetails = await self.api.send_command("devdetails", ignore_errors=True, allow_warning=False) except APIError: pass - if api_tunerstatus: + if api_devdetails: try: - running = any( - [ - d["TunerRunning"] - for d in api_tunerstatus["TUNERSTATUS"][0]["TunerChainStatus"] - ] - ) - return running + return not api_devdetails["STATUS"][0]["Msg"] == "Unavailable" except LookupError: pass diff --git a/pyasic/miners/base.py b/pyasic/miners/base.py index 6fbfcdc0..95bcb5f5 100644 --- a/pyasic/miners/base.py +++ b/pyasic/miners/base.py @@ -427,23 +427,26 @@ class BaseMiner(ABC): fn_args = self.data_locations[data_name]["kwargs"] args_to_send = {k: None for k in fn_args} for arg_name in fn_args: - if fn_args[arg_name].get("api"): - if api_command_data.get("multicommand"): - args_to_send[arg_name] = api_command_data[ - fn_args[arg_name]["api"] - ][0] - else: - args_to_send[arg_name] = api_command_data - if fn_args[arg_name].get("web"): - if web_command_data is not None: - if web_command_data.get("multicommand"): - args_to_send[arg_name] = web_command_data[ - fn_args[arg_name]["web"] - ] + try: + if fn_args[arg_name].get("api"): + if api_command_data.get("multicommand"): + args_to_send[arg_name] = api_command_data[ + fn_args[arg_name]["api"] + ][0] else: - if not web_command_data == {"multicommand": False}: - args_to_send[arg_name] = web_command_data - except (KeyError, IndexError): + args_to_send[arg_name] = api_command_data + if fn_args[arg_name].get("web"): + if web_command_data is not None: + if web_command_data.get("multicommand"): + args_to_send[arg_name] = web_command_data[ + fn_args[arg_name]["web"] + ] + else: + if not web_command_data == {"multicommand": False}: + args_to_send[arg_name] = web_command_data + except LookupError: + args_to_send[arg_name] = None + except LookupError as e: continue function = getattr(self, self.data_locations[data_name]["cmd"])