diff --git a/pyasic/config/__init__.py b/pyasic/config/__init__.py index 613b5b2a..d03f1e45 100644 --- a/pyasic/config/__init__.py +++ b/pyasic/config/__init__.py @@ -17,7 +17,7 @@ import random import string import time from dataclasses import asdict, dataclass, fields -from typing import List, Literal +from typing import List, Literal, Dict import toml import yaml @@ -193,7 +193,7 @@ class _PoolGroup: return pools def as_wm(self, user_suffix: str = None) -> List[dict]: - """Convert the data in this class to a list usable by an Whatsminer device. + """Convert the data in this class to a list usable by a Whatsminer device. Parameters: user_suffix: The suffix to append to username. @@ -399,13 +399,13 @@ class MinerConfig: """ return self.from_dict(yaml.load(data, Loader=yaml.SafeLoader)) - def as_wm(self, user_suffix: str = None) -> List[dict]: - """Convert the data in this class to a config usable by an Whatsminer device. + def as_wm(self, user_suffix: str = None) -> Dict[str: List[dict], str: int]: + """Convert the data in this class to a config usable by a Whatsminer device. Parameters: user_suffix: The suffix to append to username. """ - return self.pool_groups[0].as_wm(user_suffix=user_suffix) + return {"pools": self.pool_groups[0].as_wm(user_suffix=user_suffix), "wattage": self.autotuning_wattage} def as_inno(self, user_suffix: str = None) -> dict: """Convert the data in this class to a config usable by an Innosilicon device. diff --git a/pyasic/miners/_backends/btminer.py b/pyasic/miners/_backends/btminer.py index e57f6f93..09caa94d 100644 --- a/pyasic/miners/_backends/btminer.py +++ b/pyasic/miners/_backends/btminer.py @@ -211,18 +211,24 @@ class BTMiner(BaseMiner): async def send_config(self, config: MinerConfig, user_suffix: str = None) -> None: conf = config.as_wm(user_suffix=user_suffix) + pools_conf = conf["pools"] await self.api.update_pools( - conf[0]["url"], - conf[0]["user"], - conf[0]["pass"], - conf[1]["url"], - conf[1]["user"], - conf[1]["pass"], - conf[2]["url"], - conf[2]["user"], - conf[2]["pass"], + pools_conf[0]["url"], + pools_conf[0]["user"], + pools_conf[0]["pass"], + pools_conf[1]["url"], + pools_conf[1]["user"], + pools_conf[1]["pass"], + pools_conf[2]["url"], + pools_conf[2]["user"], + pools_conf[2]["pass"], ) + try: + await self.api.adjust_power_limit(conf["wattage"]) + except APIError: + # cannot set wattage + pass async def get_config(self) -> MinerConfig: pools = None