changed the way antminers and whatsminers are handled in the factory to allow for more precision on chip counts
This commit is contained in:
@@ -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)}"
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -0,0 +1,4 @@
|
||||
from .bmminer import *
|
||||
from .bosminer import *
|
||||
from .cgminer import *
|
||||
from .hiveon import *
|
||||
|
||||
12
miners/antminer/bmminer/X17/S17.py
Normal file
12
miners/antminer/bmminer/X17/S17.py
Normal 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)}"
|
||||
12
miners/antminer/bmminer/X17/S17_Plus.py
Normal file
12
miners/antminer/bmminer/X17/S17_Plus.py
Normal 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)}"
|
||||
12
miners/antminer/bmminer/X17/S17_Pro.py
Normal file
12
miners/antminer/bmminer/X17/S17_Pro.py
Normal 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)}"
|
||||
12
miners/antminer/bmminer/X17/S17e.py
Normal file
12
miners/antminer/bmminer/X17/S17e.py
Normal 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)}"
|
||||
12
miners/antminer/bmminer/X17/T17.py
Normal file
12
miners/antminer/bmminer/X17/T17.py
Normal 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)}"
|
||||
12
miners/antminer/bmminer/X17/T17_Plus.py
Normal file
12
miners/antminer/bmminer/X17/T17_Plus.py
Normal 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)}"
|
||||
12
miners/antminer/bmminer/X17/T17e.py
Normal file
12
miners/antminer/bmminer/X17/T17e.py
Normal 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)}"
|
||||
8
miners/antminer/bmminer/X17/__init__.py
Normal file
8
miners/antminer/bmminer/X17/__init__.py
Normal 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
|
||||
12
miners/antminer/bmminer/X19/S19.py
Normal file
12
miners/antminer/bmminer/X19/S19.py
Normal 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)}"
|
||||
12
miners/antminer/bmminer/X19/S19_Pro.py
Normal file
12
miners/antminer/bmminer/X19/S19_Pro.py
Normal 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)}"
|
||||
12
miners/antminer/bmminer/X19/S19j.py
Normal file
12
miners/antminer/bmminer/X19/S19j.py
Normal 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)}"
|
||||
12
miners/antminer/bmminer/X19/S19j_Pro.py
Normal file
12
miners/antminer/bmminer/X19/S19j_Pro.py
Normal 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)}"
|
||||
12
miners/antminer/bmminer/X19/T19.py
Normal file
12
miners/antminer/bmminer/X19/T19.py
Normal 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)}"
|
||||
7
miners/antminer/bmminer/X19/__init__.py
Normal file
7
miners/antminer/bmminer/X19/__init__.py
Normal 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
|
||||
2
miners/antminer/bmminer/X9/__init__.py
Normal file
2
miners/antminer/bmminer/X9/__init__.py
Normal file
@@ -0,0 +1,2 @@
|
||||
from .S9 import BMMinerS9
|
||||
from .T9 import BMMinerT9
|
||||
3
miners/antminer/bmminer/__init__.py
Normal file
3
miners/antminer/bmminer/__init__.py
Normal file
@@ -0,0 +1,3 @@
|
||||
from .X9 import *
|
||||
from .X17 import *
|
||||
from .X19 import *
|
||||
@@ -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)}"
|
||||
12
miners/antminer/bosminer/X17/S17_Plus.py
Normal file
12
miners/antminer/bosminer/X17/S17_Plus.py
Normal 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)}"
|
||||
12
miners/antminer/bosminer/X17/S17_Pro.py
Normal file
12
miners/antminer/bosminer/X17/S17_Pro.py
Normal 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)}"
|
||||
12
miners/antminer/bosminer/X17/S17e.py
Normal file
12
miners/antminer/bosminer/X17/S17e.py
Normal 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)}"
|
||||
12
miners/antminer/bosminer/X17/T17.py
Normal file
12
miners/antminer/bosminer/X17/T17.py
Normal 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)}"
|
||||
12
miners/antminer/bosminer/X17/T17_Plus.py
Normal file
12
miners/antminer/bosminer/X17/T17_Plus.py
Normal 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)}"
|
||||
12
miners/antminer/bosminer/X17/T17e.py
Normal file
12
miners/antminer/bosminer/X17/T17e.py
Normal 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)}"
|
||||
8
miners/antminer/bosminer/X17/__init__.py
Normal file
8
miners/antminer/bosminer/X17/__init__.py
Normal 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
|
||||
@@ -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)}"
|
||||
12
miners/antminer/bosminer/X19/S19_Pro.py
Normal file
12
miners/antminer/bosminer/X19/S19_Pro.py
Normal 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)}"
|
||||
12
miners/antminer/bosminer/X19/S19j.py
Normal file
12
miners/antminer/bosminer/X19/S19j.py
Normal 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)}"
|
||||
12
miners/antminer/bosminer/X19/S19j_Pro.py
Normal file
12
miners/antminer/bosminer/X19/S19j_Pro.py
Normal 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)}"
|
||||
12
miners/antminer/bosminer/X19/T19.py
Normal file
12
miners/antminer/bosminer/X19/T19.py
Normal 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)}"
|
||||
7
miners/antminer/bosminer/X19/__init__.py
Normal file
7
miners/antminer/bosminer/X19/__init__.py
Normal 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
|
||||
@@ -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)}"
|
||||
1
miners/antminer/bosminer/X9/__init__.py
Normal file
1
miners/antminer/bosminer/X9/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
from .S9 import BOSMinerS9
|
||||
3
miners/antminer/bosminer/__init__.py
Normal file
3
miners/antminer/bosminer/__init__.py
Normal file
@@ -0,0 +1,3 @@
|
||||
from .X9 import *
|
||||
from .X17 import *
|
||||
from .X19 import *
|
||||
@@ -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)}"
|
||||
12
miners/antminer/cgminer/X17/S17_Plus.py
Normal file
12
miners/antminer/cgminer/X17/S17_Plus.py
Normal 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)}"
|
||||
12
miners/antminer/cgminer/X17/S17_Pro.py
Normal file
12
miners/antminer/cgminer/X17/S17_Pro.py
Normal 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)}"
|
||||
12
miners/antminer/cgminer/X17/S17e.py
Normal file
12
miners/antminer/cgminer/X17/S17e.py
Normal 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)}"
|
||||
12
miners/antminer/cgminer/X17/T17.py
Normal file
12
miners/antminer/cgminer/X17/T17.py
Normal 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)}"
|
||||
12
miners/antminer/cgminer/X17/T17_Plus.py
Normal file
12
miners/antminer/cgminer/X17/T17_Plus.py
Normal 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)}"
|
||||
12
miners/antminer/cgminer/X17/T17e.py
Normal file
12
miners/antminer/cgminer/X17/T17e.py
Normal 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)}"
|
||||
8
miners/antminer/cgminer/X17/__init__.py
Normal file
8
miners/antminer/cgminer/X17/__init__.py
Normal 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
|
||||
12
miners/antminer/cgminer/X19/S19.py
Normal file
12
miners/antminer/cgminer/X19/S19.py
Normal 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)}"
|
||||
12
miners/antminer/cgminer/X19/S19_Pro.py
Normal file
12
miners/antminer/cgminer/X19/S19_Pro.py
Normal 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)}"
|
||||
12
miners/antminer/cgminer/X19/S19j.py
Normal file
12
miners/antminer/cgminer/X19/S19j.py
Normal 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)}"
|
||||
12
miners/antminer/cgminer/X19/S19j_Pro.py
Normal file
12
miners/antminer/cgminer/X19/S19j_Pro.py
Normal 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)}"
|
||||
12
miners/antminer/cgminer/X19/T19.py
Normal file
12
miners/antminer/cgminer/X19/T19.py
Normal 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)}"
|
||||
7
miners/antminer/cgminer/X19/__init__.py
Normal file
7
miners/antminer/cgminer/X19/__init__.py
Normal 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
|
||||
2
miners/antminer/cgminer/X9/__init__.py
Normal file
2
miners/antminer/cgminer/X9/__init__.py
Normal file
@@ -0,0 +1,2 @@
|
||||
from .S9 import CGMinerS9
|
||||
from .T9 import CGMinerT9
|
||||
3
miners/antminer/cgminer/__init__.py
Normal file
3
miners/antminer/cgminer/__init__.py
Normal file
@@ -0,0 +1,3 @@
|
||||
from .X9 import *
|
||||
from .X17 import *
|
||||
from .X19 import *
|
||||
1
miners/antminer/hiveon/X9/__init__.py
Normal file
1
miners/antminer/hiveon/X9/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
from .T9 import HiveonT9
|
||||
1
miners/antminer/hiveon/__init__.py
Normal file
1
miners/antminer/hiveon/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
from .X9 import *
|
||||
@@ -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")
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
from .btminer import *
|
||||
|
||||
@@ -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)}"
|
||||
10
miners/whatsminer/btminer/M2X/M20S_Plus.py
Normal file
10
miners/whatsminer/btminer/M2X/M20S_Plus.py
Normal 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)}"
|
||||
10
miners/whatsminer/btminer/M2X/M21S.py
Normal file
10
miners/whatsminer/btminer/M2X/M21S.py
Normal 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)}"
|
||||
10
miners/whatsminer/btminer/M2X/M21S_Plus.py
Normal file
10
miners/whatsminer/btminer/M2X/M21S_Plus.py
Normal 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)}"
|
||||
6
miners/whatsminer/btminer/M2X/__init__.py
Normal file
6
miners/whatsminer/btminer/M2X/__init__.py
Normal 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
|
||||
@@ -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)}"
|
||||
@@ -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)}"
|
||||
9
miners/whatsminer/btminer/M3X/M30S_Plus_Plus.py
Normal file
9
miners/whatsminer/btminer/M3X/M30S_Plus_Plus.py
Normal 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)}"
|
||||
@@ -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)}"
|
||||
10
miners/whatsminer/btminer/M3X/M31S_Plus.py
Normal file
10
miners/whatsminer/btminer/M3X/M31S_Plus.py
Normal 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)}"
|
||||
10
miners/whatsminer/btminer/M3X/M32S.py
Normal file
10
miners/whatsminer/btminer/M3X/M32S.py
Normal 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)}"
|
||||
8
miners/whatsminer/btminer/M3X/__init__.py
Normal file
8
miners/whatsminer/btminer/M3X/__init__.py
Normal 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
|
||||
2
miners/whatsminer/btminer/__init__.py
Normal file
2
miners/whatsminer/btminer/__init__.py
Normal file
@@ -0,0 +1,2 @@
|
||||
from .M2X import *
|
||||
from .M3X import *
|
||||
Reference in New Issue
Block a user