Merge pull request #173

feature: add support for Vnish S19 Pro Hydro.
This commit is contained in:
Brett Rowan
2024-07-12 09:59:57 -06:00
committed by GitHub
5 changed files with 18 additions and 12 deletions

View File

@@ -24,6 +24,7 @@ from pyasic.miners.device.models import (
S19jPro, S19jPro,
S19NoPIC, S19NoPIC,
S19Pro, S19Pro,
S19ProHydro,
) )
@@ -57,3 +58,7 @@ class VNishS19j(VNish, S19j):
class VNishS19jPro(VNish, S19jPro): class VNishS19jPro(VNish, S19jPro):
pass pass
class VNishS19ProHydro(VNish, S19ProHydro):
pass

View File

@@ -22,6 +22,7 @@ from .S19 import (
VNishS19jPro, VNishS19jPro,
VNishS19NoPIC, VNishS19NoPIC,
VNishS19Pro, VNishS19Pro,
VNishS19ProHydro,
VNishS19XP, VNishS19XP,
) )
from .T19 import VNishT19 from .T19 import VNishT19

View File

@@ -17,11 +17,11 @@ from typing import List, Optional
from pyasic.config import MinerConfig from pyasic.config import MinerConfig
from pyasic.data import AlgoHashRate, Fan, HashBoard, HashUnit from pyasic.data import AlgoHashRate, Fan, HashBoard, HashUnit
from pyasic.data.pools import PoolMetrics, PoolUrl
from pyasic.errors import APIError from pyasic.errors import APIError
from pyasic.miners.data import DataFunction, DataLocations, DataOptions, RPCAPICommand from pyasic.miners.data import DataFunction, DataLocations, DataOptions, RPCAPICommand
from pyasic.miners.device.firmware import LuxOSFirmware from pyasic.miners.device.firmware import LuxOSFirmware
from pyasic.rpc.luxminer import LUXMinerRPCAPI from pyasic.rpc.luxminer import LUXMinerRPCAPI
from pyasic.data.pools import PoolMetrics, PoolUrl
LUXMINER_DATA_LOC = DataLocations( LUXMINER_DATA_LOC = DataLocations(
**{ **{
@@ -53,7 +53,7 @@ LUXMINER_DATA_LOC = DataLocations(
"_get_uptime", [RPCAPICommand("rpc_stats", "stats")] "_get_uptime", [RPCAPICommand("rpc_stats", "stats")]
), ),
str(DataOptions.POOLS): DataFunction( str(DataOptions.POOLS): DataFunction(
"get_pools", [RPCAPICommand("rpc_pools", "pools")] "_get_pools", [RPCAPICommand("rpc_pools", "pools")]
), ),
} }
) )

View File

@@ -386,6 +386,7 @@ MINER_CLASSES = {
"ANTMINER S19J PRO": VNishS19jPro, "ANTMINER S19J PRO": VNishS19jPro,
"ANTMINER S19A": VNishS19a, "ANTMINER S19A": VNishS19a,
"ANTMINER S19A PRO": VNishS19aPro, "ANTMINER S19A PRO": VNishS19aPro,
"ANTMINER S19 PRO HYD.": VNishS19ProHydro,
"ANTMINER T19": VNishT19, "ANTMINER T19": VNishT19,
"ANTMINER S21": VNishS21, "ANTMINER S21": VNishS21,
}, },

View File

@@ -15,14 +15,13 @@
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from __future__ import annotations from __future__ import annotations
import hashlib
import json import json
from pathlib import Path
from typing import Any from typing import Any
import httpx
import aiofiles import aiofiles
import aiohttp import httpx
import hashlib
from pathlib import Path
from pyasic import settings from pyasic import settings
from pyasic.errors import APIError from pyasic.errors import APIError
@@ -52,7 +51,7 @@ class ePICWebAPI(BaseWebAPI):
try: try:
if parameters.get("form") is not None: if parameters.get("form") is not None:
form_data = parameters["form"] form_data = parameters["form"]
form_data.add_field('password', self.pwd) form_data.add_field("password", self.pwd)
response = await client.post( response = await client.post(
f"http://{self.ip}:{self.port}/{command}", f"http://{self.ip}:{self.port}/{command}",
timeout=5, timeout=5,
@@ -149,7 +148,7 @@ class ePICWebAPI(BaseWebAPI):
return await self.send_command("capabilities") return await self.send_command("capabilities")
async def system_update(self, file: Path | str, keep_settings: bool = True): 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.""" command to initiate the update."""
# calculate the SHA256 checksum of the firmware file # calculate the SHA256 checksum of the firmware file
@@ -161,8 +160,8 @@ class ePICWebAPI(BaseWebAPI):
# prepare the multipart/form-data request # prepare the multipart/form-data request
form_data = aiohttp.FormData() form_data = aiohttp.FormData()
form_data.add_field('checksum', checksum) form_data.add_field("checksum", checksum)
form_data.add_field('keepsettings', str(keep_settings).lower()) 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("update.zip", open(file, "rb"), filename="update.zip")
await self.send_command("systemupdate", form=form_data) await self.send_command("systemupdate", form=form_data)