feature: Add whatsminer get_config.
This commit is contained in:
@@ -15,12 +15,11 @@
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
import logging
|
||||
import warnings
|
||||
from collections import namedtuple
|
||||
from typing import List, Optional, Tuple
|
||||
|
||||
from pyasic.API.btminer import BTMinerAPI
|
||||
from pyasic.config import MinerConfig
|
||||
from pyasic.config import MinerConfig, MiningModeConfig
|
||||
from pyasic.data import Fan, HashBoard
|
||||
from pyasic.data.error_codes import MinerErrorData, WhatsminerError
|
||||
from pyasic.errors import APIError
|
||||
@@ -209,33 +208,53 @@ class BTMiner(BaseMiner):
|
||||
async def get_config(self) -> MinerConfig:
|
||||
pools = None
|
||||
summary = None
|
||||
cfg = MinerConfig()
|
||||
|
||||
status = None
|
||||
try:
|
||||
data = await self.api.multicommand("pools", "summary")
|
||||
data = await self.api.multicommand("pools", "summary", "status")
|
||||
pools = data["pools"][0]
|
||||
summary = data["summary"][0]
|
||||
status = data["status"][0]
|
||||
except APIError as e:
|
||||
logging.warning(e)
|
||||
except LookupError:
|
||||
pass
|
||||
|
||||
if pools:
|
||||
if "POOLS" in pools:
|
||||
cfg = cfg.from_api(pools["POOLS"])
|
||||
if pools is not None:
|
||||
cfg = MinerConfig.from_api(pools)
|
||||
else:
|
||||
# somethings wrong with the miner
|
||||
warnings.warn(
|
||||
f"Failed to gather pool config for miner: {self}, miner did not return pool information."
|
||||
)
|
||||
if summary:
|
||||
if "SUMMARY" in summary:
|
||||
if wattage := summary["SUMMARY"][0].get("Power Limit"):
|
||||
cfg.autotuning_wattage = wattage
|
||||
cfg = MinerConfig()
|
||||
|
||||
is_mining = await self.is_mining(status)
|
||||
if not is_mining:
|
||||
cfg.mining_mode = MiningModeConfig.sleep()
|
||||
return cfg
|
||||
|
||||
if summary is not None:
|
||||
mining_mode = None
|
||||
try:
|
||||
mining_mode = summary["SUMMARY"][0]["Power Mode"]
|
||||
except LookupError:
|
||||
pass
|
||||
|
||||
if mining_mode == "High":
|
||||
cfg.mining_mode = MiningModeConfig.high()
|
||||
return cfg
|
||||
elif mining_mode == "Low":
|
||||
cfg.mining_mode = MiningModeConfig.low()
|
||||
return cfg
|
||||
try:
|
||||
power_lim = summary["SUMMARY"][0]["Power Limit"]
|
||||
except LookupError:
|
||||
power_lim = None
|
||||
|
||||
if power_lim is None:
|
||||
cfg.mining_mode = MiningModeConfig.normal()
|
||||
return cfg
|
||||
|
||||
cfg.mining_mode = MiningModeConfig.power_tuning(power_lim)
|
||||
return cfg
|
||||
|
||||
self.config = cfg
|
||||
|
||||
return self.config
|
||||
|
||||
async def set_power_limit(self, wattage: int) -> bool:
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user