feature: add config parsing from bitaxe.

This commit is contained in:
upstreamdata
2024-06-29 14:59:27 -06:00
parent e859895261
commit 3627194f34
4 changed files with 33 additions and 1 deletions

View File

@@ -235,3 +235,11 @@ class MinerConfig:
fan_mode=FanModeConfig.from_mara(web_miner_config),
mining_mode=MiningModeConfig.from_mara(web_miner_config),
)
@classmethod
def from_bitaxe(cls, web_system_info: dict) -> "MinerConfig":
return cls(
pools=PoolConfig.from_bitaxe(web_system_info),
fan_mode=FanModeConfig.from_bitaxe(web_system_info)
)

View File

@@ -291,3 +291,10 @@ class FanModeConfig(MinerConfigOption):
except LookupError:
pass
return cls.default()
@classmethod
def from_bitaxe(cls, web_system_info: dict):
if web_system_info["autofanspeed"] == 1:
return cls.normal()
else:
return cls.manual(speed=web_system_info["fanspeed"])

View File

@@ -194,6 +194,11 @@ class Pool(MinerConfigValue):
password=web_pool["pass"],
)
@classmethod
def from_bitaxe(cls, web_system_info: dict) -> "Pool":
url = f"stratum+tcp://{web_system_info['stratumURL']}:{web_system_info['stratumPort']}"
return cls(url=url, user=web_system_info["stratumUser"], password=web_system_info.get("stratumPassword", ""))
@dataclass
class PoolGroup(MinerConfigValue):
@@ -360,6 +365,10 @@ class PoolGroup(MinerConfigValue):
def from_mara(cls, web_config_pools: dict) -> "PoolGroup":
return cls(pools=[Pool.from_mara(pool_conf) for pool_conf in web_config_pools])
@classmethod
def from_bitaxe(cls, web_system_info: dict) -> "PoolGroup":
return cls(pools=[Pool.from_bitaxe(web_system_info)])
@dataclass
class PoolConfig(MinerConfigValue):
@@ -514,3 +523,7 @@ class PoolConfig(MinerConfigValue):
@classmethod
def from_mara(cls, web_config: dict) -> "PoolConfig":
return cls(groups=[PoolGroup.from_mara(web_config["pools"])])
@classmethod
def from_bitaxe(cls, web_system_info: dict) -> "PoolConfig":
return cls(groups=[PoolGroup.from_bitaxe(web_system_info)])

View File

@@ -1,6 +1,6 @@
from typing import List, Optional
from pyasic import APIError
from pyasic import APIError, MinerConfig
from pyasic.data import AlgoHashRate, Fan, HashBoard, HashUnit
from pyasic.miners.base import BaseMiner
from pyasic.miners.data import DataFunction, DataLocations, DataOptions, WebAPICommand
@@ -52,6 +52,10 @@ class BitAxe(BaseMiner):
await self.web.restart()
return True
async def get_config(self) -> MinerConfig:
web_system_info = await self.web.system_info()
return MinerConfig.from_bitaxe(web_system_info)
async def _get_wattage(self, web_system_info: dict = None) -> Optional[int]:
if web_system_info is None:
try: