changed the way antminers and whatsminers are handled in the factory to allow for more precision on chip counts

This commit is contained in:
UpstreamData
2022-05-12 16:42:02 -06:00
parent 9d0d1a24d9
commit 06540efc98
81 changed files with 699 additions and 156 deletions

View File

@@ -1,9 +0,0 @@
from miners.bmminer import BMMiner
class BMMinerX17(BMMiner):
def __init__(self, ip: str) -> None:
super().__init__(ip)
def __repr__(self) -> str:
return f"BMMinerX17: {str(self.ip)}"

View File

@@ -1,23 +0,0 @@
from miners.bmminer import BMMiner
import logging
class BMMinerX19(BMMiner):
def __init__(self, ip: str) -> None:
super().__init__(ip)
self.nominal_chips = 126
def __repr__(self) -> str:
return f"BMMinerX19: {str(self.ip)}"
async def get_model(self):
if self.model:
logging.debug(f"Found model for {self.ip}: {self.model}")
return self.model
version_data = await self.api.version()
if version_data:
self.model = version_data["VERSION"][0]["Type"].replace("Antminer ", "")
logging.debug(f"Found model for {self.ip}: {self.model}")
return self.model
logging.warning(f"Failed to get model for miner: {self}")
return None

View File

@@ -1,23 +0,0 @@
from miners.cgminer import CGMiner
import logging
class CGMinerX19(CGMiner):
def __init__(self, ip: str) -> None:
super().__init__(ip)
self.api_type = "CGMiner"
def __repr__(self) -> str:
return f"CGMinerX19: {str(self.ip)}"
async def get_model(self):
if self.model:
logging.debug(f"Found model for {self.ip}: {self.model}")
return self.model
version_data = await self.api.version()
if version_data:
self.model = version_data["VERSION"][0]["Type"].replace("Antminer ", "")
logging.debug(f"Found model for {self.ip}: {self.model}")
return self.model
logging.warning(f"Failed to get model for miner: {self}")
return None

View File

@@ -0,0 +1,4 @@
from .bmminer import *
from .bosminer import *
from .cgminer import *
from .hiveon import *

View File

@@ -0,0 +1,12 @@
from miners.bmminer import BMMiner
class BMMinerS17(BMMiner):
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)}"

View File

@@ -0,0 +1,12 @@
from miners.bmminer import BMMiner
class BMMinerS17Plus(BMMiner):
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)}"

View File

@@ -0,0 +1,12 @@
from miners.bmminer import BMMiner
class BMMinerS17Pro(BMMiner):
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)}"

View File

@@ -0,0 +1,12 @@
from miners.bmminer import BMMiner
class BMMinerS17e(BMMiner):
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)}"

View File

@@ -0,0 +1,12 @@
from miners.bmminer import BMMiner
class BMMinerT17(BMMiner):
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)}"

View File

@@ -0,0 +1,12 @@
from miners.bmminer import BMMiner
class BMMinerT17Plus(BMMiner):
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)}"

View File

@@ -0,0 +1,12 @@
from miners.bmminer import BMMiner
class BMMinerT17e(BMMiner):
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)}"

View File

@@ -0,0 +1,8 @@
from .S17 import BMMinerS17
from .S17_Plus import BMMinerS17Plus
from .S17_Pro import BMMinerS17Pro
from .S17e import BMMinerS17e
from .T17 import BMMinerT17
from .T17_Plus import BMMinerT17Plus
from .T17e import BMMinerT17e

View File

@@ -0,0 +1,12 @@
from miners.bmminer import BMMiner
class BMMinerS19(BMMiner):
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)}"

View File

@@ -0,0 +1,12 @@
from miners.bmminer import BMMiner
class BMMinerS19Pro(BMMiner):
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)}"

View File

@@ -0,0 +1,12 @@
from miners.bmminer import BMMiner
class BMMinerS19j(BMMiner):
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)}"

View File

@@ -0,0 +1,12 @@
from miners.bmminer import BMMiner
class BMMinerS19jPro(BMMiner):
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)}"

