Compare commits

..

9 Commits

Author SHA1 Message Date
Upstream Data
b3d9b6ff7e version: bump version number. 2023-08-26 11:21:21 -06:00
Upstream Data
60facacc48 bug: fix a bug with bosminer commands. 2023-08-26 11:21:10 -06:00
Upstream Data
b8a6063838 version: bumnp version number. 2023-08-26 10:57:40 -06:00
Upstream Data
bcba2be524 bug: remove bad await calls to httpx response.json(). 2023-08-26 10:56:53 -06:00
UpstreamData
f7187d2017 bug: add chip count for M29V10. 2023-08-25 08:58:34 -06:00
Upstream Data
d91b7c4406 version: bump version number. 2023-08-07 17:02:50 -06:00
Upstream Data
248a7e6d69 bug: fix some WM models reporting https first and being identified as BOS+. 2023-08-07 17:02:26 -06:00
Upstream Data
4f2c3e772a version: bump version number. 2023-08-06 17:25:21 -06:00
Upstream Data
95f7146eef feature: add VNish pause/resume commands. 2023-08-06 17:24:36 -06:00
7 changed files with 53 additions and 17 deletions

View File

@@ -74,6 +74,24 @@ class VNish(BMMiner):
pass
return False
async def stop_mining(self) -> bool:
data = await self.web.stop_mining()
if data:
try:
return data["success"]
except KeyError:
pass
return False
async def resume_mining(self) -> bool:
data = await self.web.resume_mining()
if data:
try:
return data["success"]
except KeyError:
pass
return False
async def reboot(self) -> bool:
data = await self.web.reboot()
if data:

View File

@@ -419,7 +419,7 @@ class BaseMiner(ABC):
data_to_get = list(self.data_locations.keys())
api_multicommand = set()
web_multicommand = set()
web_multicommand = []
for data_name in data_to_get:
try:
fn_args = self.data_locations[data_name]["kwargs"]
@@ -427,7 +427,8 @@ class BaseMiner(ABC):
if fn_args[arg_name].get("api"):
api_multicommand.add(fn_args[arg_name]["api"])
if fn_args[arg_name].get("web"):
web_multicommand.add(fn_args[arg_name]["web"])
if not fn_args[arg_name]["web"] in web_multicommand:
web_multicommand.append(fn_args[arg_name]["web"])
except KeyError as e:
logger.error(e, data_name)
continue
@@ -445,8 +446,6 @@ class BaseMiner(ABC):
else:
web_command_task = asyncio.sleep(0)
from datetime import datetime
web_command_data = await web_command_task
if web_command_data is None:
web_command_data = {}

View File

@@ -486,7 +486,7 @@ class MinerFactory:
"location", ""
):
return MinerTypes.WHATSMINER
if "Braiins OS" in web_text or 'href="/cgi-bin/luci"' in web_text:
if "Braiins OS" in web_text:
return MinerTypes.BRAIINS_OS
if "cloud-box" in web_text:
return MinerTypes.GOLDSHELL
@@ -775,15 +775,13 @@ class MinerFactory:
f"http://{ip}/api/auth",
data={"username": "admin", "password": "admin"},
)
auth = (await auth_req.json())["jwt"]
auth = auth_req.json()["jwt"]
web_data = await (
await session.post(
web_data = (await session.post(
f"http://{ip}/api/type",
headers={"Authorization": "Bearer " + auth},
data={},
)
).json()
)).json()
return web_data["type"]
except (httpx.HTTPError, LookupError):
pass
@@ -806,7 +804,7 @@ class MinerFactory:
json={"query": "{bosminer {info{modelName}}}"},
)
if d.status_code == 200:
json_data = await d.json()
json_data = d.json()
miner_model = json_data["data"]["bosminer"]["info"]["modelName"]
return miner_model
except (httpx.HTTPError, LookupError):

View File

@@ -24,8 +24,5 @@ class M29V10(WhatsMiner): # noqa - ignore ABC method implementation
super().__init__(ip, api_ver)
self.ip = ip
self.model = "M29 V10"
self.nominal_chips = 0
warnings.warn(
"Unknown chip count for miner type M29V10, please open an issue on GitHub (https://github.com/UpstreamData/pyasic)."
)
self.nominal_chips = 50
self.fan_count = 2

View File

@@ -24,7 +24,7 @@ from pyasic.errors import APIWarning
class BaseWebAPI(ABC):
def __init__(self, ip: str) -> None:
# ip address of the miner
self.ip = ipaddress.ip_address(ip)
self.ip = ip # ipaddress.ip_address(ip)
self.username = "root"
self.pwd = "root"

View File

@@ -116,8 +116,32 @@ class VNishWebAPI(BaseWebAPI):
async def reboot(self) -> dict:
return await self.send_command("system/reboot", post=True)
async def pause_mining(self) -> dict:
return await self.send_command("mining/pause", post=True)
async def resume_mining(self) -> dict:
return await self.send_command("mining/resume", post=True)
async def stop_mining(self) -> dict:
return await self.send_command("mining/stop", post=True)
async def start_mining(self) -> dict:
return await self.send_command("mining/start", post=True)
async def info(self):
return await self.send_command("info")
async def summary(self):
return await self.send_command("summary")
async def chips(self):
return await self.send_command("chips")
async def layout(self):
return await self.send_command("layout")
async def status(self):
return await self.send_command("status")
async def settings(self):
return await self.send_command("settings")

View File

@@ -1,6 +1,6 @@
[tool.poetry]
name = "pyasic"
version = "0.37.4"
version = "0.37.8"
description = "A set of modules for interfacing with many common types of ASIC bitcoin miners, using both their API and SSH."
authors = ["UpstreamData <brett@upstreamdata.ca>"]
repository = "https://github.com/UpstreamData/pyasic"