feature: create device_info field for MinerData.

This commit is contained in:
Upstream Data
2024-05-01 11:36:28 -06:00
parent ed3a4bd32a
commit 5f76cb9f0a
113 changed files with 223 additions and 122 deletions

View File

@@ -25,6 +25,7 @@ from pyasic.config import MinerConfig
from pyasic.config.mining import MiningModePowerTune from pyasic.config.mining import MiningModePowerTune
from .boards import HashBoard from .boards import HashBoard
from .device import DeviceInfo
from .error_codes import BraiinsOSError, InnosiliconError, WhatsminerError, X19Error from .error_codes import BraiinsOSError, InnosiliconError, WhatsminerError, X19Error
from .fans import Fan from .fans import Fan
@@ -71,9 +72,8 @@ class MinerData:
datetime: str = field(init=False) datetime: str = field(init=False)
timestamp: int = field(init=False) timestamp: int = field(init=False)
uptime: int = None uptime: int = None
device_info: DeviceInfo = None
mac: str = None mac: str = None
model: str = None
make: str = None
api_ver: str = None api_ver: str = None
fw_ver: str = None fw_ver: str = None
hostname: str = None hostname: str = None

11
pyasic/data/device.py Normal file
View File

@@ -0,0 +1,11 @@
from dataclasses import dataclass
from pyasic.device.firmware import MinerFirmware
from pyasic.device.makes import MinerMake
@dataclass
class DeviceInfo:
make: MinerMake = None
model: str = None
firmware: MinerFirmware = None

View File

27
pyasic/device/firmware.py Normal file
View File

@@ -0,0 +1,27 @@
# ------------------------------------------------------------------------------
# Copyright 2022 Upstream Data Inc -
# -
# Licensed under the Apache License, Version 2.0 (the "License"); -
# you may not use this file except in compliance with the License. -
# You may obtain a copy of the License at -
# -
# http://www.apache.org/licenses/LICENSE-2.0 -
# -
# Unless required by applicable law or agreed to in writing, software -
# distributed under the License is distributed on an "AS IS" BASIS, -
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -
# See the License for the specific language governing permissions and -
# limitations under the License. -
# ------------------------------------------------------------------------------
from enum import StrEnum
class MinerFirmware(StrEnum):
STOCK = "Stock"
BRAIINS_OS = "BOS+"
VNISH = "VNish"
EPIC = "ePIC"
HIVEON = "Hive"
LUXOS = "LuxOS"
MARATHON = "MaraFW"

View File

@@ -30,6 +30,7 @@ from pyasic.miners.data import (
RPCAPICommand, RPCAPICommand,
WebAPICommand, WebAPICommand,
) )
from pyasic.miners.device.firmware import StockFirmware
from pyasic.rpc.antminer import AntminerRPCAPI from pyasic.rpc.antminer import AntminerRPCAPI
from pyasic.ssh.antminer import AntminerModernSSH from pyasic.ssh.antminer import AntminerModernSSH
from pyasic.web.antminer import AntminerModernWebAPI, AntminerOldWebAPI from pyasic.web.antminer import AntminerModernWebAPI, AntminerOldWebAPI

View File

@@ -28,6 +28,7 @@ from pyasic.miners.data import (
RPCAPICommand, RPCAPICommand,
WebAPICommand, WebAPICommand,
) )
from pyasic.miners.device.firmware import StockFirmware
from pyasic.rpc.gcminer import GCMinerRPCAPI from pyasic.rpc.gcminer import GCMinerRPCAPI
from pyasic.web.auradine import AuradineWebAPI from pyasic.web.auradine import AuradineWebAPI
@@ -113,7 +114,7 @@ class AuradineLEDCodes(Enum):
return self.value return self.value
class Auradine(BaseMiner): class Auradine(StockFirmware):
"""Base handler for Auradine miners""" """Base handler for Auradine miners"""
_rpc_cls = GCMinerRPCAPI _rpc_cls = GCMinerRPCAPI

View File

@@ -21,6 +21,7 @@ from pyasic.data import Fan, HashBoard
from pyasic.errors import APIError from pyasic.errors import APIError
from pyasic.miners.backends.cgminer import CGMiner from pyasic.miners.backends.cgminer import CGMiner
from pyasic.miners.data import DataFunction, DataLocations, DataOptions, RPCAPICommand from pyasic.miners.data import DataFunction, DataLocations, DataOptions, RPCAPICommand
from pyasic.miners.device.firmware import StockFirmware
AVALON_DATA_LOC = DataLocations( AVALON_DATA_LOC = DataLocations(
**{ **{

View File

@@ -21,6 +21,7 @@ from pyasic.data import Fan, HashBoard
from pyasic.errors import APIError from pyasic.errors import APIError
from pyasic.miners.base import BaseMiner from pyasic.miners.base import BaseMiner
from pyasic.miners.data import DataFunction, DataLocations, DataOptions, RPCAPICommand from pyasic.miners.data import DataFunction, DataLocations, DataOptions, RPCAPICommand
from pyasic.miners.device.firmware import StockFirmware
from pyasic.rpc.bfgminer import BFGMinerRPCAPI from pyasic.rpc.bfgminer import BFGMinerRPCAPI
BFGMINER_DATA_LOC = DataLocations( BFGMINER_DATA_LOC = DataLocations(
@@ -53,7 +54,7 @@ BFGMINER_DATA_LOC = DataLocations(
) )
class BFGMiner(BaseMiner): class BFGMiner(StockFirmware):
"""Base handler for BFGMiner based miners.""" """Base handler for BFGMiner based miners."""
_rpc_cls = BFGMinerRPCAPI _rpc_cls = BFGMinerRPCAPI

View File

@@ -21,6 +21,7 @@ from pyasic.data import Fan, HashBoard
from pyasic.errors import APIError from pyasic.errors import APIError
from pyasic.miners.base import BaseMiner from pyasic.miners.base import BaseMiner
from pyasic.miners.data import DataFunction, DataLocations, DataOptions, RPCAPICommand from pyasic.miners.data import DataFunction, DataLocations, DataOptions, RPCAPICommand
from pyasic.miners.device.firmware import StockFirmware
from pyasic.rpc.bmminer import BMMinerRPCAPI from pyasic.rpc.bmminer import BMMinerRPCAPI
BMMINER_DATA_LOC = DataLocations( BMMINER_DATA_LOC = DataLocations(
@@ -57,7 +58,7 @@ BMMINER_DATA_LOC = DataLocations(
) )
class BMMiner(BaseMiner): class BMMiner(StockFirmware):
"""Base handler for BMMiner based miners.""" """Base handler for BMMiner based miners."""
_rpc_cls = BMMinerRPCAPI _rpc_cls = BMMinerRPCAPI

View File

@@ -32,6 +32,7 @@ from pyasic.miners.data import (
RPCAPICommand, RPCAPICommand,
WebAPICommand, WebAPICommand,
) )
from pyasic.miners.device.firmware import BraiinsOSFirmware
from pyasic.rpc.bosminer import BOSMinerRPCAPI from pyasic.rpc.bosminer import BOSMinerRPCAPI
from pyasic.ssh.braiins_os import BOSMinerSSH from pyasic.ssh.braiins_os import BOSMinerSSH
from pyasic.web.braiins_os import BOSerWebAPI, BOSMinerWebAPI from pyasic.web.braiins_os import BOSerWebAPI, BOSMinerWebAPI
@@ -95,7 +96,7 @@ BOSMINER_DATA_LOC = DataLocations(
) )
class BOSMiner(BaseMiner): class BOSMiner(BraiinsOSFirmware):
"""Handler for old versions of BraiinsOS+ (pre-gRPC)""" """Handler for old versions of BraiinsOS+ (pre-gRPC)"""
_rpc_cls = BOSMinerRPCAPI _rpc_cls = BOSMinerRPCAPI
@@ -105,8 +106,6 @@ class BOSMiner(BaseMiner):
_ssh_cls = BOSMinerSSH _ssh_cls = BOSMinerSSH
ssh: BOSMinerSSH ssh: BOSMinerSSH
firmware = "BOS+"
data_locations = BOSMINER_DATA_LOC data_locations = BOSMINER_DATA_LOC
supports_shutdown = True supports_shutdown = True
@@ -634,7 +633,7 @@ BOSER_DATA_LOC = DataLocations(
) )
class BOSer(BaseMiner): class BOSer(BraiinsOSFirmware):
"""Handler for new versions of BraiinsOS+ (post-gRPC)""" """Handler for new versions of BraiinsOS+ (post-gRPC)"""
_rpc_cls = BOSMinerRPCAPI _rpc_cls = BOSMinerRPCAPI
@@ -642,8 +641,6 @@ class BOSer(BaseMiner):
_web_cls = BOSerWebAPI _web_cls = BOSerWebAPI
web: BOSerWebAPI web: BOSerWebAPI
firmware = "BOS+"
data_locations = BOSER_DATA_LOC data_locations = BOSER_DATA_LOC
supports_autotuning = True supports_autotuning = True

View File

@@ -23,6 +23,7 @@ from pyasic.data.error_codes import MinerErrorData, WhatsminerError
from pyasic.errors import APIError from pyasic.errors import APIError
from pyasic.miners.base import BaseMiner from pyasic.miners.base import BaseMiner
from pyasic.miners.data import DataFunction, DataLocations, DataOptions, RPCAPICommand from pyasic.miners.data import DataFunction, DataLocations, DataOptions, RPCAPICommand
from pyasic.miners.device.firmware import StockFirmware
from pyasic.rpc.btminer import BTMinerRPCAPI from pyasic.rpc.btminer import BTMinerRPCAPI
BTMINER_DATA_LOC = DataLocations( BTMINER_DATA_LOC = DataLocations(
@@ -110,7 +111,7 @@ BTMINER_DATA_LOC = DataLocations(
) )
class BTMiner(BaseMiner): class BTMiner(StockFirmware):
"""Base handler for BTMiner based miners.""" """Base handler for BTMiner based miners."""
_rpc_cls = BTMinerRPCAPI _rpc_cls = BTMinerRPCAPI

View File

@@ -20,6 +20,7 @@ from pyasic.config import MinerConfig
from pyasic.errors import APIError from pyasic.errors import APIError
from pyasic.miners.base import BaseMiner from pyasic.miners.base import BaseMiner
from pyasic.miners.data import DataFunction, DataLocations, DataOptions, RPCAPICommand from pyasic.miners.data import DataFunction, DataLocations, DataOptions, RPCAPICommand
from pyasic.miners.device.firmware import StockFirmware
from pyasic.rpc.cgminer import CGMinerRPCAPI from pyasic.rpc.cgminer import CGMinerRPCAPI
CGMINER_DATA_LOC = DataLocations( CGMINER_DATA_LOC = DataLocations(
@@ -56,7 +57,7 @@ CGMINER_DATA_LOC = DataLocations(
) )
class CGMiner(BaseMiner): class CGMiner(StockFirmware):
"""Base handler for CGMiner based miners""" """Base handler for CGMiner based miners"""
_rpc_cls = CGMinerRPCAPI _rpc_cls = CGMinerRPCAPI

View File

@@ -23,6 +23,7 @@ from pyasic.errors import APIError
from pyasic.logger import logger from pyasic.logger import logger
from pyasic.miners.base import BaseMiner from pyasic.miners.base import BaseMiner
from pyasic.miners.data import DataFunction, DataLocations, DataOptions, WebAPICommand from pyasic.miners.data import DataFunction, DataLocations, DataOptions, WebAPICommand
from pyasic.miners.device.firmware import ePICFirmware
from pyasic.web.epic import ePICWebAPI from pyasic.web.epic import ePICWebAPI
EPIC_DATA_LOC = DataLocations( EPIC_DATA_LOC = DataLocations(
@@ -82,14 +83,12 @@ EPIC_DATA_LOC = DataLocations(
) )
class ePIC(BaseMiner): class ePIC(ePICFirmware):
"""Handler for miners with the ePIC board""" """Handler for miners with the ePIC board"""
_web_cls = ePICWebAPI _web_cls = ePICWebAPI
web: ePICWebAPI web: ePICWebAPI
firmware = "ePIC"
data_locations = EPIC_DATA_LOC data_locations = EPIC_DATA_LOC
supports_shutdown = True supports_shutdown = True

View File

@@ -27,6 +27,7 @@ from pyasic.miners.data import (
RPCAPICommand, RPCAPICommand,
WebAPICommand, WebAPICommand,
) )
from pyasic.miners.device.firmware import StockFirmware
from pyasic.web.goldshell import GoldshellWebAPI from pyasic.web.goldshell import GoldshellWebAPI
GOLDSHELL_DATA_LOC = DataLocations( GOLDSHELL_DATA_LOC = DataLocations(

View File

@@ -15,7 +15,8 @@
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.backends import BMMiner from pyasic.miners.backends import BMMiner
from pyasic.miners.device.firmware import HiveonFirmware
class Hiveon(BMMiner): class Hiveon(BMMiner, HiveonFirmware):
firmware = "Hive" pass

View File

@@ -28,6 +28,7 @@ from pyasic.miners.data import (
RPCAPICommand, RPCAPICommand,
WebAPICommand, WebAPICommand,
) )
from pyasic.miners.device.firmware import StockFirmware
from pyasic.web.innosilicon import InnosiliconWebAPI from pyasic.web.innosilicon import InnosiliconWebAPI
INNOSILICON_DATA_LOC = DataLocations( INNOSILICON_DATA_LOC = DataLocations(

View File

@@ -20,6 +20,7 @@ from pyasic.data import Fan, HashBoard
from pyasic.errors import APIError from pyasic.errors import APIError
from pyasic.miners.base import BaseMiner from pyasic.miners.base import BaseMiner
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.rpc.luxminer import LUXMinerRPCAPI from pyasic.rpc.luxminer import LUXMinerRPCAPI
LUXMINER_DATA_LOC = DataLocations( LUXMINER_DATA_LOC = DataLocations(
@@ -55,14 +56,12 @@ LUXMINER_DATA_LOC = DataLocations(
) )
class LUXMiner(BaseMiner): class LUXMiner(LuxOSFirmware):
"""Handler for LuxOS miners""" """Handler for LuxOS miners"""
_rpc_cls = LUXMinerRPCAPI _rpc_cls = LUXMinerRPCAPI
rpc: LUXMinerRPCAPI rpc: LUXMinerRPCAPI
firmware = "LuxOS"
data_locations = LUXMINER_DATA_LOC data_locations = LUXMINER_DATA_LOC
async def _get_session(self) -> Optional[str]: async def _get_session(self) -> Optional[str]:

View File

@@ -6,6 +6,7 @@ from pyasic.data import Fan, HashBoard
from pyasic.errors import APIError from pyasic.errors import APIError
from pyasic.miners.base import BaseMiner from pyasic.miners.base import BaseMiner
from pyasic.miners.data import DataFunction, DataLocations, DataOptions, WebAPICommand from pyasic.miners.data import DataFunction, DataLocations, DataOptions, WebAPICommand
from pyasic.miners.device.firmware import MaraFirmware, StockFirmware
from pyasic.misc import merge_dicts from pyasic.misc import merge_dicts
from pyasic.web.marathon import MaraWebAPI from pyasic.web.marathon import MaraWebAPI
@@ -63,14 +64,12 @@ MARA_DATA_LOC = DataLocations(
) )
class MaraMiner(BaseMiner): class MaraMiner(MaraFirmware):
_web_cls = MaraWebAPI _web_cls = MaraWebAPI
web: MaraWebAPI web: MaraWebAPI
data_locations = MARA_DATA_LOC data_locations = MARA_DATA_LOC
firmware = "MaraFW"
async def fault_light_off(self) -> bool: async def fault_light_off(self) -> bool:
res = await self.web.set_locate_miner(blinking=False) res = await self.web.set_locate_miner(blinking=False)
return res.get("blinking") is False return res.get("blinking") is False

View File

@@ -26,6 +26,7 @@ from pyasic.miners.data import (
RPCAPICommand, RPCAPICommand,
WebAPICommand, WebAPICommand,
) )
from pyasic.miners.device.firmware import VNishFirmware
from pyasic.web.vnish import VNishWebAPI from pyasic.web.vnish import VNishWebAPI
VNISH_DATA_LOC = DataLocations( VNISH_DATA_LOC = DataLocations(
@@ -82,7 +83,7 @@ VNISH_DATA_LOC = DataLocations(
) )
class VNish(BMMiner): class VNish(BMMiner, VNishFirmware):
"""Handler for VNish miners""" """Handler for VNish miners"""
_web_cls = VNishWebAPI _web_cls = VNishWebAPI
@@ -90,8 +91,6 @@ class VNish(BMMiner):
supports_shutdown = True supports_shutdown = True
firmware = "VNish"
data_locations = VNISH_DATA_LOC data_locations = VNISH_DATA_LOC
async def restart_backend(self) -> bool: async def restart_backend(self) -> bool:

View File

@@ -20,7 +20,10 @@ from typing import List, Optional, Protocol, Tuple, Type, TypeVar, Union
from pyasic.config import MinerConfig from pyasic.config import MinerConfig
from pyasic.data import Fan, HashBoard, MinerData from pyasic.data import Fan, HashBoard, MinerData
from pyasic.data.device import DeviceInfo
from pyasic.data.error_codes import MinerErrorData from pyasic.data.error_codes import MinerErrorData
from pyasic.device.firmware import MinerFirmware
from pyasic.device.makes import MinerMake
from pyasic.errors import APIError from pyasic.errors import APIError
from pyasic.logger import logger from pyasic.logger import logger
from pyasic.miners.data import DataLocations, DataOptions, RPCAPICommand, WebAPICommand from pyasic.miners.data import DataLocations, DataOptions, RPCAPICommand, WebAPICommand
@@ -36,9 +39,9 @@ class MinerProtocol(Protocol):
web: _web_cls = None web: _web_cls = None
ssh: _ssh_cls = None ssh: _ssh_cls = None
make: str = None make: MinerMake = None
raw_model: str = None raw_model: str = None
firmware: str = None firmware: MinerFirmware = None
expected_hashboards: int = 3 expected_hashboards: int = 3
expected_chips: int = None expected_chips: int = None
@@ -79,6 +82,10 @@ class MinerProtocol(Protocol):
model_data.append(f"({self.firmware})") model_data.append(f"({self.firmware})")
return " ".join(model_data) return " ".join(model_data)
@property
def device_info(self) -> DeviceInfo:
return DeviceInfo(make=self.make, model=self.raw_model, firmware=self.firmware)
@property @property
def api(self): def api(self):
return self.rpc return self.rpc
@@ -183,6 +190,14 @@ class MinerProtocol(Protocol):
""" """
return self.model return self.model
async def get_device_info(self) -> Optional[DeviceInfo]:
"""Get device information, including model, make, and firmware.
Returns:
A dataclass containing device information.
"""
return self.device_info
async def get_api_ver(self) -> Optional[str]: async def get_api_ver(self) -> Optional[str]:
"""Get the API version of the miner and is as a string. """Get the API version of the miner and is as a string.
@@ -465,8 +480,7 @@ class MinerProtocol(Protocol):
""" """
data = MinerData( data = MinerData(
ip=str(self.ip), ip=str(self.ip),
make=self.make, device_info=self.device_info,
model=self.model,
expected_chips=( expected_chips=(
self.expected_chips * self.expected_hashboards self.expected_chips * self.expected_hashboards
if self.expected_chips is not None if self.expected_chips is not None

View File

View File

@@ -0,0 +1,46 @@
# ------------------------------------------------------------------------------
# Copyright 2022 Upstream Data Inc -
# -
# Licensed under the Apache License, Version 2.0 (the "License"); -
# you may not use this file except in compliance with the License. -
# You may obtain a copy of the License at -
# -
# http://www.apache.org/licenses/LICENSE-2.0 -
# -
# Unless required by applicable law or agreed to in writing, software -
# distributed under the License is distributed on an "AS IS" BASIS, -
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -
# See the License for the specific language governing permissions and -
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.device.firmware import MinerFirmware
from pyasic.miners.base import BaseMiner
class StockFirmware(BaseMiner):
firmware = MinerFirmware.STOCK
class BraiinsOSFirmware(BaseMiner):
firmware = MinerFirmware.BRAIINS_OS
class VNishFirmware(BaseMiner):
firmware = MinerFirmware.VNISH
class ePICFirmware(BaseMiner):
firmware = MinerFirmware.EPIC
class HiveonFirmware(BaseMiner):
firmware = MinerFirmware.HIVEON
class LuxOSFirmware(BaseMiner):
firmware = MinerFirmware.LUXOS
class MaraFirmware(BaseMiner):
firmware = MinerFirmware.MARATHON

View File

@@ -34,9 +34,9 @@ from pyasic.miners.backends import *
from pyasic.miners.backends.unknown import UnknownMiner from pyasic.miners.backends.unknown import UnknownMiner
from pyasic.miners.base import AnyMiner from pyasic.miners.base import AnyMiner
from pyasic.miners.blockminer import * from pyasic.miners.blockminer import *
from pyasic.miners.device.makes import *
from pyasic.miners.goldshell import * from pyasic.miners.goldshell import *
from pyasic.miners.innosilicon import * from pyasic.miners.innosilicon import *
from pyasic.miners.makes import *
from pyasic.miners.whatsminer import * from pyasic.miners.whatsminer import *

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import AntMinerMake from pyasic.miners.device.makes import AntMinerMake
class Z15(AntMinerMake): class Z15(AntMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import AntMinerMake from pyasic.miners.device.makes import AntMinerMake
class S17(AntMinerMake): class S17(AntMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import AntMinerMake from pyasic.miners.device.makes import AntMinerMake
class T17(AntMinerMake): class T17(AntMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import AntMinerMake from pyasic.miners.device.makes import AntMinerMake
class S19(AntMinerMake): class S19(AntMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import AntMinerMake from pyasic.miners.device.makes import AntMinerMake
class T19(AntMinerMake): class T19(AntMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import AntMinerMake from pyasic.miners.device.makes import AntMinerMake
class S21(AntMinerMake): class S21(AntMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import AntMinerMake from pyasic.miners.device.makes import AntMinerMake
class T21(AntMinerMake): class T21(AntMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import AntMinerMake from pyasic.miners.device.makes import AntMinerMake
class D3(AntMinerMake): class D3(AntMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import AntMinerMake from pyasic.miners.device.makes import AntMinerMake
class HS3(AntMinerMake): class HS3(AntMinerMake):

View File

@@ -13,7 +13,7 @@
# See the License for the specific language governing permissions and - # See the License for the specific language governing permissions and -
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import AntMinerMake from pyasic.miners.device.makes import AntMinerMake
class L3Plus(AntMinerMake): class L3Plus(AntMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import AntMinerMake from pyasic.miners.device.makes import AntMinerMake
class DR5(AntMinerMake): class DR5(AntMinerMake):

View File

@@ -13,7 +13,7 @@
# See the License for the specific language governing permissions and - # See the License for the specific language governing permissions and -
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import AntMinerMake from pyasic.miners.device.makes import AntMinerMake
class L7(AntMinerMake): class L7(AntMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import AntMinerMake from pyasic.miners.device.makes import AntMinerMake
class E9Pro(AntMinerMake): class E9Pro(AntMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import AntMinerMake from pyasic.miners.device.makes import AntMinerMake
class S9(AntMinerMake): class S9(AntMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import AntMinerMake from pyasic.miners.device.makes import AntMinerMake
class T9(AntMinerMake): class T9(AntMinerMake):

View File

@@ -1,4 +1,4 @@
from pyasic.miners.makes import AuradineMake from pyasic.miners.device.makes import AuradineMake
class AuradineAD2500(AuradineMake): class AuradineAD2500(AuradineMake):

View File

@@ -1,4 +1,4 @@
from pyasic.miners.makes import AuradineMake from pyasic.miners.device.makes import AuradineMake
class AuradineAD3500(AuradineMake): class AuradineAD3500(AuradineMake):

View File

@@ -1,4 +1,4 @@
from pyasic.miners.makes import AuradineMake from pyasic.miners.device.makes import AuradineMake
class AuradineAI2500(AuradineMake): class AuradineAI2500(AuradineMake):

View File

@@ -1,4 +1,4 @@
from pyasic.miners.makes import AuradineMake from pyasic.miners.device.makes import AuradineMake
class AuradineAI3680(AuradineMake): class AuradineAI3680(AuradineMake):

View File

@@ -1,4 +1,4 @@
from pyasic.miners.makes import AuradineMake from pyasic.miners.device.makes import AuradineMake
class AuradineAT1500(AuradineMake): class AuradineAT1500(AuradineMake):

View File

@@ -1,4 +1,4 @@
from pyasic.miners.makes import AuradineMake from pyasic.miners.device.makes import AuradineMake
class AuradineAT2860(AuradineMake): class AuradineAT2860(AuradineMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import AvalonMinerMake from pyasic.miners.device.makes import AvalonMinerMake
class Avalon1026(AvalonMinerMake): class Avalon1026(AvalonMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import AvalonMinerMake from pyasic.miners.device.makes import AvalonMinerMake
class Avalon1047(AvalonMinerMake): class Avalon1047(AvalonMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import AvalonMinerMake from pyasic.miners.device.makes import AvalonMinerMake
class Avalon1066(AvalonMinerMake): class Avalon1066(AvalonMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import AvalonMinerMake from pyasic.miners.device.makes import AvalonMinerMake
class Avalon1166Pro(AvalonMinerMake): class Avalon1166Pro(AvalonMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import AvalonMinerMake from pyasic.miners.device.makes import AvalonMinerMake
class Avalon1246(AvalonMinerMake): class Avalon1246(AvalonMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import AvalonMinerMake from pyasic.miners.device.makes import AvalonMinerMake
class Avalon721(AvalonMinerMake): class Avalon721(AvalonMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import AvalonMinerMake from pyasic.miners.device.makes import AvalonMinerMake
class Avalon741(AvalonMinerMake): class Avalon741(AvalonMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import AvalonMinerMake from pyasic.miners.device.makes import AvalonMinerMake
class Avalon761(AvalonMinerMake): class Avalon761(AvalonMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import AvalonMinerMake from pyasic.miners.device.makes import AvalonMinerMake
class Avalon821(AvalonMinerMake): class Avalon821(AvalonMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import AvalonMinerMake from pyasic.miners.device.makes import AvalonMinerMake
class Avalon841(AvalonMinerMake): class Avalon841(AvalonMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import AvalonMinerMake from pyasic.miners.device.makes import AvalonMinerMake
class Avalon851(AvalonMinerMake): class Avalon851(AvalonMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import AvalonMinerMake from pyasic.miners.device.makes import AvalonMinerMake
class Avalon921(AvalonMinerMake): class Avalon921(AvalonMinerMake):

View File

@@ -1,4 +1,4 @@
from pyasic.miners.makes import ePICMake from pyasic.miners.device.makes import ePICMake
class BlockMiner520i(ePICMake): class BlockMiner520i(ePICMake):

View File

@@ -13,7 +13,7 @@
# See the License for the specific language governing permissions and - # See the License for the specific language governing permissions and -
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import GoldshellMake from pyasic.miners.device.makes import GoldshellMake
class CK5(GoldshellMake): class CK5(GoldshellMake):

View File

@@ -13,7 +13,7 @@
# See the License for the specific language governing permissions and - # See the License for the specific language governing permissions and -
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import GoldshellMake from pyasic.miners.device.makes import GoldshellMake
class HS5(GoldshellMake): class HS5(GoldshellMake):

View File

@@ -13,7 +13,7 @@
# See the License for the specific language governing permissions and - # See the License for the specific language governing permissions and -
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import GoldshellMake from pyasic.miners.device.makes import GoldshellMake
class KD5(GoldshellMake): class KD5(GoldshellMake):

View File

@@ -13,7 +13,7 @@
# See the License for the specific language governing permissions and - # See the License for the specific language governing permissions and -
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import GoldshellMake from pyasic.miners.device.makes import GoldshellMake
class KDBoxII(GoldshellMake): class KDBoxII(GoldshellMake):

View File

@@ -13,7 +13,7 @@
# See the License for the specific language governing permissions and - # See the License for the specific language governing permissions and -
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import GoldshellMake from pyasic.miners.device.makes import GoldshellMake
class KDMax(GoldshellMake): class KDMax(GoldshellMake):

View File

@@ -13,7 +13,7 @@
# See the License for the specific language governing permissions and - # See the License for the specific language governing permissions and -
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import InnosiliconMake from pyasic.miners.device.makes import InnosiliconMake
class A10X(InnosiliconMake): class A10X(InnosiliconMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import InnosiliconMake from pyasic.miners.device.makes import InnosiliconMake
class T3HPlus(InnosiliconMake): class T3HPlus(InnosiliconMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake from pyasic.miners.device.makes import WhatsMinerMake
class M20V10(WhatsMinerMake): class M20V10(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake from pyasic.miners.device.makes import WhatsMinerMake
class M20PV10(WhatsMinerMake): class M20PV10(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake from pyasic.miners.device.makes import WhatsMinerMake
class M20SV10(WhatsMinerMake): class M20SV10(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake from pyasic.miners.device.makes import WhatsMinerMake
class M20SPlusV30(WhatsMinerMake): class M20SPlusV30(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake from pyasic.miners.device.makes import WhatsMinerMake
class M21V10(WhatsMinerMake): class M21V10(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake from pyasic.miners.device.makes import WhatsMinerMake
class M21SV20(WhatsMinerMake): class M21SV20(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake from pyasic.miners.device.makes import WhatsMinerMake
class M21SPlusV20(WhatsMinerMake): class M21SPlusV20(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake from pyasic.miners.device.makes import WhatsMinerMake
class M29V10(WhatsMinerMake): class M29V10(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake from pyasic.miners.device.makes import WhatsMinerMake
class M30V10(WhatsMinerMake): class M30V10(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake from pyasic.miners.device.makes import WhatsMinerMake
class M30KV10(WhatsMinerMake): class M30KV10(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake from pyasic.miners.device.makes import WhatsMinerMake
class M30LV10(WhatsMinerMake): class M30LV10(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake from pyasic.miners.device.makes import WhatsMinerMake
class M30SV10(WhatsMinerMake): class M30SV10(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake from pyasic.miners.device.makes import WhatsMinerMake
class M30SPlusV10(WhatsMinerMake): class M30SPlusV10(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake from pyasic.miners.device.makes import WhatsMinerMake
class M30SPlusPlusV10(WhatsMinerMake): class M30SPlusPlusV10(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake from pyasic.miners.device.makes import WhatsMinerMake
class M31V10(WhatsMinerMake): class M31V10(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake from pyasic.miners.device.makes import WhatsMinerMake
class M31HV10(WhatsMinerMake): class M31HV10(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake from pyasic.miners.device.makes import WhatsMinerMake
class M31LV10(WhatsMinerMake): class M31LV10(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake from pyasic.miners.device.makes import WhatsMinerMake
class M31SV10(WhatsMinerMake): class M31SV10(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake from pyasic.miners.device.makes import WhatsMinerMake
class M31SEV10(WhatsMinerMake): class M31SEV10(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake from pyasic.miners.device.makes import WhatsMinerMake
class M31SPlusV10(WhatsMinerMake): class M31SPlusV10(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake from pyasic.miners.device.makes import WhatsMinerMake
class M32V10(WhatsMinerMake): class M32V10(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake from pyasic.miners.device.makes import WhatsMinerMake
class M32S(WhatsMinerMake): class M32S(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake from pyasic.miners.device.makes import WhatsMinerMake
class M33V10(WhatsMinerMake): class M33V10(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake from pyasic.miners.device.makes import WhatsMinerMake
class M33SVG30(WhatsMinerMake): class M33SVG30(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake from pyasic.miners.device.makes import WhatsMinerMake
class M33SPlusVG20(WhatsMinerMake): class M33SPlusVG20(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake from pyasic.miners.device.makes import WhatsMinerMake
class M33SPlusPlusVH20(WhatsMinerMake): class M33SPlusPlusVH20(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake from pyasic.miners.device.makes import WhatsMinerMake
class M34SPlusVE10(WhatsMinerMake): class M34SPlusVE10(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake from pyasic.miners.device.makes import WhatsMinerMake
class M36SVE10(WhatsMinerMake): class M36SVE10(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake from pyasic.miners.device.makes import WhatsMinerMake
class M36SPlusVG30(WhatsMinerMake): class M36SPlusVG30(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake from pyasic.miners.device.makes import WhatsMinerMake
class M36SPlusPlusVH30(WhatsMinerMake): class M36SPlusPlusVH30(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake from pyasic.miners.device.makes import WhatsMinerMake
class M39V10(WhatsMinerMake): class M39V10(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake from pyasic.miners.device.makes import WhatsMinerMake
class M50VE30(WhatsMinerMake): class M50VE30(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake from pyasic.miners.device.makes import WhatsMinerMake
class M50SVJ10(WhatsMinerMake): class M50SVJ10(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake from pyasic.miners.device.makes import WhatsMinerMake
class M50SPlusVH30(WhatsMinerMake): class M50SPlusVH30(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake from pyasic.miners.device.makes import WhatsMinerMake
class M50SPlusPlusVK10(WhatsMinerMake): class M50SPlusPlusVK10(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake from pyasic.miners.device.makes import WhatsMinerMake
class M53VH30(WhatsMinerMake): class M53VH30(WhatsMinerMake):

Some files were not shown because too many files have changed in this diff Show More