View File

@@ -0,0 +1,12 @@
from miners.bmminer import BMMiner
class BMMinerT19(BMMiner):
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)}"

View File

@@ -0,0 +1,7 @@
from .S19 import BMMinerS19
from .S19_Pro import BMMinerS19Pro
from .S19j import BMMinerS19j
from .S19j_Pro import BMMinerS19jPro
from .T19 import BMMinerT19

View File

@@ -0,0 +1,2 @@
from .S9 import BMMinerS9
from .T9 import BMMinerT9

View File

@@ -0,0 +1,3 @@
from .X9 import *
from .X17 import *
from .X19 import *

View File

@@ -1,11 +1,12 @@
from miners.bosminer import BOSMiner
class BOSMinerX17(BOSMiner):
class BOSMinerS17(BOSMiner):
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"BOSminerX17: {str(self.ip)}"
return f"BOSMinerS17: {str(self.ip)}"

View File

@@ -0,0 +1,12 @@
from miners.bosminer import BOSMiner
class BOSMinerS17Plus(BOSMiner):
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)}"

View File

@@ -0,0 +1,12 @@
from miners.bosminer import BOSMiner
class BOSMinerS17Pro(BOSMiner):
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)}"

View File

@@ -0,0 +1,12 @@
from miners.bosminer import BOSMiner
class BOSMinerS17e(BOSMiner):
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)}"

View File

@@ -0,0 +1,12 @@
from miners.bosminer import BOSMiner
class BOSMinerT17(BOSMiner):
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)}"

View File

@@ -0,0 +1,12 @@
from miners.bosminer import BOSMiner
class BOSMinerT17Plus(BOSMiner):
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)}"

View File

@@ -0,0 +1,12 @@
from miners.bosminer import BOSMiner
class BOSMinerT17e(BOSMiner):
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)}"

View File

@@ -0,0 +1,8 @@
from .S17 import BOSMinerS17
from .S17_Plus import BOSMinerS17Plus
from .S17_Pro import BOSMinerS17Pro
from .S17e import BOSMinerS17e
from .T17 import BOSMinerT17
from .T17_Plus import BOSMinerT17Plus
from .T17e import BOSMinerT17e

View File

@@ -1,11 +1,12 @@
from miners.bosminer import BOSMiner
class BOSMinerX19(BOSMiner):
class BOSMinerS19(BOSMiner):
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"BOSminerX19: {str(self.ip)}"
return f"BOSMinerS19: {str(self.ip)}"

View File

@@ -0,0 +1,12 @@
from miners.bosminer import BOSMiner
class BOSMinerS19Pro(BOSMiner):
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)}"

View File

@@ -0,0 +1,12 @@
from miners.bosminer import BOSMiner
class BOSMinerS19j(BOSMiner):
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)}"

View File

@@ -0,0 +1,12 @@
from miners.bosminer import BOSMiner
class BOSMinerS19jPro(BOSMiner):
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)}"

View File

@@ -0,0 +1,12 @@
from miners.bosminer import BOSMiner
class BOSMinerT19(BOSMiner):
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)}"

View File

@@ -0,0 +1,7 @@
from .S19 import BOSMinerS19
from .S19_Pro import BOSMinerS19Pro
from .S19j import BOSMinerS19j
from .S19j_Pro import BOSMinerS19jPro
from .T19 import BOSMinerT19

View File

@@ -1,8 +1,4 @@
import logging
import toml
from miners.bosminer import BOSMiner
from config.bos import general_config_convert_bos
class BOSMinerS9(BOSMiner):
@@ -12,4 +8,4 @@ class BOSMinerS9(BOSMiner):
self.api_type = "BOSMiner"
def __repr__(self) -> str:
return f"BOSminerS9: {str(self.ip)}"
return f"BOSMinerS9: {str(self.ip)}"

View File

@@ -0,0 +1 @@
from .S9 import BOSMinerS9

View File

@@ -0,0 +1,3 @@
from .X9 import *
from .X17 import *
from .X19 import *

