From 16e74e659cc35718382d1c093dc193bf96b35333 Mon Sep 17 00:00:00 2001 From: John-Paul Compagnone Date: Fri, 3 Jan 2025 00:19:30 -0500 Subject: [PATCH] add expected_hashrate for bitaxe devices --- pyasic/miners/backends/bitaxe.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/pyasic/miners/backends/bitaxe.py b/pyasic/miners/backends/bitaxe.py index 5687ba10..dbe8d2c4 100644 --- a/pyasic/miners/backends/bitaxe.py +++ b/pyasic/miners/backends/bitaxe.py @@ -14,6 +14,10 @@ BITAXE_DATA_LOC = DataLocations( "_get_hashrate", [WebAPICommand("web_system_info", "system/info")], ), + str(DataOptions.EXPECTED_HASHRATE): DataFunction( + "_get_expected_hashrate", + [WebAPICommand("web_system_info", "system/info")], + ), str(DataOptions.WATTAGE): DataFunction( "_get_wattage", [WebAPICommand("web_system_info", "system/info")], @@ -100,6 +104,29 @@ class BitAxe(BaseMiner): except KeyError: pass + async def _get_expected_hashrate( + self, web_system_info: dict = None + ) -> Optional[AlgoHashRate]: + if web_system_info is None: + try: + web_system_info = await self.web.system_info() + except APIError: + pass + + if web_system_info is not None: + try: + expected_hashrate = ( + web_system_info.get("smallCoreCount") + * web_system_info.get("asicCount") + * web_system_info.get("frequency") + ) + + return self.algo.hashrate( + rate=float(expected_hashrate), unit=self.algo.unit.MH + ).into(self.algo.unit.default) + except KeyError: + pass + async def _get_uptime(self, web_system_info: dict = None) -> Optional[int]: if web_system_info is None: try: