finished updating the miner type handlers to create subclasses of the backend and type to create a miner, each of which handles its own data to simplify creation of new miner types

This commit is contained in:
UpstreamData
2022-05-13 11:27:56 -06:00
parent 06540efc98
commit 44012c50d6
115 changed files with 644 additions and 735 deletions

View File

@@ -1,12 +1,8 @@
from miners.bmminer import BMMiner
from miners._backends import BMMiner
from miners._types import S17
class BMMinerS17(BMMiner):
class BMMinerS17(BMMiner, S17):
def __init__(self, ip: str) -> None:
super().__init__(ip)
self.api_type = "BMMiner"
self.model = "S17"
self.nominal_chips = 65
def __repr__(self) -> str:
return f"BMMinerS17: {str(self.ip)}"
self.ip = ip

View File

@@ -1,12 +1,8 @@
from miners.bmminer import BMMiner
from miners._backends import BMMiner
from miners._types import S17Plus
class BMMinerS17Plus(BMMiner):
class BMMinerS17Plus(BMMiner, S17Plus):
def __init__(self, ip: str) -> None:
super().__init__(ip)
self.api_type = "BMMiner"
self.model = "S17+"
self.nominal_chips = 65
def __repr__(self) -> str:
return f"BMMinerS17+: {str(self.ip)}"
self.ip = ip

View File

@@ -1,12 +1,8 @@
from miners.bmminer import BMMiner
from miners._backends import BMMiner
from miners._types import S17Pro
class BMMinerS17Pro(BMMiner):
class BMMinerS17Pro(BMMiner, S17Pro):
def __init__(self, ip: str) -> None:
super().__init__(ip)
self.api_type = "BMMiner"
self.model = "S17 Pro"
self.nominal_chips = 65
def __repr__(self) -> str:
return f"BMMinerS17Pro: {str(self.ip)}"
self.ip = ip

View File

@@ -1,12 +1,8 @@
from miners.bmminer import BMMiner
from miners._backends import BMMiner
from miners._types import S17e
class BMMinerS17e(BMMiner):
class BMMinerS17e(BMMiner, S17e):
def __init__(self, ip: str) -> None:
super().__init__(ip)
self.api_type = "BMMiner"
self.model = "S17e"
self.nominal_chips = 65
def __repr__(self) -> str:
return f"BMMinerS17e: {str(self.ip)}"
self.ip = ip

View File

@@ -1,12 +1,8 @@
from miners.bmminer import BMMiner
from miners._backends import BMMiner
from miners._types import T17
class BMMinerT17(BMMiner):
class BMMinerT17(BMMiner, T17):
def __init__(self, ip: str) -> None:
super().__init__(ip)
self.api_type = "BMMiner"
self.model = "T17"
self.nominal_chips = 65
def __repr__(self) -> str:
return f"BMMinerT17: {str(self.ip)}"
self.ip = ip

View File

@@ -1,12 +1,8 @@
from miners.bmminer import BMMiner
from miners._backends import BMMiner
from miners._types import T17Plus
class BMMinerT17Plus(BMMiner):
class BMMinerT17Plus(BMMiner, T17Plus):
def __init__(self, ip: str) -> None:
super().__init__(ip)
self.api_type = "BMMiner"
self.model = "T17+"
self.nominal_chips = 65
def __repr__(self) -> str:
return f"BMMinerT17+: {str(self.ip)}"
self.ip = ip

View File

@@ -1,12 +1,8 @@
from miners.bmminer import BMMiner
from miners._backends import BMMiner
from miners._types import T17e
class BMMinerT17e(BMMiner):
class BMMinerT17e(BMMiner, T17e):
def __init__(self, ip: str) -> None:
super().__init__(ip)
self.api_type = "BMMiner"
self.model = "T17e"
self.nominal_chips = 65
def __repr__(self) -> str:
return f"BMMinerT17e: {str(self.ip)}"
self.ip = ip

View File

@@ -1,12 +1,8 @@
from miners.bmminer import BMMiner
from miners._backends import BMMiner
from miners._types import S19
class BMMinerS19(BMMiner):
class BMMinerS19(BMMiner, S19):
def __init__(self, ip: str) -> None:
super().__init__(ip)
self.api_type = "BMMiner"
self.model = "S19"
self.nominal_chips = 114
def __repr__(self) -> str:
return f"BMMinerS19: {str(self.ip)}"
self.ip = ip

View File

@@ -1,12 +1,8 @@
from miners.bmminer import BMMiner
from miners._backends import BMMiner
from miners._types import S19Pro
class BMMinerS19Pro(BMMiner):
class BMMinerS19Pro(BMMiner, S19Pro):
def __init__(self, ip: str) -> None:
super().__init__(ip)
self.api_type = "BMMiner"
self.model = "S19 Pro"
self.nominal_chips = 114
def __repr__(self) -> str:
return f"BMMinerS19Pro: {str(self.ip)}"
self.ip = ip

View File

@@ -1,12 +1,8 @@
from miners.bmminer import BMMiner
from miners._backends import BMMiner
from miners._types import S19j
class BMMinerS19j(BMMiner):
class BMMinerS19j(BMMiner, S19j):
def __init__(self, ip: str) -> None:
super().__init__(ip)
self.api_type = "BMMiner"
self.model = "S19j"
self.nominal_chips = 114
def __repr__(self) -> str:
return f"BMMinerS19j: {str(self.ip)}"
self.ip = ip

View File

@@ -1,12 +1,8 @@
from miners.bmminer import BMMiner
from miners._backends import BMMiner
from miners._types import S19jPro
class BMMinerS19jPro(BMMiner):
class BMMinerS19jPro(BMMiner, S19jPro):
def __init__(self, ip: str) -> None:
super().__init__(ip)
self.api_type = "BMMiner"
self.model = "S19j Pro"
self.nominal_chips = 114
def __repr__(self) -> str:
return f"BMMinerS19jPro: {str(self.ip)}"
self.ip = ip

View File

@@ -1,12 +1,8 @@
from miners.bmminer import BMMiner
from miners._backends import BMMiner
from miners._types import T19
class BMMinerT19(BMMiner):
class BMMinerT19(BMMiner, T19):
def __init__(self, ip: str) -> None:
super().__init__(ip)
self.api_type = "BMMiner"
self.model = "T19"
self.nominal_chips = 114
def __repr__(self) -> str:
return f"BMMinerT19: {str(self.ip)}"
self.ip = ip

View File

@@ -1,11 +1,8 @@
from miners.bmminer import BMMiner
from miners._backends import BMMiner
from miners._types import S9
class BMMinerS9(BMMiner):
class BMMinerS9(BMMiner, S9):
def __init__(self, ip: str) -> None:
super().__init__(ip)
self.model = "S9"
self.api_type = "BMMiner"
def __repr__(self) -> str:
return f"BMMinerS9: {str(self.ip)}"
self.ip = ip

View File

@@ -1,11 +1,8 @@
from miners.bmminer import BMMiner
from miners._backends import BMMiner
from miners._types import T9
class BMMinerT9(BMMiner):
class BMMinerT9(BMMiner, T9):
def __init__(self, ip: str) -> None:
super().__init__(ip)
self.model = "T9"
self.api_type = "BMMiner"
def __repr__(self) -> str:
return f"BMMinerT9: {str(self.ip)}"
self.ip = ip

View File

@@ -1,12 +1,8 @@
from miners.bosminer import BOSMiner
from miners._backends import BOSMiner
from miners._types import S17
class BOSMinerS17(BOSMiner):
class BOSMinerS17(BOSMiner, S17):
def __init__(self, ip: str) -> None:
super().__init__(ip)
self.api_type = "BOSMiner"
self.model = "S17"
self.nominal_chips = 65
def __repr__(self) -> str:
return f"BOSMinerS17: {str(self.ip)}"
self.ip = ip

View File

@@ -1,12 +1,8 @@
from miners.bosminer import BOSMiner
from miners._backends import BOSMiner
from miners._types import S17Plus
class BOSMinerS17Plus(BOSMiner):
class BOSMinerS17Plus(BOSMiner, S17Plus):
def __init__(self, ip: str) -> None:
super().__init__(ip)
self.api_type = "BOSMiner"
self.model = "S17+"
self.nominal_chips = 65
def __repr__(self) -> str:
return f"BOSMinerS17+: {str(self.ip)}"
self.ip = ip

View File

@@ -1,12 +1,8 @@
from miners.bosminer import BOSMiner
from miners._backends import BOSMiner
from miners._types import S17Pro
class BOSMinerS17Pro(BOSMiner):
class BOSMinerS17Pro(BOSMiner, S17Pro):
def __init__(self, ip: str) -> None:
super().__init__(ip)
self.api_type = "BOSMiner"
self.model = "S17 Pro"
self.nominal_chips = 65
def __repr__(self) -> str:
return f"BOSMinerS17Pro: {str(self.ip)}"
self.ip = ip

View File

@@ -1,12 +1,8 @@
from miners.bosminer import BOSMiner
from miners._backends import BOSMiner
from miners._types import S17e
class BOSMinerS17e(BOSMiner):
class BOSMinerS17e(BOSMiner, S17e):
def __init__(self, ip: str) -> None:
super().__init__(ip)
self.api_type = "BOSMiner"
self.model = "S17e"
self.nominal_chips = 65
def __repr__(self) -> str:
return f"BOSMinerS17e: {str(self.ip)}"
self.ip = ip

View File

@@ -1,12 +1,8 @@
from miners.bosminer import BOSMiner
from miners._backends import BOSMiner
from miners._types import T17
class BOSMinerT17(BOSMiner):
class BOSMinerT17(BOSMiner, T17):
def __init__(self, ip: str) -> None:
super().__init__(ip)
self.api_type = "BOSMiner"
self.model = "T17"
self.nominal_chips = 65
def __repr__(self) -> str:
return f"BOSMinerT17: {str(self.ip)}"
self.ip = ip

View File

@@ -1,12 +1,8 @@
from miners.bosminer import BOSMiner
from miners._backends import BOSMiner
from miners._types import T17Plus
class BOSMinerT17Plus(BOSMiner):
class BOSMinerT17Plus(BOSMiner, T17Plus):
def __init__(self, ip: str) -> None:
super().__init__(ip)
self.api_type = "BOSMiner"
self.model = "T17+"
self.nominal_chips = 65
def __repr__(self) -> str:
return f"BOSMinerT17+: {str(self.ip)}"
self.ip = ip

View File

@@ -1,12 +1,8 @@
from miners.bosminer import BOSMiner
from miners._backends import BOSMiner
from miners._types import T17e
class BOSMinerT17e(BOSMiner):
class BOSMinerT17e(BOSMiner, T17e):
def __init__(self, ip: str) -> None:
super().__init__(ip)
self.api_type = "BOSMiner"
self.model = "T17e"
self.nominal_chips = 65
def __repr__(self) -> str:
return f"BOSMinerT17e: {str(self.ip)}"
self.ip = ip

View File

@@ -1,12 +1,8 @@
from miners.bosminer import BOSMiner
from miners._backends import BOSMiner
from miners._types import S19
class BOSMinerS19(BOSMiner):
class BOSMinerS19(BOSMiner, S19):
def __init__(self, ip: str) -> None:
super().__init__(ip)
self.api_type = "BOSMiner"
self.model = "S19"
self.nominal_chips = 114
def __repr__(self) -> str:
return f"BOSMinerS19: {str(self.ip)}"
self.ip = ip

View File

@@ -1,12 +1,8 @@
from miners.bosminer import BOSMiner
from miners._backends import BOSMiner
from miners._types import S19Pro
class BOSMinerS19Pro(BOSMiner):
class BOSMinerS19Pro(BOSMiner, S19Pro):
def __init__(self, ip: str) -> None:
super().__init__(ip)
self.api_type = "BOSMiner"
self.model = "S19 Pro"
self.nominal_chips = 114
def __repr__(self) -> str:
return f"BOSMinerS19Pro: {str(self.ip)}"
self.ip = ip

View File

@@ -1,12 +1,8 @@
from miners.bosminer import BOSMiner
from miners._backends import BOSMiner
from miners._types import S19j
class BOSMinerS19j(BOSMiner):
class BOSMinerS19j(BOSMiner, S19j):
def __init__(self, ip: str) -> None:
super().__init__(ip)
self.api_type = "BOSMiner"
self.model = "S19j"
self.nominal_chips = 114
def __repr__(self) -> str:
return f"BOSMinerS19j: {str(self.ip)}"
self.ip = ip

View File

@@ -1,12 +1,8 @@
from miners.bosminer import BOSMiner
from miners._backends import BOSMiner
from miners._types import S19jPro
class BOSMinerS19jPro(BOSMiner):
class BOSMinerS19jPro(BOSMiner, S19jPro):
def __init__(self, ip: str) -> None:
super().__init__(ip)
self.api_type = "BOSMiner"
self.model = "S19j Pro"
self.nominal_chips = 114
def __repr__(self) -> str:
return f"BOSMinerS19jPro: {str(self.ip)}"
self.ip = ip

View File

@@ -1,12 +1,8 @@
from miners.bosminer import BOSMiner
from miners._backends import BOSMiner
from miners._types import T19
class BOSMinerT19(BOSMiner):
class BOSMinerT19(BOSMiner, T19):
def __init__(self, ip: str) -> None:
super().__init__(ip)
self.api_type = "BOSMiner"
self.model = "T19"
self.nominal_chips = 114
def __repr__(self) -> str:
return f"BOSMinerT19: {str(self.ip)}"
self.ip = ip

View File

@@ -1,11 +1,8 @@
from miners.bosminer import BOSMiner
from miners._backends import BOSMiner
from miners._types import S9
class BOSMinerS9(BOSMiner):
class BOSMinerS9(BOSMiner, S9):
def __init__(self, ip: str) -> None:
super().__init__(ip)
self.model = "S9"
self.api_type = "BOSMiner"
def __repr__(self) -> str:
return f"BOSMinerS9: {str(self.ip)}"
self.ip = ip

View File

@@ -1,12 +1,8 @@
from miners.cgminer import CGMiner
from miners._backends import CGMiner
from miners._types import S17
class CGMinerS17(CGMiner):
class CGMinerS17(CGMiner, S17):
def __init__(self, ip: str) -> None:
super().__init__(ip)
self.api_type = "CGMiner"
self.model = "S17"
self.nominal_chips = 65
def __repr__(self) -> str:
return f"CGMinerS17: {str(self.ip)}"
self.ip = ip

View File

@@ -1,12 +1,8 @@
from miners.cgminer import CGMiner
from miners._backends import CGMiner
from miners._types import S17Plus
class CGMinerS17Plus(CGMiner):
class CGMinerS17Plus(CGMiner, S17Plus):
def __init__(self, ip: str) -> None:
super().__init__(ip)
self.api_type = "CGMiner"
self.model = "S17+"
self.nominal_chips = 65
def __repr__(self) -> str:
return f"CGMinerS17+: {str(self.ip)}"
self.ip = ip

View File

@@ -1,12 +1,8 @@
from miners.cgminer import CGMiner
from miners._backends import CGMiner
from miners._types import S17Pro
class CGMinerS17Pro(CGMiner):
class CGMinerS17Pro(CGMiner, S17Pro):
def __init__(self, ip: str) -> None:
super().__init__(ip)
self.api_type = "CGMiner"
self.model = "S17 Pro"
self.nominal_chips = 65
def __repr__(self) -> str:
return f"CGMinerS17Pro: {str(self.ip)}"
self.ip = ip

View File

@@ -1,12 +1,8 @@
from miners.cgminer import CGMiner
from miners._backends import CGMiner
from miners._types import S17e
class CGMinerS17e(CGMiner):
class CGMinerS17e(CGMiner, S17e):
def __init__(self, ip: str) -> None:
super().__init__(ip)
self.api_type = "CGMiner"
self.model = "S17e"
self.nominal_chips = 65
def __repr__(self) -> str:
return f"CGMinerS17e: {str(self.ip)}"
self.ip = ip

View File

@@ -1,12 +1,8 @@
from miners.cgminer import CGMiner
from miners._backends import CGMiner
from miners._types import T17
class CGMinerT17(CGMiner):
class CGMinerT17(CGMiner, T17):
def __init__(self, ip: str) -> None:
super().__init__(ip)
self.api_type = "CGMiner"
self.model = "T17"
self.nominal_chips = 65
def __repr__(self) -> str:
return f"CGMinerT17: {str(self.ip)}"
self.ip = ip

View File

@@ -1,12 +1,8 @@
from miners.cgminer import CGMiner
from miners._backends import CGMiner
from miners._types import T17Plus
class CGMinerT17Plus(CGMiner):
class CGMinerT17Plus(CGMiner, T17Plus):
def __init__(self, ip: str) -> None:
super().__init__(ip)
self.api_type = "CGMiner"
self.model = "T17+"
self.nominal_chips = 65
def __repr__(self) -> str:
return f"CGMinerT17+: {str(self.ip)}"
self.ip = ip

View File

@@ -1,12 +1,8 @@
from miners.cgminer import CGMiner
from miners._backends import CGMiner
from miners._types import T17e
class CGMinerT17e(CGMiner):
class CGMinerT17e(CGMiner, T17e):
def __init__(self, ip: str) -> None:
super().__init__(ip)
self.api_type = "CGMiner"
self.model = "T17e"
self.nominal_chips = 65
def __repr__(self) -> str:
return f"CGMinerT17e: {str(self.ip)}"
self.ip = ip

View File

@@ -1,12 +1,8 @@
from miners.cgminer import CGMiner
from miners._backends import CGMiner
from miners._types import S19
class CGMinerS19(CGMiner):
class CGMinerS19(CGMiner, S19):
def __init__(self, ip: str) -> None:
super().__init__(ip)
self.api_type = "CGMiner"
self.model = "S19"
self.nominal_chips = 114
def __repr__(self) -> str:
return f"CGMinerS19: {str(self.ip)}"
self.ip = ip

View File

@@ -1,12 +1,8 @@
from miners.cgminer import CGMiner
from miners._backends import CGMiner
from miners._types import S19Pro
class CGMinerS19Pro(CGMiner):
class CGMinerS19Pro(CGMiner, S19Pro):
def __init__(self, ip: str) -> None:
super().__init__(ip)
self.api_type = "CGMiner"
self.model = "S19 Pro"
self.nominal_chips = 114
def __repr__(self) -> str:
return f"CGMinerS19Pro: {str(self.ip)}"
self.ip = ip

View File

@@ -1,12 +1,8 @@
from miners.cgminer import CGMiner
from miners._backends import CGMiner
from miners._types import S19j
class CGMinerS19j(CGMiner):
class CGMinerS19j(CGMiner, S19j):
def __init__(self, ip: str) -> None:
super().__init__(ip)
self.api_type = "CGMiner"
self.model = "S19j"
self.nominal_chips = 114
def __repr__(self) -> str:
return f"CGMinerS19j: {str(self.ip)}"
self.ip = ip

View File

@@ -1,12 +1,8 @@
from miners.cgminer import CGMiner
from miners._backends import CGMiner
from miners._types import S19jPro
class CGMinerS19jPro(CGMiner):
class CGMinerS19jPro(CGMiner, S19jPro):
def __init__(self, ip: str) -> None:
super().__init__(ip)
self.api_type = "CGMiner"
self.model = "S19j Pro"
self.nominal_chips = 114
def __repr__(self) -> str:
return f"CGMinerS19jPro: {str(self.ip)}"
self.ip = ip

View File

@@ -1,12 +1,8 @@
from miners.cgminer import CGMiner
from miners._backends import CGMiner
from miners._types import T19
class CGMinerT19(CGMiner):
class CGMinerT19(CGMiner, T19):
def __init__(self, ip: str) -> None:
super().__init__(ip)
self.api_type = "CGMiner"
self.model = "T19"
self.nominal_chips = 114
def __repr__(self) -> str:
return f"CGMinerT19: {str(self.ip)}"
self.ip = ip

View File

@@ -1,11 +1,8 @@
from miners.cgminer import CGMiner
from miners._backends import CGMiner
from miners._types import S9
class CGMinerS9(CGMiner):
class CGMinerS9(CGMiner, S9):
def __init__(self, ip: str) -> None:
super().__init__(ip)
self.model = "S9"
self.api_type = "CGMiner"
def __repr__(self) -> str:
return f"CGMinerS9: {str(self.ip)}"
self.ip = ip

View File

@@ -1,4 +1,4 @@
from miners.cgminer import CGMiner
from miners._backends.cgminer import CGMiner
class CGMinerT9(CGMiner):

View File

@@ -1,2 +1 @@
from .S9 import CGMinerS9
from .T9 import CGMinerT9

View File

@@ -1,49 +1,8 @@
from miners.bmminer import BMMiner
from miners._backends import Hiveon
from miners._types import T9
class HiveonT9(BMMiner):
class HiveonT9(Hiveon, T9):
def __init__(self, ip: str) -> None:
super().__init__(ip)
self.model = "T9"
self.api_type = "Hiveon"
self.nominal_chips = 54
def __repr__(self) -> str:
return f"HiveonT9: {str(self.ip)}"
async def get_board_info(self) -> dict:
"""Gets data on each board and chain in the miner."""
board_stats = await self.api.stats()
stats = board_stats["STATS"][1]
boards = {}
board_chains = {0: [2, 9, 10], 1: [3, 11, 12], 2: [4, 13, 14]}
for idx, board in enumerate(board_chains):
boards[board] = []
for chain in board_chains[board]:
count = stats[f"chain_acn{chain}"]
chips = stats[f"chain_acs{chain}"].replace(" ", "")
if not count == 18 or "x" in chips:
nominal = False
else:
nominal = True
boards[board].append(
{
"chain": chain,
"chip_count": count,
"chip_status": chips,
"nominal": nominal,
}
)
return boards
async def get_bad_boards(self) -> dict:
"""Checks for and provides list of non working boards."""
boards = await self.get_board_info()
bad_boards = {}
for board in boards.keys():
for chain in boards[board]:
if not chain["chip_count"] == 18 or "x" in chain["chip_status"]:
if board not in bad_boards.keys():
bad_boards[board] = []
bad_boards[board].append(chain)
return bad_boards
self.ip = ip