View File

@@ -1,10 +1,12 @@
from miners.cgminer import CGMiner
class CGMinerX17(CGMiner):
class CGMinerS17(CGMiner):
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"CGMinerX17: {str(self.ip)}"
return f"CGMinerS17: {str(self.ip)}"

View File

@@ -0,0 +1,12 @@
from miners.cgminer import CGMiner
class CGMinerS17Plus(CGMiner):
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)}"

View File

@@ -0,0 +1,12 @@
from miners.cgminer import CGMiner
class CGMinerS17Pro(CGMiner):
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)}"

View File

@@ -0,0 +1,12 @@
from miners.cgminer import CGMiner
class CGMinerS17e(CGMiner):
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)}"

View File

@@ -0,0 +1,12 @@
from miners.cgminer import CGMiner
class CGMinerT17(CGMiner):
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)}"

View File

@@ -0,0 +1,12 @@
from miners.cgminer import CGMiner
class CGMinerT17Plus(CGMiner):
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)}"

View File

@@ -0,0 +1,12 @@
from miners.cgminer import CGMiner
class CGMinerT17e(CGMiner):
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)}"

View File

@@ -0,0 +1,8 @@
from .S17 import CGMinerS17
from .S17_Plus import CGMinerS17Plus
from .S17_Pro import CGMinerS17Pro
from .S17e import CGMinerS17e
from .T17 import CGMinerT17
from .T17_Plus import CGMinerT17Plus
from .T17e import CGMinerT17e

View File

@@ -0,0 +1,12 @@
from miners.cgminer import CGMiner
class CGMinerS19(CGMiner):
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)}"

View File

@@ -0,0 +1,12 @@
from miners.cgminer import CGMiner
class CGMinerS19Pro(CGMiner):
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)}"

View File

@@ -0,0 +1,12 @@
from miners.cgminer import CGMiner
class CGMinerS19j(CGMiner):
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)}"

View File

@@ -0,0 +1,12 @@
from miners.cgminer import CGMiner
class CGMinerS19jPro(CGMiner):
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)}"

View File

@@ -0,0 +1,12 @@
from miners.cgminer import CGMiner
class CGMinerT19(CGMiner):
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)}"

View File

@@ -0,0 +1,7 @@
from .S19 import CGMinerS19
from .S19_Pro import CGMinerS19Pro
from .S19j import CGMinerS19j
from .S19j_Pro import CGMinerS19jPro
from .T19 import CGMinerT19

View File

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

View File

@@ -0,0 +1,3 @@
from .X9 import *
from .X17 import *
from .X19 import *

View File

@@ -0,0 +1 @@
from .T9 import HiveonT9

View File

@@ -0,0 +1 @@
from .X9 import *

View File

@@ -167,7 +167,6 @@ class BMMiner(BaseMiner):
summary = miner_data.get("summary")[0]
pools = miner_data.get("pools")[0]
stats = miner_data.get("stats")[0]
print(stats)
if summary:
hr = summary.get("SUMMARY")
@@ -181,7 +180,6 @@ class BMMiner(BaseMiner):
boards = stats.get("STATS")
if boards:
if len(boards) > 0:
print(boards)
data["Left Board"] = boards[1].get("chain_acn1")
data["Center Board"] = boards[1].get("chain_acn2")
data["Right Board"] = boards[1].get("chain_acn3")

View File

@@ -1,24 +1,5 @@
from miners.antminer.S9.bosminer import BOSMinerS9
from miners.antminer.S9.bmminer import BMMinerS9
from miners.antminer.S9.cgminer import CGMinerS9
from miners.antminer.T9.hive import HiveonT9
from miners.antminer.T9.cgminer import CGMinerT9
from miners.antminer.T9.bmminer import BMMinerT9
from miners.antminer.X17.bosminer import BOSMinerX17
from miners.antminer.X17.bmminer import BMMinerX17
from miners.antminer.X17.cgminer import CGMinerX17
from miners.antminer.X19.bmminer import BMMinerX19
from miners.antminer.X19.cgminer import CGMinerX19
from miners.antminer.X19.bosminer import BOSMinerX19
from miners.whatsminer.M20 import BTMinerM20
from miners.whatsminer.M21 import BTMinerM21
from miners.whatsminer.M30 import BTMinerM30
from miners.whatsminer.M31 import BTMinerM31
from miners.whatsminer.M32 import BTMinerM32
from miners.antminer import *
from miners.whatsminer import *
from miners.avalonminer.Avalon8 import CGMinerAvalon8
from miners.avalonminer.Avalon10 import CGMinerAvalon10
@@ -41,6 +22,131 @@ from settings import (
NETWORK_PING_TIMEOUT as PING_TIMEOUT,
)
MINER_CLASSES = {
"Antminer S9": {
"Default": BOSMinerS9,
"BOSMiner": BOSMinerS9,
"BMMiner": BMMinerS9,
"CGMiner": CGMinerS9,
},
"Antminer S17": {
"Default": BMMinerS17,
"BOSMiner": BOSMinerS17,
"BMMiner": BMMinerS17,
"CGMiner": CGMinerS17,
},
"Antminer S17+": {
"Default": BMMinerS17Plus,
"BOSMiner": BOSMinerS17Plus,
"BMMiner": BMMinerS17Plus,
"CGMiner": CGMinerS17Plus,
},
"Antminer S17 Pro": {
"Default": BMMinerS17Pro,
"BOSMiner": BOSMinerS17Pro,
"BMMiner": BMMinerS17Pro,
"CGMiner": CGMinerS17Pro,
},
"Antminer S17e": {
"Default": BMMinerS17e,
"BOSMiner": BOSMinerS17e,
"BMMiner": BMMinerS17e,
"CGMiner": CGMinerS17e,
},
"Antminer T17": {
"Default": BMMinerT17,
"BOSMiner": BOSMinerT17,
"BMMiner": BMMinerT17,
"CGMiner": CGMinerT17,
},
"Antminer T17+": {
"Default": BMMinerT17Plus,
"BOSMiner": BOSMinerT17Plus,
"BMMiner": BMMinerT17Plus,
"CGMiner": CGMinerT17Plus,
},
"Antminer T17e": {
"Default": BMMinerT17e,
"BOSMiner": BOSMinerT17e,
"BMMiner": BMMinerT17e,
"CGMiner": CGMinerT17e,
},
"Antminer S19": {
"Default": BMMinerS19,
"BOSMiner": BOSMinerS19,
"BMMiner": BMMinerS19,
"CGMiner": CGMinerS19,
},
"Antminer S19 Pro": {
"Default": BMMinerS19Pro,
"BOSMiner": BOSMinerS19Pro,
"BMMiner": BMMinerS19Pro,
"CGMiner": CGMinerS19Pro,
},
"Antminer S19j": {
"Default": BMMinerS19j,
"BOSMiner": BOSMinerS19j,
"BMMiner": BMMinerS19j,
"CGMiner": CGMinerS19j,
},
"Antminer S19j Pro": {
"Default": BMMinerS19jPro,
"BOSMiner": BOSMinerS19jPro,
"BMMiner": BMMinerS19jPro,
"CGMiner": CGMinerS19jPro,
},
"Antminer T19": {
"Default": BMMinerT19,
"BOSMiner": BOSMinerT19,
"BMMiner": BMMinerT19,
"CGMiner": CGMinerT19,
},
"M20S": {
"Default": BTMinerM20S,
"BTMiner": BTMinerM20S,
},
"M20S+": {
"Default": BTMinerM20SPlus,
"BTMiner": BTMinerM20SPlus,
},
"M21": {
"Default": BTMinerM21,
"BTMiner": BTMinerM21,
},
"M21S": {
"Default": BTMinerM21S,
"BTMiner": BTMinerM21S,
},
"M21S+": {
"Default": BTMinerM21SPlus,
"BTMiner": BTMinerM21SPlus,
},
"M30S": {
"Default": BTMinerM30S,
"BTMiner": BTMinerM30S,
},
"M30S+": {
"Default": BTMinerM30SPlus,
"BTMiner": BTMinerM30SPlus,
},
"M30S++": {
"Default": BTMinerM30SPlusPlus,
"BTMiner": BTMinerM30SPlusPlus,
},
"M31S": {
"Default": BTMinerM31S,
"BTMiner": BTMinerM31S,
},
"M31S+": {
"Default": BTMinerM31SPlus,
"BTMiner": BTMinerM31SPlus,
},
"M32S": {
"Default": BTMinerM32S,
"BTMiner": BTMinerM32S,
},
}
class Singleton(type):
_instances = {}
@@ -111,71 +217,23 @@ class MinerFactory(metaclass=Singleton):
# make sure we have model information
if model:
# check if the miner is an Antminer
if "Antminer" in model:
# S9 logic
if "Antminer S9" in model:
# handle the different API types
if not api:
logging.warning(
f"{str(ip)}: No API data found, using BraiinsOS."
)
miner = BOSMinerS9(str(ip))
elif "BOSMiner" in api:
miner = BOSMinerS9(str(ip))
elif "CGMiner" in api:
miner = CGMinerS9(str(ip))
elif "BMMiner" in api:
miner = BMMinerS9(str(ip))
elif "Antminer T9" in model:
if "BMMiner" in api:
if "Hiveon" in model:
# hiveOS, return T9 Hive
miner = HiveonT9(str(ip))
else:
miner = BMMinerT9(str(ip))
elif "CGMiner" in api:
miner = CGMinerT9(str(ip))
# X17 model logic
elif "17" in model:
# handle the different API types
if "BOSMiner" in api:
miner = BOSMinerX17(str(ip))
elif "CGMiner" in api:
miner = CGMinerX17(str(ip))
elif "BMMiner" in api:
miner = BMMinerX17(str(ip))
# X19 logic
elif "19" in model:
# handle the different API types
if "BOSMiner" in api:
miner = BOSMinerX19(str(ip))
if "CGMiner" in api:
miner = CGMinerX19(str(ip))
elif "BMMiner" in api:
miner = BMMinerX19(str(ip))
if not api:
api = "Default"
# Avalonminers
elif "avalon" in model:
if "avalon" in model:
if model == "avalon10":
miner = CGMinerAvalon10(str(ip))
else:
miner = CGMinerAvalon8(str(ip))
else:
if model not in MINER_CLASSES.keys():
miner = UnknownMiner(str(ip))
return miner
if api not in MINER_CLASSES[model].keys():
api = "Default"
# Whatsminers
elif "M20" in model:
miner = BTMinerM20(str(ip))
elif "M21" in model:
miner = BTMinerM21(str(ip))
elif "M30" in model:
miner = BTMinerM30(str(ip))
elif "M31" in model:
miner = BTMinerM31(str(ip))
elif "M32" in model:
miner = BTMinerM32(str(ip))
miner = MINER_CLASSES[model][api](str(ip))
# if we cant find a model, check if we found the API
else:
@@ -260,7 +318,7 @@ class MinerFactory(metaclass=Singleton):
api = "BOSMiner"
# if all that fails, check the Description to see if it is a whatsminer
elif version.get("Description") and "whatsminer" in version.get("Description"):
if version.get("Description") and "whatsminer" in version.get("Description"):
api = "BTMiner"
if version and not model:
if (
@@ -269,6 +327,11 @@ class MinerFactory(metaclass=Singleton):
and not version.get("VERSION") == []
):
model = version["VERSION"][0]["Type"]
if model:
if "V" in model:
model = model.split("V")[0]
return model, api
async def _validate_command(self, data: dict) -> tuple:

View File

@@ -0,0 +1 @@
from .btminer import *

View File

@@ -1,10 +1,10 @@
from miners.btminer import BTMiner
class BTMinerM20(BTMiner):
class BTMinerM20S(BTMiner):
def __init__(self, ip: str) -> None:
super().__init__(ip)
self.nominal_chips = 66
def __repr__(self) -> str:
return f"M20 - BTMiner: {str(self.ip)}"
return f"M20S - BTMiner: {str(self.ip)}"

View File

@@ -0,0 +1,10 @@
from miners.btminer import BTMiner
class BTMinerM20SPlus(BTMiner):
def __init__(self, ip: str) -> None:
super().__init__(ip)
self.nominal_chips = 66
def __repr__(self) -> str:
return f"M20S+ - BTMiner: {str(self.ip)}"

View File

@@ -0,0 +1,10 @@
from miners.btminer import BTMiner
class BTMinerM21S(BTMiner):
def __init__(self, ip: str) -> None:
super().__init__(ip)
self.nominal_chips = 105
def __repr__(self) -> str:
return f"M21S - BTMiner: {str(self.ip)}"

View File

@@ -0,0 +1,10 @@
from miners.btminer import BTMiner
class BTMinerM21SPlus(BTMiner):
def __init__(self, ip: str) -> None:
super().__init__(ip)
self.nominal_chips = 105
def __repr__(self) -> str:
return f"M21S+ - BTMiner: {str(self.ip)}"

View File

@@ -0,0 +1,6 @@
from .M20S import BTMinerM20S
from .M20S_Plus import BTMinerM20SPlus
from .M21 import BTMinerM21
from .M21S import BTMinerM21S
from .M21S_Plus import BTMinerM21SPlus

View File

@@ -1,9 +1,9 @@
from miners.btminer import BTMiner
class BTMinerM32(BTMiner):
class BTMinerM30S(BTMiner):
def __init__(self, ip: str) -> None:
super().__init__(ip)
def __repr__(self) -> str:
return f"M32 - BTMiner: {str(self.ip)}"
return f"M30S - BTMiner: {str(self.ip)}"

View File

@@ -1,9 +1,9 @@
from miners.btminer import BTMiner
class BTMinerM30(BTMiner):
class BTMinerM30SPlus(BTMiner):
def __init__(self, ip: str) -> None:
super().__init__(ip)
def __repr__(self) -> str:
return f"M30- BTMiner: {str(self.ip)}"
return f"M30S+ - BTMiner: {str(self.ip)}"

View File

@@ -0,0 +1,9 @@
from miners.btminer import BTMiner
class BTMinerM30SPlusPlus(BTMiner):
def __init__(self, ip: str) -> None:
super().__init__(ip)
def __repr__(self) -> str:
return f"M30S++ - BTMiner: {str(self.ip)}"

View File

@@ -1,10 +1,10 @@
from miners.btminer import BTMiner
class BTMinerM31(BTMiner):
class BTMinerM31S(BTMiner):
def __init__(self, ip: str) -> None:
super().__init__(ip)
self.nominal_chips = 78
def __repr__(self) -> str:
return f"M31 - BTMiner: {str(self.ip)}"
return f"M31S - BTMiner: {str(self.ip)}"

View File

@@ -0,0 +1,10 @@
from miners.btminer import BTMiner
class BTMinerM31SPlus(BTMiner):
def __init__(self, ip: str) -> None:
super().__init__(ip)
self.nominal_chips = 78
def __repr__(self) -> str:
return f"M31S+ - BTMiner: {str(self.ip)}"

View File

@@ -0,0 +1,10 @@
from miners.btminer import BTMiner
class BTMinerM32S(BTMiner):
def __init__(self, ip: str) -> None:
super().__init__(ip)
self.nominal_chips = 78
def __repr__(self) -> str:
return f"M32S - BTMiner: {str(self.ip)}"

View File

@@ -0,0 +1,8 @@
from .M30S import BTMinerM30S
from .M30S_Plus import BTMinerM30SPlus
from .M30S_Plus_Plus import BTMinerM30SPlusPlus
from .M31S import BTMinerM31S
from .M31S_Plus import BTMinerM31SPlus
from .M32S import BTMinerM32S

View File

@@ -0,0 +1,2 @@
from .M2X import *
from .M3X import *