From 3ca75729b977511f2cf5096ccecd90a95dafd972 Mon Sep 17 00:00:00 2001 From: Brett Rowan <121075405+b-rowan@users.noreply.github.com> Date: Fri, 12 Jul 2024 09:59:03 -0600 Subject: [PATCH] feature: add support for Vnish S19 Pro Hydro. --- pyasic/miners/antminer/vnish/X19/S19.py | 5 +++++ pyasic/miners/antminer/vnish/X19/__init__.py | 1 + pyasic/miners/backends/luxminer.py | 4 ++-- pyasic/miners/factory.py | 1 + pyasic/web/epic.py | 19 +++++++++---------- 5 files changed, 18 insertions(+), 12 deletions(-) diff --git a/pyasic/miners/antminer/vnish/X19/S19.py b/pyasic/miners/antminer/vnish/X19/S19.py index 032d5db9..7dd9dd11 100644 --- a/pyasic/miners/antminer/vnish/X19/S19.py +++ b/pyasic/miners/antminer/vnish/X19/S19.py @@ -24,6 +24,7 @@ from pyasic.miners.device.models import ( S19jPro, S19NoPIC, S19Pro, + S19ProHydro, ) @@ -57,3 +58,7 @@ class VNishS19j(VNish, S19j): class VNishS19jPro(VNish, S19jPro): pass + + +class VNishS19ProHydro(VNish, S19ProHydro): + pass diff --git a/pyasic/miners/antminer/vnish/X19/__init__.py b/pyasic/miners/antminer/vnish/X19/__init__.py index f69c45e2..b7f679c0 100644 --- a/pyasic/miners/antminer/vnish/X19/__init__.py +++ b/pyasic/miners/antminer/vnish/X19/__init__.py @@ -22,6 +22,7 @@ from .S19 import ( VNishS19jPro, VNishS19NoPIC, VNishS19Pro, + VNishS19ProHydro, VNishS19XP, ) from .T19 import VNishT19 diff --git a/pyasic/miners/backends/luxminer.py b/pyasic/miners/backends/luxminer.py index 857c0412..abaa3664 100644 --- a/pyasic/miners/backends/luxminer.py +++ b/pyasic/miners/backends/luxminer.py @@ -17,11 +17,11 @@ from typing import List, Optional from pyasic.config import MinerConfig from pyasic.data import AlgoHashRate, Fan, HashBoard, HashUnit +from pyasic.data.pools import PoolMetrics, PoolUrl from pyasic.errors import APIError from pyasic.miners.data import DataFunction, DataLocations, DataOptions, RPCAPICommand from pyasic.miners.device.firmware import LuxOSFirmware from pyasic.rpc.luxminer import LUXMinerRPCAPI -from pyasic.data.pools import PoolMetrics, PoolUrl LUXMINER_DATA_LOC = DataLocations( **{ @@ -53,7 +53,7 @@ LUXMINER_DATA_LOC = DataLocations( "_get_uptime", [RPCAPICommand("rpc_stats", "stats")] ), str(DataOptions.POOLS): DataFunction( - "get_pools", [RPCAPICommand("rpc_pools", "pools")] + "_get_pools", [RPCAPICommand("rpc_pools", "pools")] ), } ) diff --git a/pyasic/miners/factory.py b/pyasic/miners/factory.py index cbd1e6be..bff39771 100644 --- a/pyasic/miners/factory.py +++ b/pyasic/miners/factory.py @@ -386,6 +386,7 @@ MINER_CLASSES = { "ANTMINER S19J PRO": VNishS19jPro, "ANTMINER S19A": VNishS19a, "ANTMINER S19A PRO": VNishS19aPro, + "ANTMINER S19 PRO HYD.": VNishS19ProHydro, "ANTMINER T19": VNishT19, "ANTMINER S21": VNishS21, }, diff --git a/pyasic/web/epic.py b/pyasic/web/epic.py index 5c19a98e..4a72ec93 100644 --- a/pyasic/web/epic.py +++ b/pyasic/web/epic.py @@ -15,14 +15,13 @@ # ------------------------------------------------------------------------------ from __future__ import annotations +import hashlib import json +from pathlib import Path from typing import Any -import httpx import aiofiles -import aiohttp -import hashlib -from pathlib import Path +import httpx from pyasic import settings from pyasic.errors import APIError @@ -52,7 +51,7 @@ class ePICWebAPI(BaseWebAPI): try: if parameters.get("form") is not None: form_data = parameters["form"] - form_data.add_field('password', self.pwd) + form_data.add_field("password", self.pwd) response = await client.post( f"http://{self.ip}:{self.port}/{command}", timeout=5, @@ -149,7 +148,7 @@ class ePICWebAPI(BaseWebAPI): return await self.send_command("capabilities") async def system_update(self, file: Path | str, keep_settings: bool = True): - """Perform a system update by uploading a firmware file and sending a + """Perform a system update by uploading a firmware file and sending a command to initiate the update.""" # calculate the SHA256 checksum of the firmware file @@ -161,8 +160,8 @@ class ePICWebAPI(BaseWebAPI): # prepare the multipart/form-data request form_data = aiohttp.FormData() - form_data.add_field('checksum', checksum) - form_data.add_field('keepsettings', str(keep_settings).lower()) - form_data.add_field('update.zip', open(file, 'rb'), filename='update.zip') + form_data.add_field("checksum", checksum) + form_data.add_field("keepsettings", str(keep_settings).lower()) + form_data.add_field("update.zip", open(file, "rb"), filename="update.zip") - await self.send_command("systemupdate", form=form_data) \ No newline at end of file + await self.send_command("systemupdate", form=form_data)