added the ability to configure whatsminer via API
This commit is contained in:
@@ -52,6 +52,19 @@ class _Pool:
|
|||||||
self.password = data[key]
|
self.password = data[key]
|
||||||
return self
|
return self
|
||||||
|
|
||||||
|
def as_wm(self, user_suffix: str = None) -> dict:
|
||||||
|
"""Convert the data in this class to a dict usable by an Whatsminer device.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
user_suffix: The suffix to append to username.
|
||||||
|
"""
|
||||||
|
username = self.username
|
||||||
|
if user_suffix:
|
||||||
|
username = f"{username}{user_suffix}"
|
||||||
|
|
||||||
|
pool = {"url": self.url, "user": username, "pass": self.password}
|
||||||
|
return pool
|
||||||
|
|
||||||
def as_x19(self, user_suffix: str = None) -> dict:
|
def as_x19(self, user_suffix: str = None) -> dict:
|
||||||
"""Convert the data in this class to a dict usable by an X19 device.
|
"""Convert the data in this class to a dict usable by an X19 device.
|
||||||
|
|
||||||
@@ -141,6 +154,19 @@ class _PoolGroup:
|
|||||||
pools.append(pool.as_x19(user_suffix=user_suffix))
|
pools.append(pool.as_x19(user_suffix=user_suffix))
|
||||||
return pools
|
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.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
user_suffix: The suffix to append to username.
|
||||||
|
"""
|
||||||
|
pools = []
|
||||||
|
for pool in self.pools[:3]:
|
||||||
|
pools.append(pool.as_wm(user_suffix=user_suffix))
|
||||||
|
while len(pools) < 3:
|
||||||
|
pools.append({"url": None, "user": None, "pass": None})
|
||||||
|
return pools
|
||||||
|
|
||||||
def as_avalon(self, user_suffix: str = None) -> str:
|
def as_avalon(self, user_suffix: str = None) -> str:
|
||||||
"""Convert the data in this class to a dict usable by an Avalonminer device.
|
"""Convert the data in this class to a dict usable by an Avalonminer device.
|
||||||
|
|
||||||
@@ -327,6 +353,14 @@ class MinerConfig:
|
|||||||
"""
|
"""
|
||||||
return self.from_dict(yaml.load(data, Loader=yaml.SafeLoader))
|
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.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
user_suffix: The suffix to append to username.
|
||||||
|
"""
|
||||||
|
return self.pool_groups[0].as_x19(user_suffix=user_suffix)
|
||||||
|
|
||||||
def as_x19(self, user_suffix: str = None) -> str:
|
def as_x19(self, user_suffix: str = None) -> str:
|
||||||
"""Convert the data in this class to a config usable by an X19 device.
|
"""Convert the data in this class to a config usable by an X19 device.
|
||||||
|
|
||||||
|
|||||||
@@ -162,6 +162,27 @@ class BTMiner(BaseMiner):
|
|||||||
async def restart_backend(self) -> bool:
|
async def restart_backend(self) -> bool:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
async def send_config(self, yaml_config, ip_user: bool = False):
|
||||||
|
if ip_user:
|
||||||
|
suffix = str(self.ip).split(".")[-1]
|
||||||
|
conf = MinerConfig().from_yaml(yaml_config).as_wm(user_suffix=suffix)
|
||||||
|
else:
|
||||||
|
conf = MinerConfig().from_yaml(yaml_config).as_wm()
|
||||||
|
|
||||||
|
data = 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"],
|
||||||
|
)
|
||||||
|
|
||||||
|
print(data)
|
||||||
|
|
||||||
async def get_config(self) -> MinerConfig:
|
async def get_config(self) -> MinerConfig:
|
||||||
pools = None
|
pools = None
|
||||||
cfg = MinerConfig()
|
cfg = MinerConfig()
|
||||||
|
|||||||
Reference in New Issue
Block a user