feature: add enum for miner mode in config.

This commit is contained in:
UpstreamData
2023-02-24 08:43:52 -07:00
parent 46b7352769
commit 086b31ba23
2 changed files with 15 additions and 14 deletions

View File

@@ -20,12 +20,19 @@ import random
import string import string
import time import time
from dataclasses import asdict, dataclass, fields from dataclasses import asdict, dataclass, fields
from enum import IntEnum
from typing import Dict, List, Literal from typing import Dict, List, Literal
import toml import toml
import yaml import yaml
class X19PowerMode(IntEnum):
Normal = 0
Sleep = 1
LPM = 3
@dataclass @dataclass
class _Pool: class _Pool:
"""A dataclass for pool information. """A dataclass for pool information.
@@ -267,6 +274,7 @@ class MinerConfig:
asicboost: bool = None asicboost: bool = None
miner_mode: IntEnum = X19PowerMode.Normal
autotuning_enabled: bool = True autotuning_enabled: bool = True
autotuning_mode: Literal["power", "hashrate"] = None autotuning_mode: Literal["power", "hashrate"] = None
autotuning_wattage: int = None autotuning_wattage: int = None
@@ -287,6 +295,8 @@ class MinerConfig:
logging.debug(f"MinerConfig - (To Dict) - Dumping Dict config") logging.debug(f"MinerConfig - (To Dict) - Dumping Dict config")
data_dict = asdict(self) data_dict = asdict(self)
for key in asdict(self).keys(): for key in asdict(self).keys():
if isinstance(data_dict[key], IntEnum):
data_dict[key] = data_dict[key].value
if data_dict[key] is None: if data_dict[key] is None:
del data_dict[key] del data_dict[key]
return data_dict return data_dict
@@ -324,10 +334,7 @@ class MinerConfig:
self.fan_speed = int(data["bitmain-fan-pwm"]) self.fan_speed = int(data["bitmain-fan-pwm"])
elif key == "bitmain-work-mode": elif key == "bitmain-work-mode":
if data[key]: if data[key]:
if data[key] == 1: self.miner_mode = X19PowerMode(data[key])
self.autotuning_wattage = 0
if data[key] == 2:
self.autotuning_wattage = 1200
elif key == "fan_control": elif key == "fan_control":
for _key in data[key].keys(): for _key in data[key].keys():
if _key == "min_fans": if _key == "min_fans":
@@ -459,14 +466,8 @@ class MinerConfig:
"pools": self.pool_groups[0].as_x19(user_suffix=user_suffix), "pools": self.pool_groups[0].as_x19(user_suffix=user_suffix),
"bitmain-fan-ctrl": False, "bitmain-fan-ctrl": False,
"bitmain-fan-pwn": 100, "bitmain-fan-pwn": 100,
"miner-mode": 0, # Normal Mode "miner-mode": self.miner_mode.value,
} }
if self.autotuning_wattage:
if self.autotuning_wattage == 0:
cfg["miner-mode"] = 1 # Sleep Mode
if self.autotuning_wattage < 1800:
cfg["miner-mode"] = 3 # LPM
if not self.temp_mode == "auto": if not self.temp_mode == "auto":
cfg["bitmain-fan-ctrl"] = True cfg["bitmain-fan-ctrl"] = True

View File

@@ -21,7 +21,7 @@ from typing import List, Optional, Union
import httpx import httpx
from pyasic.API import APIError from pyasic.API import APIError
from pyasic.config import MinerConfig from pyasic.config import MinerConfig, X19PowerMode
from pyasic.data.error_codes import MinerErrorData, X19Error from pyasic.data.error_codes import MinerErrorData, X19Error
from pyasic.miners._backends import BMMiner # noqa - Ignore access to _module from pyasic.miners._backends import BMMiner # noqa - Ignore access to _module
from pyasic.settings import PyasicSettings from pyasic.settings import PyasicSettings
@@ -101,13 +101,13 @@ class X19(BMMiner):
async def stop_mining(self) -> bool: async def stop_mining(self) -> bool:
cfg = await self.get_config() cfg = await self.get_config()
cfg.autotuning_wattage = 0 cfg.miner_mode = X19PowerMode.Normal
await self.send_config(cfg) await self.send_config(cfg)
return True return True
async def resume_mining(self) -> bool: async def resume_mining(self) -> bool:
cfg = await self.get_config() cfg = await self.get_config()
cfg.autotuning_wattage = 3600 cfg.miner_mode = X19PowerMode.Sleep
await self.send_config(cfg) await self.send_config(cfg)
return True return True