Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f976724ada | ||
|
|
2632bdaa30 | ||
|
|
91016d7b8c | ||
|
|
2b00e741ca | ||
|
|
d496c11d67 | ||
|
|
5880223517 | ||
|
|
394a5dcd0d | ||
|
|
ed0d9f73e4 |
@@ -14,9 +14,9 @@
|
||||
# limitations under the License. -
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
from typing import List, Optional, Union
|
||||
from pathlib import Path
|
||||
import logging
|
||||
from pathlib import Path
|
||||
from typing import List, Optional, Union
|
||||
|
||||
from pyasic.config import MinerConfig, MiningModeConfig
|
||||
from pyasic.data import AlgoHashRate, Fan, HashBoard, HashUnit
|
||||
@@ -141,17 +141,24 @@ class AntminerModern(BMMiner):
|
||||
raise ValueError("File location must be provided for firmware upgrade.")
|
||||
|
||||
try:
|
||||
result = await self.web.update_firmware(file=file, keep_settings=keep_settings)
|
||||
result = await self.web.update_firmware(
|
||||
file=file, keep_settings=keep_settings
|
||||
)
|
||||
|
||||
if result.get("success"):
|
||||
logging.info("Firmware upgrade process completed successfully for AntMiner.")
|
||||
logging.info(
|
||||
"Firmware upgrade process completed successfully for AntMiner."
|
||||
)
|
||||
return "Firmware upgrade completed successfully."
|
||||
else:
|
||||
error_message = result.get("message", "Unknown error")
|
||||
logging.error(f"Firmware upgrade failed. Response: {error_message}")
|
||||
return f"Firmware upgrade failed. Response: {error_message}"
|
||||
except Exception as e:
|
||||
logging.error(f"An error occurred during the firmware upgrade process: {e}", exc_info=True)
|
||||
logging.error(
|
||||
f"An error occurred during the firmware upgrade process: {e}",
|
||||
exc_info=True,
|
||||
)
|
||||
raise
|
||||
|
||||
async def fault_light_on(self) -> bool:
|
||||
@@ -367,7 +374,7 @@ class AntminerModern(BMMiner):
|
||||
|
||||
if web_get_conf is not None:
|
||||
try:
|
||||
if web_get_conf["bitmain-work-mode"].isdigit():
|
||||
if str(web_get_conf["bitmain-work-mode"]).isdigit():
|
||||
return (
|
||||
False if int(web_get_conf["bitmain-work-mode"]) == 1 else True
|
||||
)
|
||||
|
||||
@@ -22,6 +22,7 @@ from pyasic.errors import APIError
|
||||
from pyasic.miners.data import DataFunction, DataLocations, DataOptions, RPCAPICommand
|
||||
from pyasic.miners.device.firmware import StockFirmware
|
||||
from pyasic.rpc.bfgminer import BFGMinerRPCAPI
|
||||
from pyasic.data.pools import PoolMetrics, PoolUrl
|
||||
|
||||
BFGMINER_DATA_LOC = DataLocations(
|
||||
**{
|
||||
@@ -49,6 +50,10 @@ BFGMINER_DATA_LOC = DataLocations(
|
||||
"_get_fans",
|
||||
[RPCAPICommand("rpc_stats", "stats")],
|
||||
),
|
||||
str(DataOptions.POOLS): DataFunction(
|
||||
"_get_pools",
|
||||
[RPCAPICommand("rpc_pools", "pools")],
|
||||
),
|
||||
}
|
||||
)
|
||||
|
||||
@@ -207,6 +212,36 @@ class BFGMiner(StockFirmware):
|
||||
|
||||
return fans
|
||||
|
||||
async def _get_pools(self, rpc_pools: dict = None) -> List[PoolMetrics]:
|
||||
if rpc_pools is None:
|
||||
try:
|
||||
rpc_pools = await self.rpc.pools()
|
||||
except APIError:
|
||||
pass
|
||||
|
||||
pools_data = []
|
||||
if rpc_pools is not None:
|
||||
try:
|
||||
pools = rpc_pools.get("POOLS", [])
|
||||
for pool_info in pools:
|
||||
url = pool_info.get("URL")
|
||||
pool_url = PoolUrl.from_str(url) if url else None
|
||||
pool_data = PoolMetrics(
|
||||
accepted=pool_info.get("Accepted"),
|
||||
rejected=pool_info.get("Rejected"),
|
||||
get_failures=pool_info.get("Get Failures"),
|
||||
remote_failures=pool_info.get("Remote Failures"),
|
||||
active=pool_info.get("Stratum Active"),
|
||||
alive=pool_info.get("Status") == "Alive",
|
||||
url=pool_url,
|
||||
user=pool_info.get("User"),
|
||||
index=pool_info.get("POOL"),
|
||||
)
|
||||
pools_data.append(pool_data)
|
||||
except LookupError:
|
||||
pass
|
||||
return pools_data
|
||||
|
||||
async def _get_expected_hashrate(
|
||||
self, rpc_stats: dict = None
|
||||
) -> Optional[AlgoHashRate]:
|
||||
|
||||
@@ -1093,7 +1093,7 @@ class BOSer(BraiinsOSFirmware):
|
||||
get_failures=0,
|
||||
remote_failures=0,
|
||||
active=pool_info.get("active", False),
|
||||
alive=pool_info["alive"],
|
||||
alive=pool_info.get("alive"),
|
||||
)
|
||||
pools_data.append(pool_data)
|
||||
|
||||
|
||||
@@ -62,6 +62,10 @@ GOLDSHELL_DATA_LOC = DataLocations(
|
||||
"_get_fans",
|
||||
[RPCAPICommand("rpc_stats", "stats")],
|
||||
),
|
||||
str(DataOptions.POOLS): DataFunction(
|
||||
"_get_pools",
|
||||
[RPCAPICommand("rpc_pools", "pools")],
|
||||
),
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[tool.poetry]
|
||||
name = "pyasic"
|
||||
version = "0.60.7"
|
||||
version = "0.60.9"
|
||||
description = "A simplified and standardized interface for Bitcoin ASICs."
|
||||
authors = ["UpstreamData <brett@upstreamdata.ca>"]
|
||||
repository = "https://github.com/UpstreamData/pyasic"
|
||||
|
||||
Reference in New Issue
Block a user