feature: add serial number for antminers
This commit is contained in:
@@ -83,6 +83,7 @@ class MinerData(BaseModel):
|
||||
|
||||
# about
|
||||
device_info: DeviceInfo | None = None
|
||||
serial_number: str | None = None
|
||||
mac: str | None = None
|
||||
api_ver: str | None = None
|
||||
fw_ver: str | None = None
|
||||
|
||||
@@ -39,6 +39,10 @@ from pyasic.web.antminer import AntminerModernWebAPI, AntminerOldWebAPI
|
||||
|
||||
ANTMINER_MODERN_DATA_LOC = DataLocations(
|
||||
**{
|
||||
str(DataOptions.SERIAL_NUMBER): DataFunction(
|
||||
"_get_serial_number",
|
||||
[WebAPICommand("web_get_system_info", "get_system_info")],
|
||||
),
|
||||
str(DataOptions.MAC): DataFunction(
|
||||
"_get_mac",
|
||||
[WebAPICommand("web_get_system_info", "get_system_info")],
|
||||
@@ -360,6 +364,21 @@ class AntminerModern(BMMiner):
|
||||
except LookupError:
|
||||
pass
|
||||
|
||||
async def _get_serial_number(
|
||||
self, web_get_system_info: dict = None
|
||||
) -> Optional[str]:
|
||||
if web_get_system_info is None:
|
||||
try:
|
||||
web_get_system_info = await self.web.get_system_info()
|
||||
except APIError:
|
||||
pass
|
||||
|
||||
if web_get_system_info is not None:
|
||||
try:
|
||||
return web_get_system_info["serinum"]
|
||||
except LookupError:
|
||||
pass
|
||||
|
||||
async def set_static_ip(
|
||||
self,
|
||||
ip: str,
|
||||
|
||||
@@ -209,6 +209,14 @@ class MinerProtocol(Protocol):
|
||||
### DATA GATHERING FUNCTIONS (get_{some_data}) ###
|
||||
##################################################
|
||||
|
||||
async def get_serial_number(self) -> Optional[str]:
|
||||
"""Get the serial number of the miner and return it as a string.
|
||||
|
||||
Returns:
|
||||
A string representing the serial number of the miner.
|
||||
"""
|
||||
return await self._get_serial_number()
|
||||
|
||||
async def get_mac(self) -> Optional[str]:
|
||||
"""Get the MAC address of the miner and return it as a string.
|
||||
|
||||
@@ -379,6 +387,9 @@ class MinerProtocol(Protocol):
|
||||
"""
|
||||
return await self._get_pools()
|
||||
|
||||
async def _get_serial_number(self) -> Optional[str]:
|
||||
pass
|
||||
|
||||
async def _get_mac(self) -> Optional[str]:
|
||||
pass
|
||||
|
||||
|
||||
@@ -20,6 +20,7 @@ from typing import List, Union
|
||||
|
||||
|
||||
class DataOptions(Enum):
|
||||
SERIAL_NUMBER = "serial_number"
|
||||
MAC = "mac"
|
||||
API_VERSION = "api_ver"
|
||||
FW_VERSION = "fw_ver"
|
||||
|
||||
@@ -92,6 +92,7 @@ class MinersTest(unittest.TestCase):
|
||||
"hashrate",
|
||||
"hostname",
|
||||
"is_mining",
|
||||
"serial_number",
|
||||
"mac",
|
||||
"expected_hashrate",
|
||||
"uptime",
|
||||
|
||||
Reference in New Issue
Block a user